@acorex/platform 18.1.3 → 18.1.5
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/common/lib/app/app-startup.service.d.ts +16 -0
- package/common/lib/app/application.types.d.ts +3 -1
- package/common/lib/app/index.d.ts +1 -0
- package/common/lib/common.module.d.ts +7 -1
- package/common/lib/configs/app.config.d.ts +1 -0
- package/common/lib/data/dexie-storage.service.d.ts +18 -2
- package/common/lib/data/entity-data-provider.d.ts +2 -2
- package/common/lib/data/{storage-service.d.ts → entity-storage-service.d.ts} +1 -1
- package/common/lib/data/index.d.ts +1 -1
- package/common/lib/layout/theme/components/slots/index.d.ts +0 -1
- package/common/lib/layout/theme/store/admin-layout.actions.d.ts +0 -1
- package/common/lib/layout/theme/store/admin-layout.effects.d.ts +1 -2
- package/common/lib/layout/theme/store/admin-layout.reducers.d.ts +0 -5
- package/common/lib/layout/theme/store/admin-layout.selectors.d.ts +0 -1
- package/common/lib/layout/theme/store/admin-layout.state.d.ts +0 -3
- package/common/lib/schema/widgets/common-widget-filter/boolean-widget-filter.component.d.ts +1 -1
- package/common/lib/schema/widgets/text/largetext-widget-edit.component.d.ts +1 -1
- package/common/lib/settings/index.d.ts +1 -1
- package/common/lib/settings/settings.provider.d.ts +7 -0
- package/common/lib/settings/settings.service.d.ts +8 -4
- package/common/lib/settings/settings.types.d.ts +2 -3
- package/common/lib/store/common.actions.d.ts +7 -1
- package/common/lib/store/common.effects.d.ts +6 -1
- package/esm2022/common/lib/app/app-startup.service.mjs +40 -0
- package/esm2022/common/lib/app/application.types.mjs +1 -1
- package/esm2022/common/lib/app/index.mjs +2 -1
- package/esm2022/common/lib/common.module.mjs +39 -9
- package/esm2022/common/lib/configs/app.config.mjs +2 -1
- package/esm2022/common/lib/data/dexie-storage.service.mjs +84 -2
- package/esm2022/common/lib/data/entity-data-provider.mjs +1 -1
- package/esm2022/common/lib/data/entity-storage-service.mjs +5 -0
- package/esm2022/common/lib/data/index.mjs +2 -2
- package/esm2022/common/lib/layout/theme/components/slots/index.mjs +1 -2
- package/esm2022/common/lib/layout/theme/store/admin-layout.actions.mjs +1 -2
- package/esm2022/common/lib/layout/theme/store/admin-layout.effects.mjs +6 -14
- package/esm2022/common/lib/layout/theme/store/admin-layout.reducers.mjs +5 -7
- package/esm2022/common/lib/layout/theme/store/admin-layout.selectors.mjs +1 -2
- package/esm2022/common/lib/layout/theme/store/admin-layout.state.mjs +1 -4
- package/esm2022/common/lib/schema/widgets/common-widget-filter/boolean-widget-filter.component.mjs +15 -9
- package/esm2022/common/lib/schema/widgets/common-widget-filter/number-widget-filter.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.mjs +38 -11
- package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-filter.component.mjs +43 -15
- package/esm2022/common/lib/schema/widgets/number/number-widget-edit.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-filter.component.mjs +10 -6
- package/esm2022/common/lib/schema/widgets/text/largetext-widget-edit.component.mjs +15 -16
- package/esm2022/common/lib/settings/index.mjs +2 -2
- package/esm2022/common/lib/settings/settings.provider.mjs +35 -0
- package/esm2022/common/lib/settings/settings.service.mjs +36 -6
- package/esm2022/common/lib/settings/settings.types.mjs +1 -1
- package/esm2022/common/lib/store/common.actions.mjs +3 -2
- package/esm2022/common/lib/store/common.effects.mjs +10 -6
- package/esm2022/layout/builder/lib/builder/builder.service.mjs +4 -6
- package/esm2022/layout/builder/lib/builder/widget-renderer.component.directive.mjs +33 -11
- package/esm2022/layout/builder/lib/builder/widget.types.mjs +10 -13
- package/esm2022/layout/designer/lib/designer/components/add-widget-button/add-widget-line-button.component.mjs +49 -0
- package/esm2022/layout/designer/lib/designer/components/add-widget-button/add-widget-mini-button.component.mjs +53 -0
- package/esm2022/layout/designer/lib/designer/components/add-widget-button/index.mjs +4 -0
- package/esm2022/layout/designer/lib/designer/components/board/board.component.mjs +7 -3
- package/esm2022/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.mjs +1 -1
- package/esm2022/layout/designer/lib/designer/components/widget-picker/widget-picker.component.mjs +24 -9
- package/esm2022/layout/designer/lib/designer/designer.component.mjs +4 -4
- package/esm2022/layout/designer/lib/designer/index.mjs +3 -3
- package/esm2022/layout/designer/lib/designer/shared/designer-connector.service.mjs +1 -1
- package/esm2022/layout/designer/lib/designer/shared/designer.service.mjs +2 -4
- package/esm2022/layout/designer/lib/designer/shared/designer.types.mjs +6 -0
- package/esm2022/layout/designer/lib/designer/shared/widget-designer-renderer.directive.mjs +2 -3
- package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +3 -3
- package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +3 -4
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +23 -6
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.mjs +45 -9
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +1 -1
- package/esm2022/layouts/lib/admin/entity-layout/workflows/delete-entity.workflow.mjs +2 -1
- package/esm2022/themes/default/lib/default.module.mjs +7 -3
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +3 -3
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +17 -4
- package/esm2022/themes/default/lib/layouts/root-layout/components/header/header.component.mjs +3 -3
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +8 -3
- package/esm2022/themes/shared/index.mjs +3 -1
- package/esm2022/themes/shared/lib/comments/comment-list-view.component.mjs +44 -20
- package/esm2022/themes/shared/lib/comments/comments.service.mjs +1 -1
- package/esm2022/themes/shared/lib/comments/comments.type.mjs +1 -1
- package/esm2022/themes/shared/lib/components/theme-slot.component.mjs +117 -0
- package/esm2022/themes/shared/lib/services/theme.service.mjs +79 -0
- package/esm2022/themes/shared/lib/shared.module.mjs +14 -8
- package/esm2022/widgets/lib/widgets/actions/button/button-widget-designer.component.mjs +2 -2
- package/esm2022/widgets/lib/widgets/actions/button/button-widget-view.component.mjs +1 -2
- package/esm2022/widgets/lib/widgets/actions/button/button-widget.config.mjs +3 -2
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.mjs +1 -1
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.mjs +35 -23
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-designer.component.mjs +3 -2
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-edit.component.mjs +3 -2
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-view.component.mjs +4 -3
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +33 -32
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget.config.mjs +5 -24
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-edit.component.mjs +32 -22
- package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-edit.component.mjs +5 -4
- package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-view.component.mjs +5 -5
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-edit.component.mjs +23 -11
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-print.component.mjs +3 -2
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-view.component.mjs +68 -28
- package/esm2022/widgets/lib/widgets/layout/block/block-widget-designer.component.mjs +7 -8
- package/esm2022/widgets/lib/widgets/layout/block/block-widget-view.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/layout/block/block-widget.config.mjs +3 -2
- package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.mjs +11 -10
- package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget.config.mjs +6 -2
- package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-designer.component.mjs +6 -6
- package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-view.component.mjs +5 -4
- package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.mjs +8 -19
- package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-view.component.mjs +5 -4
- package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-designer.component.mjs +2 -1
- package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.mjs +5 -4
- package/esm2022/widgets/lib/widgets/layout/page/page-widget-designer.component.mjs +95 -9
- package/esm2022/widgets/lib/widgets/layout/page/page-widget-view.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/layout/page/page-widget.config.mjs +18 -3
- package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-designer.component.mjs +10 -10
- package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.mjs +18 -11
- package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget.config.mjs +3 -2
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-CfqY7kKi.mjs → acorex-platform-common-avatar-widget-edit.component-CSSz-dqg.mjs} +4 -4
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-CfqY7kKi.mjs.map → acorex-platform-common-avatar-widget-edit.component-CSSz-dqg.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-avatar-widget-view.component-DXC7INdQ.mjs → acorex-platform-common-avatar-widget-view.component-WofmamJK.mjs} +2 -3
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-WofmamJK.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-DLGnsXy4.mjs → acorex-platform-common-boolean-widget-filter.component-ByoMpVAs.mjs} +14 -9
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-ByoMpVAs.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-change-password.component-BBPFxmB6.mjs → acorex-platform-common-change-password.component-Djd4SeNv.mjs} +6 -6
- package/fesm2022/{acorex-platform-common-change-password.component-BBPFxmB6.mjs.map → acorex-platform-common-change-password.component-Djd4SeNv.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-Ch2bdAjo.mjs → acorex-platform-common-checkbox-widget-column.component-BAK1Wlh_.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-Ch2bdAjo.mjs.map → acorex-platform-common-checkbox-widget-column.component-BAK1Wlh_.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-DOGMfGby.mjs → acorex-platform-common-checkbox-widget-edit.component-C1PgHZsE.mjs} +2 -3
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-C1PgHZsE.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-BhGOtblX.mjs → acorex-platform-common-checkbox-widget-view.component-B4BG4mCQ.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-BhGOtblX.mjs.map → acorex-platform-common-checkbox-widget-view.component-B4BG4mCQ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-BkUDt0Kj.mjs → acorex-platform-common-dateTime-widget-column.component-BnW8m1wn.mjs} +2 -3
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-BnW8m1wn.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DEqsapFH.mjs → acorex-platform-common-dateTime-widget-edit.component-DCYX2iyT.mjs} +5 -5
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DEqsapFH.mjs.map → acorex-platform-common-dateTime-widget-edit.component-DCYX2iyT.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-CqddjYjP.mjs → acorex-platform-common-dateTime-widget-filter.component-Dbxz84tm.mjs} +37 -11
- package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-Dbxz84tm.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-BKUPKE9M.mjs → acorex-platform-common-dateTime-widget-view.component-Bg1h8xAj.mjs} +2 -3
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-BKUPKE9M.mjs.map → acorex-platform-common-dateTime-widget-view.component-Bg1h8xAj.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-email-widget-column.component-BOer2nZi.mjs → acorex-platform-common-email-widget-column.component-BqRR2jW9.mjs} +2 -3
- package/fesm2022/acorex-platform-common-email-widget-column.component-BqRR2jW9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-BoKsGiEI.mjs → acorex-platform-common-email-widget-edit.component-C7oCyByG.mjs} +5 -5
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-BoKsGiEI.mjs.map → acorex-platform-common-email-widget-edit.component-C7oCyByG.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-email-widget-view.component-BZtK5dMd.mjs → acorex-platform-common-email-widget-view.component-hfVZnW_L.mjs} +2 -3
- package/fesm2022/{acorex-platform-common-email-widget-view.component-BZtK5dMd.mjs.map → acorex-platform-common-email-widget-view.component-hfVZnW_L.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-column.component-DpcUmwAT.mjs → acorex-platform-common-file-widget-column.component-Dt2mR6hJ.mjs} +1 -2
- package/fesm2022/acorex-platform-common-file-widget-column.component-Dt2mR6hJ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-CNLXguLn.mjs → acorex-platform-common-file-widget-edit.component-DQol3UN8.mjs} +4 -4
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-CNLXguLn.mjs.map → acorex-platform-common-file-widget-edit.component-DQol3UN8.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-filter.component-Dwt-LYWG.mjs → acorex-platform-common-file-widget-filter.component-CGd1mY-z.mjs} +2 -3
- package/fesm2022/acorex-platform-common-file-widget-filter.component-CGd1mY-z.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-view.component-CjDhjHQR.mjs → acorex-platform-common-file-widget-view.component-lKWnGSSb.mjs} +4 -4
- package/fesm2022/{acorex-platform-common-file-widget-view.component-CjDhjHQR.mjs.map → acorex-platform-common-file-widget-view.component-lKWnGSSb.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-CzKFKaPH.mjs → acorex-platform-common-gallery-widget-edit.component-DgjY3ZWk.mjs} +6 -6
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-CzKFKaPH.mjs.map → acorex-platform-common-gallery-widget-edit.component-DgjY3ZWk.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-B-KxKtY4.mjs → acorex-platform-common-gallery-widget-filter.component-CUw4kxTW.mjs} +2 -3
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-CUw4kxTW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-ca-JB8qW.mjs → acorex-platform-common-gallery-widget-view.component-DK52JTds.mjs} +5 -5
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-ca-JB8qW.mjs.map → acorex-platform-common-gallery-widget-view.component-DK52JTds.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-CrqPJ58V.mjs → acorex-platform-common-largetext-widget-edit.component-7bbHUOnp.mjs} +16 -18
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-7bbHUOnp.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-column.component-BEZNLQZi.mjs → acorex-platform-common-lookup-widget-column.component-PGf5qjC4.mjs} +2 -3
- package/fesm2022/{acorex-platform-common-lookup-widget-column.component-BEZNLQZi.mjs.map → acorex-platform-common-lookup-widget-column.component-PGf5qjC4.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-D50jPeKP.mjs → acorex-platform-common-lookup-widget-edit.component-CGZf6rH2.mjs} +2 -3
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-CGZf6rH2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-CZHDDnR3.mjs → acorex-platform-common-lookup-widget-filter.component-CUBdIuu9.mjs} +41 -13
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-CUBdIuu9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-view.component-CQCvJxgi.mjs → acorex-platform-common-lookup-widget-view.component-dmGctRc9.mjs} +2 -3
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-dmGctRc9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-edit.component-OanYRQ3B.mjs → acorex-platform-common-map-widget-edit.component-Cyi6AF9u.mjs} +2 -3
- package/fesm2022/acorex-platform-common-map-widget-edit.component-Cyi6AF9u.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-view.component-BWdndMYJ.mjs → acorex-platform-common-map-widget-view.component-Cbl1KClC.mjs} +2 -3
- package/fesm2022/acorex-platform-common-map-widget-view.component-Cbl1KClC.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-column.component-BHP6R3OI.mjs → acorex-platform-common-messenger-widget-column.component-BGiTw0jL.mjs} +2 -3
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-BGiTw0jL.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-B7ycb6tX.mjs → acorex-platform-common-messenger-widget-edit.component-BBSmai_5.mjs} +4 -4
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-BBSmai_5.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-Dz5X-FS5.mjs → acorex-platform-common-messenger-widget-view.component-C15KdEZ6.mjs} +2 -3
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-Dz5X-FS5.mjs.map → acorex-platform-common-messenger-widget-view.component-C15KdEZ6.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-number-widget-edit.component-XSWI6466.mjs → acorex-platform-common-number-widget-edit.component-CGmS-gd7.mjs} +5 -6
- package/fesm2022/acorex-platform-common-number-widget-edit.component-CGmS-gd7.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-filter.component-BOT9wPJ5.mjs → acorex-platform-common-number-widget-filter.component-8RC01k_0.mjs} +6 -6
- package/fesm2022/acorex-platform-common-number-widget-filter.component-8RC01k_0.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-view.component-CP5aboLU.mjs → acorex-platform-common-number-widget-view.component-DGPcZ-yE.mjs} +2 -3
- package/fesm2022/acorex-platform-common-number-widget-view.component-DGPcZ-yE.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-column.component-CGxTbd_S.mjs → acorex-platform-common-password-widget-column.component-O3L2DvZq.mjs} +2 -3
- package/fesm2022/{acorex-platform-common-password-widget-column.component-CGxTbd_S.mjs.map → acorex-platform-common-password-widget-column.component-O3L2DvZq.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-password-widget-edit.component-CHQ_Kp4t.mjs → acorex-platform-common-password-widget-edit.component-DZz6rAL3.mjs} +6 -7
- package/fesm2022/acorex-platform-common-password-widget-edit.component-DZz6rAL3.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-view.component-BQ9jlt6g.mjs → acorex-platform-common-password-widget-view.component-OxinnOs8.mjs} +3 -3
- package/fesm2022/{acorex-platform-common-password-widget-view.component-BQ9jlt6g.mjs.map → acorex-platform-common-password-widget-view.component-OxinnOs8.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-RJp6wHul.mjs → acorex-platform-common-phone-widget-column.component-D9AXNMVq.mjs} +2 -3
- package/fesm2022/acorex-platform-common-phone-widget-column.component-D9AXNMVq.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-BB5wTbjd.mjs → acorex-platform-common-phone-widget-edit.component-CKvODAMQ.mjs} +5 -5
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-BB5wTbjd.mjs.map → acorex-platform-common-phone-widget-edit.component-CKvODAMQ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-SIzFWfjV.mjs → acorex-platform-common-phone-widget-view.component-Cx-SrpUs.mjs} +2 -3
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-SIzFWfjV.mjs.map → acorex-platform-common-phone-widget-view.component-Cx-SrpUs.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-Ced0WqvI.mjs → acorex-platform-common-rich-text-widget-column.component-C7IqYbqM.mjs} +2 -3
- package/fesm2022/acorex-platform-common-rich-text-widget-column.component-C7IqYbqM.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-Do3YcmKg.mjs → acorex-platform-common-rich-text-widget-edit.component-DtEcLWte.mjs} +2 -2
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-DtEcLWte.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-BIRyPRtw.mjs → acorex-platform-common-rich-text-widget-view.component-DI4I6wII.mjs} +2 -3
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-DI4I6wII.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-DxeK2RPc.mjs → acorex-platform-common-selection-list-widget-column.component-CHDTopqW.mjs} +2 -3
- package/fesm2022/acorex-platform-common-selection-list-widget-column.component-CHDTopqW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-CBLEeILz.mjs → acorex-platform-common-selection-list-widget-edit.component-Ds7Pc22g.mjs} +4 -5
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-Ds7Pc22g.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-B01t7mso.mjs → acorex-platform-common-selection-list-widget-filter.component-D7h2tUqB.mjs} +11 -9
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-D7h2tUqB.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-QJMp11dd.mjs → acorex-platform-common-selection-list-widget-view.component-DGuotR-q.mjs} +2 -3
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-DGuotR-q.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-BQiY7RIp.mjs → acorex-platform-common-signature-pad-widget-edit.component-DPr0hCtB.mjs} +4 -4
- package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-BQiY7RIp.mjs.map → acorex-platform-common-signature-pad-widget-edit.component-DPr0hCtB.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-CEhRqgEn.mjs → acorex-platform-common-signature-pad-widget-view.component-CdqZ17tU.mjs} +2 -3
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-CdqZ17tU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-string-widget-filter.component--L4PeRCB.mjs → acorex-platform-common-string-widget-filter.component-Ctde9CDD.mjs} +6 -6
- package/fesm2022/acorex-platform-common-string-widget-filter.component-Ctde9CDD.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-column.component-ytX4OqZX.mjs → acorex-platform-common-text-widget-column.component-BHd_WWKq.mjs} +2 -3
- package/fesm2022/acorex-platform-common-text-widget-column.component-BHd_WWKq.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-edit.component-CN7OyTfJ.mjs → acorex-platform-common-text-widget-edit.component-BwfelIOW.mjs} +4 -4
- package/fesm2022/acorex-platform-common-text-widget-edit.component-BwfelIOW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-view.component-B-R4-5Ra.mjs → acorex-platform-common-text-widget-view.component-SHWXqKZS.mjs} +2 -3
- package/fesm2022/{acorex-platform-common-text-widget-view.component-B-R4-5Ra.mjs.map → acorex-platform-common-text-widget-view.component-SHWXqKZS.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-B5NFRPgX.mjs → acorex-platform-common-toggle-widget-column.component-Dc_Ahdvn.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-B5NFRPgX.mjs.map → acorex-platform-common-toggle-widget-column.component-Dc_Ahdvn.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-CLWHwf8V.mjs → acorex-platform-common-toggle-widget-edit.component-BnPyXdAA.mjs} +2 -2
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-BnPyXdAA.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-Di2S7vub.mjs → acorex-platform-common-toggle-widget-view.component-D14GMwWe.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-Di2S7vub.mjs.map → acorex-platform-common-toggle-widget-view.component-D14GMwWe.mjs.map} +1 -1
- package/fesm2022/acorex-platform-common.mjs +326 -181
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +43 -26
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +125 -19
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +67 -15
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-CPGbLM4C.mjs.map +1 -1
- package/fesm2022/acorex-platform-layouts-entity-import-view.component-CZpEcVi9.mjs.map +1 -1
- package/fesm2022/acorex-platform-layouts-entity-modify-view.component-Bt4MLEou.mjs.map +1 -1
- package/fesm2022/acorex-platform-layouts.mjs +2 -1
- package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
- package/fesm2022/acorex-platform-mocks.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CNXG0nP4.mjs +294 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CNXG0nP4.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bnrabotu.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-D5QQ2HAv.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-DSY_D3Iq.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-B6wSkMdd.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default.mjs +21 -12
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +239 -26
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-B9bfVuC4.mjs → acorex-platform-widgets-button-widget-designer.component-M_JuDPbt.mjs} +2 -2
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-M_JuDPbt.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-j1jG8pCr.mjs.map +1 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-DzGg-uFi.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-tPk6Gylo.mjs → acorex-platform-widgets-checkbox-widget-view.component-CDA7Jwov.mjs} +35 -23
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-CDA7Jwov.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-Bb3aXCNZ.mjs → acorex-platform-widgets-color-box-widget-designer.component-DIvi0BtT.mjs} +3 -2
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-DIvi0BtT.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-contact-widget-filter.component-GTwK51nJ.mjs.map +1 -1
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-BL_EAwUs.mjs +153 -0
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-BL_EAwUs.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-RCdFIz45.mjs.map +1 -1
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-Bi9hlpvB.mjs.map +1 -1
- package/fesm2022/acorex-platform-widgets.mjs +286 -220
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/layout/builder/lib/builder/builder.service.d.ts +1 -1
- package/layout/builder/lib/builder/widget-renderer.component.directive.d.ts +5 -1
- package/layout/builder/lib/builder/widget.types.d.ts +4 -4
- package/layout/designer/lib/designer/components/add-widget-button/add-widget-line-button.component.d.ts +8 -0
- package/layout/designer/lib/designer/components/add-widget-button/add-widget-mini-button.component.d.ts +9 -0
- package/layout/designer/lib/designer/components/add-widget-button/index.d.ts +3 -0
- package/layout/designer/lib/designer/components/board/board.component.d.ts +1 -0
- package/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.d.ts +1 -1
- package/layout/designer/lib/designer/components/widget-picker/widget-picker.component.d.ts +3 -1
- package/layout/designer/lib/designer/index.d.ts +2 -2
- package/layout/designer/lib/designer/shared/designer-connector.service.d.ts +1 -1
- package/layout/designer/lib/designer/shared/designer.service.d.ts +2 -2
- package/layout/entity/lib/entity-master-list.viewmodel.d.ts +2 -1
- package/package.json +19 -19
- package/themes/default/lib/default.module.d.ts +2 -1
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +3 -1
- package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +2 -1
- package/themes/shared/README.md +2 -3
- package/themes/shared/index.d.ts +2 -0
- package/themes/shared/lib/comments/comment-list-view.component.d.ts +3 -2
- package/themes/shared/lib/comments/comments.service.d.ts +6 -6
- package/themes/shared/lib/comments/comments.type.d.ts +5 -5
- package/themes/shared/lib/components/theme-slot.component.d.ts +23 -0
- package/themes/shared/lib/services/theme.service.d.ts +21 -0
- package/themes/shared/lib/shared.module.d.ts +6 -4
- package/widgets/lib/widgets/advance/map/map-box-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/advance/signature/signature-pad-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/color/color-box-widget-designer.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/color/color-box-widget-edit.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/color/color-box-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/contact/contact-widget-edit.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/large-text/large-text-widget-edit.component.d.ts +1 -3
- package/widgets/lib/widgets/editors/number/number-box-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/number/number-box-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/password/password-box-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +2 -0
- package/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/toggle/toggle-widget-print.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/toggle/toggle-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/layout/grid/grid-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.d.ts +0 -2
- package/widgets/lib/widgets/layout/grid-item/grid-item-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/layout/page/page-widget-designer.component.d.ts +11 -1
- package/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.d.ts +3 -3
- package/common/lib/layout/theme/components/slots/theme-slot.component.d.ts +0 -8
- package/common/lib/settings/settings.loader.d.ts +0 -8
- package/esm2022/common/lib/data/storage-service.mjs +0 -5
- package/esm2022/common/lib/layout/theme/components/slots/theme-slot.component.mjs +0 -48
- package/esm2022/common/lib/settings/settings.loader.mjs +0 -17
- package/esm2022/layout/designer/lib/designer/shared/designer.typs.mjs +0 -6
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-DXC7INdQ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-DLGnsXy4.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-DOGMfGby.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-BkUDt0Kj.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-CqddjYjP.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-column.component-BOer2nZi.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-column.component-DpcUmwAT.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-filter.component-Dwt-LYWG.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-B-KxKtY4.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-CrqPJ58V.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-D50jPeKP.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-CZHDDnR3.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-CQCvJxgi.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-edit.component-OanYRQ3B.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-view.component-BWdndMYJ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-BHP6R3OI.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-B7ycb6tX.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-edit.component-XSWI6466.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-filter.component-BOT9wPJ5.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-view.component-CP5aboLU.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-edit.component-CHQ_Kp4t.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-phone-widget-column.component-RJp6wHul.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-column.component-Ced0WqvI.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-Do3YcmKg.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-BIRyPRtw.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-column.component-DxeK2RPc.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-CBLEeILz.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-B01t7mso.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-QJMp11dd.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-CEhRqgEn.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-string-widget-filter.component--L4PeRCB.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-text-widget-column.component-ytX4OqZX.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-text-widget-edit.component-CN7OyTfJ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-CLWHwf8V.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-fZ6QEYcd.mjs +0 -281
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-fZ6QEYcd.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-B9bfVuC4.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-tPk6Gylo.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-Bb3aXCNZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-6BMZ0qRw.mjs +0 -67
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-6BMZ0qRw.mjs.map +0 -1
- /package/layout/designer/lib/designer/shared/{designer.typs.d.ts → designer.types.d.ts} +0 -0
|
@@ -42,8 +42,8 @@ import * as i14 from "@acorex/components/skeleton";
|
|
|
42
42
|
export class AXPCommentListViewComponent {
|
|
43
43
|
constructor() {
|
|
44
44
|
this.hasCooldown = signal(false);
|
|
45
|
-
this.isSubmitting = signal(false);
|
|
46
45
|
this.commentContent = signal('');
|
|
46
|
+
this.isSubmitting = signal(false);
|
|
47
47
|
this.isReplyingMode = signal(false);
|
|
48
48
|
this.isEditingMode = signal(false);
|
|
49
49
|
this.isLoading = signal(true);
|
|
@@ -65,8 +65,9 @@ export class AXPCommentListViewComponent {
|
|
|
65
65
|
instanceId: this.routeParams.params?.['id'],
|
|
66
66
|
}));
|
|
67
67
|
this.comments = signal([]);
|
|
68
|
+
this.wysiwyg = viewChild('w');
|
|
68
69
|
this.wysiwygOptions = signal({
|
|
69
|
-
look: '
|
|
70
|
+
look: 'solid',
|
|
70
71
|
});
|
|
71
72
|
this.avatarConfig = signal({
|
|
72
73
|
color: 'primary',
|
|
@@ -87,7 +88,6 @@ export class AXPCommentListViewComponent {
|
|
|
87
88
|
};
|
|
88
89
|
}
|
|
89
90
|
ngOnInit() {
|
|
90
|
-
debugger;
|
|
91
91
|
this.loadComments();
|
|
92
92
|
this.time = Math.random() * -100000000;
|
|
93
93
|
}
|
|
@@ -109,7 +109,9 @@ export class AXPCommentListViewComponent {
|
|
|
109
109
|
this.isLoading.set(true);
|
|
110
110
|
const response = await this.commentService.get(this.payload());
|
|
111
111
|
this.comments.set(response.items);
|
|
112
|
-
|
|
112
|
+
setTimeout(() => {
|
|
113
|
+
this.isLoading.set(false);
|
|
114
|
+
}, 250);
|
|
113
115
|
}
|
|
114
116
|
editMessage(comment, reply) {
|
|
115
117
|
this.isReplyingMode.set(false);
|
|
@@ -121,11 +123,17 @@ export class AXPCommentListViewComponent {
|
|
|
121
123
|
document.getElementsByClassName('ql-editor')[0].innerHTML = contentToEdit;
|
|
122
124
|
this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
123
125
|
}
|
|
124
|
-
|
|
126
|
+
replyMessage(comment, reply) {
|
|
125
127
|
this.isEditingMode.set(false);
|
|
126
128
|
this.activeEditComment.set(undefined);
|
|
127
129
|
this.isReplyingMode.set(true);
|
|
128
130
|
this.activeReplyComment.set(comment);
|
|
131
|
+
if (reply) {
|
|
132
|
+
const mention = `<a data-id="${reply.id}">@${reply.user.userName}</a> `;
|
|
133
|
+
this.commentContent.set(mention);
|
|
134
|
+
this.wysiwyg()?.focus();
|
|
135
|
+
document.getElementsByClassName('ql-editor')[0].innerHTML = mention;
|
|
136
|
+
}
|
|
129
137
|
this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
130
138
|
}
|
|
131
139
|
async deleteComment(comment) {
|
|
@@ -315,6 +323,7 @@ export class AXPCommentListViewComponent {
|
|
|
315
323
|
.filter((comment) => comment !== null));
|
|
316
324
|
}
|
|
317
325
|
async submitComment(isPrivate = false) {
|
|
326
|
+
debugger;
|
|
318
327
|
if (!this.validateContent(this.commentContent()).result) {
|
|
319
328
|
return;
|
|
320
329
|
}
|
|
@@ -331,17 +340,32 @@ export class AXPCommentListViewComponent {
|
|
|
331
340
|
const popup = await this.popupService.open(AXPCommentLookupPopup, popupConfig);
|
|
332
341
|
memberLookup = popup.data?.data?.lookup;
|
|
333
342
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
343
|
+
if (this.isEditingMode()) {
|
|
344
|
+
const payload = {
|
|
345
|
+
id: this.activeEditComment()?.id,
|
|
346
|
+
content: this.commentContent(),
|
|
347
|
+
};
|
|
348
|
+
await this.commentService.update(payload);
|
|
349
|
+
this.isSubmitting.set(true);
|
|
350
|
+
this.hasCooldown.set(true);
|
|
351
|
+
this.isEditingMode.set(false);
|
|
352
|
+
this.activeEditComment.set(undefined);
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
const payload = {
|
|
356
|
+
...this.payload(),
|
|
357
|
+
content: this.commentContent(),
|
|
358
|
+
contentType: 'text',
|
|
359
|
+
isPrivate: isPrivate,
|
|
360
|
+
replyId: this.activeReplyComment()?.id,
|
|
361
|
+
members: isPrivate ? [memberLookup] : [],
|
|
362
|
+
};
|
|
363
|
+
await this.commentService.create(payload);
|
|
364
|
+
this.isSubmitting.set(true);
|
|
365
|
+
this.hasCooldown.set(true);
|
|
366
|
+
this.isReplyingMode.set(false);
|
|
367
|
+
this.activeReplyComment.set(undefined);
|
|
368
|
+
}
|
|
345
369
|
const response = await this.commentService.get(this.payload());
|
|
346
370
|
this.comments.set(response.items);
|
|
347
371
|
this.commentContent.set('');
|
|
@@ -358,7 +382,7 @@ export class AXPCommentListViewComponent {
|
|
|
358
382
|
const el = document.getElementById(comment.id);
|
|
359
383
|
if (el) {
|
|
360
384
|
el.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
361
|
-
const content = el?.firstElementChild
|
|
385
|
+
const content = el?.firstElementChild;
|
|
362
386
|
const prevBg = content.style.background;
|
|
363
387
|
content.style.borderRadius = '0.25rem';
|
|
364
388
|
content.style.transition = 'background 1s ease-in-out';
|
|
@@ -369,7 +393,7 @@ export class AXPCommentListViewComponent {
|
|
|
369
393
|
}
|
|
370
394
|
}
|
|
371
395
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPCommentListViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
372
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPCommentListViewComponent, isStandalone: true, selector: "axp-comment-list-view", viewQueries: [{ propertyName: "wysiwygEditor", first: true, predicate: ["w"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ax-mt-2\">\n <ax-comment-container>\n @if(isLoading()){\n <div class=\"ax-flex ax-items-center ax-py-12 ax-bg-surface ax-px-5\">\n <ax-skeleton class=\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8/12 ax-h-2 ax-rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if(!isLoading() && comments().length > 0){\n <ax-comment-view class=\"ax-bg-surface\">\n @for(comment of comments(); track comment.id){\n <ax-comment-item [id]=\"comment.id\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(comment.id) && comment.user.picture){\n <ax-image (onError)=\"handleImageError(comment.id)\" [src]=\"comment.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(comment.user.firstName + ' ' + comment.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ comment.user.firstName + ' ' + comment.user.lastName }}</ax-title>\n <ax-comment-date>{{ time | format : 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(comment.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment)\" [liked]=\"comment.isLiked\">\n {{ comment.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyComment(comment)\"></ax-comment-reply-text>\n @for(reply of comment.replies; track reply.id){\n <ax-comment-item [id]=\"reply.id\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(reply.id) && reply.user.picture){\n <ax-image (onError)=\"handleImageError(reply.id)\" [src]=\"reply.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(reply.user.firstName + ' ' + reply.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ (reply?.user?.firstName ?? '') + ' ' + (reply?.user?.lastName ?? '') }}</ax-title>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteReply(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(reply.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment, reply)\" [liked]=\"reply.isLiked\">\n {{ reply.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyComment(reply)\"></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n } </ax-comment-view\n >} @else{\n <div>\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\">\n <svg\n class=\"ax-mx-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"154\"\n height=\"161\"\n viewBox=\"0 0 154 161\"\n fill=\"none\"\n >\n <path\n d=\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\"\n fill=\"#EEF2FF\"\n />\n <path\n d=\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\"\n fill=\"white\"\n stroke=\"#E5E7EB\"\n />\n <ellipse cx=\"80.0618\" cy=\"81\" rx=\"28.0342\" ry=\"28.0342\" fill=\"#EEF2FF\" />\n <path\n d=\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\"\n fill=\"#A5B4FC\"\n stroke=\"#818CF8\"\n />\n <path\n d=\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\"\n fill=\"#4F46E5\"\n />\n <rect x=\"38.3522\" y=\"21.5128\" width=\"41.0256\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"133.65\" width=\"54.7009\" height=\"5.47009\" rx=\"2.73504\" fill=\"#A5B4FC\" />\n <rect x=\"38.3522\" y=\"29.7179\" width=\"13.6752\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"56.13\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"61.6001\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"67.0702\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n </svg>\n <div>\n <h2 class=\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\">\n There is no Comment!\n </h2>\n </div>\n </div>\n </div>\n }\n </ax-comment-container>\n <ax-form>\n <ax-form-field>\n <div class=\"ax-border ax-overflow-hidden ax-rounded-lg\">\n @if(isReplyingMode() || isEditingMode()){\n <div\n class=\"ax-flex ax-justify-between ax-border-b ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\"\n >\n <div (click)=\"scrollMain()\" class=\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\">\n <i\n [class]=\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\"\n class=\"fa-solid ax-text-primary-500 ax-text-2xl ax-me-4\"\n ></i>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4\">\n <p class=\"ax-text-primary-500\">\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\n <span class=\"ax-font-bold\">\n {{\n isReplyingMode()\n ? activeReplyComment()?.user?.firstName + ' ' + activeReplyComment()?.user?.lastName\n : ''\n }}\n </span>\n </p>\n <div\n class=\"ax-truncate\"\n [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(activeReplyComment()?.content ?? '')\n : sanitizeHtml(activeEditComment()?.content ?? '')\n \"\n ></div>\n </div>\n </div>\n <div><i (click)=\"resetReplyEditState()\" class=\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\"></i></div>\n </div>\n }\n <ax-wysiwyg-container #w [look]=\"wysiwygOptions().look\" [(ngModel)]=\"commentContent\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-wysiwyg-toolbar>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n <ax-suffix>\n <ax-dropdown-button\n [disabled]=\"hasCooldown()\"\n type=\"submit\"\n color=\"primary\"\n mode=\"split\"\n text=\"Send\"\n (onClick)=\"submitComment()\"\n >\n @if(isSubmitting()){ <ax-loading></ax-loading> }\n <ax-button-item-list>\n <ax-button-item (click)=\"submitComment(true)\" text=\"Send Private ...\" name=\"private\" data=\"private\">\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-user-secret\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-wysiwyg-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateContent }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </div>\n </ax-form-field>\n </ax-form>\n</div>\n", styles: ["ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXCommentModule }, { kind: "component", type: i4.AXCommentViewComponent, selector: "ax-comment-view" }, { kind: "component", type: i4.AXCommentContainerComponent, selector: "ax-comment-container" }, { kind: "component", type: i4.AxCommentItemComponent, selector: "ax-comment-item", inputs: ["replyCount"] }, { kind: "component", type: i4.AXCommentLikeComponent, selector: "ax-comment-like", inputs: ["liked"] }, { kind: "component", type: i4.AXMenuOptionsComponent, selector: "ax-comment-menu-options" }, { kind: "component", type: i4.AXCommentReplyTextComponent, selector: "ax-comment-reply-text" }, { kind: "component", type: i4.AXCommentDateComponent, selector: "ax-comment-date" }, { kind: "ngmodule", type: AXWysiwygModule }, { kind: "component", type: i5.AXWysiwygContainerComponent, selector: "ax-wysiwyg-container", inputs: ["look", "placeHolder"], outputs: ["onValueChanged"] }, { kind: "component", type: i5.AXWysiwygViewComponent, selector: "ax-wysiwyg-view", inputs: ["class"] }, { kind: "component", type: i5.AXWysiwygToolbarComponent, selector: "ax-wysiwyg-toolbar" }, { kind: "component", type: i5.AXWysiwygAlignmentComponent, selector: "ax-wysiwyg-alignment" }, { kind: "component", type: i5.AXWysiwygColorsComponent, selector: "ax-wysiwyg-colors" }, { kind: "component", type: i5.AXWysiwygFontStyleComponent, selector: "ax-wysiwyg-font-style" }, { kind: "component", type: i5.AXWysiwygHistoryComponent, selector: "ax-wysiwyg-history" }, { kind: "component", type: i5.AXWysiwygListComponent, selector: "ax-wysiwyg-list" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i6.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i6.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i6.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i7.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i8.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i9.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i9.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i9.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i10.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i11.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i12.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i13.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i14.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
396
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPCommentListViewComponent, isStandalone: true, selector: "axp-comment-list-view", viewQueries: [{ propertyName: "wysiwygEditor", first: true, predicate: ["w"], descendants: true, isSignal: true }, { propertyName: "wysiwyg", first: true, predicate: ["w"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ax-mt-2\">\n <ax-comment-container>\n @if(isLoading()){\n <div class=\"ax-flex ax-items-center ax-py-12 ax-bg-surface ax-px-5\">\n <ax-skeleton class=\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8/12 ax-h-2 ax-rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if(!isLoading() && comments().length > 0){\n <ax-comment-view class=\"ax-bg-surface\">\n @for(comment of comments(); track comment.id){\n <ax-comment-item [id]=\"comment.id\" [replyCount]=\"comment.replies.length\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(comment.id) && comment.user.picture){\n <ax-image (onError)=\"handleImageError(comment.id)\" [src]=\"comment.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(comment.user.firstName + ' ' + comment.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ comment.user.firstName + ' ' + comment.user.lastName }}</ax-title>\n <ax-comment-date>{{ time | format : 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(comment.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment)\" [liked]=\"comment.isLiked\">\n {{ comment.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyMessage(comment)\"></ax-comment-reply-text>\n @for(reply of comment.replies; track reply.id){\n <ax-comment-item [id]=\"reply.id\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(reply.id) && reply.user.picture){\n <ax-image (onError)=\"handleImageError(reply.id)\" [src]=\"reply.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(reply.user.firstName + ' ' + reply.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ (reply?.user?.firstName ?? '') + ' ' + (reply?.user?.lastName ?? '') }}</ax-title>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteReply(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(reply.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment, reply)\" [liked]=\"reply.isLiked\">\n {{ reply.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyMessage(comment, reply)\"></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n } </ax-comment-view\n >} @else{\n <div>\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\">\n <svg\n class=\"ax-mx-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"154\"\n height=\"161\"\n viewBox=\"0 0 154 161\"\n fill=\"none\"\n >\n <path\n d=\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\"\n fill=\"#EEF2FF\"\n />\n <path\n d=\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\"\n fill=\"white\"\n stroke=\"#E5E7EB\"\n />\n <ellipse cx=\"80.0618\" cy=\"81\" rx=\"28.0342\" ry=\"28.0342\" fill=\"#EEF2FF\" />\n <path\n d=\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\"\n fill=\"#A5B4FC\"\n stroke=\"#818CF8\"\n />\n <path\n d=\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\"\n fill=\"#4F46E5\"\n />\n <rect x=\"38.3522\" y=\"21.5128\" width=\"41.0256\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"133.65\" width=\"54.7009\" height=\"5.47009\" rx=\"2.73504\" fill=\"#A5B4FC\" />\n <rect x=\"38.3522\" y=\"29.7179\" width=\"13.6752\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"56.13\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"61.6001\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"67.0702\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n </svg>\n <div>\n <h2 class=\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\">\n There is no Comment!\n </h2>\n </div>\n </div>\n </div>\n }\n </ax-comment-container>\n <ax-form>\n <ax-form-field>\n <div>\n @if(isReplyingMode() || isEditingMode()){\n <div\n class=\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\"\n >\n <div (click)=\"scrollMain()\" class=\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\">\n <i\n [class]=\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\"\n class=\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\"\n ></i>\n <div\n class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\"\n >\n <p class=\"ax-text-primary-500 dark:ax-text-primary-300\">\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\n <span class=\"ax-font-bold\">\n {{\n isReplyingMode()\n ? activeReplyComment()?.user?.firstName + ' ' + activeReplyComment()?.user?.lastName\n : ''\n }}\n </span>\n </p>\n <div\n class=\"ax-truncate\"\n [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(activeReplyComment()?.content ?? '')\n : sanitizeHtml(activeEditComment()?.content ?? '')\n \"\n ></div>\n </div>\n </div>\n <div><i (click)=\"resetReplyEditState()\" class=\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\"></i></div>\n </div>\n }\n <ax-wysiwyg-container #w [look]=\"wysiwygOptions().look\" [(ngModel)]=\"commentContent\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-wysiwyg-toolbar>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n <ax-suffix>\n <ax-dropdown-button\n [disabled]=\"hasCooldown()\"\n type=\"submit\"\n color=\"primary\"\n mode=\"split\"\n text=\"Send\"\n (onClick)=\"submitComment()\"\n >\n @if(isSubmitting()){ <ax-loading></ax-loading> }\n <ax-button-item-list>\n <ax-button-item (click)=\"submitComment(true)\" text=\"Send Private ...\" name=\"private\" data=\"private\">\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-user-secret\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-wysiwyg-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateContent }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </div>\n </ax-form-field>\n </ax-form>\n</div>\n", styles: ["ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXCommentModule }, { kind: "component", type: i4.AXCommentViewComponent, selector: "ax-comment-view" }, { kind: "component", type: i4.AXCommentContainerComponent, selector: "ax-comment-container" }, { kind: "component", type: i4.AxCommentItemComponent, selector: "ax-comment-item", inputs: ["replyCount"] }, { kind: "component", type: i4.AXCommentLikeComponent, selector: "ax-comment-like", inputs: ["liked"] }, { kind: "component", type: i4.AXMenuOptionsComponent, selector: "ax-comment-menu-options" }, { kind: "component", type: i4.AXCommentReplyTextComponent, selector: "ax-comment-reply-text" }, { kind: "component", type: i4.AXCommentDateComponent, selector: "ax-comment-date" }, { kind: "ngmodule", type: AXWysiwygModule }, { kind: "component", type: i5.AXWysiwygContainerComponent, selector: "ax-wysiwyg-container", inputs: ["look", "placeHolder"], outputs: ["onValueChanged"] }, { kind: "component", type: i5.AXWysiwygViewComponent, selector: "ax-wysiwyg-view", inputs: ["class"] }, { kind: "component", type: i5.AXWysiwygToolbarComponent, selector: "ax-wysiwyg-toolbar" }, { kind: "component", type: i5.AXWysiwygAlignmentComponent, selector: "ax-wysiwyg-alignment" }, { kind: "component", type: i5.AXWysiwygColorsComponent, selector: "ax-wysiwyg-colors" }, { kind: "component", type: i5.AXWysiwygFontStyleComponent, selector: "ax-wysiwyg-font-style" }, { kind: "component", type: i5.AXWysiwygHistoryComponent, selector: "ax-wysiwyg-history" }, { kind: "component", type: i5.AXWysiwygListComponent, selector: "ax-wysiwyg-list" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i6.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i6.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i6.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i7.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i8.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i9.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i9.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i9.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i10.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i11.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i12.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i13.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i14.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
373
397
|
}
|
|
374
398
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPCommentListViewComponent, decorators: [{
|
|
375
399
|
type: Component,
|
|
@@ -392,6 +416,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
392
416
|
AXDropdownModule,
|
|
393
417
|
AXFormatModule,
|
|
394
418
|
AXSkeletonModule,
|
|
395
|
-
], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-mt-2\">\n <ax-comment-container>\n @if(isLoading()){\n <div class=\"ax-flex ax-items-center ax-py-12 ax-bg-surface ax-px-5\">\n <ax-skeleton class=\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8/12 ax-h-2 ax-rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if(!isLoading() && comments().length > 0){\n <ax-comment-view class=\"ax-bg-surface\">\n @for(comment of comments(); track comment.id){\n <ax-comment-item [id]=\"comment.id\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(comment.id) && comment.user.picture){\n <ax-image (onError)=\"handleImageError(comment.id)\" [src]=\"comment.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(comment.user.firstName + ' ' + comment.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ comment.user.firstName + ' ' + comment.user.lastName }}</ax-title>\n <ax-comment-date>{{ time | format : 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(comment.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment)\" [liked]=\"comment.isLiked\">\n {{ comment.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyComment(comment)\"></ax-comment-reply-text>\n @for(reply of comment.replies; track reply.id){\n <ax-comment-item [id]=\"reply.id\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(reply.id) && reply.user.picture){\n <ax-image (onError)=\"handleImageError(reply.id)\" [src]=\"reply.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(reply.user.firstName + ' ' + reply.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ (reply?.user?.firstName ?? '') + ' ' + (reply?.user?.lastName ?? '') }}</ax-title>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteReply(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(reply.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment, reply)\" [liked]=\"reply.isLiked\">\n {{ reply.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyComment(reply)\"></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n } </ax-comment-view\n >} @else{\n <div>\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\">\n <svg\n class=\"ax-mx-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"154\"\n height=\"161\"\n viewBox=\"0 0 154 161\"\n fill=\"none\"\n >\n <path\n d=\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\"\n fill=\"#EEF2FF\"\n />\n <path\n d=\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\"\n fill=\"white\"\n stroke=\"#E5E7EB\"\n />\n <ellipse cx=\"80.0618\" cy=\"81\" rx=\"28.0342\" ry=\"28.0342\" fill=\"#EEF2FF\" />\n <path\n d=\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\"\n fill=\"#A5B4FC\"\n stroke=\"#818CF8\"\n />\n <path\n d=\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\"\n fill=\"#4F46E5\"\n />\n <rect x=\"38.3522\" y=\"21.5128\" width=\"41.0256\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"133.65\" width=\"54.7009\" height=\"5.47009\" rx=\"2.73504\" fill=\"#A5B4FC\" />\n <rect x=\"38.3522\" y=\"29.7179\" width=\"13.6752\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"56.13\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"61.6001\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"67.0702\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n </svg>\n <div>\n <h2 class=\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\">\n There is no Comment!\n </h2>\n </div>\n </div>\n </div>\n }\n </ax-comment-container>\n <ax-form>\n <ax-form-field>\n <div class=\"ax-border ax-overflow-hidden ax-rounded-lg\">\n @if(isReplyingMode() || isEditingMode()){\n <div\n class=\"ax-flex ax-justify-between ax-border-b ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\"\n >\n <div (click)=\"scrollMain()\" class=\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\">\n <i\n [class]=\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\"\n class=\"fa-solid ax-text-primary-500 ax-text-2xl ax-me-4\"\n ></i>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4\">\n <p class=\"ax-text-primary-500\">\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\n <span class=\"ax-font-bold\">\n {{\n isReplyingMode()\n ? activeReplyComment()?.user?.firstName + ' ' + activeReplyComment()?.user?.lastName\n : ''\n }}\n </span>\n </p>\n <div\n class=\"ax-truncate\"\n [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(activeReplyComment()?.content ?? '')\n : sanitizeHtml(activeEditComment()?.content ?? '')\n \"\n ></div>\n </div>\n </div>\n <div><i (click)=\"resetReplyEditState()\" class=\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\"></i></div>\n </div>\n }\n <ax-wysiwyg-container #w [look]=\"wysiwygOptions().look\" [(ngModel)]=\"commentContent\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-wysiwyg-toolbar>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n <ax-suffix>\n <ax-dropdown-button\n [disabled]=\"hasCooldown()\"\n type=\"submit\"\n color=\"primary\"\n mode=\"split\"\n text=\"Send\"\n (onClick)=\"submitComment()\"\n >\n @if(isSubmitting()){ <ax-loading></ax-loading> }\n <ax-button-item-list>\n <ax-button-item (click)=\"submitComment(true)\" text=\"Send Private ...\" name=\"private\" data=\"private\">\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-user-secret\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-wysiwyg-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateContent }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </div>\n </ax-form-field>\n </ax-form>\n</div>\n", styles: ["ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\n"] }]
|
|
419
|
+
], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-mt-2\">\n <ax-comment-container>\n @if(isLoading()){\n <div class=\"ax-flex ax-items-center ax-py-12 ax-bg-surface ax-px-5\">\n <ax-skeleton class=\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8/12 ax-h-2 ax-rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if(!isLoading() && comments().length > 0){\n <ax-comment-view class=\"ax-bg-surface\">\n @for(comment of comments(); track comment.id){\n <ax-comment-item [id]=\"comment.id\" [replyCount]=\"comment.replies.length\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(comment.id) && comment.user.picture){\n <ax-image (onError)=\"handleImageError(comment.id)\" [src]=\"comment.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(comment.user.firstName + ' ' + comment.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ comment.user.firstName + ' ' + comment.user.lastName }}</ax-title>\n <ax-comment-date>{{ time | format : 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(comment.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment)\" [liked]=\"comment.isLiked\">\n {{ comment.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyMessage(comment)\"></ax-comment-reply-text>\n @for(reply of comment.replies; track reply.id){\n <ax-comment-item [id]=\"reply.id\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(reply.id) && reply.user.picture){\n <ax-image (onError)=\"handleImageError(reply.id)\" [src]=\"reply.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(reply.user.firstName + ' ' + reply.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ (reply?.user?.firstName ?? '') + ' ' + (reply?.user?.lastName ?? '') }}</ax-title>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteReply(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(reply.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment, reply)\" [liked]=\"reply.isLiked\">\n {{ reply.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyMessage(comment, reply)\"></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n } </ax-comment-view\n >} @else{\n <div>\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\">\n <svg\n class=\"ax-mx-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"154\"\n height=\"161\"\n viewBox=\"0 0 154 161\"\n fill=\"none\"\n >\n <path\n d=\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\"\n fill=\"#EEF2FF\"\n />\n <path\n d=\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\"\n fill=\"white\"\n stroke=\"#E5E7EB\"\n />\n <ellipse cx=\"80.0618\" cy=\"81\" rx=\"28.0342\" ry=\"28.0342\" fill=\"#EEF2FF\" />\n <path\n d=\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\"\n fill=\"#A5B4FC\"\n stroke=\"#818CF8\"\n />\n <path\n d=\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\"\n fill=\"#4F46E5\"\n />\n <rect x=\"38.3522\" y=\"21.5128\" width=\"41.0256\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"133.65\" width=\"54.7009\" height=\"5.47009\" rx=\"2.73504\" fill=\"#A5B4FC\" />\n <rect x=\"38.3522\" y=\"29.7179\" width=\"13.6752\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"56.13\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"61.6001\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"67.0702\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n </svg>\n <div>\n <h2 class=\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\">\n There is no Comment!\n </h2>\n </div>\n </div>\n </div>\n }\n </ax-comment-container>\n <ax-form>\n <ax-form-field>\n <div>\n @if(isReplyingMode() || isEditingMode()){\n <div\n class=\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\"\n >\n <div (click)=\"scrollMain()\" class=\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\">\n <i\n [class]=\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\"\n class=\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\"\n ></i>\n <div\n class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\"\n >\n <p class=\"ax-text-primary-500 dark:ax-text-primary-300\">\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\n <span class=\"ax-font-bold\">\n {{\n isReplyingMode()\n ? activeReplyComment()?.user?.firstName + ' ' + activeReplyComment()?.user?.lastName\n : ''\n }}\n </span>\n </p>\n <div\n class=\"ax-truncate\"\n [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(activeReplyComment()?.content ?? '')\n : sanitizeHtml(activeEditComment()?.content ?? '')\n \"\n ></div>\n </div>\n </div>\n <div><i (click)=\"resetReplyEditState()\" class=\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\"></i></div>\n </div>\n }\n <ax-wysiwyg-container #w [look]=\"wysiwygOptions().look\" [(ngModel)]=\"commentContent\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-wysiwyg-toolbar>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n <ax-suffix>\n <ax-dropdown-button\n [disabled]=\"hasCooldown()\"\n type=\"submit\"\n color=\"primary\"\n mode=\"split\"\n text=\"Send\"\n (onClick)=\"submitComment()\"\n >\n @if(isSubmitting()){ <ax-loading></ax-loading> }\n <ax-button-item-list>\n <ax-button-item (click)=\"submitComment(true)\" text=\"Send Private ...\" name=\"private\" data=\"private\">\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-user-secret\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-wysiwyg-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateContent }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </div>\n </ax-form-field>\n </ax-form>\n</div>\n", styles: ["ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\n"] }]
|
|
396
420
|
}] });
|
|
397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkL3NyYy9saWIvY29tbWVudHMvY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkL3NyYy9saWIvY29tbWVudHMvY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBK0IsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9B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QkFBaUIsOEJBQ2pCLFlBQVksNmFBQ1osZUFBZSwrS0FDZixzQkFBc0IseVRBQ3RCLGdCQUFnQix5UEFDaEIsY0FBYyx3RkFDZCxnQkFBZ0I7OzJGQVVQLDJCQUEyQjtrQkEvQnZDLFNBQVM7K0JBRUUsdUJBQXVCLFdBQ3hCO3dCQUNQLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxnQkFBZ0I7cUJBQ2pCLGNBQ1csSUFBSSxtQkFNQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21tZW50TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1lbnQnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQsIEFYV3lzaXd5Z01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy93eXNpd3lnJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBPbkluaXQsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBBWEF2YXRhck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYU3R5bGVMb29rVHlwZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYSW1hZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvaW1hZ2UnO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcHVwQ29uZmlnLCBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWxlY3QtYm94JztcbmltcG9ydCB7IEFYU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2tlbGV0b24nO1xuaW1wb3J0IHsgQVhUZXh0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RleHQtYm94JztcbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYRm9ybWF0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWFBsYXRmb3JtIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcbmltcG9ydCB7IEFYUEh0bWxVdGlscyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBDb21tZW50TG9va3VwUG9wdXAgfSBmcm9tICcuL2NvbW1lbnQtbG9va3VwLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBDb21tZW50U2VydmljZSB9IGZyb20gJy4vY29tbWVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBDb21tZW50LCBBWFBMaWtlUmVxdWVzdCwgQVhQUG9zdFJlcXVlc3QgfSBmcm9tICcuL2NvbW1lbnRzLnR5cGUnO1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tZW50LWxpc3Qtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHNlbGVjdG9yOiAnYXhwLWNvbW1lbnQtbGlzdC12aWV3JyxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhDb21tZW50TW9kdWxlLFxuICAgIEFYV3lzaXd5Z01vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWFRleHRCb3hNb2R1bGUsXG4gICAgQVhMYWJlbE1vZHVsZSxcbiAgICBBWEF2YXRhck1vZHVsZSxcbiAgICBBWEltYWdlTW9kdWxlLFxuICAgIEFYU2VsZWN0Qm94TW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYRm9ybWF0TW9kdWxlLFxuICAgIEFYU2tlbGV0b25Nb2R1bGUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHN0eWxlczogYGF4LXd5c2l3eWctY29udGFpbmVye1xuICAgIC5heC1lcnJvci1tZXNzYWdle1xuICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgfVxuICB9YCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFYUENvbW1lbnRMaXN0Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBoYXNDb29sZG93biA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBpc1N1Ym1pdHRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgY29tbWVudENvbnRlbnQgPSBzaWduYWwoJycpO1xuICBwcm90ZWN0ZWQgaXNSZXBseWluZ01vZGUgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgaXNFZGl0aW5nTW9kZSA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHByb3RlY3RlZCBmYWlsZWRJbWFnZUlkcyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICBwcm90ZWN0ZWQgYWN0aXZlUmVwbHlDb21tZW50ID0gc2lnbmFsPHVuZGVmaW5lZCB8IEFYUENvbW1lbnQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBhY3RpdmVFZGl0Q29tbWVudCA9IHNpZ25hbDx1bmRlZmluZWQgfCBBWFBDb21tZW50Pih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgd3lzaXd5Z0VkaXRvciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQ+KCd3Jyk7XG5cbiAgcHJpdmF0ZSBjb21tZW50U2VydmljZSA9IGluamVjdChBWFBDb21tZW50U2VydmljZSk7XG4gIHByaXZhdGUgcGxhdGZvcm0gPSBpbmplY3QoQVhQbGF0Zm9ybSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHBvcHVwU2VydmljZSA9IGluamVjdChBWFBvcHVwU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFYRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgaHRtbFV0aWxzID0gaW5qZWN0KEFYUEh0bWxVdGlscyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVQYXJhbXMgPSB0aGlzLnJvdXRlLnNuYXBzaG90O1xuICBwcml2YXRlIHBheWxvYWQgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIHJvb21UeXBlOiAnZGVmYXVsdCcsXG4gICAgZW50aXR5SWQ6IHRoaXMucm91dGVQYXJhbXMucGFyYW1zPy5bJ21vZHVsZSddICsgJy4nICsgdGhpcy5yb3V0ZVBhcmFtcy5wYXJhbXM/LlsnZW50aXR5J10sXG4gICAgaW5zdGFuY2VJZDogdGhpcy5yb3V0ZVBhcmFtcy5wYXJhbXM/LlsnaWQnXSxcbiAgfSkpO1xuICB0aW1lPzogbnVtYmVyO1xuXG4gIHByb3RlY3RlZCBjb21tZW50cyA9IHNpZ25hbDxBWFBDb21tZW50W10+KFtdKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBkZWJ1Z2dlcjtcbiAgICB0aGlzLmxvYWRDb21tZW50cygpO1xuICAgIHRoaXMudGltZSA9IE1hdGgucmFuZG9tKCkgKiAtMTAwMDAwMDAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIHd5c2l3eWdPcHRpb25zID0gc2lnbmFsPHtcbiAgICBsb29rOiBBWFN0eWxlTG9va1R5cGU7XG4gIH0+KHtcbiAgICBsb29rOiAnbm9uZScsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCBhdmF0YXJDb25maWcgPSBzaWduYWw8e1xuICAgIGNvbG9yOiBzdHJpbmc7XG4gICAgbG9vazogJ3NoYXJwJyB8ICdzb2Z0JyB8ICdyb3VuZGVkJztcbiAgICB0eXBlOiBzdHJpbmc7XG4gIH0+KHtcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGxvb2s6ICdyb3VuZGVkJyxcbiAgICB0eXBlOiAnc29saWQnLCAvLyAnaW1hZ2UnIHwgJ3RleHQnIHwgJ2ljb24nIHwgJ2RlZmF1bHQnXG4gIH0pO1xuXG4gIHZhbGlkYXRlQ29udGVudCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG5cbiAgICBpZiAoIWNvbnRlbnQgfHwgY29udGVudCA9PT0gJzxwPjxicj48L3A+Jykge1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcnVsZTogJ2NhbGxiYWNrJyxcbiAgICAgIHJlc3VsdDogaXNWYWxpZCxcbiAgICAgIG1lc3NhZ2U6IGlzVmFsaWQgPyAnJyA6ICdQbGVhc2UgZmlsbCB0aGUgY29udGVudCcsXG4gICAgICB2YWx1ZTogY29udGVudCxcbiAgICB9O1xuICB9O1xuXG4gIHNhbml0aXplSHRtbChodG1sQ29udGVudDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHRtbFV0aWxzLmdldFNhZmVIVE1MZnJvbUhUTUwoaHRtbENvbnRlbnQpO1xuICB9XG5cbiAgaGFuZGxlSW1hZ2VFcnJvcihpbWFnZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmZhaWxlZEltYWdlSWRzLnVwZGF0ZSgoaWRzKSA9PiBbLi4uaWRzLCBpbWFnZUlkXSk7XG4gIH1cblxuICBjaGVja0ltYWdlRXhpc3RzKGltYWdlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5mYWlsZWRJbWFnZUlkcygpLmluY2x1ZGVzKGltYWdlSWQpO1xuICB9XG5cbiAgZXh0cmFjdEluaXRpYWxzKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgd29yZHMgPSBuYW1lLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSB3b3Jkcy5tYXAoKHdvcmQpID0+IHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkpO1xuICAgIHJldHVybiBpbml0aWFscy5qb2luKCcnKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRDb21tZW50cygpIHtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmdldCh0aGlzLnBheWxvYWQoKSk7XG4gICAgdGhpcy5jb21tZW50cy5zZXQocmVzcG9uc2UuaXRlbXMpO1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBlZGl0TWVzc2FnZShjb21tZW50OiBBWFBDb21tZW50LCByZXBseT86IEFYUENvbW1lbnQpIHtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldChjb21tZW50KTtcbiAgICBjb25zdCBjb250ZW50VG9FZGl0ID0gcmVwbHkgPyByZXBseS5jb250ZW50IDogY29tbWVudC5jb250ZW50O1xuICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KGNvbnRlbnRUb0VkaXQpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9IGNvbnRlbnRUb0VkaXQ7XG4gICAgdGhpcy53eXNpd3lnRWRpdG9yKCkuZ2V0SG9zdEVsZW1lbnQoKS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XG4gIH1cblxuICByZXBseUNvbW1lbnQoY29tbWVudDogQVhQQ29tbWVudCkge1xuICAgIHRoaXMuaXNFZGl0aW5nTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aXZlRWRpdENvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc1JlcGx5aW5nTW9kZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KGNvbW1lbnQpO1xuICAgIHRoaXMud3lzaXd5Z0VkaXRvcigpLmdldEhvc3RFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQ29tbWVudChjb21tZW50OiBBWFBDb21tZW50KSB7XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oe1xuICAgICAgaWNvbjogJ2ZhLXJlZ3VsYXIgZmEtd2FybmluZycsXG4gICAgICBjb250ZW50OiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbW1lbnQ/JyxcbiAgICAgIHRpdGxlOiAnRGVsZXRlIENvbW1lbnQnLFxuICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGUuaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICBlLnNvdXJjZS50ZXh0ID0gJ0RlbGV0aW5nLi4uJztcbiAgICAgICAgICAgIGUuc291cmNlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGUuc291cmNlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGUoeyBpZDogY29tbWVudC5pZCB9KTtcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlQnlJZChjb21tZW50LmlkKTtcbiAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICAgICAgY29udGVudDogJ0NvbW1lbnQgZGVsZXRlZCBzdWNjZXNzZnVsbHkuJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAodGhpcy5pc0VkaXRpbmdNb2RlKCkgJiYgdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpPy5pZCA9PT0gY29tbWVudC5pZCkgfHwgdGhpcy5yZXNldFJlcGx5RWRpdFN0YXRlO1xuICAgICAgICAgICAgICBkaWFsb2cuY2xvc2UoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyBlcnJvciA6ICdGYWlsZWQgdG8gZGVsZXRlIGNvbW1lbnQhJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICAgICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdDYW5jZWwnLFxuICAgICAgICAgIGNvbG9yOiAnZ2hvc3QnLFxuICAgICAgICAgIGF1dG9mb2N1czogdHJ1ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVSZXBseShjb21tZW50OiBBWFBDb21tZW50LCByZXBseTogQVhQQ29tbWVudCkge1xuICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcbiAgICAgIGljb246ICdmYS1yZWd1bGFyIGZhLXdhcm5pbmcnLFxuICAgICAgY29udGVudDogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyByZXBseT8nLFxuICAgICAgdGl0bGU6ICdEZWxldGUgUmVwbHknLFxuICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGUuaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICBlLnNvdXJjZS50ZXh0ID0gJ0RlbGV0aW5nLi4uJztcbiAgICAgICAgICAgIGUuc291cmNlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGUuc291cmNlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGUoeyBpZDogY29tbWVudC5pZCB9KTtcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlQnlJZChjb21tZW50LmlkLCByZXBseS5pZCk7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdDb21tZW50IGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5LicsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnID8gZXJyb3IgOiAnRmFpbGVkIHRvIGRlbGV0ZSBjb21tZW50IScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICBjb2xvcjogJ2dob3N0JyxcbiAgICAgICAgICBhdXRvZm9jdXM6IHRydWUsXG4gICAgICAgICAgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY2xvc2VCdXR0b246IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXRSZXBseUVkaXRTdGF0ZSgpIHtcbiAgICB0aGlzLmlzRWRpdGluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuaXNSZXBseWluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmFjdGl2ZVJlcGx5Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGFzeW5jIHRvZ2dsZUxpa2UoY29tbWVudDogQVhQQ29tbWVudCwgcmVwbHk/OiBBWFBDb21tZW50KSB7XG4gICAgaWYgKHJlcGx5KSB7XG4gICAgICB0aGlzLnVwZGF0ZUxpa2VTdGF0dXMoY29tbWVudC5pZCwgcmVwbHkuaWQpO1xuICAgICAgY29uc3QgcGF5bG9hZDogQVhQTGlrZVJlcXVlc3QgPSB7XG4gICAgICAgIG1lc3NhZ2VJZDogcmVwbHkuaWQsXG4gICAgICAgIHR5cGU6ICdsaWtlJyxcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UubGlrZShwYXlsb2FkKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTGlrZVN0YXR1cyhjb21tZW50LmlkLCByZXBseS5pZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlTGlrZVN0YXR1cyhjb21tZW50LmlkKTtcbiAgICAgIGNvbnN0IHBheWxvYWQ6IEFYUExpa2VSZXF1ZXN0ID0ge1xuICAgICAgICBtZXNzYWdlSWQ6IGNvbW1lbnQuaWQsXG4gICAgICAgIHR5cGU6ICdsaWtlJyxcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UubGlrZShwYXlsb2FkKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTGlrZVN0YXR1cyhjb21tZW50LmlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUxpa2VTdGF0dXMoY29tbWVudElkOiBzdHJpbmcsIHJlcGx5SWQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbW1lbnRzLnVwZGF0ZSgoY29tbWVudHNMaXN0KSA9PiB7XG4gICAgICByZXR1cm4gY29tbWVudHNMaXN0Lm1hcCgoY29tbWVudCkgPT4ge1xuICAgICAgICBpZiAoY29tbWVudC5pZCA9PT0gY29tbWVudElkKSB7XG4gICAgICAgICAgaWYgKHJlcGx5SWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRSZXBsaWVzID0gY29tbWVudC5yZXBsaWVzLm1hcCgocmVwbHkpID0+XG4gICAgICAgICAgICAgIHJlcGx5LmlkID09PSByZXBseUlkXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnJlcGx5LFxuICAgICAgICAgICAgICAgICAgICBpc0xpa2VkOiAhcmVwbHkuaXNMaWtlZCxcbiAgICAgICAgICAgICAgICAgICAgcmVhY3Rpb25zQ291bnQ6IHJlcGx5LmlzTGlrZWQgPyAtLXJlcGx5LnJlYWN0aW9uc0NvdW50IDogKytyZXBseS5yZWFjdGlvbnNDb3VudCxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHJlcGx5XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5jb21tZW50LFxuICAgICAgICAgICAgICByZXBsaWVzOiB1cGRhdGVkUmVwbGllcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmNvbW1lbnQsXG4gICAgICAgICAgICAgIGlzTGlrZWQ6ICFjb21tZW50LmlzTGlrZWQsXG4gICAgICAgICAgICAgIHJlYWN0aW9uc0NvdW50OiBjb21tZW50LmlzTGlrZWQgPyAtLWNvbW1lbnQucmVhY3Rpb25zQ291bnQgOiArK2NvbW1lbnQucmVhY3Rpb25zQ291bnQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tbWVudDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVNZXNzYWdlQnlJZChjb21tZW50SWQ6IHN0cmluZywgcmVwbHlJZD86IHN0cmluZykge1xuICAgIHRoaXMuY29tbWVudHMudXBkYXRlKChjb21tZW50c0xpc3QpID0+XG4gICAgICBjb21tZW50c0xpc3RcbiAgICAgICAgLm1hcCgoY29tbWVudCkgPT4ge1xuICAgICAgICAgIGlmIChjb21tZW50LmlkID09PSBjb21tZW50SWQpIHtcbiAgICAgICAgICAgIGlmIChyZXBseUlkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uY29tbWVudCxcbiAgICAgICAgICAgICAgICByZXBsaWVzOiBjb21tZW50LnJlcGxpZXMuZmlsdGVyKChyZXBseSkgPT4gcmVwbHkuaWQgIT09IHJlcGx5SWQpLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjb21tZW50O1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChjb21tZW50KSA9PiBjb21tZW50ICE9PSBudWxsKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzdWJtaXRDb21tZW50KGlzUHJpdmF0ZTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlQ29udGVudCh0aGlzLmNvbW1lbnRDb250ZW50KCkpLnJlc3VsdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBtZW1iZXJMb29rdXA7XG4gICAgaWYgKGlzUHJpdmF0ZSkge1xuICAgICAgY29uc3QgcG9wdXBDb25maWc6IEFYUG9wdXBDb25maWcgPSB7XG4gICAgICAgIGhlYWRlcjogdHJ1ZSxcbiAgICAgICAgc2l6ZTogJ21kJyxcbiAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIGNsb3NlT25CYWNrZHJvcENsaWNrOiBmYWxzZSxcbiAgICAgIH07XG4gICAgICBjb25zdCBwb3B1cCA9IGF3YWl0IHRoaXMucG9wdXBTZXJ2aWNlLm9wZW4oQVhQQ29tbWVudExvb2t1cFBvcHVwLCBwb3B1cENvbmZpZyk7XG4gICAgICBtZW1iZXJMb29rdXAgPSBwb3B1cC5kYXRhPy5kYXRhPy5sb29rdXA7XG4gICAgfVxuXG4gICAgY29uc3QgcGF5bG9hZDogQVhQUG9zdFJlcXVlc3QgPSB7XG4gICAgICAuLi50aGlzLnBheWxvYWQoKSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMuY29tbWVudENvbnRlbnQoKSxcbiAgICAgIGNvbnRlbnRUeXBlOiAndGV4dCcsXG4gICAgICBpc1ByaXZhdGU6IGlzUHJpdmF0ZSxcbiAgICAgIHJlcGx5SWQ6IHRoaXMuYWN0aXZlUmVwbHlDb21tZW50KCk/LmlkLFxuICAgICAgbWVtYmVyczogaXNQcml2YXRlID8gW21lbWJlckxvb2t1cF0gOiBbXSxcbiAgICB9O1xuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KHRydWUpO1xuICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UucG9zdChwYXlsb2FkKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuZ2V0KHRoaXMucGF5bG9hZCgpKTtcbiAgICB0aGlzLmNvbW1lbnRzLnNldChyZXNwb25zZS5pdGVtcyk7XG4gICAgdGhpcy5jb21tZW50Q29udGVudC5zZXQoJycpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9ICcnO1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldChmYWxzZSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KGZhbHNlKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIHNjcm9sbE1haW4oKSB7XG4gICAgY29uc29sZS5sb2coJ2NsaWNrZWQnKTtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGNvbnN0IGNvbW1lbnQgPSB0aGlzLmlzUmVwbHlpbmdNb2RlKCkgPyB0aGlzLmFjdGl2ZVJlcGx5Q29tbWVudCgpIDogdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpO1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoKGNvbW1lbnQgYXMgQVhQQ29tbWVudCkuaWQpO1xuICAgIGlmIChlbCkge1xuICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBlbD8uZmlyc3RFbGVtZW50Q2hpbGQ/LmNoaWxkcmVuWzFdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgcHJldkJnID0gY29udGVudC5zdHlsZS5iYWNrZ3JvdW5kO1xuICAgICAgY29udGVudC5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnMC4yNXJlbSc7XG4gICAgICBjb250ZW50LnN0eWxlLnRyYW5zaXRpb24gPSAnYmFja2dyb3VuZCAxcyBlYXNlLWluLW91dCc7XG4gICAgICBjb250ZW50LnN0eWxlLmJhY2tncm91bmQgPSAnI2UyZmZmYyc7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29udGVudC5zdHlsZS5iYWNrZ3JvdW5kID0gcHJldkJnIHx8ICdyZ2JhKDAsIDAsIDAsIDApJztcbiAgICAgIH0sIDEwMDApO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LW10LTJcIj5cbiAgPGF4LWNvbW1lbnQtY29udGFpbmVyPlxuICAgIEBpZihpc0xvYWRpbmcoKSl7XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LXB5LTEyIGF4LWJnLXN1cmZhY2UgYXgtcHgtNVwiPlxuICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtbWluLXctMTYgYXgtaC0xNiBheC1yb3VuZGVkLWZ1bGwgYXgtbWUtNFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC13LWZ1bGxcIj5cbiAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtNiBheC1yb3VuZGVkXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtMiBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC0yIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctOC8xMiBheC1oLTIgYXgtcm91bmRlZC1mdWxsXCI+PC9heC1za2VsZXRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIH0gQGVsc2UgaWYoIWlzTG9hZGluZygpICYmIGNvbW1lbnRzKCkubGVuZ3RoID4gMCl7XG4gICAgPGF4LWNvbW1lbnQtdmlldyBjbGFzcz1cImF4LWJnLXN1cmZhY2VcIj5cbiAgICAgIEBmb3IoY29tbWVudCBvZiBjb21tZW50cygpOyB0cmFjayBjb21tZW50LmlkKXtcbiAgICAgIDxheC1jb21tZW50LWl0ZW0gW2lkXT1cImNvbW1lbnQuaWRcIj5cbiAgICAgICAgPGF4LWF2YXRhciBbY29sb3JdPVwiYXZhdGFyQ29uZmlnKCkuY29sb3JcIiBbbG9va109XCJhdmF0YXJDb25maWcoKS5sb29rXCI+XG4gICAgICAgICAgQGlmKGNoZWNrSW1hZ2VFeGlzdHMoY29tbWVudC5pZCkgJiYgY29tbWVudC51c2VyLnBpY3R1cmUpe1xuICAgICAgICAgIDxheC1pbWFnZSAob25FcnJvcik9XCJoYW5kbGVJbWFnZUVycm9yKGNvbW1lbnQuaWQpXCIgW3NyY109XCJjb21tZW50LnVzZXIucGljdHVyZVwiPlxuICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgIDwvYXgtaW1hZ2U+XG4gICAgICAgICAgfUBlbHNle1xuICAgICAgICAgIDxheC10ZXh0PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LWJhc2UgYXgtb3ZlcmZsb3ctaGlkZGVuXCI+e3tcbiAgICAgICAgICAgICAgZXh0cmFjdEluaXRpYWxzKGNvbW1lbnQudXNlci5maXJzdE5hbWUgKyAnICcgKyBjb21tZW50LnVzZXIubGFzdE5hbWUpXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2F4LXRleHQ+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWF2YXRhcj5cbiAgICAgICAgPGF4LXRpdGxlPnt7IGNvbW1lbnQudXNlci5maXJzdE5hbWUgKyAnICcgKyBjb21tZW50LnVzZXIubGFzdE5hbWUgfX08L2F4LXRpdGxlPlxuICAgICAgICA8YXgtY29tbWVudC1kYXRlPnt7IHRpbWUgfCBmb3JtYXQgOiAndGltZWxlZnQnIHwgYXN5bmMgfX0gPC9heC1jb21tZW50LWRhdGU+XG4gICAgICAgIDxheC1jb21tZW50LW1lbnUtb3B0aW9ucz5cbiAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBsb29rPVwiYmxhbmtcIiBjb2xvcj1cInNlY29uZGFyeVwiPlxuICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24gYXgtaWNvbi1zb2xpZCBheC1pY29uLW1vcmUtaG9yaXpvbnRhbFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIkVkaXRcIiBjb2xvcj1cInNlY29uZGFyeVwiIChjbGljayk9XCJlZGl0TWVzc2FnZShjb21tZW50KVwiPlxuICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtZWRpdFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cblxuICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIkRlbGV0ZVwiIGNvbG9yPVwiZGFuZ2VyXCIgKGNsaWNrKT1cImRlbGV0ZUNvbW1lbnQoY29tbWVudClcIj5cbiAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLXRyYXNoLWNhblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICA8L2F4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICA8YXgtY29udGVudCBbaW5uZXJIVE1MXT1cInNhbml0aXplSHRtbChjb21tZW50LmNvbnRlbnQpXCI+PC9heC1jb250ZW50PlxuICAgICAgICA8YXgtY29tbWVudC1saWtlIChjbGljayk9XCJ0b2dnbGVMaWtlKGNvbW1lbnQpXCIgW2xpa2VkXT1cImNvbW1lbnQuaXNMaWtlZFwiPlxuICAgICAgICAgIHt7IGNvbW1lbnQucmVhY3Rpb25zQ291bnQgfX1cbiAgICAgICAgPC9heC1jb21tZW50LWxpa2U+XG4gICAgICAgIDxheC1jb21tZW50LXJlcGx5LXRleHQgKGNsaWNrKT1cInJlcGx5Q29tbWVudChjb21tZW50KVwiPjwvYXgtY29tbWVudC1yZXBseS10ZXh0PlxuICAgICAgICBAZm9yKHJlcGx5IG9mIGNvbW1lbnQucmVwbGllczsgdHJhY2sgcmVwbHkuaWQpe1xuICAgICAgICA8YXgtY29tbWVudC1pdGVtIFtpZF09XCJyZXBseS5pZFwiPlxuICAgICAgICAgIDxheC1hdmF0YXIgW2NvbG9yXT1cImF2YXRhckNvbmZpZygpLmNvbG9yXCIgW2xvb2tdPVwiYXZhdGFyQ29uZmlnKCkubG9va1wiPlxuICAgICAgICAgICAgQGlmKGNoZWNrSW1hZ2VFeGlzdHMocmVwbHkuaWQpICYmIHJlcGx5LnVzZXIucGljdHVyZSl7XG4gICAgICAgICAgICA8YXgtaW1hZ2UgKG9uRXJyb3IpPVwiaGFuZGxlSW1hZ2VFcnJvcihyZXBseS5pZClcIiBbc3JjXT1cInJlcGx5LnVzZXIucGljdHVyZVwiPlxuICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgICA8L2F4LWltYWdlPlxuICAgICAgICAgICAgfUBlbHNle1xuICAgICAgICAgICAgPGF4LXRleHQ+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1iYXNlIGF4LW92ZXJmbG93LWhpZGRlblwiPnt7XG4gICAgICAgICAgICAgICAgZXh0cmFjdEluaXRpYWxzKHJlcGx5LnVzZXIuZmlyc3ROYW1lICsgJyAnICsgcmVwbHkudXNlci5sYXN0TmFtZSlcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2F4LXRleHQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9heC1hdmF0YXI+XG4gICAgICAgICAgPGF4LXRpdGxlPnt7IChyZXBseT8udXNlcj8uZmlyc3ROYW1lID8/ICcnKSArICcgJyArIChyZXBseT8udXNlcj8ubGFzdE5hbWUgPz8gJycpIH19PC9heC10aXRsZT5cbiAgICAgICAgICA8YXgtY29tbWVudC1tZW51LW9wdGlvbnM+XG4gICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBsb29rPVwiYmxhbmtcIiBjb2xvcj1cInNlY29uZGFyeVwiPlxuICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiBheC1pY29uLXNvbGlkIGF4LWljb24tbW9yZS1ob3Jpem9udGFsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJFZGl0XCIgY29sb3I9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwiZWRpdE1lc3NhZ2UoY29tbWVudCwgcmVwbHkpXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtZWRpdFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJEZWxldGVcIiBjb2xvcj1cImRhbmdlclwiIChjbGljayk9XCJkZWxldGVSZXBseShjb21tZW50LCByZXBseSlcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS10cmFzaC1jYW5cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgIDwvYXgtY29tbWVudC1tZW51LW9wdGlvbnM+XG4gICAgICAgICAgPGF4LWNvbnRlbnQgW2lubmVySFRNTF09XCJzYW5pdGl6ZUh0bWwocmVwbHkuY29udGVudClcIj48L2F4LWNvbnRlbnQ+XG4gICAgICAgICAgPGF4LWNvbW1lbnQtbGlrZSAoY2xpY2spPVwidG9nZ2xlTGlrZShjb21tZW50LCByZXBseSlcIiBbbGlrZWRdPVwicmVwbHkuaXNMaWtlZFwiPlxuICAgICAgICAgICAge3sgcmVwbHkucmVhY3Rpb25zQ291bnQgfX1cbiAgICAgICAgICA8L2F4LWNvbW1lbnQtbGlrZT5cbiAgICAgICAgICA8YXgtY29tbWVudC1yZXBseS10ZXh0IChjbGljayk9XCJyZXBseUNvbW1lbnQocmVwbHkpXCI+PC9heC1jb21tZW50LXJlcGx5LXRleHQ+XG4gICAgICAgIDwvYXgtY29tbWVudC1pdGVtPlxuICAgICAgICB9XG4gICAgICA8L2F4LWNvbW1lbnQtaXRlbT5cbiAgICAgIH0gPC9heC1jb21tZW50LXZpZXdcbiAgICA+fSBAZWxzZXtcbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTQgYXgtanVzdGlmeS1jZW50ZXIgYXgtaXRlbXMtY2VudGVyIGF4LXAtMTBcIj5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIGNsYXNzPVwiYXgtbXgtYXV0b1wiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgd2lkdGg9XCIxNTRcIlxuICAgICAgICAgIGhlaWdodD1cIjE2MVwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAxNTQgMTYxXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk0wLjA2MTY0NTUgODQuNDI2OEMwLjA2MTY0NTUgNDIuMDIxMyAzNC40MzUgNy44Mzc2NSA3Ni42NTA3IDcuODM3NjVDMTE4LjgwMyA3LjgzNzY1IDE1My4yMjQgNDIuMDA1NSAxNTMuMjI0IDg0LjQyNjhDMTUzLjIyNCAxMDIuNDIgMTQ3LjAyNiAxMTguOTc0IDEzNi42MjIgMTMyLjAzNEMxMjIuMjgyIDE1MC4xMzggMTAwLjM2NyAxNjEgNzYuNjUwNyAxNjFDNTIuNzc1OSAxNjEgMzAuOTg4MiAxNTAuMDU5IDE2LjY2MzMgMTMyLjAzNEM2LjI1OTYxIDExOC45NzQgMC4wNjE2NDU1IDEwMi40MiAwLjA2MTY0NTUgODQuNDI2OFpcIlxuICAgICAgICAgICAgZmlsbD1cIiNFRUYyRkZcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNOTYuODE4OSAwLjYzMjQ5OEw5Ni44MTg5IDAuNjMyMzg0TDk2LjgwODMgMC42MzA5NTRDOTYuMjAzNCAwLjU0OTU4MSA5NS41OTMxIDAuNSA5NC45Nzg3IDAuNUgyOS4zMzhDMjIuNzExMiAwLjUgMTcuMzM5NCA1Ljg0NDU1IDE3LjMzOTQgMTIuNDQ3M1YxNDIuNzE1QzE3LjMzOTQgMTQ5LjMxOCAyMi43MTEyIDE1NC42NjIgMjkuMzM4IDE1NC42NjJIMTIzLjk0OEMxMzAuNTkxIDE1NC42NjIgMTM1Ljk0NiAxNDkuMzE3IDEzNS45NDYgMTQyLjcxNVYzOC45MzA5QzEzNS45NDYgMzguMDI0NCAxMzUuODQ3IDM3LjEzMzQgMTM1LjY0OCAzNi4yNTg2TDEzNS42NDggMzYuMjU4NEMxMzUuMTE3IDMzLjkzMDkgMTMzLjg3NCAzMS43Njg2IDEzMi4wNjYgMzAuMTMzM0MxMzIuMDY2IDMwLjEzMzEgMTMyLjA2NSAzMC4xMzI5IDEzMi4wNjUgMzAuMTMyN0wxMDMuMDY4IDMuNjUyMDNDMTAzLjA2OCAzLjY1MTkgMTAzLjA2NyAzLjY1MTc3IDEwMy4wNjcgMy42NTE2NEMxMDEuMzExIDIuMDM1MjYgOTkuMTM5NiAwLjk5NTU1MiA5Ni44MTg5IDAuNjMyNDk4WlwiXG4gICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiI0U1RTdFQlwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZWxsaXBzZSBjeD1cIjgwLjA2MThcIiBjeT1cIjgxXCIgcng9XCIyOC4wMzQyXCIgcnk9XCIyOC4wMzQyXCIgZmlsbD1cIiNFRUYyRkZcIiAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTk5LjIzOTMgNjEuMzA2MUw5OS4yMzkxIDYxLjMwNThDODguNDk4IDUwLjU4MDggNzEuMTA5MiA1MC41ODA0IDYwLjM4MzUgNjEuMzA2MUM0OS42NDIzIDcyLjAzMTYgNDkuNjQyMiA4OS40MzYxIDYwLjM4MzIgMTAwLjE2MkM3MS4xMDkgMTEwLjkwMyA4OC40OTgyIDExMC45MDMgOTkuMjM5MyAxMDAuMTYyQzEwOS45NjUgODkuNDM2MyAxMDkuOTY1IDcyLjAzMTcgOTkuMjM5MyA2MS4zMDYxWk0xMDUuODYzIDU0LjY4MzJDMTIwLjI0OSA2OS4wNjk1IDEyMC4yNDkgOTIuMzk4NSAxMDUuODYzIDEwNi43ODVDOTEuNDYwNSAxMjEuMTcxIDY4LjE0NjggMTIxLjE3MSA1My43NDQ2IDEwNi43ODVDMzkuMzU4MiA5Mi4zOTg3IDM5LjM1ODIgNjkuMDY5MyA1My43NDQ2IDU0LjY4M0M2OC4xNDY4IDQwLjI5NjUgOTEuNDYwNSA0MC4yOTY2IDEwNS44NjMgNTQuNjgzMlpcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiI0U1RTdFQlwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk0xMTAuNzgyIDExOS4yNjdMMTAyLjAxNiAxMTAuNDkyQzEwNC44ODggMTA4LjI2NyAxMDcuNDc2IDEwNS42NTEgMTA5LjU2NCAxMDIuOTU1TDExOC4zMjkgMTExLjcyOUwxMTAuNzgyIDExOS4yNjdaXCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNFNUU3RUJcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTM5LjEyMiAxMjUuNzgxTDEzOS4xMjIgMTI1Ljc4TDEyMy4zMTMgMTA5Ljk4OEMxMjMuMzEzIDEwOS45ODcgMTIzLjMxMyAxMDkuOTg3IDEyMy4zMTIgMTA5Ljk4NkMxMjEuOTk2IDEwOC42NTMgMTE5Ljg0OSAxMDguNjU3IDExOC41MjEgMTA5Ljk4NUwxMTguODcxIDExMC4zMzVMMTE4LjUyMSAxMDkuOTg1TDEwOS4wNDcgMTE5LjQ1OUMxMDcuNzMxIDEyMC43NzUgMTA3LjczNSAxMjIuOTE4IDEwOS4wNDQgMTI0LjI0N0wxMDkuMDQ3IDEyNC4yNDlMMTI0Ljg1OCAxNDAuMDZDMTI4Ljc4OSAxNDMuOTkyIDEzNS4xOTEgMTQzLjk5MiAxMzkuMTIyIDE0MC4wNkMxNDMuMDY5IDEzNi4xMTMgMTQzLjA2OSAxMjkuNzI4IDEzOS4xMjIgMTI1Ljc4MVpcIlxuICAgICAgICAgICAgZmlsbD1cIiNBNUI0RkNcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiIzgxOENGOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk04My4xODUgODcuMjI4NUM4Mi41Mzg3IDg3LjIyODUgODIuMDAyNyA4Ni42OTI2IDgyLjAwMjcgODYuMDMwNUM4Mi4wMDI3IDgzLjM4MjEgNzcuOTk4NyA4My4zODIxIDc3Ljk5ODcgODYuMDMwNUM3Ny45OTg3IDg2LjY5MjYgNzcuNDYyNyA4Ny4yMjg1IDc2LjgwMDYgODcuMjI4NUM3Ni4xNTQzIDg3LjIyODUgNzUuNjE4MyA4Ni42OTI2IDc1LjYxODMgODYuMDMwNUM3NS42MTgzIDgwLjIyOTQgODQuMzgzMSA4MC4yNDUxIDg0LjM4MzEgODYuMDMwNUM4NC4zODMxIDg2LjY5MjYgODMuODQ3MSA4Ny4yMjg1IDgzLjE4NSA4Ny4yMjg1WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzRGNDZFNVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk05My4zNTI4IDc3LjA5MjZIODguNDAzQzg3Ljc0MDkgNzcuMDkyNiA4Ny4yMDQ5IDc2LjU1NjcgODcuMjA0OSA3NS44OTQ2Qzg3LjIwNDkgNzUuMjQ4MyA4Ny43NDA5IDc0LjcxMjMgODguNDAzIDc0LjcxMjNIOTMuMzUyOEM5NC4wMTQ5IDc0LjcxMjMgOTQuNTUwOSA3NS4yNDgzIDk0LjU1MDkgNzUuODk0NkM5NC41NTA5IDc2LjU1NjcgOTQuMDE0OSA3Ny4wOTI2IDkzLjM1MjggNzcuMDkyNlpcIlxuICAgICAgICAgICAgZmlsbD1cIiM0RjQ2RTVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNNzEuNTk4NyA3Ny4wOTI1SDY2LjY0ODhDNjUuOTg2NyA3Ny4wOTI1IDY1LjQ1MDcgNzYuNTU2NSA2NS40NTA3IDc1Ljg5NDVDNjUuNDUwNyA3NS4yNDgxIDY1Ljk4NjcgNzQuNzEyMiA2Ni42NDg4IDc0LjcxMjJINzEuNTk4N0M3Mi4yNDUgNzQuNzEyMiA3Mi43ODEgNzUuMjQ4MSA3Mi43ODEgNzUuODk0NUM3Mi43ODEgNzYuNTU2NSA3Mi4yNDUgNzcuMDkyNSA3MS41OTg3IDc3LjA5MjVaXCJcbiAgICAgICAgICAgIGZpbGw9XCIjNEY0NkU1XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxyZWN0IHg9XCIzOC4zNTIyXCIgeT1cIjIxLjUxMjhcIiB3aWR0aD1cIjQxLjAyNTZcIiBoZWlnaHQ9XCIyLjczNTA0XCIgcng9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgIDxyZWN0IHg9XCIzOC4zNTIyXCIgeT1cIjEzMy42NVwiIHdpZHRoPVwiNTQuNzAwOVwiIGhlaWdodD1cIjUuNDcwMDlcIiByeD1cIjIuNzM1MDRcIiBmaWxsPVwiI0E1QjRGQ1wiIC8+XG4gICAgICAgICAgPHJlY3QgeD1cIjM4LjM1MjJcIiB5PVwiMjkuNzE3OVwiIHdpZHRoPVwiMTMuNjc1MlwiIGhlaWdodD1cIjIuNzM1MDRcIiByeD1cIjEuMzY3NTJcIiBmaWxsPVwiIzRGNDZFNVwiIC8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjU2LjEzXCIgY3k9XCIzMS4wODU0XCIgcj1cIjEuMzY3NTJcIiBmaWxsPVwiIzRGNDZFNVwiIC8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjYxLjYwMDFcIiBjeT1cIjMxLjA4NTRcIiByPVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiNjcuMDcwMlwiIGN5PVwiMzEuMDg1NFwiIHI9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJheC10ZXh0LWNlbnRlciBheC10ZXh0LW5ldXRyYWwtNjAwIGF4LWZvbnQtc2VtaWJvbGQgYXgtbGVhZGluZy1sb29zZSBheC1wYi0yXCI+XG4gICAgICAgICAgICBUaGVyZSBpcyBubyBDb21tZW50IVxuICAgICAgICAgIDwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgfVxuICA8L2F4LWNvbW1lbnQtY29udGFpbmVyPlxuICA8YXgtZm9ybT5cbiAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1ib3JkZXIgYXgtb3ZlcmZsb3ctaGlkZGVuIGF4LXJvdW5kZWQtbGdcIj5cbiAgICAgICAgQGlmKGlzUmVwbHlpbmdNb2RlKCkgfHwgaXNFZGl0aW5nTW9kZSgpKXtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtYm9yZGVyLWIgYXgtYmctb24tc3VyZmFjZSBheC1weC02IGF4LXB5LTMgYXgtdy1mdWxsIGF4LWl0ZW1zLWNlbnRlciBheC1vdmVyZmxvdy1oaWRkZW4gYXgtdGV4dC1zbSBheC1sZWFkaW5nLW5vbmVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiAoY2xpY2spPVwic2Nyb2xsTWFpbigpXCIgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktc3RhcnQgYXgtaXRlbXMtY2VudGVyIGF4LWN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXNSZXBseWluZ01vZGUoKSA/ICdmYS1yZXBseScgOiAnZmEtcGVuJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmEtc29saWQgYXgtdGV4dC1wcmltYXJ5LTUwMCBheC10ZXh0LTJ4bCBheC1tZS00XCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC1qdXN0aWZ5LWJldHdlZW4gYXgtYWxpZ24tbWlkZGxlIGF4LWxlYWRpbmctNFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImF4LXRleHQtcHJpbWFyeS01MDBcIj5cbiAgICAgICAgICAgICAgICB7eyBpc1JlcGx5aW5nTW9kZSgpID8gJ1JlcGx5IHRvICcgOiAnRWRpdCBNZXNzYWdlJyB9fVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBpc1JlcGx5aW5nTW9kZSgpXG4gICAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVSZXBseUNvbW1lbnQoKT8udXNlcj8uZmlyc3ROYW1lICsgJyAnICsgYWN0aXZlUmVwbHlDb21tZW50KCk/LnVzZXI/Lmxhc3ROYW1lXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICBpc1JlcGx5aW5nTW9kZSgpXG4gICAgICAgICAgICAgICAgICAgID8gc2FuaXRpemVIdG1sKGFjdGl2ZVJlcGx5Q29tbWVudCgpPy5jb250ZW50ID8/ICcnKVxuICAgICAgICAgICAgICAgICAgICA6IHNhbml0aXplSHRtbChhY3RpdmVFZGl0Q29tbWVudCgpPy5jb250ZW50ID8/ICcnKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+PGkgKGNsaWNrKT1cInJlc2V0UmVwbHlFZGl0U3RhdGUoKVwiIGNsYXNzPVwiZmEtc29saWQgYXgtdGV4dC0yeGwgZmEteG1hcmsgYXgtY3Vyc29yLXBvaW50ZXJcIj48L2k+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxheC13eXNpd3lnLWNvbnRhaW5lciAjdyBbbG9va109XCJ3eXNpd3lnT3B0aW9ucygpLmxvb2tcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRDb250ZW50XCI+XG4gICAgICAgICAgPGF4LXd5c2l3eWctdmlldyBjbGFzcz1cImF4LW1pbi1oLTI4XCI+PC9heC13eXNpd3lnLXZpZXc+XG4gICAgICAgICAgPGF4LXd5c2l3eWctdG9vbGJhcj5cbiAgICAgICAgICAgIDxheC13eXNpd3lnLWhpc3Rvcnk+PC9heC13eXNpd3lnLWhpc3Rvcnk+XG4gICAgICAgICAgICA8YXgtd3lzaXd5Zy1mb250LXN0eWxlPjwvYXgtd3lzaXd5Zy1mb250LXN0eWxlPlxuICAgICAgICAgICAgPGF4LXd5c2l3eWctY29sb3JzPjwvYXgtd3lzaXd5Zy1jb2xvcnM+XG4gICAgICAgICAgICA8YXgtd3lzaXd5Zy1saXN0PjwvYXgtd3lzaXd5Zy1saXN0PlxuICAgICAgICAgICAgPGF4LXd5c2l3eWctYWxpZ25tZW50PjwvYXgtd3lzaXd5Zy1hbGlnbm1lbnQ+XG4gICAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgICA8YXgtZHJvcGRvd24tYnV0dG9uXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImhhc0Nvb2xkb3duKClcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgbW9kZT1cInNwbGl0XCJcbiAgICAgICAgICAgICAgICB0ZXh0PVwiU2VuZFwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic3VibWl0Q29tbWVudCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZihpc1N1Ym1pdHRpbmcoKSl7IDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz4gfVxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIChjbGljayk9XCJzdWJtaXRDb21tZW50KHRydWUpXCIgdGV4dD1cIlNlbmQgUHJpdmF0ZSAuLi5cIiBuYW1lPVwicHJpdmF0ZVwiIGRhdGE9XCJwcml2YXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXJlZ3VsYXIgZmEtdXNlci1zZWNyZXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgPC9heC13eXNpd3lnLXRvb2xiYXI+XG4gICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSBydWxlPVwiY2FsbGJhY2tcIiBbb3B0aW9uc109XCJ7IHZhbGlkYXRlOiB2YWxpZGF0ZUNvbnRlbnQgfVwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICA8L2F4LXd5c2l3eWctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9heC1mb3JtLWZpZWxkPlxuICA8L2F4LWZvcm0+XG48L2Rpdj5cbiJdfQ==
|
|
421
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkL3NyYy9saWIvY29tbWVudHMvY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkL3NyYy9saWIvY29tbWVudHMvY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBK0IsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9B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YUFBYSw4QkFDYixjQUFjLG9LQUNkLGFBQWEsaU1BQ2IsaUJBQWlCLDhCQUNqQixZQUFZLDZhQUNaLGVBQWUsK0tBQ2Ysc0JBQXNCLHlUQUN0QixnQkFBZ0IseVBBQ2hCLGNBQWMsd0ZBQ2QsZ0JBQWdCOzsyRkFlUCwyQkFBMkI7a0JBcEN2QyxTQUFTOytCQUVFLHVCQUF1QixXQUN4Qjt3QkFDUCxXQUFXO3dCQUNYLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysc0JBQXNCO3dCQUN0QixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsZ0JBQWdCO3FCQUNqQixjQUNXLElBQUksbUJBV0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tbWVudE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tZW50JztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50LCBBWFd5c2l3eWdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvd3lzaXd5Zyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgT25Jbml0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQVhBdmF0YXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYXZhdGFyJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWFN0eWxlTG9va1R5cGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWEltYWdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2ltYWdlJztcbmltcG9ydCB7IEFYTGFiZWxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbGFiZWwnO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhQb3B1cENvbmZpZywgQVhQb3B1cFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHsgQVhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VsZWN0LWJveCc7XG5pbXBvcnQgeyBBWFNrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NrZWxldG9uJztcbmltcG9ydCB7IEFYVGV4dEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b2FzdCc7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhQbGF0Zm9ybSB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBBWFBIdG1sVXRpbHMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQQ29tbWVudExvb2t1cFBvcHVwIH0gZnJvbSAnLi9jb21tZW50LWxvb2t1cC1wb3B1cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQQ29tbWVudFNlcnZpY2UgfSBmcm9tICcuL2NvbW1lbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQQ29tbWVudCwgQVhQQ29tbWVudENyZWF0ZVJlcXVlc3QsIEFYUENvbW1lbnRMaWtlUmVxdWVzdCwgQVhQQ29tbWVudFVwZGF0ZVJlcXVlc3QgfSBmcm9tICcuL2NvbW1lbnRzLnR5cGUnO1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tZW50LWxpc3Qtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHNlbGVjdG9yOiAnYXhwLWNvbW1lbnQtbGlzdC12aWV3JyxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhDb21tZW50TW9kdWxlLFxuICAgIEFYV3lzaXd5Z01vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWFRleHRCb3hNb2R1bGUsXG4gICAgQVhMYWJlbE1vZHVsZSxcbiAgICBBWEF2YXRhck1vZHVsZSxcbiAgICBBWEltYWdlTW9kdWxlLFxuICAgIEFYU2VsZWN0Qm94TW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYRm9ybWF0TW9kdWxlLFxuICAgIEFYU2tlbGV0b25Nb2R1bGUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHN0eWxlczogYGF4LXd5c2l3eWctY29udGFpbmVye1xuICAgIC5heC1lZGl0b3ItY29udGFpbmVye1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50O1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmF4LWVycm9yLW1lc3NhZ2V7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICB9XG5cbiAgfWAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBDb21tZW50TGlzdFZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgaGFzQ29vbGRvd24gPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgY29tbWVudENvbnRlbnQgPSBzaWduYWwoJycpO1xuXG4gIHByb3RlY3RlZCBpc1N1Ym1pdHRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgaXNSZXBseWluZ01vZGUgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgaXNFZGl0aW5nTW9kZSA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG5cbiAgcHJvdGVjdGVkIGZhaWxlZEltYWdlSWRzID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XG4gIHByb3RlY3RlZCBhY3RpdmVSZXBseUNvbW1lbnQgPSBzaWduYWw8dW5kZWZpbmVkIHwgQVhQQ29tbWVudD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIGFjdGl2ZUVkaXRDb21tZW50ID0gc2lnbmFsPHVuZGVmaW5lZCB8IEFYUENvbW1lbnQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCB3eXNpd3lnRWRpdG9yID0gdmlld0NoaWxkLnJlcXVpcmVkPEFYV3lzaXd5Z0NvbnRhaW5lckNvbXBvbmVudD4oJ3cnKTtcblxuICBwcml2YXRlIGNvbW1lbnRTZXJ2aWNlID0gaW5qZWN0KEFYUENvbW1lbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybSA9IGluamVjdChBWFBsYXRmb3JtKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQVhEaWFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBodG1sVXRpbHMgPSBpbmplY3QoQVhQSHRtbFV0aWxzKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlUGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdDtcbiAgcHJpdmF0ZSBwYXlsb2FkID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICByb29tVHlwZTogJ2RlZmF1bHQnLFxuICAgIGVudGl0eUlkOiB0aGlzLnJvdXRlUGFyYW1zLnBhcmFtcz8uWydtb2R1bGUnXSArICcuJyArIHRoaXMucm91dGVQYXJhbXMucGFyYW1zPy5bJ2VudGl0eSddLFxuICAgIGluc3RhbmNlSWQ6IHRoaXMucm91dGVQYXJhbXMucGFyYW1zPy5bJ2lkJ10sXG4gIH0pKTtcbiAgdGltZT86IG51bWJlcjtcblxuICBwcm90ZWN0ZWQgY29tbWVudHMgPSBzaWduYWw8QVhQQ29tbWVudFtdPihbXSk7XG4gIHByaXZhdGUgd3lzaXd5ZyA9IHZpZXdDaGlsZDxBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQ+KCd3Jyk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkQ29tbWVudHMoKTtcbiAgICB0aGlzLnRpbWUgPSBNYXRoLnJhbmRvbSgpICogLTEwMDAwMDAwMDtcbiAgfVxuXG4gIHByb3RlY3RlZCB3eXNpd3lnT3B0aW9ucyA9IHNpZ25hbDx7XG4gICAgbG9vazogQVhTdHlsZUxvb2tUeXBlO1xuICB9Pih7XG4gICAgbG9vazogJ3NvbGlkJyxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGF2YXRhckNvbmZpZyA9IHNpZ25hbDx7XG4gICAgY29sb3I6IHN0cmluZztcbiAgICBsb29rOiAnc2hhcnAnIHwgJ3NvZnQnIHwgJ3JvdW5kZWQnO1xuICAgIHR5cGU6IHN0cmluZztcbiAgfT4oe1xuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgbG9vazogJ3JvdW5kZWQnLFxuICAgIHR5cGU6ICdzb2xpZCcsIC8vICdpbWFnZScgfCAndGV4dCcgfCAnaWNvbicgfCAnZGVmYXVsdCdcbiAgfSk7XG5cbiAgdmFsaWRhdGVDb250ZW50ID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcblxuICAgIGlmICghY29udGVudCB8fCBjb250ZW50ID09PSAnPHA+PGJyPjwvcD4nKSB7XG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBydWxlOiAnY2FsbGJhY2snLFxuICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgbWVzc2FnZTogaXNWYWxpZCA/ICcnIDogJ1BsZWFzZSBmaWxsIHRoZSBjb250ZW50JyxcbiAgICAgIHZhbHVlOiBjb250ZW50LFxuICAgIH07XG4gIH07XG5cbiAgc2FuaXRpemVIdG1sKGh0bWxDb250ZW50OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odG1sVXRpbHMuZ2V0U2FmZUhUTUxmcm9tSFRNTChodG1sQ29udGVudCk7XG4gIH1cblxuICBoYW5kbGVJbWFnZUVycm9yKGltYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmFpbGVkSW1hZ2VJZHMudXBkYXRlKChpZHMpID0+IFsuLi5pZHMsIGltYWdlSWRdKTtcbiAgfVxuXG4gIGNoZWNrSW1hZ2VFeGlzdHMoaW1hZ2VJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmZhaWxlZEltYWdlSWRzKCkuaW5jbHVkZXMoaW1hZ2VJZCk7XG4gIH1cblxuICBleHRyYWN0SW5pdGlhbHMobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB3b3JkcyA9IG5hbWUuc3BsaXQoJyAnKTtcbiAgICBjb25zdCBpbml0aWFscyA9IHdvcmRzLm1hcCgod29yZCkgPT4gd29yZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSk7XG4gICAgcmV0dXJuIGluaXRpYWxzLmpvaW4oJycpO1xuICB9XG5cbiAgYXN5bmMgbG9hZENvbW1lbnRzKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuZ2V0KHRoaXMucGF5bG9hZCgpKTtcbiAgICB0aGlzLmNvbW1lbnRzLnNldChyZXNwb25zZS5pdGVtcyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH0sIDI1MCk7XG4gIH1cblxuICBlZGl0TWVzc2FnZShjb21tZW50OiBBWFBDb21tZW50LCByZXBseT86IEFYUENvbW1lbnQpIHtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldChjb21tZW50KTtcbiAgICBjb25zdCBjb250ZW50VG9FZGl0ID0gcmVwbHkgPyByZXBseS5jb250ZW50IDogY29tbWVudC5jb250ZW50O1xuICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KGNvbnRlbnRUb0VkaXQpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9IGNvbnRlbnRUb0VkaXQ7XG4gICAgdGhpcy53eXNpd3lnRWRpdG9yKCkuZ2V0SG9zdEVsZW1lbnQoKS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XG4gIH1cblxuICByZXBseU1lc3NhZ2UoY29tbWVudDogQVhQQ29tbWVudCwgcmVwbHk/OiBBWFBDb21tZW50KSB7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGl2ZVJlcGx5Q29tbWVudC5zZXQoY29tbWVudCk7XG4gICAgaWYgKHJlcGx5KSB7XG4gICAgICBjb25zdCBtZW50aW9uID0gYDxhIGRhdGEtaWQ9XCIke3JlcGx5LmlkfVwiPkAke3JlcGx5LnVzZXIudXNlck5hbWV9PC9hPiBgO1xuICAgICAgdGhpcy5jb21tZW50Q29udGVudC5zZXQobWVudGlvbik7XG4gICAgICB0aGlzLnd5c2l3eWcoKT8uZm9jdXMoKTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9IG1lbnRpb247XG4gICAgfVxuICAgIHRoaXMud3lzaXd5Z0VkaXRvcigpLmdldEhvc3RFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQ29tbWVudChjb21tZW50OiBBWFBDb21tZW50KSB7XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oe1xuICAgICAgaWNvbjogJ2ZhLXJlZ3VsYXIgZmEtd2FybmluZycsXG4gICAgICBjb250ZW50OiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbW1lbnQ/JyxcbiAgICAgIHRpdGxlOiAnRGVsZXRlIENvbW1lbnQnLFxuICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGUuaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICBlLnNvdXJjZS50ZXh0ID0gJ0RlbGV0aW5nLi4uJztcbiAgICAgICAgICAgIGUuc291cmNlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGUuc291cmNlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGUoeyBpZDogY29tbWVudC5pZCB9KTtcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlQnlJZChjb21tZW50LmlkKTtcbiAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICAgICAgY29udGVudDogJ0NvbW1lbnQgZGVsZXRlZCBzdWNjZXNzZnVsbHkuJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAodGhpcy5pc0VkaXRpbmdNb2RlKCkgJiYgdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpPy5pZCA9PT0gY29tbWVudC5pZCkgfHwgdGhpcy5yZXNldFJlcGx5RWRpdFN0YXRlO1xuICAgICAgICAgICAgICBkaWFsb2cuY2xvc2UoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyBlcnJvciA6ICdGYWlsZWQgdG8gZGVsZXRlIGNvbW1lbnQhJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICAgICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdDYW5jZWwnLFxuICAgICAgICAgIGNvbG9yOiAnZ2hvc3QnLFxuICAgICAgICAgIGF1dG9mb2N1czogdHJ1ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVSZXBseShjb21tZW50OiBBWFBDb21tZW50LCByZXBseTogQVhQQ29tbWVudCkge1xuICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcbiAgICAgIGljb246ICdmYS1yZWd1bGFyIGZhLXdhcm5pbmcnLFxuICAgICAgY29udGVudDogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyByZXBseT8nLFxuICAgICAgdGl0bGU6ICdEZWxldGUgUmVwbHknLFxuICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGUuaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICBlLnNvdXJjZS50ZXh0ID0gJ0RlbGV0aW5nLi4uJztcbiAgICAgICAgICAgIGUuc291cmNlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGUuc291cmNlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGUoeyBpZDogY29tbWVudC5pZCB9KTtcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlQnlJZChjb21tZW50LmlkLCByZXBseS5pZCk7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdDb21tZW50IGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5LicsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnID8gZXJyb3IgOiAnRmFpbGVkIHRvIGRlbGV0ZSBjb21tZW50IScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICBjb2xvcjogJ2dob3N0JyxcbiAgICAgICAgICBhdXRvZm9jdXM6IHRydWUsXG4gICAgICAgICAgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY2xvc2VCdXR0b246IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXRSZXBseUVkaXRTdGF0ZSgpIHtcbiAgICB0aGlzLmlzRWRpdGluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuaXNSZXBseWluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmFjdGl2ZVJlcGx5Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGFzeW5jIHRvZ2dsZUxpa2UoY29tbWVudDogQVhQQ29tbWVudCwgcmVwbHk/OiBBWFBDb21tZW50KSB7XG4gICAgaWYgKHJlcGx5KSB7XG4gICAgICB0aGlzLnVwZGF0ZUxpa2VTdGF0dXMoY29tbWVudC5pZCwgcmVwbHkuaWQpO1xuICAgICAgY29uc3QgcGF5bG9hZDogQVhQQ29tbWVudExpa2VSZXF1ZXN0ID0ge1xuICAgICAgICBtZXNzYWdlSWQ6IHJlcGx5LmlkLFxuICAgICAgICB0eXBlOiAnbGlrZScsXG4gICAgICB9O1xuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmxpa2UocGF5bG9hZCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLnVwZGF0ZUxpa2VTdGF0dXMoY29tbWVudC5pZCwgcmVwbHkuaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZUxpa2VTdGF0dXMoY29tbWVudC5pZCk7XG4gICAgICBjb25zdCBwYXlsb2FkOiBBWFBDb21tZW50TGlrZVJlcXVlc3QgPSB7XG4gICAgICAgIG1lc3NhZ2VJZDogY29tbWVudC5pZCxcbiAgICAgICAgdHlwZTogJ2xpa2UnLFxuICAgICAgfTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5saWtlKHBheWxvYWQpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnQuaWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTGlrZVN0YXR1cyhjb21tZW50SWQ6IHN0cmluZywgcmVwbHlJZD86IHN0cmluZykge1xuICAgIHRoaXMuY29tbWVudHMudXBkYXRlKChjb21tZW50c0xpc3QpID0+IHtcbiAgICAgIHJldHVybiBjb21tZW50c0xpc3QubWFwKChjb21tZW50KSA9PiB7XG4gICAgICAgIGlmIChjb21tZW50LmlkID09PSBjb21tZW50SWQpIHtcbiAgICAgICAgICBpZiAocmVwbHlJZCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFJlcGxpZXMgPSBjb21tZW50LnJlcGxpZXMubWFwKChyZXBseSkgPT5cbiAgICAgICAgICAgICAgcmVwbHkuaWQgPT09IHJlcGx5SWRcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucmVwbHksXG4gICAgICAgICAgICAgICAgICAgIGlzTGlrZWQ6ICFyZXBseS5pc0xpa2VkLFxuICAgICAgICAgICAgICAgICAgICByZWFjdGlvbnNDb3VudDogcmVwbHkuaXNMaWtlZCA/IC0tcmVwbHkucmVhY3Rpb25zQ291bnQgOiArK3JlcGx5LnJlYWN0aW9uc0NvdW50LFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogcmVwbHlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmNvbW1lbnQsXG4gICAgICAgICAgICAgIHJlcGxpZXM6IHVwZGF0ZWRSZXBsaWVzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY29tbWVudCxcbiAgICAgICAgICAgICAgaXNMaWtlZDogIWNvbW1lbnQuaXNMaWtlZCxcbiAgICAgICAgICAgICAgcmVhY3Rpb25zQ291bnQ6IGNvbW1lbnQuaXNMaWtlZCA/IC0tY29tbWVudC5yZWFjdGlvbnNDb3VudCA6ICsrY29tbWVudC5yZWFjdGlvbnNDb3VudCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21tZW50O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU1lc3NhZ2VCeUlkKGNvbW1lbnRJZDogc3RyaW5nLCByZXBseUlkPzogc3RyaW5nKSB7XG4gICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzTGlzdCkgPT5cbiAgICAgIGNvbW1lbnRzTGlzdFxuICAgICAgICAubWFwKChjb21tZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGNvbW1lbnQuaWQgPT09IGNvbW1lbnRJZCkge1xuICAgICAgICAgICAgaWYgKHJlcGx5SWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5jb21tZW50LFxuICAgICAgICAgICAgICAgIHJlcGxpZXM6IGNvbW1lbnQucmVwbGllcy5maWx0ZXIoKHJlcGx5KSA9PiByZXBseS5pZCAhPT0gcmVwbHlJZCksXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbW1lbnQ7XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKGNvbW1lbnQpID0+IGNvbW1lbnQgIT09IG51bGwpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdENvbW1lbnQoaXNQcml2YXRlOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBkZWJ1Z2dlcjtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVDb250ZW50KHRoaXMuY29tbWVudENvbnRlbnQoKSkucmVzdWx0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG1lbWJlckxvb2t1cDtcbiAgICBpZiAoaXNQcml2YXRlKSB7XG4gICAgICBjb25zdCBwb3B1cENvbmZpZzogQVhQb3B1cENvbmZpZyA9IHtcbiAgICAgICAgaGVhZGVyOiB0cnVlLFxuICAgICAgICBzaXplOiAnbWQnLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IGZhbHNlLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHBvcHVwID0gYXdhaXQgdGhpcy5wb3B1cFNlcnZpY2Uub3BlbihBWFBDb21tZW50TG9va3VwUG9wdXAsIHBvcHVwQ29uZmlnKTtcbiAgICAgIG1lbWJlckxvb2t1cCA9IHBvcHVwLmRhdGE/LmRhdGE/Lmxvb2t1cDtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNFZGl0aW5nTW9kZSgpKSB7XG4gICAgICBjb25zdCBwYXlsb2FkOiBBWFBDb21tZW50VXBkYXRlUmVxdWVzdCA9IHtcbiAgICAgICAgaWQ6IHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKT8uaWQsXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuY29tbWVudENvbnRlbnQoKSxcbiAgICAgIH0gYXMgQVhQQ29tbWVudFVwZGF0ZVJlcXVlc3Q7XG4gICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLnVwZGF0ZShwYXlsb2FkKTtcbiAgICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KHRydWUpO1xuICAgICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldCh1bmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwYXlsb2FkOiBBWFBDb21tZW50Q3JlYXRlUmVxdWVzdCA9IHtcbiAgICAgICAgLi4udGhpcy5wYXlsb2FkKCksXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuY29tbWVudENvbnRlbnQoKSxcbiAgICAgICAgY29udGVudFR5cGU6ICd0ZXh0JyxcbiAgICAgICAgaXNQcml2YXRlOiBpc1ByaXZhdGUsXG4gICAgICAgIHJlcGx5SWQ6IHRoaXMuYWN0aXZlUmVwbHlDb21tZW50KCk/LmlkLFxuICAgICAgICBtZW1iZXJzOiBpc1ByaXZhdGUgPyBbbWVtYmVyTG9va3VwXSA6IFtdLFxuICAgICAgfSBhcyBBWFBDb21tZW50Q3JlYXRlUmVxdWVzdDtcbiAgICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuY3JlYXRlKHBheWxvYWQpO1xuICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5oYXNDb29sZG93bi5zZXQodHJ1ZSk7XG5cbiAgICAgIHRoaXMuaXNSZXBseWluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuYWN0aXZlUmVwbHlDb21tZW50LnNldCh1bmRlZmluZWQpO1xuICAgIH1cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuZ2V0KHRoaXMucGF5bG9hZCgpKTtcbiAgICB0aGlzLmNvbW1lbnRzLnNldChyZXNwb25zZS5pdGVtcyk7XG4gICAgdGhpcy5jb21tZW50Q29udGVudC5zZXQoJycpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9ICcnO1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmhhc0Nvb2xkb3duLnNldChmYWxzZSk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICBzY3JvbGxNYWluKCkge1xuICAgIGNvbnNvbGUubG9nKCdjbGlja2VkJyk7XG4gICAgLy8gZGVidWdnZXJcbiAgICBjb25zdCBjb21tZW50ID0gdGhpcy5pc1JlcGx5aW5nTW9kZSgpID8gdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQoKSA6IHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKTtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKChjb21tZW50IGFzIEFYUENvbW1lbnQpLmlkKTtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICBjb25zdCBjb250ZW50ID0gZWw/LmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgcHJldkJnID0gY29udGVudC5zdHlsZS5iYWNrZ3JvdW5kO1xuICAgICAgY29udGVudC5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnMC4yNXJlbSc7XG4gICAgICBjb250ZW50LnN0eWxlLnRyYW5zaXRpb24gPSAnYmFja2dyb3VuZCAxcyBlYXNlLWluLW91dCc7XG4gICAgICBjb250ZW50LnN0eWxlLmJhY2tncm91bmQgPSAnI2UyZmZmYyc7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29udGVudC5zdHlsZS5iYWNrZ3JvdW5kID0gcHJldkJnIHx8ICdyZ2JhKDAsIDAsIDAsIDApJztcbiAgICAgIH0sIDEwMDApO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LW10LTJcIj5cbiAgPGF4LWNvbW1lbnQtY29udGFpbmVyPlxuICAgIEBpZihpc0xvYWRpbmcoKSl7XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LXB5LTEyIGF4LWJnLXN1cmZhY2UgYXgtcHgtNVwiPlxuICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtbWluLXctMTYgYXgtaC0xNiBheC1yb3VuZGVkLWZ1bGwgYXgtbWUtNFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC13LWZ1bGxcIj5cbiAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtNiBheC1yb3VuZGVkXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtMiBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC0yIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctOC8xMiBheC1oLTIgYXgtcm91bmRlZC1mdWxsXCI+PC9heC1za2VsZXRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIH0gQGVsc2UgaWYoIWlzTG9hZGluZygpICYmIGNvbW1lbnRzKCkubGVuZ3RoID4gMCl7XG4gICAgPGF4LWNvbW1lbnQtdmlldyBjbGFzcz1cImF4LWJnLXN1cmZhY2VcIj5cbiAgICAgIEBmb3IoY29tbWVudCBvZiBjb21tZW50cygpOyB0cmFjayBjb21tZW50LmlkKXtcbiAgICAgIDxheC1jb21tZW50LWl0ZW0gW2lkXT1cImNvbW1lbnQuaWRcIiBbcmVwbHlDb3VudF09XCJjb21tZW50LnJlcGxpZXMubGVuZ3RoXCI+XG4gICAgICAgIDxheC1hdmF0YXIgW2NvbG9yXT1cImF2YXRhckNvbmZpZygpLmNvbG9yXCIgW2xvb2tdPVwiYXZhdGFyQ29uZmlnKCkubG9va1wiPlxuICAgICAgICAgIEBpZihjaGVja0ltYWdlRXhpc3RzKGNvbW1lbnQuaWQpICYmIGNvbW1lbnQudXNlci5waWN0dXJlKXtcbiAgICAgICAgICA8YXgtaW1hZ2UgKG9uRXJyb3IpPVwiaGFuZGxlSW1hZ2VFcnJvcihjb21tZW50LmlkKVwiIFtzcmNdPVwiY29tbWVudC51c2VyLnBpY3R1cmVcIj5cbiAgICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgICA8L2F4LWltYWdlPlxuICAgICAgICAgIH1AZWxzZXtcbiAgICAgICAgICA8YXgtdGV4dD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1iYXNlIGF4LW92ZXJmbG93LWhpZGRlblwiPnt7XG4gICAgICAgICAgICAgIGV4dHJhY3RJbml0aWFscyhjb21tZW50LnVzZXIuZmlyc3ROYW1lICsgJyAnICsgY29tbWVudC51c2VyLmxhc3ROYW1lKVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9heC10ZXh0PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9heC1hdmF0YXI+XG4gICAgICAgIDxheC10aXRsZT57eyBjb21tZW50LnVzZXIuZmlyc3ROYW1lICsgJyAnICsgY29tbWVudC51c2VyLmxhc3ROYW1lIH19PC9heC10aXRsZT5cbiAgICAgICAgPGF4LWNvbW1lbnQtZGF0ZT57eyB0aW1lIHwgZm9ybWF0IDogJ3RpbWVsZWZ0JyB8IGFzeW5jIH19IDwvYXgtY29tbWVudC1kYXRlPlxuICAgICAgICA8YXgtY29tbWVudC1tZW51LW9wdGlvbnM+XG4gICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCIgbG9vaz1cImJsYW5rXCIgY29sb3I9XCJzZWNvbmRhcnlcIj5cbiAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIGF4LWljb24tc29saWQgYXgtaWNvbi1tb3JlLWhvcml6b250YWxcIj48L2F4LWljb24+XG4gICAgICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJFZGl0XCIgY29sb3I9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwiZWRpdE1lc3NhZ2UoY29tbWVudClcIj5cbiAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLWVkaXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG5cbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJEZWxldGVcIiBjb2xvcj1cImRhbmdlclwiIChjbGljayk9XCJkZWxldGVDb21tZW50KGNvbW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS10cmFzaC1jYW5cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgPC9heC1jb21tZW50LW1lbnUtb3B0aW9ucz5cbiAgICAgICAgPGF4LWNvbnRlbnQgW2lubmVySFRNTF09XCJzYW5pdGl6ZUh0bWwoY29tbWVudC5jb250ZW50KVwiPjwvYXgtY29udGVudD5cbiAgICAgICAgPGF4LWNvbW1lbnQtbGlrZSAoY2xpY2spPVwidG9nZ2xlTGlrZShjb21tZW50KVwiIFtsaWtlZF09XCJjb21tZW50LmlzTGlrZWRcIj5cbiAgICAgICAgICB7eyBjb21tZW50LnJlYWN0aW9uc0NvdW50IH19XG4gICAgICAgIDwvYXgtY29tbWVudC1saWtlPlxuICAgICAgICA8YXgtY29tbWVudC1yZXBseS10ZXh0IChjbGljayk9XCJyZXBseU1lc3NhZ2UoY29tbWVudClcIj48L2F4LWNvbW1lbnQtcmVwbHktdGV4dD5cbiAgICAgICAgQGZvcihyZXBseSBvZiBjb21tZW50LnJlcGxpZXM7IHRyYWNrIHJlcGx5LmlkKXtcbiAgICAgICAgPGF4LWNvbW1lbnQtaXRlbSBbaWRdPVwicmVwbHkuaWRcIj5cbiAgICAgICAgICA8YXgtYXZhdGFyIFtjb2xvcl09XCJhdmF0YXJDb25maWcoKS5jb2xvclwiIFtsb29rXT1cImF2YXRhckNvbmZpZygpLmxvb2tcIj5cbiAgICAgICAgICAgIEBpZihjaGVja0ltYWdlRXhpc3RzKHJlcGx5LmlkKSAmJiByZXBseS51c2VyLnBpY3R1cmUpe1xuICAgICAgICAgICAgPGF4LWltYWdlIChvbkVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IocmVwbHkuaWQpXCIgW3NyY109XCJyZXBseS51c2VyLnBpY3R1cmVcIj5cbiAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgPC9heC1pbWFnZT5cbiAgICAgICAgICAgIH1AZWxzZXtcbiAgICAgICAgICAgIDxheC10ZXh0PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtYmFzZSBheC1vdmVyZmxvdy1oaWRkZW5cIj57e1xuICAgICAgICAgICAgICAgIGV4dHJhY3RJbml0aWFscyhyZXBseS51c2VyLmZpcnN0TmFtZSArICcgJyArIHJlcGx5LnVzZXIubGFzdE5hbWUpXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9heC10ZXh0PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtYXZhdGFyPlxuICAgICAgICAgIDxheC10aXRsZT57eyAocmVwbHk/LnVzZXI/LmZpcnN0TmFtZSA/PyAnJykgKyAnICcgKyAocmVwbHk/LnVzZXI/Lmxhc3ROYW1lID8/ICcnKSB9fTwvYXgtdGl0bGU+XG4gICAgICAgICAgPGF4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCIgbG9vaz1cImJsYW5rXCIgY29sb3I9XCJzZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24gYXgtaWNvbi1zb2xpZCBheC1pY29uLW1vcmUtaG9yaXpvbnRhbFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiRWRpdFwiIGNvbG9yPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImVkaXRNZXNzYWdlKGNvbW1lbnQsIHJlcGx5KVwiPlxuICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLWVkaXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiRGVsZXRlXCIgY29sb3I9XCJkYW5nZXJcIiAoY2xpY2spPVwiZGVsZXRlUmVwbHkoY29tbWVudCwgcmVwbHkpXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICA8L2F4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgIDxheC1jb250ZW50IFtpbm5lckhUTUxdPVwic2FuaXRpemVIdG1sKHJlcGx5LmNvbnRlbnQpXCI+PC9heC1jb250ZW50PlxuICAgICAgICAgIDxheC1jb21tZW50LWxpa2UgKGNsaWNrKT1cInRvZ2dsZUxpa2UoY29tbWVudCwgcmVwbHkpXCIgW2xpa2VkXT1cInJlcGx5LmlzTGlrZWRcIj5cbiAgICAgICAgICAgIHt7IHJlcGx5LnJlYWN0aW9uc0NvdW50IH19XG4gICAgICAgICAgPC9heC1jb21tZW50LWxpa2U+XG4gICAgICAgICAgPGF4LWNvbW1lbnQtcmVwbHktdGV4dCAoY2xpY2spPVwicmVwbHlNZXNzYWdlKGNvbW1lbnQsIHJlcGx5KVwiPjwvYXgtY29tbWVudC1yZXBseS10ZXh0PlxuICAgICAgICA8L2F4LWNvbW1lbnQtaXRlbT5cbiAgICAgICAgfVxuICAgICAgPC9heC1jb21tZW50LWl0ZW0+XG4gICAgICB9IDwvYXgtY29tbWVudC12aWV3XG4gICAgPn0gQGVsc2V7XG4gICAgPGRpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00IGF4LWp1c3RpZnktY2VudGVyIGF4LWl0ZW1zLWNlbnRlciBheC1wLTEwXCI+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICBjbGFzcz1cImF4LW14LWF1dG9cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHdpZHRoPVwiMTU0XCJcbiAgICAgICAgICBoZWlnaHQ9XCIxNjFcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTU0IDE2MVwiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMC4wNjE2NDU1IDg0LjQyNjhDMC4wNjE2NDU1IDQyLjAyMTMgMzQuNDM1IDcuODM3NjUgNzYuNjUwNyA3LjgzNzY1QzExOC44MDMgNy44Mzc2NSAxNTMuMjI0IDQyLjAwNTUgMTUzLjIyNCA4NC40MjY4QzE1My4yMjQgMTAyLjQyIDE0Ny4wMjYgMTE4Ljk3NCAxMzYuNjIyIDEzMi4wMzRDMTIyLjI4MiAxNTAuMTM4IDEwMC4zNjcgMTYxIDc2LjY1MDcgMTYxQzUyLjc3NTkgMTYxIDMwLjk4ODIgMTUwLjA1OSAxNi42NjMzIDEzMi4wMzRDNi4yNTk2MSAxMTguOTc0IDAuMDYxNjQ1NSAxMDIuNDIgMC4wNjE2NDU1IDg0LjQyNjhaXCJcbiAgICAgICAgICAgIGZpbGw9XCIjRUVGMkZGXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTk2LjgxODkgMC42MzI0OThMOTYuODE4OSAwLjYzMjM4NEw5Ni44MDgzIDAuNjMwOTU0Qzk2LjIwMzQgMC41NDk1ODEgOTUuNTkzMSAwLjUgOTQuOTc4NyAwLjVIMjkuMzM4QzIyLjcxMTIgMC41IDE3LjMzOTQgNS44NDQ1NSAxNy4zMzk0IDEyLjQ0NzNWMTQyLjcxNUMxNy4zMzk0IDE0OS4zMTggMjIuNzExMiAxNTQuNjYyIDI5LjMzOCAxNTQuNjYySDEyMy45NDhDMTMwLjU5MSAxNTQuNjYyIDEzNS45NDYgMTQ5LjMxNyAxMzUuOTQ2IDE0Mi43MTVWMzguOTMwOUMxMzUuOTQ2IDM4LjAyNDQgMTM1Ljg0NyAzNy4xMzM0IDEzNS42NDggMzYuMjU4NkwxMzUuNjQ4IDM2LjI1ODRDMTM1LjExNyAzMy45MzA5IDEzMy44NzQgMzEuNzY4NiAxMzIuMDY2IDMwLjEzMzNDMTMyLjA2NiAzMC4xMzMxIDEzMi4wNjUgMzAuMTMyOSAxMzIuMDY1IDMwLjEzMjdMMTAzLjA2OCAzLjY1MjAzQzEwMy4wNjggMy42NTE5IDEwMy4wNjcgMy42NTE3NyAxMDMuMDY3IDMuNjUxNjRDMTAxLjMxMSAyLjAzNTI2IDk5LjEzOTYgMC45OTU1NTIgOTYuODE4OSAwLjYzMjQ5OFpcIlxuICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNFNUU3RUJcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGVsbGlwc2UgY3g9XCI4MC4wNjE4XCIgY3k9XCI4MVwiIHJ4PVwiMjguMDM0MlwiIHJ5PVwiMjguMDM0MlwiIGZpbGw9XCIjRUVGMkZGXCIgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk05OS4yMzkzIDYxLjMwNjFMOTkuMjM5MSA2MS4zMDU4Qzg4LjQ5OCA1MC41ODA4IDcxLjEwOTIgNTAuNTgwNCA2MC4zODM1IDYxLjMwNjFDNDkuNjQyMyA3Mi4wMzE2IDQ5LjY0MjIgODkuNDM2MSA2MC4zODMyIDEwMC4xNjJDNzEuMTA5IDExMC45MDMgODguNDk4MiAxMTAuOTAzIDk5LjIzOTMgMTAwLjE2MkMxMDkuOTY1IDg5LjQzNjMgMTA5Ljk2NSA3Mi4wMzE3IDk5LjIzOTMgNjEuMzA2MVpNMTA1Ljg2MyA1NC42ODMyQzEyMC4yNDkgNjkuMDY5NSAxMjAuMjQ5IDkyLjM5ODUgMTA1Ljg2MyAxMDYuNzg1QzkxLjQ2MDUgMTIxLjE3MSA2OC4xNDY4IDEyMS4xNzEgNTMuNzQ0NiAxMDYuNzg1QzM5LjM1ODIgOTIuMzk4NyAzOS4zNTgyIDY5LjA2OTMgNTMuNzQ0NiA1NC42ODNDNjguMTQ2OCA0MC4yOTY1IDkxLjQ2MDUgNDAuMjk2NiAxMDUuODYzIDU0LjY4MzJaXCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNFNUU3RUJcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTEwLjc4MiAxMTkuMjY3TDEwMi4wMTYgMTEwLjQ5MkMxMDQuODg4IDEwOC4yNjcgMTA3LjQ3NiAxMDUuNjUxIDEwOS41NjQgMTAyLjk1NUwxMTguMzI5IDExMS43MjlMMTEwLjc4MiAxMTkuMjY3WlwiXG4gICAgICAgICAgICBzdHJva2U9XCIjRTVFN0VCXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTEzOS4xMjIgMTI1Ljc4MUwxMzkuMTIyIDEyNS43OEwxMjMuMzEzIDEwOS45ODhDMTIzLjMxMyAxMDkuOTg3IDEyMy4zMTMgMTA5Ljk4NyAxMjMuMzEyIDEwOS45ODZDMTIxLjk5NiAxMDguNjUzIDExOS44NDkgMTA4LjY1NyAxMTguNTIxIDEwOS45ODVMMTE4Ljg3MSAxMTAuMzM1TDExOC41MjEgMTA5Ljk4NUwxMDkuMDQ3IDExOS40NTlDMTA3LjczMSAxMjAuNzc1IDEwNy43MzUgMTIyLjkxOCAxMDkuMDQ0IDEyNC4yNDdMMTA5LjA0NyAxMjQuMjQ5TDEyNC44NTggMTQwLjA2QzEyOC43ODkgMTQzLjk5MiAxMzUuMTkxIDE0My45OTIgMTM5LjEyMiAxNDAuMDZDMTQzLjA2OSAxMzYuMTEzIDE0My4wNjkgMTI5LjcyOCAxMzkuMTIyIDEyNS43ODFaXCJcbiAgICAgICAgICAgIGZpbGw9XCIjQTVCNEZDXCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiM4MThDRjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNODMuMTg1IDg3LjIyODVDODIuNTM4NyA4Ny4yMjg1IDgyLjAwMjcgODYuNjkyNiA4Mi4wMDI3IDg2LjAzMDVDODIuMDAyNyA4My4zODIxIDc3Ljk5ODcgODMuMzgyMSA3Ny45OTg3IDg2LjAzMDVDNzcuOTk4NyA4Ni42OTI2IDc3LjQ2MjcgODcuMjI4NSA3Ni44MDA2IDg3LjIyODVDNzYuMTU0MyA4Ny4yMjg1IDc1LjYxODMgODYuNjkyNiA3NS42MTgzIDg2LjAzMDVDNzUuNjE4MyA4MC4yMjk0IDg0LjM4MzEgODAuMjQ1MSA4NC4zODMxIDg2LjAzMDVDODQuMzgzMSA4Ni42OTI2IDgzLjg0NzEgODcuMjI4NSA4My4xODUgODcuMjI4NVpcIlxuICAgICAgICAgICAgZmlsbD1cIiM0RjQ2RTVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNOTMuMzUyOCA3Ny4wOTI2SDg4LjQwM0M4Ny43NDA5IDc3LjA5MjYgODcuMjA0OSA3Ni41NTY3IDg3LjIwNDkgNzUuODk0NkM4Ny4yMDQ5IDc1LjI0ODMgODcuNzQwOSA3NC43MTIzIDg4LjQwMyA3NC43MTIzSDkzLjM1MjhDOTQuMDE0OSA3NC43MTIzIDk0LjU1MDkgNzUuMjQ4MyA5NC41NTA5IDc1Ljg5NDZDOTQuNTUwOSA3Ni41NTY3IDk0LjAxNDkgNzcuMDkyNiA5My4zNTI4IDc3LjA5MjZaXCJcbiAgICAgICAgICAgIGZpbGw9XCIjNEY0NkU1XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTcxLjU5ODcgNzcuMDkyNUg2Ni42NDg4QzY1Ljk4NjcgNzcuMDkyNSA2NS40NTA3IDc2LjU1NjUgNjUuNDUwNyA3NS44OTQ1QzY1LjQ1MDcgNzUuMjQ4MSA2NS45ODY3IDc0LjcxMjIgNjYuNjQ4OCA3NC43MTIySDcxLjU5ODdDNzIuMjQ1IDc0LjcxMjIgNzIuNzgxIDc1LjI0ODEgNzIuNzgxIDc1Ljg5NDVDNzIuNzgxIDc2LjU1NjUgNzIuMjQ1IDc3LjA5MjUgNzEuNTk4NyA3Ny4wOTI1WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzRGNDZFNVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cmVjdCB4PVwiMzguMzUyMlwiIHk9XCIyMS41MTI4XCIgd2lkdGg9XCI0MS4wMjU2XCIgaGVpZ2h0PVwiMi43MzUwNFwiIHJ4PVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICA8cmVjdCB4PVwiMzguMzUyMlwiIHk9XCIxMzMuNjVcIiB3aWR0aD1cIjU0LjcwMDlcIiBoZWlnaHQ9XCI1LjQ3MDA5XCIgcng9XCIyLjczNTA0XCIgZmlsbD1cIiNBNUI0RkNcIiAvPlxuICAgICAgICAgIDxyZWN0IHg9XCIzOC4zNTIyXCIgeT1cIjI5LjcxNzlcIiB3aWR0aD1cIjEzLjY3NTJcIiBoZWlnaHQ9XCIyLjczNTA0XCIgcng9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI1Ni4xM1wiIGN5PVwiMzEuMDg1NFwiIHI9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI2MS42MDAxXCIgY3k9XCIzMS4wODU0XCIgcj1cIjEuMzY3NTJcIiBmaWxsPVwiIzRGNDZFNVwiIC8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjY3LjA3MDJcIiBjeT1cIjMxLjA4NTRcIiByPVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiYXgtdGV4dC1jZW50ZXIgYXgtdGV4dC1uZXV0cmFsLTYwMCBheC1mb250LXNlbWlib2xkIGF4LWxlYWRpbmctbG9vc2UgYXgtcGItMlwiPlxuICAgICAgICAgICAgVGhlcmUgaXMgbm8gQ29tbWVudCFcbiAgICAgICAgICA8L2gyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9heC1jb21tZW50LWNvbnRhaW5lcj5cbiAgPGF4LWZvcm0+XG4gICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICA8ZGl2PlxuICAgICAgICBAaWYoaXNSZXBseWluZ01vZGUoKSB8fCBpc0VkaXRpbmdNb2RlKCkpe1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1yb3VuZGVkLWItbm9uZSBheC1ib3JkZXIgYXgtYm9yZGVyLWItMCBheC1yb3VuZGVkLWxnIGF4LWJnLW9uLXN1cmZhY2UgYXgtcHgtNiBheC1weS0zIGF4LXctZnVsbCBheC1pdGVtcy1jZW50ZXIgYXgtb3ZlcmZsb3ctaGlkZGVuIGF4LXRleHQtc20gYXgtbGVhZGluZy1ub25lXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNjcm9sbE1haW4oKVwiIGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LXN0YXJ0IGF4LWl0ZW1zLWNlbnRlciBheC1jdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImlzUmVwbHlpbmdNb2RlKCkgPyAnZmEtcmVwbHknIDogJ2ZhLXBlbidcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZhLXNvbGlkIGF4LXRleHQtcHJpbWFyeS01MDAgZGFyazpheC10ZXh0LXByaW1hcnktMzAwIGF4LXRleHQtMnhsIGF4LW1lLTRcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0yIGF4LWp1c3RpZnktYmV0d2VlbiBheC1hbGlnbi1taWRkbGUgYXgtbGVhZGluZy00IGF4LW92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1wcmltYXJ5LTUwMCBkYXJrOmF4LXRleHQtcHJpbWFyeS0zMDBcIj5cbiAgICAgICAgICAgICAgICB7eyBpc1JlcGx5aW5nTW9kZSgpID8gJ1JlcGx5IHRvICcgOiAnRWRpdCBNZXNzYWdlJyB9fVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBpc1JlcGx5aW5nTW9kZSgpXG4gICAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVSZXBseUNvbW1lbnQoKT8udXNlcj8uZmlyc3ROYW1lICsgJyAnICsgYWN0aXZlUmVwbHlDb21tZW50KCk/LnVzZXI/Lmxhc3ROYW1lXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICBpc1JlcGx5aW5nTW9kZSgpXG4gICAgICAgICAgICAgICAgICAgID8gc2FuaXRpemVIdG1sKGFjdGl2ZVJlcGx5Q29tbWVudCgpPy5jb250ZW50ID8/ICcnKVxuICAgICAgICAgICAgICAgICAgICA6IHNhbml0aXplSHRtbChhY3RpdmVFZGl0Q29tbWVudCgpPy5jb250ZW50ID8/ICcnKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+PGkgKGNsaWNrKT1cInJlc2V0UmVwbHlFZGl0U3RhdGUoKVwiIGNsYXNzPVwiZmEtc29saWQgYXgtdGV4dC0yeGwgZmEteG1hcmsgYXgtY3Vyc29yLXBvaW50ZXJcIj48L2k+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxheC13eXNpd3lnLWNvbnRhaW5lciAjdyBbbG9va109XCJ3eXNpd3lnT3B0aW9ucygpLmxvb2tcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRDb250ZW50XCI+XG4gICAgICAgICAgPGF4LXd5c2l3eWctdmlldyBjbGFzcz1cImF4LW1pbi1oLTI4XCI+PC9heC13eXNpd3lnLXZpZXc+XG4gICAgICAgICAgPGF4LXd5c2l3eWctdG9vbGJhcj5cbiAgICAgICAgICAgIDxheC13eXNpd3lnLWhpc3Rvcnk+PC9heC13eXNpd3lnLWhpc3Rvcnk+XG4gICAgICAgICAgICA8YXgtd3lzaXd5Zy1mb250LXN0eWxlPjwvYXgtd3lzaXd5Zy1mb250LXN0eWxlPlxuICAgICAgICAgICAgPGF4LXd5c2l3eWctY29sb3JzPjwvYXgtd3lzaXd5Zy1jb2xvcnM+XG4gICAgICAgICAgICA8YXgtd3lzaXd5Zy1saXN0PjwvYXgtd3lzaXd5Zy1saXN0PlxuICAgICAgICAgICAgPGF4LXd5c2l3eWctYWxpZ25tZW50PjwvYXgtd3lzaXd5Zy1hbGlnbm1lbnQ+XG4gICAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgICA8YXgtZHJvcGRvd24tYnV0dG9uXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImhhc0Nvb2xkb3duKClcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgbW9kZT1cInNwbGl0XCJcbiAgICAgICAgICAgICAgICB0ZXh0PVwiU2VuZFwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic3VibWl0Q29tbWVudCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZihpc1N1Ym1pdHRpbmcoKSl7IDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz4gfVxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIChjbGljayk9XCJzdWJtaXRDb21tZW50KHRydWUpXCIgdGV4dD1cIlNlbmQgUHJpdmF0ZSAuLi5cIiBuYW1lPVwicHJpdmF0ZVwiIGRhdGE9XCJwcml2YXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXJlZ3VsYXIgZmEtdXNlci1zZWNyZXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgPC9heC13eXNpd3lnLXRvb2xiYXI+XG4gICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSBydWxlPVwiY2FsbGJhY2tcIiBbb3B0aW9uc109XCJ7IHZhbGlkYXRlOiB2YWxpZGF0ZUNvbnRlbnQgfVwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICA8L2F4LXd5c2l3eWctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9heC1mb3JtLWZpZWxkPlxuICA8L2F4LWZvcm0+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export class AXPCommentService {
|
|
2
2
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGhlbWVzL3NoYXJlZC9zcmMvbGliL2NvbW1lbnRzL2NvbW1lbnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxPQUFnQixpQkFBaUI7Q0FRdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWFBDb21tZW50UmVzcG9uc2UsXG4gIEFYUENvbW1lbnRDcmVhdGVSZXF1ZXN0LFxuICBBWFBDb21tZW50RGVsZXRlUmVxdWVzdCxcbiAgQVhQQ29tbWVudEdldFJlcXVlc3QsXG4gIEFYUENvbW1lbnRMaWtlUmVxdWVzdCxcbiAgQVhQQ29tbWVudFVwZGF0ZVJlcXVlc3QsXG59IGZyb20gJy4vY29tbWVudHMudHlwZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBDb21tZW50U2VydmljZSB7XG4gIGFic3RyYWN0IGdldChwYXlsb2FkOiBBWFBDb21tZW50R2V0UmVxdWVzdCk6IFByb21pc2U8QVhQQ29tbWVudFJlc3BvbnNlPjtcbiAgYWJzdHJhY3QgY3JlYXRlKHBheWxvYWQ6IEFYUENvbW1lbnRDcmVhdGVSZXF1ZXN0KTogUHJvbWlzZTxzdHJpbmc+O1xuICBhYnN0cmFjdCBkZWxldGUocGF5bG9hZDogQVhQQ29tbWVudERlbGV0ZVJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+O1xuICBhYnN0cmFjdCB1cGRhdGUocGF5bG9hZDogQVhQQ29tbWVudFVwZGF0ZVJlcXVlc3QpOiBQcm9taXNlPHN0cmluZz47XG4gIGFic3RyYWN0IGxpa2UocGF5bG9hZDogQVhQQ29tbWVudExpa2VSZXF1ZXN0KTogUHJvbWlzZTxzdHJpbmc+O1xuICAvLyBhYnN0cmFjdCBkZWxldGVDb21tZW50KGNvbW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgLy8gYWJzdHJhY3QgZWRpdENvbW1lbnQocGF5bG9hZDogQVhQQ29tbWVudCk6IFByb21pc2U8QVhQQ29tbWVudD47XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudHMudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGhlbWVzL3NoYXJlZC9zcmMvbGliL2NvbW1lbnRzL2NvbW1lbnRzLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQVhQQ29tbWVudFZpc2libGVNZXNzYWdlIHtcbiAgaWQ6IHN0cmluZztcbiAgbWVtYmVySWQ6IHN0cmluZztcbiAgbWVtYmVyVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUENvbW1lbnRTdGF0dXNNZXNzYWdlIHtcbiAgaWQ6IHN0cmluZztcbiAgbWVtYmVySWQ6IHN0cmluZztcbiAgbWVtYmVyVHlwZTogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBDb21tZW50SGlzdG9yeU1lc3NhZ2Uge1xuICBpZDogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIGlzUHJpdmF0ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBDb21tZW50VXNlckRldGFpbHMge1xuICBpZDogc3RyaW5nO1xuICB1c2VyTmFtZTogc3RyaW5nO1xuICBmaXJzdE5hbWU6IHN0cmluZztcbiAgbGFzdE5hbWU6IHN0cmluZztcbiAgcGljdHVyZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBDb21tZW50IHtcbiAgY29udGVudDogc3RyaW5nO1xuICBjb250ZW50VHlwZTogc3RyaW5nO1xuICBtZW1iZXJJZDogc3RyaW5nO1xuICBtZW1iZXJUeXBlOiBzdHJpbmc7XG4gIHJvb21JZDogc3RyaW5nO1xuICBpc1ByaXZhdGU6IGJvb2xlYW47XG4gIHJlcGx5SWQ6IHN0cmluZyB8IG51bGw7XG4gIG1lc3NhZ2VWaXNpYmxlczogQVhQQ29tbWVudFZpc2libGVNZXNzYWdlW107XG4gIG1lc3NhZ2VTdGF0dXNlczogQVhQQ29tbWVudFN0YXR1c01lc3NhZ2VbXTtcbiAgbWVzc2FnZUhpc3RvcmllczogQVhQQ29tbWVudEhpc3RvcnlNZXNzYWdlW107XG4gIHJlcGxpZXM6IEFYUENvbW1lbnRbXTtcbiAgaXNBcmNoaXZlZDogYm9vbGVhbjtcbiAgaXNMaWtlZDogYm9vbGVhbjtcbiAgcmVhY3Rpb25zQ291bnQ6IG51bWJlcjtcbiAgcmVwbGllc0NvdW50OiBudW1iZXI7XG4gIHVzZXI6IEFYUENvbW1lbnRVc2VyRGV0YWlscztcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBDb21tZW50UmVzcG9uc2Uge1xuICB0b3RhbENvdW50OiBudW1iZXI7XG4gIGl0ZW1zOiBBWFBDb21tZW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ29tbWVudENyZWF0ZVJlcXVlc3QgZXh0ZW5kcyBQYXJ0aWFsPEFYUENvbW1lbnQ+IHtcbiAgY29udGVudDogc3RyaW5nO1xuICBjb250ZW50VHlwZTogc3RyaW5nO1xuICBpc1ByaXZhdGU6IGJvb2xlYW47XG4gIHJlcGx5SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbWVtYmVycz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUENvbW1lbnRHZXRSZXF1ZXN0IGV4dGVuZHMgUGFydGlhbDxBWFBDb21tZW50PiB7XG4gIHJvb21UeXBlOiBzdHJpbmc7XG4gIGVudGl0eUlkOiBzdHJpbmc7XG4gIGluc3RhbmNlSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBDb21tZW50RGVsZXRlUmVxdWVzdCB7XG4gIGlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ29tbWVudFVwZGF0ZVJlcXVlc3Qge1xuICBpZDogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ29tbWVudExpa2VSZXF1ZXN0IHtcbiAgbWVzc2FnZUlkOiBzdHJpbmc7XG4gIHR5cGU6ICdsaWtlJztcbn1cbiJdfQ==
|