@wavemaker/app-ng-runtime 11.14.1-rc.6311 → 11.14.2-rc.6311
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/components/advanced/carousel/bundles/index.umd.js +15 -1
- package/components/advanced/carousel/carousel.directive.d.ts +1 -0
- package/components/advanced/carousel/esm2022/carousel.directive.mjs +16 -2
- package/components/advanced/carousel/fesm2022/index.mjs +15 -1
- package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/bundles/index.umd.js +24 -3
- package/components/advanced/login/esm2022/login.component.mjs +25 -4
- package/components/advanced/login/fesm2022/index.mjs +24 -3
- package/components/advanced/login/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/login.component.d.ts +5 -2
- package/components/base/bundles/index.umd.js +323 -28
- package/components/base/directives/show-in-device.directive.d.ts +2 -1
- package/components/base/esm2022/directives/show-in-device.directive.mjs +22 -4
- package/components/base/esm2022/pipes/custom-pipes.mjs +1 -1
- package/components/base/esm2022/utils/widget-utils.mjs +3 -3
- package/components/base/esm2022/widgets/common/base/base-container.component.mjs +27 -1
- package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +18 -1
- package/components/base/esm2022/widgets/common/base/base.component.mjs +68 -7
- package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +9 -1
- package/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +44 -11
- package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +20 -1
- package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +26 -1
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +44 -4
- package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +16 -1
- package/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +22 -1
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +7 -2
- package/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +5 -3
- package/components/base/esm2022/widgets/framework/widget-registry.mjs +6 -3
- package/components/base/fesm2022/index.mjs +319 -26
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/widgets/common/base/base-container.component.d.ts +3 -2
- package/components/base/widgets/common/base/base-field-validations.d.ts +1 -0
- package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +3 -2
- package/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +6 -2
- package/components/base/widgets/common/base/partial-container.directive.d.ts +3 -2
- package/components/base/widgets/common/item-template/item-template.directive.d.ts +3 -2
- package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
- package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +3 -2
- package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +3 -2
- package/components/basic/anchor/bundles/index.umd.js +13 -1
- package/components/basic/anchor/esm2022/anchor.component.mjs +14 -2
- package/components/basic/anchor/fesm2022/index.mjs +13 -1
- package/components/basic/anchor/fesm2022/index.mjs.map +1 -1
- package/components/basic/html/bundles/index.umd.js +13 -1
- package/components/basic/html/esm2022/html.directive.mjs +14 -2
- package/components/basic/html/fesm2022/index.mjs +13 -1
- package/components/basic/html/fesm2022/index.mjs.map +1 -1
- package/components/basic/label/bundles/index.umd.js +17 -1
- package/components/basic/label/esm2022/label.directive.mjs +18 -2
- package/components/basic/label/fesm2022/index.mjs +17 -1
- package/components/basic/label/fesm2022/index.mjs.map +1 -1
- package/components/basic/label/label.directive.d.ts +3 -2
- package/components/basic/progress/progress-circle/bundles/index.umd.js +10 -0
- package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +11 -1
- package/components/basic/progress/progress-circle/fesm2022/index.mjs +10 -0
- package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -1
- package/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -2
- package/components/basic/search/bundles/index.umd.js +27 -1
- package/components/basic/search/esm2022/scrollable.directive.mjs +11 -2
- package/components/basic/search/esm2022/search.component.mjs +18 -1
- package/components/basic/search/fesm2022/index.mjs +27 -1
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/scrollable.directive.d.ts +4 -2
- package/components/basic/search/search.component.d.ts +3 -2
- package/components/basic/spinner/bundles/index.umd.js +9 -1
- package/components/basic/spinner/esm2022/spinner.component.mjs +10 -2
- package/components/basic/spinner/fesm2022/index.mjs +9 -1
- package/components/basic/spinner/fesm2022/index.mjs.map +1 -1
- package/components/basic/spinner/spinner.component.d.ts +4 -2
- package/components/chart/bundles/index.umd.js +21 -3
- package/components/chart/esm2022/chart.component.mjs +22 -4
- package/components/chart/fesm2022/index.mjs +21 -3
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +3 -2
- package/components/containers/accordion/accordion.directive.d.ts +5 -2
- package/components/containers/accordion/bundles/index.umd.js +49 -2
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +10 -1
- package/components/containers/accordion/esm2022/accordion.directive.mjs +41 -3
- package/components/containers/accordion/fesm2022/index.mjs +49 -2
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/bundles/index.umd.js +13 -0
- package/components/containers/panel/esm2022/panel.component.mjs +14 -1
- package/components/containers/panel/fesm2022/index.mjs +13 -0
- package/components/containers/panel/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/panel.component.d.ts +3 -2
- package/components/containers/tabs/bundles/index.umd.js +54 -2
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +10 -1
- package/components/containers/tabs/esm2022/tabs.component.mjs +46 -3
- package/components/containers/tabs/fesm2022/index.mjs +54 -2
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +3 -2
- package/components/containers/tabs/tabs.component.d.ts +5 -2
- package/components/containers/wizard/bundles/index.umd.js +47 -3
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +16 -3
- package/components/containers/wizard/esm2022/wizard.component.mjs +33 -2
- package/components/containers/wizard/fesm2022/index.mjs +47 -3
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +3 -2
- package/components/containers/wizard/wizard.component.d.ts +4 -2
- package/components/data/card/bundles/index.umd.js +17 -1
- package/components/data/card/card-content/card-content.component.d.ts +3 -2
- package/components/data/card/card.component.d.ts +4 -2
- package/components/data/card/esm2022/card-content/card-content.component.mjs +6 -1
- package/components/data/card/esm2022/card.component.mjs +13 -2
- package/components/data/card/fesm2022/index.mjs +17 -1
- package/components/data/card/fesm2022/index.mjs.map +1 -1
- package/components/data/form/bundles/index.umd.js +92 -0
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +7 -1
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +28 -1
- package/components/data/form/esm2022/form-widget.directive.mjs +8 -1
- package/components/data/form/esm2022/form.component.mjs +27 -1
- package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +7 -1
- package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +12 -1
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +10 -1
- package/components/data/form/fesm2022/index.mjs +92 -0
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/form-action/form-action.directive.d.ts +3 -2
- package/components/data/form/form-field/form-field.directive.d.ts +3 -2
- package/components/data/form/form-widget.directive.d.ts +3 -2
- package/components/data/form/live-actions/live-actions.directive.d.ts +3 -1
- package/components/data/form/live-filter/live-filter.directive.d.ts +3 -1
- package/components/data/form/live-form/live-form.directive.d.ts +3 -1
- package/components/data/list/bundles/index.umd.js +180 -17
- package/components/data/list/esm2022/list-item.directive.mjs +95 -11
- package/components/data/list/esm2022/list.component.mjs +87 -8
- package/components/data/list/fesm2022/index.mjs +180 -17
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/list/list-item.directive.d.ts +7 -2
- package/components/data/list/list.component.d.ts +3 -0
- package/components/data/live-table/bundles/index.umd.js +13 -1
- package/components/data/live-table/esm2022/live-table.component.mjs +14 -2
- package/components/data/live-table/fesm2022/index.mjs +13 -1
- package/components/data/live-table/fesm2022/index.mjs.map +1 -1
- package/components/data/live-table/live-table.component.d.ts +4 -2
- package/components/data/pagination/bundles/index.umd.js +57 -4
- package/components/data/pagination/esm2022/pagination.component.mjs +58 -5
- package/components/data/pagination/fesm2022/index.mjs +57 -4
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/pagination.component.d.ts +4 -2
- package/components/data/table/bundles/index.umd.js +311 -12
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +8 -1
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +107 -3
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +9 -1
- package/components/data/table/esm2022/table-cud.directive.mjs +8 -2
- package/components/data/table/esm2022/table-filter.directive.mjs +12 -2
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +8 -1
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +8 -1
- package/components/data/table/esm2022/table.component.mjs +159 -9
- package/components/data/table/fesm2022/index.mjs +311 -12
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-action/table-action.directive.d.ts +3 -2
- package/components/data/table/table-column/table-column.directive.d.ts +3 -2
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +3 -2
- package/components/data/table/table-cud.directive.d.ts +3 -1
- package/components/data/table/table-filter.directive.d.ts +3 -1
- package/components/data/table/table-row/table-row.directive.d.ts +3 -2
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +3 -2
- package/components/data/table/table.component.d.ts +2 -2
- package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +3 -2
- package/components/dialogs/alert-dialog/bundles/index.umd.js +5 -0
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +6 -1
- package/components/dialogs/alert-dialog/fesm2022/index.mjs +5 -0
- package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/confirm-dialog/bundles/index.umd.js +5 -0
- package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +3 -2
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +6 -1
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs +5 -0
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/default/bundles/index.umd.js +15 -2
- package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +4 -2
- package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +16 -3
- package/components/dialogs/default/fesm2022/index.mjs +15 -2
- package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/design-dialog/bundles/index.umd.js +7 -0
- package/components/dialogs/design-dialog/dialog.component.d.ts +3 -2
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +8 -1
- package/components/dialogs/design-dialog/fesm2022/index.mjs +7 -0
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +5 -0
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +6 -1
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +5 -0
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +3 -2
- package/components/dialogs/partial-dialog/bundles/index.umd.js +23 -3
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +24 -4
- package/components/dialogs/partial-dialog/fesm2022/index.mjs +23 -3
- package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +4 -2
- package/components/input/base-form/base-form.component.d.ts +4 -2
- package/components/input/base-form/bundles/index.umd.js +16 -2
- package/components/input/base-form/esm2022/base-form.component.mjs +17 -3
- package/components/input/base-form/fesm2022/index.mjs +16 -2
- package/components/input/base-form/fesm2022/index.mjs.map +1 -1
- package/components/input/base-form-custom/base-form-custom.component.d.ts +3 -2
- package/components/input/base-form-custom/bundles/index.umd.js +13 -2
- package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +14 -3
- package/components/input/base-form-custom/fesm2022/index.mjs +13 -2
- package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -1
- package/components/input/checkbox/bundles/index.umd.js +7 -0
- package/components/input/checkbox/checkbox.component.d.ts +3 -2
- package/components/input/checkbox/esm2022/checkbox.component.mjs +8 -1
- package/components/input/checkbox/fesm2022/index.mjs +7 -0
- package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
- package/components/input/checkboxset/bundles/index.umd.js +18 -2
- package/components/input/checkboxset/checkboxset.component.d.ts +4 -2
- package/components/input/checkboxset/esm2022/checkboxset.component.mjs +19 -3
- package/components/input/checkboxset/fesm2022/index.mjs +18 -2
- package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
- package/components/input/chips/bundles/index.umd.js +45 -5
- package/components/input/chips/chips.component.d.ts +3 -2
- package/components/input/chips/esm2022/chips.component.mjs +46 -6
- package/components/input/chips/fesm2022/index.mjs +45 -5
- package/components/input/chips/fesm2022/index.mjs.map +1 -1
- package/components/input/color-picker/bundles/index.umd.js +8 -0
- package/components/input/color-picker/color-picker.component.d.ts +3 -2
- package/components/input/color-picker/esm2022/color-picker.component.mjs +9 -1
- package/components/input/color-picker/fesm2022/index.mjs +8 -0
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- package/components/input/composite/bundles/index.umd.js +10 -1
- package/components/input/composite/composite.directive.d.ts +3 -2
- package/components/input/composite/esm2022/composite.directive.mjs +11 -2
- package/components/input/composite/fesm2022/index.mjs +10 -1
- package/components/input/composite/fesm2022/index.mjs.map +1 -1
- package/components/input/currency/bundles/index.umd.js +7 -0
- package/components/input/currency/currency.component.d.ts +3 -2
- package/components/input/currency/esm2022/currency.component.mjs +8 -1
- package/components/input/currency/fesm2022/index.mjs +7 -0
- package/components/input/currency/fesm2022/index.mjs.map +1 -1
- package/components/input/dataset-aware-form/bundles/index.umd.js +26 -2
- package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +27 -3
- package/components/input/dataset-aware-form/fesm2022/index.mjs +26 -2
- package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/date/bundles/index.umd.js +22 -0
- package/components/input/epoch/date/date.component.d.ts +1 -0
- package/components/input/epoch/date/esm2022/date.component.mjs +23 -1
- package/components/input/epoch/date/fesm2022/index.mjs +22 -0
- package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/bundles/index.umd.js +25 -8
- package/components/input/file-upload/esm2022/file-upload.component.mjs +26 -9
- package/components/input/file-upload/fesm2022/index.mjs +25 -8
- package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/file-upload.component.d.ts +3 -0
- package/components/input/number/bundles/index.umd.js +8 -0
- package/components/input/number/esm2022/number.component.mjs +9 -1
- package/components/input/number/fesm2022/index.mjs +8 -0
- package/components/input/number/fesm2022/index.mjs.map +1 -1
- package/components/input/number/number.component.d.ts +3 -2
- package/components/input/radioset/bundles/index.umd.js +18 -2
- package/components/input/radioset/esm2022/radioset.component.mjs +19 -3
- package/components/input/radioset/fesm2022/index.mjs +18 -2
- package/components/input/radioset/fesm2022/index.mjs.map +1 -1
- package/components/input/radioset/radioset.component.d.ts +4 -2
- package/components/input/rating/bundles/index.umd.js +10 -0
- package/components/input/rating/esm2022/rating.component.mjs +11 -1
- package/components/input/rating/fesm2022/index.mjs +10 -0
- package/components/input/rating/fesm2022/index.mjs.map +1 -1
- package/components/input/rating/rating.component.d.ts +3 -2
- package/components/input/select/bundles/index.umd.js +6 -0
- package/components/input/select/esm2022/select.component.mjs +7 -1
- package/components/input/select/fesm2022/index.mjs +6 -0
- package/components/input/select/fesm2022/index.mjs.map +1 -1
- package/components/input/select/select.component.d.ts +3 -2
- package/components/input/slider/bundles/index.umd.js +10 -0
- package/components/input/slider/esm2022/slider.component.mjs +11 -1
- package/components/input/slider/fesm2022/index.mjs +10 -0
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/slider.component.d.ts +3 -2
- package/components/input/switch/bundles/index.umd.js +22 -2
- package/components/input/switch/esm2022/switch.component.mjs +23 -3
- package/components/input/switch/fesm2022/index.mjs +22 -2
- package/components/input/switch/fesm2022/index.mjs.map +1 -1
- package/components/input/switch/switch.component.d.ts +3 -2
- package/components/input/text/bundles/index.umd.js +36 -0
- package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +8 -1
- package/components/input/text/esm2022/input-color/input-color.component.mjs +8 -1
- package/components/input/text/esm2022/input-email/input-email.component.mjs +8 -1
- package/components/input/text/esm2022/input-number/input-number.component.mjs +8 -1
- package/components/input/text/esm2022/input-text/input-text.component.mjs +9 -1
- package/components/input/text/fesm2022/index.mjs +36 -0
- package/components/input/text/fesm2022/index.mjs.map +1 -1
- package/components/input/text/input-calendar/input-calendar.component.d.ts +3 -2
- package/components/input/text/input-color/input-color.component.d.ts +3 -2
- package/components/input/text/input-email/input-email.component.d.ts +3 -2
- package/components/input/text/input-number/input-number.component.d.ts +3 -2
- package/components/input/text/input-text/input-text.component.d.ts +3 -2
- package/components/input/textarea/bundles/index.umd.js +7 -0
- package/components/input/textarea/esm2022/textarea.component.mjs +8 -1
- package/components/input/textarea/fesm2022/index.mjs +7 -0
- package/components/input/textarea/fesm2022/index.mjs.map +1 -1
- package/components/input/textarea/textarea.component.d.ts +3 -2
- package/components/navigation/menu/bundles/index.umd.js +55 -6
- package/components/navigation/menu/esm2022/menu-adapator.component.mjs +17 -3
- package/components/navigation/menu/esm2022/menu.component.mjs +10 -3
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +6 -1
- package/components/navigation/menu/esm2022/nav/nav.component.mjs +11 -1
- package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +16 -3
- package/components/navigation/menu/fesm2022/index.mjs +55 -6
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/menu/menu-adapator.component.d.ts +4 -2
- package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +3 -2
- package/components/navigation/menu/nav/nav.component.d.ts +3 -2
- package/components/navigation/menu/nav/navigation-control.directive.d.ts +4 -2
- package/components/navigation/navbar/bundles/index.umd.js +5 -0
- package/components/navigation/navbar/esm2022/navbar.component.mjs +6 -1
- package/components/navigation/navbar/fesm2022/index.mjs +5 -0
- package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- package/components/navigation/navbar/navbar.component.d.ts +3 -2
- package/components/navigation/popover/bundles/index.umd.js +65 -13
- package/components/navigation/popover/esm2022/popover.component.mjs +63 -11
- package/components/navigation/popover/fesm2022/index.mjs +62 -10
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +11 -3
- package/components/page/default/bundles/index.umd.js +20 -2
- package/components/page/default/esm2022/layout.directive.mjs +9 -1
- package/components/page/default/esm2022/page-content/page-content.component.mjs +13 -3
- package/components/page/default/fesm2022/index.mjs +20 -2
- package/components/page/default/fesm2022/index.mjs.map +1 -1
- package/components/page/default/layout.directive.d.ts +3 -2
- package/components/page/default/page-content/page-content.component.d.ts +3 -2
- package/components/page/left-panel/bundles/index.umd.js +16 -0
- package/components/page/left-panel/esm2022/left-panel.directive.mjs +17 -1
- package/components/page/left-panel/fesm2022/index.mjs +16 -0
- package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/left-panel/left-panel.directive.d.ts +3 -2
- package/components/page/top-nav/bundles/index.umd.js +2 -1
- package/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
- package/components/page/top-nav/fesm2022/index.mjs +2 -1
- package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- package/components/prefab/bundles/index.umd.js +4 -0
- package/components/prefab/esm2022/prefab.directive.mjs +5 -1
- package/components/prefab/fesm2022/index.mjs +4 -0
- package/components/prefab/fesm2022/index.mjs.map +1 -1
- package/core/bundles/index.umd.js +391 -94
- package/core/esm2022/public_api.mjs +3 -3
- package/core/esm2022/services/viewport.service.mjs +24 -10
- package/core/esm2022/types/types.mjs +1 -1
- package/core/esm2022/utils/dom.mjs +18 -2
- package/core/esm2022/utils/event-notifier.mjs +5 -2
- package/core/esm2022/utils/lru-cache.mjs +16 -2
- package/core/esm2022/utils/utils.mjs +6 -2
- package/core/esm2022/utils/watcher.mjs +323 -81
- package/core/fesm2022/index.mjs +390 -96
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +2 -2
- package/core/services/viewport.service.d.ts +5 -2
- package/core/types/types.d.ts +1 -0
- package/core/utils/lru-cache.d.ts +6 -0
- package/core/utils/utils.d.ts +1 -0
- package/core/utils/watcher.d.ts +26 -5
- package/http/bundles/index.umd.js +31 -1
- package/http/esm2022/http.service.mjs +32 -2
- package/http/fesm2022/index.mjs +31 -1
- package/http/fesm2022/index.mjs.map +1 -1
- package/http/http.service.d.ts +6 -2
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/bundles/index.umd.js +9 -0
- package/oAuth/esm2022/oAuth.service.mjs +10 -1
- package/oAuth/fesm2022/index.mjs +9 -0
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/oAuth/oAuth.service.d.ts +3 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +364 -30
- package/runtime/base/components/app-component/app.component.d.ts +4 -0
- package/runtime/base/components/prefab-preview.component.d.ts +5 -2
- package/runtime/base/directives/accessroles.directive.d.ts +4 -3
- package/runtime/base/directives/prefab.directive.d.ts +3 -2
- package/runtime/base/esm2022/components/app-component/app.component.mjs +40 -9
- package/runtime/base/esm2022/components/base-custom-widget.component.mjs +33 -2
- package/runtime/base/esm2022/components/base-layout.component.mjs +7 -1
- package/runtime/base/esm2022/components/base-page.component.mjs +36 -3
- package/runtime/base/esm2022/components/base-partial.component.mjs +37 -3
- package/runtime/base/esm2022/components/base-prefab.component.mjs +32 -3
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +37 -3
- package/runtime/base/esm2022/components/prefab-preview.component.mjs +23 -4
- package/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -2
- package/runtime/base/esm2022/directives/prefab.directive.mjs +9 -1
- package/runtime/base/esm2022/services/app.manager.service.mjs +37 -10
- package/runtime/base/esm2022/services/app.service.mjs +34 -2
- package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +4 -1
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +7 -4
- package/runtime/base/esm2022/services/spinner.service.mjs +15 -1
- package/runtime/base/esm2022/util/fragment-monitor.mjs +23 -2
- package/runtime/base/fesm2022/index.mjs +365 -31
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/services/app.manager.service.d.ts +6 -1
- package/runtime/base/services/app.service.d.ts +12 -2
- package/runtime/base/services/dynamic-component-ref-provider.service.d.ts +2 -1
- package/runtime/base/services/spinner.service.d.ts +3 -1
- package/runtime/base/util/fragment-monitor.d.ts +6 -0
- package/runtime/dynamic/bundles/index.umd.js +5 -0
- package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +6 -1
- package/runtime/dynamic/fesm2022/index.mjs +5 -0
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +100 -14
- package/security/bundles/index.umd.js +41 -2
- package/security/esm2022/security.service.mjs +42 -3
- package/security/fesm2022/index.mjs +41 -2
- package/security/fesm2022/index.mjs.map +1 -1
- package/security/security.service.d.ts +5 -2
- package/variables/bundles/index.umd.js +50 -6
- package/variables/esm2022/manager/action/notification-action.manager.mjs +18 -3
- package/variables/esm2022/manager/variable/base-variable.manager.mjs +15 -2
- package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +13 -3
- package/variables/esm2022/service/variables.service.mjs +8 -2
- package/variables/fesm2022/index.mjs +50 -6
- package/variables/fesm2022/index.mjs.map +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Injector, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
1
|
+
import { Injector, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { SecurityService } from '@wm/security';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class AccessrolesDirective {
|
|
4
|
+
export declare class AccessrolesDirective implements OnDestroy {
|
|
5
5
|
private templateRef;
|
|
6
6
|
private viewContainerRef;
|
|
7
7
|
private securityService;
|
|
@@ -9,7 +9,7 @@ export declare class AccessrolesDirective {
|
|
|
9
9
|
private processed;
|
|
10
10
|
private readonly isUserAuthenticated;
|
|
11
11
|
private readonly userRoles;
|
|
12
|
-
private
|
|
12
|
+
private context;
|
|
13
13
|
private securityEnabled;
|
|
14
14
|
constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef, securityService: SecurityService, inj: Injector, explicitContext: any);
|
|
15
15
|
/**
|
|
@@ -34,6 +34,7 @@ export declare class AccessrolesDirective {
|
|
|
34
34
|
*/
|
|
35
35
|
private hasAccessToWidget;
|
|
36
36
|
set accessroles(roles: any);
|
|
37
|
+
ngOnDestroy(): void;
|
|
37
38
|
static ɵfac: i0.ɵɵFactoryDeclaration<AccessrolesDirective, [null, null, null, null, { optional: true; }]>;
|
|
38
39
|
static ɵdir: i0.ɵɵDirectiveDeclaration<AccessrolesDirective, "[accessroles]", never, { "accessroles": { "alias": "accessroles"; "required": false; }; }, {}, never, never, true, never>;
|
|
39
40
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ComponentFactoryResolver, ElementRef, Injector, ViewContainerRef } from '@angular/core';
|
|
1
|
+
import { ComponentFactoryResolver, ElementRef, Injector, OnDestroy, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { PrefabManagerService } from '../services/prefab-manager.service';
|
|
3
3
|
import { ComponentRefProvider } from '../types/types';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class PrefabDirective {
|
|
5
|
+
export declare class PrefabDirective implements OnDestroy {
|
|
6
6
|
componentInstance: any;
|
|
7
7
|
vcRef: ViewContainerRef;
|
|
8
8
|
elRef: ElementRef;
|
|
@@ -11,6 +11,7 @@ export declare class PrefabDirective {
|
|
|
11
11
|
private injector;
|
|
12
12
|
private componentRefProvider;
|
|
13
13
|
constructor(componentInstance: any, vcRef: ViewContainerRef, elRef: ElementRef, prefabMngr: PrefabManagerService, resolver: ComponentFactoryResolver, injector: Injector, componentRefProvider: ComponentRefProvider);
|
|
14
|
+
ngOnDestroy(): void;
|
|
14
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<PrefabDirective, [{ self: true; }, null, null, null, null, null, null]>;
|
|
15
16
|
static ɵdir: i0.ɵɵDirectiveDeclaration<PrefabDirective, "[wmPrefab][prefabname]", never, {}, {}, never, never, true, never>;
|
|
16
17
|
}
|
|
@@ -4,7 +4,7 @@ import { ConfirmDialogComponent } from '@wm/components/dialogs/confirm-dialog';
|
|
|
4
4
|
import { ApplicationRef, Component, ElementRef, NgZone, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';
|
|
5
5
|
import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router, RouterOutlet } from '@angular/router';
|
|
6
6
|
import { setTheme } from 'ngx-bootstrap/utils';
|
|
7
|
-
import { $invokeWatchers, AbstractDialogService, AbstractSpinnerService, addClass, App, CustomIconsLoaderService, getWmProjectProperties, noop, removeClass, setAppRef, setNgZone, setPipeProvider } from '@wm/core';
|
|
7
|
+
import { $invokeWatchers, $unwatchAllByScope, AbstractDialogService, AbstractSpinnerService, addClass, App, CustomIconsLoaderService, getWmProjectProperties, noop, removeClass, setAppRef, setNgZone, setPipeProvider } from '@wm/core';
|
|
8
8
|
import { OAuthService } from '@wm/oAuth';
|
|
9
9
|
import { AppManagerService } from '../../services/app.manager.service';
|
|
10
10
|
import { PipeProvider } from '../../services/pipe-provider.service';
|
|
@@ -32,6 +32,7 @@ export class AppComponent {
|
|
|
32
32
|
this.isApplicationType = false;
|
|
33
33
|
this.enableSkipToMainContent = getWmProjectProperties().enableSkipToMainContent === 'true' || getWmProjectProperties().enableSkipToMainContent === true;
|
|
34
34
|
this.retryCount = 0;
|
|
35
|
+
this.appManagerSubscriptions = []; // MEMORY LEAK FIX: Track appManager subscriptions
|
|
35
36
|
this.appLocale = {};
|
|
36
37
|
this.spinner = { show: false, messages: [], arialabel: '' };
|
|
37
38
|
this.isOAuthDialogOpen = false;
|
|
@@ -44,7 +45,8 @@ export class AppComponent {
|
|
|
44
45
|
this.customIconsLoaderService.load();
|
|
45
46
|
}
|
|
46
47
|
// subscribe to OAuth changes
|
|
47
|
-
|
|
48
|
+
// MEMORY LEAK FIX: Store subscription reference for cleanup
|
|
49
|
+
this.oAuthProvidersSubscription = oAuthService.getOAuthProvidersAsObservable().subscribe((providers) => {
|
|
48
50
|
this.providersConfig = providers;
|
|
49
51
|
if (providers.length) {
|
|
50
52
|
this.showOAuthDialog();
|
|
@@ -54,7 +56,8 @@ export class AppComponent {
|
|
|
54
56
|
}
|
|
55
57
|
});
|
|
56
58
|
// Subscribe to the message source to show/hide app spinner
|
|
57
|
-
|
|
59
|
+
// MEMORY LEAK FIX: Store subscription reference for cleanup
|
|
60
|
+
this.spinnerMessageSubscription = this.spinnerService.getMessageSource().asObservable().subscribe((data) => {
|
|
58
61
|
// setTimeout is to avoid 'ExpressionChangedAfterItHasBeenCheckedError'
|
|
59
62
|
setTimeout(() => {
|
|
60
63
|
this.spinner.show = data.show;
|
|
@@ -66,7 +69,8 @@ export class AppComponent {
|
|
|
66
69
|
setTheme('bs3');
|
|
67
70
|
let spinnerId;
|
|
68
71
|
let onPageRendered = noop;
|
|
69
|
-
|
|
72
|
+
// MEMORY LEAK FIX: Store subscription reference for cleanup
|
|
73
|
+
this.routerEventsSubscription = this.router.events.subscribe(e => {
|
|
70
74
|
if (e instanceof NavigationStart) {
|
|
71
75
|
let page = e.url.split('?')[0];
|
|
72
76
|
page = page.substring(1);
|
|
@@ -101,12 +105,13 @@ export class AppComponent {
|
|
|
101
105
|
}, 1000);
|
|
102
106
|
}
|
|
103
107
|
});
|
|
104
|
-
|
|
108
|
+
// MEMORY LEAK FIX: Store subscription unsubscribe functions
|
|
109
|
+
this.appManagerSubscriptions.push(this.appManager.subscribe('pageReady', () => {
|
|
105
110
|
onPageRendered();
|
|
106
|
-
});
|
|
107
|
-
this.appManager.subscribe('pageAttach', () => {
|
|
111
|
+
}));
|
|
112
|
+
this.appManagerSubscriptions.push(this.appManager.subscribe('pageAttach', () => {
|
|
108
113
|
onPageRendered();
|
|
109
|
-
});
|
|
114
|
+
}));
|
|
110
115
|
}
|
|
111
116
|
showOAuthDialog() {
|
|
112
117
|
if (!this.isOAuthDialogOpen) {
|
|
@@ -181,9 +186,35 @@ export class AppComponent {
|
|
|
181
186
|
$invokeWatchers();
|
|
182
187
|
}
|
|
183
188
|
ngOnDestroy() {
|
|
189
|
+
// MEMORY LEAK FIX: Unwatch all App-scoped watchers when app is destroyed
|
|
190
|
+
$unwatchAllByScope('App');
|
|
191
|
+
// MEMORY LEAK FIX: Unsubscribe from navigation end subscription
|
|
184
192
|
if (this.navigationEndSubscription) {
|
|
185
193
|
this.navigationEndSubscription.unsubscribe();
|
|
194
|
+
this.navigationEndSubscription = null;
|
|
195
|
+
}
|
|
196
|
+
// MEMORY LEAK FIX: Unsubscribe from OAuth providers subscription
|
|
197
|
+
if (this.oAuthProvidersSubscription) {
|
|
198
|
+
this.oAuthProvidersSubscription.unsubscribe();
|
|
199
|
+
this.oAuthProvidersSubscription = null;
|
|
200
|
+
}
|
|
201
|
+
// MEMORY LEAK FIX: Unsubscribe from spinner message subscription
|
|
202
|
+
if (this.spinnerMessageSubscription) {
|
|
203
|
+
this.spinnerMessageSubscription.unsubscribe();
|
|
204
|
+
this.spinnerMessageSubscription = null;
|
|
186
205
|
}
|
|
206
|
+
// MEMORY LEAK FIX: Unsubscribe from router events subscription
|
|
207
|
+
if (this.routerEventsSubscription) {
|
|
208
|
+
this.routerEventsSubscription.unsubscribe();
|
|
209
|
+
this.routerEventsSubscription = null;
|
|
210
|
+
}
|
|
211
|
+
// MEMORY LEAK FIX: Unsubscribe from appManager subscriptions
|
|
212
|
+
this.appManagerSubscriptions.forEach(unsubscribe => {
|
|
213
|
+
if (unsubscribe) {
|
|
214
|
+
unsubscribe();
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
this.appManagerSubscriptions = [];
|
|
187
218
|
}
|
|
188
219
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppComponent, deps: [{ token: i1.PipeProvider }, { token: i0.ApplicationRef }, { token: i0.ElementRef }, { token: i2.OAuthService }, { token: i3.AbstractDialogService }, { token: i3.AbstractSpinnerService }, { token: i0.NgZone }, { token: i4.Router }, { token: i3.App }, { token: i5.AppManagerService }, { token: i3.CustomIconsLoaderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
189
220
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppComponent, isStandalone: true, selector: "app-root", viewQueries: [{ propertyName: "routerOutlet", first: true, predicate: RouterOutlet, descendants: true }, { propertyName: "dynamicComponentContainerRef", first: true, predicate: ["dynamicComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "@if (startApp) {\n @if(enableSkipToMainContent) {\n <div id=\"app-focus-start\" tabindex=\"-1\"></div>\n <a href=\"javascript:void(0);\" class=\"skip\" (click)=\"skipToAppContent($event)\">{{appLocale.LABEL_SKIP_TO_MAIN_CONTENT || 'Skip to main content'}}</a>\n }\n <router-outlet></router-outlet>\n @if (isApplicationType) {\n <div wmContainer partialContainer content=\"Common\" hidden class=\"ng-hide\"></div>\n }\n <app-spinner name=\"globalspinner\" classname=\"global-spinner\" role=\"alert\" aria-live=\"assertive\" [attr.aria-label]=\"spinner.arialabel || 'Loading'\" [show]=\"spinner.show\" [spinnermessages]=\"spinner.messages\"></app-spinner>\n <div wmDialog name=\"oAuthLoginDialog\" title=\"Application is requesting you to sign in with\"\n close.event=\"closeOAuthDialog()\">\n <ng-template #dialogBody>\n <ul class=\"list-items\">\n @for (provider of providersConfig; track provider) {\n <li class=\"list-item\">\n <button class=\"btn\" (click)=\"provider.invoke()\">{{provider.name}}</button>\n </li>\n }\n </ul>\n </ng-template>\n </div>\n <div wmConfirmDialog name=\"_app-confirm-dialog\" title.bind=\"title\" message.bind=\"message\" oktext.bind=\"oktext\"\n canceltext.bind=\"canceltext\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n @if (!isApplicationType) {\n <div wmConfirmDialog name=\"PrefabConfirmDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n @if (!isApplicationType) {\n <div wmAlertDialog name=\"PrefabAlertDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n <div wmAppExt></div>\n <i id=\"wm-mobile-display\"></i>\n}\n<!--Dummy container to create the component dynamically-->\n<ng-container #dynamicComponent></ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: AlertDialogComponent, selector: "div[wmAlertDialog]" }, { kind: "component", type: ConfirmDialogComponent, selector: "div[wmConfirmDialog]" }, { kind: "component", type: DialogComponent, selector: "div[wmDialog]" }, { kind: "component", type: AppSpinnerComponent, selector: "app-spinner", inputs: ["show", "spinnermessages", "classname", "arialabel"] }, { kind: "directive", type: ContainerDirective, selector: "[wmContainer]" }, { kind: "directive", type: PartialParamHandlerDirective, selector: "[partialContainer]" }, { kind: "directive", type: PartialContainerDirective, selector: "[partialContainer]" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
@@ -198,4 +229,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
198
229
|
type: ViewChild,
|
|
199
230
|
args: ['dynamicComponent', { read: ViewContainerRef }]
|
|
200
231
|
}] } });
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9hcHAtY29tcG9uZW50L2FwcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC9hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFFSCxjQUFjLEVBQ2QsU0FBUyxFQUVULFVBQVUsRUFDVixNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixNQUFNLEVBQ04sWUFBWSxFQUNmLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTdDLE9BQU8sRUFDSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixRQUFRLEVBQ1IsR0FBRyxFQUNILHdCQUF3QixFQUN4QixzQkFBc0IsRUFDdEIsSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULGVBQWUsRUFDbEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNy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QUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsNEJBQTRCLEVBQUcseUJBQXlCLENBQUMsWUFDN0wsVUFBVSxpQkFFTCxpQkFBaUIsQ0FBQyxJQUFJOzhXQVVaLFlBQVk7c0JBQXBDLFNBQVM7dUJBQUMsWUFBWTtnQkFFb0MsNEJBQTRCO3NCQUF0RixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0FsZXJ0RGlhbG9nQ29tcG9uZW50fSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzL2FsZXJ0LWRpYWxvZyc7XG5pbXBvcnQge0NvbmZpcm1EaWFsb2dDb21wb25lbnR9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvY29uZmlybS1kaWFsb2cnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEFwcGxpY2F0aW9uUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWN0aXZhdGVkUm91dGUsXG4gICAgTmF2aWdhdGlvbkNhbmNlbCxcbiAgICBOYXZpZ2F0aW9uRW5kLFxuICAgIE5hdmlnYXRpb25FcnJvcixcbiAgICBOYXZpZ2F0aW9uU3RhcnQsXG4gICAgUm91dGVyLFxuICAgIFJvdXRlck91dGxldFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge3NldFRoZW1lfSBmcm9tICduZ3gtYm9vdHN0cmFwL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgICAkaW52b2tlV2F0Y2hlcnMsXG4gICAgQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgIEFic3RyYWN0U3Bpbm5lclNlcnZpY2UsXG4gICAgYWRkQ2xhc3MsXG4gICAgQXBwLFxuICAgIEN1c3RvbUljb25zTG9hZGVyU2VydmljZSxcbiAgICBnZXRXbVByb2plY3RQcm9wZXJ0aWVzLFxuICAgIG5vb3AsXG4gICAgcmVtb3ZlQ2xhc3MsXG4gICAgc2V0QXBwUmVmLFxuICAgIHNldE5nWm9uZSxcbiAgICBzZXRQaXBlUHJvdmlkZXJcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtPQXV0aFNlcnZpY2V9IGZyb20gJ0B3bS9vQXV0aCc7XG5pbXBvcnQge0FwcE1hbmFnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAubWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7UGlwZVByb3ZpZGVyfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9waXBlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtBcHBTcGlubmVyQ29tcG9uZW50fSBmcm9tICcuLi9hcHAtc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtEaWFsb2dDb21wb25lbnR9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvZGVzaWduLWRpYWxvZyc7XG5pbXBvcnQge0NvbnRhaW5lckRpcmVjdGl2ZSwgUGFydGlhbENvbnRhaW5lckRpcmVjdGl2ZSwgUGFydGlhbFBhcmFtSGFuZGxlckRpcmVjdGl2ZX0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcblxuaW50ZXJmYWNlIFNQSU5ORVIge1xuICAgIHNob3c6IGJvb2xlYW47XG4gICAgbWVzc2FnZXM6IEFycmF5PHN0cmluZz47XG4gICAgYXJpYWxhYmVsOiBzdHJpbmc7XG59XG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck91dGxldCwgQWxlcnREaWFsb2dDb21wb25lbnQsIENvbmZpcm1EaWFsb2dDb21wb25lbnQsIERpYWxvZ0NvbXBvbmVudCwgQXBwU3Bpbm5lckNvbXBvbmVudCwgQ29udGFpbmVyRGlyZWN0aXZlLCBQYXJ0aWFsUGFyYW1IYW5kbGVyRGlyZWN0aXZlICwgUGFydGlhbENvbnRhaW5lckRpcmVjdGl2ZV0sXG4gICAgc2VsZWN0b3I6ICdhcHAtcm9vdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcC5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBzdGFydEFwcCA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0FwcGxpY2F0aW9uVHlwZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBlbmFibGVTa2lwVG9NYWluQ29udGVudCA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5lbmFibGVTa2lwVG9NYWluQ29udGVudCA9PT0gJ3RydWUnIHx8IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5lbmFibGVTa2lwVG9NYWluQ29udGVudCA9PT0gdHJ1ZTtcbiAgICBwcml2YXRlIHJldHJ5Q291bnQgPSAwO1xuICAgIHByaXZhdGUgbmF2aWdhdGlvbkVuZFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgICBhcHBMb2NhbGU6IGFueSA9IHt9O1xuXG4gICAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQpIHJvdXRlck91dGxldDogUm91dGVyT3V0bGV0O1xuXG4gICAgQFZpZXdDaGlsZCgnZHluYW1pY0NvbXBvbmVudCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBkeW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgc3Bpbm5lcjogU1BJTk5FUiA9IHsgc2hvdzogZmFsc2UsIG1lc3NhZ2VzOiBbXSwgYXJpYWxhYmVsOiAnJyB9O1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBfcGlwZVByb3ZpZGVyOiBQaXBlUHJvdmlkZXIsXG4gICAgICAgIF9hcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHB1YmxpYyBhcHA6IEFwcCxcbiAgICAgICAgcHJpdmF0ZSBhcHBNYW5hZ2VyOiBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21JY29uc0xvYWRlclNlcnZpY2U6IEN1c3RvbUljb25zTG9hZGVyU2VydmljZVxuICAgICkge1xuICAgICAgICBzZXRQaXBlUHJvdmlkZXIoX3BpcGVQcm92aWRlcik7XG4gICAgICAgIHNldE5nWm9uZShuZ1pvbmUpO1xuICAgICAgICBzZXRBcHBSZWYoX2FwcFJlZik7XG5cbiAgICAgICAgdGhpcy5hcHBMb2NhbGUgPSBhcHAuYXBwTG9jYWxlO1xuICAgICAgICB0aGlzLmlzQXBwbGljYXRpb25UeXBlID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnR5cGUgPT09ICdBUFBMSUNBVElPTic7XG4gICAgICAgIGlmICh0aGlzLmlzQXBwbGljYXRpb25UeXBlKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUljb25zTG9hZGVyU2VydmljZS5sb2FkKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdWJzY3JpYmUgdG8gT0F1dGggY2hhbmdlc1xuICAgICAgICBvQXV0aFNlcnZpY2UuZ2V0T0F1dGhQcm92aWRlcnNBc09ic2VydmFibGUoKS5zdWJzY3JpYmUoKHByb3ZpZGVyczogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb3ZpZGVyc0NvbmZpZyA9IHByb3ZpZGVycztcbiAgICAgICAgICAgIGlmIChwcm92aWRlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93T0F1dGhEaWFsb2coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZU9BdXRoRGlhbG9nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFN1YnNjcmliZSB0byB0aGUgbWVzc2FnZSBzb3VyY2UgdG8gc2hvdy9oaWRlIGFwcCBzcGlubmVyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuZ2V0TWVzc2FnZVNvdXJjZSgpLmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAvLyBzZXRUaW1lb3V0IGlzIHRvIGF2b2lkICdFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yJ1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGlubmVyLnNob3cgPSBkYXRhLnNob3c7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGlubmVyLm1lc3NhZ2VzID0gZGF0YS5tZXNzYWdlcztcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXIuYXJpYWxhYmVsID0gZGF0YS5tZXNzYWdlcy50b1N0cmluZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHNldCB0aGVtZSB0byBiczMgb24gbmd4LWJvb3RzdHJhcC4gVGhpcyBhdm9pZHMgcnVudGltZSBjYWxjdWxhdGlvbiB0byBkZXRlcm1pbmUgYnMgdGhlbWUuIFRodXMgcmVzb2x2ZXMgcGVyZm9ybWFuY2UuXG4gICAgICAgIHNldFRoZW1lKCdiczMnKTtcblxuICAgICAgICBsZXQgc3Bpbm5lcklkO1xuXG4gICAgICAgIGxldCBvblBhZ2VSZW5kZXJlZCA9IG5vb3A7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhZ2UgPSBlLnVybC5zcGxpdCgnPycpWzBdO1xuICAgICAgICAgICAgICAgIHBhZ2UgPSBwYWdlLnN1YnN0cmluZygxKTtcblxuICAgICAgICAgICAgICAgIGlmICghcGFnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcC5hY3RpdmVMYXlvdXROYW1lID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwLmxheW91dFBhZ2VzID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFwcC5hY3RpdmVMYXlvdXROYW1lICYmIHRoaXMuYXBwLmxheW91dFBhZ2VzICYmIHRoaXMuYXBwLmxheW91dFBhZ2VzLmxlbmd0aCAmJiB0aGlzLmFwcC5sYXlvdXRQYWdlcy5pbmNsdWRlcyhwYWdlKSkge1xuICAgICAgICAgICAgICAgICAgICBzcGlubmVySWQgPSB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coJycsICd3bVJvdXRlck91dGxldCcsICcnLCAnd21Sb3V0ZXJPdXRsZXQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzcGlubmVySWQgPSB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coJycsICdnbG9iYWxTcGlubmVyJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2FwcC1wYWdlLW91dGxldCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKG5vZGUsICdwYWdlLWxvYWQtaW4tcHJvZ3Jlc3MnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwYWdlTG9hZFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZShzcGlubmVySWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXBwLXBhZ2Utb3V0bGV0JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhub2RlLCAncGFnZS1sb2FkLWluLXByb2dyZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQgPSBub29wO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcC5hY3RpdmVQYWdlTG9hZFRpbWUgPSBEYXRlLm5vdygpIC0gcGFnZUxvYWRTdGFydFRpbWU7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHwgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwgfHwgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCgpO1xuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLnN1YnNjcmliZSgncGFnZVJlYWR5JywgKCkgPT4ge1xuICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5zdWJzY3JpYmUoJ3BhZ2VBdHRhY2gnLCAoKSA9PiB7XG4gICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm92aWRlcnNDb25maWc7XG4gICAgaXNPQXV0aERpYWxvZ09wZW4gPSBmYWxzZTtcblxuICAgIHNob3dPQXV0aERpYWxvZygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT0F1dGhEaWFsb2dPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT0F1dGhEaWFsb2dPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKCdvQXV0aExvZ2luRGlhbG9nJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbG9zZU9BdXRoRGlhbG9nKCkge1xuICAgICAgICBpZiAodGhpcy5pc09BdXRoRGlhbG9nT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09BdXRoRGlhbG9nT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsb3NlKCdvQXV0aExvZ2luRGlhbG9nJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0KCkge1xuICAgICAgICAvL3RvIGZpeCB0aGUgaXNzdWUgdGhhdCBoYXBwZW5zIG9ubHkgaW4gdGhlIGRldmVsb3BtZW50IG1vZGVcbiAgICAgICAgLy9FeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICAgIC8vZml4OiBodHRwczovL2Jsb2cuYW5ndWxhci11bml2ZXJzaXR5LmlvL2FuZ3VsYXItZGVidWdnaW5nL1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRBcHAgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFwcC5keW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmID0gdGhpcy5keW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmO1xuICAgICAgICAgICAgdGhpcy5vdmVycmlkZVJvdXRlck91dGxldCgpO1xuICAgICAgICB9LCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvdmVycmlkZVJvdXRlck91dGxldCgpIHtcbiAgICAgICAgLy9vdmVycmlkZSB0aGUgYXR0YWNoL2RldGFjaCBtZXRob2RzXG4gICAgICAgIGNvbnN0IG9BdHRhY2ggPSB0aGlzLnJvdXRlck91dGxldC5hdHRhY2g7XG4gICAgICAgIGNvbnN0IG9EZXRhY2ggPSB0aGlzLnJvdXRlck91dGxldC5kZXRhY2g7XG4gICAgICAgIHRoaXMucm91dGVyT3V0bGV0LmF0dGFjaCA9IChjb21wb25lbnRSZWY6IGFueSwgYWN0aXZhdGVkUm91dGU6ICBBY3RpdmF0ZWRSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgb0F0dGFjaC5jYWxsKHRoaXMucm91dGVyT3V0bGV0LCBjb21wb25lbnRSZWYsIGFjdGl2YXRlZFJvdXRlKTtcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5uZ09uQXR0YWNoKCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRldGFjaCA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXBwLmFjdGl2ZVBhZ2UubmdPbkRldGFjaCgpO1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gb0RldGFjaC5jYWxsKHRoaXMucm91dGVyT3V0bGV0KTtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2tpcFRvQXBwQ29udGVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5yZXRyeUNvdW50ID0gMDtcbiAgICAgICAgdGhpcy50cnlGb2N1c0NvbnRlbnQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyeUZvY3VzQ29udGVudCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGVudEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmFwcC1wYWdlLWNvbnRlbnQnKSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAoY29udGVudEVsKSB7XG4gICAgICAgICAgICBjb250ZW50RWwuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpOyAvLyBFbnN1cmUgaXQncyBmb2N1c2FibGVcbiAgICAgICAgICAgIGNvbnRlbnRFbC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IGZhbHNlIH0pO1xuICAgICAgICAgICAgY29udGVudEVsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmV0cnlDb3VudCA8IDEwKSB7XG4gICAgICAgICAgICB0aGlzLnJldHJ5Q291bnQrKztcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50cnlGb2N1c0NvbnRlbnQoKSwgMTAwKTsgLy8gUmV0cnkgZXZlcnkgMTAwbXNcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnbGFuZycsIGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5kZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICB0aGlzLnN0YXJ0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlU2tpcFRvTWFpbkNvbnRlbnQpIHtcbiAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcC1mb2N1cy1zdGFydCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nRG9DaGVjaygpIHtcbiAgICAgICAgJGludm9rZVdhdGNoZXJzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25FbmRTdWJzY3JpcHRpb24pe1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKHN0YXJ0QXBwKSB7XG4gICAgQGlmKGVuYWJsZVNraXBUb01haW5Db250ZW50KSB7XG4gICAgICAgIDxkaXYgaWQ9XCJhcHAtZm9jdXMtc3RhcnRcIiB0YWJpbmRleD1cIi0xXCI+PC9kaXY+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgY2xhc3M9XCJza2lwXCIgKGNsaWNrKT1cInNraXBUb0FwcENvbnRlbnQoJGV2ZW50KVwiPnt7YXBwTG9jYWxlLkxBQkVMX1NLSVBfVE9fTUFJTl9DT05URU5UIHx8ICdTa2lwIHRvIG1haW4gY29udGVudCd9fTwvYT5cbiAgICB9XG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICBAaWYgKGlzQXBwbGljYXRpb25UeXBlKSB7XG4gICAgPGRpdiB3bUNvbnRhaW5lciBwYXJ0aWFsQ29udGFpbmVyIGNvbnRlbnQ9XCJDb21tb25cIiBoaWRkZW4gY2xhc3M9XCJuZy1oaWRlXCI+PC9kaXY+XG4gIH1cbiAgPGFwcC1zcGlubmVyIG5hbWU9XCJnbG9iYWxzcGlubmVyXCIgY2xhc3NuYW1lPVwiZ2xvYmFsLXNwaW5uZXJcIiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInNwaW5uZXIuYXJpYWxhYmVsIHx8ICdMb2FkaW5nJ1wiIFtzaG93XT1cInNwaW5uZXIuc2hvd1wiIFtzcGlubmVybWVzc2FnZXNdPVwic3Bpbm5lci5tZXNzYWdlc1wiPjwvYXBwLXNwaW5uZXI+XG4gIDxkaXYgd21EaWFsb2cgbmFtZT1cIm9BdXRoTG9naW5EaWFsb2dcIiB0aXRsZT1cIkFwcGxpY2F0aW9uIGlzIHJlcXVlc3RpbmcgeW91IHRvIHNpZ24gaW4gd2l0aFwiXG4gICAgY2xvc2UuZXZlbnQ9XCJjbG9zZU9BdXRoRGlhbG9nKClcIj5cbiAgICA8bmctdGVtcGxhdGUgI2RpYWxvZ0JvZHk+XG4gICAgICA8dWwgY2xhc3M9XCJsaXN0LWl0ZW1zXCI+XG4gICAgICAgIEBmb3IgKHByb3ZpZGVyIG9mIHByb3ZpZGVyc0NvbmZpZzsgdHJhY2sgcHJvdmlkZXIpIHtcbiAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWl0ZW1cIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiAoY2xpY2spPVwicHJvdmlkZXIuaW52b2tlKClcIj57e3Byb3ZpZGVyLm5hbWV9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICAgIDwvdWw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgd21Db25maXJtRGlhbG9nIG5hbWU9XCJfYXBwLWNvbmZpcm0tZGlhbG9nXCIgdGl0bGUuYmluZD1cInRpdGxlXCIgbWVzc2FnZS5iaW5kPVwibWVzc2FnZVwiIG9rdGV4dC5iaW5kPVwib2t0ZXh0XCJcbiAgICBjYW5jZWx0ZXh0LmJpbmQ9XCJjYW5jZWx0ZXh0XCIgY2xvc2FibGU9XCJmYWxzZVwiIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgZXNjYXBlLmV2ZW50PVwib25Fc2NhcGUoKVwiIG9rLmV2ZW50PVwib25PaygpXCIgY2FuY2VsLmV2ZW50PVwib25DYW5jZWwoKVwiIGNsb3NlLmV2ZW50PVwib25DbG9zZSgpXCIgb3BlbmVkLmV2ZW50PVwib25PcGVuKClcIj48L2Rpdj5cbiAgQGlmICghaXNBcHBsaWNhdGlvblR5cGUpIHtcbiAgICA8ZGl2ICB3bUNvbmZpcm1EaWFsb2cgbmFtZT1cIlByZWZhYkNvbmZpcm1EaWFsb2dcIiB0aXRsZS5iaW5kPVwidGl0bGVcIiBtZXNzYWdlLmJpbmQ9XCJ0ZXh0XCIgb2t0ZXh0LmJpbmQ9XCJva0J1dHRvblRleHRcIlxuICAgICAgY2FuY2VsdGV4dC5iaW5kPVwiY2FuY2VsQnV0dG9uVGV4dFwiIGNsb3NhYmxlPVwiZmFsc2VcIiBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgZXNjYXBlLmV2ZW50PVwib25Fc2NhcGUoKVwiIG9rLmV2ZW50PVwib25PaygpXCIgY2FuY2VsLmV2ZW50PVwib25DYW5jZWwoKVwiIGNsb3NlLmV2ZW50PVwib25DbG9zZSgpXCIgb3BlbmVkLmV2ZW50PVwib25PcGVuKClcIj48L2Rpdj5cbiAgfVxuICBAaWYgKCFpc0FwcGxpY2F0aW9uVHlwZSkge1xuICAgIDxkaXYgIHdtQWxlcnREaWFsb2cgbmFtZT1cIlByZWZhYkFsZXJ0RGlhbG9nXCIgdGl0bGUuYmluZD1cInRpdGxlXCIgbWVzc2FnZS5iaW5kPVwidGV4dFwiIG9rdGV4dC5iaW5kPVwib2tCdXR0b25UZXh0XCJcbiAgICAgIGNhbmNlbHRleHQuYmluZD1cImNhbmNlbEJ1dHRvblRleHRcIiBjbG9zYWJsZT1cImZhbHNlXCIgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgIGVzY2FwZS5ldmVudD1cIm9uRXNjYXBlKClcIiBvay5ldmVudD1cIm9uT2soKVwiIGNhbmNlbC5ldmVudD1cIm9uQ2FuY2VsKClcIiBjbG9zZS5ldmVudD1cIm9uQ2xvc2UoKVwiIG9wZW5lZC5ldmVudD1cIm9uT3BlbigpXCI+PC9kaXY+XG4gIH1cbiAgPGRpdiB3bUFwcEV4dD48L2Rpdj5cbiAgPGkgaWQ9XCJ3bS1tb2JpbGUtZGlzcGxheVwiPjwvaT5cbn1cbjwhLS1EdW1teSBjb250YWluZXIgdG8gY3JlYXRlIHRoZSBjb21wb25lbnQgZHluYW1pY2FsbHktLT5cbjxuZy1jb250YWluZXIgI2R5bmFtaWNDb21wb25lbnQ+PC9uZy1jb250YWluZXI+XG4iXX0=
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9hcHAtY29tcG9uZW50L2FwcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC9hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFFSCxjQUFjLEVBQ2QsU0FBUyxFQUVULFVBQVUsRUFDVixNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixNQUFNLEVBQ04sWUFBWSxFQUNmLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTdDLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsUUFBUSxFQUNSLEdBQUcsRUFDSCx3QkFBd0IsRUFDeEIsc0JBQXNCLEVBQ3RCLElBQUksRUFDSixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDVCxlQUFlLEVBQ2xCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sb0NB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QUFZLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSw0QkFBNEIsRUFBRyx5QkFBeUIsQ0FBQyxZQUM3TCxVQUFVLGlCQUVMLGlCQUFpQixDQUFDLElBQUk7OFdBY1osWUFBWTtzQkFBcEMsU0FBUzt1QkFBQyxZQUFZO2dCQUVvQyw0QkFBNEI7c0JBQXRGLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWxlcnREaWFsb2dDb21wb25lbnR9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvYWxlcnQtZGlhbG9nJztcbmltcG9ydCB7Q29uZmlybURpYWxvZ0NvbXBvbmVudH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9jb25maXJtLWRpYWxvZyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQXBwbGljYXRpb25SZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBOYXZpZ2F0aW9uQ2FuY2VsLFxuICAgIE5hdmlnYXRpb25FbmQsXG4gICAgTmF2aWdhdGlvbkVycm9yLFxuICAgIE5hdmlnYXRpb25TdGFydCxcbiAgICBSb3V0ZXIsXG4gICAgUm91dGVyT3V0bGV0XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7c2V0VGhlbWV9IGZyb20gJ25neC1ib290c3RyYXAvdXRpbHMnO1xuXG5pbXBvcnQge1xuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICAkdW53YXRjaEFsbEJ5U2NvcGUsXG4gICAgQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgIEFic3RyYWN0U3Bpbm5lclNlcnZpY2UsXG4gICAgYWRkQ2xhc3MsXG4gICAgQXBwLFxuICAgIEN1c3RvbUljb25zTG9hZGVyU2VydmljZSxcbiAgICBnZXRXbVByb2plY3RQcm9wZXJ0aWVzLFxuICAgIG5vb3AsXG4gICAgcmVtb3ZlQ2xhc3MsXG4gICAgc2V0QXBwUmVmLFxuICAgIHNldE5nWm9uZSxcbiAgICBzZXRQaXBlUHJvdmlkZXJcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtPQXV0aFNlcnZpY2V9IGZyb20gJ0B3bS9vQXV0aCc7XG5pbXBvcnQge0FwcE1hbmFnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAubWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7UGlwZVByb3ZpZGVyfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9waXBlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtBcHBTcGlubmVyQ29tcG9uZW50fSBmcm9tICcuLi9hcHAtc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtEaWFsb2dDb21wb25lbnR9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvZGVzaWduLWRpYWxvZyc7XG5pbXBvcnQge0NvbnRhaW5lckRpcmVjdGl2ZSwgUGFydGlhbENvbnRhaW5lckRpcmVjdGl2ZSwgUGFydGlhbFBhcmFtSGFuZGxlckRpcmVjdGl2ZX0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcblxuaW50ZXJmYWNlIFNQSU5ORVIge1xuICAgIHNob3c6IGJvb2xlYW47XG4gICAgbWVzc2FnZXM6IEFycmF5PHN0cmluZz47XG4gICAgYXJpYWxhYmVsOiBzdHJpbmc7XG59XG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck91dGxldCwgQWxlcnREaWFsb2dDb21wb25lbnQsIENvbmZpcm1EaWFsb2dDb21wb25lbnQsIERpYWxvZ0NvbXBvbmVudCwgQXBwU3Bpbm5lckNvbXBvbmVudCwgQ29udGFpbmVyRGlyZWN0aXZlLCBQYXJ0aWFsUGFyYW1IYW5kbGVyRGlyZWN0aXZlICwgUGFydGlhbENvbnRhaW5lckRpcmVjdGl2ZV0sXG4gICAgc2VsZWN0b3I6ICdhcHAtcm9vdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcC5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBzdGFydEFwcCA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0FwcGxpY2F0aW9uVHlwZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBlbmFibGVTa2lwVG9NYWluQ29udGVudCA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5lbmFibGVTa2lwVG9NYWluQ29udGVudCA9PT0gJ3RydWUnIHx8IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5lbmFibGVTa2lwVG9NYWluQ29udGVudCA9PT0gdHJ1ZTtcbiAgICBwcml2YXRlIHJldHJ5Q291bnQgPSAwO1xuICAgIHByaXZhdGUgbmF2aWdhdGlvbkVuZFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIG9BdXRoUHJvdmlkZXJzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgc3Bpbm5lck1lc3NhZ2VTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSByb3V0ZXJFdmVudHNTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBhcHBNYW5hZ2VyU3Vic2NyaXB0aW9uczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTsgLy8gTUVNT1JZIExFQUsgRklYOiBUcmFjayBhcHBNYW5hZ2VyIHN1YnNjcmlwdGlvbnNcbiAgICBhcHBMb2NhbGU6IGFueSA9IHt9O1xuXG4gICAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQpIHJvdXRlck91dGxldDogUm91dGVyT3V0bGV0O1xuXG4gICAgQFZpZXdDaGlsZCgnZHluYW1pY0NvbXBvbmVudCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBkeW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgc3Bpbm5lcjogU1BJTk5FUiA9IHsgc2hvdzogZmFsc2UsIG1lc3NhZ2VzOiBbXSwgYXJpYWxhYmVsOiAnJyB9O1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBfcGlwZVByb3ZpZGVyOiBQaXBlUHJvdmlkZXIsXG4gICAgICAgIF9hcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHB1YmxpYyBhcHA6IEFwcCxcbiAgICAgICAgcHJpdmF0ZSBhcHBNYW5hZ2VyOiBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21JY29uc0xvYWRlclNlcnZpY2U6IEN1c3RvbUljb25zTG9hZGVyU2VydmljZVxuICAgICkge1xuICAgICAgICBzZXRQaXBlUHJvdmlkZXIoX3BpcGVQcm92aWRlcik7XG4gICAgICAgIHNldE5nWm9uZShuZ1pvbmUpO1xuICAgICAgICBzZXRBcHBSZWYoX2FwcFJlZik7XG5cbiAgICAgICAgdGhpcy5hcHBMb2NhbGUgPSBhcHAuYXBwTG9jYWxlO1xuICAgICAgICB0aGlzLmlzQXBwbGljYXRpb25UeXBlID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnR5cGUgPT09ICdBUFBMSUNBVElPTic7XG4gICAgICAgIGlmICh0aGlzLmlzQXBwbGljYXRpb25UeXBlKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUljb25zTG9hZGVyU2VydmljZS5sb2FkKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdWJzY3JpYmUgdG8gT0F1dGggY2hhbmdlc1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFN0b3JlIHN1YnNjcmlwdGlvbiByZWZlcmVuY2UgZm9yIGNsZWFudXBcbiAgICAgICAgdGhpcy5vQXV0aFByb3ZpZGVyc1N1YnNjcmlwdGlvbiA9IG9BdXRoU2VydmljZS5nZXRPQXV0aFByb3ZpZGVyc0FzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgocHJvdmlkZXJzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvdmlkZXJzQ29uZmlnID0gcHJvdmlkZXJzO1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dPQXV0aERpYWxvZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlT0F1dGhEaWFsb2coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBtZXNzYWdlIHNvdXJjZSB0byBzaG93L2hpZGUgYXBwIHNwaW5uZXJcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBTdG9yZSBzdWJzY3JpcHRpb24gcmVmZXJlbmNlIGZvciBjbGVhbnVwXG4gICAgICAgIHRoaXMuc3Bpbm5lck1lc3NhZ2VTdWJzY3JpcHRpb24gPSB0aGlzLnNwaW5uZXJTZXJ2aWNlLmdldE1lc3NhZ2VTb3VyY2UoKS5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gc2V0VGltZW91dCBpcyB0byBhdm9pZCAnRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcidcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lci5zaG93ID0gZGF0YS5zaG93O1xuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lci5tZXNzYWdlcyA9IGRhdGEubWVzc2FnZXM7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGlubmVyLmFyaWFsYWJlbCA9IGRhdGEubWVzc2FnZXMudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBzZXQgdGhlbWUgdG8gYnMzIG9uIG5neC1ib290c3RyYXAuIFRoaXMgYXZvaWRzIHJ1bnRpbWUgY2FsY3VsYXRpb24gdG8gZGV0ZXJtaW5lIGJzIHRoZW1lLiBUaHVzIHJlc29sdmVzIHBlcmZvcm1hbmNlLlxuICAgICAgICBzZXRUaGVtZSgnYnMzJyk7XG5cbiAgICAgICAgbGV0IHNwaW5uZXJJZDtcblxuICAgICAgICBsZXQgb25QYWdlUmVuZGVyZWQgPSBub29wO1xuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogU3RvcmUgc3Vic2NyaXB0aW9uIHJlZmVyZW5jZSBmb3IgY2xlYW51cFxuICAgICAgICB0aGlzLnJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgICAgICAgIGxldCBwYWdlID0gZS51cmwuc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICAgICAgICBwYWdlID0gcGFnZS5zdWJzdHJpbmcoMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAuYWN0aXZlTGF5b3V0TmFtZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcC5sYXlvdXRQYWdlcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcHAuYWN0aXZlTGF5b3V0TmFtZSAmJiB0aGlzLmFwcC5sYXlvdXRQYWdlcyAmJiB0aGlzLmFwcC5sYXlvdXRQYWdlcy5sZW5ndGggJiYgdGhpcy5hcHAubGF5b3V0UGFnZXMuaW5jbHVkZXMocGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bpbm5lcklkID0gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCcnLCAnd21Sb3V0ZXJPdXRsZXQnLCAnJywgJ3dtUm91dGVyT3V0bGV0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bpbm5lcklkID0gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCcnLCAnZ2xvYmFsU3Bpbm5lcicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhcHAtcGFnZS1vdXRsZXQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhub2RlLCAncGFnZS1sb2FkLWluLXByb2dyZXNzJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFnZUxvYWRTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoc3Bpbm5lcklkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2FwcC1wYWdlLW91dGxldCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3Mobm9kZSwgJ3BhZ2UtbG9hZC1pbi1wcm9ncmVzcycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkID0gbm9vcDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAuYWN0aXZlUGFnZUxvYWRUaW1lID0gRGF0ZS5ub3coKSAtIHBhZ2VMb2FkU3RhcnRUaW1lO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsIHx8IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQoKTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogU3RvcmUgc3Vic2NyaXB0aW9uIHVuc3Vic2NyaWJlIGZ1bmN0aW9uc1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXJTdWJzY3JpcHRpb25zLnB1c2godGhpcy5hcHBNYW5hZ2VyLnN1YnNjcmliZSgncGFnZVJlYWR5JywgKCkgPT4ge1xuICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQoKTtcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXJTdWJzY3JpcHRpb25zLnB1c2godGhpcy5hcHBNYW5hZ2VyLnN1YnNjcmliZSgncGFnZUF0dGFjaCcsICgpID0+IHtcbiAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkKCk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcm92aWRlcnNDb25maWc7XG4gICAgaXNPQXV0aERpYWxvZ09wZW4gPSBmYWxzZTtcblxuICAgIHNob3dPQXV0aERpYWxvZygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT0F1dGhEaWFsb2dPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT0F1dGhEaWFsb2dPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKCdvQXV0aExvZ2luRGlhbG9nJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbG9zZU9BdXRoRGlhbG9nKCkge1xuICAgICAgICBpZiAodGhpcy5pc09BdXRoRGlhbG9nT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09BdXRoRGlhbG9nT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsb3NlKCdvQXV0aExvZ2luRGlhbG9nJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0KCkge1xuICAgICAgICAvL3RvIGZpeCB0aGUgaXNzdWUgdGhhdCBoYXBwZW5zIG9ubHkgaW4gdGhlIGRldmVsb3BtZW50IG1vZGVcbiAgICAgICAgLy9FeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICAgIC8vZml4OiBodHRwczovL2Jsb2cuYW5ndWxhci11bml2ZXJzaXR5LmlvL2FuZ3VsYXItZGVidWdnaW5nL1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRBcHAgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFwcC5keW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmID0gdGhpcy5keW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmO1xuICAgICAgICAgICAgdGhpcy5vdmVycmlkZVJvdXRlck91dGxldCgpO1xuICAgICAgICB9LCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvdmVycmlkZVJvdXRlck91dGxldCgpIHtcbiAgICAgICAgLy9vdmVycmlkZSB0aGUgYXR0YWNoL2RldGFjaCBtZXRob2RzXG4gICAgICAgIGNvbnN0IG9BdHRhY2ggPSB0aGlzLnJvdXRlck91dGxldC5hdHRhY2g7XG4gICAgICAgIGNvbnN0IG9EZXRhY2ggPSB0aGlzLnJvdXRlck91dGxldC5kZXRhY2g7XG4gICAgICAgIHRoaXMucm91dGVyT3V0bGV0LmF0dGFjaCA9IChjb21wb25lbnRSZWY6IGFueSwgYWN0aXZhdGVkUm91dGU6ICBBY3RpdmF0ZWRSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgb0F0dGFjaC5jYWxsKHRoaXMucm91dGVyT3V0bGV0LCBjb21wb25lbnRSZWYsIGFjdGl2YXRlZFJvdXRlKTtcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5uZ09uQXR0YWNoKCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRldGFjaCA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXBwLmFjdGl2ZVBhZ2UubmdPbkRldGFjaCgpO1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gb0RldGFjaC5jYWxsKHRoaXMucm91dGVyT3V0bGV0KTtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2tpcFRvQXBwQ29udGVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5yZXRyeUNvdW50ID0gMDtcbiAgICAgICAgdGhpcy50cnlGb2N1c0NvbnRlbnQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyeUZvY3VzQ29udGVudCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGVudEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmFwcC1wYWdlLWNvbnRlbnQnKSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAoY29udGVudEVsKSB7XG4gICAgICAgICAgICBjb250ZW50RWwuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpOyAvLyBFbnN1cmUgaXQncyBmb2N1c2FibGVcbiAgICAgICAgICAgIGNvbnRlbnRFbC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IGZhbHNlIH0pO1xuICAgICAgICAgICAgY29udGVudEVsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmV0cnlDb3VudCA8IDEwKSB7XG4gICAgICAgICAgICB0aGlzLnJldHJ5Q291bnQrKztcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50cnlGb2N1c0NvbnRlbnQoKSwgMTAwKTsgLy8gUmV0cnkgZXZlcnkgMTAwbXNcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnbGFuZycsIGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5kZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICB0aGlzLnN0YXJ0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlU2tpcFRvTWFpbkNvbnRlbnQpIHtcbiAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcC1mb2N1cy1zdGFydCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nRG9DaGVjaygpIHtcbiAgICAgICAgJGludm9rZVdhdGNoZXJzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogVW53YXRjaCBhbGwgQXBwLXNjb3BlZCB3YXRjaGVycyB3aGVuIGFwcCBpcyBkZXN0cm95ZWRcbiAgICAgICAgJHVud2F0Y2hBbGxCeVNjb3BlKCdBcHAnKTtcbiAgICAgICAgXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogVW5zdWJzY3JpYmUgZnJvbSBuYXZpZ2F0aW9uIGVuZCBzdWJzY3JpcHRpb25cbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdGlvbkVuZFN1YnNjcmlwdGlvbil7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25FbmRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkVuZFN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFVuc3Vic2NyaWJlIGZyb20gT0F1dGggcHJvdmlkZXJzIHN1YnNjcmlwdGlvblxuICAgICAgICBpZiAodGhpcy5vQXV0aFByb3ZpZGVyc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5vQXV0aFByb3ZpZGVyc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5vQXV0aFByb3ZpZGVyc1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFVuc3Vic2NyaWJlIGZyb20gc3Bpbm5lciBtZXNzYWdlIHN1YnNjcmlwdGlvblxuICAgICAgICBpZiAodGhpcy5zcGlubmVyTWVzc2FnZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zcGlubmVyTWVzc2FnZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5zcGlubmVyTWVzc2FnZVN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFVuc3Vic2NyaWJlIGZyb20gcm91dGVyIGV2ZW50cyBzdWJzY3JpcHRpb25cbiAgICAgICAgaWYgKHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBVbnN1YnNjcmliZSBmcm9tIGFwcE1hbmFnZXIgc3Vic2NyaXB0aW9uc1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXJTdWJzY3JpcHRpb25zLmZvckVhY2godW5zdWJzY3JpYmUgPT4ge1xuICAgICAgICAgICAgaWYgKHVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlclN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB9XG59XG4iLCJAaWYgKHN0YXJ0QXBwKSB7XG4gICAgQGlmKGVuYWJsZVNraXBUb01haW5Db250ZW50KSB7XG4gICAgICAgIDxkaXYgaWQ9XCJhcHAtZm9jdXMtc3RhcnRcIiB0YWJpbmRleD1cIi0xXCI+PC9kaXY+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgY2xhc3M9XCJza2lwXCIgKGNsaWNrKT1cInNraXBUb0FwcENvbnRlbnQoJGV2ZW50KVwiPnt7YXBwTG9jYWxlLkxBQkVMX1NLSVBfVE9fTUFJTl9DT05URU5UIHx8ICdTa2lwIHRvIG1haW4gY29udGVudCd9fTwvYT5cbiAgICB9XG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICBAaWYgKGlzQXBwbGljYXRpb25UeXBlKSB7XG4gICAgPGRpdiB3bUNvbnRhaW5lciBwYXJ0aWFsQ29udGFpbmVyIGNvbnRlbnQ9XCJDb21tb25cIiBoaWRkZW4gY2xhc3M9XCJuZy1oaWRlXCI+PC9kaXY+XG4gIH1cbiAgPGFwcC1zcGlubmVyIG5hbWU9XCJnbG9iYWxzcGlubmVyXCIgY2xhc3NuYW1lPVwiZ2xvYmFsLXNwaW5uZXJcIiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInNwaW5uZXIuYXJpYWxhYmVsIHx8ICdMb2FkaW5nJ1wiIFtzaG93XT1cInNwaW5uZXIuc2hvd1wiIFtzcGlubmVybWVzc2FnZXNdPVwic3Bpbm5lci5tZXNzYWdlc1wiPjwvYXBwLXNwaW5uZXI+XG4gIDxkaXYgd21EaWFsb2cgbmFtZT1cIm9BdXRoTG9naW5EaWFsb2dcIiB0aXRsZT1cIkFwcGxpY2F0aW9uIGlzIHJlcXVlc3RpbmcgeW91IHRvIHNpZ24gaW4gd2l0aFwiXG4gICAgY2xvc2UuZXZlbnQ9XCJjbG9zZU9BdXRoRGlhbG9nKClcIj5cbiAgICA8bmctdGVtcGxhdGUgI2RpYWxvZ0JvZHk+XG4gICAgICA8dWwgY2xhc3M9XCJsaXN0LWl0ZW1zXCI+XG4gICAgICAgIEBmb3IgKHByb3ZpZGVyIG9mIHByb3ZpZGVyc0NvbmZpZzsgdHJhY2sgcHJvdmlkZXIpIHtcbiAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWl0ZW1cIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiAoY2xpY2spPVwicHJvdmlkZXIuaW52b2tlKClcIj57e3Byb3ZpZGVyLm5hbWV9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICAgIDwvdWw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgd21Db25maXJtRGlhbG9nIG5hbWU9XCJfYXBwLWNvbmZpcm0tZGlhbG9nXCIgdGl0bGUuYmluZD1cInRpdGxlXCIgbWVzc2FnZS5iaW5kPVwibWVzc2FnZVwiIG9rdGV4dC5iaW5kPVwib2t0ZXh0XCJcbiAgICBjYW5jZWx0ZXh0LmJpbmQ9XCJjYW5jZWx0ZXh0XCIgY2xvc2FibGU9XCJmYWxzZVwiIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgZXNjYXBlLmV2ZW50PVwib25Fc2NhcGUoKVwiIG9rLmV2ZW50PVwib25PaygpXCIgY2FuY2VsLmV2ZW50PVwib25DYW5jZWwoKVwiIGNsb3NlLmV2ZW50PVwib25DbG9zZSgpXCIgb3BlbmVkLmV2ZW50PVwib25PcGVuKClcIj48L2Rpdj5cbiAgQGlmICghaXNBcHBsaWNhdGlvblR5cGUpIHtcbiAgICA8ZGl2ICB3bUNvbmZpcm1EaWFsb2cgbmFtZT1cIlByZWZhYkNvbmZpcm1EaWFsb2dcIiB0aXRsZS5iaW5kPVwidGl0bGVcIiBtZXNzYWdlLmJpbmQ9XCJ0ZXh0XCIgb2t0ZXh0LmJpbmQ9XCJva0J1dHRvblRleHRcIlxuICAgICAgY2FuY2VsdGV4dC5iaW5kPVwiY2FuY2VsQnV0dG9uVGV4dFwiIGNsb3NhYmxlPVwiZmFsc2VcIiBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgZXNjYXBlLmV2ZW50PVwib25Fc2NhcGUoKVwiIG9rLmV2ZW50PVwib25PaygpXCIgY2FuY2VsLmV2ZW50PVwib25DYW5jZWwoKVwiIGNsb3NlLmV2ZW50PVwib25DbG9zZSgpXCIgb3BlbmVkLmV2ZW50PVwib25PcGVuKClcIj48L2Rpdj5cbiAgfVxuICBAaWYgKCFpc0FwcGxpY2F0aW9uVHlwZSkge1xuICAgIDxkaXYgIHdtQWxlcnREaWFsb2cgbmFtZT1cIlByZWZhYkFsZXJ0RGlhbG9nXCIgdGl0bGUuYmluZD1cInRpdGxlXCIgbWVzc2FnZS5iaW5kPVwidGV4dFwiIG9rdGV4dC5iaW5kPVwib2tCdXR0b25UZXh0XCJcbiAgICAgIGNhbmNlbHRleHQuYmluZD1cImNhbmNlbEJ1dHRvblRleHRcIiBjbG9zYWJsZT1cImZhbHNlXCIgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgIGVzY2FwZS5ldmVudD1cIm9uRXNjYXBlKClcIiBvay5ldmVudD1cIm9uT2soKVwiIGNhbmNlbC5ldmVudD1cIm9uQ2FuY2VsKClcIiBjbG9zZS5ldmVudD1cIm9uQ2xvc2UoKVwiIG9wZW5lZC5ldmVudD1cIm9uT3BlbigpXCI+PC9kaXY+XG4gIH1cbiAgPGRpdiB3bUFwcEV4dD48L2Rpdj5cbiAgPGkgaWQ9XCJ3bS1tb2JpbGUtZGlzcGxheVwiPjwvaT5cbn1cbjwhLS1EdW1teSBjb250YWluZXIgdG8gY3JlYXRlIHRoZSBjb21wb25lbnQgZHluYW1pY2FsbHktLT5cbjxuZy1jb250YWluZXIgI2R5bmFtaWNDb21wb25lbnQ+PC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -280,7 +280,38 @@ export class BaseCustomWidgetComponent extends FragmentMonitor {
|
|
|
280
280
|
}, 100);
|
|
281
281
|
}
|
|
282
282
|
ngOnDestroy() {
|
|
283
|
-
|
|
283
|
+
// MEMORY LEAK FIX: Complete Subjects to release subscriptions
|
|
284
|
+
if (this.destroy$) {
|
|
285
|
+
this.destroy$.complete();
|
|
286
|
+
this.destroy$ = null;
|
|
287
|
+
}
|
|
288
|
+
if (this.viewInit$) {
|
|
289
|
+
this.viewInit$.complete();
|
|
290
|
+
this.viewInit$ = null;
|
|
291
|
+
}
|
|
292
|
+
// MEMORY LEAK FIX: Clear references to prevent memory leaks
|
|
293
|
+
this.Widgets = null;
|
|
294
|
+
this.BaseWidget = null;
|
|
295
|
+
this.Variables = null;
|
|
296
|
+
this.Actions = null;
|
|
297
|
+
this.App = null;
|
|
298
|
+
this.containerWidget = null;
|
|
299
|
+
this.i18nService = null;
|
|
300
|
+
this.appLocale = null;
|
|
301
|
+
this.pageDirective = null;
|
|
302
|
+
this.Prefab = null;
|
|
303
|
+
this.scriptLoaderService = null;
|
|
304
|
+
this.customwidgetConfigProvider = null;
|
|
305
|
+
this.Viewport = null;
|
|
306
|
+
this.route = null;
|
|
307
|
+
this.appManager = null;
|
|
308
|
+
this.navigationService = null;
|
|
309
|
+
this.router = null;
|
|
310
|
+
this.props = null;
|
|
311
|
+
this.events = null;
|
|
312
|
+
this.viewParent = null;
|
|
313
|
+
// MEMORY LEAK FIX: Cleanup FragmentMonitor resources
|
|
314
|
+
this.cleanupFragmentMonitor();
|
|
284
315
|
}
|
|
285
316
|
ngOnAttach(refreshData) {
|
|
286
317
|
this.unmute();
|
|
@@ -305,4 +336,4 @@ export class BaseCustomWidgetComponent extends FragmentMonitor {
|
|
|
305
336
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseCustomWidgetComponent, decorators: [{
|
|
306
337
|
type: Directive
|
|
307
338
|
}] });
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jdXN0b20td2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9iYXNlLWN1c3RvbS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLSCxTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUNILGVBQWUsRUFDZixtQkFBbUIsRUFFbkIsR0FBRyxFQUNILElBQUksRUFDSixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLFlBQVksRUFFWixNQUFNLEVBQ04sSUFBSSxFQUNQLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBdUIsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sK0JBQStCLENBQUM7O0FBSWhFLDBDQUEwQztBQUcxQyxNQUFNLE9BQWdCLHlCQUEwQixTQUFRLGVBQWU7SUFEdkU7O1FBR0ksZUFBVSxHQUFRLEVBQUUs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QUFXLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLGdCQUFnQixLQUFLLENBQUM7SUFFdEIsT0FBTyxDQUFDLE1BQU87SUFDZixDQUFDOytHQXJXaUIseUJBQXlCO21HQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBRDlDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZCxcbiAgICBEaXJlY3RpdmUsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgJGludm9rZVdhdGNoZXJzLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSxcbiAgICBBcHAsXG4gICAgbm9vcCxcbiAgICBWaWV3cG9ydCxcbiAgICBTY3JpcHRMb2FkZXJTZXJ2aWNlLFxuICAgIFV0aWxzU2VydmljZSxcbiAgICByZWdpc3RlckZuQnlFeHByLFxuICAgICR3YXRjaCxcbiAgICBpc0lFLCBpc0RlZmluZWRcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtnZXRXaWRnZXRQcm9wc0J5VHlwZSwgV2lkZ2V0UmVmfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IFBhZ2VEaXJlY3RpdmUsIFNwYVBhZ2VEaXJlY3RpdmUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7UHJlZmFiRGlyZWN0aXZlfSBmcm9tICdAd20vY29tcG9uZW50cy9wcmVmYWInO1xuaW1wb3J0IHsgVmFyaWFibGVzU2VydmljZSB9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuaW1wb3J0IHsgQ3VzdG9td2lkZ2V0Q29uZmlnUHJvdmlkZXIgfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5pbXBvcnQgeyBGcmFnbWVudE1vbml0b3IgfSBmcm9tICcuLi91dGlsL2ZyYWdtZW50LW1vbml0b3InO1xuaW1wb3J0IHsgQXBwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHAubWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7Y29tbW9uUGFydGlhbFdpZGdldHN9IGZyb20gXCIuL2Jhc2UtcGFydGlhbC5jb21wb25lbnRcIjtcbmltcG9ydCB7Y2FwaXRhbGl6ZSwgZm9yRWFjaH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHtDaGVja2JveHNldENvbXBvbmVudH0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2NoZWNrYm94c2V0XCI7XG5pbXBvcnQge1JhZGlvc2V0Q29tcG9uZW50fSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvcmFkaW9zZXRcIjtcblxuZGVjbGFyZSBjb25zdCBfO1xuXG4vLyBleHBvcnQgY29uc3QgY29tbW9uUGFydGlhbFdpZGdldHMgPSB7fTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUN1c3RvbVdpZGdldENvbXBvbmVudCBleHRlbmRzIEZyYWdtZW50TW9uaXRvciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgV2lkZ2V0czogYW55O1xuICAgIEJhc2VXaWRnZXQ6IGFueSA9IHt9O1xuICAgIFZhcmlhYmxlczogYW55O1xuICAgIEFjdGlvbnM6IGFueTtcbiAgICBBcHA6IEFwcDtcbiAgICBpbmplY3RvcjogSW5qZWN0b3I7XG4gICAgY3VzdG9tV2lkZ2V0TmFtZTogc3RyaW5nO1xuICAgIGFjdGl2ZVBhZ2VOYW1lOiBzdHJpbmc7XG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICAgIGFwcE1hbmFnZXI6IEFwcE1hbmFnZXJTZXJ2aWNlO1xuICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlO1xuICAgIHJvdXRlcjogUm91dGVyO1xuICAgIHByb3BzOiBhbnk7XG4gICAgY29udGFpbmVyV2lkZ2V0OiBhbnk7XG4gICAgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2U7XG4gICAgYXBwTG9jYWxlOiBhbnk7XG4gICAgLy8gQFZpZXdDaGlsZChQYXJ0aWFsRGlyZWN0aXZlKSBwYXJ0aWFsRGlyZWN0aXZlO1xuICAgIHBhZ2VEaXJlY3RpdmU6IFBhZ2VEaXJlY3RpdmUgfCBTcGFQYWdlRGlyZWN0aXZlO1xuICAgIFByZWZhYjogUHJlZmFiRGlyZWN0aXZlO1xuICAgIHNjcmlwdExvYWRlclNlcnZpY2U6IFNjcmlwdExvYWRlclNlcnZpY2U7XG4gICAgY3VzdG9td2lkZ2V0Q29uZmlnUHJvdmlkZXI6IEN1c3RvbXdpZGdldENvbmZpZ1Byb3ZpZGVyO1xuICAgIFZpZXdwb3J0OiBWaWV3cG9ydDtcbiAgICBjb21waWxlQ29udGVudCA9IGZhbHNlO1xuICAgIHNwYTogYm9vbGVhbjtcbiAgICBldmVudHM6IGFueTtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgICB2aWV3SW5pdCQgPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgdmlld1BhcmVudDogYW55O1xuXG4gICAgYWJzdHJhY3QgZXZhbFVzZXJTY3JpcHQocHJlZmFiQ29udGV4dDogYW55LCBhcHBDb250ZXh0OiBhbnksIHV0aWxzOiBhbnkpO1xuXG4gICAgYWJzdHJhY3QgZ2V0VmFyaWFibGVzKCk7XG5cbiAgICBnZXRDb250YWluZXJXaWRnZXRJbmplY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyV2lkZ2V0LmluaiB8fCB0aGlzLmNvbnRhaW5lcldpZGdldC5pbmplY3RvcjtcbiAgICB9XG5cbiAgICBpbml0KCkge1xuICAgICAgICBsZXQgcmVzb2x2ZUZuOiBGdW5jdGlvbjtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMpPT4gcmVzb2x2ZUZuID0gcmVzKVxuICAgICAgICB0aGlzLkFwcCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBcHApIDogaW5qZWN0KEFwcCk7XG4gICAgICAgIC8vbWFraW5nIHRoZSBjb2RlIGNvbXBhdGlibGUgaW4gYm90aCB0aGUgSklUIGFuZCBBT1QgbW9kZXNcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoV2lkZ2V0UmVmKSA6IGluamVjdChXaWRnZXRSZWYpO1xuICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFic3RyYWN0STE4blNlcnZpY2UpIDogaW5qZWN0KEFic3RyYWN0STE4blNlcnZpY2UpO1xuICAgICAgICB0aGlzLnNjcmlwdExvYWRlclNlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoU2NyaXB0TG9hZGVyU2VydmljZSkgOiBpbmplY3QoU2NyaXB0TG9hZGVyU2VydmljZSk7XG4gICAgICAgIHRoaXMuVmlld3BvcnQgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVmlld3BvcnQpIDogaW5qZWN0KFZpZXdwb3J0KTtcbiAgICAgICAgdGhpcy5jdXN0b213aWRnZXRDb25maWdQcm92aWRlciA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChDdXN0b213aWRnZXRDb25maWdQcm92aWRlcikgOiBpbmplY3QoQ3VzdG9td2lkZ2V0Q29uZmlnUHJvdmlkZXIpO1xuICAgICAgICAvLyB0aGlzLnZpZXdDb250YWluZXJSZWYgPSB0aGlzLmdldENvbnRhaW5lcldpZGdldEluamVjdG9yKCkuZ2V0KFZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICAvLyBSZXBsYWNpbmcgdGhpcy5nZXRDb250YWluZXJXaWRnZXRJbmplY3RvcigpLnZpZXcuY29tcG9uZW50IGFzIHZpZXdQYXJlbnRcbiAgICAgICAgLy8gdGhpcy52aWV3UGFyZW50ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLnBhcmVudEluamVjdG9yLl9sVmlld1s4XTtcbiAgICAgICAgdGhpcy52aWV3UGFyZW50ID0gdGhpcy5jb250YWluZXJXaWRnZXQudmlld1BhcmVudDtcblxuICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LnJlZ2lzdGVyRnJhZ21lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld1BhcmVudC5yZWdpc3RlckZyYWdtZW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZWdpc3RlciBmdW5jdGlvbnMgZm9yIGJpbmRpbmcgZXZhbHVhdGlvblxuICAgICAgICB0aGlzLnJlZ2lzdGVyRXhwcmVzc2lvbnMoKTtcbiAgICAgICAgdGhpcy5pbml0VXNlclNjcmlwdCgpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyUHJvcHNJbkNvbnRhaW5lcldpZGdldChyZXNvbHZlRm4pO1xuICAgICAgICAvLyBVc2luZyBwcm9taXNlIHRvIG1ha2Ugc3VyZSB0aGUgcHJvcHMgYXJlIHJlZ2lzdGVyZWQgaW4gdGhlIGNvbnRhaW5lciB3aWRnZXQgYmVmb3JlIHJlZ2lzdGVyaW5nIGV2ZW50cywgT3RoZXJ3aXNlIG5vIGV2ZW50cyB3aWxsIGJlIHJlZ2lzdGVyZWRcbiAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+IHRoaXMucmVnaXN0ZXJFdmVudHMoKSk7XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlcldpZGdldHMoKTtcbiAgICAgICAgdGhpcy5pbml0VmFyaWFibGVzKCk7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVQYWdlTmFtZSA9IHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lOyAvLyBUb2RvOiByZW1vdmUgdGhpc1xuICAgICAgICB0aGlzLnJlZ2lzdGVyUHJvcHMoKTtcbiAgICAgICAgdGhpcy5kZWZpbmVJMThuUHJvcHMoKTtcblxuICAgICAgICB0aGlzLnZpZXdJbml0JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9wcyA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnByb3BzO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZih0aGlzLnNwYSkge1xuICAgICAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFNwYVBhZ2VEaXJlY3RpdmUpIDogaW5qZWN0KFNwYVBhZ2VEaXJlY3RpdmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFBhZ2VEaXJlY3RpdmUpIDogaW5qZWN0KFBhZ2VEaXJlY3RpdmUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhZ2VEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIodGhpcy5wYWdlRGlyZWN0aXZlLnN1YnNjcmliZSgnYXR0YWNoJywgZGF0YSA9PiB0aGlzLm5nT25BdHRhY2goZGF0YS5yZWZyZXNoRGF0YSkpKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIodGhpcy5wYWdlRGlyZWN0aXZlLnN1YnNjcmliZSgnZGV0YWNoJywgKCkgPT4gdGhpcy5uZ09uRGV0YWNoKCkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5vbkVycm9TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZih0aGlzWydvblZhbGlkU3RhdHVzQ2hhbmdlJ10pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbJ29uVmFsaWRTdGF0dXNDaGFuZ2UnXSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIuaW5pdCgpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyV2lkZ2V0cygpIHtcbiAgICAgICAgLy8gY29tbW9uIHBhcnRpYWwgd2lkZ2V0cyBzaG91bGQgYmUgYWNjZXNzaWJsZSBmcm9tIHBhZ2VcbiAgICAgICAgdGhpcy5XaWRnZXRzID0gT2JqZWN0LmNyZWF0ZShjb21tb25QYXJ0aWFsV2lkZ2V0cyk7XG5cbiAgICAgICAgLy8gZXhwb3NlIGN1cnJlbnQgcGFnZSB3aWRnZXRzIG9uIGFwcFxuICAgICAgICAodGhpcy5BcHAgYXMgYW55KS5XaWRnZXRzID0gT2JqZWN0LmNyZWF0ZSh0aGlzLldpZGdldHMpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemVDb21wb25lbnREYXRhKGNoaWxkcmVuKSB7XG4gICAgICAgIEFycmF5LmZyb20oY2hpbGRyZW4pLmZvckVhY2goKGNoaWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmKCFjaGlsZC5oYXNBdHRyaWJ1dGUoJ3dtY3VzdG9td2lkZ2V0JykpXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50RGF0YShjaGlsZC5jaGlsZHJlbik7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhc0F0dHIgPSBjaGlsZC5nZXRBdHRyaWJ1dGUoJ2FzJykgfHwgJyc7XG4gICAgICAgICAgICAgICAgaWYgKCFhc0F0dHIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgYmFzZVdpZGdldCwgc3BsaXRBcnIgPSBhc0F0dHIuc3BsaXQoJy0nKSwgbW9kaWZpZWRBcnIgPSBbXTtcbiAgICAgICAgICAgICAgICBtb2RpZmllZEFyciA9IHNwbGl0QXJyLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtICE9PSAnd20nID8gY2FwaXRhbGl6ZShpdGVtKSA6IGl0ZW07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJhc2VXaWRnZXQgPSBtb2RpZmllZEFyci5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGJhc2VXaWRnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnd21DaGVja2JveHNldCc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2Jhc2VXaWRnZXRdID0gbmV3IENoZWNrYm94c2V0Q29tcG9uZW50KHRoaXMuaW5qZWN0b3IsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2Jhc2VXaWRnZXRdW1wiX3NlbGVjdFwiXSA9IChpdGVtOiBhbnksICRldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvckVhY2godGhpc1tiYXNlV2lkZ2V0XS5kYXRhc2V0SXRlbXMsIChkYXRhc2V0SXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGFzZXRJdGVtLmtleSA9PT0gaXRlbS5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0SXRlbS5zZWxlY3RlZCA9ICFkYXRhc2V0SXRlbS5zZWxlY3RlZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRhc2V0SXRlbS5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMucHVzaChkYXRhc2V0SXRlbS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbYmFzZVdpZGdldF0udHJpZ2dlckludm9rZU9uQ2hhbmdlKGtleXMsICRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnd21SYWRpb3NldCc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2Jhc2VXaWRnZXRdID0gbmV3IFJhZGlvc2V0Q29tcG9uZW50KHRoaXMuaW5qZWN0b3IsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2Jhc2VXaWRnZXRdW1wiX3NlbGVjdFwiXSA9IChpdGVtOiBhbnksICRldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tiYXNlV2lkZ2V0XS50cmlnZ2VySW52b2tlT25DaGFuZ2UoaXRlbS5rZXksICRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5jb250YWluZXJXaWRnZXQuJGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGtleS5zdGFydHNXaXRoKCdiYXNlLScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9kaWZpZWRLZXkgPSBrZXkucmVwbGFjZSgnYmFzZS0nLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2Jhc2VXaWRnZXRdW21vZGlmaWVkS2V5XSA9IHZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihtb2RpZmllZEtleSA9PT0gJ2RhdGF2YWx1ZScgJiYgdGhpcy5jb250YWluZXJXaWRnZXQuZm9ybUNvbnRyb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQudXBkYXRlRGF0YVZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzW2Jhc2VXaWRnZXRdLmluaXREYXRhc2V0SXRlbXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldFtiYXNlV2lkZ2V0XSA9IHRoaXNbYmFzZVdpZGdldF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyQmFzZVdpZGdldCgpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50RGF0YSh0aGlzLmNvbnRhaW5lcldpZGdldC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICBpbnZva2VFdmVudCA9IChldmVudE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50c1tldmVudE5hbWVdKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJFdmVudHMoKSB7XG4gICAgICAgIHRoaXMuZXZlbnRzID0ge307XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LmV2ZW50SGFuZGxlcnMuZm9yRWFjaCgoY2FsbGJhY2s6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzW2tleV0gPSAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0Lmludm9rZUV2ZW50Q2FsbGJhY2soa2V5LCB7JGV2ZW50OiBhcmdzWzBdLCAkZGF0YTogYXJnc1sxXX0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoZm46IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IGZuKCkpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyQ2hhbmdlTGlzdGVuZXJzKCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5yZWdpc3RlclByb3BlcnR5Q2hhbmdlTGlzdGVuZXIodGhpcy5vblByb3BlcnR5Q2hhbmdlKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQucmVnaXN0ZXJTdHlsZUNoYW5nZUxpc3RlbmVyKHRoaXMub25Qcm9wZXJ0eUNoYW5nZSk7XG4gICAgfVxuXG4gICAgZ2V0IGRhdGF2YWx1ZSgpIHtcbiAgICAgICAgaWYodGhpc1snZ2V0RGF0YXZhbHVlJ10pXG4gICAgICAgICAgICByZXR1cm4gdGhpc1snZ2V0RGF0YXZhbHVlJ10oKTtcbiAgICB9XG5cbiAgICBzZXQgZGF0YXZhbHVlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGF0YXZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgaW5pdFVzZXJTY3JpcHQoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBwYXJ0aWFscyBpbnNpZGUgcHJlZmFiIHNob3VsZCBoYXZlIGFjY2VzcyB0byBQcmVmYWIgcHJvcGVydGllcyBhbmQgZXZlbnRzXG4gICAgICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LnByZWZhYk5hbWUpIHtcbiAgICAgICAgICAgICAgICAvLyBmb3IgcGFydGlhbCB3aXRoaW4gcGFydGlhbCB3aXRoaW4gcHJlZmFicywganVzdCBhc3NpZ24gdGhlIHBhcmVudCBwYXJ0aWFsJ3MgcHJlZmFiIG9iamVjdFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQuUHJlZmFiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUHJlZmFiID0gdGhpcy52aWV3UGFyZW50LlByZWZhYjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLlByZWZhYiA9IHRoaXMudmlld1BhcmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV2YWxVc2VyU2NyaXB0KHRoaXMsIHRoaXMuQXBwLCB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVXRpbHNTZXJ2aWNlKSA6IGluamVjdChVdGlsc1NlcnZpY2UpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgaW4gZXZhbHVhdGluZyBwYXJ0aWFsICgke3RoaXMuY3VzdG9tV2lkZ2V0TmFtZX0pIHNjcmlwdFxcbmAsIGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdFZhcmlhYmxlcygpIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVzU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChWYXJpYWJsZXNTZXJ2aWNlKSA6IGluamVjdChWYXJpYWJsZXNTZXJ2aWNlKTtcblxuICAgICAgICAvLyBnZXQgdmFyaWFibGVzIGFuZCBhY3Rpb25zIGluc3RhbmNlcyBmb3IgdGhlIHBhZ2VcbiAgICAgICAgY29uc3QgdmFyaWFibGVDb2xsZWN0aW9uID0gdmFyaWFibGVzU2VydmljZS5yZWdpc3Rlcih0aGlzLmN1c3RvbVdpZGdldE5hbWUsIHRoaXMuZ2V0VmFyaWFibGVzKCksIHRoaXMpO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBuYW1lc3BhY2UgZm9yIFZhcmlhYmxlcyBuYWQgQWN0aW9ucyBvbiBwYWdlL3BhcnRpYWwsIHdoaWNoIGluaGVyaXRzIHRoZSBWYXJpYWJsZXMgYW5kIEFjdGlvbnMgZnJvbSBBcHAgaW5zdGFuY2VcbiAgICAgICAgdGhpcy5WYXJpYWJsZXMgPSBPYmplY3QuY3JlYXRlKHRoaXMuQXBwLlZhcmlhYmxlcyk7XG4gICAgICAgIHRoaXMuQWN0aW9ucyA9IE9iamVjdC5jcmVhdGUodGhpcy5BcHAuQWN0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuVmFyaWFibGVzID0gdGhpcy5WYXJpYWJsZXM7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LkFjdGlvbnMgPSB0aGlzLkFjdGlvbnM7XG5cbiAgICAgICAgLy8gYXNzaWduIGFsbCB0aGUgcGFnZSB2YXJpYWJsZXMgdG8gdGhlIHBhZ2VJbnN0YW5jZVxuICAgICAgICBPYmplY3QuZW50cmllcyh2YXJpYWJsZUNvbGxlY3Rpb24uVmFyaWFibGVzKS5mb3JFYWNoKChbbmFtZSwgdmFyaWFibGVdKSA9PiB0aGlzLlZhcmlhYmxlc1tuYW1lXSA9IHZhcmlhYmxlKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpLmZvckVhY2goKFtuYW1lLCBhY3Rpb25dKSA9PiB0aGlzLkFjdGlvbnNbbmFtZV0gPSBhY3Rpb24pO1xuXG5cbiAgICAgICAgdGhpcy52aWV3SW5pdCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHtcbiAgICAgICAgICAgIC8vIFRFTVA6IHRyaWdnZXJpbmcgd2F0Y2hlcnMgc28gdmFyaWFibGVzIHdhdGNoaW5nIG92ZXIgcGFyYW1zIGFyZSB1cGRhdGVkXG4gICAgICAgICAgICAkaW52b2tlV2F0Y2hlcnModHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcykuY2F0Y2gobm9vcCk7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmdW5jdGlvbiB0byByZWdpc3RlciBiaW5kIGV4cHJlc3Npb25zIGdlbmVyYXRlZCBpbiB0aGlzIHBhcnRpYWwgaW5zdGFuY2VcbiAgICAgKiBnZXRFeHByZXNzaW9ucyBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoZSBnZW5lcmF0ZWQgcGFnZS5jb21wLnRzIGZpbGVcbiAgICAgKiBAcGFyYW0gZXhwcmVzc2lvbnMsIG1hcCBvZiBiaW5kIGV4cHJlc3Npb24gdnMgZ2VuZXJhdGVkIGZ1bmN0aW9uXG4gICAgICovXG4gICAgcmVnaXN0ZXJFeHByZXNzaW9ucygpIHtcbiAgICAgICAgLy8gY29uc3QgZXhwcmVzc2lvbnMgPSB0aGlzLmdldEV4cHJlc3Npb25zKCk7XG4gICAgICAgIC8vIF8uZWFjaChleHByZXNzaW9ucywgKGZuLCBleHByKT0+e1xuICAgICAgICAvLyAgICAgcmVnaXN0ZXJGbkJ5RXhwcihleHByLCBmblswXSwgZm5bMV0pO1xuICAgICAgICAvLyB9KTtcbiAgICB9XG5cbiAgICByZWdpc3RlclByb3BzKCkge1xuICAgICAgICB0aGlzLnByb3BzID0gdGhpcy5jb250YWluZXJXaWRnZXQucHJvcHM7XG4gICAgfVxuXG4gICAgZGVmaW5lSTE4blByb3BzKCkge1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IHRoaXMuaTE4blNlcnZpY2UuZ2V0QXBwTG9jYWxlKCk7XG4gICAgfVxuXG4gICAgaW52b2tlT25SZWFkeSgpIHtcbiAgICAgICAgbGV0IHBhcmFtcztcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyV2lkZ2V0LnVzZXJDb21wb25lbnRQYXJhbXMpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnVzZXJDb21wb25lbnRQYXJhbXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblJlYWR5KHBhcmFtcyk7XG4gICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQucmVzb2x2ZUZyYWdtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQucmVzb2x2ZUZyYWdtZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRTY3JpcHRzKCkge1xuICAgICAgICAvLyByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgLy8gICAgIGNvbnN0IHNjcmlwdHNSZXF1aXJlZCA9IHRoaXMucGFydGlhbERpcmVjdGl2ZS4kZWxlbWVudC5hdHRyKCdzY3JpcHRzLXRvLWxvYWQnKTtcbiAgICAgICAgLy8gICAgIGlmIChzY3JpcHRzUmVxdWlyZWQpIHtcbiAgICAgICAgLy8gICAgICAgICB0aGlzLnNjcmlwdExvYWRlclNlcnZpY2VcbiAgICAgICAgLy8gICAgICAgICAgICAgLmxvYWQoLi4uc2NyaXB0c1JlcXVpcmVkLnNwbGl0KCcsJykpXG4gICAgICAgIC8vICAgICAgICAgICAgIC50aGVuKHJlc29sdmUpO1xuICAgICAgICAvLyAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0pO1xuICAgIH1cbiAgICByZWdpc3RlclByb3BzSW5Db250YWluZXJXaWRnZXQocmVzb2x2ZUZuOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLmN1c3RvbXdpZGdldENvbmZpZ1Byb3ZpZGVyLmdldENvbmZpZyh0aGlzLmN1c3RvbVdpZGdldE5hbWUpLnRoZW4oKGNvbmZpZykgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKChjb25maWcucHJvcGVydGllcyB8fCB7fSkpLmZvckVhY2goKFtrZXksIHByb3BdOiBbc3RyaW5nLCBhbnldKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBleHByO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IF8udHJpbShwcm9wLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoXy5zdGFydHNXaXRoKHZhbHVlLCAnYmluZDonKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwciA9IHZhbHVlLnJlcGxhY2UoJ2JpbmQ6JywgJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIGtleSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmNvbnRhaW5lcldpZGdldFtrZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBudiA9PiB0aGlzLmNvbnRhaW5lcldpZGdldC53aWRnZXRba2V5XSA9IG52XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChleHByKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL1tUb2RvLUNTUF06IGV4cHIgd2lsbCBiZSBnZW5lcmF0ZWQgd2l0aCBwcmVmYWIuY29tcC5leHByLnRzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3YXRjaChleHByLCB0aGlzLCB7fSwgbnYgPT4gdGhpcy5jb250YWluZXJXaWRnZXQud2lkZ2V0W2tleV0gPSBudilcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuc2V0UHJvcHMoY29uZmlnLCByZXNvbHZlRm4pO1xuICAgICAgICAgICAgLy8gUmVhc3NpZ25pbmcgdGhlIHByb3h5IGhhbmRsZXIgZm9yIHByZWZhYiBpbmJvdW5kIHByb3BlcnRpZXMgYXMgd2VcbiAgICAgICAgICAgIC8vIHdpbGwgZ2V0IHRoZW0gb25seSBhZnRlciB0aGUgcHJlZmFiIGNvbmZpZyBjYWxsLlxuICAgICAgICAgICAgaWYgKGlzSUUoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LndpZGdldCA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LmNyZWF0ZVByb3h5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgbXV0ZSgpIHtcbiAgICAgICAgY29uc3QgbSA9IG8gPT4geyBvICYmIG8ubXV0ZSAmJiBvLm11dGUoKTsgfTtcbiAgICAgICAgXy5lYWNoKHRoaXMuV2lkZ2V0cywgbSk7XG4gICAgICAgIF8uZWFjaCh0aGlzLlZhcmlhYmxlcywgbSk7XG4gICAgICAgIF8uZWFjaCh0aGlzLkFjdGlvbnMsIG0pO1xuICAgIH1cblxuICAgIHVubXV0ZSgpIHtcbiAgICAgICAgY29uc3QgdW0gPSBvID0+IHsgbyAmJiBvLnVubXV0ZSAmJiBvLnVubXV0ZSgpOyB9O1xuICAgICAgICBfLmVhY2godGhpcy5XaWRnZXRzLCB1bSk7XG4gICAgICAgIF8uZWFjaCh0aGlzLlZhcmlhYmxlcywgdW0pO1xuICAgICAgICBfLmVhY2godGhpcy5BY3Rpb25zLCB1bSk7XG4gICAgfVxuXG4gICAgLy8gbmdPbkluaXQoKSB7XG4gICAgLy8gICAgIHRoaXMuaW5pdCgpO1xuICAgIC8vIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWdpc3RlckNoYW5nZUxpc3RlbmVycygpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyQmFzZVdpZGdldCgpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3SW5pdCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50c0xvYWRlZCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHRoaXMuaW52b2tlT25SZWFkeSgpKTtcbiAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBuZ09uQXR0YWNoKHJlZnJlc2hEYXRhKSB7XG4gICAgICAgIHRoaXMudW5tdXRlKCk7XG4gICAgICAgIGlmIChyZWZyZXNoRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgcmVmcmVzaCA9IHYgPT4geyB2ICYmIHYuc3RhcnRVcGRhdGUgJiYgdi5pbnZva2UgJiYgdi5pbnZva2UoKTsgfTtcbiAgICAgICAgICAgIF8uZWFjaCh0aGlzLlZhcmlhYmxlcywgcmVmcmVzaCk7XG4gICAgICAgICAgICBfLmVhY2godGhpcy5BY3Rpb25zLCByZWZyZXNoKTtcbiAgICAgICAgfVxuICAgICAgICBfLmVhY2godGhpcy5XaWRnZXRzLCB3ID0+IHcgJiYgdy5uZ09uQXR0YWNoICYmIHcubmdPbkF0dGFjaCgpKTtcbiAgICB9XG5cbiAgICBuZ09uRGV0YWNoKCkge1xuICAgICAgICB0aGlzLm11dGUoKTtcbiAgICAgICAgXy5lYWNoKHRoaXMuV2lkZ2V0cywgdyA9PiB3ICYmIHcubmdPbkRldGFjaCAmJiB3Lm5nT25EZXRhY2goKSk7XG4gICAgfVxuXG4gICAgLy8gdXNlciBvdmVycmlkZXMgdGhpc1xuICAgIG9uUHJvcGVydHlDaGFuZ2UoKSB7IH1cblxuICAgIG9uUmVhZHkocGFyYW1zPykge1xuICAgIH1cbn1cbiJdfQ==
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jdXN0b20td2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9iYXNlLWN1c3RvbS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLSCxTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUNILGVBQWUsRUFDZixtQkFBbUIsRUFFbkIsR0FBRyxFQUNILElBQUksRUFDSixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLFlBQVksRUFFWixNQUFNLEVBQ04sSUFBSSxFQUNQLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBdUIsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sK0JBQStCLENBQUM7O0FBSWhFLDBDQUEwQztBQUcxQyxNQUFNLE9BQWdCLHlCQUEwQixTQUFRLGVBQWU7SUFEdkU7O1FBR0ksZUFBVSxHQUFRLEVBQUUsQ0FBQztRQXFCckIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFJdkIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFpSTFCLGdCQUFXLEdBQUcsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQTtLQXdPSjtJQXBXRywwQkFBMEI7UUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztJQUNyRSxDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksU0FBbUIsQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFBO1FBQ3BELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRSwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDckksbUZBQW1GO1FBQ25GLDJFQUEyRTtRQUMzRSw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztRQUVsRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkMsQ0FBQztRQUVELDRDQUE0QztRQUM1QyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLGdKQUFnSjtRQUNoSixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLG9CQUFvQjtRQUNuRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDeEcsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEcsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEgsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xHLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdELElBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO2dCQUMxQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELGVBQWU7UUFDWCx3REFBd0Q7UUFDeEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFbkQscUNBQXFDO1FBQ3BDLElBQUksQ0FBQyxHQUFXLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxRQUFRO1FBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDeEMsSUFBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzVDLENBQUM7Z0JBQ0YsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDVixPQUFPO2dCQUNYLENBQUM7Z0JBQ0QsSUFBSSxVQUFVLEVBQUUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFDL0QsV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDckMsSUFBSSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUMvQyxPQUFPLElBQUksQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsVUFBVSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xDLFFBQVEsVUFBVSxFQUFFLENBQUM7b0JBQ2pCLEtBQUssZUFBZTt3QkFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQzt3QkFDdEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBUyxFQUFFLE1BQVcsRUFBRSxFQUFFOzRCQUNyRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7NEJBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsV0FBZ0IsRUFBRSxFQUFFO2dDQUN4RCxJQUFHLFdBQVcsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUc7b0NBQzNCLFdBQVcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO2dDQUVqRCxJQUFHLFdBQVcsQ0FBQyxRQUFRO29DQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDbkMsQ0FBQyxDQUFDLENBQUM7NEJBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDekQsQ0FBQyxDQUFBO3dCQUNELE1BQU07b0JBQ1YsS0FBSyxZQUFZO3dCQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQVMsRUFBRSxNQUFXLEVBQUUsRUFBRTs0QkFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBQzdELENBQUMsQ0FBQTt3QkFDRCxNQUFNO2dCQUNkLENBQUM7Z0JBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ25ELElBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUN6QixJQUFJLFdBQVcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQzt3QkFFdEMsSUFBRyxXQUFXLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVzs0QkFDOUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3BELENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBTUQsY0FBYztRQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQWEsRUFBRSxHQUFXLEVBQUUsRUFBRTtZQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1lBQ3JGLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHVCQUF1QixDQUFDLEVBQVk7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsZUFBZSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxJQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsS0FBSztRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDO1lBQ0QsNEVBQTRFO1lBQzVFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDN0IsNEZBQTRGO2dCQUM1RixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3pDLENBQUM7cUJBQU0sQ0FBQztvQkFDSixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ2xDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDaEgsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxJQUFJLENBQUMsZ0JBQWdCLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RixDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDVCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXhHLG1EQUFtRDtRQUNuRCxNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZHLHlIQUF5SDtRQUN6SCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFNUMsb0RBQW9EO1FBQ3BELE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDNUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUdwRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUN0QywwRUFBMEU7WUFDMUUsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1QixrQkFBa0IsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CO1FBQ2YsNkNBQTZDO1FBQzdDLG9DQUFvQztRQUNwQyw0Q0FBNEM7UUFDNUMsTUFBTTtJQUNWLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUM1QyxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksTUFBTSxDQUFDO1FBQ1gsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0MsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUM7UUFDdEQsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEMsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXO1FBQ2YsMENBQTBDO1FBQzFDLHNGQUFzRjtRQUN0Riw2QkFBNkI7UUFDN0IsbUNBQW1DO1FBQ25DLG1EQUFtRDtRQUNuRCw4QkFBOEI7UUFDOUIsZUFBZTtRQUNmLHFCQUFxQjtRQUNyQixRQUFRO1FBQ1IsTUFBTTtJQUNWLENBQUM7SUFDRCw4QkFBOEIsQ0FBQyxTQUFtQjtRQUM5QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzdFLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQWdCLEVBQUUsRUFBRTtvQkFDN0UsSUFBSSxJQUFJLENBQUM7b0JBQ1QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBRWpDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQzt3QkFDL0IsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN0QyxDQUFDO29CQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTt3QkFDN0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO3dCQUNwQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO3FCQUNuRCxDQUFDLENBQUM7b0JBRUgsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDUCw2REFBNkQ7d0JBQzdELElBQUksQ0FBQyx1QkFBdUIsQ0FDeEIsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQ3RFLENBQUM7b0JBQ04sQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQTtZQUNOLENBQUM7WUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDakQsb0VBQW9FO1lBQ3BFLG1EQUFtRDtZQUNuRCxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsSUFBSTtRQUNBLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNO1FBQ0YsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsSUFBSTtJQUVKLGVBQWU7UUFDWCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN0QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDNUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXO1FBQ1AsOERBQThEO1FBQzlELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQztRQUVELDREQUE0RDtRQUM1RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV2QixxREFBcUQ7UUFDckQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFXO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLElBQUksV0FBVyxFQUFFLENBQUM7WUFDZCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixnQkFBZ0IsS0FBSyxDQUFDO0lBRXRCLE9BQU8sQ0FBQyxNQUFPO0lBQ2YsQ0FBQzsrR0F0WWlCLHlCQUF5QjttR0FBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUQ5QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgRGlyZWN0aXZlLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQXBwLFxuICAgIG5vb3AsXG4gICAgVmlld3BvcnQsXG4gICAgU2NyaXB0TG9hZGVyU2VydmljZSxcbiAgICBVdGlsc1NlcnZpY2UsXG4gICAgcmVnaXN0ZXJGbkJ5RXhwcixcbiAgICAkd2F0Y2gsXG4gICAgaXNJRSwgaXNEZWZpbmVkXG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7Z2V0V2lkZ2V0UHJvcHNCeVR5cGUsIFdpZGdldFJlZn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBQYWdlRGlyZWN0aXZlLCBTcGFQYWdlRGlyZWN0aXZlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQge1ByZWZhYkRpcmVjdGl2ZX0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcHJlZmFiJztcbmltcG9ydCB7IFZhcmlhYmxlc1NlcnZpY2UgfSBmcm9tICdAd20vdmFyaWFibGVzJztcbmltcG9ydCB7IEN1c3RvbXdpZGdldENvbmZpZ1Byb3ZpZGVyIH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHsgRnJhZ21lbnRNb25pdG9yIH0gZnJvbSAnLi4vdXRpbC9mcmFnbWVudC1tb25pdG9yJztcbmltcG9ydCB7IEFwcE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQge2NvbW1vblBhcnRpYWxXaWRnZXRzfSBmcm9tIFwiLi9iYXNlLXBhcnRpYWwuY29tcG9uZW50XCI7XG5pbXBvcnQge2NhcGl0YWxpemUsIGZvckVhY2h9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7Q2hlY2tib3hzZXRDb21wb25lbnR9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9jaGVja2JveHNldFwiO1xuaW1wb3J0IHtSYWRpb3NldENvbXBvbmVudH0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L3JhZGlvc2V0XCI7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuLy8gZXhwb3J0IGNvbnN0IGNvbW1vblBhcnRpYWxXaWRnZXRzID0ge307XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDdXN0b21XaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBGcmFnbWVudE1vbml0b3IgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIFdpZGdldHM6IGFueTtcbiAgICBCYXNlV2lkZ2V0OiBhbnkgPSB7fTtcbiAgICBWYXJpYWJsZXM6IGFueTtcbiAgICBBY3Rpb25zOiBhbnk7XG4gICAgQXBwOiBBcHA7XG4gICAgaW5qZWN0b3I6IEluamVjdG9yO1xuICAgIGN1c3RvbVdpZGdldE5hbWU6IHN0cmluZztcbiAgICBhY3RpdmVQYWdlTmFtZTogc3RyaW5nO1xuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcbiAgICBhcHBNYW5hZ2VyOiBBcHBNYW5hZ2VyU2VydmljZTtcbiAgICBuYXZpZ2F0aW9uU2VydmljZTogQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZTtcbiAgICByb3V0ZXI6IFJvdXRlcjtcbiAgICBwcm9wczogYW55O1xuICAgIGNvbnRhaW5lcldpZGdldDogYW55O1xuICAgIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlO1xuICAgIGFwcExvY2FsZTogYW55O1xuICAgIC8vIEBWaWV3Q2hpbGQoUGFydGlhbERpcmVjdGl2ZSkgcGFydGlhbERpcmVjdGl2ZTtcbiAgICBwYWdlRGlyZWN0aXZlOiBQYWdlRGlyZWN0aXZlIHwgU3BhUGFnZURpcmVjdGl2ZTtcbiAgICBQcmVmYWI6IFByZWZhYkRpcmVjdGl2ZTtcbiAgICBzY3JpcHRMb2FkZXJTZXJ2aWNlOiBTY3JpcHRMb2FkZXJTZXJ2aWNlO1xuICAgIGN1c3RvbXdpZGdldENvbmZpZ1Byb3ZpZGVyOiBDdXN0b213aWRnZXRDb25maWdQcm92aWRlcjtcbiAgICBWaWV3cG9ydDogVmlld3BvcnQ7XG4gICAgY29tcGlsZUNvbnRlbnQgPSBmYWxzZTtcbiAgICBzcGE6IGJvb2xlYW47XG4gICAgZXZlbnRzOiBhbnk7XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdmlld0luaXQkID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIHZpZXdQYXJlbnQ6IGFueTtcblxuICAgIGFic3RyYWN0IGV2YWxVc2VyU2NyaXB0KHByZWZhYkNvbnRleHQ6IGFueSwgYXBwQ29udGV4dDogYW55LCB1dGlsczogYW55KTtcblxuICAgIGFic3RyYWN0IGdldFZhcmlhYmxlcygpO1xuXG4gICAgZ2V0Q29udGFpbmVyV2lkZ2V0SW5qZWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcldpZGdldC5pbmogfHwgdGhpcy5jb250YWluZXJXaWRnZXQuaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgbGV0IHJlc29sdmVGbjogRnVuY3Rpb247XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzKT0+IHJlc29sdmVGbiA9IHJlcylcbiAgICAgICAgdGhpcy5BcHAgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQXBwKSA6IGluamVjdChBcHApO1xuICAgICAgICAvL21ha2luZyB0aGUgY29kZSBjb21wYXRpYmxlIGluIGJvdGggdGhlIEpJVCBhbmQgQU9UIG1vZGVzXG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0ID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFdpZGdldFJlZikgOiBpbmplY3QoV2lkZ2V0UmVmKTtcbiAgICAgICAgdGhpcy5pMThuU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBYnN0cmFjdEkxOG5TZXJ2aWNlKSA6IGluamVjdChBYnN0cmFjdEkxOG5TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFNjcmlwdExvYWRlclNlcnZpY2UpIDogaW5qZWN0KFNjcmlwdExvYWRlclNlcnZpY2UpO1xuICAgICAgICB0aGlzLlZpZXdwb3J0ID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFZpZXdwb3J0KSA6IGluamVjdChWaWV3cG9ydCk7XG4gICAgICAgIHRoaXMuY3VzdG9td2lkZ2V0Q29uZmlnUHJvdmlkZXIgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQ3VzdG9td2lkZ2V0Q29uZmlnUHJvdmlkZXIpIDogaW5qZWN0KEN1c3RvbXdpZGdldENvbmZpZ1Byb3ZpZGVyKTtcbiAgICAgICAgLy8gdGhpcy52aWV3Q29udGFpbmVyUmVmID0gdGhpcy5nZXRDb250YWluZXJXaWRnZXRJbmplY3RvcigpLmdldChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgLy8gUmVwbGFjaW5nIHRoaXMuZ2V0Q29udGFpbmVyV2lkZ2V0SW5qZWN0b3IoKS52aWV3LmNvbXBvbmVudCBhcyB2aWV3UGFyZW50XG4gICAgICAgIC8vIHRoaXMudmlld1BhcmVudCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5wYXJlbnRJbmplY3Rvci5fbFZpZXdbOF07XG4gICAgICAgIHRoaXMudmlld1BhcmVudCA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnZpZXdQYXJlbnQ7XG5cbiAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudC5yZWdpc3RlckZyYWdtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQucmVnaXN0ZXJGcmFnbWVudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVnaXN0ZXIgZnVuY3Rpb25zIGZvciBiaW5kaW5nIGV2YWx1YXRpb25cbiAgICAgICAgdGhpcy5yZWdpc3RlckV4cHJlc3Npb25zKCk7XG4gICAgICAgIHRoaXMuaW5pdFVzZXJTY3JpcHQoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclByb3BzSW5Db250YWluZXJXaWRnZXQocmVzb2x2ZUZuKTtcbiAgICAgICAgLy8gVXNpbmcgcHJvbWlzZSB0byBtYWtlIHN1cmUgdGhlIHByb3BzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBjb250YWluZXIgd2lkZ2V0IGJlZm9yZSByZWdpc3RlcmluZyBldmVudHMsIE90aGVyd2lzZSBubyBldmVudHMgd2lsbCBiZSByZWdpc3RlcmVkXG4gICAgICAgIHByb21pc2UudGhlbigoKSA9PiB0aGlzLnJlZ2lzdGVyRXZlbnRzKCkpO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJXaWRnZXRzKCk7XG4gICAgICAgIHRoaXMuaW5pdFZhcmlhYmxlcygpO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLkFwcC5hY3RpdmVQYWdlTmFtZTsgLy8gVG9kbzogcmVtb3ZlIHRoaXNcbiAgICAgICAgdGhpcy5yZWdpc3RlclByb3BzKCk7XG4gICAgICAgIHRoaXMuZGVmaW5lSTE4blByb3BzKCk7XG5cbiAgICAgICAgdGhpcy52aWV3SW5pdCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMgPSB0aGlzLmNvbnRhaW5lcldpZGdldC5wcm9wcztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYodGhpcy5zcGEpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZURpcmVjdGl2ZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChTcGFQYWdlRGlyZWN0aXZlKSA6IGluamVjdChTcGFQYWdlRGlyZWN0aXZlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFnZURpcmVjdGl2ZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChQYWdlRGlyZWN0aXZlKSA6IGluamVjdChQYWdlRGlyZWN0aXZlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYWdlRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHRoaXMucGFnZURpcmVjdGl2ZS5zdWJzY3JpYmUoJ2F0dGFjaCcsIGRhdGEgPT4gdGhpcy5uZ09uQXR0YWNoKGRhdGEucmVmcmVzaERhdGEpKSk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHRoaXMucGFnZURpcmVjdGl2ZS5zdWJzY3JpYmUoJ2RldGFjaCcsICgpID0+IHRoaXMubmdPbkRldGFjaCgpKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQub25FcnJvU3ViamVjdC5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYodGhpc1snb25WYWxpZFN0YXR1c0NoYW5nZSddKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzWydvblZhbGlkU3RhdHVzQ2hhbmdlJ10oKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN1cGVyLmluaXQoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlcldpZGdldHMoKSB7XG4gICAgICAgIC8vIGNvbW1vbiBwYXJ0aWFsIHdpZGdldHMgc2hvdWxkIGJlIGFjY2Vzc2libGUgZnJvbSBwYWdlXG4gICAgICAgIHRoaXMuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUoY29tbW9uUGFydGlhbFdpZGdldHMpO1xuXG4gICAgICAgIC8vIGV4cG9zZSBjdXJyZW50IHBhZ2Ugd2lkZ2V0cyBvbiBhcHBcbiAgICAgICAgKHRoaXMuQXBwIGFzIGFueSkuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUodGhpcy5XaWRnZXRzKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ29tcG9uZW50RGF0YShjaGlsZHJlbikge1xuICAgICAgICBBcnJheS5mcm9tKGNoaWxkcmVuKS5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZighY2hpbGQuaGFzQXR0cmlidXRlKCd3bWN1c3RvbXdpZGdldCcpKVxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudERhdGEoY2hpbGQuY2hpbGRyZW4pO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXNBdHRyID0gY2hpbGQuZ2V0QXR0cmlidXRlKCdhcycpIHx8ICcnO1xuICAgICAgICAgICAgICAgIGlmICghYXNBdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGJhc2VXaWRnZXQsIHNwbGl0QXJyID0gYXNBdHRyLnNwbGl0KCctJyksIG1vZGlmaWVkQXJyID0gW107XG4gICAgICAgICAgICAgICAgbW9kaWZpZWRBcnIgPSBzcGxpdEFyci5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpdGVtID0gaXRlbSAhPT0gJ3dtJyA/IGNhcGl0YWxpemUoaXRlbSkgOiBpdGVtO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBiYXNlV2lkZ2V0ID0gbW9kaWZpZWRBcnIuam9pbignJyk7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChiYXNlV2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dtQ2hlY2tib3hzZXQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tiYXNlV2lkZ2V0XSA9IG5ldyBDaGVja2JveHNldENvbXBvbmVudCh0aGlzLmluamVjdG9yLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tiYXNlV2lkZ2V0XVtcIl9zZWxlY3RcIl0gPSAoaXRlbTogYW55LCAkZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JFYWNoKHRoaXNbYmFzZVdpZGdldF0uZGF0YXNldEl0ZW1zLCAoZGF0YXNldEl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRhc2V0SXRlbS5rZXkgPT09IGl0ZW0ua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldEl0ZW0uc2VsZWN0ZWQgPSAhZGF0YXNldEl0ZW0uc2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YXNldEl0ZW0uc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzLnB1c2goZGF0YXNldEl0ZW0ua2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2Jhc2VXaWRnZXRdLnRyaWdnZXJJbnZva2VPbkNoYW5nZShrZXlzLCAkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dtUmFkaW9zZXQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tiYXNlV2lkZ2V0XSA9IG5ldyBSYWRpb3NldENvbXBvbmVudCh0aGlzLmluamVjdG9yLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tiYXNlV2lkZ2V0XVtcIl9zZWxlY3RcIl0gPSAoaXRlbTogYW55LCAkZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbYmFzZVdpZGdldF0udHJpZ2dlckludm9rZU9uQ2hhbmdlKGl0ZW0ua2V5LCAkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHRoaXMuY29udGFpbmVyV2lkZ2V0LiRhdHRycykge1xuICAgICAgICAgICAgICAgICAgICBpZihrZXkuc3RhcnRzV2l0aCgnYmFzZS0nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmaWVkS2V5ID0ga2V5LnJlcGxhY2UoJ2Jhc2UtJywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tiYXNlV2lkZ2V0XVttb2RpZmllZEtleV0gPSB2YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYobW9kaWZpZWRLZXkgPT09ICdkYXRhdmFsdWUnICYmIHRoaXMuY29udGFpbmVyV2lkZ2V0LmZvcm1Db250cm9sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LnVwZGF0ZURhdGFWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpc1tiYXNlV2lkZ2V0XS5pbml0RGF0YXNldEl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXRbYmFzZVdpZGdldF0gPSB0aGlzW2Jhc2VXaWRnZXRdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWdpc3RlckJhc2VXaWRnZXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudERhdGEodGhpcy5jb250YWluZXJXaWRnZXQubmF0aXZlRWxlbWVudC5jaGlsZHJlbik7XG4gICAgfVxuXG4gICAgaW52b2tlRXZlbnQgPSAoZXZlbnROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5ldmVudHNbZXZlbnROYW1lXSgpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyRXZlbnRzKCkge1xuICAgICAgICB0aGlzLmV2ZW50cyA9IHt9O1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5ldmVudEhhbmRsZXJzLmZvckVhY2goKGNhbGxiYWNrOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV2ZW50c1trZXldID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5pbnZva2VFdmVudENhbGxiYWNrKGtleSwgeyRldmVudDogYXJnc1swXSwgJGRhdGE6IGFyZ3NbMV19KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKGZuOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiBmbigpKTtcbiAgICB9XG5cbiAgICByZWdpc3RlckNoYW5nZUxpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQucmVnaXN0ZXJQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyKHRoaXMub25Qcm9wZXJ0eUNoYW5nZSk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LnJlZ2lzdGVyU3R5bGVDaGFuZ2VMaXN0ZW5lcih0aGlzLm9uUHJvcGVydHlDaGFuZ2UpO1xuICAgIH1cblxuICAgIGdldCBkYXRhdmFsdWUoKSB7XG4gICAgICAgIGlmKHRoaXNbJ2dldERhdGF2YWx1ZSddKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXNbJ2dldERhdGF2YWx1ZSddKCk7XG4gICAgfVxuXG4gICAgc2V0IGRhdGF2YWx1ZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGluaXRVc2VyU2NyaXB0KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gcGFydGlhbHMgaW5zaWRlIHByZWZhYiBzaG91bGQgaGF2ZSBhY2Nlc3MgdG8gUHJlZmFiIHByb3BlcnRpZXMgYW5kIGV2ZW50c1xuICAgICAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudC5wcmVmYWJOYW1lKSB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIHBhcnRpYWwgd2l0aGluIHBhcnRpYWwgd2l0aGluIHByZWZhYnMsIGp1c3QgYXNzaWduIHRoZSBwYXJlbnQgcGFydGlhbCdzIHByZWZhYiBvYmplY3RcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LlByZWZhYikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLlByZWZhYiA9IHRoaXMudmlld1BhcmVudC5QcmVmYWI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5QcmVmYWIgPSB0aGlzLnZpZXdQYXJlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ldmFsVXNlclNjcmlwdCh0aGlzLCB0aGlzLkFwcCwgdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFV0aWxzU2VydmljZSkgOiBpbmplY3QoVXRpbHNTZXJ2aWNlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGluIGV2YWx1YXRpbmcgcGFydGlhbCAoJHt0aGlzLmN1c3RvbVdpZGdldE5hbWV9KSBzY3JpcHRcXG5gLCBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRWYXJpYWJsZXMoKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVmFyaWFibGVzU2VydmljZSkgOiBpbmplY3QoVmFyaWFibGVzU2VydmljZSk7XG5cbiAgICAgICAgLy8gZ2V0IHZhcmlhYmxlcyBhbmQgYWN0aW9ucyBpbnN0YW5jZXMgZm9yIHRoZSBwYWdlXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlQ29sbGVjdGlvbiA9IHZhcmlhYmxlc1NlcnZpY2UucmVnaXN0ZXIodGhpcy5jdXN0b21XaWRnZXROYW1lLCB0aGlzLmdldFZhcmlhYmxlcygpLCB0aGlzKTtcblxuICAgICAgICAvLyBjcmVhdGUgbmFtZXNwYWNlIGZvciBWYXJpYWJsZXMgbmFkIEFjdGlvbnMgb24gcGFnZS9wYXJ0aWFsLCB3aGljaCBpbmhlcml0cyB0aGUgVmFyaWFibGVzIGFuZCBBY3Rpb25zIGZyb20gQXBwIGluc3RhbmNlXG4gICAgICAgIHRoaXMuVmFyaWFibGVzID0gT2JqZWN0LmNyZWF0ZSh0aGlzLkFwcC5WYXJpYWJsZXMpO1xuICAgICAgICB0aGlzLkFjdGlvbnMgPSBPYmplY3QuY3JlYXRlKHRoaXMuQXBwLkFjdGlvbnMpO1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LlZhcmlhYmxlcyA9IHRoaXMuVmFyaWFibGVzO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5BY3Rpb25zID0gdGhpcy5BY3Rpb25zO1xuXG4gICAgICAgIC8vIGFzc2lnbiBhbGwgdGhlIHBhZ2UgdmFyaWFibGVzIHRvIHRoZSBwYWdlSW5zdGFuY2VcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcykuZm9yRWFjaCgoW25hbWUsIHZhcmlhYmxlXSkgPT4gdGhpcy5WYXJpYWJsZXNbbmFtZV0gPSB2YXJpYWJsZSk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlQ29sbGVjdGlvbi5BY3Rpb25zKS5mb3JFYWNoKChbbmFtZSwgYWN0aW9uXSkgPT4gdGhpcy5BY3Rpb25zW25hbWVdID0gYWN0aW9uKTtcblxuXG4gICAgICAgIHRoaXMudmlld0luaXQkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiB7XG4gICAgICAgICAgICAvLyBURU1QOiB0cmlnZ2VyaW5nIHdhdGNoZXJzIHNvIHZhcmlhYmxlcyB3YXRjaGluZyBvdmVyIHBhcmFtcyBhcmUgdXBkYXRlZFxuICAgICAgICAgICAgJGludm9rZVdhdGNoZXJzKHRydWUsIHRydWUpO1xuICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHZhcmlhYmxlQ29sbGVjdGlvbi5WYXJpYWJsZXMpLmNhdGNoKG5vb3ApO1xuICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHZhcmlhYmxlQ29sbGVjdGlvbi5BY3Rpb25zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZnVuY3Rpb24gdG8gcmVnaXN0ZXIgYmluZCBleHByZXNzaW9ucyBnZW5lcmF0ZWQgaW4gdGhpcyBwYXJ0aWFsIGluc3RhbmNlXG4gICAgICogZ2V0RXhwcmVzc2lvbnMgZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiB0aGUgZ2VuZXJhdGVkIHBhZ2UuY29tcC50cyBmaWxlXG4gICAgICogQHBhcmFtIGV4cHJlc3Npb25zLCBtYXAgb2YgYmluZCBleHByZXNzaW9uIHZzIGdlbmVyYXRlZCBmdW5jdGlvblxuICAgICAqL1xuICAgIHJlZ2lzdGVyRXhwcmVzc2lvbnMoKSB7XG4gICAgICAgIC8vIGNvbnN0IGV4cHJlc3Npb25zID0gdGhpcy5nZXRFeHByZXNzaW9ucygpO1xuICAgICAgICAvLyBfLmVhY2goZXhwcmVzc2lvbnMsIChmbiwgZXhwcik9PntcbiAgICAgICAgLy8gICAgIHJlZ2lzdGVyRm5CeUV4cHIoZXhwciwgZm5bMF0sIGZuWzFdKTtcbiAgICAgICAgLy8gfSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJQcm9wcygpIHtcbiAgICAgICAgdGhpcy5wcm9wcyA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnByb3BzO1xuICAgIH1cblxuICAgIGRlZmluZUkxOG5Qcm9wcygpIHtcbiAgICAgICAgdGhpcy5hcHBMb2NhbGUgPSB0aGlzLmkxOG5TZXJ2aWNlLmdldEFwcExvY2FsZSgpO1xuICAgIH1cblxuICAgIGludm9rZU9uUmVhZHkoKSB7XG4gICAgICAgIGxldCBwYXJhbXM7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lcldpZGdldC51c2VyQ29tcG9uZW50UGFyYW1zKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSB0aGlzLmNvbnRhaW5lcldpZGdldC51c2VyQ29tcG9uZW50UGFyYW1zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25SZWFkeShwYXJhbXMpO1xuICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LnJlc29sdmVGcmFnbWVudCkge1xuICAgICAgICAgICAgdGhpcy52aWV3UGFyZW50LnJlc29sdmVGcmFnbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkU2NyaXB0cygpIHtcbiAgICAgICAgLy8gcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgIC8vICAgICBjb25zdCBzY3JpcHRzUmVxdWlyZWQgPSB0aGlzLnBhcnRpYWxEaXJlY3RpdmUuJGVsZW1lbnQuYXR0cignc2NyaXB0cy10by1sb2FkJyk7XG4gICAgICAgIC8vICAgICBpZiAoc2NyaXB0c1JlcXVpcmVkKSB7XG4gICAgICAgIC8vICAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlXG4gICAgICAgIC8vICAgICAgICAgICAgIC5sb2FkKC4uLnNjcmlwdHNSZXF1aXJlZC5zcGxpdCgnLCcpKVxuICAgICAgICAvLyAgICAgICAgICAgICAudGhlbihyZXNvbHZlKTtcbiAgICAgICAgLy8gICAgIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9KTtcbiAgICB9XG4gICAgcmVnaXN0ZXJQcm9wc0luQ29udGFpbmVyV2lkZ2V0KHJlc29sdmVGbjogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5jdXN0b213aWRnZXRDb25maWdQcm92aWRlci5nZXRDb25maWcodGhpcy5jdXN0b21XaWRnZXROYW1lKS50aGVuKChjb25maWcpID0+IHtcbiAgICAgICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcygoY29uZmlnLnByb3BlcnRpZXMgfHwge30pKS5mb3JFYWNoKChba2V5LCBwcm9wXTogW3N0cmluZywgYW55XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZXhwcjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBfLnRyaW0ocHJvcC52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKF8uc3RhcnRzV2l0aCh2YWx1ZSwgJ2JpbmQ6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIgPSB2YWx1ZS5yZXBsYWNlKCdiaW5kOicsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBrZXksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4gdGhpcy5jb250YWluZXJXaWRnZXRba2V5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldDogbnYgPT4gdGhpcy5jb250YWluZXJXaWRnZXQud2lkZ2V0W2tleV0gPSBudlxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZXhwcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9bVG9kby1DU1BdOiBleHByIHdpbGwgYmUgZ2VuZXJhdGVkIHdpdGggcHJlZmFiLmNvbXAuZXhwci50c1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2F0Y2goZXhwciwgdGhpcywge30sIG52ID0+IHRoaXMuY29udGFpbmVyV2lkZ2V0LndpZGdldFtrZXldID0gbnYpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LnNldFByb3BzKGNvbmZpZywgcmVzb2x2ZUZuKTtcbiAgICAgICAgICAgIC8vIFJlYXNzaWduaW5nIHRoZSBwcm94eSBoYW5kbGVyIGZvciBwcmVmYWIgaW5ib3VuZCBwcm9wZXJ0aWVzIGFzIHdlXG4gICAgICAgICAgICAvLyB3aWxsIGdldCB0aGVtIG9ubHkgYWZ0ZXIgdGhlIHByZWZhYiBjb25maWcgY2FsbC5cbiAgICAgICAgICAgIGlmIChpc0lFKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC53aWRnZXQgPSB0aGlzLmNvbnRhaW5lcldpZGdldC5jcmVhdGVQcm94eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIG11dGUoKSB7XG4gICAgICAgIGNvbnN0IG0gPSBvID0+IHsgbyAmJiBvLm11dGUgJiYgby5tdXRlKCk7IH07XG4gICAgICAgIF8uZWFjaCh0aGlzLldpZGdldHMsIG0pO1xuICAgICAgICBfLmVhY2godGhpcy5WYXJpYWJsZXMsIG0pO1xuICAgICAgICBfLmVhY2godGhpcy5BY3Rpb25zLCBtKTtcbiAgICB9XG5cbiAgICB1bm11dGUoKSB7XG4gICAgICAgIGNvbnN0IHVtID0gbyA9PiB7IG8gJiYgby51bm11dGUgJiYgby51bm11dGUoKTsgfTtcbiAgICAgICAgXy5lYWNoKHRoaXMuV2lkZ2V0cywgdW0pO1xuICAgICAgICBfLmVhY2godGhpcy5WYXJpYWJsZXMsIHVtKTtcbiAgICAgICAgXy5lYWNoKHRoaXMuQWN0aW9ucywgdW0pO1xuICAgIH1cblxuICAgIC8vIG5nT25Jbml0KCkge1xuICAgIC8vICAgICB0aGlzLmluaXQoKTtcbiAgICAvLyB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckJhc2VXaWRnZXQoKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld0luaXQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mcmFnbWVudHNMb2FkZWQkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiB0aGlzLmludm9rZU9uUmVhZHkoKSk7XG4gICAgICAgICAgICB9LCAxMDApO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENvbXBsZXRlIFN1YmplY3RzIHRvIHJlbGVhc2Ugc3Vic2NyaXB0aW9uc1xuICAgICAgICBpZiAodGhpcy5kZXN0cm95JCkge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95JCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmlld0luaXQkKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdJbml0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgdGhpcy52aWV3SW5pdCQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciByZWZlcmVuY2VzIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzXG4gICAgICAgIHRoaXMuV2lkZ2V0cyA9IG51bGw7XG4gICAgICAgIHRoaXMuQmFzZVdpZGdldCA9IG51bGw7XG4gICAgICAgIHRoaXMuVmFyaWFibGVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5BY3Rpb25zID0gbnVsbDtcbiAgICAgICAgdGhpcy5BcHAgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldCA9IG51bGw7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2UgPSBudWxsO1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGFnZURpcmVjdGl2ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuUHJlZmFiID0gbnVsbDtcbiAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXN0b213aWRnZXRDb25maWdQcm92aWRlciA9IG51bGw7XG4gICAgICAgIHRoaXMuVmlld3BvcnQgPSBudWxsO1xuICAgICAgICB0aGlzLnJvdXRlID0gbnVsbDtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyID0gbnVsbDtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2VydmljZSA9IG51bGw7XG4gICAgICAgIHRoaXMucm91dGVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcm9wcyA9IG51bGw7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gbnVsbDtcbiAgICAgICAgdGhpcy52aWV3UGFyZW50ID0gbnVsbDtcblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFudXAgRnJhZ21lbnRNb25pdG9yIHJlc291cmNlc1xuICAgICAgICB0aGlzLmNsZWFudXBGcmFnbWVudE1vbml0b3IoKTtcbiAgICB9XG5cbiAgICBuZ09uQXR0YWNoKHJlZnJlc2hEYXRhKSB7XG4gICAgICAgIHRoaXMudW5tdXRlKCk7XG4gICAgICAgIGlmIChyZWZyZXNoRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgcmVmcmVzaCA9IHYgPT4geyB2ICYmIHYuc3RhcnRVcGRhdGUgJiYgdi5pbnZva2UgJiYgdi5pbnZva2UoKTsgfTtcbiAgICAgICAgICAgIF8uZWFjaCh0aGlzLlZhcmlhYmxlcywgcmVmcmVzaCk7XG4gICAgICAgICAgICBfLmVhY2godGhpcy5BY3Rpb25zLCByZWZyZXNoKTtcbiAgICAgICAgfVxuICAgICAgICBfLmVhY2godGhpcy5XaWRnZXRzLCB3ID0+IHcgJiYgdy5uZ09uQXR0YWNoICYmIHcubmdPbkF0dGFjaCgpKTtcbiAgICB9XG5cbiAgICBuZ09uRGV0YWNoKCkge1xuICAgICAgICB0aGlzLm11dGUoKTtcbiAgICAgICAgXy5lYWNoKHRoaXMuV2lkZ2V0cywgdyA9PiB3ICYmIHcubmdPbkRldGFjaCAmJiB3Lm5nT25EZXRhY2goKSk7XG4gICAgfVxuXG4gICAgLy8gdXNlciBvdmVycmlkZXMgdGhpc1xuICAgIG9uUHJvcGVydHlDaGFuZ2UoKSB7IH1cblxuICAgIG9uUmVhZHkocGFyYW1zPykge1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -43,6 +43,12 @@ export class BaseLayoutComponent {
|
|
|
43
43
|
}
|
|
44
44
|
//TODO: To work cache properly need to implement the below methods and WmRouteReuseStrategy
|
|
45
45
|
ngOnDestroy() {
|
|
46
|
+
// MEMORY LEAK FIX: Clear references to prevent memory leaks
|
|
47
|
+
this.App = null;
|
|
48
|
+
this.routerOutlet = null;
|
|
49
|
+
this.pageDirective = null;
|
|
50
|
+
this.layoutPages = null;
|
|
51
|
+
this.layoutName = null;
|
|
46
52
|
}
|
|
47
53
|
canReuse() {
|
|
48
54
|
}
|
|
@@ -67,4 +73,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
67
73
|
type: ViewChild,
|
|
68
74
|
args: [PageDirective]
|
|
69
75
|
}] } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9jb21wb25lbnRzL2Jhc2UtbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBdUIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBaUIsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxHQUFHLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7O0FBR3ZDLE1BQU0sT0FBZ0IsbUJBQW1CO0lBV3JDOzs7O09BSUc7SUFDSCxtQkFBbUI7UUFDZixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUMzQixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLG9CQUFvQjtRQUN4QixvQ0FBb0M7UUFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxZQUFpQixFQUFFLGNBQStCLEVBQUUsRUFBRTtZQUM5RSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQzlELFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO1lBQzVCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3JELE9BQU8sWUFBWSxDQUFDO1FBQ3hCLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlO1FBQ1gsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2hDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxJQUFJO1FBQ0EsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUV4Qyw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELDJGQUEyRjtJQUMzRixXQUFXO1FBQ1AsNERBQTREO1FBQzVELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELFVBQVU7SUFDVixDQUFDO0lBRUQsVUFBVTtJQUNWLENBQUM7SUFFRCxtRkFBbUY7SUFDbkYsVUFBVSxDQUFDLGFBQWtCO1FBQ3pCLGtIQUFrSDtRQUNsSCxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7K0dBM0VpQixtQkFBbUI7bUdBQW5CLG1CQUFtQix3RUFNMUIsWUFBWSxnRkFDWixhQUFhOzs0RkFQTixtQkFBbUI7a0JBRHhDLFNBQVM7OEJBT21CLFlBQVk7c0JBQXBDLFNBQVM7dUJBQUMsWUFBWTtnQkFDRyxhQUFhO3NCQUF0QyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgSW5qZWN0b3IsIE9uRGVzdHJveSwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlck91dGxldH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtQYWdlRGlyZWN0aXZlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZVwiO1xuaW1wb3J0IHtBcHAsIHJlZ2lzdGVyRm5CeUV4cHJ9IGZyb20gXCJAd20vY29yZVwiO1xuaW1wb3J0IHtlYWNoLCBleHRlbmR9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUxheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgaW5qZWN0b3I6IEluamVjdG9yO1xuICAgIEFwcDogQXBwO1xuICAgIGxheW91dE5hbWU6IHN0cmluZztcbiAgICBsYXlvdXRQYWdlczogc3RyaW5nW107XG5cbiAgICBAVmlld0NoaWxkKFJvdXRlck91dGxldCkgcm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQ7XG4gICAgQFZpZXdDaGlsZChQYWdlRGlyZWN0aXZlKSBwYWdlRGlyZWN0aXZlOiBQYWdlRGlyZWN0aXZlO1xuXG4gICAgYWJzdHJhY3QgZ2V0RXhwcmVzc2lvbnMoKTtcblxuICAgIC8qKlxuICAgICAqIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIGJpbmQgZXhwcmVzc2lvbnMgZ2VuZXJhdGVkIGluIHRoaXMgcGFnZSBpbnN0YW5jZVxuICAgICAqIGdldEV4cHJlc3Npb25zIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gdGhlIGdlbmVyYXRlZCBwYWdlLmNvbXAudHMgZmlsZVxuICAgICAqIEBwYXJhbSBleHByZXNzaW9ucywgbWFwIG9mIGJpbmQgZXhwcmVzc2lvbiB2cyBnZW5lcmF0ZWQgZnVuY3Rpb25cbiAgICAgKi9cbiAgICByZWdpc3RlckV4cHJlc3Npb25zKCkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9ucyA9IHRoaXMuZ2V0RXhwcmVzc2lvbnMoKTtcbiAgICAgICAgZWFjaChleHByZXNzaW9ucywgKGZuLCBleHByKSA9PiB7XG4gICAgICAgICAgICByZWdpc3RlckZuQnlFeHByKGV4cHIsIGZuWzBdLCBmblsxXSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3ZlcnJpZGVSb3V0ZXJPdXRsZXQoKSB7XG4gICAgICAgIC8vb3ZlcnJpZGUgdGhlIGF0dGFjaC9kZXRhY2ggbWV0aG9kc1xuICAgICAgICBjb25zdCBvQXR0YWNoID0gdGhpcy5yb3V0ZXJPdXRsZXQuYXR0YWNoO1xuICAgICAgICBjb25zdCBvRGV0YWNoID0gdGhpcy5yb3V0ZXJPdXRsZXQuZGV0YWNoO1xuICAgICAgICB0aGlzLnJvdXRlck91dGxldC5hdHRhY2ggPSAoY29tcG9uZW50UmVmOiBhbnksIGFjdGl2YXRlZFJvdXRlOiAgQWN0aXZhdGVkUm91dGUpID0+IHtcbiAgICAgICAgICAgIG9BdHRhY2guY2FsbCh0aGlzLnJvdXRlck91dGxldCwgY29tcG9uZW50UmVmLCBhY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubmdPbkF0dGFjaCgpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJvdXRlck91dGxldC5kZXRhY2ggPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBvRGV0YWNoLmNhbGwodGhpcy5yb3V0ZXJPdXRsZXQpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vdmVycmlkZVJvdXRlck91dGxldCgpO1xuICAgICAgICB9LCAxMCk7XG4gICAgfVxuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5BcHAgPSB0aGlzLmluamVjdG9yLmdldChBcHApO1xuICAgICAgICB0aGlzLkFwcC5hY3RpdmVMYXlvdXROYW1lID0gdGhpcy5sYXlvdXROYW1lO1xuICAgICAgICB0aGlzLkFwcC5sYXlvdXRQYWdlcyA9IHRoaXMubGF5b3V0UGFnZXM7XG5cbiAgICAgICAgLy8gcmVnaXN0ZXIgZnVuY3Rpb25zIGZvciBiaW5kaW5nIGV2YWx1YXRpb25cbiAgICAgICAgdGhpcy5yZWdpc3RlckV4cHJlc3Npb25zKCk7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBUbyB3b3JrIGNhY2hlIHByb3Blcmx5IG5lZWQgdG8gaW1wbGVtZW50IHRoZSBiZWxvdyBtZXRob2RzIGFuZCBXbVJvdXRlUmV1c2VTdHJhdGVneVxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIHJlZmVyZW5jZXMgdG8gcHJldmVudCBtZW1vcnkgbGVha3NcbiAgICAgICAgdGhpcy5BcHAgPSBudWxsO1xuICAgICAgICB0aGlzLnJvdXRlck91dGxldCA9IG51bGw7XG4gICAgICAgIHRoaXMucGFnZURpcmVjdGl2ZSA9IG51bGw7XG4gICAgICAgIHRoaXMubGF5b3V0UGFnZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmxheW91dE5hbWUgPSBudWxsO1xuICAgIH1cblxuICAgIGNhblJldXNlKCkge1xuICAgIH1cblxuICAgIG5nT25BdHRhY2goKSB7XG4gICAgfVxuXG4gICAgbmdPbkRldGFjaCgpIHtcbiAgICB9XG5cbiAgICAvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIHdoZW4gY2hpbGQgcm91dGUgKFBhZ2UgY29tcG9uZW50IGluIHRoZSBsYXlvdXQpIGlzIGFjdGl2YXRlZFxuICAgIG9uQWN0aXZhdGUocGFnZUNvbXBvbmVudDogYW55KSB7XG4gICAgICAgIC8vQWRkIHBhZ2UgY29tcG9uZW50IHNjb3BlIHRvIGxheW91dCBjb21wb25lbnQgc28gdGhhdCBiaW5kaW5ncyBhbmQgd2F0Y2hlcnMgaW4gdGhlIGxheW91dCB3aWxsIHVzZSB0aGUgcGFnZSBzY29wZVxuICAgICAgICBleHRlbmQodGhpcywgcGFnZUNvbXBvbmVudCk7XG4gICAgfVxufVxuIl19
|