primeng 18.0.0 → 19.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base/style/basestyle.d.ts +11 -11
- package/fesm2022/primeng-accordion.mjs +12 -12
- 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 +2 -2
- 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 +6 -6
- 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 +3 -4
- 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 +1 -1
- package/fesm2022/primeng-config.mjs.map +1 -1
- package/fesm2022/primeng-confirmdialog.mjs +4 -6
- 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 +3 -4
- 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 +3 -4
- 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 +3 -3
- 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 +3 -4
- 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 +3 -4
- 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 +5 -5
- package/fesm2022/primeng-megamenu.mjs.map +1 -1
- package/fesm2022/primeng-menu.mjs +6 -6
- package/fesm2022/primeng-menu.mjs.map +1 -1
- package/fesm2022/primeng-menubar.mjs +6 -6
- 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 +6 -6
- package/fesm2022/primeng-multiselect.mjs.map +1 -1
- package/fesm2022/primeng-orderlist.mjs +4 -4
- 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 +6 -3
- 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 +3 -4
- package/fesm2022/primeng-panel.mjs.map +1 -1
- package/fesm2022/primeng-panelmenu.mjs +9 -9
- 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 +5 -33
- package/fesm2022/primeng-picklist.mjs.map +1 -1
- package/fesm2022/primeng-popover.mjs +8 -7
- 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 +4 -4
- 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 +5 -5
- package/fesm2022/primeng-select.mjs.map +1 -1
- package/fesm2022/primeng-selectbutton.mjs +3 -4
- package/fesm2022/primeng-selectbutton.mjs.map +1 -1
- package/fesm2022/primeng-sidebar.mjs +3 -4
- 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 +63 -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 +5 -5
- 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 +5 -5
- 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 +6 -7
- package/fesm2022/primeng-toast.mjs.map +1 -1
- package/fesm2022/primeng-togglebutton.mjs +3 -4
- 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 +4 -2
- package/fesm2022/primeng-tooltip.mjs.map +1 -1
- package/fesm2022/primeng-tree.mjs +7 -9
- package/fesm2022/primeng-tree.mjs.map +1 -1
- package/fesm2022/primeng-treeselect.mjs +4 -6
- package/fesm2022/primeng-treeselect.mjs.map +1 -1
- package/fesm2022/primeng-treetable.mjs +31 -29
- package/fesm2022/primeng-treetable.mjs.map +1 -1
- package/package.json +174 -522
- package/popover/popover.d.ts +1 -1
- package/speeddial/speeddial.d.ts +2 -2
- package/treetable/treetable.d.ts +1 -1
- package/esm2022/accordion/accordion.mjs +0 -1266
- 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 -2223
- 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 -332
- 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 -183
- 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 -210
- 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 -583
- 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 -896
- 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 -4504
- 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 -243
- 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 -1181
- 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 -1840
- 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 -450
- 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 -337
- 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 -815
- 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 -619
- 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 -1436
- 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 -4539
- 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 -1384
- 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 -119
- 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 -447
- 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 -663
- 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 -2498
- 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 -875
- 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 -427
- 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 -427
- 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 -1597
- 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 -1858
- 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 -747
- 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 -158
- 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 -344
- 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 -911
- 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 -1745
- 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 -406
- 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 -2044
- 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 -1607
- 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 -1484
- 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 -421
- 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 -529
- 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 -423
- 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 -2924
- 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 -1121
- 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 -591
- 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 -668
- 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 -529
- 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 -893
- 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 -585
- 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 -1628
- 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 -1201
- 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 -2322
- 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 -518
- 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 -197
- 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 -425
- 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 -1290
- 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 -506
- 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 -336
- 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 -2618
- 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 -373
- 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 -578
- 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 -866
- 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 -579
- 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 -521
- 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 -7829
- 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 -730
- 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 -297
- 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 -1089
- 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 -168
- 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 -1444
- 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 -223
- 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 -738
- 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 -353
- 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 -278
- 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 -172
- 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 -715
- 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 -2289
- 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 -1372
- 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 -4642
- 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,2322 +0,0 @@
|
|
1
|
-
import { DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
|
2
|
-
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
3
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, inject, Input, NgModule, numberAttribute, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
4
|
-
import { FormsModule } from '@angular/forms';
|
5
|
-
import { find, findIndexInList, findSingle, isEmpty, scrollInView, setAttribute, uuid } from '@primeuix/utils';
|
6
|
-
import { FilterService, SharedModule } from 'primeng/api';
|
7
|
-
import { BaseComponent } from 'primeng/basecomponent';
|
8
|
-
import { ButtonDirective } from 'primeng/button';
|
9
|
-
import { AngleDoubleDownIcon, AngleDoubleLeftIcon, AngleDoubleRightIcon, AngleDoubleUpIcon, AngleDownIcon, AngleLeftIcon, AngleRightIcon, AngleUpIcon, SearchIcon } from 'primeng/icons';
|
10
|
-
import { Listbox } from 'primeng/listbox';
|
11
|
-
import { Ripple } from 'primeng/ripple';
|
12
|
-
import { PickListStyle } from './style/pickliststyle';
|
13
|
-
import * as i0 from "@angular/core";
|
14
|
-
import * as i1 from "@angular/common";
|
15
|
-
import * as i2 from "@angular/cdk/drag-drop";
|
16
|
-
import * as i3 from "@angular/forms";
|
17
|
-
const _c0 = ["item"];
|
18
|
-
const _c1 = ["sourceHeader"];
|
19
|
-
const _c2 = ["targetHeader"];
|
20
|
-
const _c3 = ["sourceFilter"];
|
21
|
-
const _c4 = ["targetFilter"];
|
22
|
-
const _c5 = ["emptymessagesource"];
|
23
|
-
const _c6 = ["emptyfiltermessagesource"];
|
24
|
-
const _c7 = ["emptymessagetarget"];
|
25
|
-
const _c8 = ["emptyfiltermessagetarget"];
|
26
|
-
const _c9 = ["moveupicon"];
|
27
|
-
const _c10 = ["movetopicon"];
|
28
|
-
const _c11 = ["movedownicon"];
|
29
|
-
const _c12 = ["movebottomicon"];
|
30
|
-
const _c13 = ["movetotargeticon"];
|
31
|
-
const _c14 = ["movealltotargeticon"];
|
32
|
-
const _c15 = ["movetosourceicon"];
|
33
|
-
const _c16 = ["movealltosourceicon"];
|
34
|
-
const _c17 = ["targetfiltericon"];
|
35
|
-
const _c18 = ["sourcefiltericon"];
|
36
|
-
const _c19 = ["sourcelist"];
|
37
|
-
const _c20 = ["targetlist"];
|
38
|
-
const _c21 = () => ({ "p-picklist p-component": true });
|
39
|
-
const _c22 = a0 => ({ $implicit: a0 });
|
40
|
-
const _c23 = (a0, a1, a2) => ({ $implicit: a0, index: a1, selected: a2 });
|
41
|
-
function PickList_div_1_AngleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
42
|
-
i0.ɵɵelement(0, "AngleUpIcon");
|
43
|
-
} if (rf & 2) {
|
44
|
-
i0.ɵɵattribute("data-pc-section", "moveupicon");
|
45
|
-
} }
|
46
|
-
function PickList_div_1_3_ng_template_0_Template(rf, ctx) { }
|
47
|
-
function PickList_div_1_3_Template(rf, ctx) { if (rf & 1) {
|
48
|
-
i0.ɵɵtemplate(0, PickList_div_1_3_ng_template_0_Template, 0, 0, "ng-template");
|
49
|
-
} }
|
50
|
-
function PickList_div_1_AngleDoubleUpIcon_5_Template(rf, ctx) { if (rf & 1) {
|
51
|
-
i0.ɵɵelement(0, "AngleDoubleUpIcon");
|
52
|
-
} if (rf & 2) {
|
53
|
-
i0.ɵɵattribute("data-pc-section", "movetopicon");
|
54
|
-
} }
|
55
|
-
function PickList_div_1_6_ng_template_0_Template(rf, ctx) { }
|
56
|
-
function PickList_div_1_6_Template(rf, ctx) { if (rf & 1) {
|
57
|
-
i0.ɵɵtemplate(0, PickList_div_1_6_ng_template_0_Template, 0, 0, "ng-template");
|
58
|
-
} }
|
59
|
-
function PickList_div_1_AngleDownIcon_8_Template(rf, ctx) { if (rf & 1) {
|
60
|
-
i0.ɵɵelement(0, "AngleDownIcon");
|
61
|
-
} if (rf & 2) {
|
62
|
-
i0.ɵɵattribute("data-pc-section", "movedownicon");
|
63
|
-
} }
|
64
|
-
function PickList_div_1_9_ng_template_0_Template(rf, ctx) { }
|
65
|
-
function PickList_div_1_9_Template(rf, ctx) { if (rf & 1) {
|
66
|
-
i0.ɵɵtemplate(0, PickList_div_1_9_ng_template_0_Template, 0, 0, "ng-template");
|
67
|
-
} }
|
68
|
-
function PickList_div_1_AngleDoubleDownIcon_11_Template(rf, ctx) { if (rf & 1) {
|
69
|
-
i0.ɵɵelement(0, "AngleDoubleDownIcon");
|
70
|
-
} if (rf & 2) {
|
71
|
-
i0.ɵɵattribute("data-pc-section", "movebottomicon");
|
72
|
-
} }
|
73
|
-
function PickList_div_1_12_ng_template_0_Template(rf, ctx) { }
|
74
|
-
function PickList_div_1_12_Template(rf, ctx) { if (rf & 1) {
|
75
|
-
i0.ɵɵtemplate(0, PickList_div_1_12_ng_template_0_Template, 0, 0, "ng-template");
|
76
|
-
} }
|
77
|
-
function PickList_div_1_Template(rf, ctx) { if (rf & 1) {
|
78
|
-
const _r2 = i0.ɵɵgetCurrentView();
|
79
|
-
i0.ɵɵelementStart(0, "div", 15)(1, "button", 11);
|
80
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveUp(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
81
|
-
i0.ɵɵtemplate(2, PickList_div_1_AngleUpIcon_2_Template, 1, 1, "AngleUpIcon", 8)(3, PickList_div_1_3_Template, 1, 0, null, 16);
|
82
|
-
i0.ɵɵelementEnd();
|
83
|
-
i0.ɵɵelementStart(4, "button", 11);
|
84
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveTop(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
85
|
-
i0.ɵɵtemplate(5, PickList_div_1_AngleDoubleUpIcon_5_Template, 1, 1, "AngleDoubleUpIcon", 8)(6, PickList_div_1_6_Template, 1, 0, null, 16);
|
86
|
-
i0.ɵɵelementEnd();
|
87
|
-
i0.ɵɵelementStart(7, "button", 11);
|
88
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveDown(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
89
|
-
i0.ɵɵtemplate(8, PickList_div_1_AngleDownIcon_8_Template, 1, 1, "AngleDownIcon", 8)(9, PickList_div_1_9_Template, 1, 0, null, 16);
|
90
|
-
i0.ɵɵelementEnd();
|
91
|
-
i0.ɵɵelementStart(10, "button", 11);
|
92
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveBottom(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
93
|
-
i0.ɵɵtemplate(11, PickList_div_1_AngleDoubleDownIcon_11_Template, 1, 1, "AngleDoubleDownIcon", 8)(12, PickList_div_1_12_Template, 1, 0, null, 16);
|
94
|
-
i0.ɵɵelementEnd()();
|
95
|
-
} if (rf & 2) {
|
96
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
97
|
-
i0.ɵɵattribute("data-pc-section", "sourceControls")("data-pc-group-section", "controls");
|
98
|
-
i0.ɵɵadvance();
|
99
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("moveup"));
|
100
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveUpAriaLabel)("data-pc-section", "sourceMoveUpButton");
|
101
|
-
i0.ɵɵadvance();
|
102
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveUpIconTemplate);
|
103
|
-
i0.ɵɵadvance();
|
104
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveUpIconTemplate);
|
105
|
-
i0.ɵɵadvance();
|
106
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movetop"));
|
107
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveTopAriaLabel)("data-pc-section", "sourceMoveTopButton");
|
108
|
-
i0.ɵɵadvance();
|
109
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveTopIconTemplate);
|
110
|
-
i0.ɵɵadvance();
|
111
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveTopIconTemplate);
|
112
|
-
i0.ɵɵadvance();
|
113
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movedown"));
|
114
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveDownAriaLabel)("data-pc-section", "sourceMoveDownButton");
|
115
|
-
i0.ɵɵadvance();
|
116
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveDownIconTemplate);
|
117
|
-
i0.ɵɵadvance();
|
118
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveDownIconTemplate);
|
119
|
-
i0.ɵɵadvance();
|
120
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movebottom"));
|
121
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveBottomAriaLabel)("data-pc-section", "sourceMoveBottomButton");
|
122
|
-
i0.ɵɵadvance();
|
123
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveBottomIconTemplate);
|
124
|
-
i0.ɵɵadvance();
|
125
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveBottomIconTemplate);
|
126
|
-
} }
|
127
|
-
function PickList_ng_container_5_ng_template_1_0_ng_template_0_Template(rf, ctx) { }
|
128
|
-
function PickList_ng_container_5_ng_template_1_0_Template(rf, ctx) { if (rf & 1) {
|
129
|
-
i0.ɵɵtemplate(0, PickList_ng_container_5_ng_template_1_0_ng_template_0_Template, 0, 0, "ng-template");
|
130
|
-
} }
|
131
|
-
function PickList_ng_container_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
132
|
-
i0.ɵɵtemplate(0, PickList_ng_container_5_ng_template_1_0_Template, 1, 0, null, 16);
|
133
|
-
} if (rf & 2) {
|
134
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
135
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.sourceHeaderTemplate);
|
136
|
-
} }
|
137
|
-
function PickList_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
138
|
-
i0.ɵɵelementContainerStart(0);
|
139
|
-
i0.ɵɵtemplate(1, PickList_ng_container_5_ng_template_1_Template, 1, 1, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
140
|
-
i0.ɵɵelementContainerEnd();
|
141
|
-
} }
|
142
|
-
function PickList_div_6_Template(rf, ctx) { if (rf & 1) {
|
143
|
-
i0.ɵɵelementStart(0, "div", 17);
|
144
|
-
i0.ɵɵtext(1);
|
145
|
-
i0.ɵɵelementEnd();
|
146
|
-
} if (rf & 2) {
|
147
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
148
|
-
i0.ɵɵadvance();
|
149
|
-
i0.ɵɵtextInterpolate(ctx_r2.sourceHeader);
|
150
|
-
} }
|
151
|
-
function PickList_ng_container_7_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
152
|
-
i0.ɵɵelementContainer(0);
|
153
|
-
} }
|
154
|
-
function PickList_ng_container_7_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
155
|
-
i0.ɵɵtemplate(0, PickList_ng_container_7_ng_template_1_ng_container_0_Template, 1, 0, "ng-container", 12);
|
156
|
-
} if (rf & 2) {
|
157
|
-
const item_r5 = ctx.$implicit;
|
158
|
-
const index_r6 = ctx.index;
|
159
|
-
const selected_r7 = ctx.selected;
|
160
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
161
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c23, item_r5, index_r6, selected_r7));
|
162
|
-
} }
|
163
|
-
function PickList_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
164
|
-
i0.ɵɵelementContainerStart(0);
|
165
|
-
i0.ɵɵtemplate(1, PickList_ng_container_7_ng_template_1_Template, 1, 6, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
166
|
-
i0.ɵɵelementContainerEnd();
|
167
|
-
} }
|
168
|
-
function PickList_ng_container_10_AngleRightIcon_1_Template(rf, ctx) { if (rf & 1) {
|
169
|
-
i0.ɵɵelement(0, "AngleRightIcon");
|
170
|
-
} if (rf & 2) {
|
171
|
-
i0.ɵɵattribute("data-pc-section", "movetotargeticon");
|
172
|
-
} }
|
173
|
-
function PickList_ng_container_10_AngleDownIcon_2_Template(rf, ctx) { if (rf & 1) {
|
174
|
-
i0.ɵɵelement(0, "AngleDownIcon");
|
175
|
-
} if (rf & 2) {
|
176
|
-
i0.ɵɵattribute("data-pc-section", "movetotargeticon");
|
177
|
-
} }
|
178
|
-
function PickList_ng_container_10_Template(rf, ctx) { if (rf & 1) {
|
179
|
-
i0.ɵɵelementContainerStart(0);
|
180
|
-
i0.ɵɵtemplate(1, PickList_ng_container_10_AngleRightIcon_1_Template, 1, 1, "AngleRightIcon", 8)(2, PickList_ng_container_10_AngleDownIcon_2_Template, 1, 1, "AngleDownIcon", 8);
|
181
|
-
i0.ɵɵelementContainerEnd();
|
182
|
-
} if (rf & 2) {
|
183
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
184
|
-
i0.ɵɵadvance();
|
185
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
186
|
-
i0.ɵɵadvance();
|
187
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
188
|
-
} }
|
189
|
-
function PickList_11_ng_template_0_Template(rf, ctx) { }
|
190
|
-
function PickList_11_Template(rf, ctx) { if (rf & 1) {
|
191
|
-
i0.ɵɵtemplate(0, PickList_11_ng_template_0_Template, 0, 0, "ng-template");
|
192
|
-
} }
|
193
|
-
function PickList_ng_container_13_AngleDoubleRightIcon_1_Template(rf, ctx) { if (rf & 1) {
|
194
|
-
i0.ɵɵelement(0, "AngleDoubleRightIcon");
|
195
|
-
} if (rf & 2) {
|
196
|
-
i0.ɵɵattribute("data-pc-section", "movealltotargeticon");
|
197
|
-
} }
|
198
|
-
function PickList_ng_container_13_AngleDoubleDownIcon_2_Template(rf, ctx) { if (rf & 1) {
|
199
|
-
i0.ɵɵelement(0, "AngleDoubleDownIcon");
|
200
|
-
} if (rf & 2) {
|
201
|
-
i0.ɵɵattribute("data-pc-section", "movealltotargeticon");
|
202
|
-
} }
|
203
|
-
function PickList_ng_container_13_Template(rf, ctx) { if (rf & 1) {
|
204
|
-
i0.ɵɵelementContainerStart(0);
|
205
|
-
i0.ɵɵtemplate(1, PickList_ng_container_13_AngleDoubleRightIcon_1_Template, 1, 1, "AngleDoubleRightIcon", 8)(2, PickList_ng_container_13_AngleDoubleDownIcon_2_Template, 1, 1, "AngleDoubleDownIcon", 8);
|
206
|
-
i0.ɵɵelementContainerEnd();
|
207
|
-
} if (rf & 2) {
|
208
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
209
|
-
i0.ɵɵadvance();
|
210
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
211
|
-
i0.ɵɵadvance();
|
212
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
213
|
-
} }
|
214
|
-
function PickList_14_ng_template_0_Template(rf, ctx) { }
|
215
|
-
function PickList_14_Template(rf, ctx) { if (rf & 1) {
|
216
|
-
i0.ɵɵtemplate(0, PickList_14_ng_template_0_Template, 0, 0, "ng-template");
|
217
|
-
} }
|
218
|
-
function PickList_ng_container_16_AngleLeftIcon_1_Template(rf, ctx) { if (rf & 1) {
|
219
|
-
i0.ɵɵelement(0, "AngleLeftIcon");
|
220
|
-
} if (rf & 2) {
|
221
|
-
i0.ɵɵattribute("data-pc-section", "movedownsourceticon");
|
222
|
-
} }
|
223
|
-
function PickList_ng_container_16_AngleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
224
|
-
i0.ɵɵelement(0, "AngleUpIcon");
|
225
|
-
} if (rf & 2) {
|
226
|
-
i0.ɵɵattribute("data-pc-section", "movedownsourceticon");
|
227
|
-
} }
|
228
|
-
function PickList_ng_container_16_Template(rf, ctx) { if (rf & 1) {
|
229
|
-
i0.ɵɵelementContainerStart(0);
|
230
|
-
i0.ɵɵtemplate(1, PickList_ng_container_16_AngleLeftIcon_1_Template, 1, 1, "AngleLeftIcon", 8)(2, PickList_ng_container_16_AngleUpIcon_2_Template, 1, 1, "AngleUpIcon", 8);
|
231
|
-
i0.ɵɵelementContainerEnd();
|
232
|
-
} if (rf & 2) {
|
233
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
234
|
-
i0.ɵɵadvance();
|
235
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
236
|
-
i0.ɵɵadvance();
|
237
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
238
|
-
} }
|
239
|
-
function PickList_17_ng_template_0_Template(rf, ctx) { }
|
240
|
-
function PickList_17_Template(rf, ctx) { if (rf & 1) {
|
241
|
-
i0.ɵɵtemplate(0, PickList_17_ng_template_0_Template, 0, 0, "ng-template");
|
242
|
-
} }
|
243
|
-
function PickList_ng_container_19_AngleDoubleLeftIcon_1_Template(rf, ctx) { if (rf & 1) {
|
244
|
-
i0.ɵɵelement(0, "AngleDoubleLeftIcon");
|
245
|
-
} if (rf & 2) {
|
246
|
-
i0.ɵɵattribute("data-pc-section", "movealltosourceticon");
|
247
|
-
} }
|
248
|
-
function PickList_ng_container_19_AngleDoubleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
249
|
-
i0.ɵɵelement(0, "AngleDoubleUpIcon");
|
250
|
-
} if (rf & 2) {
|
251
|
-
i0.ɵɵattribute("data-pc-section", "movealltosourceticon");
|
252
|
-
} }
|
253
|
-
function PickList_ng_container_19_Template(rf, ctx) { if (rf & 1) {
|
254
|
-
i0.ɵɵelementContainerStart(0);
|
255
|
-
i0.ɵɵtemplate(1, PickList_ng_container_19_AngleDoubleLeftIcon_1_Template, 1, 1, "AngleDoubleLeftIcon", 8)(2, PickList_ng_container_19_AngleDoubleUpIcon_2_Template, 1, 1, "AngleDoubleUpIcon", 8);
|
256
|
-
i0.ɵɵelementContainerEnd();
|
257
|
-
} if (rf & 2) {
|
258
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
259
|
-
i0.ɵɵadvance();
|
260
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
261
|
-
i0.ɵɵadvance();
|
262
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
263
|
-
} }
|
264
|
-
function PickList_20_ng_template_0_Template(rf, ctx) { }
|
265
|
-
function PickList_20_Template(rf, ctx) { if (rf & 1) {
|
266
|
-
i0.ɵɵtemplate(0, PickList_20_ng_template_0_Template, 0, 0, "ng-template");
|
267
|
-
} }
|
268
|
-
function PickList_ng_container_24_ng_template_1_0_ng_template_0_Template(rf, ctx) { }
|
269
|
-
function PickList_ng_container_24_ng_template_1_0_Template(rf, ctx) { if (rf & 1) {
|
270
|
-
i0.ɵɵtemplate(0, PickList_ng_container_24_ng_template_1_0_ng_template_0_Template, 0, 0, "ng-template");
|
271
|
-
} }
|
272
|
-
function PickList_ng_container_24_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
273
|
-
i0.ɵɵtemplate(0, PickList_ng_container_24_ng_template_1_0_Template, 1, 0, null, 16);
|
274
|
-
} if (rf & 2) {
|
275
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
276
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.targetHeaderTemplate);
|
277
|
-
} }
|
278
|
-
function PickList_ng_container_24_Template(rf, ctx) { if (rf & 1) {
|
279
|
-
i0.ɵɵelementContainerStart(0);
|
280
|
-
i0.ɵɵtemplate(1, PickList_ng_container_24_ng_template_1_Template, 1, 1, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
281
|
-
i0.ɵɵelementContainerEnd();
|
282
|
-
} }
|
283
|
-
function PickList_div_25_Template(rf, ctx) { if (rf & 1) {
|
284
|
-
i0.ɵɵelementStart(0, "div", 17);
|
285
|
-
i0.ɵɵtext(1);
|
286
|
-
i0.ɵɵelementEnd();
|
287
|
-
} if (rf & 2) {
|
288
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
289
|
-
i0.ɵɵadvance();
|
290
|
-
i0.ɵɵtextInterpolate(ctx_r2.sourceHeader);
|
291
|
-
} }
|
292
|
-
function PickList_ng_container_26_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
293
|
-
i0.ɵɵelementContainer(0);
|
294
|
-
} }
|
295
|
-
function PickList_ng_container_26_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
296
|
-
i0.ɵɵtemplate(0, PickList_ng_container_26_ng_template_1_ng_container_0_Template, 1, 0, "ng-container", 12);
|
297
|
-
} if (rf & 2) {
|
298
|
-
const item_r8 = ctx.$implicit;
|
299
|
-
const index_r9 = ctx.index;
|
300
|
-
const selected_r10 = ctx.selected;
|
301
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
302
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c23, item_r8, index_r9, selected_r10));
|
303
|
-
} }
|
304
|
-
function PickList_ng_container_26_Template(rf, ctx) { if (rf & 1) {
|
305
|
-
i0.ɵɵelementContainerStart(0);
|
306
|
-
i0.ɵɵtemplate(1, PickList_ng_container_26_ng_template_1_Template, 1, 6, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
307
|
-
i0.ɵɵelementContainerEnd();
|
308
|
-
} }
|
309
|
-
function PickList_div_27_AngleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
310
|
-
i0.ɵɵelement(0, "AngleUpIcon");
|
311
|
-
} if (rf & 2) {
|
312
|
-
i0.ɵɵattribute("data-pc-section", "moveupicon");
|
313
|
-
} }
|
314
|
-
function PickList_div_27_3_ng_template_0_Template(rf, ctx) { }
|
315
|
-
function PickList_div_27_3_Template(rf, ctx) { if (rf & 1) {
|
316
|
-
i0.ɵɵtemplate(0, PickList_div_27_3_ng_template_0_Template, 0, 0, "ng-template");
|
317
|
-
} }
|
318
|
-
function PickList_div_27_AngleDoubleUpIcon_5_Template(rf, ctx) { if (rf & 1) {
|
319
|
-
i0.ɵɵelement(0, "AngleDoubleUpIcon");
|
320
|
-
} if (rf & 2) {
|
321
|
-
i0.ɵɵattribute("data-pc-section", "movetopicon");
|
322
|
-
} }
|
323
|
-
function PickList_div_27_6_ng_template_0_Template(rf, ctx) { }
|
324
|
-
function PickList_div_27_6_Template(rf, ctx) { if (rf & 1) {
|
325
|
-
i0.ɵɵtemplate(0, PickList_div_27_6_ng_template_0_Template, 0, 0, "ng-template");
|
326
|
-
} }
|
327
|
-
function PickList_div_27_AngleDownIcon_8_Template(rf, ctx) { if (rf & 1) {
|
328
|
-
i0.ɵɵelement(0, "AngleDownIcon");
|
329
|
-
} if (rf & 2) {
|
330
|
-
i0.ɵɵattribute("data-pc-section", "movedownicon");
|
331
|
-
} }
|
332
|
-
function PickList_div_27_9_ng_template_0_Template(rf, ctx) { }
|
333
|
-
function PickList_div_27_9_Template(rf, ctx) { if (rf & 1) {
|
334
|
-
i0.ɵɵtemplate(0, PickList_div_27_9_ng_template_0_Template, 0, 0, "ng-template");
|
335
|
-
} }
|
336
|
-
function PickList_div_27_AngleDoubleDownIcon_11_Template(rf, ctx) { if (rf & 1) {
|
337
|
-
i0.ɵɵelement(0, "AngleDoubleDownIcon");
|
338
|
-
} if (rf & 2) {
|
339
|
-
i0.ɵɵattribute("data-pc-section", "movebottomicon");
|
340
|
-
} }
|
341
|
-
function PickList_div_27_12_ng_template_0_Template(rf, ctx) { }
|
342
|
-
function PickList_div_27_12_Template(rf, ctx) { if (rf & 1) {
|
343
|
-
i0.ɵɵtemplate(0, PickList_div_27_12_ng_template_0_Template, 0, 0, "ng-template");
|
344
|
-
} }
|
345
|
-
function PickList_div_27_Template(rf, ctx) { if (rf & 1) {
|
346
|
-
const _r11 = i0.ɵɵgetCurrentView();
|
347
|
-
i0.ɵɵelementStart(0, "div", 18)(1, "button", 11);
|
348
|
-
i0.ɵɵlistener("click", function PickList_div_27_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(23); return i0.ɵɵresetView(ctx_r2.moveUp(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
349
|
-
i0.ɵɵtemplate(2, PickList_div_27_AngleUpIcon_2_Template, 1, 1, "AngleUpIcon", 8)(3, PickList_div_27_3_Template, 1, 0, null, 16);
|
350
|
-
i0.ɵɵelementEnd();
|
351
|
-
i0.ɵɵelementStart(4, "button", 11);
|
352
|
-
i0.ɵɵlistener("click", function PickList_div_27_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(23); return i0.ɵɵresetView(ctx_r2.moveTop(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
353
|
-
i0.ɵɵtemplate(5, PickList_div_27_AngleDoubleUpIcon_5_Template, 1, 1, "AngleDoubleUpIcon", 8)(6, PickList_div_27_6_Template, 1, 0, null, 16);
|
354
|
-
i0.ɵɵelementEnd();
|
355
|
-
i0.ɵɵelementStart(7, "button", 11);
|
356
|
-
i0.ɵɵlistener("click", function PickList_div_27_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(23); return i0.ɵɵresetView(ctx_r2.moveDown(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
357
|
-
i0.ɵɵtemplate(8, PickList_div_27_AngleDownIcon_8_Template, 1, 1, "AngleDownIcon", 8)(9, PickList_div_27_9_Template, 1, 0, null, 16);
|
358
|
-
i0.ɵɵelementEnd();
|
359
|
-
i0.ɵɵelementStart(10, "button", 11);
|
360
|
-
i0.ɵɵlistener("click", function PickList_div_27_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(23); return i0.ɵɵresetView(ctx_r2.moveBottom(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
361
|
-
i0.ɵɵtemplate(11, PickList_div_27_AngleDoubleDownIcon_11_Template, 1, 1, "AngleDoubleDownIcon", 8)(12, PickList_div_27_12_Template, 1, 0, null, 16);
|
362
|
-
i0.ɵɵelementEnd()();
|
363
|
-
} if (rf & 2) {
|
364
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
365
|
-
i0.ɵɵattribute("data-pc-section", "targetControls")("data-pc-group-section", "controls");
|
366
|
-
i0.ɵɵadvance();
|
367
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("moveup"));
|
368
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveUpAriaLabel)("data-pc-section", "targetMoveUpButton");
|
369
|
-
i0.ɵɵadvance();
|
370
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveUpIconTemplate);
|
371
|
-
i0.ɵɵadvance();
|
372
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveUpIconTemplate);
|
373
|
-
i0.ɵɵadvance();
|
374
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movetop"));
|
375
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveTopAriaLabel)("data-pc-section", "targetMoveTopButton");
|
376
|
-
i0.ɵɵadvance();
|
377
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveTopIconTemplate);
|
378
|
-
i0.ɵɵadvance();
|
379
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveTopIconTemplate);
|
380
|
-
i0.ɵɵadvance();
|
381
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movedown"));
|
382
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveDownAriaLabel)("data-pc-section", "targetMoveDownButton");
|
383
|
-
i0.ɵɵadvance();
|
384
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveDownIconTemplate);
|
385
|
-
i0.ɵɵadvance();
|
386
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveDownIconTemplate);
|
387
|
-
i0.ɵɵadvance();
|
388
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movebottom"));
|
389
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveBottomAriaLabel)("data-pc-section", "targetMoveBottomButton");
|
390
|
-
i0.ɵɵadvance();
|
391
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveBottomIconTemplate);
|
392
|
-
i0.ɵɵadvance();
|
393
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveBottomIconTemplate);
|
394
|
-
} }
|
395
|
-
/**
|
396
|
-
* PickList is used to reorder items between different lists.
|
397
|
-
* @group Components
|
398
|
-
*/
|
399
|
-
export class PickList extends BaseComponent {
|
400
|
-
/**
|
401
|
-
* An array of objects for the source list.
|
402
|
-
* @group Props
|
403
|
-
*/
|
404
|
-
source;
|
405
|
-
/**
|
406
|
-
* An array of objects for the target list.
|
407
|
-
* @group Props
|
408
|
-
*/
|
409
|
-
target;
|
410
|
-
/**
|
411
|
-
* Text for the source list caption
|
412
|
-
* @group Props
|
413
|
-
*/
|
414
|
-
sourceHeader;
|
415
|
-
/**
|
416
|
-
* Index of the element in tabbing order.
|
417
|
-
* @group Props
|
418
|
-
*/
|
419
|
-
tabindex = 0;
|
420
|
-
/**
|
421
|
-
* Defines a string that labels the move to right button for accessibility.
|
422
|
-
* @group Props
|
423
|
-
*/
|
424
|
-
rightButtonAriaLabel;
|
425
|
-
/**
|
426
|
-
* Defines a string that labels the move to left button for accessibility.
|
427
|
-
* @group Props
|
428
|
-
*/
|
429
|
-
leftButtonAriaLabel;
|
430
|
-
/**
|
431
|
-
* Defines a string that labels the move to all right button for accessibility.
|
432
|
-
* @group Props
|
433
|
-
*/
|
434
|
-
allRightButtonAriaLabel;
|
435
|
-
/**
|
436
|
-
* Defines a string that labels the move to all left button for accessibility.
|
437
|
-
* @group Props
|
438
|
-
*/
|
439
|
-
allLeftButtonAriaLabel;
|
440
|
-
/**
|
441
|
-
* Defines a string that labels the move to up button for accessibility.
|
442
|
-
* @group Props
|
443
|
-
*/
|
444
|
-
upButtonAriaLabel;
|
445
|
-
/**
|
446
|
-
* Defines a string that labels the move to down button for accessibility.
|
447
|
-
* @group Props
|
448
|
-
*/
|
449
|
-
downButtonAriaLabel;
|
450
|
-
/**
|
451
|
-
* Defines a string that labels the move to top button for accessibility.
|
452
|
-
* @group Props
|
453
|
-
*/
|
454
|
-
topButtonAriaLabel;
|
455
|
-
/**
|
456
|
-
* Defines a string that labels the move to bottom button for accessibility.
|
457
|
-
* @group Props
|
458
|
-
*/
|
459
|
-
bottomButtonAriaLabel;
|
460
|
-
/**
|
461
|
-
* Text for the target list caption
|
462
|
-
* @group Props
|
463
|
-
*/
|
464
|
-
targetHeader;
|
465
|
-
/**
|
466
|
-
* When enabled orderlist adjusts its controls based on screen size.
|
467
|
-
* @group Props
|
468
|
-
*/
|
469
|
-
responsive;
|
470
|
-
/**
|
471
|
-
* When specified displays an input field to filter the items on keyup and decides which field to search (Accepts multiple fields with a comma).
|
472
|
-
* @group Props
|
473
|
-
*/
|
474
|
-
filterBy;
|
475
|
-
/**
|
476
|
-
* Locale to use in filtering. The default locale is the host environment's current locale.
|
477
|
-
* @group Props
|
478
|
-
*/
|
479
|
-
filterLocale;
|
480
|
-
/**
|
481
|
-
* Function to optimize the dom operations by delegating to ngForTrackBy, default algorithm checks for object identity. Use sourceTrackBy or targetTrackBy in case different algorithms are needed per list.
|
482
|
-
* @group Props
|
483
|
-
*/
|
484
|
-
trackBy = (index, item) => item;
|
485
|
-
/**
|
486
|
-
* Function to optimize the dom operations by delegating to ngForTrackBy in source list, default algorithm checks for object identity.
|
487
|
-
* @group Props
|
488
|
-
*/
|
489
|
-
sourceTrackBy;
|
490
|
-
/**
|
491
|
-
* Function to optimize the dom operations by delegating to ngForTrackBy in target list, default algorithm checks for object identity.
|
492
|
-
* @group Props
|
493
|
-
*/
|
494
|
-
targetTrackBy;
|
495
|
-
/**
|
496
|
-
* Whether to show filter input for source list when filterBy is enabled.
|
497
|
-
* @group Props
|
498
|
-
*/
|
499
|
-
showSourceFilter = true;
|
500
|
-
/**
|
501
|
-
* Whether to show filter input for target list when filterBy is enabled.
|
502
|
-
* @group Props
|
503
|
-
*/
|
504
|
-
showTargetFilter = true;
|
505
|
-
/**
|
506
|
-
* Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.
|
507
|
-
* @group Props
|
508
|
-
*/
|
509
|
-
metaKeySelection = false;
|
510
|
-
/**
|
511
|
-
* Whether to enable dragdrop based reordering.
|
512
|
-
* @group Props
|
513
|
-
*/
|
514
|
-
dragdrop = false;
|
515
|
-
/**
|
516
|
-
* Inline style of the component.
|
517
|
-
* @group Props
|
518
|
-
*/
|
519
|
-
style;
|
520
|
-
/**
|
521
|
-
* Style class of the component.
|
522
|
-
* @group Props
|
523
|
-
*/
|
524
|
-
styleClass;
|
525
|
-
/**
|
526
|
-
* Inline style of the source list element.
|
527
|
-
* @group Props
|
528
|
-
*/
|
529
|
-
sourceStyle;
|
530
|
-
/**
|
531
|
-
* Inline style of the target list element.
|
532
|
-
* @group Props
|
533
|
-
*/
|
534
|
-
targetStyle;
|
535
|
-
/**
|
536
|
-
* Whether to show buttons of source list.
|
537
|
-
* @group Props
|
538
|
-
*/
|
539
|
-
showSourceControls = true;
|
540
|
-
/**
|
541
|
-
* Whether to show buttons of target list.
|
542
|
-
* @group Props
|
543
|
-
*/
|
544
|
-
showTargetControls = true;
|
545
|
-
/**
|
546
|
-
* Placeholder text on source filter input.
|
547
|
-
* @group Props
|
548
|
-
*/
|
549
|
-
sourceFilterPlaceholder;
|
550
|
-
/**
|
551
|
-
* Placeholder text on target filter input.
|
552
|
-
* @group Props
|
553
|
-
*/
|
554
|
-
targetFilterPlaceholder;
|
555
|
-
/**
|
556
|
-
* When present, it specifies that the component should be disabled.
|
557
|
-
* @group Props
|
558
|
-
*/
|
559
|
-
disabled = false;
|
560
|
-
/**
|
561
|
-
* Defines a string that labels the filter input of source list.
|
562
|
-
* @group Props
|
563
|
-
*/
|
564
|
-
ariaSourceFilterLabel;
|
565
|
-
/**
|
566
|
-
* Defines a string that labels the filter input of target list.
|
567
|
-
* @group Props
|
568
|
-
*/
|
569
|
-
ariaTargetFilterLabel;
|
570
|
-
/**
|
571
|
-
* Defines how the items are filtered.
|
572
|
-
* @group Props
|
573
|
-
*/
|
574
|
-
filterMatchMode = 'contains';
|
575
|
-
/**
|
576
|
-
* Whether to displays rows with alternating colors.
|
577
|
-
* @group Props
|
578
|
-
*/
|
579
|
-
stripedRows;
|
580
|
-
/**
|
581
|
-
* Keeps selection on the transfer list.
|
582
|
-
* @group Props
|
583
|
-
*/
|
584
|
-
keepSelection = false;
|
585
|
-
/**
|
586
|
-
* Height of the viewport, a scrollbar is defined if height of list exceeds this value.
|
587
|
-
* @group Props
|
588
|
-
*/
|
589
|
-
scrollHeight = '14rem';
|
590
|
-
/**
|
591
|
-
* Whether to focus on the first visible or selected element.
|
592
|
-
* @group Props
|
593
|
-
*/
|
594
|
-
autoOptionFocus = true;
|
595
|
-
/**
|
596
|
-
* Used to pass all properties of the ButtonProps to the Button component.
|
597
|
-
* @group Props
|
598
|
-
*/
|
599
|
-
buttonProps = { severity: 'secondary' };
|
600
|
-
/**
|
601
|
-
* Used to pass all properties of the ButtonProps to the move up button inside the component.
|
602
|
-
* @group Props
|
603
|
-
*/
|
604
|
-
moveUpButtonProps;
|
605
|
-
/**
|
606
|
-
* Used to pass all properties of the ButtonProps to the move top button inside the component.
|
607
|
-
* @group Props
|
608
|
-
*/
|
609
|
-
moveTopButtonProps;
|
610
|
-
/**
|
611
|
-
* Used to pass all properties of the ButtonProps to the move down button inside the component.
|
612
|
-
* @group Props
|
613
|
-
*/
|
614
|
-
moveDownButtonProps;
|
615
|
-
/**
|
616
|
-
* Used to pass all properties of the ButtonProps to the move bottom button inside the component.
|
617
|
-
* @group Props
|
618
|
-
*/
|
619
|
-
moveBottomButtonProps;
|
620
|
-
/**
|
621
|
-
* Used to pass all properties of the ButtonProps to the move to target button inside the component.
|
622
|
-
* @group Props
|
623
|
-
*/
|
624
|
-
moveToTargetProps;
|
625
|
-
/**
|
626
|
-
* Used to pass all properties of the ButtonProps to the move all to target button inside the component.
|
627
|
-
* @group Props
|
628
|
-
*/
|
629
|
-
moveAllToTargetProps;
|
630
|
-
/**
|
631
|
-
* Used to pass all properties of the ButtonProps to the move to source button inside the component.
|
632
|
-
* @group Props
|
633
|
-
*/
|
634
|
-
moveToSourceProps;
|
635
|
-
/**
|
636
|
-
* Used to pass all properties of the ButtonProps to the move all to source button inside the component.
|
637
|
-
* @group Props
|
638
|
-
*/
|
639
|
-
moveAllToSourceProps;
|
640
|
-
/**
|
641
|
-
* Indicates the width of the screen at which the component should change its behavior.
|
642
|
-
* @group Props
|
643
|
-
*/
|
644
|
-
get breakpoint() {
|
645
|
-
return this._breakpoint;
|
646
|
-
}
|
647
|
-
set breakpoint(value) {
|
648
|
-
if (value !== this._breakpoint) {
|
649
|
-
this._breakpoint = value;
|
650
|
-
if (isPlatformBrowser(this.platformId)) {
|
651
|
-
this.destroyMedia();
|
652
|
-
this.initMedia();
|
653
|
-
}
|
654
|
-
}
|
655
|
-
}
|
656
|
-
/**
|
657
|
-
* Callback to invoke when items are moved from target to source.
|
658
|
-
* @param {PickListMoveToSourceEvent} event - Custom move to source event.
|
659
|
-
* @group Emits
|
660
|
-
*/
|
661
|
-
onMoveToSource = new EventEmitter();
|
662
|
-
/**
|
663
|
-
* Callback to invoke when all items are moved from target to source.
|
664
|
-
* @param {PickListMoveAllToSourceEvent} event - Custom move all to source event.
|
665
|
-
* @group Emits
|
666
|
-
*/
|
667
|
-
onMoveAllToSource = new EventEmitter();
|
668
|
-
/**
|
669
|
-
* Callback to invoke when all items are moved from source to target.
|
670
|
-
* @param {PickListMoveAllToTargetEvent} event - Custom move all to target event.
|
671
|
-
* @group Emits
|
672
|
-
*/
|
673
|
-
onMoveAllToTarget = new EventEmitter();
|
674
|
-
/**
|
675
|
-
* Callback to invoke when items are moved from source to target.
|
676
|
-
* @param {PickListMoveToTargetEvent} event - Custom move to target event.
|
677
|
-
* @group Emits
|
678
|
-
*/
|
679
|
-
onMoveToTarget = new EventEmitter();
|
680
|
-
/**
|
681
|
-
* Callback to invoke when items are reordered within source list.
|
682
|
-
* @param {PickListSourceReorderEvent} event - Custom source reorder event.
|
683
|
-
* @group Emits
|
684
|
-
*/
|
685
|
-
onSourceReorder = new EventEmitter();
|
686
|
-
/**
|
687
|
-
* Callback to invoke when items are reordered within target list.
|
688
|
-
* @param {PickListTargetReorderEvent} event - Custom target reorder event.
|
689
|
-
* @group Emits
|
690
|
-
*/
|
691
|
-
onTargetReorder = new EventEmitter();
|
692
|
-
/**
|
693
|
-
* Callback to invoke when items are selected within source list.
|
694
|
-
* @param {PickListSourceSelectEvent} event - Custom source select event.
|
695
|
-
* @group Emits
|
696
|
-
*/
|
697
|
-
onSourceSelect = new EventEmitter();
|
698
|
-
/**
|
699
|
-
* Callback to invoke when items are selected within target list.
|
700
|
-
* @param {PickListTargetSelectEvent} event - Custom target select event.
|
701
|
-
* @group Emits
|
702
|
-
*/
|
703
|
-
onTargetSelect = new EventEmitter();
|
704
|
-
/**
|
705
|
-
* Callback to invoke when the source list is filtered
|
706
|
-
* @param {PickListSourceFilterEvent} event - Custom source filter event.
|
707
|
-
* @group Emits
|
708
|
-
*/
|
709
|
-
onSourceFilter = new EventEmitter();
|
710
|
-
/**
|
711
|
-
* Callback to invoke when the target list is filtered
|
712
|
-
* @param {PickListTargetFilterEvent} event - Custom target filter event.
|
713
|
-
* @group Emits
|
714
|
-
*/
|
715
|
-
onTargetFilter = new EventEmitter();
|
716
|
-
/**
|
717
|
-
* Callback to invoke when the list is focused
|
718
|
-
* @param {Event} event - Browser event.
|
719
|
-
* @group Emits
|
720
|
-
*/
|
721
|
-
onFocus = new EventEmitter();
|
722
|
-
/**
|
723
|
-
* Callback to invoke when the list is blurred
|
724
|
-
* @param {Event} event - Browser event.
|
725
|
-
* @group Emits
|
726
|
-
*/
|
727
|
-
onBlur = new EventEmitter();
|
728
|
-
listViewSourceChild;
|
729
|
-
listViewTargetChild;
|
730
|
-
sourceFilterViewChild;
|
731
|
-
targetFilterViewChild;
|
732
|
-
getButtonProps(direction) {
|
733
|
-
switch (direction) {
|
734
|
-
case 'moveup':
|
735
|
-
return { ...this.buttonProps, ...this.moveUpButtonProps };
|
736
|
-
case 'movetop':
|
737
|
-
return { ...this.buttonProps, ...this.moveTopButtonProps };
|
738
|
-
case 'movedown':
|
739
|
-
return { ...this.buttonProps, ...this.moveDownButtonProps };
|
740
|
-
case 'movebottom':
|
741
|
-
return { ...this.buttonProps, ...this.moveBottomButtonProps };
|
742
|
-
case 'movetotarget':
|
743
|
-
return { ...this.buttonProps, ...this.moveToTargetProps };
|
744
|
-
case 'movealltotarget':
|
745
|
-
return { ...this.buttonProps, ...this.moveAllToTargetProps };
|
746
|
-
case 'movetosource':
|
747
|
-
return { ...this.buttonProps, ...this.moveToSourceProps };
|
748
|
-
case 'movealltosource':
|
749
|
-
return { ...this.buttonProps, ...this.moveAllToSourceProps };
|
750
|
-
default:
|
751
|
-
return this.buttonProps;
|
752
|
-
}
|
753
|
-
}
|
754
|
-
get moveUpAriaLabel() {
|
755
|
-
return this.upButtonAriaLabel ? this.upButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveUp : undefined;
|
756
|
-
}
|
757
|
-
get moveTopAriaLabel() {
|
758
|
-
return this.topButtonAriaLabel ? this.topButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveTop : undefined;
|
759
|
-
}
|
760
|
-
get moveDownAriaLabel() {
|
761
|
-
return this.downButtonAriaLabel ? this.downButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveDown : undefined;
|
762
|
-
}
|
763
|
-
get moveBottomAriaLabel() {
|
764
|
-
return this.bottomButtonAriaLabel ? this.bottomButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveDown : undefined;
|
765
|
-
}
|
766
|
-
get moveToTargetAriaLabel() {
|
767
|
-
return this.rightButtonAriaLabel ? this.rightButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveToTarget : undefined;
|
768
|
-
}
|
769
|
-
get moveAllToTargetAriaLabel() {
|
770
|
-
return this.allRightButtonAriaLabel ? this.allRightButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveAllToTarget : undefined;
|
771
|
-
}
|
772
|
-
get moveToSourceAriaLabel() {
|
773
|
-
return this.leftButtonAriaLabel ? this.leftButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveToSource : undefined;
|
774
|
-
}
|
775
|
-
get moveAllToSourceAriaLabel() {
|
776
|
-
return this.allLeftButtonAriaLabel ? this.allLeftButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveAllToSource : undefined;
|
777
|
-
}
|
778
|
-
get idSource() {
|
779
|
-
return this.id + '_source';
|
780
|
-
}
|
781
|
-
get idTarget() {
|
782
|
-
return this.id + '_target';
|
783
|
-
}
|
784
|
-
get focusedOptionId() {
|
785
|
-
return this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : null;
|
786
|
-
}
|
787
|
-
_breakpoint = '960px';
|
788
|
-
visibleOptionsSource;
|
789
|
-
visibleOptionsTarget;
|
790
|
-
selectedItemsSource = [];
|
791
|
-
selectedItemsTarget = [];
|
792
|
-
reorderedListElement;
|
793
|
-
movedUp;
|
794
|
-
movedDown;
|
795
|
-
itemTouched;
|
796
|
-
styleElement;
|
797
|
-
id = uuid('pn_id_');
|
798
|
-
filterValueSource;
|
799
|
-
filterValueTarget;
|
800
|
-
fromListType;
|
801
|
-
sourceFilterOptions;
|
802
|
-
targetFilterOptions;
|
803
|
-
SOURCE_LIST = -1;
|
804
|
-
TARGET_LIST = 1;
|
805
|
-
window;
|
806
|
-
media;
|
807
|
-
viewChanged;
|
808
|
-
focusedOptionIndex = -1;
|
809
|
-
focusedOption;
|
810
|
-
focused = {
|
811
|
-
sourceList: false,
|
812
|
-
targetList: false
|
813
|
-
};
|
814
|
-
_componentStyle = inject(PickListStyle);
|
815
|
-
mediaChangeListener;
|
816
|
-
filterService = inject(FilterService);
|
817
|
-
ngOnInit() {
|
818
|
-
super.ngOnInit();
|
819
|
-
if (this.responsive) {
|
820
|
-
this.createStyle();
|
821
|
-
this.initMedia();
|
822
|
-
}
|
823
|
-
if (this.filterBy) {
|
824
|
-
this.sourceFilterOptions = {
|
825
|
-
filter: (value) => this.filterSource(value),
|
826
|
-
reset: () => this.resetSourceFilter()
|
827
|
-
};
|
828
|
-
this.targetFilterOptions = {
|
829
|
-
filter: (value) => this.filterTarget(value),
|
830
|
-
reset: () => this.resetTargetFilter()
|
831
|
-
};
|
832
|
-
}
|
833
|
-
}
|
834
|
-
/**
|
835
|
-
* Custom item template.
|
836
|
-
* @group Templates
|
837
|
-
*/
|
838
|
-
itemTemplate;
|
839
|
-
/**
|
840
|
-
* Custom source header template.
|
841
|
-
* @group Templates
|
842
|
-
*/
|
843
|
-
sourceHeaderTemplate;
|
844
|
-
/**
|
845
|
-
* Custom target header template.
|
846
|
-
* @group Templates
|
847
|
-
*/
|
848
|
-
targetHeaderTemplate;
|
849
|
-
/**
|
850
|
-
* Custom source filter template.
|
851
|
-
* @group Templates
|
852
|
-
*/
|
853
|
-
sourceFilterTemplate;
|
854
|
-
/**
|
855
|
-
* Custom target filter template.
|
856
|
-
* @group Templates
|
857
|
-
*/
|
858
|
-
targetFilterTemplate;
|
859
|
-
/**
|
860
|
-
* Custom empty message when source is empty template.
|
861
|
-
* @group Templates
|
862
|
-
*/
|
863
|
-
emptyMessageSourceTemplate;
|
864
|
-
/**
|
865
|
-
* Custom empty filter message when source is empty template.
|
866
|
-
* @group Templates
|
867
|
-
*/
|
868
|
-
emptyFilterMessageSourceTemplate;
|
869
|
-
/**
|
870
|
-
* Custom empty message when target is empty template.
|
871
|
-
* @group Templates
|
872
|
-
*/
|
873
|
-
emptyMessageTargetTemplate;
|
874
|
-
/**
|
875
|
-
* Custom empty filter message when target is empty template.
|
876
|
-
* @group Templates
|
877
|
-
*/
|
878
|
-
emptyFilterMessageTargetTemplate;
|
879
|
-
/**
|
880
|
-
* Custom move up icon template.
|
881
|
-
* @group Templates
|
882
|
-
*/
|
883
|
-
moveUpIconTemplate;
|
884
|
-
/**
|
885
|
-
* Custom move top icon template.
|
886
|
-
* @group Templates
|
887
|
-
*/
|
888
|
-
moveTopIconTemplate;
|
889
|
-
/**
|
890
|
-
* Custom move down icon template.
|
891
|
-
* @group Templates
|
892
|
-
*/
|
893
|
-
moveDownIconTemplate;
|
894
|
-
/**
|
895
|
-
* Custom move bottom icon template.
|
896
|
-
* @group Templates
|
897
|
-
*/
|
898
|
-
moveBottomIconTemplate;
|
899
|
-
/**
|
900
|
-
* Custom move to target icon template.
|
901
|
-
* @group Templates
|
902
|
-
*/
|
903
|
-
moveToTargetIconTemplate;
|
904
|
-
/**
|
905
|
-
* Custom move all to target icon template.
|
906
|
-
* @group Templates
|
907
|
-
*/
|
908
|
-
moveAllToTargetIconTemplate;
|
909
|
-
/**
|
910
|
-
* Custom move to source icon template.
|
911
|
-
* @group Templates
|
912
|
-
*/
|
913
|
-
moveToSourceIconTemplate;
|
914
|
-
/**
|
915
|
-
* Custom move all to source icon template.
|
916
|
-
* @group Templates
|
917
|
-
*/
|
918
|
-
moveAllToSourceIconTemplate;
|
919
|
-
/**
|
920
|
-
* Custom target filter icon template.
|
921
|
-
* @group Templates
|
922
|
-
*/
|
923
|
-
targetFilterIconTemplate;
|
924
|
-
/**
|
925
|
-
* Custom source filter icon template.
|
926
|
-
* @group Templates
|
927
|
-
*/
|
928
|
-
sourceFilterIconTemplate;
|
929
|
-
ngAfterContentInit() {
|
930
|
-
this.templates.forEach((item) => {
|
931
|
-
switch (item.getType()) {
|
932
|
-
case 'item':
|
933
|
-
this.itemTemplate = item.template;
|
934
|
-
break;
|
935
|
-
case 'option':
|
936
|
-
this.itemTemplate = item.template;
|
937
|
-
break;
|
938
|
-
case 'sourceHeader':
|
939
|
-
this.sourceHeaderTemplate = item.template;
|
940
|
-
break;
|
941
|
-
case 'targetHeader':
|
942
|
-
this.targetHeaderTemplate = item.template;
|
943
|
-
break;
|
944
|
-
case 'sourceFilter':
|
945
|
-
this.sourceFilterTemplate = item.template;
|
946
|
-
break;
|
947
|
-
case 'targetFilter':
|
948
|
-
this.targetFilterTemplate = item.template;
|
949
|
-
break;
|
950
|
-
case 'emptymessagesource':
|
951
|
-
this.emptyMessageSourceTemplate = item.template;
|
952
|
-
break;
|
953
|
-
case 'emptyfiltermessagesource':
|
954
|
-
this.emptyFilterMessageSourceTemplate = item.template;
|
955
|
-
break;
|
956
|
-
case 'emptymessagetarget':
|
957
|
-
this.emptyMessageTargetTemplate = item.template;
|
958
|
-
break;
|
959
|
-
case 'emptyfiltermessagetarget':
|
960
|
-
this.emptyFilterMessageTargetTemplate = item.template;
|
961
|
-
break;
|
962
|
-
case 'moveupicon':
|
963
|
-
this.moveUpIconTemplate = item.template;
|
964
|
-
break;
|
965
|
-
case 'movetopicon':
|
966
|
-
this.moveTopIconTemplate = item.template;
|
967
|
-
break;
|
968
|
-
case 'movedownicon':
|
969
|
-
this.moveDownIconTemplate = item.template;
|
970
|
-
break;
|
971
|
-
case 'movebottomicon':
|
972
|
-
this.moveBottomIconTemplate = item.template;
|
973
|
-
break;
|
974
|
-
case 'movetotargeticon':
|
975
|
-
this.moveToTargetIconTemplate = item.template;
|
976
|
-
break;
|
977
|
-
case 'movealltotargeticon':
|
978
|
-
this.moveAllToTargetIconTemplate = item.template;
|
979
|
-
break;
|
980
|
-
case 'movetosourceicon':
|
981
|
-
this.moveToSourceIconTemplate = item.template;
|
982
|
-
break;
|
983
|
-
case 'movealltosourceicon':
|
984
|
-
this.moveAllToSourceIconTemplate = item.template;
|
985
|
-
break;
|
986
|
-
case 'targetfiltericon':
|
987
|
-
this.targetFilterIconTemplate = item.template;
|
988
|
-
break;
|
989
|
-
case 'sourcefiltericon':
|
990
|
-
this.sourceFilterIconTemplate = item.template;
|
991
|
-
break;
|
992
|
-
default:
|
993
|
-
this.itemTemplate = item.template;
|
994
|
-
break;
|
995
|
-
}
|
996
|
-
});
|
997
|
-
}
|
998
|
-
ngAfterViewChecked() {
|
999
|
-
if (this.movedUp || this.movedDown) {
|
1000
|
-
let listItems = find(this.reorderedListElement, 'li.p-highlight');
|
1001
|
-
let listItem;
|
1002
|
-
if (this.movedUp)
|
1003
|
-
listItem = listItems[0];
|
1004
|
-
else
|
1005
|
-
listItem = listItems[listItems.length - 1];
|
1006
|
-
scrollInView(this.reorderedListElement, listItem);
|
1007
|
-
this.movedUp = false;
|
1008
|
-
this.movedDown = false;
|
1009
|
-
this.reorderedListElement = null;
|
1010
|
-
}
|
1011
|
-
}
|
1012
|
-
onItemClick(event, item, selectedItems, listType, callback, itemId) {
|
1013
|
-
if (this.disabled) {
|
1014
|
-
return;
|
1015
|
-
}
|
1016
|
-
let index = this.findIndexInList(item, selectedItems);
|
1017
|
-
if (itemId)
|
1018
|
-
this.focusedOptionIndex = itemId;
|
1019
|
-
let selected = index != -1;
|
1020
|
-
let metaSelection = this.itemTouched ? false : this.metaKeySelection;
|
1021
|
-
if (metaSelection) {
|
1022
|
-
let metaKey = event.metaKey || event.ctrlKey || event.shiftKey;
|
1023
|
-
if (selected && metaKey) {
|
1024
|
-
selectedItems = selectedItems.filter((_, i) => i !== index);
|
1025
|
-
}
|
1026
|
-
else {
|
1027
|
-
if (!metaKey) {
|
1028
|
-
selectedItems = [];
|
1029
|
-
}
|
1030
|
-
selectedItems.push(item);
|
1031
|
-
}
|
1032
|
-
}
|
1033
|
-
else {
|
1034
|
-
if (selected) {
|
1035
|
-
selectedItems = selectedItems.filter((_, i) => i !== index); // Creating a new array without the selected item
|
1036
|
-
}
|
1037
|
-
else {
|
1038
|
-
selectedItems.push(item);
|
1039
|
-
}
|
1040
|
-
}
|
1041
|
-
this.setSelectionList(listType, selectedItems);
|
1042
|
-
callback.emit({ originalEvent: event, items: selectedItems });
|
1043
|
-
this.itemTouched = false;
|
1044
|
-
}
|
1045
|
-
onOptionMouseDown(index, listType) {
|
1046
|
-
this.focused[listType === this.SOURCE_LIST ? 'sourceList' : 'targetList'] = true;
|
1047
|
-
this.focusedOptionIndex = index;
|
1048
|
-
}
|
1049
|
-
onSourceItemDblClick() {
|
1050
|
-
if (this.disabled) {
|
1051
|
-
return;
|
1052
|
-
}
|
1053
|
-
this.moveRight();
|
1054
|
-
this.viewChildMarkForCheck();
|
1055
|
-
}
|
1056
|
-
onTargetItemDblClick() {
|
1057
|
-
if (this.disabled) {
|
1058
|
-
return;
|
1059
|
-
}
|
1060
|
-
this.moveLeft();
|
1061
|
-
this.viewChildMarkForCheck();
|
1062
|
-
}
|
1063
|
-
onFilter(event, listType) {
|
1064
|
-
let query = event.target.value;
|
1065
|
-
if (listType === this.SOURCE_LIST)
|
1066
|
-
this.filterSource(query);
|
1067
|
-
else if (listType === this.TARGET_LIST)
|
1068
|
-
this.filterTarget(query);
|
1069
|
-
}
|
1070
|
-
filterSource(value = '') {
|
1071
|
-
this.filterValueSource = value.trim().toLocaleLowerCase(this.filterLocale);
|
1072
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1073
|
-
}
|
1074
|
-
filterTarget(value = '') {
|
1075
|
-
this.filterValueTarget = value.trim().toLocaleLowerCase(this.filterLocale);
|
1076
|
-
this.filter(this.target, this.TARGET_LIST);
|
1077
|
-
}
|
1078
|
-
filter(data, listType) {
|
1079
|
-
let searchFields = this.filterBy.split(',');
|
1080
|
-
if (listType === this.SOURCE_LIST) {
|
1081
|
-
this.visibleOptionsSource = this.filterService.filter(data, searchFields, this.filterValueSource, this.filterMatchMode, this.filterLocale);
|
1082
|
-
this.onSourceFilter.emit({ query: this.filterValueSource, value: this.visibleOptionsSource });
|
1083
|
-
}
|
1084
|
-
else if (listType === this.TARGET_LIST) {
|
1085
|
-
this.visibleOptionsTarget = this.filterService.filter(data, searchFields, this.filterValueTarget, this.filterMatchMode, this.filterLocale);
|
1086
|
-
this.onTargetFilter.emit({ query: this.filterValueTarget, value: this.visibleOptionsTarget });
|
1087
|
-
}
|
1088
|
-
}
|
1089
|
-
isItemVisible(item, listType) {
|
1090
|
-
if (listType == this.SOURCE_LIST)
|
1091
|
-
return this.isVisibleInList(this.visibleOptionsSource, item, this.filterValueSource);
|
1092
|
-
else
|
1093
|
-
return this.isVisibleInList(this.visibleOptionsTarget, item, this.filterValueTarget);
|
1094
|
-
}
|
1095
|
-
isEmpty(listType) {
|
1096
|
-
if (listType == this.SOURCE_LIST)
|
1097
|
-
return this.filterValueSource ? !this.visibleOptionsSource || this.visibleOptionsSource.length === 0 : !this.source || this.source.length === 0;
|
1098
|
-
else
|
1099
|
-
return this.filterValueTarget ? !this.visibleOptionsTarget || this.visibleOptionsTarget.length === 0 : !this.target || this.target.length === 0;
|
1100
|
-
}
|
1101
|
-
isVisibleInList(data, item, filterValue) {
|
1102
|
-
if (filterValue && filterValue.trim().length) {
|
1103
|
-
for (let i = 0; i < data.length; i++) {
|
1104
|
-
if (item == data[i]) {
|
1105
|
-
return true;
|
1106
|
-
}
|
1107
|
-
}
|
1108
|
-
}
|
1109
|
-
else {
|
1110
|
-
return true;
|
1111
|
-
}
|
1112
|
-
}
|
1113
|
-
onItemTouchEnd() {
|
1114
|
-
if (this.disabled) {
|
1115
|
-
return;
|
1116
|
-
}
|
1117
|
-
this.itemTouched = true;
|
1118
|
-
}
|
1119
|
-
sortByIndexInList(items, list) {
|
1120
|
-
return items.sort((item1, item2) => findIndexInList(item1, list) - findIndexInList(item2, list));
|
1121
|
-
}
|
1122
|
-
viewChildMarkForCheck() {
|
1123
|
-
this.listViewSourceChild.cd.markForCheck();
|
1124
|
-
this.listViewTargetChild.cd.markForCheck();
|
1125
|
-
}
|
1126
|
-
moveUp(listElement, list, selectedItems, callback, listType) {
|
1127
|
-
if (selectedItems && selectedItems.length) {
|
1128
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1129
|
-
for (let i = 0; i < selectedItems.length; i++) {
|
1130
|
-
let selectedItem = selectedItems[i];
|
1131
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1132
|
-
if (selectedItemIndex != 0) {
|
1133
|
-
let movedItem = list[selectedItemIndex];
|
1134
|
-
let temp = list[selectedItemIndex - 1];
|
1135
|
-
list[selectedItemIndex - 1] = movedItem;
|
1136
|
-
list[selectedItemIndex] = temp;
|
1137
|
-
}
|
1138
|
-
else {
|
1139
|
-
break;
|
1140
|
-
}
|
1141
|
-
}
|
1142
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1143
|
-
this.filter(list, listType);
|
1144
|
-
this.movedUp = true;
|
1145
|
-
this.reorderedListElement = listElement;
|
1146
|
-
callback.emit({ items: selectedItems });
|
1147
|
-
this.viewChildMarkForCheck();
|
1148
|
-
}
|
1149
|
-
}
|
1150
|
-
moveTop(listElement, list, selectedItems, callback, listType) {
|
1151
|
-
if (selectedItems && selectedItems.length) {
|
1152
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1153
|
-
for (let i = 0; i < selectedItems.length; i++) {
|
1154
|
-
let selectedItem = selectedItems[i];
|
1155
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1156
|
-
if (selectedItemIndex != 0) {
|
1157
|
-
let movedItem = list.splice(selectedItemIndex, 1)[0];
|
1158
|
-
list.unshift(movedItem);
|
1159
|
-
}
|
1160
|
-
else {
|
1161
|
-
break;
|
1162
|
-
}
|
1163
|
-
}
|
1164
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1165
|
-
this.filter(list, listType);
|
1166
|
-
listElement.scrollTop = 0;
|
1167
|
-
callback.emit({ items: selectedItems });
|
1168
|
-
this.viewChildMarkForCheck();
|
1169
|
-
}
|
1170
|
-
}
|
1171
|
-
moveDown(listElement, list, selectedItems, callback, listType) {
|
1172
|
-
if (selectedItems && selectedItems.length) {
|
1173
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1174
|
-
for (let i = selectedItems.length - 1; i >= 0; i--) {
|
1175
|
-
let selectedItem = selectedItems[i];
|
1176
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1177
|
-
if (selectedItemIndex != list.length - 1) {
|
1178
|
-
let movedItem = list[selectedItemIndex];
|
1179
|
-
let temp = list[selectedItemIndex + 1];
|
1180
|
-
list[selectedItemIndex + 1] = movedItem;
|
1181
|
-
list[selectedItemIndex] = temp;
|
1182
|
-
}
|
1183
|
-
else {
|
1184
|
-
break;
|
1185
|
-
}
|
1186
|
-
}
|
1187
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1188
|
-
this.filter(list, listType);
|
1189
|
-
this.movedDown = true;
|
1190
|
-
this.reorderedListElement = listElement;
|
1191
|
-
callback.emit({ items: selectedItems });
|
1192
|
-
this.viewChildMarkForCheck();
|
1193
|
-
}
|
1194
|
-
}
|
1195
|
-
moveBottom(listElement, list, selectedItems, callback, listType) {
|
1196
|
-
if (selectedItems && selectedItems.length) {
|
1197
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1198
|
-
for (let i = selectedItems.length - 1; i >= 0; i--) {
|
1199
|
-
let selectedItem = selectedItems[i];
|
1200
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1201
|
-
if (selectedItemIndex != list.length - 1) {
|
1202
|
-
let movedItem = list.splice(selectedItemIndex, 1)[0];
|
1203
|
-
list.push(movedItem);
|
1204
|
-
}
|
1205
|
-
else {
|
1206
|
-
break;
|
1207
|
-
}
|
1208
|
-
}
|
1209
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1210
|
-
this.filter(list, listType);
|
1211
|
-
listElement.scrollTop = listElement.scrollHeight;
|
1212
|
-
callback.emit({ items: selectedItems });
|
1213
|
-
this.viewChildMarkForCheck();
|
1214
|
-
}
|
1215
|
-
}
|
1216
|
-
moveRight() {
|
1217
|
-
if (this.selectedItemsSource && this.selectedItemsSource.length) {
|
1218
|
-
for (let i = 0; i < this.selectedItemsSource.length; i++) {
|
1219
|
-
let selectedItem = this.selectedItemsSource[i];
|
1220
|
-
if (findIndexInList(selectedItem, this.target) == -1) {
|
1221
|
-
this.target?.push(this.source?.splice(findIndexInList(selectedItem, this.source), 1)[0]);
|
1222
|
-
if (this.visibleOptionsSource?.includes(selectedItem)) {
|
1223
|
-
this.visibleOptionsSource.splice(findIndexInList(selectedItem, this.visibleOptionsSource), 1);
|
1224
|
-
}
|
1225
|
-
}
|
1226
|
-
}
|
1227
|
-
this.onMoveToTarget.emit({
|
1228
|
-
items: this.selectedItemsSource
|
1229
|
-
});
|
1230
|
-
if (this.keepSelection) {
|
1231
|
-
this.selectedItemsTarget = [...this.selectedItemsTarget, ...this.selectedItemsSource];
|
1232
|
-
}
|
1233
|
-
this.selectedItemsSource = [];
|
1234
|
-
if (this.filterValueTarget) {
|
1235
|
-
this.filter(this.target, this.TARGET_LIST);
|
1236
|
-
}
|
1237
|
-
this.viewChildMarkForCheck();
|
1238
|
-
}
|
1239
|
-
}
|
1240
|
-
moveAllRight() {
|
1241
|
-
if (this.source) {
|
1242
|
-
let movedItems = [];
|
1243
|
-
for (let i = 0; i < this.source.length; i++) {
|
1244
|
-
if (this.isItemVisible(this.source[i], this.SOURCE_LIST)) {
|
1245
|
-
let removedItem = this.source.splice(i, 1)[0];
|
1246
|
-
this.target?.push(removedItem);
|
1247
|
-
movedItems.push(removedItem);
|
1248
|
-
i--;
|
1249
|
-
}
|
1250
|
-
}
|
1251
|
-
this.onMoveAllToTarget.emit({
|
1252
|
-
items: movedItems
|
1253
|
-
});
|
1254
|
-
if (this.keepSelection) {
|
1255
|
-
this.selectedItemsTarget = [...this.selectedItemsTarget, ...this.selectedItemsSource];
|
1256
|
-
}
|
1257
|
-
this.selectedItemsSource = [];
|
1258
|
-
if (this.filterValueTarget) {
|
1259
|
-
this.filter(this.target, this.TARGET_LIST);
|
1260
|
-
}
|
1261
|
-
this.visibleOptionsSource = [];
|
1262
|
-
this.viewChildMarkForCheck();
|
1263
|
-
}
|
1264
|
-
}
|
1265
|
-
moveLeft() {
|
1266
|
-
if (this.selectedItemsTarget && this.selectedItemsTarget.length) {
|
1267
|
-
for (let i = 0; i < this.selectedItemsTarget.length; i++) {
|
1268
|
-
let selectedItem = this.selectedItemsTarget[i];
|
1269
|
-
if (findIndexInList(selectedItem, this.source) == -1) {
|
1270
|
-
this.source?.push(this.target?.splice(findIndexInList(selectedItem, this.target), 1)[0]);
|
1271
|
-
if (this.visibleOptionsTarget?.includes(selectedItem)) {
|
1272
|
-
this.visibleOptionsTarget.splice(findIndexInList(selectedItem, this.visibleOptionsTarget), 1)[0];
|
1273
|
-
}
|
1274
|
-
}
|
1275
|
-
}
|
1276
|
-
this.onMoveToSource.emit({
|
1277
|
-
items: this.selectedItemsTarget
|
1278
|
-
});
|
1279
|
-
if (this.keepSelection) {
|
1280
|
-
this.selectedItemsSource = [...this.selectedItemsSource, ...this.selectedItemsTarget];
|
1281
|
-
}
|
1282
|
-
this.selectedItemsTarget = [];
|
1283
|
-
if (this.filterValueSource) {
|
1284
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1285
|
-
}
|
1286
|
-
this.viewChildMarkForCheck();
|
1287
|
-
}
|
1288
|
-
}
|
1289
|
-
moveAllLeft() {
|
1290
|
-
if (this.target) {
|
1291
|
-
let movedItems = [];
|
1292
|
-
for (let i = 0; i < this.target.length; i++) {
|
1293
|
-
if (this.isItemVisible(this.target[i], this.TARGET_LIST)) {
|
1294
|
-
let removedItem = this.target.splice(i, 1)[0];
|
1295
|
-
this.source?.push(removedItem);
|
1296
|
-
movedItems.push(removedItem);
|
1297
|
-
i--;
|
1298
|
-
}
|
1299
|
-
}
|
1300
|
-
this.onMoveAllToSource.emit({
|
1301
|
-
items: movedItems
|
1302
|
-
});
|
1303
|
-
if (this.keepSelection) {
|
1304
|
-
this.selectedItemsSource = [...this.selectedItemsSource, ...this.selectedItemsTarget];
|
1305
|
-
}
|
1306
|
-
this.selectedItemsTarget = [];
|
1307
|
-
if (this.filterValueSource) {
|
1308
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1309
|
-
}
|
1310
|
-
this.visibleOptionsTarget = [];
|
1311
|
-
this.viewChildMarkForCheck();
|
1312
|
-
}
|
1313
|
-
}
|
1314
|
-
isSelected(item, selectedItems) {
|
1315
|
-
return this.findIndexInList(item, selectedItems) != -1;
|
1316
|
-
}
|
1317
|
-
findIndexInList(item, selectedItems) {
|
1318
|
-
return findIndexInList(item, selectedItems);
|
1319
|
-
}
|
1320
|
-
onDrop(event, listType) {
|
1321
|
-
let isTransfer = event.previousContainer !== event.container;
|
1322
|
-
let dropIndexes = this.getDropIndexes(event.previousIndex, event.currentIndex, listType, isTransfer, event.item.data);
|
1323
|
-
if (listType === this.SOURCE_LIST) {
|
1324
|
-
if (isTransfer) {
|
1325
|
-
transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1326
|
-
let selectedItemIndex = findIndexInList(event.item.data, this.selectedItemsTarget);
|
1327
|
-
if (selectedItemIndex != -1) {
|
1328
|
-
this.selectedItemsTarget.splice(selectedItemIndex, 1);
|
1329
|
-
if (this.keepSelection) {
|
1330
|
-
this.selectedItemsTarget.push(event.item.data);
|
1331
|
-
}
|
1332
|
-
}
|
1333
|
-
if (this.visibleOptionsTarget)
|
1334
|
-
this.visibleOptionsTarget.splice(event.previousIndex, 1);
|
1335
|
-
this.onMoveToSource.emit({ items: [event.item.data] });
|
1336
|
-
}
|
1337
|
-
else {
|
1338
|
-
moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1339
|
-
this.onSourceReorder.emit({ items: [event.item.data] });
|
1340
|
-
}
|
1341
|
-
if (this.filterValueSource) {
|
1342
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1343
|
-
}
|
1344
|
-
}
|
1345
|
-
else {
|
1346
|
-
if (isTransfer) {
|
1347
|
-
transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1348
|
-
let selectedItemIndex = findIndexInList(event.item.data, this.selectedItemsSource);
|
1349
|
-
if (selectedItemIndex != -1) {
|
1350
|
-
this.selectedItemsSource.splice(selectedItemIndex, 1);
|
1351
|
-
if (this.keepSelection) {
|
1352
|
-
this.selectedItemsTarget.push(event.item.data);
|
1353
|
-
}
|
1354
|
-
}
|
1355
|
-
if (this.visibleOptionsSource)
|
1356
|
-
this.visibleOptionsSource.splice(event.previousIndex, 1);
|
1357
|
-
this.onMoveToTarget.emit({ items: [event.item.data] });
|
1358
|
-
}
|
1359
|
-
else {
|
1360
|
-
moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1361
|
-
this.onTargetReorder.emit({ items: [event.item.data] });
|
1362
|
-
}
|
1363
|
-
if (this.filterValueTarget) {
|
1364
|
-
this.filter(this.target, this.TARGET_LIST);
|
1365
|
-
}
|
1366
|
-
}
|
1367
|
-
}
|
1368
|
-
onListFocus(event, listType) {
|
1369
|
-
this.onFocus.emit(event);
|
1370
|
-
}
|
1371
|
-
onListBlur(event, listType) {
|
1372
|
-
this.onBlur.emit(event);
|
1373
|
-
}
|
1374
|
-
getListElement(listType) {
|
1375
|
-
return listType === this.SOURCE_LIST ? this.listViewSourceChild?.el.nativeElement : this.listViewTargetChild?.el.nativeElement;
|
1376
|
-
}
|
1377
|
-
getListItems(listType) {
|
1378
|
-
let listElemet = this.getListElement(listType);
|
1379
|
-
return find(listElemet, 'li.p-picklist-item');
|
1380
|
-
}
|
1381
|
-
getLatestSelectedVisibleOptionIndex(visibleList, selectedItems) {
|
1382
|
-
const latestSelectedItem = [...selectedItems].reverse().find((item) => visibleList.includes(item));
|
1383
|
-
return latestSelectedItem !== undefined ? visibleList.indexOf(latestSelectedItem) : -1;
|
1384
|
-
}
|
1385
|
-
getVisibleList(listType) {
|
1386
|
-
if (listType === this.SOURCE_LIST) {
|
1387
|
-
return this.visibleOptionsSource && this.visibleOptionsSource.length > 0 ? this.visibleOptionsSource : this.source && this.source.length > 0 ? this.source : null;
|
1388
|
-
}
|
1389
|
-
return this.visibleOptionsTarget && this.visibleOptionsTarget.length > 0 ? this.visibleOptionsTarget : this.target && this.target.length > 0 ? this.target : null;
|
1390
|
-
}
|
1391
|
-
setSelectionList(listType, selectedItems) {
|
1392
|
-
if (listType === this.SOURCE_LIST) {
|
1393
|
-
this.selectedItemsSource = selectedItems;
|
1394
|
-
}
|
1395
|
-
else {
|
1396
|
-
this.selectedItemsTarget = selectedItems;
|
1397
|
-
}
|
1398
|
-
}
|
1399
|
-
findNextOptionIndex(index, listType) {
|
1400
|
-
const items = this.getListItems(listType);
|
1401
|
-
const matchedOptionIndex = [...items].findIndex((link) => link.id === index);
|
1402
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex + 1 : 0;
|
1403
|
-
}
|
1404
|
-
findPrevOptionIndex(index, listType) {
|
1405
|
-
const items = this.getListItems(listType);
|
1406
|
-
const matchedOptionIndex = [...items].findIndex((link) => link.id === index);
|
1407
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex - 1 : 0;
|
1408
|
-
}
|
1409
|
-
onItemKeyDown(event, selectedItems, callback, listType) {
|
1410
|
-
switch (event.code) {
|
1411
|
-
case 'ArrowDown':
|
1412
|
-
this.onArrowDownKey(event, selectedItems, callback, listType);
|
1413
|
-
break;
|
1414
|
-
case 'ArrowUp':
|
1415
|
-
this.onArrowUpKey(event, selectedItems, callback, listType);
|
1416
|
-
break;
|
1417
|
-
case 'Home':
|
1418
|
-
this.onHomeKey(event, selectedItems, callback, listType);
|
1419
|
-
break;
|
1420
|
-
case 'End':
|
1421
|
-
this.onEndKey(event, selectedItems, callback, listType);
|
1422
|
-
break;
|
1423
|
-
case 'Enter':
|
1424
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1425
|
-
break;
|
1426
|
-
case 'Space':
|
1427
|
-
this.onSpaceKey(event, selectedItems, callback, listType);
|
1428
|
-
break;
|
1429
|
-
case 'KeyA':
|
1430
|
-
if (event.ctrlKey) {
|
1431
|
-
this.setSelectionList(listType, this.getVisibleList(listType));
|
1432
|
-
callback.emit({ items: selectedItems });
|
1433
|
-
event.preventDefault();
|
1434
|
-
}
|
1435
|
-
default:
|
1436
|
-
break;
|
1437
|
-
}
|
1438
|
-
}
|
1439
|
-
getFocusedOption(index, listType) {
|
1440
|
-
if (index === -1)
|
1441
|
-
return null;
|
1442
|
-
if (listType === this.SOURCE_LIST) {
|
1443
|
-
return this.visibleOptionsSource && this.visibleOptionsSource.length ? this.visibleOptionsSource[index] : this.source && this.source.length ? this.source[index] : null;
|
1444
|
-
}
|
1445
|
-
return this.visibleOptionsTarget && this.visibleOptionsTarget.length ? this.visibleOptionsTarget[index] : this.target && this.target.length ? this.target[index] : null;
|
1446
|
-
}
|
1447
|
-
changeFocusedOptionIndex(index, listType) {
|
1448
|
-
const items = this.getListItems(listType);
|
1449
|
-
if (items?.length > 0) {
|
1450
|
-
let order = index >= items.length ? items.length - 1 : index < 0 ? 0 : index;
|
1451
|
-
this.focusedOptionIndex = items[order].getAttribute('id');
|
1452
|
-
this.focusedOption = this.getFocusedOption(order, listType);
|
1453
|
-
this.scrollInView(items[order].getAttribute('id'), listType);
|
1454
|
-
}
|
1455
|
-
}
|
1456
|
-
scrollInView(id, listType) {
|
1457
|
-
const element = findSingle(this.getListElement(listType), `li[id="${id}"]`);
|
1458
|
-
if (element) {
|
1459
|
-
element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });
|
1460
|
-
}
|
1461
|
-
}
|
1462
|
-
onArrowDownKey(event, selectedItems, callback, listType) {
|
1463
|
-
const optionIndex = this.findNextOptionIndex(this.focusedOptionIndex, listType);
|
1464
|
-
this.changeFocusedOptionIndex(optionIndex, listType);
|
1465
|
-
if (event.shiftKey) {
|
1466
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1467
|
-
}
|
1468
|
-
event.preventDefault();
|
1469
|
-
}
|
1470
|
-
onArrowUpKey(event, selectedItems, callback, listType) {
|
1471
|
-
const optionIndex = this.findPrevOptionIndex(this.focusedOptionIndex, listType);
|
1472
|
-
this.changeFocusedOptionIndex(optionIndex, listType);
|
1473
|
-
if (event.shiftKey) {
|
1474
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1475
|
-
}
|
1476
|
-
event.preventDefault();
|
1477
|
-
}
|
1478
|
-
onEnterKey(event, selectedItems, callback, listType) {
|
1479
|
-
this.onItemClick(event, this.focusedOption, selectedItems, listType, callback);
|
1480
|
-
event.preventDefault();
|
1481
|
-
}
|
1482
|
-
onSpaceKey(event, selectedItems, callback, listType) {
|
1483
|
-
event.preventDefault();
|
1484
|
-
if (event.shiftKey && selectedItems && selectedItems.length > 0) {
|
1485
|
-
let visibleList = this.getVisibleList(listType);
|
1486
|
-
let lastSelectedIndex = this.getLatestSelectedVisibleOptionIndex(visibleList, selectedItems);
|
1487
|
-
if (lastSelectedIndex !== -1) {
|
1488
|
-
let focusedIndex = findIndexInList(this.focusedOption, visibleList);
|
1489
|
-
selectedItems = [...visibleList.slice(Math.min(lastSelectedIndex, focusedIndex), Math.max(lastSelectedIndex, focusedIndex) + 1)];
|
1490
|
-
this.setSelectionList(listType, selectedItems);
|
1491
|
-
callback.emit({ items: selectedItems });
|
1492
|
-
return;
|
1493
|
-
}
|
1494
|
-
}
|
1495
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1496
|
-
}
|
1497
|
-
onHomeKey(event, selectedItems, callback, listType) {
|
1498
|
-
if (event.ctrlKey && event.shiftKey) {
|
1499
|
-
let visibleList = this.getVisibleList(listType);
|
1500
|
-
let focusedIndex = findIndexInList(this.focusedOption, visibleList);
|
1501
|
-
selectedItems = [...visibleList.slice(0, focusedIndex + 1)];
|
1502
|
-
this.setSelectionList(listType, selectedItems);
|
1503
|
-
callback.emit({ items: selectedItems });
|
1504
|
-
}
|
1505
|
-
else {
|
1506
|
-
this.changeFocusedOptionIndex(0, listType);
|
1507
|
-
}
|
1508
|
-
event.preventDefault();
|
1509
|
-
}
|
1510
|
-
onEndKey(event, selectedItems, callback, listType) {
|
1511
|
-
let visibleList = this.getVisibleList(listType);
|
1512
|
-
let lastIndex = visibleList && visibleList.length > 0 ? visibleList.length - 1 : null;
|
1513
|
-
if (lastIndex === null)
|
1514
|
-
return;
|
1515
|
-
if (event.ctrlKey && event.shiftKey) {
|
1516
|
-
let focusedIndex = findIndexInList(this.focusedOption, visibleList);
|
1517
|
-
selectedItems = [...visibleList.slice(focusedIndex, lastIndex)];
|
1518
|
-
this.setSelectionList(listType, selectedItems);
|
1519
|
-
callback.emit({ items: selectedItems });
|
1520
|
-
}
|
1521
|
-
else {
|
1522
|
-
this.changeFocusedOptionIndex(lastIndex, listType);
|
1523
|
-
}
|
1524
|
-
event.preventDefault();
|
1525
|
-
}
|
1526
|
-
getDropIndexes(fromIndex, toIndex, droppedList, isTransfer, data) {
|
1527
|
-
let previousIndex, currentIndex;
|
1528
|
-
if (droppedList === this.SOURCE_LIST) {
|
1529
|
-
previousIndex = isTransfer ? (this.filterValueTarget ? findIndexInList(data, this.target) : fromIndex) : this.filterValueSource ? findIndexInList(data, this.source) : fromIndex;
|
1530
|
-
currentIndex = this.filterValueSource ? this.findFilteredCurrentIndex(this.visibleOptionsSource, toIndex, this.source) : toIndex;
|
1531
|
-
}
|
1532
|
-
else {
|
1533
|
-
previousIndex = isTransfer ? (this.filterValueSource ? findIndexInList(data, this.source) : fromIndex) : this.filterValueTarget ? findIndexInList(data, this.target) : fromIndex;
|
1534
|
-
currentIndex = this.filterValueTarget ? this.findFilteredCurrentIndex(this.visibleOptionsTarget, toIndex, this.target) : toIndex;
|
1535
|
-
}
|
1536
|
-
return { previousIndex, currentIndex };
|
1537
|
-
}
|
1538
|
-
findFilteredCurrentIndex(visibleOptions, index, options) {
|
1539
|
-
if (visibleOptions.length === index) {
|
1540
|
-
let toIndex = findIndexInList(visibleOptions[index - 1], options);
|
1541
|
-
return toIndex + 1;
|
1542
|
-
}
|
1543
|
-
else {
|
1544
|
-
return findIndexInList(visibleOptions[index], options);
|
1545
|
-
}
|
1546
|
-
}
|
1547
|
-
resetSourceFilter() {
|
1548
|
-
this.visibleOptionsSource = null;
|
1549
|
-
this.filterValueSource = null;
|
1550
|
-
this.sourceFilterViewChild && (this.sourceFilterViewChild.nativeElement.value = '');
|
1551
|
-
}
|
1552
|
-
resetTargetFilter() {
|
1553
|
-
this.visibleOptionsTarget = null;
|
1554
|
-
this.filterValueTarget = null;
|
1555
|
-
this.targetFilterViewChild && (this.targetFilterViewChild.nativeElement.value = '');
|
1556
|
-
}
|
1557
|
-
resetFilter() {
|
1558
|
-
this.resetSourceFilter();
|
1559
|
-
this.resetTargetFilter();
|
1560
|
-
}
|
1561
|
-
initMedia() {
|
1562
|
-
if (isPlatformBrowser(this.platformId)) {
|
1563
|
-
this.media = this.document.defaultView.matchMedia(`(max-width: ${this.breakpoint})`);
|
1564
|
-
this.viewChanged = this.media.matches;
|
1565
|
-
this.bindMediaChangeListener();
|
1566
|
-
}
|
1567
|
-
}
|
1568
|
-
destroyMedia() {
|
1569
|
-
this.unbindMediaChangeListener();
|
1570
|
-
}
|
1571
|
-
bindMediaChangeListener() {
|
1572
|
-
if (this.media && !this.mediaChangeListener) {
|
1573
|
-
this.mediaChangeListener = this.renderer.listen(this.media, 'change', (event) => {
|
1574
|
-
this.viewChanged = event.matches;
|
1575
|
-
this.cd.markForCheck();
|
1576
|
-
});
|
1577
|
-
}
|
1578
|
-
}
|
1579
|
-
unbindMediaChangeListener() {
|
1580
|
-
if (this.mediaChangeListener) {
|
1581
|
-
this.mediaChangeListener();
|
1582
|
-
this.mediaChangeListener = null;
|
1583
|
-
}
|
1584
|
-
}
|
1585
|
-
createStyle() {
|
1586
|
-
if (isPlatformBrowser(this.platformId)) {
|
1587
|
-
if (!this.styleElement) {
|
1588
|
-
this.renderer.setAttribute(this.el.nativeElement.children[0], this.id, '');
|
1589
|
-
this.styleElement = this.renderer.createElement('style');
|
1590
|
-
this.renderer.setAttribute(this.styleElement, 'type', 'text/css');
|
1591
|
-
this.renderer.appendChild(this.document.head, this.styleElement);
|
1592
|
-
let innerHTML = `
|
1593
|
-
@media screen and (max-width: ${this.breakpoint}) {
|
1594
|
-
.p-picklist[${this.id}] {
|
1595
|
-
flex-direction: column;
|
1596
|
-
}
|
1597
|
-
|
1598
|
-
.p-picklist[${this.id}] .p-picklist-controls {
|
1599
|
-
flex-direction: row;
|
1600
|
-
}
|
1601
|
-
}`;
|
1602
|
-
this.renderer.setProperty(this.styleElement, 'innerHTML', innerHTML);
|
1603
|
-
setAttribute(this.styleElement, 'nonce', this.config?.csp()?.nonce);
|
1604
|
-
}
|
1605
|
-
}
|
1606
|
-
}
|
1607
|
-
sourceMoveDisabled() {
|
1608
|
-
if (this.disabled || !this.selectedItemsSource.length) {
|
1609
|
-
return true;
|
1610
|
-
}
|
1611
|
-
}
|
1612
|
-
targetMoveDisabled() {
|
1613
|
-
if (this.disabled || !this.selectedItemsTarget.length) {
|
1614
|
-
return true;
|
1615
|
-
}
|
1616
|
-
}
|
1617
|
-
moveRightDisabled() {
|
1618
|
-
return this.disabled || isEmpty(this.selectedItemsSource);
|
1619
|
-
}
|
1620
|
-
moveLeftDisabled() {
|
1621
|
-
return this.disabled || isEmpty(this.selectedItemsTarget);
|
1622
|
-
}
|
1623
|
-
moveAllRightDisabled() {
|
1624
|
-
return this.disabled || isEmpty(this.source);
|
1625
|
-
}
|
1626
|
-
moveAllLeftDisabled() {
|
1627
|
-
return this.disabled || isEmpty(this.target);
|
1628
|
-
}
|
1629
|
-
destroyStyle() {
|
1630
|
-
if (this.styleElement) {
|
1631
|
-
this.renderer.removeChild(this.document.head, this.styleElement);
|
1632
|
-
this.styleElement = null;
|
1633
|
-
``;
|
1634
|
-
}
|
1635
|
-
}
|
1636
|
-
ngOnDestroy() {
|
1637
|
-
this.destroyStyle();
|
1638
|
-
this.destroyMedia();
|
1639
|
-
super.ngOnDestroy();
|
1640
|
-
}
|
1641
|
-
static ɵfac = /*@__PURE__*/ (() => { let ɵPickList_BaseFactory; return function PickList_Factory(__ngFactoryType__) { return (ɵPickList_BaseFactory || (ɵPickList_BaseFactory = i0.ɵɵgetInheritedFactory(PickList)))(__ngFactoryType__ || PickList); }; })();
|
1642
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PickList, selectors: [["p-pickList"], ["p-picklist"], ["p-pick-list"]], contentQueries: function PickList_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
1643
|
-
i0.ɵɵcontentQuery(dirIndex, _c0, 5);
|
1644
|
-
i0.ɵɵcontentQuery(dirIndex, _c1, 5);
|
1645
|
-
i0.ɵɵcontentQuery(dirIndex, _c2, 5);
|
1646
|
-
i0.ɵɵcontentQuery(dirIndex, _c3, 5);
|
1647
|
-
i0.ɵɵcontentQuery(dirIndex, _c4, 5);
|
1648
|
-
i0.ɵɵcontentQuery(dirIndex, _c5, 5);
|
1649
|
-
i0.ɵɵcontentQuery(dirIndex, _c6, 5);
|
1650
|
-
i0.ɵɵcontentQuery(dirIndex, _c7, 5);
|
1651
|
-
i0.ɵɵcontentQuery(dirIndex, _c8, 5);
|
1652
|
-
i0.ɵɵcontentQuery(dirIndex, _c9, 5);
|
1653
|
-
i0.ɵɵcontentQuery(dirIndex, _c10, 5);
|
1654
|
-
i0.ɵɵcontentQuery(dirIndex, _c11, 5);
|
1655
|
-
i0.ɵɵcontentQuery(dirIndex, _c12, 5);
|
1656
|
-
i0.ɵɵcontentQuery(dirIndex, _c13, 5);
|
1657
|
-
i0.ɵɵcontentQuery(dirIndex, _c14, 5);
|
1658
|
-
i0.ɵɵcontentQuery(dirIndex, _c15, 5);
|
1659
|
-
i0.ɵɵcontentQuery(dirIndex, _c16, 5);
|
1660
|
-
i0.ɵɵcontentQuery(dirIndex, _c17, 5);
|
1661
|
-
i0.ɵɵcontentQuery(dirIndex, _c18, 5);
|
1662
|
-
} if (rf & 2) {
|
1663
|
-
let _t;
|
1664
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);
|
1665
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceHeaderTemplate = _t.first);
|
1666
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetHeaderTemplate = _t.first);
|
1667
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceFilterTemplate = _t.first);
|
1668
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetFilterTemplate = _t.first);
|
1669
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyMessageSourceTemplate = _t.first);
|
1670
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyFilterMessageSourceTemplate = _t.first);
|
1671
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyMessageTargetTemplate = _t.first);
|
1672
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyFilterMessageTargetTemplate = _t.first);
|
1673
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveUpIconTemplate = _t.first);
|
1674
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveTopIconTemplate = _t.first);
|
1675
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveDownIconTemplate = _t.first);
|
1676
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveBottomIconTemplate = _t.first);
|
1677
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveToTargetIconTemplate = _t.first);
|
1678
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveAllToTargetIconTemplate = _t.first);
|
1679
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveToSourceIconTemplate = _t.first);
|
1680
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveAllToSourceIconTemplate = _t.first);
|
1681
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetFilterIconTemplate = _t.first);
|
1682
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceFilterIconTemplate = _t.first);
|
1683
|
-
} }, viewQuery: function PickList_Query(rf, ctx) { if (rf & 1) {
|
1684
|
-
i0.ɵɵviewQuery(_c19, 5);
|
1685
|
-
i0.ɵɵviewQuery(_c20, 5);
|
1686
|
-
i0.ɵɵviewQuery(_c3, 5);
|
1687
|
-
i0.ɵɵviewQuery(_c4, 5);
|
1688
|
-
} if (rf & 2) {
|
1689
|
-
let _t;
|
1690
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listViewSourceChild = _t.first);
|
1691
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listViewTargetChild = _t.first);
|
1692
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceFilterViewChild = _t.first);
|
1693
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetFilterViewChild = _t.first);
|
1694
|
-
} }, inputs: { source: "source", target: "target", sourceHeader: "sourceHeader", tabindex: [2, "tabindex", "tabindex", numberAttribute], rightButtonAriaLabel: "rightButtonAriaLabel", leftButtonAriaLabel: "leftButtonAriaLabel", allRightButtonAriaLabel: "allRightButtonAriaLabel", allLeftButtonAriaLabel: "allLeftButtonAriaLabel", upButtonAriaLabel: "upButtonAriaLabel", downButtonAriaLabel: "downButtonAriaLabel", topButtonAriaLabel: "topButtonAriaLabel", bottomButtonAriaLabel: "bottomButtonAriaLabel", targetHeader: "targetHeader", responsive: [2, "responsive", "responsive", booleanAttribute], filterBy: "filterBy", filterLocale: "filterLocale", trackBy: "trackBy", sourceTrackBy: "sourceTrackBy", targetTrackBy: "targetTrackBy", showSourceFilter: [2, "showSourceFilter", "showSourceFilter", booleanAttribute], showTargetFilter: [2, "showTargetFilter", "showTargetFilter", booleanAttribute], metaKeySelection: [2, "metaKeySelection", "metaKeySelection", booleanAttribute], dragdrop: [2, "dragdrop", "dragdrop", booleanAttribute], style: "style", styleClass: "styleClass", sourceStyle: "sourceStyle", targetStyle: "targetStyle", showSourceControls: [2, "showSourceControls", "showSourceControls", booleanAttribute], showTargetControls: [2, "showTargetControls", "showTargetControls", booleanAttribute], sourceFilterPlaceholder: "sourceFilterPlaceholder", targetFilterPlaceholder: "targetFilterPlaceholder", disabled: [2, "disabled", "disabled", booleanAttribute], ariaSourceFilterLabel: "ariaSourceFilterLabel", ariaTargetFilterLabel: "ariaTargetFilterLabel", filterMatchMode: "filterMatchMode", stripedRows: [2, "stripedRows", "stripedRows", booleanAttribute], keepSelection: [2, "keepSelection", "keepSelection", booleanAttribute], scrollHeight: "scrollHeight", autoOptionFocus: [2, "autoOptionFocus", "autoOptionFocus", booleanAttribute], buttonProps: "buttonProps", moveUpButtonProps: "moveUpButtonProps", moveTopButtonProps: "moveTopButtonProps", moveDownButtonProps: "moveDownButtonProps", moveBottomButtonProps: "moveBottomButtonProps", moveToTargetProps: "moveToTargetProps", moveAllToTargetProps: "moveAllToTargetProps", moveToSourceProps: "moveToSourceProps", moveAllToSourceProps: "moveAllToSourceProps", breakpoint: "breakpoint" }, outputs: { onMoveToSource: "onMoveToSource", onMoveAllToSource: "onMoveAllToSource", onMoveAllToTarget: "onMoveAllToTarget", onMoveToTarget: "onMoveToTarget", onSourceReorder: "onSourceReorder", onTargetReorder: "onTargetReorder", onSourceSelect: "onSourceSelect", onTargetSelect: "onTargetSelect", onSourceFilter: "onSourceFilter", onTargetFilter: "onTargetFilter", onFocus: "onFocus", onBlur: "onBlur" }, standalone: true, features: [i0.ɵɵProvidersFeature([PickListStyle]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 28, vars: 87, consts: [["sourcelist", ""], ["targetlist", ""], ["header", ""], ["item", ""], ["cdkDropListGroup", "", 3, "ngStyle", "ngClass"], ["class", "p-picklist-controls p-picklist-source-controls", 4, "ngIf"], [1, "p-picklist-list-container", "p-picklist-source-list-container"], ["optionLabel", "name", 3, "ngModelChange", "onFocus", "onBlur", "keydown", "onDblClick", "multiple", "options", "ngModel", "id", "ngStyle", "striped", "tabindex", "disabled", "metaKeySelection", "scrollHeight", "autoOptionFocus", "filter", "filterBy", "filterLocale", "filterPlaceHolder"], [4, "ngIf"], ["class", "p-picklist-title", 4, "ngIf"], [1, "p-picklist-controls", "p-picklist-transfer-controls"], ["type", "button", "pButton", "", "pRipple", "", "severity", "secondary", 1, "p-button-icon-only", 3, "click", "disabled", "buttonProps"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "p-picklist-list-container", "p-picklist-target-list-container"], ["class", "p-picklist-controls p-picklist-target-controls", 4, "ngIf"], [1, "p-picklist-controls", "p-picklist-source-controls"], [4, "ngTemplateOutlet"], [1, "p-picklist-title"], [1, "p-picklist-controls", "p-picklist-target-controls"]], template: function PickList_Template(rf, ctx) { if (rf & 1) {
|
1695
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
1696
|
-
i0.ɵɵelementStart(0, "div", 4);
|
1697
|
-
i0.ɵɵtemplate(1, PickList_div_1_Template, 13, 26, "div", 5);
|
1698
|
-
i0.ɵɵelementStart(2, "div", 6)(3, "p-listbox", 7, 0);
|
1699
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PickList_Template_p_listbox_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.selectedItemsSource, $event) || (ctx.selectedItemsSource = $event); return i0.ɵɵresetView($event); });
|
1700
|
-
i0.ɵɵlistener("onFocus", function PickList_Template_p_listbox_onFocus_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListFocus($event, ctx.SOURCE_LIST)); })("onBlur", function PickList_Template_p_listbox_onBlur_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListBlur($event, ctx.SOURCE_LIST)); })("keydown", function PickList_Template_p_listbox_keydown_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemKeyDown($event, ctx.selectedItemsSource, ctx.onSourceSelect, ctx.SOURCE_LIST)); })("onDblClick", function PickList_Template_p_listbox_onDblClick_3_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSourceItemDblClick()); });
|
1701
|
-
i0.ɵɵtemplate(5, PickList_ng_container_5_Template, 3, 0, "ng-container", 8)(6, PickList_div_6_Template, 2, 1, "div", 9)(7, PickList_ng_container_7_Template, 3, 0, "ng-container", 8);
|
1702
|
-
i0.ɵɵelementEnd()();
|
1703
|
-
i0.ɵɵelementStart(8, "div", 10)(9, "button", 11);
|
1704
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveRight()); });
|
1705
|
-
i0.ɵɵtemplate(10, PickList_ng_container_10_Template, 3, 2, "ng-container", 8)(11, PickList_11_Template, 1, 0, null, 12);
|
1706
|
-
i0.ɵɵelementEnd();
|
1707
|
-
i0.ɵɵelementStart(12, "button", 11);
|
1708
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveAllRight()); });
|
1709
|
-
i0.ɵɵtemplate(13, PickList_ng_container_13_Template, 3, 2, "ng-container", 8)(14, PickList_14_Template, 1, 0, null, 12);
|
1710
|
-
i0.ɵɵelementEnd();
|
1711
|
-
i0.ɵɵelementStart(15, "button", 11);
|
1712
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveLeft()); });
|
1713
|
-
i0.ɵɵtemplate(16, PickList_ng_container_16_Template, 3, 2, "ng-container", 8)(17, PickList_17_Template, 1, 0, null, 12);
|
1714
|
-
i0.ɵɵelementEnd();
|
1715
|
-
i0.ɵɵelementStart(18, "button", 11);
|
1716
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveAllLeft()); });
|
1717
|
-
i0.ɵɵtemplate(19, PickList_ng_container_19_Template, 3, 2, "ng-container", 8)(20, PickList_20_Template, 1, 0, null, 12);
|
1718
|
-
i0.ɵɵelementEnd()();
|
1719
|
-
i0.ɵɵelementStart(21, "div", 13)(22, "p-listbox", 7, 1);
|
1720
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PickList_Template_p_listbox_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.selectedItemsTarget, $event) || (ctx.selectedItemsTarget = $event); return i0.ɵɵresetView($event); });
|
1721
|
-
i0.ɵɵlistener("onFocus", function PickList_Template_p_listbox_onFocus_22_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListFocus($event, ctx.TARGET_LIST)); })("onBlur", function PickList_Template_p_listbox_onBlur_22_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListBlur($event, ctx.TARGET_LIST)); })("keydown", function PickList_Template_p_listbox_keydown_22_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemKeyDown($event, ctx.selectedItemsTarget, ctx.onTargetSelect, ctx.TARGET_LIST)); })("onDblClick", function PickList_Template_p_listbox_onDblClick_22_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTargetItemDblClick()); });
|
1722
|
-
i0.ɵɵtemplate(24, PickList_ng_container_24_Template, 3, 0, "ng-container", 8)(25, PickList_div_25_Template, 2, 1, "div", 9)(26, PickList_ng_container_26_Template, 3, 0, "ng-container", 8);
|
1723
|
-
i0.ɵɵelementEnd()();
|
1724
|
-
i0.ɵɵtemplate(27, PickList_div_27_Template, 13, 26, "div", 14);
|
1725
|
-
i0.ɵɵelementEnd();
|
1726
|
-
} if (rf & 2) {
|
1727
|
-
i0.ɵɵclassMap(ctx.styleClass);
|
1728
|
-
i0.ɵɵproperty("ngStyle", ctx.style)("ngClass", i0.ɵɵpureFunction0(78, _c21));
|
1729
|
-
i0.ɵɵattribute("data-pc-name", "picklist")("data-pc-section", "root");
|
1730
|
-
i0.ɵɵadvance();
|
1731
|
-
i0.ɵɵproperty("ngIf", ctx.showSourceControls);
|
1732
|
-
i0.ɵɵadvance();
|
1733
|
-
i0.ɵɵattribute("data-pc-section", "sourceWrapper")("data-pc-group-section", "listWrapper");
|
1734
|
-
i0.ɵɵadvance();
|
1735
|
-
i0.ɵɵproperty("multiple", true)("options", ctx.source);
|
1736
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx.selectedItemsSource);
|
1737
|
-
i0.ɵɵproperty("id", ctx.idSource + "_list")("ngStyle", ctx.sourceStyle)("striped", ctx.stripedRows)("tabindex", ctx.tabindex)("disabled", ctx.disabled)("metaKeySelection", ctx.metaKeySelection)("scrollHeight", ctx.scrollHeight)("autoOptionFocus", ctx.autoOptionFocus)("filter", ctx.filterBy)("filterBy", ctx.filterBy)("filterLocale", ctx.filterLocale)("filterPlaceHolder", ctx.sourceFilterPlaceholder);
|
1738
|
-
i0.ɵɵadvance(2);
|
1739
|
-
i0.ɵɵproperty("ngIf", ctx.sourceHeaderTemplate);
|
1740
|
-
i0.ɵɵadvance();
|
1741
|
-
i0.ɵɵproperty("ngIf", !ctx.sourceHeaderTemplate);
|
1742
|
-
i0.ɵɵadvance();
|
1743
|
-
i0.ɵɵproperty("ngIf", ctx.itemTemplate);
|
1744
|
-
i0.ɵɵadvance();
|
1745
|
-
i0.ɵɵattribute("data-pc-section", "buttons")("data-pc-group-section", "controls");
|
1746
|
-
i0.ɵɵadvance();
|
1747
|
-
i0.ɵɵproperty("disabled", ctx.moveRightDisabled())("buttonProps", ctx.getButtonProps("movetotarget"));
|
1748
|
-
i0.ɵɵattribute("aria-label", ctx.moveToTargetAriaLabel)("data-pc-section", "moveToTargetButton");
|
1749
|
-
i0.ɵɵadvance();
|
1750
|
-
i0.ɵɵproperty("ngIf", !ctx.moveToTargetIconTemplate);
|
1751
|
-
i0.ɵɵadvance();
|
1752
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveToTargetIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(79, _c22, ctx.viewChanged));
|
1753
|
-
i0.ɵɵadvance();
|
1754
|
-
i0.ɵɵproperty("disabled", ctx.moveAllRightDisabled())("buttonProps", ctx.getButtonProps("movealltotarget"));
|
1755
|
-
i0.ɵɵattribute("aria-label", ctx.moveAllToTargetAriaLabel)("data-pc-section", "moveAllToTargetButton");
|
1756
|
-
i0.ɵɵadvance();
|
1757
|
-
i0.ɵɵproperty("ngIf", !ctx.moveAllToTargetIconTemplate);
|
1758
|
-
i0.ɵɵadvance();
|
1759
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveAllToTargetIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(81, _c22, ctx.viewChanged));
|
1760
|
-
i0.ɵɵadvance();
|
1761
|
-
i0.ɵɵproperty("disabled", ctx.moveLeftDisabled())("buttonProps", ctx.getButtonProps("movetosource"));
|
1762
|
-
i0.ɵɵattribute("aria-label", ctx.moveToSourceAriaLabel)("data-pc-section", "moveToSourceButton");
|
1763
|
-
i0.ɵɵadvance();
|
1764
|
-
i0.ɵɵproperty("ngIf", !ctx.moveToSourceIconTemplate);
|
1765
|
-
i0.ɵɵadvance();
|
1766
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveToSourceIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(83, _c22, ctx.viewChanged));
|
1767
|
-
i0.ɵɵadvance();
|
1768
|
-
i0.ɵɵproperty("disabled", ctx.moveAllLeftDisabled())("buttonProps", ctx.getButtonProps("movealltosource"));
|
1769
|
-
i0.ɵɵattribute("aria-label", ctx.moveAllToSourceAriaLabel)("data-pc-section", "moveAllToSourceButton");
|
1770
|
-
i0.ɵɵadvance();
|
1771
|
-
i0.ɵɵproperty("ngIf", !ctx.moveAllToSourceIconTemplate);
|
1772
|
-
i0.ɵɵadvance();
|
1773
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveAllToSourceIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(85, _c22, ctx.viewChanged));
|
1774
|
-
i0.ɵɵadvance();
|
1775
|
-
i0.ɵɵattribute("data-pc-section", "targetWrapper")("data-pc-group-section", "listwrapper");
|
1776
|
-
i0.ɵɵadvance();
|
1777
|
-
i0.ɵɵproperty("multiple", true)("options", ctx.target);
|
1778
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx.selectedItemsTarget);
|
1779
|
-
i0.ɵɵproperty("id", ctx.idTarget + "_list")("ngStyle", ctx.targetStyle)("striped", ctx.stripedRows)("tabindex", ctx.tabindex)("disabled", ctx.disabled)("metaKeySelection", ctx.metaKeySelection)("scrollHeight", ctx.scrollHeight)("autoOptionFocus", ctx.autoOptionFocus)("filter", ctx.filterBy)("filterBy", ctx.filterBy)("filterLocale", ctx.filterLocale)("filterPlaceHolder", ctx.targetFilterPlaceholder);
|
1780
|
-
i0.ɵɵadvance(2);
|
1781
|
-
i0.ɵɵproperty("ngIf", ctx.targetHeaderTemplate);
|
1782
|
-
i0.ɵɵadvance();
|
1783
|
-
i0.ɵɵproperty("ngIf", !ctx.targetHeaderTemplate);
|
1784
|
-
i0.ɵɵadvance();
|
1785
|
-
i0.ɵɵproperty("ngIf", ctx.itemTemplate);
|
1786
|
-
i0.ɵɵadvance();
|
1787
|
-
i0.ɵɵproperty("ngIf", ctx.showTargetControls);
|
1788
|
-
} }, dependencies: [CommonModule, i1.NgClass, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, ButtonDirective,
|
1789
|
-
Ripple,
|
1790
|
-
DragDropModule, i2.CdkDropListGroup, AngleDoubleDownIcon,
|
1791
|
-
AngleDoubleLeftIcon,
|
1792
|
-
AngleDoubleRightIcon,
|
1793
|
-
AngleDoubleUpIcon,
|
1794
|
-
AngleDownIcon,
|
1795
|
-
AngleLeftIcon,
|
1796
|
-
AngleRightIcon,
|
1797
|
-
AngleUpIcon,
|
1798
|
-
Listbox,
|
1799
|
-
FormsModule, i3.NgControlStatus, i3.NgModel, SharedModule], encapsulation: 2, changeDetection: 0 });
|
1800
|
-
}
|
1801
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PickList, [{
|
1802
|
-
type: Component,
|
1803
|
-
args: [{
|
1804
|
-
selector: 'p-pickList, p-picklist, p-pick-list',
|
1805
|
-
standalone: true,
|
1806
|
-
imports: [
|
1807
|
-
CommonModule,
|
1808
|
-
ButtonDirective,
|
1809
|
-
Ripple,
|
1810
|
-
DragDropModule,
|
1811
|
-
AngleDoubleDownIcon,
|
1812
|
-
AngleDoubleLeftIcon,
|
1813
|
-
AngleDoubleRightIcon,
|
1814
|
-
AngleDoubleUpIcon,
|
1815
|
-
AngleDownIcon,
|
1816
|
-
AngleLeftIcon,
|
1817
|
-
AngleRightIcon,
|
1818
|
-
AngleUpIcon,
|
1819
|
-
SearchIcon,
|
1820
|
-
Listbox,
|
1821
|
-
FormsModule,
|
1822
|
-
SharedModule
|
1823
|
-
],
|
1824
|
-
template: `
|
1825
|
-
<div [class]="styleClass" [ngStyle]="style" [ngClass]="{ 'p-picklist p-component': true }" cdkDropListGroup [attr.data-pc-name]="'picklist'" [attr.data-pc-section]="'root'">
|
1826
|
-
<div class="p-picklist-controls p-picklist-source-controls" *ngIf="showSourceControls" [attr.data-pc-section]="'sourceControls'" [attr.data-pc-group-section]="'controls'">
|
1827
|
-
<button
|
1828
|
-
type="button"
|
1829
|
-
[attr.aria-label]="moveUpAriaLabel"
|
1830
|
-
pButton
|
1831
|
-
pRipple
|
1832
|
-
severity="secondary"
|
1833
|
-
class="p-button-icon-only"
|
1834
|
-
[disabled]="sourceMoveDisabled()"
|
1835
|
-
(click)="moveUp(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1836
|
-
[attr.data-pc-section]="'sourceMoveUpButton'"
|
1837
|
-
[buttonProps]="getButtonProps('moveup')"
|
1838
|
-
>
|
1839
|
-
<AngleUpIcon *ngIf="!moveUpIconTemplate" [attr.data-pc-section]="'moveupicon'" />
|
1840
|
-
<ng-template *ngTemplateOutlet="moveUpIconTemplate"></ng-template>
|
1841
|
-
</button>
|
1842
|
-
<button
|
1843
|
-
type="button"
|
1844
|
-
[attr.aria-label]="moveTopAriaLabel"
|
1845
|
-
pButton
|
1846
|
-
pRipple
|
1847
|
-
severity="secondary"
|
1848
|
-
class="p-button-icon-only"
|
1849
|
-
[disabled]="sourceMoveDisabled()"
|
1850
|
-
(click)="moveTop(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1851
|
-
[attr.data-pc-section]="'sourceMoveTopButton'"
|
1852
|
-
[buttonProps]="getButtonProps('movetop')"
|
1853
|
-
>
|
1854
|
-
<AngleDoubleUpIcon *ngIf="!moveTopIconTemplate" [attr.data-pc-section]="'movetopicon'" />
|
1855
|
-
<ng-template *ngTemplateOutlet="moveTopIconTemplate"></ng-template>
|
1856
|
-
</button>
|
1857
|
-
<button
|
1858
|
-
type="button"
|
1859
|
-
[attr.aria-label]="moveDownAriaLabel"
|
1860
|
-
pButton
|
1861
|
-
pRipple
|
1862
|
-
severity="secondary"
|
1863
|
-
class="p-button-icon-only"
|
1864
|
-
[disabled]="sourceMoveDisabled()"
|
1865
|
-
(click)="moveDown(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1866
|
-
[attr.data-pc-section]="'sourceMoveDownButton'"
|
1867
|
-
[buttonProps]="getButtonProps('movedown')"
|
1868
|
-
>
|
1869
|
-
<AngleDownIcon *ngIf="!moveDownIconTemplate" [attr.data-pc-section]="'movedownicon'" />
|
1870
|
-
<ng-template *ngTemplateOutlet="moveDownIconTemplate"></ng-template>
|
1871
|
-
</button>
|
1872
|
-
<button
|
1873
|
-
type="button"
|
1874
|
-
[attr.aria-label]="moveBottomAriaLabel"
|
1875
|
-
pButton
|
1876
|
-
pRipple
|
1877
|
-
severity="secondary"
|
1878
|
-
class="p-button-icon-only"
|
1879
|
-
[disabled]="sourceMoveDisabled()"
|
1880
|
-
(click)="moveBottom(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1881
|
-
[attr.data-pc-section]="'sourceMoveBottomButton'"
|
1882
|
-
[buttonProps]="getButtonProps('movebottom')"
|
1883
|
-
>
|
1884
|
-
<AngleDoubleDownIcon *ngIf="!moveBottomIconTemplate" [attr.data-pc-section]="'movebottomicon'" />
|
1885
|
-
<ng-template *ngTemplateOutlet="moveBottomIconTemplate"></ng-template>
|
1886
|
-
</button>
|
1887
|
-
</div>
|
1888
|
-
<div class="p-picklist-list-container p-picklist-source-list-container" [attr.data-pc-section]="'sourceWrapper'" [attr.data-pc-group-section]="'listWrapper'">
|
1889
|
-
<p-listbox
|
1890
|
-
#sourcelist
|
1891
|
-
[multiple]="true"
|
1892
|
-
[options]="source"
|
1893
|
-
[(ngModel)]="selectedItemsSource"
|
1894
|
-
optionLabel="name"
|
1895
|
-
[id]="idSource + '_list'"
|
1896
|
-
[ngStyle]="sourceStyle"
|
1897
|
-
[striped]="stripedRows"
|
1898
|
-
[tabindex]="tabindex"
|
1899
|
-
(onFocus)="onListFocus($event, SOURCE_LIST)"
|
1900
|
-
(onBlur)="onListBlur($event, SOURCE_LIST)"
|
1901
|
-
(keydown)="onItemKeyDown($event, selectedItemsSource, onSourceSelect, SOURCE_LIST)"
|
1902
|
-
(onDblClick)="onSourceItemDblClick()"
|
1903
|
-
[disabled]="disabled"
|
1904
|
-
[metaKeySelection]="metaKeySelection"
|
1905
|
-
[scrollHeight]="scrollHeight"
|
1906
|
-
[autoOptionFocus]="autoOptionFocus"
|
1907
|
-
[filter]="filterBy"
|
1908
|
-
[filterBy]="filterBy"
|
1909
|
-
[filterLocale]="filterLocale"
|
1910
|
-
[filterPlaceHolder]="sourceFilterPlaceholder"
|
1911
|
-
>
|
1912
|
-
<ng-container *ngIf="sourceHeaderTemplate">
|
1913
|
-
<ng-template #header>
|
1914
|
-
<ng-template *ngTemplateOutlet="sourceHeaderTemplate"></ng-template>
|
1915
|
-
</ng-template>
|
1916
|
-
</ng-container>
|
1917
|
-
<div class="p-picklist-title" *ngIf="!sourceHeaderTemplate">{{ sourceHeader }}</div>
|
1918
|
-
<ng-container *ngIf="itemTemplate">
|
1919
|
-
<ng-template #item let-item let-index="index" let-selected="selected">
|
1920
|
-
<ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: index, selected: selected }"></ng-container>
|
1921
|
-
</ng-template>
|
1922
|
-
</ng-container>
|
1923
|
-
</p-listbox>
|
1924
|
-
</div>
|
1925
|
-
<div class="p-picklist-controls p-picklist-transfer-controls" [attr.data-pc-section]="'buttons'" [attr.data-pc-group-section]="'controls'">
|
1926
|
-
<button
|
1927
|
-
type="button"
|
1928
|
-
[attr.aria-label]="moveToTargetAriaLabel"
|
1929
|
-
pButton
|
1930
|
-
pRipple
|
1931
|
-
severity="secondary"
|
1932
|
-
class="p-button-icon-only"
|
1933
|
-
[disabled]="moveRightDisabled()"
|
1934
|
-
(click)="moveRight()"
|
1935
|
-
[attr.data-pc-section]="'moveToTargetButton'"
|
1936
|
-
[buttonProps]="getButtonProps('movetotarget')"
|
1937
|
-
>
|
1938
|
-
<ng-container *ngIf="!moveToTargetIconTemplate">
|
1939
|
-
<AngleRightIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movetotargeticon'" />
|
1940
|
-
<AngleDownIcon *ngIf="viewChanged" [attr.data-pc-section]="'movetotargeticon'" />
|
1941
|
-
</ng-container>
|
1942
|
-
<ng-template *ngTemplateOutlet="moveToTargetIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
1943
|
-
</button>
|
1944
|
-
<button
|
1945
|
-
type="button"
|
1946
|
-
[attr.aria-label]="moveAllToTargetAriaLabel"
|
1947
|
-
pButton
|
1948
|
-
pRipple
|
1949
|
-
severity="secondary"
|
1950
|
-
class="p-button-icon-only"
|
1951
|
-
[disabled]="moveAllRightDisabled()"
|
1952
|
-
(click)="moveAllRight()"
|
1953
|
-
[attr.data-pc-section]="'moveAllToTargetButton'"
|
1954
|
-
[buttonProps]="getButtonProps('movealltotarget')"
|
1955
|
-
>
|
1956
|
-
<ng-container *ngIf="!moveAllToTargetIconTemplate">
|
1957
|
-
<AngleDoubleRightIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movealltotargeticon'" />
|
1958
|
-
<AngleDoubleDownIcon *ngIf="viewChanged" [attr.data-pc-section]="'movealltotargeticon'" />
|
1959
|
-
</ng-container>
|
1960
|
-
<ng-template *ngTemplateOutlet="moveAllToTargetIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
1961
|
-
</button>
|
1962
|
-
<button
|
1963
|
-
type="button"
|
1964
|
-
[attr.aria-label]="moveToSourceAriaLabel"
|
1965
|
-
pButton
|
1966
|
-
pRipple
|
1967
|
-
severity="secondary"
|
1968
|
-
class="p-button-icon-only"
|
1969
|
-
[disabled]="moveLeftDisabled()"
|
1970
|
-
(click)="moveLeft()"
|
1971
|
-
[attr.data-pc-section]="'moveToSourceButton'"
|
1972
|
-
[buttonProps]="getButtonProps('movetosource')"
|
1973
|
-
>
|
1974
|
-
<ng-container *ngIf="!moveToSourceIconTemplate">
|
1975
|
-
<AngleLeftIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movedownsourceticon'" />
|
1976
|
-
<AngleUpIcon *ngIf="viewChanged" [attr.data-pc-section]="'movedownsourceticon'" />
|
1977
|
-
</ng-container>
|
1978
|
-
<ng-template *ngTemplateOutlet="moveToSourceIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
1979
|
-
</button>
|
1980
|
-
<button
|
1981
|
-
type="button"
|
1982
|
-
[attr.aria-label]="moveAllToSourceAriaLabel"
|
1983
|
-
pButton
|
1984
|
-
pRipple
|
1985
|
-
severity="secondary"
|
1986
|
-
class="p-button-icon-only"
|
1987
|
-
[disabled]="moveAllLeftDisabled()"
|
1988
|
-
(click)="moveAllLeft()"
|
1989
|
-
[attr.data-pc-section]="'moveAllToSourceButton'"
|
1990
|
-
[buttonProps]="getButtonProps('movealltosource')"
|
1991
|
-
>
|
1992
|
-
<ng-container *ngIf="!moveAllToSourceIconTemplate">
|
1993
|
-
<AngleDoubleLeftIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movealltosourceticon'" />
|
1994
|
-
<AngleDoubleUpIcon *ngIf="viewChanged" [attr.data-pc-section]="'movealltosourceticon'" />
|
1995
|
-
</ng-container>
|
1996
|
-
<ng-template *ngTemplateOutlet="moveAllToSourceIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
1997
|
-
</button>
|
1998
|
-
</div>
|
1999
|
-
<div class="p-picklist-list-container p-picklist-target-list-container" [attr.data-pc-section]="'targetWrapper'" [attr.data-pc-group-section]="'listwrapper'">
|
2000
|
-
<p-listbox
|
2001
|
-
#targetlist
|
2002
|
-
[multiple]="true"
|
2003
|
-
[options]="target"
|
2004
|
-
[(ngModel)]="selectedItemsTarget"
|
2005
|
-
optionLabel="name"
|
2006
|
-
[id]="idTarget + '_list'"
|
2007
|
-
[ngStyle]="targetStyle"
|
2008
|
-
[striped]="stripedRows"
|
2009
|
-
[tabindex]="tabindex"
|
2010
|
-
(onFocus)="onListFocus($event, TARGET_LIST)"
|
2011
|
-
(onBlur)="onListBlur($event, TARGET_LIST)"
|
2012
|
-
(keydown)="onItemKeyDown($event, selectedItemsTarget, onTargetSelect, TARGET_LIST)"
|
2013
|
-
(onDblClick)="onTargetItemDblClick()"
|
2014
|
-
[disabled]="disabled"
|
2015
|
-
[metaKeySelection]="metaKeySelection"
|
2016
|
-
[scrollHeight]="scrollHeight"
|
2017
|
-
[autoOptionFocus]="autoOptionFocus"
|
2018
|
-
[filter]="filterBy"
|
2019
|
-
[filterBy]="filterBy"
|
2020
|
-
[filterLocale]="filterLocale"
|
2021
|
-
[filterPlaceHolder]="targetFilterPlaceholder"
|
2022
|
-
>
|
2023
|
-
<ng-container *ngIf="targetHeaderTemplate">
|
2024
|
-
<ng-template #header>
|
2025
|
-
<ng-template *ngTemplateOutlet="targetHeaderTemplate"></ng-template>
|
2026
|
-
</ng-template>
|
2027
|
-
</ng-container>
|
2028
|
-
<div class="p-picklist-title" *ngIf="!targetHeaderTemplate">{{ sourceHeader }}</div>
|
2029
|
-
<ng-container *ngIf="itemTemplate">
|
2030
|
-
<ng-template #item let-item let-index="index" let-selected="selected">
|
2031
|
-
<ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: index, selected: selected }"></ng-container>
|
2032
|
-
</ng-template>
|
2033
|
-
</ng-container>
|
2034
|
-
</p-listbox>
|
2035
|
-
</div>
|
2036
|
-
<div class="p-picklist-controls p-picklist-target-controls" *ngIf="showTargetControls" [attr.data-pc-section]="'targetControls'" [attr.data-pc-group-section]="'controls'">
|
2037
|
-
<button
|
2038
|
-
type="button"
|
2039
|
-
[attr.aria-label]="moveUpAriaLabel"
|
2040
|
-
pButton
|
2041
|
-
pRipple
|
2042
|
-
severity="secondary"
|
2043
|
-
class="p-button-icon-only"
|
2044
|
-
[disabled]="targetMoveDisabled()"
|
2045
|
-
(click)="moveUp(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2046
|
-
[attr.data-pc-section]="'targetMoveUpButton'"
|
2047
|
-
[buttonProps]="getButtonProps('moveup')"
|
2048
|
-
>
|
2049
|
-
<AngleUpIcon *ngIf="!moveUpIconTemplate" [attr.data-pc-section]="'moveupicon'" />
|
2050
|
-
<ng-template *ngTemplateOutlet="moveUpIconTemplate"></ng-template>
|
2051
|
-
</button>
|
2052
|
-
<button
|
2053
|
-
type="button"
|
2054
|
-
[attr.aria-label]="moveTopAriaLabel"
|
2055
|
-
pButton
|
2056
|
-
pRipple
|
2057
|
-
severity="secondary"
|
2058
|
-
class="p-button-icon-only"
|
2059
|
-
[disabled]="targetMoveDisabled()"
|
2060
|
-
(click)="moveTop(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2061
|
-
[attr.data-pc-section]="'targetMoveTopButton'"
|
2062
|
-
[buttonProps]="getButtonProps('movetop')"
|
2063
|
-
>
|
2064
|
-
<AngleDoubleUpIcon *ngIf="!moveTopIconTemplate" [attr.data-pc-section]="'movetopicon'" />
|
2065
|
-
<ng-template *ngTemplateOutlet="moveTopIconTemplate"></ng-template>
|
2066
|
-
</button>
|
2067
|
-
<button
|
2068
|
-
type="button"
|
2069
|
-
[attr.aria-label]="moveDownAriaLabel"
|
2070
|
-
pButton
|
2071
|
-
pRipple
|
2072
|
-
severity="secondary"
|
2073
|
-
class="p-button-icon-only"
|
2074
|
-
[disabled]="targetMoveDisabled()"
|
2075
|
-
(click)="moveDown(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2076
|
-
[attr.data-pc-section]="'targetMoveDownButton'"
|
2077
|
-
[buttonProps]="getButtonProps('movedown')"
|
2078
|
-
>
|
2079
|
-
<AngleDownIcon *ngIf="!moveDownIconTemplate" [attr.data-pc-section]="'movedownicon'" />
|
2080
|
-
<ng-template *ngTemplateOutlet="moveDownIconTemplate"></ng-template>
|
2081
|
-
</button>
|
2082
|
-
<button
|
2083
|
-
type="button"
|
2084
|
-
[attr.aria-label]="moveBottomAriaLabel"
|
2085
|
-
pButton
|
2086
|
-
pRipple
|
2087
|
-
severity="secondary"
|
2088
|
-
class="p-button-icon-only"
|
2089
|
-
[disabled]="targetMoveDisabled()"
|
2090
|
-
(click)="moveBottom(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2091
|
-
[attr.data-pc-section]="'targetMoveBottomButton'"
|
2092
|
-
[buttonProps]="getButtonProps('movebottom')"
|
2093
|
-
>
|
2094
|
-
<AngleDoubleDownIcon *ngIf="!moveBottomIconTemplate" [attr.data-pc-section]="'movebottomicon'" />
|
2095
|
-
<ng-template *ngTemplateOutlet="moveBottomIconTemplate"></ng-template>
|
2096
|
-
</button>
|
2097
|
-
</div>
|
2098
|
-
</div>
|
2099
|
-
`,
|
2100
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
2101
|
-
encapsulation: ViewEncapsulation.None,
|
2102
|
-
providers: [PickListStyle]
|
2103
|
-
}]
|
2104
|
-
}], null, { source: [{
|
2105
|
-
type: Input
|
2106
|
-
}], target: [{
|
2107
|
-
type: Input
|
2108
|
-
}], sourceHeader: [{
|
2109
|
-
type: Input
|
2110
|
-
}], tabindex: [{
|
2111
|
-
type: Input,
|
2112
|
-
args: [{ transform: numberAttribute }]
|
2113
|
-
}], rightButtonAriaLabel: [{
|
2114
|
-
type: Input
|
2115
|
-
}], leftButtonAriaLabel: [{
|
2116
|
-
type: Input
|
2117
|
-
}], allRightButtonAriaLabel: [{
|
2118
|
-
type: Input
|
2119
|
-
}], allLeftButtonAriaLabel: [{
|
2120
|
-
type: Input
|
2121
|
-
}], upButtonAriaLabel: [{
|
2122
|
-
type: Input
|
2123
|
-
}], downButtonAriaLabel: [{
|
2124
|
-
type: Input
|
2125
|
-
}], topButtonAriaLabel: [{
|
2126
|
-
type: Input
|
2127
|
-
}], bottomButtonAriaLabel: [{
|
2128
|
-
type: Input
|
2129
|
-
}], targetHeader: [{
|
2130
|
-
type: Input
|
2131
|
-
}], responsive: [{
|
2132
|
-
type: Input,
|
2133
|
-
args: [{ transform: booleanAttribute }]
|
2134
|
-
}], filterBy: [{
|
2135
|
-
type: Input
|
2136
|
-
}], filterLocale: [{
|
2137
|
-
type: Input
|
2138
|
-
}], trackBy: [{
|
2139
|
-
type: Input
|
2140
|
-
}], sourceTrackBy: [{
|
2141
|
-
type: Input
|
2142
|
-
}], targetTrackBy: [{
|
2143
|
-
type: Input
|
2144
|
-
}], showSourceFilter: [{
|
2145
|
-
type: Input,
|
2146
|
-
args: [{ transform: booleanAttribute }]
|
2147
|
-
}], showTargetFilter: [{
|
2148
|
-
type: Input,
|
2149
|
-
args: [{ transform: booleanAttribute }]
|
2150
|
-
}], metaKeySelection: [{
|
2151
|
-
type: Input,
|
2152
|
-
args: [{ transform: booleanAttribute }]
|
2153
|
-
}], dragdrop: [{
|
2154
|
-
type: Input,
|
2155
|
-
args: [{ transform: booleanAttribute }]
|
2156
|
-
}], style: [{
|
2157
|
-
type: Input
|
2158
|
-
}], styleClass: [{
|
2159
|
-
type: Input
|
2160
|
-
}], sourceStyle: [{
|
2161
|
-
type: Input
|
2162
|
-
}], targetStyle: [{
|
2163
|
-
type: Input
|
2164
|
-
}], showSourceControls: [{
|
2165
|
-
type: Input,
|
2166
|
-
args: [{ transform: booleanAttribute }]
|
2167
|
-
}], showTargetControls: [{
|
2168
|
-
type: Input,
|
2169
|
-
args: [{ transform: booleanAttribute }]
|
2170
|
-
}], sourceFilterPlaceholder: [{
|
2171
|
-
type: Input
|
2172
|
-
}], targetFilterPlaceholder: [{
|
2173
|
-
type: Input
|
2174
|
-
}], disabled: [{
|
2175
|
-
type: Input,
|
2176
|
-
args: [{ transform: booleanAttribute }]
|
2177
|
-
}], ariaSourceFilterLabel: [{
|
2178
|
-
type: Input
|
2179
|
-
}], ariaTargetFilterLabel: [{
|
2180
|
-
type: Input
|
2181
|
-
}], filterMatchMode: [{
|
2182
|
-
type: Input
|
2183
|
-
}], stripedRows: [{
|
2184
|
-
type: Input,
|
2185
|
-
args: [{ transform: booleanAttribute }]
|
2186
|
-
}], keepSelection: [{
|
2187
|
-
type: Input,
|
2188
|
-
args: [{ transform: booleanAttribute }]
|
2189
|
-
}], scrollHeight: [{
|
2190
|
-
type: Input
|
2191
|
-
}], autoOptionFocus: [{
|
2192
|
-
type: Input,
|
2193
|
-
args: [{ transform: booleanAttribute }]
|
2194
|
-
}], buttonProps: [{
|
2195
|
-
type: Input
|
2196
|
-
}], moveUpButtonProps: [{
|
2197
|
-
type: Input
|
2198
|
-
}], moveTopButtonProps: [{
|
2199
|
-
type: Input
|
2200
|
-
}], moveDownButtonProps: [{
|
2201
|
-
type: Input
|
2202
|
-
}], moveBottomButtonProps: [{
|
2203
|
-
type: Input
|
2204
|
-
}], moveToTargetProps: [{
|
2205
|
-
type: Input
|
2206
|
-
}], moveAllToTargetProps: [{
|
2207
|
-
type: Input
|
2208
|
-
}], moveToSourceProps: [{
|
2209
|
-
type: Input
|
2210
|
-
}], moveAllToSourceProps: [{
|
2211
|
-
type: Input
|
2212
|
-
}], breakpoint: [{
|
2213
|
-
type: Input
|
2214
|
-
}], onMoveToSource: [{
|
2215
|
-
type: Output
|
2216
|
-
}], onMoveAllToSource: [{
|
2217
|
-
type: Output
|
2218
|
-
}], onMoveAllToTarget: [{
|
2219
|
-
type: Output
|
2220
|
-
}], onMoveToTarget: [{
|
2221
|
-
type: Output
|
2222
|
-
}], onSourceReorder: [{
|
2223
|
-
type: Output
|
2224
|
-
}], onTargetReorder: [{
|
2225
|
-
type: Output
|
2226
|
-
}], onSourceSelect: [{
|
2227
|
-
type: Output
|
2228
|
-
}], onTargetSelect: [{
|
2229
|
-
type: Output
|
2230
|
-
}], onSourceFilter: [{
|
2231
|
-
type: Output
|
2232
|
-
}], onTargetFilter: [{
|
2233
|
-
type: Output
|
2234
|
-
}], onFocus: [{
|
2235
|
-
type: Output
|
2236
|
-
}], onBlur: [{
|
2237
|
-
type: Output
|
2238
|
-
}], listViewSourceChild: [{
|
2239
|
-
type: ViewChild,
|
2240
|
-
args: ['sourcelist']
|
2241
|
-
}], listViewTargetChild: [{
|
2242
|
-
type: ViewChild,
|
2243
|
-
args: ['targetlist']
|
2244
|
-
}], sourceFilterViewChild: [{
|
2245
|
-
type: ViewChild,
|
2246
|
-
args: ['sourceFilter']
|
2247
|
-
}], targetFilterViewChild: [{
|
2248
|
-
type: ViewChild,
|
2249
|
-
args: ['targetFilter']
|
2250
|
-
}], itemTemplate: [{
|
2251
|
-
type: ContentChild,
|
2252
|
-
args: ['item']
|
2253
|
-
}], sourceHeaderTemplate: [{
|
2254
|
-
type: ContentChild,
|
2255
|
-
args: ['sourceHeader']
|
2256
|
-
}], targetHeaderTemplate: [{
|
2257
|
-
type: ContentChild,
|
2258
|
-
args: ['targetHeader']
|
2259
|
-
}], sourceFilterTemplate: [{
|
2260
|
-
type: ContentChild,
|
2261
|
-
args: ['sourceFilter']
|
2262
|
-
}], targetFilterTemplate: [{
|
2263
|
-
type: ContentChild,
|
2264
|
-
args: ['targetFilter']
|
2265
|
-
}], emptyMessageSourceTemplate: [{
|
2266
|
-
type: ContentChild,
|
2267
|
-
args: ['emptymessagesource']
|
2268
|
-
}], emptyFilterMessageSourceTemplate: [{
|
2269
|
-
type: ContentChild,
|
2270
|
-
args: ['emptyfiltermessagesource']
|
2271
|
-
}], emptyMessageTargetTemplate: [{
|
2272
|
-
type: ContentChild,
|
2273
|
-
args: ['emptymessagetarget']
|
2274
|
-
}], emptyFilterMessageTargetTemplate: [{
|
2275
|
-
type: ContentChild,
|
2276
|
-
args: ['emptyfiltermessagetarget']
|
2277
|
-
}], moveUpIconTemplate: [{
|
2278
|
-
type: ContentChild,
|
2279
|
-
args: ['moveupicon']
|
2280
|
-
}], moveTopIconTemplate: [{
|
2281
|
-
type: ContentChild,
|
2282
|
-
args: ['movetopicon']
|
2283
|
-
}], moveDownIconTemplate: [{
|
2284
|
-
type: ContentChild,
|
2285
|
-
args: ['movedownicon']
|
2286
|
-
}], moveBottomIconTemplate: [{
|
2287
|
-
type: ContentChild,
|
2288
|
-
args: ['movebottomicon']
|
2289
|
-
}], moveToTargetIconTemplate: [{
|
2290
|
-
type: ContentChild,
|
2291
|
-
args: ['movetotargeticon']
|
2292
|
-
}], moveAllToTargetIconTemplate: [{
|
2293
|
-
type: ContentChild,
|
2294
|
-
args: ['movealltotargeticon']
|
2295
|
-
}], moveToSourceIconTemplate: [{
|
2296
|
-
type: ContentChild,
|
2297
|
-
args: ['movetosourceicon']
|
2298
|
-
}], moveAllToSourceIconTemplate: [{
|
2299
|
-
type: ContentChild,
|
2300
|
-
args: ['movealltosourceicon']
|
2301
|
-
}], targetFilterIconTemplate: [{
|
2302
|
-
type: ContentChild,
|
2303
|
-
args: ['targetfiltericon']
|
2304
|
-
}], sourceFilterIconTemplate: [{
|
2305
|
-
type: ContentChild,
|
2306
|
-
args: ['sourcefiltericon']
|
2307
|
-
}] }); })();
|
2308
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PickList, { className: "PickList" }); })();
|
2309
|
-
export class PickListModule {
|
2310
|
-
static ɵfac = function PickListModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PickListModule)(); };
|
2311
|
-
static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: PickListModule });
|
2312
|
-
static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [PickList, SharedModule, SharedModule] });
|
2313
|
-
}
|
2314
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PickListModule, [{
|
2315
|
-
type: NgModule,
|
2316
|
-
args: [{
|
2317
|
-
imports: [PickList, SharedModule],
|
2318
|
-
exports: [PickList, SharedModule]
|
2319
|
-
}]
|
2320
|
-
}], null, null); })();
|
2321
|
-
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(PickListModule, { imports: [PickList, SharedModule], exports: [PickList, SharedModule] }); })();
|
2322
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2xpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGlja2xpc3QvcGlja2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUdILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsZUFBZSxFQUNmLE1BQU0sRUFHTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0csT0FBTyxFQUFFLGFBQWEsRUFBaUIsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekwsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztB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QWM7Y0FKMUIsUUFBUTtlQUFDO2dCQUNOLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7Z0JBQ2pDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7YUFDcEM7O3dGQUNZLGNBQWMsY0FuN0NkLFFBQVEsRUFnN0NHLFlBQVksYUFoN0N2QixRQUFRLEVBaTdDRyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIERyYWdEcm9wTW9kdWxlLCBtb3ZlSXRlbUluQXJyYXksIHRyYW5zZmVyQXJyYXlJdGVtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaW5kLCBmaW5kSW5kZXhJbkxpc3QsIGZpbmRTaW5nbGUsIGlzRW1wdHksIHNjcm9sbEluVmlldywgc2V0QXR0cmlidXRlLCB1dWlkIH0gZnJvbSAnQHByaW1ldWl4L3V0aWxzJztcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UsIFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdwcmltZW5nL2Jhc2Vjb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlLCBCdXR0b25Qcm9wcyB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IEFuZ2xlRG91YmxlRG93bkljb24sIEFuZ2xlRG91YmxlTGVmdEljb24sIEFuZ2xlRG91YmxlUmlnaHRJY29uLCBBbmdsZURvdWJsZVVwSWNvbiwgQW5nbGVEb3duSWNvbiwgQW5nbGVMZWZ0SWNvbiwgQW5nbGVSaWdodEljb24sIEFuZ2xlVXBJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucyc7XG5pbXBvcnQgeyBMaXN0Ym94IH0gZnJvbSAncHJpbWVuZy9saXN0Ym94JztcbmltcG9ydCB7IFJpcHBsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IE51bGxhYmxlLCBWb2lkTGlzdGVuZXIgfSBmcm9tICdwcmltZW5nL3RzLWhlbHBlcnMnO1xuaW1wb3J0IHtcbiAgICBQaWNrTGlzdEZpbHRlck9wdGlvbnMsXG4gICAgUGlja0xpc3RNb3ZlQWxsVG9Tb3VyY2VFdmVudCxcbiAgICBQaWNrTGlzdE1vdmVBbGxUb1RhcmdldEV2ZW50LFxuICAgIFBpY2tMaXN0TW92ZVRvU291cmNlRXZlbnQsXG4gICAgUGlja0xpc3RNb3ZlVG9UYXJnZXRFdmVudCxcbiAgICBQaWNrTGlzdFNvdXJjZUZpbHRlckV2ZW50LFxuICAgIFBpY2tMaXN0U291cmNlUmVvcmRlckV2ZW50LFxuICAgIFBpY2tMaXN0U291cmNlU2VsZWN0RXZlbnQsXG4gICAgUGlja0xpc3RUYXJnZXRGaWx0ZXJFdmVudCxcbiAgICBQaWNrTGlzdFRhcmdldFJlb3JkZXJFdmVudCxcbiAgICBQaWNrTGlzdFRhcmdldFNlbGVjdEV2ZW50XG59IGZyb20gJy4vcGlja2xpc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBpY2tMaXN0U3R5bGUgfSBmcm9tICcuL3N0eWxlL3BpY2tsaXN0c3R5bGUnO1xuXG4vKipcbiAqIFBpY2tMaXN0IGlzIHVzZWQgdG8gcmVvcmRlciBpdGVtcyBiZXR3ZWVuIGRpZmZlcmVudCBsaXN0cy5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1waWNrTGlzdCwgcC1waWNrbGlzdCwgcC1waWNrLWxpc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEJ1dHRvbkRpcmVjdGl2ZSxcbiAgICAgICAgUmlwcGxlLFxuICAgICAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICAgICAgQW5nbGVEb3VibGVEb3duSWNvbixcbiAgICAgICAgQW5nbGVEb3VibGVMZWZ0SWNvbixcbiAgICAgICAgQW5nbGVEb3VibGVSaWdodEljb24sXG4gICAgICAgIEFuZ2xlRG91YmxlVXBJY29uLFxuICAgICAgICBBbmdsZURvd25JY29uLFxuICAgICAgICBBbmdsZUxlZnRJY29uLFxuICAgICAgICBBbmdsZVJpZ2h0SWNvbixcbiAgICAgICAgQW5nbGVVcEljb24sXG4gICAgICAgIFNlYXJjaEljb24sXG4gICAgICAgIExpc3Rib3gsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBTaGFyZWRNb2R1bGVcbiAgICBdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtuZ0NsYXNzXT1cInsgJ3AtcGlja2xpc3QgcC1jb21wb25lbnQnOiB0cnVlIH1cIiBjZGtEcm9wTGlzdEdyb3VwIFthdHRyLmRhdGEtcGMtbmFtZV09XCIncGlja2xpc3QnXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidyb290J1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtY29udHJvbHMgcC1waWNrbGlzdC1zb3VyY2UtY29udHJvbHNcIiAqbmdJZj1cInNob3dTb3VyY2VDb250cm9sc1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc291cmNlQ29udHJvbHMnXCIgW2F0dHIuZGF0YS1wYy1ncm91cC1zZWN0aW9uXT1cIidjb250cm9scydcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVVcEFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNvdXJjZU1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVVcChzb3VyY2VsaXN0LCBzb3VyY2UsIHNlbGVjdGVkSXRlbXNTb3VyY2UsIG9uU291cmNlUmVvcmRlciwgU09VUkNFX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzb3VyY2VNb3ZlVXBCdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZldXAnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVVcEljb24gKm5nSWY9XCIhbW92ZVVwSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZldXBpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVVcEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVG9wQXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic291cmNlTW92ZURpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZVRvcChzb3VyY2VsaXN0LCBzb3VyY2UsIHNlbGVjdGVkSXRlbXNTb3VyY2UsIG9uU291cmNlUmVvcmRlciwgU09VUkNFX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzb3VyY2VNb3ZlVG9wQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZXRvcCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBbmdsZURvdWJsZVVwSWNvbiAqbmdJZj1cIiFtb3ZlVG9wSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZldG9waWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVG9wSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVEb3duQXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic291cmNlTW92ZURpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZURvd24oc291cmNlbGlzdCwgc291cmNlLCBzZWxlY3RlZEl0ZW1zU291cmNlLCBvblNvdXJjZVJlb3JkZXIsIFNPVVJDRV9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc291cmNlTW92ZURvd25CdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZlZG93bicpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBbmdsZURvd25JY29uICpuZ0lmPVwiIW1vdmVEb3duSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlZG93bmljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZURvd25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZUJvdHRvbUFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNvdXJjZU1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVCb3R0b20oc291cmNlbGlzdCwgc291cmNlLCBzZWxlY3RlZEl0ZW1zU291cmNlLCBvblNvdXJjZVJlb3JkZXIsIFNPVVJDRV9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc291cmNlTW92ZUJvdHRvbUJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbYnV0dG9uUHJvcHNdPVwiZ2V0QnV0dG9uUHJvcHMoJ21vdmVib3R0b20nKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3VibGVEb3duSWNvbiAqbmdJZj1cIiFtb3ZlQm90dG9tSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlYm90dG9taWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlQm90dG9tSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtbGlzdC1jb250YWluZXIgcC1waWNrbGlzdC1zb3VyY2UtbGlzdC1jb250YWluZXJcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZVdyYXBwZXInXCIgW2F0dHIuZGF0YS1wYy1ncm91cC1zZWN0aW9uXT1cIidsaXN0V3JhcHBlcidcIj5cbiAgICAgICAgICAgICAgICA8cC1saXN0Ym94XG4gICAgICAgICAgICAgICAgICAgICNzb3VyY2VsaXN0XG4gICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEl0ZW1zU291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkU291cmNlICsgJ19saXN0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInNvdXJjZVN0eWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0cmlwZWRdPVwic3RyaXBlZFJvd3NcIlxuICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAob25Gb2N1cyk9XCJvbkxpc3RGb2N1cygkZXZlbnQsIFNPVVJDRV9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkJsdXIpPVwib25MaXN0Qmx1cigkZXZlbnQsIFNPVVJDRV9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSXRlbUtleURvd24oJGV2ZW50LCBzZWxlY3RlZEl0ZW1zU291cmNlLCBvblNvdXJjZVNlbGVjdCwgU09VUkNFX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uRGJsQ2xpY2spPVwib25Tb3VyY2VJdGVtRGJsQ2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFttZXRhS2V5U2VsZWN0aW9uXT1cIm1ldGFLZXlTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvT3B0aW9uRm9jdXNdPVwiYXV0b09wdGlvbkZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJmaWx0ZXJCeVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJCeV09XCJmaWx0ZXJCeVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJMb2NhbGVdPVwiZmlsdGVyTG9jYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpbHRlclBsYWNlSG9sZGVyXT1cInNvdXJjZUZpbHRlclBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzb3VyY2VIZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwic291cmNlSGVhZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LXRpdGxlXCIgKm5nSWY9XCIhc291cmNlSGVhZGVyVGVtcGxhdGVcIj57eyBzb3VyY2VIZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtIGxldC1pdGVtIGxldC1pbmRleD1cImluZGV4XCIgbGV0LXNlbGVjdGVkPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGluZGV4LCBzZWxlY3RlZDogc2VsZWN0ZWQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9wLWxpc3Rib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWNvbnRyb2xzIHAtcGlja2xpc3QtdHJhbnNmZXItY29udHJvbHNcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2J1dHRvbnMnXCIgW2F0dHIuZGF0YS1wYy1ncm91cC1zZWN0aW9uXT1cIidjb250cm9scydcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVUb1RhcmdldEFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1vdmVSaWdodERpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZVJpZ2h0KClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmVUb1RhcmdldEJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbYnV0dG9uUHJvcHNdPVwiZ2V0QnV0dG9uUHJvcHMoJ21vdmV0b3RhcmdldCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW92ZVRvVGFyZ2V0SWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVSaWdodEljb24gKm5nSWY9XCIhdmlld0NoYW5nZWRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmV0b3RhcmdldGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZURvd25JY29uICpuZ0lmPVwidmlld0NoYW5nZWRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmV0b3RhcmdldGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVUb1RhcmdldEljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZpZXdDaGFuZ2VkIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZUFsbFRvVGFyZ2V0QXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibW92ZUFsbFJpZ2h0RGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQWxsUmlnaHQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZUFsbFRvVGFyZ2V0QnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZWFsbHRvdGFyZ2V0JylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb3ZlQWxsVG9UYXJnZXRJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZURvdWJsZVJpZ2h0SWNvbiAqbmdJZj1cIiF2aWV3Q2hhbmdlZFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWFsbHRvdGFyZ2V0aWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG91YmxlRG93bkljb24gKm5nSWY9XCJ2aWV3Q2hhbmdlZFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWFsbHRvdGFyZ2V0aWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZUFsbFRvVGFyZ2V0SWNvblRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdmlld0NoYW5nZWQgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVG9Tb3VyY2VBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtb3ZlTGVmdERpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUxlZnQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZVRvU291cmNlQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZXRvc291cmNlJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb3ZlVG9Tb3VyY2VJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZUxlZnRJY29uICpuZ0lmPVwiIXZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlZG93bnNvdXJjZXRpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVVcEljb24gKm5nSWY9XCJ2aWV3Q2hhbmdlZFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWRvd25zb3VyY2V0aWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZVRvU291cmNlSWNvblRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdmlld0NoYW5nZWQgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlQWxsVG9Tb3VyY2VBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtb3ZlQWxsTGVmdERpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUFsbExlZnQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZUFsbFRvU291cmNlQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZWFsbHRvc291cmNlJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb3ZlQWxsVG9Tb3VyY2VJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZURvdWJsZUxlZnRJY29uICpuZ0lmPVwiIXZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlYWxsdG9zb3VyY2V0aWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG91YmxlVXBJY29uICpuZ0lmPVwidmlld0NoYW5nZWRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmVhbGx0b3NvdXJjZXRpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlQWxsVG9Tb3VyY2VJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2aWV3Q2hhbmdlZCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtbGlzdC1jb250YWluZXIgcC1waWNrbGlzdC10YXJnZXQtbGlzdC1jb250YWluZXJcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldFdyYXBwZXInXCIgW2F0dHIuZGF0YS1wYy1ncm91cC1zZWN0aW9uXT1cIidsaXN0d3JhcHBlcidcIj5cbiAgICAgICAgICAgICAgICA8cC1saXN0Ym94XG4gICAgICAgICAgICAgICAgICAgICN0YXJnZXRsaXN0XG4gICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwidGFyZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEl0ZW1zVGFyZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkVGFyZ2V0ICsgJ19saXN0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInRhcmdldFN0eWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0cmlwZWRdPVwic3RyaXBlZFJvd3NcIlxuICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAob25Gb2N1cyk9XCJvbkxpc3RGb2N1cygkZXZlbnQsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkJsdXIpPVwib25MaXN0Qmx1cigkZXZlbnQsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSXRlbUtleURvd24oJGV2ZW50LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFNlbGVjdCwgVEFSR0VUX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uRGJsQ2xpY2spPVwib25UYXJnZXRJdGVtRGJsQ2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFttZXRhS2V5U2VsZWN0aW9uXT1cIm1ldGFLZXlTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvT3B0aW9uRm9jdXNdPVwiYXV0b09wdGlvbkZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJmaWx0ZXJCeVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJCeV09XCJmaWx0ZXJCeVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJMb2NhbGVdPVwiZmlsdGVyTG9jYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpbHRlclBsYWNlSG9sZGVyXT1cInRhcmdldEZpbHRlclBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YXJnZXRIZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFyZ2V0SGVhZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LXRpdGxlXCIgKm5nSWY9XCIhdGFyZ2V0SGVhZGVyVGVtcGxhdGVcIj57eyBzb3VyY2VIZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtIGxldC1pdGVtIGxldC1pbmRleD1cImluZGV4XCIgbGV0LXNlbGVjdGVkPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGluZGV4LCBzZWxlY3RlZDogc2VsZWN0ZWQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9wLWxpc3Rib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWNvbnRyb2xzIHAtcGlja2xpc3QtdGFyZ2V0LWNvbnRyb2xzXCIgKm5nSWY9XCJzaG93VGFyZ2V0Q29udHJvbHNcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldENvbnRyb2xzJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInY29udHJvbHMnXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVXBBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YXJnZXRNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlVXAodGFyZ2V0bGlzdCwgdGFyZ2V0LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFJlb3JkZXIsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0TW92ZVVwQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZXVwJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlVXBJY29uICpuZ0lmPVwiIW1vdmVVcEljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXVwaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVXBJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZVRvcEFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRhcmdldE1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVUb3AodGFyZ2V0bGlzdCwgdGFyZ2V0LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFJlb3JkZXIsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0TW92ZVRvcEJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbYnV0dG9uUHJvcHNdPVwiZ2V0QnV0dG9uUHJvcHMoJ21vdmV0b3AnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3VibGVVcEljb24gKm5nSWY9XCIhbW92ZVRvcEljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXRvcGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZVRvcEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlRG93bkFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRhcmdldE1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVEb3duKHRhcmdldGxpc3QsIHRhcmdldCwgc2VsZWN0ZWRJdGVtc1RhcmdldCwgb25UYXJnZXRSZW9yZGVyLCBUQVJHRVRfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldE1vdmVEb3duQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZWRvd24nKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3duSWNvbiAqbmdJZj1cIiFtb3ZlRG93bkljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWRvd25pY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVEb3duSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVCb3R0b21BcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YXJnZXRNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQm90dG9tKHRhcmdldGxpc3QsIHRhcmdldCwgc2VsZWN0ZWRJdGVtc1RhcmdldCwgb25UYXJnZXRSZW9yZGVyLCBUQVJHRVRfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldE1vdmVCb3R0b21CdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZlYm90dG9tJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG91YmxlRG93bkljb24gKm5nSWY9XCIhbW92ZUJvdHRvbUljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWJvdHRvbWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZUJvdHRvbUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1BpY2tMaXN0U3R5bGVdXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tMaXN0IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG9iamVjdHMgZm9yIHRoZSBzb3VyY2UgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2U6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG9iamVjdHMgZm9yIHRoZSB0YXJnZXQgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXQ6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRleHQgZm9yIHRoZSBzb3VyY2UgbGlzdCBjYXB0aW9uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc291cmNlSGVhZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0YWJpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gMDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIHJpZ2h0IGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSByaWdodEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gbGVmdCBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGVmdEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gYWxsIHJpZ2h0IGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhbGxSaWdodEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gYWxsIGxlZnQgYnV0dG9uIGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFsbExlZnRCdXR0b25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIHVwIGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB1cEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gZG93biBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZG93bkJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gdG9wIGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0b3BCdXR0b25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIGJvdHRvbSBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYm90dG9tQnV0dG9uQXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCBmb3IgdGhlIHRhcmdldCBsaXN0IGNhcHRpb25cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRIZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIGVuYWJsZWQgb3JkZXJsaXN0IGFkanVzdHMgaXRzIGNvbnRyb2xzIGJhc2VkIG9uIHNjcmVlbiBzaXplLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXNwb25zaXZlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gc3BlY2lmaWVkIGRpc3BsYXlzIGFuIGlucHV0IGZpZWxkIHRvIGZpbHRlciB0aGUgaXRlbXMgb24ga2V5dXAgYW5kIGRlY2lkZXMgd2hpY2ggZmllbGQgdG8gc2VhcmNoIChBY2NlcHRzIG11bHRpcGxlIGZpZWxkcyB3aXRoIGEgY29tbWEpLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTG9jYWxlIHRvIHVzZSBpbiBmaWx0ZXJpbmcuIFRoZSBkZWZhdWx0IGxvY2FsZSBpcyB0aGUgaG9zdCBlbnZpcm9ubWVudCdzIGN1cnJlbnQgbG9jYWxlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckxvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIG9wdGltaXplIHRoZSBkb20gb3BlcmF0aW9ucyBieSBkZWxlZ2F0aW5nIHRvIG5nRm9yVHJhY2tCeSwgZGVmYXVsdCBhbGdvcml0aG0gY2hlY2tzIGZvciBvYmplY3QgaWRlbnRpdHkuIFVzZSBzb3VyY2VUcmFja0J5IG9yIHRhcmdldFRyYWNrQnkgaW4gY2FzZSBkaWZmZXJlbnQgYWxnb3JpdGhtcyBhcmUgbmVlZGVkIHBlciBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRyYWNrQnk6IEZ1bmN0aW9uID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBvcHRpbWl6ZSB0aGUgZG9tIG9wZXJhdGlvbnMgYnkgZGVsZWdhdGluZyB0byBuZ0ZvclRyYWNrQnkgaW4gc291cmNlIGxpc3QsIGRlZmF1bHQgYWxnb3JpdGhtIGNoZWNrcyBmb3Igb2JqZWN0IGlkZW50aXR5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNvdXJjZVRyYWNrQnk6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIG9wdGltaXplIHRoZSBkb20gb3BlcmF0aW9ucyBieSBkZWxlZ2F0aW5nIHRvIG5nRm9yVHJhY2tCeSBpbiB0YXJnZXQgbGlzdCwgZGVmYXVsdCBhbGdvcml0aG0gY2hlY2tzIGZvciBvYmplY3QgaWRlbnRpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdGFyZ2V0VHJhY2tCeTogRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBzaG93IGZpbHRlciBpbnB1dCBmb3Igc291cmNlIGxpc3Qgd2hlbiBmaWx0ZXJCeSBpcyBlbmFibGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U291cmNlRmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgZmlsdGVyIGlucHV0IGZvciB0YXJnZXQgbGlzdCB3aGVuIGZpbHRlckJ5IGlzIGVuYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dUYXJnZXRGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgaG93IG11bHRpcGxlIGl0ZW1zIGNhbiBiZSBzZWxlY3RlZCwgd2hlbiB0cnVlIG1ldGFLZXkgbmVlZHMgdG8gYmUgcHJlc3NlZCB0byBzZWxlY3Qgb3IgdW5zZWxlY3QgYW4gaXRlbSBhbmQgd2hlbiBzZXQgdG8gZmFsc2Ugc2VsZWN0aW9uIG9mIGVhY2ggaXRlbSBjYW4gYmUgdG9nZ2xlZCBpbmRpdmlkdWFsbHkuIE9uIHRvdWNoIGVuYWJsZWQgZGV2aWNlcywgbWV0YUtleVNlbGVjdGlvbiBpcyB0dXJuZWQgb2ZmIGF1dG9tYXRpY2FsbHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG1ldGFLZXlTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBkcmFnZHJvcCBiYXNlZCByZW9yZGVyaW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkcmFnZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgc291cmNlIGxpc3QgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2VTdHlsZTogYW55O1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgdGFyZ2V0IGxpc3QgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRTdHlsZTogYW55O1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBidXR0b25zIG9mIHNvdXJjZSBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U291cmNlQ29udHJvbHM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBidXR0b25zIG9mIHRhcmdldCBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93VGFyZ2V0Q29udHJvbHM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFBsYWNlaG9sZGVyIHRleHQgb24gc291cmNlIGZpbHRlciBpbnB1dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2VGaWx0ZXJQbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFBsYWNlaG9sZGVyIHRleHQgb24gdGFyZ2V0IGZpbHRlciBpbnB1dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRGaWx0ZXJQbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgZmlsdGVyIGlucHV0IG9mIHNvdXJjZSBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFTb3VyY2VGaWx0ZXJMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIGZpbHRlciBpbnB1dCBvZiB0YXJnZXQgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhVGFyZ2V0RmlsdGVyTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGhvdyB0aGUgaXRlbXMgYXJlIGZpbHRlcmVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlck1hdGNoTW9kZTogJ2NvbnRhaW5zJyB8ICdzdGFydHNXaXRoJyB8ICdlbmRzV2l0aCcgfCAnZXF1YWxzJyB8ICdub3RFcXVhbHMnIHwgJ2luJyB8ICdsdCcgfCAnbHRlJyB8ICdndCcgfCAnZ3RlJyA9ICdjb250YWlucyc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBkaXNwbGF5cyByb3dzIHdpdGggYWx0ZXJuYXRpbmcgY29sb3JzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzdHJpcGVkUm93czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBLZWVwcyBzZWxlY3Rpb24gb24gdGhlIHRyYW5zZmVyIGxpc3QuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGtlZXBTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBIZWlnaHQgb2YgdGhlIHZpZXdwb3J0LCBhIHNjcm9sbGJhciBpcyBkZWZpbmVkIGlmIGhlaWdodCBvZiBsaXN0IGV4Y2VlZHMgdGhpcyB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzY3JvbGxIZWlnaHQ6IHN0cmluZyA9ICcxNHJlbSc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBmb2N1cyBvbiB0aGUgZmlyc3QgdmlzaWJsZSBvciBzZWxlY3RlZCBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvT3B0aW9uRm9jdXM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gcGFzcyBhbGwgcHJvcGVydGllcyBvZiB0aGUgQnV0dG9uUHJvcHMgdG8gdGhlIEJ1dHRvbiBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYnV0dG9uUHJvcHM6IEJ1dHRvblByb3BzID0geyBzZXZlcml0eTogJ3NlY29uZGFyeScgfTtcbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIHVwIGJ1dHRvbiBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb3ZlVXBCdXR0b25Qcm9wczogQnV0dG9uUHJvcHM7XG4gICAgLyoqXG4gICAgICogXHRVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIHRvcCBidXR0b24gaW5zaWRlIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbW92ZVRvcEJ1dHRvblByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiBcdFVzZWQgdG8gcGFzcyBhbGwgcHJvcGVydGllcyBvZiB0aGUgQnV0dG9uUHJvcHMgdG8gdGhlIG1vdmUgZG93biBidXR0b24gaW5zaWRlIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbW92ZURvd25CdXR0b25Qcm9wczogQnV0dG9uUHJvcHM7XG4gICAgLyoqXG4gICAgICogXHRVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIGJvdHRvbSBidXR0b24gaW5zaWRlIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbW92ZUJvdHRvbUJ1dHRvblByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiBcdFVzZWQgdG8gcGFzcyBhbGwgcHJvcGVydGllcyBvZiB0aGUgQnV0dG9uUHJvcHMgdG8gdGhlIG1vdmUgdG8gdGFyZ2V0IGJ1dHRvbiBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb3ZlVG9UYXJnZXRQcm9wczogQnV0dG9uUHJvcHM7XG4gICAgLyoqXG4gICAgICogXHRVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIGFsbCB0byB0YXJnZXQgYnV0dG9uIGluc2lkZSB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1vdmVBbGxUb1RhcmdldFByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiAgVXNlZCB0byBwYXNzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBCdXR0b25Qcm9wcyB0byB0aGUgbW92ZSB0byBzb3VyY2UgYnV0dG9uIGluc2lkZSB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1vdmVUb1NvdXJjZVByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiAgVXNlZCB0byBwYXNzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBCdXR0b25Qcm9wcyB0byB0aGUgbW92ZSBhbGwgdG8gc291cmNlIGJ1dHRvbiBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb3ZlQWxsVG9Tb3VyY2VQcm9wczogQnV0dG9uUHJvcHM7XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgdGhlIHdpZHRoIG9mIHRoZSBzY3JlZW4gYXQgd2hpY2ggdGhlIGNvbXBvbmVudCBzaG91bGQgY2hhbmdlIGl0cyBiZWhhdmlvci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgYnJlYWtwb2ludCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludDtcbiAgICB9XG4gICAgc2V0IGJyZWFrcG9pbnQodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuX2JyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95TWVkaWEoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRNZWRpYSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGl0ZW1zIGFyZSBtb3ZlZCBmcm9tIHRhcmdldCB0byBzb3VyY2UuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdE1vdmVUb1NvdXJjZUV2ZW50fSBldmVudCAtIEN1c3RvbSBtb3ZlIHRvIHNvdXJjZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlVG9Tb3VyY2U6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVUb1NvdXJjZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlVG9Tb3VyY2VFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbGwgaXRlbXMgYXJlIG1vdmVkIGZyb20gdGFyZ2V0IHRvIHNvdXJjZS5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0TW92ZUFsbFRvU291cmNlRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIG1vdmUgYWxsIHRvIHNvdXJjZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlQWxsVG9Tb3VyY2U6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVBbGxUb1NvdXJjZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlQWxsVG9Tb3VyY2VFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbGwgaXRlbXMgYXJlIG1vdmVkIGZyb20gc291cmNlIHRvIHRhcmdldC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0TW92ZUFsbFRvVGFyZ2V0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIG1vdmUgYWxsIHRvIHRhcmdldCBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlQWxsVG9UYXJnZXQ6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVBbGxUb1RhcmdldEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlQWxsVG9UYXJnZXRFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBpdGVtcyBhcmUgbW92ZWQgZnJvbSBzb3VyY2UgdG8gdGFyZ2V0LlxuICAgICAqIEBwYXJhbSB7UGlja0xpc3RNb3ZlVG9UYXJnZXRFdmVudH0gZXZlbnQgLSBDdXN0b20gbW92ZSB0byB0YXJnZXQgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uTW92ZVRvVGFyZ2V0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlVG9UYXJnZXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0TW92ZVRvVGFyZ2V0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHJlb3JkZXJlZCB3aXRoaW4gc291cmNlIGxpc3QuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFNvdXJjZVJlb3JkZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gc291cmNlIHJlb3JkZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU291cmNlUmVvcmRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlUmVvcmRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RTb3VyY2VSZW9yZGVyRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHJlb3JkZXJlZCB3aXRoaW4gdGFyZ2V0IGxpc3QuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFRhcmdldFJlb3JkZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gdGFyZ2V0IHJlb3JkZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uVGFyZ2V0UmVvcmRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0VGFyZ2V0UmVvcmRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRSZW9yZGVyRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHNlbGVjdGVkIHdpdGhpbiBzb3VyY2UgbGlzdC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0U291cmNlU2VsZWN0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHNvdXJjZSBzZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU291cmNlU2VsZWN0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RTb3VyY2VTZWxlY3RFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlU2VsZWN0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHNlbGVjdGVkIHdpdGhpbiB0YXJnZXQgbGlzdC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0VGFyZ2V0U2VsZWN0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHRhcmdldCBzZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uVGFyZ2V0U2VsZWN0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRTZWxlY3RFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0VGFyZ2V0U2VsZWN0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIHNvdXJjZSBsaXN0IGlzIGZpbHRlcmVkXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFNvdXJjZUZpbHRlckV2ZW50fSBldmVudCAtIEN1c3RvbSBzb3VyY2UgZmlsdGVyIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblNvdXJjZUZpbHRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlRmlsdGVyRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQaWNrTGlzdFNvdXJjZUZpbHRlckV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSB0YXJnZXQgbGlzdCBpcyBmaWx0ZXJlZFxuICAgICAqIEBwYXJhbSB7UGlja0xpc3RUYXJnZXRGaWx0ZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gdGFyZ2V0IGZpbHRlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25UYXJnZXRGaWx0ZXI6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdFRhcmdldEZpbHRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRGaWx0ZXJFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSBsaXN0IGlzIGZvY3VzZWRcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIGxpc3QgaXMgYmx1cnJlZFxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3NvdXJjZWxpc3QnKSBsaXN0Vmlld1NvdXJjZUNoaWxkOiBMaXN0Ym94O1xuXG4gICAgQFZpZXdDaGlsZCgndGFyZ2V0bGlzdCcpIGxpc3RWaWV3VGFyZ2V0Q2hpbGQ6IExpc3Rib3g7XG5cbiAgICBAVmlld0NoaWxkKCdzb3VyY2VGaWx0ZXInKSBzb3VyY2VGaWx0ZXJWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgndGFyZ2V0RmlsdGVyJykgdGFyZ2V0RmlsdGVyVmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIGdldEJ1dHRvblByb3BzKGRpcmVjdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdtb3ZldXAnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnRoaXMuYnV0dG9uUHJvcHMsIC4uLnRoaXMubW92ZVVwQnV0dG9uUHJvcHMgfTtcbiAgICAgICAgICAgIGNhc2UgJ21vdmV0b3AnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnRoaXMuYnV0dG9uUHJvcHMsIC4uLnRoaXMubW92ZVRvcEJ1dHRvblByb3BzIH07XG4gICAgICAgICAgICBjYXNlICdtb3ZlZG93bic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5idXR0b25Qcm9wcywgLi4udGhpcy5tb3ZlRG93bkJ1dHRvblByb3BzIH07XG4gICAgICAgICAgICBjYXNlICdtb3ZlYm90dG9tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmJ1dHRvblByb3BzLCAuLi50aGlzLm1vdmVCb3R0b21CdXR0b25Qcm9wcyB9O1xuICAgICAgICAgICAgY2FzZSAnbW92ZXRvdGFyZ2V0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmJ1dHRvblByb3BzLCAuLi50aGlzLm1vdmVUb1RhcmdldFByb3BzIH07XG4gICAgICAgICAgICBjYXNlICdtb3ZlYWxsdG90YXJnZXQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnRoaXMuYnV0dG9uUHJvcHMsIC4uLnRoaXMubW92ZUFsbFRvVGFyZ2V0UHJvcHMgfTtcbiAgICAgICAgICAgIGNhc2UgJ21vdmV0b3NvdXJjZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5idXR0b25Qcm9wcywgLi4udGhpcy5tb3ZlVG9Tb3VyY2VQcm9wcyB9O1xuICAgICAgICAgICAgY2FzZSAnbW92ZWFsbHRvc291cmNlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmJ1dHRvblByb3BzLCAuLi50aGlzLm1vdmVBbGxUb1NvdXJjZVByb3BzIH07XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1dHRvblByb3BzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVVcEFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBCdXR0b25BcmlhTGFiZWwgPyB0aGlzLnVwQnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZVVwIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlVG9wQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b3BCdXR0b25BcmlhTGFiZWwgPyB0aGlzLnRvcEJ1dHRvbkFyaWFMYWJlbCA6IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm1vdmVUb3AgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVEb3duQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kb3duQnV0dG9uQXJpYUxhYmVsID8gdGhpcy5kb3duQnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZURvd24gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVCb3R0b21BcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvdHRvbUJ1dHRvbkFyaWFMYWJlbCA/IHRoaXMuYm90dG9tQnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZURvd24gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVUb1RhcmdldEFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlnaHRCdXR0b25BcmlhTGFiZWwgPyB0aGlzLnJpZ2h0QnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZVRvVGFyZ2V0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlQWxsVG9UYXJnZXRBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbFJpZ2h0QnV0dG9uQXJpYUxhYmVsID8gdGhpcy5hbGxSaWdodEJ1dHRvbkFyaWFMYWJlbCA6IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm1vdmVBbGxUb1RhcmdldCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXQgbW92ZVRvU291cmNlQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sZWZ0QnV0dG9uQXJpYUxhYmVsID8gdGhpcy5sZWZ0QnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZVRvU291cmNlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlQWxsVG9Tb3VyY2VBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbExlZnRCdXR0b25BcmlhTGFiZWwgPyB0aGlzLmFsbExlZnRCdXR0b25BcmlhTGFiZWwgOiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS5tb3ZlQWxsVG9Tb3VyY2UgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGlkU291cmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCArICdfc291cmNlJztcbiAgICB9XG5cbiAgICBnZXQgaWRUYXJnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJ190YXJnZXQnO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkT3B0aW9uSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCAhPT0gLTEgPyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCA6IG51bGw7XG4gICAgfVxuXG4gICAgX2JyZWFrcG9pbnQ6IHN0cmluZyA9ICc5NjBweCc7XG5cbiAgICBwdWJsaWMgdmlzaWJsZU9wdGlvbnNTb3VyY2U6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIHB1YmxpYyB2aXNpYmxlT3B0aW9uc1RhcmdldDogYW55W10gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgc2VsZWN0ZWRJdGVtc1NvdXJjZTogYW55W10gPSBbXTtcblxuICAgIHNlbGVjdGVkSXRlbXNUYXJnZXQ6IGFueVtdID0gW107XG5cbiAgICByZW9yZGVyZWRMaXN0RWxlbWVudDogYW55O1xuXG4gICAgbW92ZWRVcDogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBtb3ZlZERvd246IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgaXRlbVRvdWNoZWQ6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgc3R5bGVFbGVtZW50OiBhbnk7XG5cbiAgICBpZDogc3RyaW5nID0gdXVpZCgncG5faWRfJyk7XG5cbiAgICBmaWx0ZXJWYWx1ZVNvdXJjZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIGZpbHRlclZhbHVlVGFyZ2V0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgZnJvbUxpc3RUeXBlOiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgc291cmNlRmlsdGVyT3B0aW9uczogTnVsbGFibGU8UGlja0xpc3RGaWx0ZXJPcHRpb25zPjtcblxuICAgIHRhcmdldEZpbHRlck9wdGlvbnM6IE51bGxhYmxlPFBpY2tMaXN0RmlsdGVyT3B0aW9ucz47XG5cbiAgICByZWFkb25seSBTT1VSQ0VfTElTVDogbnVtYmVyID0gLTE7XG5cbiAgICByZWFkb25seSBUQVJHRVRfTElTVDogbnVtYmVyID0gMTtcblxuICAgIHdpbmRvdzogV2luZG93O1xuXG4gICAgbWVkaWE6IE1lZGlhUXVlcnlMaXN0IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAgIHZpZXdDaGFuZ2VkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgZm9jdXNlZE9wdGlvbkluZGV4OiBhbnkgPSAtMTtcblxuICAgIGZvY3VzZWRPcHRpb246IGFueSB8IHVuZGVmaW5lZDtcblxuICAgIGZvY3VzZWQ6IGFueSA9IHtcbiAgICAgICAgc291cmNlTGlzdDogZmFsc2UsXG4gICAgICAgIHRhcmdldExpc3Q6IGZhbHNlXG4gICAgfTtcblxuICAgIF9jb21wb25lbnRTdHlsZSA9IGluamVjdChQaWNrTGlzdFN0eWxlKTtcblxuICAgIG1lZGlhQ2hhbmdlTGlzdGVuZXI6IFZvaWRMaXN0ZW5lcjtcblxuICAgIGZpbHRlclNlcnZpY2UgPSBpbmplY3QoRmlsdGVyU2VydmljZSk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVTdHlsZSgpO1xuICAgICAgICAgICAgdGhpcy5pbml0TWVkaWEoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgICB0aGlzLnNvdXJjZUZpbHRlck9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHRoaXMuZmlsdGVyU291cmNlKHZhbHVlKSxcbiAgICAgICAgICAgICAgICByZXNldDogKCkgPT4gdGhpcy5yZXNldFNvdXJjZUZpbHRlcigpXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnRhcmdldEZpbHRlck9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHRoaXMuZmlsdGVyVGFyZ2V0KHZhbHVlKSxcbiAgICAgICAgICAgICAgICByZXNldDogKCkgPT4gdGhpcy5yZXNldFRhcmdldEZpbHRlcigpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGl0ZW0gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2l0ZW0nKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gc291cmNlIGhlYWRlciB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc291cmNlSGVhZGVyJykgc291cmNlSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gdGFyZ2V0IGhlYWRlciB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgndGFyZ2V0SGVhZGVyJykgdGFyZ2V0SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gc291cmNlIGZpbHRlciB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc291cmNlRmlsdGVyJykgc291cmNlRmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgb3B0aW9uczogUGlja0xpc3RGaWx0ZXJPcHRpb25zIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHRhcmdldCBmaWx0ZXIgdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RhcmdldEZpbHRlcicpIHRhcmdldEZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7IG9wdGlvbnM6IFBpY2tMaXN0RmlsdGVyT3B0aW9ucyB9PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBlbXB0eSBtZXNzYWdlIHdoZW4gc291cmNlIGlzIGVtcHR5IHRlbXBsYXRlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdlbXB0eW1lc3NhZ2Vzb3VyY2UnKSBlbXB0eU1lc3NhZ2VTb3VyY2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBlbXB0eSBmaWx0ZXIgbWVzc2FnZSB3aGVuIHNvdXJjZSBpcyBlbXB0eSB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW1wdHlmaWx0ZXJtZXNzYWdlc291cmNlJykgZW1wdHlGaWx0ZXJNZXNzYWdlU291cmNlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gZW1wdHkgbWVzc2FnZSB3aGVuIHRhcmdldCBpcyBlbXB0eSB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW1wdHltZXNzYWdldGFyZ2V0JykgZW1wdHlNZXNzYWdlVGFyZ2V0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gZW1wdHkgZmlsdGVyIG1lc3NhZ2Ugd2hlbiB0YXJnZXQgaXMgZW1wdHkgdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5ZmlsdGVybWVzc2FnZXRhcmdldCcpIGVtcHR5RmlsdGVyTWVzc2FnZVRhcmdldFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgdXAgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZXVwaWNvbicpIG1vdmVVcEljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IGJvb2xlYW4gfT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbW92ZSB0b3AgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZXRvcGljb24nKSBtb3ZlVG9wSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogYm9vbGVhbiB9PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBtb3ZlIGRvd24gaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZWRvd25pY29uJykgbW92ZURvd25JY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBib29sZWFuIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgYm90dG9tIGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vdmVib3R0b21pY29uJykgbW92ZUJvdHRvbUljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IGJvb2xlYW4gfT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbW92ZSB0byB0YXJnZXQgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZXRvdGFyZ2V0aWNvbicpIG1vdmVUb1RhcmdldEljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IGJvb2xlYW4gfT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbW92ZSBhbGwgdG8gdGFyZ2V0IGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vdmVhbGx0b3RhcmdldGljb24nKSBtb3ZlQWxsVG9UYXJnZXRJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBib29sZWFuIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgdG8gc291cmNlIGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vdmV0b3NvdXJjZWljb24nKSBtb3ZlVG9Tb3VyY2VJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBib29sZWFuIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgYWxsIHRvIHNvdXJjZSBpY29uIHRlbXBsYXRlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtb3ZlYWxsdG9zb3VyY2VpY29uJykgbW92ZUFsbFRvU291cmNlSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogYm9vbGVhbiB9PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSB0YXJnZXQgZmlsdGVyIGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RhcmdldGZpbHRlcmljb24nKSB0YXJnZXRGaWx0ZXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgb3B0aW9uczogUGlja0xpc3RGaWx0ZXJPcHRpb25zIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHNvdXJjZSBmaWx0ZXIgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc291cmNlZmlsdGVyaWNvbicpIHNvdXJjZUZpbHRlckljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyBvcHRpb25zOiBQaWNrTGlzdEZpbHRlck9wdGlvbnMgfT47XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgICh0aGlzLnRlbXBsYXRlcyBhcyBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4pLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdzb3VyY2VIZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd0YXJnZXRIZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldEhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdzb3VyY2VGaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUZpbHRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd0YXJnZXRGaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldEZpbHRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eW1lc3NhZ2Vzb3VyY2UnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5TWVzc2FnZVNvdXJjZVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eWZpbHRlcm1lc3NhZ2Vzb3VyY2UnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5RmlsdGVyTWVzc2FnZVNvdXJjZVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eW1lc3NhZ2V0YXJnZXQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5TWVzc2FnZVRhcmdldFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eWZpbHRlcm1lc3NhZ2V0YXJnZXQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5RmlsdGVyTWVzc2FnZVRhcmdldFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZldXBpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlVXBJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmV0b3BpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlVG9wSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZlZG93bmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVEb3duSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZlYm90dG9taWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUJvdHRvbUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbW92ZXRvdGFyZ2V0aWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVRvVGFyZ2V0SWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZlYWxsdG90YXJnZXRpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlQWxsVG9UYXJnZXRJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmV0b3NvdXJjZWljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVUb1NvdXJjZUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbW92ZWFsbHRvc291cmNlaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUFsbFRvU291cmNlSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd0YXJnZXRmaWx0ZXJpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRGaWx0ZXJJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3NvdXJjZWZpbHRlcmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUZpbHRlckljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICBpZiAodGhpcy5tb3ZlZFVwIHx8IHRoaXMubW92ZWREb3duKSB7XG4gICAgICAgICAgICBsZXQgbGlzdEl0ZW1zID0gZmluZCh0aGlzLnJlb3JkZXJlZExpc3RFbGVtZW50LCAnbGkucC1oaWdobGlnaHQnKTtcbiAgICAgICAgICAgIGxldCBsaXN0SXRlbTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubW92ZWRVcCkgbGlzdEl0ZW0gPSBsaXN0SXRlbXNbMF07XG4gICAgICAgICAgICBlbHNlIGxpc3RJdGVtID0gbGlzdEl0ZW1zW2xpc3RJdGVtcy5sZW5ndGggLSAxXTtcblxuICAgICAgICAgICAgc2Nyb2xsSW5WaWV3KHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQsIGxpc3RJdGVtKTtcbiAgICAgICAgICAgIHRoaXMubW92ZWRVcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tb3ZlZERvd24gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soZXZlbnQ6IEV2ZW50IHwgYW55LCBpdGVtOiBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBsaXN0VHlwZTogbnVtYmVyLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGl0ZW1JZD86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJbkxpc3QoaXRlbSwgc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIGlmIChpdGVtSWQpIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4ID0gaXRlbUlkO1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSBpbmRleCAhPSAtMTtcbiAgICAgICAgbGV0IG1ldGFTZWxlY3Rpb24gPSB0aGlzLml0ZW1Ub3VjaGVkID8gZmFsc2UgOiB0aGlzLm1ldGFLZXlTZWxlY3Rpb247XG5cbiAgICAgICAgaWYgKG1ldGFTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGxldCBtZXRhS2V5ID0gKDxLZXlib2FyZEV2ZW50PmV2ZW50KS5tZXRhS2V5IHx8ICg8S2V5Ym9hcmRFdmVudD5ldmVudCkuY3RybEtleSB8fCAoPEtleWJvYXJkRXZlbnQ+ZXZlbnQpLnNoaWZ0S2V5O1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgbWV0YUtleSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZEl0ZW1zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTsgLy8gQ3JlYXRpbmcgYSBuZXcgYXJyYXkgd2l0aG91dCB0aGUgc2VsZWN0ZWQgaXRlbVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgY2FsbGJhY2suZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcblxuICAgICAgICB0aGlzLml0ZW1Ub3VjaGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25PcHRpb25Nb3VzZURvd24oaW5kZXgsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkW2xpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUID8gJ3NvdXJjZUxpc3QnIDogJ3RhcmdldExpc3QnXSA9IHRydWU7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4ID0gaW5kZXg7XG4gICAgfVxuXG4gICAgb25Tb3VyY2VJdGVtRGJsQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1vdmVSaWdodCgpO1xuICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uVGFyZ2V0SXRlbURibENsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tb3ZlTGVmdCgpO1xuICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uRmlsdGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBxdWVyeSA9ICg8SFRNTElucHV0RWxlbWVudD5ldmVudC50YXJnZXQpLnZhbHVlO1xuICAgICAgICBpZiAobGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHRoaXMuZmlsdGVyU291cmNlKHF1ZXJ5KTtcbiAgICAgICAgZWxzZSBpZiAobGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpIHRoaXMuZmlsdGVyVGFyZ2V0KHF1ZXJ5KTtcbiAgICB9XG5cbiAgICBmaWx0ZXJTb3VyY2UodmFsdWU6IGFueSA9ICcnKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgPSB2YWx1ZS50cmltKCkudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICB0aGlzLmZpbHRlcig8YW55W10+dGhpcy5zb3VyY2UsIHRoaXMuU09VUkNFX0xJU1QpO1xuICAgIH1cblxuICAgIGZpbHRlclRhcmdldCh2YWx1ZTogYW55ID0gJycpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCA9IHZhbHVlLnRyaW0oKS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnRhcmdldCwgdGhpcy5UQVJHRVRfTElTVCk7XG4gICAgfVxuXG4gICAgZmlsdGVyKGRhdGE6IGFueVtdLCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBzZWFyY2hGaWVsZHMgPSAoPHN0cmluZz50aGlzLmZpbHRlckJ5KS5zcGxpdCgnLCcpO1xuXG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIoZGF0YSwgc2VhcmNoRmllbGRzLCB0aGlzLmZpbHRlclZhbHVlU291cmNlLCB0aGlzLmZpbHRlck1hdGNoTW9kZSwgdGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5vblNvdXJjZUZpbHRlci5lbWl0KHsgcXVlcnk6IHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UsIHZhbHVlOiB0aGlzLnZpc2libGVPcHRpb25zU291cmNlIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGxpc3RUeXBlID09PSB0aGlzLlRBUkdFVF9MSVNUKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0ID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcihkYXRhLCBzZWFyY2hGaWVsZHMsIHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQsIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLm9uVGFyZ2V0RmlsdGVyLmVtaXQoeyBxdWVyeTogdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCwgdmFsdWU6IHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0l0ZW1WaXNpYmxlKGl0ZW06IGFueSwgbGlzdFR5cGU6IG51bWJlcik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAobGlzdFR5cGUgPT0gdGhpcy5TT1VSQ0VfTElTVCkgcmV0dXJuIHRoaXMuaXNWaXNpYmxlSW5MaXN0KDxhbnlbXT50aGlzLnZpc2libGVPcHRpb25zU291cmNlLCBpdGVtLCA8c3RyaW5nPnRoaXMuZmlsdGVyVmFsdWVTb3VyY2UpO1xuICAgICAgICBlbHNlIHJldHVybiB0aGlzLmlzVmlzaWJsZUluTGlzdCg8YW55W10+dGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCwgaXRlbSwgPHN0cmluZz50aGlzLmZpbHRlclZhbHVlVGFyZ2V0KTtcbiAgICB9XG5cbiAgICBpc0VtcHR5KGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGxpc3RUeXBlID09IHRoaXMuU09VUkNFX0xJU1QpIHJldHVybiB0aGlzLmZpbHRlclZhbHVlU291cmNlID8gIXRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UgfHwgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZS5sZW5ndGggPT09IDAgOiAhdGhpcy5zb3VyY2UgfHwgdGhpcy5zb3VyY2UubGVuZ3RoID09PSAwO1xuICAgICAgICBlbHNlIHJldHVybiB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID8gIXRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgfHwgdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldC5sZW5ndGggPT09IDAgOiAhdGhpcy50YXJnZXQgfHwgdGhpcy50YXJnZXQubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIGlzVmlzaWJsZUluTGlzdChkYXRhOiBhbnlbXSwgaXRlbTogYW55LCBmaWx0ZXJWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChmaWx0ZXJWYWx1ZSAmJiBmaWx0ZXJWYWx1ZS50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSA9PSBkYXRhW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtVG91Y2hFbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLml0ZW1Ub3VjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRCeUluZGV4SW5MaXN0KGl0ZW1zOiBhbnlbXSwgbGlzdDogYW55KSB7XG4gICAgICAgIHJldHVybiBpdGVtcy5zb3J0KChpdGVtMSwgaXRlbTIpID0+IGZpbmRJbmRleEluTGlzdChpdGVtMSwgbGlzdCkgLSBmaW5kSW5kZXhJbkxpc3QoaXRlbTIsIGxpc3QpKTtcbiAgICB9XG5cbiAgICB2aWV3Q2hpbGRNYXJrRm9yQ2hlY2soKSB7XG4gICAgICAgIHRoaXMubGlzdFZpZXdTb3VyY2VDaGlsZC5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5saXN0Vmlld1RhcmdldENoaWxkLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG1vdmVVcChsaXN0RWxlbWVudDogYW55LCBsaXN0OiBhbnlbXSwgc2VsZWN0ZWRJdGVtczogYW55W10sIGNhbGxiYWNrOiBFdmVudEVtaXR0ZXI8YW55PiwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc29ydEJ5SW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtcywgbGlzdCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IGZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vdmVkSXRlbSA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgbGlzdFtzZWxlY3RlZEl0ZW1JbmRleCAtIDFdID0gbW92ZWRJdGVtO1xuICAgICAgICAgICAgICAgICAgICBsaXN0W3NlbGVjdGVkSXRlbUluZGV4XSA9IHRlbXA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZHJvcCAmJiAoKHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgJiYgbGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHx8ICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ICYmIGxpc3RUeXBlID09PSB0aGlzLlRBUkdFVF9MSVNUKSkpIHRoaXMuZmlsdGVyKGxpc3QsIGxpc3RUeXBlKTtcblxuICAgICAgICAgICAgdGhpcy5tb3ZlZFVwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQgPSBsaXN0RWxlbWVudDtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgICAgIHRoaXMudmlld0NoaWxkTWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlVG9wKGxpc3RFbGVtZW50OiBhbnksIGxpc3Q6IGFueVtdLCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zb3J0QnlJbmRleEluTGlzdChzZWxlY3RlZEl0ZW1zLCBsaXN0KTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RlZEl0ZW1zW2ldO1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleDogbnVtYmVyID0gZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgbGlzdCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZWRJdGVtID0gbGlzdC5zcGxpY2Uoc2VsZWN0ZWRJdGVtSW5kZXgsIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0LnVuc2hpZnQobW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdkcm9wICYmICgodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSAmJiBsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkgfHwgKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgJiYgbGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpKSkgdGhpcy5maWx0ZXIobGlzdCwgbGlzdFR5cGUpO1xuXG4gICAgICAgICAgICBsaXN0RWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgICAgICAgY2FsbGJhY2suZW1pdCh7IGl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xuICAgICAgICAgICAgdGhpcy52aWV3Q2hpbGRNYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVEb3duKGxpc3RFbGVtZW50OiBhbnksIGxpc3Q6IGFueVtdLCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zb3J0QnlJbmRleEluTGlzdChzZWxlY3RlZEl0ZW1zLCBsaXN0KTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGVkSXRlbXNbaV07XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbUluZGV4OiBudW1iZXIgPSBmaW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCBsaXN0KTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCAhPSBsaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vdmVkSXRlbSA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXggKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgbGlzdFtzZWxlY3RlZEl0ZW1JbmRleCArIDFdID0gbW92ZWRJdGVtO1xuICAgICAgICAgICAgICAgICAgICBsaXN0W3NlbGVjdGVkSXRlbUluZGV4XSA9IHRlbXA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZHJvcCAmJiAoKHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgJiYgbGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHx8ICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ICYmIGxpc3RUeXBlID09PSB0aGlzLlRBUkdFVF9MSVNUKSkpIHRoaXMuZmlsdGVyKGxpc3QsIGxpc3RUeXBlKTtcblxuICAgICAgICAgICAgdGhpcy5tb3ZlZERvd24gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5yZW9yZGVyZWRMaXN0RWxlbWVudCA9IGxpc3RFbGVtZW50O1xuICAgICAgICAgICAgY2FsbGJhY2suZW1pdCh7IGl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xuICAgICAgICAgICAgdGhpcy52aWV3Q2hpbGRNYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVCb3R0b20obGlzdEVsZW1lbnQ6IGFueSwgbGlzdDogYW55W10sIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNvcnRCeUluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbXMsIGxpc3QpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IGZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IGxpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZWRJdGVtID0gbGlzdC5zcGxpY2Uoc2VsZWN0ZWRJdGVtSW5kZXgsIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2gobW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdkcm9wICYmICgodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSAmJiBsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkgfHwgKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgJiYgbGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpKSkgdGhpcy5maWx0ZXIobGlzdCwgbGlzdFR5cGUpO1xuXG4gICAgICAgICAgICBsaXN0RWxlbWVudC5zY3JvbGxUb3AgPSBsaXN0RWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgICAgICBjYWxsYmFjay5lbWl0KHsgaXRlbXM6IHNlbGVjdGVkSXRlbXMgfSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZVJpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlICYmIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZVtpXTtcbiAgICAgICAgICAgICAgICBpZiAoZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy50YXJnZXQpID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0Py5wdXNoKHRoaXMuc291cmNlPy5zcGxpY2UoZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy5zb3VyY2UpLCAxKVswXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2U/LmluY2x1ZGVzKHNlbGVjdGVkSXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2Uuc3BsaWNlKGZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vbk1vdmVUb1RhcmdldC5lbWl0KHtcbiAgICAgICAgICAgICAgICBpdGVtczogdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQsIC4uLnRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZVRhcmdldCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnRhcmdldCwgdGhpcy5UQVJHRVRfTElTVCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZUFsbFJpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5zb3VyY2UpIHtcbiAgICAgICAgICAgIGxldCBtb3ZlZEl0ZW1zID0gW107XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zb3VyY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0l0ZW1WaXNpYmxlKHRoaXMuc291cmNlW2ldLCB0aGlzLlNPVVJDRV9MSVNUKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVtb3ZlZEl0ZW0gPSB0aGlzLnNvdXJjZS5zcGxpY2UoaSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0Py5wdXNoKHJlbW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgbW92ZWRJdGVtcy5wdXNoKHJlbW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25Nb3ZlQWxsVG9UYXJnZXQuZW1pdCh7XG4gICAgICAgICAgICAgICAgaXRlbXM6IG1vdmVkSXRlbXNcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0ID0gWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCwgLi4udGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoPGFueVtdPnRoaXMudGFyZ2V0LCB0aGlzLlRBUkdFVF9MSVNUKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy52aWV3Q2hpbGRNYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVMZWZ0KCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0ICYmIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldFtpXTtcbiAgICAgICAgICAgICAgICBpZiAoZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy5zb3VyY2UpID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlPy5wdXNoKHRoaXMudGFyZ2V0Py5zcGxpY2UoZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy50YXJnZXQpLCAxKVswXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQ/LmluY2x1ZGVzKHNlbGVjdGVkSXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQuc3BsaWNlKGZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQpLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vbk1vdmVUb1NvdXJjZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBpdGVtczogdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UsIC4uLnRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnNvdXJjZSwgdGhpcy5TT1VSQ0VfTElTVCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZUFsbExlZnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgbGV0IG1vdmVkSXRlbXMgPSBbXTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRhcmdldC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSXRlbVZpc2libGUodGhpcy50YXJnZXRbaV0sIHRoaXMuVEFSR0VUX0xJU1QpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZW1vdmVkSXRlbSA9IHRoaXMudGFyZ2V0LnNwbGljZShpLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2U/LnB1c2gocmVtb3ZlZEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBtb3ZlZEl0ZW1zLnB1c2gocmVtb3ZlZEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uTW92ZUFsbFRvU291cmNlLmVtaXQoe1xuICAgICAgICAgICAgICAgIGl0ZW1zOiBtb3ZlZEl0ZW1zXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UsIC4uLnRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnNvdXJjZSwgdGhpcy5TT1VSQ0VfTElTVCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMudmlld0NoaWxkTWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKGl0ZW06IGFueSwgc2VsZWN0ZWRJdGVtczogYW55W10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluZGV4SW5MaXN0KGl0ZW0sIHNlbGVjdGVkSXRlbXMpICE9IC0xO1xuICAgIH1cblxuICAgIGZpbmRJbmRleEluTGlzdChpdGVtOiBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGZpbmRJbmRleEluTGlzdChpdGVtLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPiwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBsZXQgaXNUcmFuc2ZlciA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyICE9PSBldmVudC5jb250YWluZXI7XG4gICAgICAgIGxldCBkcm9wSW5kZXhlcyA9IHRoaXMuZ2V0RHJvcEluZGV4ZXMoZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4LCBsaXN0VHlwZSwgaXNUcmFuc2ZlciwgZXZlbnQuaXRlbS5kYXRhKTtcblxuICAgICAgICBpZiAobGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHtcbiAgICAgICAgICAgIGlmIChpc1RyYW5zZmVyKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIGRyb3BJbmRleGVzLnByZXZpb3VzSW5kZXgsIGRyb3BJbmRleGVzLmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbUluZGV4ID0gZmluZEluZGV4SW5MaXN0KGV2ZW50Lml0ZW0uZGF0YSwgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQuc3BsaWNlKHNlbGVjdGVkSXRlbUluZGV4LCAxKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQucHVzaChldmVudC5pdGVtLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQpIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQuc3BsaWNlKGV2ZW50LnByZXZpb3VzSW5kZXgsIDEpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vdmVUb1NvdXJjZS5lbWl0KHsgaXRlbXM6IFtldmVudC5pdGVtLmRhdGFdIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGRyb3BJbmRleGVzLnByZXZpb3VzSW5kZXgsIGRyb3BJbmRleGVzLmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNvdXJjZVJlb3JkZXIuZW1pdCh7IGl0ZW1zOiBbZXZlbnQuaXRlbS5kYXRhXSB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcig8YW55W10+dGhpcy5zb3VyY2UsIHRoaXMuU09VUkNFX0xJU1QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzVHJhbnNmZXIpIHtcbiAgICAgICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgZHJvcEluZGV4ZXMucHJldmlvdXNJbmRleCwgZHJvcEluZGV4ZXMuY3VycmVudEluZGV4KTtcblxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleCA9IGZpbmRJbmRleEluTGlzdChldmVudC5pdGVtLmRhdGEsIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlLnNwbGljZShzZWxlY3RlZEl0ZW1JbmRleCwgMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0LnB1c2goZXZlbnQuaXRlbS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVPcHRpb25zU291cmNlKSB0aGlzLnZpc2libGVPcHRpb25zU291cmNlLnNwbGljZShldmVudC5wcmV2aW91c0luZGV4LCAxKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub25Nb3ZlVG9UYXJnZXQuZW1pdCh7IGl0ZW1zOiBbZXZlbnQuaXRlbS5kYXRhXSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBkcm9wSW5kZXhlcy5wcmV2aW91c0luZGV4LCBkcm9wSW5kZXhlcy5jdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25UYXJnZXRSZW9yZGVyLmVtaXQoeyBpdGVtczogW2V2ZW50Lml0ZW0uZGF0YV0gfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoPGFueVtdPnRoaXMudGFyZ2V0LCB0aGlzLlRBUkdFVF9MSVNUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGlzdEZvY3VzKGV2ZW50LCBsaXN0VHlwZSkge1xuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25MaXN0Qmx1cihldmVudCwgbGlzdFR5cGUpIHtcbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgZ2V0TGlzdEVsZW1lbnQobGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gbGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QgPyB0aGlzLmxpc3RWaWV3U291cmNlQ2hpbGQ/LmVsLm5hdGl2ZUVsZW1lbnQgOiB0aGlzLmxpc3RWaWV3VGFyZ2V0Q2hpbGQ/LmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0TGlzdEl0ZW1zKGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGxpc3RFbGVtZXQgPSB0aGlzLmdldExpc3RFbGVtZW50KGxpc3RUeXBlKTtcblxuICAgICAgICByZXR1cm4gZmluZChsaXN0RWxlbWV0LCAnbGkucC1waWNrbGlzdC1pdGVtJyk7XG4gICAgfVxuXG4gICAgZ2V0TGF0ZXN0U2VsZWN0ZWRWaXNpYmxlT3B0aW9uSW5kZXgodmlzaWJsZUxpc3Q6IGFueVtdLCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGxhdGVzdFNlbGVjdGVkSXRlbSA9IFsuLi5zZWxlY3RlZEl0ZW1zXS5yZXZlcnNlKCkuZmluZCgoaXRlbSkgPT4gdmlzaWJsZUxpc3QuaW5jbHVkZXMoaXRlbSkpO1xuICAgICAgICByZXR1cm4gbGF0ZXN0U2VsZWN0ZWRJdGVtICE9PSB1bmRlZmluZWQgPyB2aXNpYmxlTGlzdC5pbmRleE9mKGxhdGVzdFNlbGVjdGVkSXRlbSkgOiAtMTtcbiAgICB9XG5cbiAgICBnZXRWaXNpYmxlTGlzdChsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UgJiYgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZS5sZW5ndGggPiAwID8gdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA6IHRoaXMuc291cmNlICYmIHRoaXMuc291cmNlLmxlbmd0aCA+IDAgPyB0aGlzLnNvdXJjZSA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCAmJiB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0Lmxlbmd0aCA+IDAgPyB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0IDogdGhpcy50YXJnZXQgJiYgdGhpcy50YXJnZXQubGVuZ3RoID4gMCA/IHRoaXMudGFyZ2V0IDogbnVsbDtcbiAgICB9XG5cbiAgICBzZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlOiBudW1iZXIsIHNlbGVjdGVkSXRlbXM6IGFueVtdKSB7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IHNlbGVjdGVkSXRlbXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kTmV4dE9wdGlvbkluZGV4KGluZGV4OiBudW1iZXIsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcyhsaXN0VHlwZSk7XG5cbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID0gWy4uLml0ZW1zXS5maW5kSW5kZXgoKGxpbms6IGFueSkgPT4gbGluay5pZCA9PT0gaW5kZXgpO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCArIDEgOiAwO1xuICAgIH1cblxuICAgIGZpbmRQcmV2T3B0aW9uSW5kZXgoaW5kZXg6IG51bWJlciwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0TGlzdEl0ZW1zKGxpc3RUeXBlKTtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID0gWy4uLml0ZW1zXS5maW5kSW5kZXgoKGxpbms6IGFueSkgPT4gbGluay5pZCA9PT0gaW5kZXgpO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCAtIDEgOiAwO1xuICAgIH1cblxuICAgIG9uSXRlbUtleURvd24oZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dEb3duS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dVcEtleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhvbWVLZXkoZXZlbnQsIHNlbGVjdGVkSXRlbXMsIGNhbGxiYWNrLCBsaXN0VHlwZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVuZEtleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMub25FbnRlcktleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgICAgIHRoaXMub25TcGFjZUtleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnS2V5QSc6XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlLCB0aGlzLmdldFZpc2libGVMaXN0KGxpc3RUeXBlKSk7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGb2N1c2VkT3B0aW9uKGluZGV4OiBudW1iZXIsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKGxpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSAmJiB0aGlzLnZpc2libGVPcHRpb25zU291cmNlLmxlbmd0aCA/IHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2VbaW5kZXhdIDogdGhpcy5zb3VyY2UgJiYgdGhpcy5zb3VyY2UubGVuZ3RoID8gdGhpcy5zb3VyY2VbaW5kZXhdIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0ICYmIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQubGVuZ3RoID8gdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldFtpbmRleF0gOiB0aGlzLnRhcmdldCAmJiB0aGlzLnRhcmdldC5sZW5ndGggPyB0aGlzLnRhcmdldFtpbmRleF0gOiBudWxsO1xuICAgIH1cblxuICAgIGNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChpbmRleCwgbGlzdFR5cGUpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcyhsaXN0VHlwZSk7XG4gICAgICAgIGlmIChpdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IG9yZGVyID0gaW5kZXggPj0gaXRlbXMubGVuZ3RoID8gaXRlbXMubGVuZ3RoIC0gMSA6IGluZGV4IDwgMCA/IDAgOiBpbmRleDtcblxuICAgICAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXggPSBpdGVtc1tvcmRlcl0uZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uID0gdGhpcy5nZXRGb2N1c2VkT3B0aW9uKG9yZGVyLCBsaXN0VHlwZSk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEluVmlldyhpdGVtc1tvcmRlcl0uZ2V0QXR0cmlidXRlKCdpZCcpLCBsaXN0VHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzY3JvbGxJblZpZXcoaWQsIGxpc3RUeXBlKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBmaW5kU2luZ2xlKHRoaXMuZ2V0TGlzdEVsZW1lbnQobGlzdFR5cGUpLCBgbGlbaWQ9XCIke2lkfVwiXWApO1xuXG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3ICYmIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnLCBpbmxpbmU6ICdzdGFydCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93RG93bktleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uSW5kZXggPSB0aGlzLmZpbmROZXh0T3B0aW9uSW5kZXgodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgsIGxpc3RUeXBlKTtcblxuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChvcHRpb25JbmRleCwgbGlzdFR5cGUpO1xuXG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93VXBLZXkoZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkluZGV4ID0gdGhpcy5maW5kUHJldk9wdGlvbkluZGV4KHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LCBsaXN0VHlwZSk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgob3B0aW9uSW5kZXgsIGxpc3RUeXBlKTtcblxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMub25FbnRlcktleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FbnRlcktleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5vbkl0ZW1DbGljayhldmVudCwgdGhpcy5mb2N1c2VkT3B0aW9uLCBzZWxlY3RlZEl0ZW1zLCBsaXN0VHlwZSwgY2FsbGJhY2spO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uU3BhY2VLZXkoZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgdmlzaWJsZUxpc3QgPSB0aGlzLmdldFZpc2libGVMaXN0KGxpc3RUeXBlKTtcbiAgICAgICAgICAgIGxldCBsYXN0U2VsZWN0ZWRJbmRleCA9IHRoaXMuZ2V0TGF0ZXN0U2VsZWN0ZWRWaXNpYmxlT3B0aW9uSW5kZXgodmlzaWJsZUxpc3QsIHNlbGVjdGVkSXRlbXMpO1xuXG4gICAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZpbmRJbmRleEluTGlzdCh0aGlzLmZvY3VzZWRPcHRpb24sIHZpc2libGVMaXN0KTtcblxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBbLi4udmlzaWJsZUxpc3Quc2xpY2UoTWF0aC5taW4obGFzdFNlbGVjdGVkSW5kZXgsIGZvY3VzZWRJbmRleCksIE1hdGgubWF4KGxhc3RTZWxlY3RlZEluZGV4LCBmb2N1c2VkSW5kZXgpICsgMSldO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uTGlzdChsaXN0VHlwZSwgc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICAgICAgICAgICAgICBjYWxsYmFjay5lbWl0KHsgaXRlbXM6IHNlbGVjdGVkSXRlbXMgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgIH1cblxuICAgIG9uSG9tZUtleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGxldCB2aXNpYmxlTGlzdCA9IHRoaXMuZ2V0VmlzaWJsZUxpc3QobGlzdFR5cGUpO1xuICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZpbmRJbmRleEluTGlzdCh0aGlzLmZvY3VzZWRPcHRpb24sIHZpc2libGVMaXN0KTtcblxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IFsuLi52aXNpYmxlTGlzdC5zbGljZSgwLCBmb2N1c2VkSW5kZXggKyAxKV07XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvbkxpc3QobGlzdFR5cGUsIHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICAgICAgY2FsbGJhY2suZW1pdCh7IGl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoMCwgbGlzdFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkVuZEtleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHZpc2libGVMaXN0ID0gdGhpcy5nZXRWaXNpYmxlTGlzdChsaXN0VHlwZSk7XG4gICAgICAgIGxldCBsYXN0SW5kZXggPSB2aXNpYmxlTGlzdCAmJiB2aXNpYmxlTGlzdC5sZW5ndGggPiAwID8gdmlzaWJsZUxpc3QubGVuZ3RoIC0gMSA6IG51bGw7XG4gICAgICAgIGlmIChsYXN0SW5kZXggPT09IG51bGwpIHJldHVybjtcblxuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZpbmRJbmRleEluTGlzdCh0aGlzLmZvY3VzZWRPcHRpb24sIHZpc2libGVMaXN0KTtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBbLi4udmlzaWJsZUxpc3Quc2xpY2UoZm9jdXNlZEluZGV4LCBsYXN0SW5kZXgpXTtcblxuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGxhc3RJbmRleCwgbGlzdFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBnZXREcm9wSW5kZXhlcyhmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyLCBkcm9wcGVkTGlzdDogbnVtYmVyLCBpc1RyYW5zZmVyOiBib29sZWFuLCBkYXRhOiBhbnlbXSB8IGFueSkge1xuICAgICAgICBsZXQgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4O1xuXG4gICAgICAgIGlmIChkcm9wcGVkTGlzdCA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9IGlzVHJhbnNmZXIgPyAodGhpcy5maWx0ZXJWYWx1ZVRhcmdldCA/IGZpbmRJbmRleEluTGlzdChkYXRhLCB0aGlzLnRhcmdldCkgOiBmcm9tSW5kZXgpIDogdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSA/IGZpbmRJbmRleEluTGlzdChkYXRhLCB0aGlzLnNvdXJjZSkgOiBmcm9tSW5kZXg7XG4gICAgICAgICAgICBjdXJyZW50SW5kZXggPSB0aGlzLmZpbHRlclZhbHVlU291cmNlID8gdGhpcy5maW5kRmlsdGVyZWRDdXJyZW50SW5kZXgoPGFueVtdPnRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UsIHRvSW5kZXgsIHRoaXMuc291cmNlKSA6IHRvSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcmV2aW91c0luZGV4ID0gaXNUcmFuc2ZlciA/ICh0aGlzLmZpbHRlclZhbHVlU291cmNlID8gZmluZEluZGV4SW5MaXN0KGRhdGEsIHRoaXMuc291cmNlKSA6IGZyb21JbmRleCkgOiB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID8gZmluZEluZGV4SW5MaXN0KGRhdGEsIHRoaXMudGFyZ2V0KSA6IGZyb21JbmRleDtcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgPyB0aGlzLmZpbmRGaWx0ZXJlZEN1cnJlbnRJbmRleCg8YW55W10+dGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCwgdG9JbmRleCwgdGhpcy50YXJnZXQpIDogdG9JbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCB9O1xuICAgIH1cblxuICAgIGZpbmRGaWx0ZXJlZEN1cnJlbnRJbmRleCh2aXNpYmxlT3B0aW9uczogYW55W10sIGluZGV4OiBudW1iZXIsIG9wdGlvbnM6IGFueSkge1xuICAgICAgICBpZiAodmlzaWJsZU9wdGlvbnMubGVuZ3RoID09PSBpbmRleCkge1xuICAgICAgICAgICAgbGV0IHRvSW5kZXggPSBmaW5kSW5kZXhJbkxpc3QodmlzaWJsZU9wdGlvbnNbaW5kZXggLSAxXSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiB0b0luZGV4ICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmaW5kSW5kZXhJbkxpc3QodmlzaWJsZU9wdGlvbnNbaW5kZXhdLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2V0U291cmNlRmlsdGVyKCkge1xuICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zU291cmNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc291cmNlRmlsdGVyVmlld0NoaWxkICYmICgoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zb3VyY2VGaWx0ZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJyk7XG4gICAgfVxuXG4gICAgcmVzZXRUYXJnZXRGaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy50YXJnZXRGaWx0ZXJWaWV3Q2hpbGQgJiYgKCg8SFRNTElucHV0RWxlbWVudD50aGlzLnRhcmdldEZpbHRlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnKTtcbiAgICB9XG5cbiAgICByZXNldEZpbHRlcigpIHtcbiAgICAgICAgdGhpcy5yZXNldFNvdXJjZUZpbHRlcigpO1xuICAgICAgICB0aGlzLnJlc2V0VGFyZ2V0RmlsdGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdE1lZGlhKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5tZWRpYSA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubWF0Y2hNZWRpYShgKG1heC13aWR0aDogJHt0aGlzLmJyZWFrcG9pbnR9KWApO1xuICAgICAgICAgICAgdGhpcy52aWV3Q2hhbmdlZCA9IHRoaXMubWVkaWEubWF0Y2hlcztcbiAgICAgICAgICAgIHRoaXMuYmluZE1lZGlhQ2hhbmdlTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3lNZWRpYSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmRNZWRpYUNoYW5nZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgYmluZE1lZGlhQ2hhbmdlTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lZGlhICYmICF0aGlzLm1lZGlhQ2hhbmdlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubWVkaWFDaGFuZ2VMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMubWVkaWEsICdjaGFuZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdDaGFuZ2VkID0gZXZlbnQubWF0Y2hlcztcblxuICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZE1lZGlhQ2hhbmdlTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lZGlhQ2hhbmdlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubWVkaWFDaGFuZ2VMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5tZWRpYUNoYW5nZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZVN0eWxlKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSwgdGhpcy5pZCwgJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuc3R5bGVFbGVtZW50LCAndHlwZScsICd0ZXh0L2NzcycpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgaW5uZXJIVE1MID0gYFxuICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICR7dGhpcy5icmVha3BvaW50fSkge1xuICAgICAgICAgICAgICAgICAgICAucC1waWNrbGlzdFske3RoaXMuaWR9XSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLnAtcGlja2xpc3RbJHt0aGlzLmlkfV0gLnAtcGlja2xpc3QtY29udHJvbHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1gO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLnN0eWxlRWxlbWVudCwgJ2lubmVySFRNTCcsIGlubmVySFRNTCk7XG4gICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlKHRoaXMuc3R5bGVFbGVtZW50LCAnbm9uY2UnLCB0aGlzLmNvbmZpZz8uY3NwKCk/Lm5vbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNvdXJjZU1vdmVEaXNhYmxlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGFyZ2V0TW92ZURpc2FibGVkKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlUmlnaHREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgaXNFbXB0eSh0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UpO1xuICAgIH1cblxuICAgIG1vdmVMZWZ0RGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8IGlzRW1wdHkodGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0KTtcbiAgICB9XG5cbiAgICBtb3ZlQWxsUmlnaHREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgaXNFbXB0eSh0aGlzLnNvdXJjZSk7XG4gICAgfVxuXG4gICAgbW92ZUFsbExlZnREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgaXNFbXB0eSh0aGlzLnRhcmdldCk7XG4gICAgfVxuXG4gICAgZGVzdHJveVN0eWxlKCkge1xuICAgICAgICBpZiAodGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICBgYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdHlsZSgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3lNZWRpYSgpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbUGlja0xpc3QsIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1BpY2tMaXN0LCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tMaXN0TW9kdWxlIHt9XG4iXX0=
|