primeng 18.0.1 → 19.0.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/base/style/basestyle.d.ts +11 -11
- package/config/themeprovider.d.ts +6 -0
- package/confirmdialog/confirmdialog.d.ts +1 -0
- package/dynamicdialog/dynamicdialog.d.ts +2 -2
- package/fesm2022/primeng-accordion.mjs +10 -10
- package/fesm2022/primeng-accordion.mjs.map +1 -1
- package/fesm2022/primeng-animateonscroll.mjs +1 -1
- package/fesm2022/primeng-animateonscroll.mjs.map +1 -1
- package/fesm2022/primeng-api.mjs +5 -5
- package/fesm2022/primeng-api.mjs.map +1 -1
- package/fesm2022/primeng-autocomplete.mjs +2 -2
- package/fesm2022/primeng-autocomplete.mjs.map +1 -1
- package/fesm2022/primeng-autofocus.mjs +1 -1
- package/fesm2022/primeng-autofocus.mjs.map +1 -1
- package/fesm2022/primeng-avatar.mjs +2 -2
- package/fesm2022/primeng-avatar.mjs.map +1 -1
- package/fesm2022/primeng-avatargroup.mjs +2 -2
- package/fesm2022/primeng-avatargroup.mjs.map +1 -1
- package/fesm2022/primeng-badge.mjs +3 -3
- package/fesm2022/primeng-badge.mjs.map +1 -1
- package/fesm2022/primeng-basecomponent.mjs +1 -1
- package/fesm2022/primeng-basecomponent.mjs.map +1 -1
- package/fesm2022/primeng-blockui.mjs +2 -2
- package/fesm2022/primeng-blockui.mjs.map +1 -1
- package/fesm2022/primeng-breadcrumb.mjs +2 -2
- package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
- package/fesm2022/primeng-button.mjs +5 -5
- package/fesm2022/primeng-button.mjs.map +1 -1
- package/fesm2022/primeng-buttongroup.mjs +2 -2
- package/fesm2022/primeng-buttongroup.mjs.map +1 -1
- package/fesm2022/primeng-calendar.mjs +4 -4
- package/fesm2022/primeng-calendar.mjs.map +1 -1
- package/fesm2022/primeng-card.mjs +2 -2
- package/fesm2022/primeng-card.mjs.map +1 -1
- package/fesm2022/primeng-carousel.mjs +2 -2
- package/fesm2022/primeng-carousel.mjs.map +1 -1
- package/fesm2022/primeng-cascadeselect.mjs +4 -4
- package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
- package/fesm2022/primeng-chart.mjs +2 -2
- package/fesm2022/primeng-chart.mjs.map +1 -1
- package/fesm2022/primeng-checkbox.mjs +2 -2
- package/fesm2022/primeng-checkbox.mjs.map +1 -1
- package/fesm2022/primeng-chip.mjs +2 -2
- package/fesm2022/primeng-chip.mjs.map +1 -1
- package/fesm2022/primeng-colorpicker.mjs +2 -2
- package/fesm2022/primeng-colorpicker.mjs.map +1 -1
- package/fesm2022/primeng-config.mjs +14 -12
- package/fesm2022/primeng-config.mjs.map +1 -1
- package/fesm2022/primeng-confirmdialog.mjs +11 -8
- package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
- package/fesm2022/primeng-confirmpopup.mjs +2 -2
- package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
- package/fesm2022/primeng-contextmenu.mjs +5 -5
- package/fesm2022/primeng-contextmenu.mjs.map +1 -1
- package/fesm2022/primeng-dataview.mjs +2 -2
- package/fesm2022/primeng-dataview.mjs.map +1 -1
- package/fesm2022/primeng-datepicker.mjs +2 -2
- package/fesm2022/primeng-datepicker.mjs.map +1 -1
- package/fesm2022/primeng-defer.mjs +1 -1
- package/fesm2022/primeng-dialog.mjs +2 -2
- package/fesm2022/primeng-dialog.mjs.map +1 -1
- package/fesm2022/primeng-divider.mjs +2 -2
- package/fesm2022/primeng-divider.mjs.map +1 -1
- package/fesm2022/primeng-dock.mjs +2 -2
- package/fesm2022/primeng-dock.mjs.map +1 -1
- package/fesm2022/primeng-dragdrop.mjs +2 -2
- package/fesm2022/primeng-dragdrop.mjs.map +1 -1
- package/fesm2022/primeng-drawer.mjs +2 -2
- package/fesm2022/primeng-drawer.mjs.map +1 -1
- package/fesm2022/primeng-dropdown.mjs +4 -4
- package/fesm2022/primeng-dropdown.mjs.map +1 -1
- package/fesm2022/primeng-dynamicdialog.mjs +7 -7
- package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
- package/fesm2022/primeng-editor.mjs +2 -2
- package/fesm2022/primeng-editor.mjs.map +1 -1
- package/fesm2022/primeng-fieldset.mjs +2 -2
- package/fesm2022/primeng-fieldset.mjs.map +1 -1
- package/fesm2022/primeng-fileupload.mjs +2 -2
- package/fesm2022/primeng-fileupload.mjs.map +1 -1
- package/fesm2022/primeng-floatlabel.mjs +2 -2
- package/fesm2022/primeng-floatlabel.mjs.map +1 -1
- package/fesm2022/primeng-fluid.mjs +2 -2
- package/fesm2022/primeng-fluid.mjs.map +1 -1
- package/fesm2022/primeng-focustrap.mjs +1 -1
- package/fesm2022/primeng-focustrap.mjs.map +1 -1
- package/fesm2022/primeng-galleria.mjs +10 -10
- package/fesm2022/primeng-galleria.mjs.map +1 -1
- package/fesm2022/primeng-iconfield.mjs +2 -2
- package/fesm2022/primeng-iconfield.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubledown.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleleft.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleright.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleup.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledown.mjs +2 -2
- package/fesm2022/primeng-icons-angledown.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleleft.mjs +2 -2
- package/fesm2022/primeng-icons-angleleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleright.mjs +2 -2
- package/fesm2022/primeng-icons-angleright.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleup.mjs +2 -2
- package/fesm2022/primeng-icons-angleup.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdown.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdownleft.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdownright.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowleft.mjs +2 -2
- package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowright.mjs +2 -2
- package/fesm2022/primeng-icons-arrowright.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowup.mjs +2 -2
- package/fesm2022/primeng-icons-arrowup.mjs.map +1 -1
- package/fesm2022/primeng-icons-ban.mjs +2 -2
- package/fesm2022/primeng-icons-ban.mjs.map +1 -1
- package/fesm2022/primeng-icons-bars.mjs +2 -2
- package/fesm2022/primeng-icons-bars.mjs.map +1 -1
- package/fesm2022/primeng-icons-baseicon.mjs +2 -2
- package/fesm2022/primeng-icons-baseicon.mjs.map +1 -1
- package/fesm2022/primeng-icons-blank.mjs +2 -2
- package/fesm2022/primeng-icons-blank.mjs.map +1 -1
- package/fesm2022/primeng-icons-calendar.mjs +2 -2
- package/fesm2022/primeng-icons-calendar.mjs.map +1 -1
- package/fesm2022/primeng-icons-caretleft.mjs +2 -2
- package/fesm2022/primeng-icons-caretleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-caretright.mjs +2 -2
- package/fesm2022/primeng-icons-caretright.mjs.map +1 -1
- package/fesm2022/primeng-icons-check.mjs +2 -2
- package/fesm2022/primeng-icons-check.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevrondown.mjs +2 -2
- package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronleft.mjs +2 -2
- package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronright.mjs +2 -2
- package/fesm2022/primeng-icons-chevronright.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronup.mjs +2 -2
- package/fesm2022/primeng-icons-chevronup.mjs.map +1 -1
- package/fesm2022/primeng-icons-exclamationtriangle.mjs +2 -2
- package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -1
- package/fesm2022/primeng-icons-eye.mjs +2 -2
- package/fesm2022/primeng-icons-eye.mjs.map +1 -1
- package/fesm2022/primeng-icons-eyeslash.mjs +2 -2
- package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -1
- package/fesm2022/primeng-icons-filter.mjs +2 -2
- package/fesm2022/primeng-icons-filter.mjs.map +1 -1
- package/fesm2022/primeng-icons-filterslash.mjs +2 -2
- package/fesm2022/primeng-icons-filterslash.mjs.map +1 -1
- package/fesm2022/primeng-icons-home.mjs +2 -2
- package/fesm2022/primeng-icons-home.mjs.map +1 -1
- package/fesm2022/primeng-icons-infocircle.mjs +2 -2
- package/fesm2022/primeng-icons-infocircle.mjs.map +1 -1
- package/fesm2022/primeng-icons-minus.mjs +2 -2
- package/fesm2022/primeng-icons-minus.mjs.map +1 -1
- package/fesm2022/primeng-icons-pencil.mjs +2 -2
- package/fesm2022/primeng-icons-pencil.mjs.map +1 -1
- package/fesm2022/primeng-icons-plus.mjs +2 -2
- package/fesm2022/primeng-icons-plus.mjs.map +1 -1
- package/fesm2022/primeng-icons-refresh.mjs +2 -2
- package/fesm2022/primeng-icons-refresh.mjs.map +1 -1
- package/fesm2022/primeng-icons-search.mjs +2 -2
- package/fesm2022/primeng-icons-search.mjs.map +1 -1
- package/fesm2022/primeng-icons-searchminus.mjs +2 -2
- package/fesm2022/primeng-icons-searchminus.mjs.map +1 -1
- package/fesm2022/primeng-icons-searchplus.mjs +2 -2
- package/fesm2022/primeng-icons-searchplus.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortalt.mjs +2 -2
- package/fesm2022/primeng-icons-sortalt.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortamountdown.mjs +2 -2
- package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortamountupalt.mjs +2 -2
- package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -1
- package/fesm2022/primeng-icons-spinner.mjs +2 -2
- package/fesm2022/primeng-icons-spinner.mjs.map +1 -1
- package/fesm2022/primeng-icons-star.mjs +2 -2
- package/fesm2022/primeng-icons-star.mjs.map +1 -1
- package/fesm2022/primeng-icons-starfill.mjs +2 -2
- package/fesm2022/primeng-icons-starfill.mjs.map +1 -1
- package/fesm2022/primeng-icons-thlarge.mjs +2 -2
- package/fesm2022/primeng-icons-thlarge.mjs.map +1 -1
- package/fesm2022/primeng-icons-times.mjs +2 -2
- package/fesm2022/primeng-icons-times.mjs.map +1 -1
- package/fesm2022/primeng-icons-timescircle.mjs +2 -2
- package/fesm2022/primeng-icons-timescircle.mjs.map +1 -1
- package/fesm2022/primeng-icons-trash.mjs +2 -2
- package/fesm2022/primeng-icons-trash.mjs.map +1 -1
- package/fesm2022/primeng-icons-undo.mjs +2 -2
- package/fesm2022/primeng-icons-undo.mjs.map +1 -1
- package/fesm2022/primeng-icons-upload.mjs +2 -2
- package/fesm2022/primeng-icons-upload.mjs.map +1 -1
- package/fesm2022/primeng-icons-windowmaximize.mjs +2 -2
- package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -1
- package/fesm2022/primeng-icons-windowminimize.mjs +2 -2
- package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -1
- package/fesm2022/primeng-iftalabel.mjs +2 -2
- package/fesm2022/primeng-iftalabel.mjs.map +1 -1
- package/fesm2022/primeng-image.mjs +2 -2
- package/fesm2022/primeng-image.mjs.map +1 -1
- package/fesm2022/primeng-imagecompare.mjs +2 -2
- package/fesm2022/primeng-imagecompare.mjs.map +1 -1
- package/fesm2022/primeng-inplace.mjs +6 -6
- package/fesm2022/primeng-inplace.mjs.map +1 -1
- package/fesm2022/primeng-inputgroup.mjs +2 -2
- package/fesm2022/primeng-inputgroup.mjs.map +1 -1
- package/fesm2022/primeng-inputgroupaddon.mjs +2 -2
- package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -1
- package/fesm2022/primeng-inputicon.mjs +2 -2
- package/fesm2022/primeng-inputicon.mjs.map +1 -1
- package/fesm2022/primeng-inputmask.mjs +2 -2
- package/fesm2022/primeng-inputmask.mjs.map +1 -1
- package/fesm2022/primeng-inputnumber.mjs +2 -2
- package/fesm2022/primeng-inputnumber.mjs.map +1 -1
- package/fesm2022/primeng-inputotp.mjs +2 -2
- package/fesm2022/primeng-inputotp.mjs.map +1 -1
- package/fesm2022/primeng-inputswitch.mjs +2 -2
- package/fesm2022/primeng-inputswitch.mjs.map +1 -1
- package/fesm2022/primeng-inputtext.mjs +1 -1
- package/fesm2022/primeng-inputtext.mjs.map +1 -1
- package/fesm2022/primeng-inputtextarea.mjs +1 -1
- package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
- package/fesm2022/primeng-keyfilter.mjs +1 -1
- package/fesm2022/primeng-keyfilter.mjs.map +1 -1
- package/fesm2022/primeng-knob.mjs +2 -2
- package/fesm2022/primeng-knob.mjs.map +1 -1
- package/fesm2022/primeng-listbox.mjs +2 -2
- package/fesm2022/primeng-listbox.mjs.map +1 -1
- package/fesm2022/primeng-megamenu.mjs +4 -4
- package/fesm2022/primeng-megamenu.mjs.map +1 -1
- package/fesm2022/primeng-menu.mjs +5 -5
- package/fesm2022/primeng-menu.mjs.map +1 -1
- package/fesm2022/primeng-menubar.mjs +4 -4
- package/fesm2022/primeng-menubar.mjs.map +1 -1
- package/fesm2022/primeng-message.mjs +2 -2
- package/fesm2022/primeng-message.mjs.map +1 -1
- package/fesm2022/primeng-messages.mjs +2 -2
- package/fesm2022/primeng-messages.mjs.map +1 -1
- package/fesm2022/primeng-metergroup.mjs +4 -4
- package/fesm2022/primeng-metergroup.mjs.map +1 -1
- package/fesm2022/primeng-multiselect.mjs +4 -4
- package/fesm2022/primeng-multiselect.mjs.map +1 -1
- package/fesm2022/primeng-orderlist.mjs +2 -2
- package/fesm2022/primeng-orderlist.mjs.map +1 -1
- package/fesm2022/primeng-organizationchart.mjs +5 -5
- package/fesm2022/primeng-organizationchart.mjs.map +1 -1
- package/fesm2022/primeng-overlay.mjs +2 -2
- package/fesm2022/primeng-overlay.mjs.map +1 -1
- package/fesm2022/primeng-overlaybadge.mjs +2 -2
- package/fesm2022/primeng-overlaybadge.mjs.map +1 -1
- package/fesm2022/primeng-overlaypanel.mjs +2 -2
- package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
- package/fesm2022/primeng-paginator.mjs +2 -2
- package/fesm2022/primeng-paginator.mjs.map +1 -1
- package/fesm2022/primeng-panel.mjs +2 -2
- package/fesm2022/primeng-panel.mjs.map +1 -1
- package/fesm2022/primeng-panelmenu.mjs +7 -7
- package/fesm2022/primeng-panelmenu.mjs.map +1 -1
- package/fesm2022/primeng-password.mjs +4 -4
- package/fesm2022/primeng-password.mjs.map +1 -1
- package/fesm2022/primeng-picklist.mjs +2 -2
- package/fesm2022/primeng-picklist.mjs.map +1 -1
- package/fesm2022/primeng-popover.mjs +2 -2
- package/fesm2022/primeng-popover.mjs.map +1 -1
- package/fesm2022/primeng-progressbar.mjs +2 -2
- package/fesm2022/primeng-progressbar.mjs.map +1 -1
- package/fesm2022/primeng-progressspinner.mjs +2 -2
- package/fesm2022/primeng-progressspinner.mjs.map +1 -1
- package/fesm2022/primeng-radiobutton.mjs +2 -2
- package/fesm2022/primeng-radiobutton.mjs.map +1 -1
- package/fesm2022/primeng-rating.mjs +2 -2
- package/fesm2022/primeng-rating.mjs.map +1 -1
- package/fesm2022/primeng-ripple.mjs +1 -1
- package/fesm2022/primeng-ripple.mjs.map +1 -1
- package/fesm2022/primeng-scroller.mjs +2 -2
- package/fesm2022/primeng-scroller.mjs.map +1 -1
- package/fesm2022/primeng-scrollpanel.mjs +2 -2
- package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
- package/fesm2022/primeng-scrolltop.mjs +2 -2
- package/fesm2022/primeng-scrolltop.mjs.map +1 -1
- package/fesm2022/primeng-select.mjs +4 -4
- package/fesm2022/primeng-select.mjs.map +1 -1
- package/fesm2022/primeng-selectbutton.mjs +2 -2
- package/fesm2022/primeng-selectbutton.mjs.map +1 -1
- package/fesm2022/primeng-sidebar.mjs +2 -2
- package/fesm2022/primeng-sidebar.mjs.map +1 -1
- package/fesm2022/primeng-skeleton.mjs +2 -2
- package/fesm2022/primeng-skeleton.mjs.map +1 -1
- package/fesm2022/primeng-slider.mjs +2 -2
- package/fesm2022/primeng-slider.mjs.map +1 -1
- package/fesm2022/primeng-speeddial.mjs +2 -2
- package/fesm2022/primeng-speeddial.mjs.map +1 -1
- package/fesm2022/primeng-splitbutton.mjs +2 -2
- package/fesm2022/primeng-splitbutton.mjs.map +1 -1
- package/fesm2022/primeng-splitter.mjs +4 -4
- package/fesm2022/primeng-splitter.mjs.map +1 -1
- package/fesm2022/primeng-stepper.mjs +16 -16
- package/fesm2022/primeng-stepper.mjs.map +1 -1
- package/fesm2022/primeng-steps.mjs +2 -2
- package/fesm2022/primeng-steps.mjs.map +1 -1
- package/fesm2022/primeng-styleclass.mjs +1 -1
- package/fesm2022/primeng-styleclass.mjs.map +1 -1
- package/fesm2022/primeng-table.mjs +64 -38
- package/fesm2022/primeng-table.mjs.map +1 -1
- package/fesm2022/primeng-tabmenu.mjs +2 -2
- package/fesm2022/primeng-tabmenu.mjs.map +1 -1
- package/fesm2022/primeng-tabs.mjs +11 -11
- package/fesm2022/primeng-tabs.mjs.map +1 -1
- package/fesm2022/primeng-tabview.mjs +4 -4
- package/fesm2022/primeng-tabview.mjs.map +1 -1
- package/fesm2022/primeng-tag.mjs +2 -2
- package/fesm2022/primeng-tag.mjs.map +1 -1
- package/fesm2022/primeng-terminal.mjs +2 -2
- package/fesm2022/primeng-terminal.mjs.map +1 -1
- package/fesm2022/primeng-textarea.mjs +1 -1
- package/fesm2022/primeng-textarea.mjs.map +1 -1
- package/fesm2022/primeng-tieredmenu.mjs +4 -4
- package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
- package/fesm2022/primeng-timeline.mjs +2 -2
- package/fesm2022/primeng-timeline.mjs.map +1 -1
- package/fesm2022/primeng-toast.mjs +4 -4
- package/fesm2022/primeng-toast.mjs.map +1 -1
- package/fesm2022/primeng-togglebutton.mjs +3 -3
- package/fesm2022/primeng-togglebutton.mjs.map +1 -1
- package/fesm2022/primeng-toggleswitch.mjs +2 -2
- package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
- package/fesm2022/primeng-toolbar.mjs +2 -2
- package/fesm2022/primeng-toolbar.mjs.map +1 -1
- package/fesm2022/primeng-tooltip.mjs +1 -1
- package/fesm2022/primeng-tooltip.mjs.map +1 -1
- package/fesm2022/primeng-tree.mjs +4 -4
- package/fesm2022/primeng-tree.mjs.map +1 -1
- package/fesm2022/primeng-treeselect.mjs +2 -2
- package/fesm2022/primeng-treeselect.mjs.map +1 -1
- package/fesm2022/primeng-treetable.mjs +24 -24
- package/fesm2022/primeng-treetable.mjs.map +1 -1
- package/package.json +163 -511
- package/speeddial/speeddial.d.ts +2 -2
- package/esm2022/accordion/accordion.mjs +0 -1281
- package/esm2022/accordion/primeng-accordion.mjs +0 -5
- package/esm2022/accordion/public_api.mjs +0 -3
- package/esm2022/accordion/style/accordionstyle.mjs +0 -163
- package/esm2022/animateonscroll/animateonscroll.mjs +0 -174
- package/esm2022/animateonscroll/primeng-animateonscroll.mjs +0 -5
- package/esm2022/animateonscroll/public_api.mjs +0 -2
- package/esm2022/api/blockableui.mjs +0 -2
- package/esm2022/api/confirmaeventtype.mjs +0 -10
- package/esm2022/api/confirmation.mjs +0 -2
- package/esm2022/api/confirmationservice.mjs +0 -43
- package/esm2022/api/contextmenuservice.mjs +0 -22
- package/esm2022/api/filtermatchmode.mjs +0 -23
- package/esm2022/api/filtermetadata.mjs +0 -2
- package/esm2022/api/filteroperator.mjs +0 -5
- package/esm2022/api/filterservice.mjs +0 -224
- package/esm2022/api/lazyloadevent.mjs +0 -2
- package/esm2022/api/lazyloadmeta.mjs +0 -2
- package/esm2022/api/megamenuitem.mjs +0 -2
- package/esm2022/api/menuitem.mjs +0 -2
- package/esm2022/api/messageservice.mjs +0 -47
- package/esm2022/api/overlayoptions.mjs +0 -2
- package/esm2022/api/overlayservice.mjs +0 -19
- package/esm2022/api/primeicons.mjs +0 -314
- package/esm2022/api/primeng-api.mjs +0 -5
- package/esm2022/api/public_api.mjs +0 -33
- package/esm2022/api/scrolleroptions.mjs +0 -2
- package/esm2022/api/selectitem.mjs +0 -2
- package/esm2022/api/selectitemgroup.mjs +0 -2
- package/esm2022/api/shared.mjs +0 -76
- package/esm2022/api/sortevent.mjs +0 -2
- package/esm2022/api/sortmeta.mjs +0 -2
- package/esm2022/api/tablestate.mjs +0 -2
- package/esm2022/api/toastmessage.mjs +0 -2
- package/esm2022/api/tooltipoptions.mjs +0 -2
- package/esm2022/api/translation.mjs +0 -2
- package/esm2022/api/translationkeys.mjs +0 -51
- package/esm2022/api/treedragdropservice.mjs +0 -21
- package/esm2022/api/treenode.mjs +0 -2
- package/esm2022/api/treenodedragevent.mjs +0 -2
- package/esm2022/api/treetablenode.mjs +0 -2
- package/esm2022/autocomplete/autocomplete.interface.mjs +0 -2
- package/esm2022/autocomplete/autocomplete.mjs +0 -2284
- package/esm2022/autocomplete/primeng-autocomplete.mjs +0 -5
- package/esm2022/autocomplete/public_api.mjs +0 -4
- package/esm2022/autocomplete/style/autocompletestyle.mjs +0 -409
- package/esm2022/autofocus/autofocus.mjs +0 -86
- package/esm2022/autofocus/primeng-autofocus.mjs +0 -5
- package/esm2022/autofocus/public_api.mjs +0 -2
- package/esm2022/avatar/avatar.mjs +0 -193
- package/esm2022/avatar/primeng-avatar.mjs +0 -5
- package/esm2022/avatar/public_api.mjs +0 -3
- package/esm2022/avatar/style/avatarstyle.mjs +0 -130
- package/esm2022/avatargroup/avatargroup.mjs +0 -80
- package/esm2022/avatargroup/primeng-avatargroup.mjs +0 -5
- package/esm2022/avatargroup/public_api.mjs +0 -3
- package/esm2022/avatargroup/style/avatargroupstyle.mjs +0 -29
- package/esm2022/badge/badge.mjs +0 -339
- package/esm2022/badge/primeng-badge.mjs +0 -5
- package/esm2022/badge/public_api.mjs +0 -3
- package/esm2022/badge/style/badgestyle.mjs +0 -143
- package/esm2022/base/base.mjs +0 -19
- package/esm2022/base/primeng-base.mjs +0 -5
- package/esm2022/base/public_api.mjs +0 -3
- package/esm2022/base/style/basestyle.mjs +0 -256
- package/esm2022/basecomponent/basecomponent.mjs +0 -160
- package/esm2022/basecomponent/primeng-basecomponent.mjs +0 -5
- package/esm2022/basecomponent/public_api.mjs +0 -3
- package/esm2022/basecomponent/style/basecomponentstyle.mjs +0 -13
- package/esm2022/blockui/blockui.interface.mjs +0 -2
- package/esm2022/blockui/blockui.mjs +0 -230
- package/esm2022/blockui/primeng-blockui.mjs +0 -5
- package/esm2022/blockui/public_api.mjs +0 -4
- package/esm2022/blockui/style/blockuistyle.mjs +0 -50
- package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
- package/esm2022/breadcrumb/breadcrumb.mjs +0 -601
- package/esm2022/breadcrumb/primeng-breadcrumb.mjs +0 -5
- package/esm2022/breadcrumb/public_api.mjs +0 -4
- package/esm2022/breadcrumb/style/breadcrumbstyle.mjs +0 -133
- package/esm2022/button/button.interface.mjs +0 -2
- package/esm2022/button/button.mjs +0 -923
- package/esm2022/button/primeng-button.mjs +0 -5
- package/esm2022/button/public_api.mjs +0 -4
- package/esm2022/button/style/buttonstyle.mjs +0 -707
- package/esm2022/buttongroup/buttongroup.mjs +0 -47
- package/esm2022/buttongroup/primeng-buttongroup.mjs +0 -5
- package/esm2022/buttongroup/public_api.mjs +0 -3
- package/esm2022/buttongroup/style/buttongroupstyle.mjs +0 -120
- package/esm2022/calendar/calendar.interface.mjs +0 -2
- package/esm2022/calendar/calendar.mjs +0 -4567
- package/esm2022/calendar/primeng-calendar.mjs +0 -5
- package/esm2022/calendar/public_api.mjs +0 -4
- package/esm2022/calendar/style/calendarstyle.mjs +0 -472
- package/esm2022/card/card.interface.mjs +0 -2
- package/esm2022/card/card.mjs +0 -293
- package/esm2022/card/primeng-card.mjs +0 -5
- package/esm2022/card/public_api.mjs +0 -4
- package/esm2022/card/style/cardstyle.mjs +0 -100
- package/esm2022/carousel/carousel.interface.mjs +0 -2
- package/esm2022/carousel/carousel.mjs +0 -1213
- package/esm2022/carousel/primeng-carousel.mjs +0 -5
- package/esm2022/carousel/public_api.mjs +0 -4
- package/esm2022/carousel/style/carouselstyle.mjs +0 -234
- package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
- package/esm2022/cascadeselect/cascadeselect.mjs +0 -1878
- package/esm2022/cascadeselect/primeng-cascadeselect.mjs +0 -5
- package/esm2022/cascadeselect/public_api.mjs +0 -4
- package/esm2022/cascadeselect/style/cascadeselectstyle.mjs +0 -379
- package/esm2022/chart/chart.mjs +0 -210
- package/esm2022/chart/primeng-chart.mjs +0 -5
- package/esm2022/chart/public_api.mjs +0 -3
- package/esm2022/chart/style/chartstyle.mjs +0 -36
- package/esm2022/checkbox/checkbox.interface.mjs +0 -2
- package/esm2022/checkbox/checkbox.mjs +0 -468
- package/esm2022/checkbox/primeng-checkbox.mjs +0 -5
- package/esm2022/checkbox/public_api.mjs +0 -4
- package/esm2022/checkbox/style/checkboxstyle.mjs +0 -191
- package/esm2022/chip/chip.interface.mjs +0 -2
- package/esm2022/chip/chip.mjs +0 -358
- package/esm2022/chip/primeng-chip.mjs +0 -5
- package/esm2022/chip/public_api.mjs +0 -4
- package/esm2022/chip/style/chipstyle.mjs +0 -104
- package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
- package/esm2022/colorpicker/colorpicker.mjs +0 -856
- package/esm2022/colorpicker/primeng-colorpicker.mjs +0 -5
- package/esm2022/colorpicker/public_api.mjs +0 -4
- package/esm2022/colorpicker/style/colorpickerstyle.mjs +0 -213
- package/esm2022/config/primeng-config.mjs +0 -5
- package/esm2022/config/primeng.mjs +0 -185
- package/esm2022/config/provideprimeng.mjs +0 -19
- package/esm2022/config/public_api.mjs +0 -4
- package/esm2022/config/themeprovider.mjs +0 -68
- package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
- package/esm2022/confirmdialog/confirmdialog.mjs +0 -854
- package/esm2022/confirmdialog/primeng-confirmdialog.mjs +0 -5
- package/esm2022/confirmdialog/public_api.mjs +0 -4
- package/esm2022/confirmdialog/style/confirmdialogstyle.mjs +0 -67
- package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
- package/esm2022/confirmpopup/confirmpopup.mjs +0 -647
- package/esm2022/confirmpopup/primeng-confirmpopup.mjs +0 -5
- package/esm2022/confirmpopup/public_api.mjs +0 -4
- package/esm2022/confirmpopup/style/confirmpopupstyle.mjs +0 -170
- package/esm2022/contextmenu/contextmenu.mjs +0 -1467
- package/esm2022/contextmenu/primeng-contextmenu.mjs +0 -5
- package/esm2022/contextmenu/public_api.mjs +0 -3
- package/esm2022/contextmenu/style/contextmenustyle.mjs +0 -244
- package/esm2022/dataview/dataview.interface.mjs +0 -2
- package/esm2022/dataview/dataview.mjs +0 -819
- package/esm2022/dataview/primeng-dataview.mjs +0 -5
- package/esm2022/dataview/public_api.mjs +0 -4
- package/esm2022/dataview/style/dataviewstyle.mjs +0 -115
- package/esm2022/datepicker/datepicker.interface.mjs +0 -2
- package/esm2022/datepicker/datepicker.mjs +0 -4580
- package/esm2022/datepicker/primeng-datepicker.mjs +0 -5
- package/esm2022/datepicker/public_api.mjs +0 -4
- package/esm2022/datepicker/style/datepickerstyle.mjs +0 -663
- package/esm2022/defer/defer.mjs +0 -100
- package/esm2022/defer/primeng-defer.mjs +0 -5
- package/esm2022/defer/public_api.mjs +0 -2
- package/esm2022/dialog/dialog.interface.mjs +0 -2
- package/esm2022/dialog/dialog.mjs +0 -1430
- package/esm2022/dialog/primeng-dialog.mjs +0 -5
- package/esm2022/dialog/public_api.mjs +0 -4
- package/esm2022/dialog/style/dialogstyle.mjs +0 -283
- package/esm2022/divider/divider.mjs +0 -117
- package/esm2022/divider/primeng-divider.mjs +0 -5
- package/esm2022/divider/public_api.mjs +0 -3
- package/esm2022/divider/style/dividerstyle.mjs +0 -138
- package/esm2022/dock/dock.interface.mjs +0 -2
- package/esm2022/dock/dock.mjs +0 -465
- package/esm2022/dock/primeng-dock.mjs +0 -5
- package/esm2022/dock/public_api.mjs +0 -4
- package/esm2022/dock/style/dockstyle.mjs +0 -210
- package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
- package/esm2022/dom/domhandler.mjs +0 -725
- package/esm2022/dom/primeng-dom.mjs +0 -5
- package/esm2022/dom/public_api.mjs +0 -3
- package/esm2022/dragdrop/dragdrop.mjs +0 -323
- package/esm2022/dragdrop/primeng-dragdrop.mjs +0 -5
- package/esm2022/dragdrop/public_api.mjs +0 -2
- package/esm2022/drawer/drawer.interface.mjs +0 -2
- package/esm2022/drawer/drawer.mjs +0 -705
- package/esm2022/drawer/primeng-drawer.mjs +0 -5
- package/esm2022/drawer/public_api.mjs +0 -4
- package/esm2022/drawer/style/drawerstyle.mjs +0 -283
- package/esm2022/dropdown/dropdown.interface.mjs +0 -2
- package/esm2022/dropdown/dropdown.mjs +0 -2506
- package/esm2022/dropdown/primeng-dropdown.mjs +0 -5
- package/esm2022/dropdown/public_api.mjs +0 -4
- package/esm2022/dropdown/style/dropdownstyle.mjs +0 -264
- package/esm2022/dynamicdialog/dialogservice.mjs +0 -105
- package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -182
- package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
- package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
- package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -879
- package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -18
- package/esm2022/dynamicdialog/primeng-dynamicdialog.mjs +0 -5
- package/esm2022/dynamicdialog/public_api.mjs +0 -8
- package/esm2022/dynamicdialog/style/dynamicdialogstyle.mjs +0 -60
- package/esm2022/editor/editor.interface.mjs +0 -2
- package/esm2022/editor/editor.mjs +0 -443
- package/esm2022/editor/primeng-editor.mjs +0 -5
- package/esm2022/editor/public_api.mjs +0 -4
- package/esm2022/editor/style/editorstyle.mjs +0 -1008
- package/esm2022/fieldset/fieldset.interface.mjs +0 -2
- package/esm2022/fieldset/fieldset.mjs +0 -455
- package/esm2022/fieldset/primeng-fieldset.mjs +0 -5
- package/esm2022/fieldset/public_api.mjs +0 -4
- package/esm2022/fieldset/style/fieldsetstyle.mjs +0 -143
- package/esm2022/fileupload/fileupload.interface.mjs +0 -2
- package/esm2022/fileupload/fileupload.mjs +0 -1647
- package/esm2022/fileupload/primeng-fileupload.mjs +0 -5
- package/esm2022/fileupload/public_api.mjs +0 -4
- package/esm2022/fileupload/style/fileuploadstyle.mjs +0 -194
- package/esm2022/floatlabel/floatlabel.mjs +0 -61
- package/esm2022/floatlabel/primeng-floatlabel.mjs +0 -5
- package/esm2022/floatlabel/public_api.mjs +0 -3
- package/esm2022/floatlabel/style/floatlabelstyle.mjs +0 -133
- package/esm2022/fluid/fluid.mjs +0 -50
- package/esm2022/fluid/primeng-fluid.mjs +0 -5
- package/esm2022/fluid/public_api.mjs +0 -3
- package/esm2022/fluid/style/fluidstyle.mjs +0 -38
- package/esm2022/focustrap/focustrap.mjs +0 -104
- package/esm2022/focustrap/primeng-focustrap.mjs +0 -5
- package/esm2022/focustrap/public_api.mjs +0 -2
- package/esm2022/galleria/galleria.interface.mjs +0 -2
- package/esm2022/galleria/galleria.mjs +0 -1867
- package/esm2022/galleria/primeng-galleria.mjs +0 -5
- package/esm2022/galleria/public_api.mjs +0 -4
- package/esm2022/galleria/style/galleriastyle.mjs +0 -644
- package/esm2022/iconfield/iconfield.mjs +0 -73
- package/esm2022/iconfield/primeng-iconfield.mjs +0 -5
- package/esm2022/iconfield/public_api.mjs +0 -3
- package/esm2022/iconfield/style/iconfieldstyle.mjs +0 -77
- package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -34
- package/esm2022/icons/angledoubledown/primeng-icons-angledoubledown.mjs +0 -5
- package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -34
- package/esm2022/icons/angledoubleleft/primeng-icons-angledoubleleft.mjs +0 -5
- package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -34
- package/esm2022/icons/angledoubleright/primeng-icons-angledoubleright.mjs +0 -5
- package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -34
- package/esm2022/icons/angledoubleup/primeng-icons-angledoubleup.mjs +0 -5
- package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
- package/esm2022/icons/angledown/angledown.mjs +0 -32
- package/esm2022/icons/angledown/primeng-icons-angledown.mjs +0 -5
- package/esm2022/icons/angledown/public_api.mjs +0 -2
- package/esm2022/icons/angleleft/angleleft.mjs +0 -32
- package/esm2022/icons/angleleft/primeng-icons-angleleft.mjs +0 -5
- package/esm2022/icons/angleleft/public_api.mjs +0 -2
- package/esm2022/icons/angleright/angleright.mjs +0 -32
- package/esm2022/icons/angleright/primeng-icons-angleright.mjs +0 -5
- package/esm2022/icons/angleright/public_api.mjs +0 -2
- package/esm2022/icons/angleup/angleup.mjs +0 -32
- package/esm2022/icons/angleup/primeng-icons-angleup.mjs +0 -5
- package/esm2022/icons/angleup/public_api.mjs +0 -2
- package/esm2022/icons/arrowdown/arrowdown.mjs +0 -53
- package/esm2022/icons/arrowdown/primeng-icons-arrowdown.mjs +0 -5
- package/esm2022/icons/arrowdown/public_api.mjs +0 -2
- package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -32
- package/esm2022/icons/arrowdownleft/primeng-icons-arrowdownleft.mjs +0 -5
- package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
- package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -32
- package/esm2022/icons/arrowdownright/primeng-icons-arrowdownright.mjs +0 -5
- package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
- package/esm2022/icons/arrowleft/arrowleft.mjs +0 -53
- package/esm2022/icons/arrowleft/primeng-icons-arrowleft.mjs +0 -5
- package/esm2022/icons/arrowleft/public_api.mjs +0 -2
- package/esm2022/icons/arrowright/arrowright.mjs +0 -34
- package/esm2022/icons/arrowright/primeng-icons-arrowright.mjs +0 -5
- package/esm2022/icons/arrowright/public_api.mjs +0 -2
- package/esm2022/icons/arrowup/arrowup.mjs +0 -53
- package/esm2022/icons/arrowup/primeng-icons-arrowup.mjs +0 -5
- package/esm2022/icons/arrowup/public_api.mjs +0 -2
- package/esm2022/icons/ban/ban.mjs +0 -51
- package/esm2022/icons/ban/primeng-icons-ban.mjs +0 -5
- package/esm2022/icons/ban/public_api.mjs +0 -2
- package/esm2022/icons/bars/bars.mjs +0 -34
- package/esm2022/icons/bars/primeng-icons-bars.mjs +0 -5
- package/esm2022/icons/bars/public_api.mjs +0 -2
- package/esm2022/icons/baseicon/baseicon.mjs +0 -54
- package/esm2022/icons/baseicon/primeng-icons-baseicon.mjs +0 -5
- package/esm2022/icons/baseicon/public_api.mjs +0 -3
- package/esm2022/icons/baseicon/style/baseiconstyle.mjs +0 -57
- package/esm2022/icons/blank/blank.mjs +0 -26
- package/esm2022/icons/blank/primeng-icons-blank.mjs +0 -5
- package/esm2022/icons/blank/public_api.mjs +0 -2
- package/esm2022/icons/calendar/calendar.mjs +0 -32
- package/esm2022/icons/calendar/primeng-icons-calendar.mjs +0 -5
- package/esm2022/icons/calendar/public_api.mjs +0 -2
- package/esm2022/icons/caretleft/caretleft.mjs +0 -32
- package/esm2022/icons/caretleft/primeng-icons-caretleft.mjs +0 -5
- package/esm2022/icons/caretleft/public_api.mjs +0 -2
- package/esm2022/icons/caretright/caretright.mjs +0 -32
- package/esm2022/icons/caretright/primeng-icons-caretright.mjs +0 -5
- package/esm2022/icons/caretright/public_api.mjs +0 -2
- package/esm2022/icons/check/check.mjs +0 -32
- package/esm2022/icons/check/primeng-icons-check.mjs +0 -5
- package/esm2022/icons/check/public_api.mjs +0 -2
- package/esm2022/icons/chevrondown/chevrondown.mjs +0 -32
- package/esm2022/icons/chevrondown/primeng-icons-chevrondown.mjs +0 -5
- package/esm2022/icons/chevrondown/public_api.mjs +0 -2
- package/esm2022/icons/chevronleft/chevronleft.mjs +0 -32
- package/esm2022/icons/chevronleft/primeng-icons-chevronleft.mjs +0 -5
- package/esm2022/icons/chevronleft/public_api.mjs +0 -2
- package/esm2022/icons/chevronright/chevronright.mjs +0 -32
- package/esm2022/icons/chevronright/primeng-icons-chevronright.mjs +0 -5
- package/esm2022/icons/chevronright/public_api.mjs +0 -2
- package/esm2022/icons/chevronup/chevronup.mjs +0 -32
- package/esm2022/icons/chevronup/primeng-icons-chevronup.mjs +0 -5
- package/esm2022/icons/chevronup/public_api.mjs +0 -2
- package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -59
- package/esm2022/icons/exclamationtriangle/primeng-icons-exclamationtriangle.mjs +0 -5
- package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
- package/esm2022/icons/eye/eye.mjs +0 -34
- package/esm2022/icons/eye/primeng-icons-eye.mjs +0 -5
- package/esm2022/icons/eye/public_api.mjs +0 -2
- package/esm2022/icons/eyeslash/eyeslash.mjs +0 -53
- package/esm2022/icons/eyeslash/primeng-icons-eyeslash.mjs +0 -5
- package/esm2022/icons/eyeslash/public_api.mjs +0 -2
- package/esm2022/icons/filter/filter.mjs +0 -51
- package/esm2022/icons/filter/primeng-icons-filter.mjs +0 -5
- package/esm2022/icons/filter/public_api.mjs +0 -2
- package/esm2022/icons/filterslash/filterslash.mjs +0 -53
- package/esm2022/icons/filterslash/primeng-icons-filterslash.mjs +0 -5
- package/esm2022/icons/filterslash/public_api.mjs +0 -2
- package/esm2022/icons/home/home.mjs +0 -53
- package/esm2022/icons/home/primeng-icons-home.mjs +0 -5
- package/esm2022/icons/home/public_api.mjs +0 -2
- package/esm2022/icons/infocircle/infocircle.mjs +0 -53
- package/esm2022/icons/infocircle/primeng-icons-infocircle.mjs +0 -5
- package/esm2022/icons/infocircle/public_api.mjs +0 -2
- package/esm2022/icons/minus/minus.mjs +0 -32
- package/esm2022/icons/minus/primeng-icons-minus.mjs +0 -5
- package/esm2022/icons/minus/public_api.mjs +0 -2
- package/esm2022/icons/pencil/pencil.mjs +0 -51
- package/esm2022/icons/pencil/primeng-icons-pencil.mjs +0 -5
- package/esm2022/icons/pencil/public_api.mjs +0 -2
- package/esm2022/icons/plus/plus.mjs +0 -51
- package/esm2022/icons/plus/primeng-icons-plus.mjs +0 -5
- package/esm2022/icons/plus/public_api.mjs +0 -2
- package/esm2022/icons/primeng-icons.mjs +0 -5
- package/esm2022/icons/public_api.mjs +0 -58
- package/esm2022/icons/refresh/primeng-icons-refresh.mjs +0 -5
- package/esm2022/icons/refresh/public_api.mjs +0 -2
- package/esm2022/icons/refresh/refresh.mjs +0 -53
- package/esm2022/icons/search/primeng-icons-search.mjs +0 -5
- package/esm2022/icons/search/public_api.mjs +0 -2
- package/esm2022/icons/search/search.mjs +0 -53
- package/esm2022/icons/searchminus/primeng-icons-searchminus.mjs +0 -5
- package/esm2022/icons/searchminus/public_api.mjs +0 -2
- package/esm2022/icons/searchminus/searchminus.mjs +0 -53
- package/esm2022/icons/searchplus/primeng-icons-searchplus.mjs +0 -5
- package/esm2022/icons/searchplus/public_api.mjs +0 -2
- package/esm2022/icons/searchplus/searchplus.mjs +0 -53
- package/esm2022/icons/sortalt/primeng-icons-sortalt.mjs +0 -5
- package/esm2022/icons/sortalt/public_api.mjs +0 -2
- package/esm2022/icons/sortalt/sortalt.mjs +0 -57
- package/esm2022/icons/sortamountdown/primeng-icons-sortamountdown.mjs +0 -5
- package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
- package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -51
- package/esm2022/icons/sortamountupalt/primeng-icons-sortamountupalt.mjs +0 -5
- package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
- package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -51
- package/esm2022/icons/spinner/primeng-icons-spinner.mjs +0 -5
- package/esm2022/icons/spinner/public_api.mjs +0 -2
- package/esm2022/icons/spinner/spinner.mjs +0 -51
- package/esm2022/icons/star/primeng-icons-star.mjs +0 -5
- package/esm2022/icons/star/public_api.mjs +0 -2
- package/esm2022/icons/star/star.mjs +0 -51
- package/esm2022/icons/starfill/primeng-icons-starfill.mjs +0 -5
- package/esm2022/icons/starfill/public_api.mjs +0 -2
- package/esm2022/icons/starfill/starfill.mjs +0 -51
- package/esm2022/icons/thlarge/primeng-icons-thlarge.mjs +0 -5
- package/esm2022/icons/thlarge/public_api.mjs +0 -2
- package/esm2022/icons/thlarge/thlarge.mjs +0 -53
- package/esm2022/icons/times/primeng-icons-times.mjs +0 -5
- package/esm2022/icons/times/public_api.mjs +0 -2
- package/esm2022/icons/times/times.mjs +0 -32
- package/esm2022/icons/timescircle/primeng-icons-timescircle.mjs +0 -5
- package/esm2022/icons/timescircle/public_api.mjs +0 -2
- package/esm2022/icons/timescircle/timescircle.mjs +0 -53
- package/esm2022/icons/trash/primeng-icons-trash.mjs +0 -5
- package/esm2022/icons/trash/public_api.mjs +0 -2
- package/esm2022/icons/trash/trash.mjs +0 -53
- package/esm2022/icons/undo/primeng-icons-undo.mjs +0 -5
- package/esm2022/icons/undo/public_api.mjs +0 -2
- package/esm2022/icons/undo/undo.mjs +0 -53
- package/esm2022/icons/upload/primeng-icons-upload.mjs +0 -5
- package/esm2022/icons/upload/public_api.mjs +0 -2
- package/esm2022/icons/upload/upload.mjs +0 -53
- package/esm2022/icons/windowmaximize/primeng-icons-windowmaximize.mjs +0 -5
- package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
- package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -53
- package/esm2022/icons/windowminimize/primeng-icons-windowminimize.mjs +0 -5
- package/esm2022/icons/windowminimize/public_api.mjs +0 -2
- package/esm2022/icons/windowminimize/windowminimize.mjs +0 -53
- package/esm2022/iftalabel/iftalabel.mjs +0 -49
- package/esm2022/iftalabel/primeng-iftalabel.mjs +0 -5
- package/esm2022/iftalabel/public_api.mjs +0 -3
- package/esm2022/iftalabel/style/iftalabelstyle.mjs +0 -96
- package/esm2022/image/image.interface.mjs +0 -2
- package/esm2022/image/image.mjs +0 -794
- package/esm2022/image/primeng-image.mjs +0 -5
- package/esm2022/image/public_api.mjs +0 -4
- package/esm2022/image/style/imagestyle.mjs +0 -219
- package/esm2022/imagecompare/imagecompare.mjs +0 -178
- package/esm2022/imagecompare/primeng-imagecompare.mjs +0 -5
- package/esm2022/imagecompare/public_api.mjs +0 -3
- package/esm2022/imagecompare/style/imagecomparestyle.mjs +0 -124
- package/esm2022/inplace/inplace.interface.mjs +0 -2
- package/esm2022/inplace/inplace.mjs +0 -369
- package/esm2022/inplace/primeng-inplace.mjs +0 -5
- package/esm2022/inplace/public_api.mjs +0 -4
- package/esm2022/inplace/style/inplacestyle.mjs +0 -69
- package/esm2022/inputgroup/inputgroup.mjs +0 -68
- package/esm2022/inputgroup/primeng-inputgroup.mjs +0 -5
- package/esm2022/inputgroup/public_api.mjs +0 -3
- package/esm2022/inputgroup/style/inputgroupstyle.mjs +0 -145
- package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -74
- package/esm2022/inputgroupaddon/primeng-inputgroupaddon.mjs +0 -5
- package/esm2022/inputgroupaddon/public_api.mjs +0 -3
- package/esm2022/inputgroupaddon/style/inputgroupaddonstyle.mjs +0 -16
- package/esm2022/inputicon/inputicon.mjs +0 -66
- package/esm2022/inputicon/primeng-inputicon.mjs +0 -5
- package/esm2022/inputicon/public_api.mjs +0 -3
- package/esm2022/inputicon/style/inputiconstyle.mjs +0 -16
- package/esm2022/inputmask/inputmask.interface.mjs +0 -2
- package/esm2022/inputmask/inputmask.mjs +0 -927
- package/esm2022/inputmask/primeng-inputmask.mjs +0 -5
- package/esm2022/inputmask/public_api.mjs +0 -4
- package/esm2022/inputmask/style/inputmaskstyle.mjs +0 -62
- package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
- package/esm2022/inputnumber/inputnumber.mjs +0 -1753
- package/esm2022/inputnumber/primeng-inputnumber.mjs +0 -5
- package/esm2022/inputnumber/public_api.mjs +0 -4
- package/esm2022/inputnumber/style/inputnumberstyle.mjs +0 -240
- package/esm2022/inputotp/inputotp.mjs +0 -425
- package/esm2022/inputotp/primeng-inputotp.mjs +0 -5
- package/esm2022/inputotp/public_api.mjs +0 -3
- package/esm2022/inputotp/style/inputotpstyle.mjs +0 -60
- package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
- package/esm2022/inputswitch/inputswitch.mjs +0 -241
- package/esm2022/inputswitch/primeng-inputswitch.mjs +0 -5
- package/esm2022/inputswitch/public_api.mjs +0 -4
- package/esm2022/inputswitch/style/inputswitchstyle.mjs +0 -130
- package/esm2022/inputtext/inputtext.mjs +0 -104
- package/esm2022/inputtext/primeng-inputtext.mjs +0 -5
- package/esm2022/inputtext/public_api.mjs +0 -3
- package/esm2022/inputtext/style/inputtextstyle.mjs +0 -117
- package/esm2022/inputtextarea/inputtextarea.mjs +0 -156
- package/esm2022/inputtextarea/primeng-inputtextarea.mjs +0 -5
- package/esm2022/inputtextarea/public_api.mjs +0 -3
- package/esm2022/inputtextarea/style/textareastyle.mjs +0 -107
- package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
- package/esm2022/keyfilter/keyfilter.mjs +0 -263
- package/esm2022/keyfilter/primeng-keyfilter.mjs +0 -5
- package/esm2022/keyfilter/public_api.mjs +0 -3
- package/esm2022/knob/knob.mjs +0 -471
- package/esm2022/knob/primeng-knob.mjs +0 -5
- package/esm2022/knob/public_api.mjs +0 -3
- package/esm2022/knob/style/knobstyle.mjs +0 -83
- package/esm2022/listbox/listbox.interface.mjs +0 -2
- package/esm2022/listbox/listbox.mjs +0 -2103
- package/esm2022/listbox/primeng-listbox.mjs +0 -5
- package/esm2022/listbox/public_api.mjs +0 -4
- package/esm2022/listbox/style/listboxstyle.mjs +0 -206
- package/esm2022/megamenu/megamenu.interface.mjs +0 -2
- package/esm2022/megamenu/megamenu.mjs +0 -1653
- package/esm2022/megamenu/primeng-megamenu.mjs +0 -5
- package/esm2022/megamenu/public_api.mjs +0 -4
- package/esm2022/megamenu/style/megamenustyle.mjs +0 -487
- package/esm2022/menu/menu.mjs +0 -1193
- package/esm2022/menu/primeng-menu.mjs +0 -5
- package/esm2022/menu/public_api.mjs +0 -3
- package/esm2022/menu/style/menustyle.mjs +0 -179
- package/esm2022/menubar/menubar.interface.mjs +0 -2
- package/esm2022/menubar/menubar.mjs +0 -1519
- package/esm2022/menubar/primeng-menubar.mjs +0 -5
- package/esm2022/menubar/public_api.mjs +0 -4
- package/esm2022/menubar/style/menubarstyle.mjs +0 -375
- package/esm2022/message/message.mjs +0 -445
- package/esm2022/message/primeng-message.mjs +0 -5
- package/esm2022/message/public_api.mjs +0 -3
- package/esm2022/message/style/messagestyle.mjs +0 -357
- package/esm2022/messages/messages.interface.mjs +0 -2
- package/esm2022/messages/messages.mjs +0 -538
- package/esm2022/messages/primeng-messages.mjs +0 -5
- package/esm2022/messages/public_api.mjs +0 -4
- package/esm2022/messages/style/messagesstyle.mjs +0 -229
- package/esm2022/metergroup/metergroup.interface.mjs +0 -2
- package/esm2022/metergroup/metergroup.mjs +0 -455
- package/esm2022/metergroup/primeng-metergroup.mjs +0 -5
- package/esm2022/metergroup/public_api.mjs +0 -4
- package/esm2022/metergroup/style/metergroupstyle.mjs +0 -169
- package/esm2022/multiselect/multiselect.interface.mjs +0 -2
- package/esm2022/multiselect/multiselect.mjs +0 -3015
- package/esm2022/multiselect/primeng-multiselect.mjs +0 -5
- package/esm2022/multiselect/public_api.mjs +0 -4
- package/esm2022/multiselect/style/multiselectstyle.mjs +0 -373
- package/esm2022/orderlist/orderlist.interface.mjs +0 -2
- package/esm2022/orderlist/orderlist.mjs +0 -1176
- package/esm2022/orderlist/primeng-orderlist.mjs +0 -5
- package/esm2022/orderlist/public_api.mjs +0 -4
- package/esm2022/orderlist/style/orderliststyle.mjs +0 -51
- package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
- package/esm2022/organizationchart/organizationchart.mjs +0 -607
- package/esm2022/organizationchart/primeng-organizationchart.mjs +0 -5
- package/esm2022/organizationchart/public_api.mjs +0 -4
- package/esm2022/organizationchart/style/organizationchartstyle.mjs +0 -191
- package/esm2022/overlay/overlay.mjs +0 -688
- package/esm2022/overlay/primeng-overlay.mjs +0 -5
- package/esm2022/overlay/public_api.mjs +0 -3
- package/esm2022/overlay/style/overlaystyle.mjs +0 -93
- package/esm2022/overlaybadge/overlaybadge.mjs +0 -121
- package/esm2022/overlaybadge/primeng-overlaybadge.mjs +0 -5
- package/esm2022/overlaybadge/public_api.mjs +0 -3
- package/esm2022/overlaybadge/style/overlaybadgestyle.mjs +0 -34
- package/esm2022/overlaypanel/overlaypanel.mjs +0 -552
- package/esm2022/overlaypanel/primeng-overlaypanel.mjs +0 -5
- package/esm2022/overlaypanel/public_api.mjs +0 -3
- package/esm2022/overlaypanel/style/popoverstyle.mjs +0 -119
- package/esm2022/paginator/paginator.interface.mjs +0 -2
- package/esm2022/paginator/paginator.mjs +0 -925
- package/esm2022/paginator/primeng-paginator.mjs +0 -5
- package/esm2022/paginator/public_api.mjs +0 -4
- package/esm2022/paginator/style/paginatorstyle.mjs +0 -243
- package/esm2022/panel/panel.mjs +0 -645
- package/esm2022/panel/primeng-panel.mjs +0 -5
- package/esm2022/panel/public_api.mjs +0 -3
- package/esm2022/panel/style/panelstyle.mjs +0 -120
- package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
- package/esm2022/panelmenu/panelmenu.mjs +0 -1651
- package/esm2022/panelmenu/primeng-panelmenu.mjs +0 -5
- package/esm2022/panelmenu/public_api.mjs +0 -4
- package/esm2022/panelmenu/style/panelmenustyle.mjs +0 -291
- package/esm2022/password/password.mjs +0 -1240
- package/esm2022/password/primeng-password.mjs +0 -5
- package/esm2022/password/public_api.mjs +0 -3
- package/esm2022/password/style/passwordstyle.mjs +0 -182
- package/esm2022/picklist/picklist.interface.mjs +0 -2
- package/esm2022/picklist/picklist.mjs +0 -2426
- package/esm2022/picklist/primeng-picklist.mjs +0 -5
- package/esm2022/picklist/public_api.mjs +0 -4
- package/esm2022/picklist/style/pickliststyle.mjs +0 -79
- package/esm2022/popover/popover.mjs +0 -535
- package/esm2022/popover/primeng-popover.mjs +0 -5
- package/esm2022/popover/public_api.mjs +0 -3
- package/esm2022/popover/style/popoverstyle.mjs +0 -99
- package/esm2022/primeng.mjs +0 -5
- package/esm2022/progressbar/primeng-progressbar.mjs +0 -5
- package/esm2022/progressbar/progressbar.mjs +0 -215
- package/esm2022/progressbar/public_api.mjs +0 -3
- package/esm2022/progressbar/style/progressbarstyle.mjs +0 -165
- package/esm2022/progressspinner/primeng-progressspinner.mjs +0 -5
- package/esm2022/progressspinner/progressspinner.mjs +0 -105
- package/esm2022/progressspinner/public_api.mjs +0 -3
- package/esm2022/progressspinner/style/progressspinnerstyle.mjs +0 -115
- package/esm2022/public_api.mjs +0 -2
- package/esm2022/radiobutton/primeng-radiobutton.mjs +0 -5
- package/esm2022/radiobutton/public_api.mjs +0 -4
- package/esm2022/radiobutton/radiobutton.interface.mjs +0 -2
- package/esm2022/radiobutton/radiobutton.mjs +0 -356
- package/esm2022/radiobutton/style/radiobuttonstyle.mjs +0 -196
- package/esm2022/rating/primeng-rating.mjs +0 -5
- package/esm2022/rating/public_api.mjs +0 -4
- package/esm2022/rating/rating.interface.mjs +0 -2
- package/esm2022/rating/rating.mjs +0 -449
- package/esm2022/rating/style/ratingstyle.mjs +0 -103
- package/esm2022/ripple/primeng-ripple.mjs +0 -5
- package/esm2022/ripple/public_api.mjs +0 -3
- package/esm2022/ripple/ripple.mjs +0 -134
- package/esm2022/ripple/style/ripplestyle.mjs +0 -63
- package/esm2022/scroller/primeng-scroller.mjs +0 -5
- package/esm2022/scroller/public_api.mjs +0 -4
- package/esm2022/scroller/scroller.interface.mjs +0 -2
- package/esm2022/scroller/scroller.mjs +0 -1300
- package/esm2022/scroller/style/scrollerstyle.mjs +0 -104
- package/esm2022/scrollpanel/primeng-scrollpanel.mjs +0 -5
- package/esm2022/scrollpanel/public_api.mjs +0 -4
- package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
- package/esm2022/scrollpanel/scrollpanel.mjs +0 -525
- package/esm2022/scrollpanel/style/scrollpanelstyle.mjs +0 -120
- package/esm2022/scrolltop/primeng-scrolltop.mjs +0 -5
- package/esm2022/scrolltop/public_api.mjs +0 -4
- package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
- package/esm2022/scrolltop/scrolltop.mjs +0 -343
- package/esm2022/scrolltop/style/scrolltopstyle.mjs +0 -77
- package/esm2022/select/primeng-select.mjs +0 -5
- package/esm2022/select/public_api.mjs +0 -4
- package/esm2022/select/select.interface.mjs +0 -2
- package/esm2022/select/select.mjs +0 -2697
- package/esm2022/select/style/selectstyle.mjs +0 -365
- package/esm2022/selectbutton/primeng-selectbutton.mjs +0 -5
- package/esm2022/selectbutton/public_api.mjs +0 -4
- package/esm2022/selectbutton/selectbutton.interface.mjs +0 -2
- package/esm2022/selectbutton/selectbutton.mjs +0 -388
- package/esm2022/selectbutton/style/selectbuttonstyle.mjs +0 -73
- package/esm2022/sidebar/primeng-sidebar.mjs +0 -5
- package/esm2022/sidebar/public_api.mjs +0 -4
- package/esm2022/sidebar/sidebar.interface.mjs +0 -2
- package/esm2022/sidebar/sidebar.mjs +0 -600
- package/esm2022/sidebar/style/drawerstyle.mjs +0 -174
- package/esm2022/skeleton/primeng-skeleton.mjs +0 -5
- package/esm2022/skeleton/public_api.mjs +0 -3
- package/esm2022/skeleton/skeleton.mjs +0 -121
- package/esm2022/skeleton/style/skeletonstyle.mjs +0 -93
- package/esm2022/slider/primeng-slider.mjs +0 -5
- package/esm2022/slider/public_api.mjs +0 -4
- package/esm2022/slider/slider.interface.mjs +0 -2
- package/esm2022/slider/slider.mjs +0 -820
- package/esm2022/slider/style/sliderstyle.mjs +0 -141
- package/esm2022/speeddial/primeng-speeddial.mjs +0 -5
- package/esm2022/speeddial/public_api.mjs +0 -4
- package/esm2022/speeddial/speeddial.interface.mjs +0 -2
- package/esm2022/speeddial/speeddial.mjs +0 -891
- package/esm2022/speeddial/style/speeddialstyle.mjs +0 -167
- package/esm2022/splitbutton/primeng-splitbutton.mjs +0 -5
- package/esm2022/splitbutton/public_api.mjs +0 -4
- package/esm2022/splitbutton/splitbutton.interface.mjs +0 -2
- package/esm2022/splitbutton/splitbutton.mjs +0 -602
- package/esm2022/splitbutton/style/splitbuttonstyle.mjs +0 -100
- package/esm2022/splitter/primeng-splitter.mjs +0 -5
- package/esm2022/splitter/public_api.mjs +0 -4
- package/esm2022/splitter/splitter.interface.mjs +0 -2
- package/esm2022/splitter/splitter.mjs +0 -626
- package/esm2022/splitter/style/splitterstyle.mjs +0 -127
- package/esm2022/stepper/primeng-stepper.mjs +0 -5
- package/esm2022/stepper/public_api.mjs +0 -3
- package/esm2022/stepper/stepper.mjs +0 -535
- package/esm2022/stepper/style/stepperstyle.mjs +0 -228
- package/esm2022/steps/primeng-steps.mjs +0 -5
- package/esm2022/steps/public_api.mjs +0 -3
- package/esm2022/steps/steps.mjs +0 -405
- package/esm2022/steps/style/stepsstyle.mjs +0 -180
- package/esm2022/styleclass/primeng-styleclass.mjs +0 -5
- package/esm2022/styleclass/public_api.mjs +0 -2
- package/esm2022/styleclass/styleclass.mjs +0 -315
- package/esm2022/table/columnfilter.interface.mjs +0 -2
- package/esm2022/table/primeng-table.mjs +0 -5
- package/esm2022/table/public_api.mjs +0 -5
- package/esm2022/table/style/tablestyle.mjs +0 -906
- package/esm2022/table/table.interface.mjs +0 -2
- package/esm2022/table/table.mjs +0 -7840
- package/esm2022/tabmenu/primeng-tabmenu.mjs +0 -5
- package/esm2022/tabmenu/public_api.mjs +0 -4
- package/esm2022/tabmenu/style/tabmenustyle.mjs +0 -192
- package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
- package/esm2022/tabmenu/tabmenu.mjs +0 -757
- package/esm2022/tabs/primeng-tabs.mjs +0 -5
- package/esm2022/tabs/public_api.mjs +0 -7
- package/esm2022/tabs/style/tabsstyle.mjs +0 -211
- package/esm2022/tabs/tab.mjs +0 -175
- package/esm2022/tabs/tablist.mjs +0 -305
- package/esm2022/tabs/tabpanel.mjs +0 -60
- package/esm2022/tabs/tabpanels.mjs +0 -38
- package/esm2022/tabs/tabs.mjs +0 -105
- package/esm2022/tabview/primeng-tabview.mjs +0 -5
- package/esm2022/tabview/public_api.mjs +0 -4
- package/esm2022/tabview/style/tabsstyle.mjs +0 -211
- package/esm2022/tabview/tabview.interface.mjs +0 -2
- package/esm2022/tabview/tabview.mjs +0 -1141
- package/esm2022/tag/primeng-tag.mjs +0 -5
- package/esm2022/tag/public_api.mjs +0 -4
- package/esm2022/tag/style/tagstyle.mjs +0 -108
- package/esm2022/tag/tag.interface.mjs +0 -2
- package/esm2022/tag/tag.mjs +0 -192
- package/esm2022/terminal/primeng-terminal.mjs +0 -5
- package/esm2022/terminal/public_api.mjs +0 -4
- package/esm2022/terminal/style/terminalstyle.mjs +0 -113
- package/esm2022/terminal/terminal.mjs +0 -195
- package/esm2022/terminal/terminalservice.mjs +0 -25
- package/esm2022/textarea/primeng-textarea.mjs +0 -5
- package/esm2022/textarea/public_api.mjs +0 -3
- package/esm2022/textarea/style/textareastyle.mjs +0 -120
- package/esm2022/textarea/textarea.mjs +0 -165
- package/esm2022/tieredmenu/primeng-tieredmenu.mjs +0 -5
- package/esm2022/tieredmenu/public_api.mjs +0 -4
- package/esm2022/tieredmenu/style/tieredmenustyle.mjs +0 -276
- package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
- package/esm2022/tieredmenu/tieredmenu.mjs +0 -1467
- package/esm2022/timeline/primeng-timeline.mjs +0 -5
- package/esm2022/timeline/public_api.mjs +0 -4
- package/esm2022/timeline/style/timelinestyle.mjs +0 -217
- package/esm2022/timeline/timeline.interface.mjs +0 -2
- package/esm2022/timeline/timeline.mjs +0 -247
- package/esm2022/toast/primeng-toast.mjs +0 -5
- package/esm2022/toast/public_api.mjs +0 -4
- package/esm2022/toast/style/toaststyle.mjs +0 -351
- package/esm2022/toast/toast.interface.mjs +0 -2
- package/esm2022/toast/toast.mjs +0 -760
- package/esm2022/togglebutton/primeng-togglebutton.mjs +0 -5
- package/esm2022/togglebutton/public_api.mjs +0 -3
- package/esm2022/togglebutton/style/togglebuttonstyle.mjs +0 -170
- package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
- package/esm2022/togglebutton/togglebutton.mjs +0 -368
- package/esm2022/toggleswitch/primeng-toggleswitch.mjs +0 -5
- package/esm2022/toggleswitch/public_api.mjs +0 -4
- package/esm2022/toggleswitch/style/toggleswitchstyle.mjs +0 -165
- package/esm2022/toggleswitch/toggleswitch.interface.mjs +0 -2
- package/esm2022/toggleswitch/toggleswitch.mjs +0 -297
- package/esm2022/toolbar/primeng-toolbar.mjs +0 -5
- package/esm2022/toolbar/public_api.mjs +0 -4
- package/esm2022/toolbar/style/toolbarstyle.mjs +0 -69
- package/esm2022/toolbar/toolbar.interface.mjs +0 -2
- package/esm2022/toolbar/toolbar.mjs +0 -198
- package/esm2022/tooltip/primeng-tooltip.mjs +0 -5
- package/esm2022/tooltip/public_api.mjs +0 -3
- package/esm2022/tooltip/style/tooltipstyle.mjs +0 -113
- package/esm2022/tooltip/tooltip.mjs +0 -680
- package/esm2022/tree/primeng-tree.mjs +0 -5
- package/esm2022/tree/public_api.mjs +0 -4
- package/esm2022/tree/style/treestyle.mjs +0 -333
- package/esm2022/tree/tree.interface.mjs +0 -2
- package/esm2022/tree/tree.mjs +0 -2304
- package/esm2022/treeselect/primeng-treeselect.mjs +0 -5
- package/esm2022/treeselect/public_api.mjs +0 -4
- package/esm2022/treeselect/style/treeselectstyle.mjs +0 -271
- package/esm2022/treeselect/treeselect.interface.mjs +0 -2
- package/esm2022/treeselect/treeselect.mjs +0 -1439
- package/esm2022/treetable/primeng-treetable.mjs +0 -5
- package/esm2022/treetable/public_api.mjs +0 -4
- package/esm2022/treetable/style/treetablestyle.mjs +0 -621
- package/esm2022/treetable/treetable.interface.mjs +0 -2
- package/esm2022/treetable/treetable.mjs +0 -4661
- package/esm2022/ts-helpers/primeng-ts-helpers.mjs +0 -5
- package/esm2022/ts-helpers/public_api.mjs +0 -2
- package/esm2022/ts-helpers/ts-helpers.mjs +0 -2
- package/esm2022/usestyle/primeng-usestyle.mjs +0 -5
- package/esm2022/usestyle/public_api.mjs +0 -2
- package/esm2022/usestyle/usestyle.mjs +0 -44
- package/esm2022/utils/inpututils.mjs +0 -7
- package/esm2022/utils/objectutils.mjs +0 -276
- package/esm2022/utils/primeng-utils.mjs +0 -5
- package/esm2022/utils/public_api.mjs +0 -6
- package/esm2022/utils/uniquecomponentid.mjs +0 -6
- package/esm2022/utils/zindexutils.mjs +0 -35
@@ -1,3015 +0,0 @@
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
2
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, computed, ContentChild, ContentChildren, effect, EventEmitter, forwardRef, HostBinding, inject, Input, NgModule, numberAttribute, Output, signal, ViewChild, ViewEncapsulation } from '@angular/core';
|
3
|
-
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
4
|
-
import { deepEquals, equals, findLastIndex, findSingle, focus, getFirstFocusableElement, getFocusableElements, getLastFocusableElement, hasClass, isArray, isHidden, isNotEmpty, isObject, isPrintableCharacter, resolveFieldData, unblockBodyScroll, uuid } from '@primeuix/utils';
|
5
|
-
import { Footer, Header, PrimeTemplate, SharedModule, TranslationKeys } from 'primeng/api';
|
6
|
-
import { AutoFocus } from 'primeng/autofocus';
|
7
|
-
import { BaseComponent } from 'primeng/basecomponent';
|
8
|
-
import { Checkbox } from 'primeng/checkbox';
|
9
|
-
import { Chip } from 'primeng/chip';
|
10
|
-
import { DomHandler } from 'primeng/dom';
|
11
|
-
import { IconField } from 'primeng/iconfield';
|
12
|
-
import { CheckIcon, ChevronDownIcon, SearchIcon, TimesIcon } from 'primeng/icons';
|
13
|
-
import { InputIcon } from 'primeng/inputicon';
|
14
|
-
import { InputText } from 'primeng/inputtext';
|
15
|
-
import { Overlay } from 'primeng/overlay';
|
16
|
-
import { Ripple } from 'primeng/ripple';
|
17
|
-
import { Scroller } from 'primeng/scroller';
|
18
|
-
import { Tooltip } from 'primeng/tooltip';
|
19
|
-
import { MultiSelectStyle } from './style/multiselectstyle';
|
20
|
-
import * as i0 from "@angular/core";
|
21
|
-
import * as i1 from "@angular/common";
|
22
|
-
import * as i2 from "@angular/forms";
|
23
|
-
import * as i3 from "primeng/api";
|
24
|
-
const _c0 = a0 => ({ height: a0 });
|
25
|
-
const _c1 = (a0, a1) => ({ "p-multiselect-option": true, "p-disabled": a0, "p-focus": a1 });
|
26
|
-
const _c2 = a0 => ({ $implicit: a0 });
|
27
|
-
const _c3 = (a0, a1) => ({ checked: a0, class: a1 });
|
28
|
-
function MultiSelectItem_ng_container_2_ng_template_1_0_ng_template_0_Template(rf, ctx) { }
|
29
|
-
function MultiSelectItem_ng_container_2_ng_template_1_0_Template(rf, ctx) { if (rf & 1) {
|
30
|
-
i0.ɵɵtemplate(0, MultiSelectItem_ng_container_2_ng_template_1_0_ng_template_0_Template, 0, 0, "ng-template");
|
31
|
-
} }
|
32
|
-
function MultiSelectItem_ng_container_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
33
|
-
i0.ɵɵtemplate(0, MultiSelectItem_ng_container_2_ng_template_1_0_Template, 1, 0, null, 4);
|
34
|
-
} if (rf & 2) {
|
35
|
-
const klass_r1 = ctx.class;
|
36
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
37
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.itemCheckboxIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c3, ctx_r1.selected, klass_r1));
|
38
|
-
} }
|
39
|
-
function MultiSelectItem_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
40
|
-
i0.ɵɵelementContainerStart(0);
|
41
|
-
i0.ɵɵtemplate(1, MultiSelectItem_ng_container_2_ng_template_1_Template, 1, 5, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
42
|
-
i0.ɵɵelementContainerEnd();
|
43
|
-
} }
|
44
|
-
function MultiSelectItem_span_3_Template(rf, ctx) { if (rf & 1) {
|
45
|
-
i0.ɵɵelementStart(0, "span");
|
46
|
-
i0.ɵɵtext(1);
|
47
|
-
i0.ɵɵelementEnd();
|
48
|
-
} if (rf & 2) {
|
49
|
-
let tmp_1_0;
|
50
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
51
|
-
i0.ɵɵadvance();
|
52
|
-
i0.ɵɵtextInterpolate((tmp_1_0 = ctx_r1.label) !== null && tmp_1_0 !== undefined ? tmp_1_0 : "empty");
|
53
|
-
} }
|
54
|
-
function MultiSelectItem_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
55
|
-
i0.ɵɵelementContainer(0);
|
56
|
-
} }
|
57
|
-
const _c4 = ["item"];
|
58
|
-
const _c5 = ["group"];
|
59
|
-
const _c6 = ["loader"];
|
60
|
-
const _c7 = ["header"];
|
61
|
-
const _c8 = ["filter"];
|
62
|
-
const _c9 = ["footer"];
|
63
|
-
const _c10 = ["emptyfilter"];
|
64
|
-
const _c11 = ["empty"];
|
65
|
-
const _c12 = ["selecteditems"];
|
66
|
-
const _c13 = ["checkicon"];
|
67
|
-
const _c14 = ["loadingicon"];
|
68
|
-
const _c15 = ["filtericon"];
|
69
|
-
const _c16 = ["removetokenicon"];
|
70
|
-
const _c17 = ["chipicon"];
|
71
|
-
const _c18 = ["clearicon"];
|
72
|
-
const _c19 = ["dropdownicon"];
|
73
|
-
const _c20 = ["itemcheckboxicon"];
|
74
|
-
const _c21 = ["headercheckboxicon"];
|
75
|
-
const _c22 = ["overlay"];
|
76
|
-
const _c23 = ["filterInput"];
|
77
|
-
const _c24 = ["focusInput"];
|
78
|
-
const _c25 = ["items"];
|
79
|
-
const _c26 = ["scroller"];
|
80
|
-
const _c27 = ["lastHiddenFocusableEl"];
|
81
|
-
const _c28 = ["firstHiddenFocusableEl"];
|
82
|
-
const _c29 = ["headerCheckbox"];
|
83
|
-
const _c30 = [[["p-header"]], [["p-footer"]]];
|
84
|
-
const _c31 = ["p-header", "p-footer"];
|
85
|
-
const _c32 = (a0, a1) => ({ $implicit: a0, removeChip: a1 });
|
86
|
-
const _c33 = () => ({ class: "p-multiselect-chip-icon" });
|
87
|
-
const _c34 = a0 => ({ options: a0 });
|
88
|
-
const _c35 = (a0, a1, a2) => ({ checked: a0, partialSelected: a1, class: a2 });
|
89
|
-
const _c36 = (a0, a1) => ({ $implicit: a0, options: a1 });
|
90
|
-
const _c37 = () => ({});
|
91
|
-
function MultiSelect_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
92
|
-
i0.ɵɵelementContainerStart(0);
|
93
|
-
i0.ɵɵtext(1);
|
94
|
-
i0.ɵɵelementContainerEnd();
|
95
|
-
} if (rf & 2) {
|
96
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
97
|
-
i0.ɵɵadvance();
|
98
|
-
i0.ɵɵtextInterpolate(ctx_r1.label() || "empty");
|
99
|
-
} }
|
100
|
-
function MultiSelect_ng_container_5_ng_container_2_div_1_ng_container_3_ng_template_1_ng_container_0_span_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
101
|
-
i0.ɵɵelementContainer(0);
|
102
|
-
} }
|
103
|
-
function MultiSelect_ng_container_5_ng_container_2_div_1_ng_container_3_ng_template_1_ng_container_0_span_1_Template(rf, ctx) { if (rf & 1) {
|
104
|
-
const _r5 = i0.ɵɵgetCurrentView();
|
105
|
-
i0.ɵɵelementStart(0, "span", 29);
|
106
|
-
i0.ɵɵlistener("click", function MultiSelect_ng_container_5_ng_container_2_div_1_ng_container_3_ng_template_1_ng_container_0_span_1_Template_span_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const item_r4 = i0.ɵɵnextContext(4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.removeOption(item_r4, $event)); });
|
107
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_container_5_ng_container_2_div_1_ng_container_3_ng_template_1_ng_container_0_span_1_ng_container_1_Template, 1, 0, "ng-container", 21);
|
108
|
-
i0.ɵɵelementEnd();
|
109
|
-
} if (rf & 2) {
|
110
|
-
const ctx_r1 = i0.ɵɵnextContext(7);
|
111
|
-
i0.ɵɵattribute("data-pc-section", "clearicon")("aria-hidden", true);
|
112
|
-
i0.ɵɵadvance();
|
113
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.chipIconTemplate || ctx_r1._chipIconTemplate || ctx_r1.removeTokenIconTemplate || ctx_r1._removeTokenIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction0(4, _c33));
|
114
|
-
} }
|
115
|
-
function MultiSelect_ng_container_5_ng_container_2_div_1_ng_container_3_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
116
|
-
i0.ɵɵelementContainerStart(0);
|
117
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_container_5_ng_container_2_div_1_ng_container_3_ng_template_1_ng_container_0_span_1_Template, 2, 5, "span", 28);
|
118
|
-
i0.ɵɵelementContainerEnd();
|
119
|
-
} if (rf & 2) {
|
120
|
-
const ctx_r1 = i0.ɵɵnextContext(6);
|
121
|
-
i0.ɵɵadvance();
|
122
|
-
i0.ɵɵproperty("ngIf", ctx_r1.chipIconTemplate || ctx_r1._chipIconTemplate || ctx_r1.removeTokenIconTemplate || ctx_r1._removeTokenIconTemplate);
|
123
|
-
} }
|
124
|
-
function MultiSelect_ng_container_5_ng_container_2_div_1_ng_container_3_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
125
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_container_5_ng_container_2_div_1_ng_container_3_ng_template_1_ng_container_0_Template, 2, 1, "ng-container", 20);
|
126
|
-
} if (rf & 2) {
|
127
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
128
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.disabled);
|
129
|
-
} }
|
130
|
-
function MultiSelect_ng_container_5_ng_container_2_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
131
|
-
i0.ɵɵelementContainerStart(0);
|
132
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_container_5_ng_container_2_div_1_ng_container_3_ng_template_1_Template, 1, 1, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
|
133
|
-
i0.ɵɵelementContainerEnd();
|
134
|
-
} }
|
135
|
-
function MultiSelect_ng_container_5_ng_container_2_div_1_Template(rf, ctx) { if (rf & 1) {
|
136
|
-
const _r3 = i0.ɵɵgetCurrentView();
|
137
|
-
i0.ɵɵelementStart(0, "div", 26, 4)(2, "p-chip", 27);
|
138
|
-
i0.ɵɵlistener("onRemove", function MultiSelect_ng_container_5_ng_container_2_div_1_Template_p_chip_onRemove_2_listener($event) { const item_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.removeOption(item_r4, $event)); });
|
139
|
-
i0.ɵɵtemplate(3, MultiSelect_ng_container_5_ng_container_2_div_1_ng_container_3_Template, 3, 0, "ng-container", 20);
|
140
|
-
i0.ɵɵelementEnd()();
|
141
|
-
} if (rf & 2) {
|
142
|
-
const item_r4 = ctx.$implicit;
|
143
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
144
|
-
i0.ɵɵadvance(2);
|
145
|
-
i0.ɵɵproperty("label", ctx_r1.getLabelByValue(item_r4))("removable", true)("removeIcon", ctx_r1.chipIcon);
|
146
|
-
i0.ɵɵadvance();
|
147
|
-
i0.ɵɵproperty("ngIf", ctx_r1.chipIconTemplate || ctx_r1._chipIconTemplate || ctx_r1.removeTokenIconTemplate || ctx_r1._removeTokenIconTemplate);
|
148
|
-
} }
|
149
|
-
function MultiSelect_ng_container_5_ng_container_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
150
|
-
i0.ɵɵelementContainerStart(0);
|
151
|
-
i0.ɵɵtext(1);
|
152
|
-
i0.ɵɵelementContainerEnd();
|
153
|
-
} if (rf & 2) {
|
154
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
155
|
-
i0.ɵɵadvance();
|
156
|
-
i0.ɵɵtextInterpolate(ctx_r1.placeholder() || ctx_r1.defaultLabel || "empty");
|
157
|
-
} }
|
158
|
-
function MultiSelect_ng_container_5_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
159
|
-
i0.ɵɵelementContainerStart(0);
|
160
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_container_5_ng_container_2_div_1_Template, 4, 4, "div", 25)(2, MultiSelect_ng_container_5_ng_container_2_ng_container_2_Template, 2, 1, "ng-container", 20);
|
161
|
-
i0.ɵɵelementContainerEnd();
|
162
|
-
} if (rf & 2) {
|
163
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
164
|
-
i0.ɵɵadvance();
|
165
|
-
i0.ɵɵproperty("ngForOf", ctx_r1.chipSelectedItems());
|
166
|
-
i0.ɵɵadvance();
|
167
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.modelValue() || ctx_r1.modelValue().length === 0);
|
168
|
-
} }
|
169
|
-
function MultiSelect_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
170
|
-
i0.ɵɵelementContainerStart(0);
|
171
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_container_5_ng_container_1_Template, 2, 1, "ng-container", 20)(2, MultiSelect_ng_container_5_ng_container_2_Template, 3, 2, "ng-container", 20);
|
172
|
-
i0.ɵɵelementContainerEnd();
|
173
|
-
} if (rf & 2) {
|
174
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
175
|
-
i0.ɵɵadvance();
|
176
|
-
i0.ɵɵproperty("ngIf", ctx_r1.display === "comma");
|
177
|
-
i0.ɵɵadvance();
|
178
|
-
i0.ɵɵproperty("ngIf", ctx_r1.display === "chip");
|
179
|
-
} }
|
180
|
-
function MultiSelect_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
181
|
-
i0.ɵɵelementContainer(0);
|
182
|
-
} }
|
183
|
-
function MultiSelect_ng_container_7_TimesIcon_1_Template(rf, ctx) { if (rf & 1) {
|
184
|
-
const _r6 = i0.ɵɵgetCurrentView();
|
185
|
-
i0.ɵɵelementStart(0, "TimesIcon", 31);
|
186
|
-
i0.ɵɵlistener("click", function MultiSelect_ng_container_7_TimesIcon_1_Template_TimesIcon_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.clear($event)); });
|
187
|
-
i0.ɵɵelementEnd();
|
188
|
-
} if (rf & 2) {
|
189
|
-
i0.ɵɵattribute("data-pc-section", "clearicon")("aria-hidden", true);
|
190
|
-
} }
|
191
|
-
function MultiSelect_ng_container_7_span_2_1_ng_template_0_Template(rf, ctx) { }
|
192
|
-
function MultiSelect_ng_container_7_span_2_1_Template(rf, ctx) { if (rf & 1) {
|
193
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_container_7_span_2_1_ng_template_0_Template, 0, 0, "ng-template");
|
194
|
-
} }
|
195
|
-
function MultiSelect_ng_container_7_span_2_Template(rf, ctx) { if (rf & 1) {
|
196
|
-
const _r7 = i0.ɵɵgetCurrentView();
|
197
|
-
i0.ɵɵelementStart(0, "span", 31);
|
198
|
-
i0.ɵɵlistener("click", function MultiSelect_ng_container_7_span_2_Template_span_click_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.clear($event)); });
|
199
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_container_7_span_2_1_Template, 1, 0, null, 32);
|
200
|
-
i0.ɵɵelementEnd();
|
201
|
-
} if (rf & 2) {
|
202
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
203
|
-
i0.ɵɵattribute("data-pc-section", "clearicon")("aria-hidden", true);
|
204
|
-
i0.ɵɵadvance();
|
205
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.clearIconTemplate || ctx_r1._clearIconTemplate);
|
206
|
-
} }
|
207
|
-
function MultiSelect_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
208
|
-
i0.ɵɵelementContainerStart(0);
|
209
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_container_7_TimesIcon_1_Template, 1, 2, "TimesIcon", 30)(2, MultiSelect_ng_container_7_span_2_Template, 2, 3, "span", 30);
|
210
|
-
i0.ɵɵelementContainerEnd();
|
211
|
-
} if (rf & 2) {
|
212
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
213
|
-
i0.ɵɵadvance();
|
214
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.clearIconTemplate && !ctx_r1._clearIconTemplate);
|
215
|
-
i0.ɵɵadvance();
|
216
|
-
i0.ɵɵproperty("ngIf", ctx_r1.clearIconTemplate || ctx_r1._clearIconTemplate);
|
217
|
-
} }
|
218
|
-
function MultiSelect_ng_container_9_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
219
|
-
i0.ɵɵelementContainer(0);
|
220
|
-
} }
|
221
|
-
function MultiSelect_ng_container_9_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
222
|
-
i0.ɵɵelementContainerStart(0);
|
223
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_container_9_ng_container_1_ng_container_1_Template, 1, 0, "ng-container", 32);
|
224
|
-
i0.ɵɵelementContainerEnd();
|
225
|
-
} if (rf & 2) {
|
226
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
227
|
-
i0.ɵɵadvance();
|
228
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.loadingIconTemplate || ctx_r1._loadingIconTemplate);
|
229
|
-
} }
|
230
|
-
function MultiSelect_ng_container_9_ng_container_2_span_1_Template(rf, ctx) { if (rf & 1) {
|
231
|
-
i0.ɵɵelement(0, "span", 35);
|
232
|
-
} if (rf & 2) {
|
233
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
234
|
-
i0.ɵɵproperty("ngClass", "p-multiselect-loading-icon pi-spin " + ctx_r1.loadingIcon);
|
235
|
-
} }
|
236
|
-
function MultiSelect_ng_container_9_ng_container_2_span_2_Template(rf, ctx) { if (rf & 1) {
|
237
|
-
i0.ɵɵelement(0, "span", 36);
|
238
|
-
} if (rf & 2) {
|
239
|
-
i0.ɵɵclassMap("p-multiselect-loading-icon pi pi-spinner pi-spin");
|
240
|
-
} }
|
241
|
-
function MultiSelect_ng_container_9_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
242
|
-
i0.ɵɵelementContainerStart(0);
|
243
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_container_9_ng_container_2_span_1_Template, 1, 1, "span", 33)(2, MultiSelect_ng_container_9_ng_container_2_span_2_Template, 1, 2, "span", 34);
|
244
|
-
i0.ɵɵelementContainerEnd();
|
245
|
-
} if (rf & 2) {
|
246
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
247
|
-
i0.ɵɵadvance();
|
248
|
-
i0.ɵɵproperty("ngIf", ctx_r1.loadingIcon);
|
249
|
-
i0.ɵɵadvance();
|
250
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.loadingIcon);
|
251
|
-
} }
|
252
|
-
function MultiSelect_ng_container_9_Template(rf, ctx) { if (rf & 1) {
|
253
|
-
i0.ɵɵelementContainerStart(0);
|
254
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_container_9_ng_container_1_Template, 2, 1, "ng-container", 20)(2, MultiSelect_ng_container_9_ng_container_2_Template, 3, 2, "ng-container", 20);
|
255
|
-
i0.ɵɵelementContainerEnd();
|
256
|
-
} if (rf & 2) {
|
257
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
258
|
-
i0.ɵɵadvance();
|
259
|
-
i0.ɵɵproperty("ngIf", ctx_r1.loadingIconTemplate || ctx_r1._loadingIconTemplate);
|
260
|
-
i0.ɵɵadvance();
|
261
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.loadingIconTemplate && !ctx_r1._loadingIconTemplate);
|
262
|
-
} }
|
263
|
-
function MultiSelect_ng_template_10_ng_container_0_span_1_Template(rf, ctx) { if (rf & 1) {
|
264
|
-
i0.ɵɵelement(0, "span", 40);
|
265
|
-
} if (rf & 2) {
|
266
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
267
|
-
i0.ɵɵproperty("ngClass", ctx_r1.dropdownIcon);
|
268
|
-
i0.ɵɵattribute("data-pc-section", "triggericon")("aria-hidden", true);
|
269
|
-
} }
|
270
|
-
function MultiSelect_ng_template_10_ng_container_0_ChevronDownIcon_2_Template(rf, ctx) { if (rf & 1) {
|
271
|
-
i0.ɵɵelement(0, "ChevronDownIcon", 41);
|
272
|
-
} if (rf & 2) {
|
273
|
-
i0.ɵɵproperty("styleClass", "p-multiselect-dropdown-icon");
|
274
|
-
i0.ɵɵattribute("data-pc-section", "triggericon")("aria-hidden", true);
|
275
|
-
} }
|
276
|
-
function MultiSelect_ng_template_10_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
277
|
-
i0.ɵɵelementContainerStart(0);
|
278
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_template_10_ng_container_0_span_1_Template, 1, 3, "span", 38)(2, MultiSelect_ng_template_10_ng_container_0_ChevronDownIcon_2_Template, 1, 3, "ChevronDownIcon", 39);
|
279
|
-
i0.ɵɵelementContainerEnd();
|
280
|
-
} if (rf & 2) {
|
281
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
282
|
-
i0.ɵɵadvance();
|
283
|
-
i0.ɵɵproperty("ngIf", ctx_r1.dropdownIcon);
|
284
|
-
i0.ɵɵadvance();
|
285
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.dropdownIcon);
|
286
|
-
} }
|
287
|
-
function MultiSelect_ng_template_10_span_1_1_ng_template_0_Template(rf, ctx) { }
|
288
|
-
function MultiSelect_ng_template_10_span_1_1_Template(rf, ctx) { if (rf & 1) {
|
289
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_template_10_span_1_1_ng_template_0_Template, 0, 0, "ng-template");
|
290
|
-
} }
|
291
|
-
function MultiSelect_ng_template_10_span_1_Template(rf, ctx) { if (rf & 1) {
|
292
|
-
i0.ɵɵelementStart(0, "span", 42);
|
293
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_template_10_span_1_1_Template, 1, 0, null, 32);
|
294
|
-
i0.ɵɵelementEnd();
|
295
|
-
} if (rf & 2) {
|
296
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
297
|
-
i0.ɵɵattribute("data-pc-section", "triggericon")("aria-hidden", true);
|
298
|
-
i0.ɵɵadvance();
|
299
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.dropdownIconTemplate || ctx_r1._dropdownIconTemplate);
|
300
|
-
} }
|
301
|
-
function MultiSelect_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
302
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_template_10_ng_container_0_Template, 3, 2, "ng-container", 20)(1, MultiSelect_ng_template_10_span_1_Template, 2, 3, "span", 37);
|
303
|
-
} if (rf & 2) {
|
304
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
305
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.dropdownIconTemplate && !ctx_r1._dropdownIconTemplate);
|
306
|
-
i0.ɵɵadvance();
|
307
|
-
i0.ɵɵproperty("ngIf", ctx_r1.dropdownIconTemplate || ctx_r1._dropdownIconTemplate);
|
308
|
-
} }
|
309
|
-
function MultiSelect_ng_template_14_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
310
|
-
i0.ɵɵelementContainer(0);
|
311
|
-
} }
|
312
|
-
function MultiSelect_ng_template_14_div_4_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
313
|
-
i0.ɵɵelementContainer(0);
|
314
|
-
} }
|
315
|
-
function MultiSelect_ng_template_14_div_4_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
316
|
-
i0.ɵɵelementContainerStart(0);
|
317
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_template_14_div_4_ng_container_2_ng_container_1_Template, 1, 0, "ng-container", 21);
|
318
|
-
i0.ɵɵelementContainerEnd();
|
319
|
-
} if (rf & 2) {
|
320
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
321
|
-
i0.ɵɵadvance();
|
322
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.filterTemplate || ctx_r1._filterTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c34, ctx_r1.filterOptions));
|
323
|
-
} }
|
324
|
-
function MultiSelect_ng_template_14_div_4_ng_template_3_p_checkbox_0_ng_template_2_CheckIcon_0_Template(rf, ctx) { if (rf & 1) {
|
325
|
-
i0.ɵɵelement(0, "CheckIcon", 41);
|
326
|
-
} if (rf & 2) {
|
327
|
-
const klass_r10 = i0.ɵɵnextContext().class;
|
328
|
-
i0.ɵɵproperty("styleClass", klass_r10);
|
329
|
-
i0.ɵɵattribute("data-pc-section", "icon");
|
330
|
-
} }
|
331
|
-
function MultiSelect_ng_template_14_div_4_ng_template_3_p_checkbox_0_ng_template_2_1_ng_template_0_Template(rf, ctx) { }
|
332
|
-
function MultiSelect_ng_template_14_div_4_ng_template_3_p_checkbox_0_ng_template_2_1_Template(rf, ctx) { if (rf & 1) {
|
333
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_template_14_div_4_ng_template_3_p_checkbox_0_ng_template_2_1_ng_template_0_Template, 0, 0, "ng-template");
|
334
|
-
} }
|
335
|
-
function MultiSelect_ng_template_14_div_4_ng_template_3_p_checkbox_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
336
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_template_14_div_4_ng_template_3_p_checkbox_0_ng_template_2_CheckIcon_0_Template, 1, 2, "CheckIcon", 39)(1, MultiSelect_ng_template_14_div_4_ng_template_3_p_checkbox_0_ng_template_2_1_Template, 1, 0, null, 21);
|
337
|
-
} if (rf & 2) {
|
338
|
-
const klass_r10 = ctx.class;
|
339
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
340
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.headerCheckboxIconTemplate && !ctx_r1._headerCheckboxIconTemplate && ctx_r1.allSelected());
|
341
|
-
i0.ɵɵadvance();
|
342
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.headerCheckboxIconTemplate || ctx_r1._headerCheckboxIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(3, _c35, ctx_r1.allSelected(), ctx_r1.partialSelected(), klass_r10));
|
343
|
-
} }
|
344
|
-
function MultiSelect_ng_template_14_div_4_ng_template_3_p_checkbox_0_Template(rf, ctx) { if (rf & 1) {
|
345
|
-
const _r9 = i0.ɵɵgetCurrentView();
|
346
|
-
i0.ɵɵelementStart(0, "p-checkbox", 51, 10);
|
347
|
-
i0.ɵɵlistener("onChange", function MultiSelect_ng_template_14_div_4_ng_template_3_p_checkbox_0_Template_p_checkbox_onChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onToggleAll($event)); });
|
348
|
-
i0.ɵɵtemplate(2, MultiSelect_ng_template_14_div_4_ng_template_3_p_checkbox_0_ng_template_2_Template, 2, 7, "ng-template", null, 11, i0.ɵɵtemplateRefExtractor);
|
349
|
-
i0.ɵɵelementEnd();
|
350
|
-
} if (rf & 2) {
|
351
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
352
|
-
i0.ɵɵproperty("ngModel", ctx_r1.allSelected())("binary", true)("variant", ctx_r1.variant)("disabled", ctx_r1.disabled);
|
353
|
-
} }
|
354
|
-
function MultiSelect_ng_template_14_div_4_ng_template_3_div_1_SearchIcon_5_Template(rf, ctx) { if (rf & 1) {
|
355
|
-
i0.ɵɵelement(0, "SearchIcon", 41);
|
356
|
-
} if (rf & 2) {
|
357
|
-
i0.ɵɵproperty("styleClass", "p-multiselect-filter-icon");
|
358
|
-
} }
|
359
|
-
function MultiSelect_ng_template_14_div_4_ng_template_3_div_1_span_6_1_ng_template_0_Template(rf, ctx) { }
|
360
|
-
function MultiSelect_ng_template_14_div_4_ng_template_3_div_1_span_6_1_Template(rf, ctx) { if (rf & 1) {
|
361
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_template_14_div_4_ng_template_3_div_1_span_6_1_ng_template_0_Template, 0, 0, "ng-template");
|
362
|
-
} }
|
363
|
-
function MultiSelect_ng_template_14_div_4_ng_template_3_div_1_span_6_Template(rf, ctx) { if (rf & 1) {
|
364
|
-
i0.ɵɵelementStart(0, "span", 55);
|
365
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_template_14_div_4_ng_template_3_div_1_span_6_1_Template, 1, 0, null, 32);
|
366
|
-
i0.ɵɵelementEnd();
|
367
|
-
} if (rf & 2) {
|
368
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
369
|
-
i0.ɵɵadvance();
|
370
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.filterIconTemplate || ctx_r1._filterIconTemplate);
|
371
|
-
} }
|
372
|
-
function MultiSelect_ng_template_14_div_4_ng_template_3_div_1_Template(rf, ctx) { if (rf & 1) {
|
373
|
-
const _r11 = i0.ɵɵgetCurrentView();
|
374
|
-
i0.ɵɵelementStart(0, "div", 52)(1, "p-iconfield")(2, "input", 53, 12);
|
375
|
-
i0.ɵɵlistener("input", function MultiSelect_ng_template_14_div_4_ng_template_3_div_1_Template_input_input_2_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onFilterInputChange($event)); })("keydown", function MultiSelect_ng_template_14_div_4_ng_template_3_div_1_Template_input_keydown_2_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onFilterKeyDown($event)); })("click", function MultiSelect_ng_template_14_div_4_ng_template_3_div_1_Template_input_click_2_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onInputClick($event)); })("blur", function MultiSelect_ng_template_14_div_4_ng_template_3_div_1_Template_input_blur_2_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onFilterBlur($event)); });
|
376
|
-
i0.ɵɵelementEnd();
|
377
|
-
i0.ɵɵelementStart(4, "p-inputicon");
|
378
|
-
i0.ɵɵtemplate(5, MultiSelect_ng_template_14_div_4_ng_template_3_div_1_SearchIcon_5_Template, 1, 1, "SearchIcon", 39)(6, MultiSelect_ng_template_14_div_4_ng_template_3_div_1_span_6_Template, 2, 1, "span", 54);
|
379
|
-
i0.ɵɵelementEnd()()();
|
380
|
-
} if (rf & 2) {
|
381
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
382
|
-
i0.ɵɵadvance(2);
|
383
|
-
i0.ɵɵproperty("variant", ctx_r1.variant)("value", ctx_r1._filterValue() || "")("disabled", ctx_r1.disabled);
|
384
|
-
i0.ɵɵattribute("autocomplete", ctx_r1.autocomplete)("aria-owns", ctx_r1.id + "_list")("aria-activedescendant", ctx_r1.focusedOptionId)("placeholder", ctx_r1.filterPlaceHolder)("aria-label", ctx_r1.ariaFilterLabel);
|
385
|
-
i0.ɵɵadvance(3);
|
386
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.filterIconTemplate && !ctx_r1._filterIconTemplate);
|
387
|
-
i0.ɵɵadvance();
|
388
|
-
i0.ɵɵproperty("ngIf", ctx_r1.filterIconTemplate || ctx_r1._filterIconTemplate);
|
389
|
-
} }
|
390
|
-
function MultiSelect_ng_template_14_div_4_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
391
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_template_14_div_4_ng_template_3_p_checkbox_0_Template, 4, 4, "p-checkbox", 49)(1, MultiSelect_ng_template_14_div_4_ng_template_3_div_1_Template, 7, 10, "div", 50);
|
392
|
-
} if (rf & 2) {
|
393
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
394
|
-
i0.ɵɵproperty("ngIf", ctx_r1.showToggleAll && !ctx_r1.selectionLimit);
|
395
|
-
i0.ɵɵadvance();
|
396
|
-
i0.ɵɵproperty("ngIf", ctx_r1.filter);
|
397
|
-
} }
|
398
|
-
function MultiSelect_ng_template_14_div_4_Template(rf, ctx) { if (rf & 1) {
|
399
|
-
i0.ɵɵelementStart(0, "div", 48);
|
400
|
-
i0.ɵɵprojection(1);
|
401
|
-
i0.ɵɵtemplate(2, MultiSelect_ng_template_14_div_4_ng_container_2_Template, 2, 4, "ng-container", 23)(3, MultiSelect_ng_template_14_div_4_ng_template_3_Template, 2, 2, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
|
402
|
-
i0.ɵɵelementEnd();
|
403
|
-
} if (rf & 2) {
|
404
|
-
const builtInFilterElement_r12 = i0.ɵɵreference(4);
|
405
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
406
|
-
i0.ɵɵadvance(2);
|
407
|
-
i0.ɵɵproperty("ngIf", ctx_r1.filterTemplate || ctx_r1._filterTemplate)("ngIfElse", builtInFilterElement_r12);
|
408
|
-
} }
|
409
|
-
function MultiSelect_ng_template_14_p_scroller_6_ng_template_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
410
|
-
i0.ɵɵelementContainer(0);
|
411
|
-
} }
|
412
|
-
function MultiSelect_ng_template_14_p_scroller_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
413
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_template_14_p_scroller_6_ng_template_2_ng_container_0_Template, 1, 0, "ng-container", 21);
|
414
|
-
} if (rf & 2) {
|
415
|
-
const items_r14 = ctx.$implicit;
|
416
|
-
const scrollerOptions_r15 = ctx.options;
|
417
|
-
i0.ɵɵnextContext(2);
|
418
|
-
const buildInItems_r16 = i0.ɵɵreference(9);
|
419
|
-
i0.ɵɵproperty("ngTemplateOutlet", buildInItems_r16)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c36, items_r14, scrollerOptions_r15));
|
420
|
-
} }
|
421
|
-
function MultiSelect_ng_template_14_p_scroller_6_ng_container_4_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
422
|
-
i0.ɵɵelementContainer(0);
|
423
|
-
} }
|
424
|
-
function MultiSelect_ng_template_14_p_scroller_6_ng_container_4_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
425
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_template_14_p_scroller_6_ng_container_4_ng_template_1_ng_container_0_Template, 1, 0, "ng-container", 21);
|
426
|
-
} if (rf & 2) {
|
427
|
-
const scrollerOptions_r17 = ctx.options;
|
428
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
429
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.loaderTemplate || ctx_r1._loaderTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c34, scrollerOptions_r17));
|
430
|
-
} }
|
431
|
-
function MultiSelect_ng_template_14_p_scroller_6_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
432
|
-
i0.ɵɵelementContainerStart(0);
|
433
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_template_14_p_scroller_6_ng_container_4_ng_template_1_Template, 1, 4, "ng-template", null, 14, i0.ɵɵtemplateRefExtractor);
|
434
|
-
i0.ɵɵelementContainerEnd();
|
435
|
-
} }
|
436
|
-
function MultiSelect_ng_template_14_p_scroller_6_Template(rf, ctx) { if (rf & 1) {
|
437
|
-
const _r13 = i0.ɵɵgetCurrentView();
|
438
|
-
i0.ɵɵelementStart(0, "p-scroller", 56, 13);
|
439
|
-
i0.ɵɵlistener("onLazyLoad", function MultiSelect_ng_template_14_p_scroller_6_Template_p_scroller_onLazyLoad_0_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onLazyLoad.emit($event)); });
|
440
|
-
i0.ɵɵtemplate(2, MultiSelect_ng_template_14_p_scroller_6_ng_template_2_Template, 1, 5, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor)(4, MultiSelect_ng_template_14_p_scroller_6_ng_container_4_Template, 3, 0, "ng-container", 20);
|
441
|
-
i0.ɵɵelementEnd();
|
442
|
-
} if (rf & 2) {
|
443
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
444
|
-
i0.ɵɵstyleMap(i0.ɵɵpureFunction1(9, _c0, ctx_r1.scrollHeight));
|
445
|
-
i0.ɵɵproperty("items", ctx_r1.visibleOptions())("itemSize", ctx_r1.virtualScrollItemSize || ctx_r1._itemSize)("autoSize", true)("tabindex", -1)("lazy", ctx_r1.lazy)("options", ctx_r1.virtualScrollOptions);
|
446
|
-
i0.ɵɵadvance(4);
|
447
|
-
i0.ɵɵproperty("ngIf", ctx_r1.loaderTemplate || ctx_r1._loaderTemplate);
|
448
|
-
} }
|
449
|
-
function MultiSelect_ng_template_14_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
450
|
-
i0.ɵɵelementContainer(0);
|
451
|
-
} }
|
452
|
-
function MultiSelect_ng_template_14_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
453
|
-
i0.ɵɵelementContainerStart(0);
|
454
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_template_14_ng_container_7_ng_container_1_Template, 1, 0, "ng-container", 21);
|
455
|
-
i0.ɵɵelementContainerEnd();
|
456
|
-
} if (rf & 2) {
|
457
|
-
i0.ɵɵnextContext();
|
458
|
-
const buildInItems_r16 = i0.ɵɵreference(9);
|
459
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
460
|
-
i0.ɵɵadvance();
|
461
|
-
i0.ɵɵproperty("ngTemplateOutlet", buildInItems_r16)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c36, ctx_r1.visibleOptions(), i0.ɵɵpureFunction0(2, _c37)));
|
462
|
-
} }
|
463
|
-
function MultiSelect_ng_template_14_ng_template_8_ng_template_2_ng_container_0_span_2_Template(rf, ctx) { if (rf & 1) {
|
464
|
-
i0.ɵɵelementStart(0, "span");
|
465
|
-
i0.ɵɵtext(1);
|
466
|
-
i0.ɵɵelementEnd();
|
467
|
-
} if (rf & 2) {
|
468
|
-
const option_r18 = i0.ɵɵnextContext(2).$implicit;
|
469
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
470
|
-
i0.ɵɵadvance();
|
471
|
-
i0.ɵɵtextInterpolate(ctx_r1.getOptionGroupLabel(option_r18.optionGroup));
|
472
|
-
} }
|
473
|
-
function MultiSelect_ng_template_14_ng_template_8_ng_template_2_ng_container_0_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
474
|
-
i0.ɵɵelementContainer(0);
|
475
|
-
} }
|
476
|
-
function MultiSelect_ng_template_14_ng_template_8_ng_template_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
477
|
-
i0.ɵɵelementContainerStart(0);
|
478
|
-
i0.ɵɵelementStart(1, "li", 60);
|
479
|
-
i0.ɵɵtemplate(2, MultiSelect_ng_template_14_ng_template_8_ng_template_2_ng_container_0_span_2_Template, 2, 1, "span", 20)(3, MultiSelect_ng_template_14_ng_template_8_ng_template_2_ng_container_0_ng_container_3_Template, 1, 0, "ng-container", 21);
|
480
|
-
i0.ɵɵelementEnd();
|
481
|
-
i0.ɵɵelementContainerEnd();
|
482
|
-
} if (rf & 2) {
|
483
|
-
const ctx_r18 = i0.ɵɵnextContext();
|
484
|
-
const option_r18 = ctx_r18.$implicit;
|
485
|
-
const i_r20 = ctx_r18.index;
|
486
|
-
const scrollerOptions_r21 = i0.ɵɵnextContext().options;
|
487
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
488
|
-
i0.ɵɵadvance();
|
489
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c0, scrollerOptions_r21.itemSize + "px"));
|
490
|
-
i0.ɵɵattribute("id", ctx_r1.id + "_" + ctx_r1.getOptionIndex(i_r20, scrollerOptions_r21));
|
491
|
-
i0.ɵɵadvance();
|
492
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.groupTemplate);
|
493
|
-
i0.ɵɵadvance();
|
494
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.groupTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(7, _c2, option_r18.optionGroup));
|
495
|
-
} }
|
496
|
-
function MultiSelect_ng_template_14_ng_template_8_ng_template_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
497
|
-
const _r22 = i0.ɵɵgetCurrentView();
|
498
|
-
i0.ɵɵelementContainerStart(0);
|
499
|
-
i0.ɵɵelementStart(1, "p-multiselect-item", 61);
|
500
|
-
i0.ɵɵlistener("onClick", function MultiSelect_ng_template_14_ng_template_8_ng_template_2_ng_container_1_Template_p_multiselect_item_onClick_1_listener($event) { i0.ɵɵrestoreView(_r22); const i_r20 = i0.ɵɵnextContext().index; const scrollerOptions_r21 = i0.ɵɵnextContext().options; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onOptionSelect($event, false, ctx_r1.getOptionIndex(i_r20, scrollerOptions_r21))); })("onMouseEnter", function MultiSelect_ng_template_14_ng_template_8_ng_template_2_ng_container_1_Template_p_multiselect_item_onMouseEnter_1_listener($event) { i0.ɵɵrestoreView(_r22); const i_r20 = i0.ɵɵnextContext().index; const scrollerOptions_r21 = i0.ɵɵnextContext().options; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onOptionMouseEnter($event, ctx_r1.getOptionIndex(i_r20, scrollerOptions_r21))); });
|
501
|
-
i0.ɵɵelementEnd();
|
502
|
-
i0.ɵɵelementContainerEnd();
|
503
|
-
} if (rf & 2) {
|
504
|
-
const ctx_r18 = i0.ɵɵnextContext();
|
505
|
-
const option_r18 = ctx_r18.$implicit;
|
506
|
-
const i_r20 = ctx_r18.index;
|
507
|
-
const scrollerOptions_r21 = i0.ɵɵnextContext().options;
|
508
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
509
|
-
i0.ɵɵadvance();
|
510
|
-
i0.ɵɵproperty("id", ctx_r1.id + "_" + ctx_r1.getOptionIndex(i_r20, scrollerOptions_r21))("option", option_r18)("selected", ctx_r1.isSelected(option_r18))("label", ctx_r1.getOptionLabel(option_r18))("disabled", ctx_r1.isOptionDisabled(option_r18))("template", ctx_r1.itemTemplate || ctx_r1._itemTemplate)("checkIconTemplate", ctx_r1.checkIconTemplate || ctx_r1._checkIconTemplate)("itemCheckboxIconTemplate", ctx_r1.itemCheckboxIconTemplate || ctx_r1._itemCheckboxIconTemplate)("itemSize", scrollerOptions_r21.itemSize)("focused", ctx_r1.focusedOptionIndex() === ctx_r1.getOptionIndex(i_r20, scrollerOptions_r21))("ariaPosInset", ctx_r1.getAriaPosInset(ctx_r1.getOptionIndex(i_r20, scrollerOptions_r21)))("ariaSetSize", ctx_r1.ariaSetSize)("variant", ctx_r1.variant);
|
511
|
-
} }
|
512
|
-
function MultiSelect_ng_template_14_ng_template_8_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
513
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_template_14_ng_template_8_ng_template_2_ng_container_0_Template, 4, 9, "ng-container", 20)(1, MultiSelect_ng_template_14_ng_template_8_ng_template_2_ng_container_1_Template, 2, 13, "ng-container", 20);
|
514
|
-
} if (rf & 2) {
|
515
|
-
const option_r18 = ctx.$implicit;
|
516
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
517
|
-
i0.ɵɵproperty("ngIf", ctx_r1.isOptionGroup(option_r18));
|
518
|
-
i0.ɵɵadvance();
|
519
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.isOptionGroup(option_r18));
|
520
|
-
} }
|
521
|
-
function MultiSelect_ng_template_14_ng_template_8_li_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
522
|
-
i0.ɵɵtext(0);
|
523
|
-
} if (rf & 2) {
|
524
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
525
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.emptyFilterMessageLabel, " ");
|
526
|
-
} }
|
527
|
-
function MultiSelect_ng_template_14_ng_template_8_li_3_Conditional_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
528
|
-
i0.ɵɵelementContainer(0);
|
529
|
-
} }
|
530
|
-
function MultiSelect_ng_template_14_ng_template_8_li_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
531
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_template_14_ng_template_8_li_3_Conditional_2_ng_container_0_Template, 1, 0, "ng-container", 32);
|
532
|
-
} if (rf & 2) {
|
533
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
534
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.emptyFilterTemplate || ctx_r1._emptyFilterTemplate || ctx_r1.emptyTemplate || ctx_r1._emptyFilterTemplate);
|
535
|
-
} }
|
536
|
-
function MultiSelect_ng_template_14_ng_template_8_li_3_Template(rf, ctx) { if (rf & 1) {
|
537
|
-
i0.ɵɵelementStart(0, "li", 62);
|
538
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_template_14_ng_template_8_li_3_Conditional_1_Template, 1, 1)(2, MultiSelect_ng_template_14_ng_template_8_li_3_Conditional_2_Template, 1, 1, "ng-container");
|
539
|
-
i0.ɵɵelementEnd();
|
540
|
-
} if (rf & 2) {
|
541
|
-
const scrollerOptions_r21 = i0.ɵɵnextContext().options;
|
542
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
543
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(2, _c0, scrollerOptions_r21.itemSize + "px"));
|
544
|
-
i0.ɵɵadvance();
|
545
|
-
i0.ɵɵconditional(!ctx_r1.emptyFilterTemplate && !ctx_r1._emptyFilterTemplate && !ctx_r1.emptyTemplate && !ctx_r1._emptyTemplate ? 1 : 2);
|
546
|
-
} }
|
547
|
-
function MultiSelect_ng_template_14_ng_template_8_li_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
548
|
-
i0.ɵɵtext(0);
|
549
|
-
} if (rf & 2) {
|
550
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
551
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.emptyMessageLabel, " ");
|
552
|
-
} }
|
553
|
-
function MultiSelect_ng_template_14_ng_template_8_li_4_Conditional_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
554
|
-
i0.ɵɵelementContainer(0);
|
555
|
-
} }
|
556
|
-
function MultiSelect_ng_template_14_ng_template_8_li_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
557
|
-
i0.ɵɵtemplate(0, MultiSelect_ng_template_14_ng_template_8_li_4_Conditional_2_ng_container_0_Template, 1, 0, "ng-container", 32);
|
558
|
-
} if (rf & 2) {
|
559
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
560
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.emptyTemplate || ctx_r1._emptyTemplate);
|
561
|
-
} }
|
562
|
-
function MultiSelect_ng_template_14_ng_template_8_li_4_Template(rf, ctx) { if (rf & 1) {
|
563
|
-
i0.ɵɵelementStart(0, "li", 62);
|
564
|
-
i0.ɵɵtemplate(1, MultiSelect_ng_template_14_ng_template_8_li_4_Conditional_1_Template, 1, 1)(2, MultiSelect_ng_template_14_ng_template_8_li_4_Conditional_2_Template, 1, 1, "ng-container");
|
565
|
-
i0.ɵɵelementEnd();
|
566
|
-
} if (rf & 2) {
|
567
|
-
const scrollerOptions_r21 = i0.ɵɵnextContext().options;
|
568
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
569
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(2, _c0, scrollerOptions_r21.itemSize + "px"));
|
570
|
-
i0.ɵɵadvance();
|
571
|
-
i0.ɵɵconditional(!ctx_r1.emptyTemplate && !ctx_r1._emptyTemplate ? 1 : 2);
|
572
|
-
} }
|
573
|
-
function MultiSelect_ng_template_14_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
574
|
-
i0.ɵɵelementStart(0, "ul", 57, 15);
|
575
|
-
i0.ɵɵtemplate(2, MultiSelect_ng_template_14_ng_template_8_ng_template_2_Template, 2, 2, "ng-template", 58)(3, MultiSelect_ng_template_14_ng_template_8_li_3_Template, 3, 4, "li", 59)(4, MultiSelect_ng_template_14_ng_template_8_li_4_Template, 3, 4, "li", 59);
|
576
|
-
i0.ɵɵelementEnd();
|
577
|
-
} if (rf & 2) {
|
578
|
-
const items_r23 = ctx.$implicit;
|
579
|
-
const scrollerOptions_r21 = ctx.options;
|
580
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
581
|
-
i0.ɵɵstyleMap(scrollerOptions_r21.contentStyle);
|
582
|
-
i0.ɵɵproperty("ngClass", scrollerOptions_r21.contentStyleClass);
|
583
|
-
i0.ɵɵattribute("aria-label", ctx_r1.listLabel);
|
584
|
-
i0.ɵɵadvance(2);
|
585
|
-
i0.ɵɵproperty("ngForOf", items_r23);
|
586
|
-
i0.ɵɵadvance();
|
587
|
-
i0.ɵɵproperty("ngIf", ctx_r1.hasFilter() && ctx_r1.isEmpty());
|
588
|
-
i0.ɵɵadvance();
|
589
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.hasFilter() && ctx_r1.isEmpty());
|
590
|
-
} }
|
591
|
-
function MultiSelect_ng_template_14_div_10_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
592
|
-
i0.ɵɵelementContainer(0);
|
593
|
-
} }
|
594
|
-
function MultiSelect_ng_template_14_div_10_Template(rf, ctx) { if (rf & 1) {
|
595
|
-
i0.ɵɵelementStart(0, "div");
|
596
|
-
i0.ɵɵprojection(1, 1);
|
597
|
-
i0.ɵɵtemplate(2, MultiSelect_ng_template_14_div_10_ng_container_2_Template, 1, 0, "ng-container", 32);
|
598
|
-
i0.ɵɵelementEnd();
|
599
|
-
} if (rf & 2) {
|
600
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
601
|
-
i0.ɵɵadvance(2);
|
602
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.footerTemplate || ctx_r1._footerTemplate);
|
603
|
-
} }
|
604
|
-
function MultiSelect_ng_template_14_Template(rf, ctx) { if (rf & 1) {
|
605
|
-
const _r8 = i0.ɵɵgetCurrentView();
|
606
|
-
i0.ɵɵelementStart(0, "div", 43)(1, "span", 44, 6);
|
607
|
-
i0.ɵɵlistener("focus", function MultiSelect_ng_template_14_Template_span_focus_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFirstHiddenFocus($event)); });
|
608
|
-
i0.ɵɵelementEnd();
|
609
|
-
i0.ɵɵtemplate(3, MultiSelect_ng_template_14_ng_container_3_Template, 1, 0, "ng-container", 32)(4, MultiSelect_ng_template_14_div_4_Template, 5, 2, "div", 45);
|
610
|
-
i0.ɵɵelementStart(5, "div", 46);
|
611
|
-
i0.ɵɵtemplate(6, MultiSelect_ng_template_14_p_scroller_6_Template, 5, 11, "p-scroller", 47)(7, MultiSelect_ng_template_14_ng_container_7_Template, 2, 6, "ng-container", 20)(8, MultiSelect_ng_template_14_ng_template_8_Template, 5, 7, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
|
612
|
-
i0.ɵɵelementEnd();
|
613
|
-
i0.ɵɵtemplate(10, MultiSelect_ng_template_14_div_10_Template, 3, 1, "div", 20);
|
614
|
-
i0.ɵɵelementStart(11, "span", 44, 8);
|
615
|
-
i0.ɵɵlistener("focus", function MultiSelect_ng_template_14_Template_span_focus_11_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLastHiddenFocus($event)); });
|
616
|
-
i0.ɵɵelementEnd()();
|
617
|
-
} if (rf & 2) {
|
618
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
619
|
-
i0.ɵɵclassMap(ctx_r1.panelStyleClass);
|
620
|
-
i0.ɵɵproperty("ngClass", "p-multiselect-overlay p-component")("ngStyle", ctx_r1.panelStyle);
|
621
|
-
i0.ɵɵattribute("id", ctx_r1.id + "_list");
|
622
|
-
i0.ɵɵadvance();
|
623
|
-
i0.ɵɵattribute("tabindex", 0)("data-p-hidden-accessible", true)("data-p-hidden-focusable", true);
|
624
|
-
i0.ɵɵadvance(2);
|
625
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.headerTemplate || ctx_r1._headerTemplate);
|
626
|
-
i0.ɵɵadvance();
|
627
|
-
i0.ɵɵproperty("ngIf", ctx_r1.showHeader);
|
628
|
-
i0.ɵɵadvance();
|
629
|
-
i0.ɵɵstyleProp("max-height", ctx_r1.virtualScroll ? "auto" : ctx_r1.scrollHeight || "auto");
|
630
|
-
i0.ɵɵadvance();
|
631
|
-
i0.ɵɵproperty("ngIf", ctx_r1.virtualScroll);
|
632
|
-
i0.ɵɵadvance();
|
633
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.virtualScroll);
|
634
|
-
i0.ɵɵadvance(3);
|
635
|
-
i0.ɵɵproperty("ngIf", ctx_r1.footerFacet || ctx_r1.footerTemplate || ctx_r1._footerTemplate);
|
636
|
-
i0.ɵɵadvance();
|
637
|
-
i0.ɵɵattribute("tabindex", 0)("data-p-hidden-accessible", true)("data-p-hidden-focusable", true);
|
638
|
-
} }
|
639
|
-
export const MULTISELECT_VALUE_ACCESSOR = {
|
640
|
-
provide: NG_VALUE_ACCESSOR,
|
641
|
-
useExisting: forwardRef(() => MultiSelect),
|
642
|
-
multi: true
|
643
|
-
};
|
644
|
-
export class MultiSelectItem extends BaseComponent {
|
645
|
-
id;
|
646
|
-
option;
|
647
|
-
selected;
|
648
|
-
label;
|
649
|
-
disabled;
|
650
|
-
itemSize;
|
651
|
-
focused;
|
652
|
-
ariaPosInset;
|
653
|
-
ariaSetSize;
|
654
|
-
variant;
|
655
|
-
template;
|
656
|
-
checkIconTemplate;
|
657
|
-
itemCheckboxIconTemplate;
|
658
|
-
onClick = new EventEmitter();
|
659
|
-
onMouseEnter = new EventEmitter();
|
660
|
-
onOptionClick(event) {
|
661
|
-
this.onClick.emit({
|
662
|
-
originalEvent: event,
|
663
|
-
option: this.option,
|
664
|
-
selected: this.selected
|
665
|
-
});
|
666
|
-
event.stopPropagation();
|
667
|
-
event.preventDefault();
|
668
|
-
}
|
669
|
-
onOptionMouseEnter(event) {
|
670
|
-
this.onMouseEnter.emit({
|
671
|
-
originalEvent: event,
|
672
|
-
option: this.option,
|
673
|
-
selected: this.selected
|
674
|
-
});
|
675
|
-
}
|
676
|
-
static ɵfac = /*@__PURE__*/ (() => { let ɵMultiSelectItem_BaseFactory; return function MultiSelectItem_Factory(__ngFactoryType__) { return (ɵMultiSelectItem_BaseFactory || (ɵMultiSelectItem_BaseFactory = i0.ɵɵgetInheritedFactory(MultiSelectItem)))(__ngFactoryType__ || MultiSelectItem); }; })();
|
677
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MultiSelectItem, selectors: [["p-multiSelectItem"], ["p-multiselect-item"]], inputs: { id: "id", option: "option", selected: [2, "selected", "selected", booleanAttribute], label: "label", disabled: [2, "disabled", "disabled", booleanAttribute], itemSize: [2, "itemSize", "itemSize", numberAttribute], focused: [2, "focused", "focused", booleanAttribute], ariaPosInset: "ariaPosInset", ariaSetSize: "ariaSetSize", variant: "variant", template: "template", checkIconTemplate: "checkIconTemplate", itemCheckboxIconTemplate: "itemCheckboxIconTemplate" }, outputs: { onClick: "onClick", onMouseEnter: "onMouseEnter" }, standalone: true, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 5, vars: 26, consts: [["icon", ""], ["pRipple", "", "role", "option", 3, "click", "mouseenter", "ngStyle", "ngClass", "id"], [3, "ngModel", "binary", "tabindex", "variant"], [4, "ngIf"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"]], template: function MultiSelectItem_Template(rf, ctx) { if (rf & 1) {
|
678
|
-
i0.ɵɵelementStart(0, "li", 1);
|
679
|
-
i0.ɵɵlistener("click", function MultiSelectItem_Template_li_click_0_listener($event) { return ctx.onOptionClick($event); })("mouseenter", function MultiSelectItem_Template_li_mouseenter_0_listener($event) { return ctx.onOptionMouseEnter($event); });
|
680
|
-
i0.ɵɵelementStart(1, "p-checkbox", 2);
|
681
|
-
i0.ɵɵtemplate(2, MultiSelectItem_ng_container_2_Template, 3, 0, "ng-container", 3);
|
682
|
-
i0.ɵɵelementEnd();
|
683
|
-
i0.ɵɵtemplate(3, MultiSelectItem_span_3_Template, 2, 1, "span", 3)(4, MultiSelectItem_ng_container_4_Template, 1, 0, "ng-container", 4);
|
684
|
-
i0.ɵɵelementEnd();
|
685
|
-
} if (rf & 2) {
|
686
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(19, _c0, ctx.itemSize + "px"))("ngClass", i0.ɵɵpureFunction2(21, _c1, ctx.disabled, ctx.focused))("id", ctx.id);
|
687
|
-
i0.ɵɵattribute("aria-label", ctx.label)("aria-setsize", ctx.ariaSetSize)("aria-posinset", ctx.ariaPosInset)("aria-selected", ctx.selected)("data-p-focused", ctx.focused)("data-p-highlight", ctx.selected)("data-p-disabled", ctx.disabled)("aria-checked", ctx.selected);
|
688
|
-
i0.ɵɵadvance();
|
689
|
-
i0.ɵɵproperty("ngModel", ctx.selected)("binary", true)("tabindex", -1)("variant", ctx.variant);
|
690
|
-
i0.ɵɵadvance();
|
691
|
-
i0.ɵɵproperty("ngIf", ctx.itemCheckboxIconTemplate);
|
692
|
-
i0.ɵɵadvance();
|
693
|
-
i0.ɵɵproperty("ngIf", !ctx.template);
|
694
|
-
i0.ɵɵadvance();
|
695
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.template)("ngTemplateOutletContext", i0.ɵɵpureFunction1(24, _c2, ctx.option));
|
696
|
-
} }, dependencies: [CommonModule, i1.NgClass, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, Checkbox, FormsModule, i2.NgControlStatus, i2.NgModel, Ripple, SharedModule], encapsulation: 2 });
|
697
|
-
}
|
698
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MultiSelectItem, [{
|
699
|
-
type: Component,
|
700
|
-
args: [{
|
701
|
-
selector: 'p-multiSelectItem, p-multiselect-item',
|
702
|
-
standalone: true,
|
703
|
-
imports: [CommonModule, Checkbox, FormsModule, Ripple, SharedModule],
|
704
|
-
template: `
|
705
|
-
<li
|
706
|
-
pRipple
|
707
|
-
role="option"
|
708
|
-
[ngStyle]="{ height: itemSize + 'px' }"
|
709
|
-
[ngClass]="{
|
710
|
-
'p-multiselect-option': true,
|
711
|
-
'p-disabled': disabled,
|
712
|
-
'p-focus': focused
|
713
|
-
}"
|
714
|
-
[id]="id"
|
715
|
-
[attr.aria-label]="label"
|
716
|
-
[attr.aria-setsize]="ariaSetSize"
|
717
|
-
[attr.aria-posinset]="ariaPosInset"
|
718
|
-
[attr.aria-selected]="selected"
|
719
|
-
[attr.data-p-focused]="focused"
|
720
|
-
[attr.data-p-highlight]="selected"
|
721
|
-
[attr.data-p-disabled]="disabled"
|
722
|
-
[attr.aria-checked]="selected"
|
723
|
-
(click)="onOptionClick($event)"
|
724
|
-
(mouseenter)="onOptionMouseEnter($event)"
|
725
|
-
>
|
726
|
-
<p-checkbox [ngModel]="selected" [binary]="true" [tabindex]="-1" [variant]="variant">
|
727
|
-
<ng-container *ngIf="itemCheckboxIconTemplate">
|
728
|
-
<ng-template #icon let-klass="class">
|
729
|
-
<ng-template *ngTemplateOutlet="itemCheckboxIconTemplate; context: { checked: selected, class: klass }"></ng-template>
|
730
|
-
</ng-template>
|
731
|
-
</ng-container>
|
732
|
-
</p-checkbox>
|
733
|
-
<span *ngIf="!template">{{ label ?? 'empty' }}</span>
|
734
|
-
<ng-container *ngTemplateOutlet="template; context: { $implicit: option }"></ng-container>
|
735
|
-
</li>
|
736
|
-
`,
|
737
|
-
encapsulation: ViewEncapsulation.None
|
738
|
-
}]
|
739
|
-
}], null, { id: [{
|
740
|
-
type: Input
|
741
|
-
}], option: [{
|
742
|
-
type: Input
|
743
|
-
}], selected: [{
|
744
|
-
type: Input,
|
745
|
-
args: [{ transform: booleanAttribute }]
|
746
|
-
}], label: [{
|
747
|
-
type: Input
|
748
|
-
}], disabled: [{
|
749
|
-
type: Input,
|
750
|
-
args: [{ transform: booleanAttribute }]
|
751
|
-
}], itemSize: [{
|
752
|
-
type: Input,
|
753
|
-
args: [{ transform: numberAttribute }]
|
754
|
-
}], focused: [{
|
755
|
-
type: Input,
|
756
|
-
args: [{ transform: booleanAttribute }]
|
757
|
-
}], ariaPosInset: [{
|
758
|
-
type: Input
|
759
|
-
}], ariaSetSize: [{
|
760
|
-
type: Input
|
761
|
-
}], variant: [{
|
762
|
-
type: Input
|
763
|
-
}], template: [{
|
764
|
-
type: Input
|
765
|
-
}], checkIconTemplate: [{
|
766
|
-
type: Input
|
767
|
-
}], itemCheckboxIconTemplate: [{
|
768
|
-
type: Input
|
769
|
-
}], onClick: [{
|
770
|
-
type: Output
|
771
|
-
}], onMouseEnter: [{
|
772
|
-
type: Output
|
773
|
-
}] }); })();
|
774
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MultiSelectItem, { className: "MultiSelectItem" }); })();
|
775
|
-
// @ts-ignore
|
776
|
-
/**
|
777
|
-
* MultiSelect is used to select multiple items from a collection.
|
778
|
-
* @group Components
|
779
|
-
*/
|
780
|
-
export class MultiSelect extends BaseComponent {
|
781
|
-
zone;
|
782
|
-
filterService;
|
783
|
-
overlayService;
|
784
|
-
/**
|
785
|
-
* Unique identifier of the component
|
786
|
-
* @group Props
|
787
|
-
*/
|
788
|
-
id;
|
789
|
-
/**
|
790
|
-
* Defines a string that labels the input for accessibility.
|
791
|
-
* @group Props
|
792
|
-
*/
|
793
|
-
ariaLabel;
|
794
|
-
/**
|
795
|
-
* Inline style of the element.
|
796
|
-
* @group Props
|
797
|
-
*/
|
798
|
-
style;
|
799
|
-
/**
|
800
|
-
* Style class of the element.
|
801
|
-
* @group Props
|
802
|
-
*/
|
803
|
-
styleClass;
|
804
|
-
/**
|
805
|
-
* Inline style of the overlay panel.
|
806
|
-
* @group Props
|
807
|
-
*/
|
808
|
-
panelStyle;
|
809
|
-
/**
|
810
|
-
* Style class of the overlay panel element.
|
811
|
-
* @group Props
|
812
|
-
*/
|
813
|
-
panelStyleClass;
|
814
|
-
/**
|
815
|
-
* Identifier of the focus input to match a label defined for the component.
|
816
|
-
* @group Props
|
817
|
-
*/
|
818
|
-
inputId;
|
819
|
-
/**
|
820
|
-
* When present, it specifies that the element should be disabled.
|
821
|
-
* @group Props
|
822
|
-
*/
|
823
|
-
disabled;
|
824
|
-
/**
|
825
|
-
* Spans 100% width of the container when enabled.
|
826
|
-
* @group Props
|
827
|
-
*/
|
828
|
-
fluid;
|
829
|
-
/**
|
830
|
-
* When present, it specifies that the component cannot be edited.
|
831
|
-
* @group Props
|
832
|
-
*/
|
833
|
-
readonly;
|
834
|
-
/**
|
835
|
-
* Whether to display options as grouped when nested options are provided.
|
836
|
-
* @group Props
|
837
|
-
*/
|
838
|
-
group;
|
839
|
-
/**
|
840
|
-
* When specified, displays an input field to filter the items on keyup.
|
841
|
-
* @group Props
|
842
|
-
*/
|
843
|
-
filter = true;
|
844
|
-
/**
|
845
|
-
* Defines placeholder of the filter input.
|
846
|
-
* @group Props
|
847
|
-
*/
|
848
|
-
filterPlaceHolder;
|
849
|
-
/**
|
850
|
-
* Locale to use in filtering. The default locale is the host environment's current locale.
|
851
|
-
* @group Props
|
852
|
-
*/
|
853
|
-
filterLocale;
|
854
|
-
/**
|
855
|
-
* Specifies the visibility of the options panel.
|
856
|
-
* @group Props
|
857
|
-
*/
|
858
|
-
overlayVisible;
|
859
|
-
/**
|
860
|
-
* Index of the element in tabbing order.
|
861
|
-
* @group Props
|
862
|
-
*/
|
863
|
-
tabindex = 0;
|
864
|
-
/**
|
865
|
-
* Specifies the input variant of the component.
|
866
|
-
* @group Props
|
867
|
-
*/
|
868
|
-
variant = 'outlined';
|
869
|
-
/**
|
870
|
-
* Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
|
871
|
-
* @group Props
|
872
|
-
*/
|
873
|
-
appendTo;
|
874
|
-
/**
|
875
|
-
* A property to uniquely identify a value in options.
|
876
|
-
* @group Props
|
877
|
-
*/
|
878
|
-
dataKey;
|
879
|
-
/**
|
880
|
-
* Name of the input element.
|
881
|
-
* @group Props
|
882
|
-
*/
|
883
|
-
name;
|
884
|
-
/**
|
885
|
-
* Establishes relationships between the component and label(s) where its value should be one or more element IDs.
|
886
|
-
* @group Props
|
887
|
-
*/
|
888
|
-
ariaLabelledBy;
|
889
|
-
/**
|
890
|
-
* Whether to show labels of selected item labels or use default label.
|
891
|
-
* @group Props
|
892
|
-
* @defaultValue true
|
893
|
-
*/
|
894
|
-
set displaySelectedLabel(val) {
|
895
|
-
this._displaySelectedLabel = val;
|
896
|
-
}
|
897
|
-
get displaySelectedLabel() {
|
898
|
-
return this._displaySelectedLabel;
|
899
|
-
}
|
900
|
-
/**
|
901
|
-
* Decides how many selected item labels to show at most.
|
902
|
-
* @group Props
|
903
|
-
* @defaultValue 3
|
904
|
-
*/
|
905
|
-
set maxSelectedLabels(val) {
|
906
|
-
this._maxSelectedLabels = val;
|
907
|
-
}
|
908
|
-
get maxSelectedLabels() {
|
909
|
-
return this._maxSelectedLabels;
|
910
|
-
}
|
911
|
-
/**
|
912
|
-
* Decides how many selected item labels to show at most.
|
913
|
-
* @group Props
|
914
|
-
*/
|
915
|
-
selectionLimit;
|
916
|
-
/**
|
917
|
-
* Label to display after exceeding max selected labels e.g. ({0} items selected), defaults "ellipsis" keyword to indicate a text-overflow.
|
918
|
-
* @group Props
|
919
|
-
*/
|
920
|
-
selectedItemsLabel;
|
921
|
-
/**
|
922
|
-
* Whether to show the checkbox at header to toggle all items at once.
|
923
|
-
* @group Props
|
924
|
-
*/
|
925
|
-
showToggleAll = true;
|
926
|
-
/**
|
927
|
-
* Text to display when filtering does not return any results.
|
928
|
-
* @group Props
|
929
|
-
*/
|
930
|
-
emptyFilterMessage = '';
|
931
|
-
/**
|
932
|
-
* Text to display when there is no data. Defaults to global value in i18n translation configuration.
|
933
|
-
* @group Props
|
934
|
-
*/
|
935
|
-
emptyMessage = '';
|
936
|
-
/**
|
937
|
-
* Clears the filter value when hiding the dropdown.
|
938
|
-
* @group Props
|
939
|
-
*/
|
940
|
-
resetFilterOnHide = false;
|
941
|
-
/**
|
942
|
-
* Icon class of the dropdown icon.
|
943
|
-
* @group Props
|
944
|
-
*/
|
945
|
-
dropdownIcon;
|
946
|
-
/**
|
947
|
-
* Icon class of the chip icon.
|
948
|
-
* @group Props
|
949
|
-
*/
|
950
|
-
chipIcon;
|
951
|
-
/**
|
952
|
-
* Name of the label field of an option.
|
953
|
-
* @group Props
|
954
|
-
*/
|
955
|
-
optionLabel;
|
956
|
-
/**
|
957
|
-
* Name of the value field of an option.
|
958
|
-
* @group Props
|
959
|
-
*/
|
960
|
-
optionValue;
|
961
|
-
/**
|
962
|
-
* Name of the disabled field of an option.
|
963
|
-
* @group Props
|
964
|
-
*/
|
965
|
-
optionDisabled;
|
966
|
-
/**
|
967
|
-
* Name of the label field of an option group.
|
968
|
-
* @group Props
|
969
|
-
*/
|
970
|
-
optionGroupLabel = 'label';
|
971
|
-
/**
|
972
|
-
* Name of the options field of an option group.
|
973
|
-
* @group Props
|
974
|
-
*/
|
975
|
-
optionGroupChildren = 'items';
|
976
|
-
/**
|
977
|
-
* Whether to show the header.
|
978
|
-
* @group Props
|
979
|
-
*/
|
980
|
-
showHeader = true;
|
981
|
-
/**
|
982
|
-
* When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.
|
983
|
-
* @group Props
|
984
|
-
*/
|
985
|
-
filterBy;
|
986
|
-
/**
|
987
|
-
* Height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.
|
988
|
-
* @group Props
|
989
|
-
*/
|
990
|
-
scrollHeight = '200px';
|
991
|
-
/**
|
992
|
-
* Defines if data is loaded and interacted with in lazy manner.
|
993
|
-
* @group Props
|
994
|
-
*/
|
995
|
-
lazy = false;
|
996
|
-
/**
|
997
|
-
* Whether the data should be loaded on demand during scroll.
|
998
|
-
* @group Props
|
999
|
-
*/
|
1000
|
-
virtualScroll;
|
1001
|
-
/**
|
1002
|
-
* Whether the multiselect is in loading state.
|
1003
|
-
* @group Props
|
1004
|
-
*/
|
1005
|
-
loading = false;
|
1006
|
-
/**
|
1007
|
-
* Height of an item in the list for VirtualScrolling.
|
1008
|
-
* @group Props
|
1009
|
-
*/
|
1010
|
-
virtualScrollItemSize;
|
1011
|
-
/**
|
1012
|
-
* Icon to display in loading state.
|
1013
|
-
* @group Props
|
1014
|
-
*/
|
1015
|
-
loadingIcon;
|
1016
|
-
/**
|
1017
|
-
* Whether to use the scroller feature. The properties of scroller component can be used like an object in it.
|
1018
|
-
* @group Props
|
1019
|
-
*/
|
1020
|
-
virtualScrollOptions;
|
1021
|
-
/**
|
1022
|
-
* Whether to use overlay API feature. The properties of overlay API can be used like an object in it.
|
1023
|
-
* @group Props
|
1024
|
-
*/
|
1025
|
-
overlayOptions;
|
1026
|
-
/**
|
1027
|
-
* Defines a string that labels the filter input.
|
1028
|
-
* @group Props
|
1029
|
-
*/
|
1030
|
-
ariaFilterLabel;
|
1031
|
-
/**
|
1032
|
-
* Defines how the items are filtered.
|
1033
|
-
* @group Props
|
1034
|
-
*/
|
1035
|
-
filterMatchMode = 'contains';
|
1036
|
-
/**
|
1037
|
-
* Advisory information to display in a tooltip on hover.
|
1038
|
-
* @group Props
|
1039
|
-
*/
|
1040
|
-
tooltip = '';
|
1041
|
-
/**
|
1042
|
-
* Position of the tooltip.
|
1043
|
-
* @group Props
|
1044
|
-
*/
|
1045
|
-
tooltipPosition = 'right';
|
1046
|
-
/**
|
1047
|
-
* Type of CSS position.
|
1048
|
-
* @group Props
|
1049
|
-
*/
|
1050
|
-
tooltipPositionStyle = 'absolute';
|
1051
|
-
/**
|
1052
|
-
* Style class of the tooltip.
|
1053
|
-
* @group Props
|
1054
|
-
*/
|
1055
|
-
tooltipStyleClass;
|
1056
|
-
/**
|
1057
|
-
* Applies focus to the filter element when the overlay is shown.
|
1058
|
-
* @group Props
|
1059
|
-
*/
|
1060
|
-
autofocusFilter = false;
|
1061
|
-
/**
|
1062
|
-
* Defines how the selected items are displayed.
|
1063
|
-
* @group Props
|
1064
|
-
*/
|
1065
|
-
display = 'comma';
|
1066
|
-
/**
|
1067
|
-
* Defines the autocomplete is active.
|
1068
|
-
* @group Props
|
1069
|
-
*/
|
1070
|
-
autocomplete = 'off';
|
1071
|
-
/**
|
1072
|
-
* Defines the size of the component.
|
1073
|
-
* @group Props
|
1074
|
-
*/
|
1075
|
-
size;
|
1076
|
-
/**
|
1077
|
-
* When enabled, a clear icon is displayed to clear the value.
|
1078
|
-
* @group Props
|
1079
|
-
*/
|
1080
|
-
showClear = false;
|
1081
|
-
/**
|
1082
|
-
* When present, it specifies that the component should automatically get focus on load.
|
1083
|
-
* @group Props
|
1084
|
-
*/
|
1085
|
-
autofocus;
|
1086
|
-
/**
|
1087
|
-
* @deprecated since v14.2.0, use overlayOptions property instead.
|
1088
|
-
* Whether to automatically manage layering.
|
1089
|
-
* @group Props
|
1090
|
-
*/
|
1091
|
-
get autoZIndex() {
|
1092
|
-
return this._autoZIndex;
|
1093
|
-
}
|
1094
|
-
set autoZIndex(val) {
|
1095
|
-
this._autoZIndex = val;
|
1096
|
-
console.log('The autoZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');
|
1097
|
-
}
|
1098
|
-
/**
|
1099
|
-
* @deprecated since v14.2.0, use overlayOptions property instead.
|
1100
|
-
* Base zIndex value to use in layering.
|
1101
|
-
* @group Props
|
1102
|
-
*/
|
1103
|
-
get baseZIndex() {
|
1104
|
-
return this._baseZIndex;
|
1105
|
-
}
|
1106
|
-
set baseZIndex(val) {
|
1107
|
-
this._baseZIndex = val;
|
1108
|
-
console.log('The baseZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');
|
1109
|
-
}
|
1110
|
-
/**
|
1111
|
-
* Transition options of the show animation.
|
1112
|
-
* @group Props
|
1113
|
-
* @deprecated since v14.2.0, use overlayOptions property instead.
|
1114
|
-
*/
|
1115
|
-
get showTransitionOptions() {
|
1116
|
-
return this._showTransitionOptions;
|
1117
|
-
}
|
1118
|
-
set showTransitionOptions(val) {
|
1119
|
-
this._showTransitionOptions = val;
|
1120
|
-
console.log('The showTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');
|
1121
|
-
}
|
1122
|
-
/**
|
1123
|
-
* Transition options of the hide animation.
|
1124
|
-
* @group Props
|
1125
|
-
* @deprecated since v14.2.0, use overlayOptions property instead.
|
1126
|
-
*/
|
1127
|
-
get hideTransitionOptions() {
|
1128
|
-
return this._hideTransitionOptions;
|
1129
|
-
}
|
1130
|
-
set hideTransitionOptions(val) {
|
1131
|
-
this._hideTransitionOptions = val;
|
1132
|
-
console.log('The hideTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');
|
1133
|
-
}
|
1134
|
-
/**
|
1135
|
-
* Label to display when there are no selections.
|
1136
|
-
* @group Props
|
1137
|
-
* @deprecated Use placeholder instead.
|
1138
|
-
*/
|
1139
|
-
set defaultLabel(val) {
|
1140
|
-
this._defaultLabel = val;
|
1141
|
-
console.log('defaultLabel property is deprecated since 16.6.0, use placeholder instead');
|
1142
|
-
}
|
1143
|
-
get defaultLabel() {
|
1144
|
-
return this._defaultLabel;
|
1145
|
-
}
|
1146
|
-
/**
|
1147
|
-
* Label to display when there are no selections.
|
1148
|
-
* @group Props
|
1149
|
-
*/
|
1150
|
-
set placeholder(val) {
|
1151
|
-
this._placeholder.set(val);
|
1152
|
-
}
|
1153
|
-
get placeholder() {
|
1154
|
-
return this._placeholder.asReadonly();
|
1155
|
-
}
|
1156
|
-
/**
|
1157
|
-
* An array of objects to display as the available options.
|
1158
|
-
* @group Props
|
1159
|
-
*/
|
1160
|
-
get options() {
|
1161
|
-
const options = this._options();
|
1162
|
-
return options;
|
1163
|
-
}
|
1164
|
-
set options(val) {
|
1165
|
-
if (!deepEquals(this._options(), val)) {
|
1166
|
-
this._options.set(val);
|
1167
|
-
}
|
1168
|
-
}
|
1169
|
-
/**
|
1170
|
-
* When specified, filter displays with this value.
|
1171
|
-
* @group Props
|
1172
|
-
*/
|
1173
|
-
get filterValue() {
|
1174
|
-
return this._filterValue();
|
1175
|
-
}
|
1176
|
-
set filterValue(val) {
|
1177
|
-
this._filterValue.set(val);
|
1178
|
-
}
|
1179
|
-
/**
|
1180
|
-
* Item size of item to be virtual scrolled.
|
1181
|
-
* @group Props
|
1182
|
-
* @deprecated use virtualScrollItemSize property instead.
|
1183
|
-
*/
|
1184
|
-
get itemSize() {
|
1185
|
-
return this._itemSize;
|
1186
|
-
}
|
1187
|
-
set itemSize(val) {
|
1188
|
-
this._itemSize = val;
|
1189
|
-
console.log('The itemSize property is deprecated, use virtualScrollItemSize property instead.');
|
1190
|
-
}
|
1191
|
-
/**
|
1192
|
-
* Whether all data is selected.
|
1193
|
-
* @group Props
|
1194
|
-
*/
|
1195
|
-
get selectAll() {
|
1196
|
-
return this._selectAll;
|
1197
|
-
}
|
1198
|
-
set selectAll(value) {
|
1199
|
-
this._selectAll = value;
|
1200
|
-
}
|
1201
|
-
/**
|
1202
|
-
* Indicates whether to focus on options when hovering over them, defaults to optionLabel.
|
1203
|
-
* @group Props
|
1204
|
-
*/
|
1205
|
-
focusOnHover = true;
|
1206
|
-
/**
|
1207
|
-
* Fields used when filtering the options, defaults to optionLabel.
|
1208
|
-
* @group Props
|
1209
|
-
*/
|
1210
|
-
filterFields;
|
1211
|
-
/**
|
1212
|
-
* Determines if the option will be selected on focus.
|
1213
|
-
* @group Props
|
1214
|
-
*/
|
1215
|
-
selectOnFocus = false;
|
1216
|
-
/**
|
1217
|
-
* Whether to focus on the first visible or selected element when the overlay panel is shown.
|
1218
|
-
* @group Props
|
1219
|
-
*/
|
1220
|
-
autoOptionFocus = false;
|
1221
|
-
/**
|
1222
|
-
* Callback to invoke when value changes.
|
1223
|
-
* @param {MultiSelectChangeEvent} event - Custom change event.
|
1224
|
-
* @group Emits
|
1225
|
-
*/
|
1226
|
-
onChange = new EventEmitter();
|
1227
|
-
/**
|
1228
|
-
* Callback to invoke when data is filtered.
|
1229
|
-
* @param {MultiSelectFilterEvent} event - Custom filter event.
|
1230
|
-
* @group Emits
|
1231
|
-
*/
|
1232
|
-
onFilter = new EventEmitter();
|
1233
|
-
/**
|
1234
|
-
* Callback to invoke when multiselect receives focus.
|
1235
|
-
* @param {MultiSelectFocusEvent} event - Custom focus event.
|
1236
|
-
* @group Emits
|
1237
|
-
*/
|
1238
|
-
onFocus = new EventEmitter();
|
1239
|
-
/**
|
1240
|
-
* Callback to invoke when multiselect loses focus.
|
1241
|
-
* @param {MultiSelectBlurEvent} event - Custom blur event.
|
1242
|
-
* @group Emits
|
1243
|
-
*/
|
1244
|
-
onBlur = new EventEmitter();
|
1245
|
-
/**
|
1246
|
-
* Callback to invoke when component is clicked.
|
1247
|
-
* @param {Event} event - Browser event.
|
1248
|
-
* @group Emits
|
1249
|
-
*/
|
1250
|
-
onClick = new EventEmitter();
|
1251
|
-
/**
|
1252
|
-
* Callback to invoke when input field is cleared.
|
1253
|
-
* @group Emits
|
1254
|
-
*/
|
1255
|
-
onClear = new EventEmitter();
|
1256
|
-
/**
|
1257
|
-
* Callback to invoke when overlay panel becomes visible.
|
1258
|
-
* @group Emits
|
1259
|
-
*/
|
1260
|
-
onPanelShow = new EventEmitter();
|
1261
|
-
/**
|
1262
|
-
* Callback to invoke when overlay panel becomes hidden.
|
1263
|
-
* @group Emits
|
1264
|
-
*/
|
1265
|
-
onPanelHide = new EventEmitter();
|
1266
|
-
/**
|
1267
|
-
* Callback to invoke in lazy mode to load new data.
|
1268
|
-
* @param {MultiSelectLazyLoadEvent} event - Lazy load event.
|
1269
|
-
* @group Emits
|
1270
|
-
*/
|
1271
|
-
onLazyLoad = new EventEmitter();
|
1272
|
-
/**
|
1273
|
-
* Callback to invoke in lazy mode to load new data.
|
1274
|
-
* @param {MultiSelectRemoveEvent} event - Remove event.
|
1275
|
-
* @group Emits
|
1276
|
-
*/
|
1277
|
-
onRemove = new EventEmitter();
|
1278
|
-
/**
|
1279
|
-
* Callback to invoke when all data is selected.
|
1280
|
-
* @param {MultiSelectSelectAllChangeEvent} event - Custom select event.
|
1281
|
-
* @group Emits
|
1282
|
-
*/
|
1283
|
-
onSelectAllChange = new EventEmitter();
|
1284
|
-
overlayViewChild;
|
1285
|
-
filterInputChild;
|
1286
|
-
focusInputViewChild;
|
1287
|
-
itemsViewChild;
|
1288
|
-
scroller;
|
1289
|
-
lastHiddenFocusableElementOnOverlay;
|
1290
|
-
firstHiddenFocusableElementOnOverlay;
|
1291
|
-
headerCheckboxViewChild;
|
1292
|
-
footerFacet;
|
1293
|
-
headerFacet;
|
1294
|
-
_componentStyle = inject(MultiSelectStyle);
|
1295
|
-
searchValue;
|
1296
|
-
searchTimeout;
|
1297
|
-
_selectAll = null;
|
1298
|
-
_autoZIndex;
|
1299
|
-
_baseZIndex;
|
1300
|
-
_showTransitionOptions;
|
1301
|
-
_hideTransitionOptions;
|
1302
|
-
_defaultLabel;
|
1303
|
-
_placeholder = signal(undefined);
|
1304
|
-
_itemSize;
|
1305
|
-
_selectionLimit;
|
1306
|
-
_disableTooltip = false;
|
1307
|
-
value;
|
1308
|
-
_filteredOptions;
|
1309
|
-
onModelChange = () => { };
|
1310
|
-
onModelTouched = () => { };
|
1311
|
-
valuesAsString;
|
1312
|
-
focus;
|
1313
|
-
filtered;
|
1314
|
-
itemTemplate;
|
1315
|
-
groupTemplate;
|
1316
|
-
loaderTemplate;
|
1317
|
-
headerTemplate;
|
1318
|
-
filterTemplate;
|
1319
|
-
footerTemplate;
|
1320
|
-
emptyFilterTemplate;
|
1321
|
-
emptyTemplate;
|
1322
|
-
selectedItemsTemplate;
|
1323
|
-
checkIconTemplate;
|
1324
|
-
loadingIconTemplate;
|
1325
|
-
filterIconTemplate;
|
1326
|
-
removeTokenIconTemplate;
|
1327
|
-
chipIconTemplate;
|
1328
|
-
clearIconTemplate;
|
1329
|
-
dropdownIconTemplate;
|
1330
|
-
itemCheckboxIconTemplate;
|
1331
|
-
headerCheckboxIconTemplate;
|
1332
|
-
templates;
|
1333
|
-
_itemTemplate;
|
1334
|
-
_groupTemplate;
|
1335
|
-
_loaderTemplate;
|
1336
|
-
_headerTemplate;
|
1337
|
-
_filterTemplate;
|
1338
|
-
_footerTemplate;
|
1339
|
-
_emptyFilterTemplate;
|
1340
|
-
_emptyTemplate;
|
1341
|
-
_selectedItemsTemplate;
|
1342
|
-
_checkIconTemplate;
|
1343
|
-
_loadingIconTemplate;
|
1344
|
-
_filterIconTemplate;
|
1345
|
-
_removeTokenIconTemplate;
|
1346
|
-
_chipIconTemplate;
|
1347
|
-
_clearIconTemplate;
|
1348
|
-
_dropdownIconTemplate;
|
1349
|
-
_itemCheckboxIconTemplate;
|
1350
|
-
_headerCheckboxIconTemplate;
|
1351
|
-
ngAfterContentInit() {
|
1352
|
-
this.templates.forEach((item) => {
|
1353
|
-
switch (item.getType()) {
|
1354
|
-
case 'item':
|
1355
|
-
this._itemTemplate = item.template;
|
1356
|
-
break;
|
1357
|
-
case 'group':
|
1358
|
-
this._groupTemplate = item.template;
|
1359
|
-
break;
|
1360
|
-
case 'selectedItems':
|
1361
|
-
this._selectedItemsTemplate = item.template;
|
1362
|
-
break;
|
1363
|
-
case 'header':
|
1364
|
-
this._headerTemplate = item.template;
|
1365
|
-
break;
|
1366
|
-
case 'filter':
|
1367
|
-
this._filterTemplate = item.template;
|
1368
|
-
break;
|
1369
|
-
case 'emptyfilter':
|
1370
|
-
this._emptyFilterTemplate = item.template;
|
1371
|
-
break;
|
1372
|
-
case 'empty':
|
1373
|
-
this._emptyTemplate = item.template;
|
1374
|
-
break;
|
1375
|
-
case 'footer':
|
1376
|
-
this._footerTemplate = item.template;
|
1377
|
-
break;
|
1378
|
-
case 'loader':
|
1379
|
-
this._loaderTemplate = item.template;
|
1380
|
-
break;
|
1381
|
-
case 'checkicon':
|
1382
|
-
this._checkIconTemplate = item.template;
|
1383
|
-
console.warn('checkicon is deprecated and will removed in future. Use itemcheckboxicon or headercheckboxicon templates instead.');
|
1384
|
-
break;
|
1385
|
-
case 'headercheckboxicon':
|
1386
|
-
this._headerCheckboxIconTemplate = item.template;
|
1387
|
-
break;
|
1388
|
-
case 'loadingicon':
|
1389
|
-
this._loadingIconTemplate = item.template;
|
1390
|
-
break;
|
1391
|
-
case 'filtericon':
|
1392
|
-
this._filterIconTemplate = item.template;
|
1393
|
-
break;
|
1394
|
-
case 'removetokenicon':
|
1395
|
-
this._removeTokenIconTemplate = item.template;
|
1396
|
-
break;
|
1397
|
-
case 'clearicon':
|
1398
|
-
this._clearIconTemplate = item.template;
|
1399
|
-
break;
|
1400
|
-
case 'dropdownicon':
|
1401
|
-
this._dropdownIconTemplate = item.template;
|
1402
|
-
break;
|
1403
|
-
case 'itemcheckboxicon':
|
1404
|
-
this._itemCheckboxIconTemplate = item.template;
|
1405
|
-
break;
|
1406
|
-
case 'chipicon':
|
1407
|
-
this._chipIconTemplate = item.template;
|
1408
|
-
break;
|
1409
|
-
default:
|
1410
|
-
this._itemTemplate = item.template;
|
1411
|
-
break;
|
1412
|
-
}
|
1413
|
-
});
|
1414
|
-
}
|
1415
|
-
headerCheckboxFocus;
|
1416
|
-
filterOptions;
|
1417
|
-
preventModelTouched;
|
1418
|
-
preventDocumentDefault;
|
1419
|
-
focused = false;
|
1420
|
-
itemsWrapper;
|
1421
|
-
_displaySelectedLabel = true;
|
1422
|
-
_maxSelectedLabels = 3;
|
1423
|
-
modelValue = signal(null);
|
1424
|
-
_filterValue = signal(null);
|
1425
|
-
_options = signal(null);
|
1426
|
-
startRangeIndex = signal(-1);
|
1427
|
-
focusedOptionIndex = signal(-1);
|
1428
|
-
selectedOptions;
|
1429
|
-
clickInProgress = false;
|
1430
|
-
get hostClasses() {
|
1431
|
-
const classes = [];
|
1432
|
-
if (typeof this.rootClass === 'string') {
|
1433
|
-
classes.push(this.rootClass);
|
1434
|
-
}
|
1435
|
-
else if (Array.isArray(this.rootClass)) {
|
1436
|
-
classes.push(...this.rootClass);
|
1437
|
-
}
|
1438
|
-
else if (typeof this.rootClass === 'object') {
|
1439
|
-
Object.keys(this.rootClass)
|
1440
|
-
.filter((key) => this.rootClass[key])
|
1441
|
-
.forEach((key) => classes.push(key));
|
1442
|
-
}
|
1443
|
-
if (this.styleClass) {
|
1444
|
-
classes.push(this.styleClass);
|
1445
|
-
}
|
1446
|
-
return classes.join(' ');
|
1447
|
-
}
|
1448
|
-
get rootClass() {
|
1449
|
-
return this._componentStyle.classes.root({ instance: this });
|
1450
|
-
}
|
1451
|
-
get labelClass() {
|
1452
|
-
return this._componentStyle.classes.label({ instance: this });
|
1453
|
-
}
|
1454
|
-
get emptyMessageLabel() {
|
1455
|
-
return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
|
1456
|
-
}
|
1457
|
-
get emptyFilterMessageLabel() {
|
1458
|
-
return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);
|
1459
|
-
}
|
1460
|
-
get filled() {
|
1461
|
-
if (typeof this.modelValue() === 'string')
|
1462
|
-
return !!this.modelValue();
|
1463
|
-
return isNotEmpty(this.modelValue());
|
1464
|
-
}
|
1465
|
-
get isVisibleClearIcon() {
|
1466
|
-
return this.modelValue() != null && this.modelValue() !== '' && isNotEmpty(this.modelValue()) && this.showClear && !this.disabled && this.filled;
|
1467
|
-
}
|
1468
|
-
get toggleAllAriaLabel() {
|
1469
|
-
return this.config.translation.aria ? this.config.translation.aria[this.allSelected() ? 'selectAll' : 'unselectAll'] : undefined;
|
1470
|
-
}
|
1471
|
-
get closeAriaLabel() {
|
1472
|
-
return this.config.translation.aria ? this.config.translation.aria.close : undefined;
|
1473
|
-
}
|
1474
|
-
get listLabel() {
|
1475
|
-
return this.config.getTranslation(TranslationKeys.ARIA)['listLabel'];
|
1476
|
-
}
|
1477
|
-
get hasFluid() {
|
1478
|
-
const nativeElement = this.el.nativeElement;
|
1479
|
-
const fluidComponent = nativeElement.closest('p-fluid');
|
1480
|
-
return this.fluid || !!fluidComponent;
|
1481
|
-
}
|
1482
|
-
getAllVisibleAndNonVisibleOptions() {
|
1483
|
-
return this.group ? this.flatOptions(this.options) : this.options || [];
|
1484
|
-
}
|
1485
|
-
visibleOptions = computed(() => {
|
1486
|
-
const options = this.getAllVisibleAndNonVisibleOptions();
|
1487
|
-
const isArrayOfObjects = isArray(options) && isObject(options[0]);
|
1488
|
-
if (this._filterValue()) {
|
1489
|
-
let filteredOptions;
|
1490
|
-
if (isArrayOfObjects) {
|
1491
|
-
filteredOptions = this.filterService.filter(options, this.searchFields(), this._filterValue(), this.filterMatchMode, this.filterLocale);
|
1492
|
-
}
|
1493
|
-
else {
|
1494
|
-
filteredOptions = options.filter((option) => option.toString().toLocaleLowerCase().includes(this._filterValue().toLocaleLowerCase()));
|
1495
|
-
}
|
1496
|
-
if (this.group) {
|
1497
|
-
const optionGroups = this.options || [];
|
1498
|
-
const filtered = [];
|
1499
|
-
optionGroups.forEach((group) => {
|
1500
|
-
const groupChildren = this.getOptionGroupChildren(group);
|
1501
|
-
const filteredItems = groupChildren.filter((item) => filteredOptions.includes(item));
|
1502
|
-
if (filteredItems.length > 0)
|
1503
|
-
filtered.push({
|
1504
|
-
...group,
|
1505
|
-
[typeof this.optionGroupChildren === 'string' ? this.optionGroupChildren : 'items']: [...filteredItems]
|
1506
|
-
});
|
1507
|
-
});
|
1508
|
-
return this.flatOptions(filtered);
|
1509
|
-
}
|
1510
|
-
return filteredOptions;
|
1511
|
-
}
|
1512
|
-
return options;
|
1513
|
-
});
|
1514
|
-
label = computed(() => {
|
1515
|
-
let label;
|
1516
|
-
const modelValue = this.modelValue();
|
1517
|
-
if (modelValue && modelValue.length && this.displaySelectedLabel) {
|
1518
|
-
if (isNotEmpty(this.maxSelectedLabels) && modelValue.length > this.maxSelectedLabels) {
|
1519
|
-
return this.getSelectedItemsLabel();
|
1520
|
-
}
|
1521
|
-
else {
|
1522
|
-
label = '';
|
1523
|
-
for (let i = 0; i < modelValue.length; i++) {
|
1524
|
-
if (i !== 0) {
|
1525
|
-
label += ', ';
|
1526
|
-
}
|
1527
|
-
label += this.getLabelByValue(modelValue[i]);
|
1528
|
-
}
|
1529
|
-
}
|
1530
|
-
}
|
1531
|
-
else {
|
1532
|
-
label = this.placeholder() || this.defaultLabel || '';
|
1533
|
-
}
|
1534
|
-
return label;
|
1535
|
-
});
|
1536
|
-
chipSelectedItems = computed(() => {
|
1537
|
-
return isNotEmpty(this.maxSelectedLabels) && this.modelValue() && this.modelValue().length > this.maxSelectedLabels ? this.modelValue().slice(0, this.maxSelectedLabels) : this.modelValue();
|
1538
|
-
});
|
1539
|
-
constructor(zone, filterService, overlayService) {
|
1540
|
-
super();
|
1541
|
-
this.zone = zone;
|
1542
|
-
this.filterService = filterService;
|
1543
|
-
this.overlayService = overlayService;
|
1544
|
-
effect(() => {
|
1545
|
-
const modelValue = this.modelValue();
|
1546
|
-
const visibleOptions = this.visibleOptions();
|
1547
|
-
if (visibleOptions && isNotEmpty(visibleOptions)) {
|
1548
|
-
if (this.optionValue && this.optionLabel && modelValue) {
|
1549
|
-
this.selectedOptions = visibleOptions.filter((option) => modelValue.includes(option[this.optionLabel]) || modelValue.includes(option[this.optionValue]));
|
1550
|
-
}
|
1551
|
-
else {
|
1552
|
-
this.selectedOptions = modelValue;
|
1553
|
-
}
|
1554
|
-
this.cd.markForCheck();
|
1555
|
-
}
|
1556
|
-
});
|
1557
|
-
}
|
1558
|
-
ngOnInit() {
|
1559
|
-
super.ngOnInit();
|
1560
|
-
this.id = this.id || uuid('pn_id_');
|
1561
|
-
this.autoUpdateModel();
|
1562
|
-
if (this.filterBy) {
|
1563
|
-
this.filterOptions = {
|
1564
|
-
filter: (value) => this.onFilterInputChange(value),
|
1565
|
-
reset: () => this.resetFilter()
|
1566
|
-
};
|
1567
|
-
}
|
1568
|
-
}
|
1569
|
-
maxSelectionLimitReached() {
|
1570
|
-
return this.selectionLimit && this.modelValue() && this.modelValue().length === this.selectionLimit;
|
1571
|
-
}
|
1572
|
-
ngAfterViewInit() {
|
1573
|
-
super.ngOnInit();
|
1574
|
-
if (this.overlayVisible) {
|
1575
|
-
this.show();
|
1576
|
-
}
|
1577
|
-
}
|
1578
|
-
ngAfterViewChecked() {
|
1579
|
-
if (this.filtered) {
|
1580
|
-
this.zone.runOutsideAngular(() => {
|
1581
|
-
setTimeout(() => {
|
1582
|
-
this.overlayViewChild?.alignOverlay();
|
1583
|
-
}, 1);
|
1584
|
-
});
|
1585
|
-
this.filtered = false;
|
1586
|
-
}
|
1587
|
-
}
|
1588
|
-
flatOptions(options) {
|
1589
|
-
return (options || []).reduce((result, option, index) => {
|
1590
|
-
result.push({ optionGroup: option, group: true, index });
|
1591
|
-
const optionGroupChildren = this.getOptionGroupChildren(option);
|
1592
|
-
optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));
|
1593
|
-
return result;
|
1594
|
-
}, []);
|
1595
|
-
}
|
1596
|
-
autoUpdateModel() {
|
1597
|
-
if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption()) {
|
1598
|
-
this.focusedOptionIndex.set(this.findFirstFocusedOptionIndex());
|
1599
|
-
const value = this.getOptionValue(this.visibleOptions()[this.focusedOptionIndex()]);
|
1600
|
-
this.onOptionSelect({ originalEvent: null, option: [value] });
|
1601
|
-
}
|
1602
|
-
}
|
1603
|
-
/**
|
1604
|
-
* Updates the model value.
|
1605
|
-
* @group Method
|
1606
|
-
*/
|
1607
|
-
updateModel(value, event) {
|
1608
|
-
this.value = value;
|
1609
|
-
this.onModelChange(value);
|
1610
|
-
this.modelValue.set(value);
|
1611
|
-
}
|
1612
|
-
onInputClick(event) {
|
1613
|
-
event.stopPropagation();
|
1614
|
-
event.preventDefault();
|
1615
|
-
this.focusedOptionIndex.set(-1);
|
1616
|
-
}
|
1617
|
-
onOptionSelect(event, isFocus = false, index = -1) {
|
1618
|
-
const { originalEvent, option } = event;
|
1619
|
-
if (this.disabled || this.isOptionDisabled(option)) {
|
1620
|
-
return;
|
1621
|
-
}
|
1622
|
-
let selected = this.isSelected(option);
|
1623
|
-
let value = null;
|
1624
|
-
if (selected) {
|
1625
|
-
value = this.modelValue().filter((val) => !equals(val, this.getOptionValue(option), this.equalityKey()));
|
1626
|
-
}
|
1627
|
-
else {
|
1628
|
-
value = [...(this.modelValue() || []), this.getOptionValue(option)];
|
1629
|
-
}
|
1630
|
-
this.updateModel(value, originalEvent);
|
1631
|
-
index !== -1 && this.focusedOptionIndex.set(index);
|
1632
|
-
isFocus && focus(this.focusInputViewChild?.nativeElement);
|
1633
|
-
this.onChange.emit({
|
1634
|
-
originalEvent: event,
|
1635
|
-
value: value,
|
1636
|
-
itemValue: option
|
1637
|
-
});
|
1638
|
-
}
|
1639
|
-
findSelectedOptionIndex() {
|
1640
|
-
return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;
|
1641
|
-
}
|
1642
|
-
onOptionSelectRange(event, start = -1, end = -1) {
|
1643
|
-
start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));
|
1644
|
-
end === -1 && (end = this.findNearestSelectedOptionIndex(start));
|
1645
|
-
if (start !== -1 && end !== -1) {
|
1646
|
-
const rangeStart = Math.min(start, end);
|
1647
|
-
const rangeEnd = Math.max(start, end);
|
1648
|
-
const value = this.visibleOptions()
|
1649
|
-
.slice(rangeStart, rangeEnd + 1)
|
1650
|
-
.filter((option) => this.isValidOption(option))
|
1651
|
-
.map((option) => this.getOptionValue(option));
|
1652
|
-
this.updateModel(value, event);
|
1653
|
-
}
|
1654
|
-
}
|
1655
|
-
searchFields() {
|
1656
|
-
return (this.filterBy || this.optionLabel || 'label').split(',');
|
1657
|
-
}
|
1658
|
-
findNearestSelectedOptionIndex(index, firstCheckUp = false) {
|
1659
|
-
let matchedOptionIndex = -1;
|
1660
|
-
if (this.hasSelectedOption()) {
|
1661
|
-
if (firstCheckUp) {
|
1662
|
-
matchedOptionIndex = this.findPrevSelectedOptionIndex(index);
|
1663
|
-
matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;
|
1664
|
-
}
|
1665
|
-
else {
|
1666
|
-
matchedOptionIndex = this.findNextSelectedOptionIndex(index);
|
1667
|
-
matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;
|
1668
|
-
}
|
1669
|
-
}
|
1670
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
1671
|
-
}
|
1672
|
-
findPrevSelectedOptionIndex(index) {
|
1673
|
-
const matchedOptionIndex = this.hasSelectedOption() && index > 0 ? findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;
|
1674
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex : -1;
|
1675
|
-
}
|
1676
|
-
findFirstFocusedOptionIndex() {
|
1677
|
-
const selectedIndex = this.findFirstSelectedOptionIndex();
|
1678
|
-
return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;
|
1679
|
-
}
|
1680
|
-
findFirstOptionIndex() {
|
1681
|
-
return this.visibleOptions().findIndex((option) => this.isValidOption(option));
|
1682
|
-
}
|
1683
|
-
findFirstSelectedOptionIndex() {
|
1684
|
-
return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;
|
1685
|
-
}
|
1686
|
-
findNextSelectedOptionIndex(index) {
|
1687
|
-
const matchedOptionIndex = this.hasSelectedOption() && index < this.visibleOptions().length - 1
|
1688
|
-
? this.visibleOptions()
|
1689
|
-
.slice(index + 1)
|
1690
|
-
.findIndex((option) => this.isValidSelectedOption(option))
|
1691
|
-
: -1;
|
1692
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;
|
1693
|
-
}
|
1694
|
-
equalityKey() {
|
1695
|
-
return this.optionValue ? null : this.dataKey;
|
1696
|
-
}
|
1697
|
-
hasSelectedOption() {
|
1698
|
-
return isNotEmpty(this.modelValue());
|
1699
|
-
}
|
1700
|
-
isValidSelectedOption(option) {
|
1701
|
-
return this.isValidOption(option) && this.isSelected(option);
|
1702
|
-
}
|
1703
|
-
isOptionGroup(option) {
|
1704
|
-
return (this.group || this.optionGroupLabel) && option.optionGroup && option.group;
|
1705
|
-
}
|
1706
|
-
isValidOption(option) {
|
1707
|
-
return option && !(this.isOptionDisabled(option) || this.isOptionGroup(option));
|
1708
|
-
}
|
1709
|
-
isOptionDisabled(option) {
|
1710
|
-
if (this.maxSelectionLimitReached() && !this.isSelected(option)) {
|
1711
|
-
return true;
|
1712
|
-
}
|
1713
|
-
return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : option && option.disabled !== undefined ? option.disabled : false;
|
1714
|
-
}
|
1715
|
-
isSelected(option) {
|
1716
|
-
const optionValue = this.getOptionValue(option);
|
1717
|
-
return (this.modelValue() || []).some((value) => equals(value, optionValue, this.equalityKey()));
|
1718
|
-
}
|
1719
|
-
isOptionMatched(option) {
|
1720
|
-
return this.isValidOption(option) && this.getOptionLabel(option).toString().toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));
|
1721
|
-
}
|
1722
|
-
isEmpty() {
|
1723
|
-
return !this._options() || (this.visibleOptions() && this.visibleOptions().length === 0);
|
1724
|
-
}
|
1725
|
-
getOptionIndex(index, scrollerOptions) {
|
1726
|
-
return this.virtualScrollerDisabled ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];
|
1727
|
-
}
|
1728
|
-
getAriaPosInset(index) {
|
1729
|
-
return ((this.optionGroupLabel
|
1730
|
-
? index -
|
1731
|
-
this.visibleOptions()
|
1732
|
-
.slice(0, index)
|
1733
|
-
.filter((option) => this.isOptionGroup(option)).length
|
1734
|
-
: index) + 1);
|
1735
|
-
}
|
1736
|
-
get ariaSetSize() {
|
1737
|
-
return this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length;
|
1738
|
-
}
|
1739
|
-
getLabelByValue(value) {
|
1740
|
-
const options = this.group ? this.flatOptions(this._options()) : this._options() || [];
|
1741
|
-
const matchedOption = options.find((option) => !this.isOptionGroup(option) && equals(this.getOptionValue(option), value, this.equalityKey()));
|
1742
|
-
return matchedOption ? this.getOptionLabel(matchedOption) : null;
|
1743
|
-
}
|
1744
|
-
getSelectedItemsLabel() {
|
1745
|
-
let pattern = /{(.*?)}/;
|
1746
|
-
let message = this.selectedItemsLabel ? this.selectedItemsLabel : this.config.getTranslation(TranslationKeys.SELECTION_MESSAGE);
|
1747
|
-
if (pattern.test(message)) {
|
1748
|
-
return message.replace(message.match(pattern)[0], this.modelValue().length + '');
|
1749
|
-
}
|
1750
|
-
return message;
|
1751
|
-
}
|
1752
|
-
getOptionLabel(option) {
|
1753
|
-
return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option && option.label != undefined ? option.label : option;
|
1754
|
-
}
|
1755
|
-
getOptionValue(option) {
|
1756
|
-
return this.optionValue ? resolveFieldData(option, this.optionValue) : !this.optionLabel && option && option.value !== undefined ? option.value : option;
|
1757
|
-
}
|
1758
|
-
getOptionGroupLabel(optionGroup) {
|
1759
|
-
return this.optionGroupLabel ? resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label != undefined ? optionGroup.label : optionGroup;
|
1760
|
-
}
|
1761
|
-
getOptionGroupChildren(optionGroup) {
|
1762
|
-
return this.optionGroupChildren ? resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
|
1763
|
-
}
|
1764
|
-
onKeyDown(event) {
|
1765
|
-
if (this.disabled) {
|
1766
|
-
event.preventDefault();
|
1767
|
-
return;
|
1768
|
-
}
|
1769
|
-
const metaKey = event.metaKey || event.ctrlKey;
|
1770
|
-
switch (event.code) {
|
1771
|
-
case 'ArrowDown':
|
1772
|
-
this.onArrowDownKey(event);
|
1773
|
-
break;
|
1774
|
-
case 'ArrowUp':
|
1775
|
-
this.onArrowUpKey(event);
|
1776
|
-
break;
|
1777
|
-
case 'Home':
|
1778
|
-
this.onHomeKey(event);
|
1779
|
-
break;
|
1780
|
-
case 'End':
|
1781
|
-
this.onEndKey(event);
|
1782
|
-
break;
|
1783
|
-
case 'PageDown':
|
1784
|
-
this.onPageDownKey(event);
|
1785
|
-
break;
|
1786
|
-
case 'PageUp':
|
1787
|
-
this.onPageUpKey(event);
|
1788
|
-
break;
|
1789
|
-
case 'Enter':
|
1790
|
-
case 'Space':
|
1791
|
-
this.onEnterKey(event);
|
1792
|
-
break;
|
1793
|
-
case 'Escape':
|
1794
|
-
this.onEscapeKey(event);
|
1795
|
-
break;
|
1796
|
-
case 'Tab':
|
1797
|
-
this.onTabKey(event);
|
1798
|
-
break;
|
1799
|
-
case 'ShiftLeft':
|
1800
|
-
case 'ShiftRight':
|
1801
|
-
this.onShiftKey();
|
1802
|
-
break;
|
1803
|
-
default:
|
1804
|
-
if (event.code === 'KeyA' && metaKey) {
|
1805
|
-
const value = this.visibleOptions()
|
1806
|
-
.filter((option) => this.isValidOption(option))
|
1807
|
-
.map((option) => this.getOptionValue(option));
|
1808
|
-
this.updateModel(value, event);
|
1809
|
-
event.preventDefault();
|
1810
|
-
break;
|
1811
|
-
}
|
1812
|
-
if (!metaKey && isPrintableCharacter(event.key)) {
|
1813
|
-
!this.overlayVisible && this.show();
|
1814
|
-
this.searchOptions(event, event.key);
|
1815
|
-
event.preventDefault();
|
1816
|
-
}
|
1817
|
-
break;
|
1818
|
-
}
|
1819
|
-
}
|
1820
|
-
onFilterKeyDown(event) {
|
1821
|
-
switch (event.code) {
|
1822
|
-
case 'ArrowDown':
|
1823
|
-
this.onArrowDownKey(event);
|
1824
|
-
break;
|
1825
|
-
case 'ArrowUp':
|
1826
|
-
this.onArrowUpKey(event, true);
|
1827
|
-
break;
|
1828
|
-
case 'ArrowLeft':
|
1829
|
-
case 'ArrowRight':
|
1830
|
-
this.onArrowLeftKey(event, true);
|
1831
|
-
break;
|
1832
|
-
case 'Home':
|
1833
|
-
this.onHomeKey(event, true);
|
1834
|
-
break;
|
1835
|
-
case 'End':
|
1836
|
-
this.onEndKey(event, true);
|
1837
|
-
break;
|
1838
|
-
case 'Enter':
|
1839
|
-
case 'NumpadEnter':
|
1840
|
-
this.onEnterKey(event);
|
1841
|
-
break;
|
1842
|
-
case 'Escape':
|
1843
|
-
this.onEscapeKey(event);
|
1844
|
-
break;
|
1845
|
-
case 'Tab':
|
1846
|
-
this.onTabKey(event, true);
|
1847
|
-
break;
|
1848
|
-
default:
|
1849
|
-
break;
|
1850
|
-
}
|
1851
|
-
}
|
1852
|
-
onArrowLeftKey(event, pressedInInputText = false) {
|
1853
|
-
pressedInInputText && this.focusedOptionIndex.set(-1);
|
1854
|
-
}
|
1855
|
-
onArrowDownKey(event) {
|
1856
|
-
const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();
|
1857
|
-
if (event.shiftKey) {
|
1858
|
-
this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);
|
1859
|
-
}
|
1860
|
-
this.changeFocusedOptionIndex(event, optionIndex);
|
1861
|
-
!this.overlayVisible && this.show();
|
1862
|
-
event.preventDefault();
|
1863
|
-
event.stopPropagation();
|
1864
|
-
}
|
1865
|
-
onArrowUpKey(event, pressedInInputText = false) {
|
1866
|
-
if (event.altKey && !pressedInInputText) {
|
1867
|
-
if (this.focusedOptionIndex() !== -1) {
|
1868
|
-
this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);
|
1869
|
-
}
|
1870
|
-
this.overlayVisible && this.hide();
|
1871
|
-
event.preventDefault();
|
1872
|
-
}
|
1873
|
-
else {
|
1874
|
-
const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.findLastFocusedOptionIndex();
|
1875
|
-
if (event.shiftKey) {
|
1876
|
-
this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());
|
1877
|
-
}
|
1878
|
-
this.changeFocusedOptionIndex(event, optionIndex);
|
1879
|
-
!this.overlayVisible && this.show();
|
1880
|
-
event.preventDefault();
|
1881
|
-
}
|
1882
|
-
event.stopPropagation();
|
1883
|
-
}
|
1884
|
-
onHomeKey(event, pressedInInputText = false) {
|
1885
|
-
const { currentTarget } = event;
|
1886
|
-
if (pressedInInputText) {
|
1887
|
-
const len = currentTarget.value.length;
|
1888
|
-
currentTarget.setSelectionRange(0, event.shiftKey ? len : 0);
|
1889
|
-
this.focusedOptionIndex.set(-1);
|
1890
|
-
}
|
1891
|
-
else {
|
1892
|
-
let metaKey = event.metaKey || event.ctrlKey;
|
1893
|
-
let optionIndex = this.findFirstOptionIndex();
|
1894
|
-
if (event.shiftKey && metaKey) {
|
1895
|
-
this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());
|
1896
|
-
}
|
1897
|
-
this.changeFocusedOptionIndex(event, optionIndex);
|
1898
|
-
!this.overlayVisible && this.show();
|
1899
|
-
}
|
1900
|
-
event.preventDefault();
|
1901
|
-
}
|
1902
|
-
onEndKey(event, pressedInInputText = false) {
|
1903
|
-
const { currentTarget } = event;
|
1904
|
-
if (pressedInInputText) {
|
1905
|
-
const len = currentTarget.value.length;
|
1906
|
-
currentTarget.setSelectionRange(event.shiftKey ? 0 : len, len);
|
1907
|
-
this.focusedOptionIndex.set(-1);
|
1908
|
-
}
|
1909
|
-
else {
|
1910
|
-
let metaKey = event.metaKey || event.ctrlKey;
|
1911
|
-
let optionIndex = this.findLastFocusedOptionIndex();
|
1912
|
-
if (event.shiftKey && metaKey) {
|
1913
|
-
this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);
|
1914
|
-
}
|
1915
|
-
this.changeFocusedOptionIndex(event, optionIndex);
|
1916
|
-
!this.overlayVisible && this.show();
|
1917
|
-
}
|
1918
|
-
event.preventDefault();
|
1919
|
-
}
|
1920
|
-
onPageDownKey(event) {
|
1921
|
-
this.scrollInView(this.visibleOptions().length - 1);
|
1922
|
-
event.preventDefault();
|
1923
|
-
}
|
1924
|
-
onPageUpKey(event) {
|
1925
|
-
this.scrollInView(0);
|
1926
|
-
event.preventDefault();
|
1927
|
-
}
|
1928
|
-
onEnterKey(event) {
|
1929
|
-
if (!this.overlayVisible) {
|
1930
|
-
this.onArrowDownKey(event);
|
1931
|
-
}
|
1932
|
-
else {
|
1933
|
-
if (this.focusedOptionIndex() !== -1) {
|
1934
|
-
if (event.shiftKey) {
|
1935
|
-
this.onOptionSelectRange(event, this.focusedOptionIndex());
|
1936
|
-
}
|
1937
|
-
else {
|
1938
|
-
this.onOptionSelect({ originalEvent: event, option: this.visibleOptions()[this.focusedOptionIndex()] });
|
1939
|
-
}
|
1940
|
-
}
|
1941
|
-
}
|
1942
|
-
event.preventDefault();
|
1943
|
-
}
|
1944
|
-
onEscapeKey(event) {
|
1945
|
-
this.overlayVisible && this.hide(true);
|
1946
|
-
event.preventDefault();
|
1947
|
-
}
|
1948
|
-
onDeleteKey(event) {
|
1949
|
-
if (this.showClear) {
|
1950
|
-
this.clear(event);
|
1951
|
-
event.preventDefault();
|
1952
|
-
}
|
1953
|
-
}
|
1954
|
-
onTabKey(event, pressedInInputText = false) {
|
1955
|
-
if (!pressedInInputText) {
|
1956
|
-
if (this.overlayVisible && this.hasFocusableElements()) {
|
1957
|
-
focus(event.shiftKey ? this.lastHiddenFocusableElementOnOverlay.nativeElement : this.firstHiddenFocusableElementOnOverlay.nativeElement);
|
1958
|
-
event.preventDefault();
|
1959
|
-
}
|
1960
|
-
else {
|
1961
|
-
if (this.focusedOptionIndex() !== -1) {
|
1962
|
-
this.onOptionSelect({ originalEvent: event, option: this.visibleOptions()[this.focusedOptionIndex()] });
|
1963
|
-
}
|
1964
|
-
this.overlayVisible && this.hide(this.filter);
|
1965
|
-
}
|
1966
|
-
}
|
1967
|
-
}
|
1968
|
-
onShiftKey() {
|
1969
|
-
this.startRangeIndex.set(this.focusedOptionIndex());
|
1970
|
-
}
|
1971
|
-
onContainerClick(event) {
|
1972
|
-
if (this.disabled || this.loading || this.readonly || event.target.isSameNode(this.focusInputViewChild?.nativeElement)) {
|
1973
|
-
return;
|
1974
|
-
}
|
1975
|
-
if (!this.overlayViewChild || !this.overlayViewChild.el.nativeElement.contains(event.target)) {
|
1976
|
-
if (this.clickInProgress) {
|
1977
|
-
return;
|
1978
|
-
}
|
1979
|
-
this.clickInProgress = true;
|
1980
|
-
setTimeout(() => {
|
1981
|
-
this.clickInProgress = false;
|
1982
|
-
}, 150);
|
1983
|
-
this.overlayVisible ? this.hide(true) : this.show(true);
|
1984
|
-
}
|
1985
|
-
this.focusInputViewChild?.nativeElement.focus({ preventScroll: true });
|
1986
|
-
this.onClick.emit(event);
|
1987
|
-
this.cd.detectChanges();
|
1988
|
-
}
|
1989
|
-
onFirstHiddenFocus(event) {
|
1990
|
-
const focusableEl = event.relatedTarget === this.focusInputViewChild?.nativeElement ? getFirstFocusableElement(this.overlayViewChild?.overlayViewChild?.nativeElement, ':not([data-p-hidden-focusable="true"])') : this.focusInputViewChild?.nativeElement;
|
1991
|
-
focus(focusableEl);
|
1992
|
-
}
|
1993
|
-
onInputFocus(event) {
|
1994
|
-
this.focused = true;
|
1995
|
-
const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;
|
1996
|
-
this.focusedOptionIndex.set(focusedOptionIndex);
|
1997
|
-
this.overlayVisible && this.scrollInView(this.focusedOptionIndex());
|
1998
|
-
this.onFocus.emit({ originalEvent: event });
|
1999
|
-
}
|
2000
|
-
onInputBlur(event) {
|
2001
|
-
this.focused = false;
|
2002
|
-
this.onBlur.emit({ originalEvent: event });
|
2003
|
-
if (!this.preventModelTouched) {
|
2004
|
-
this.onModelTouched();
|
2005
|
-
}
|
2006
|
-
this.preventModelTouched = false;
|
2007
|
-
}
|
2008
|
-
onFilterInputChange(event) {
|
2009
|
-
let value = event.target.value;
|
2010
|
-
this._filterValue.set(value);
|
2011
|
-
this.focusedOptionIndex.set(-1);
|
2012
|
-
this.onFilter.emit({ originalEvent: event, filter: this._filterValue() });
|
2013
|
-
!this.virtualScrollerDisabled && this.scroller.scrollToIndex(0);
|
2014
|
-
setTimeout(() => {
|
2015
|
-
this.overlayViewChild.alignOverlay();
|
2016
|
-
});
|
2017
|
-
}
|
2018
|
-
onLastHiddenFocus(event) {
|
2019
|
-
const focusableEl = event.relatedTarget === this.focusInputViewChild?.nativeElement ? getLastFocusableElement(this.overlayViewChild?.overlayViewChild?.nativeElement, ':not([data-p-hidden-focusable="true"])') : this.focusInputViewChild?.nativeElement;
|
2020
|
-
focus(focusableEl);
|
2021
|
-
}
|
2022
|
-
onOptionMouseEnter(event, index) {
|
2023
|
-
if (this.focusOnHover) {
|
2024
|
-
this.changeFocusedOptionIndex(event, index);
|
2025
|
-
}
|
2026
|
-
}
|
2027
|
-
onHeaderCheckboxKeyDown(event) {
|
2028
|
-
if (this.disabled) {
|
2029
|
-
event.preventDefault();
|
2030
|
-
return;
|
2031
|
-
}
|
2032
|
-
switch (event.code) {
|
2033
|
-
case 'Space':
|
2034
|
-
this.onToggleAll(event);
|
2035
|
-
break;
|
2036
|
-
case 'Enter':
|
2037
|
-
this.onToggleAll(event);
|
2038
|
-
break;
|
2039
|
-
default:
|
2040
|
-
break;
|
2041
|
-
}
|
2042
|
-
}
|
2043
|
-
onFilterBlur(event) {
|
2044
|
-
this.focusedOptionIndex.set(-1);
|
2045
|
-
}
|
2046
|
-
onHeaderCheckboxFocus() {
|
2047
|
-
this.headerCheckboxFocus = true;
|
2048
|
-
}
|
2049
|
-
onHeaderCheckboxBlur() {
|
2050
|
-
this.headerCheckboxFocus = false;
|
2051
|
-
}
|
2052
|
-
onToggleAll(event) {
|
2053
|
-
if (this.disabled || this.readonly) {
|
2054
|
-
return;
|
2055
|
-
}
|
2056
|
-
if (this.selectAll != null) {
|
2057
|
-
this.onSelectAllChange.emit({
|
2058
|
-
originalEvent: event,
|
2059
|
-
checked: !this.allSelected()
|
2060
|
-
});
|
2061
|
-
}
|
2062
|
-
else {
|
2063
|
-
// pre-selected disabled options should always be selected.
|
2064
|
-
const selectedDisabledOptions = this.getAllVisibleAndNonVisibleOptions().filter((option) => this.isSelected(option) && (this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : option && option.disabled !== undefined ? option.disabled : false));
|
2065
|
-
const visibleOptions = this.allSelected()
|
2066
|
-
? this.visibleOptions().filter((option) => !this.isValidOption(option) && this.isSelected(option))
|
2067
|
-
: this.visibleOptions().filter((option) => this.isSelected(option) || this.isValidOption(option));
|
2068
|
-
const optionValues = [...selectedDisabledOptions, ...visibleOptions].map((option) => this.getOptionValue(option));
|
2069
|
-
const value = [...new Set(optionValues)];
|
2070
|
-
this.updateModel(value, event);
|
2071
|
-
// because onToggleAll could have been called during filtering, this additional test needs to be performed before calling onSelectAllChange.emit
|
2072
|
-
if (!value.length || value.length === this.getAllVisibleAndNonVisibleOptions().length) {
|
2073
|
-
this.onSelectAllChange.emit({
|
2074
|
-
originalEvent: event,
|
2075
|
-
checked: !!value.length
|
2076
|
-
});
|
2077
|
-
}
|
2078
|
-
}
|
2079
|
-
if (this.partialSelected()) {
|
2080
|
-
this.selectedOptions = null;
|
2081
|
-
this.cd.markForCheck();
|
2082
|
-
}
|
2083
|
-
this.onChange.emit({ originalEvent: event, value: this.value });
|
2084
|
-
DomHandler.focus(this.headerCheckboxViewChild?.inputViewChild?.nativeElement);
|
2085
|
-
this.headerCheckboxFocus = true;
|
2086
|
-
event.originalEvent.preventDefault();
|
2087
|
-
event.originalEvent.stopPropagation();
|
2088
|
-
}
|
2089
|
-
changeFocusedOptionIndex(event, index) {
|
2090
|
-
if (this.focusedOptionIndex() !== index) {
|
2091
|
-
this.focusedOptionIndex.set(index);
|
2092
|
-
this.scrollInView();
|
2093
|
-
}
|
2094
|
-
}
|
2095
|
-
get virtualScrollerDisabled() {
|
2096
|
-
return !this.virtualScroll;
|
2097
|
-
}
|
2098
|
-
scrollInView(index = -1) {
|
2099
|
-
const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;
|
2100
|
-
if (this.itemsViewChild && this.itemsViewChild.nativeElement) {
|
2101
|
-
const element = findSingle(this.itemsViewChild.nativeElement, `li[id="${id}"]`);
|
2102
|
-
if (element) {
|
2103
|
-
element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });
|
2104
|
-
}
|
2105
|
-
else if (!this.virtualScrollerDisabled) {
|
2106
|
-
setTimeout(() => {
|
2107
|
-
this.virtualScroll && this.scroller?.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());
|
2108
|
-
}, 0);
|
2109
|
-
}
|
2110
|
-
}
|
2111
|
-
}
|
2112
|
-
get focusedOptionId() {
|
2113
|
-
return this.focusedOptionIndex() !== -1 ? `${this.id}_${this.focusedOptionIndex()}` : null;
|
2114
|
-
}
|
2115
|
-
writeValue(value) {
|
2116
|
-
this.value = value;
|
2117
|
-
this.modelValue.set(this.value);
|
2118
|
-
this.cd.markForCheck();
|
2119
|
-
}
|
2120
|
-
registerOnChange(fn) {
|
2121
|
-
this.onModelChange = fn;
|
2122
|
-
}
|
2123
|
-
registerOnTouched(fn) {
|
2124
|
-
this.onModelTouched = fn;
|
2125
|
-
}
|
2126
|
-
setDisabledState(val) {
|
2127
|
-
this.disabled = val;
|
2128
|
-
this.cd.markForCheck();
|
2129
|
-
}
|
2130
|
-
allSelected() {
|
2131
|
-
return this.selectAll !== null ? this.selectAll : isNotEmpty(this.visibleOptions()) && this.visibleOptions().every((option) => this.isOptionGroup(option) || this.isOptionDisabled(option) || this.isSelected(option));
|
2132
|
-
}
|
2133
|
-
partialSelected() {
|
2134
|
-
return this.selectedOptions && this.selectedOptions.length > 0 && this.selectedOptions.length < this.options.length;
|
2135
|
-
}
|
2136
|
-
/**
|
2137
|
-
* Displays the panel.
|
2138
|
-
* @group Method
|
2139
|
-
*/
|
2140
|
-
show(isFocus) {
|
2141
|
-
this.overlayVisible = true;
|
2142
|
-
const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex();
|
2143
|
-
this.focusedOptionIndex.set(focusedOptionIndex);
|
2144
|
-
if (isFocus) {
|
2145
|
-
focus(this.focusInputViewChild?.nativeElement);
|
2146
|
-
}
|
2147
|
-
this.cd.markForCheck();
|
2148
|
-
}
|
2149
|
-
/**
|
2150
|
-
* Hides the panel.
|
2151
|
-
* @group Method
|
2152
|
-
*/
|
2153
|
-
hide(isFocus) {
|
2154
|
-
this.overlayVisible = false;
|
2155
|
-
this.focusedOptionIndex.set(-1);
|
2156
|
-
if (this.filter && this.resetFilterOnHide) {
|
2157
|
-
this.resetFilter();
|
2158
|
-
}
|
2159
|
-
if (this.overlayOptions?.mode === 'modal') {
|
2160
|
-
unblockBodyScroll();
|
2161
|
-
}
|
2162
|
-
isFocus && focus(this.focusInputViewChild?.nativeElement);
|
2163
|
-
this.onPanelHide.emit();
|
2164
|
-
this.cd.markForCheck();
|
2165
|
-
}
|
2166
|
-
onOverlayAnimationStart(event) {
|
2167
|
-
switch (event.toState) {
|
2168
|
-
case 'visible':
|
2169
|
-
this.itemsWrapper = findSingle(this.overlayViewChild?.overlayViewChild?.nativeElement, this.virtualScroll ? '.p-scroller' : '.p-multiselect-items-wrapper');
|
2170
|
-
this.virtualScroll && this.scroller?.setContentEl(this.itemsViewChild?.nativeElement);
|
2171
|
-
if (this._options() && this._options().length) {
|
2172
|
-
if (this.virtualScroll) {
|
2173
|
-
const selectedIndex = isNotEmpty(this.modelValue()) ? this.focusedOptionIndex() : -1;
|
2174
|
-
if (selectedIndex !== -1) {
|
2175
|
-
this.scroller?.scrollToIndex(selectedIndex);
|
2176
|
-
}
|
2177
|
-
}
|
2178
|
-
else {
|
2179
|
-
let selectedListItem = findSingle(this.itemsWrapper, '[data-p-highlight="true"]');
|
2180
|
-
if (selectedListItem) {
|
2181
|
-
selectedListItem.scrollIntoView({ block: 'nearest', inline: 'nearest' });
|
2182
|
-
}
|
2183
|
-
}
|
2184
|
-
}
|
2185
|
-
if (this.filterInputChild && this.filterInputChild.nativeElement) {
|
2186
|
-
this.preventModelTouched = true;
|
2187
|
-
if (this.autofocusFilter) {
|
2188
|
-
this.filterInputChild.nativeElement.focus();
|
2189
|
-
}
|
2190
|
-
}
|
2191
|
-
this.onPanelShow.emit();
|
2192
|
-
case 'void':
|
2193
|
-
this.itemsWrapper = null;
|
2194
|
-
this.onModelTouched();
|
2195
|
-
break;
|
2196
|
-
}
|
2197
|
-
}
|
2198
|
-
resetFilter() {
|
2199
|
-
if (this.filterInputChild && this.filterInputChild.nativeElement) {
|
2200
|
-
this.filterInputChild.nativeElement.value = '';
|
2201
|
-
}
|
2202
|
-
this._filterValue.set(null);
|
2203
|
-
this._filteredOptions = null;
|
2204
|
-
}
|
2205
|
-
close(event) {
|
2206
|
-
this.hide();
|
2207
|
-
event.preventDefault();
|
2208
|
-
event.stopPropagation();
|
2209
|
-
}
|
2210
|
-
clear(event) {
|
2211
|
-
this.value = null;
|
2212
|
-
this.updateModel(null, event);
|
2213
|
-
this.selectedOptions = null;
|
2214
|
-
this.onClear.emit();
|
2215
|
-
this._disableTooltip = true;
|
2216
|
-
event.stopPropagation();
|
2217
|
-
}
|
2218
|
-
labelContainerMouseLeave() {
|
2219
|
-
if (this._disableTooltip)
|
2220
|
-
this._disableTooltip = false;
|
2221
|
-
}
|
2222
|
-
removeOption(optionValue, event) {
|
2223
|
-
let value = this.modelValue().filter((val) => !equals(val, optionValue, this.equalityKey()));
|
2224
|
-
this.updateModel(value, event);
|
2225
|
-
this.onChange.emit({
|
2226
|
-
originalEvent: event,
|
2227
|
-
value: value,
|
2228
|
-
itemValue: optionValue
|
2229
|
-
});
|
2230
|
-
this.onRemove.emit({
|
2231
|
-
newValue: value,
|
2232
|
-
removed: optionValue
|
2233
|
-
});
|
2234
|
-
event && event.stopPropagation();
|
2235
|
-
}
|
2236
|
-
findNextItem(item) {
|
2237
|
-
let nextItem = item.nextElementSibling;
|
2238
|
-
if (nextItem)
|
2239
|
-
return hasClass(nextItem.children[0], 'p-disabled') || isHidden(nextItem.children[0]) || hasClass(nextItem, 'p-multiselect-item-group') ? this.findNextItem(nextItem) : nextItem.children[0];
|
2240
|
-
else
|
2241
|
-
return null;
|
2242
|
-
}
|
2243
|
-
findPrevItem(item) {
|
2244
|
-
let prevItem = item.previousElementSibling;
|
2245
|
-
if (prevItem)
|
2246
|
-
return hasClass(prevItem.children[0], 'p-disabled') || isHidden(prevItem.children[0]) || hasClass(prevItem, 'p-multiselect-item-group') ? this.findPrevItem(prevItem) : prevItem.children[0];
|
2247
|
-
else
|
2248
|
-
return null;
|
2249
|
-
}
|
2250
|
-
findNextOptionIndex(index) {
|
2251
|
-
const matchedOptionIndex = index < this.visibleOptions().length - 1
|
2252
|
-
? this.visibleOptions()
|
2253
|
-
.slice(index + 1)
|
2254
|
-
.findIndex((option) => this.isValidOption(option))
|
2255
|
-
: -1;
|
2256
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
2257
|
-
}
|
2258
|
-
findPrevOptionIndex(index) {
|
2259
|
-
const matchedOptionIndex = index > 0 ? findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidOption(option)) : -1;
|
2260
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
2261
|
-
}
|
2262
|
-
findLastSelectedOptionIndex() {
|
2263
|
-
return this.hasSelectedOption() ? findLastIndex(this.visibleOptions(), (option) => this.isValidSelectedOption(option)) : -1;
|
2264
|
-
}
|
2265
|
-
findLastFocusedOptionIndex() {
|
2266
|
-
const selectedIndex = this.findLastSelectedOptionIndex();
|
2267
|
-
return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;
|
2268
|
-
}
|
2269
|
-
findLastOptionIndex() {
|
2270
|
-
return findLastIndex(this.visibleOptions(), (option) => this.isValidOption(option));
|
2271
|
-
}
|
2272
|
-
searchOptions(event, char) {
|
2273
|
-
this.searchValue = (this.searchValue || '') + char;
|
2274
|
-
let optionIndex = -1;
|
2275
|
-
let matched = false;
|
2276
|
-
if (this.focusedOptionIndex() !== -1) {
|
2277
|
-
optionIndex = this.visibleOptions()
|
2278
|
-
.slice(this.focusedOptionIndex())
|
2279
|
-
.findIndex((option) => this.isOptionMatched(option));
|
2280
|
-
optionIndex =
|
2281
|
-
optionIndex === -1
|
2282
|
-
? this.visibleOptions()
|
2283
|
-
.slice(0, this.focusedOptionIndex())
|
2284
|
-
.findIndex((option) => this.isOptionMatched(option))
|
2285
|
-
: optionIndex + this.focusedOptionIndex();
|
2286
|
-
}
|
2287
|
-
else {
|
2288
|
-
optionIndex = this.visibleOptions().findIndex((option) => this.isOptionMatched(option));
|
2289
|
-
}
|
2290
|
-
if (optionIndex !== -1) {
|
2291
|
-
matched = true;
|
2292
|
-
}
|
2293
|
-
if (optionIndex === -1 && this.focusedOptionIndex() === -1) {
|
2294
|
-
optionIndex = this.findFirstFocusedOptionIndex();
|
2295
|
-
}
|
2296
|
-
if (optionIndex !== -1) {
|
2297
|
-
this.changeFocusedOptionIndex(event, optionIndex);
|
2298
|
-
}
|
2299
|
-
if (this.searchTimeout) {
|
2300
|
-
clearTimeout(this.searchTimeout);
|
2301
|
-
}
|
2302
|
-
this.searchTimeout = setTimeout(() => {
|
2303
|
-
this.searchValue = '';
|
2304
|
-
this.searchTimeout = null;
|
2305
|
-
}, 500);
|
2306
|
-
return matched;
|
2307
|
-
}
|
2308
|
-
activateFilter() {
|
2309
|
-
if (this.hasFilter() && this._options) {
|
2310
|
-
if (this.group) {
|
2311
|
-
let filteredGroups = [];
|
2312
|
-
for (let optgroup of this.options) {
|
2313
|
-
let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), this.searchFields(), this.filterValue, this.filterMatchMode, this.filterLocale);
|
2314
|
-
if (filteredSubOptions && filteredSubOptions.length) {
|
2315
|
-
filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });
|
2316
|
-
}
|
2317
|
-
}
|
2318
|
-
this._filteredOptions = filteredGroups;
|
2319
|
-
}
|
2320
|
-
else {
|
2321
|
-
this._filteredOptions = this.filterService.filter(this.options, this.searchFields(), this.filterValue, this.filterMatchMode, this.filterLocale);
|
2322
|
-
}
|
2323
|
-
}
|
2324
|
-
else {
|
2325
|
-
this._filteredOptions = null;
|
2326
|
-
}
|
2327
|
-
}
|
2328
|
-
hasFocusableElements() {
|
2329
|
-
return getFocusableElements(this.overlayViewChild.overlayViewChild.nativeElement, ':not([data-p-hidden-focusable="true"])').length > 0;
|
2330
|
-
}
|
2331
|
-
hasFilter() {
|
2332
|
-
return this._filterValue() && this._filterValue().trim().length > 0;
|
2333
|
-
}
|
2334
|
-
static ɵfac = function MultiSelect_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MultiSelect)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i3.FilterService), i0.ɵɵdirectiveInject(i3.OverlayService)); };
|
2335
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MultiSelect, selectors: [["p-multiSelect"], ["p-multiselect"], ["p-multi-select"]], contentQueries: function MultiSelect_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
2336
|
-
i0.ɵɵcontentQuery(dirIndex, Footer, 5);
|
2337
|
-
i0.ɵɵcontentQuery(dirIndex, Header, 5);
|
2338
|
-
i0.ɵɵcontentQuery(dirIndex, _c4, 4);
|
2339
|
-
i0.ɵɵcontentQuery(dirIndex, _c5, 4);
|
2340
|
-
i0.ɵɵcontentQuery(dirIndex, _c6, 4);
|
2341
|
-
i0.ɵɵcontentQuery(dirIndex, _c7, 4);
|
2342
|
-
i0.ɵɵcontentQuery(dirIndex, _c8, 4);
|
2343
|
-
i0.ɵɵcontentQuery(dirIndex, _c9, 4);
|
2344
|
-
i0.ɵɵcontentQuery(dirIndex, _c10, 4);
|
2345
|
-
i0.ɵɵcontentQuery(dirIndex, _c11, 4);
|
2346
|
-
i0.ɵɵcontentQuery(dirIndex, _c12, 4);
|
2347
|
-
i0.ɵɵcontentQuery(dirIndex, _c13, 4);
|
2348
|
-
i0.ɵɵcontentQuery(dirIndex, _c14, 4);
|
2349
|
-
i0.ɵɵcontentQuery(dirIndex, _c15, 4);
|
2350
|
-
i0.ɵɵcontentQuery(dirIndex, _c16, 4);
|
2351
|
-
i0.ɵɵcontentQuery(dirIndex, _c17, 4);
|
2352
|
-
i0.ɵɵcontentQuery(dirIndex, _c18, 4);
|
2353
|
-
i0.ɵɵcontentQuery(dirIndex, _c19, 4);
|
2354
|
-
i0.ɵɵcontentQuery(dirIndex, _c20, 4);
|
2355
|
-
i0.ɵɵcontentQuery(dirIndex, _c21, 4);
|
2356
|
-
i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);
|
2357
|
-
} if (rf & 2) {
|
2358
|
-
let _t;
|
2359
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerFacet = _t.first);
|
2360
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerFacet = _t.first);
|
2361
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);
|
2362
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);
|
2363
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loaderTemplate = _t.first);
|
2364
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);
|
2365
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterTemplate = _t.first);
|
2366
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);
|
2367
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyFilterTemplate = _t.first);
|
2368
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyTemplate = _t.first);
|
2369
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.selectedItemsTemplate = _t.first);
|
2370
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.checkIconTemplate = _t.first);
|
2371
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loadingIconTemplate = _t.first);
|
2372
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterIconTemplate = _t.first);
|
2373
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.removeTokenIconTemplate = _t.first);
|
2374
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.chipIconTemplate = _t.first);
|
2375
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.clearIconTemplate = _t.first);
|
2376
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdownIconTemplate = _t.first);
|
2377
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemCheckboxIconTemplate = _t.first);
|
2378
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerCheckboxIconTemplate = _t.first);
|
2379
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);
|
2380
|
-
} }, viewQuery: function MultiSelect_Query(rf, ctx) { if (rf & 1) {
|
2381
|
-
i0.ɵɵviewQuery(_c22, 5);
|
2382
|
-
i0.ɵɵviewQuery(_c23, 5);
|
2383
|
-
i0.ɵɵviewQuery(_c24, 5);
|
2384
|
-
i0.ɵɵviewQuery(_c25, 5);
|
2385
|
-
i0.ɵɵviewQuery(_c26, 5);
|
2386
|
-
i0.ɵɵviewQuery(_c27, 5);
|
2387
|
-
i0.ɵɵviewQuery(_c28, 5);
|
2388
|
-
i0.ɵɵviewQuery(_c29, 5);
|
2389
|
-
} if (rf & 2) {
|
2390
|
-
let _t;
|
2391
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.overlayViewChild = _t.first);
|
2392
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterInputChild = _t.first);
|
2393
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.focusInputViewChild = _t.first);
|
2394
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemsViewChild = _t.first);
|
2395
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.scroller = _t.first);
|
2396
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.lastHiddenFocusableElementOnOverlay = _t.first);
|
2397
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.firstHiddenFocusableElementOnOverlay = _t.first);
|
2398
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerCheckboxViewChild = _t.first);
|
2399
|
-
} }, hostVars: 5, hostBindings: function MultiSelect_HostBindings(rf, ctx) { if (rf & 1) {
|
2400
|
-
i0.ɵɵlistener("click", function MultiSelect_click_HostBindingHandler($event) { return ctx.onContainerClick($event); });
|
2401
|
-
} if (rf & 2) {
|
2402
|
-
i0.ɵɵattribute("id", ctx.id);
|
2403
|
-
i0.ɵɵstyleMap(ctx.style);
|
2404
|
-
i0.ɵɵclassMap(ctx.hostClasses);
|
2405
|
-
} }, inputs: { id: "id", ariaLabel: "ariaLabel", style: "style", styleClass: "styleClass", panelStyle: "panelStyle", panelStyleClass: "panelStyleClass", inputId: "inputId", disabled: [2, "disabled", "disabled", booleanAttribute], fluid: [2, "fluid", "fluid", booleanAttribute], readonly: [2, "readonly", "readonly", booleanAttribute], group: [2, "group", "group", booleanAttribute], filter: [2, "filter", "filter", booleanAttribute], filterPlaceHolder: "filterPlaceHolder", filterLocale: "filterLocale", overlayVisible: [2, "overlayVisible", "overlayVisible", booleanAttribute], tabindex: [2, "tabindex", "tabindex", numberAttribute], variant: "variant", appendTo: "appendTo", dataKey: "dataKey", name: "name", ariaLabelledBy: "ariaLabelledBy", displaySelectedLabel: "displaySelectedLabel", maxSelectedLabels: "maxSelectedLabels", selectionLimit: [2, "selectionLimit", "selectionLimit", numberAttribute], selectedItemsLabel: "selectedItemsLabel", showToggleAll: [2, "showToggleAll", "showToggleAll", booleanAttribute], emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", resetFilterOnHide: [2, "resetFilterOnHide", "resetFilterOnHide", booleanAttribute], dropdownIcon: "dropdownIcon", chipIcon: "chipIcon", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", showHeader: [2, "showHeader", "showHeader", booleanAttribute], filterBy: "filterBy", scrollHeight: "scrollHeight", lazy: [2, "lazy", "lazy", booleanAttribute], virtualScroll: [2, "virtualScroll", "virtualScroll", booleanAttribute], loading: [2, "loading", "loading", booleanAttribute], virtualScrollItemSize: [2, "virtualScrollItemSize", "virtualScrollItemSize", numberAttribute], loadingIcon: "loadingIcon", virtualScrollOptions: "virtualScrollOptions", overlayOptions: "overlayOptions", ariaFilterLabel: "ariaFilterLabel", filterMatchMode: "filterMatchMode", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", autofocusFilter: [2, "autofocusFilter", "autofocusFilter", booleanAttribute], display: "display", autocomplete: "autocomplete", size: "size", showClear: [2, "showClear", "showClear", booleanAttribute], autofocus: [2, "autofocus", "autofocus", booleanAttribute], autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", defaultLabel: "defaultLabel", placeholder: "placeholder", options: "options", filterValue: "filterValue", itemSize: "itemSize", selectAll: "selectAll", focusOnHover: [2, "focusOnHover", "focusOnHover", booleanAttribute], filterFields: "filterFields", selectOnFocus: [2, "selectOnFocus", "selectOnFocus", booleanAttribute], autoOptionFocus: [2, "autoOptionFocus", "autoOptionFocus", booleanAttribute] }, outputs: { onChange: "onChange", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onClick: "onClick", onClear: "onClear", onPanelShow: "onPanelShow", onPanelHide: "onPanelHide", onLazyLoad: "onLazyLoad", onRemove: "onRemove", onSelectAllChange: "onSelectAllChange" }, standalone: true, features: [i0.ɵɵProvidersFeature([MULTISELECT_VALUE_ACCESSOR, MultiSelectStyle]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c31, decls: 16, vars: 39, consts: [["focusInput", ""], ["elseBlock", ""], ["overlay", ""], ["content", ""], ["token", ""], ["removeicon", ""], ["firstHiddenFocusableEl", ""], ["buildInItems", ""], ["lastHiddenFocusableEl", ""], ["builtInFilterElement", ""], ["headerCheckbox", ""], ["checkboxicon", ""], ["filterInput", ""], ["scroller", ""], ["loader", ""], ["items", ""], [1, "p-hidden-accessible"], ["role", "combobox", 3, "focus", "blur", "keydown", "pTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "pAutoFocus"], [1, "p-multiselect-label-container", 3, "mouseleave", "pTooltip", "tooltipDisabled", "tooltipPosition", "positionStyle", "tooltipStyleClass"], [3, "ngClass"], [4, "ngIf"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "p-multiselect-dropdown"], [4, "ngIf", "ngIfElse"], [3, "visibleChange", "onAnimationStart", "onHide", "visible", "options", "target", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], ["class", "p-multiselect-chip-item", 4, "ngFor", "ngForOf"], [1, "p-multiselect-chip-item"], ["styleClass", "p-multiselect-chip", 3, "onRemove", "label", "removable", "removeIcon"], ["class", "p-multiselect-chip-icon", 3, "click", 4, "ngIf"], [1, "p-multiselect-chip-icon", 3, "click"], ["class", "p-multiselect-clear-icon", 3, "click", 4, "ngIf"], [1, "p-multiselect-clear-icon", 3, "click"], [4, "ngTemplateOutlet"], ["aria-hidden", "true", 3, "ngClass", 4, "ngIf"], ["aria-hidden", "true", 3, "class", 4, "ngIf"], ["aria-hidden", "true", 3, "ngClass"], ["aria-hidden", "true"], ["class", "p-multiselect-dropdown-icon", 4, "ngIf"], ["class", "p-multiselect-dropdown-icon", 3, "ngClass", 4, "ngIf"], [3, "styleClass", 4, "ngIf"], [1, "p-multiselect-dropdown-icon", 3, "ngClass"], [3, "styleClass"], [1, "p-multiselect-dropdown-icon"], [3, "ngClass", "ngStyle"], ["role", "presentation", 1, "p-hidden-accessible", "p-hidden-focusable", 3, "focus"], ["class", "p-multiselect-header", 4, "ngIf"], [1, "p-multiselect-list-container"], [3, "items", "style", "itemSize", "autoSize", "tabindex", "lazy", "options", "onLazyLoad", 4, "ngIf"], [1, "p-multiselect-header"], [3, "ngModel", "binary", "variant", "disabled", "onChange", 4, "ngIf"], ["class", "p-multiselect-filter-container", 4, "ngIf"], [3, "onChange", "ngModel", "binary", "variant", "disabled"], [1, "p-multiselect-filter-container"], ["pInputText", "", "type", "text", "role", "searchbox", 1, "p-multiselect-filter", 3, "input", "keydown", "click", "blur", "variant", "value", "disabled"], ["class", "p-multiselect-filter-icon", 4, "ngIf"], [1, "p-multiselect-filter-icon"], [3, "onLazyLoad", "items", "itemSize", "autoSize", "tabindex", "lazy", "options"], ["role", "listbox", "aria-multiselectable", "true", 1, "p-multiselect-list", 3, "ngClass"], ["ngFor", "", 3, "ngForOf"], ["class", "p-multiselect-empty-message", "role", "option", 3, "ngStyle", 4, "ngIf"], ["role", "option", 1, "p-multiselect-option-group", 3, "ngStyle"], [3, "onClick", "onMouseEnter", "id", "option", "selected", "label", "disabled", "template", "checkIconTemplate", "itemCheckboxIconTemplate", "itemSize", "focused", "ariaPosInset", "ariaSetSize", "variant"], ["role", "option", 1, "p-multiselect-empty-message", 3, "ngStyle"]], template: function MultiSelect_Template(rf, ctx) { if (rf & 1) {
|
2406
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
2407
|
-
i0.ɵɵprojectionDef(_c30);
|
2408
|
-
i0.ɵɵelementStart(0, "div", 16)(1, "input", 17, 0);
|
2409
|
-
i0.ɵɵlistener("focus", function MultiSelect_Template_input_focus_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onInputFocus($event)); })("blur", function MultiSelect_Template_input_blur_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onInputBlur($event)); })("keydown", function MultiSelect_Template_input_keydown_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onKeyDown($event)); });
|
2410
|
-
i0.ɵɵelementEnd()();
|
2411
|
-
i0.ɵɵelementStart(3, "div", 18);
|
2412
|
-
i0.ɵɵlistener("mouseleave", function MultiSelect_Template_div_mouseleave_3_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.labelContainerMouseLeave()); });
|
2413
|
-
i0.ɵɵelementStart(4, "div", 19);
|
2414
|
-
i0.ɵɵtemplate(5, MultiSelect_ng_container_5_Template, 3, 2, "ng-container", 20)(6, MultiSelect_ng_container_6_Template, 1, 0, "ng-container", 21);
|
2415
|
-
i0.ɵɵelementEnd()();
|
2416
|
-
i0.ɵɵtemplate(7, MultiSelect_ng_container_7_Template, 3, 2, "ng-container", 20);
|
2417
|
-
i0.ɵɵelementStart(8, "div", 22);
|
2418
|
-
i0.ɵɵtemplate(9, MultiSelect_ng_container_9_Template, 3, 2, "ng-container", 23)(10, MultiSelect_ng_template_10_Template, 2, 2, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
2419
|
-
i0.ɵɵelementEnd();
|
2420
|
-
i0.ɵɵelementStart(12, "p-overlay", 24, 2);
|
2421
|
-
i0.ɵɵtwoWayListener("visibleChange", function MultiSelect_Template_p_overlay_visibleChange_12_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.overlayVisible, $event) || (ctx.overlayVisible = $event); return i0.ɵɵresetView($event); });
|
2422
|
-
i0.ɵɵlistener("onAnimationStart", function MultiSelect_Template_p_overlay_onAnimationStart_12_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onOverlayAnimationStart($event)); })("onHide", function MultiSelect_Template_p_overlay_onHide_12_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.hide()); });
|
2423
|
-
i0.ɵɵtemplate(14, MultiSelect_ng_template_14_Template, 13, 18, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
2424
|
-
i0.ɵɵelementEnd();
|
2425
|
-
} if (rf & 2) {
|
2426
|
-
let tmp_15_0;
|
2427
|
-
const elseBlock_r24 = i0.ɵɵreference(11);
|
2428
|
-
i0.ɵɵattribute("data-p-hidden-accessible", true);
|
2429
|
-
i0.ɵɵadvance();
|
2430
|
-
i0.ɵɵproperty("pTooltip", ctx.tooltip)("tooltipPosition", ctx.tooltipPosition)("positionStyle", ctx.tooltipPositionStyle)("tooltipStyleClass", ctx.tooltipStyleClass)("pAutoFocus", ctx.autofocus);
|
2431
|
-
i0.ɵɵattribute("aria-disabled", ctx.disabled)("id", ctx.inputId)("aria-label", ctx.ariaLabel)("aria-labelledby", ctx.ariaLabelledBy)("aria-haspopup", "listbox")("aria-expanded", (tmp_15_0 = ctx.overlayVisible) !== null && tmp_15_0 !== undefined ? tmp_15_0 : false)("aria-controls", ctx.overlayVisible ? ctx.id + "_list" : null)("tabindex", !ctx.disabled ? ctx.tabindex : -1)("aria-activedescendant", ctx.focused ? ctx.focusedOptionId : undefined)("value", ctx.label() || "empty");
|
2432
|
-
i0.ɵɵadvance(2);
|
2433
|
-
i0.ɵɵproperty("pTooltip", ctx.tooltip)("tooltipDisabled", ctx._disableTooltip)("tooltipPosition", ctx.tooltipPosition)("positionStyle", ctx.tooltipPositionStyle)("tooltipStyleClass", ctx.tooltipStyleClass);
|
2434
|
-
i0.ɵɵadvance();
|
2435
|
-
i0.ɵɵproperty("ngClass", ctx.labelClass);
|
2436
|
-
i0.ɵɵadvance();
|
2437
|
-
i0.ɵɵproperty("ngIf", !ctx.selectedItemsTemplate && !ctx._selectedItemsTemplate);
|
2438
|
-
i0.ɵɵadvance();
|
2439
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.selectedItemsTemplate || ctx._selectedItemsTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction2(36, _c32, ctx.selectedOptions, ctx.removeOption.bind(ctx)));
|
2440
|
-
i0.ɵɵadvance();
|
2441
|
-
i0.ɵɵproperty("ngIf", ctx.isVisibleClearIcon);
|
2442
|
-
i0.ɵɵadvance(2);
|
2443
|
-
i0.ɵɵproperty("ngIf", ctx.loading)("ngIfElse", elseBlock_r24);
|
2444
|
-
i0.ɵɵadvance(3);
|
2445
|
-
i0.ɵɵtwoWayProperty("visible", ctx.overlayVisible);
|
2446
|
-
i0.ɵɵproperty("options", ctx.overlayOptions)("target", "@parent")("appendTo", ctx.appendTo)("autoZIndex", ctx.autoZIndex)("baseZIndex", ctx.baseZIndex)("showTransitionOptions", ctx.showTransitionOptions)("hideTransitionOptions", ctx.hideTransitionOptions);
|
2447
|
-
} }, dependencies: [CommonModule, i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, MultiSelectItem, Overlay, SharedModule, Tooltip, Scroller, AutoFocus, CheckIcon, SearchIcon, TimesIcon, ChevronDownIcon, IconField, InputIcon, InputText, Chip, Checkbox, FormsModule, i2.NgControlStatus, i2.NgModel], encapsulation: 2, changeDetection: 0 });
|
2448
|
-
}
|
2449
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MultiSelect, [{
|
2450
|
-
type: Component,
|
2451
|
-
args: [{
|
2452
|
-
selector: 'p-multiSelect, p-multiselect, p-multi-select',
|
2453
|
-
standalone: true,
|
2454
|
-
imports: [CommonModule, MultiSelectItem, Overlay, SharedModule, Tooltip, Scroller, AutoFocus, CheckIcon, SearchIcon, TimesIcon, ChevronDownIcon, IconField, InputIcon, InputText, Chip, Checkbox, FormsModule],
|
2455
|
-
template: `
|
2456
|
-
<div class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
|
2457
|
-
<input
|
2458
|
-
#focusInput
|
2459
|
-
[pTooltip]="tooltip"
|
2460
|
-
[tooltipPosition]="tooltipPosition"
|
2461
|
-
[positionStyle]="tooltipPositionStyle"
|
2462
|
-
[tooltipStyleClass]="tooltipStyleClass"
|
2463
|
-
[attr.aria-disabled]="disabled"
|
2464
|
-
[attr.id]="inputId"
|
2465
|
-
role="combobox"
|
2466
|
-
[attr.aria-label]="ariaLabel"
|
2467
|
-
[attr.aria-labelledby]="ariaLabelledBy"
|
2468
|
-
[attr.aria-haspopup]="'listbox'"
|
2469
|
-
[attr.aria-expanded]="overlayVisible ?? false"
|
2470
|
-
[attr.aria-controls]="overlayVisible ? id + '_list' : null"
|
2471
|
-
[attr.tabindex]="!disabled ? tabindex : -1"
|
2472
|
-
[attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
|
2473
|
-
(focus)="onInputFocus($event)"
|
2474
|
-
(blur)="onInputBlur($event)"
|
2475
|
-
(keydown)="onKeyDown($event)"
|
2476
|
-
[pAutoFocus]="autofocus"
|
2477
|
-
[attr.value]="label() || 'empty'"
|
2478
|
-
/>
|
2479
|
-
</div>
|
2480
|
-
<div
|
2481
|
-
class="p-multiselect-label-container"
|
2482
|
-
[pTooltip]="tooltip"
|
2483
|
-
(mouseleave)="labelContainerMouseLeave()"
|
2484
|
-
[tooltipDisabled]="_disableTooltip"
|
2485
|
-
[tooltipPosition]="tooltipPosition"
|
2486
|
-
[positionStyle]="tooltipPositionStyle"
|
2487
|
-
[tooltipStyleClass]="tooltipStyleClass"
|
2488
|
-
>
|
2489
|
-
<div [ngClass]="labelClass">
|
2490
|
-
<ng-container *ngIf="!selectedItemsTemplate && !_selectedItemsTemplate">
|
2491
|
-
<ng-container *ngIf="display === 'comma'">{{ label() || 'empty' }}</ng-container>
|
2492
|
-
<ng-container *ngIf="display === 'chip'">
|
2493
|
-
<div #token *ngFor="let item of chipSelectedItems(); let i = index" class="p-multiselect-chip-item">
|
2494
|
-
<p-chip styleClass="p-multiselect-chip" [label]="getLabelByValue(item)" [removable]="true" (onRemove)="removeOption(item, $event)" [removeIcon]="chipIcon">
|
2495
|
-
<ng-container *ngIf="chipIconTemplate || _chipIconTemplate || removeTokenIconTemplate || _removeTokenIconTemplate">
|
2496
|
-
<ng-template #removeicon>
|
2497
|
-
<ng-container *ngIf="!disabled">
|
2498
|
-
<span
|
2499
|
-
class="p-multiselect-chip-icon"
|
2500
|
-
*ngIf="chipIconTemplate || _chipIconTemplate || removeTokenIconTemplate || _removeTokenIconTemplate"
|
2501
|
-
(click)="removeOption(item, $event)"
|
2502
|
-
[attr.data-pc-section]="'clearicon'"
|
2503
|
-
[attr.aria-hidden]="true"
|
2504
|
-
>
|
2505
|
-
<ng-container *ngTemplateOutlet="chipIconTemplate || _chipIconTemplate || removeTokenIconTemplate || _removeTokenIconTemplate; context: { class: 'p-multiselect-chip-icon' }"></ng-container>
|
2506
|
-
</span>
|
2507
|
-
</ng-container>
|
2508
|
-
</ng-template>
|
2509
|
-
</ng-container>
|
2510
|
-
</p-chip>
|
2511
|
-
</div>
|
2512
|
-
<ng-container *ngIf="!modelValue() || modelValue().length === 0">{{ placeholder() || defaultLabel || 'empty' }}</ng-container>
|
2513
|
-
</ng-container>
|
2514
|
-
</ng-container>
|
2515
|
-
<ng-container *ngTemplateOutlet="selectedItemsTemplate || _selectedItemsTemplate; context: { $implicit: selectedOptions, removeChip: removeOption.bind(this) }"></ng-container>
|
2516
|
-
</div>
|
2517
|
-
</div>
|
2518
|
-
<ng-container *ngIf="isVisibleClearIcon">
|
2519
|
-
<TimesIcon *ngIf="!clearIconTemplate && !_clearIconTemplate" class="p-multiselect-clear-icon" (click)="clear($event)" [attr.data-pc-section]="'clearicon'" [attr.aria-hidden]="true" />
|
2520
|
-
<span *ngIf="clearIconTemplate || _clearIconTemplate" class="p-multiselect-clear-icon" (click)="clear($event)" [attr.data-pc-section]="'clearicon'" [attr.aria-hidden]="true">
|
2521
|
-
<ng-template *ngTemplateOutlet="clearIconTemplate || _clearIconTemplate"></ng-template>
|
2522
|
-
</span>
|
2523
|
-
</ng-container>
|
2524
|
-
<div class="p-multiselect-dropdown">
|
2525
|
-
<ng-container *ngIf="loading; else elseBlock">
|
2526
|
-
<ng-container *ngIf="loadingIconTemplate || _loadingIconTemplate">
|
2527
|
-
<ng-container *ngTemplateOutlet="loadingIconTemplate || _loadingIconTemplate"></ng-container>
|
2528
|
-
</ng-container>
|
2529
|
-
<ng-container *ngIf="!loadingIconTemplate && !_loadingIconTemplate">
|
2530
|
-
<span *ngIf="loadingIcon" [ngClass]="'p-multiselect-loading-icon pi-spin ' + loadingIcon" aria-hidden="true"></span>
|
2531
|
-
<span *ngIf="!loadingIcon" [class]="'p-multiselect-loading-icon pi pi-spinner pi-spin'" aria-hidden="true"></span>
|
2532
|
-
</ng-container>
|
2533
|
-
</ng-container>
|
2534
|
-
<ng-template #elseBlock>
|
2535
|
-
<ng-container *ngIf="!dropdownIconTemplate && !_dropdownIconTemplate">
|
2536
|
-
<span *ngIf="dropdownIcon" class="p-multiselect-dropdown-icon" [ngClass]="dropdownIcon" [attr.data-pc-section]="'triggericon'" [attr.aria-hidden]="true"></span>
|
2537
|
-
<ChevronDownIcon *ngIf="!dropdownIcon" [styleClass]="'p-multiselect-dropdown-icon'" [attr.data-pc-section]="'triggericon'" [attr.aria-hidden]="true" />
|
2538
|
-
</ng-container>
|
2539
|
-
<span *ngIf="dropdownIconTemplate || _dropdownIconTemplate" class="p-multiselect-dropdown-icon" [attr.data-pc-section]="'triggericon'" [attr.aria-hidden]="true">
|
2540
|
-
<ng-template *ngTemplateOutlet="dropdownIconTemplate || _dropdownIconTemplate"></ng-template>
|
2541
|
-
</span>
|
2542
|
-
</ng-template>
|
2543
|
-
</div>
|
2544
|
-
<p-overlay
|
2545
|
-
#overlay
|
2546
|
-
[(visible)]="overlayVisible"
|
2547
|
-
[options]="overlayOptions"
|
2548
|
-
[target]="'@parent'"
|
2549
|
-
[appendTo]="appendTo"
|
2550
|
-
[autoZIndex]="autoZIndex"
|
2551
|
-
[baseZIndex]="baseZIndex"
|
2552
|
-
[showTransitionOptions]="showTransitionOptions"
|
2553
|
-
[hideTransitionOptions]="hideTransitionOptions"
|
2554
|
-
(onAnimationStart)="onOverlayAnimationStart($event)"
|
2555
|
-
(onHide)="hide()"
|
2556
|
-
>
|
2557
|
-
<ng-template #content>
|
2558
|
-
<div [attr.id]="id + '_list'" [ngClass]="'p-multiselect-overlay p-component'" [ngStyle]="panelStyle" [class]="panelStyleClass">
|
2559
|
-
<span
|
2560
|
-
#firstHiddenFocusableEl
|
2561
|
-
role="presentation"
|
2562
|
-
class="p-hidden-accessible p-hidden-focusable"
|
2563
|
-
[attr.tabindex]="0"
|
2564
|
-
(focus)="onFirstHiddenFocus($event)"
|
2565
|
-
[attr.data-p-hidden-accessible]="true"
|
2566
|
-
[attr.data-p-hidden-focusable]="true"
|
2567
|
-
>
|
2568
|
-
</span>
|
2569
|
-
<ng-container *ngTemplateOutlet="headerTemplate || _headerTemplate"></ng-container>
|
2570
|
-
<div class="p-multiselect-header" *ngIf="showHeader">
|
2571
|
-
<ng-content select="p-header"></ng-content>
|
2572
|
-
<ng-container *ngIf="filterTemplate || _filterTemplate; else builtInFilterElement">
|
2573
|
-
<ng-container *ngTemplateOutlet="filterTemplate || _filterTemplate; context: { options: filterOptions }"></ng-container>
|
2574
|
-
</ng-container>
|
2575
|
-
<ng-template #builtInFilterElement>
|
2576
|
-
<p-checkbox [ngModel]="allSelected()" [binary]="true" (onChange)="onToggleAll($event)" *ngIf="showToggleAll && !selectionLimit" [variant]="variant" [disabled]="disabled" #headerCheckbox>
|
2577
|
-
<ng-template #checkboxicon let-klass="class">
|
2578
|
-
<CheckIcon *ngIf="!headerCheckboxIconTemplate && !_headerCheckboxIconTemplate && allSelected()" [styleClass]="klass" [attr.data-pc-section]="'icon'" />
|
2579
|
-
<ng-template
|
2580
|
-
*ngTemplateOutlet="
|
2581
|
-
headerCheckboxIconTemplate || _headerCheckboxIconTemplate;
|
2582
|
-
context: {
|
2583
|
-
checked: allSelected(),
|
2584
|
-
partialSelected: partialSelected(),
|
2585
|
-
class: klass
|
2586
|
-
}
|
2587
|
-
"
|
2588
|
-
></ng-template>
|
2589
|
-
</ng-template>
|
2590
|
-
</p-checkbox>
|
2591
|
-
|
2592
|
-
<div class="p-multiselect-filter-container" *ngIf="filter">
|
2593
|
-
<p-iconfield>
|
2594
|
-
<input
|
2595
|
-
#filterInput
|
2596
|
-
pInputText
|
2597
|
-
[variant]="variant"
|
2598
|
-
type="text"
|
2599
|
-
[attr.autocomplete]="autocomplete"
|
2600
|
-
role="searchbox"
|
2601
|
-
[attr.aria-owns]="id + '_list'"
|
2602
|
-
[attr.aria-activedescendant]="focusedOptionId"
|
2603
|
-
[value]="_filterValue() || ''"
|
2604
|
-
(input)="onFilterInputChange($event)"
|
2605
|
-
(keydown)="onFilterKeyDown($event)"
|
2606
|
-
(click)="onInputClick($event)"
|
2607
|
-
(blur)="onFilterBlur($event)"
|
2608
|
-
class="p-multiselect-filter"
|
2609
|
-
[disabled]="disabled"
|
2610
|
-
[attr.placeholder]="filterPlaceHolder"
|
2611
|
-
[attr.aria-label]="ariaFilterLabel"
|
2612
|
-
/>
|
2613
|
-
<p-inputicon>
|
2614
|
-
<SearchIcon [styleClass]="'p-multiselect-filter-icon'" *ngIf="!filterIconTemplate && !_filterIconTemplate" />
|
2615
|
-
<span *ngIf="filterIconTemplate || _filterIconTemplate" class="p-multiselect-filter-icon">
|
2616
|
-
<ng-template *ngTemplateOutlet="filterIconTemplate || _filterIconTemplate"></ng-template>
|
2617
|
-
</span>
|
2618
|
-
</p-inputicon>
|
2619
|
-
</p-iconfield>
|
2620
|
-
</div>
|
2621
|
-
</ng-template>
|
2622
|
-
</div>
|
2623
|
-
<div class="p-multiselect-list-container" [style.max-height]="virtualScroll ? 'auto' : scrollHeight || 'auto'">
|
2624
|
-
<p-scroller
|
2625
|
-
*ngIf="virtualScroll"
|
2626
|
-
#scroller
|
2627
|
-
[items]="visibleOptions()"
|
2628
|
-
[style]="{ height: scrollHeight }"
|
2629
|
-
[itemSize]="virtualScrollItemSize || _itemSize"
|
2630
|
-
[autoSize]="true"
|
2631
|
-
[tabindex]="-1"
|
2632
|
-
[lazy]="lazy"
|
2633
|
-
(onLazyLoad)="onLazyLoad.emit($event)"
|
2634
|
-
[options]="virtualScrollOptions"
|
2635
|
-
>
|
2636
|
-
<ng-template #content let-items let-scrollerOptions="options">
|
2637
|
-
<ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"></ng-container>
|
2638
|
-
</ng-template>
|
2639
|
-
<ng-container *ngIf="loaderTemplate || _loaderTemplate">
|
2640
|
-
<ng-template #loader let-scrollerOptions="options">
|
2641
|
-
<ng-container *ngTemplateOutlet="loaderTemplate || _loaderTemplate; context: { options: scrollerOptions }"></ng-container>
|
2642
|
-
</ng-template>
|
2643
|
-
</ng-container>
|
2644
|
-
</p-scroller>
|
2645
|
-
<ng-container *ngIf="!virtualScroll">
|
2646
|
-
<ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"></ng-container>
|
2647
|
-
</ng-container>
|
2648
|
-
|
2649
|
-
<ng-template #buildInItems let-items let-scrollerOptions="options">
|
2650
|
-
<ul #items class="p-multiselect-list" [ngClass]="scrollerOptions.contentStyleClass" [style]="scrollerOptions.contentStyle" role="listbox" aria-multiselectable="true" [attr.aria-label]="listLabel">
|
2651
|
-
<ng-template ngFor let-option [ngForOf]="items" let-i="index">
|
2652
|
-
<ng-container *ngIf="isOptionGroup(option)">
|
2653
|
-
<li [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)" class="p-multiselect-option-group" [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }" role="option">
|
2654
|
-
<span *ngIf="!groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
|
2655
|
-
<ng-container *ngTemplateOutlet="groupTemplate; context: { $implicit: option.optionGroup }"></ng-container>
|
2656
|
-
</li>
|
2657
|
-
</ng-container>
|
2658
|
-
<ng-container *ngIf="!isOptionGroup(option)">
|
2659
|
-
<p-multiselect-item
|
2660
|
-
[id]="id + '_' + getOptionIndex(i, scrollerOptions)"
|
2661
|
-
[option]="option"
|
2662
|
-
[selected]="isSelected(option)"
|
2663
|
-
[label]="getOptionLabel(option)"
|
2664
|
-
[disabled]="isOptionDisabled(option)"
|
2665
|
-
[template]="itemTemplate || _itemTemplate"
|
2666
|
-
[checkIconTemplate]="checkIconTemplate || _checkIconTemplate"
|
2667
|
-
[itemCheckboxIconTemplate]="itemCheckboxIconTemplate || _itemCheckboxIconTemplate"
|
2668
|
-
[itemSize]="scrollerOptions.itemSize"
|
2669
|
-
[focused]="focusedOptionIndex() === getOptionIndex(i, scrollerOptions)"
|
2670
|
-
[ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
|
2671
|
-
[ariaSetSize]="ariaSetSize"
|
2672
|
-
[variant]="variant"
|
2673
|
-
(onClick)="onOptionSelect($event, false, getOptionIndex(i, scrollerOptions))"
|
2674
|
-
(onMouseEnter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
|
2675
|
-
></p-multiselect-item>
|
2676
|
-
</ng-container>
|
2677
|
-
</ng-template>
|
2678
|
-
|
2679
|
-
<li *ngIf="hasFilter() && isEmpty()" class="p-multiselect-empty-message" [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }" role="option">
|
2680
|
-
@if (!emptyFilterTemplate && !_emptyFilterTemplate && !emptyTemplate && !_emptyTemplate) {
|
2681
|
-
{{ emptyFilterMessageLabel }}
|
2682
|
-
} @else {
|
2683
|
-
<ng-container *ngTemplateOutlet="emptyFilterTemplate || _emptyFilterTemplate || emptyTemplate || _emptyFilterTemplate"></ng-container>
|
2684
|
-
}
|
2685
|
-
</li>
|
2686
|
-
<li *ngIf="!hasFilter() && isEmpty()" class="p-multiselect-empty-message" [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }" role="option">
|
2687
|
-
@if (!emptyTemplate && !_emptyTemplate) {
|
2688
|
-
{{ emptyMessageLabel }}
|
2689
|
-
} @else {
|
2690
|
-
<ng-container *ngTemplateOutlet="emptyTemplate || _emptyTemplate"></ng-container>
|
2691
|
-
}
|
2692
|
-
</li>
|
2693
|
-
</ul>
|
2694
|
-
</ng-template>
|
2695
|
-
</div>
|
2696
|
-
<div *ngIf="footerFacet || footerTemplate || _footerTemplate">
|
2697
|
-
<ng-content select="p-footer"></ng-content>
|
2698
|
-
<ng-container *ngTemplateOutlet="footerTemplate || _footerTemplate"></ng-container>
|
2699
|
-
</div>
|
2700
|
-
|
2701
|
-
<span
|
2702
|
-
#lastHiddenFocusableEl
|
2703
|
-
role="presentation"
|
2704
|
-
class="p-hidden-accessible p-hidden-focusable"
|
2705
|
-
[attr.tabindex]="0"
|
2706
|
-
(focus)="onLastHiddenFocus($event)"
|
2707
|
-
[attr.data-p-hidden-accessible]="true"
|
2708
|
-
[attr.data-p-hidden-focusable]="true"
|
2709
|
-
></span>
|
2710
|
-
</div>
|
2711
|
-
</ng-template>
|
2712
|
-
</p-overlay>
|
2713
|
-
`,
|
2714
|
-
providers: [MULTISELECT_VALUE_ACCESSOR, MultiSelectStyle],
|
2715
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
2716
|
-
encapsulation: ViewEncapsulation.None,
|
2717
|
-
host: {
|
2718
|
-
'[attr.id]': 'id',
|
2719
|
-
'[style]': 'style',
|
2720
|
-
'(click)': 'onContainerClick($event)'
|
2721
|
-
}
|
2722
|
-
}]
|
2723
|
-
}], () => [{ type: i0.NgZone }, { type: i3.FilterService }, { type: i3.OverlayService }], { id: [{
|
2724
|
-
type: Input
|
2725
|
-
}], ariaLabel: [{
|
2726
|
-
type: Input
|
2727
|
-
}], style: [{
|
2728
|
-
type: Input
|
2729
|
-
}], styleClass: [{
|
2730
|
-
type: Input
|
2731
|
-
}], panelStyle: [{
|
2732
|
-
type: Input
|
2733
|
-
}], panelStyleClass: [{
|
2734
|
-
type: Input
|
2735
|
-
}], inputId: [{
|
2736
|
-
type: Input
|
2737
|
-
}], disabled: [{
|
2738
|
-
type: Input,
|
2739
|
-
args: [{ transform: booleanAttribute }]
|
2740
|
-
}], fluid: [{
|
2741
|
-
type: Input,
|
2742
|
-
args: [{ transform: booleanAttribute }]
|
2743
|
-
}], readonly: [{
|
2744
|
-
type: Input,
|
2745
|
-
args: [{ transform: booleanAttribute }]
|
2746
|
-
}], group: [{
|
2747
|
-
type: Input,
|
2748
|
-
args: [{ transform: booleanAttribute }]
|
2749
|
-
}], filter: [{
|
2750
|
-
type: Input,
|
2751
|
-
args: [{ transform: booleanAttribute }]
|
2752
|
-
}], filterPlaceHolder: [{
|
2753
|
-
type: Input
|
2754
|
-
}], filterLocale: [{
|
2755
|
-
type: Input
|
2756
|
-
}], overlayVisible: [{
|
2757
|
-
type: Input,
|
2758
|
-
args: [{ transform: booleanAttribute }]
|
2759
|
-
}], tabindex: [{
|
2760
|
-
type: Input,
|
2761
|
-
args: [{ transform: numberAttribute }]
|
2762
|
-
}], variant: [{
|
2763
|
-
type: Input
|
2764
|
-
}], appendTo: [{
|
2765
|
-
type: Input
|
2766
|
-
}], dataKey: [{
|
2767
|
-
type: Input
|
2768
|
-
}], name: [{
|
2769
|
-
type: Input
|
2770
|
-
}], ariaLabelledBy: [{
|
2771
|
-
type: Input
|
2772
|
-
}], displaySelectedLabel: [{
|
2773
|
-
type: Input
|
2774
|
-
}], maxSelectedLabels: [{
|
2775
|
-
type: Input
|
2776
|
-
}], selectionLimit: [{
|
2777
|
-
type: Input,
|
2778
|
-
args: [{ transform: numberAttribute }]
|
2779
|
-
}], selectedItemsLabel: [{
|
2780
|
-
type: Input
|
2781
|
-
}], showToggleAll: [{
|
2782
|
-
type: Input,
|
2783
|
-
args: [{ transform: booleanAttribute }]
|
2784
|
-
}], emptyFilterMessage: [{
|
2785
|
-
type: Input
|
2786
|
-
}], emptyMessage: [{
|
2787
|
-
type: Input
|
2788
|
-
}], resetFilterOnHide: [{
|
2789
|
-
type: Input,
|
2790
|
-
args: [{ transform: booleanAttribute }]
|
2791
|
-
}], dropdownIcon: [{
|
2792
|
-
type: Input
|
2793
|
-
}], chipIcon: [{
|
2794
|
-
type: Input
|
2795
|
-
}], optionLabel: [{
|
2796
|
-
type: Input
|
2797
|
-
}], optionValue: [{
|
2798
|
-
type: Input
|
2799
|
-
}], optionDisabled: [{
|
2800
|
-
type: Input
|
2801
|
-
}], optionGroupLabel: [{
|
2802
|
-
type: Input
|
2803
|
-
}], optionGroupChildren: [{
|
2804
|
-
type: Input
|
2805
|
-
}], showHeader: [{
|
2806
|
-
type: Input,
|
2807
|
-
args: [{ transform: booleanAttribute }]
|
2808
|
-
}], filterBy: [{
|
2809
|
-
type: Input
|
2810
|
-
}], scrollHeight: [{
|
2811
|
-
type: Input
|
2812
|
-
}], lazy: [{
|
2813
|
-
type: Input,
|
2814
|
-
args: [{ transform: booleanAttribute }]
|
2815
|
-
}], virtualScroll: [{
|
2816
|
-
type: Input,
|
2817
|
-
args: [{ transform: booleanAttribute }]
|
2818
|
-
}], loading: [{
|
2819
|
-
type: Input,
|
2820
|
-
args: [{ transform: booleanAttribute }]
|
2821
|
-
}], virtualScrollItemSize: [{
|
2822
|
-
type: Input,
|
2823
|
-
args: [{ transform: numberAttribute }]
|
2824
|
-
}], loadingIcon: [{
|
2825
|
-
type: Input
|
2826
|
-
}], virtualScrollOptions: [{
|
2827
|
-
type: Input
|
2828
|
-
}], overlayOptions: [{
|
2829
|
-
type: Input
|
2830
|
-
}], ariaFilterLabel: [{
|
2831
|
-
type: Input
|
2832
|
-
}], filterMatchMode: [{
|
2833
|
-
type: Input
|
2834
|
-
}], tooltip: [{
|
2835
|
-
type: Input
|
2836
|
-
}], tooltipPosition: [{
|
2837
|
-
type: Input
|
2838
|
-
}], tooltipPositionStyle: [{
|
2839
|
-
type: Input
|
2840
|
-
}], tooltipStyleClass: [{
|
2841
|
-
type: Input
|
2842
|
-
}], autofocusFilter: [{
|
2843
|
-
type: Input,
|
2844
|
-
args: [{ transform: booleanAttribute }]
|
2845
|
-
}], display: [{
|
2846
|
-
type: Input
|
2847
|
-
}], autocomplete: [{
|
2848
|
-
type: Input
|
2849
|
-
}], size: [{
|
2850
|
-
type: Input
|
2851
|
-
}], showClear: [{
|
2852
|
-
type: Input,
|
2853
|
-
args: [{ transform: booleanAttribute }]
|
2854
|
-
}], autofocus: [{
|
2855
|
-
type: Input,
|
2856
|
-
args: [{ transform: booleanAttribute }]
|
2857
|
-
}], autoZIndex: [{
|
2858
|
-
type: Input
|
2859
|
-
}], baseZIndex: [{
|
2860
|
-
type: Input
|
2861
|
-
}], showTransitionOptions: [{
|
2862
|
-
type: Input
|
2863
|
-
}], hideTransitionOptions: [{
|
2864
|
-
type: Input
|
2865
|
-
}], defaultLabel: [{
|
2866
|
-
type: Input
|
2867
|
-
}], placeholder: [{
|
2868
|
-
type: Input
|
2869
|
-
}], options: [{
|
2870
|
-
type: Input
|
2871
|
-
}], filterValue: [{
|
2872
|
-
type: Input
|
2873
|
-
}], itemSize: [{
|
2874
|
-
type: Input
|
2875
|
-
}], selectAll: [{
|
2876
|
-
type: Input
|
2877
|
-
}], focusOnHover: [{
|
2878
|
-
type: Input,
|
2879
|
-
args: [{ transform: booleanAttribute }]
|
2880
|
-
}], filterFields: [{
|
2881
|
-
type: Input
|
2882
|
-
}], selectOnFocus: [{
|
2883
|
-
type: Input,
|
2884
|
-
args: [{ transform: booleanAttribute }]
|
2885
|
-
}], autoOptionFocus: [{
|
2886
|
-
type: Input,
|
2887
|
-
args: [{ transform: booleanAttribute }]
|
2888
|
-
}], onChange: [{
|
2889
|
-
type: Output
|
2890
|
-
}], onFilter: [{
|
2891
|
-
type: Output
|
2892
|
-
}], onFocus: [{
|
2893
|
-
type: Output
|
2894
|
-
}], onBlur: [{
|
2895
|
-
type: Output
|
2896
|
-
}], onClick: [{
|
2897
|
-
type: Output
|
2898
|
-
}], onClear: [{
|
2899
|
-
type: Output
|
2900
|
-
}], onPanelShow: [{
|
2901
|
-
type: Output
|
2902
|
-
}], onPanelHide: [{
|
2903
|
-
type: Output
|
2904
|
-
}], onLazyLoad: [{
|
2905
|
-
type: Output
|
2906
|
-
}], onRemove: [{
|
2907
|
-
type: Output
|
2908
|
-
}], onSelectAllChange: [{
|
2909
|
-
type: Output
|
2910
|
-
}], overlayViewChild: [{
|
2911
|
-
type: ViewChild,
|
2912
|
-
args: ['overlay']
|
2913
|
-
}], filterInputChild: [{
|
2914
|
-
type: ViewChild,
|
2915
|
-
args: ['filterInput']
|
2916
|
-
}], focusInputViewChild: [{
|
2917
|
-
type: ViewChild,
|
2918
|
-
args: ['focusInput']
|
2919
|
-
}], itemsViewChild: [{
|
2920
|
-
type: ViewChild,
|
2921
|
-
args: ['items']
|
2922
|
-
}], scroller: [{
|
2923
|
-
type: ViewChild,
|
2924
|
-
args: ['scroller']
|
2925
|
-
}], lastHiddenFocusableElementOnOverlay: [{
|
2926
|
-
type: ViewChild,
|
2927
|
-
args: ['lastHiddenFocusableEl']
|
2928
|
-
}], firstHiddenFocusableElementOnOverlay: [{
|
2929
|
-
type: ViewChild,
|
2930
|
-
args: ['firstHiddenFocusableEl']
|
2931
|
-
}], headerCheckboxViewChild: [{
|
2932
|
-
type: ViewChild,
|
2933
|
-
args: ['headerCheckbox']
|
2934
|
-
}], footerFacet: [{
|
2935
|
-
type: ContentChild,
|
2936
|
-
args: [Footer]
|
2937
|
-
}], headerFacet: [{
|
2938
|
-
type: ContentChild,
|
2939
|
-
args: [Header]
|
2940
|
-
}], itemTemplate: [{
|
2941
|
-
type: ContentChild,
|
2942
|
-
args: ['item', { descendants: false }]
|
2943
|
-
}], groupTemplate: [{
|
2944
|
-
type: ContentChild,
|
2945
|
-
args: ['group', { descendants: false }]
|
2946
|
-
}], loaderTemplate: [{
|
2947
|
-
type: ContentChild,
|
2948
|
-
args: ['loader', { descendants: false }]
|
2949
|
-
}], headerTemplate: [{
|
2950
|
-
type: ContentChild,
|
2951
|
-
args: ['header', { descendants: false }]
|
2952
|
-
}], filterTemplate: [{
|
2953
|
-
type: ContentChild,
|
2954
|
-
args: ['filter', { descendants: false }]
|
2955
|
-
}], footerTemplate: [{
|
2956
|
-
type: ContentChild,
|
2957
|
-
args: ['footer', { descendants: false }]
|
2958
|
-
}], emptyFilterTemplate: [{
|
2959
|
-
type: ContentChild,
|
2960
|
-
args: ['emptyfilter', { descendants: false }]
|
2961
|
-
}], emptyTemplate: [{
|
2962
|
-
type: ContentChild,
|
2963
|
-
args: ['empty', { descendants: false }]
|
2964
|
-
}], selectedItemsTemplate: [{
|
2965
|
-
type: ContentChild,
|
2966
|
-
args: ['selecteditems', { descendants: false }]
|
2967
|
-
}], checkIconTemplate: [{
|
2968
|
-
type: ContentChild,
|
2969
|
-
args: ['checkicon', { descendants: false }]
|
2970
|
-
}], loadingIconTemplate: [{
|
2971
|
-
type: ContentChild,
|
2972
|
-
args: ['loadingicon', { descendants: false }]
|
2973
|
-
}], filterIconTemplate: [{
|
2974
|
-
type: ContentChild,
|
2975
|
-
args: ['filtericon', { descendants: false }]
|
2976
|
-
}], removeTokenIconTemplate: [{
|
2977
|
-
type: ContentChild,
|
2978
|
-
args: ['removetokenicon', { descendants: false }]
|
2979
|
-
}], chipIconTemplate: [{
|
2980
|
-
type: ContentChild,
|
2981
|
-
args: ['chipicon', { descendants: false }]
|
2982
|
-
}], clearIconTemplate: [{
|
2983
|
-
type: ContentChild,
|
2984
|
-
args: ['clearicon', { descendants: false }]
|
2985
|
-
}], dropdownIconTemplate: [{
|
2986
|
-
type: ContentChild,
|
2987
|
-
args: ['dropdownicon', { descendants: false }]
|
2988
|
-
}], itemCheckboxIconTemplate: [{
|
2989
|
-
type: ContentChild,
|
2990
|
-
args: ['itemcheckboxicon', { descendants: false }]
|
2991
|
-
}], headerCheckboxIconTemplate: [{
|
2992
|
-
type: ContentChild,
|
2993
|
-
args: ['headercheckboxicon', { descendants: false }]
|
2994
|
-
}], templates: [{
|
2995
|
-
type: ContentChildren,
|
2996
|
-
args: [PrimeTemplate]
|
2997
|
-
}], hostClasses: [{
|
2998
|
-
type: HostBinding,
|
2999
|
-
args: ['class']
|
3000
|
-
}] }); })();
|
3001
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MultiSelect, { className: "MultiSelect" }); })();
|
3002
|
-
export class MultiSelectModule {
|
3003
|
-
static ɵfac = function MultiSelectModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MultiSelectModule)(); };
|
3004
|
-
static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: MultiSelectModule });
|
3005
|
-
static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [MultiSelect, SharedModule, SharedModule] });
|
3006
|
-
}
|
3007
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MultiSelectModule, [{
|
3008
|
-
type: NgModule,
|
3009
|
-
args: [{
|
3010
|
-
imports: [MultiSelect, SharedModule],
|
3011
|
-
exports: [MultiSelect, SharedModule]
|
3012
|
-
}]
|
3013
|
-
}], null, null); })();
|
3014
|
-
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MultiSelectModule, { imports: [MultiSelect, SharedModule], exports: [MultiSelect, SharedModule] }); })();
|
3015
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXVsdGlzZWxlY3QvbXVsdGlzZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFJSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFDZixNQUFNLEVBRU4sWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBRVIsZUFBZSxFQUVmLE1BQU0sRUFHTixNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFDSCxVQUFVLEVBQ1YsTUFBTSxFQUNOLGFBQWEsRUFDYixVQUFVLEVBQ1YsS0FBSyxFQUNMLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLFFBQVEsRUFDUixPQUFPLEVBQ1AsUUFBUSxFQUNSLFVBQVUsRUFDVixRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsSUFBSSxFQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFpQixNQUFNLEVBQUUsTUFBTSxFQUFrQyxhQUFhLEVBQW1CLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0osT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLElB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LFdBQVcsRUFBRSxLQUFLLEVBQUU7WUFFTyx1QkFBdUI7a0JBQS9FLFlBQVk7bUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO1lBRUwsZ0JBQWdCO2tCQUFqRSxZQUFZO21CQUFDLFVBQVUsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7WUFFRyxpQkFBaUI7a0JBQW5FLFlBQVk7bUJBQUMsV0FBVyxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTtZQUVLLG9CQUFvQjtrQkFBekUsWUFBWTttQkFBQyxjQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO1lBRU0sd0JBQXdCO2tCQUFqRixZQUFZO21CQUFDLGtCQUFrQixFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTtZQUVJLDBCQUEwQjtrQkFBckYsWUFBWTttQkFBQyxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7WUFFMUIsU0FBUztrQkFBeEMsZUFBZTttQkFBQyxhQUFhO1lBdUpKLFdBQVc7a0JBQXBDLFdBQVc7bUJBQUMsT0FBTzs7a0ZBN3VCWCxXQUFXO0FBODBEeEIsTUFBTSxPQUFPLGlCQUFpQjsyR0FBakIsaUJBQWlCOzREQUFqQixpQkFBaUI7Z0VBSGhCLFdBQVcsRUFBRSxZQUFZLEVBQ1osWUFBWTs7aUZBRTFCLGlCQUFpQjtjQUo3QixRQUFRO2VBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQztnQkFDcEMsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQzthQUN2Qzs7d0ZBQ1ksaUJBQWlCLGNBOTBEakIsV0FBVyxFQTIwREcsWUFBWSxhQTMwRDFCLFdBQVcsRUE0MERHLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBlZmZlY3QsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgTmdab25lLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaWduYWwsXG4gICAgc2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIGRlZXBFcXVhbHMsXG4gICAgZXF1YWxzLFxuICAgIGZpbmRMYXN0SW5kZXgsXG4gICAgZmluZFNpbmdsZSxcbiAgICBmb2N1cyxcbiAgICBnZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQsXG4gICAgZ2V0Rm9jdXNhYmxlRWxlbWVudHMsXG4gICAgZ2V0TGFzdEZvY3VzYWJsZUVsZW1lbnQsXG4gICAgaGFzQ2xhc3MsXG4gICAgaXNBcnJheSxcbiAgICBpc0hpZGRlbixcbiAgICBpc05vdEVtcHR5LFxuICAgIGlzT2JqZWN0LFxuICAgIGlzUHJpbnRhYmxlQ2hhcmFjdGVyLFxuICAgIHJlc29sdmVGaWVsZERhdGEsXG4gICAgdW5ibG9ja0JvZHlTY3JvbGwsXG4gICAgdXVpZFxufSBmcm9tICdAcHJpbWV1aXgvdXRpbHMnO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSwgRm9vdGVyLCBIZWFkZXIsIE92ZXJsYXlPcHRpb25zLCBPdmVybGF5U2VydmljZSwgUHJpbWVUZW1wbGF0ZSwgU2Nyb2xsZXJPcHRpb25zLCBTaGFyZWRNb2R1bGUsIFRyYW5zbGF0aW9uS2V5cyB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEF1dG9Gb2N1cyB9IGZyb20gJ3ByaW1lbmcvYXV0b2ZvY3VzJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdwcmltZW5nL2Jhc2Vjb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICdwcmltZW5nL2NoZWNrYm94JztcbmltcG9ydCB7IENoaXAgfSBmcm9tICdwcmltZW5nL2NoaXAnO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IEljb25GaWVsZCB9IGZyb20gJ3ByaW1lbmcvaWNvbmZpZWxkJztcbmltcG9ydCB7IENoZWNrSWNvbiwgQ2hldnJvbkRvd25JY29uLCBTZWFyY2hJY29uLCBUaW1lc0ljb24gfSBmcm9tICdwcmltZW5nL2ljb25zJztcbmltcG9ydCB7IElucHV0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaW5wdXRpY29uJztcbmltcG9ydCB7IElucHV0VGV4dCB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdwcmltZW5nL292ZXJsYXknO1xuaW1wb3J0IHsgUmlwcGxlIH0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHsgU2Nyb2xsZXIgfSBmcm9tICdwcmltZW5nL3Njcm9sbGVyJztcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdwcmltZW5nL3RzLWhlbHBlcnMnO1xuaW1wb3J0IHsgTXVsdGlTZWxlY3RCbHVyRXZlbnQsIE11bHRpU2VsZWN0Q2hhbmdlRXZlbnQsIE11bHRpU2VsZWN0RmlsdGVyRXZlbnQsIE11bHRpU2VsZWN0RmlsdGVyT3B0aW9ucywgTXVsdGlTZWxlY3RGb2N1c0V2ZW50LCBNdWx0aVNlbGVjdExhenlMb2FkRXZlbnQsIE11bHRpU2VsZWN0UmVtb3ZlRXZlbnQsIE11bHRpU2VsZWN0U2VsZWN0QWxsQ2hhbmdlRXZlbnQgfSBmcm9tICcuL211bHRpc2VsZWN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNdWx0aVNlbGVjdFN0eWxlIH0gZnJvbSAnLi9zdHlsZS9tdWx0aXNlbGVjdHN0eWxlJztcblxuZXhwb3J0IGNvbnN0IE1VTFRJU0VMRUNUX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlTZWxlY3QpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbXVsdGlTZWxlY3RJdGVtLCBwLW11bHRpc2VsZWN0LWl0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ2hlY2tib3gsIEZvcm1zTW9kdWxlLCBSaXBwbGUsIFNoYXJlZE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGxpXG4gICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBpdGVtU2l6ZSArICdweCcgfVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3AtbXVsdGlzZWxlY3Qtb3B0aW9uJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAncC1kaXNhYmxlZCc6IGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICdwLWZvY3VzJzogZm9jdXNlZFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwiYXJpYVNldFNpemVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1wb3NpbnNldF09XCJhcmlhUG9zSW5zZXRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXAtZm9jdXNlZF09XCJmb2N1c2VkXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcC1oaWdobGlnaHRdPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25PcHRpb25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uT3B0aW9uTW91c2VFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHAtY2hlY2tib3ggW25nTW9kZWxdPVwic2VsZWN0ZWRcIiBbYmluYXJ5XT1cInRydWVcIiBbdGFiaW5kZXhdPVwiLTFcIiBbdmFyaWFudF09XCJ2YXJpYW50XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1DaGVja2JveEljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ljb24gbGV0LWtsYXNzPVwiY2xhc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1DaGVja2JveEljb25UZW1wbGF0ZTsgY29udGV4dDogeyBjaGVja2VkOiBzZWxlY3RlZCwgY2xhc3M6IGtsYXNzIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9wLWNoZWNrYm94PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGVtcGxhdGVcIj57eyBsYWJlbCA/PyAnZW1wdHknIH19PC9zcGFuPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9saT5cbiAgICBgLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RJdGVtIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIG9wdGlvbjogYW55O1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNlbGVjdGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGl0ZW1TaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZm9jdXNlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGFyaWFQb3NJbnNldDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYXJpYVNldFNpemU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIHZhcmlhbnQ6ICdvdXRsaW5lZCcgfCAnZmlsbGVkJztcblxuICAgIEBJbnB1dCgpIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgY2hlY2tJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBpdGVtQ2hlY2tib3hJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAT3V0cHV0KCkgb25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Nb3VzZUVudGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIG9uT3B0aW9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25DbGljay5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgb3B0aW9uOiB0aGlzLm9wdGlvbixcbiAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgIH0pO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbk9wdGlvbk1vdXNlRW50ZXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25Nb3VzZUVudGVyLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICBvcHRpb246IHRoaXMub3B0aW9uLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgfSk7XG4gICAgfVxufVxuLy8gQHRzLWlnbm9yZVxuLyoqXG4gKiBNdWx0aVNlbGVjdCBpcyB1c2VkIHRvIHNlbGVjdCBtdWx0aXBsZSBpdGVtcyBmcm9tIGEgY29sbGVjdGlvbi5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1tdWx0aVNlbGVjdCwgcC1tdWx0aXNlbGVjdCwgcC1tdWx0aS1zZWxlY3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTXVsdGlTZWxlY3RJdGVtLCBPdmVybGF5LCBTaGFyZWRNb2R1bGUsIFRvb2x0aXAsIFNjcm9sbGVyLCBBdXRvRm9jdXMsIENoZWNrSWNvbiwgU2VhcmNoSWNvbiwgVGltZXNJY29uLCBDaGV2cm9uRG93bkljb24sIEljb25GaWVsZCwgSW5wdXRJY29uLCBJbnB1dFRleHQsIENoaXAsIENoZWNrYm94LCBGb3Jtc01vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGVcIiBbYXR0ci5kYXRhLXAtaGlkZGVuLWFjY2Vzc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI2ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwidG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgICAgICAgICAgICAgIFtwb3NpdGlvblN0eWxlXT1cInRvb2x0aXBQb3NpdGlvblN0eWxlXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcFN0eWxlQ2xhc3NdPVwidG9vbHRpcFN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCInbGlzdGJveCdcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3ZlcmxheVZpc2libGUgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwib3ZlcmxheVZpc2libGUgPyBpZCArICdfbGlzdCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIhZGlzYWJsZWQgPyB0YWJpbmRleCA6IC0xXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiZm9jdXNlZCA/IGZvY3VzZWRPcHRpb25JZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3BBdXRvRm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgICAgICBbYXR0ci52YWx1ZV09XCJsYWJlbCgpIHx8ICdlbXB0eSdcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicC1tdWx0aXNlbGVjdC1sYWJlbC1jb250YWluZXJcIlxuICAgICAgICAgICAgW3BUb29sdGlwXT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwibGFiZWxDb250YWluZXJNb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCJfZGlzYWJsZVRvb2x0aXBcIlxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgICAgICAgICAgW3Bvc2l0aW9uU3R5bGVdPVwidG9vbHRpcFBvc2l0aW9uU3R5bGVcIlxuICAgICAgICAgICAgW3Rvb2x0aXBTdHlsZUNsYXNzXT1cInRvb2x0aXBTdHlsZUNsYXNzXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJsYWJlbENsYXNzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWxlY3RlZEl0ZW1zVGVtcGxhdGUgJiYgIV9zZWxlY3RlZEl0ZW1zVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXkgPT09ICdjb21tYSdcIj57eyBsYWJlbCgpIHx8ICdlbXB0eScgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXkgPT09ICdjaGlwJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAjdG9rZW4gKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2hpcFNlbGVjdGVkSXRlbXMoKTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwicC1tdWx0aXNlbGVjdC1jaGlwLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1jaGlwIHN0eWxlQ2xhc3M9XCJwLW11bHRpc2VsZWN0LWNoaXBcIiBbbGFiZWxdPVwiZ2V0TGFiZWxCeVZhbHVlKGl0ZW0pXCIgW3JlbW92YWJsZV09XCJ0cnVlXCIgKG9uUmVtb3ZlKT1cInJlbW92ZU9wdGlvbihpdGVtLCAkZXZlbnQpXCIgW3JlbW92ZUljb25dPVwiY2hpcEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaXBJY29uVGVtcGxhdGUgfHwgX2NoaXBJY29uVGVtcGxhdGUgfHwgcmVtb3ZlVG9rZW5JY29uVGVtcGxhdGUgfHwgX3JlbW92ZVRva2VuSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3JlbW92ZWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLW11bHRpc2VsZWN0LWNoaXAtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNoaXBJY29uVGVtcGxhdGUgfHwgX2NoaXBJY29uVGVtcGxhdGUgfHwgcmVtb3ZlVG9rZW5JY29uVGVtcGxhdGUgfHwgX3JlbW92ZVRva2VuSWNvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVPcHRpb24oaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2NsZWFyaWNvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGlwSWNvblRlbXBsYXRlIHx8IF9jaGlwSWNvblRlbXBsYXRlIHx8IHJlbW92ZVRva2VuSWNvblRlbXBsYXRlIHx8IF9yZW1vdmVUb2tlbkljb25UZW1wbGF0ZTsgY29udGV4dDogeyBjbGFzczogJ3AtbXVsdGlzZWxlY3QtY2hpcC1pY29uJyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vZGVsVmFsdWUoKSB8fCBtb2RlbFZhbHVlKCkubGVuZ3RoID09PSAwXCI+e3sgcGxhY2Vob2xkZXIoKSB8fCBkZWZhdWx0TGFiZWwgfHwgJ2VtcHR5JyB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VsZWN0ZWRJdGVtc1RlbXBsYXRlIHx8IF9zZWxlY3RlZEl0ZW1zVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBzZWxlY3RlZE9wdGlvbnMsIHJlbW92ZUNoaXA6IHJlbW92ZU9wdGlvbi5iaW5kKHRoaXMpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVmlzaWJsZUNsZWFySWNvblwiPlxuICAgICAgICAgICAgPFRpbWVzSWNvbiAqbmdJZj1cIiFjbGVhckljb25UZW1wbGF0ZSAmJiAhX2NsZWFySWNvblRlbXBsYXRlXCIgY2xhc3M9XCJwLW11bHRpc2VsZWN0LWNsZWFyLWljb25cIiAoY2xpY2spPVwiY2xlYXIoJGV2ZW50KVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInY2xlYXJpY29uJ1wiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjbGVhckljb25UZW1wbGF0ZSB8fCBfY2xlYXJJY29uVGVtcGxhdGVcIiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtY2xlYXItaWNvblwiIChjbGljayk9XCJjbGVhcigkZXZlbnQpXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjbGVhcmljb24nXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNsZWFySWNvblRlbXBsYXRlIHx8IF9jbGVhckljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1tdWx0aXNlbGVjdC1kcm9wZG93blwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmc7IGVsc2UgZWxzZUJsb2NrXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdJY29uVGVtcGxhdGUgfHwgX2xvYWRpbmdJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdJY29uVGVtcGxhdGUgfHwgX2xvYWRpbmdJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmdJY29uVGVtcGxhdGUgJiYgIV9sb2FkaW5nSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9hZGluZ0ljb25cIiBbbmdDbGFzc109XCIncC1tdWx0aXNlbGVjdC1sb2FkaW5nLWljb24gcGktc3BpbiAnICsgbG9hZGluZ0ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWxvYWRpbmdJY29uXCIgW2NsYXNzXT1cIidwLW11bHRpc2VsZWN0LWxvYWRpbmctaWNvbiBwaSBwaS1zcGlubmVyIHBpLXNwaW4nXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VCbG9jaz5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRyb3Bkb3duSWNvblRlbXBsYXRlICYmICFfZHJvcGRvd25JY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkcm9wZG93bkljb25cIiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtZHJvcGRvd24taWNvblwiIFtuZ0NsYXNzXT1cImRyb3Bkb3duSWNvblwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndHJpZ2dlcmljb24nXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duSWNvbiAqbmdJZj1cIiFkcm9wZG93bkljb25cIiBbc3R5bGVDbGFzc109XCIncC1tdWx0aXNlbGVjdC1kcm9wZG93bi1pY29uJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndHJpZ2dlcmljb24nXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkcm9wZG93bkljb25UZW1wbGF0ZSB8fCBfZHJvcGRvd25JY29uVGVtcGxhdGVcIiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtZHJvcGRvd24taWNvblwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndHJpZ2dlcmljb24nXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wZG93bkljb25UZW1wbGF0ZSB8fCBfZHJvcGRvd25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cC1vdmVybGF5XG4gICAgICAgICAgICAjb3ZlcmxheVxuICAgICAgICAgICAgWyh2aXNpYmxlKV09XCJvdmVybGF5VmlzaWJsZVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJvdmVybGF5T3B0aW9uc1wiXG4gICAgICAgICAgICBbdGFyZ2V0XT1cIidAcGFyZW50J1wiXG4gICAgICAgICAgICBbYXBwZW5kVG9dPVwiYXBwZW5kVG9cIlxuICAgICAgICAgICAgW2F1dG9aSW5kZXhdPVwiYXV0b1pJbmRleFwiXG4gICAgICAgICAgICBbYmFzZVpJbmRleF09XCJiYXNlWkluZGV4XCJcbiAgICAgICAgICAgIFtzaG93VHJhbnNpdGlvbk9wdGlvbnNdPVwic2hvd1RyYW5zaXRpb25PcHRpb25zXCJcbiAgICAgICAgICAgIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiaGlkZVRyYW5zaXRpb25PcHRpb25zXCJcbiAgICAgICAgICAgIChvbkFuaW1hdGlvblN0YXJ0KT1cIm9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KCRldmVudClcIlxuICAgICAgICAgICAgKG9uSGlkZSk9XCJoaWRlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGRpdiBbYXR0ci5pZF09XCJpZCArICdfbGlzdCdcIiBbbmdDbGFzc109XCIncC1tdWx0aXNlbGVjdC1vdmVybGF5IHAtY29tcG9uZW50J1wiIFtuZ1N0eWxlXT1cInBhbmVsU3R5bGVcIiBbY2xhc3NdPVwicGFuZWxTdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAjZmlyc3RIaWRkZW5Gb2N1c2FibGVFbFxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGUgcC1oaWRkZW4tZm9jdXNhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRmlyc3RIaWRkZW5Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcC1oaWRkZW4tYWNjZXNzaWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcC1oaWRkZW4tZm9jdXNhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlIHx8IF9oZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tdWx0aXNlbGVjdC1oZWFkZXJcIiAqbmdJZj1cInNob3dIZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInAtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlclRlbXBsYXRlIHx8IF9maWx0ZXJUZW1wbGF0ZTsgZWxzZSBidWlsdEluRmlsdGVyRWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJUZW1wbGF0ZSB8fCBfZmlsdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uczogZmlsdGVyT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYnVpbHRJbkZpbHRlckVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2hlY2tib3ggW25nTW9kZWxdPVwiYWxsU2VsZWN0ZWQoKVwiIFtiaW5hcnldPVwidHJ1ZVwiIChvbkNoYW5nZSk9XCJvblRvZ2dsZUFsbCgkZXZlbnQpXCIgKm5nSWY9XCJzaG93VG9nZ2xlQWxsICYmICFzZWxlY3Rpb25MaW1pdFwiIFt2YXJpYW50XT1cInZhcmlhbnRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAjaGVhZGVyQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hlY2tib3hpY29uIGxldC1rbGFzcz1cImNsYXNzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tJY29uICpuZ0lmPVwiIWhlYWRlckNoZWNrYm94SWNvblRlbXBsYXRlICYmICFfaGVhZGVyQ2hlY2tib3hJY29uVGVtcGxhdGUgJiYgYWxsU2VsZWN0ZWQoKVwiIFtzdHlsZUNsYXNzXT1cImtsYXNzXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDaGVja2JveEljb25UZW1wbGF0ZSB8fCBfaGVhZGVyQ2hlY2tib3hJY29uVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGFsbFNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsU2VsZWN0ZWQ6IHBhcnRpYWxTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGtsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWNoZWNrYm94PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtZmlsdGVyLWNvbnRhaW5lclwiICpuZ0lmPVwiZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWljb25maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmaWx0ZXJJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJ2YXJpYW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInNlYXJjaGJveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImlkICsgJ19saXN0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImZvY3VzZWRPcHRpb25JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIl9maWx0ZXJWYWx1ZSgpIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25GaWx0ZXJJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkZpbHRlcktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkZpbHRlckJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLW11bHRpc2VsZWN0LWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJmaWx0ZXJQbGFjZUhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhRmlsdGVyTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWlucHV0aWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VhcmNoSWNvbiBbc3R5bGVDbGFzc109XCIncC1tdWx0aXNlbGVjdC1maWx0ZXItaWNvbidcIiAqbmdJZj1cIiFmaWx0ZXJJY29uVGVtcGxhdGUgJiYgIV9maWx0ZXJJY29uVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVySWNvblRlbXBsYXRlIHx8IF9maWx0ZXJJY29uVGVtcGxhdGVcIiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtZmlsdGVyLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVySWNvblRlbXBsYXRlIHx8IF9maWx0ZXJJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dGljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1pY29uZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtbGlzdC1jb250YWluZXJcIiBbc3R5bGUubWF4LWhlaWdodF09XCJ2aXJ0dWFsU2Nyb2xsID8gJ2F1dG8nIDogc2Nyb2xsSGVpZ2h0IHx8ICdhdXRvJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtc2Nyb2xsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZpcnR1YWxTY3JvbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzY3JvbGxlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJ2aXNpYmxlT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6IHNjcm9sbEhlaWdodCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbVNpemVdPVwidmlydHVhbFNjcm9sbEl0ZW1TaXplIHx8IF9pdGVtU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9TaXplXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhenldPVwibGF6eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uTGF6eUxvYWQpPVwib25MYXp5TG9hZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInZpcnR1YWxTY3JvbGxPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbnRlbnQgbGV0LWl0ZW1zIGxldC1zY3JvbGxlck9wdGlvbnM9XCJvcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidWlsZEluSXRlbXM7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtcywgb3B0aW9uczogc2Nyb2xsZXJPcHRpb25zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkZXJUZW1wbGF0ZSB8fCBfbG9hZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXIgbGV0LXNjcm9sbGVyT3B0aW9ucz1cIm9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkZXJUZW1wbGF0ZSB8fCBfbG9hZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uczogc2Nyb2xsZXJPcHRpb25zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1zY3JvbGxlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidWlsZEluSXRlbXM7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2aXNpYmxlT3B0aW9ucygpLCBvcHRpb25zOiB7fSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNidWlsZEluSXRlbXMgbGV0LWl0ZW1zIGxldC1zY3JvbGxlck9wdGlvbnM9XCJvcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICNpdGVtcyBjbGFzcz1cInAtbXVsdGlzZWxlY3QtbGlzdFwiIFtuZ0NsYXNzXT1cInNjcm9sbGVyT3B0aW9ucy5jb250ZW50U3R5bGVDbGFzc1wiIFtzdHlsZV09XCJzY3JvbGxlck9wdGlvbnMuY29udGVudFN0eWxlXCIgcm9sZT1cImxpc3Rib3hcIiBhcmlhLW11bHRpc2VsZWN0YWJsZT1cInRydWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImxpc3RMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LW9wdGlvbiBbbmdGb3JPZl09XCJpdGVtc1wiIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wdGlvbkdyb3VwKG9wdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW2F0dHIuaWRdPVwiaWQgKyAnXycgKyBnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpXCIgY2xhc3M9XCJwLW11bHRpc2VsZWN0LW9wdGlvbi1ncm91cFwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBzY3JvbGxlck9wdGlvbnMuaXRlbVNpemUgKyAncHgnIH1cIiByb2xlPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWdyb3VwVGVtcGxhdGVcIj57eyBnZXRPcHRpb25Hcm91cExhYmVsKG9wdGlvbi5vcHRpb25Hcm91cCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uLm9wdGlvbkdyb3VwIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzT3B0aW9uR3JvdXAob3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLW11bHRpc2VsZWN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJ18nICsgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25dPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0ZWQob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJnZXRPcHRpb25MYWJlbChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGUgfHwgX2l0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja0ljb25UZW1wbGF0ZV09XCJjaGVja0ljb25UZW1wbGF0ZSB8fCBfY2hlY2tJY29uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbUNoZWNrYm94SWNvblRlbXBsYXRlXT1cIml0ZW1DaGVja2JveEljb25UZW1wbGF0ZSB8fCBfaXRlbUNoZWNrYm94SWNvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cInNjcm9sbGVyT3B0aW9ucy5pdGVtU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb2N1c2VkXT1cImZvY3VzZWRPcHRpb25JbmRleCgpID09PSBnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFQb3NJbnNldF09XCJnZXRBcmlhUG9zSW5zZXQoZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVNldFNpemVdPVwiYXJpYVNldFNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJ2YXJpYW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib25PcHRpb25TZWxlY3QoJGV2ZW50LCBmYWxzZSwgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25Nb3VzZUVudGVyKT1cIm9uT3B0aW9uTW91c2VFbnRlcigkZXZlbnQsIGdldE9wdGlvbkluZGV4KGksIHNjcm9sbGVyT3B0aW9ucykpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLW11bHRpc2VsZWN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJoYXNGaWx0ZXIoKSAmJiBpc0VtcHR5KClcIiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtZW1wdHktbWVzc2FnZVwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBzY3JvbGxlck9wdGlvbnMuaXRlbVNpemUgKyAncHgnIH1cIiByb2xlPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFlbXB0eUZpbHRlclRlbXBsYXRlICYmICFfZW1wdHlGaWx0ZXJUZW1wbGF0ZSAmJiAhZW1wdHlUZW1wbGF0ZSAmJiAhX2VtcHR5VGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlbXB0eUZpbHRlck1lc3NhZ2VMYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5RmlsdGVyVGVtcGxhdGUgfHwgX2VtcHR5RmlsdGVyVGVtcGxhdGUgfHwgZW1wdHlUZW1wbGF0ZSB8fCBfZW1wdHlGaWx0ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCIhaGFzRmlsdGVyKCkgJiYgaXNFbXB0eSgpXCIgY2xhc3M9XCJwLW11bHRpc2VsZWN0LWVtcHR5LW1lc3NhZ2VcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogc2Nyb2xsZXJPcHRpb25zLml0ZW1TaXplICsgJ3B4JyB9XCIgcm9sZT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghZW1wdHlUZW1wbGF0ZSAmJiAhX2VtcHR5VGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlbXB0eU1lc3NhZ2VMYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5VGVtcGxhdGUgfHwgX2VtcHR5VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmb290ZXJGYWNldCB8fCBmb290ZXJUZW1wbGF0ZSB8fCBfZm9vdGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInAtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlIHx8IF9mb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgI2xhc3RIaWRkZW5Gb2N1c2FibGVFbFxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGUgcC1oaWRkZW4tZm9jdXNhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uTGFzdEhpZGRlbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wLWhpZGRlbi1hY2Nlc3NpYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wLWhpZGRlbi1mb2N1c2FibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3Atb3ZlcmxheT5cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW01VTFRJU0VMRUNUX1ZBTFVFX0FDQ0VTU09SLCBNdWx0aVNlbGVjdFN0eWxlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgICAgICdbc3R5bGVdJzogJ3N0eWxlJyxcbiAgICAgICAgJyhjbGljayknOiAnb25Db250YWluZXJDbGljaygkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3QgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdDaGVja2VkLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvbXBvbmVudFxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgaW5wdXQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIG92ZXJsYXkgcGFuZWwuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgcGFuZWxTdHlsZTogYW55O1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBvdmVybGF5IHBhbmVsIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgcGFuZWxTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSWRlbnRpZmllciBvZiB0aGUgZm9jdXMgaW5wdXQgdG8gbWF0Y2ggYSBsYWJlbCBkZWZpbmVkIGZvciB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3BhbnMgMTAwJSB3aWR0aCBvZiB0aGUgY29udGFpbmVyIHdoZW4gZW5hYmxlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZmx1aWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IGNhbm5vdCBiZSBlZGl0ZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJlYWRvbmx5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZGlzcGxheSBvcHRpb25zIGFzIGdyb3VwZWQgd2hlbiBuZXN0ZWQgb3B0aW9ucyBhcmUgcHJvdmlkZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGdyb3VwOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gc3BlY2lmaWVkLCBkaXNwbGF5cyBhbiBpbnB1dCBmaWVsZCB0byBmaWx0ZXIgdGhlIGl0ZW1zIG9uIGtleXVwLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBmaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgcGxhY2Vob2xkZXIgb2YgdGhlIGZpbHRlciBpbnB1dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJQbGFjZUhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIExvY2FsZSB0byB1c2UgaW4gZmlsdGVyaW5nLiBUaGUgZGVmYXVsdCBsb2NhbGUgaXMgdGhlIGhvc3QgZW52aXJvbm1lbnQncyBjdXJyZW50IGxvY2FsZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJMb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIG9wdGlvbnMgcGFuZWwuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG92ZXJsYXlWaXNpYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEluZGV4IG9mIHRoZSBlbGVtZW50IGluIHRhYmJpbmcgb3JkZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGFiaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IDA7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBpbnB1dCB2YXJpYW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdmFyaWFudDogJ2ZpbGxlZCcgfCAnb3V0bGluZWQnID0gJ291dGxpbmVkJztcbiAgICAvKipcbiAgICAgKiBUYXJnZXQgZWxlbWVudCB0byBhdHRhY2ggdGhlIG92ZXJsYXksIHZhbGlkIHZhbHVlcyBhcmUgXCJib2R5XCIgb3IgYSBsb2NhbCBuZy10ZW1wbGF0ZSB2YXJpYWJsZSBvZiBhbm90aGVyIGVsZW1lbnQgKG5vdGU6IHVzZSBiaW5kaW5nIHdpdGggYnJhY2tldHMgZm9yIHRlbXBsYXRlIHZhcmlhYmxlcywgZS5nLiBbYXBwZW5kVG9dPVwibXlkaXZcIiBmb3IgYSBkaXYgZWxlbWVudCBoYXZpbmcgI215ZGl2IGFzIHZhcmlhYmxlIG5hbWUpLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB8IGFueTtcbiAgICAvKipcbiAgICAgKiBBIHByb3BlcnR5IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgdmFsdWUgaW4gb3B0aW9ucy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkYXRhS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRXN0YWJsaXNoZXMgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBjb21wb25lbnQgYW5kIGxhYmVsKHMpIHdoZXJlIGl0cyB2YWx1ZSBzaG91bGQgYmUgb25lIG9yIG1vcmUgZWxlbWVudCBJRHMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgbGFiZWxzIG9mIHNlbGVjdGVkIGl0ZW0gbGFiZWxzIG9yIHVzZSBkZWZhdWx0IGxhYmVsLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCBkaXNwbGF5U2VsZWN0ZWRMYWJlbCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzcGxheVNlbGVjdGVkTGFiZWwgPSB2YWw7XG4gICAgfVxuICAgIGdldCBkaXNwbGF5U2VsZWN0ZWRMYWJlbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlTZWxlY3RlZExhYmVsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWNpZGVzIGhvdyBtYW55IHNlbGVjdGVkIGl0ZW0gbGFiZWxzIHRvIHNob3cgYXQgbW9zdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKiBAZGVmYXVsdFZhbHVlIDNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgbWF4U2VsZWN0ZWRMYWJlbHModmFsOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX21heFNlbGVjdGVkTGFiZWxzID0gdmFsO1xuICAgIH1cbiAgICBnZXQgbWF4U2VsZWN0ZWRMYWJlbHMoKTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhTZWxlY3RlZExhYmVscztcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVjaWRlcyBob3cgbWFueSBzZWxlY3RlZCBpdGVtIGxhYmVscyB0byBzaG93IGF0IG1vc3QuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc2VsZWN0aW9uTGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBMYWJlbCB0byBkaXNwbGF5IGFmdGVyIGV4Y2VlZGluZyBtYXggc2VsZWN0ZWQgbGFiZWxzIGUuZy4gKHswfSBpdGVtcyBzZWxlY3RlZCksIGRlZmF1bHRzIFwiZWxsaXBzaXNcIiBrZXl3b3JkIHRvIGluZGljYXRlIGEgdGV4dC1vdmVyZmxvdy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNoZWNrYm94IGF0IGhlYWRlciB0byB0b2dnbGUgYWxsIGl0ZW1zIGF0IG9uY2UuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dUb2dnbGVBbGw6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFRleHQgdG8gZGlzcGxheSB3aGVuIGZpbHRlcmluZyBkb2VzIG5vdCByZXR1cm4gYW55IHJlc3VsdHMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZW1wdHlGaWx0ZXJNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgICAvKipcbiAgICAgKiBUZXh0IHRvIGRpc3BsYXkgd2hlbiB0aGVyZSBpcyBubyBkYXRhLiBEZWZhdWx0cyB0byBnbG9iYWwgdmFsdWUgaW4gaTE4biB0cmFuc2xhdGlvbiBjb25maWd1cmF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGVtcHR5TWVzc2FnZTogc3RyaW5nID0gJyc7XG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHRoZSBmaWx0ZXIgdmFsdWUgd2hlbiBoaWRpbmcgdGhlIGRyb3Bkb3duLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXNldEZpbHRlck9uSGlkZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEljb24gY2xhc3Mgb2YgdGhlIGRyb3Bkb3duIGljb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZHJvcGRvd25JY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSWNvbiBjbGFzcyBvZiB0aGUgY2hpcCBpY29uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGNoaXBJY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgbGFiZWwgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvbkxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgdmFsdWUgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvblZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZGlzYWJsZWQgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvbkRpc2FibGVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgbGFiZWwgZmllbGQgb2YgYW4gb3B0aW9uIGdyb3VwLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvbkdyb3VwTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdsYWJlbCc7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgb3B0aW9ucyBmaWVsZCBvZiBhbiBvcHRpb24gZ3JvdXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBDaGlsZHJlbjogc3RyaW5nID0gJ2l0ZW1zJztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIGhlYWRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0hlYWRlcjogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogV2hlbiBmaWx0ZXJpbmcgaXMgZW5hYmxlZCwgZmlsdGVyQnkgZGVjaWRlcyB3aGljaCBmaWVsZCBvciBmaWVsZHMgKGNvbW1hIHNlcGFyYXRlZCkgdG8gc2VhcmNoIGFnYWluc3QuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZmlsdGVyQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBIZWlnaHQgb2YgdGhlIHZpZXdwb3J0IGluIHBpeGVscywgYSBzY3JvbGxiYXIgaXMgZGVmaW5lZCBpZiBoZWlnaHQgb2YgbGlzdCBleGNlZWRzIHRoaXMgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSAnMjAwcHgnO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgZGF0YSBpcyBsb2FkZWQgYW5kIGludGVyYWN0ZWQgd2l0aCBpbiBsYXp5IG1hbm5lci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbGF6eTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGRhdGEgc2hvdWxkIGJlIGxvYWRlZCBvbiBkZW1hbmQgZHVyaW5nIHNjcm9sbC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdmlydHVhbFNjcm9sbDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBtdWx0aXNlbGVjdCBpcyBpbiBsb2FkaW5nIHN0YXRlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBsb2FkaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogSGVpZ2h0IG9mIGFuIGl0ZW0gaW4gdGhlIGxpc3QgZm9yIFZpcnR1YWxTY3JvbGxpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdmlydHVhbFNjcm9sbEl0ZW1TaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSWNvbiB0byBkaXNwbGF5IGluIGxvYWRpbmcgc3RhdGUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbG9hZGluZ0ljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHVzZSB0aGUgc2Nyb2xsZXIgZmVhdHVyZS4gVGhlIHByb3BlcnRpZXMgb2Ygc2Nyb2xsZXIgY29tcG9uZW50IGNhbiBiZSB1c2VkIGxpa2UgYW4gb2JqZWN0IGluIGl0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGxPcHRpb25zOiBTY3JvbGxlck9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byB1c2Ugb3ZlcmxheSBBUEkgZmVhdHVyZS4gVGhlIHByb3BlcnRpZXMgb2Ygb3ZlcmxheSBBUEkgY2FuIGJlIHVzZWQgbGlrZSBhbiBvYmplY3QgaW4gaXQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3ZlcmxheU9wdGlvbnM6IE92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIGZpbHRlciBpbnB1dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhRmlsdGVyTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGhvdyB0aGUgaXRlbXMgYXJlIGZpbHRlcmVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlck1hdGNoTW9kZTogJ2NvbnRhaW5zJyB8ICdzdGFydHNXaXRoJyB8ICdlbmRzV2l0aCcgfCAnZXF1YWxzJyB8ICdub3RFcXVhbHMnIHwgJ2luJyB8ICdsdCcgfCAnbHRlJyB8ICdndCcgfCAnZ3RlJyA9ICdjb250YWlucyc7XG4gICAgLyoqXG4gICAgICogQWR2aXNvcnkgaW5mb3JtYXRpb24gdG8gZGlzcGxheSBpbiBhIHRvb2x0aXAgb24gaG92ZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdG9vbHRpcDogc3RyaW5nID0gJyc7XG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90dG9tJyA9ICdyaWdodCc7XG4gICAgLyoqXG4gICAgICogVHlwZSBvZiBDU1MgcG9zaXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uU3R5bGU6IHN0cmluZyA9ICdhYnNvbHV0ZSc7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIHRvb2x0aXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdG9vbHRpcFN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIGZvY3VzIHRvIHRoZSBmaWx0ZXIgZWxlbWVudCB3aGVuIHRoZSBvdmVybGF5IGlzIHNob3duLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXNGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGhvdyB0aGUgc2VsZWN0ZWQgaXRlbXMgYXJlIGRpc3BsYXllZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkaXNwbGF5OiBzdHJpbmcgfCAnY29tbWEnIHwgJ2NoaXAnID0gJ2NvbW1hJztcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBhdXRvY29tcGxldGUgaXMgYWN0aXZlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGF1dG9jb21wbGV0ZTogc3RyaW5nID0gJ29mZic7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNpemU6ICdsYXJnZScgfCAnc21hbGwnO1xuICAgIC8qKlxuICAgICAqIFdoZW4gZW5hYmxlZCwgYSBjbGVhciBpY29uIGlzIGRpc3BsYXllZCB0byBjbGVhciB0aGUgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCBzaG91bGQgYXV0b21hdGljYWxseSBnZXQgZm9jdXMgb24gbG9hZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b2ZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHYxNC4yLjAsIHVzZSBvdmVybGF5T3B0aW9ucyBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBtYW5hZ2UgbGF5ZXJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGF1dG9aSW5kZXgoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvWkluZGV4O1xuICAgIH1cbiAgICBzZXQgYXV0b1pJbmRleCh2YWw6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fYXV0b1pJbmRleCA9IHZhbDtcbiAgICAgICAgY29uc29sZS5sb2coJ1RoZSBhdXRvWkluZGV4IHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgc2luY2UgdjE0LjIuMCwgdXNlIG92ZXJsYXlPcHRpb25zIHByb3BlcnR5IGluc3RlYWQuJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHYxNC4yLjAsIHVzZSBvdmVybGF5T3B0aW9ucyBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqIEJhc2UgekluZGV4IHZhbHVlIHRvIHVzZSBpbiBsYXllcmluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgYmFzZVpJbmRleCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmFzZVpJbmRleDtcbiAgICB9XG4gICAgc2V0IGJhc2VaSW5kZXgodmFsOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fYmFzZVpJbmRleCA9IHZhbDtcbiAgICAgICAgY29uc29sZS5sb2coJ1RoZSBiYXNlWkluZGV4IHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgc2luY2UgdjE0LjIuMCwgdXNlIG92ZXJsYXlPcHRpb25zIHByb3BlcnR5IGluc3RlYWQuJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRyYW5zaXRpb24gb3B0aW9ucyBvZiB0aGUgc2hvdyBhbmltYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdjE0LjIuMCwgdXNlIG92ZXJsYXlPcHRpb25zIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IHNob3dUcmFuc2l0aW9uT3B0aW9ucygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd1RyYW5zaXRpb25PcHRpb25zO1xuICAgIH1cbiAgICBzZXQgc2hvd1RyYW5zaXRpb25PcHRpb25zKHZhbDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3Nob3dUcmFuc2l0aW9uT3B0aW9ucyA9IHZhbDtcbiAgICAgICAgY29uc29sZS5sb2coJ1RoZSBzaG93VHJhbnNpdGlvbk9wdGlvbnMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZCBzaW5jZSB2MTQuMi4wLCB1c2Ugb3ZlcmxheU9wdGlvbnMgcHJvcGVydHkgaW5zdGVhZC4nKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBoaWRlIGFuaW1hdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2MTQuMi4wLCB1c2Ugb3ZlcmxheU9wdGlvbnMgcHJvcGVydHkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgaGlkZVRyYW5zaXRpb25PcHRpb25zKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlVHJhbnNpdGlvbk9wdGlvbnM7XG4gICAgfVxuICAgIHNldCBoaWRlVHJhbnNpdGlvbk9wdGlvbnModmFsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5faGlkZVRyYW5zaXRpb25PcHRpb25zID0gdmFsO1xuICAgICAgICBjb25zb2xlLmxvZygnVGhlIGhpZGVUcmFuc2l0aW9uT3B0aW9ucyBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIHNpbmNlIHYxNC4yLjAsIHVzZSBvdmVybGF5T3B0aW9ucyBwcm9wZXJ0eSBpbnN0ZWFkLicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBMYWJlbCB0byBkaXNwbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHNlbGVjdGlvbnMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIHBsYWNlaG9sZGVyIGluc3RlYWQuXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IGRlZmF1bHRMYWJlbCh2YWw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9kZWZhdWx0TGFiZWwgPSB2YWw7XG4gICAgICAgIGNvbnNvbGUubG9nKCdkZWZhdWx0TGFiZWwgcHJvcGVydHkgaXMgZGVwcmVjYXRlZCBzaW5jZSAxNi42LjAsIHVzZSBwbGFjZWhvbGRlciBpbnN0ZWFkJyk7XG4gICAgfVxuICAgIGdldCBkZWZhdWx0TGFiZWwoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRMYWJlbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTGFiZWwgdG8gZGlzcGxheSB3aGVuIHRoZXJlIGFyZSBubyBzZWxlY3Rpb25zLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCBwbGFjZWhvbGRlcih2YWw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlci5zZXQodmFsKTtcbiAgICB9XG4gICAgZ2V0IHBsYWNlaG9sZGVyKCk6IFNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyLmFzUmVhZG9ubHkoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2Ygb2JqZWN0cyB0byBkaXNwbGF5IGFzIHRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgb3B0aW9ucygpOiBhbnlbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9vcHRpb25zKCk7XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cbiAgICBzZXQgb3B0aW9ucyh2YWw6IGFueVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICghZGVlcEVxdWFscyh0aGlzLl9vcHRpb25zKCksIHZhbCkpIHtcbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuc2V0KHZhbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiBzcGVjaWZpZWQsIGZpbHRlciBkaXNwbGF5cyB3aXRoIHRoaXMgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGZpbHRlclZhbHVlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyVmFsdWUoKTtcbiAgICB9XG4gICAgc2V0IGZpbHRlclZhbHVlKHZhbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9maWx0ZXJWYWx1ZS5zZXQodmFsKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSXRlbSBzaXplIG9mIGl0ZW0gdG8gYmUgdmlydHVhbCBzY3JvbGxlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgdmlydHVhbFNjcm9sbEl0ZW1TaXplIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGl0ZW1TaXplKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtU2l6ZTtcbiAgICB9XG4gICAgc2V0IGl0ZW1TaXplKHZhbDogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2l0ZW1TaXplID0gdmFsO1xuICAgICAgICBjb25zb2xlLmxvZygnVGhlIGl0ZW1TaXplIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQsIHVzZSB2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgcHJvcGVydHkgaW5zdGVhZC4nKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hldGhlciBhbGwgZGF0YSBpcyBzZWxlY3RlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgc2VsZWN0QWxsKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdEFsbDtcbiAgICB9XG4gICAgc2V0IHNlbGVjdEFsbCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0QWxsID0gdmFsdWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGZvY3VzIG9uIG9wdGlvbnMgd2hlbiBob3ZlcmluZyBvdmVyIHRoZW0sIGRlZmF1bHRzIHRvIG9wdGlvbkxhYmVsLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBmb2N1c09uSG92ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIEZpZWxkcyB1c2VkIHdoZW4gZmlsdGVyaW5nIHRoZSBvcHRpb25zLCBkZWZhdWx0cyB0byBvcHRpb25MYWJlbC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJGaWVsZHM6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgaWYgdGhlIG9wdGlvbiB3aWxsIGJlIHNlbGVjdGVkIG9uIGZvY3VzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZWxlY3RPbkZvY3VzOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBmb2N1cyBvbiB0aGUgZmlyc3QgdmlzaWJsZSBvciBzZWxlY3RlZCBlbGVtZW50IHdoZW4gdGhlIG92ZXJsYXkgcGFuZWwgaXMgc2hvd24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9PcHRpb25Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHZhbHVlIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIHtNdWx0aVNlbGVjdENoYW5nZUV2ZW50fSBldmVudCAtIEN1c3RvbSBjaGFuZ2UgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TXVsdGlTZWxlY3RDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE11bHRpU2VsZWN0Q2hhbmdlRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZGF0YSBpcyBmaWx0ZXJlZC5cbiAgICAgKiBAcGFyYW0ge011bHRpU2VsZWN0RmlsdGVyRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIGZpbHRlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25GaWx0ZXI6IEV2ZW50RW1pdHRlcjxNdWx0aVNlbGVjdEZpbHRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TXVsdGlTZWxlY3RGaWx0ZXJFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBtdWx0aXNlbGVjdCByZWNlaXZlcyBmb2N1cy5cbiAgICAgKiBAcGFyYW0ge011bHRpU2VsZWN0Rm9jdXNFdmVudH0gZXZlbnQgLSBDdXN0b20gZm9jdXMgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxNdWx0aVNlbGVjdEZvY3VzRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aVNlbGVjdEZvY3VzRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gbXVsdGlzZWxlY3QgbG9zZXMgZm9jdXMuXG4gICAgICogQHBhcmFtIHtNdWx0aVNlbGVjdEJsdXJFdmVudH0gZXZlbnQgLSBDdXN0b20gYmx1ciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8TXVsdGlTZWxlY3RCbHVyRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aVNlbGVjdEJsdXJFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBjb21wb25lbnQgaXMgY2xpY2tlZC5cbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGlucHV0IGZpZWxkIGlzIGNsZWFyZWQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2xlYXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBvdmVybGF5IHBhbmVsIGJlY29tZXMgdmlzaWJsZS5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25QYW5lbFNob3c6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBvdmVybGF5IHBhbmVsIGJlY29tZXMgaGlkZGVuLlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblBhbmVsSGlkZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSBpbiBsYXp5IG1vZGUgdG8gbG9hZCBuZXcgZGF0YS5cbiAgICAgKiBAcGFyYW0ge011bHRpU2VsZWN0TGF6eUxvYWRFdmVudH0gZXZlbnQgLSBMYXp5IGxvYWQgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uTGF6eUxvYWQ6IEV2ZW50RW1pdHRlcjxNdWx0aVNlbGVjdExhenlMb2FkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aVNlbGVjdExhenlMb2FkRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIGluIGxhenkgbW9kZSB0byBsb2FkIG5ldyBkYXRhLlxuICAgICAqIEBwYXJhbSB7TXVsdGlTZWxlY3RSZW1vdmVFdmVudH0gZXZlbnQgLSBSZW1vdmUgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uUmVtb3ZlOiBFdmVudEVtaXR0ZXI8TXVsdGlTZWxlY3RSZW1vdmVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE11bHRpU2VsZWN0UmVtb3ZlRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gYWxsIGRhdGEgaXMgc2VsZWN0ZWQuXG4gICAgICogQHBhcmFtIHtNdWx0aVNlbGVjdFNlbGVjdEFsbENoYW5nZUV2ZW50fSBldmVudCAtIEN1c3RvbSBzZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0QWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TXVsdGlTZWxlY3RTZWxlY3RBbGxDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE11bHRpU2VsZWN0U2VsZWN0QWxsQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdvdmVybGF5Jykgb3ZlcmxheVZpZXdDaGlsZDogTnVsbGFibGU8T3ZlcmxheT47XG5cbiAgICBAVmlld0NoaWxkKCdmaWx0ZXJJbnB1dCcpIGZpbHRlcklucHV0Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnZm9jdXNJbnB1dCcpIGZvY3VzSW5wdXRWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnaXRlbXMnKSBpdGVtc1ZpZXdDaGlsZDogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdzY3JvbGxlcicpIHNjcm9sbGVyOiBOdWxsYWJsZTxTY3JvbGxlcj47XG5cbiAgICBAVmlld0NoaWxkKCdsYXN0SGlkZGVuRm9jdXNhYmxlRWwnKSBsYXN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudE9uT3ZlcmxheTogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdmaXJzdEhpZGRlbkZvY3VzYWJsZUVsJykgZmlyc3RIaWRkZW5Gb2N1c2FibGVFbGVtZW50T25PdmVybGF5OiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ2hlYWRlckNoZWNrYm94JykgaGVhZGVyQ2hlY2tib3hWaWV3Q2hpbGQ6IE51bGxhYmxlPENoZWNrYm94PjtcblxuICAgIEBDb250ZW50Q2hpbGQoRm9vdGVyKSBmb290ZXJGYWNldDogYW55O1xuXG4gICAgQENvbnRlbnRDaGlsZChIZWFkZXIpIGhlYWRlckZhY2V0OiBhbnk7XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoTXVsdGlTZWxlY3RTdHlsZSk7XG5cbiAgICBzZWFyY2hWYWx1ZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIHNlYXJjaFRpbWVvdXQ6IGFueTtcblxuICAgIF9zZWxlY3RBbGw6IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsID0gbnVsbDtcblxuICAgIF9hdXRvWkluZGV4OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgX2Jhc2VaSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIF9zaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIF9oaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIF9kZWZhdWx0TGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIF9wbGFjZWhvbGRlciA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBfaXRlbVNpemU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIF9zZWxlY3Rpb25MaW1pdDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgX2Rpc2FibGVUb29sdGlwID0gZmFsc2U7XG5cbiAgICB2YWx1ZTogYW55W107XG5cbiAgICBwdWJsaWMgX2ZpbHRlcmVkT3B0aW9uczogYW55W10gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgdmFsdWVzQXNTdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBmb2N1czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBmaWx0ZXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2l0ZW0nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkKCdncm91cCcsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkKCdsb2FkZXInLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBsb2FkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2hlYWRlcicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZCgnZmlsdGVyJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgZmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkKCdmb290ZXInLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5ZmlsdGVyJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgZW1wdHlGaWx0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5JywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3NlbGVjdGVkaXRlbXMnLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBzZWxlY3RlZEl0ZW1zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkKCdjaGVja2ljb24nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBjaGVja0ljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2xvYWRpbmdpY29uJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgbG9hZGluZ0ljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2ZpbHRlcmljb24nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBmaWx0ZXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkKCdyZW1vdmV0b2tlbmljb24nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSByZW1vdmVUb2tlbkljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2NoaXBpY29uJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgY2hpcEljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2NsZWFyaWNvbicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGNsZWFySWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZCgnZHJvcGRvd25pY29uJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgZHJvcGRvd25JY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkKCdpdGVtY2hlY2tib3hpY29uJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgaXRlbUNoZWNrYm94SWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGVyY2hlY2tib3hpY29uJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgaGVhZGVyQ2hlY2tib3hJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogTnVsbGFibGU8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+PjtcblxuICAgIF9pdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfZ3JvdXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9sb2FkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9oZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9maWx0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9mb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9lbXB0eUZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX2VtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfc2VsZWN0ZWRJdGVtc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX2NoZWNrSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX2xvYWRpbmdJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfZmlsdGVySWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX3JlbW92ZVRva2VuSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX2NoaXBJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfY2xlYXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfZHJvcGRvd25JY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfaXRlbUNoZWNrYm94SWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX2hlYWRlckNoZWNrYm94SWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICAodGhpcy50ZW1wbGF0ZXMgYXMgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2l0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ncm91cFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3RlZEl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtc1RlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5ZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlGaWx0ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHknOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbG9hZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdjaGVja2ljb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCByZW1vdmVkIGluIGZ1dHVyZS4gVXNlIGl0ZW1jaGVja2JveGljb24gb3IgaGVhZGVyY2hlY2tib3hpY29uIHRlbXBsYXRlcyBpbnN0ZWFkLicpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRlcmNoZWNrYm94aWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hlYWRlckNoZWNrYm94SWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdsb2FkaW5naWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZpbHRlcmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbW92ZXRva2VuaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVRva2VuSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdjbGVhcmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jbGVhckljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZHJvcGRvd25pY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZHJvcGRvd25JY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW1jaGVja2JveGljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pdGVtQ2hlY2tib3hJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NoaXBpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hpcEljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBoZWFkZXJDaGVja2JveEZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgZmlsdGVyT3B0aW9uczogTXVsdGlTZWxlY3RGaWx0ZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xuXG4gICAgcHJldmVudE1vZGVsVG91Y2hlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIHByZXZlbnREb2N1bWVudERlZmF1bHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBpdGVtc1dyYXBwZXI6IGFueTtcblxuICAgIF9kaXNwbGF5U2VsZWN0ZWRMYWJlbDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBfbWF4U2VsZWN0ZWRMYWJlbHM6IG51bWJlciA9IDM7XG5cbiAgICBtb2RlbFZhbHVlID0gc2lnbmFsPGFueT4obnVsbCk7XG5cbiAgICBfZmlsdGVyVmFsdWUgPSBzaWduYWw8YW55PihudWxsKTtcblxuICAgIF9vcHRpb25zID0gc2lnbmFsPGFueVtdPihudWxsKTtcblxuICAgIHN0YXJ0UmFuZ2VJbmRleCA9IHNpZ25hbDxudW1iZXI+KC0xKTtcblxuICAgIGZvY3VzZWRPcHRpb25JbmRleCA9IHNpZ25hbDxudW1iZXI+KC0xKTtcblxuICAgIHNlbGVjdGVkT3B0aW9uczogYW55O1xuXG4gICAgY2xpY2tJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGhvc3RDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNsYXNzZXMgPSBbXTtcblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucm9vdENsYXNzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMucm9vdENsYXNzKTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMucm9vdENsYXNzKSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKC4uLnRoaXMucm9vdENsYXNzKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5yb290Q2xhc3MgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnJvb3RDbGFzcylcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IHRoaXMucm9vdENsYXNzW2tleV0pXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4gY2xhc3Nlcy5wdXNoKGtleSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3R5bGVDbGFzcykge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuc3R5bGVDbGFzcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgZ2V0IHJvb3RDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudFN0eWxlLmNsYXNzZXMucm9vdCh7IGluc3RhbmNlOiB0aGlzIH0pO1xuICAgIH1cblxuICAgIGdldCBsYWJlbENsYXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50U3R5bGUuY2xhc3Nlcy5sYWJlbCh7IGluc3RhbmNlOiB0aGlzIH0pO1xuICAgIH1cblxuICAgIGdldCBlbXB0eU1lc3NhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5lbXB0eU1lc3NhZ2UgfHwgdGhpcy5jb25maWcuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkVNUFRZX01FU1NBR0UpO1xuICAgIH1cblxuICAgIGdldCBlbXB0eUZpbHRlck1lc3NhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5lbXB0eUZpbHRlck1lc3NhZ2UgfHwgdGhpcy5jb25maWcuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkVNUFRZX0ZJTFRFUl9NRVNTQUdFKTtcbiAgICB9XG5cbiAgICBnZXQgZmlsbGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMubW9kZWxWYWx1ZSgpID09PSAnc3RyaW5nJykgcmV0dXJuICEhdGhpcy5tb2RlbFZhbHVlKCk7XG5cbiAgICAgICAgcmV0dXJuIGlzTm90RW1wdHkodGhpcy5tb2RlbFZhbHVlKCkpO1xuICAgIH1cblxuICAgIGdldCBpc1Zpc2libGVDbGVhckljb24oKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsVmFsdWUoKSAhPSBudWxsICYmIHRoaXMubW9kZWxWYWx1ZSgpICE9PSAnJyAmJiBpc05vdEVtcHR5KHRoaXMubW9kZWxWYWx1ZSgpKSAmJiB0aGlzLnNob3dDbGVhciAmJiAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmZpbGxlZDtcbiAgICB9XG5cbiAgICBnZXQgdG9nZ2xlQWxsQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWFbdGhpcy5hbGxTZWxlY3RlZCgpID8gJ3NlbGVjdEFsbCcgOiAndW5zZWxlY3RBbGwnXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXQgY2xvc2VBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS5jbG9zZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXQgbGlzdExhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuQVJJQSlbJ2xpc3RMYWJlbCddO1xuICAgIH1cblxuICAgIGdldCBoYXNGbHVpZCgpIHtcbiAgICAgICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgZmx1aWRDb21wb25lbnQgPSBuYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ3AtZmx1aWQnKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmx1aWQgfHwgISFmbHVpZENvbXBvbmVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFsbFZpc2libGVBbmROb25WaXNpYmxlT3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAgPyB0aGlzLmZsYXRPcHRpb25zKHRoaXMub3B0aW9ucykgOiB0aGlzLm9wdGlvbnMgfHwgW107XG4gICAgfVxuXG4gICAgdmlzaWJsZU9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdldEFsbFZpc2libGVBbmROb25WaXNpYmxlT3B0aW9ucygpO1xuICAgICAgICBjb25zdCBpc0FycmF5T2ZPYmplY3RzID0gaXNBcnJheShvcHRpb25zKSAmJiBpc09iamVjdChvcHRpb25zWzBdKTtcblxuICAgICAgICBpZiAodGhpcy5fZmlsdGVyVmFsdWUoKSkge1xuICAgICAgICAgICAgbGV0IGZpbHRlcmVkT3B0aW9ucztcblxuICAgICAgICAgICAgaWYgKGlzQXJyYXlPZk9iamVjdHMpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyKG9wdGlvbnMsIHRoaXMuc2VhcmNoRmllbGRzKCksIHRoaXMuX2ZpbHRlclZhbHVlKCksIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpbHRlcmVkT3B0aW9ucyA9IG9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi50b1N0cmluZygpLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5fZmlsdGVyVmFsdWUoKS50b0xvY2FsZUxvd2VyQ2FzZSgpKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uR3JvdXBzID0gdGhpcy5vcHRpb25zIHx8IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkID0gW107XG5cbiAgICAgICAgICAgICAgICBvcHRpb25Hcm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBDaGlsZHJlbiA9IHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihncm91cCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBncm91cENoaWxkcmVuLmZpbHRlcigoaXRlbSkgPT4gZmlsdGVyZWRPcHRpb25zLmluY2x1ZGVzKGl0ZW0pKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRJdGVtcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVvZiB0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW4gPT09ICdzdHJpbmcnID8gdGhpcy5vcHRpb25Hcm91cENoaWxkcmVuIDogJ2l0ZW1zJ106IFsuLi5maWx0ZXJlZEl0ZW1zXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mbGF0T3B0aW9ucyhmaWx0ZXJlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZE9wdGlvbnM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfSk7XG5cbiAgICBsYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgbGV0IGxhYmVsO1xuICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy5tb2RlbFZhbHVlKCk7XG5cbiAgICAgICAgaWYgKG1vZGVsVmFsdWUgJiYgbW9kZWxWYWx1ZS5sZW5ndGggJiYgdGhpcy5kaXNwbGF5U2VsZWN0ZWRMYWJlbCkge1xuICAgICAgICAgICAgaWYgKGlzTm90RW1wdHkodGhpcy5tYXhTZWxlY3RlZExhYmVscykgJiYgbW9kZWxWYWx1ZS5sZW5ndGggPiB0aGlzLm1heFNlbGVjdGVkTGFiZWxzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0ZWRJdGVtc0xhYmVsKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxhYmVsID0gJyc7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVsVmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsICs9ICcsICc7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsYWJlbCArPSB0aGlzLmdldExhYmVsQnlWYWx1ZShtb2RlbFZhbHVlW2ldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYWJlbCA9IHRoaXMucGxhY2Vob2xkZXIoKSB8fCB0aGlzLmRlZmF1bHRMYWJlbCB8fCAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGFiZWw7XG4gICAgfSk7XG5cbiAgICBjaGlwU2VsZWN0ZWRJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGlzTm90RW1wdHkodGhpcy5tYXhTZWxlY3RlZExhYmVscykgJiYgdGhpcy5tb2RlbFZhbHVlKCkgJiYgdGhpcy5tb2RlbFZhbHVlKCkubGVuZ3RoID4gdGhpcy5tYXhTZWxlY3RlZExhYmVscyA/IHRoaXMubW9kZWxWYWx1ZSgpLnNsaWNlKDAsIHRoaXMubWF4U2VsZWN0ZWRMYWJlbHMpIDogdGhpcy5tb2RlbFZhbHVlKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgICAgIHB1YmxpYyBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgb3ZlcmxheVNlcnZpY2U6IE92ZXJsYXlTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy5tb2RlbFZhbHVlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZpc2libGVPcHRpb25zID0gdGhpcy52aXNpYmxlT3B0aW9ucygpO1xuICAgICAgICAgICAgaWYgKHZpc2libGVPcHRpb25zICYmIGlzTm90RW1wdHkodmlzaWJsZU9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uVmFsdWUgJiYgdGhpcy5vcHRpb25MYWJlbCAmJiBtb2RlbFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gdmlzaWJsZU9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+IG1vZGVsVmFsdWUuaW5jbHVkZXMob3B0aW9uW3RoaXMub3B0aW9uTGFiZWxdKSB8fCBtb2RlbFZhbHVlLmluY2x1ZGVzKG9wdGlvblt0aGlzLm9wdGlvblZhbHVlXSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbW9kZWxWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLmlkIHx8IHV1aWQoJ3BuX2lkXycpO1xuICAgICAgICB0aGlzLmF1dG9VcGRhdGVNb2RlbCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHRoaXMub25GaWx0ZXJJbnB1dENoYW5nZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgcmVzZXQ6ICgpID0+IHRoaXMucmVzZXRGaWx0ZXIoKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1heFNlbGVjdGlvbkxpbWl0UmVhY2hlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTGltaXQgJiYgdGhpcy5tb2RlbFZhbHVlKCkgJiYgdGhpcy5tb2RlbFZhbHVlKCkubGVuZ3RoID09PSB0aGlzLnNlbGVjdGlvbkxpbWl0O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJlZCkge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5Vmlld0NoaWxkPy5hbGlnbk92ZXJsYXkoKTtcbiAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmxhdE9wdGlvbnMob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gKG9wdGlvbnMgfHwgW10pLnJlZHVjZSgocmVzdWx0LCBvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IG9wdGlvbkdyb3VwOiBvcHRpb24sIGdyb3VwOiB0cnVlLCBpbmRleCB9KTtcblxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uR3JvdXBDaGlsZHJlbiA9IHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihvcHRpb24pO1xuXG4gICAgICAgICAgICBvcHRpb25Hcm91cENoaWxkcmVuICYmIG9wdGlvbkdyb3VwQ2hpbGRyZW4uZm9yRWFjaCgobykgPT4gcmVzdWx0LnB1c2gobykpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgYXV0b1VwZGF0ZU1vZGVsKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RPbkZvY3VzICYmIHRoaXMuYXV0b09wdGlvbkZvY3VzICYmICF0aGlzLmhhc1NlbGVjdGVkT3B0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCh0aGlzLmZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZSh0aGlzLnZpc2libGVPcHRpb25zKClbdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKV0pO1xuICAgICAgICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdCh7IG9yaWdpbmFsRXZlbnQ6IG51bGwsIG9wdGlvbjogW3ZhbHVlXSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIG1vZGVsIHZhbHVlLlxuICAgICAqIEBncm91cCBNZXRob2RcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlTW9kZWwodmFsdWUsIGV2ZW50Pykge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMubW9kZWxWYWx1ZS5zZXQodmFsdWUpO1xuICAgIH1cblxuICAgIG9uSW5wdXRDbGljayhldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KC0xKTtcbiAgICB9XG5cbiAgICBvbk9wdGlvblNlbGVjdChldmVudCwgaXNGb2N1cyA9IGZhbHNlLCBpbmRleCA9IC0xKSB7XG4gICAgICAgIGNvbnN0IHsgb3JpZ2luYWxFdmVudCwgb3B0aW9uIH0gPSBldmVudDtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZWxlY3RlZCA9IHRoaXMuaXNTZWxlY3RlZChvcHRpb24pO1xuICAgICAgICBsZXQgdmFsdWUgPSBudWxsO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLm1vZGVsVmFsdWUoKS5maWx0ZXIoKHZhbCkgPT4gIWVxdWFscyh2YWwsIHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSwgdGhpcy5lcXVhbGl0eUtleSgpKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZSA9IFsuLi4odGhpcy5tb2RlbFZhbHVlKCkgfHwgW10pLCB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbildO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbCh2YWx1ZSwgb3JpZ2luYWxFdmVudCk7XG4gICAgICAgIGluZGV4ICE9PSAtMSAmJiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoaW5kZXgpO1xuXG4gICAgICAgIGlzRm9jdXMgJiYgZm9jdXModGhpcy5mb2N1c0lucHV0Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICBpdGVtVmFsdWU6IG9wdGlvblxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmaW5kU2VsZWN0ZWRPcHRpb25JbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzU2VsZWN0ZWRPcHRpb24oKSA/IHRoaXMudmlzaWJsZU9wdGlvbnMoKS5maW5kSW5kZXgoKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkU2VsZWN0ZWRPcHRpb24ob3B0aW9uKSkgOiAtMTtcbiAgICB9XG5cbiAgICBvbk9wdGlvblNlbGVjdFJhbmdlKGV2ZW50LCBzdGFydCA9IC0xLCBlbmQgPSAtMSkge1xuICAgICAgICBzdGFydCA9PT0gLTEgJiYgKHN0YXJ0ID0gdGhpcy5maW5kTmVhcmVzdFNlbGVjdGVkT3B0aW9uSW5kZXgoZW5kLCB0cnVlKSk7XG4gICAgICAgIGVuZCA9PT0gLTEgJiYgKGVuZCA9IHRoaXMuZmluZE5lYXJlc3RTZWxlY3RlZE9wdGlvbkluZGV4KHN0YXJ0KSk7XG5cbiAgICAgICAgaWYgKHN0YXJ0ICE9PSAtMSAmJiBlbmQgIT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZVN0YXJ0ID0gTWF0aC5taW4oc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICBjb25zdCByYW5nZUVuZCA9IE1hdGgubWF4KHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZpc2libGVPcHRpb25zKClcbiAgICAgICAgICAgICAgICAuc2xpY2UocmFuZ2VTdGFydCwgcmFuZ2VFbmQgKyAxKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikpXG4gICAgICAgICAgICAgICAgLm1hcCgob3B0aW9uKSA9PiB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbikpO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKHZhbHVlLCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWFyY2hGaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5maWx0ZXJCeSB8fCB0aGlzLm9wdGlvbkxhYmVsIHx8ICdsYWJlbCcpLnNwbGl0KCcsJyk7XG4gICAgfVxuXG4gICAgZmluZE5lYXJlc3RTZWxlY3RlZE9wdGlvbkluZGV4KGluZGV4LCBmaXJzdENoZWNrVXAgPSBmYWxzZSkge1xuICAgICAgICBsZXQgbWF0Y2hlZE9wdGlvbkluZGV4ID0gLTE7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzU2VsZWN0ZWRPcHRpb24oKSkge1xuICAgICAgICAgICAgaWYgKGZpcnN0Q2hlY2tVcCkge1xuICAgICAgICAgICAgICAgIG1hdGNoZWRPcHRpb25JbmRleCA9IHRoaXMuZmluZFByZXZTZWxlY3RlZE9wdGlvbkluZGV4KGluZGV4KTtcbiAgICAgICAgICAgICAgICBtYXRjaGVkT3B0aW9uSW5kZXggPSBtYXRjaGVkT3B0aW9uSW5kZXggPT09IC0xID8gdGhpcy5maW5kTmV4dFNlbGVjdGVkT3B0aW9uSW5kZXgoaW5kZXgpIDogbWF0Y2hlZE9wdGlvbkluZGV4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtYXRjaGVkT3B0aW9uSW5kZXggPSB0aGlzLmZpbmROZXh0U2VsZWN0ZWRPcHRpb25JbmRleChpbmRleCk7XG4gICAgICAgICAgICAgICAgbWF0Y2hlZE9wdGlvbkluZGV4ID0gbWF0Y2hlZE9wdGlvbkluZGV4ID09PSAtMSA/IHRoaXMuZmluZFByZXZTZWxlY3RlZE9wdGlvbkluZGV4KGluZGV4KSA6IG1hdGNoZWRPcHRpb25JbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCA6IGluZGV4O1xuICAgIH1cblxuICAgIGZpbmRQcmV2U2VsZWN0ZWRPcHRpb25JbmRleChpbmRleCkge1xuICAgICAgICBjb25zdCBtYXRjaGVkT3B0aW9uSW5kZXggPSB0aGlzLmhhc1NlbGVjdGVkT3B0aW9uKCkgJiYgaW5kZXggPiAwID8gZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVPcHRpb25zKCkuc2xpY2UoMCwgaW5kZXgpLCAob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRTZWxlY3RlZE9wdGlvbihvcHRpb24pKSA6IC0xO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCA6IC0xO1xuICAgIH1cblxuICAgIGZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuZmluZEZpcnN0U2VsZWN0ZWRPcHRpb25JbmRleCgpO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZEluZGV4IDwgMCA/IHRoaXMuZmluZEZpcnN0T3B0aW9uSW5kZXgoKSA6IHNlbGVjdGVkSW5kZXg7XG4gICAgfVxuXG4gICAgZmluZEZpcnN0T3B0aW9uSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVPcHRpb25zKCkuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICBmaW5kRmlyc3RTZWxlY3RlZE9wdGlvbkluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNTZWxlY3RlZE9wdGlvbigpID8gdGhpcy52aXNpYmxlT3B0aW9ucygpLmZpbmRJbmRleCgob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRTZWxlY3RlZE9wdGlvbihvcHRpb24pKSA6IC0xO1xuICAgIH1cblxuICAgIGZpbmROZXh0U2VsZWN0ZWRPcHRpb25JbmRleChpbmRleCkge1xuICAgICAgICBjb25zdCBtYXRjaGVkT3B0aW9uSW5kZXggPVxuICAgICAgICAgICAgdGhpcy5oYXNTZWxlY3RlZE9wdGlvbigpICYmIGluZGV4IDwgdGhpcy52aXNpYmxlT3B0aW9ucygpLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICA/IHRoaXMudmlzaWJsZU9wdGlvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgIC5zbGljZShpbmRleCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbmRJbmRleCgob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRTZWxlY3RlZE9wdGlvbihvcHRpb24pKVxuICAgICAgICAgICAgICAgIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWRPcHRpb25JbmRleCA+IC0xID8gbWF0Y2hlZE9wdGlvbkluZGV4ICsgaW5kZXggKyAxIDogLTE7XG4gICAgfVxuXG4gICAgZXF1YWxpdHlLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvblZhbHVlID8gbnVsbCA6IHRoaXMuZGF0YUtleTtcbiAgICB9XG5cbiAgICBoYXNTZWxlY3RlZE9wdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzTm90RW1wdHkodGhpcy5tb2RlbFZhbHVlKCkpO1xuICAgIH1cblxuICAgIGlzVmFsaWRTZWxlY3RlZE9wdGlvbihvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pICYmIHRoaXMuaXNTZWxlY3RlZChvcHRpb24pO1xuICAgIH1cblxuICAgIGlzT3B0aW9uR3JvdXAob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5ncm91cCB8fCB0aGlzLm9wdGlvbkdyb3VwTGFiZWwpICYmIG9wdGlvbi5vcHRpb25Hcm91cCAmJiBvcHRpb24uZ3JvdXA7XG4gICAgfVxuXG4gICAgaXNWYWxpZE9wdGlvbihvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiAmJiAhKHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pIHx8IHRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24pKTtcbiAgICB9XG5cbiAgICBpc09wdGlvbkRpc2FibGVkKG9wdGlvbjogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLm1heFNlbGVjdGlvbkxpbWl0UmVhY2hlZCgpICYmICF0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uRGlzYWJsZWQgPyByZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25EaXNhYmxlZCkgOiBvcHRpb24gJiYgb3B0aW9uLmRpc2FibGVkICE9PSB1bmRlZmluZWQgPyBvcHRpb24uZGlzYWJsZWQgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKG9wdGlvbikge1xuICAgICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKTtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1vZGVsVmFsdWUoKSB8fCBbXSkuc29tZSgodmFsdWUpID0+IGVxdWFscyh2YWx1ZSwgb3B0aW9uVmFsdWUsIHRoaXMuZXF1YWxpdHlLZXkoKSkpO1xuICAgIH1cblxuICAgIGlzT3B0aW9uTWF0Y2hlZChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pICYmIHRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0aW9uKS50b1N0cmluZygpLnRvTG9jYWxlTG93ZXJDYXNlKHRoaXMuZmlsdGVyTG9jYWxlKS5zdGFydHNXaXRoKHRoaXMuc2VhcmNoVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5maWx0ZXJMb2NhbGUpKTtcbiAgICB9XG5cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuX29wdGlvbnMoKSB8fCAodGhpcy52aXNpYmxlT3B0aW9ucygpICYmIHRoaXMudmlzaWJsZU9wdGlvbnMoKS5sZW5ndGggPT09IDApO1xuICAgIH1cblxuICAgIGdldE9wdGlvbkluZGV4KGluZGV4LCBzY3JvbGxlck9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlydHVhbFNjcm9sbGVyRGlzYWJsZWQgPyBpbmRleCA6IHNjcm9sbGVyT3B0aW9ucyAmJiBzY3JvbGxlck9wdGlvbnMuZ2V0SXRlbU9wdGlvbnMoaW5kZXgpWydpbmRleCddO1xuICAgIH1cblxuICAgIGdldEFyaWFQb3NJbnNldChpbmRleCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMub3B0aW9uR3JvdXBMYWJlbFxuICAgICAgICAgICAgICAgID8gaW5kZXggLVxuICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9ucygpXG4gICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4gdGhpcy5pc09wdGlvbkdyb3VwKG9wdGlvbikpLmxlbmd0aFxuICAgICAgICAgICAgICAgIDogaW5kZXgpICsgMVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBhcmlhU2V0U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnMoKS5maWx0ZXIoKG9wdGlvbikgPT4gIXRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24pKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZ2V0TGFiZWxCeVZhbHVlKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdyb3VwID8gdGhpcy5mbGF0T3B0aW9ucyh0aGlzLl9vcHRpb25zKCkpIDogdGhpcy5fb3B0aW9ucygpIHx8IFtdO1xuICAgICAgICBjb25zdCBtYXRjaGVkT3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHRpb24pID0+ICF0aGlzLmlzT3B0aW9uR3JvdXAob3B0aW9uKSAmJiBlcXVhbHModGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pLCB2YWx1ZSwgdGhpcy5lcXVhbGl0eUtleSgpKSk7XG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uID8gdGhpcy5nZXRPcHRpb25MYWJlbChtYXRjaGVkT3B0aW9uKSA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRJdGVtc0xhYmVsKCkge1xuICAgICAgICBsZXQgcGF0dGVybiA9IC97KC4qPyl9LztcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnNlbGVjdGVkSXRlbXNMYWJlbCA/IHRoaXMuc2VsZWN0ZWRJdGVtc0xhYmVsIDogdGhpcy5jb25maWcuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLlNFTEVDVElPTl9NRVNTQUdFKTtcblxuICAgICAgICBpZiAocGF0dGVybi50ZXN0KG1lc3NhZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKG1lc3NhZ2UubWF0Y2gocGF0dGVybilbMF0sIHRoaXMubW9kZWxWYWx1ZSgpLmxlbmd0aCArICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIGdldE9wdGlvbkxhYmVsKG9wdGlvbjogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkxhYmVsID8gcmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uTGFiZWwpIDogb3B0aW9uICYmIG9wdGlvbi5sYWJlbCAhPSB1bmRlZmluZWQgPyBvcHRpb24ubGFiZWwgOiBvcHRpb247XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uVmFsdWUob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uVmFsdWUgPyByZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25WYWx1ZSkgOiAhdGhpcy5vcHRpb25MYWJlbCAmJiBvcHRpb24gJiYgb3B0aW9uLnZhbHVlICE9PSB1bmRlZmluZWQgPyBvcHRpb24udmFsdWUgOiBvcHRpb247XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uR3JvdXBMYWJlbChvcHRpb25Hcm91cDogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkdyb3VwTGFiZWwgPyByZXNvbHZlRmllbGREYXRhKG9wdGlvbkdyb3VwLCB0aGlzLm9wdGlvbkdyb3VwTGFiZWwpIDogb3B0aW9uR3JvdXAgJiYgb3B0aW9uR3JvdXAubGFiZWwgIT0gdW5kZWZpbmVkID8gb3B0aW9uR3JvdXAubGFiZWwgOiBvcHRpb25Hcm91cDtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGlvbkdyb3VwOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlbiA/IHJlc29sdmVGaWVsZERhdGEob3B0aW9uR3JvdXAsIHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlbikgOiBvcHRpb25Hcm91cC5pdGVtcztcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZXRhS2V5ID0gZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5O1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dEb3duS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93VXBLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uSG9tZUtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVuZEtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1BhZ2VEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZURvd25LZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgICAgICAgIHRoaXMub25QYWdlVXBLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRXNjYXBlS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnU2hpZnRMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ1NoaWZ0UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25TaGlmdEtleSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChldmVudC5jb2RlID09PSAnS2V5QScgJiYgbWV0YUtleSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmlzaWJsZU9wdGlvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4gdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKHZhbHVlLCBldmVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFtZXRhS2V5ICYmIGlzUHJpbnRhYmxlQ2hhcmFjdGVyKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMub3ZlcmxheVZpc2libGUgJiYgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoT3B0aW9ucyhldmVudCwgZXZlbnQua2V5KTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRmlsdGVyS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93RG93bktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd1VwS2V5KGV2ZW50LCB0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd0xlZnRLZXkoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uSG9tZUtleShldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVuZEtleShldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ051bXBhZEVudGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRW50ZXJLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgICAgICAgIHRoaXMub25Fc2NhcGVLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdUYWInOlxuICAgICAgICAgICAgICAgIHRoaXMub25UYWJLZXkoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd0xlZnRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByZXNzZWRJbklucHV0VGV4dDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHByZXNzZWRJbklucHV0VGV4dCAmJiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoLTEpO1xuICAgIH1cblxuICAgIG9uQXJyb3dEb3duS2V5KGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkluZGV4ID0gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEgPyB0aGlzLmZpbmROZXh0T3B0aW9uSW5kZXgodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSkgOiB0aGlzLmZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpO1xuXG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdFJhbmdlKGV2ZW50LCB0aGlzLnN0YXJ0UmFuZ2VJbmRleCgpLCBvcHRpb25JbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgb3B0aW9uSW5kZXgpO1xuICAgICAgICAhdGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLnNob3coKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgb25BcnJvd1VwS2V5KGV2ZW50LCBwcmVzc2VkSW5JbnB1dFRleHQgPSBmYWxzZSkge1xuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5ICYmICFwcmVzc2VkSW5JbnB1dFRleHQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QoZXZlbnQsIHRoaXMudmlzaWJsZU9wdGlvbnMoKVt0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgJiYgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uSW5kZXggPSB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSA/IHRoaXMuZmluZFByZXZPcHRpb25JbmRleCh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKSA6IHRoaXMuZmluZExhc3RGb2N1c2VkT3B0aW9uSW5kZXgoKTtcblxuICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdFJhbmdlKGV2ZW50LCBvcHRpb25JbmRleCwgdGhpcy5zdGFydFJhbmdlSW5kZXgoKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGV2ZW50LCBvcHRpb25JbmRleCk7XG5cbiAgICAgICAgICAgICF0aGlzLm92ZXJsYXlWaXNpYmxlICYmIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBvbkhvbWVLZXkoZXZlbnQsIHByZXNzZWRJbklucHV0VGV4dCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHsgY3VycmVudFRhcmdldCB9ID0gZXZlbnQ7XG5cbiAgICAgICAgaWYgKHByZXNzZWRJbklucHV0VGV4dCkge1xuICAgICAgICAgICAgY29uc3QgbGVuID0gY3VycmVudFRhcmdldC52YWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgZXZlbnQuc2hpZnRLZXkgPyBsZW4gOiAwKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleTtcbiAgICAgICAgICAgIGxldCBvcHRpb25JbmRleCA9IHRoaXMuZmluZEZpcnN0T3B0aW9uSW5kZXgoKTtcblxuICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIG1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0UmFuZ2UoZXZlbnQsIG9wdGlvbkluZGV4LCB0aGlzLnN0YXJ0UmFuZ2VJbmRleCgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIG9wdGlvbkluZGV4KTtcblxuICAgICAgICAgICAgIXRoaXMub3ZlcmxheVZpc2libGUgJiYgdGhpcy5zaG93KCk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uRW5kS2V5KGV2ZW50LCBwcmVzc2VkSW5JbnB1dFRleHQgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB7IGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xuXG4gICAgICAgIGlmIChwcmVzc2VkSW5JbnB1dFRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IGN1cnJlbnRUYXJnZXQudmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgY3VycmVudFRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShldmVudC5zaGlmdEtleSA/IDAgOiBsZW4sIGxlbik7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoLTEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG1ldGFLZXkgPSBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXk7XG4gICAgICAgICAgICBsZXQgb3B0aW9uSW5kZXggPSB0aGlzLmZpbmRMYXN0Rm9jdXNlZE9wdGlvbkluZGV4KCk7XG5cbiAgICAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSAmJiBtZXRhS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdFJhbmdlKGV2ZW50LCB0aGlzLnN0YXJ0UmFuZ2VJbmRleCgpLCBvcHRpb25JbmRleCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGV2ZW50LCBvcHRpb25JbmRleCk7XG5cbiAgICAgICAgICAgICF0aGlzLm92ZXJsYXlWaXNpYmxlICYmIHRoaXMuc2hvdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvblBhZ2VEb3duS2V5KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsSW5WaWV3KHRoaXMudmlzaWJsZU9wdGlvbnMoKS5sZW5ndGggLSAxKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvblBhZ2VVcEtleShldmVudCkge1xuICAgICAgICB0aGlzLnNjcm9sbEluVmlldygwKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkVudGVyS2V5KGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5vbkFycm93RG93bktleShldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdFJhbmdlKGV2ZW50LCB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIG9wdGlvbjogdGhpcy52aXNpYmxlT3B0aW9ucygpW3RoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCldIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25Fc2NhcGVLZXkoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLmhpZGUodHJ1ZSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25EZWxldGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0NsZWFyKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyKGV2ZW50KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRhYktleShldmVudCwgcHJlc3NlZEluSW5wdXRUZXh0ID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCFwcmVzc2VkSW5JbnB1dFRleHQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlICYmIHRoaXMuaGFzRm9jdXNhYmxlRWxlbWVudHMoKSkge1xuICAgICAgICAgICAgICAgIGZvY3VzKGV2ZW50LnNoaWZ0S2V5ID8gdGhpcy5sYXN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudE9uT3ZlcmxheS5uYXRpdmVFbGVtZW50IDogdGhpcy5maXJzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnRPbk92ZXJsYXkubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBvcHRpb246IHRoaXMudmlzaWJsZU9wdGlvbnMoKVt0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpXSB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlICYmIHRoaXMuaGlkZSh0aGlzLmZpbHRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNoaWZ0S2V5KCkge1xuICAgICAgICB0aGlzLnN0YXJ0UmFuZ2VJbmRleC5zZXQodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSk7XG4gICAgfVxuXG4gICAgb25Db250YWluZXJDbGljayhldmVudDogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMubG9hZGluZyB8fCB0aGlzLnJlYWRvbmx5IHx8IChldmVudC50YXJnZXQgYXMgTm9kZSkuaXNTYW1lTm9kZSh0aGlzLmZvY3VzSW5wdXRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVZpZXdDaGlsZCB8fCAhdGhpcy5vdmVybGF5Vmlld0NoaWxkLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xpY2tJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNsaWNrSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB9LCAxNTApO1xuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID8gdGhpcy5oaWRlKHRydWUpIDogdGhpcy5zaG93KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgb25GaXJzdEhpZGRlbkZvY3VzKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZUVsID1cbiAgICAgICAgICAgIGV2ZW50LnJlbGF0ZWRUYXJnZXQgPT09IHRoaXMuZm9jdXNJbnB1dFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCA/IGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudCh0aGlzLm92ZXJsYXlWaWV3Q2hpbGQ/Lm92ZXJsYXlWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQsICc6bm90KFtkYXRhLXAtaGlkZGVuLWZvY3VzYWJsZT1cInRydWVcIl0pJykgOiB0aGlzLmZvY3VzSW5wdXRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgZm9jdXMoZm9jdXNhYmxlRWwpO1xuICAgIH1cblxuICAgIG9uSW5wdXRGb2N1cyhldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZm9jdXNlZE9wdGlvbkluZGV4ID0gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEgPyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpIDogdGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLmF1dG9PcHRpb25Gb2N1cyA/IHRoaXMuZmluZEZpcnN0Rm9jdXNlZE9wdGlvbkluZGV4KCkgOiAtMTtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KGZvY3VzZWRPcHRpb25JbmRleCk7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgJiYgdGhpcy5zY3JvbGxJblZpZXcodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSk7XG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnByZXZlbnRNb2RlbFRvdWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZXZlbnRNb2RlbFRvdWNoZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkZpbHRlcklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBsZXQgdmFsdWU6IHN0cmluZyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIHRoaXMuX2ZpbHRlclZhbHVlLnNldCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG4gICAgICAgIHRoaXMub25GaWx0ZXIuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBmaWx0ZXI6IHRoaXMuX2ZpbHRlclZhbHVlKCkgfSk7XG5cbiAgICAgICAgIXRoaXMudmlydHVhbFNjcm9sbGVyRGlzYWJsZWQgJiYgdGhpcy5zY3JvbGxlci5zY3JvbGxUb0luZGV4KDApO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpZXdDaGlsZC5hbGlnbk92ZXJsYXkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25MYXN0SGlkZGVuRm9jdXMoZXZlbnQpIHtcbiAgICAgICAgY29uc3QgZm9jdXNhYmxlRWwgPVxuICAgICAgICAgICAgZXZlbnQucmVsYXRlZFRhcmdldCA9PT0gdGhpcy5mb2N1c0lucHV0Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50ID8gZ2V0TGFzdEZvY3VzYWJsZUVsZW1lbnQodGhpcy5vdmVybGF5Vmlld0NoaWxkPy5vdmVybGF5Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50LCAnOm5vdChbZGF0YS1wLWhpZGRlbi1mb2N1c2FibGU9XCJ0cnVlXCJdKScpIDogdGhpcy5mb2N1c0lucHV0Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGZvY3VzKGZvY3VzYWJsZUVsKTtcbiAgICB9XG5cbiAgICBvbk9wdGlvbk1vdXNlRW50ZXIoZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzT25Ib3Zlcikge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSGVhZGVyQ2hlY2tib3hLZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uVG9nZ2xlQWxsKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uVG9nZ2xlQWxsKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkZpbHRlckJsdXIoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KC0xKTtcbiAgICB9XG5cbiAgICBvbkhlYWRlckNoZWNrYm94Rm9jdXMoKSB7XG4gICAgICAgIHRoaXMuaGVhZGVyQ2hlY2tib3hGb2N1cyA9IHRydWU7XG4gICAgfVxuXG4gICAgb25IZWFkZXJDaGVja2JveEJsdXIoKSB7XG4gICAgICAgIHRoaXMuaGVhZGVyQ2hlY2tib3hGb2N1cyA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uVG9nZ2xlQWxsKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEFsbCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0QWxsQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIGNoZWNrZWQ6ICF0aGlzLmFsbFNlbGVjdGVkKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcHJlLXNlbGVjdGVkIGRpc2FibGVkIG9wdGlvbnMgc2hvdWxkIGFsd2F5cyBiZSBzZWxlY3RlZC5cbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRGlzYWJsZWRPcHRpb25zID0gdGhpcy5nZXRBbGxWaXNpYmxlQW5kTm9uVmlzaWJsZU9wdGlvbnMoKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKG9wdGlvbikgPT4gdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikgJiYgKHRoaXMub3B0aW9uRGlzYWJsZWQgPyByZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25EaXNhYmxlZCkgOiBvcHRpb24gJiYgb3B0aW9uLmRpc2FibGVkICE9PSB1bmRlZmluZWQgPyBvcHRpb24uZGlzYWJsZWQgOiBmYWxzZSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZpc2libGVPcHRpb25zID0gdGhpcy5hbGxTZWxlY3RlZCgpXG4gICAgICAgICAgICAgICAgPyB0aGlzLnZpc2libGVPcHRpb25zKCkuZmlsdGVyKChvcHRpb24pID0+ICF0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSAmJiB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSlcbiAgICAgICAgICAgICAgICA6IHRoaXMudmlzaWJsZU9wdGlvbnMoKS5maWx0ZXIoKG9wdGlvbikgPT4gdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikgfHwgdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikpO1xuXG4gICAgICAgICAgICBjb25zdCBvcHRpb25WYWx1ZXMgPSBbLi4uc2VsZWN0ZWREaXNhYmxlZE9wdGlvbnMsIC4uLnZpc2libGVPcHRpb25zXS5tYXAoKG9wdGlvbikgPT4gdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gWy4uLm5ldyBTZXQob3B0aW9uVmFsdWVzKV07XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwodmFsdWUsIGV2ZW50KTtcblxuICAgICAgICAgICAgLy8gYmVjYXVzZSBvblRvZ2dsZUFsbCBjb3VsZCBoYXZlIGJlZW4gY2FsbGVkIGR1cmluZyBmaWx0ZXJpbmcsIHRoaXMgYWRkaXRpb25hbCB0ZXN0IG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBiZWZvcmUgY2FsbGluZyBvblNlbGVjdEFsbENoYW5nZS5lbWl0XG4gICAgICAgICAgICBpZiAoIXZhbHVlLmxlbmd0aCB8fCB2YWx1ZS5sZW5ndGggPT09IHRoaXMuZ2V0QWxsVmlzaWJsZUFuZE5vblZpc2libGVPcHRpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdEFsbENoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6ICEhdmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wYXJ0aWFsU2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy52YWx1ZSB9KTtcbiAgICAgICAgRG9tSGFuZGxlci5mb2N1cyh0aGlzLmhlYWRlckNoZWNrYm94Vmlld0NoaWxkPy5pbnB1dFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuaGVhZGVyQ2hlY2tib3hGb2N1cyA9IHRydWU7XG5cbiAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IGluZGV4KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoaW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxJblZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCB2aXJ0dWFsU2Nyb2xsZXJEaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnZpcnR1YWxTY3JvbGw7XG4gICAgfVxuXG4gICAgc2Nyb2xsSW5WaWV3KGluZGV4ID0gLTEpIHtcbiAgICAgICAgY29uc3QgaWQgPSBpbmRleCAhPT0gLTEgPyBgJHt0aGlzLmlkfV8ke2luZGV4fWAgOiB0aGlzLmZvY3VzZWRPcHRpb25JZDtcbiAgICAgICAgaWYgKHRoaXMuaXRlbXNWaWV3Q2hpbGQgJiYgdGhpcy5pdGVtc1ZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZmluZFNpbmdsZSh0aGlzLml0ZW1zVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsIGBsaVtpZD1cIiR7aWR9XCJdYCk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcgJiYgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcsIGlubGluZTogJ25lYXJlc3QnIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsZXJEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGwgJiYgdGhpcy5zY3JvbGxlcj8uc2Nyb2xsVG9JbmRleChpbmRleCAhPT0gLTEgPyBpbmRleCA6IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkpO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWRPcHRpb25JZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IC0xID8gYCR7dGhpcy5pZH1fJHt0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpfWAgOiBudWxsO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubW9kZWxWYWx1ZS5zZXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgYWxsU2VsZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdEFsbCAhPT0gbnVsbCA/IHRoaXMuc2VsZWN0QWxsIDogaXNOb3RFbXB0eSh0aGlzLnZpc2libGVPcHRpb25zKCkpICYmIHRoaXMudmlzaWJsZU9wdGlvbnMoKS5ldmVyeSgob3B0aW9uKSA9PiB0aGlzLmlzT3B0aW9uR3JvdXAob3B0aW9uKSB8fCB0aGlzLmlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSB8fCB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgcGFydGlhbFNlbGVjdGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE9wdGlvbnMgJiYgdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPCB0aGlzLm9wdGlvbnMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BsYXlzIHRoZSBwYW5lbC5cbiAgICAgKiBAZ3JvdXAgTWV0aG9kXG4gICAgICovXG4gICAgcHVibGljIHNob3coaXNGb2N1cz8pIHtcbiAgICAgICAgdGhpcy5vdmVybGF5VmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgZm9jdXNlZE9wdGlvbkluZGV4ID0gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEgPyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpIDogdGhpcy5hdXRvT3B0aW9uRm9jdXMgPyB0aGlzLmZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpIDogdGhpcy5maW5kU2VsZWN0ZWRPcHRpb25JbmRleCgpO1xuICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoZm9jdXNlZE9wdGlvbkluZGV4KTtcblxuICAgICAgICBpZiAoaXNGb2N1cykge1xuICAgICAgICAgICAgZm9jdXModGhpcy5mb2N1c0lucHV0Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZXMgdGhlIHBhbmVsLlxuICAgICAqIEBncm91cCBNZXRob2RcbiAgICAgKi9cbiAgICBwdWJsaWMgaGlkZShpc0ZvY3VzPykge1xuICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyICYmIHRoaXMucmVzZXRGaWx0ZXJPbkhpZGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vdmVybGF5T3B0aW9ucz8ubW9kZSA9PT0gJ21vZGFsJykge1xuICAgICAgICAgICAgdW5ibG9ja0JvZHlTY3JvbGwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlzRm9jdXMgJiYgZm9jdXModGhpcy5mb2N1c0lucHV0Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5vblBhbmVsSGlkZS5lbWl0KCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5QW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc1dyYXBwZXIgPSBmaW5kU2luZ2xlKHRoaXMub3ZlcmxheVZpZXdDaGlsZD8ub3ZlcmxheVZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCwgdGhpcy52aXJ0dWFsU2Nyb2xsID8gJy5wLXNjcm9sbGVyJyA6ICcucC1tdWx0aXNlbGVjdC1pdGVtcy13cmFwcGVyJyk7XG4gICAgICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsICYmIHRoaXMuc2Nyb2xsZXI/LnNldENvbnRlbnRFbCh0aGlzLml0ZW1zVmlld0NoaWxkPy5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9vcHRpb25zKCkgJiYgdGhpcy5fb3B0aW9ucygpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gaXNOb3RFbXB0eSh0aGlzLm1vZGVsVmFsdWUoKSkgPyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpIDogLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbGVyPy5zY3JvbGxUb0luZGV4KHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkTGlzdEl0ZW0gPSBmaW5kU2luZ2xlKHRoaXMuaXRlbXNXcmFwcGVyLCAnW2RhdGEtcC1oaWdobGlnaHQ9XCJ0cnVlXCJdJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZExpc3RJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbS5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcsIGlubGluZTogJ25lYXJlc3QnIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVySW5wdXRDaGlsZCAmJiB0aGlzLmZpbHRlcklucHV0Q2hpbGQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZlbnRNb2RlbFRvdWNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9mb2N1c0ZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnB1dENoaWxkLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMub25QYW5lbFNob3cuZW1pdCgpO1xuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc1dyYXBwZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2V0RmlsdGVyKCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJJbnB1dENoaWxkICYmIHRoaXMuZmlsdGVySW5wdXRDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcklucHV0Q2hpbGQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZmlsdGVyVmFsdWUuc2V0KG51bGwpO1xuICAgICAgICB0aGlzLl9maWx0ZXJlZE9wdGlvbnMgPSBudWxsO1xuICAgIH1cblxuICAgIGNsb3NlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgY2xlYXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKG51bGwsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBudWxsO1xuICAgICAgICB0aGlzLm9uQ2xlYXIuZW1pdCgpO1xuICAgICAgICB0aGlzLl9kaXNhYmxlVG9vbHRpcCA9IHRydWU7XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgbGFiZWxDb250YWluZXJNb3VzZUxlYXZlKCkge1xuICAgICAgICBpZiAodGhpcy5fZGlzYWJsZVRvb2x0aXApIHRoaXMuX2Rpc2FibGVUb29sdGlwID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmVtb3ZlT3B0aW9uKG9wdGlvblZhbHVlLCBldmVudCkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLm1vZGVsVmFsdWUoKS5maWx0ZXIoKHZhbCkgPT4gIWVxdWFscyh2YWwsIG9wdGlvblZhbHVlLCB0aGlzLmVxdWFsaXR5S2V5KCkpKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKHZhbHVlLCBldmVudCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIGl0ZW1WYWx1ZTogb3B0aW9uVmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub25SZW1vdmUuZW1pdCh7XG4gICAgICAgICAgICBuZXdWYWx1ZTogdmFsdWUsXG4gICAgICAgICAgICByZW1vdmVkOiBvcHRpb25WYWx1ZVxuICAgICAgICB9KTtcblxuICAgICAgICBldmVudCAmJiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBmaW5kTmV4dEl0ZW0oaXRlbTogYW55KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgbGV0IG5leHRJdGVtID0gaXRlbS5uZXh0RWxlbWVudFNpYmxpbmc7XG5cbiAgICAgICAgaWYgKG5leHRJdGVtKSByZXR1cm4gaGFzQ2xhc3MobmV4dEl0ZW0uY2hpbGRyZW5bMF0sICdwLWRpc2FibGVkJykgfHwgaXNIaWRkZW4obmV4dEl0ZW0uY2hpbGRyZW5bMF0pIHx8IGhhc0NsYXNzKG5leHRJdGVtLCAncC1tdWx0aXNlbGVjdC1pdGVtLWdyb3VwJykgPyB0aGlzLmZpbmROZXh0SXRlbShuZXh0SXRlbSkgOiBuZXh0SXRlbS5jaGlsZHJlblswXTtcbiAgICAgICAgZWxzZSByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmaW5kUHJldkl0ZW0oaXRlbTogYW55KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgbGV0IHByZXZJdGVtID0gaXRlbS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgIGlmIChwcmV2SXRlbSkgcmV0dXJuIGhhc0NsYXNzKHByZXZJdGVtLmNoaWxkcmVuWzBdLCAncC1kaXNhYmxlZCcpIHx8IGlzSGlkZGVuKHByZXZJdGVtLmNoaWxkcmVuWzBdKSB8fCBoYXNDbGFzcyhwcmV2SXRlbSwgJ3AtbXVsdGlzZWxlY3QtaXRlbS1ncm91cCcpID8gdGhpcy5maW5kUHJldkl0ZW0ocHJldkl0ZW0pIDogcHJldkl0ZW0uY2hpbGRyZW5bMF07XG4gICAgICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZmluZE5leHRPcHRpb25JbmRleChpbmRleCkge1xuICAgICAgICBjb25zdCBtYXRjaGVkT3B0aW9uSW5kZXggPVxuICAgICAgICAgICAgaW5kZXggPCB0aGlzLnZpc2libGVPcHRpb25zKCkubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgID8gdGhpcy52aXNpYmxlT3B0aW9ucygpXG4gICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKVxuICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCArIGluZGV4ICsgMSA6IGluZGV4O1xuICAgIH1cblxuICAgIGZpbmRQcmV2T3B0aW9uSW5kZXgoaW5kZXgpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID0gaW5kZXggPiAwID8gZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVPcHRpb25zKCkuc2xpY2UoMCwgaW5kZXgpLCAob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSkgOiAtMTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZE9wdGlvbkluZGV4ID4gLTEgPyBtYXRjaGVkT3B0aW9uSW5kZXggOiBpbmRleDtcbiAgICB9XG5cbiAgICBmaW5kTGFzdFNlbGVjdGVkT3B0aW9uSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc1NlbGVjdGVkT3B0aW9uKCkgPyBmaW5kTGFzdEluZGV4KHRoaXMudmlzaWJsZU9wdGlvbnMoKSwgKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkU2VsZWN0ZWRPcHRpb24ob3B0aW9uKSkgOiAtMTtcbiAgICB9XG5cbiAgICBmaW5kTGFzdEZvY3VzZWRPcHRpb25JbmRleCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuZmluZExhc3RTZWxlY3RlZE9wdGlvbkluZGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXggPCAwID8gdGhpcy5maW5kTGFzdE9wdGlvbkluZGV4KCkgOiBzZWxlY3RlZEluZGV4O1xuICAgIH1cblxuICAgIGZpbmRMYXN0T3B0aW9uSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiBmaW5kTGFzdEluZGV4KHRoaXMudmlzaWJsZU9wdGlvbnMoKSwgKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikpO1xuICAgIH1cblxuICAgIHNlYXJjaE9wdGlvbnMoZXZlbnQsIGNoYXIpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICh0aGlzLnNlYXJjaFZhbHVlIHx8ICcnKSArIGNoYXI7XG5cbiAgICAgICAgbGV0IG9wdGlvbkluZGV4ID0gLTE7XG4gICAgICAgIGxldCBtYXRjaGVkID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IC0xKSB7XG4gICAgICAgICAgICBvcHRpb25JbmRleCA9IHRoaXMudmlzaWJsZU9wdGlvbnMoKVxuICAgICAgICAgICAgICAgIC5zbGljZSh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKVxuICAgICAgICAgICAgICAgIC5maW5kSW5kZXgoKG9wdGlvbikgPT4gdGhpcy5pc09wdGlvbk1hdGNoZWQob3B0aW9uKSk7XG4gICAgICAgICAgICBvcHRpb25JbmRleCA9XG4gICAgICAgICAgICAgICAgb3B0aW9uSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy52aXNpYmxlT3B0aW9ucygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNPcHRpb25NYXRjaGVkKG9wdGlvbikpXG4gICAgICAgICAgICAgICAgICAgIDogb3B0aW9uSW5kZXggKyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9uSW5kZXggPSB0aGlzLnZpc2libGVPcHRpb25zKCkuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNPcHRpb25NYXRjaGVkKG9wdGlvbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgbWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uSW5kZXggPT09IC0xICYmIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgPT09IC0xKSB7XG4gICAgICAgICAgICBvcHRpb25JbmRleCA9IHRoaXMuZmluZEZpcnN0Rm9jdXNlZE9wdGlvbkluZGV4KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgb3B0aW9uSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IG51bGw7XG4gICAgICAgIH0sIDUwMCk7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWQ7XG4gICAgfVxuXG4gICAgYWN0aXZhdGVGaWx0ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmhhc0ZpbHRlcigpICYmIHRoaXMuX29wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcmVkR3JvdXBzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgb3B0Z3JvdXAgb2YgdGhpcy5vcHRpb25zIGFzIGFueVtdKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJlZFN1Yk9wdGlvbnMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyKHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihvcHRncm91cCksIHRoaXMuc2VhcmNoRmllbGRzKCksIHRoaXMuZmlsdGVyVmFsdWUsIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFN1Yk9wdGlvbnMgJiYgZmlsdGVyZWRTdWJPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRHcm91cHMucHVzaCh7IC4uLm9wdGdyb3VwLCAuLi57IFt0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW5dOiBmaWx0ZXJlZFN1Yk9wdGlvbnMgfSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlcmVkT3B0aW9ucyA9IGZpbHRlcmVkR3JvdXBzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyKHRoaXMub3B0aW9ucyBhcyBhbnlbXSwgdGhpcy5zZWFyY2hGaWVsZHMoKSwgdGhpcy5maWx0ZXJWYWx1ZSwgdGhpcy5maWx0ZXJNYXRjaE1vZGUsIHRoaXMuZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlcmVkT3B0aW9ucyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNGb2N1c2FibGVFbGVtZW50cygpIHtcbiAgICAgICAgcmV0dXJuIGdldEZvY3VzYWJsZUVsZW1lbnRzKHRoaXMub3ZlcmxheVZpZXdDaGlsZC5vdmVybGF5Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICc6bm90KFtkYXRhLXAtaGlkZGVuLWZvY3VzYWJsZT1cInRydWVcIl0pJykubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBoYXNGaWx0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJWYWx1ZSgpICYmIHRoaXMuX2ZpbHRlclZhbHVlKCkudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtNdWx0aVNlbGVjdCwgU2hhcmVkTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTXVsdGlTZWxlY3QsIFNoYXJlZE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RNb2R1bGUge31cbiJdfQ==
|