@acorex/modules 21.0.0-next.5 → 21.0.0-next.8
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/application-management/index.d.ts +1 -0
- package/business-core/README.md +44 -1
- package/calendar-management/index.d.ts +6 -7
- package/document-management/index.d.ts +1544 -174
- package/fesm2022/acorex-modules-application-management.mjs +2 -0
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-C4_2RPxG.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-7S277fXg.mjs} +23 -23
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-7S277fXg.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-D2YRh7ro.mjs → acorex-modules-assessment-management-answers-viewer-widget-column.component-FnpwLbkS.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-D2YRh7ro.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-column.component-FnpwLbkS.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-B-S78gfQ.mjs → acorex-modules-assessment-management-answers-viewer-widget-edit.component-By0ETDZf.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-B-S78gfQ.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-edit.component-By0ETDZf.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C1BTgRTR.mjs → acorex-modules-assessment-management-answers-viewer-widget-view.component-DxmjBgIo.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C1BTgRTR.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-view.component-DxmjBgIo.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-DwTlClTz.mjs → acorex-modules-assessment-management-assessment-case.entity-CBjAGtV3.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-DwTlClTz.mjs.map → acorex-modules-assessment-management-assessment-case.entity-CBjAGtV3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-BmvacBUU.mjs → acorex-modules-assessment-management-assessment-session.entity-CMnJ44gj.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-BmvacBUU.mjs.map → acorex-modules-assessment-management-assessment-session.entity-CMnJ44gj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-D7ZNQBo8.mjs → acorex-modules-assessment-management-fill-assessment-session.command-8OhZEoAp.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-D7ZNQBo8.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-8OhZEoAp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BQxlJax7.mjs → acorex-modules-assessment-management-preview-questionnaire.command-CUybKZFY.mjs} +4 -4
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BQxlJax7.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-CUybKZFY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CIjS5M1b.mjs → acorex-modules-assessment-management-question-bank-item.entity-C9gxvSqN.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CIjS5M1b.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-C9gxvSqN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-DAYiqBeA.mjs → acorex-modules-assessment-management-questionnaire-builder-edit.component-CUCT7Tcg.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-DAYiqBeA.mjs.map → acorex-modules-assessment-management-questionnaire-builder-edit.component-CUCT7Tcg.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-BTXwZu9a.mjs → acorex-modules-assessment-management-questionnaire-builder-view.component-QhZAjnIv.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-BTXwZu9a.mjs.map → acorex-modules-assessment-management-questionnaire-builder-view.component-QhZAjnIv.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-BAR6Uee-.mjs → acorex-modules-assessment-management-questionnaire-builder.component-CvdVE1TW.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-BAR6Uee-.mjs.map → acorex-modules-assessment-management-questionnaire-builder.component-CvdVE1TW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DZ4TltLI.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-iDPvZ1Iu.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DZ4TltLI.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-iDPvZ1Iu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-B2GV_e0o.mjs → acorex-modules-assessment-management-questionnaire-viewer.service-C2bz2R0N.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-B2GV_e0o.mjs.map → acorex-modules-assessment-management-questionnaire-viewer.service-C2bz2R0N.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-mOtlUkUO.mjs → acorex-modules-assessment-management-questionnaire.entity-kvgtbI_h.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-mOtlUkUO.mjs.map → acorex-modules-assessment-management-questionnaire.entity-kvgtbI_h.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BQ-3r9YQ.mjs → acorex-modules-assessment-management-view-session-answers.command-Dfl4QTDD.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BQ-3r9YQ.mjs.map → acorex-modules-assessment-management-view-session-answers.command-Dfl4QTDD.mjs.map} +1 -1
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-D5jGjm6i.mjs → acorex-modules-auth-acorex-modules-auth-8XP9xX7L.mjs} +95 -51
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-8XP9xX7L.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-BL3Fmc7y.mjs → acorex-modules-auth-app-chooser.component-BvbLYIXA.mjs} +6 -6
- package/fesm2022/acorex-modules-auth-app-chooser.component-BvbLYIXA.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-login.module-D8-GN_Hx.mjs → acorex-modules-auth-login.module-DLWlieUn.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-D8-GN_Hx.mjs.map → acorex-modules-auth-login.module-DLWlieUn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-CgDrAbPS.mjs → acorex-modules-auth-master.layout-BzV1eUvM.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-CgDrAbPS.mjs.map → acorex-modules-auth-master.layout-BzV1eUvM.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-lEMWnVJL.mjs → acorex-modules-auth-oauth-callback.component-CqaXMQdp.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-lEMWnVJL.mjs.map → acorex-modules-auth-oauth-callback.component-CqaXMQdp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-BQII_ltO.mjs → acorex-modules-auth-password.component-BR2qrph-.mjs} +9 -9
- package/fesm2022/{acorex-modules-auth-password.component-BQII_ltO.mjs.map → acorex-modules-auth-password.component-BR2qrph-.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-password.component-DMmRFHgO.mjs +563 -0
- package/fesm2022/acorex-modules-auth-password.component-DMmRFHgO.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-BGLnoGO4.mjs → acorex-modules-auth-routes-BRQJ6Mx_.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-BGLnoGO4.mjs.map → acorex-modules-auth-routes-BRQJ6Mx_.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CptZLRwB.mjs +58 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CptZLRwB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-BmlUjtYC.mjs → acorex-modules-auth-two-factor-code.component-CvheFTK7.mjs} +6 -6
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-BmlUjtYC.mjs.map → acorex-modules-auth-two-factor-code.component-CvheFTK7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-D1UjsoB8.mjs → acorex-modules-auth-two-factor.module-TGGOwEpP.mjs} +3 -3
- package/fesm2022/{acorex-modules-auth-two-factor.module-D1UjsoB8.mjs.map → acorex-modules-auth-two-factor.module-TGGOwEpP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-CIlGFT7H.mjs → acorex-modules-auth-user-sessions.component-C_JzCXUy.mjs} +6 -6
- package/fesm2022/{acorex-modules-auth-user-sessions.component-CIlGFT7H.mjs.map → acorex-modules-auth-user-sessions.component-C_JzCXUy.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/{acorex-modules-business-core-business-status.entity-DE3JJYdY.mjs → acorex-modules-business-core-business-status.entity-BYUneIcN.mjs} +2 -2
- package/fesm2022/acorex-modules-business-core-business-status.entity-BYUneIcN.mjs.map +1 -0
- package/fesm2022/{acorex-modules-business-core-business-type.entity-_IwOWQVA.mjs → acorex-modules-business-core-business-type.entity-DEy8LvEV.mjs} +2 -2
- package/fesm2022/acorex-modules-business-core-business-type.entity-DEy8LvEV.mjs.map +1 -0
- package/fesm2022/{acorex-modules-business-core-industry.entity-bwgPAZDk.mjs → acorex-modules-business-core-industry.entity-CGNfgpMs.mjs} +2 -2
- package/fesm2022/acorex-modules-business-core-industry.entity-CGNfgpMs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-business-core-manufacturer.entity-CDlQlBUD.mjs → acorex-modules-business-core-manufacturer.entity-DhyMx-nJ.mjs} +2 -1
- package/fesm2022/acorex-modules-business-core-manufacturer.entity-DhyMx-nJ.mjs.map +1 -0
- package/fesm2022/acorex-modules-business-core.mjs +4 -4
- package/fesm2022/acorex-modules-calendar-management.mjs +46 -74
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-common.mjs +6 -3
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-customer-management-customer-segment.entity-CUBg2GZp.mjs → acorex-modules-customer-management-customer-segment.entity-CoYAU5g3.mjs} +2 -1
- package/fesm2022/acorex-modules-customer-management-customer-segment.entity-CoYAU5g3.mjs.map +1 -0
- package/fesm2022/{acorex-modules-customer-management-customer-type.entity-rmq6BeCF.mjs → acorex-modules-customer-management-customer-type.entity-pt4gpOGq.mjs} +2 -1
- package/fesm2022/acorex-modules-customer-management-customer-type.entity-pt4gpOGq.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management.mjs +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bnp1l18X.mjs → acorex-modules-document-management-attachment-widget.component-zsWIFXD7.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bnp1l18X.mjs.map → acorex-modules-document-management-attachment-widget.component-zsWIFXD7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-TfRh2Jom.mjs → acorex-modules-document-management-details-view.component-DD7P_Xz7.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-TfRh2Jom.mjs.map → acorex-modules-document-management-details-view.component-DD7P_Xz7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-nKUvSQuz.mjs → acorex-modules-document-management-document-signature-popup.component-DsCP-XfJ.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-nKUvSQuz.mjs.map → acorex-modules-document-management-document-signature-popup.component-DsCP-XfJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-CPQC_Qxe.mjs → acorex-modules-document-management-drive-choose.component-FUlvIsJu.mjs} +7 -7
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-CPQC_Qxe.mjs.map → acorex-modules-document-management-drive-choose.component-FUlvIsJu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BP_4qwha.mjs → acorex-modules-document-management-large-icons-view.component-Dzc3SOKz.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BP_4qwha.mjs.map → acorex-modules-document-management-large-icons-view.component-Dzc3SOKz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CP9Ra0z9.mjs → acorex-modules-document-management-large-tiles-view.component-DrRbFkP4.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CP9Ra0z9.mjs.map → acorex-modules-document-management-large-tiles-view.component-DrRbFkP4.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-nJmv07CR.mjs → acorex-modules-document-management-link-dialog.component-DKGpdhH1.mjs} +3 -3
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-nJmv07CR.mjs.map → acorex-modules-document-management-link-dialog.component-DKGpdhH1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-LhSA_duB.mjs → acorex-modules-document-management-list-view.component-C7cR3m4S.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-LhSA_duB.mjs.map → acorex-modules-document-management-list-view.component-C7cR3m4S.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-DJABAVOV.mjs → acorex-modules-document-management-share-dialog.component-MK4UO_uy.mjs} +3 -3
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-DJABAVOV.mjs.map → acorex-modules-document-management-share-dialog.component-MK4UO_uy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-Bh_FI1nk.mjs → acorex-modules-document-management-share-email-dialog.component-D5f4T_2K.mjs} +3 -3
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-Bh_FI1nk.mjs.map → acorex-modules-document-management-share-email-dialog.component-D5f4T_2K.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BOtJGiPU.mjs → acorex-modules-document-management-small-icons-view.component-BPWvSH3i.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BOtJGiPU.mjs.map → acorex-modules-document-management-small-icons-view.component-BPWvSH3i.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BiKZ-FyZ.mjs → acorex-modules-document-management-small-tiles-view.component-fIQ4RY_F.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BiKZ-FyZ.mjs.map → acorex-modules-document-management-small-tiles-view.component-fIQ4RY_F.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +9329 -1
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-financial-core.mjs +7 -5
- package/fesm2022/acorex-modules-financial-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-human-capital-management-approve-leave-request.command-DN2T2hBp.mjs +59 -0
- package/fesm2022/acorex-modules-human-capital-management-approve-leave-request.command-DN2T2hBp.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-cancel-leave-request.command-CYMo0I8p.mjs +59 -0
- package/fesm2022/acorex-modules-human-capital-management-cancel-leave-request.command-CYMo0I8p.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-CR4xmtkI.mjs +381 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-CR4xmtkI.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BDh7IX7_.mjs → acorex-modules-human-capital-management-leave-request.entity-Dm_IKrVw.mjs} +1 -2
- package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-Dm_IKrVw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-DlCdAtaz.mjs → acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs} +11 -3
- package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-reject-leave-request.command-1Bn0gaZi.mjs +62 -0
- package/fesm2022/acorex-modules-human-capital-management-reject-leave-request.command-1Bn0gaZi.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management.mjs +115 -36
- package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-learning-management-certificate-definition.entity-BVvSzl2b.mjs → acorex-modules-learning-management-certificate-definition.entity-27VKYxw1.mjs} +2 -2
- package/fesm2022/acorex-modules-learning-management-certificate-definition.entity-27VKYxw1.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-course.entity-BYb3Mgyi.mjs → acorex-modules-learning-management-course.entity-BN8XHAPz.mjs} +2 -2
- package/fesm2022/acorex-modules-learning-management-course.entity-BN8XHAPz.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-skill.entity-CK93JIPg.mjs → acorex-modules-learning-management-skill.entity-rfMFaOAJ.mjs} +2 -1
- package/fesm2022/acorex-modules-learning-management-skill.entity-rfMFaOAJ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-training-definition.entity-C5RVLTy7.mjs → acorex-modules-learning-management-training-definition.entity-NQqJ5avw.mjs} +2 -2
- package/fesm2022/acorex-modules-learning-management-training-definition.entity-NQqJ5avw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-training.entity-KfxtUHEK.mjs → acorex-modules-learning-management-training.entity-DHGSlVR3.mjs} +2 -2
- package/fesm2022/acorex-modules-learning-management-training.entity-DHGSlVR3.mjs.map +1 -0
- package/fesm2022/acorex-modules-learning-management.mjs +5 -5
- package/fesm2022/acorex-modules-notification-management.mjs +34 -16
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-order-management.mjs +4 -0
- package/fesm2022/acorex-modules-order-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-job-definition.entity-Cki_0gIY.mjs → acorex-modules-organization-management-job-definition.entity-s-TfP412.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-job-definition.entity-s-TfP412.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-position.entity-m7QrOTgN.mjs → acorex-modules-organization-management-position.entity-vbmjSfyb.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-position.entity-vbmjSfyb.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +2 -2
- package/fesm2022/{acorex-modules-person-management-person.entity-DWfnmtVe.mjs → acorex-modules-person-management-person.entity-BnliZw-K.mjs} +35 -33
- package/fesm2022/acorex-modules-person-management-person.entity-BnliZw-K.mjs.map +1 -0
- package/fesm2022/acorex-modules-person-management.mjs +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-BIq_sJye.mjs → acorex-modules-platform-management-acorex-modules-platform-management-CAntNN8Z.mjs} +4 -2
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-BIq_sJye.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-CAntNN8Z.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-CL-zuLJ1.mjs → acorex-modules-platform-management-menu-list.component-CWutHAb3.mjs} +3 -3
- package/fesm2022/acorex-modules-platform-management-menu-list.component-CWutHAb3.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/{acorex-modules-product-catalog-brand.entity-DIv0bsiY.mjs → acorex-modules-product-catalog-brand.entity-C8VOfwF0.mjs} +2 -1
- package/fesm2022/acorex-modules-product-catalog-brand.entity-C8VOfwF0.mjs.map +1 -0
- package/fesm2022/{acorex-modules-product-catalog-product-sku.entity-CQw4VxjA.mjs → acorex-modules-product-catalog-product-sku.entity-Cxif--1E.mjs} +2 -1
- package/fesm2022/acorex-modules-product-catalog-product-sku.entity-Cxif--1E.mjs.map +1 -0
- package/fesm2022/{acorex-modules-product-catalog-product.entity-Cqye5OFr.mjs → acorex-modules-product-catalog-product.entity--aXivZUd.mjs} +2 -1
- package/fesm2022/acorex-modules-product-catalog-product.entity--aXivZUd.mjs.map +1 -0
- package/fesm2022/acorex-modules-product-catalog.mjs +3 -3
- package/fesm2022/acorex-modules-project-management.mjs +32 -1
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-Cp5QCIll.mjs → acorex-modules-report-management-report-runner-root-page.component-DEX4VgHX.mjs} +9 -9
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-DEX4VgHX.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +2 -2
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +3 -1
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-gQ5Sk1Sj.mjs → acorex-modules-settings-management-acorex-modules-settings-management-R6m7cpPE.mjs} +18 -18
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-gQ5Sk1Sj.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-R6m7cpPE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-BEDGpTc8.mjs → acorex-modules-settings-management-permission-definition.provider-BNzuJQfL.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-BEDGpTc8.mjs.map → acorex-modules-settings-management-permission-definition.provider-BNzuJQfL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BsA1TfMG.mjs → acorex-modules-settings-management-setting-page.component-B1SnxHdd.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BsA1TfMG.mjs.map → acorex-modules-settings-management-setting-page.component-B1SnxHdd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-C282orx7.mjs → acorex-modules-settings-management-setting-view.component-BsuZ-NQK.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-C282orx7.mjs.map → acorex-modules-settings-management-setting-view.component-BsuZ-NQK.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/acorex-modules-subscription-management.mjs +3 -0
- package/fesm2022/acorex-modules-subscription-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-supplier-management.mjs +1 -0
- package/fesm2022/acorex-modules-supplier-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-6D76WpRB.mjs +2246 -0
- package/fesm2022/acorex-modules-task-management-task-board.page-6D76WpRB.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management.mjs +21 -8
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-tenant-management.mjs +2 -0
- package/fesm2022/acorex-modules-tenant-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management.mjs +2074 -28
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/human-capital-management/index.d.ts +4 -1
- package/package.json +2 -2
- package/task-management/index.d.ts +32 -5
- package/workflow-management/index.d.ts +530 -8
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-C4_2RPxG.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-D5jGjm6i.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-app-chooser.component-BL3Fmc7y.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-DKG8o8k8.mjs +0 -226
- package/fesm2022/acorex-modules-auth-password.component-DKG8o8k8.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-DNDhBKDp.mjs +0 -109
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-DNDhBKDp.mjs.map +0 -1
- package/fesm2022/acorex-modules-business-core-business-status.entity-DE3JJYdY.mjs.map +0 -1
- package/fesm2022/acorex-modules-business-core-business-type.entity-_IwOWQVA.mjs.map +0 -1
- package/fesm2022/acorex-modules-business-core-industry.entity-bwgPAZDk.mjs.map +0 -1
- package/fesm2022/acorex-modules-business-core-manufacturer.entity-CDlQlBUD.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-customer-segment.entity-CUBg2GZp.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-customer-type.entity-rmq6BeCF.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-Dk4Z-JSv.mjs +0 -8995
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-Dk4Z-JSv.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-BzpH_FSJ.mjs +0 -388
- package/fesm2022/acorex-modules-document-management-drive.component-BzpH_FSJ.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-BDh7IX7_.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-DlCdAtaz.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-certificate-definition.entity-BVvSzl2b.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-course.entity-BYb3Mgyi.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-skill.entity-CK93JIPg.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-training-definition.entity-C5RVLTy7.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-training.entity-KfxtUHEK.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-job-definition.entity-Cki_0gIY.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-m7QrOTgN.mjs.map +0 -1
- package/fesm2022/acorex-modules-person-management-person.entity-DWfnmtVe.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-menu-list.component-CL-zuLJ1.mjs.map +0 -1
- package/fesm2022/acorex-modules-product-catalog-brand.entity-DIv0bsiY.mjs.map +0 -1
- package/fesm2022/acorex-modules-product-catalog-product-sku.entity-CQw4VxjA.mjs.map +0 -1
- package/fesm2022/acorex-modules-product-catalog-product.entity-Cqye5OFr.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-Cp5QCIll.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-CKgZoOGI.mjs +0 -1364
- package/fesm2022/acorex-modules-task-management-task-board.page-CKgZoOGI.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-report-management.mjs","sources":["../tmp-esm2022/report-management/lib/const.js","../tmp-esm2022/report-management/lib/manifest.js","../tmp-esm2022/report-management/lib/reports/report.types.js","../tmp-esm2022/report-management/lib/reports/report-definition.provider.js","../tmp-esm2022/report-management/lib/reports/report-definition.service.js","../tmp-esm2022/report-management/lib/reports/report-mapper.js","../tmp-esm2022/report-management/lib/features/report-runner/reports.provider.js","../tmp-esm2022/report-management/lib/report.provider.js","../tmp-esm2022/report-management/lib/permission.keys.js","../tmp-esm2022/report-management/lib/permission-definition.provider.js","../tmp-esm2022/report-management/lib/menu.keys.js","../tmp-esm2022/report-management/lib/menu.provider.js","../tmp-esm2022/report-management/lib/entity.provider.js","../tmp-esm2022/report-management/lib/features.keys.js","../tmp-esm2022/report-management/lib/feature-definition.provider.js","../tmp-esm2022/report-management/lib/report-management.module.js","../tmp-esm2022/report-management/lib/features/report-viewer/report-viewer.viewmodel.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-chart-view/report-chart-view.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-table-view/report-table-view.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/report-viewer-page/report-viewer-page.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-bar-chart-view/report-bar-chart-view.component.js","../tmp-esm2022/report-management/acorex-modules-report-management.js"],"sourcesContent":["const config = {\n i18n: 'report-management',\n module: 'ReportManagement',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'report-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-chart-bar',\n },\n entities: {\n dataSet: {\n name: 'DataSet',\n title: `t(\"dataSet\", { scope: \"${config.i18n}\" })`,\n titlePlural: `t(\"dataSetPlural\", { scope: \"${config.i18n}\" })`,\n icon: 'fa-light fa-default',\n },\n category: {\n name: 'Category',\n fullName: `${config.module}.Category`,\n title: `@${config.i18n}:reports.entities.category.title`,\n titlePlural: `@${config.i18n}:reports.entities.category.plural`,\n icon: 'fa-light fa-folder',\n },\n report: {\n name: 'Report',\n fullName: `${config.module}.Report`,\n title: `@${config.i18n}:reports.entities.report.title`,\n titlePlural: `@${config.i18n}:reports.entities.report.plural`,\n icon: 'fa-light fa-file-chart-pie',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE1BQU0sR0FBRztJQUNiLElBQUksRUFBRSxtQkFBbUI7SUFDekIsTUFBTSxFQUFFLGtCQUFrQjtDQUMzQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLE1BQU07SUFDTixNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUsbUJBQW1CO1FBQzFCLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNuQixLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxlQUFlO1FBQ3JDLElBQUksRUFBRSx1QkFBdUI7S0FDOUI7SUFDRCxRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSwwQkFBMEIsTUFBTSxDQUFDLElBQUksTUFBTTtZQUNsRCxXQUFXLEVBQUUsZ0NBQWdDLE1BQU0sQ0FBQyxJQUFJLE1BQU07WUFDOUQsSUFBSSxFQUFFLHFCQUFxQjtTQUM1QjtRQUNELFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLFdBQVc7WUFDckMsS0FBSyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksa0NBQWtDO1lBQ3hELFdBQVcsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLG1DQUFtQztZQUMvRCxJQUFJLEVBQUUsb0JBQW9CO1NBQzNCO1FBQ0QsTUFBTSxFQUFFO1lBQ04sSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxTQUFTO1lBQ25DLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLGdDQUFnQztZQUN0RCxXQUFXLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxpQ0FBaUM7WUFDN0QsSUFBSSxFQUFFLDRCQUE0QjtTQUNuQztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbmZpZyA9IHtcbiAgaTE4bjogJ3JlcG9ydC1tYW5hZ2VtZW50JyxcbiAgbW9kdWxlOiAnUmVwb3J0TWFuYWdlbWVudCcsXG59O1xuXG5leHBvcnQgY29uc3QgUm9vdENvbmZpZyA9IHtcbiAgY29uZmlnLFxuICBtb2R1bGU6IHtcbiAgICByb3V0ZTogJ3JlcG9ydC1tYW5hZ2VtZW50JyxcbiAgICBuYW1lOiBjb25maWcubW9kdWxlLFxuICAgIHRpdGxlOiBgQCR7Y29uZmlnLmkxOG59Om1vZHVsZS50aXRsZWAsXG4gICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNoYXJ0LWJhcicsXG4gIH0sXG4gIGVudGl0aWVzOiB7XG4gICAgZGF0YVNldDoge1xuICAgICAgbmFtZTogJ0RhdGFTZXQnLFxuICAgICAgdGl0bGU6IGB0KFwiZGF0YVNldFwiLCB7IHNjb3BlOiBcIiR7Y29uZmlnLmkxOG59XCIgfSlgLFxuICAgICAgdGl0bGVQbHVyYWw6IGB0KFwiZGF0YVNldFBsdXJhbFwiLCB7IHNjb3BlOiBcIiR7Y29uZmlnLmkxOG59XCIgfSlgLFxuICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWRlZmF1bHQnLFxuICAgIH0sXG4gICAgY2F0ZWdvcnk6IHtcbiAgICAgIG5hbWU6ICdDYXRlZ29yeScsXG4gICAgICBmdWxsTmFtZTogYCR7Y29uZmlnLm1vZHVsZX0uQ2F0ZWdvcnlgLFxuICAgICAgdGl0bGU6IGBAJHtjb25maWcuaTE4bn06cmVwb3J0cy5lbnRpdGllcy5jYXRlZ29yeS50aXRsZWAsXG4gICAgICB0aXRsZVBsdXJhbDogYEAke2NvbmZpZy5pMThufTpyZXBvcnRzLmVudGl0aWVzLmNhdGVnb3J5LnBsdXJhbGAsXG4gICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZm9sZGVyJyxcbiAgICB9LFxuICAgIHJlcG9ydDoge1xuICAgICAgbmFtZTogJ1JlcG9ydCcsXG4gICAgICBmdWxsTmFtZTogYCR7Y29uZmlnLm1vZHVsZX0uUmVwb3J0YCxcbiAgICAgIHRpdGxlOiBgQCR7Y29uZmlnLmkxOG59OnJlcG9ydHMuZW50aXRpZXMucmVwb3J0LnRpdGxlYCxcbiAgICAgIHRpdGxlUGx1cmFsOiBgQCR7Y29uZmlnLmkxOG59OnJlcG9ydHMuZW50aXRpZXMucmVwb3J0LnBsdXJhbGAsXG4gICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZmlsZS1jaGFydC1waWUnLFxuICAgIH0sXG4gIH0sXG59O1xuIl19","//#region ---- Imports ----\nimport { RootConfig } from './const';\n//#endregion\n//#region ---- Manifest Definition ----\n/**\n * Report Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const ReportManagementManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n required: true,\n // Module dependencies (optional)\n};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9tYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFHL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxZQUFZO0FBRVosMkNBQTJDO0FBRTNDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFzQjtJQUN6RCxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJO0lBQzVCLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUs7SUFDOUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSTtJQUM1QixJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJO0lBQzVCLFFBQVEsRUFBRyxJQUFJO0lBRWYsaUNBQWlDO0NBQ2xDLENBQUM7QUFFRixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFBNb2R1bGVNYW5pZmVzdCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi9jb25zdCc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIE1hbmlmZXN0IERlZmluaXRpb24gICAtLS0tXG5cbi8qKlxuICogUmVwb3J0IE1hbmFnZW1lbnQgTW9kdWxlIE1hbmlmZXN0LlxuICogRGVmaW5lcyBtb2R1bGUgbWV0YWRhdGEsIGZlYXR1cmVzLCBhbmQgcHJvdmlkZXIgcmVmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlcG9ydE1hbmFnZW1lbnRNYW5pZmVzdDogQVhQTW9kdWxlTWFuaWZlc3QgPSB7XG4gIG5hbWU6IFJvb3RDb25maWcubW9kdWxlLm5hbWUsXG4gIHZlcnNpb246ICcxLjAuMCcsXG4gIHRpdGxlOiBSb290Q29uZmlnLm1vZHVsZS50aXRsZSxcbiAgaWNvbjogUm9vdENvbmZpZy5tb2R1bGUuaWNvbixcbiAgaTE4bjogUm9vdENvbmZpZy5jb25maWcuaTE4bixcbiAgcmVxdWlyZWQgOiB0cnVlLFxuXG4gIC8vIE1vZHVsZSBkZXBlbmRlbmNpZXMgKG9wdGlvbmFsKVxufTtcblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcmVwb3J0cy9yZXBvcnQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCOztBQThlL0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhQQWN0aW9uTWVudUl0ZW0sIEFYUEV4cG9ydE9wdGlvbnMsIEFYUE9wdGlvbnNEYXRhLCBBWFBDYXRlZ29yeUVudGl0eSwgQVhQRmlsdGVyQ2xhdXNlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vY29yZVwiO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29sdW1uTm9kZSwgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZVwiO1xuaW1wb3J0IHsgQVhQUXVlcnlTb3J0IH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vY29tbW9uXCI7XG5pbXBvcnQgeyBBWFBTeXN0ZW1BY3Rpb25UeXBlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vY29yZVwiO1xuaW1wb3J0IHsgQVhQQ29tbWFuZCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWVcIjtcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29yZSBSZXBvcnQgVHlwZXMgYW5kIEludGVyZmFjZXMgICAtLS0tXG5cbmV4cG9ydCB0eXBlIEFYUFJlcG9ydExheW91dFR5cGUgPSAndGFibGUnIHwgJ2NoYXJ0JyB8ICdjYXJkcycgfCAnY3VzdG9tJztcblxuLyoqXG4gKiBSZXBvcnQgQ2F0ZWdvcnkgLSBFeHRlbmRzIEFYUENhdGVnb3J5RW50aXR5IGZvciBjb25zaXN0ZW5jeSBhbmQgcGVyZm9ybWFuY2VcbiAqIFxuICogSW5oZXJpdGVkIHByb3BlcnRpZXMgZnJvbSBBWFBDYXRlZ29yeUVudGl0eTpcbiAqIC0gaWQ6IHN0cmluZyAgICAgICAgICAgICAgICAgICAtIFVuaXF1ZSBpZGVudGlmaWVyXG4gKiAtIHRpdGxlOiBzdHJpbmcgICAgICAgICAgICAgICAgLSBEaXNwbGF5IG5hbWVcbiAqIC0gZGVzY3JpcHRpb24/OiBzdHJpbmcgICAgICAgICAtIENhdGVnb3J5IGRlc2NyaXB0aW9uXG4gKiAtIHBhcmVudElkPzogc3RyaW5nICAgICAgICAgICAgLSBQYXJlbnQgY2F0ZWdvcnkgSURcbiAqIC0gY2hpbGRyZW5Db3VudDogbnVtYmVyICAgICAgICAtIERpcmVjdCBjaGlsZCBjYXRlZ29yaWVzIGNvdW50IChlbmFibGVzIGxhenkgbG9hZGluZylcbiAqIC0gaXRlbXNDb3VudD86IG51bWJlciAgICAgICAgICAtIERpcmVjdCByZXBvcnRzIGNvdW50IChyZXBsYWNlcyBoYXNSZXBvcnQgYm9vbGVhbilcbiAqIC0gdG90YWxDaGlsZHJlbj86IG51bWJlciAgICAgICAtIFRvdGFsIG5lc3RlZCBjYXRlZ29yaWVzIChvcHRpb25hbCwgZm9yIGFuYWx5dGljcylcbiAqIC0gdG90YWxJdGVtcz86IG51bWJlciAgICAgICAgICAtIFRvdGFsIHJlcG9ydHMgaW4gdHJlZSAob3B0aW9uYWwsIGZvciBhbmFseXRpY3MpXG4gKiBcbiAqIFBlcmZvcm1hbmNlIGJlbmVmaXRzOlxuICogLSBMYXp5IGxvYWRpbmcgc3VwcG9ydCAoY2hpbGRyZW5Db3VudCA+IDAgc2hvd3MgZXhwYW5kIGljb24pXG4gKiAtIFJlcG9ydCBjb3VudCBkaXNwbGF5IChpdGVtc0NvdW50IHNob3dzIFwiNSByZXBvcnRzXCIgYmFkZ2UpXG4gKiAtIEVmZmljaWVudCBxdWVyaWVzIChubyBuZWVkIHRvIHF1ZXJ5IHRvIGtub3cgaWYgZXhwYW5kYWJsZSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRDYXRlZ29yeSBleHRlbmRzIEFYUENhdGVnb3J5RW50aXR5IHtcbiAgICAvLyBObyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgbmVlZGVkIC0gYWxsIGluaGVyaXRlZCBmcm9tIEFYUENhdGVnb3J5RW50aXR5XG4gICAgLy8gVXNlOiBjaGlsZHJlbkNvdW50IGluc3RlYWQgb2YgaGFzQ2hpbGRcbiAgICAvLyBVc2U6IGl0ZW1zQ291bnQgaW5zdGVhZCBvZiBoYXNSZXBvcnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnREZWZpbml0aW9uIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgY2F0ZWdvcnlJZHM6IHN0cmluZ1tdO1xuICAgIHBhcmFtZXRlckdyb3VwczogQVhQUmVwb3J0UGFyYW1ldGVyR3JvdXBbXTtcbiAgICBwZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xuICAgIGxheW91dHM6IEFYUFJlcG9ydExheW91dERlZmluaXRpb25bXTsgIC8vIENoYW5nZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBsYXlvdXRzXG4gICAgZGVmYXVsdExheW91dElkOiBzdHJpbmc7ICAgICAgICAgICAgICAvLyBXaGljaCBsYXlvdXQgdG8gc2hvdyBieSBkZWZhdWx0XG59XG5cbi8qKlxuICogTGF5b3V0IERlZmluaXRpb24gLSBBc3NvY2lhdGVzIGEgbGF5b3V0IHdpdGggbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uIHtcbiAgICBpZDogc3RyaW5nOyAgICAgICAgICAgICAgICAgICAgLy8gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgbGF5b3V0XG4gICAgdGl0bGU6IHN0cmluZzsgICAgICAgICAgICAgICAgIC8vIERpc3BsYXkgbmFtZSAoZS5nLiwgXCJUYWJsZSBWaWV3XCIsIFwiQ2hhcnQgVmlld1wiKVxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nOyAgICAgICAgICAvLyBPcHRpb25hbCBkZXNjcmlwdGlvblxuICAgIGljb24/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAvLyBJY29uIGZvciBsYXlvdXQgc3dpdGNoZXIgVUlcbiAgICBsYXlvdXQ6IEFYUFJlcG9ydExheW91dDsgICAgICAgLy8gVGhlIGFjdHVhbCBsYXlvdXQgY29uZmlndXJhdGlvblxuICAgIGRhdGFTb3VyY2U/OiBBWFBSZXBvcnREYXRhU291cmNlOyAvLyBPcHRpb25hbCBsYXlvdXQtc3BlY2lmaWMgZGF0YVNvdXJjZSAob3ZlcnJpZGVzIHJlcG9ydC1sZXZlbClcbiAgICBpc0RlZmF1bHQ/OiBib29sZWFuOyAgICAgICAgICAgLy8gQWx0ZXJuYXRpdmUgdG8gZGVmYXVsdExheW91dElkXG4gICAgZXhwb3J0PzogQVhQRXhwb3J0T3B0aW9ucztcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydFBhcmFtZXRlckdyb3VwIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBwYXJhbWV0ZXJzOiBBWFBSZXBvcnRQYXJhbWV0ZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRQYXJhbWV0ZXIge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgRGF0YSBTb3VyY2UgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCB0eXBlIEFYUFJlcG9ydERhdGFTb3VyY2UgPVxuICAgIHwgQVhQUXVlcnlEYXRhU291cmNlXG4gICAgfCBBWFBDdXN0b21EYXRhU291cmNlXG4gICAgfCBBWFBBZ2dyZWdhdGVkRGF0YVNvdXJjZVxuICAgIHwgQVhQVHJhbnNmb3JtZWREYXRhU291cmNlO1xuXG4vKipcbiAqIFF1ZXJ5IERhdGEgU291cmNlIC0gVXNlZCBmb3IgZXhlY3V0aW5nIHByZWRlZmluZWQgcXVlcmllcyAoQVhQUXVlcnkpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUXVlcnlEYXRhU291cmNlIHtcbiAgICB0eXBlOiAncXVlcnknO1xuICAgIG5hbWU6IHN0cmluZzsgLy8gVGhlIHJlZ2lzdGVyZWQgcXVlcnkgbmFtZSwgZS5nLiwgJ2dldEVtcGxveWVlTGlzdCdcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIGlucHV0cz86IEFYUFJlcG9ydFBhcmFtZXRlckJpbmRpbmdbXTsgLy8gTWFwcyByZXBvcnQgcGFyYW1ldGVycyB0byBxdWVyeSBpbnB1dHNcbiAgICBzb3J0RmllbGRzPzogQVhQUXVlcnlTb3J0W107ICAgICAgICAgIC8vIERlZmF1bHQgc29ydGluZyBhcHBsaWVkIGJ5IHRoZSBiYWNrZW5kXG4gICAgcGFnaW5hdGlvbj86IGJvb2xlYW47ICAgICAgICAgICAgICAgICAvLyBFbmFibGVzIHBhZ2luZyBpbiByZXN1bHQgc2V0XG59XG5cblxuXG4vKipcbiAqIEN1c3RvbSBEYXRhIFNvdXJjZSAtIFVzZWQgZm9yIGZldGNoaW5nIGRhdGEgZnJvbSBjdXN0b20gcHJvdmlkZXJzIGxpa2UgUkVTVCBBUElzIG9yIGV4dGVybmFsIHNlcnZpY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ3VzdG9tRGF0YVNvdXJjZSB7XG4gICAgdHlwZTogJ2N1c3RvbSc7XG4gICAgcHJvdmlkZXI6IHN0cmluZzsgLy8gRXhhbXBsZTogJ2h0dHA6Ly9hcGkvcmVwb3J0JyBvciAnY3VzdG9tOk15SGFuZGxlcidcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIGlucHV0cz86IEFYUFJlcG9ydFBhcmFtZXRlckJpbmRpbmdbXTsgLy8gTWFwcyByZXBvcnQgcGFyYW1ldGVycyB0byBwYXlsb2FkXG4gICAgb3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07ICAgICAvLyBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBjdXN0b20gaGFuZGxlclxufVxuXG4vKipcbiAqIFBhcmFtZXRlciBCaW5kaW5nIC0gTWFwcyByZXBvcnQtbGV2ZWwgcGFyYW1ldGVycyB0byBhY3R1YWwgcXVlcnkvY29tbWFuZCBpbnB1dCBzdHJ1Y3R1cmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRQYXJhbWV0ZXJCaW5kaW5nIHtcbiAgICBwYXJhbWV0ZXJLZXk6IHN0cmluZzsgLy8gUmVwb3J0IHBhcmFtZXRlciBrZXksIGUuZy4sICdzdGFydERhdGUnXG4gICAgYmluZFRvOiBzdHJpbmc7ICAgICAgIC8vIElucHV0IGtleSBpbiB0aGUgcXVlcnkvY29tbWFuZCBwYXlsb2FkLCBlLmcuLCAnZmlsdGVycy5mcm9tJ1xufVxuXG4vKipcbiAqIEFnZ3JlZ2F0ZWQgRGF0YSBTb3VyY2UgLSBVc2VkIGZvciBwcmUtYWdncmVnYXRlZCBkYXRhIG9wdGltaXplZCBmb3IgY2hhcnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQWdncmVnYXRlZERhdGFTb3VyY2Uge1xuICAgIHR5cGU6ICdhZ2dyZWdhdGVkJztcbiAgICBiYXNlUXVlcnk6IHN0cmluZzsgICAgLy8gQmFzZSBxdWVyeSB0byBhZ2dyZWdhdGUgZnJvbVxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgZ3JvdXBCeTogc3RyaW5nW107ICAgIC8vIEZpZWxkcyB0byBncm91cCBieVxuICAgIGFnZ3JlZ2F0aW9uczogQVhQQWdncmVnYXRpb25bXTsgLy8gQWdncmVnYXRpb24gb3BlcmF0aW9uc1xuICAgIGlucHV0cz86IEFYUFJlcG9ydFBhcmFtZXRlckJpbmRpbmdbXTtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm1lZCBEYXRhIFNvdXJjZSAtIEFwcGxpZXMgdHJhbnNmb3JtYXRpb25zIHRvIGV4aXN0aW5nIGRhdGEgc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFRyYW5zZm9ybWVkRGF0YVNvdXJjZSB7XG4gICAgdHlwZTogJ3RyYW5zZm9ybWVkJztcbiAgICBiYXNlRGF0YVNvdXJjZTogQVhQUmVwb3J0RGF0YVNvdXJjZTsgLy8gU291cmNlIHRvIHRyYW5zZm9ybVxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgdHJhbnNmb3JtYXRpb25zOiBBWFBEYXRhVHJhbnNmb3JtYXRpb25bXTsgLy8gTGlzdCBvZiB0cmFuc2Zvcm1hdGlvbnNcbiAgICBpbnB1dHM/OiBBWFBSZXBvcnRQYXJhbWV0ZXJCaW5kaW5nW107XG59XG5cbi8qKlxuICogQWdncmVnYXRpb24gb3BlcmF0aW9uIGZvciBhZ2dyZWdhdGVkIGRhdGEgc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUEFnZ3JlZ2F0aW9uIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG9wZXJhdGlvbjogJ3N1bScgfCAnYXZnJyB8ICdjb3VudCcgfCAnbWluJyB8ICdtYXgnIHwgJ2Rpc3RpbmN0JztcbiAgICBhbGlhcz86IHN0cmluZzsgLy8gT3V0cHV0IGZpZWxkIG5hbWVcbn1cblxuLyoqXG4gKiBEYXRhIHRyYW5zZm9ybWF0aW9uIG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUERhdGFUcmFuc2Zvcm1hdGlvbiB7XG4gICAgdHlwZTogJ2ZpbHRlcicgfCAnc29ydCcgfCAnZ3JvdXAnIHwgJ3Bpdm90JyB8ICdmb3JtYXQnO1xuICAgIGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PjsgLy8gVHJhbnNmb3JtYXRpb24tc3BlY2lmaWMgY29uZmlndXJhdGlvblxufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBMYXlvdXQgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCB0eXBlIEFYUFJlcG9ydExheW91dCA9XG4gICAgfCBBWFBSZXBvcnRUYWJsZUxheW91dFxuICAgIHwgQVhQUmVwb3J0Q2hhcnRMYXlvdXRcblxuLyoqXG4gKiBUYWJsZSBMYXlvdXQgLSBEaXNwbGF5cyBkYXRhIGluIHRhYnVsYXIgZm9ybWF0XG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRUYWJsZUxheW91dFJvd0FjdGlvbiBleHRlbmRzIEFYUEFjdGlvbk1lbnVJdGVtIHtcbiAgICBwcmlvcml0eTogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeSc7XG4gICAgdHlwZTogQVhQU3lzdGVtQWN0aW9uVHlwZSB8IHN0cmluZztcbiAgICBkZWZhdWx0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRUYWJsZUxheW91dCB7XG4gICAgdHlwZTogJ3RhYmxlJztcbiAgICBjb2x1bW5zOiBBWFBSZXBvcnRDb2x1bW5bXTtcbiAgICBhY3Rpb25zPzogQVhQUmVwb3J0VGFibGVMYXlvdXRSb3dBY3Rpb25bXTtcbiAgICBvcHRpb25zPzogQVhQVGFibGVPcHRpb25zO1xuICAgIGdyb3VwQnk/OiBzdHJpbmdbXTtcbiAgICBjb25kaXRpb25hbEZvcm1hdHRpbmc/OiBBWFBDb25kaXRpb25hbEZvcm1hdFJ1bGVbXTtcbiAgICBzdW1tYXJ5PzogQVhQUmVwb3J0U3VtbWFyeU9wdGlvbnNbXTtcbiAgICBoZWFkZXI/OiBBWFBSZXBvcnRIZWFkZXJGb290ZXI7XG4gICAgZm9vdGVyPzogQVhQUmVwb3J0SGVhZGVyRm9vdGVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFRhYmxlT3B0aW9ucyB7XG4gICAgcGFnaW5hdGlvbj86IGJvb2xlYW47XG4gICAgc3RpY2t5SGVhZGVyPzogYm9vbGVhbjtcbiAgICBzdHJpcGVkUm93cz86IGJvb2xlYW47XG4gICAgc29ydGluZz86IEFYUFF1ZXJ5U29ydFtdO1xuICAgIHNlbGVjdGFibGU/OiB7XG4gICAgICAgIG1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyB8ICdub25lJztcbiAgICB9O1xufVxuXG4vKipcbiAqIENoYXJ0IExheW91dCAtIERpc3BsYXlzIGRhdGEgaW4gdmFyaW91cyBjaGFydCBmb3JtYXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0Q2hhcnRMYXlvdXQge1xuICAgIHR5cGU6ICdjaGFydCc7XG4gICAgb3B0aW9uczogQVhQUmVwb3J0Q2hhcnRPcHRpb25zO1xuICAgIGhlYWRlcj86IEFYUFJlcG9ydEhlYWRlckZvb3RlcjtcbiAgICBmb290ZXI/OiBBWFBSZXBvcnRIZWFkZXJGb290ZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0Q2hhcnRPcHRpb25zIHtcbiAgICBjaGFydFR5cGU6ICdiYXInIHwgJ2xpbmUnIHwgJ3BpZScgfCAnZG91Z2hudXQnIHwgJ2FyZWEnIHwgJ3NjYXR0ZXInIHwgJ3JhZGFyJyB8ICdtaXhlZCc7XG4gICAgZGF0YU1hcHBpbmc6IEFYUENoYXJ0RGF0YU1hcHBpbmc7XG4gICAgc3R5bGluZz86IEFYUENoYXJ0U3R5bGluZztcbiAgICBpbnRlcmFjdGl2aXR5PzogQVhQQ2hhcnRJbnRlcmFjdGl2aXR5O1xufVxuXG4vKipcbiAqIENoYXJ0IERhdGEgTWFwcGluZyBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ2hhcnREYXRhTWFwcGluZyB7XG4gICAgLy8gQ29yZSBmaWVsZHNcbiAgICB4RmllbGQ6IHN0cmluZzsgICAgICAgICAgICAgICAgICAgIC8vIFgtYXhpcyBkYXRhIGZpZWxkXG4gICAgeUZpZWxkczogc3RyaW5nIHwgc3RyaW5nW107ICAgICAgICAvLyBZLWF4aXMgZGF0YSBmaWVsZChzKSBmb3IgbXVsdGlwbGUgc2VyaWVzXG5cbiAgICAvLyBHcm91cGluZyBhbmQgY2F0ZWdvcml6YXRpb25cbiAgICBncm91cEJ5Pzogc3RyaW5nOyAgICAgICAgICAgICAgICAgIC8vIEdyb3VwIGRhdGEgYnkgdGhpcyBmaWVsZFxuICAgIHNlcmllc0ZpZWxkPzogc3RyaW5nOyAgICAgICAgICAgICAgLy8gRmllbGQgdG8gY3JlYXRlIG11bHRpcGxlIHNlcmllc1xuXG4gICAgLy8gU3BlY2lhbCBmaWVsZHMgZm9yIHNwZWNpZmljIGNoYXJ0IHR5cGVzXG4gICAgc2l6ZUZpZWxkPzogc3RyaW5nOyAgICAgICAgICAgICAgICAvLyBGb3IgYnViYmxlIGNoYXJ0c1xuICAgIGNvbG9yRmllbGQ/OiBzdHJpbmc7ICAgICAgICAgICAgICAgLy8gRm9yIGdyYWRpZW50L2NvbmRpdGlvbmFsIGNvbG9yaW5nXG4gICAgbGFiZWxGaWVsZD86IHN0cmluZzsgICAgICAgICAgICAgICAvLyBDdXN0b20gbGFiZWwgZmllbGRcblxuICAgIC8vIERhdGEgYWdncmVnYXRpb25cbiAgICBhZ2dyZWdhdGlvbj86IHtcbiAgICAgICAgbWV0aG9kOiAnc3VtJyB8ICdhdmcnIHwgJ2NvdW50JyB8ICdtaW4nIHwgJ21heCc7XG4gICAgICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBDaGFydCBWaXN1YWwgU3R5bGluZyBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ2hhcnRTdHlsaW5nIHtcbiAgICAvLyBUaGVtZSBhbmQgY29sb3JzXG4gICAgY29sb3JTY2hlbWU/OiAnZGVmYXVsdCcgfCAncHJpbWFyeScgfCAnc3VjY2VzcycgfCAnd2FybmluZycgfCAnZGFuZ2VyJyB8ICdjdXN0b20nO1xuICAgIGN1c3RvbUNvbG9ycz86IHN0cmluZ1tdO1xuXG4gICAgLy8gQ2hhcnQgYXBwZWFyYW5jZVxuICAgIGdyaWRMaW5lcz86IGJvb2xlYW47XG4gICAgbGVnZW5kPzoge1xuICAgICAgICBzaG93OiBib29sZWFuO1xuICAgICAgICBwb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG4gICAgfTtcblxuICAgIC8vIEF4ZXMgY29uZmlndXJhdGlvblxuICAgIHhBeGlzPzogQVhQQ2hhcnRBeGlzQ29uZmlnO1xuICAgIHlBeGlzPzogQVhQQ2hhcnRBeGlzQ29uZmlnO1xuXG4gICAgLy8gQW5pbWF0aW9uXG4gICAgYW5pbWF0aW9uPzoge1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICBkdXJhdGlvbj86IG51bWJlcjtcbiAgICB9O1xuXG4gICAgLy8gQ2hhcnQtc3BlY2lmaWMgc3R5bGluZ1xuICAgIGNoYXJ0U3BlY2lmaWM/OiB7XG4gICAgICAgIC8vIEJhciBjaGFydCBvcHRpb25zXG4gICAgICAgIGJhcj86IHtcbiAgICAgICAgICAgIG9yaWVudGF0aW9uOiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnO1xuICAgICAgICAgICAgbW9kZTogJ2dyb3VwZWQnIHwgJ3N0YWNrZWQnO1xuICAgICAgICAgICAgYmFyV2lkdGg/OiBudW1iZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gTGluZSBjaGFydCBvcHRpb25zXG4gICAgICAgIGxpbmU/OiB7XG4gICAgICAgICAgICBzdHlsZTogJ3N0cmFpZ2h0JyB8ICdjdXJ2ZWQnIHwgJ3N0ZXBwZWQnO1xuICAgICAgICAgICAgc2hvd1BvaW50cz86IGJvb2xlYW47XG4gICAgICAgICAgICB0ZW5zaW9uPzogbnVtYmVyO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFyZWEgY2hhcnQgb3B0aW9uc1xuICAgICAgICBhcmVhPzoge1xuICAgICAgICAgICAgbW9kZTogJ25vcm1hbCcgfCAnc3RhY2tlZCcgfCAncGVyY2VudGFnZSc7XG4gICAgICAgICAgICBvcGFjaXR5PzogbnVtYmVyO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFBpZS9Eb3VnaG51dCBvcHRpb25zXG4gICAgICAgIHBpZT86IHtcbiAgICAgICAgICAgIHN0YXJ0QW5nbGU/OiBudW1iZXI7XG4gICAgICAgICAgICBpbm5lclJhZGl1cz86IG51bWJlcjsgLy8gRm9yIGRvdWdobnV0IGNoYXJ0c1xuICAgICAgICAgICAgc2hvd0xhYmVscz86IGJvb2xlYW47XG4gICAgICAgIH07XG4gICAgfTtcbn1cblxuLyoqXG4gKiBDaGFydCBBeGlzIENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBDaGFydEF4aXNDb25maWcge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHNob3c/OiBib29sZWFuO1xuICAgIHR5cGU/OiAnbGluZWFyJyB8ICdsb2dhcml0aG1pYycgfCAnZGF0ZXRpbWUnIHwgJ2NhdGVnb3J5JztcbiAgICBtaW4/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgbWF4PzogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGZvcm1hdD86IHN0cmluZztcbiAgICBncmlkTGluZXM/OiBib29sZWFuO1xuICAgIHRpY2tJbnRlcnZhbD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDaGFydCBJbnRlcmFjdGl2aXR5IENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBDaGFydEludGVyYWN0aXZpdHkge1xuICAgIC8vIFpvb20gYW5kIHBhblxuICAgIHpvb20/OiB7XG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIG1vZGU/OiAneCcgfCAneScgfCAneHknO1xuICAgIH07XG5cbiAgICAvLyBUb29sdGlwc1xuICAgIHRvb2x0aXBzPzoge1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICBmb3JtYXQ/OiBzdHJpbmc7XG4gICAgICAgIHNob3dPbkhvdmVyPzogYm9vbGVhbjtcbiAgICB9O1xuXG4gICAgLy8gQ2xpY2sgZXZlbnRzXG4gICAgb25DbGljaz86IHtcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgYWN0aW9uPzogJ2RyaWxsLWRvd24nIHwgJ2ZpbHRlcicgfCAnY3VzdG9tJztcbiAgICB9O1xuXG4gICAgLy8gU2VsZWN0aW9uXG4gICAgc2VsZWN0aW9uPzoge1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICBtb2RlPzogJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xuICAgIH07XG5cbiAgICAvLyBFeHBvcnRcbiAgICBleHBvcnQ/OiB7XG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIGZvcm1hdHM/OiAoJ3BuZycgfCAnanBnJyB8ICdwZGYnIHwgJ3N2ZycpW107XG4gICAgfTtcbn1cblxuXG4vLyNyZWdpb24gLS0tLSAgIFNoYXJlZCBNb2RlbHMgICAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0Q29sdW1uIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHZpc2libGU/OiBib29sZWFuO1xuICAgIHdpZHRoPzogbnVtYmVyO1xuICAgIGFsaWduPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuICAgIHdpZGdldD86IEFYUFdpZGdldENvbHVtbk5vZGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRTdW1tYXJ5T3B0aW9ucyB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBvcGVyYXRpb246ICdzdW0nIHwgJ2F2ZycgfCAnY291bnQnIHwgJ21pbicgfCAnbWF4JztcbiAgICBkaXNwbGF5SW46ICdncm91cEZvb3RlcicgfCAncmVwb3J0Rm9vdGVyJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBDb25kaXRpb25hbEZvcm1hdFJ1bGUge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgY29uZGl0aW9uOiAnPicgfCAnPCcgfCAnPScgfCAnIT0nIHwgJ2NvbnRhaW5zJztcbiAgICB2YWx1ZTogYW55O1xuICAgIHN0eWxlOiB7XG4gICAgICAgIGNvbG9yPzogc3RyaW5nO1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gICAgICAgIGZvbnRXZWlnaHQ/OiAnbm9ybWFsJyB8ICdib2xkJztcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydEhlYWRlckZvb3RlciB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgbG9nb1VybD86IHN0cmluZztcbiAgICBzaG93RGF0ZT86IGJvb2xlYW47XG4gICAgc2hvd1BhcmFtZXRlcnM/OiBib29sZWFuO1xuICAgIGN1c3RvbUh0bWw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGF5b3V0IHN3aXRjaGVyIG9wdGlvbnMgZm9yIFVJIGNvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBMYXlvdXRTd2l0Y2hlck9wdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgdHlwZTogQVhQUmVwb3J0TGF5b3V0VHlwZTtcbn1cblxuLyoqXG4gKiBSdW50aW1lIGxheW91dCBzZWxlY3Rpb24gc3RhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRMYXlvdXRTdGF0ZSB7XG4gICAgcmVwb3J0SWQ6IHN0cmluZztcbiAgICBhY3RpdmVMYXlvdXRJZDogc3RyaW5nO1xuICAgIGF2YWlsYWJsZUxheW91dHM6IEFYUExheW91dFN3aXRjaGVyT3B0aW9uW107XG59XG5cbi8qKlxuICogTGF5b3V0IHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTGF5b3V0VmFsaWRhdGlvblJlc3VsdCB7XG4gICAgaXNWYWxpZDogYm9vbGVhbjtcbiAgICBlcnJvcnM6IHN0cmluZ1tdO1xuICAgIGxheW91dElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0YSBzb3VyY2UgcmVzb2x1dGlvbiByZXN1bHQgZm9yIGEgc3BlY2lmaWMgbGF5b3V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTGF5b3V0RGF0YVNvdXJjZVJlc29sdXRpb24ge1xuICAgIGxheW91dElkOiBzdHJpbmc7XG4gICAgZGF0YVNvdXJjZTogQVhQUmVwb3J0RGF0YVNvdXJjZTtcbiAgICBzb3VyY2U6ICdsYXlvdXQnIHwgJ3JlcG9ydCcgfCAnbm9uZSc7IC8vIFdoZXJlIHRoZSBkYXRhU291cmNlIGNhbWUgZnJvbVxufVxuXG4vKipcbiAqIExheW91dCBleGVjdXRpb24gY29udGV4dCB3aXRoIHJlc29sdmVkIGRhdGEgc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTGF5b3V0RXhlY3V0aW9uQ29udGV4dCB7XG4gICAgcmVwb3J0SWQ6IHN0cmluZztcbiAgICBsYXlvdXRJZDogc3RyaW5nO1xuICAgIGRhdGFTb3VyY2U6IEFYUFJlcG9ydERhdGFTb3VyY2U7XG4gICAgZmlsdGVyczogQVhQRmlsdGVyQ2xhdXNlO1xufVxuXG5cbmV4cG9ydCB0eXBlIEFYUEV4ZWN1dGlvblJlcG9ydFJlc3VsdCA9XG4gICAgfCB7IHR5cGU6ICd0YWJsZScsIGl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLCB0b3RhbDogbnVtYmVyIH1cbiAgICB8IHsgdHlwZTogJ2NoYXJ0JywgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfVxuICAgIHwgeyB0eXBlOiAnY2FyZHMnLCBpdGVtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSB9XG4gICAgfCB7IHR5cGU6ICdjdXN0b20nLCBkYXRhOiB1bmtub3duIH07XG5cblxuZXhwb3J0IHR5cGUgQVhQRXhlY3V0aW9uUmVwb3J0Q29tbWFuZFJlc3VsdCA9IEFYUFJlcG9ydExheW91dCAmIHsgZGF0YTogQVhQRXhlY3V0aW9uUmVwb3J0UmVzdWx0IH07XG5cblxuZXhwb3J0IGludGVyZmFjZSBBWFBFeGVjdXRpb25SZXBvcnRDb21tYW5kIGV4dGVuZHMgQVhQQ29tbWFuZDxBWFBMYXlvdXRFeGVjdXRpb25Db250ZXh0LCBBWFBFeGVjdXRpb25SZXBvcnRDb21tYW5kUmVzdWx0PiB7XG59XG5cbi8qKlxuICogUmVwb3J0IGV4ZWN1dGlvbiBzdGF0dXMgYW5kIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0RXhlY3V0aW9uU3RhdHVzIHtcbiAgICByZXBvcnRJZDogc3RyaW5nO1xuICAgIGxheW91dElkOiBzdHJpbmc7XG4gICAgc3RhdHVzOiAncGVuZGluZycgfCAnZXhlY3V0aW5nJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCcgfCAnY2FuY2VsbGVkJztcbiAgICBzdGFydFRpbWU6IERhdGU7XG4gICAgZW5kVGltZT86IERhdGU7XG4gICAgZHVyYXRpb24/OiBudW1iZXI7IC8vIG1pbGxpc2Vjb25kc1xuICAgIHJlY29yZENvdW50PzogbnVtYmVyO1xuICAgIGVycm9yPzogQVhQUmVwb3J0RXhlY3V0aW9uRXJyb3I7XG59XG5cbi8qKlxuICogRGV0YWlsZWQgZXJyb3IgaW5mb3JtYXRpb24gZm9yIHJlcG9ydCBleGVjdXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRFeGVjdXRpb25FcnJvciB7XG4gICAgY29kZTogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBkZXRhaWxzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgc3RhY2s/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwb3J0IGV4ZWN1dGlvbiByZXF1ZXN0IHdpdGggb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydEV4ZWN1dGlvblJlcXVlc3Qge1xuICAgIHJlcG9ydElkOiBzdHJpbmc7XG4gICAgbGF5b3V0SWQ6IHN0cmluZztcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBvcHRpb25zPzogQVhQUmVwb3J0RXhlY3V0aW9uT3B0aW9ucztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciByZXBvcnQgZXhlY3V0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0RXhlY3V0aW9uT3B0aW9ucyB7XG4gICAgdGltZW91dD86IG51bWJlcjsgLy8gbWlsbGlzZWNvbmRzXG4gICAgcHJpb3JpdHk/OiAnbG93JyB8ICdub3JtYWwnIHwgJ2hpZ2gnO1xuICAgIGNhY2hlPzogYm9vbGVhbjtcbiAgICBjYWNoZVRpbWVvdXQ/OiBudW1iZXI7IC8vIHNlY29uZHNcbn1cblxuLy8jZW5kcmVnaW9uXG5cblxuIl19","import { InjectionToken } from '@angular/core';\nexport const AXP_REPORT_DEFINITION_PROVIDER = new InjectionToken('AXP_REPORT_DEFINITION_PROVIDER', {\n factory: () => [],\n});\nexport const AXP_REPORT_CATEGORY_PROVIDER = new InjectionToken('AXP_REPORT_CATEGORY_PROVIDER', {\n factory: () => [],\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9yZXBvcnRzL3JlcG9ydC1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0MsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBQXFDLGdDQUFnQyxFQUFFO0lBQ25JLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0NBQ3BCLENBQUMsQ0FBQztBQVlILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFtQyw4QkFBOEIsRUFBRTtJQUM3SCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtDQUNwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2F0ZWdvcnksIEFYUFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuL3JlcG9ydC50eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclRva2VuID1cbiAgICB8IEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclxuICAgIHwgUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXI+O1xuXG5leHBvcnQgY29uc3QgQVhQX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclRva2VuW10+KCdBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVInLCB7XG4gICAgZmFjdG9yeTogKCkgPT4gW10sXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuICAgIGdldExpc3QoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+O1xuICAgIGdldEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD47XG59XG5cblxuZXhwb3J0IHR5cGUgQVhQUmVwb3J0Q2F0ZWdvcnlQcm92aWRlclRva2VuID1cbiAgICB8IEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXJcbiAgICB8IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnlQcm92aWRlcj47XG5cbmV4cG9ydCBjb25zdCBBWFBfUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXJUb2tlbltdPignQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUicsIHtcbiAgICBmYWN0b3J5OiAoKSA9PiBbXSxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIge1xuICAgIGdldExpc3QocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+O1xuICAgIGdldEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnkgfCB1bmRlZmluZWQ+O1xufVxuXG5cblxuIl19","//#region ---- Imports ----\nimport { inject, Injectable } from '@angular/core';\nimport { AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER } from './report-definition.provider';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Optimized Report Definition Service\n *\n * Performance optimizations:\n * 1. Uses childrenCount to determine if category has children (no query needed)\n * 2. Uses itemsCount to determine if category has reports (no query needed)\n * 3. Aggressive caching prevents duplicate API calls\n * 4. Single pending request per resource prevents race conditions\n * 5. Lazy loading - only loads data when needed\n */\nexport class AXPReportDefinitionService {\n constructor() {\n //#region ---- Providers & Caches ----\n this.categoryProviders = inject(AXP_REPORT_CATEGORY_PROVIDER, { optional: true }) || [];\n this.definitionProviders = inject(AXP_REPORT_DEFINITION_PROVIDER, { optional: true }) || [];\n //#endregion\n //#region ---- Cache Storage ----\n /** Cache for categories by id - O(1) lookup */\n this.categoriesById = new Map();\n /** Cache for categories by parentId - O(1) lookup */\n this.categoriesByParentId = new Map();\n /** Cache for report definitions by categoryId - O(1) lookup */\n this.definitionsByCategory = new Map();\n /** Cache for individual report definitions by id - O(1) lookup */\n this.definitionsById = new Map();\n /** Track which provider index owns each category (by category ID) */\n this.categoryOwnership = new Map(); // Maps categoryId → provider index\n /** Pending API requests to prevent duplicate calls */\n this.pendingCategoriesRequests = new Map();\n this.pendingDefinitionsRequests = new Map();\n this.pendingReportRequests = new Map();\n }\n //#endregion\n //#region ---- Public API: Categories ----\n /**\n * Get categories by parentId with aggressive caching\n *\n * Optimization: Returns cached result immediately if available,\n * preventing unnecessary API calls during navigation\n *\n * @param parentId - Parent category ID (undefined = root categories)\n * @returns Array of categories with count metadata (childrenCount, itemsCount)\n */\n async getCategories(parentId) {\n // ✅ Fast path: Return cached result\n if (this.categoriesByParentId.has(parentId)) {\n return this.categoriesByParentId.get(parentId);\n }\n // ✅ Prevent duplicate requests: Return pending promise\n if (this.pendingCategoriesRequests.has(parentId)) {\n return this.pendingCategoriesRequests.get(parentId);\n }\n // ✅ Create single request and cache it\n const requestPromise = this.loadCategoriesFromProviders(parentId);\n this.pendingCategoriesRequests.set(parentId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single category by ID with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval, falls back to\n * searching cache, then providers if not found\n */\n async getCategoryById(categoryId) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n // ✅ Search in cached parent-child lists\n for (const categories of this.categoriesByParentId.values()) {\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n this.categoriesById.set(categoryId, found);\n return found;\n }\n }\n // ✅ Load root categories if not loaded\n if (!this.categoriesByParentId.has(undefined)) {\n await this.getCategories();\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n }\n // ✅ Breadth-first search through hierarchy\n return this.searchCategoryInHierarchy(categoryId);\n }\n /**\n * Get category path from root to specified category\n *\n * Optimization: Builds path using cached categories only\n */\n async getCategoriesPathById(categoryId) {\n const path = [];\n let currentCategoryId = categoryId;\n while (currentCategoryId) {\n const category = await this.getCategoryById(currentCategoryId);\n if (!category) {\n throw new Error(`Category '${currentCategoryId}' not found`);\n }\n path.unshift(category);\n currentCategoryId = category.parentId;\n }\n return path;\n }\n //#endregion\n //#region ---- Public API: Report Definitions ----\n /**\n * Get report definitions for a category with smart caching\n *\n * Optimization: Checks itemsCount before querying\n * - If itemsCount = 0, returns empty array (no API call)\n * - If itemsCount > 0, loads and caches reports\n * - Returns cached result on subsequent calls\n *\n * @param categoryId - Category ID to get reports from\n * @returns Array of report definitions\n */\n async getReportsByCategoryId(categoryId) {\n // ✅ Fast path: Return cached result\n if (this.definitionsByCategory.has(categoryId)) {\n return this.definitionsByCategory.get(categoryId);\n }\n // ✅ Smart optimization: Check itemsCount before querying\n const category = await this.getCategoryById(categoryId);\n if (category && category.itemsCount !== undefined && category.itemsCount === 0) {\n // Category has no reports - cache empty array and skip API call\n const emptyArray = [];\n this.definitionsByCategory.set(categoryId, emptyArray);\n return emptyArray;\n }\n // ✅ Prevent duplicate requests\n if (this.pendingDefinitionsRequests.has(categoryId)) {\n return this.pendingDefinitionsRequests.get(categoryId);\n }\n // ✅ Load from providers\n const requestPromise = this.loadReportsFromProviders(categoryId);\n this.pendingDefinitionsRequests.set(categoryId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single report definition by ID with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval\n */\n async getReportById(id) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.definitionsById.has(id)) {\n return this.definitionsById.get(id);\n }\n // ✅ Prevent duplicate requests\n if (this.pendingReportRequests.has(id)) {\n return this.pendingReportRequests.get(id);\n }\n // ✅ Load from providers\n const requestPromise = this.loadReportFromProviders(id);\n this.pendingReportRequests.set(id, requestPromise);\n return requestPromise;\n }\n /**\n * Get category ID containing a specific report\n *\n * Optimization: Searches cache first, loads on-demand if needed\n */\n async getCategoryIdByReportId(reportId) {\n // ✅ Search in cached reports\n for (const [categoryId, reports] of this.definitionsByCategory.entries()) {\n if (reports.some(report => report.id === reportId)) {\n return categoryId;\n }\n }\n // ✅ Try loading the report to find its category\n const report = await this.getReportById(reportId);\n if (report && report.categoryIds && report.categoryIds.length > 0) {\n return report.categoryIds[0]; // Return first category\n }\n return undefined;\n }\n /**\n * Get category path for a report\n */\n async getCategoriesPathByReportId(reportId) {\n const categoryId = await this.getCategoryIdByReportId(reportId);\n if (!categoryId) {\n throw new Error(`Report '${reportId}' not found in any category`);\n }\n return this.getCategoriesPathById(categoryId);\n }\n //#endregion\n //#region ---- Private: Data Loading ----\n /**\n * Load categories from providers and cache results\n *\n * Optimization: Tracks provider ownership to avoid unnecessary API calls\n * - For root (parentId = undefined): Query ALL providers\n * - For children: Only query the provider that owns the parent\n */\n async loadCategoriesFromProviders(parentId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.categoryProviders);\n const categories = [];\n // Determine which provider(s) to query\n const providerIndicesToQuery = parentId\n ? this.getProviderIndexForCategory(parentId)\n : null; // Root: query all providers\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const cats = await p.value.getList(parentId);\n if (Array.isArray(cats) && cats.length > 0) {\n categories.push(...cats);\n // ✅ Track ownership: This provider INDEX owns these categories\n cats.forEach(cat => this.categoryOwnership.set(cat.id, i));\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.categoriesByParentId.set(parentId, categories);\n categories.forEach(cat => this.categoriesById.set(cat.id, cat));\n return categories;\n }\n finally {\n this.pendingCategoriesRequests.delete(parentId);\n }\n }\n /**\n * Get the provider index that owns a specific category\n *\n * @returns Array with provider index, or null if ownership unknown (query all)\n */\n getProviderIndexForCategory(categoryId) {\n const ownerIndex = this.categoryOwnership.get(categoryId);\n if (ownerIndex !== undefined) {\n return [ownerIndex];\n }\n // Ownership unknown - will query all providers (fallback)\n return null;\n }\n /**\n * Load report definitions from providers and cache results\n *\n * Optimization: Only queries the provider that owns the category\n * Uses provider INDEX to match category provider with definition provider\n */\n async loadReportsFromProviders(categoryId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.definitionProviders);\n const definitions = [];\n // ✅ Smart routing: Get provider INDEX that owns this category\n const ownerIndex = this.categoryOwnership.get(categoryId);\n const providerIndicesToQuery = ownerIndex !== undefined ? [ownerIndex] : null;\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const defs = await p.value.getList(categoryId);\n if (Array.isArray(defs)) {\n definitions.push(...defs);\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.definitionsByCategory.set(categoryId, definitions);\n definitions.forEach(def => this.definitionsById.set(def.id, def));\n return definitions;\n }\n finally {\n this.pendingDefinitionsRequests.delete(categoryId);\n }\n }\n /**\n * Load single report from providers and cache result\n */\n async loadReportFromProviders(id) {\n try {\n const resolvedProviders = await Promise.allSettled(this.definitionProviders);\n // Try providers first (full report with layouts)\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getById === 'function') {\n try {\n const result = await p.value.getById(id);\n if (result) {\n this.definitionsById.set(id, result);\n return result;\n }\n }\n catch {\n // Continue on error\n }\n }\n }\n // Fallback: Search in cached reports\n for (const reports of this.definitionsByCategory.values()) {\n const found = reports.find(report => report.id === id);\n if (found) {\n this.definitionsById.set(id, found);\n return found;\n }\n }\n return undefined;\n }\n finally {\n this.pendingReportRequests.delete(id);\n }\n }\n /**\n * Breadth-first search through category hierarchy\n */\n async searchCategoryInHierarchy(categoryId) {\n const searchQueue = [undefined];\n const searched = new Set();\n while (searchQueue.length > 0) {\n const parentId = searchQueue.shift();\n if (searched.has(parentId))\n continue;\n searched.add(parentId);\n const categories = await this.getCategories(parentId);\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n return found;\n }\n // ✅ Optimization: Only search children if childrenCount > 0\n for (const category of categories) {\n if (category.childrenCount > 0 && !searched.has(category.id)) {\n searchQueue.push(category.id);\n }\n }\n }\n return undefined;\n }\n //#endregion\n //#region ---- Cache Management ----\n /**\n * Check if category has children (uses cached count)\n */\n categoryHasChildren(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? category.childrenCount > 0 : false;\n }\n /**\n * Check if category has reports (uses cached count)\n */\n categoryHasReports(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? (category.itemsCount ?? 0) > 0 : false;\n }\n /**\n * Clear all caches\n */\n clearAllCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.definitionsByCategory.clear();\n this.definitionsById.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n this.pendingDefinitionsRequests.clear();\n this.pendingReportRequests.clear();\n }\n /**\n * Clear categories cache only\n */\n clearCategoriesCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n }\n /**\n * Clear reports cache only\n */\n clearReportsCache() {\n this.definitionsByCategory.clear();\n this.definitionsById.clear();\n this.pendingDefinitionsRequests.clear();\n this.pendingReportRequests.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL3JlcG9ydHMvcmVwb3J0LWRlZmluaXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRTVHLFlBQVk7QUFFWjs7Ozs7Ozs7O0dBU0c7QUFJSCxNQUFNLE9BQU8sMEJBQTBCO0lBSHZDO1FBSUksMENBQTBDO1FBRXpCLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRix3QkFBbUIsR0FBRyxNQUFNLENBQUMsOEJBQThCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEcsWUFBWTtRQUVaLHFDQUFxQztRQUVyQywrQ0FBK0M7UUFDdkMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztRQUU5RCxxREFBcUQ7UUFDN0MseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQTJDLENBQUM7UUFFbEYsK0RBQStEO1FBQ3ZELDBCQUFxQixHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBRXpFLGtFQUFrRTtRQUMxRCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO1FBRWpFLHFFQUFxRTtRQUM3RCxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQyxDQUFDLG1DQUFtQztRQUUxRixzREFBc0Q7UUFDOUMsOEJBQXlCLEdBQUcsSUFBSSxHQUFHLEVBQW9E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SyxFQUFFLENBQUM7SUFDdkMsQ0FBQzsrR0EvYlEsMEJBQTBCO21IQUExQiwwQkFBMEIsY0FGdkIsTUFBTTs7NEZBRVQsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBSZXBvcnRDYXRlZ29yeSwgQVhQUmVwb3J0RGVmaW5pdGlvbiB9IGZyb20gJy4vcmVwb3J0LnR5cGVzJztcbmltcG9ydCB7IEFYUF9SRVBPUlRfQ0FURUdPUllfUFJPVklERVIsIEFYUF9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiB9IGZyb20gJy4vcmVwb3J0LWRlZmluaXRpb24ucHJvdmlkZXInO1xuXG4vLyNlbmRyZWdpb25cblxuLyoqXG4gKiBPcHRpbWl6ZWQgUmVwb3J0IERlZmluaXRpb24gU2VydmljZVxuICogXG4gKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zOlxuICogMS4gVXNlcyBjaGlsZHJlbkNvdW50IHRvIGRldGVybWluZSBpZiBjYXRlZ29yeSBoYXMgY2hpbGRyZW4gKG5vIHF1ZXJ5IG5lZWRlZClcbiAqIDIuIFVzZXMgaXRlbXNDb3VudCB0byBkZXRlcm1pbmUgaWYgY2F0ZWdvcnkgaGFzIHJlcG9ydHMgKG5vIHF1ZXJ5IG5lZWRlZClcbiAqIDMuIEFnZ3Jlc3NpdmUgY2FjaGluZyBwcmV2ZW50cyBkdXBsaWNhdGUgQVBJIGNhbGxzXG4gKiA0LiBTaW5nbGUgcGVuZGluZyByZXF1ZXN0IHBlciByZXNvdXJjZSBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnNcbiAqIDUuIExhenkgbG9hZGluZyAtIG9ubHkgbG9hZHMgZGF0YSB3aGVuIG5lZWRlZFxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSZXBvcnREZWZpbml0aW9uU2VydmljZSB7XG4gICAgLy8jcmVnaW9uIC0tLS0gICBQcm92aWRlcnMgJiBDYWNoZXMgICAtLS0tXG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5UHJvdmlkZXJzID0gaW5qZWN0KEFYUF9SRVBPUlRfQ0FURUdPUllfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSkgfHwgW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZpbml0aW9uUHJvdmlkZXJzID0gaW5qZWN0KEFYUF9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KSB8fCBbXTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBDYWNoZSBTdG9yYWdlICAgLS0tLVxuXG4gICAgLyoqIENhY2hlIGZvciBjYXRlZ29yaWVzIGJ5IGlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGNhdGVnb3JpZXNCeUlkID0gbmV3IE1hcDxzdHJpbmcsIEFYUFJlcG9ydENhdGVnb3J5PigpO1xuXG4gICAgLyoqIENhY2hlIGZvciBjYXRlZ29yaWVzIGJ5IHBhcmVudElkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGNhdGVnb3JpZXNCeVBhcmVudElkID0gbmV3IE1hcDxzdHJpbmcgfCB1bmRlZmluZWQsIEFYUFJlcG9ydENhdGVnb3J5W10+KCk7XG5cbiAgICAvKiogQ2FjaGUgZm9yIHJlcG9ydCBkZWZpbml0aW9ucyBieSBjYXRlZ29yeUlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGRlZmluaXRpb25zQnlDYXRlZ29yeSA9IG5ldyBNYXA8c3RyaW5nLCBBWFBSZXBvcnREZWZpbml0aW9uW10+KCk7XG5cbiAgICAvKiogQ2FjaGUgZm9yIGluZGl2aWR1YWwgcmVwb3J0IGRlZmluaXRpb25zIGJ5IGlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGRlZmluaXRpb25zQnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBBWFBSZXBvcnREZWZpbml0aW9uPigpO1xuXG4gICAgLyoqIFRyYWNrIHdoaWNoIHByb3ZpZGVyIGluZGV4IG93bnMgZWFjaCBjYXRlZ29yeSAoYnkgY2F0ZWdvcnkgSUQpICovXG4gICAgcHJpdmF0ZSBjYXRlZ29yeU93bmVyc2hpcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7IC8vIE1hcHMgY2F0ZWdvcnlJZCDihpIgcHJvdmlkZXIgaW5kZXhcblxuICAgIC8qKiBQZW5kaW5nIEFQSSByZXF1ZXN0cyB0byBwcmV2ZW50IGR1cGxpY2F0ZSBjYWxscyAqL1xuICAgIHByaXZhdGUgcGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cyA9IG5ldyBNYXA8c3RyaW5nIHwgdW5kZWZpbmVkLCBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+PigpO1xuICAgIHByaXZhdGUgcGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+PigpO1xuICAgIHByaXZhdGUgcGVuZGluZ1JlcG9ydFJlcXVlc3RzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4+KCk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHVibGljIEFQSTogQ2F0ZWdvcmllcyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEdldCBjYXRlZ29yaWVzIGJ5IHBhcmVudElkIHdpdGggYWdncmVzc2l2ZSBjYWNoaW5nXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBSZXR1cm5zIGNhY2hlZCByZXN1bHQgaW1tZWRpYXRlbHkgaWYgYXZhaWxhYmxlLFxuICAgICAqIHByZXZlbnRpbmcgdW5uZWNlc3NhcnkgQVBJIGNhbGxzIGR1cmluZyBuYXZpZ2F0aW9uXG4gICAgICogXG4gICAgICogQHBhcmFtIHBhcmVudElkIC0gUGFyZW50IGNhdGVnb3J5IElEICh1bmRlZmluZWQgPSByb290IGNhdGVnb3JpZXMpXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgY2F0ZWdvcmllcyB3aXRoIGNvdW50IG1ldGFkYXRhIChjaGlsZHJlbkNvdW50LCBpdGVtc0NvdW50KVxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXMocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogUmV0dXJuIGNhY2hlZCByZXN1bHRcbiAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuaGFzKHBhcmVudElkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuZ2V0KHBhcmVudElkKSE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHM6IFJldHVybiBwZW5kaW5nIHByb21pc2VcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5oYXMocGFyZW50SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmdldChwYXJlbnRJZCkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIENyZWF0ZSBzaW5nbGUgcmVxdWVzdCBhbmQgY2FjaGUgaXRcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRDYXRlZ29yaWVzRnJvbVByb3ZpZGVycyhwYXJlbnRJZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5zZXQocGFyZW50SWQsIHJlcXVlc3RQcm9taXNlKTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdFByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHNpbmdsZSBjYXRlZ29yeSBieSBJRCB3aXRoIE8oMSkgbG9va3VwXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBVc2VzIE1hcCBmb3IgaW5zdGFudCByZXRyaWV2YWwsIGZhbGxzIGJhY2sgdG9cbiAgICAgKiBzZWFyY2hpbmcgY2FjaGUsIHRoZW4gcHJvdmlkZXJzIGlmIG5vdCBmb3VuZFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3J5QnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIOKchSBGYXN0IHBhdGg6IE8oMSkgbG9va3VwIGluIGNhY2hlXG4gICAgICAgIGlmICh0aGlzLmNhdGVnb3JpZXNCeUlkLmhhcyhjYXRlZ29yeUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIFNlYXJjaCBpbiBjYWNoZWQgcGFyZW50LWNoaWxkIGxpc3RzXG4gICAgICAgIGZvciAoY29uc3QgY2F0ZWdvcmllcyBvZiB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IGNhdGVnb3JpZXMuZmluZChjYXQgPT4gY2F0LmlkID09PSBjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0J5SWQuc2V0KGNhdGVnb3J5SWQsIGZvdW5kKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgTG9hZCByb290IGNhdGVnb3JpZXMgaWYgbm90IGxvYWRlZFxuICAgICAgICBpZiAoIXRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuaGFzKHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcmllcygpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5SWQuaGFzKGNhdGVnb3J5SWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIEJyZWFkdGgtZmlyc3Qgc2VhcmNoIHRocm91Z2ggaGllcmFyY2h5XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaENhdGVnb3J5SW5IaWVyYXJjaHkoY2F0ZWdvcnlJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGNhdGVnb3J5IHBhdGggZnJvbSByb290IHRvIHNwZWNpZmllZCBjYXRlZ29yeVxuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogQnVpbGRzIHBhdGggdXNpbmcgY2FjaGVkIGNhdGVnb3JpZXMgb25seVxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXNQYXRoQnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgY29uc3QgcGF0aDogQVhQUmVwb3J0Q2F0ZWdvcnlbXSA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudENhdGVnb3J5SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNhdGVnb3J5SWQ7XG5cbiAgICAgICAgd2hpbGUgKGN1cnJlbnRDYXRlZ29yeUlkKSB7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlCeUlkKGN1cnJlbnRDYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGlmICghY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhdGVnb3J5ICcke2N1cnJlbnRDYXRlZ29yeUlkfScgbm90IGZvdW5kYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXRoLnVuc2hpZnQoY2F0ZWdvcnkpO1xuICAgICAgICAgICAgY3VycmVudENhdGVnb3J5SWQgPSBjYXRlZ29yeS5wYXJlbnRJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgQVBJOiBSZXBvcnQgRGVmaW5pdGlvbnMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgcmVwb3J0IGRlZmluaXRpb25zIGZvciBhIGNhdGVnb3J5IHdpdGggc21hcnQgY2FjaGluZ1xuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogQ2hlY2tzIGl0ZW1zQ291bnQgYmVmb3JlIHF1ZXJ5aW5nXG4gICAgICogLSBJZiBpdGVtc0NvdW50ID0gMCwgcmV0dXJucyBlbXB0eSBhcnJheSAobm8gQVBJIGNhbGwpXG4gICAgICogLSBJZiBpdGVtc0NvdW50ID4gMCwgbG9hZHMgYW5kIGNhY2hlcyByZXBvcnRzXG4gICAgICogLSBSZXR1cm5zIGNhY2hlZCByZXN1bHQgb24gc3Vic2VxdWVudCBjYWxsc1xuICAgICAqIFxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkIC0gQ2F0ZWdvcnkgSUQgdG8gZ2V0IHJlcG9ydHMgZnJvbVxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIHJlcG9ydCBkZWZpbml0aW9uc1xuICAgICAqL1xuICAgIGFzeW5jIGdldFJlcG9ydHNCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogUmV0dXJuIGNhY2hlZCByZXN1bHRcbiAgICAgICAgaWYgKHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmhhcyhjYXRlZ29yeUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmdldChjYXRlZ29yeUlkKSE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgU21hcnQgb3B0aW1pemF0aW9uOiBDaGVjayBpdGVtc0NvdW50IGJlZm9yZSBxdWVyeWluZ1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlCeUlkKGNhdGVnb3J5SWQpO1xuICAgICAgICBpZiAoY2F0ZWdvcnkgJiYgY2F0ZWdvcnkuaXRlbXNDb3VudCAhPT0gdW5kZWZpbmVkICYmIGNhdGVnb3J5Lml0ZW1zQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIC8vIENhdGVnb3J5IGhhcyBubyByZXBvcnRzIC0gY2FjaGUgZW1wdHkgYXJyYXkgYW5kIHNraXAgQVBJIGNhbGxcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5QXJyYXk6IEFYUFJlcG9ydERlZmluaXRpb25bXSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5kZWZpbml0aW9uc0J5Q2F0ZWdvcnkuc2V0KGNhdGVnb3J5SWQsIGVtcHR5QXJyYXkpO1xuICAgICAgICAgICAgcmV0dXJuIGVtcHR5QXJyYXk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHNcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuaGFzKGNhdGVnb3J5SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5nZXQoY2F0ZWdvcnlJZCkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIExvYWQgZnJvbSBwcm92aWRlcnNcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRSZXBvcnRzRnJvbVByb3ZpZGVycyhjYXRlZ29yeUlkKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5zZXQoY2F0ZWdvcnlJZCwgcmVxdWVzdFByb21pc2UpO1xuXG4gICAgICAgIHJldHVybiByZXF1ZXN0UHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc2luZ2xlIHJlcG9ydCBkZWZpbml0aW9uIGJ5IElEIHdpdGggTygxKSBsb29rdXBcbiAgICAgKiBcbiAgICAgKiBPcHRpbWl6YXRpb246IFVzZXMgTWFwIGZvciBpbnN0YW50IHJldHJpZXZhbFxuICAgICAqL1xuICAgIGFzeW5jIGdldFJlcG9ydEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICAvLyDinIUgRmFzdCBwYXRoOiBPKDEpIGxvb2t1cCBpbiBjYWNoZVxuICAgICAgICBpZiAodGhpcy5kZWZpbml0aW9uc0J5SWQuaGFzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmdldChpZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHNcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLmhhcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdSZXBvcnRSZXF1ZXN0cy5nZXQoaWQpITtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOKchSBMb2FkIGZyb20gcHJvdmlkZXJzXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQcm9taXNlID0gdGhpcy5sb2FkUmVwb3J0RnJvbVByb3ZpZGVycyhpZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLnNldChpZCwgcmVxdWVzdFByb21pc2UpO1xuXG4gICAgICAgIHJldHVybiByZXF1ZXN0UHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY2F0ZWdvcnkgSUQgY29udGFpbmluZyBhIHNwZWNpZmljIHJlcG9ydFxuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogU2VhcmNoZXMgY2FjaGUgZmlyc3QsIGxvYWRzIG9uLWRlbWFuZCBpZiBuZWVkZWRcbiAgICAgKi9cbiAgICBhc3luYyBnZXRDYXRlZ29yeUlkQnlSZXBvcnRJZChyZXBvcnRJZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgLy8g4pyFIFNlYXJjaCBpbiBjYWNoZWQgcmVwb3J0c1xuICAgICAgICBmb3IgKGNvbnN0IFtjYXRlZ29yeUlkLCByZXBvcnRzXSBvZiB0aGlzLmRlZmluaXRpb25zQnlDYXRlZ29yeS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChyZXBvcnRzLnNvbWUocmVwb3J0ID0+IHJlcG9ydC5pZCA9PT0gcmVwb3J0SWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhdGVnb3J5SWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgVHJ5IGxvYWRpbmcgdGhlIHJlcG9ydCB0byBmaW5kIGl0cyBjYXRlZ29yeVxuICAgICAgICBjb25zdCByZXBvcnQgPSBhd2FpdCB0aGlzLmdldFJlcG9ydEJ5SWQocmVwb3J0SWQpO1xuICAgICAgICBpZiAocmVwb3J0ICYmIHJlcG9ydC5jYXRlZ29yeUlkcyAmJiByZXBvcnQuY2F0ZWdvcnlJZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcG9ydC5jYXRlZ29yeUlkc1swXTsgLy8gUmV0dXJuIGZpcnN0IGNhdGVnb3J5XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjYXRlZ29yeSBwYXRoIGZvciBhIHJlcG9ydFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXNQYXRoQnlSZXBvcnRJZChyZXBvcnRJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnRDYXRlZ29yeVtdPiB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5SWQgPSBhd2FpdCB0aGlzLmdldENhdGVnb3J5SWRCeVJlcG9ydElkKHJlcG9ydElkKTtcbiAgICAgICAgaWYgKCFjYXRlZ29yeUlkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcG9ydCAnJHtyZXBvcnRJZH0nIG5vdCBmb3VuZCBpbiBhbnkgY2F0ZWdvcnlgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDYXRlZ29yaWVzUGF0aEJ5SWQoY2F0ZWdvcnlJZCk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFByaXZhdGU6IERhdGEgTG9hZGluZyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIExvYWQgY2F0ZWdvcmllcyBmcm9tIHByb3ZpZGVycyBhbmQgY2FjaGUgcmVzdWx0c1xuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogVHJhY2tzIHByb3ZpZGVyIG93bmVyc2hpcCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBBUEkgY2FsbHNcbiAgICAgKiAtIEZvciByb290IChwYXJlbnRJZCA9IHVuZGVmaW5lZCk6IFF1ZXJ5IEFMTCBwcm92aWRlcnNcbiAgICAgKiAtIEZvciBjaGlsZHJlbjogT25seSBxdWVyeSB0aGUgcHJvdmlkZXIgdGhhdCBvd25zIHRoZSBwYXJlbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRDYXRlZ29yaWVzRnJvbVByb3ZpZGVycyhwYXJlbnRJZD86IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnlbXT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQcm92aWRlcnMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQodGhpcy5jYXRlZ29yeVByb3ZpZGVycyk7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzOiBBWFBSZXBvcnRDYXRlZ29yeVtdID0gW107XG5cbiAgICAgICAgICAgIC8vIERldGVybWluZSB3aGljaCBwcm92aWRlcihzKSB0byBxdWVyeVxuICAgICAgICAgICAgY29uc3QgcHJvdmlkZXJJbmRpY2VzVG9RdWVyeSA9IHBhcmVudElkXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldFByb3ZpZGVySW5kZXhGb3JDYXRlZ29yeShwYXJlbnRJZClcbiAgICAgICAgICAgICAgICA6IG51bGw7IC8vIFJvb3Q6IHF1ZXJ5IGFsbCBwcm92aWRlcnNcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFByb3ZpZGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSByZXNvbHZlZFByb3ZpZGVyc1tpXTtcblxuICAgICAgICAgICAgICAgIC8vIFNraXAgaWYgd2UgaGF2ZSBhIHNwZWNpZmljIHByb3ZpZGVyIGluZGV4IGFuZCB0aGlzIGlzbid0IGl0XG4gICAgICAgICAgICAgICAgaWYgKHByb3ZpZGVySW5kaWNlc1RvUXVlcnkgIT09IG51bGwgJiYgIXByb3ZpZGVySW5kaWNlc1RvUXVlcnkuaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHAuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiBwLnZhbHVlICYmIHR5cGVvZiBwLnZhbHVlLmdldExpc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhdHMgPSBhd2FpdCBwLnZhbHVlLmdldExpc3QocGFyZW50SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2F0cykgJiYgY2F0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKC4uLmNhdHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g4pyFIFRyYWNrIG93bmVyc2hpcDogVGhpcyBwcm92aWRlciBJTkRFWCBvd25zIHRoZXNlIGNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRzLmZvckVhY2goY2F0ID0+IHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuc2V0KGNhdC5pZCwgaSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIG9uIGVycm9yIC0gdHJ5IG90aGVyIHByb3ZpZGVyc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDinIUgQ2FjaGUgcmVzdWx0cyBmb3IgZmFzdCBzdWJzZXF1ZW50IGFjY2Vzc1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlQYXJlbnRJZC5zZXQocGFyZW50SWQsIGNhdGVnb3JpZXMpO1xuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKGNhdCA9PiB0aGlzLmNhdGVnb3JpZXNCeUlkLnNldChjYXQuaWQsIGNhdCkpO1xuXG4gICAgICAgICAgICByZXR1cm4gY2F0ZWdvcmllcztcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5kZWxldGUocGFyZW50SWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwcm92aWRlciBpbmRleCB0aGF0IG93bnMgYSBzcGVjaWZpYyBjYXRlZ29yeVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFycmF5IHdpdGggcHJvdmlkZXIgaW5kZXgsIG9yIG51bGwgaWYgb3duZXJzaGlwIHVua25vd24gKHF1ZXJ5IGFsbClcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFByb3ZpZGVySW5kZXhGb3JDYXRlZ29yeShjYXRlZ29yeUlkOiBzdHJpbmcpOiBudW1iZXJbXSB8IG51bGwge1xuICAgICAgICBjb25zdCBvd25lckluZGV4ID0gdGhpcy5jYXRlZ29yeU93bmVyc2hpcC5nZXQoY2F0ZWdvcnlJZCk7XG5cbiAgICAgICAgaWYgKG93bmVySW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFtvd25lckluZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE93bmVyc2hpcCB1bmtub3duIC0gd2lsbCBxdWVyeSBhbGwgcHJvdmlkZXJzIChmYWxsYmFjaylcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZCByZXBvcnQgZGVmaW5pdGlvbnMgZnJvbSBwcm92aWRlcnMgYW5kIGNhY2hlIHJlc3VsdHNcbiAgICAgKiBcbiAgICAgKiBPcHRpbWl6YXRpb246IE9ubHkgcXVlcmllcyB0aGUgcHJvdmlkZXIgdGhhdCBvd25zIHRoZSBjYXRlZ29yeVxuICAgICAqIFVzZXMgcHJvdmlkZXIgSU5ERVggdG8gbWF0Y2ggY2F0ZWdvcnkgcHJvdmlkZXIgd2l0aCBkZWZpbml0aW9uIHByb3ZpZGVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkUmVwb3J0c0Zyb21Qcm92aWRlcnMoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUHJvdmlkZXJzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHRoaXMuZGVmaW5pdGlvblByb3ZpZGVycyk7XG4gICAgICAgICAgICBjb25zdCBkZWZpbml0aW9uczogQVhQUmVwb3J0RGVmaW5pdGlvbltdID0gW107XG5cbiAgICAgICAgICAgIC8vIOKchSBTbWFydCByb3V0aW5nOiBHZXQgcHJvdmlkZXIgSU5ERVggdGhhdCBvd25zIHRoaXMgY2F0ZWdvcnlcbiAgICAgICAgICAgIGNvbnN0IG93bmVySW5kZXggPSB0aGlzLmNhdGVnb3J5T3duZXJzaGlwLmdldChjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGNvbnN0IHByb3ZpZGVySW5kaWNlc1RvUXVlcnkgPSBvd25lckluZGV4ICE9PSB1bmRlZmluZWQgPyBbb3duZXJJbmRleF0gOiBudWxsO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc29sdmVkUHJvdmlkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IHJlc29sdmVkUHJvdmlkZXJzW2ldO1xuXG4gICAgICAgICAgICAgICAgLy8gU2tpcCBpZiB3ZSBoYXZlIGEgc3BlY2lmaWMgcHJvdmlkZXIgaW5kZXggYW5kIHRoaXMgaXNuJ3QgaXRcbiAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXJJbmRpY2VzVG9RdWVyeSAhPT0gbnVsbCAmJiAhcHJvdmlkZXJJbmRpY2VzVG9RdWVyeS5pbmNsdWRlcyhpKSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnICYmIHAudmFsdWUgJiYgdHlwZW9mIHAudmFsdWUuZ2V0TGlzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmcyA9IGF3YWl0IHAudmFsdWUuZ2V0TGlzdChjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlZnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbnMucHVzaCguLi5kZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSBvbiBlcnJvciAtIHRyeSBvdGhlciBwcm92aWRlcnNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g4pyFIENhY2hlIHJlc3VsdHMgZm9yIGZhc3Qgc3Vic2VxdWVudCBhY2Nlc3NcbiAgICAgICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LnNldChjYXRlZ29yeUlkLCBkZWZpbml0aW9ucyk7XG4gICAgICAgICAgICBkZWZpbml0aW9ucy5mb3JFYWNoKGRlZiA9PiB0aGlzLmRlZmluaXRpb25zQnlJZC5zZXQoZGVmLmlkLCBkZWYpKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlZmluaXRpb25zO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5kZWxldGUoY2F0ZWdvcnlJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHNpbmdsZSByZXBvcnQgZnJvbSBwcm92aWRlcnMgYW5kIGNhY2hlIHJlc3VsdFxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgbG9hZFJlcG9ydEZyb21Qcm92aWRlcnMoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQcm92aWRlcnMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQodGhpcy5kZWZpbml0aW9uUHJvdmlkZXJzKTtcblxuICAgICAgICAgICAgLy8gVHJ5IHByb3ZpZGVycyBmaXJzdCAoZnVsbCByZXBvcnQgd2l0aCBsYXlvdXRzKVxuICAgICAgICAgICAgZm9yIChjb25zdCBwIG9mIHJlc29sdmVkUHJvdmlkZXJzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHAuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiBwLnZhbHVlICYmIHR5cGVvZiBwLnZhbHVlLmdldEJ5SWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHAudmFsdWUuZ2V0QnlJZChpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbml0aW9uc0J5SWQuc2V0KGlkLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgb24gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRmFsbGJhY2s6IFNlYXJjaCBpbiBjYWNoZWQgcmVwb3J0c1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXBvcnRzIG9mIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LnZhbHVlcygpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSByZXBvcnRzLmZpbmQocmVwb3J0ID0+IHJlcG9ydC5pZCA9PT0gaWQpO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluaXRpb25zQnlJZC5zZXQoaWQsIGZvdW5kKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLmRlbGV0ZShpZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCcmVhZHRoLWZpcnN0IHNlYXJjaCB0aHJvdWdoIGNhdGVnb3J5IGhpZXJhcmNoeVxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgc2VhcmNoQ2F0ZWdvcnlJbkhpZXJhcmNoeShjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFF1ZXVlOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdID0gW3VuZGVmaW5lZF07XG4gICAgICAgIGNvbnN0IHNlYXJjaGVkID0gbmV3IFNldDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAgICAgd2hpbGUgKHNlYXJjaFF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gc2VhcmNoUXVldWUuc2hpZnQoKSE7XG4gICAgICAgICAgICBpZiAoc2VhcmNoZWQuaGFzKHBhcmVudElkKSkgY29udGludWU7XG4gICAgICAgICAgICBzZWFyY2hlZC5hZGQocGFyZW50SWQpO1xuXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yaWVzKHBhcmVudElkKTtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gY2F0ZWdvcmllcy5maW5kKGNhdCA9PiBjYXQuaWQgPT09IGNhdGVnb3J5SWQpO1xuXG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBPcHRpbWl6YXRpb246IE9ubHkgc2VhcmNoIGNoaWxkcmVuIGlmIGNoaWxkcmVuQ291bnQgPiAwXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkuY2hpbGRyZW5Db3VudCA+IDAgJiYgIXNlYXJjaGVkLmhhcyhjYXRlZ29yeS5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoUXVldWUucHVzaChjYXRlZ29yeS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ2FjaGUgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGNhdGVnb3J5IGhhcyBjaGlsZHJlbiAodXNlcyBjYWNoZWQgY291bnQpXG4gICAgICovXG4gICAgY2F0ZWdvcnlIYXNDaGlsZHJlbihjYXRlZ29yeUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXNCeUlkLmdldChjYXRlZ29yeUlkKTtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5ID8gY2F0ZWdvcnkuY2hpbGRyZW5Db3VudCA+IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBjYXRlZ29yeSBoYXMgcmVwb3J0cyAodXNlcyBjYWNoZWQgY291bnQpXG4gICAgICovXG4gICAgY2F0ZWdvcnlIYXNSZXBvcnRzKGNhdGVnb3J5SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICByZXR1cm4gY2F0ZWdvcnkgPyAoY2F0ZWdvcnkuaXRlbXNDb3VudCA/PyAwKSA+IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgY2FjaGVzXG4gICAgICovXG4gICAgY2xlYXJBbGxDYWNoZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlJZC5jbGVhcigpO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVwb3J0UmVxdWVzdHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBjYXRlZ29yaWVzIGNhY2hlIG9ubHlcbiAgICAgKi9cbiAgICBjbGVhckNhdGVnb3JpZXNDYWNoZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlJZC5jbGVhcigpO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgcmVwb3J0cyBjYWNoZSBvbmx5XG4gICAgICovXG4gICAgY2xlYXJSZXBvcnRzQ2FjaGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVwb3J0UmVxdWVzdHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cbn1cblxuXG4iXX0=","export function AXPieChartReportMapper(data) {\n return Object.entries(data).map(([key, value]) => ({\n id: key,\n label: key,\n value: value,\n }));\n}\nexport function AXBarChartReportMapper(data) {\n return Object.entries(data).map(([key, value]) => ({\n id: key,\n label: key,\n value: value,\n }));\n}\nexport function AXLineChartReportMapper(data) {\n const entries = Object.entries(data);\n if (entries.length === 0) {\n return [];\n }\n const dataPoints = entries.map(([key, value]) => ({\n x: key,\n y: value,\n }));\n return [\n {\n id: 'series-1',\n label: 'Data Series',\n tooltipLabel: 'Countries Info',\n lineColor: '#d81159',\n fillColor: '#d8115920',\n data: dataPoints,\n },\n ];\n}\n/**\n * Converts AXPContextData (filter context) to AXPFilterClause format\n *\n * Input format:\n * {\n * \"fieldName\": {\n * \"operation\": { \"type\": \"between\" },\n * \"value\": { \"from\": \"...\", \"to\": \"...\" }\n * }\n * }\n *\n * Output format:\n * {\n * logic: 'and',\n * filters: [\n * {\n * field: 'fieldName',\n * operator: { type: 'between' },\n * value: { from: \"...\", to: \"...\" }\n * }\n * ]\n * }\n */\nexport function convertContextDataToFilterClause(context) {\n const filters = [];\n // Iterate through all keys in context\n for (const [fieldName, fieldData] of Object.entries(context)) {\n // Skip if fieldData is not an object or doesn't have operation\n if (!fieldData || typeof fieldData !== 'object' || !('operation' in fieldData)) {\n continue;\n }\n const operation = fieldData.operation;\n const value = fieldData.value;\n // Skip if operation type is missing\n if (!operation || !operation.type) {\n continue;\n }\n // Skip if value is empty (null, undefined, empty string, empty object, empty array)\n if (value === null ||\n value === undefined ||\n value === '' ||\n (typeof value === 'object' && Object.keys(value).length === 0) ||\n (Array.isArray(value) && value.length === 0)) {\n continue;\n }\n // Create filter clause\n const filter = {\n field: fieldName,\n operator: {\n type: operation.type,\n },\n value: value,\n };\n filters.push(filter);\n }\n // Return filter clause with AND logic\n if (filters.length === 0) {\n return {\n logic: 'and',\n filters: [],\n };\n }\n return {\n logic: 'and',\n filters: filters,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL3JlcG9ydHMvcmVwb3J0LW1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLFVBQVUsc0JBQXNCLENBQUMsSUFBNEI7SUFDakUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELEVBQUUsRUFBRSxHQUFHO1FBQ1AsS0FBSyxFQUFFLEdBQUc7UUFDVixLQUFLLEVBQUUsS0FBSztLQUNiLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUE0QjtJQUNqRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakQsRUFBRSxFQUFFLEdBQUc7UUFDUCxLQUFLLEVBQUUsR0FBRztRQUNWLEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLElBQTRCO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxLQUFLO0tBQ1QsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPO1FBQ0w7WUFDRSxFQUFFLEVBQUUsVUFBVTtZQUNkLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFlBQVksRUFBRSxnQkFBZ0I7WUFDOUIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFdBQVc7WUFDdEIsSUFBSSxFQUFFLFVBQVU7U0FDakI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxVQUFVLGdDQUFnQyxDQUFDLE9BQXVCO0lBQ3RFLE1BQU0sT0FBTyxHQUErQixFQUFFLENBQUM7SUFFL0Msc0NBQXNDO0lBQ3RDLEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDN0QsK0RBQStEO1FBQy9ELElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvRSxTQUFTO1FBQ1gsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFJLFNBQWlCLENBQUMsU0FBUyxDQUFDO1FBQy9DLE1BQU0sS0FBSyxHQUFJLFNBQWlCLENBQUMsS0FBSyxDQUFDO1FBRXZDLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xDLFNBQVM7UUFDWCxDQUFDO1FBRUQsb0ZBQW9GO1FBQ3BGLElBQ0UsS0FBSyxLQUFLLElBQUk7WUFDZCxLQUFLLEtBQUssU0FBUztZQUNuQixLQUFLLEtBQUssRUFBRTtZQUNaLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztZQUM5RCxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFDNUMsQ0FBQztZQUNELFNBQVM7UUFDWCxDQUFDO1FBRUQsdUJBQXVCO1FBQ3ZCLE1BQU0sTUFBTSxHQUE2QjtZQUN2QyxLQUFLLEVBQUUsU0FBUztZQUNoQixRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO2FBQ3JCO1lBQ0QsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDO1FBRUYsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPO1lBQ0wsS0FBSyxFQUFFLEtBQUs7WUFDWixPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLEtBQUssRUFBRSxLQUFLO1FBQ1osT0FBTyxFQUFFLE9BQU87S0FDakIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJhckNoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9iYXItY2hhcnQnO1xuaW1wb3J0IHsgQVhEb251dENoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9kb251dC1jaGFydCc7XG5pbXBvcnQgeyBBWExpbmVDaGFydFZhbHVlIH0gZnJvbSAnQGFjb3JleC9jaGFydHMvbGluZS1jaGFydCc7XG5pbXBvcnQgeyBBWFBDb250ZXh0RGF0YSwgQVhQRmlsdGVyQ2xhdXNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBBWFBpZUNoYXJ0UmVwb3J0TWFwcGVyKGRhdGE6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4pOiBBWERvbnV0Q2hhcnRWYWx1ZSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhkYXRhKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBpZDoga2V5LFxuICAgIGxhYmVsOiBrZXksXG4gICAgdmFsdWU6IHZhbHVlLFxuICB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBWEJhckNoYXJ0UmVwb3J0TWFwcGVyKGRhdGE6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4pOiBBWEJhckNoYXJ0VmFsdWUge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZGF0YSkubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgaWQ6IGtleSxcbiAgICBsYWJlbDoga2V5LFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQVhMaW5lQ2hhcnRSZXBvcnRNYXBwZXIoZGF0YTogUmVjb3JkPHN0cmluZywgbnVtYmVyPik6IEFYTGluZUNoYXJ0VmFsdWUge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZGF0YSk7XG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBkYXRhUG9pbnRzID0gZW50cmllcy5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICB4OiBrZXksXG4gICAgeTogdmFsdWUsXG4gIH0pKTtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIGlkOiAnc2VyaWVzLTEnLFxuICAgICAgbGFiZWw6ICdEYXRhIFNlcmllcycsXG4gICAgICB0b29sdGlwTGFiZWw6ICdDb3VudHJpZXMgSW5mbycsXG4gICAgICBsaW5lQ29sb3I6ICcjZDgxMTU5JyxcbiAgICAgIGZpbGxDb2xvcjogJyNkODExNTkyMCcsXG4gICAgICBkYXRhOiBkYXRhUG9pbnRzLFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogQ29udmVydHMgQVhQQ29udGV4dERhdGEgKGZpbHRlciBjb250ZXh0KSB0byBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gKiBcbiAqIElucHV0IGZvcm1hdDpcbiAqIHtcbiAqICAgXCJmaWVsZE5hbWVcIjoge1xuICogICAgIFwib3BlcmF0aW9uXCI6IHsgXCJ0eXBlXCI6IFwiYmV0d2VlblwiIH0sXG4gKiAgICAgXCJ2YWx1ZVwiOiB7IFwiZnJvbVwiOiBcIi4uLlwiLCBcInRvXCI6IFwiLi4uXCIgfVxuICogICB9XG4gKiB9XG4gKiBcbiAqIE91dHB1dCBmb3JtYXQ6XG4gKiB7XG4gKiAgIGxvZ2ljOiAnYW5kJyxcbiAqICAgZmlsdGVyczogW1xuICogICAgIHtcbiAqICAgICAgIGZpZWxkOiAnZmllbGROYW1lJyxcbiAqICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdiZXR3ZWVuJyB9LFxuICogICAgICAgdmFsdWU6IHsgZnJvbTogXCIuLi5cIiwgdG86IFwiLi4uXCIgfVxuICogICAgIH1cbiAqICAgXVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENvbnRleHREYXRhVG9GaWx0ZXJDbGF1c2UoY29udGV4dDogQVhQQ29udGV4dERhdGEpOiBBWFBGaWx0ZXJDbGF1c2Uge1xuICBjb25zdCBmaWx0ZXJzOiBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb25bXSA9IFtdO1xuXG4gIC8vIEl0ZXJhdGUgdGhyb3VnaCBhbGwga2V5cyBpbiBjb250ZXh0XG4gIGZvciAoY29uc3QgW2ZpZWxkTmFtZSwgZmllbGREYXRhXSBvZiBPYmplY3QuZW50cmllcyhjb250ZXh0KSkge1xuICAgIC8vIFNraXAgaWYgZmllbGREYXRhIGlzIG5vdCBhbiBvYmplY3Qgb3IgZG9lc24ndCBoYXZlIG9wZXJhdGlvblxuICAgIGlmICghZmllbGREYXRhIHx8IHR5cGVvZiBmaWVsZERhdGEgIT09ICdvYmplY3QnIHx8ICEoJ29wZXJhdGlvbicgaW4gZmllbGREYXRhKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3Qgb3BlcmF0aW9uID0gKGZpZWxkRGF0YSBhcyBhbnkpLm9wZXJhdGlvbjtcbiAgICBjb25zdCB2YWx1ZSA9IChmaWVsZERhdGEgYXMgYW55KS52YWx1ZTtcblxuICAgIC8vIFNraXAgaWYgb3BlcmF0aW9uIHR5cGUgaXMgbWlzc2luZ1xuICAgIGlmICghb3BlcmF0aW9uIHx8ICFvcGVyYXRpb24udHlwZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gU2tpcCBpZiB2YWx1ZSBpcyBlbXB0eSAobnVsbCwgdW5kZWZpbmVkLCBlbXB0eSBzdHJpbmcsIGVtcHR5IG9iamVjdCwgZW1wdHkgYXJyYXkpXG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApXG4gICAgKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgZmlsdGVyIGNsYXVzZVxuICAgIGNvbnN0IGZpbHRlcjogQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uID0ge1xuICAgICAgZmllbGQ6IGZpZWxkTmFtZSxcbiAgICAgIG9wZXJhdG9yOiB7XG4gICAgICAgIHR5cGU6IG9wZXJhdGlvbi50eXBlLFxuICAgICAgfSxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9O1xuXG4gICAgZmlsdGVycy5wdXNoKGZpbHRlcik7XG4gIH1cblxuICAvLyBSZXR1cm4gZmlsdGVyIGNsYXVzZSB3aXRoIEFORCBsb2dpY1xuICBpZiAoZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naWM6ICdhbmQnLFxuICAgICAgZmlsdGVyczogW10sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbG9naWM6ICdhbmQnLFxuICAgIGZpbHRlcnM6IGZpbHRlcnMsXG4gIH07XG59XG4iXX0=","import { AXP_REPORT_DEFINITION_PROVIDER, AXP_REPORT_CATEGORY_PROVIDER } from '../../reports';\nimport { AXPQueryService } from '@acorex/platform/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMReportDefinitionProvider {\n constructor() {\n this.queryService = inject(AXPQueryService);\n this.entityName = `${RootConfig.module.name}.${RootConfig.entities.report.name}`;\n }\n async getList(categoryId) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n // Returning empty array to avoid duplicate API calls\n console.warn('AXMReportDefinitionProvider.getList is deprecated. Use API providers instead.');\n return [];\n }\n async getById(id) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n console.warn('AXMReportDefinitionProvider.getById is deprecated. Use API providers instead.');\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider, decorators: [{\n type: Injectable\n }] });\nexport const AXM_REPORT_DEFINITION_PROVIDER = {\n provide: AXP_REPORT_DEFINITION_PROVIDER,\n useClass: AXMReportDefinitionProvider,\n multi: true,\n};\n// --- Category Provider ---\nexport class AXMReportCategoryProvider {\n constructor() {\n this.queryService = inject(AXPQueryService);\n this.entityName = `${RootConfig.module.name}.${RootConfig.entities.category.name}`;\n }\n async getList(parentId) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n // Returning empty array to avoid duplicate API calls\n console.warn('AXMReportCategoryProvider.getList is deprecated. Use API providers instead.');\n return [];\n }\n async getById(id) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n console.warn('AXMReportCategoryProvider.getById is deprecated. Use API providers instead.');\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider, decorators: [{\n type: Injectable\n }] });\nexport const AXM_REPORT_CATEGORY_PROVIDER = {\n provide: AXP_REPORT_CATEGORY_PROVIDER,\n useClass: AXMReportCategoryProvider,\n multi: true,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC1ydW5uZXIvcmVwb3J0cy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9ELDhCQUE4QixFQUFnRCw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3TCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFJekMsTUFBTSxPQUFPLDJCQUEyQjtJQUR4QztRQUVZLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZDLGVBQVUsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0tBZ0J2RjtJQWRHLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBa0I7UUFDNUIsa0VBQWtFO1FBQ2xFLHNEQUFzRDtRQUN0RCxxREFBcUQ7UUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO1FBQzlGLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUNwQixrRUFBa0U7UUFDbEUsc0RBQXNEO1FBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsK0VBQStFLENBQUMsQ0FBQztRQUM5RixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDOytHQWpCUSwyQkFBMkI7bUhBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVTs7QUFxQlgsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUc7SUFDMUMsT0FBTyxFQUFFLDhCQUE4QjtJQUN2QyxRQUFRLEVBQUUsMkJBQTJCO0lBQ3JDLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVGLDZCQUE2QjtBQUU3QixNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRVksaUJBQVksR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkMsZUFBVSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7S0FnQnpGO0lBZEcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFpQjtRQUMzQixrRUFBa0U7UUFDbEUsc0RBQXNEO1FBQ3RELHFEQUFxRDtRQUNyRCxPQUFPLENBQUMsSUFBSSxDQUFDLDZFQUE2RSxDQUFDLENBQUM7UUFDNUYsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFVO1FBQ3BCLGtFQUFrRTtRQUNsRSxzREFBc0Q7UUFDdEQsT0FBTyxDQUFDLElBQUksQ0FBQyw2RUFBNkUsQ0FBQyxDQUFDO1FBQzVGLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7K0dBakJRLHlCQUF5QjttSEFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVOztBQXFCWCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRztJQUN4QyxPQUFPLEVBQUUsNEJBQTRCO0lBQ3JDLFFBQVEsRUFBRSx5QkFBeUI7SUFDbkMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQUmVwb3J0RGVmaW5pdGlvbiwgQVhQUmVwb3J0RGVmaW5pdGlvblByb3ZpZGVyLCBBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVIsIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIsIEFYUFJlcG9ydENhdGVnb3J5LCBBWFBfUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vcmVwb3J0cyc7XG5pbXBvcnQgeyBBWFBRdWVyeVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuICAgIHByaXZhdGUgcXVlcnlTZXJ2aWNlID0gaW5qZWN0KEFYUFF1ZXJ5U2VydmljZSk7XG4gICAgcHJpdmF0ZSBlbnRpdHlOYW1lID0gYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5uYW1lfWA7XG5cbiAgICBhc3luYyBnZXRMaXN0KGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbltdPiB7XG4gICAgICAgIC8vIE5vdGU6IFRoaXMgcHJvdmlkZXIgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgQVBJIHByb3ZpZGVyc1xuICAgICAgICAvLyB0aGF0IHVzZSBjYWNoZWQgZGF0YSBmcm9tIHRoZSBjYXRlZ29yeSBBUEkgcmVzcG9uc2VcbiAgICAgICAgLy8gUmV0dXJuaW5nIGVtcHR5IGFycmF5IHRvIGF2b2lkIGR1cGxpY2F0ZSBBUEkgY2FsbHNcbiAgICAgICAgY29uc29sZS53YXJuKCdBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIuZ2V0TGlzdCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIE5vdGU6IFRoaXMgcHJvdmlkZXIgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgQVBJIHByb3ZpZGVyc1xuICAgICAgICAvLyB0aGF0IHVzZSBjYWNoZWQgZGF0YSBmcm9tIHRoZSBjYXRlZ29yeSBBUEkgcmVzcG9uc2VcbiAgICAgICAgY29uc29sZS53YXJuKCdBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIuZ2V0QnlJZCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFYTV9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiA9IHtcbiAgICBwcm92aWRlOiBBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVIsXG4gICAgdXNlQ2xhc3M6IEFYTVJlcG9ydERlZmluaXRpb25Qcm92aWRlcixcbiAgICBtdWx0aTogdHJ1ZSxcbn07XG5cbi8vIC0tLSAgQ2F0ZWdvcnkgUHJvdmlkZXIgLS0tXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUmVwb3J0Q2F0ZWdvcnlQcm92aWRlciBpbXBsZW1lbnRzIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIge1xuICAgIHByaXZhdGUgcXVlcnlTZXJ2aWNlID0gaW5qZWN0KEFYUFF1ZXJ5U2VydmljZSk7XG4gICAgcHJpdmF0ZSBlbnRpdHlOYW1lID0gYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLmNhdGVnb3J5Lm5hbWV9YDtcblxuICAgIGFzeW5jIGdldExpc3QocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgLy8gTm90ZTogVGhpcyBwcm92aWRlciBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBBUEkgcHJvdmlkZXJzXG4gICAgICAgIC8vIHRoYXQgdXNlIGNhY2hlZCBkYXRhIGZyb20gdGhlIGNhdGVnb3J5IEFQSSByZXNwb25zZVxuICAgICAgICAvLyBSZXR1cm5pbmcgZW1wdHkgYXJyYXkgdG8gYXZvaWQgZHVwbGljYXRlIEFQSSBjYWxsc1xuICAgICAgICBjb25zb2xlLndhcm4oJ0FYTVJlcG9ydENhdGVnb3J5UHJvdmlkZXIuZ2V0TGlzdCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnRDYXRlZ29yeSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICAvLyBOb3RlOiBUaGlzIHByb3ZpZGVyIGlzIG5vdyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIEFQSSBwcm92aWRlcnNcbiAgICAgICAgLy8gdGhhdCB1c2UgY2FjaGVkIGRhdGEgZnJvbSB0aGUgY2F0ZWdvcnkgQVBJIHJlc3BvbnNlXG4gICAgICAgIGNvbnNvbGUud2FybignQVhNUmVwb3J0Q2F0ZWdvcnlQcm92aWRlci5nZXRCeUlkIGlzIGRlcHJlY2F0ZWQuIFVzZSBBUEkgcHJvdmlkZXJzIGluc3RlYWQuJyk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgQVhNX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUiA9IHtcbiAgICBwcm92aWRlOiBBWFBfUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSLFxuICAgIHVzZUNsYXNzOiBBWE1SZXBvcnRDYXRlZ29yeVByb3ZpZGVyLFxuICAgIG11bHRpOiB0cnVlLFxufTsgIl19","import { inject, Injectable } from \"@angular/core\";\nimport { AXPEntityService } from \"@acorex/platform/layout/entity\";\nimport { RootConfig } from \"./const\";\nimport * as i0 from \"@angular/core\";\nexport class AXMSystemReportsCategoryProvider {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.reportCategoryService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.report.name + \"Category\").data();\n }\n async getList(parentId) {\n const list = [];\n if (parentId) {\n const result = await this.reportCategoryService.query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [{\n field: 'parentId',\n operator: {\n type: 'equal',\n },\n value: parentId,\n }]\n }\n });\n list.push(...result.items);\n }\n else {\n const result = await this.reportCategoryService.query();\n list.push(...result.items);\n }\n return list;\n }\n async getById(id) {\n return await this.reportCategoryService.byKey(id);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsCategoryProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsCategoryProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsCategoryProvider, decorators: [{\n type: Injectable\n }] });\nexport class AXMSystemReportsDefinitionProvider {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.reportDefinitionService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.report.name).data();\n }\n async getList(categoryId) {\n const list = [];\n // Use 'contains' operator to filter by categoryIds array field\n const result = await this.reportDefinitionService.query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [{\n field: 'categoryIds',\n operator: {\n type: 'contains',\n },\n value: categoryId,\n }]\n }\n });\n list.push(...result.items);\n return list;\n }\n async getById(id) {\n return await this.reportDefinitionService.byKey(id);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsDefinitionProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcmVwb3J0LnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUdyQyxNQUFNLE9BQU8sZ0NBQWdDO0lBRDdDO1FBR3FCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEQsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBWSxDQUFDO0tBOEJ4SjtJQTVCRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQWlCO1FBQzNCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO2dCQUNsRCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLEVBQUUsSUFBSTtnQkFDVixNQUFNLEVBQUU7b0JBQ0osS0FBSyxFQUFFLEtBQUs7b0JBQ1osT0FBTyxFQUFFLENBQUM7NEJBQ04sS0FBSyxFQUFFLFVBQVU7NEJBQ2pCLFFBQVEsRUFBRTtnQ0FDTixJQUFJLEVBQUUsT0FBTzs2QkFDaEI7NEJBQ0QsS0FBSyxFQUFFLFFBQVE7eUJBQ2xCLENBQUM7aUJBQ0w7YUFDSixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUNwQixPQUFPLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDOytHQWhDUSxnQ0FBZ0M7bUhBQWhDLGdDQUFnQzs7NEZBQWhDLGdDQUFnQztrQkFENUMsVUFBVTs7QUFxQ1gsTUFBTSxPQUFPLGtDQUFrQztJQUQvQztRQUdZLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekMsNEJBQXVCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7S0EwQm5JO0lBeEJHLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBa0I7UUFDNUIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLCtEQUErRDtRQUMvRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7WUFDcEQsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRTtnQkFDSixLQUFLLEVBQUUsS0FBSztnQkFDWixPQUFPLEVBQUUsQ0FBQzt3QkFDTixLQUFLLEVBQUUsYUFBYTt3QkFDcEIsUUFBUSxFQUFFOzRCQUNOLElBQUksRUFBRSxVQUFVO3lCQUNuQjt3QkFDRCxLQUFLLEVBQUUsVUFBVTtxQkFDcEIsQ0FBQzthQUNMO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixPQUFPLElBQTZCLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUNwQixPQUFPLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQW9DLENBQUM7SUFDM0YsQ0FBQzsrR0E1QlEsa0NBQWtDO21IQUFsQyxrQ0FBa0M7OzRGQUFsQyxrQ0FBa0M7a0JBRDlDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2F0ZWdvcnksIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIsIEFYUFJlcG9ydERlZmluaXRpb24sIEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlciB9IGZyb20gXCIuL3JlcG9ydHNcIjtcbmltcG9ydCB7IEFYUEVudGl0eVNlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5XCI7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSBcIi4vY29uc3RcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTVN5c3RlbVJlcG9ydHNDYXRlZ29yeVByb3ZpZGVyIGltcGxlbWVudHMgQVhQUmVwb3J0Q2F0ZWdvcnlQcm92aWRlciB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGVudGl0eVNlcnZpY2UgPSBpbmplY3QoQVhQRW50aXR5U2VydmljZSk7XG4gICAgcHJpdmF0ZSByZXBvcnRDYXRlZ29yeVNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2Uud2l0aEVudGl0eShSb290Q29uZmlnLm1vZHVsZS5uYW1lLCBSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5uYW1lICsgXCJDYXRlZ29yeVwiKS5kYXRhPGFueSwgYW55PigpO1xuXG4gICAgYXN5bmMgZ2V0TGlzdChwYXJlbnRJZD86IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnlbXT4ge1xuICAgICAgICBjb25zdCBsaXN0ID0gW107XG4gICAgICAgIGlmIChwYXJlbnRJZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXBvcnRDYXRlZ29yeVNlcnZpY2UucXVlcnkoe1xuICAgICAgICAgICAgICAgIHNraXA6IDAsXG4gICAgICAgICAgICAgICAgdGFrZTogMTAwMCxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdhbmQnLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdwYXJlbnRJZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcXVhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGlzdC5wdXNoKC4uLnJlc3VsdC5pdGVtcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcG9ydENhdGVnb3J5U2VydmljZS5xdWVyeSgpO1xuICAgICAgICAgICAgbGlzdC5wdXNoKC4uLnJlc3VsdC5pdGVtcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnRDYXRlZ29yeSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvcnRDYXRlZ29yeVNlcnZpY2UuYnlLZXkoaWQpO1xuICAgIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTVN5c3RlbVJlcG9ydHNEZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuXG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUEVudGl0eVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVwb3J0RGVmaW5pdGlvblNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2Uud2l0aEVudGl0eShSb290Q29uZmlnLm1vZHVsZS5uYW1lLCBSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5uYW1lKS5kYXRhKCk7XG5cbiAgICBhc3luYyBnZXRMaXN0KGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbltdPiB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBbXTtcbiAgICAgICAgLy8gVXNlICdjb250YWlucycgb3BlcmF0b3IgdG8gZmlsdGVyIGJ5IGNhdGVnb3J5SWRzIGFycmF5IGZpZWxkXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVwb3J0RGVmaW5pdGlvblNlcnZpY2UucXVlcnkoe1xuICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICAgIHRha2U6IDEwMDAsXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBsb2dpYzogJ2FuZCcsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogW3tcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY29udGFpbnMnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2F0ZWdvcnlJZCxcbiAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbGlzdC5wdXNoKC4uLnJlc3VsdC5pdGVtcyk7XG4gICAgICAgIHJldHVybiBsaXN0IGFzIEFYUFJlcG9ydERlZmluaXRpb25bXTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydERlZmluaXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwb3J0RGVmaW5pdGlvblNlcnZpY2UuYnlLZXkoaWQpIGFzIEFYUFJlcG9ydERlZmluaXRpb24gfCB1bmRlZmluZWQ7XG4gICAgfVxufVxuIl19","export const AXMPermissionsKeys = {\n ReportManagement: {\n Management: 'ReportManagement:Permission:Management',\n Report: {\n Management: 'ReportManagement:Permission:Report.Management',\n View: 'ReportManagement:Permission:Report.View',\n Create: 'ReportManagement:Permission:Report.Create',\n Update: 'ReportManagement:Permission:Report.Update',\n Delete: 'ReportManagement:Permission:Report.Delete',\n },\n Category: {\n Management: 'ReportManagement:Permission:Category.Management',\n View: 'ReportManagement:Permission:Category.View',\n Create: 'ReportManagement:Permission:Category.Create',\n Update: 'ReportManagement:Permission:Category.Update',\n Delete: 'ReportManagement:Permission:Category.Delete',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcGVybWlzc2lvbi5rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLGdCQUFnQixFQUFFO1FBQ2hCLFVBQVUsRUFBRSx3Q0FBd0M7UUFDcEQsTUFBTSxFQUFFO1lBQ04sVUFBVSxFQUFFLCtDQUErQztZQUMzRCxJQUFJLEVBQUUseUNBQXlDO1lBQy9DLE1BQU0sRUFBRSwyQ0FBMkM7WUFDbkQsTUFBTSxFQUFFLDJDQUEyQztZQUNuRCxNQUFNLEVBQUUsMkNBQTJDO1NBQ3BEO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsVUFBVSxFQUFFLGlEQUFpRDtZQUM3RCxJQUFJLEVBQUUsMkNBQTJDO1lBQ2pELE1BQU0sRUFBRSw2Q0FBNkM7WUFDckQsTUFBTSxFQUFFLDZDQUE2QztZQUNyRCxNQUFNLEVBQUUsNkNBQTZDO1NBQ3REO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFYTVBlcm1pc3Npb25zS2V5cyA9IHtcbiAgUmVwb3J0TWFuYWdlbWVudDoge1xuICAgIE1hbmFnZW1lbnQ6ICdSZXBvcnRNYW5hZ2VtZW50OlBlcm1pc3Npb246TWFuYWdlbWVudCcsXG4gICAgUmVwb3J0OiB7XG4gICAgICBNYW5hZ2VtZW50OiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOlJlcG9ydC5NYW5hZ2VtZW50JyxcbiAgICAgIFZpZXc6ICdSZXBvcnRNYW5hZ2VtZW50OlBlcm1pc3Npb246UmVwb3J0LlZpZXcnLFxuICAgICAgQ3JlYXRlOiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOlJlcG9ydC5DcmVhdGUnLFxuICAgICAgVXBkYXRlOiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOlJlcG9ydC5VcGRhdGUnLFxuICAgICAgRGVsZXRlOiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOlJlcG9ydC5EZWxldGUnLFxuICAgIH0sXG4gICAgQ2F0ZWdvcnk6IHtcbiAgICAgIE1hbmFnZW1lbnQ6ICdSZXBvcnRNYW5hZ2VtZW50OlBlcm1pc3Npb246Q2F0ZWdvcnkuTWFuYWdlbWVudCcsXG4gICAgICBWaWV3OiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOkNhdGVnb3J5LlZpZXcnLFxuICAgICAgQ3JlYXRlOiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOkNhdGVnb3J5LkNyZWF0ZScsXG4gICAgICBVcGRhdGU6ICdSZXBvcnRNYW5hZ2VtZW50OlBlcm1pc3Npb246Q2F0ZWdvcnkuVXBkYXRlJyxcbiAgICAgIERlbGV0ZTogJ1JlcG9ydE1hbmFnZW1lbnQ6UGVybWlzc2lvbjpDYXRlZ29yeS5EZWxldGUnLFxuICAgIH0sXG4gIH0sXG59O1xuIl19","import { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport { RootConfig } from './const';\nimport * as i0 from \"@angular/core\";\nexport class AXMPermissionDefinitionProvider {\n constructor(injector) {\n this.injector = injector;\n this.translateService = this.injector.get(AXTranslationService);\n }\n async define(context) {\n const keys = AXMPermissionsKeys.ReportManagement;\n const trans = async (key) => await this.translateService.translateAsync(key);\n context\n .addGroup(RootConfig.module.name, await trans('@report-management:module.menus.root.title'))\n // Reports Management\n .addPermission(keys.Report.Management, await trans('@report-management:reports.permissions.reports.title'))\n .addChild(keys.Report.View, await trans('@report-management:reports.permissions.reports.actions.view.title'))\n .addChild(keys.Report.Create, await trans('@report-management:reports.permissions.reports.actions.create.title'))\n .addChild(keys.Report.Update, await trans('@report-management:reports.permissions.reports.actions.update.title'))\n .addChild(keys.Report.Delete, await trans('@report-management:reports.permissions.reports.actions.delete.title'))\n .endPermission()\n // Categories Management\n .addPermission(keys.Category.Management, await trans('@report-management:reports.permissions.categories.title'))\n .addChild(keys.Category.View, await trans('@report-management:reports.permissions.categories.actions.view.title'))\n .addChild(keys.Category.Create, await trans('@report-management:reports.permissions.categories.actions.create.title'))\n .addChild(keys.Category.Update, await trans('@report-management:reports.permissions.categories.actions.update.title'))\n .addChild(keys.Category.Delete, await trans('@report-management:reports.permissions.categories.actions.delete.title'))\n .endPermission()\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR3JDLE1BQU0sT0FBTywrQkFBK0I7SUFHMUMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUZyQixxQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRW5DLENBQUM7SUFFMUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUErQztRQUMxRCxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNqRCxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFckYsT0FBTzthQUNKLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzVGLHFCQUFxQjthQUNwQixhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQzthQUMxRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQzthQUM1RyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxhQUFhLEVBQUU7WUFDaEIsd0JBQXdCO2FBQ3ZCLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO2FBQy9HLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO2FBQ2pILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILGFBQWEsRUFBRTthQUNmLFFBQVEsRUFBRSxDQUFDO0lBQ2hCLENBQUM7K0dBMUJVLCtCQUErQjttSEFBL0IsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUQzQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciwgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlckNvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTVBlcm1pc3Npb25zS2V5cyB9IGZyb20gJy4vcGVybWlzc2lvbi5rZXlzJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTVBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGFzeW5jIGRlZmluZShjb250ZXh0OiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGtleXMgPSBBWE1QZXJtaXNzaW9uc0tleXMuUmVwb3J0TWFuYWdlbWVudDtcbiAgICBjb25zdCB0cmFucyA9IGFzeW5jIChrZXk6IHN0cmluZykgPT4gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKGtleSk7XG5cbiAgICBjb250ZXh0XG4gICAgICAuYWRkR3JvdXAoUm9vdENvbmZpZy5tb2R1bGUubmFtZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDptb2R1bGUubWVudXMucm9vdC50aXRsZScpKVxuICAgICAgLy8gUmVwb3J0cyBNYW5hZ2VtZW50XG4gICAgICAuYWRkUGVybWlzc2lvbihrZXlzLlJlcG9ydC5NYW5hZ2VtZW50LCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMucmVwb3J0cy50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuUmVwb3J0LlZpZXcsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5yZXBvcnRzLmFjdGlvbnMudmlldy50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuUmVwb3J0LkNyZWF0ZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLnJlcG9ydHMuYWN0aW9ucy5jcmVhdGUudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLlJlcG9ydC5VcGRhdGUsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5yZXBvcnRzLmFjdGlvbnMudXBkYXRlLnRpdGxlJykpXG4gICAgICAuYWRkQ2hpbGQoa2V5cy5SZXBvcnQuRGVsZXRlLCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMucmVwb3J0cy5hY3Rpb25zLmRlbGV0ZS50aXRsZScpKVxuICAgICAgLmVuZFBlcm1pc3Npb24oKVxuICAgICAgLy8gQ2F0ZWdvcmllcyBNYW5hZ2VtZW50XG4gICAgICAuYWRkUGVybWlzc2lvbihrZXlzLkNhdGVnb3J5Lk1hbmFnZW1lbnQsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5jYXRlZ29yaWVzLnRpdGxlJykpXG4gICAgICAuYWRkQ2hpbGQoa2V5cy5DYXRlZ29yeS5WaWV3LCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMuY2F0ZWdvcmllcy5hY3Rpb25zLnZpZXcudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLkNhdGVnb3J5LkNyZWF0ZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLmNhdGVnb3JpZXMuYWN0aW9ucy5jcmVhdGUudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLkNhdGVnb3J5LlVwZGF0ZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLmNhdGVnb3JpZXMuYWN0aW9ucy51cGRhdGUudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLkNhdGVnb3J5LkRlbGV0ZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLmNhdGVnb3JpZXMuYWN0aW9ucy5kZWxldGUudGl0bGUnKSlcbiAgICAgIC5lbmRQZXJtaXNzaW9uKClcbiAgICAgIC5lbmRHcm91cCgpO1xuICB9XG59XG5cbiJdfQ==","export const AXPReportManagementMenuKeys = {\n Root: 'report-management:menu',\n Reports: 'report-management:menu:reports',\n Categories: 'report-management:menu:categories',\n DataSets: 'report-management:menu:data-sets',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvbWVudS5rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3ZDLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLGdDQUFnQztJQUN6QyxVQUFVLEVBQUUsbUNBQW1DO0lBQy9DLFFBQVEsRUFBRSxrQ0FBa0M7Q0FDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBWFBSZXBvcnRNYW5hZ2VtZW50TWVudUtleXMgPSB7XG4gICAgUm9vdDogJ3JlcG9ydC1tYW5hZ2VtZW50Om1lbnUnLFxuICAgIFJlcG9ydHM6ICdyZXBvcnQtbWFuYWdlbWVudDptZW51OnJlcG9ydHMnLFxuICAgIENhdGVnb3JpZXM6ICdyZXBvcnQtbWFuYWdlbWVudDptZW51OmNhdGVnb3JpZXMnLFxuICAgIERhdGFTZXRzOiAncmVwb3J0LW1hbmFnZW1lbnQ6bWVudTpkYXRhLXNldHMnLFxufSBhcyBjb25zdDtcblxuIl19","import { inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPReportManagementMenuKeys } from './menu.keys';\nexport class AXMMenuProvider {\n constructor() {\n this.sessionService = inject(AXPSessionService);\n }\n async provide(context) {\n const module = RootConfig.module;\n context.addItems([\n {\n name: AXPReportManagementMenuKeys.Reports,\n text: RootConfig.entities.report.titlePlural,\n path: `${this.sessionService.application?.name}/${module.route}/reports`,\n icon: RootConfig.entities.report.icon,\n priority: 900001,\n },\n ]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL21lbnUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxRCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNZLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFldkQsQ0FBQztJQWJHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBK0I7UUFDekMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUVqQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2I7Z0JBQ0ksSUFBSSxFQUFFLDJCQUEyQixDQUFDLE9BQU87Z0JBQ3pDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXO2dCQUM1QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssVUFBVTtnQkFDeEUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQ3JDLFFBQVEsRUFBRSxNQUFNO2FBQ25CO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQTWVudVByb3ZpZGVyLCBBWFBNZW51UHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi9jb25zdCc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBSZXBvcnRNYW5hZ2VtZW50TWVudUtleXMgfSBmcm9tICcuL21lbnUua2V5cyc7XG5cbmV4cG9ydCBjbGFzcyBBWE1NZW51UHJvdmlkZXIgaW1wbGVtZW50cyBBWFBNZW51UHJvdmlkZXIge1xuICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuXG4gICAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBNZW51UHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IFJvb3RDb25maWcubW9kdWxlO1xuXG4gICAgICAgIGNvbnRleHQuYWRkSXRlbXMoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEFYUFJlcG9ydE1hbmFnZW1lbnRNZW51S2V5cy5SZXBvcnRzLFxuICAgICAgICAgICAgICAgIHRleHQ6IFJvb3RDb25maWcuZW50aXRpZXMucmVwb3J0LnRpdGxlUGx1cmFsLFxuICAgICAgICAgICAgICAgIHBhdGg6IGAke3RoaXMuc2Vzc2lvblNlcnZpY2UuYXBwbGljYXRpb24/Lm5hbWV9LyR7bW9kdWxlLnJvdXRlfS9yZXBvcnRzYCxcbiAgICAgICAgICAgICAgICBpY29uOiBSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5pY29uLFxuICAgICAgICAgICAgICAgIHByaW9yaXR5OiA5MDAwMDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { RootConfig } from './const';\nimport * as i0 from \"@angular/core\";\nexport class AXMEntityProvider {\n async get(moduleName, entityName) {\n // Simulate report entity definition\n if (moduleName == RootConfig.module.name && entityName == RootConfig.entities.report.name) {\n return {\n name: \"Report\",\n module: \"ReportManagement\",\n title: \"Report Management\",\n formats: {\n individual: \"Report Management\",\n plural: \"Report Management\",\n },\n properties: [],\n };\n }\n return null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMEntityProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMEntityProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXR5LnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxVQUFVLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR3JDLE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFVBQWtCO1FBQzlDLG9DQUFvQztRQUNwQyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUYsT0FBTztnQkFDTCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsa0JBQWtCO2dCQUMxQixLQUFLLEVBQUUsbUJBQW1CO2dCQUMxQixPQUFPLEVBQUU7b0JBQ1AsVUFBVSxFQUFFLG1CQUFtQjtvQkFDL0IsTUFBTSxFQUFFLG1CQUFtQjtpQkFDNUI7Z0JBQ0QsVUFBVSxFQUFFLEVBQUU7YUFDRixDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBakJVLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRW50aXR5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHtcbiAgQVhQRW50aXR5RGVmaW5pdGlvbkxvYWRlcixcbiAgQVhQRW50aXR5RGVmaW5pdGlvblByZWxvYWRlcixcbiAgQVhQRW50aXR5UHJlbG9hZEVudGl0eSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTUVudGl0eVByb3ZpZGVyIGltcGxlbWVudHMgQVhQRW50aXR5RGVmaW5pdGlvbkxvYWRlciB7XG5cbiAgYXN5bmMgZ2V0KG1vZHVsZU5hbWU6IHN0cmluZywgZW50aXR5TmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBFbnRpdHkgfCBudWxsPiB7XG4gICAgLy8gU2ltdWxhdGUgcmVwb3J0IGVudGl0eSBkZWZpbml0aW9uXG4gICAgaWYgKG1vZHVsZU5hbWUgPT0gUm9vdENvbmZpZy5tb2R1bGUubmFtZSAmJiBlbnRpdHlOYW1lID09IFJvb3RDb25maWcuZW50aXRpZXMucmVwb3J0Lm5hbWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IFwiUmVwb3J0XCIsXG4gICAgICAgIG1vZHVsZTogXCJSZXBvcnRNYW5hZ2VtZW50XCIsXG4gICAgICAgIHRpdGxlOiBcIlJlcG9ydCBNYW5hZ2VtZW50XCIsXG4gICAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgICBpbmRpdmlkdWFsOiBcIlJlcG9ydCBNYW5hZ2VtZW50XCIsXG4gICAgICAgICAgcGx1cmFsOiBcIlJlcG9ydCBNYW5hZ2VtZW50XCIsXG4gICAgICAgIH0sXG4gICAgICAgIHByb3BlcnRpZXM6IFtdLFxuICAgICAgfSBhcyBBWFBFbnRpdHk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59Il19","export const AXPReportManagementFeatureKeys = {\n ReportBuilder: 'ReportManagement:Feature:ReportBuilder',\n SavedReports: 'ReportManagement:Feature:SavedReports',\n ScheduledReports: 'ReportManagement:Feature:ScheduledReports',\n BackgroundReports: 'ReportManagement:Feature:BackgroundReports',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMua2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzLmtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUc7SUFDNUMsYUFBYSxFQUFFLHdDQUF3QztJQUN2RCxZQUFZLEVBQUUsdUNBQXVDO0lBQ3JELGdCQUFnQixFQUFFLDJDQUEyQztJQUM3RCxpQkFBaUIsRUFBRSw0Q0FBNEM7Q0FDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBWFBSZXBvcnRNYW5hZ2VtZW50RmVhdHVyZUtleXMgPSB7XG4gIFJlcG9ydEJ1aWxkZXI6ICdSZXBvcnRNYW5hZ2VtZW50OkZlYXR1cmU6UmVwb3J0QnVpbGRlcicsXG4gIFNhdmVkUmVwb3J0czogJ1JlcG9ydE1hbmFnZW1lbnQ6RmVhdHVyZTpTYXZlZFJlcG9ydHMnLFxuICBTY2hlZHVsZWRSZXBvcnRzOiAnUmVwb3J0TWFuYWdlbWVudDpGZWF0dXJlOlNjaGVkdWxlZFJlcG9ydHMnLFxuICBCYWNrZ3JvdW5kUmVwb3J0czogJ1JlcG9ydE1hbmFnZW1lbnQ6RmVhdHVyZTpCYWNrZ3JvdW5kUmVwb3J0cycsXG59IGFzIGNvbnN0O1xuXG4iXX0=","//#region ---- Imports ----\nimport { AXPReportManagementFeatureKeys } from './features.keys';\n//#endregion\n//#region ---- Feature Definition Provider ----\n/**\n * Report Management Feature Definition Provider.\n * Provides feature definitions for the Report Management module.\n */\nexport class AXPReportManagementFeatureDefinitionProvider {\n async provide(context) {\n // Report Builder feature\n context.addFeature(AXPReportManagementFeatureKeys.ReportBuilder, {\n title: '@report-management:features.report-builder.title',\n description: '@report-management:features.report-builder.description',\n defaultValue: true,\n type: 'boolean',\n });\n // Saved Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.SavedReports, {\n title: '@report-management:features.saved-reports.title',\n description: '@report-management:features.saved-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n // Scheduled Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.ScheduledReports, {\n title: '@report-management:features.scheduled-reports.title',\n description: '@report-management:features.scheduled-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n // Background Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.BackgroundReports, {\n title: '@report-management:features.background-reports.title',\n description: '@report-management:features.background-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n }\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZS1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQU0vQixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRSxZQUFZO0FBRVosbURBQW1EO0FBRW5EOzs7R0FHRztBQUNILE1BQU0sT0FBTyw0Q0FBNEM7SUFDdkQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUE0QztRQUN4RCx5QkFBeUI7UUFDekIsT0FBTyxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLEVBQUU7WUFDL0QsS0FBSyxFQUFFLGtEQUFrRDtZQUN6RCxXQUFXLEVBQUUsd0RBQXdEO1lBQ3JFLFlBQVksRUFBRSxJQUFJO1lBQ2xCLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztRQUVILHdCQUF3QjtRQUN4QixPQUFPLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLFlBQVksRUFBRTtZQUM5RCxLQUFLLEVBQUUsaURBQWlEO1lBQ3hELFdBQVcsRUFBRSx1REFBdUQ7WUFDcEUsWUFBWSxFQUFFLElBQUk7WUFDbEIsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsNEJBQTRCO1FBQzVCLE9BQU8sQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLEVBQUU7WUFDbEUsS0FBSyxFQUFFLHFEQUFxRDtZQUM1RCxXQUFXLEVBQUUsMkRBQTJEO1lBQ3hFLFlBQVksRUFBRSxJQUFJO1lBQ2xCLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztRQUVILDZCQUE2QjtRQUM3QixPQUFPLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLGlCQUFpQixFQUFFO1lBQ25FLEtBQUssRUFBRSxzREFBc0Q7WUFDN0QsV0FBVyxFQUFFLDREQUE0RDtZQUN6RSxZQUFZLEVBQUUsSUFBSTtZQUNsQixJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQge1xuICBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyLFxuICBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUFJlcG9ydE1hbmFnZW1lbnRGZWF0dXJlS2V5cyB9IGZyb20gJy4vZmVhdHVyZXMua2V5cyc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIEZlYXR1cmUgRGVmaW5pdGlvbiBQcm92aWRlciAgIC0tLS1cblxuLyoqXG4gKiBSZXBvcnQgTWFuYWdlbWVudCBGZWF0dXJlIERlZmluaXRpb24gUHJvdmlkZXIuXG4gKiBQcm92aWRlcyBmZWF0dXJlIGRlZmluaXRpb25zIGZvciB0aGUgUmVwb3J0IE1hbmFnZW1lbnQgbW9kdWxlLlxuICovXG5leHBvcnQgY2xhc3MgQVhQUmVwb3J0TWFuYWdlbWVudEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFJlcG9ydCBCdWlsZGVyIGZlYXR1cmVcbiAgICBjb250ZXh0LmFkZEZlYXR1cmUoQVhQUmVwb3J0TWFuYWdlbWVudEZlYXR1cmVLZXlzLlJlcG9ydEJ1aWxkZXIsIHtcbiAgICAgIHRpdGxlOiAnQHJlcG9ydC1tYW5hZ2VtZW50OmZlYXR1cmVzLnJlcG9ydC1idWlsZGVyLnRpdGxlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQHJlcG9ydC1tYW5hZ2VtZW50OmZlYXR1cmVzLnJlcG9ydC1idWlsZGVyLmRlc2NyaXB0aW9uJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICB9KTtcblxuICAgIC8vIFNhdmVkIFJlcG9ydHMgZmVhdHVyZVxuICAgIGNvbnRleHQuYWRkRmVhdHVyZShBWFBSZXBvcnRNYW5hZ2VtZW50RmVhdHVyZUtleXMuU2F2ZWRSZXBvcnRzLCB7XG4gICAgICB0aXRsZTogJ0ByZXBvcnQtbWFuYWdlbWVudDpmZWF0dXJlcy5zYXZlZC1yZXBvcnRzLnRpdGxlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQHJlcG9ydC1tYW5hZ2VtZW50OmZlYXR1cmVzLnNhdmVkLXJlcG9ydHMuZGVzY3JpcHRpb24nLFxuICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIH0pO1xuXG4gICAgLy8gU2NoZWR1bGVkIFJlcG9ydHMgZmVhdHVyZVxuICAgIGNvbnRleHQuYWRkRmVhdHVyZShBWFBSZXBvcnRNYW5hZ2VtZW50RmVhdHVyZUtleXMuU2NoZWR1bGVkUmVwb3J0cywge1xuICAgICAgdGl0bGU6ICdAcmVwb3J0LW1hbmFnZW1lbnQ6ZmVhdHVyZXMuc2NoZWR1bGVkLXJlcG9ydHMudGl0bGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdAcmVwb3J0LW1hbmFnZW1lbnQ6ZmVhdHVyZXMuc2NoZWR1bGVkLXJlcG9ydHMuZGVzY3JpcHRpb24nLFxuICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIH0pO1xuXG4gICAgLy8gQmFja2dyb3VuZCBSZXBvcnRzIGZlYXR1cmVcbiAgICBjb250ZXh0LmFkZEZlYXR1cmUoQVhQUmVwb3J0TWFuYWdlbWVudEZlYXR1cmVLZXlzLkJhY2tncm91bmRSZXBvcnRzLCB7XG4gICAgICB0aXRsZTogJ0ByZXBvcnQtbWFuYWdlbWVudDpmZWF0dXJlcy5iYWNrZ3JvdW5kLXJlcG9ydHMudGl0bGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdAcmVwb3J0LW1hbmFnZW1lbnQ6ZmVhdHVyZXMuYmFja2dyb3VuZC1yZXBvcnRzLmRlc2NyaXB0aW9uJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICB9KTtcbiAgfVxufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","import { AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex/platform/core';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { ReportManagementManifest } from './manifest';\nimport { AXPDomainModule, provideEntity } from '@acorex/platform/domain';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { NgModule } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { RootConfig } from './const';\nimport { AXM_REPORT_CATEGORY_PROVIDER, AXM_REPORT_DEFINITION_PROVIDER, } from './features/report-runner/reports.provider';\nimport { AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\n// Entity Modules\nimport { AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER } from './reports';\nimport { AXMSystemReportsCategoryProvider, AXMSystemReportsDefinitionProvider } from './report.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMEntityProvider } from './entity.provider';\nimport { AXPReportManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport * as i0 from \"@angular/core\";\nfunction routesFacory() {\n let routes = [\n {\n path: `:app/${RootConfig.module.route}/viewer`,\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: ':reportId',\n loadComponent: () => import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then((c) => c.AXPReportViewerPageComponent),\n data: { reuse: true },\n },\n {\n path: '',\n loadComponent: () => import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then((c) => c.AXPReportViewerPageComponent),\n data: { reuse: true },\n },\n ],\n },\n {\n path: `:app/${RootConfig.module.route}/reports`,\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: '**',\n loadComponent: () => import('./features/report-runner/report-runner-root-page/report-runner-root-page.component').then((c) => c.AXMReportRunnerRootPageComponent),\n data: { reuse: true },\n },\n ],\n },\n ];\n return routes;\n}\nexport class AXMReportManagementModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, imports: [AXPDomainModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, providers: [\n // Module-specific providers (not part of manifest system)\n AXM_REPORT_DEFINITION_PROVIDER,\n AXM_REPORT_CATEGORY_PROVIDER,\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n provideEntity([RootConfig.entities.report.fullName, RootConfig.entities.category.fullName]),\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: ReportManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPReportManagementFeatureDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_REPORT_CATEGORY_PROVIDER,\n useClass: AXMSystemReportsCategoryProvider,\n multi: true,\n },\n {\n provide: AXP_REPORT_DEFINITION_PROVIDER,\n useClass: AXMSystemReportsDefinitionProvider,\n multi: true,\n },\n ], imports: [AXPDomainModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXPDomainModule,\n // Entity Modules\n ],\n exports: [],\n declarations: [],\n providers: [\n // Module-specific providers (not part of manifest system)\n AXM_REPORT_DEFINITION_PROVIDER,\n AXM_REPORT_CATEGORY_PROVIDER,\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n provideEntity([RootConfig.entities.report.fullName, RootConfig.entities.category.fullName]),\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: ReportManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPReportManagementFeatureDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_REPORT_CATEGORY_PROVIDER,\n useClass: AXMSystemReportsCategoryProvider,\n multi: true,\n },\n {\n provide: AXP_REPORT_DEFINITION_PROVIDER,\n useClass: AXMSystemReportsDefinitionProvider,\n multi: true,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hbmFnZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcmVwb3J0LW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsOEJBQThCLEdBQy9CLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFM0UsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsK0JBQStCLEVBQUUs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LEVBQUUsNEJBQTRCOzRCQUNyQyxRQUFRLEVBQUUsaUJBQWlCOzRCQUMzQixLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxRQUFRLEVBQUUsNENBQTRDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxRQUFRLEVBQUUsZ0NBQWdDOzRCQUMxQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFFRDs0QkFDRSxPQUFPLEVBQUUsOEJBQThCOzRCQUN2QyxRQUFRLEVBQUUsa0NBQWtDOzRCQUM1QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEF1dGhHdWFyZCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBfTU9EVUxFX01BTklGRVNUX1BST1ZJREVSLCBBWFBfRkVBVFVSRV9ERUZJTklUSU9OX1BST1ZJREVSIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUF9FTlRJVFlfREVGSU5JVElPTl9MT0FERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgUmVwb3J0TWFuYWdlbWVudE1hbmlmZXN0IH0gZnJvbSAnLi9tYW5pZmVzdCc7XG5pbXBvcnQgeyBBWFBEb21haW5Nb2R1bGUsIHByb3ZpZGVFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2RvbWFpbic7XG5pbXBvcnQgeyBBWFBSb290TGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVzLCBST1VURVMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4vY29uc3QnO1xuaW1wb3J0IHtcbiAgQVhNX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUixcbiAgQVhNX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSLFxufSBmcm9tICcuL2ZlYXR1cmVzL3JlcG9ydC1ydW5uZXIvcmVwb3J0cy5wcm92aWRlcic7XG5pbXBvcnQgeyBBWFBfTUVOVV9QUk9WSURFUiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUF9QRVJNSVNTSU9OX0RFRklOSVRJT05fUFJPVklERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuXG4vLyBFbnRpdHkgTW9kdWxlc1xuaW1wb3J0IHsgQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUiwgQVhQX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSIH0gZnJvbSAnLi9yZXBvcnRzJztcbmltcG9ydCB7IEFYTVN5c3RlbVJlcG9ydHNDYXRlZ29yeVByb3ZpZGVyLCBBWE1TeXN0ZW1SZXBvcnRzRGVmaW5pdGlvblByb3ZpZGVyIH0gZnJvbSAnLi9yZXBvcnQucHJvdmlkZXInO1xuaW1wb3J0IHsgQVhNUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciB9IGZyb20gJy4vcGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYTU1lbnVQcm92aWRlciB9IGZyb20gJy4vbWVudS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWE1FbnRpdHlQcm92aWRlciB9IGZyb20gJy4vZW50aXR5LnByb3ZpZGVyJztcbmltcG9ydCB7IEFYUFJlcG9ydE1hbmFnZW1lbnRGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyIH0gZnJvbSAnLi9mZWF0dXJlLWRlZmluaXRpb24ucHJvdmlkZXInO1xuXG5mdW5jdGlvbiByb3V0ZXNGYWNvcnkoKSB7XG4gIGxldCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAgICB7XG4gICAgICBwYXRoOiBgOmFwcC8ke1Jvb3RDb25maWcubW9kdWxlLnJvdXRlfS92aWV3ZXJgLFxuICAgICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gQVhQUm9vdExheW91dENvbXBvbmVudDtcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJzpyZXBvcnRJZCcsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgnLi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXItcGFnZS9yZXBvcnQtdmlld2VyLXBhZ2UuY29tcG9uZW50JykudGhlbihcbiAgICAgICAgICAgICAgKGMpID0+IGMuQVhQUmVwb3J0Vmlld2VyUGFnZUNvbXBvbmVudCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZGF0YTogeyByZXVzZTogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgnLi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXItcGFnZS9yZXBvcnQtdmlld2VyLXBhZ2UuY29tcG9uZW50JykudGhlbihcbiAgICAgICAgICAgICAgKGMpID0+IGMuQVhQUmVwb3J0Vmlld2VyUGFnZUNvbXBvbmVudCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZGF0YTogeyByZXVzZTogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHBhdGg6IGA6YXBwLyR7Um9vdENvbmZpZy5tb2R1bGUucm91dGV9L3JlcG9ydHNgLFxuICAgICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gQVhQUm9vdExheW91dENvbXBvbmVudDtcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJyoqJyxcbiAgICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KCcuL2ZlYXR1cmVzL3JlcG9ydC1ydW5uZXIvcmVwb3J0LXJ1bm5lci1yb290LXBhZ2UvcmVwb3J0LXJ1bm5lci1yb290LXBhZ2UuY29tcG9uZW50JykudGhlbihcbiAgICAgICAgICAgICAgKGMpID0+IGMuQVhNUmVwb3J0UnVubmVyUm9vdFBhZ2VDb21wb25lbnQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGRhdGE6IHsgcmV1c2U6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbiAgcmV0dXJuIHJvdXRlcztcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEFYUERvbWFpbk1vZHVsZSxcbiAgICAvLyBFbnRpdHkgTW9kdWxlc1xuICBdLFxuICBleHBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gTW9kdWxlLXNwZWNpZmljIHByb3ZpZGVycyAobm90IHBhcnQgb2YgbWFuaWZlc3Qgc3lzdGVtKVxuICAgIEFYTV9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUixcbiAgICBBWE1fUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFJPVVRFUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRmFjdG9yeTogcm91dGVzRmFjb3J5LFxuICAgIH0sXG4gICAgcHJvdmlkZUVudGl0eShbUm9vdENvbmZpZy5lbnRpdGllcy5yZXBvcnQuZnVsbE5hbWUsIFJvb3RDb25maWcuZW50aXRpZXMuY2F0ZWdvcnkuZnVsbE5hbWVdKSxcbiAgICAvLyBNb2R1bGUgTWFuaWZlc3QgUHJvdmlkZXJcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfTU9EVUxFX01BTklGRVNUX1BST1ZJREVSLFxuICAgICAgdXNlVmFsdWU6IFJlcG9ydE1hbmFnZW1lbnRNYW5pZmVzdCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgLy8gUHJvdmlkZXIgcmVmZXJlbmNlcyAobm93IHVzaW5nIHRva2VucylcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfUEVSTUlTU0lPTl9ERUZJTklUSU9OX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEFYTVBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9NRU5VX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEFYTU1lbnVQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1FbnRpdHlQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0ZFQVRVUkVfREVGSU5JVElPTl9QUk9WSURFUixcbiAgICAgIHVzZUNsYXNzOiBBWFBSZXBvcnRNYW5hZ2VtZW50RmVhdHVyZURlZmluaXRpb25Qcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1TeXN0ZW1SZXBvcnRzQ2F0ZWdvcnlQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVIsXG4gICAgICB1c2VDbGFzczogQVhNU3lzdGVtUmVwb3J0c0RlZmluaXRpb25Qcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVJlcG9ydE1hbmFnZW1lbnRNb2R1bGUgeyB9XG4iXX0=","import { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPPageStatus, AXPWidgetRegistryService } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { AXPReportDefinitionService, } from '../../reports';\nimport { convertContextDataToFilterClause } from '../../reports/report-mapper';\nexport const AXPReportViewerViewModel = signalStore(withState(() => ({\n reportDefinition: null,\n currentLayout: null,\n filterContext: {},\n categoriesPath: [],\n allowFetchData: false,\n shouldExecuteReport: false,\n lastAppliedFilterContext: null, // Track last applied filters\n hasBeenExecuted: false, // Track if report has been executed at least once\n status: AXPPageStatus.Idle,\n error: null,\n})), withComputed((store, widgetRegistryService = inject(AXPWidgetRegistryService)) => ({\n //#region ---- Layout Management ----\n availableLayouts: computed(() => {\n const report = store.reportDefinition();\n if (!report?.layouts)\n return [];\n return report.layouts.map((layout) => ({\n id: layout.id,\n title: layout.title,\n icon: layout.icon,\n type: layout.layout.type,\n }));\n }),\n defaultLayout: computed(() => {\n const report = store.reportDefinition();\n if (!report?.layouts?.length)\n return null;\n // Find layout marked as default, or use first layout\n return report.layouts.find((l) => l.isDefault) || report.layouts[0];\n }),\n activeLayoutId: computed(() => store.currentLayout()?.id || null),\n layoutType: computed(() => store.currentLayout()?.layout?.type || null),\n //#endregion\n //#region ---- Layout-Specific Configurations ----\n tableLayoutConfig: computed(() => {\n const layout = store.currentLayout();\n return layout?.layout?.type === 'table' ? layout.layout : null;\n }),\n chartLayoutConfig: computed(() => {\n const layout = store.currentLayout();\n return layout?.layout?.type === 'chart' ? layout.layout : null;\n }),\n //#endregion\n //#region ---- State Indicators ----\n isLoading: computed(() => store.status() === AXPPageStatus.Processing),\n isExecuting: computed(() => store.status() === AXPPageStatus.Submitting),\n hasError: computed(() => store.error() !== null),\n canExecute: computed(() => {\n // Always allow execution if there's an error (to enable retry)\n if (store.error() !== null) {\n return true;\n }\n // Allow execution if there are unapplied filters\n const currentContext = store.filterContext();\n const lastApplied = store.lastAppliedFilterContext();\n const hasBeenExecuted = store.hasBeenExecuted();\n if (hasBeenExecuted && JSON.stringify(currentContext) !== JSON.stringify(lastApplied)) {\n return true;\n }\n // Allow execution if report hasn't been executed yet\n if (!hasBeenExecuted) {\n return true;\n }\n // Otherwise, don't allow execution\n return false;\n }),\n hasMultipleLayouts: computed(() => {\n const report = store.reportDefinition();\n return (report?.layouts?.length ?? 0) > 1;\n }),\n title: computed(() => store.reportDefinition()?.title ?? 'Report Viewer'),\n description: computed(() => store.reportDefinition()?.description ?? null),\n //#endregion\n //#region ---- Form Configuration ----\n formDefinition: computed(() => {\n const report = store.reportDefinition();\n if (!report || !report.parameterGroups) {\n return { groups: [] };\n }\n const formDefinition = {\n groups: report.parameterGroups.map((group) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n parameters: group.parameters.map(function (param) {\n const widget = widgetRegistryService.resolve(param.widget.type ?? '');\n const widgetType = widget?.defaultFilterWidgetName ?? (param.widget.type ?? '');\n return {\n path: param.path,\n title: param.title,\n description: param.description,\n badge: `{{filter.getTitle(context.eval(\"${param.path}.operation.type\"))}}`,\n widget: {\n path: param.path,\n type: widgetType,\n options: {\n ...param.widget.options,\n clearButton: true,\n hasClearButton: true,\n },\n }\n };\n }),\n })),\n };\n return formDefinition;\n }),\n //#endregion\n //#region ---- Layout Type Detection ----\n isTableLayout: computed(() => store.currentLayout()?.layout?.type === 'table'),\n isChartLayout: computed(() => store.currentLayout()?.layout?.type === 'chart'),\n //#endregion\n //#region ---- Filter States ----\n hasUnappliedFilters: computed(() => {\n const currentContext = store.filterContext();\n const lastApplied = store.lastAppliedFilterContext();\n const hasBeenExecuted = store.hasBeenExecuted();\n // If report has never been executed, don't show unapplied filters warning\n if (!hasBeenExecuted) {\n return false;\n }\n // If no filters have been applied yet, return true\n if (lastApplied === null) {\n return true;\n }\n // Check if current filters are different from last applied filters\n const currentKeys = Object.keys(currentContext);\n const lastKeys = Object.keys(lastApplied);\n if (currentKeys.length !== lastKeys.length) {\n return true;\n }\n // Check if any values are different\n for (const key of currentKeys) {\n if (currentContext[key] !== lastApplied[key]) {\n return true;\n }\n }\n return false;\n }),\n //#endregion\n //#region ---- Action States ----\n canSwitchLayout: computed(() => (store.reportDefinition()?.layouts?.length ?? 0) > 1 && store.status() !== AXPPageStatus.Submitting),\n canSelectRows: computed(() => {\n const layout = store.currentLayout();\n return (layout?.layout?.type === 'table' &&\n layout.layout.options?.selectable?.mode &&\n layout.layout.options?.selectable?.mode !== 'none');\n }),\n //#endregion\n})), withMethods((store, reportDefinitionService = inject(AXPReportDefinitionService), commandService = inject(AXPCommandService)) => {\n const executeReport = async () => {\n try {\n const report = store.reportDefinition();\n const layout = store.currentLayout();\n if (!report || !layout) {\n patchState(store, {\n error: 'Report or layout not found',\n });\n return;\n }\n patchState(store, {\n status: AXPPageStatus.Submitting,\n error: null,\n allowFetchData: true,\n shouldExecuteReport: true,\n lastAppliedFilterContext: { ...store.filterContext() }, // Mark current filters as applied\n hasBeenExecuted: true, // Mark that report has been executed at least once\n });\n patchState(store, {\n status: AXPPageStatus.Submitted,\n error: null,\n });\n }\n catch (error) {\n patchState(store, {\n status: AXPPageStatus.Error,\n error: error instanceof Error ? error.message : 'An unexpected error occurred while executing the report',\n });\n }\n };\n const fetchData = async (parameters = {}) => {\n const report = store.reportDefinition();\n const layout = store.currentLayout();\n if (!report || !layout) {\n return null;\n }\n patchState(store, {\n status: AXPPageStatus.Processing,\n error: null,\n });\n try {\n // Create execution context - ensure dataSource is provided\n const dataSource = layout.dataSource || {\n type: 'query',\n name: 'getEmployeeList',\n };\n // Convert filter context to AXPFilterClause format\n const filterContext = {\n ...store.filterContext(),\n ...parameters,\n };\n const filterClause = convertContextDataToFilterClause(filterContext);\n // Preserve pagination parameters (skip/take) that are not part of the filter context structure\n // used by convertContextDataToFilterClause (it only converts { operation, value } items).\n const paginationSkip = filterContext.skip;\n const paginationTake = filterContext.take;\n if (paginationSkip !== undefined) {\n filterClause.skip = paginationSkip;\n }\n if (paginationTake !== undefined) {\n filterClause.take = paginationTake;\n }\n const context = {\n reportId: report.id,\n layoutId: layout.id,\n dataSource: dataSource,\n filters: filterClause,\n };\n const executionResult = await commandService.execute('ReportManagement.Report:Execute', context);\n if (!executionResult?.success || !executionResult.data) {\n patchState(store, {\n error: executionResult?.message?.text || 'Failed to execute report',\n });\n return null;\n }\n return executionResult.data;\n }\n catch (error) {\n patchState(store, {\n error: 'Failed to execute report',\n });\n console.error('Error executing report:', error);\n return null;\n }\n finally {\n patchState(store, {\n status: AXPPageStatus.Idle,\n });\n }\n };\n return {\n //#region ---- Report Loading ----\n async loadReport(reportId) {\n patchState(store, {\n status: AXPPageStatus.Processing,\n error: null,\n });\n try {\n const report = await reportDefinitionService.getReportById(reportId);\n if (report) {\n // Configure parameter widgets with proper paths\n report.parameterGroups.forEach((group) => {\n group.parameters.forEach((param) => {\n param.widget.path = param.path;\n });\n });\n // Load categories path for breadcrumbs\n const categoriesPath = await reportDefinitionService.getCategoriesPathByReportId(reportId);\n // Set default layout\n const defaultLayout = report.layouts.find((l) => l.isDefault) || report.layouts[0];\n patchState(store, {\n reportDefinition: report,\n currentLayout: defaultLayout,\n categoriesPath: categoriesPath || [],\n filterContext: {}, // Reset context when loading new report\n allowFetchData: false,\n hasBeenExecuted: false, // Reset execution state for new report\n });\n }\n }\n catch (error) {\n patchState(store, {\n error: 'Failed to load report definition',\n });\n console.error('Error loading report:', error);\n }\n finally {\n patchState(store, {\n status: AXPPageStatus.Idle,\n });\n }\n },\n //#endregion\n //#region ---- Layout Management ----\n switchLayout(layoutId) {\n const report = store.reportDefinition();\n if (!report)\n return;\n const layout = report.layouts.find((l) => l.id === layoutId);\n if (layout) {\n patchState(store, {\n currentLayout: layout,\n });\n }\n },\n //#endregion\n //#region ---- Data Execution ----\n executeReport,\n fetchData,\n //#endregion\n //#region ---- Filter Management ----\n updateFilterContext(context) {\n patchState(store, {\n filterContext: { ...store.filterContext(), ...context },\n shouldExecuteReport: false, // Reset execution flag when filters change\n });\n },\n clearFilters() {\n patchState(store, {\n allowFetchData: false,\n shouldExecuteReport: false,\n filterContext: {},\n lastAppliedFilterContext: null, // Reset applied filters when clearing\n hasBeenExecuted: false, // Reset execution state when clearing filters\n });\n },\n resetFilters() {\n patchState(store, {\n allowFetchData: false,\n });\n },\n //#endregion\n //#region ---- Export Management ----\n async exportReport(format) {\n const layout = store.currentLayout();\n if (!layout?.export) {\n console.warn('Export not configured for current layout');\n return;\n }\n try {\n // Export logic would go here\n // This would typically call a different command for export\n console.log(`Exporting report in ${format} format`);\n }\n catch (error) {\n console.error('Error exporting report:', error);\n }\n },\n //#endregion\n //#region ---- Utility Methods ----\n refresh() {\n return executeReport();\n },\n clearError() {\n patchState(store, {\n error: null,\n });\n },\n clearExecutionState() {\n patchState(store, {\n hasBeenExecuted: false,\n allowFetchData: false,\n shouldExecuteReport: false,\n });\n },\n cancel() {\n patchState(store, {\n status: AXPPageStatus.Idle,\n hasBeenExecuted: false,\n error: null,\n });\n //TODO: Cancel the report execution\n },\n reset() {\n patchState(store, {\n reportDefinition: null,\n currentLayout: null,\n filterContext: {},\n allowFetchData: false,\n shouldExecuteReport: false,\n lastAppliedFilterContext: null,\n hasBeenExecuted: false,\n categoriesPath: [],\n status: AXPPageStatus.Idle,\n error: null,\n });\n },\n //#endregion\n };\n}), withHooks((store, translationService = inject(AXTranslationService), localeService = inject(AXLocaleService)) => ({\n async onInit() {\n // Subscribe to language and locale changes\n translationService.langChanges$.subscribe(() => {\n // Handle language change if needed\n });\n localeService.profileChanged$.subscribe(() => {\n // Handle locale change if needed\n });\n },\n onDestroy() {\n // Cleanup if needed\n },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXdlci52aWV3bW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXIudmlld21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFNTCwwQkFBMEIsR0FLM0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0UsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUNqRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNmLGdCQUFnQixFQUFFLElBQWtDO0lBQ3BELGFBQWEsRUFBRSxJQUF3QztJQUN2RCxhQUFhLEVBQUUsRUFBb0I7SUFDbkMsY0FBYyxFQUFFLEVBQVc7SUFDM0IsY0FBYyxFQUFFLEtBQUs7SUFDckIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQix3QkFBd0IsRUFBRSxJQUE2QixFQUFFLDZCQUE2QjtJQUN0RixlQUFlLEVBQUUsS0FBSyxFQUFF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QUFFLEVBQUU7Z0JBQ2xCLE1BQU0sRUFBRSxhQUFhLENBQUMsSUFBSTtnQkFDMUIsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsWUFBWTtLQUNiLENBQUM7QUFDSixDQUFDLENBQ0YsRUFFRCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsYUFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoSCxLQUFLLENBQUMsTUFBTTtRQUNWLDJDQUEyQztRQUMzQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QyxtQ0FBbUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFSCxhQUFhLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0MsaUNBQWlDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFNBQVM7UUFDUCxvQkFBb0I7SUFDdEIsQ0FBQztDQUNGLENBQUMsQ0FBQyxDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWExvY2FsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvbG9jYWxlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUENvbnRleHREYXRhIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUER5bmFtaWNGb3JtRGVmaW5pdGlvbiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQVhQUGFnZVN0YXR1cywgQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgQVhQQ29tbWFuZFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGF0Y2hTdGF0ZSwgc2lnbmFsU3RvcmUsIHdpdGhDb21wdXRlZCwgd2l0aEhvb2tzLCB3aXRoTWV0aG9kcywgd2l0aFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQge1xuICBBWFBFeGVjdXRpb25SZXBvcnRDb21tYW5kUmVzdWx0LFxuICBBWFBMYXlvdXRFeGVjdXRpb25Db250ZXh0LFxuICBBWFBMYXlvdXRTd2l0Y2hlck9wdGlvbixcbiAgQVhQUmVwb3J0Q2hhcnRMYXlvdXQsXG4gIEFYUFJlcG9ydERlZmluaXRpb24sXG4gIEFYUFJlcG9ydERlZmluaXRpb25TZXJ2aWNlLFxuICBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uLFxuICBBWFBSZXBvcnRQYXJhbWV0ZXIsXG4gIEFYUFJlcG9ydFBhcmFtZXRlckdyb3VwLFxuICBBWFBSZXBvcnRUYWJsZUxheW91dCxcbn0gZnJvbSAnLi4vLi4vcmVwb3J0cyc7XG5pbXBvcnQgeyBjb252ZXJ0Q29udGV4dERhdGFUb0ZpbHRlckNsYXVzZSB9IGZyb20gJy4uLy4uL3JlcG9ydHMvcmVwb3J0LW1hcHBlcic7XG5cbmV4cG9ydCBjb25zdCBBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwgPSBzaWduYWxTdG9yZShcbiAgd2l0aFN0YXRlKCgpID0+ICh7XG4gICAgcmVwb3J0RGVmaW5pdGlvbjogbnVsbCBhcyBBWFBSZXBvcnREZWZpbml0aW9uIHwgbnVsbCxcbiAgICBjdXJyZW50TGF5b3V0OiBudWxsIGFzIEFYUFJlcG9ydExheW91dERlZmluaXRpb24gfCBudWxsLFxuICAgIGZpbHRlckNvbnRleHQ6IHt9IGFzIEFYUENvbnRleHREYXRhLFxuICAgIGNhdGVnb3JpZXNQYXRoOiBbXSBhcyBhbnlbXSxcbiAgICBhbGxvd0ZldGNoRGF0YTogZmFsc2UsXG4gICAgc2hvdWxkRXhlY3V0ZVJlcG9ydDogZmFsc2UsXG4gICAgbGFzdEFwcGxpZWRGaWx0ZXJDb250ZXh0OiBudWxsIGFzIEFYUENvbnRleHREYXRhIHwgbnVsbCwgLy8gVHJhY2sgbGFzdCBhcHBsaWVkIGZpbHRlcnNcbiAgICBoYXNCZWVuRXhlY3V0ZWQ6IGZhbHNlLCAvLyBUcmFjayBpZiByZXBvcnQgaGFzIGJlZW4gZXhlY3V0ZWQgYXQgbGVhc3Qgb25jZVxuICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5JZGxlLFxuICAgIGVycm9yOiBudWxsIGFzIHN0cmluZyB8IG51bGwsXG4gIH0pKSxcblxuICB3aXRoQ29tcHV0ZWQoKHN0b3JlLCB3aWRnZXRSZWdpc3RyeVNlcnZpY2UgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKSkgPT4gKHtcbiAgICAvLyNyZWdpb24gLS0tLSAgIExheW91dCBNYW5hZ2VtZW50ICAgLS0tLVxuXG4gICAgYXZhaWxhYmxlTGF5b3V0czogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgaWYgKCFyZXBvcnQ/LmxheW91dHMpIHJldHVybiBbXTtcblxuICAgICAgcmV0dXJuIHJlcG9ydC5sYXlvdXRzLm1hcChcbiAgICAgICAgKGxheW91dDogQVhQUmVwb3J0TGF5b3V0RGVmaW5pdGlvbikgPT5cbiAgICAgICAgICAoe1xuICAgICAgICAgICAgaWQ6IGxheW91dC5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBsYXlvdXQudGl0bGUsXG4gICAgICAgICAgICBpY29uOiBsYXlvdXQuaWNvbixcbiAgICAgICAgICAgIHR5cGU6IGxheW91dC5sYXlvdXQudHlwZSxcbiAgICAgICAgICB9KSBhcyBBWFBMYXlvdXRTd2l0Y2hlck9wdGlvbixcbiAgICAgICk7XG4gICAgfSksXG5cbiAgICBkZWZhdWx0TGF5b3V0OiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCByZXBvcnQgPSBzdG9yZS5yZXBvcnREZWZpbml0aW9uKCk7XG4gICAgICBpZiAoIXJlcG9ydD8ubGF5b3V0cz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICAgICAgLy8gRmluZCBsYXlvdXQgbWFya2VkIGFzIGRlZmF1bHQsIG9yIHVzZSBmaXJzdCBsYXlvdXRcbiAgICAgIHJldHVybiByZXBvcnQubGF5b3V0cy5maW5kKChsOiBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uKSA9PiBsLmlzRGVmYXVsdCkgfHwgcmVwb3J0LmxheW91dHNbMF07XG4gICAgfSksXG5cbiAgICBhY3RpdmVMYXlvdXRJZDogY29tcHV0ZWQoKCkgPT4gc3RvcmUuY3VycmVudExheW91dCgpPy5pZCB8fCBudWxsKSxcblxuICAgIGxheW91dFR5cGU6IGNvbXB1dGVkKCgpID0+IHN0b3JlLmN1cnJlbnRMYXlvdXQoKT8ubGF5b3V0Py50eXBlIHx8IG51bGwpLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIExheW91dC1TcGVjaWZpYyBDb25maWd1cmF0aW9ucyAgIC0tLS1cblxuICAgIHRhYmxlTGF5b3V0Q29uZmlnOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICByZXR1cm4gbGF5b3V0Py5sYXlvdXQ/LnR5cGUgPT09ICd0YWJsZScgPyAobGF5b3V0LmxheW91dCBhcyBBWFBSZXBvcnRUYWJsZUxheW91dCkgOiBudWxsO1xuICAgIH0pLFxuXG4gICAgY2hhcnRMYXlvdXRDb25maWc6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGxheW91dCA9IHN0b3JlLmN1cnJlbnRMYXlvdXQoKTtcbiAgICAgIHJldHVybiBsYXlvdXQ/LmxheW91dD8udHlwZSA9PT0gJ2NoYXJ0JyA/IChsYXlvdXQubGF5b3V0IGFzIEFYUFJlcG9ydENoYXJ0TGF5b3V0KSA6IG51bGw7XG4gICAgfSksXG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgU3RhdGUgSW5kaWNhdG9ycyAgIC0tLS1cblxuICAgIGlzTG9hZGluZzogY29tcHV0ZWQoKCkgPT4gc3RvcmUuc3RhdHVzKCkgPT09IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZyksXG4gICAgaXNFeGVjdXRpbmc6IGNvbXB1dGVkKCgpID0+IHN0b3JlLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLlN1Ym1pdHRpbmcpLFxuICAgIGhhc0Vycm9yOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5lcnJvcigpICE9PSBudWxsKSxcbiAgICBjYW5FeGVjdXRlOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAvLyBBbHdheXMgYWxsb3cgZXhlY3V0aW9uIGlmIHRoZXJlJ3MgYW4gZXJyb3IgKHRvIGVuYWJsZSByZXRyeSlcbiAgICAgIGlmIChzdG9yZS5lcnJvcigpICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBbGxvdyBleGVjdXRpb24gaWYgdGhlcmUgYXJlIHVuYXBwbGllZCBmaWx0ZXJzXG4gICAgICBjb25zdCBjdXJyZW50Q29udGV4dCA9IHN0b3JlLmZpbHRlckNvbnRleHQoKTtcbiAgICAgIGNvbnN0IGxhc3RBcHBsaWVkID0gc3RvcmUubGFzdEFwcGxpZWRGaWx0ZXJDb250ZXh0KCk7XG4gICAgICBjb25zdCBoYXNCZWVuRXhlY3V0ZWQgPSBzdG9yZS5oYXNCZWVuRXhlY3V0ZWQoKTtcblxuICAgICAgaWYgKGhhc0JlZW5FeGVjdXRlZCAmJiBKU09OLnN0cmluZ2lmeShjdXJyZW50Q29udGV4dCkgIT09IEpTT04uc3RyaW5naWZ5KGxhc3RBcHBsaWVkKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQWxsb3cgZXhlY3V0aW9uIGlmIHJlcG9ydCBoYXNuJ3QgYmVlbiBleGVjdXRlZCB5ZXRcbiAgICAgIGlmICghaGFzQmVlbkV4ZWN1dGVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBPdGhlcndpc2UsIGRvbid0IGFsbG93IGV4ZWN1dGlvblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pLFxuICAgIGhhc011bHRpcGxlTGF5b3V0czogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgcmV0dXJuIChyZXBvcnQ/LmxheW91dHM/Lmxlbmd0aCA/PyAwKSA+IDE7XG4gICAgfSksXG5cbiAgICB0aXRsZTogY29tcHV0ZWQoKCkgPT4gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpPy50aXRsZSA/PyAnUmVwb3J0IFZpZXdlcicpLFxuICAgIGRlc2NyaXB0aW9uOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5yZXBvcnREZWZpbml0aW9uKCk/LmRlc2NyaXB0aW9uID8/IG51bGwpLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEZvcm0gQ29uZmlndXJhdGlvbiAgIC0tLS1cblxuICAgIGZvcm1EZWZpbml0aW9uOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCByZXBvcnQgPSBzdG9yZS5yZXBvcnREZWZpbml0aW9uKCk7XG4gICAgICBpZiAoIXJlcG9ydCB8fCAhcmVwb3J0LnBhcmFtZXRlckdyb3Vwcykge1xuICAgICAgICByZXR1cm4geyBncm91cHM6IFtdIH0gYXMgQVhQRHluYW1pY0Zvcm1EZWZpbml0aW9uO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgZ3JvdXBzOiByZXBvcnQucGFyYW1ldGVyR3JvdXBzLm1hcCgoZ3JvdXA6IEFYUFJlcG9ydFBhcmFtZXRlckdyb3VwKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGdyb3VwLm5hbWUsXG4gICAgICAgICAgdGl0bGU6IGdyb3VwLnRpdGxlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBncm91cC5kZXNjcmlwdGlvbixcbiAgICAgICAgICBwYXJhbWV0ZXJzOiBncm91cC5wYXJhbWV0ZXJzLm1hcChmdW5jdGlvbihwYXJhbTogQVhQUmVwb3J0UGFyYW1ldGVyKSB7XG4gICAgICAgICAgICBjb25zdCB3aWRnZXQgPSB3aWRnZXRSZWdpc3RyeVNlcnZpY2UucmVzb2x2ZShwYXJhbS53aWRnZXQudHlwZSA/PyAnJyk7XG4gICAgICAgICAgICBjb25zdCB3aWRnZXRUeXBlID0gd2lkZ2V0Py5kZWZhdWx0RmlsdGVyV2lkZ2V0TmFtZSA/PyAocGFyYW0ud2lkZ2V0LnR5cGUgPz8gJycpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcGF0aDogcGFyYW0ucGF0aCxcbiAgICAgICAgICAgICAgdGl0bGU6IHBhcmFtLnRpdGxlLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcGFyYW0uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgIGJhZGdlOiBge3tmaWx0ZXIuZ2V0VGl0bGUoY29udGV4dC5ldmFsKFwiJHtwYXJhbS5wYXRofS5vcGVyYXRpb24udHlwZVwiKSl9fWAsXG4gICAgICAgICAgICAgIHdpZGdldCA6IHtcbiAgICAgICAgICAgICAgICBwYXRoOiBwYXJhbS5wYXRoLFxuICAgICAgICAgICAgICAgIHR5cGU6IHdpZGdldFR5cGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgLi4ucGFyYW0ud2lkZ2V0Lm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICBjbGVhckJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGhhc0NsZWFyQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKSxcbiAgICAgIH0gYXMgQVhQRHluYW1pY0Zvcm1EZWZpbml0aW9uO1xuICAgICAgcmV0dXJuIGZvcm1EZWZpbml0aW9uO1xuICAgIH0pLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIExheW91dCBUeXBlIERldGVjdGlvbiAgIC0tLS1cblxuICAgIGlzVGFibGVMYXlvdXQ6IGNvbXB1dGVkKCgpID0+IHN0b3JlLmN1cnJlbnRMYXlvdXQoKT8ubGF5b3V0Py50eXBlID09PSAndGFibGUnKSxcbiAgICBpc0NoYXJ0TGF5b3V0OiBjb21wdXRlZCgoKSA9PiBzdG9yZS5jdXJyZW50TGF5b3V0KCk/LmxheW91dD8udHlwZSA9PT0gJ2NoYXJ0JyksXG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgRmlsdGVyIFN0YXRlcyAgIC0tLS1cblxuICAgIGhhc1VuYXBwbGllZEZpbHRlcnM6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0ID0gc3RvcmUuZmlsdGVyQ29udGV4dCgpO1xuICAgICAgY29uc3QgbGFzdEFwcGxpZWQgPSBzdG9yZS5sYXN0QXBwbGllZEZpbHRlckNvbnRleHQoKTtcbiAgICAgIGNvbnN0IGhhc0JlZW5FeGVjdXRlZCA9IHN0b3JlLmhhc0JlZW5FeGVjdXRlZCgpO1xuXG4gICAgICAvLyBJZiByZXBvcnQgaGFzIG5ldmVyIGJlZW4gZXhlY3V0ZWQsIGRvbid0IHNob3cgdW5hcHBsaWVkIGZpbHRlcnMgd2FybmluZ1xuICAgICAgaWYgKCFoYXNCZWVuRXhlY3V0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBubyBmaWx0ZXJzIGhhdmUgYmVlbiBhcHBsaWVkIHlldCwgcmV0dXJuIHRydWVcbiAgICAgIGlmIChsYXN0QXBwbGllZCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgY3VycmVudCBmaWx0ZXJzIGFyZSBkaWZmZXJlbnQgZnJvbSBsYXN0IGFwcGxpZWQgZmlsdGVyc1xuICAgICAgY29uc3QgY3VycmVudEtleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50Q29udGV4dCk7XG4gICAgICBjb25zdCBsYXN0S2V5cyA9IE9iamVjdC5rZXlzKGxhc3RBcHBsaWVkKTtcblxuICAgICAgaWYgKGN1cnJlbnRLZXlzLmxlbmd0aCAhPT0gbGFzdEtleXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBhbnkgdmFsdWVzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGN1cnJlbnRLZXlzKSB7XG4gICAgICAgIGlmIChjdXJyZW50Q29udGV4dFtrZXldICE9PSBsYXN0QXBwbGllZFtrZXldKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEFjdGlvbiBTdGF0ZXMgICAtLS0tXG5cbiAgICBjYW5Td2l0Y2hMYXlvdXQ6IGNvbXB1dGVkKFxuICAgICAgKCkgPT4gKHN0b3JlLnJlcG9ydERlZmluaXRpb24oKT8ubGF5b3V0cz8ubGVuZ3RoID8/IDApID4gMSAmJiBzdG9yZS5zdGF0dXMoKSAhPT0gQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nLFxuICAgICksXG5cbiAgICBjYW5TZWxlY3RSb3dzOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBsYXlvdXQ/LmxheW91dD8udHlwZSA9PT0gJ3RhYmxlJyAmJlxuICAgICAgICBsYXlvdXQubGF5b3V0Lm9wdGlvbnM/LnNlbGVjdGFibGU/Lm1vZGUgJiZcbiAgICAgICAgbGF5b3V0LmxheW91dC5vcHRpb25zPy5zZWxlY3RhYmxlPy5tb2RlICE9PSAnbm9uZSdcbiAgICAgICk7XG4gICAgfSksXG5cbiAgICAvLyNlbmRyZWdpb25cbiAgfSkpLFxuXG4gIHdpdGhNZXRob2RzKFxuICAgIChcbiAgICAgIHN0b3JlLFxuICAgICAgcmVwb3J0RGVmaW5pdGlvblNlcnZpY2U6IEFYUFJlcG9ydERlZmluaXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYUFJlcG9ydERlZmluaXRpb25TZXJ2aWNlKSxcbiAgICAgIGNvbW1hbmRTZXJ2aWNlOiBBWFBDb21tYW5kU2VydmljZSA9IGluamVjdChBWFBDb21tYW5kU2VydmljZSksXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRlUmVwb3J0ID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICAgICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICAgICAgaWYgKCFyZXBvcnQgfHwgIWxheW91dCkge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICBlcnJvcjogJ1JlcG9ydCBvciBsYXlvdXQgbm90IGZvdW5kJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgICBhbGxvd0ZldGNoRGF0YTogdHJ1ZSxcbiAgICAgICAgICAgIHNob3VsZEV4ZWN1dGVSZXBvcnQ6IHRydWUsXG4gICAgICAgICAgICBsYXN0QXBwbGllZEZpbHRlckNvbnRleHQ6IHsgLi4uc3RvcmUuZmlsdGVyQ29udGV4dCgpIH0sIC8vIE1hcmsgY3VycmVudCBmaWx0ZXJzIGFzIGFwcGxpZWRcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogdHJ1ZSwgLy8gTWFyayB0aGF0IHJlcG9ydCBoYXMgYmVlbiBleGVjdXRlZCBhdCBsZWFzdCBvbmNlXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuU3VibWl0dGVkLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLkVycm9yLFxuICAgICAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQgd2hpbGUgZXhlY3V0aW5nIHRoZSByZXBvcnQnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKHBhcmFtZXRlcnM6IEFYUENvbnRleHREYXRhID0ge30pOiBQcm9taXNlPEFYUEV4ZWN1dGlvblJlcG9ydENvbW1hbmRSZXN1bHQgfCBudWxsPiA9PiB7XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICAgICAgY29uc3QgbGF5b3V0ID0gc3RvcmUuY3VycmVudExheW91dCgpO1xuICAgICAgICBpZiAoIXJlcG9ydCB8fCAhbGF5b3V0KSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLlByb2Nlc3NpbmcsXG4gICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gQ3JlYXRlIGV4ZWN1dGlvbiBjb250ZXh0IC0gZW5zdXJlIGRhdGFTb3VyY2UgaXMgcHJvdmlkZWRcbiAgICAgICAgICBjb25zdCBkYXRhU291cmNlID0gbGF5b3V0LmRhdGFTb3VyY2UgfHwge1xuICAgICAgICAgICAgdHlwZTogJ3F1ZXJ5JyBhcyBjb25zdCxcbiAgICAgICAgICAgIG5hbWU6ICdnZXRFbXBsb3llZUxpc3QnLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICAvLyBDb252ZXJ0IGZpbHRlciBjb250ZXh0IHRvIEFYUEZpbHRlckNsYXVzZSBmb3JtYXRcbiAgICAgICAgICBjb25zdCBmaWx0ZXJDb250ZXh0ID0ge1xuICAgICAgICAgICAgLi4uc3RvcmUuZmlsdGVyQ29udGV4dCgpLFxuICAgICAgICAgICAgLi4ucGFyYW1ldGVycyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGZpbHRlckNsYXVzZSA9IGNvbnZlcnRDb250ZXh0RGF0YVRvRmlsdGVyQ2xhdXNlKGZpbHRlckNvbnRleHQpO1xuXG4gICAgICAgICAgLy8gUHJlc2VydmUgcGFnaW5hdGlvbiBwYXJhbWV0ZXJzIChza2lwL3Rha2UpIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBmaWx0ZXIgY29udGV4dCBzdHJ1Y3R1cmVcbiAgICAgICAgICAvLyB1c2VkIGJ5IGNvbnZlcnRDb250ZXh0RGF0YVRvRmlsdGVyQ2xhdXNlIChpdCBvbmx5IGNvbnZlcnRzIHsgb3BlcmF0aW9uLCB2YWx1ZSB9IGl0ZW1zKS5cbiAgICAgICAgICBjb25zdCBwYWdpbmF0aW9uU2tpcCA9IChmaWx0ZXJDb250ZXh0IGFzIGFueSkuc2tpcDtcbiAgICAgICAgICBjb25zdCBwYWdpbmF0aW9uVGFrZSA9IChmaWx0ZXJDb250ZXh0IGFzIGFueSkudGFrZTtcbiAgICAgICAgICBpZiAocGFnaW5hdGlvblNraXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgKGZpbHRlckNsYXVzZSBhcyBhbnkpLnNraXAgPSBwYWdpbmF0aW9uU2tpcDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhZ2luYXRpb25UYWtlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIChmaWx0ZXJDbGF1c2UgYXMgYW55KS50YWtlID0gcGFnaW5hdGlvblRha2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29udGV4dDogQVhQTGF5b3V0RXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgICAgIHJlcG9ydElkOiByZXBvcnQuaWQsXG4gICAgICAgICAgICBsYXlvdXRJZDogbGF5b3V0LmlkLFxuICAgICAgICAgICAgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgIGZpbHRlcnM6IGZpbHRlckNsYXVzZSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgZXhlY3V0aW9uUmVzdWx0ID0gYXdhaXQgY29tbWFuZFNlcnZpY2UuZXhlY3V0ZSgnUmVwb3J0TWFuYWdlbWVudC5SZXBvcnQ6RXhlY3V0ZScsIGNvbnRleHQpO1xuICAgICAgICAgIGlmICghZXhlY3V0aW9uUmVzdWx0Py5zdWNjZXNzIHx8ICFleGVjdXRpb25SZXN1bHQuZGF0YSkge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICBlcnJvcjogZXhlY3V0aW9uUmVzdWx0Py5tZXNzYWdlPy50ZXh0IHx8ICdGYWlsZWQgdG8gZXhlY3V0ZSByZXBvcnQnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGV4ZWN1dGlvblJlc3VsdC5kYXRhO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIGVycm9yOiAnRmFpbGVkIHRvIGV4ZWN1dGUgcmVwb3J0JyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBleGVjdXRpbmcgcmVwb3J0OicsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuSWRsZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBSZXBvcnQgTG9hZGluZyAgIC0tLS1cblxuICAgICAgICBhc3luYyBsb2FkUmVwb3J0KHJlcG9ydElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZyxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IGF3YWl0IHJlcG9ydERlZmluaXRpb25TZXJ2aWNlLmdldFJlcG9ydEJ5SWQocmVwb3J0SWQpO1xuICAgICAgICAgICAgaWYgKHJlcG9ydCkge1xuICAgICAgICAgICAgICAvLyBDb25maWd1cmUgcGFyYW1ldGVyIHdpZGdldHMgd2l0aCBwcm9wZXIgcGF0aHNcbiAgICAgICAgICAgICAgcmVwb3J0LnBhcmFtZXRlckdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGdyb3VwLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHBhcmFtLndpZGdldC5wYXRoID0gcGFyYW0ucGF0aDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgLy8gTG9hZCBjYXRlZ29yaWVzIHBhdGggZm9yIGJyZWFkY3J1bWJzXG4gICAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXNQYXRoID0gYXdhaXQgcmVwb3J0RGVmaW5pdGlvblNlcnZpY2UuZ2V0Q2F0ZWdvcmllc1BhdGhCeVJlcG9ydElkKHJlcG9ydElkKTtcblxuICAgICAgICAgICAgICAvLyBTZXQgZGVmYXVsdCBsYXlvdXRcbiAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdExheW91dCA9XG4gICAgICAgICAgICAgICAgcmVwb3J0LmxheW91dHMuZmluZCgobDogQVhQUmVwb3J0TGF5b3V0RGVmaW5pdGlvbikgPT4gbC5pc0RlZmF1bHQpIHx8IHJlcG9ydC5sYXlvdXRzWzBdO1xuXG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICByZXBvcnREZWZpbml0aW9uOiByZXBvcnQsXG4gICAgICAgICAgICAgICAgY3VycmVudExheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzUGF0aDogY2F0ZWdvcmllc1BhdGggfHwgW10sXG4gICAgICAgICAgICAgICAgZmlsdGVyQ29udGV4dDoge30sIC8vIFJlc2V0IGNvbnRleHQgd2hlbiBsb2FkaW5nIG5ldyByZXBvcnRcbiAgICAgICAgICAgICAgICBhbGxvd0ZldGNoRGF0YTogZmFsc2UsXG4gICAgICAgICAgICAgICAgaGFzQmVlbkV4ZWN1dGVkOiBmYWxzZSwgLy8gUmVzZXQgZXhlY3V0aW9uIHN0YXRlIGZvciBuZXcgcmVwb3J0XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgIGVycm9yOiAnRmFpbGVkIHRvIGxvYWQgcmVwb3J0IGRlZmluaXRpb24nLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHJlcG9ydDonLCBlcnJvcik7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLklkbGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBMYXlvdXQgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgICAgICBzd2l0Y2hMYXlvdXQobGF5b3V0SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICAgICAgICBpZiAoIXJlcG9ydCkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgbGF5b3V0ID0gcmVwb3J0LmxheW91dHMuZmluZCgobDogQVhQUmVwb3J0TGF5b3V0RGVmaW5pdGlvbikgPT4gbC5pZCA9PT0gbGF5b3V0SWQpO1xuICAgICAgICAgIGlmIChsYXlvdXQpIHtcbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgY3VycmVudExheW91dDogbGF5b3V0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgRGF0YSBFeGVjdXRpb24gICAtLS0tXG5cbiAgICAgICAgZXhlY3V0ZVJlcG9ydCxcbiAgICAgICAgZmV0Y2hEYXRhLFxuXG4gICAgICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgRmlsdGVyIE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgICAgICAgdXBkYXRlRmlsdGVyQ29udGV4dChjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgZmlsdGVyQ29udGV4dDogeyAuLi5zdG9yZS5maWx0ZXJDb250ZXh0KCksIC4uLmNvbnRleHQgfSxcbiAgICAgICAgICAgIHNob3VsZEV4ZWN1dGVSZXBvcnQ6IGZhbHNlLCAvLyBSZXNldCBleGVjdXRpb24gZmxhZyB3aGVuIGZpbHRlcnMgY2hhbmdlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cblxuICAgICAgICBjbGVhckZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgYWxsb3dGZXRjaERhdGE6IGZhbHNlLFxuICAgICAgICAgICAgc2hvdWxkRXhlY3V0ZVJlcG9ydDogZmFsc2UsXG4gICAgICAgICAgICBmaWx0ZXJDb250ZXh0OiB7fSxcbiAgICAgICAgICAgIGxhc3RBcHBsaWVkRmlsdGVyQ29udGV4dDogbnVsbCwgLy8gUmVzZXQgYXBwbGllZCBmaWx0ZXJzIHdoZW4gY2xlYXJpbmdcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogZmFsc2UsIC8vIFJlc2V0IGV4ZWN1dGlvbiBzdGF0ZSB3aGVuIGNsZWFyaW5nIGZpbHRlcnNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICByZXNldEZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgYWxsb3dGZXRjaERhdGE6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgRXhwb3J0IE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgICAgICAgYXN5bmMgZXhwb3J0UmVwb3J0KGZvcm1hdDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgY29uc3QgbGF5b3V0ID0gc3RvcmUuY3VycmVudExheW91dCgpO1xuICAgICAgICAgIGlmICghbGF5b3V0Py5leHBvcnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRXhwb3J0IG5vdCBjb25maWd1cmVkIGZvciBjdXJyZW50IGxheW91dCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBFeHBvcnQgbG9naWMgd291bGQgZ28gaGVyZVxuICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCB0eXBpY2FsbHkgY2FsbCBhIGRpZmZlcmVudCBjb21tYW5kIGZvciBleHBvcnRcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBFeHBvcnRpbmcgcmVwb3J0IGluICR7Zm9ybWF0fSBmb3JtYXRgKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXhwb3J0aW5nIHJlcG9ydDonLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgVXRpbGl0eSBNZXRob2RzICAgLS0tLVxuXG4gICAgICAgIHJlZnJlc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgcmV0dXJuIGV4ZWN1dGVSZXBvcnQoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjbGVhckVycm9yKCk6IHZvaWQge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNsZWFyRXhlY3V0aW9uU3RhdGUoKTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgaGFzQmVlbkV4ZWN1dGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93RmV0Y2hEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3VsZEV4ZWN1dGVSZXBvcnQ6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuSWRsZSxcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvL1RPRE86IENhbmNlbCB0aGUgcmVwb3J0IGV4ZWN1dGlvblxuICAgICAgICB9LFxuXG4gICAgICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHJlcG9ydERlZmluaXRpb246IG51bGwsXG4gICAgICAgICAgICBjdXJyZW50TGF5b3V0OiBudWxsLFxuICAgICAgICAgICAgZmlsdGVyQ29udGV4dDoge30sXG4gICAgICAgICAgICBhbGxvd0ZldGNoRGF0YTogZmFsc2UsXG4gICAgICAgICAgICBzaG91bGRFeGVjdXRlUmVwb3J0OiBmYWxzZSxcbiAgICAgICAgICAgIGxhc3RBcHBsaWVkRmlsdGVyQ29udGV4dDogbnVsbCxcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogZmFsc2UsXG4gICAgICAgICAgICBjYXRlZ29yaWVzUGF0aDogW10sXG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuSWRsZSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vI2VuZHJlZ2lvblxuICAgICAgfTtcbiAgICB9LFxuICApLFxuXG4gIHdpdGhIb29rcygoc3RvcmUsIHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSksIGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoQVhMb2NhbGVTZXJ2aWNlKSkgPT4gKHtcbiAgICBhc3luYyBvbkluaXQoKSB7XG4gICAgICAvLyBTdWJzY3JpYmUgdG8gbGFuZ3VhZ2UgYW5kIGxvY2FsZSBjaGFuZ2VzXG4gICAgICB0cmFuc2xhdGlvblNlcnZpY2UubGFuZ0NoYW5nZXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIEhhbmRsZSBsYW5ndWFnZSBjaGFuZ2UgaWYgbmVlZGVkXG4gICAgICB9KTtcblxuICAgICAgbG9jYWxlU2VydmljZS5wcm9maWxlQ2hhbmdlZCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gSGFuZGxlIGxvY2FsZSBjaGFuZ2UgaWYgbmVlZGVkXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uRGVzdHJveSgpIHtcbiAgICAgIC8vIENsZWFudXAgaWYgbmVlZGVkXG4gICAgfSxcbiAgfSkpLFxuKTtcbiJdfQ==","import { AXBarChartComponent } from '@acorex/charts/bar-chart';\nimport { AXChartLegendComponent } from '@acorex/charts/chart-legend';\nimport { AXDonutChartComponent } from '@acorex/charts/donut-chart';\nimport { AXLineChartComponent } from '@acorex/charts/line-chart';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule, AXPPageStatus } from '@acorex/platform/layout/widget-core';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXBarChartReportMapper, AXLineChartReportMapper, AXPieChartReportMapper, } from '../../../../reports/report-mapper';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/translation\";\nimport * as i2 from \"@angular/common\";\nexport class AXPReportChartViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.AXPPageStatus = AXPPageStatus;\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Current chart layout configuration\n */\n this.chartLayout = computed(() => {\n const layout = this.vm.currentLayout();\n return layout?.layout.type === 'chart' ? layout.layout : null;\n }, ...(ngDevMode ? [{ debugName: \"chartLayout\" }] : []));\n /**\n * Chart configuration options\n */\n this.chartOptions = computed(() => {\n const chartLayout = this.chartLayout();\n return chartLayout?.options || null;\n }, ...(ngDevMode ? [{ debugName: \"chartOptions\" }] : []));\n /**\n * Chart type for rendering\n */\n this.chartType = computed(() => {\n const options = this.chartOptions();\n return options?.chartType || 'bar';\n }, ...(ngDevMode ? [{ debugName: \"chartType\" }] : []));\n /**\n * Data mapping configuration\n */\n this.dataMapping = computed(() => {\n const options = this.chartOptions();\n return options?.dataMapping || null;\n }, ...(ngDevMode ? [{ debugName: \"dataMapping\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to fetch chart data when conditions are met\n */\n this.#fetchData = effect(() => {\n if (this.vm.allowFetchData() && this.vm.shouldExecuteReport() && this.chartOptions()) {\n this.vm.fetchData().then((data) => {\n const raw = ((data?.data).data ?? {});\n switch (this.chartType()) {\n case 'bar': {\n const v = AXBarChartReportMapper(raw);\n this.barChartData.set(v);\n break;\n }\n case 'doughnut': {\n const v = AXPieChartReportMapper(raw);\n this.donutChartData.set(v);\n break;\n }\n case 'line':\n default: {\n const v = AXLineChartReportMapper(raw);\n this.lineChartData.set(v);\n break;\n }\n }\n });\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n this.legendOptions = signal({\n mode: 'vertical',\n }, ...(ngDevMode ? [{ debugName: \"legendOptions\" }] : []));\n this.barChartData = signal([], ...(ngDevMode ? [{ debugName: \"barChartData\" }] : []));\n this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"barChartOptions\" }] : []));\n this.donutChartData = signal([], ...(ngDevMode ? [{ debugName: \"donutChartData\" }] : []));\n this.donutChartOptions = computed(() => {\n return {\n totalLabel: 'Total',\n showTooltip: true,\n showDataLabels: this.donutChartData().length <= 10,\n };\n }, ...(ngDevMode ? [{ debugName: \"donutChartOptions\" }] : []));\n this.lineChartData = signal([], ...(ngDevMode ? [{ debugName: \"lineChartData\" }] : []));\n this.lineChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"lineChartOptions\" }] : []));\n /**\n * Check if bar chart data has items\n */\n this.hasBarChartData = computed(() => {\n const data = this.barChartData();\n return Array.isArray(data) && data.length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasBarChartData\" }] : []));\n /**\n * Check if donut chart data has items\n */\n this.hasDonutChartData = computed(() => {\n const data = this.donutChartData();\n return Array.isArray(data) && data.length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasDonutChartData\" }] : []));\n /**\n * Check if line chart data has items\n */\n this.hasLineChartData = computed(() => {\n const data = this.lineChartData();\n return Array.isArray(data) && data.length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasLineChartData\" }] : []));\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to fetch chart data when conditions are met\n */\n #fetchData;\n //#endregion\n //#region ---- Helper Methods ----\n /**\n * Check if chart is ready to render\n */\n isChartReady() {\n return !!(this.chartOptions() && this.dataMapping());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportChartViewComponent, isStandalone: true, selector: \"axp-report-chart-view\", host: { classAttribute: \"axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col\" }, ngImport: i0, template: \"<ng-container *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\\\">\\n <div class=\\\"ax-spinner ax-spin ax-w-10 ax-h-10\\\"></div>\\n <div class=\\\"__loading-text ax-text-sm ax-opacity-70\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message\\n mode=\\\"error\\\"\\n icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\"\\n >\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <section\\n class=\\\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\\\"\\n >\\n @if (chartLayout()?.header) {\\n <header\\n class=\\\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\\\"\\n >\\n <h3 class=\\\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\\\">\\n {{ chartLayout()?.header?.title }}\\n </h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\\\">\\n {{ '@general:common.date.today' | translate | async }}\\n </div>\\n }\\n </header>\\n }\\n\\n <div class=\\\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\\\">\\n <div\\n class=\\\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\\\"\\n [class]=\\\"\\n legendOptions().mode === 'horizontal'\\n ? 'ax-flex-col ax-gap-4'\\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\\n \\\"\\n >\\n @switch (chartType()) {\\n @case ('bar') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-bar-chart #barChart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n @if (hasBarChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"barChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n @case ('doughnut') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-donut-chart #donutChart [data]=\\\"donutChartData()\\\" [options]=\\\"donutChartOptions()\\\"></ax-donut-chart>\\n </div>\\n @if (hasDonutChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"donutChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n @default {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-line-chart #lineChart [data]=\\\"lineChartData()\\\" [options]=\\\"lineChartOptions()\\\"></ax-line-chart>\\n </div>\\n @if (hasLineChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"lineChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n }\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <footer class=\\\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </footer>\\n }\\n </section>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\"\\n >\\n </axp-state-message>\\n }\\n</ng-container>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i1.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: AXBarChartComponent, selector: \"ax-bar-chart\", inputs: [\"data\", \"options\"], outputs: [\"barClick\"] }, { kind: \"component\", type: AXDonutChartComponent, selector: \"ax-donut-chart\", inputs: [\"data\", \"options\"], outputs: [\"segmentClick\", \"segmentHover\"] }, { kind: \"component\", type: AXLineChartComponent, selector: \"ax-line-chart\", inputs: [\"data\", \"options\"], outputs: [\"pointClick\"] }, { kind: \"component\", type: AXChartLegendComponent, selector: \"ax-chart-legend\", inputs: [\"chart\", \"options\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"itemMouseLeave\"] }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i1.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportChartViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-chart-view', imports: [\n CommonModule,\n AXTranslationModule,\n AXPWidgetCoreModule,\n AXBarChartComponent,\n AXDonutChartComponent,\n AXLineChartComponent,\n AXChartLegendComponent,\n AXPStateMessageComponent,\n ], host: {\n class: 'axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col',\n }, changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ng-container *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\\\">\\n <div class=\\\"ax-spinner ax-spin ax-w-10 ax-h-10\\\"></div>\\n <div class=\\\"__loading-text ax-text-sm ax-opacity-70\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message\\n mode=\\\"error\\\"\\n icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\"\\n >\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <section\\n class=\\\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\\\"\\n >\\n @if (chartLayout()?.header) {\\n <header\\n class=\\\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\\\"\\n >\\n <h3 class=\\\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\\\">\\n {{ chartLayout()?.header?.title }}\\n </h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\\\">\\n {{ '@general:common.date.today' | translate | async }}\\n </div>\\n }\\n </header>\\n }\\n\\n <div class=\\\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\\\">\\n <div\\n class=\\\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\\\"\\n [class]=\\\"\\n legendOptions().mode === 'horizontal'\\n ? 'ax-flex-col ax-gap-4'\\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\\n \\\"\\n >\\n @switch (chartType()) {\\n @case ('bar') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-bar-chart #barChart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n @if (hasBarChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"barChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n @case ('doughnut') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-donut-chart #donutChart [data]=\\\"donutChartData()\\\" [options]=\\\"donutChartOptions()\\\"></ax-donut-chart>\\n </div>\\n @if (hasDonutChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"donutChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n @default {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-line-chart #lineChart [data]=\\\"lineChartData()\\\" [options]=\\\"lineChartOptions()\\\"></ax-line-chart>\\n </div>\\n @if (hasLineChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"lineChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n }\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <footer class=\\\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </footer>\\n }\\n </section>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\"\\n >\\n </axp-state-message>\\n }\\n</ng-container>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNoYXJ0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcmVwb3J0LXZpZXdlci92aWV3cy9yZXBvcnQtY2hhcnQtdmlldy9yZXBvcnQtY2hhcnQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC1jaGFydC12aWV3L3JlcG9ydC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBcUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sNkJBQTZCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBdUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJB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SDs7V0FFRztRQUNnQixxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2xELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQyw0REFBQyxDQUFDO0tBR0o7SUF6RkMsWUFBWTtJQUVaLCtCQUErQjtJQUUvQjs7T0FFRztJQUNILFVBQVUsQ0F3QlA7SUFFSCxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOztPQUVHO0lBQ08sWUFBWTtRQUNwQixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDOytHQXBGVSwyQkFBMkI7bUdBQTNCLDJCQUEyQiw0S0NuQ3hDLHd3SkEwR0EsMkNEdEZJLFlBQVksOEJBQ1osbUJBQW1CLDhHQUNuQixtQkFBbUIsK0JBQ25CLG1CQUFtQiw2R0FDbkIscUJBQXFCLG1JQUNyQixvQkFBb0IsZ0hBQ3BCLHNCQUFzQixzSkFDdEIsd0JBQXdCOzs0RkFRZiwyQkFBMkI7a0JBbEJ2QyxTQUFTOytCQUNFLHVCQUF1QixXQUN4Qjt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLHdCQUF3QjtxQkFDekIsUUFDSzt3QkFDSixLQUFLLEVBQUUsK0RBQStEO3FCQUN2RSxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFyQ2hhcnRDb21wb25lbnQsIEFYQmFyQ2hhcnRPcHRpb24sIEFYQmFyQ2hhcnRWYWx1ZSB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2Jhci1jaGFydCc7XG5pbXBvcnQgeyBBWENoYXJ0TGVnZW5kQ29tcG9uZW50LCBBWENoYXJ0TGVnZW5kT3B0aW9ucyB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2NoYXJ0LWxlZ2VuZCc7XG5pbXBvcnQgeyBBWERvbnV0Q2hhcnRDb21wb25lbnQsIEFYRG9udXRDaGFydFZhbHVlIH0gZnJvbSAnQGFjb3JleC9jaGFydHMvZG9udXQtY2hhcnQnO1xuaW1wb3J0IHsgQVhMaW5lQ2hhcnRDb21wb25lbnQsIEFYTGluZUNoYXJ0T3B0aW9uLCBBWExpbmVDaGFydFZhbHVlIH0gZnJvbSAnQGFjb3JleC9jaGFydHMvbGluZS1jaGFydCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVNb2R1bGUsIEFYUFBhZ2VTdGF0dXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhCYXJDaGFydFJlcG9ydE1hcHBlcixcbiAgQVhMaW5lQ2hhcnRSZXBvcnRNYXBwZXIsXG4gIEFYUGllQ2hhcnRSZXBvcnRNYXBwZXIsXG59IGZyb20gJy4uLy4uLy4uLy4uL3JlcG9ydHMvcmVwb3J0LW1hcHBlcic7XG5pbXBvcnQgeyBBWFBSZXBvcnRDaGFydExheW91dCB9IGZyb20gJy4uLy4uLy4uLy4uL3JlcG9ydHMvcmVwb3J0LnR5cGVzJztcbmltcG9ydCB7IEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3JlcG9ydC12aWV3ZXIudmlld21vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLXJlcG9ydC1jaGFydC12aWV3JyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gICAgQVhCYXJDaGFydENvbXBvbmVudCxcbiAgICBBWERvbnV0Q2hhcnRDb21wb25lbnQsXG4gICAgQVhMaW5lQ2hhcnRDb21wb25lbnQsXG4gICAgQVhDaGFydExlZ2VuZENvbXBvbmVudCxcbiAgICBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQsXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2F4cC1yZXBvcnQtY2hhcnQtdmlldyBheC13LWZ1bGwgYXgtaC1mdWxsIGF4LWZsZXggYXgtZmxleC1jb2wnLFxuICB9LFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LWNoYXJ0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhQUmVwb3J0Q2hhcnRWaWV3Q29tcG9uZW50IHtcbiAgLy8jcmVnaW9uIC0tLS0gICBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBBWFBQYWdlU3RhdHVzID0gQVhQUGFnZVN0YXR1cztcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbXB1dGVkIFByb3BlcnRpZXMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgY2hhcnQgbGF5b3V0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFydExheW91dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsYXlvdXQgPSB0aGlzLnZtLmN1cnJlbnRMYXlvdXQoKTtcbiAgICByZXR1cm4gbGF5b3V0Py5sYXlvdXQudHlwZSA9PT0gJ2NoYXJ0JyA/IChsYXlvdXQubGF5b3V0IGFzIEFYUFJlcG9ydENoYXJ0TGF5b3V0KSA6IG51bGw7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBDaGFydCBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFydE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2hhcnRMYXlvdXQgPSB0aGlzLmNoYXJ0TGF5b3V0KCk7XG4gICAgcmV0dXJuIGNoYXJ0TGF5b3V0Py5vcHRpb25zIHx8IG51bGw7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBDaGFydCB0eXBlIGZvciByZW5kZXJpbmdcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFydFR5cGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY2hhcnRPcHRpb25zKCk7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmNoYXJ0VHlwZSB8fCAnYmFyJztcbiAgfSk7XG5cbiAgLyoqXG4gICAqIERhdGEgbWFwcGluZyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YU1hcHBpbmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY2hhcnRPcHRpb25zKCk7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmRhdGFNYXBwaW5nIHx8IG51bGw7XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRWZmZWN0cyAgIC0tLS1cblxuICAvKipcbiAgICogRWZmZWN0IHRvIGZldGNoIGNoYXJ0IGRhdGEgd2hlbiBjb25kaXRpb25zIGFyZSBtZXRcbiAgICovXG4gICNmZXRjaERhdGEgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLnZtLmFsbG93RmV0Y2hEYXRhKCkgJiYgdGhpcy52bS5zaG91bGRFeGVjdXRlUmVwb3J0KCkgJiYgdGhpcy5jaGFydE9wdGlvbnMoKSkge1xuICAgICAgdGhpcy52bS5mZXRjaERhdGEoKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9ICgoKGRhdGE/LmRhdGEgYXMgYW55KS5kYXRhIGFzIGFueSkgPz8ge30pIGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gICAgICAgIHN3aXRjaCAodGhpcy5jaGFydFR5cGUoKSkge1xuICAgICAgICAgIGNhc2UgJ2Jhcic6IHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSBBWEJhckNoYXJ0UmVwb3J0TWFwcGVyKHJhdyk7XG4gICAgICAgICAgICB0aGlzLmJhckNoYXJ0RGF0YS5zZXQodik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnZG91Z2hudXQnOiB7XG4gICAgICAgICAgICBjb25zdCB2ID0gQVhQaWVDaGFydFJlcG9ydE1hcHBlcihyYXcpO1xuICAgICAgICAgICAgdGhpcy5kb251dENoYXJ0RGF0YS5zZXQodik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnbGluZSc6XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgdiA9IEFYTGluZUNoYXJ0UmVwb3J0TWFwcGVyKHJhdyk7XG4gICAgICAgICAgICB0aGlzLmxpbmVDaGFydERhdGEuc2V0KHYpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIE1ldGhvZHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGNoYXJ0IGlzIHJlYWR5IHRvIHJlbmRlclxuICAgKi9cbiAgcHJvdGVjdGVkIGlzQ2hhcnRSZWFkeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5jaGFydE9wdGlvbnMoKSAmJiB0aGlzLmRhdGFNYXBwaW5nKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxlZ2VuZE9wdGlvbnMgPSBzaWduYWw8QVhDaGFydExlZ2VuZE9wdGlvbnM+KHtcbiAgICBtb2RlOiAndmVydGljYWwnLFxuICB9KTtcblxuICBwcm90ZWN0ZWQgYmFyQ2hhcnREYXRhID0gc2lnbmFsPEFYQmFyQ2hhcnRWYWx1ZT4oW10pO1xuICBwcm90ZWN0ZWQgYmFyQ2hhcnRPcHRpb25zID0gc2lnbmFsPEFYQmFyQ2hhcnRPcHRpb24+KHt9KTtcblxuICBwcm90ZWN0ZWQgZG9udXRDaGFydERhdGEgPSBzaWduYWw8QVhEb251dENoYXJ0VmFsdWU+KFtdKTtcblxuICBwcm90ZWN0ZWQgZG9udXRDaGFydE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsTGFiZWw6ICdUb3RhbCcsXG4gICAgICBzaG93VG9vbHRpcDogdHJ1ZSxcbiAgICAgIHNob3dEYXRhTGFiZWxzOiB0aGlzLmRvbnV0Q2hhcnREYXRhKCkubGVuZ3RoIDw9IDEwLFxuICAgIH07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBsaW5lQ2hhcnREYXRhID0gc2lnbmFsPEFYTGluZUNoYXJ0VmFsdWU+KFtdKTtcbiAgcHJvdGVjdGVkIGxpbmVDaGFydE9wdGlvbnMgPSBzaWduYWw8QVhMaW5lQ2hhcnRPcHRpb24+KHt9KTtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYmFyIGNoYXJ0IGRhdGEgaGFzIGl0ZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzQmFyQ2hhcnREYXRhID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJhckNoYXJ0RGF0YSgpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEpICYmIGRhdGEubGVuZ3RoID4gMDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGRvbnV0IGNoYXJ0IGRhdGEgaGFzIGl0ZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzRG9udXRDaGFydERhdGEgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZG9udXRDaGFydERhdGEoKTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRhKSAmJiBkYXRhLmxlbmd0aCA+IDA7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBsaW5lIGNoYXJ0IGRhdGEgaGFzIGl0ZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzTGluZUNoYXJ0RGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5saW5lQ2hhcnREYXRhKCk7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YSkgJiYgZGF0YS5sZW5ndGggPiAwO1xuICB9KTtcblxuICAvLyNlbmRyZWdpb25cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gIEBpZiAodm0uc3RhdHVzKCkgPT09IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZykge1xuICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiX19sb2FkaW5nIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWgtZnVsbCBheC1nYXAtNiBheC1wLThcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1zcGlubmVyIGF4LXNwaW4gYXgtdy0xMCBheC1oLTEwXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiX19sb2FkaW5nLXRleHQgYXgtdGV4dC1zbSBheC1vcGFjaXR5LTcwXCI+XG4gICAgICAgIHt7IHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQubWVzc2FnZXMubG9hZGluZycpIHwgYXN5bmMgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9IEBlbHNlIGlmICh2bS5zdGF0dXMoKSA9PT0gQVhQUGFnZVN0YXR1cy5FcnJvcikge1xuICAgIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gICAgPGF4cC1zdGF0ZS1tZXNzYWdlXG4gICAgICBtb2RlPVwiZXJyb3JcIlxuICAgICAgaWNvbj1cImZhLWxpZ2h0IGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCJcbiAgICAgIFt0aXRsZV09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtdGl0bGUnXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJ2bS5lcnJvcigpIHx8ICdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5tZXNzYWdlcy5lcnJvci5mZXRjaC1kZXNjcmlwdGlvbidcIlxuICAgID5cbiAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICB9IEBlbHNlIGlmIChpc0NoYXJ0UmVhZHkoKSkge1xuICAgIDwhLS0gQ2hhcnQgQ29udGVudCAtLT5cbiAgICA8c2VjdGlvblxuICAgICAgY2xhc3M9XCJfX2NoYXJ0LWNvbnRhaW5lciBheC1vdmVyZmxvdy1hdXRvIG1kOmF4LW92ZXJmbG93LWhpZGRlbiBheC1yb3VuZGVkLTJ4bCBheC1ib3JkZXIgYXgtaC1mdWxsIGF4LWZsZXggYXgtZmxleC1jb2xcIlxuICAgID5cbiAgICAgIEBpZiAoY2hhcnRMYXlvdXQoKT8uaGVhZGVyKSB7XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICBjbGFzcz1cIl9fY2hhcnQtaGVhZGVyIGF4LXAtNCBtZDpheC1wLTYgYXgtYm9yZGVyLWIgYXgtZmxleCBheC1mbGV4LWNvbCBzbTpheC1mbGV4LXJvdyBheC1nYXAtMiBzbTpheC1pdGVtcy1jZW50ZXIgc206YXgtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoMyBjbGFzcz1cIl9fY2hhcnQtdGl0bGUgYXgtdGV4dC1iYXNlIG1kOmF4LXRleHQtbGcgYXgtZm9udC1zZW1pYm9sZCBheC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAge3sgY2hhcnRMYXlvdXQoKT8uaGVhZGVyPy50aXRsZSB9fVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgQGlmIChjaGFydExheW91dCgpPy5oZWFkZXI/LnNob3dEYXRlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19jaGFydC1kYXRlIGF4LXRleHQteHMgbWQ6YXgtdGV4dC1zbSBheC1vcGFjaXR5LTcwIGF4LWZvbnQtbWVkaXVtIGF4LWZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAge3sgJ0BnZW5lcmFsOmNvbW1vbi5kYXRlLnRvZGF5JyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiX19jaGFydC1ib2R5IGF4LWZsZXgtMSBheC1wLTMgbWQ6YXgtcC02XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIl9fY2hhcnQtd3JhcHBlciBheC1oLWZ1bGwgYXgtaXRlbXMtY2VudGVyIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTQgbGc6YXgtZ2FwLTZcIlxuICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgIGxlZ2VuZE9wdGlvbnMoKS5tb2RlID09PSAnaG9yaXpvbnRhbCdcbiAgICAgICAgICAgICAgPyAnYXgtZmxleC1jb2wgYXgtZ2FwLTQnXG4gICAgICAgICAgICAgIDogJ2F4LWZsZXgtY29sIGxnOmF4LWZsZXgtcm93IGF4LWdhcC00IGxnOmF4LWdhcC02J1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICBAc3dpdGNoIChjaGFydFR5cGUoKSkge1xuICAgICAgICAgICAgQGNhc2UgKCdiYXInKSB7XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIl9fY2hhcnQtY29udGVudCBheC1mbGV4LTEgYXgtaC1mdWxsIGF4LW1pbi1oLVsyNTBweF0gbWQ6YXgtbWluLWgtWzMwMHB4XSBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC13LWZ1bGwgYXgtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxheC1iYXItY2hhcnQgI2JhckNoYXJ0IFtkYXRhXT1cImJhckNoYXJ0RGF0YSgpXCIgW29wdGlvbnNdPVwiYmFyQ2hhcnRPcHRpb25zKClcIj48L2F4LWJhci1jaGFydD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoaGFzQmFyQ2hhcnREYXRhKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19jaGFydC1sZWdlbmQgYXgtdy1maXQgYXgtZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgICAgICAgICAgPGF4LWNoYXJ0LWxlZ2VuZCBbb3B0aW9uc109XCJsZWdlbmRPcHRpb25zKClcIiBbY2hhcnRdPVwiYmFyQ2hhcnRcIj48L2F4LWNoYXJ0LWxlZ2VuZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdkb3VnaG51dCcpIHtcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiX19jaGFydC1jb250ZW50IGF4LWZsZXgtMSBheC1oLWZ1bGwgYXgtbWluLWgtWzI1MHB4XSBtZDpheC1taW4taC1bMzAwcHhdIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LXctZnVsbCBheC1vdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGF4LWRvbnV0LWNoYXJ0ICNkb251dENoYXJ0IFtkYXRhXT1cImRvbnV0Q2hhcnREYXRhKClcIiBbb3B0aW9uc109XCJkb251dENoYXJ0T3B0aW9ucygpXCI+PC9heC1kb251dC1jaGFydD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoaGFzRG9udXRDaGFydERhdGEoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWxlZ2VuZCBheC13LWZpdCBheC1mbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtY2hhcnQtbGVnZW5kIFtvcHRpb25zXT1cImxlZ2VuZE9wdGlvbnMoKVwiIFtjaGFydF09XCJkb251dENoYXJ0XCI+PC9heC1jaGFydC1sZWdlbmQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiX19jaGFydC1jb250ZW50IGF4LWZsZXgtMSBheC1oLWZ1bGwgYXgtbWluLWgtWzI1MHB4XSBtZDpheC1taW4taC1bMzAwcHhdIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LXctZnVsbCBheC1vdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGF4LWxpbmUtY2hhcnQgI2xpbmVDaGFydCBbZGF0YV09XCJsaW5lQ2hhcnREYXRhKClcIiBbb3B0aW9uc109XCJsaW5lQ2hhcnRPcHRpb25zKClcIj48L2F4LWxpbmUtY2hhcnQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGhhc0xpbmVDaGFydERhdGEoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWxlZ2VuZCBheC13LWZpdCBheC1mbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtY2hhcnQtbGVnZW5kIFtvcHRpb25zXT1cImxlZ2VuZE9wdGlvbnMoKVwiIFtjaGFydF09XCJsaW5lQ2hhcnRcIj48L2F4LWNoYXJ0LWxlZ2VuZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChjaGFydExheW91dCgpPy5mb290ZXIpIHtcbiAgICAgICAgPGZvb3RlciBjbGFzcz1cIl9fY2hhcnQtZm9vdGVyIGF4LXAtNCBtZDpheC1wLTYgYXgtYm9yZGVyLXRcIj5cbiAgICAgICAgICBAaWYgKGNoYXJ0TGF5b3V0KCk/LmZvb3Rlcj8uY3VzdG9tSHRtbCkge1xuICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImNoYXJ0TGF5b3V0KCk/LmZvb3Rlcj8uY3VzdG9tSHRtbFwiPjwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9mb290ZXI+XG4gICAgICB9XG4gICAgPC9zZWN0aW9uPlxuICB9IEBlbHNlIHtcbiAgICA8IS0tIE5vIENvbmZpZ3VyYXRpb24gU3RhdGUgLS0+XG4gICAgPGF4cC1zdGF0ZS1tZXNzYWdlXG4gICAgICBpY29uPVwiZmEtbGlnaHQgZmEtY2hhcnQtbGluZVwiXG4gICAgICBbdGl0bGVdPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQuZW1wdHktc3RhdGVzLm5vLWNvbmZpZy50aXRsZSdcIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIidAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5jb21wb25lbnRzLmNoYXJ0LmVtcHR5LXN0YXRlcy5uby1jb25maWcuZGVzY3JpcHRpb24nXCJcbiAgICA+XG4gICAgPC9heHAtc3RhdGUtbWVzc2FnZT5cbiAgfVxuPC9uZy1jb250YWluZXI+XG4iXX0=","import { AXDataTableModule } from '@acorex/components/data-table';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { applySystemActionDefault, getSystemActions } from '@acorex/platform/core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/data-table\";\nimport * as i2 from \"@acorex/platform/layout/widget-core\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\nexport class AXPReportTableViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.commandService = inject(AXPCommandService);\n this.grid = viewChild('grid', ...(ngDevMode ? [{ debugName: \"grid\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when report is executed\n */\n this.#fetchData = effect(() => {\n if (this.grid() && this.vm.allowFetchData() && this.vm.shouldExecuteReport()) {\n this.grid()?.refresh();\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n //#endregion\n //#region ---- Computed Properties ----\n this.layout = computed(() => {\n return this.vm.currentLayout()?.layout;\n }, ...(ngDevMode ? [{ debugName: \"layout\" }] : []));\n this.dataSource = new AXDataSource({\n load: async (e) => {\n if (!this.vm.allowFetchData()) {\n return { items: [], total: 0 };\n }\n const result = await this.vm.fetchData(e);\n if (!result?.data || result.data.type !== 'table') {\n console.error('invalid table result');\n return { items: [], total: 0 };\n }\n ;\n let items = result.data.items ?? [];\n let total = result.data.total || 0;\n return { items, total };\n },\n pageSize: 10,\n key: 'id'\n });\n this.columns = computed(() => {\n return this.layout().columns?.map((col) => ({\n field: col.field,\n title: col.title || col.field,\n width: col.width || '150px',\n visible: col.visible !== false,\n align: col.align || 'left',\n widget: { ...col.widget, path: col.field }\n })) || [];\n }, ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n this.paginationEnabled = computed(() => {\n return this.layout().options?.pagination !== false;\n }, ...(ngDevMode ? [{ debugName: \"paginationEnabled\" }] : []));\n this.primaryRowAction = computed(() => {\n return this.layout().actions?.filter(a => a.priority === 'primary')?.map(a => this.convertToRowCommandItem(a)) || [];\n }, ...(ngDevMode ? [{ debugName: \"primaryRowAction\" }] : []));\n this.hasPrimaryRowAction = computed(() => {\n return this.primaryRowAction().length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasPrimaryRowAction\" }] : []));\n this.secondaryRowAction = computed(() => {\n return this.layout().actions?.filter(a => a.priority === 'secondary')?.map(a => this.convertToRowCommandItem(a)) || [];\n }, ...(ngDevMode ? [{ debugName: \"secondaryRowAction\" }] : []));\n this.hasSecondaryRowAction = computed(() => {\n return this.secondaryRowAction().length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasSecondaryRowAction\" }] : []));\n this.defaultRowAction = computed(() => {\n const defaultAction = this.layout().actions?.find(a => a.default);\n if (!defaultAction) {\n return null;\n }\n return this.convertToRowCommandItem(defaultAction);\n }, ...(ngDevMode ? [{ debugName: \"defaultRowAction\" }] : []));\n }\n //#endregion\n //#region ---- Event Handlers ----\n handleRowClick(event) {\n this.handleRowAction(event.name, event.data);\n }\n handleDbRowClick(event) {\n if (this.defaultRowAction()) {\n this.handleRowAction(this.defaultRowAction().name, event.data);\n }\n }\n handleRowAction(name, data) {\n this.commandService.execute(name, data);\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when report is executed\n */\n #fetchData;\n //#endregion\n //#region ---- Helpers ----\n convertToRowCommandItem(action) {\n const systemAction = getSystemActions(action.type);\n if (!systemAction) {\n return {\n icon: action.icon ?? 'fa-light fa-eye',\n iconOnly: action.iconOnly ?? true,\n text: action.title,\n name: action.command?.name,\n divided: action.break,\n color: action.color,\n };\n }\n const defaultAction = applySystemActionDefault(action, systemAction.key);\n return {\n icon: defaultAction.icon ?? 'fa-light fa-eye',\n text: defaultAction.title,\n name: action.command?.name,\n divided: defaultAction.break,\n color: defaultAction.color,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportTableViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportTableViewComponent, isStandalone: true, selector: \"axp-report-table-view\", viewQueries: [{ propertyName: \"grid\", first: true, predicate: [\"grid\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<ax-data-table\\n #grid\\n [dataSource]=\\\"dataSource\\\"\\n [paging]=\\\"true\\\"\\n (onRowDbClick)=\\\"handleDbRowClick($event)\\\"\\n class=\\\"ax-flex-1\\\"\\n>\\n <!-- Dynamic columns based on configuration -->\\n <ax-index-column fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n @if (vm.canSelectRows()) {\\n <ax-select-column fixed=\\\"start\\\" [width]=\\\"'50px'\\\"></ax-select-column>\\n }\\n @for (column of columns(); track column.field) {\\n @if (column.visible) {\\n <axp-widget-column-renderer\\n [customWidth]=\\\"column.width + 'px'\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n [node]=\\\"column.widget!\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (hasPrimaryRowAction()) {\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"primaryRowAction().length * 70 + 'px'\\\"\\n [items]=\\\"primaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-command-column>\\n }\\n @if (hasSecondaryRowAction()) {\\n <ax-dropdown-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"secondaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-dropdown-command-column>\\n }\\n</ax-data-table>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXDataTableModule }, { kind: \"component\", type: i1.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"rowDetailsTemplate\", \"rowTemplate\", \"emptyTemplate\", \"noDataTemplate\", \"alternative\", \"showHeader\", \"fixedHeader\", \"showFooter\", \"fixedFooter\", \"itemHeight\", \"allowReordering\", \"paging\", \"fetchDataMode\", \"loading\", \"focusedRow\"], outputs: [\"selectedRowsChange\", \"focusedRowChange\", \"onRowClick\", \"onRowDbClick\", \"onColumnsOrderChanged\", \"onColumnSizeChanged\", \"onPageChanged\"] }, { kind: \"component\", type: i1.AXRowIndexColumnComponent, selector: \"ax-index-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"padZero\"] }, { kind: \"component\", type: i1.AXRowSelectColumnComponent, selector: \"ax-select-column\", inputs: [\"width\", \"caption\", \"fixed\"] }, { kind: \"component\", type: i1.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: i1.AXRowDropdownCommandColumnComponent, selector: \"ax-dropdown-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"emptyStateTemplate\", \"emptyStateText\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i2.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportTableViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-table-view', standalone: true, imports: [\n CommonModule,\n AXDataTableModule,\n AXLoadingModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPWidgetCoreModule\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<ax-data-table\\n #grid\\n [dataSource]=\\\"dataSource\\\"\\n [paging]=\\\"true\\\"\\n (onRowDbClick)=\\\"handleDbRowClick($event)\\\"\\n class=\\\"ax-flex-1\\\"\\n>\\n <!-- Dynamic columns based on configuration -->\\n <ax-index-column fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n @if (vm.canSelectRows()) {\\n <ax-select-column fixed=\\\"start\\\" [width]=\\\"'50px'\\\"></ax-select-column>\\n }\\n @for (column of columns(); track column.field) {\\n @if (column.visible) {\\n <axp-widget-column-renderer\\n [customWidth]=\\\"column.width + 'px'\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n [node]=\\\"column.widget!\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (hasPrimaryRowAction()) {\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"primaryRowAction().length * 70 + 'px'\\\"\\n [items]=\\\"primaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-command-column>\\n }\\n @if (hasSecondaryRowAction()) {\\n <ax-dropdown-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"secondaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-dropdown-command-column>\\n }\\n</ax-data-table>\\n\" }]\n }], propDecorators: { grid: [{ type: i0.ViewChild, args: ['grid', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXRhYmxlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcmVwb3J0LXZpZXdlci92aWV3cy9yZXBvcnQtdGFibGUtdmlldy9yZXBvcnQtdGFibGUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC10YWJsZS12aWV3L3JlcG9ydC10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsaUJBQWlCLEVBQXVFLE1BQU0sK0JBQStCLENBQUM7QUFDN0osT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBdUIsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEVBQXVCLHdCQUF3QixFQUFFLGdCQUFn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RGF0YVRhYmxlUm93RGJDbGljaywgQVhSb3dDb21tYW5kSXRlbSwgQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZU1vZHVsZSwgQVhQV2lkZ2V0Q29sdW1uTm9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3JlcG9ydC12aWV3ZXIudmlld21vZGVsJztcbmltcG9ydCB7IEFYUFJlcG9ydENvbHVtbiwgQVhQUmVwb3J0VGFibGVMYXlvdXQsIEFYUFJlcG9ydFRhYmxlTGF5b3V0Um93QWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vcmVwb3J0cyc7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYRGF0YVNvdXJjZVF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYUFN5c3RlbUFjdGlvblR5cGUsIGFwcGx5U3lzdGVtQWN0aW9uRGVmYXVsdCwgZ2V0U3lzdGVtQWN0aW9ucyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBDb21tYW5kU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtdGFibGUtdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhEYXRhVGFibGVNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQV2lkZ2V0Q29yZU1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQUmVwb3J0VGFibGVWaWV3Q29tcG9uZW50IHtcblxuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tbWFuZFNlcnZpY2UgPSBpbmplY3QoQVhQQ29tbWFuZFNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JpZCA9IHZpZXdDaGlsZDxBWERhdGFUYWJsZUNvbXBvbmVudD4oJ2dyaWQnKTtcblxuICAvLyNlbmRyZWdpb25cblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0NsaWNrKGV2ZW50OiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlUm93QWN0aW9uKGV2ZW50Lm5hbWUsIGV2ZW50LmRhdGEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURiUm93Q2xpY2soZXZlbnQ6IEFYRGF0YVRhYmxlUm93RGJDbGljayk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlZmF1bHRSb3dBY3Rpb24oKSkge1xuICAgICAgdGhpcy5oYW5kbGVSb3dBY3Rpb24odGhpcy5kZWZhdWx0Um93QWN0aW9uKCkhLm5hbWUsIGV2ZW50LmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dBY3Rpb24obmFtZTogc3RyaW5nLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1hbmRTZXJ2aWNlLmV4ZWN1dGUobmFtZSwgZGF0YSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEVmZmVjdHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEVmZmVjdCB0byBoYW5kbGUgZGF0YSBmZXRjaGluZyB3aGVuIHJlcG9ydCBpcyBleGVjdXRlZFxuICAgKi9cbiAgI2ZldGNoRGF0YSA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZ3JpZCgpICYmIHRoaXMudm0uYWxsb3dGZXRjaERhdGEoKSAmJiB0aGlzLnZtLnNob3VsZEV4ZWN1dGVSZXBvcnQoKSkge1xuICAgICAgdGhpcy5ncmlkKCk/LnJlZnJlc2goKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuXG4gIHByb3RlY3RlZCByZWFkb25seSBsYXlvdXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICh0aGlzLnZtLmN1cnJlbnRMYXlvdXQoKT8ubGF5b3V0IGFzIEFYUFJlcG9ydFRhYmxlTGF5b3V0KSE7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZSh7XG4gICAgbG9hZDogYXN5bmMgKGU6IEFYRGF0YVNvdXJjZVF1ZXJ5KSA9PiB7XG4gICAgICBpZiAoIXRoaXMudm0uYWxsb3dGZXRjaERhdGEoKSkge1xuICAgICAgICByZXR1cm4geyBpdGVtczogW10sIHRvdGFsOiAwIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy52bS5mZXRjaERhdGEoZSlcbiAgICAgIGlmICghcmVzdWx0Py5kYXRhIHx8IHJlc3VsdC5kYXRhLnR5cGUgIT09ICd0YWJsZScpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignaW52YWxpZCB0YWJsZSByZXN1bHQnKTtcbiAgICAgICAgcmV0dXJuIHsgaXRlbXM6IFtdLCB0b3RhbDogMCB9XG4gICAgICB9O1xuXG4gICAgICBsZXQgaXRlbXM6IGFueVtdID0gcmVzdWx0LmRhdGEuaXRlbXMgYXMgYW55W10gPz8gW107XG4gICAgICBsZXQgdG90YWwgPSByZXN1bHQuZGF0YS50b3RhbCB8fCAwO1xuXG4gICAgICByZXR1cm4geyBpdGVtcywgdG90YWwgfTtcbiAgICB9LFxuICAgIHBhZ2VTaXplOiAxMCxcbiAgICBrZXk6ICdpZCdcbiAgfSk7XG5cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5sYXlvdXQoKS5jb2x1bW5zPy5tYXAoKGNvbDogQVhQUmVwb3J0Q29sdW1uKSA9PiAoe1xuICAgICAgZmllbGQ6IGNvbC5maWVsZCxcbiAgICAgIHRpdGxlOiBjb2wudGl0bGUgfHwgY29sLmZpZWxkLFxuICAgICAgd2lkdGg6IGNvbC53aWR0aCB8fCAnMTUwcHgnLFxuICAgICAgdmlzaWJsZTogY29sLnZpc2libGUgIT09IGZhbHNlLFxuICAgICAgYWxpZ246IGNvbC5hbGlnbiB8fCAnbGVmdCcsXG4gICAgICB3aWRnZXQ6IHsgLi4uY29sLndpZGdldCwgcGF0aDogY29sLmZpZWxkIH0gYXMgQVhQV2lkZ2V0Q29sdW1uTm9kZVxuICAgIH0pKSB8fCBbXTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2luYXRpb25FbmFibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmxheW91dCgpLm9wdGlvbnM/LnBhZ2luYXRpb24gIT09IGZhbHNlO1xuICB9KTtcblxuXG4gIHByb3RlY3RlZCByZWFkb25seSBwcmltYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQ8QVhSb3dDb21tYW5kSXRlbVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmlsdGVyKGEgPT4gYS5wcmlvcml0eSA9PT0gJ3ByaW1hcnknKT8ubWFwKGEgPT4gdGhpcy5jb252ZXJ0VG9Sb3dDb21tYW5kSXRlbShhKSkgfHwgW107XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBoYXNQcmltYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnByaW1hcnlSb3dBY3Rpb24oKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Vjb25kYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQ8QVhSb3dDb21tYW5kSXRlbVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmlsdGVyKGEgPT4gYS5wcmlvcml0eSA9PT0gJ3NlY29uZGFyeScpPy5tYXAoYSA9PiB0aGlzLmNvbnZlcnRUb1Jvd0NvbW1hbmRJdGVtKGEpKSB8fCBbXTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc1NlY29uZGFyeVJvd0FjdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWNvbmRhcnlSb3dBY3Rpb24oKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFJvd0FjdGlvbiA9IGNvbXB1dGVkPEFYUm93Q29tbWFuZEl0ZW0gfCBudWxsPigoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdEFjdGlvbiA9IHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmluZChhID0+IGEuZGVmYXVsdCk7XG4gICAgaWYgKCFkZWZhdWx0QWN0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRvUm93Q29tbWFuZEl0ZW0oZGVmYXVsdEFjdGlvbik7XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVycyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgY29udmVydFRvUm93Q29tbWFuZEl0ZW0oYWN0aW9uOiBBWFBSZXBvcnRUYWJsZUxheW91dFJvd0FjdGlvbik6IEFYUm93Q29tbWFuZEl0ZW0ge1xuICAgIGNvbnN0IHN5c3RlbUFjdGlvbiA9IGdldFN5c3RlbUFjdGlvbnMoYWN0aW9uLnR5cGUgYXMgQVhQU3lzdGVtQWN0aW9uVHlwZSk7XG4gICAgaWYgKCFzeXN0ZW1BY3Rpb24pIHtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvbjogYWN0aW9uLmljb24gPz8gJ2ZhLWxpZ2h0IGZhLWV5ZScsXG4gICAgICAgIGljb25Pbmx5OiBhY3Rpb24uaWNvbk9ubHkgPz8gdHJ1ZSxcbiAgICAgICAgdGV4dDogYWN0aW9uLnRpdGxlLFxuICAgICAgICBuYW1lOiBhY3Rpb24uY29tbWFuZD8ubmFtZSxcbiAgICAgICAgZGl2aWRlZDogYWN0aW9uLmJyZWFrLFxuICAgICAgICBjb2xvcjogYWN0aW9uLmNvbG9yLFxuICAgICAgfSBhcyBBWFJvd0NvbW1hbmRJdGVtO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0QWN0aW9uID0gYXBwbHlTeXN0ZW1BY3Rpb25EZWZhdWx0KGFjdGlvbiwgc3lzdGVtQWN0aW9uLmtleSBhcyBBWFBTeXN0ZW1BY3Rpb25UeXBlKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWNvbjogZGVmYXVsdEFjdGlvbi5pY29uID8/ICdmYS1saWdodCBmYS1leWUnLFxuICAgICAgdGV4dDogZGVmYXVsdEFjdGlvbi50aXRsZSxcbiAgICAgIG5hbWU6IGFjdGlvbi5jb21tYW5kPy5uYW1lLFxuICAgICAgZGl2aWRlZDogZGVmYXVsdEFjdGlvbi5icmVhayxcbiAgICAgIGNvbG9yOiBkZWZhdWx0QWN0aW9uLmNvbG9yLFxuICAgIH0gYXMgQVhSb3dDb21tYW5kSXRlbTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG59ICIsIjxheC1kYXRhLXRhYmxlXG4gICNncmlkXG4gIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICBbcGFnaW5nXT1cInRydWVcIlxuICAob25Sb3dEYkNsaWNrKT1cImhhbmRsZURiUm93Q2xpY2soJGV2ZW50KVwiXG4gIGNsYXNzPVwiYXgtZmxleC0xXCJcbj5cbiAgPCEtLSBEeW5hbWljIGNvbHVtbnMgYmFzZWQgb24gY29uZmlndXJhdGlvbiAtLT5cbiAgPGF4LWluZGV4LWNvbHVtbiBmaXhlZD1cInN0YXJ0XCIgW3dpZHRoXT1cIic4MHB4J1wiIFtwYWRaZXJvXT1cInRydWVcIj48L2F4LWluZGV4LWNvbHVtbj5cbiAgQGlmICh2bS5jYW5TZWxlY3RSb3dzKCkpIHtcbiAgICA8YXgtc2VsZWN0LWNvbHVtbiBmaXhlZD1cInN0YXJ0XCIgW3dpZHRoXT1cIic1MHB4J1wiPjwvYXgtc2VsZWN0LWNvbHVtbj5cbiAgfVxuICBAZm9yIChjb2x1bW4gb2YgY29sdW1ucygpOyB0cmFjayBjb2x1bW4uZmllbGQpIHtcbiAgICBAaWYgKGNvbHVtbi52aXNpYmxlKSB7XG4gICAgICA8YXhwLXdpZGdldC1jb2x1bW4tcmVuZGVyZXJcbiAgICAgICAgW2N1c3RvbVdpZHRoXT1cImNvbHVtbi53aWR0aCArICdweCdcIlxuICAgICAgICBbY2FwdGlvbl09XCIoY29sdW1uLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgIFtub2RlXT1cImNvbHVtbi53aWRnZXQhXCJcbiAgICAgID48L2F4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyPlxuICAgIH1cbiAgfVxuICBAaWYgKGhhc1ByaW1hcnlSb3dBY3Rpb24oKSkge1xuICAgIDxheC1jb21tYW5kLWNvbHVtblxuICAgICAgZml4ZWQ9XCJlbmRcIlxuICAgICAgW3dpZHRoXT1cInByaW1hcnlSb3dBY3Rpb24oKS5sZW5ndGggKiA3MCArICdweCdcIlxuICAgICAgW2l0ZW1zXT1cInByaW1hcnlSb3dBY3Rpb24oKVwiXG4gICAgICAob25JdGVtQ2xpY2spPVwiaGFuZGxlUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgPjwvYXgtY29tbWFuZC1jb2x1bW4+XG4gIH1cbiAgQGlmIChoYXNTZWNvbmRhcnlSb3dBY3Rpb24oKSkge1xuICAgIDxheC1kcm9wZG93bi1jb21tYW5kLWNvbHVtblxuICAgICAgZml4ZWQ9XCJlbmRcIlxuICAgICAgW3dpZHRoXT1cIic2MHB4J1wiXG4gICAgICBbaXRlbXNdPVwic2Vjb25kYXJ5Um93QWN0aW9uKClcIlxuICAgICAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZVJvd0NsaWNrKCRldmVudClcIlxuICAgID48L2F4LWRyb3Bkb3duLWNvbW1hbmQtY29sdW1uPlxuICB9XG48L2F4LWRhdGEtdGFibGU+XG4iXX0=","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXLoadingDialogModule, AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPDeviceService, } from '@acorex/platform/core';\nimport { AXPLayoutRendererComponent } from '@acorex/platform/layout/builder';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutStartSideComponent, } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, untracked, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AXPReportViewerViewModel } from '../report-viewer.viewmodel';\nimport { AXPReportChartViewComponent } from '../views/report-chart-view/report-chart-view.component';\nimport { AXPReportTableViewComponent } from '../views/report-table-view/report-table-view.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/core/translation\";\nimport * as i5 from \"@acorex/components/dropdown\";\nexport class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super();\n //#region ---- Dependencies ----\n this.layoutService = inject(AXPLayoutThemeService);\n this.deviceService = inject(AXPDeviceService);\n this.route = inject(ActivatedRoute);\n this.router = inject(Router);\n this.unsubscriber = inject(AXUnsubscriber);\n this.loadingDialog = inject(AXLoadingDialogService);\n this.destroyRef = inject(DestroyRef);\n //#endregion\n //#region ---- Inputs ----\n this.reportId = input(...(ngDevMode ? [undefined, { debugName: \"reportId\" }] : []));\n this.reportParameters = input({}, ...(ngDevMode ? [{ debugName: \"reportParameters\" }] : []));\n //#endregion\n //#region ---- ViewChildren ----\n this.filtersForm = viewChild('filtersForm', ...(ngDevMode ? [{ debugName: \"filtersForm\" }] : []));\n //#endregion\n //#region ---- ViewModel ----\n this.vm = inject(AXPReportViewerViewModel);\n //#endregion\n //#region ---- Effects ----\n this.watchNavigationLoading = effect(() => {\n const isBusy = this.vm.isLoading() || this.vm.isExecuting();\n untracked(() => {\n this.layoutService.setNavigationLoading(isBusy);\n //\n if (isBusy) {\n void this.openContentLoading();\n }\n else {\n this.closeContentLoading();\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"watchNavigationLoading\" }] : []));\n //#endregion\n this.loadingDialogRef = null;\n this.isDialogOpening = false;\n //#region ---- Computed Properties ----\n this.showFiltersPanel = () => this.deviceService.isLarge();\n this.showReportDisplay = () => this.deviceService.isLarge() || (this.deviceService.isSmall() && this.vm.hasBeenExecuted());\n this.baseRoutes = [this.sessionService.application?.name, 'report-management'];\n //#endregion\n //#region ---- Layout Configurations ----\n this.defaultLayout = () => ({\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 6 },\n lg: { colSpan: 12 },\n },\n });\n this.compactLayout = () => ({\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 4 },\n lg: { colSpan: 3 },\n },\n });\n this.destroyRef.onDestroy(() => this.closeContentLoading());\n }\n //#endregion\n //#region ---- Lifecycle ----\n async ngOnInit() {\n await super.ngOnInit();\n // Subscribe to route parameter changes for dynamic report loading\n this.unsubscriber.takeUntilDestroy(this.route.paramMap).subscribe(async (params) => {\n const reportId = params.get('reportId') || this.route.snapshot.queryParamMap.get('reportId') || this.reportId();\n if (reportId) {\n await this.loadReportAndRefresh(reportId);\n }\n });\n }\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n //#endregion\n //#region ---- Helper Methods ----\n async loadReportAndRefresh(reportId) {\n await this.vm.loadReport(reportId);\n // Force refresh of page layout (breadcrumbs, title, etc.) after report loads\n this.recompute();\n // Handle initial parameters from query string\n const queryParams = this.route.snapshot.queryParams;\n const initialParams = { ...queryParams };\n delete initialParams['reportId']; // Remove reportId from parameters\n // Parse filter context values coming from URL (they are strings)\n const parsedInitialParams = this.parseFilterContextFromUrl(initialParams);\n // Merge with component input parameters\n const allParams = { ...parsedInitialParams, ...this.reportParameters() };\n if (Object.keys(allParams).length > 0) {\n console.log('Applying initial parameters:', allParams);\n this.vm.updateFilterContext(allParams);\n // Auto-execute if parameters are provided\n setTimeout(async () => {\n await this.vm.executeReport();\n }, 500); // Small delay to ensure form is ready\n }\n }\n async openContentLoading() {\n if (this.loadingDialogRef || this.isDialogOpening) {\n return;\n }\n this.isDialogOpening = true;\n try {\n const [title, description, cancelText] = await Promise.all([\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.in-progress-title'),\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.in-progress-description'),\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.cancel-button'),\n ]);\n this.loadingDialogRef = this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n progressColor: 'primary',\n text: description,\n buttons: [\n {\n text: cancelText,\n color: 'danger',\n onClick: () => {\n this.closeContentLoading();\n this.vm.cancel();\n },\n },\n ],\n });\n }\n finally {\n this.isDialogOpening = false;\n }\n }\n closeContentLoading() {\n if (!this.loadingDialogRef) {\n return;\n }\n this.loadingDialogRef.close();\n this.loadingDialogRef = null;\n }\n /**\n * Synchronizes filter context to URL query parameters using dot notation\n * @param filterContext The current filter context to sync\n */\n syncFiltersToUrl(filterContext) {\n // Get current query params\n const currentParams = this.route.snapshot.queryParams;\n const reportId = currentParams['reportId'];\n // Get all filter keys from current params (excluding reportId and internal fields)\n const currentFilterKeys = new Set();\n Object.keys(currentParams).forEach((key) => {\n if (key !== 'reportId' &&\n !key.endsWith('EditorObj') &&\n !key.startsWith('__') &&\n !key.endsWith('EditorValue') &&\n !key.includes('.displayText')) {\n // Extract root key (before first dot) for filter identification\n const rootKey = key.includes('.') ? key.split('.')[0] : key;\n currentFilterKeys.add(rootKey);\n }\n });\n // Build new query params - start with current params and remove filter-related ones\n const queryParams = { ...currentParams };\n // Remove all filter-related params first (we'll add them back if they have values)\n Object.keys(queryParams).forEach((key) => {\n if (key !== 'reportId' &&\n !key.endsWith('EditorObj') &&\n !key.startsWith('__') &&\n !key.endsWith('EditorValue') &&\n !key.includes('.displayText')) {\n delete queryParams[key];\n }\n });\n const processedFilterKeys = new Set();\n // Add filter params that have values\n Object.keys(filterContext).forEach((key) => {\n // Skip internal editor fields (EditorObj, __EditorValue)\n if (key.endsWith('EditorObj') || key.startsWith('__') || key.endsWith('EditorValue')) {\n return;\n }\n processedFilterKeys.add(key);\n const value = filterContext[key];\n // Check if value is empty (null, undefined, empty string, or empty array)\n const isEmpty = this.isFilterValueEmpty(value);\n if (!isEmpty) {\n const flattened = this.flattenToDotNotation(key, value);\n Object.assign(queryParams, flattened);\n }\n // If empty, we don't add it to queryParams, so it will be removed from URL\n });\n // Remove filter keys that are no longer in filterContext\n currentFilterKeys.forEach((filterKey) => {\n if (!processedFilterKeys.has(filterKey)) {\n // This filter was removed - ensure all related params are removed\n Object.keys(currentParams).forEach((paramKey) => {\n if (paramKey === filterKey || paramKey.startsWith(`${filterKey}.`)) {\n delete queryParams[paramKey];\n }\n });\n }\n });\n // Preserve reportId if exists\n if (reportId) {\n queryParams['reportId'] = String(reportId);\n }\n else {\n delete queryParams['reportId'];\n }\n // Update URL without reloading\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true, // Don't add to browser history\n });\n }\n /**\n * Checks if a filter value is considered empty\n */\n isFilterValueEmpty(value) {\n if (value === null || value === undefined || value === '') {\n return true;\n }\n // Check if it's a filter object with empty value\n if (typeof value === 'object' && !Array.isArray(value)) {\n const filterObj = value;\n const filterValue = filterObj.value;\n if (filterValue === null || filterValue === undefined || filterValue === '') {\n return true;\n }\n if (Array.isArray(filterValue) && filterValue.length === 0) {\n return true;\n }\n // Check nested object values\n if (typeof filterValue === 'object' && !Array.isArray(filterValue)) {\n const hasAnyValue = Object.values(filterValue).some((v) => v !== null && v !== undefined && v !== '');\n return !hasAnyValue;\n }\n }\n // Check if it's an empty array\n if (Array.isArray(value) && value.length === 0) {\n return true;\n }\n return false;\n }\n /**\n * Flattens filter context to dot notation query parameters\n * Only includes operation.type and value - skips displayText and other fields\n * Example: { operation: { type: 'in' }, value: ['POST', 'GET'] }\n * -> { 'fieldName.operation.type': 'in', 'fieldName.value': 'POST,GET' }\n */\n flattenToDotNotation(prefix, value) {\n const result = {};\n if (value == null) {\n return result;\n }\n // Handle filter context object - only extract operation.type and value\n if (typeof value === 'object' && !Array.isArray(value)) {\n const filterObj = value;\n // Extract operation.type if exists\n if (filterObj.operation?.type) {\n result[`${prefix}.operation.type`] = String(filterObj.operation.type);\n }\n // Extract value - handle arrays and primitives\n if (filterObj.value !== undefined && filterObj.value !== null && filterObj.value !== '') {\n if (Array.isArray(filterObj.value)) {\n if (filterObj.value.length > 0) {\n result[`${prefix}.value`] = filterObj.value.map((v) => String(v)).join(',');\n }\n }\n else if (typeof filterObj.value === 'object') {\n // If value is an object, flatten it recursively\n const flattenedValue = this.flattenValueObject(filterObj.value);\n Object.assign(result, flattenedValue);\n }\n else {\n result[`${prefix}.value`] = String(filterObj.value);\n }\n }\n return result;\n }\n // Handle primitives directly\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n result[prefix] = String(value);\n return result;\n }\n // Handle arrays - join with comma\n if (Array.isArray(value)) {\n if (value.length > 0) {\n result[prefix] = value.map(v => String(v)).join(',');\n }\n return result;\n }\n // Fallback: convert to string\n result[prefix] = String(value);\n return result;\n }\n /**\n * Flattens a value object (for nested objects in value field)\n */\n flattenValueObject(obj, prefix = '') {\n const result = {};\n if (obj == null || typeof obj !== 'object') {\n return result;\n }\n for (const [key, val] of Object.entries(obj)) {\n const newPrefix = prefix ? `${prefix}.${key}` : key;\n if (val == null) {\n continue;\n }\n if (typeof val === 'string' || typeof val === 'number' || typeof val === 'boolean') {\n result[newPrefix] = String(val);\n }\n else if (Array.isArray(val)) {\n if (val.length > 0) {\n result[newPrefix] = val.map((v) => String(v)).join(',');\n }\n }\n else if (typeof val === 'object') {\n const flattened = this.flattenValueObject(val, newPrefix);\n Object.assign(result, flattened);\n }\n }\n return result;\n }\n /**\n * Reconstructs filter context from dot notation query parameters\n * Only parses operation.type and value - ignores other fields\n * Example: { 'fieldName.operation.type': 'in', 'fieldName.value': 'POST,GET' }\n * -> { fieldName: { operation: { type: 'in' }, value: ['POST', 'GET'] } }\n */\n parseFilterContextFromUrl(params) {\n const result = {};\n // Filter out reportId and internal editor fields\n const filteredParams = {};\n for (const [key, value] of Object.entries(params)) {\n // Skip reportId and internal editor fields (EditorObj, __EditorValue, displayText)\n if (key !== 'reportId' &&\n !key.endsWith('EditorObj') &&\n !key.startsWith('__') &&\n !key.endsWith('EditorValue') &&\n !key.includes('.displayText')) {\n filteredParams[key] = value;\n }\n }\n // Group by root key (before first dot)\n for (const [key, value] of Object.entries(filteredParams)) {\n if (!key.includes('.')) {\n // Simple key without dot notation - skip (we only want operation.type and value)\n continue;\n }\n // Split by dot and reconstruct nested structure\n const parts = key.split('.');\n const rootKey = parts[0];\n const path = parts.slice(1);\n // Only process operation.type and value paths\n if (path.length === 2 && path[0] === 'operation' && path[1] === 'type') {\n // operation.type\n if (!result[rootKey]) {\n result[rootKey] = { operation: {} };\n }\n if (!result[rootKey].operation) {\n result[rootKey].operation = {};\n }\n result[rootKey].operation.type = String(value);\n }\n else if (path.length === 1 && path[0] === 'value') {\n // value\n if (!result[rootKey]) {\n result[rootKey] = {};\n }\n result[rootKey].value = this.parseValue(String(value));\n }\n else if (path.length > 1 && path[0] === 'value') {\n // nested value object (e.g., value.from, value.to for between)\n if (!result[rootKey]) {\n result[rootKey] = {};\n }\n if (!result[rootKey].value) {\n result[rootKey].value = {};\n }\n const valuePath = path.slice(1);\n this.setNestedValue(result[rootKey].value, valuePath, this.parseValue(String(value)));\n }\n }\n // Post-process: Convert values to arrays if operation.type is 'in' or 'notIn'\n // Also reconstruct EditorObj for lookup widgets (from value only, no displayText)\n for (const [key, value] of Object.entries(result)) {\n if (value && typeof value === 'object' && value.operation?.type) {\n const operationType = value.operation.type;\n // If operation is 'in' or 'notIn', ensure value is an array\n if ((operationType === 'in' || operationType === 'notIn') && typeof value.value === 'string') {\n // Convert comma-separated string to array\n value.value = value.value.split(',').map((v) => v.trim()).filter((v) => v !== '');\n }\n // Reconstruct EditorObj for lookup widgets from value only\n // This is needed because lookup widget expects EditorObj to exist\n if (value.value !== undefined && value.value !== null && value.value !== '') {\n const editorObjKey = `${key}EditorObj`;\n const valueField = 'id'; // Default value field for lookup\n const textField = 'title'; // Default text field for lookup\n if (operationType === 'in' || operationType === 'notIn') {\n // Multiple selection: create array of objects with value as both id and title\n const values = Array.isArray(value.value) ? value.value : [value.value];\n result[editorObjKey] = values.map((val) => ({\n [valueField]: val,\n [textField]: val // Use value as title since we don't have displayText\n }));\n }\n else {\n // Single selection: create single object\n result[editorObjKey] = {\n [valueField]: value.value,\n [textField]: value.value // Use value as title since we don't have displayText\n };\n }\n }\n }\n }\n return result;\n }\n /**\n * Sets a value in a nested object using a path array\n */\n setNestedValue(obj, path, value) {\n let current = obj;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n if (!current[key] || typeof current[key] !== 'object') {\n current[key] = {};\n }\n current = current[key];\n }\n const lastKey = path[path.length - 1];\n current[lastKey] = value;\n }\n /**\n * Parses a string value, handling arrays (comma-separated) and primitives\n */\n parseValue(value) {\n if (value === '') {\n return value;\n }\n // Check if it's a comma-separated array\n if (value.includes(',')) {\n return value.split(',').map(v => this.parsePrimitive(v.trim()));\n }\n return this.parsePrimitive(value);\n }\n /**\n * Parses a primitive value\n * For query params, we keep everything as string to match user requirement\n * Arrays are handled separately in parseValue\n */\n parsePrimitive(value) {\n return value;\n }\n //#endregion\n //#region ---- Event Handlers ----\n handleFiltersChange(event) {\n this.vm.updateFilterContext(event);\n this.syncFiltersToUrl(event);\n }\n handleFiltersInitiated(event) {\n this.vm.updateFilterContext(event);\n }\n async handleExecuteReport() {\n const isValid = await this.filtersForm()?.validate();\n if (!isValid?.result) {\n return;\n }\n await this.vm.executeReport();\n }\n handleRefresh() {\n this.vm.refresh();\n }\n handleClearFilters() {\n this.vm.clearFilters();\n // Reset form if available\n const form = this.filtersForm();\n if (form) {\n form.reset();\n }\n // Clear URL query parameters (preserve reportId if exists)\n const currentParams = this.route.snapshot.queryParams;\n const reportId = currentParams['reportId'];\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: reportId ? { reportId } : {},\n replaceUrl: true,\n });\n }\n //#endregion\n //#region ---- Page Configuration Overrides ----\n async getPageBreadcrumbs() {\n const breadcrumbs = [\n {\n name: 'reports',\n title: await this.translateService.translateAsync('@report-management:module.menus.root.title'),\n command: {\n name: 'navigate-to-reports',\n },\n },\n ];\n // Add categories path\n const categoriesPath = this.vm.categoriesPath();\n if (categoriesPath && categoriesPath.length > 0) {\n let urlParts = [...this.baseRoutes, 'reports'];\n for (const category of categoriesPath) {\n urlParts.push(category.id);\n breadcrumbs.push({\n name: category.id,\n title: category.title,\n command: {\n name: 'navigate-to-category',\n options: {\n path: [...urlParts],\n },\n },\n });\n }\n }\n // Add report title as final breadcrumb\n const reportDefinition = this.vm.reportDefinition();\n if (reportDefinition) {\n breadcrumbs.push({\n name: 'report-viewer',\n title: reportDefinition.title,\n });\n }\n return breadcrumbs;\n }\n async getPageTitle() {\n const reportDefinition = this.vm.reportDefinition();\n if (reportDefinition) {\n return reportDefinition.title;\n }\n return await this.translateService.translateAsync('@report-management:report-viewer.components.report-viewer.title');\n }\n async getPageDescription() {\n const reportDefinition = this.vm.reportDefinition();\n return reportDefinition?.description || null;\n }\n async getBackButton() {\n // On mobile, if report has been executed (showing report), show \"Filters\" as back button\n if (this.deviceService.isSmall() && this.vm.hasBeenExecuted()) {\n return {\n title: await this.translateService.translateAsync('@general:terms.interface.filter.title'),\n };\n }\n const categoriesPath = this.vm.categoriesPath();\n if (!categoriesPath || categoriesPath.length === 0) {\n // If no categories path, go back to reports root\n return {\n title: await this.translateService.translateAsync('@report-management:report-runner.terms.menu-title'),\n };\n }\n if (categoriesPath.length === 1) {\n // If only one category, go back to reports root\n return {\n title: await this.translateService.translateAsync('@report-management:report-runner.terms.menu-title'),\n };\n }\n // Go back to parent category\n const parentCategory = categoriesPath[categoriesPath.length - 1];\n return {\n title: parentCategory.title,\n };\n }\n async onBackButtonClick() {\n // On mobile, if report has been executed (showing report), go back to filters\n if (this.deviceService.isSmall() && this.vm.hasBeenExecuted()) {\n this.vm.clearExecutionState();\n return;\n }\n const categoriesPath = this.vm.categoriesPath();\n if (!categoriesPath || categoriesPath.length <= 1) {\n // Navigate back to reports root\n await this.router.navigate([...this.baseRoutes, 'reports']);\n }\n else {\n // Navigate to parent category\n let urlParts = [...this.baseRoutes, 'reports'];\n for (const cat of categoriesPath) {\n urlParts.push(cat.id);\n }\n await this.router.navigate(urlParts);\n }\n }\n async execute(command) {\n switch (command.name) {\n case 'execute-report':\n await this.handleExecuteReport();\n break;\n case 'refresh-report':\n this.handleRefresh();\n break;\n case 'reset-filters':\n this.handleClearFilters();\n break;\n case 'navigate-to-reports':\n await this.router.navigate([...this.baseRoutes, 'reports']);\n break;\n case 'navigate-to-category':\n const path = command.options?.['path'];\n if (path) {\n await this.router.navigate(path);\n }\n break;\n default:\n console.warn(`Unknown command: ${command.name}`);\n break;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportViewerPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportViewerPageComponent, isStandalone: true, selector: \"axp-report-viewer-page\", inputs: { reportId: { classPropertyName: \"reportId\", publicName: \"reportId\", isSignal: true, isRequired: false, transformFunction: null }, reportParameters: { classPropertyName: \"reportParameters\", publicName: \"reportParameters\", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: \"axp-report-viewer-page\" }, providers: [\n AXUnsubscriber,\n AXPReportViewerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPReportViewerPageComponent,\n },\n ], viewQueries: [{ propertyName: \"filtersForm\", first: true, predicate: [\"filtersForm\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <!-- Left Panel: Filters (Always visible for desktop) -->\\n @if (showFiltersPanel()) {\\n <axp-layout-start-side>\\n <axp-layout-header>\\n <axp-layout-title>\\n {{ t('@report-management:report-viewer.components.filters.title') | async }}\\n </axp-layout-title>\\n </axp-layout-header>\\n <axp-layout-content>\\n <axp-layout-renderer\\n #filtersForm\\n [layout]=\\\"vm.formDefinition()\\\"\\n [context]=\\\"vm.filterContext()\\\"\\n [look]=\\\"'group'\\\"\\n (contextChange)=\\\"handleFiltersChange($event)\\\"\\n (contextInitiated)=\\\"handleFiltersInitiated($event)\\\"\\n >\\n </axp-layout-renderer>\\n </axp-layout-content>\\n <axp-layout-footer class=\\\"ax-p-4 ax-border-t\\\" *translate=\\\"let t\\\">\\n @if (vm.hasUnappliedFilters()) {\\n <div class=\\\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\\\">\\n <ax-icon class=\\\"fa-light fa-exclamation-triangle ax-text-sm\\\"></ax-icon>\\n <span class=\\\"ax-text-xs\\\">{{\\n t('@report-management:report-viewer.components.filters.messages.warning.unapplied') | async\\n }}</span>\\n </div>\\n </div>\\n }\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.execute.title') | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-layout-footer>\\n </axp-layout-start-side>\\n }\\n <axp-page-toolbar>\\n <axp-layout-prefix>\\n @if (vm.hasMultipleLayouts() && showReportDisplay()) {\\n <ax-button [text]=\\\"vm.currentLayout()?.title\\\">\\n <ax-icon icon=\\\"fa-light {{ vm.currentLayout()?.icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n @for (layout of vm.availableLayouts(); track layout.id) {\\n <ax-button-item-list>\\n <ax-button-item\\n [text]=\\\"layout.title\\\"\\n [selected]=\\\"vm.currentLayout()?.id === layout.id\\\"\\n (onClick)=\\\"vm.switchLayout(layout.id)\\\"\\n >\\n <ax-icon icon=\\\"fa-light {{ layout.icon }}\\\"></ax-icon>\\n </ax-button-item>\\n </ax-button-item-list>\\n }\\n </ax-dropdown-panel>\\n </ax-button>\\n }\\n </axp-layout-prefix>\\n <axp-layout-suffix> </axp-layout-suffix>\\n </axp-page-toolbar>\\n\\n <!-- Main Content: Report Display -->\\n <axp-page-content class=\\\"ax-overflow-auto\\\">\\n @if (vm.hasError()) {\\n <!-- Error State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-exclamation-triangle\\\"\\n look=\\\"error\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || 'An unexpected error occurred'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.retry.title') | async\\\"\\n (onClick)=\\\"vm.clearError()\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-refresh\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else if (!vm.reportDefinition()) {\\n <!-- No Report Selected State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.description'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.browse-reports.title') | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-folder-open\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"reportDisplay\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Desktop: Report Display Area -->\\n<ng-template #reportDisplay>\\n @if (showReportDisplay()) {\\n <!-- Desktop & Mobile: Report Display Area -->\\n @if (vm.isTableLayout()) {\\n <axp-report-table-view> </axp-report-table-view>\\n } @else if (vm.isChartLayout()) {\\n <axp-report-chart-view> </axp-report-chart-view>\\n }\\n } @else {\\n <!-- Mobile: Show filters -->\\n <axp-layout-renderer #filtersForm [layout]=\\\"vm.formDefinition()\\\" [context]=\\\"vm.filterContext()\\\" [look]=\\\"'fieldset'\\\">\\n </axp-layout-renderer>\\n }\\n</ng-template>\\n\\n<!-- Mobile: Execute Button -->\\n@if (deviceService.isSmall() && !vm.hasBeenExecuted()) {\\n <axp-page-footer class=\\\"ax-p-2 ax-border-t\\\">\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"'@report-management:report-viewer.actions.execute.title' | translate | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-page-footer>\\n}\\n\", styles: [\".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:1rem}.axp-report-viewer-page .__mobile-filters{display:flex;height:100%;flex-direction:column;overflow-y:auto}.axp-report-viewer-page .__mobile-filters .__mobile-filters-content{flex:1 1 0%}.axp-report-viewer-page .__mobile-filters .__mobile-filters-footer{position:sticky;bottom:0;border-top-width:1px;padding-top:.5rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i2.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i2.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { 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-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i4.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i5.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"ngmodule\", type: AXLoadingDialogModule }, { kind: \"component\", type: \n //\n AXPLayoutRendererComponent, selector: \"axp-layout-renderer\", inputs: [\"layout\", \"context\", \"look\", \"mode\"], outputs: [\"contextChange\", \"contextInitiated\", \"validityChange\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutStartSideComponent, selector: \"axp-layout-page-start-side, axp-layout-start-side\" }, { kind: \"component\", type: AXPThemeLayoutHeaderComponent, selector: \"axp-layout-header\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPReportTableViewComponent, selector: \"axp-report-table-view\" }, { kind: \"component\", type: AXPThemeLayoutFooterComponent, selector: \"axp-layout-footer, axp-layout-page-footer\" }, { kind: \"component\", type: AXPReportChartViewComponent, selector: \"axp-report-chart-view\" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportViewerPageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-viewer-page', standalone: true, imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXBadgeModule,\n AXLoadingDialogModule,\n //\n AXPLayoutRendererComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutBlockComponent,\n AXPReportTableViewComponent,\n AXPThemeLayoutFooterComponent,\n AXPReportChartViewComponent,\n AXPStateMessageComponent,\n ], providers: [\n AXUnsubscriber,\n AXPReportViewerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPReportViewerPageComponent,\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <!-- Left Panel: Filters (Always visible for desktop) -->\\n @if (showFiltersPanel()) {\\n <axp-layout-start-side>\\n <axp-layout-header>\\n <axp-layout-title>\\n {{ t('@report-management:report-viewer.components.filters.title') | async }}\\n </axp-layout-title>\\n </axp-layout-header>\\n <axp-layout-content>\\n <axp-layout-renderer\\n #filtersForm\\n [layout]=\\\"vm.formDefinition()\\\"\\n [context]=\\\"vm.filterContext()\\\"\\n [look]=\\\"'group'\\\"\\n (contextChange)=\\\"handleFiltersChange($event)\\\"\\n (contextInitiated)=\\\"handleFiltersInitiated($event)\\\"\\n >\\n </axp-layout-renderer>\\n </axp-layout-content>\\n <axp-layout-footer class=\\\"ax-p-4 ax-border-t\\\" *translate=\\\"let t\\\">\\n @if (vm.hasUnappliedFilters()) {\\n <div class=\\\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\\\">\\n <ax-icon class=\\\"fa-light fa-exclamation-triangle ax-text-sm\\\"></ax-icon>\\n <span class=\\\"ax-text-xs\\\">{{\\n t('@report-management:report-viewer.components.filters.messages.warning.unapplied') | async\\n }}</span>\\n </div>\\n </div>\\n }\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.execute.title') | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-layout-footer>\\n </axp-layout-start-side>\\n }\\n <axp-page-toolbar>\\n <axp-layout-prefix>\\n @if (vm.hasMultipleLayouts() && showReportDisplay()) {\\n <ax-button [text]=\\\"vm.currentLayout()?.title\\\">\\n <ax-icon icon=\\\"fa-light {{ vm.currentLayout()?.icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n @for (layout of vm.availableLayouts(); track layout.id) {\\n <ax-button-item-list>\\n <ax-button-item\\n [text]=\\\"layout.title\\\"\\n [selected]=\\\"vm.currentLayout()?.id === layout.id\\\"\\n (onClick)=\\\"vm.switchLayout(layout.id)\\\"\\n >\\n <ax-icon icon=\\\"fa-light {{ layout.icon }}\\\"></ax-icon>\\n </ax-button-item>\\n </ax-button-item-list>\\n }\\n </ax-dropdown-panel>\\n </ax-button>\\n }\\n </axp-layout-prefix>\\n <axp-layout-suffix> </axp-layout-suffix>\\n </axp-page-toolbar>\\n\\n <!-- Main Content: Report Display -->\\n <axp-page-content class=\\\"ax-overflow-auto\\\">\\n @if (vm.hasError()) {\\n <!-- Error State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-exclamation-triangle\\\"\\n look=\\\"error\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || 'An unexpected error occurred'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.retry.title') | async\\\"\\n (onClick)=\\\"vm.clearError()\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-refresh\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else if (!vm.reportDefinition()) {\\n <!-- No Report Selected State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.description'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.browse-reports.title') | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-folder-open\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"reportDisplay\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Desktop: Report Display Area -->\\n<ng-template #reportDisplay>\\n @if (showReportDisplay()) {\\n <!-- Desktop & Mobile: Report Display Area -->\\n @if (vm.isTableLayout()) {\\n <axp-report-table-view> </axp-report-table-view>\\n } @else if (vm.isChartLayout()) {\\n <axp-report-chart-view> </axp-report-chart-view>\\n }\\n } @else {\\n <!-- Mobile: Show filters -->\\n <axp-layout-renderer #filtersForm [layout]=\\\"vm.formDefinition()\\\" [context]=\\\"vm.filterContext()\\\" [look]=\\\"'fieldset'\\\">\\n </axp-layout-renderer>\\n }\\n</ng-template>\\n\\n<!-- Mobile: Execute Button -->\\n@if (deviceService.isSmall() && !vm.hasBeenExecuted()) {\\n <axp-page-footer class=\\\"ax-p-2 ax-border-t\\\">\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"'@report-management:report-viewer.actions.execute.title' | translate | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-page-footer>\\n}\\n\", styles: [\".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:1rem}.axp-report-viewer-page .__mobile-filters{display:flex;height:100%;flex-direction:column;overflow-y:auto}.axp-report-viewer-page .__mobile-filters .__mobile-filters-content{flex:1 1 0%}.axp-report-viewer-page .__mobile-filters .__mobile-filters-footer{position:sticky;bottom:0;border-top-width:1px;padding-top:.5rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { reportId: [{ type: i0.Input, args: [{ isSignal: true, alias: \"reportId\", required: false }] }], reportParameters: [{ type: i0.Input, args: [{ isSignal: true, alias: \"reportParameters\", required: false }] }], filtersForm: [{ type: i0.ViewChild, args: ['filtersForm', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXdlci1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvcmVwb3J0LXZpZXdlci1wYWdlL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXItcGFnZS9yZXBvcnQtdmlld2VyLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFJTCxnQkFBZ0IsR0FHakIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFP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Q2Qsd0JBQXdCO3dCQUN4Qjs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDhCQUE4Qjt5QkFDMUM7cUJBQ0YsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7bVRBd0JtQixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYTG9hZGluZ0RpYWxvZ01vZHVsZSwgQVhMb2FkaW5nRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nLWRpYWxvZyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7XG4gIEFYUEJhY2tCdXR0b24sXG4gIEFYUEJyZWFkY3J1bWJJdGVtLFxuICBBWFBDb250ZXh0RGF0YSxcbiAgQVhQRGV2aWNlU2VydmljZSxcbiAgQVhQRXhlY3V0ZUNvbW1hbmQsXG4gIEFYUEdyaWRMYXlvdXRPcHRpb25zLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQTGF5b3V0UmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7XG4gIEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCxcbiAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgQVhQVGhlbWVMYXlvdXRGb290ZXJDb21wb25lbnQsXG4gIEFYUFRoZW1lTGF5b3V0SGVhZGVyQ29tcG9uZW50LFxuICBBWFBUaGVtZUxheW91dFN0YXJ0U2lkZUNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZSwgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRUaGVtZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3RoZW1lcy9zaGFyZWQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgdW50cmFja2VkLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsIH0gZnJvbSAnLi4vcmVwb3J0LXZpZXdlci52aWV3bW9kZWwnO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2hhcnRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vdmlld3MvcmVwb3J0LWNoYXJ0LXZpZXcvcmVwb3J0LWNoYXJ0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYUFJlcG9ydFRhYmxlVmlld0NvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXdzL3JlcG9ydC10YWJsZS12aWV3L3JlcG9ydC10YWJsZS12aWV3LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtdmlld2VyLXBhZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWEJhZGdlTW9kdWxlLFxuICAgIEFYTG9hZGluZ0RpYWxvZ01vZHVsZSxcbiAgICAvL1xuICAgIEFYUExheW91dFJlbmRlcmVyQ29tcG9uZW50LFxuICAgIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRTdGFydFNpZGVDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRIZWFkZXJDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgICBBWFBSZXBvcnRUYWJsZVZpZXdDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRGb290ZXJDb21wb25lbnQsXG4gICAgQVhQUmVwb3J0Q2hhcnRWaWV3Q29tcG9uZW50LFxuICAgIEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQVhVbnN1YnNjcmliZXIsXG4gICAgQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUFBhZ2VMYXlvdXRCYXNlLFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUFJlcG9ydFZpZXdlclBhZ2VDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ2F4cC1yZXBvcnQtdmlld2VyLXBhZ2UnIH0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUFJlcG9ydFZpZXdlclBhZ2VDb21wb25lbnQgZXh0ZW5kcyBBWFBQYWdlTGF5b3V0QmFzZUNvbXBvbmVudCB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dFRoZW1lU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkZXZpY2VTZXJ2aWNlID0gaW5qZWN0KEFYUERldmljZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRpbmdEaWFsb2cgPSBpbmplY3QoQVhMb2FkaW5nRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIElucHV0cyAgIC0tLS1cblxuICByZXBvcnRJZCA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVwb3J0UGFyYW1ldGVycyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIGFueT4+KHt9KTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFZpZXdDaGlsZHJlbiAgIC0tLS1cblxuICBwcml2YXRlIGZpbHRlcnNGb3JtID0gdmlld0NoaWxkPEFYUExheW91dFJlbmRlcmVyQ29tcG9uZW50PignZmlsdGVyc0Zvcm0nKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFZpZXdNb2RlbCAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEVmZmVjdHMgICAtLS0tXG5cbiAgcHJpdmF0ZSByZWFkb25seSB3YXRjaE5hdmlnYXRpb25Mb2FkaW5nID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpc0J1c3kgPSB0aGlzLnZtLmlzTG9hZGluZygpIHx8IHRoaXMudm0uaXNFeGVjdXRpbmcoKTtcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLnNldE5hdmlnYXRpb25Mb2FkaW5nKGlzQnVzeSk7XG4gICAgICAvL1xuICAgICAgaWYgKGlzQnVzeSkge1xuICAgICAgICB2b2lkIHRoaXMub3BlbkNvbnRlbnRMb2FkaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb3NlQ29udGVudExvYWRpbmcoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJpdmF0ZSBsb2FkaW5nRGlhbG9nUmVmOiB7IGNsb3NlOiAoKSA9PiB2b2lkIH0gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpc0RpYWxvZ09wZW5pbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gdGhpcy5jbG9zZUNvbnRlbnRMb2FkaW5nKCkpO1xuICB9XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb21wdXRlZCBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBzaG93RmlsdGVyc1BhbmVsID0gKCkgPT4gdGhpcy5kZXZpY2VTZXJ2aWNlLmlzTGFyZ2UoKTtcblxuICBwcm90ZWN0ZWQgc2hvd1JlcG9ydERpc3BsYXkgPSAoKSA9PlxuICAgIHRoaXMuZGV2aWNlU2VydmljZS5pc0xhcmdlKCkgfHwgKHRoaXMuZGV2aWNlU2VydmljZS5pc1NtYWxsKCkgJiYgdGhpcy52bS5oYXNCZWVuRXhlY3V0ZWQoKSk7XG5cbiAgcHJpdmF0ZSBiYXNlUm91dGVzID0gW3RoaXMuc2Vzc2lvblNlcnZpY2UuYXBwbGljYXRpb24/Lm5hbWUsICdyZXBvcnQtbWFuYWdlbWVudCddO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgTGF5b3V0IENvbmZpZ3VyYXRpb25zICAgLS0tLVxuXG4gIHByb3RlY3RlZCBkZWZhdWx0TGF5b3V0ID0gKCk6IEFYUEdyaWRMYXlvdXRPcHRpb25zID0+ICh7XG4gICAgcG9zaXRpb25zOiB7XG4gICAgICBzbTogeyBjb2xTcGFuOiAxMiB9LFxuICAgICAgbWQ6IHsgY29sU3BhbjogNiB9LFxuICAgICAgbGc6IHsgY29sU3BhbjogMTIgfSxcbiAgICB9LFxuICB9KTtcblxuICBwcm90ZWN0ZWQgY29tcGFjdExheW91dCA9ICgpOiBBWFBHcmlkTGF5b3V0T3B0aW9ucyA9PiAoe1xuICAgIHBvc2l0aW9uczoge1xuICAgICAgc206IHsgY29sU3BhbjogMTIgfSxcbiAgICAgIG1kOiB7IGNvbFNwYW46IDQgfSxcbiAgICAgIGxnOiB7IGNvbFNwYW46IDMgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIExpZmVjeWNsZSAgIC0tLS1cblxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHJvdXRlIHBhcmFtZXRlciBjaGFuZ2VzIGZvciBkeW5hbWljIHJlcG9ydCBsb2FkaW5nXG4gICAgdGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSh0aGlzLnJvdXRlLnBhcmFtTWFwKS5zdWJzY3JpYmUoYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0SWQgPSBwYXJhbXMuZ2V0KCdyZXBvcnRJZCcpIHx8IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3JlcG9ydElkJykgfHwgdGhpcy5yZXBvcnRJZCgpO1xuXG4gICAgICBpZiAocmVwb3J0SWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkUmVwb3J0QW5kUmVmcmVzaChyZXBvcnRJZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRWZmZWN0IHRvIGhhbmRsZSBkYXRhIGZldGNoaW5nIHdoZW4gY2hhcnQgY29uZmlndXJhdGlvbiBjaGFuZ2VzXG4gICAqL1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIE1ldGhvZHMgICAtLS0tXG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUmVwb3J0QW5kUmVmcmVzaChyZXBvcnRJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy52bS5sb2FkUmVwb3J0KHJlcG9ydElkKTtcblxuICAgIC8vIEZvcmNlIHJlZnJlc2ggb2YgcGFnZSBsYXlvdXQgKGJyZWFkY3J1bWJzLCB0aXRsZSwgZXRjLikgYWZ0ZXIgcmVwb3J0IGxvYWRzXG4gICAgdGhpcy5yZWNvbXB1dGUoKTtcblxuICAgIC8vIEhhbmRsZSBpbml0aWFsIHBhcmFtZXRlcnMgZnJvbSBxdWVyeSBzdHJpbmdcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgY29uc3QgaW5pdGlhbFBhcmFtcyA9IHsgLi4ucXVlcnlQYXJhbXMgfTtcbiAgICBkZWxldGUgaW5pdGlhbFBhcmFtc1sncmVwb3J0SWQnXTsgLy8gUmVtb3ZlIHJlcG9ydElkIGZyb20gcGFyYW1ldGVyc1xuXG4gICAgLy8gUGFyc2UgZmlsdGVyIGNvbnRleHQgdmFsdWVzIGNvbWluZyBmcm9tIFVSTCAodGhleSBhcmUgc3RyaW5ncylcbiAgICBjb25zdCBwYXJzZWRJbml0aWFsUGFyYW1zID0gdGhpcy5wYXJzZUZpbHRlckNvbnRleHRGcm9tVXJsKGluaXRpYWxQYXJhbXMpO1xuXG4gICAgLy8gTWVyZ2Ugd2l0aCBjb21wb25lbnQgaW5wdXQgcGFyYW1ldGVyc1xuICAgIGNvbnN0IGFsbFBhcmFtcyA9IHsgLi4ucGFyc2VkSW5pdGlhbFBhcmFtcywgLi4udGhpcy5yZXBvcnRQYXJhbWV0ZXJzKCkgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhhbGxQYXJhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdBcHBseWluZyBpbml0aWFsIHBhcmFtZXRlcnM6JywgYWxsUGFyYW1zKTtcbiAgICAgIHRoaXMudm0udXBkYXRlRmlsdGVyQ29udGV4dChhbGxQYXJhbXMpO1xuICAgICAgLy8gQXV0by1leGVjdXRlIGlmIHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkXG4gICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy52bS5leGVjdXRlUmVwb3J0KCk7XG4gICAgICB9LCA1MDApOyAvLyBTbWFsbCBkZWxheSB0byBlbnN1cmUgZm9ybSBpcyByZWFkeVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb3BlbkNvbnRlbnRMb2FkaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmxvYWRpbmdEaWFsb2dSZWYgfHwgdGhpcy5pc0RpYWxvZ09wZW5pbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzRGlhbG9nT3BlbmluZyA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgW3RpdGxlLCBkZXNjcmlwdGlvbiwgY2FuY2VsVGV4dF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMubG9hZGluZy5pbi1wcm9ncmVzcy10aXRsZScpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLm1lc3NhZ2VzLmxvYWRpbmcuaW4tcHJvZ3Jlc3MtZGVzY3JpcHRpb24nLFxuICAgICAgICApLFxuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMubG9hZGluZy5jYW5jZWwtYnV0dG9uJyksXG4gICAgICBdKTtcblxuICAgICAgdGhpcy5sb2FkaW5nRGlhbG9nUmVmID0gdGhpcy5sb2FkaW5nRGlhbG9nLnNob3coe1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgbW9kZTogJ2luZGV0ZXJtaW5hdGUnLFxuICAgICAgICBwcm9ncmVzc0NvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIHRleHQ6IGRlc2NyaXB0aW9uLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogY2FuY2VsVGV4dCxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZUNvbnRlbnRMb2FkaW5nKCk7XG4gICAgICAgICAgICAgIHRoaXMudm0uY2FuY2VsKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0RpYWxvZ09wZW5pbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlQ29udGVudExvYWRpbmcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmdEaWFsb2dSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRpbmdEaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB0aGlzLmxvYWRpbmdEaWFsb2dSZWYgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bmNocm9uaXplcyBmaWx0ZXIgY29udGV4dCB0byBVUkwgcXVlcnkgcGFyYW1ldGVycyB1c2luZyBkb3Qgbm90YXRpb25cbiAgICogQHBhcmFtIGZpbHRlckNvbnRleHQgVGhlIGN1cnJlbnQgZmlsdGVyIGNvbnRleHQgdG8gc3luY1xuICAgKi9cbiAgcHJpdmF0ZSBzeW5jRmlsdGVyc1RvVXJsKGZpbHRlckNvbnRleHQ6IEFYUENvbnRleHREYXRhKTogdm9pZCB7XG4gICAgLy8gR2V0IGN1cnJlbnQgcXVlcnkgcGFyYW1zXG4gICAgY29uc3QgY3VycmVudFBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgY29uc3QgcmVwb3J0SWQgPSBjdXJyZW50UGFyYW1zWydyZXBvcnRJZCddO1xuXG4gICAgLy8gR2V0IGFsbCBmaWx0ZXIga2V5cyBmcm9tIGN1cnJlbnQgcGFyYW1zIChleGNsdWRpbmcgcmVwb3J0SWQgYW5kIGludGVybmFsIGZpZWxkcylcbiAgICBjb25zdCBjdXJyZW50RmlsdGVyS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIE9iamVjdC5rZXlzKGN1cnJlbnRQYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBrZXkgIT09ICdyZXBvcnRJZCcgJiZcbiAgICAgICAgIWtleS5lbmRzV2l0aCgnRWRpdG9yT2JqJykgJiZcbiAgICAgICAgIWtleS5zdGFydHNXaXRoKCdfXycpICYmXG4gICAgICAgICFrZXkuZW5kc1dpdGgoJ0VkaXRvclZhbHVlJykgJiZcbiAgICAgICAgIWtleS5pbmNsdWRlcygnLmRpc3BsYXlUZXh0JylcbiAgICAgICkge1xuICAgICAgICAvLyBFeHRyYWN0IHJvb3Qga2V5IChiZWZvcmUgZmlyc3QgZG90KSBmb3IgZmlsdGVyIGlkZW50aWZpY2F0aW9uXG4gICAgICAgIGNvbnN0IHJvb3RLZXkgPSBrZXkuaW5jbHVkZXMoJy4nKSA/IGtleS5zcGxpdCgnLicpWzBdIDoga2V5O1xuICAgICAgICBjdXJyZW50RmlsdGVyS2V5cy5hZGQocm9vdEtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBCdWlsZCBuZXcgcXVlcnkgcGFyYW1zIC0gc3RhcnQgd2l0aCBjdXJyZW50IHBhcmFtcyBhbmQgcmVtb3ZlIGZpbHRlci1yZWxhdGVkIG9uZXNcbiAgICBjb25zdCBxdWVyeVBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA9IHsgLi4uY3VycmVudFBhcmFtcyB9O1xuICAgIFxuICAgIC8vIFJlbW92ZSBhbGwgZmlsdGVyLXJlbGF0ZWQgcGFyYW1zIGZpcnN0ICh3ZSdsbCBhZGQgdGhlbSBiYWNrIGlmIHRoZXkgaGF2ZSB2YWx1ZXMpXG4gICAgT2JqZWN0LmtleXMocXVlcnlQYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBrZXkgIT09ICdyZXBvcnRJZCcgJiZcbiAgICAgICAgIWtleS5lbmRzV2l0aCgnRWRpdG9yT2JqJykgJiZcbiAgICAgICAgIWtleS5zdGFydHNXaXRoKCdfXycpICYmXG4gICAgICAgICFrZXkuZW5kc1dpdGgoJ0VkaXRvclZhbHVlJykgJiZcbiAgICAgICAgIWtleS5pbmNsdWRlcygnLmRpc3BsYXlUZXh0JylcbiAgICAgICkge1xuICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHByb2Nlc3NlZEZpbHRlcktleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIC8vIEFkZCBmaWx0ZXIgcGFyYW1zIHRoYXQgaGF2ZSB2YWx1ZXNcbiAgICBPYmplY3Qua2V5cyhmaWx0ZXJDb250ZXh0KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIC8vIFNraXAgaW50ZXJuYWwgZWRpdG9yIGZpZWxkcyAoRWRpdG9yT2JqLCBfX0VkaXRvclZhbHVlKVxuICAgICAgaWYgKGtleS5lbmRzV2l0aCgnRWRpdG9yT2JqJykgfHwga2V5LnN0YXJ0c1dpdGgoJ19fJykgfHwga2V5LmVuZHNXaXRoKCdFZGl0b3JWYWx1ZScpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcHJvY2Vzc2VkRmlsdGVyS2V5cy5hZGQoa2V5KTtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyQ29udGV4dFtrZXldO1xuICAgICAgXG4gICAgICAvLyBDaGVjayBpZiB2YWx1ZSBpcyBlbXB0eSAobnVsbCwgdW5kZWZpbmVkLCBlbXB0eSBzdHJpbmcsIG9yIGVtcHR5IGFycmF5KVxuICAgICAgY29uc3QgaXNFbXB0eSA9IHRoaXMuaXNGaWx0ZXJWYWx1ZUVtcHR5KHZhbHVlKTtcbiAgICAgIFxuICAgICAgaWYgKCFpc0VtcHR5KSB7XG4gICAgICAgIGNvbnN0IGZsYXR0ZW5lZCA9IHRoaXMuZmxhdHRlblRvRG90Tm90YXRpb24oa2V5LCB2YWx1ZSk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24ocXVlcnlQYXJhbXMsIGZsYXR0ZW5lZCk7XG4gICAgICB9XG4gICAgICAvLyBJZiBlbXB0eSwgd2UgZG9uJ3QgYWRkIGl0IHRvIHF1ZXJ5UGFyYW1zLCBzbyBpdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSBVUkxcbiAgICB9KTtcblxuICAgIC8vIFJlbW92ZSBmaWx0ZXIga2V5cyB0aGF0IGFyZSBubyBsb25nZXIgaW4gZmlsdGVyQ29udGV4dFxuICAgIGN1cnJlbnRGaWx0ZXJLZXlzLmZvckVhY2goKGZpbHRlcktleSkgPT4ge1xuICAgICAgaWYgKCFwcm9jZXNzZWRGaWx0ZXJLZXlzLmhhcyhmaWx0ZXJLZXkpKSB7XG4gICAgICAgIC8vIFRoaXMgZmlsdGVyIHdhcyByZW1vdmVkIC0gZW5zdXJlIGFsbCByZWxhdGVkIHBhcmFtcyBhcmUgcmVtb3ZlZFxuICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50UGFyYW1zKS5mb3JFYWNoKChwYXJhbUtleSkgPT4ge1xuICAgICAgICAgIGlmIChwYXJhbUtleSA9PT0gZmlsdGVyS2V5IHx8IHBhcmFtS2V5LnN0YXJ0c1dpdGgoYCR7ZmlsdGVyS2V5fS5gKSkge1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zW3BhcmFtS2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gUHJlc2VydmUgcmVwb3J0SWQgaWYgZXhpc3RzXG4gICAgaWYgKHJlcG9ydElkKSB7XG4gICAgICBxdWVyeVBhcmFtc1sncmVwb3J0SWQnXSA9IFN0cmluZyhyZXBvcnRJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1sncmVwb3J0SWQnXTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgVVJMIHdpdGhvdXQgcmVsb2FkaW5nXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXMsXG4gICAgICByZXBsYWNlVXJsOiB0cnVlLCAvLyBEb24ndCBhZGQgdG8gYnJvd3NlciBoaXN0b3J5XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZmlsdGVyIHZhbHVlIGlzIGNvbnNpZGVyZWQgZW1wdHlcbiAgICovXG4gIHByaXZhdGUgaXNGaWx0ZXJWYWx1ZUVtcHR5KHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBpdCdzIGEgZmlsdGVyIG9iamVjdCB3aXRoIGVtcHR5IHZhbHVlXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBjb25zdCBmaWx0ZXJPYmogPSB2YWx1ZSBhcyBhbnk7XG4gICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGZpbHRlck9iai52YWx1ZTtcbiAgICAgIFxuICAgICAgaWYgKGZpbHRlclZhbHVlID09PSBudWxsIHx8IGZpbHRlclZhbHVlID09PSB1bmRlZmluZWQgfHwgZmlsdGVyVmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZSkgJiYgZmlsdGVyVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDaGVjayBuZXN0ZWQgb2JqZWN0IHZhbHVlc1xuICAgICAgaWYgKHR5cGVvZiBmaWx0ZXJWYWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGhhc0FueVZhbHVlID0gT2JqZWN0LnZhbHVlcyhmaWx0ZXJWYWx1ZSkuc29tZSgodikgPT4gdiAhPT0gbnVsbCAmJiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gJycpO1xuICAgICAgICByZXR1cm4gIWhhc0FueVZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGl0J3MgYW4gZW1wdHkgYXJyYXlcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRmxhdHRlbnMgZmlsdGVyIGNvbnRleHQgdG8gZG90IG5vdGF0aW9uIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogT25seSBpbmNsdWRlcyBvcGVyYXRpb24udHlwZSBhbmQgdmFsdWUgLSBza2lwcyBkaXNwbGF5VGV4dCBhbmQgb3RoZXIgZmllbGRzXG4gICAqIEV4YW1wbGU6IHsgb3BlcmF0aW9uOiB7IHR5cGU6ICdpbicgfSwgdmFsdWU6IFsnUE9TVCcsICdHRVQnXSB9IFxuICAgKiAgICAgICAgICAtPiB7ICdmaWVsZE5hbWUub3BlcmF0aW9uLnR5cGUnOiAnaW4nLCAnZmllbGROYW1lLnZhbHVlJzogJ1BPU1QsR0VUJyB9XG4gICAqL1xuICBwcml2YXRlIGZsYXR0ZW5Ub0RvdE5vdGF0aW9uKHByZWZpeDogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGZpbHRlciBjb250ZXh0IG9iamVjdCAtIG9ubHkgZXh0cmFjdCBvcGVyYXRpb24udHlwZSBhbmQgdmFsdWVcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGZpbHRlck9iaiA9IHZhbHVlIGFzIGFueTtcbiAgICAgIFxuICAgICAgLy8gRXh0cmFjdCBvcGVyYXRpb24udHlwZSBpZiBleGlzdHNcbiAgICAgIGlmIChmaWx0ZXJPYmoub3BlcmF0aW9uPy50eXBlKSB7XG4gICAgICAgIHJlc3VsdFtgJHtwcmVmaXh9Lm9wZXJhdGlvbi50eXBlYF0gPSBTdHJpbmcoZmlsdGVyT2JqLm9wZXJhdGlvbi50eXBlKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gRXh0cmFjdCB2YWx1ZSAtIGhhbmRsZSBhcnJheXMgYW5kIHByaW1pdGl2ZXNcbiAgICAgIGlmIChmaWx0ZXJPYmoudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJPYmoudmFsdWUgIT09IG51bGwgJiYgZmlsdGVyT2JqLnZhbHVlICE9PSAnJykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJPYmoudmFsdWUpKSB7XG4gICAgICAgICAgaWYgKGZpbHRlck9iai52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXN1bHRbYCR7cHJlZml4fS52YWx1ZWBdID0gZmlsdGVyT2JqLnZhbHVlLm1hcCgodjogYW55KSA9PiBTdHJpbmcodikpLmpvaW4oJywnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpbHRlck9iai52YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAvLyBJZiB2YWx1ZSBpcyBhbiBvYmplY3QsIGZsYXR0ZW4gaXQgcmVjdXJzaXZlbHlcbiAgICAgICAgICBjb25zdCBmbGF0dGVuZWRWYWx1ZSA9IHRoaXMuZmxhdHRlblZhbHVlT2JqZWN0KGZpbHRlck9iai52YWx1ZSk7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIGZsYXR0ZW5lZFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRbYCR7cHJlZml4fS52YWx1ZWBdID0gU3RyaW5nKGZpbHRlck9iai52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcHJpbWl0aXZlcyBkaXJlY3RseVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJlc3VsdFtwcmVmaXhdID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGFycmF5cyAtIGpvaW4gd2l0aCBjb21tYVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0W3ByZWZpeF0gPSB2YWx1ZS5tYXAodiA9PiBTdHJpbmcodikpLmpvaW4oJywnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IGNvbnZlcnQgdG8gc3RyaW5nXG4gICAgcmVzdWx0W3ByZWZpeF0gPSBTdHJpbmcodmFsdWUpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRmxhdHRlbnMgYSB2YWx1ZSBvYmplY3QgKGZvciBuZXN0ZWQgb2JqZWN0cyBpbiB2YWx1ZSBmaWVsZClcbiAgICovXG4gIHByaXZhdGUgZmxhdHRlblZhbHVlT2JqZWN0KG9iajogYW55LCBwcmVmaXggPSAnJyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgICBjb25zdCBuZXdQcmVmaXggPSBwcmVmaXggPyBgJHtwcmVmaXh9LiR7a2V5fWAgOiBrZXk7XG4gICAgICBcbiAgICAgIGlmICh2YWwgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXN1bHRbbmV3UHJlZml4XSA9IFN0cmluZyh2YWwpO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgaWYgKHZhbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmVzdWx0W25ld1ByZWZpeF0gPSB2YWwubWFwKCh2OiBhbnkpID0+IFN0cmluZyh2KSkuam9pbignLCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGZsYXR0ZW5lZCA9IHRoaXMuZmxhdHRlblZhbHVlT2JqZWN0KHZhbCwgbmV3UHJlZml4KTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIGZsYXR0ZW5lZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbnN0cnVjdHMgZmlsdGVyIGNvbnRleHQgZnJvbSBkb3Qgbm90YXRpb24gcXVlcnkgcGFyYW1ldGVyc1xuICAgKiBPbmx5IHBhcnNlcyBvcGVyYXRpb24udHlwZSBhbmQgdmFsdWUgLSBpZ25vcmVzIG90aGVyIGZpZWxkc1xuICAgKiBFeGFtcGxlOiB7ICdmaWVsZE5hbWUub3BlcmF0aW9uLnR5cGUnOiAnaW4nLCAnZmllbGROYW1lLnZhbHVlJzogJ1BPU1QsR0VUJyB9XG4gICAqICAgICAgICAgIC0+IHsgZmllbGROYW1lOiB7IG9wZXJhdGlvbjogeyB0eXBlOiAnaW4nIH0sIHZhbHVlOiBbJ1BPU1QnLCAnR0VUJ10gfSB9XG4gICAqL1xuICBwcml2YXRlIHBhcnNlRmlsdGVyQ29udGV4dEZyb21VcmwocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIC8vIEZpbHRlciBvdXQgcmVwb3J0SWQgYW5kIGludGVybmFsIGVkaXRvciBmaWVsZHNcbiAgICBjb25zdCBmaWx0ZXJlZFBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG4gICAgICAvLyBTa2lwIHJlcG9ydElkIGFuZCBpbnRlcm5hbCBlZGl0b3IgZmllbGRzIChFZGl0b3JPYmosIF9fRWRpdG9yVmFsdWUsIGRpc3BsYXlUZXh0KVxuICAgICAgaWYgKFxuICAgICAgICBrZXkgIT09ICdyZXBvcnRJZCcgJiYgXG4gICAgICAgICFrZXkuZW5kc1dpdGgoJ0VkaXRvck9iaicpICYmIFxuICAgICAgICAha2V5LnN0YXJ0c1dpdGgoJ19fJykgJiYgXG4gICAgICAgICFrZXkuZW5kc1dpdGgoJ0VkaXRvclZhbHVlJykgJiZcbiAgICAgICAgIWtleS5pbmNsdWRlcygnLmRpc3BsYXlUZXh0JylcbiAgICAgICkge1xuICAgICAgICBmaWx0ZXJlZFBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR3JvdXAgYnkgcm9vdCBrZXkgKGJlZm9yZSBmaXJzdCBkb3QpXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVyZWRQYXJhbXMpKSB7XG4gICAgICBpZiAoIWtleS5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgIC8vIFNpbXBsZSBrZXkgd2l0aG91dCBkb3Qgbm90YXRpb24gLSBza2lwICh3ZSBvbmx5IHdhbnQgb3BlcmF0aW9uLnR5cGUgYW5kIHZhbHVlKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gU3BsaXQgYnkgZG90IGFuZCByZWNvbnN0cnVjdCBuZXN0ZWQgc3RydWN0dXJlXG4gICAgICBjb25zdCBwYXJ0cyA9IGtleS5zcGxpdCgnLicpO1xuICAgICAgY29uc3Qgcm9vdEtleSA9IHBhcnRzWzBdO1xuICAgICAgY29uc3QgcGF0aCA9IHBhcnRzLnNsaWNlKDEpO1xuXG4gICAgICAvLyBPbmx5IHByb2Nlc3Mgb3BlcmF0aW9uLnR5cGUgYW5kIHZhbHVlIHBhdGhzXG4gICAgICBpZiAocGF0aC5sZW5ndGggPT09IDIgJiYgcGF0aFswXSA9PT0gJ29wZXJhdGlvbicgJiYgcGF0aFsxXSA9PT0gJ3R5cGUnKSB7XG4gICAgICAgIC8vIG9wZXJhdGlvbi50eXBlXG4gICAgICAgIGlmICghcmVzdWx0W3Jvb3RLZXldKSB7XG4gICAgICAgICAgcmVzdWx0W3Jvb3RLZXldID0geyBvcGVyYXRpb246IHt9IH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXN1bHRbcm9vdEtleV0ub3BlcmF0aW9uKSB7XG4gICAgICAgICAgcmVzdWx0W3Jvb3RLZXldLm9wZXJhdGlvbiA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFtyb290S2V5XS5vcGVyYXRpb24udHlwZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHBhdGgubGVuZ3RoID09PSAxICYmIHBhdGhbMF0gPT09ICd2YWx1ZScpIHtcbiAgICAgICAgLy8gdmFsdWVcbiAgICAgICAgaWYgKCFyZXN1bHRbcm9vdEtleV0pIHtcbiAgICAgICAgICByZXN1bHRbcm9vdEtleV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbcm9vdEtleV0udmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUoU3RyaW5nKHZhbHVlKSk7XG4gICAgICB9IGVsc2UgaWYgKHBhdGgubGVuZ3RoID4gMSAmJiBwYXRoWzBdID09PSAndmFsdWUnKSB7XG4gICAgICAgIC8vIG5lc3RlZCB2YWx1ZSBvYmplY3QgKGUuZy4sIHZhbHVlLmZyb20sIHZhbHVlLnRvIGZvciBiZXR3ZWVuKVxuICAgICAgICBpZiAoIXJlc3VsdFtyb290S2V5XSkge1xuICAgICAgICAgIHJlc3VsdFtyb290S2V5XSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVzdWx0W3Jvb3RLZXldLnZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0W3Jvb3RLZXldLnZhbHVlID0ge307XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWVQYXRoID0gcGF0aC5zbGljZSgxKTtcbiAgICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyZXN1bHRbcm9vdEtleV0udmFsdWUsIHZhbHVlUGF0aCwgdGhpcy5wYXJzZVZhbHVlKFN0cmluZyh2YWx1ZSkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQb3N0LXByb2Nlc3M6IENvbnZlcnQgdmFsdWVzIHRvIGFycmF5cyBpZiBvcGVyYXRpb24udHlwZSBpcyAnaW4nIG9yICdub3RJbidcbiAgICAvLyBBbHNvIHJlY29uc3RydWN0IEVkaXRvck9iaiBmb3IgbG9va3VwIHdpZGdldHMgKGZyb20gdmFsdWUgb25seSwgbm8gZGlzcGxheVRleHQpXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0KSkge1xuICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUub3BlcmF0aW9uPy50eXBlKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvblR5cGUgPSB2YWx1ZS5vcGVyYXRpb24udHlwZTtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIG9wZXJhdGlvbiBpcyAnaW4nIG9yICdub3RJbicsIGVuc3VyZSB2YWx1ZSBpcyBhbiBhcnJheVxuICAgICAgICBpZiAoKG9wZXJhdGlvblR5cGUgPT09ICdpbicgfHwgb3BlcmF0aW9uVHlwZSA9PT0gJ25vdEluJykgJiYgdHlwZW9mIHZhbHVlLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIC8vIENvbnZlcnQgY29tbWEtc2VwYXJhdGVkIHN0cmluZyB0byBhcnJheVxuICAgICAgICAgIHZhbHVlLnZhbHVlID0gdmFsdWUudmFsdWUuc3BsaXQoJywnKS5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpLmZpbHRlcigodjogc3RyaW5nKSA9PiB2ICE9PSAnJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZWNvbnN0cnVjdCBFZGl0b3JPYmogZm9yIGxvb2t1cCB3aWRnZXRzIGZyb20gdmFsdWUgb25seVxuICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIGxvb2t1cCB3aWRnZXQgZXhwZWN0cyBFZGl0b3JPYmogdG8gZXhpc3RcbiAgICAgICAgaWYgKHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUudmFsdWUgIT09IG51bGwgJiYgdmFsdWUudmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgY29uc3QgZWRpdG9yT2JqS2V5ID0gYCR7a2V5fUVkaXRvck9iamA7XG4gICAgICAgICAgY29uc3QgdmFsdWVGaWVsZCA9ICdpZCc7IC8vIERlZmF1bHQgdmFsdWUgZmllbGQgZm9yIGxvb2t1cFxuICAgICAgICAgIGNvbnN0IHRleHRGaWVsZCA9ICd0aXRsZSc7IC8vIERlZmF1bHQgdGV4dCBmaWVsZCBmb3IgbG9va3VwXG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKG9wZXJhdGlvblR5cGUgPT09ICdpbicgfHwgb3BlcmF0aW9uVHlwZSA9PT0gJ25vdEluJykge1xuICAgICAgICAgICAgLy8gTXVsdGlwbGUgc2VsZWN0aW9uOiBjcmVhdGUgYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIHZhbHVlIGFzIGJvdGggaWQgYW5kIHRpdGxlXG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlLnZhbHVlKSA/IHZhbHVlLnZhbHVlIDogW3ZhbHVlLnZhbHVlXTtcbiAgICAgICAgICAgIHJlc3VsdFtlZGl0b3JPYmpLZXldID0gdmFsdWVzLm1hcCgodmFsOiBzdHJpbmcpID0+ICh7XG4gICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXTogdmFsLFxuICAgICAgICAgICAgICBbdGV4dEZpZWxkXTogdmFsIC8vIFVzZSB2YWx1ZSBhcyB0aXRsZSBzaW5jZSB3ZSBkb24ndCBoYXZlIGRpc3BsYXlUZXh0XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNpbmdsZSBzZWxlY3Rpb246IGNyZWF0ZSBzaW5nbGUgb2JqZWN0XG4gICAgICAgICAgICByZXN1bHRbZWRpdG9yT2JqS2V5XSA9IHtcbiAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgW3RleHRGaWVsZF06IHZhbHVlLnZhbHVlIC8vIFVzZSB2YWx1ZSBhcyB0aXRsZSBzaW5jZSB3ZSBkb24ndCBoYXZlIGRpc3BsYXlUZXh0XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhIHZhbHVlIGluIGEgbmVzdGVkIG9iamVjdCB1c2luZyBhIHBhdGggYXJyYXlcbiAgICovXG4gIHByaXZhdGUgc2V0TmVzdGVkVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZ1tdLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIGxldCBjdXJyZW50ID0gb2JqO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IHBhdGhbaV07XG4gICAgICBpZiAoIWN1cnJlbnRba2V5XSB8fCB0eXBlb2YgY3VycmVudFtrZXldICE9PSAnb2JqZWN0Jykge1xuICAgICAgICBjdXJyZW50W2tleV0gPSB7fTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gICAgfVxuICAgIGNvbnN0IGxhc3RLZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgY3VycmVudFtsYXN0S2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyBhIHN0cmluZyB2YWx1ZSwgaGFuZGxpbmcgYXJyYXlzIChjb21tYS1zZXBhcmF0ZWQpIGFuZCBwcmltaXRpdmVzXG4gICAqL1xuICBwcml2YXRlIHBhcnNlVmFsdWUodmFsdWU6IHN0cmluZyk6IHVua25vd24ge1xuICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGFycmF5XG4gICAgaWYgKHZhbHVlLmluY2x1ZGVzKCcsJykpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5zcGxpdCgnLCcpLm1hcCh2ID0+IHRoaXMucGFyc2VQcmltaXRpdmUodi50cmltKCkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wYXJzZVByaW1pdGl2ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIGEgcHJpbWl0aXZlIHZhbHVlXG4gICAqIEZvciBxdWVyeSBwYXJhbXMsIHdlIGtlZXAgZXZlcnl0aGluZyBhcyBzdHJpbmcgdG8gbWF0Y2ggdXNlciByZXF1aXJlbWVudFxuICAgKiBBcnJheXMgYXJlIGhhbmRsZWQgc2VwYXJhdGVseSBpbiBwYXJzZVZhbHVlXG4gICAqL1xuICBwcml2YXRlIHBhcnNlUHJpbWl0aXZlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIGhhbmRsZUZpbHRlcnNDaGFuZ2UoZXZlbnQ6IEFYUENvbnRleHREYXRhKTogdm9pZCB7XG4gICAgdGhpcy52bS51cGRhdGVGaWx0ZXJDb250ZXh0KGV2ZW50KTtcbiAgICB0aGlzLnN5bmNGaWx0ZXJzVG9VcmwoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUZpbHRlcnNJbml0aWF0ZWQoZXZlbnQ6IEFYUENvbnRleHREYXRhKTogdm9pZCB7XG4gICAgdGhpcy52bS51cGRhdGVGaWx0ZXJDb250ZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVFeGVjdXRlUmVwb3J0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlzVmFsaWQgPSBhd2FpdCB0aGlzLmZpbHRlcnNGb3JtKCk/LnZhbGlkYXRlKCk7XG4gICAgaWYgKCFpc1ZhbGlkPy5yZXN1bHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy52bS5leGVjdXRlUmVwb3J0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlUmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLnZtLnJlZnJlc2goKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbGVhckZpbHRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy52bS5jbGVhckZpbHRlcnMoKTtcblxuICAgIC8vIFJlc2V0IGZvcm0gaWYgYXZhaWxhYmxlXG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZmlsdGVyc0Zvcm0oKTtcbiAgICBpZiAoZm9ybSkge1xuICAgICAgZm9ybS5yZXNldCgpO1xuICAgIH1cblxuICAgIC8vIENsZWFyIFVSTCBxdWVyeSBwYXJhbWV0ZXJzIChwcmVzZXJ2ZSByZXBvcnRJZCBpZiBleGlzdHMpXG4gICAgY29uc3QgY3VycmVudFBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgY29uc3QgcmVwb3J0SWQgPSBjdXJyZW50UGFyYW1zWydyZXBvcnRJZCddO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICBxdWVyeVBhcmFtczogcmVwb3J0SWQgPyB7IHJlcG9ydElkIH0gOiB7fSxcbiAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFBhZ2UgQ29uZmlndXJhdGlvbiBPdmVycmlkZXMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VCcmVhZGNydW1icygpOiBQcm9taXNlPEFYUEJyZWFkY3J1bWJJdGVtW10+IHtcbiAgICBjb25zdCBicmVhZGNydW1iczogQVhQQnJlYWRjcnVtYkl0ZW1bXSA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JlcG9ydHMnLFxuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcmVwb3J0LW1hbmFnZW1lbnQ6bW9kdWxlLm1lbnVzLnJvb3QudGl0bGUnKSxcbiAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgIG5hbWU6ICduYXZpZ2F0ZS10by1yZXBvcnRzJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIC8vIEFkZCBjYXRlZ29yaWVzIHBhdGhcbiAgICBjb25zdCBjYXRlZ29yaWVzUGF0aCA9IHRoaXMudm0uY2F0ZWdvcmllc1BhdGgoKTtcbiAgICBpZiAoY2F0ZWdvcmllc1BhdGggJiYgY2F0ZWdvcmllc1BhdGgubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHVybFBhcnRzID0gWy4uLnRoaXMuYmFzZVJvdXRlcywgJ3JlcG9ydHMnXTtcbiAgICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllc1BhdGgpIHtcbiAgICAgICAgdXJsUGFydHMucHVzaChjYXRlZ29yeS5pZCk7XG4gICAgICAgIGJyZWFkY3J1bWJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IGNhdGVnb3J5LmlkLFxuICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeS50aXRsZSxcbiAgICAgICAgICBjb21tYW5kOiB7XG4gICAgICAgICAgICBuYW1lOiAnbmF2aWdhdGUtdG8tY2F0ZWdvcnknLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBwYXRoOiBbLi4udXJsUGFydHNdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgcmVwb3J0IHRpdGxlIGFzIGZpbmFsIGJyZWFkY3J1bWJcbiAgICBjb25zdCByZXBvcnREZWZpbml0aW9uID0gdGhpcy52bS5yZXBvcnREZWZpbml0aW9uKCk7XG4gICAgaWYgKHJlcG9ydERlZmluaXRpb24pIHtcbiAgICAgIGJyZWFkY3J1bWJzLnB1c2goe1xuICAgICAgICBuYW1lOiAncmVwb3J0LXZpZXdlcicsXG4gICAgICAgIHRpdGxlOiByZXBvcnREZWZpbml0aW9uLnRpdGxlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyZWFkY3J1bWJzO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZVRpdGxlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVwb3J0RGVmaW5pdGlvbiA9IHRoaXMudm0ucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgIGlmIChyZXBvcnREZWZpbml0aW9uKSB7XG4gICAgICByZXR1cm4gcmVwb3J0RGVmaW5pdGlvbi50aXRsZTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5jb21wb25lbnRzLnJlcG9ydC12aWV3ZXIudGl0bGUnLFxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlRGVzY3JpcHRpb24oKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgcmVwb3J0RGVmaW5pdGlvbiA9IHRoaXMudm0ucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgIHJldHVybiByZXBvcnREZWZpbml0aW9uPy5kZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0QmFja0J1dHRvbigpOiBQcm9taXNlPEFYUEJhY2tCdXR0b24gfCBudWxsPiB7XG4gICAgLy8gT24gbW9iaWxlLCBpZiByZXBvcnQgaGFzIGJlZW4gZXhlY3V0ZWQgKHNob3dpbmcgcmVwb3J0KSwgc2hvdyBcIkZpbHRlcnNcIiBhcyBiYWNrIGJ1dHRvblxuICAgIGlmICh0aGlzLmRldmljZVNlcnZpY2UuaXNTbWFsbCgpICYmIHRoaXMudm0uaGFzQmVlbkV4ZWN1dGVkKCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BnZW5lcmFsOnRlcm1zLmludGVyZmFjZS5maWx0ZXIudGl0bGUnKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgY2F0ZWdvcmllc1BhdGggPSB0aGlzLnZtLmNhdGVnb3JpZXNQYXRoKCk7XG5cbiAgICBpZiAoIWNhdGVnb3JpZXNQYXRoIHx8IGNhdGVnb3JpZXNQYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gSWYgbm8gY2F0ZWdvcmllcyBwYXRoLCBnbyBiYWNrIHRvIHJlcG9ydHMgcm9vdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC1ydW5uZXIudGVybXMubWVudS10aXRsZScpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoY2F0ZWdvcmllc1BhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBJZiBvbmx5IG9uZSBjYXRlZ29yeSwgZ28gYmFjayB0byByZXBvcnRzIHJvb3RcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtcnVubmVyLnRlcm1zLm1lbnUtdGl0bGUnKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gR28gYmFjayB0byBwYXJlbnQgY2F0ZWdvcnlcbiAgICBjb25zdCBwYXJlbnRDYXRlZ29yeSA9IGNhdGVnb3JpZXNQYXRoW2NhdGVnb3JpZXNQYXRoLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogcGFyZW50Q2F0ZWdvcnkudGl0bGUsXG4gICAgfTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIG9uQmFja0J1dHRvbkNsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIE9uIG1vYmlsZSwgaWYgcmVwb3J0IGhhcyBiZWVuIGV4ZWN1dGVkIChzaG93aW5nIHJlcG9ydCksIGdvIGJhY2sgdG8gZmlsdGVyc1xuICAgIGlmICh0aGlzLmRldmljZVNlcnZpY2UuaXNTbWFsbCgpICYmIHRoaXMudm0uaGFzQmVlbkV4ZWN1dGVkKCkpIHtcbiAgICAgIHRoaXMudm0uY2xlYXJFeGVjdXRpb25TdGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNhdGVnb3JpZXNQYXRoID0gdGhpcy52bS5jYXRlZ29yaWVzUGF0aCgpO1xuXG4gICAgaWYgKCFjYXRlZ29yaWVzUGF0aCB8fCBjYXRlZ29yaWVzUGF0aC5sZW5ndGggPD0gMSkge1xuICAgICAgLy8gTmF2aWdhdGUgYmFjayB0byByZXBvcnRzIHJvb3RcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsuLi50aGlzLmJhc2VSb3V0ZXMsICdyZXBvcnRzJ10pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOYXZpZ2F0ZSB0byBwYXJlbnQgY2F0ZWdvcnlcbiAgICAgIGxldCB1cmxQYXJ0cyA9IFsuLi50aGlzLmJhc2VSb3V0ZXMsICdyZXBvcnRzJ107XG4gICAgICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzUGF0aCkge1xuICAgICAgICB1cmxQYXJ0cy5wdXNoKGNhdC5pZCk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh1cmxQYXJ0cyk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZShjb21tYW5kOiBBWFBFeGVjdXRlQ29tbWFuZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAoY29tbWFuZC5uYW1lKSB7XG4gICAgICBjYXNlICdleGVjdXRlLXJlcG9ydCc6XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRXhlY3V0ZVJlcG9ydCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlZnJlc2gtcmVwb3J0JzpcbiAgICAgICAgdGhpcy5oYW5kbGVSZWZyZXNoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmVzZXQtZmlsdGVycyc6XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xlYXJGaWx0ZXJzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbmF2aWdhdGUtdG8tcmVwb3J0cyc6XG4gICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsuLi50aGlzLmJhc2VSb3V0ZXMsICdyZXBvcnRzJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ25hdmlnYXRlLXRvLWNhdGVnb3J5JzpcbiAgICAgICAgY29uc3QgcGF0aCA9IGNvbW1hbmQub3B0aW9ucz8uWydwYXRoJ10gYXMgc3RyaW5nW107XG4gICAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUocGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gY29tbWFuZDogJHtjb21tYW5kLm5hbWV9YCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIiwiPGF4cC1wYWdlLWxheW91dCAqdHJhbnNsYXRlPVwibGV0IHRcIj5cbiAgPCEtLSBMZWZ0IFBhbmVsOiBGaWx0ZXJzIChBbHdheXMgdmlzaWJsZSBmb3IgZGVza3RvcCkgLS0+XG4gIEBpZiAoc2hvd0ZpbHRlcnNQYW5lbCgpKSB7XG4gICAgPGF4cC1sYXlvdXQtc3RhcnQtc2lkZT5cbiAgICAgIDxheHAtbGF5b3V0LWhlYWRlcj5cbiAgICAgICAgPGF4cC1sYXlvdXQtdGl0bGU+XG4gICAgICAgICAge3sgdCgnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuY29tcG9uZW50cy5maWx0ZXJzLnRpdGxlJykgfCBhc3luYyB9fVxuICAgICAgICA8L2F4cC1sYXlvdXQtdGl0bGU+XG4gICAgICA8L2F4cC1sYXlvdXQtaGVhZGVyPlxuICAgICAgPGF4cC1sYXlvdXQtY29udGVudD5cbiAgICAgICAgPGF4cC1sYXlvdXQtcmVuZGVyZXJcbiAgICAgICAgICAjZmlsdGVyc0Zvcm1cbiAgICAgICAgICBbbGF5b3V0XT1cInZtLmZvcm1EZWZpbml0aW9uKClcIlxuICAgICAgICAgIFtjb250ZXh0XT1cInZtLmZpbHRlckNvbnRleHQoKVwiXG4gICAgICAgICAgW2xvb2tdPVwiJ2dyb3VwJ1wiXG4gICAgICAgICAgKGNvbnRleHRDaGFuZ2UpPVwiaGFuZGxlRmlsdGVyc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAoY29udGV4dEluaXRpYXRlZCk9XCJoYW5kbGVGaWx0ZXJzSW5pdGlhdGVkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXhwLWxheW91dC1yZW5kZXJlcj5cbiAgICAgIDwvYXhwLWxheW91dC1jb250ZW50PlxuICAgICAgPGF4cC1sYXlvdXQtZm9vdGVyIGNsYXNzPVwiYXgtcC00IGF4LWJvcmRlci10XCIgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gICAgICAgIEBpZiAodm0uaGFzVW5hcHBsaWVkRmlsdGVycygpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXctZnVsbCBheC13YXJuaW5nLWxpZ2h0ZXN0IGF4LW1iLTIgYXgtcC0yIGF4LXJvdW5kZWQgYXgtYm9yZGVyIGF4LWJvcmRlci13YXJuaW5nLTIwMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yIGF4LXRleHQtd2FybmluZy04MDBcIj5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1leGNsYW1hdGlvbi10cmlhbmdsZSBheC10ZXh0LXNtXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQteHNcIj57e1xuICAgICAgICAgICAgICAgIHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuZmlsdGVycy5tZXNzYWdlcy53YXJuaW5nLnVuYXBwbGllZCcpIHwgYXN5bmNcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJheC13LWZ1bGxcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhdm0uY2FuRXhlY3V0ZSgpXCJcbiAgICAgICAgICBbdGV4dF09XCJ0KCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5hY3Rpb25zLmV4ZWN1dGUudGl0bGUnKSB8IGFzeW5jXCJcbiAgICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgICAob25DbGljayk9XCJleGVjdXRlKHsgbmFtZTogJ2V4ZWN1dGUtcmVwb3J0JyB9KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLXBsYXlcIj48L2F4LWljb24+XG4gICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPC9heHAtbGF5b3V0LWZvb3Rlcj5cbiAgICA8L2F4cC1sYXlvdXQtc3RhcnQtc2lkZT5cbiAgfVxuICA8YXhwLXBhZ2UtdG9vbGJhcj5cbiAgICA8YXhwLWxheW91dC1wcmVmaXg+XG4gICAgICBAaWYgKHZtLmhhc011bHRpcGxlTGF5b3V0cygpICYmIHNob3dSZXBvcnREaXNwbGF5KCkpIHtcbiAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJ2bS5jdXJyZW50TGF5b3V0KCk/LnRpdGxlXCI+XG4gICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IHt7IHZtLmN1cnJlbnRMYXlvdXQoKT8uaWNvbiB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICBAZm9yIChsYXlvdXQgb2Ygdm0uYXZhaWxhYmxlTGF5b3V0cygpOyB0cmFjayBsYXlvdXQuaWQpIHtcbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgICAgICBbdGV4dF09XCJsYXlvdXQudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInZtLmN1cnJlbnRMYXlvdXQoKT8uaWQgPT09IGxheW91dC5pZFwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJ2bS5zd2l0Y2hMYXlvdXQobGF5b3V0LmlkKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IHt7IGxheW91dC5pY29uIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIH1cbiAgICA8L2F4cC1sYXlvdXQtcHJlZml4PlxuICAgIDxheHAtbGF5b3V0LXN1ZmZpeD4gPC9heHAtbGF5b3V0LXN1ZmZpeD5cbiAgPC9heHAtcGFnZS10b29sYmFyPlxuXG4gIDwhLS0gTWFpbiBDb250ZW50OiBSZXBvcnQgRGlzcGxheSAtLT5cbiAgPGF4cC1wYWdlLWNvbnRlbnQgY2xhc3M9XCJheC1vdmVyZmxvdy1hdXRvXCI+XG4gICAgQGlmICh2bS5oYXNFcnJvcigpKSB7XG4gICAgICA8IS0tIEVycm9yIFN0YXRlIC0tPlxuICAgICAgPGF4cC1zdGF0ZS1tZXNzYWdlXG4gICAgICAgIGljb249XCJmYS1saWdodCBmYS1leGNsYW1hdGlvbi10cmlhbmdsZVwiXG4gICAgICAgIGxvb2s9XCJlcnJvclwiXG4gICAgICAgIFt0aXRsZV09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtdGl0bGUnXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cInZtLmVycm9yKCkgfHwgJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQnXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBzbG90PVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgIGxvb2s9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBbdGV4dF09XCJ0KCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5hY3Rpb25zLnJldHJ5LnRpdGxlJykgfCBhc3luY1wiXG4gICAgICAgICAgICAob25DbGljayk9XCJ2bS5jbGVhckVycm9yKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtcmVmcmVzaFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgfSBAZWxzZSBpZiAoIXZtLnJlcG9ydERlZmluaXRpb24oKSkge1xuICAgICAgPCEtLSBObyBSZXBvcnQgU2VsZWN0ZWQgU3RhdGUgLS0+XG4gICAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgICAgaWNvbj1cImZhLWxpZ2h0IGZhLWNoYXJ0LWxpbmVcIlxuICAgICAgICBbdGl0bGVdPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMucmVwb3J0LXZpZXdlci5lbXB0eS1zdGF0ZXMubm8tcmVwb3J0LnRpdGxlJ1wiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuY29tcG9uZW50cy5yZXBvcnQtdmlld2VyLmVtcHR5LXN0YXRlcy5uby1yZXBvcnQuZGVzY3JpcHRpb24nXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBzbG90PVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgIGxvb2s9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBbdGV4dF09XCJ0KCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5hY3Rpb25zLmJyb3dzZS1yZXBvcnRzLnRpdGxlJykgfCBhc3luY1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1mb2xkZXItb3BlblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVwb3J0RGlzcGxheVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgPC9heHAtcGFnZS1jb250ZW50PlxuPC9heHAtcGFnZS1sYXlvdXQ+XG5cbjwhLS0gRGVza3RvcDogUmVwb3J0IERpc3BsYXkgQXJlYSAtLT5cbjxuZy10ZW1wbGF0ZSAjcmVwb3J0RGlzcGxheT5cbiAgQGlmIChzaG93UmVwb3J0RGlzcGxheSgpKSB7XG4gICAgPCEtLSBEZXNrdG9wICYgTW9iaWxlOiBSZXBvcnQgRGlzcGxheSBBcmVhIC0tPlxuICAgIEBpZiAodm0uaXNUYWJsZUxheW91dCgpKSB7XG4gICAgICA8YXhwLXJlcG9ydC10YWJsZS12aWV3PiA8L2F4cC1yZXBvcnQtdGFibGUtdmlldz5cbiAgICB9IEBlbHNlIGlmICh2bS5pc0NoYXJ0TGF5b3V0KCkpIHtcbiAgICAgIDxheHAtcmVwb3J0LWNoYXJ0LXZpZXc+IDwvYXhwLXJlcG9ydC1jaGFydC12aWV3PlxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgPCEtLSBNb2JpbGU6IFNob3cgZmlsdGVycyAgLS0+XG4gICAgPGF4cC1sYXlvdXQtcmVuZGVyZXIgI2ZpbHRlcnNGb3JtIFtsYXlvdXRdPVwidm0uZm9ybURlZmluaXRpb24oKVwiIFtjb250ZXh0XT1cInZtLmZpbHRlckNvbnRleHQoKVwiIFtsb29rXT1cIidmaWVsZHNldCdcIj5cbiAgICA8L2F4cC1sYXlvdXQtcmVuZGVyZXI+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gTW9iaWxlOiBFeGVjdXRlIEJ1dHRvbiAtLT5cbkBpZiAoZGV2aWNlU2VydmljZS5pc1NtYWxsKCkgJiYgIXZtLmhhc0JlZW5FeGVjdXRlZCgpKSB7XG4gIDxheHAtcGFnZS1mb290ZXIgY2xhc3M9XCJheC1wLTIgYXgtYm9yZGVyLXRcIj5cbiAgICA8YXgtYnV0dG9uXG4gICAgICBjbGFzcz1cImF4LXctZnVsbFwiXG4gICAgICBbZGlzYWJsZWRdPVwiIXZtLmNhbkV4ZWN1dGUoKVwiXG4gICAgICBbdGV4dF09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuYWN0aW9ucy5leGVjdXRlLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgKG9uQ2xpY2spPVwiZXhlY3V0ZSh7IG5hbWU6ICdleGVjdXRlLXJlcG9ydCcgfSlcIlxuICAgID5cbiAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1wbGF5XCI+PC9heC1pY29uPlxuICAgICAgPC9heC1wcmVmaXg+XG4gICAgPC9heC1idXR0b24+XG4gIDwvYXhwLXBhZ2UtZm9vdGVyPlxufVxuIl19","import { AXBarChartComponent } from '@acorex/charts/bar-chart';\nimport { AXChartLegendComponent } from '@acorex/charts/chart-legend';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPWidgetCoreModule, AXPPageStatus } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXBarChartReportMapper } from '../../../../reports/report-mapper';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/translation\";\nimport * as i2 from \"@angular/common\";\nexport class AXPReportBarChartViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.AXPPageStatus = AXPPageStatus;\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Current chart layout configuration\n */\n this.chartLayout = computed(() => {\n const layout = this.vm.currentLayout();\n return layout?.layout.type === 'chart' ? layout.layout : null;\n }, ...(ngDevMode ? [{ debugName: \"chartLayout\" }] : []));\n /**\n * Chart configuration options\n */\n this.chartOptions = computed(() => {\n const chartLayout = this.chartLayout();\n return chartLayout?.options || null;\n }, ...(ngDevMode ? [{ debugName: \"chartOptions\" }] : []));\n /**\n * Chart type for rendering\n */\n this.chartType = computed(() => {\n const options = this.chartOptions();\n return options?.chartType || 'bar';\n }, ...(ngDevMode ? [{ debugName: \"chartType\" }] : []));\n /**\n * Data mapping configuration\n */\n this.dataMapping = computed(() => {\n const options = this.chartOptions();\n return options?.dataMapping || null;\n }, ...(ngDevMode ? [{ debugName: \"dataMapping\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n this.#fetchData = effect(() => {\n if (this.vm.allowFetchData() && this.vm.shouldExecuteReport() && this.chartOptions()) {\n // TODO: Implement chart data fetching\n console.log('Chart data fetch triggered', {\n chartType: this.chartType(),\n dataMapping: this.dataMapping(),\n });\n this.vm.fetchData().then((data) => {\n const barChartData = AXBarChartReportMapper((data?.data).data ?? {});\n this.barChartData.set(barChartData);\n console.log('barChartData', barChartData);\n });\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n this.barChartData = signal([], ...(ngDevMode ? [{ debugName: \"barChartData\" }] : []));\n this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"barChartOptions\" }] : []));\n this.legendOptions = signal({\n mode: 'horizontal',\n }, ...(ngDevMode ? [{ debugName: \"legendOptions\" }] : []));\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n #fetchData;\n //#endregion\n //#region ---- Event Handlers ----\n /**\n * Handle chart click events\n */\n handleChartClick(event) {\n // TODO: Implement chart click handling\n console.log('Chart clicked:', event);\n }\n /**\n * Handle chart data point selection\n */\n handleDataPointSelect(event) {\n // TODO: Implement data point selection\n console.log('Data point selected:', event);\n }\n //#endregion\n //#region ---- Helper Methods ----\n /**\n * Check if chart is ready to render\n */\n isChartReady() {\n return !!(this.chartOptions() && this.dataMapping());\n }\n /**\n * Get chart configuration for rendering\n */\n getChartConfig() {\n // TODO: Transform AXPReportChartOptions to chart library format\n return {\n type: this.chartType(),\n options: this.chartOptions(),\n dataMapping: this.dataMapping(),\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportBarChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportBarChartViewComponent, isStandalone: true, selector: \"axp-report-bar-chart-view\", ngImport: i0, template: \"<div class=\\\"axp-report-chart-view\\\" *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading\\\">\\n <div class=\\\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\\\">\\n </div>\\n <div class=\\\"__loading-text\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <div class=\\\"__chart-container\\\">\\n @if (chartLayout()?.header) {\\n <div class=\\\"__chart-header\\\">\\n <h3 class=\\\"__chart-title\\\">{{ chartLayout()?.header?.title }}</h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date\\\">{{ '@general:common.date.today' | translate | async }}</div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"__chart-body\\\">\\n <!-- Chart component will be rendered here -->\\n <div class=\\\"__chart-placeholder\\\">\\n <div class=\\\"__placeholder-content\\\">\\n <div class=\\\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\\\"\\n [class]=\\\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\\\">\\n <!-- Chart Area -->\\n <div class=\\\"ax-flex-0 ax-size-96\\\">\\n <ax-bar-chart #chart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <!-- Legend Area -->\\n @if (barChartData().length > 0) {\\n <div>\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"chart\\\"></ax-chart-legend>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <div class=\\\"__chart-footer\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </div>\\n }\\n </div>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-column\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</div>\", styles: [\".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i1.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: AXBarChartComponent, selector: \"ax-bar-chart\", inputs: [\"data\", \"options\"], outputs: [\"barClick\"] }, { kind: \"component\", type: AXChartLegendComponent, selector: \"ax-chart-legend\", inputs: [\"chart\", \"options\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"itemMouseLeave\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i1.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportBarChartViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-bar-chart-view', standalone: true, imports: [\n CommonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPStateMessageComponent,\n AXPWidgetCoreModule,\n AXBarChartComponent,\n AXChartLegendComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"axp-report-chart-view\\\" *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading\\\">\\n <div class=\\\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\\\">\\n </div>\\n <div class=\\\"__loading-text\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <div class=\\\"__chart-container\\\">\\n @if (chartLayout()?.header) {\\n <div class=\\\"__chart-header\\\">\\n <h3 class=\\\"__chart-title\\\">{{ chartLayout()?.header?.title }}</h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date\\\">{{ '@general:common.date.today' | translate | async }}</div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"__chart-body\\\">\\n <!-- Chart component will be rendered here -->\\n <div class=\\\"__chart-placeholder\\\">\\n <div class=\\\"__placeholder-content\\\">\\n <div class=\\\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\\\"\\n [class]=\\\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\\\">\\n <!-- Chart Area -->\\n <div class=\\\"ax-flex-0 ax-size-96\\\">\\n <ax-bar-chart #chart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <!-- Legend Area -->\\n @if (barChartData().length > 0) {\\n <div>\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"chart\\\"></ax-chart-legend>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <div class=\\\"__chart-footer\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </div>\\n }\\n </div>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-column\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</div>\", styles: [\".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWJhci1jaGFydC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvdmlld3MvcmVwb3J0LWJhci1jaGFydC12aWV3L3JlcG9ydC1iYXItY2hhcnQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC1iYXItY2hhcnQtdmlldy9yZXBvcnQtYmFyLWNoYXJ0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFxQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxzQkFBc0IsRUFBd0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FB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WEJhckNoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9iYXItY2hhcnQnO1xuaW1wb3J0IHsgQVhDaGFydExlZ2VuZENvbXBvbmVudCwgQVhDaGFydExlZ2VuZE9wdGlvbnMgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9jaGFydC1sZWdlbmQnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZU1vZHVsZSwgQVhQUGFnZVN0YXR1cyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQmFyQ2hhcnRSZXBvcnRNYXBwZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC1tYXBwZXInO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2hhcnRMYXlvdXQgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC50eXBlcyc7XG5pbXBvcnQgeyBBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuLi8uLi9yZXBvcnQtdmlld2VyLnZpZXdtb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtYmFyLWNoYXJ0LXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gICAgQVhCYXJDaGFydENvbXBvbmVudCxcbiAgICBBWENoYXJ0TGVnZW5kQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LWJhci1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3JlcG9ydC1iYXItY2hhcnQtdmlldy5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSZXBvcnRCYXJDaGFydFZpZXdDb21wb25lbnQge1xuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEFYUFBhZ2VTdGF0dXMgPSBBWFBQYWdlU3RhdHVzO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuICAvKipcbiAgICogQ3VycmVudCBjaGFydCBsYXlvdXQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0TGF5b3V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGxheW91dCA9IHRoaXMudm0uY3VycmVudExheW91dCgpO1xuICAgIHJldHVybiBsYXlvdXQ/LmxheW91dC50eXBlID09PSAnY2hhcnQnID8gKGxheW91dC5sYXlvdXQgYXMgQVhQUmVwb3J0Q2hhcnRMYXlvdXQpIDogbnVsbDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENoYXJ0IGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0T3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjaGFydExheW91dCA9IHRoaXMuY2hhcnRMYXlvdXQoKTtcbiAgICByZXR1cm4gY2hhcnRMYXlvdXQ/Lm9wdGlvbnMgfHwgbnVsbDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENoYXJ0IHR5cGUgZm9yIHJlbmRlcmluZ1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0VHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jaGFydE9wdGlvbnMoKTtcbiAgICByZXR1cm4gb3B0aW9ucz8uY2hhcnRUeXBlIHx8ICdiYXInO1xuICB9KTtcblxuICAvKipcbiAgICogRGF0YSBtYXBwaW5nIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhTWFwcGluZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jaGFydE9wdGlvbnMoKTtcbiAgICByZXR1cm4gb3B0aW9ucz8uZGF0YU1hcHBpbmcgfHwgbnVsbDtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBFZmZlY3RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgdG8gaGFuZGxlIGRhdGEgZmV0Y2hpbmcgd2hlbiBjaGFydCBjb25maWd1cmF0aW9uIGNoYW5nZXNcbiAgICovXG4gICNmZXRjaERhdGEgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLnZtLmFsbG93RmV0Y2hEYXRhKCkgJiYgdGhpcy52bS5zaG91bGRFeGVjdXRlUmVwb3J0KCkgJiYgdGhpcy5jaGFydE9wdGlvbnMoKSkge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGNoYXJ0IGRhdGEgZmV0Y2hpbmdcbiAgICAgIGNvbnNvbGUubG9nKCdDaGFydCBkYXRhIGZldGNoIHRyaWdnZXJlZCcsIHtcbiAgICAgICAgY2hhcnRUeXBlOiB0aGlzLmNoYXJ0VHlwZSgpLFxuICAgICAgICBkYXRhTWFwcGluZzogdGhpcy5kYXRhTWFwcGluZygpLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnZtLmZldGNoRGF0YSgpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgYmFyQ2hhcnREYXRhID0gQVhCYXJDaGFydFJlcG9ydE1hcHBlcigoKGRhdGE/LmRhdGEgYXMgYW55KS5kYXRhIGFzIGFueSkgPz8ge30pO1xuICAgICAgICB0aGlzLmJhckNoYXJ0RGF0YS5zZXQoYmFyQ2hhcnREYXRhKTtcbiAgICAgICAgY29uc29sZS5sb2coJ2JhckNoYXJ0RGF0YScsIGJhckNoYXJ0RGF0YSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjaGFydCBjbGljayBldmVudHNcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVDaGFydENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgY2hhcnQgY2xpY2sgaGFuZGxpbmdcbiAgICBjb25zb2xlLmxvZygnQ2hhcnQgY2xpY2tlZDonLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGNoYXJ0IGRhdGEgcG9pbnQgc2VsZWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRGF0YVBvaW50U2VsZWN0KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgZGF0YSBwb2ludCBzZWxlY3Rpb25cbiAgICBjb25zb2xlLmxvZygnRGF0YSBwb2ludCBzZWxlY3RlZDonLCBldmVudCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjaGFydCBpcyByZWFkeSB0byByZW5kZXJcbiAgICovXG4gIHByb3RlY3RlZCBpc0NoYXJ0UmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuY2hhcnRPcHRpb25zKCkgJiYgdGhpcy5kYXRhTWFwcGluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY2hhcnQgY29uZmlndXJhdGlvbiBmb3IgcmVuZGVyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q2hhcnRDb25maWcoKTogYW55IHtcbiAgICAvLyBUT0RPOiBUcmFuc2Zvcm0gQVhQUmVwb3J0Q2hhcnRPcHRpb25zIHRvIGNoYXJ0IGxpYnJhcnkgZm9ybWF0XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMuY2hhcnRUeXBlKCksXG4gICAgICBvcHRpb25zOiB0aGlzLmNoYXJ0T3B0aW9ucygpLFxuICAgICAgZGF0YU1hcHBpbmc6IHRoaXMuZGF0YU1hcHBpbmcoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGJhckNoYXJ0RGF0YSA9IHNpZ25hbDxBWEJhckNoYXJ0VmFsdWU+KFtdKTtcblxuICBwcm90ZWN0ZWQgYmFyQ2hhcnRPcHRpb25zID0gc2lnbmFsPEFYQmFyQ2hhcnRPcHRpb24+KHt9KTtcblxuICBwcm90ZWN0ZWQgbGVnZW5kT3B0aW9ucyA9IHNpZ25hbDxBWENoYXJ0TGVnZW5kT3B0aW9ucz4oe1xuICAgIG1vZGU6ICdob3Jpem9udGFsJyxcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iLCI8ZGl2IGNsYXNzPVwiYXhwLXJlcG9ydC1jaGFydC12aWV3XCIgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gIEBpZiAodm0uc3RhdHVzKCkgPT09IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZykge1xuICA8IS0tIExvYWRpbmcgU3RhdGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJfX2xvYWRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtc3Bpbm5lciBheC1zcGluIGF4LWJvcmRlci00IGF4LWJvcmRlci1ncmF5LTIwMCBheC1ib3JkZXItdC1wcmltYXJ5IGF4LXJvdW5kZWQtZnVsbCBheC13LTEyIGF4LWgtMTJcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiX19sb2FkaW5nLXRleHRcIj5cbiAgICAgIHt7IHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQubWVzc2FnZXMubG9hZGluZycpIHwgYXN5bmMgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIH0gQGVsc2UgaWYgKHZtLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLkVycm9yKSB7XG4gIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gIDxheHAtc3RhdGUtbWVzc2FnZSBtb2RlPVwiZXJyb3JcIiBpY29uPVwiZmEtbGlnaHQgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcIlxuICAgIFt0aXRsZV09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtdGl0bGUnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwidm0uZXJyb3IoKSB8fCAnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtZGVzY3JpcHRpb24nXCI+XG4gIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gIH0gQGVsc2UgaWYgKGlzQ2hhcnRSZWFkeSgpKSB7XG4gIDwhLS0gQ2hhcnQgQ29udGVudCAtLT5cbiAgPGRpdiBjbGFzcz1cIl9fY2hhcnQtY29udGFpbmVyXCI+XG4gICAgQGlmIChjaGFydExheW91dCgpPy5oZWFkZXIpIHtcbiAgICA8ZGl2IGNsYXNzPVwiX19jaGFydC1oZWFkZXJcIj5cbiAgICAgIDxoMyBjbGFzcz1cIl9fY2hhcnQtdGl0bGVcIj57eyBjaGFydExheW91dCgpPy5oZWFkZXI/LnRpdGxlIH19PC9oMz5cbiAgICAgIEBpZiAoY2hhcnRMYXlvdXQoKT8uaGVhZGVyPy5zaG93RGF0ZSkge1xuICAgICAgPGRpdiBjbGFzcz1cIl9fY2hhcnQtZGF0ZVwiPnt7ICdAZ2VuZXJhbDpjb21tb24uZGF0ZS50b2RheScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWJvZHlcIj5cbiAgICAgIDwhLS0gQ2hhcnQgY29tcG9uZW50IHdpbGwgYmUgcmVuZGVyZWQgaGVyZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LXBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3BsYWNlaG9sZGVyLWNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LXdyYXAgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWdhcC0xMFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwibGVnZW5kT3B0aW9ucygpLm1vZGUgPT09ICdob3Jpem9udGFsJyA/ICdheC1mbGV4LWNvbCcgOiAnYXgtZmxleC1yb3cnXCI+XG4gICAgICAgICAgICA8IS0tIENoYXJ0IEFyZWEgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC0wIGF4LXNpemUtOTZcIj5cbiAgICAgICAgICAgICAgPGF4LWJhci1jaGFydCAjY2hhcnQgW2RhdGFdPVwiYmFyQ2hhcnREYXRhKClcIiBbb3B0aW9uc109XCJiYXJDaGFydE9wdGlvbnMoKVwiPjwvYXgtYmFyLWNoYXJ0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIExlZ2VuZCBBcmVhIC0tPlxuICAgICAgICAgICAgQGlmIChiYXJDaGFydERhdGEoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8YXgtY2hhcnQtbGVnZW5kIFtvcHRpb25zXT1cImxlZ2VuZE9wdGlvbnMoKVwiIFtjaGFydF09XCJjaGFydFwiPjwvYXgtY2hhcnQtbGVnZW5kPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGNoYXJ0TGF5b3V0KCk/LmZvb3Rlcikge1xuICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWZvb3RlclwiPlxuICAgICAgQGlmIChjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWwpIHtcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWxcIj48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgPCEtLSBObyBDb25maWd1cmF0aW9uIFN0YXRlIC0tPlxuICA8YXhwLXN0YXRlLW1lc3NhZ2UgaWNvbj1cImZhLWxpZ2h0IGZhLWNoYXJ0LWNvbHVtblwiXG4gICAgW3RpdGxlXT1cIidAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5jb21wb25lbnRzLmNoYXJ0LmVtcHR5LXN0YXRlcy5uby1jb25maWcudGl0bGUnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQuZW1wdHktc3RhdGVzLm5vLWNvbmZpZy5kZXNjcmlwdGlvbidcIj5cbiAgPC9heHAtc3RhdGUtbWVzc2FnZT5cbiAgfVxuPC9kaXY+Il19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtcmVwb3J0LW1hbmFnZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2Fjb3JleC1tb2R1bGVzLXJlcG9ydC1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i2","i1","i3","i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-modules-report-management.mjs","sources":["../tmp-esm2022/report-management/lib/const.js","../tmp-esm2022/report-management/lib/manifest.js","../tmp-esm2022/report-management/lib/reports/report.types.js","../tmp-esm2022/report-management/lib/reports/report-definition.provider.js","../tmp-esm2022/report-management/lib/reports/report-definition.service.js","../tmp-esm2022/report-management/lib/reports/report-mapper.js","../tmp-esm2022/report-management/lib/features/report-runner/reports.provider.js","../tmp-esm2022/report-management/lib/report.provider.js","../tmp-esm2022/report-management/lib/permission.keys.js","../tmp-esm2022/report-management/lib/permission-definition.provider.js","../tmp-esm2022/report-management/lib/menu.keys.js","../tmp-esm2022/report-management/lib/menu.provider.js","../tmp-esm2022/report-management/lib/entity.provider.js","../tmp-esm2022/report-management/lib/features.keys.js","../tmp-esm2022/report-management/lib/feature-definition.provider.js","../tmp-esm2022/report-management/lib/report-management.module.js","../tmp-esm2022/report-management/lib/features/report-viewer/report-viewer.viewmodel.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-chart-view/report-chart-view.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-table-view/report-table-view.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/report-viewer-page/report-viewer-page.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-bar-chart-view/report-bar-chart-view.component.js","../tmp-esm2022/report-management/acorex-modules-report-management.js"],"sourcesContent":["const config = {\n i18n: 'report-management',\n module: 'ReportManagement',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'report-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-chart-bar',\n },\n entities: {\n dataSet: {\n name: 'DataSet',\n title: `t(\"dataSet\", { scope: \"${config.i18n}\" })`,\n titlePlural: `t(\"dataSetPlural\", { scope: \"${config.i18n}\" })`,\n icon: 'fa-light fa-default',\n },\n category: {\n name: 'Category',\n fullName: `${config.module}.Category`,\n title: `@${config.i18n}:reports.entities.category.title`,\n titlePlural: `@${config.i18n}:reports.entities.category.plural`,\n icon: 'fa-light fa-folder',\n },\n report: {\n name: 'Report',\n fullName: `${config.module}.Report`,\n title: `@${config.i18n}:reports.entities.report.title`,\n titlePlural: `@${config.i18n}:reports.entities.report.plural`,\n icon: 'fa-light fa-file-chart-pie',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE1BQU0sR0FBRztJQUNiLElBQUksRUFBRSxtQkFBbUI7SUFDekIsTUFBTSxFQUFFLGtCQUFrQjtDQUMzQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLE1BQU07SUFDTixNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUsbUJBQW1CO1FBQzFCLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNuQixLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxlQUFlO1FBQ3JDLElBQUksRUFBRSx1QkFBdUI7S0FDOUI7SUFDRCxRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSwwQkFBMEIsTUFBTSxDQUFDLElBQUksTUFBTTtZQUNsRCxXQUFXLEVBQUUsZ0NBQWdDLE1BQU0sQ0FBQyxJQUFJLE1BQU07WUFDOUQsSUFBSSxFQUFFLHFCQUFxQjtTQUM1QjtRQUNELFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLFdBQVc7WUFDckMsS0FBSyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksa0NBQWtDO1lBQ3hELFdBQVcsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLG1DQUFtQztZQUMvRCxJQUFJLEVBQUUsb0JBQW9CO1NBQzNCO1FBQ0QsTUFBTSxFQUFFO1lBQ04sSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxTQUFTO1lBQ25DLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLGdDQUFnQztZQUN0RCxXQUFXLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxpQ0FBaUM7WUFDN0QsSUFBSSxFQUFFLDRCQUE0QjtTQUNuQztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbmZpZyA9IHtcbiAgaTE4bjogJ3JlcG9ydC1tYW5hZ2VtZW50JyxcbiAgbW9kdWxlOiAnUmVwb3J0TWFuYWdlbWVudCcsXG59O1xuXG5leHBvcnQgY29uc3QgUm9vdENvbmZpZyA9IHtcbiAgY29uZmlnLFxuICBtb2R1bGU6IHtcbiAgICByb3V0ZTogJ3JlcG9ydC1tYW5hZ2VtZW50JyxcbiAgICBuYW1lOiBjb25maWcubW9kdWxlLFxuICAgIHRpdGxlOiBgQCR7Y29uZmlnLmkxOG59Om1vZHVsZS50aXRsZWAsXG4gICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNoYXJ0LWJhcicsXG4gIH0sXG4gIGVudGl0aWVzOiB7XG4gICAgZGF0YVNldDoge1xuICAgICAgbmFtZTogJ0RhdGFTZXQnLFxuICAgICAgdGl0bGU6IGB0KFwiZGF0YVNldFwiLCB7IHNjb3BlOiBcIiR7Y29uZmlnLmkxOG59XCIgfSlgLFxuICAgICAgdGl0bGVQbHVyYWw6IGB0KFwiZGF0YVNldFBsdXJhbFwiLCB7IHNjb3BlOiBcIiR7Y29uZmlnLmkxOG59XCIgfSlgLFxuICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWRlZmF1bHQnLFxuICAgIH0sXG4gICAgY2F0ZWdvcnk6IHtcbiAgICAgIG5hbWU6ICdDYXRlZ29yeScsXG4gICAgICBmdWxsTmFtZTogYCR7Y29uZmlnLm1vZHVsZX0uQ2F0ZWdvcnlgLFxuICAgICAgdGl0bGU6IGBAJHtjb25maWcuaTE4bn06cmVwb3J0cy5lbnRpdGllcy5jYXRlZ29yeS50aXRsZWAsXG4gICAgICB0aXRsZVBsdXJhbDogYEAke2NvbmZpZy5pMThufTpyZXBvcnRzLmVudGl0aWVzLmNhdGVnb3J5LnBsdXJhbGAsXG4gICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZm9sZGVyJyxcbiAgICB9LFxuICAgIHJlcG9ydDoge1xuICAgICAgbmFtZTogJ1JlcG9ydCcsXG4gICAgICBmdWxsTmFtZTogYCR7Y29uZmlnLm1vZHVsZX0uUmVwb3J0YCxcbiAgICAgIHRpdGxlOiBgQCR7Y29uZmlnLmkxOG59OnJlcG9ydHMuZW50aXRpZXMucmVwb3J0LnRpdGxlYCxcbiAgICAgIHRpdGxlUGx1cmFsOiBgQCR7Y29uZmlnLmkxOG59OnJlcG9ydHMuZW50aXRpZXMucmVwb3J0LnBsdXJhbGAsXG4gICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZmlsZS1jaGFydC1waWUnLFxuICAgIH0sXG4gIH0sXG59O1xuIl19","//#region ---- Imports ----\nimport { RootConfig } from './const';\n//#endregion\n//#region ---- Manifest Definition ----\n/**\n * Report Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const ReportManagementManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n required: true,\n // Module dependencies (optional)\n};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9tYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFHL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxZQUFZO0FBRVosMkNBQTJDO0FBRTNDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFzQjtJQUN6RCxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJO0lBQzVCLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUs7SUFDOUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSTtJQUM1QixJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJO0lBQzVCLFFBQVEsRUFBRyxJQUFJO0lBRWYsaUNBQWlDO0NBQ2xDLENBQUM7QUFFRixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFBNb2R1bGVNYW5pZmVzdCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi9jb25zdCc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIE1hbmlmZXN0IERlZmluaXRpb24gICAtLS0tXG5cbi8qKlxuICogUmVwb3J0IE1hbmFnZW1lbnQgTW9kdWxlIE1hbmlmZXN0LlxuICogRGVmaW5lcyBtb2R1bGUgbWV0YWRhdGEsIGZlYXR1cmVzLCBhbmQgcHJvdmlkZXIgcmVmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlcG9ydE1hbmFnZW1lbnRNYW5pZmVzdDogQVhQTW9kdWxlTWFuaWZlc3QgPSB7XG4gIG5hbWU6IFJvb3RDb25maWcubW9kdWxlLm5hbWUsXG4gIHZlcnNpb246ICcxLjAuMCcsXG4gIHRpdGxlOiBSb290Q29uZmlnLm1vZHVsZS50aXRsZSxcbiAgaWNvbjogUm9vdENvbmZpZy5tb2R1bGUuaWNvbixcbiAgaTE4bjogUm9vdENvbmZpZy5jb25maWcuaTE4bixcbiAgcmVxdWlyZWQgOiB0cnVlLFxuXG4gIC8vIE1vZHVsZSBkZXBlbmRlbmNpZXMgKG9wdGlvbmFsKVxufTtcblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcmVwb3J0cy9yZXBvcnQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCOztBQThlL0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhQQWN0aW9uTWVudUl0ZW0sIEFYUEV4cG9ydE9wdGlvbnMsIEFYUE9wdGlvbnNEYXRhLCBBWFBDYXRlZ29yeUVudGl0eSwgQVhQRmlsdGVyQ2xhdXNlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vY29yZVwiO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29sdW1uTm9kZSwgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZVwiO1xuaW1wb3J0IHsgQVhQUXVlcnlTb3J0IH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vY29tbW9uXCI7XG5pbXBvcnQgeyBBWFBTeXN0ZW1BY3Rpb25UeXBlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vY29yZVwiO1xuaW1wb3J0IHsgQVhQQ29tbWFuZCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWVcIjtcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29yZSBSZXBvcnQgVHlwZXMgYW5kIEludGVyZmFjZXMgICAtLS0tXG5cbmV4cG9ydCB0eXBlIEFYUFJlcG9ydExheW91dFR5cGUgPSAndGFibGUnIHwgJ2NoYXJ0JyB8ICdjYXJkcycgfCAnY3VzdG9tJztcblxuLyoqXG4gKiBSZXBvcnQgQ2F0ZWdvcnkgLSBFeHRlbmRzIEFYUENhdGVnb3J5RW50aXR5IGZvciBjb25zaXN0ZW5jeSBhbmQgcGVyZm9ybWFuY2VcbiAqIFxuICogSW5oZXJpdGVkIHByb3BlcnRpZXMgZnJvbSBBWFBDYXRlZ29yeUVudGl0eTpcbiAqIC0gaWQ6IHN0cmluZyAgICAgICAgICAgICAgICAgICAtIFVuaXF1ZSBpZGVudGlmaWVyXG4gKiAtIHRpdGxlOiBzdHJpbmcgICAgICAgICAgICAgICAgLSBEaXNwbGF5IG5hbWVcbiAqIC0gZGVzY3JpcHRpb24/OiBzdHJpbmcgICAgICAgICAtIENhdGVnb3J5IGRlc2NyaXB0aW9uXG4gKiAtIHBhcmVudElkPzogc3RyaW5nICAgICAgICAgICAgLSBQYXJlbnQgY2F0ZWdvcnkgSURcbiAqIC0gY2hpbGRyZW5Db3VudDogbnVtYmVyICAgICAgICAtIERpcmVjdCBjaGlsZCBjYXRlZ29yaWVzIGNvdW50IChlbmFibGVzIGxhenkgbG9hZGluZylcbiAqIC0gaXRlbXNDb3VudD86IG51bWJlciAgICAgICAgICAtIERpcmVjdCByZXBvcnRzIGNvdW50IChyZXBsYWNlcyBoYXNSZXBvcnQgYm9vbGVhbilcbiAqIC0gdG90YWxDaGlsZHJlbj86IG51bWJlciAgICAgICAtIFRvdGFsIG5lc3RlZCBjYXRlZ29yaWVzIChvcHRpb25hbCwgZm9yIGFuYWx5dGljcylcbiAqIC0gdG90YWxJdGVtcz86IG51bWJlciAgICAgICAgICAtIFRvdGFsIHJlcG9ydHMgaW4gdHJlZSAob3B0aW9uYWwsIGZvciBhbmFseXRpY3MpXG4gKiBcbiAqIFBlcmZvcm1hbmNlIGJlbmVmaXRzOlxuICogLSBMYXp5IGxvYWRpbmcgc3VwcG9ydCAoY2hpbGRyZW5Db3VudCA+IDAgc2hvd3MgZXhwYW5kIGljb24pXG4gKiAtIFJlcG9ydCBjb3VudCBkaXNwbGF5IChpdGVtc0NvdW50IHNob3dzIFwiNSByZXBvcnRzXCIgYmFkZ2UpXG4gKiAtIEVmZmljaWVudCBxdWVyaWVzIChubyBuZWVkIHRvIHF1ZXJ5IHRvIGtub3cgaWYgZXhwYW5kYWJsZSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRDYXRlZ29yeSBleHRlbmRzIEFYUENhdGVnb3J5RW50aXR5IHtcbiAgICAvLyBObyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgbmVlZGVkIC0gYWxsIGluaGVyaXRlZCBmcm9tIEFYUENhdGVnb3J5RW50aXR5XG4gICAgLy8gVXNlOiBjaGlsZHJlbkNvdW50IGluc3RlYWQgb2YgaGFzQ2hpbGRcbiAgICAvLyBVc2U6IGl0ZW1zQ291bnQgaW5zdGVhZCBvZiBoYXNSZXBvcnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnREZWZpbml0aW9uIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgY2F0ZWdvcnlJZHM6IHN0cmluZ1tdO1xuICAgIHBhcmFtZXRlckdyb3VwczogQVhQUmVwb3J0UGFyYW1ldGVyR3JvdXBbXTtcbiAgICBwZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xuICAgIGxheW91dHM6IEFYUFJlcG9ydExheW91dERlZmluaXRpb25bXTsgIC8vIENoYW5nZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBsYXlvdXRzXG4gICAgZGVmYXVsdExheW91dElkOiBzdHJpbmc7ICAgICAgICAgICAgICAvLyBXaGljaCBsYXlvdXQgdG8gc2hvdyBieSBkZWZhdWx0XG59XG5cbi8qKlxuICogTGF5b3V0IERlZmluaXRpb24gLSBBc3NvY2lhdGVzIGEgbGF5b3V0IHdpdGggbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uIHtcbiAgICBpZDogc3RyaW5nOyAgICAgICAgICAgICAgICAgICAgLy8gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgbGF5b3V0XG4gICAgdGl0bGU6IHN0cmluZzsgICAgICAgICAgICAgICAgIC8vIERpc3BsYXkgbmFtZSAoZS5nLiwgXCJUYWJsZSBWaWV3XCIsIFwiQ2hhcnQgVmlld1wiKVxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nOyAgICAgICAgICAvLyBPcHRpb25hbCBkZXNjcmlwdGlvblxuICAgIGljb24/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAvLyBJY29uIGZvciBsYXlvdXQgc3dpdGNoZXIgVUlcbiAgICBsYXlvdXQ6IEFYUFJlcG9ydExheW91dDsgICAgICAgLy8gVGhlIGFjdHVhbCBsYXlvdXQgY29uZmlndXJhdGlvblxuICAgIGRhdGFTb3VyY2U/OiBBWFBSZXBvcnREYXRhU291cmNlOyAvLyBPcHRpb25hbCBsYXlvdXQtc3BlY2lmaWMgZGF0YVNvdXJjZSAob3ZlcnJpZGVzIHJlcG9ydC1sZXZlbClcbiAgICBpc0RlZmF1bHQ/OiBib29sZWFuOyAgICAgICAgICAgLy8gQWx0ZXJuYXRpdmUgdG8gZGVmYXVsdExheW91dElkXG4gICAgZXhwb3J0PzogQVhQRXhwb3J0T3B0aW9ucztcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydFBhcmFtZXRlckdyb3VwIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBwYXJhbWV0ZXJzOiBBWFBSZXBvcnRQYXJhbWV0ZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRQYXJhbWV0ZXIge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgRGF0YSBTb3VyY2UgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCB0eXBlIEFYUFJlcG9ydERhdGFTb3VyY2UgPVxuICAgIHwgQVhQUXVlcnlEYXRhU291cmNlXG4gICAgfCBBWFBDdXN0b21EYXRhU291cmNlXG4gICAgfCBBWFBBZ2dyZWdhdGVkRGF0YVNvdXJjZVxuICAgIHwgQVhQVHJhbnNmb3JtZWREYXRhU291cmNlO1xuXG4vKipcbiAqIFF1ZXJ5IERhdGEgU291cmNlIC0gVXNlZCBmb3IgZXhlY3V0aW5nIHByZWRlZmluZWQgcXVlcmllcyAoQVhQUXVlcnkpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUXVlcnlEYXRhU291cmNlIHtcbiAgICB0eXBlOiAncXVlcnknO1xuICAgIG5hbWU6IHN0cmluZzsgLy8gVGhlIHJlZ2lzdGVyZWQgcXVlcnkgbmFtZSwgZS5nLiwgJ2dldEVtcGxveWVlTGlzdCdcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIGlucHV0cz86IEFYUFJlcG9ydFBhcmFtZXRlckJpbmRpbmdbXTsgLy8gTWFwcyByZXBvcnQgcGFyYW1ldGVycyB0byBxdWVyeSBpbnB1dHNcbiAgICBzb3J0RmllbGRzPzogQVhQUXVlcnlTb3J0W107ICAgICAgICAgIC8vIERlZmF1bHQgc29ydGluZyBhcHBsaWVkIGJ5IHRoZSBiYWNrZW5kXG4gICAgcGFnaW5hdGlvbj86IGJvb2xlYW47ICAgICAgICAgICAgICAgICAvLyBFbmFibGVzIHBhZ2luZyBpbiByZXN1bHQgc2V0XG59XG5cblxuXG4vKipcbiAqIEN1c3RvbSBEYXRhIFNvdXJjZSAtIFVzZWQgZm9yIGZldGNoaW5nIGRhdGEgZnJvbSBjdXN0b20gcHJvdmlkZXJzIGxpa2UgUkVTVCBBUElzIG9yIGV4dGVybmFsIHNlcnZpY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ3VzdG9tRGF0YVNvdXJjZSB7XG4gICAgdHlwZTogJ2N1c3RvbSc7XG4gICAgcHJvdmlkZXI6IHN0cmluZzsgLy8gRXhhbXBsZTogJ2h0dHA6Ly9hcGkvcmVwb3J0JyBvciAnY3VzdG9tOk15SGFuZGxlcidcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIGlucHV0cz86IEFYUFJlcG9ydFBhcmFtZXRlckJpbmRpbmdbXTsgLy8gTWFwcyByZXBvcnQgcGFyYW1ldGVycyB0byBwYXlsb2FkXG4gICAgb3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07ICAgICAvLyBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBjdXN0b20gaGFuZGxlclxufVxuXG4vKipcbiAqIFBhcmFtZXRlciBCaW5kaW5nIC0gTWFwcyByZXBvcnQtbGV2ZWwgcGFyYW1ldGVycyB0byBhY3R1YWwgcXVlcnkvY29tbWFuZCBpbnB1dCBzdHJ1Y3R1cmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRQYXJhbWV0ZXJCaW5kaW5nIHtcbiAgICBwYXJhbWV0ZXJLZXk6IHN0cmluZzsgLy8gUmVwb3J0IHBhcmFtZXRlciBrZXksIGUuZy4sICdzdGFydERhdGUnXG4gICAgYmluZFRvOiBzdHJpbmc7ICAgICAgIC8vIElucHV0IGtleSBpbiB0aGUgcXVlcnkvY29tbWFuZCBwYXlsb2FkLCBlLmcuLCAnZmlsdGVycy5mcm9tJ1xufVxuXG4vKipcbiAqIEFnZ3JlZ2F0ZWQgRGF0YSBTb3VyY2UgLSBVc2VkIGZvciBwcmUtYWdncmVnYXRlZCBkYXRhIG9wdGltaXplZCBmb3IgY2hhcnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQWdncmVnYXRlZERhdGFTb3VyY2Uge1xuICAgIHR5cGU6ICdhZ2dyZWdhdGVkJztcbiAgICBiYXNlUXVlcnk6IHN0cmluZzsgICAgLy8gQmFzZSBxdWVyeSB0byBhZ2dyZWdhdGUgZnJvbVxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgZ3JvdXBCeTogc3RyaW5nW107ICAgIC8vIEZpZWxkcyB0byBncm91cCBieVxuICAgIGFnZ3JlZ2F0aW9uczogQVhQQWdncmVnYXRpb25bXTsgLy8gQWdncmVnYXRpb24gb3BlcmF0aW9uc1xuICAgIGlucHV0cz86IEFYUFJlcG9ydFBhcmFtZXRlckJpbmRpbmdbXTtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm1lZCBEYXRhIFNvdXJjZSAtIEFwcGxpZXMgdHJhbnNmb3JtYXRpb25zIHRvIGV4aXN0aW5nIGRhdGEgc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFRyYW5zZm9ybWVkRGF0YVNvdXJjZSB7XG4gICAgdHlwZTogJ3RyYW5zZm9ybWVkJztcbiAgICBiYXNlRGF0YVNvdXJjZTogQVhQUmVwb3J0RGF0YVNvdXJjZTsgLy8gU291cmNlIHRvIHRyYW5zZm9ybVxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgdHJhbnNmb3JtYXRpb25zOiBBWFBEYXRhVHJhbnNmb3JtYXRpb25bXTsgLy8gTGlzdCBvZiB0cmFuc2Zvcm1hdGlvbnNcbiAgICBpbnB1dHM/OiBBWFBSZXBvcnRQYXJhbWV0ZXJCaW5kaW5nW107XG59XG5cbi8qKlxuICogQWdncmVnYXRpb24gb3BlcmF0aW9uIGZvciBhZ2dyZWdhdGVkIGRhdGEgc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUEFnZ3JlZ2F0aW9uIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG9wZXJhdGlvbjogJ3N1bScgfCAnYXZnJyB8ICdjb3VudCcgfCAnbWluJyB8ICdtYXgnIHwgJ2Rpc3RpbmN0JztcbiAgICBhbGlhcz86IHN0cmluZzsgLy8gT3V0cHV0IGZpZWxkIG5hbWVcbn1cblxuLyoqXG4gKiBEYXRhIHRyYW5zZm9ybWF0aW9uIG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUERhdGFUcmFuc2Zvcm1hdGlvbiB7XG4gICAgdHlwZTogJ2ZpbHRlcicgfCAnc29ydCcgfCAnZ3JvdXAnIHwgJ3Bpdm90JyB8ICdmb3JtYXQnO1xuICAgIGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PjsgLy8gVHJhbnNmb3JtYXRpb24tc3BlY2lmaWMgY29uZmlndXJhdGlvblxufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBMYXlvdXQgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCB0eXBlIEFYUFJlcG9ydExheW91dCA9XG4gICAgfCBBWFBSZXBvcnRUYWJsZUxheW91dFxuICAgIHwgQVhQUmVwb3J0Q2hhcnRMYXlvdXRcblxuLyoqXG4gKiBUYWJsZSBMYXlvdXQgLSBEaXNwbGF5cyBkYXRhIGluIHRhYnVsYXIgZm9ybWF0XG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRUYWJsZUxheW91dFJvd0FjdGlvbiBleHRlbmRzIEFYUEFjdGlvbk1lbnVJdGVtIHtcbiAgICBwcmlvcml0eTogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeSc7XG4gICAgdHlwZTogQVhQU3lzdGVtQWN0aW9uVHlwZSB8IHN0cmluZztcbiAgICBkZWZhdWx0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRUYWJsZUxheW91dCB7XG4gICAgdHlwZTogJ3RhYmxlJztcbiAgICBjb2x1bW5zOiBBWFBSZXBvcnRDb2x1bW5bXTtcbiAgICBhY3Rpb25zPzogQVhQUmVwb3J0VGFibGVMYXlvdXRSb3dBY3Rpb25bXTtcbiAgICBvcHRpb25zPzogQVhQVGFibGVPcHRpb25zO1xuICAgIGdyb3VwQnk/OiBzdHJpbmdbXTtcbiAgICBjb25kaXRpb25hbEZvcm1hdHRpbmc/OiBBWFBDb25kaXRpb25hbEZvcm1hdFJ1bGVbXTtcbiAgICBzdW1tYXJ5PzogQVhQUmVwb3J0U3VtbWFyeU9wdGlvbnNbXTtcbiAgICBoZWFkZXI/OiBBWFBSZXBvcnRIZWFkZXJGb290ZXI7XG4gICAgZm9vdGVyPzogQVhQUmVwb3J0SGVhZGVyRm9vdGVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFRhYmxlT3B0aW9ucyB7XG4gICAgcGFnaW5hdGlvbj86IGJvb2xlYW47XG4gICAgc3RpY2t5SGVhZGVyPzogYm9vbGVhbjtcbiAgICBzdHJpcGVkUm93cz86IGJvb2xlYW47XG4gICAgc29ydGluZz86IEFYUFF1ZXJ5U29ydFtdO1xuICAgIHNlbGVjdGFibGU/OiB7XG4gICAgICAgIG1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyB8ICdub25lJztcbiAgICB9O1xufVxuXG4vKipcbiAqIENoYXJ0IExheW91dCAtIERpc3BsYXlzIGRhdGEgaW4gdmFyaW91cyBjaGFydCBmb3JtYXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0Q2hhcnRMYXlvdXQge1xuICAgIHR5cGU6ICdjaGFydCc7XG4gICAgb3B0aW9uczogQVhQUmVwb3J0Q2hhcnRPcHRpb25zO1xuICAgIGhlYWRlcj86IEFYUFJlcG9ydEhlYWRlckZvb3RlcjtcbiAgICBmb290ZXI/OiBBWFBSZXBvcnRIZWFkZXJGb290ZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0Q2hhcnRPcHRpb25zIHtcbiAgICBjaGFydFR5cGU6ICdiYXInIHwgJ2xpbmUnIHwgJ3BpZScgfCAnZG91Z2hudXQnIHwgJ2FyZWEnIHwgJ3NjYXR0ZXInIHwgJ3JhZGFyJyB8ICdtaXhlZCc7XG4gICAgZGF0YU1hcHBpbmc6IEFYUENoYXJ0RGF0YU1hcHBpbmc7XG4gICAgc3R5bGluZz86IEFYUENoYXJ0U3R5bGluZztcbiAgICBpbnRlcmFjdGl2aXR5PzogQVhQQ2hhcnRJbnRlcmFjdGl2aXR5O1xufVxuXG4vKipcbiAqIENoYXJ0IERhdGEgTWFwcGluZyBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ2hhcnREYXRhTWFwcGluZyB7XG4gICAgLy8gQ29yZSBmaWVsZHNcbiAgICB4RmllbGQ6IHN0cmluZzsgICAgICAgICAgICAgICAgICAgIC8vIFgtYXhpcyBkYXRhIGZpZWxkXG4gICAgeUZpZWxkczogc3RyaW5nIHwgc3RyaW5nW107ICAgICAgICAvLyBZLWF4aXMgZGF0YSBmaWVsZChzKSBmb3IgbXVsdGlwbGUgc2VyaWVzXG5cbiAgICAvLyBHcm91cGluZyBhbmQgY2F0ZWdvcml6YXRpb25cbiAgICBncm91cEJ5Pzogc3RyaW5nOyAgICAgICAgICAgICAgICAgIC8vIEdyb3VwIGRhdGEgYnkgdGhpcyBmaWVsZFxuICAgIHNlcmllc0ZpZWxkPzogc3RyaW5nOyAgICAgICAgICAgICAgLy8gRmllbGQgdG8gY3JlYXRlIG11bHRpcGxlIHNlcmllc1xuXG4gICAgLy8gU3BlY2lhbCBmaWVsZHMgZm9yIHNwZWNpZmljIGNoYXJ0IHR5cGVzXG4gICAgc2l6ZUZpZWxkPzogc3RyaW5nOyAgICAgICAgICAgICAgICAvLyBGb3IgYnViYmxlIGNoYXJ0c1xuICAgIGNvbG9yRmllbGQ/OiBzdHJpbmc7ICAgICAgICAgICAgICAgLy8gRm9yIGdyYWRpZW50L2NvbmRpdGlvbmFsIGNvbG9yaW5nXG4gICAgbGFiZWxGaWVsZD86IHN0cmluZzsgICAgICAgICAgICAgICAvLyBDdXN0b20gbGFiZWwgZmllbGRcblxuICAgIC8vIERhdGEgYWdncmVnYXRpb25cbiAgICBhZ2dyZWdhdGlvbj86IHtcbiAgICAgICAgbWV0aG9kOiAnc3VtJyB8ICdhdmcnIHwgJ2NvdW50JyB8ICdtaW4nIHwgJ21heCc7XG4gICAgICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBDaGFydCBWaXN1YWwgU3R5bGluZyBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ2hhcnRTdHlsaW5nIHtcbiAgICAvLyBUaGVtZSBhbmQgY29sb3JzXG4gICAgY29sb3JTY2hlbWU/OiAnZGVmYXVsdCcgfCAncHJpbWFyeScgfCAnc3VjY2VzcycgfCAnd2FybmluZycgfCAnZGFuZ2VyJyB8ICdjdXN0b20nO1xuICAgIGN1c3RvbUNvbG9ycz86IHN0cmluZ1tdO1xuXG4gICAgLy8gQ2hhcnQgYXBwZWFyYW5jZVxuICAgIGdyaWRMaW5lcz86IGJvb2xlYW47XG4gICAgbGVnZW5kPzoge1xuICAgICAgICBzaG93OiBib29sZWFuO1xuICAgICAgICBwb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG4gICAgfTtcblxuICAgIC8vIEF4ZXMgY29uZmlndXJhdGlvblxuICAgIHhBeGlzPzogQVhQQ2hhcnRBeGlzQ29uZmlnO1xuICAgIHlBeGlzPzogQVhQQ2hhcnRBeGlzQ29uZmlnO1xuXG4gICAgLy8gQW5pbWF0aW9uXG4gICAgYW5pbWF0aW9uPzoge1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICBkdXJhdGlvbj86IG51bWJlcjtcbiAgICB9O1xuXG4gICAgLy8gQ2hhcnQtc3BlY2lmaWMgc3R5bGluZ1xuICAgIGNoYXJ0U3BlY2lmaWM/OiB7XG4gICAgICAgIC8vIEJhciBjaGFydCBvcHRpb25zXG4gICAgICAgIGJhcj86IHtcbiAgICAgICAgICAgIG9yaWVudGF0aW9uOiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnO1xuICAgICAgICAgICAgbW9kZTogJ2dyb3VwZWQnIHwgJ3N0YWNrZWQnO1xuICAgICAgICAgICAgYmFyV2lkdGg/OiBudW1iZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gTGluZSBjaGFydCBvcHRpb25zXG4gICAgICAgIGxpbmU/OiB7XG4gICAgICAgICAgICBzdHlsZTogJ3N0cmFpZ2h0JyB8ICdjdXJ2ZWQnIHwgJ3N0ZXBwZWQnO1xuICAgICAgICAgICAgc2hvd1BvaW50cz86IGJvb2xlYW47XG4gICAgICAgICAgICB0ZW5zaW9uPzogbnVtYmVyO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFyZWEgY2hhcnQgb3B0aW9uc1xuICAgICAgICBhcmVhPzoge1xuICAgICAgICAgICAgbW9kZTogJ25vcm1hbCcgfCAnc3RhY2tlZCcgfCAncGVyY2VudGFnZSc7XG4gICAgICAgICAgICBvcGFjaXR5PzogbnVtYmVyO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFBpZS9Eb3VnaG51dCBvcHRpb25zXG4gICAgICAgIHBpZT86IHtcbiAgICAgICAgICAgIHN0YXJ0QW5nbGU/OiBudW1iZXI7XG4gICAgICAgICAgICBpbm5lclJhZGl1cz86IG51bWJlcjsgLy8gRm9yIGRvdWdobnV0IGNoYXJ0c1xuICAgICAgICAgICAgc2hvd0xhYmVscz86IGJvb2xlYW47XG4gICAgICAgIH07XG4gICAgfTtcbn1cblxuLyoqXG4gKiBDaGFydCBBeGlzIENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBDaGFydEF4aXNDb25maWcge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHNob3c/OiBib29sZWFuO1xuICAgIHR5cGU/OiAnbGluZWFyJyB8ICdsb2dhcml0aG1pYycgfCAnZGF0ZXRpbWUnIHwgJ2NhdGVnb3J5JztcbiAgICBtaW4/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgbWF4PzogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGZvcm1hdD86IHN0cmluZztcbiAgICBncmlkTGluZXM/OiBib29sZWFuO1xuICAgIHRpY2tJbnRlcnZhbD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDaGFydCBJbnRlcmFjdGl2aXR5IENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBDaGFydEludGVyYWN0aXZpdHkge1xuICAgIC8vIFpvb20gYW5kIHBhblxuICAgIHpvb20/OiB7XG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIG1vZGU/OiAneCcgfCAneScgfCAneHknO1xuICAgIH07XG5cbiAgICAvLyBUb29sdGlwc1xuICAgIHRvb2x0aXBzPzoge1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICBmb3JtYXQ/OiBzdHJpbmc7XG4gICAgICAgIHNob3dPbkhvdmVyPzogYm9vbGVhbjtcbiAgICB9O1xuXG4gICAgLy8gQ2xpY2sgZXZlbnRzXG4gICAgb25DbGljaz86IHtcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgYWN0aW9uPzogJ2RyaWxsLWRvd24nIHwgJ2ZpbHRlcicgfCAnY3VzdG9tJztcbiAgICB9O1xuXG4gICAgLy8gU2VsZWN0aW9uXG4gICAgc2VsZWN0aW9uPzoge1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICBtb2RlPzogJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xuICAgIH07XG5cbiAgICAvLyBFeHBvcnRcbiAgICBleHBvcnQ/OiB7XG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIGZvcm1hdHM/OiAoJ3BuZycgfCAnanBnJyB8ICdwZGYnIHwgJ3N2ZycpW107XG4gICAgfTtcbn1cblxuXG4vLyNyZWdpb24gLS0tLSAgIFNoYXJlZCBNb2RlbHMgICAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0Q29sdW1uIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHZpc2libGU/OiBib29sZWFuO1xuICAgIHdpZHRoPzogbnVtYmVyO1xuICAgIGFsaWduPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuICAgIHdpZGdldD86IEFYUFdpZGdldENvbHVtbk5vZGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRTdW1tYXJ5T3B0aW9ucyB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBvcGVyYXRpb246ICdzdW0nIHwgJ2F2ZycgfCAnY291bnQnIHwgJ21pbicgfCAnbWF4JztcbiAgICBkaXNwbGF5SW46ICdncm91cEZvb3RlcicgfCAncmVwb3J0Rm9vdGVyJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBDb25kaXRpb25hbEZvcm1hdFJ1bGUge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgY29uZGl0aW9uOiAnPicgfCAnPCcgfCAnPScgfCAnIT0nIHwgJ2NvbnRhaW5zJztcbiAgICB2YWx1ZTogYW55O1xuICAgIHN0eWxlOiB7XG4gICAgICAgIGNvbG9yPzogc3RyaW5nO1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gICAgICAgIGZvbnRXZWlnaHQ/OiAnbm9ybWFsJyB8ICdib2xkJztcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydEhlYWRlckZvb3RlciB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgbG9nb1VybD86IHN0cmluZztcbiAgICBzaG93RGF0ZT86IGJvb2xlYW47XG4gICAgc2hvd1BhcmFtZXRlcnM/OiBib29sZWFuO1xuICAgIGN1c3RvbUh0bWw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGF5b3V0IHN3aXRjaGVyIG9wdGlvbnMgZm9yIFVJIGNvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBMYXlvdXRTd2l0Y2hlck9wdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgdHlwZTogQVhQUmVwb3J0TGF5b3V0VHlwZTtcbn1cblxuLyoqXG4gKiBSdW50aW1lIGxheW91dCBzZWxlY3Rpb24gc3RhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRMYXlvdXRTdGF0ZSB7XG4gICAgcmVwb3J0SWQ6IHN0cmluZztcbiAgICBhY3RpdmVMYXlvdXRJZDogc3RyaW5nO1xuICAgIGF2YWlsYWJsZUxheW91dHM6IEFYUExheW91dFN3aXRjaGVyT3B0aW9uW107XG59XG5cbi8qKlxuICogTGF5b3V0IHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTGF5b3V0VmFsaWRhdGlvblJlc3VsdCB7XG4gICAgaXNWYWxpZDogYm9vbGVhbjtcbiAgICBlcnJvcnM6IHN0cmluZ1tdO1xuICAgIGxheW91dElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0YSBzb3VyY2UgcmVzb2x1dGlvbiByZXN1bHQgZm9yIGEgc3BlY2lmaWMgbGF5b3V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTGF5b3V0RGF0YVNvdXJjZVJlc29sdXRpb24ge1xuICAgIGxheW91dElkOiBzdHJpbmc7XG4gICAgZGF0YVNvdXJjZTogQVhQUmVwb3J0RGF0YVNvdXJjZTtcbiAgICBzb3VyY2U6ICdsYXlvdXQnIHwgJ3JlcG9ydCcgfCAnbm9uZSc7IC8vIFdoZXJlIHRoZSBkYXRhU291cmNlIGNhbWUgZnJvbVxufVxuXG4vKipcbiAqIExheW91dCBleGVjdXRpb24gY29udGV4dCB3aXRoIHJlc29sdmVkIGRhdGEgc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTGF5b3V0RXhlY3V0aW9uQ29udGV4dCB7XG4gICAgcmVwb3J0SWQ6IHN0cmluZztcbiAgICBsYXlvdXRJZDogc3RyaW5nO1xuICAgIGRhdGFTb3VyY2U6IEFYUFJlcG9ydERhdGFTb3VyY2U7XG4gICAgZmlsdGVyczogQVhQRmlsdGVyQ2xhdXNlO1xufVxuXG5cbmV4cG9ydCB0eXBlIEFYUEV4ZWN1dGlvblJlcG9ydFJlc3VsdCA9XG4gICAgfCB7IHR5cGU6ICd0YWJsZScsIGl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLCB0b3RhbDogbnVtYmVyIH1cbiAgICB8IHsgdHlwZTogJ2NoYXJ0JywgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfVxuICAgIHwgeyB0eXBlOiAnY2FyZHMnLCBpdGVtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSB9XG4gICAgfCB7IHR5cGU6ICdjdXN0b20nLCBkYXRhOiB1bmtub3duIH07XG5cblxuZXhwb3J0IHR5cGUgQVhQRXhlY3V0aW9uUmVwb3J0Q29tbWFuZFJlc3VsdCA9IEFYUFJlcG9ydExheW91dCAmIHsgZGF0YTogQVhQRXhlY3V0aW9uUmVwb3J0UmVzdWx0IH07XG5cblxuZXhwb3J0IGludGVyZmFjZSBBWFBFeGVjdXRpb25SZXBvcnRDb21tYW5kIGV4dGVuZHMgQVhQQ29tbWFuZDxBWFBMYXlvdXRFeGVjdXRpb25Db250ZXh0LCBBWFBFeGVjdXRpb25SZXBvcnRDb21tYW5kUmVzdWx0PiB7XG59XG5cbi8qKlxuICogUmVwb3J0IGV4ZWN1dGlvbiBzdGF0dXMgYW5kIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0RXhlY3V0aW9uU3RhdHVzIHtcbiAgICByZXBvcnRJZDogc3RyaW5nO1xuICAgIGxheW91dElkOiBzdHJpbmc7XG4gICAgc3RhdHVzOiAncGVuZGluZycgfCAnZXhlY3V0aW5nJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCcgfCAnY2FuY2VsbGVkJztcbiAgICBzdGFydFRpbWU6IERhdGU7XG4gICAgZW5kVGltZT86IERhdGU7XG4gICAgZHVyYXRpb24/OiBudW1iZXI7IC8vIG1pbGxpc2Vjb25kc1xuICAgIHJlY29yZENvdW50PzogbnVtYmVyO1xuICAgIGVycm9yPzogQVhQUmVwb3J0RXhlY3V0aW9uRXJyb3I7XG59XG5cbi8qKlxuICogRGV0YWlsZWQgZXJyb3IgaW5mb3JtYXRpb24gZm9yIHJlcG9ydCBleGVjdXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRFeGVjdXRpb25FcnJvciB7XG4gICAgY29kZTogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBkZXRhaWxzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgc3RhY2s/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwb3J0IGV4ZWN1dGlvbiByZXF1ZXN0IHdpdGggb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydEV4ZWN1dGlvblJlcXVlc3Qge1xuICAgIHJlcG9ydElkOiBzdHJpbmc7XG4gICAgbGF5b3V0SWQ6IHN0cmluZztcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBvcHRpb25zPzogQVhQUmVwb3J0RXhlY3V0aW9uT3B0aW9ucztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciByZXBvcnQgZXhlY3V0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0RXhlY3V0aW9uT3B0aW9ucyB7XG4gICAgdGltZW91dD86IG51bWJlcjsgLy8gbWlsbGlzZWNvbmRzXG4gICAgcHJpb3JpdHk/OiAnbG93JyB8ICdub3JtYWwnIHwgJ2hpZ2gnO1xuICAgIGNhY2hlPzogYm9vbGVhbjtcbiAgICBjYWNoZVRpbWVvdXQ/OiBudW1iZXI7IC8vIHNlY29uZHNcbn1cblxuLy8jZW5kcmVnaW9uXG5cblxuIl19","import { InjectionToken } from '@angular/core';\nexport const AXP_REPORT_DEFINITION_PROVIDER = new InjectionToken('AXP_REPORT_DEFINITION_PROVIDER', {\n factory: () => [],\n});\nexport const AXP_REPORT_CATEGORY_PROVIDER = new InjectionToken('AXP_REPORT_CATEGORY_PROVIDER', {\n factory: () => [],\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9yZXBvcnRzL3JlcG9ydC1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0MsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBQXFDLGdDQUFnQyxFQUFFO0lBQ25JLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0NBQ3BCLENBQUMsQ0FBQztBQVlILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFtQyw4QkFBOEIsRUFBRTtJQUM3SCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtDQUNwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2F0ZWdvcnksIEFYUFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuL3JlcG9ydC50eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclRva2VuID1cbiAgICB8IEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclxuICAgIHwgUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXI+O1xuXG5leHBvcnQgY29uc3QgQVhQX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclRva2VuW10+KCdBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVInLCB7XG4gICAgZmFjdG9yeTogKCkgPT4gW10sXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuICAgIGdldExpc3QoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+O1xuICAgIGdldEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD47XG59XG5cblxuZXhwb3J0IHR5cGUgQVhQUmVwb3J0Q2F0ZWdvcnlQcm92aWRlclRva2VuID1cbiAgICB8IEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXJcbiAgICB8IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnlQcm92aWRlcj47XG5cbmV4cG9ydCBjb25zdCBBWFBfUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXJUb2tlbltdPignQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUicsIHtcbiAgICBmYWN0b3J5OiAoKSA9PiBbXSxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIge1xuICAgIGdldExpc3QocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+O1xuICAgIGdldEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnkgfCB1bmRlZmluZWQ+O1xufVxuXG5cblxuIl19","//#region ---- Imports ----\nimport { inject, Injectable } from '@angular/core';\nimport { AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER } from './report-definition.provider';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Optimized Report Definition Service\n *\n * Performance optimizations:\n * 1. Uses childrenCount to determine if category has children (no query needed)\n * 2. Uses itemsCount to determine if category has reports (no query needed)\n * 3. Aggressive caching prevents duplicate API calls\n * 4. Single pending request per resource prevents race conditions\n * 5. Lazy loading - only loads data when needed\n */\nexport class AXPReportDefinitionService {\n constructor() {\n //#region ---- Providers & Caches ----\n this.categoryProviders = inject(AXP_REPORT_CATEGORY_PROVIDER, { optional: true }) || [];\n this.definitionProviders = inject(AXP_REPORT_DEFINITION_PROVIDER, { optional: true }) || [];\n //#endregion\n //#region ---- Cache Storage ----\n /** Cache for categories by id - O(1) lookup */\n this.categoriesById = new Map();\n /** Cache for categories by parentId - O(1) lookup */\n this.categoriesByParentId = new Map();\n /** Cache for report definitions by categoryId - O(1) lookup */\n this.definitionsByCategory = new Map();\n /** Cache for individual report definitions by id - O(1) lookup */\n this.definitionsById = new Map();\n /** Track which provider index owns each category (by category ID) */\n this.categoryOwnership = new Map(); // Maps categoryId → provider index\n /** Pending API requests to prevent duplicate calls */\n this.pendingCategoriesRequests = new Map();\n this.pendingDefinitionsRequests = new Map();\n this.pendingReportRequests = new Map();\n }\n //#endregion\n //#region ---- Public API: Categories ----\n /**\n * Get categories by parentId with aggressive caching\n *\n * Optimization: Returns cached result immediately if available,\n * preventing unnecessary API calls during navigation\n *\n * @param parentId - Parent category ID (undefined = root categories)\n * @returns Array of categories with count metadata (childrenCount, itemsCount)\n */\n async getCategories(parentId) {\n // ✅ Fast path: Return cached result\n if (this.categoriesByParentId.has(parentId)) {\n return this.categoriesByParentId.get(parentId);\n }\n // ✅ Prevent duplicate requests: Return pending promise\n if (this.pendingCategoriesRequests.has(parentId)) {\n return this.pendingCategoriesRequests.get(parentId);\n }\n // ✅ Create single request and cache it\n const requestPromise = this.loadCategoriesFromProviders(parentId);\n this.pendingCategoriesRequests.set(parentId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single category by ID with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval, falls back to\n * searching cache, then providers if not found\n */\n async getCategoryById(categoryId) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n // ✅ Search in cached parent-child lists\n for (const categories of this.categoriesByParentId.values()) {\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n this.categoriesById.set(categoryId, found);\n return found;\n }\n }\n // ✅ Load root categories if not loaded\n if (!this.categoriesByParentId.has(undefined)) {\n await this.getCategories();\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n }\n // ✅ Breadth-first search through hierarchy\n return this.searchCategoryInHierarchy(categoryId);\n }\n /**\n * Get category path from root to specified category\n *\n * Optimization: Builds path using cached categories only\n */\n async getCategoriesPathById(categoryId) {\n const path = [];\n let currentCategoryId = categoryId;\n while (currentCategoryId) {\n const category = await this.getCategoryById(currentCategoryId);\n if (!category) {\n throw new Error(`Category '${currentCategoryId}' not found`);\n }\n path.unshift(category);\n currentCategoryId = category.parentId;\n }\n return path;\n }\n //#endregion\n //#region ---- Public API: Report Definitions ----\n /**\n * Get report definitions for a category with smart caching\n *\n * Optimization: Checks itemsCount before querying\n * - If itemsCount = 0, returns empty array (no API call)\n * - If itemsCount > 0, loads and caches reports\n * - Returns cached result on subsequent calls\n *\n * @param categoryId - Category ID to get reports from\n * @returns Array of report definitions\n */\n async getReportsByCategoryId(categoryId) {\n // ✅ Fast path: Return cached result\n if (this.definitionsByCategory.has(categoryId)) {\n return this.definitionsByCategory.get(categoryId);\n }\n // ✅ Smart optimization: Check itemsCount before querying\n const category = await this.getCategoryById(categoryId);\n if (category && category.itemsCount !== undefined && category.itemsCount === 0) {\n // Category has no reports - cache empty array and skip API call\n const emptyArray = [];\n this.definitionsByCategory.set(categoryId, emptyArray);\n return emptyArray;\n }\n // ✅ Prevent duplicate requests\n if (this.pendingDefinitionsRequests.has(categoryId)) {\n return this.pendingDefinitionsRequests.get(categoryId);\n }\n // ✅ Load from providers\n const requestPromise = this.loadReportsFromProviders(categoryId);\n this.pendingDefinitionsRequests.set(categoryId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single report definition by ID with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval\n */\n async getReportById(id) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.definitionsById.has(id)) {\n return this.definitionsById.get(id);\n }\n // ✅ Prevent duplicate requests\n if (this.pendingReportRequests.has(id)) {\n return this.pendingReportRequests.get(id);\n }\n // ✅ Load from providers\n const requestPromise = this.loadReportFromProviders(id);\n this.pendingReportRequests.set(id, requestPromise);\n return requestPromise;\n }\n /**\n * Get category ID containing a specific report\n *\n * Optimization: Searches cache first, loads on-demand if needed\n */\n async getCategoryIdByReportId(reportId) {\n // ✅ Search in cached reports\n for (const [categoryId, reports] of this.definitionsByCategory.entries()) {\n if (reports.some(report => report.id === reportId)) {\n return categoryId;\n }\n }\n // ✅ Try loading the report to find its category\n const report = await this.getReportById(reportId);\n if (report && report.categoryIds && report.categoryIds.length > 0) {\n return report.categoryIds[0]; // Return first category\n }\n return undefined;\n }\n /**\n * Get category path for a report\n */\n async getCategoriesPathByReportId(reportId) {\n const categoryId = await this.getCategoryIdByReportId(reportId);\n if (!categoryId) {\n throw new Error(`Report '${reportId}' not found in any category`);\n }\n return this.getCategoriesPathById(categoryId);\n }\n //#endregion\n //#region ---- Private: Data Loading ----\n /**\n * Load categories from providers and cache results\n *\n * Optimization: Tracks provider ownership to avoid unnecessary API calls\n * - For root (parentId = undefined): Query ALL providers\n * - For children: Only query the provider that owns the parent\n */\n async loadCategoriesFromProviders(parentId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.categoryProviders);\n const categories = [];\n // Determine which provider(s) to query\n const providerIndicesToQuery = parentId\n ? this.getProviderIndexForCategory(parentId)\n : null; // Root: query all providers\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const cats = await p.value.getList(parentId);\n if (Array.isArray(cats) && cats.length > 0) {\n categories.push(...cats);\n // ✅ Track ownership: This provider INDEX owns these categories\n cats.forEach(cat => this.categoryOwnership.set(cat.id, i));\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.categoriesByParentId.set(parentId, categories);\n categories.forEach(cat => this.categoriesById.set(cat.id, cat));\n return categories;\n }\n finally {\n this.pendingCategoriesRequests.delete(parentId);\n }\n }\n /**\n * Get the provider index that owns a specific category\n *\n * @returns Array with provider index, or null if ownership unknown (query all)\n */\n getProviderIndexForCategory(categoryId) {\n const ownerIndex = this.categoryOwnership.get(categoryId);\n if (ownerIndex !== undefined) {\n return [ownerIndex];\n }\n // Ownership unknown - will query all providers (fallback)\n return null;\n }\n /**\n * Load report definitions from providers and cache results\n *\n * Optimization: Only queries the provider that owns the category\n * Uses provider INDEX to match category provider with definition provider\n */\n async loadReportsFromProviders(categoryId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.definitionProviders);\n const definitions = [];\n // ✅ Smart routing: Get provider INDEX that owns this category\n const ownerIndex = this.categoryOwnership.get(categoryId);\n const providerIndicesToQuery = ownerIndex !== undefined ? [ownerIndex] : null;\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const defs = await p.value.getList(categoryId);\n if (Array.isArray(defs)) {\n definitions.push(...defs);\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.definitionsByCategory.set(categoryId, definitions);\n definitions.forEach(def => this.definitionsById.set(def.id, def));\n return definitions;\n }\n finally {\n this.pendingDefinitionsRequests.delete(categoryId);\n }\n }\n /**\n * Load single report from providers and cache result\n */\n async loadReportFromProviders(id) {\n try {\n const resolvedProviders = await Promise.allSettled(this.definitionProviders);\n // Try providers first (full report with layouts)\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getById === 'function') {\n try {\n const result = await p.value.getById(id);\n if (result) {\n this.definitionsById.set(id, result);\n return result;\n }\n }\n catch {\n // Continue on error\n }\n }\n }\n // Fallback: Search in cached reports\n for (const reports of this.definitionsByCategory.values()) {\n const found = reports.find(report => report.id === id);\n if (found) {\n this.definitionsById.set(id, found);\n return found;\n }\n }\n return undefined;\n }\n finally {\n this.pendingReportRequests.delete(id);\n }\n }\n /**\n * Breadth-first search through category hierarchy\n */\n async searchCategoryInHierarchy(categoryId) {\n const searchQueue = [undefined];\n const searched = new Set();\n while (searchQueue.length > 0) {\n const parentId = searchQueue.shift();\n if (searched.has(parentId))\n continue;\n searched.add(parentId);\n const categories = await this.getCategories(parentId);\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n return found;\n }\n // ✅ Optimization: Only search children if childrenCount > 0\n for (const category of categories) {\n if (category.childrenCount > 0 && !searched.has(category.id)) {\n searchQueue.push(category.id);\n }\n }\n }\n return undefined;\n }\n //#endregion\n //#region ---- Cache Management ----\n /**\n * Check if category has children (uses cached count)\n */\n categoryHasChildren(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? category.childrenCount > 0 : false;\n }\n /**\n * Check if category has reports (uses cached count)\n */\n categoryHasReports(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? (category.itemsCount ?? 0) > 0 : false;\n }\n /**\n * Clear all caches\n */\n clearAllCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.definitionsByCategory.clear();\n this.definitionsById.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n this.pendingDefinitionsRequests.clear();\n this.pendingReportRequests.clear();\n }\n /**\n * Clear categories cache only\n */\n clearCategoriesCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n }\n /**\n * Clear reports cache only\n */\n clearReportsCache() {\n this.definitionsByCategory.clear();\n this.definitionsById.clear();\n this.pendingDefinitionsRequests.clear();\n this.pendingReportRequests.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL3JlcG9ydHMvcmVwb3J0LWRlZmluaXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRTVHLFlBQVk7QUFFWjs7Ozs7Ozs7O0dBU0c7QUFJSCxNQUFNLE9BQU8sMEJBQTBCO0lBSHZDO1FBSUksMENBQTBDO1FBRXpCLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRix3QkFBbUIsR0FBRyxNQUFNLENBQUMsOEJBQThCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEcsWUFBWTtRQUVaLHFDQUFxQztRQUVyQywrQ0FBK0M7UUFDdkMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztRQUU5RCxxREFBcUQ7UUFDN0MseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQTJDLENBQUM7UUFFbEYsK0RBQStEO1FBQ3ZELDBCQUFxQixHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBRXpFLGtFQUFrRTtRQUMxRCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO1FBRWpFLHFFQUFxRTtRQUM3RCxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQyxDQUFDLG1DQUFtQztRQUUxRixzREFBc0Q7UUFDOUMsOEJBQXlCLEdBQUcsSUFBSSxHQUFHLEVBQW9E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SyxFQUFFLENBQUM7SUFDdkMsQ0FBQzsrR0EvYlEsMEJBQTBCO21IQUExQiwwQkFBMEIsY0FGdkIsTUFBTTs7NEZBRVQsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBSZXBvcnRDYXRlZ29yeSwgQVhQUmVwb3J0RGVmaW5pdGlvbiB9IGZyb20gJy4vcmVwb3J0LnR5cGVzJztcbmltcG9ydCB7IEFYUF9SRVBPUlRfQ0FURUdPUllfUFJPVklERVIsIEFYUF9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiB9IGZyb20gJy4vcmVwb3J0LWRlZmluaXRpb24ucHJvdmlkZXInO1xuXG4vLyNlbmRyZWdpb25cblxuLyoqXG4gKiBPcHRpbWl6ZWQgUmVwb3J0IERlZmluaXRpb24gU2VydmljZVxuICogXG4gKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zOlxuICogMS4gVXNlcyBjaGlsZHJlbkNvdW50IHRvIGRldGVybWluZSBpZiBjYXRlZ29yeSBoYXMgY2hpbGRyZW4gKG5vIHF1ZXJ5IG5lZWRlZClcbiAqIDIuIFVzZXMgaXRlbXNDb3VudCB0byBkZXRlcm1pbmUgaWYgY2F0ZWdvcnkgaGFzIHJlcG9ydHMgKG5vIHF1ZXJ5IG5lZWRlZClcbiAqIDMuIEFnZ3Jlc3NpdmUgY2FjaGluZyBwcmV2ZW50cyBkdXBsaWNhdGUgQVBJIGNhbGxzXG4gKiA0LiBTaW5nbGUgcGVuZGluZyByZXF1ZXN0IHBlciByZXNvdXJjZSBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnNcbiAqIDUuIExhenkgbG9hZGluZyAtIG9ubHkgbG9hZHMgZGF0YSB3aGVuIG5lZWRlZFxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSZXBvcnREZWZpbml0aW9uU2VydmljZSB7XG4gICAgLy8jcmVnaW9uIC0tLS0gICBQcm92aWRlcnMgJiBDYWNoZXMgICAtLS0tXG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5UHJvdmlkZXJzID0gaW5qZWN0KEFYUF9SRVBPUlRfQ0FURUdPUllfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSkgfHwgW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZpbml0aW9uUHJvdmlkZXJzID0gaW5qZWN0KEFYUF9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KSB8fCBbXTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBDYWNoZSBTdG9yYWdlICAgLS0tLVxuXG4gICAgLyoqIENhY2hlIGZvciBjYXRlZ29yaWVzIGJ5IGlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGNhdGVnb3JpZXNCeUlkID0gbmV3IE1hcDxzdHJpbmcsIEFYUFJlcG9ydENhdGVnb3J5PigpO1xuXG4gICAgLyoqIENhY2hlIGZvciBjYXRlZ29yaWVzIGJ5IHBhcmVudElkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGNhdGVnb3JpZXNCeVBhcmVudElkID0gbmV3IE1hcDxzdHJpbmcgfCB1bmRlZmluZWQsIEFYUFJlcG9ydENhdGVnb3J5W10+KCk7XG5cbiAgICAvKiogQ2FjaGUgZm9yIHJlcG9ydCBkZWZpbml0aW9ucyBieSBjYXRlZ29yeUlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGRlZmluaXRpb25zQnlDYXRlZ29yeSA9IG5ldyBNYXA8c3RyaW5nLCBBWFBSZXBvcnREZWZpbml0aW9uW10+KCk7XG5cbiAgICAvKiogQ2FjaGUgZm9yIGluZGl2aWR1YWwgcmVwb3J0IGRlZmluaXRpb25zIGJ5IGlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGRlZmluaXRpb25zQnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBBWFBSZXBvcnREZWZpbml0aW9uPigpO1xuXG4gICAgLyoqIFRyYWNrIHdoaWNoIHByb3ZpZGVyIGluZGV4IG93bnMgZWFjaCBjYXRlZ29yeSAoYnkgY2F0ZWdvcnkgSUQpICovXG4gICAgcHJpdmF0ZSBjYXRlZ29yeU93bmVyc2hpcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7IC8vIE1hcHMgY2F0ZWdvcnlJZCDihpIgcHJvdmlkZXIgaW5kZXhcblxuICAgIC8qKiBQZW5kaW5nIEFQSSByZXF1ZXN0cyB0byBwcmV2ZW50IGR1cGxpY2F0ZSBjYWxscyAqL1xuICAgIHByaXZhdGUgcGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cyA9IG5ldyBNYXA8c3RyaW5nIHwgdW5kZWZpbmVkLCBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+PigpO1xuICAgIHByaXZhdGUgcGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+PigpO1xuICAgIHByaXZhdGUgcGVuZGluZ1JlcG9ydFJlcXVlc3RzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4+KCk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHVibGljIEFQSTogQ2F0ZWdvcmllcyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEdldCBjYXRlZ29yaWVzIGJ5IHBhcmVudElkIHdpdGggYWdncmVzc2l2ZSBjYWNoaW5nXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBSZXR1cm5zIGNhY2hlZCByZXN1bHQgaW1tZWRpYXRlbHkgaWYgYXZhaWxhYmxlLFxuICAgICAqIHByZXZlbnRpbmcgdW5uZWNlc3NhcnkgQVBJIGNhbGxzIGR1cmluZyBuYXZpZ2F0aW9uXG4gICAgICogXG4gICAgICogQHBhcmFtIHBhcmVudElkIC0gUGFyZW50IGNhdGVnb3J5IElEICh1bmRlZmluZWQgPSByb290IGNhdGVnb3JpZXMpXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgY2F0ZWdvcmllcyB3aXRoIGNvdW50IG1ldGFkYXRhIChjaGlsZHJlbkNvdW50LCBpdGVtc0NvdW50KVxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXMocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogUmV0dXJuIGNhY2hlZCByZXN1bHRcbiAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuaGFzKHBhcmVudElkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuZ2V0KHBhcmVudElkKSE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHM6IFJldHVybiBwZW5kaW5nIHByb21pc2VcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5oYXMocGFyZW50SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmdldChwYXJlbnRJZCkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIENyZWF0ZSBzaW5nbGUgcmVxdWVzdCBhbmQgY2FjaGUgaXRcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRDYXRlZ29yaWVzRnJvbVByb3ZpZGVycyhwYXJlbnRJZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5zZXQocGFyZW50SWQsIHJlcXVlc3RQcm9taXNlKTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdFByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHNpbmdsZSBjYXRlZ29yeSBieSBJRCB3aXRoIE8oMSkgbG9va3VwXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBVc2VzIE1hcCBmb3IgaW5zdGFudCByZXRyaWV2YWwsIGZhbGxzIGJhY2sgdG9cbiAgICAgKiBzZWFyY2hpbmcgY2FjaGUsIHRoZW4gcHJvdmlkZXJzIGlmIG5vdCBmb3VuZFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3J5QnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIOKchSBGYXN0IHBhdGg6IE8oMSkgbG9va3VwIGluIGNhY2hlXG4gICAgICAgIGlmICh0aGlzLmNhdGVnb3JpZXNCeUlkLmhhcyhjYXRlZ29yeUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIFNlYXJjaCBpbiBjYWNoZWQgcGFyZW50LWNoaWxkIGxpc3RzXG4gICAgICAgIGZvciAoY29uc3QgY2F0ZWdvcmllcyBvZiB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IGNhdGVnb3JpZXMuZmluZChjYXQgPT4gY2F0LmlkID09PSBjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0J5SWQuc2V0KGNhdGVnb3J5SWQsIGZvdW5kKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgTG9hZCByb290IGNhdGVnb3JpZXMgaWYgbm90IGxvYWRlZFxuICAgICAgICBpZiAoIXRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuaGFzKHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcmllcygpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5SWQuaGFzKGNhdGVnb3J5SWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIEJyZWFkdGgtZmlyc3Qgc2VhcmNoIHRocm91Z2ggaGllcmFyY2h5XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaENhdGVnb3J5SW5IaWVyYXJjaHkoY2F0ZWdvcnlJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGNhdGVnb3J5IHBhdGggZnJvbSByb290IHRvIHNwZWNpZmllZCBjYXRlZ29yeVxuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogQnVpbGRzIHBhdGggdXNpbmcgY2FjaGVkIGNhdGVnb3JpZXMgb25seVxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXNQYXRoQnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgY29uc3QgcGF0aDogQVhQUmVwb3J0Q2F0ZWdvcnlbXSA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudENhdGVnb3J5SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNhdGVnb3J5SWQ7XG5cbiAgICAgICAgd2hpbGUgKGN1cnJlbnRDYXRlZ29yeUlkKSB7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlCeUlkKGN1cnJlbnRDYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGlmICghY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhdGVnb3J5ICcke2N1cnJlbnRDYXRlZ29yeUlkfScgbm90IGZvdW5kYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXRoLnVuc2hpZnQoY2F0ZWdvcnkpO1xuICAgICAgICAgICAgY3VycmVudENhdGVnb3J5SWQgPSBjYXRlZ29yeS5wYXJlbnRJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgQVBJOiBSZXBvcnQgRGVmaW5pdGlvbnMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgcmVwb3J0IGRlZmluaXRpb25zIGZvciBhIGNhdGVnb3J5IHdpdGggc21hcnQgY2FjaGluZ1xuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogQ2hlY2tzIGl0ZW1zQ291bnQgYmVmb3JlIHF1ZXJ5aW5nXG4gICAgICogLSBJZiBpdGVtc0NvdW50ID0gMCwgcmV0dXJucyBlbXB0eSBhcnJheSAobm8gQVBJIGNhbGwpXG4gICAgICogLSBJZiBpdGVtc0NvdW50ID4gMCwgbG9hZHMgYW5kIGNhY2hlcyByZXBvcnRzXG4gICAgICogLSBSZXR1cm5zIGNhY2hlZCByZXN1bHQgb24gc3Vic2VxdWVudCBjYWxsc1xuICAgICAqIFxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkIC0gQ2F0ZWdvcnkgSUQgdG8gZ2V0IHJlcG9ydHMgZnJvbVxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIHJlcG9ydCBkZWZpbml0aW9uc1xuICAgICAqL1xuICAgIGFzeW5jIGdldFJlcG9ydHNCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogUmV0dXJuIGNhY2hlZCByZXN1bHRcbiAgICAgICAgaWYgKHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmhhcyhjYXRlZ29yeUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmdldChjYXRlZ29yeUlkKSE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgU21hcnQgb3B0aW1pemF0aW9uOiBDaGVjayBpdGVtc0NvdW50IGJlZm9yZSBxdWVyeWluZ1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlCeUlkKGNhdGVnb3J5SWQpO1xuICAgICAgICBpZiAoY2F0ZWdvcnkgJiYgY2F0ZWdvcnkuaXRlbXNDb3VudCAhPT0gdW5kZWZpbmVkICYmIGNhdGVnb3J5Lml0ZW1zQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIC8vIENhdGVnb3J5IGhhcyBubyByZXBvcnRzIC0gY2FjaGUgZW1wdHkgYXJyYXkgYW5kIHNraXAgQVBJIGNhbGxcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5QXJyYXk6IEFYUFJlcG9ydERlZmluaXRpb25bXSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5kZWZpbml0aW9uc0J5Q2F0ZWdvcnkuc2V0KGNhdGVnb3J5SWQsIGVtcHR5QXJyYXkpO1xuICAgICAgICAgICAgcmV0dXJuIGVtcHR5QXJyYXk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHNcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuaGFzKGNhdGVnb3J5SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5nZXQoY2F0ZWdvcnlJZCkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIExvYWQgZnJvbSBwcm92aWRlcnNcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRSZXBvcnRzRnJvbVByb3ZpZGVycyhjYXRlZ29yeUlkKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5zZXQoY2F0ZWdvcnlJZCwgcmVxdWVzdFByb21pc2UpO1xuXG4gICAgICAgIHJldHVybiByZXF1ZXN0UHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc2luZ2xlIHJlcG9ydCBkZWZpbml0aW9uIGJ5IElEIHdpdGggTygxKSBsb29rdXBcbiAgICAgKiBcbiAgICAgKiBPcHRpbWl6YXRpb246IFVzZXMgTWFwIGZvciBpbnN0YW50IHJldHJpZXZhbFxuICAgICAqL1xuICAgIGFzeW5jIGdldFJlcG9ydEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICAvLyDinIUgRmFzdCBwYXRoOiBPKDEpIGxvb2t1cCBpbiBjYWNoZVxuICAgICAgICBpZiAodGhpcy5kZWZpbml0aW9uc0J5SWQuaGFzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmdldChpZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHNcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLmhhcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdSZXBvcnRSZXF1ZXN0cy5nZXQoaWQpITtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOKchSBMb2FkIGZyb20gcHJvdmlkZXJzXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQcm9taXNlID0gdGhpcy5sb2FkUmVwb3J0RnJvbVByb3ZpZGVycyhpZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLnNldChpZCwgcmVxdWVzdFByb21pc2UpO1xuXG4gICAgICAgIHJldHVybiByZXF1ZXN0UHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY2F0ZWdvcnkgSUQgY29udGFpbmluZyBhIHNwZWNpZmljIHJlcG9ydFxuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogU2VhcmNoZXMgY2FjaGUgZmlyc3QsIGxvYWRzIG9uLWRlbWFuZCBpZiBuZWVkZWRcbiAgICAgKi9cbiAgICBhc3luYyBnZXRDYXRlZ29yeUlkQnlSZXBvcnRJZChyZXBvcnRJZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgLy8g4pyFIFNlYXJjaCBpbiBjYWNoZWQgcmVwb3J0c1xuICAgICAgICBmb3IgKGNvbnN0IFtjYXRlZ29yeUlkLCByZXBvcnRzXSBvZiB0aGlzLmRlZmluaXRpb25zQnlDYXRlZ29yeS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChyZXBvcnRzLnNvbWUocmVwb3J0ID0+IHJlcG9ydC5pZCA9PT0gcmVwb3J0SWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhdGVnb3J5SWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgVHJ5IGxvYWRpbmcgdGhlIHJlcG9ydCB0byBmaW5kIGl0cyBjYXRlZ29yeVxuICAgICAgICBjb25zdCByZXBvcnQgPSBhd2FpdCB0aGlzLmdldFJlcG9ydEJ5SWQocmVwb3J0SWQpO1xuICAgICAgICBpZiAocmVwb3J0ICYmIHJlcG9ydC5jYXRlZ29yeUlkcyAmJiByZXBvcnQuY2F0ZWdvcnlJZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcG9ydC5jYXRlZ29yeUlkc1swXTsgLy8gUmV0dXJuIGZpcnN0IGNhdGVnb3J5XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjYXRlZ29yeSBwYXRoIGZvciBhIHJlcG9ydFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXNQYXRoQnlSZXBvcnRJZChyZXBvcnRJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnRDYXRlZ29yeVtdPiB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5SWQgPSBhd2FpdCB0aGlzLmdldENhdGVnb3J5SWRCeVJlcG9ydElkKHJlcG9ydElkKTtcbiAgICAgICAgaWYgKCFjYXRlZ29yeUlkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcG9ydCAnJHtyZXBvcnRJZH0nIG5vdCBmb3VuZCBpbiBhbnkgY2F0ZWdvcnlgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDYXRlZ29yaWVzUGF0aEJ5SWQoY2F0ZWdvcnlJZCk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFByaXZhdGU6IERhdGEgTG9hZGluZyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIExvYWQgY2F0ZWdvcmllcyBmcm9tIHByb3ZpZGVycyBhbmQgY2FjaGUgcmVzdWx0c1xuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogVHJhY2tzIHByb3ZpZGVyIG93bmVyc2hpcCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBBUEkgY2FsbHNcbiAgICAgKiAtIEZvciByb290IChwYXJlbnRJZCA9IHVuZGVmaW5lZCk6IFF1ZXJ5IEFMTCBwcm92aWRlcnNcbiAgICAgKiAtIEZvciBjaGlsZHJlbjogT25seSBxdWVyeSB0aGUgcHJvdmlkZXIgdGhhdCBvd25zIHRoZSBwYXJlbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRDYXRlZ29yaWVzRnJvbVByb3ZpZGVycyhwYXJlbnRJZD86IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnlbXT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQcm92aWRlcnMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQodGhpcy5jYXRlZ29yeVByb3ZpZGVycyk7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzOiBBWFBSZXBvcnRDYXRlZ29yeVtdID0gW107XG5cbiAgICAgICAgICAgIC8vIERldGVybWluZSB3aGljaCBwcm92aWRlcihzKSB0byBxdWVyeVxuICAgICAgICAgICAgY29uc3QgcHJvdmlkZXJJbmRpY2VzVG9RdWVyeSA9IHBhcmVudElkXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldFByb3ZpZGVySW5kZXhGb3JDYXRlZ29yeShwYXJlbnRJZClcbiAgICAgICAgICAgICAgICA6IG51bGw7IC8vIFJvb3Q6IHF1ZXJ5IGFsbCBwcm92aWRlcnNcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFByb3ZpZGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSByZXNvbHZlZFByb3ZpZGVyc1tpXTtcblxuICAgICAgICAgICAgICAgIC8vIFNraXAgaWYgd2UgaGF2ZSBhIHNwZWNpZmljIHByb3ZpZGVyIGluZGV4IGFuZCB0aGlzIGlzbid0IGl0XG4gICAgICAgICAgICAgICAgaWYgKHByb3ZpZGVySW5kaWNlc1RvUXVlcnkgIT09IG51bGwgJiYgIXByb3ZpZGVySW5kaWNlc1RvUXVlcnkuaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHAuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiBwLnZhbHVlICYmIHR5cGVvZiBwLnZhbHVlLmdldExpc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhdHMgPSBhd2FpdCBwLnZhbHVlLmdldExpc3QocGFyZW50SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2F0cykgJiYgY2F0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKC4uLmNhdHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g4pyFIFRyYWNrIG93bmVyc2hpcDogVGhpcyBwcm92aWRlciBJTkRFWCBvd25zIHRoZXNlIGNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRzLmZvckVhY2goY2F0ID0+IHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuc2V0KGNhdC5pZCwgaSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIG9uIGVycm9yIC0gdHJ5IG90aGVyIHByb3ZpZGVyc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDinIUgQ2FjaGUgcmVzdWx0cyBmb3IgZmFzdCBzdWJzZXF1ZW50IGFjY2Vzc1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlQYXJlbnRJZC5zZXQocGFyZW50SWQsIGNhdGVnb3JpZXMpO1xuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKGNhdCA9PiB0aGlzLmNhdGVnb3JpZXNCeUlkLnNldChjYXQuaWQsIGNhdCkpO1xuXG4gICAgICAgICAgICByZXR1cm4gY2F0ZWdvcmllcztcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5kZWxldGUocGFyZW50SWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwcm92aWRlciBpbmRleCB0aGF0IG93bnMgYSBzcGVjaWZpYyBjYXRlZ29yeVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFycmF5IHdpdGggcHJvdmlkZXIgaW5kZXgsIG9yIG51bGwgaWYgb3duZXJzaGlwIHVua25vd24gKHF1ZXJ5IGFsbClcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFByb3ZpZGVySW5kZXhGb3JDYXRlZ29yeShjYXRlZ29yeUlkOiBzdHJpbmcpOiBudW1iZXJbXSB8IG51bGwge1xuICAgICAgICBjb25zdCBvd25lckluZGV4ID0gdGhpcy5jYXRlZ29yeU93bmVyc2hpcC5nZXQoY2F0ZWdvcnlJZCk7XG5cbiAgICAgICAgaWYgKG93bmVySW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFtvd25lckluZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE93bmVyc2hpcCB1bmtub3duIC0gd2lsbCBxdWVyeSBhbGwgcHJvdmlkZXJzIChmYWxsYmFjaylcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZCByZXBvcnQgZGVmaW5pdGlvbnMgZnJvbSBwcm92aWRlcnMgYW5kIGNhY2hlIHJlc3VsdHNcbiAgICAgKiBcbiAgICAgKiBPcHRpbWl6YXRpb246IE9ubHkgcXVlcmllcyB0aGUgcHJvdmlkZXIgdGhhdCBvd25zIHRoZSBjYXRlZ29yeVxuICAgICAqIFVzZXMgcHJvdmlkZXIgSU5ERVggdG8gbWF0Y2ggY2F0ZWdvcnkgcHJvdmlkZXIgd2l0aCBkZWZpbml0aW9uIHByb3ZpZGVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkUmVwb3J0c0Zyb21Qcm92aWRlcnMoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUHJvdmlkZXJzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHRoaXMuZGVmaW5pdGlvblByb3ZpZGVycyk7XG4gICAgICAgICAgICBjb25zdCBkZWZpbml0aW9uczogQVhQUmVwb3J0RGVmaW5pdGlvbltdID0gW107XG5cbiAgICAgICAgICAgIC8vIOKchSBTbWFydCByb3V0aW5nOiBHZXQgcHJvdmlkZXIgSU5ERVggdGhhdCBvd25zIHRoaXMgY2F0ZWdvcnlcbiAgICAgICAgICAgIGNvbnN0IG93bmVySW5kZXggPSB0aGlzLmNhdGVnb3J5T3duZXJzaGlwLmdldChjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGNvbnN0IHByb3ZpZGVySW5kaWNlc1RvUXVlcnkgPSBvd25lckluZGV4ICE9PSB1bmRlZmluZWQgPyBbb3duZXJJbmRleF0gOiBudWxsO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc29sdmVkUHJvdmlkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IHJlc29sdmVkUHJvdmlkZXJzW2ldO1xuXG4gICAgICAgICAgICAgICAgLy8gU2tpcCBpZiB3ZSBoYXZlIGEgc3BlY2lmaWMgcHJvdmlkZXIgaW5kZXggYW5kIHRoaXMgaXNuJ3QgaXRcbiAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXJJbmRpY2VzVG9RdWVyeSAhPT0gbnVsbCAmJiAhcHJvdmlkZXJJbmRpY2VzVG9RdWVyeS5pbmNsdWRlcyhpKSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnICYmIHAudmFsdWUgJiYgdHlwZW9mIHAudmFsdWUuZ2V0TGlzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmcyA9IGF3YWl0IHAudmFsdWUuZ2V0TGlzdChjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlZnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbnMucHVzaCguLi5kZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSBvbiBlcnJvciAtIHRyeSBvdGhlciBwcm92aWRlcnNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g4pyFIENhY2hlIHJlc3VsdHMgZm9yIGZhc3Qgc3Vic2VxdWVudCBhY2Nlc3NcbiAgICAgICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LnNldChjYXRlZ29yeUlkLCBkZWZpbml0aW9ucyk7XG4gICAgICAgICAgICBkZWZpbml0aW9ucy5mb3JFYWNoKGRlZiA9PiB0aGlzLmRlZmluaXRpb25zQnlJZC5zZXQoZGVmLmlkLCBkZWYpKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlZmluaXRpb25zO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5kZWxldGUoY2F0ZWdvcnlJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHNpbmdsZSByZXBvcnQgZnJvbSBwcm92aWRlcnMgYW5kIGNhY2hlIHJlc3VsdFxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgbG9hZFJlcG9ydEZyb21Qcm92aWRlcnMoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQcm92aWRlcnMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQodGhpcy5kZWZpbml0aW9uUHJvdmlkZXJzKTtcblxuICAgICAgICAgICAgLy8gVHJ5IHByb3ZpZGVycyBmaXJzdCAoZnVsbCByZXBvcnQgd2l0aCBsYXlvdXRzKVxuICAgICAgICAgICAgZm9yIChjb25zdCBwIG9mIHJlc29sdmVkUHJvdmlkZXJzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHAuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiBwLnZhbHVlICYmIHR5cGVvZiBwLnZhbHVlLmdldEJ5SWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHAudmFsdWUuZ2V0QnlJZChpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbml0aW9uc0J5SWQuc2V0KGlkLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgb24gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRmFsbGJhY2s6IFNlYXJjaCBpbiBjYWNoZWQgcmVwb3J0c1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXBvcnRzIG9mIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LnZhbHVlcygpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSByZXBvcnRzLmZpbmQocmVwb3J0ID0+IHJlcG9ydC5pZCA9PT0gaWQpO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluaXRpb25zQnlJZC5zZXQoaWQsIGZvdW5kKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLmRlbGV0ZShpZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCcmVhZHRoLWZpcnN0IHNlYXJjaCB0aHJvdWdoIGNhdGVnb3J5IGhpZXJhcmNoeVxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgc2VhcmNoQ2F0ZWdvcnlJbkhpZXJhcmNoeShjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFF1ZXVlOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdID0gW3VuZGVmaW5lZF07XG4gICAgICAgIGNvbnN0IHNlYXJjaGVkID0gbmV3IFNldDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAgICAgd2hpbGUgKHNlYXJjaFF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gc2VhcmNoUXVldWUuc2hpZnQoKSE7XG4gICAgICAgICAgICBpZiAoc2VhcmNoZWQuaGFzKHBhcmVudElkKSkgY29udGludWU7XG4gICAgICAgICAgICBzZWFyY2hlZC5hZGQocGFyZW50SWQpO1xuXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yaWVzKHBhcmVudElkKTtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gY2F0ZWdvcmllcy5maW5kKGNhdCA9PiBjYXQuaWQgPT09IGNhdGVnb3J5SWQpO1xuXG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBPcHRpbWl6YXRpb246IE9ubHkgc2VhcmNoIGNoaWxkcmVuIGlmIGNoaWxkcmVuQ291bnQgPiAwXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkuY2hpbGRyZW5Db3VudCA+IDAgJiYgIXNlYXJjaGVkLmhhcyhjYXRlZ29yeS5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoUXVldWUucHVzaChjYXRlZ29yeS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ2FjaGUgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGNhdGVnb3J5IGhhcyBjaGlsZHJlbiAodXNlcyBjYWNoZWQgY291bnQpXG4gICAgICovXG4gICAgY2F0ZWdvcnlIYXNDaGlsZHJlbihjYXRlZ29yeUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXNCeUlkLmdldChjYXRlZ29yeUlkKTtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5ID8gY2F0ZWdvcnkuY2hpbGRyZW5Db3VudCA+IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBjYXRlZ29yeSBoYXMgcmVwb3J0cyAodXNlcyBjYWNoZWQgY291bnQpXG4gICAgICovXG4gICAgY2F0ZWdvcnlIYXNSZXBvcnRzKGNhdGVnb3J5SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICByZXR1cm4gY2F0ZWdvcnkgPyAoY2F0ZWdvcnkuaXRlbXNDb3VudCA/PyAwKSA+IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgY2FjaGVzXG4gICAgICovXG4gICAgY2xlYXJBbGxDYWNoZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlJZC5jbGVhcigpO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVwb3J0UmVxdWVzdHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBjYXRlZ29yaWVzIGNhY2hlIG9ubHlcbiAgICAgKi9cbiAgICBjbGVhckNhdGVnb3JpZXNDYWNoZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlJZC5jbGVhcigpO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgcmVwb3J0cyBjYWNoZSBvbmx5XG4gICAgICovXG4gICAgY2xlYXJSZXBvcnRzQ2FjaGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVwb3J0UmVxdWVzdHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cbn1cblxuXG4iXX0=","export function AXPieChartReportMapper(data) {\n return Object.entries(data).map(([key, value]) => ({\n id: key,\n label: key,\n value: value,\n }));\n}\nexport function AXBarChartReportMapper(data) {\n return Object.entries(data).map(([key, value]) => ({\n id: key,\n label: key,\n value: value,\n }));\n}\nexport function AXLineChartReportMapper(data) {\n const entries = Object.entries(data);\n if (entries.length === 0) {\n return [];\n }\n const dataPoints = entries.map(([key, value]) => ({\n x: key,\n y: value,\n }));\n return [\n {\n id: 'series-1',\n label: 'Data Series',\n tooltipLabel: 'Countries Info',\n lineColor: '#d81159',\n fillColor: '#d8115920',\n data: dataPoints,\n },\n ];\n}\n/**\n * Converts AXPContextData (filter context) to AXPFilterClause format\n *\n * Input format:\n * {\n * \"fieldName\": {\n * \"operation\": { \"type\": \"between\" },\n * \"value\": { \"from\": \"...\", \"to\": \"...\" }\n * }\n * }\n *\n * Output format:\n * {\n * logic: 'and',\n * filters: [\n * {\n * field: 'fieldName',\n * operator: { type: 'between' },\n * value: { from: \"...\", to: \"...\" }\n * }\n * ]\n * }\n */\nexport function convertContextDataToFilterClause(context) {\n const filters = [];\n // Iterate through all keys in context\n for (const [fieldName, fieldData] of Object.entries(context)) {\n // Skip if fieldData is not an object or doesn't have operation\n if (!fieldData || typeof fieldData !== 'object' || !('operation' in fieldData)) {\n continue;\n }\n const operation = fieldData.operation;\n const value = fieldData.value;\n // Skip if operation type is missing\n if (!operation || !operation.type) {\n continue;\n }\n // Skip if value is empty (null, undefined, empty string, empty object, empty array)\n if (value === null ||\n value === undefined ||\n value === '' ||\n (typeof value === 'object' && Object.keys(value).length === 0) ||\n (Array.isArray(value) && value.length === 0)) {\n continue;\n }\n // Create filter clause\n const filter = {\n field: fieldName,\n operator: {\n type: operation.type,\n },\n value: value,\n };\n filters.push(filter);\n }\n // Return filter clause with AND logic\n if (filters.length === 0) {\n return {\n logic: 'and',\n filters: [],\n };\n }\n return {\n logic: 'and',\n filters: filters,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL3JlcG9ydHMvcmVwb3J0LW1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLFVBQVUsc0JBQXNCLENBQUMsSUFBNEI7SUFDakUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELEVBQUUsRUFBRSxHQUFHO1FBQ1AsS0FBSyxFQUFFLEdBQUc7UUFDVixLQUFLLEVBQUUsS0FBSztLQUNiLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUE0QjtJQUNqRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakQsRUFBRSxFQUFFLEdBQUc7UUFDUCxLQUFLLEVBQUUsR0FBRztRQUNWLEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLElBQTRCO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxLQUFLO0tBQ1QsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPO1FBQ0w7WUFDRSxFQUFFLEVBQUUsVUFBVTtZQUNkLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFlBQVksRUFBRSxnQkFBZ0I7WUFDOUIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFdBQVc7WUFDdEIsSUFBSSxFQUFFLFVBQVU7U0FDakI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxVQUFVLGdDQUFnQyxDQUFDLE9BQXVCO0lBQ3RFLE1BQU0sT0FBTyxHQUErQixFQUFFLENBQUM7SUFFL0Msc0NBQXNDO0lBQ3RDLEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDN0QsK0RBQStEO1FBQy9ELElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvRSxTQUFTO1FBQ1gsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFJLFNBQWlCLENBQUMsU0FBUyxDQUFDO1FBQy9DLE1BQU0sS0FBSyxHQUFJLFNBQWlCLENBQUMsS0FBSyxDQUFDO1FBRXZDLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xDLFNBQVM7UUFDWCxDQUFDO1FBRUQsb0ZBQW9GO1FBQ3BGLElBQ0UsS0FBSyxLQUFLLElBQUk7WUFDZCxLQUFLLEtBQUssU0FBUztZQUNuQixLQUFLLEtBQUssRUFBRTtZQUNaLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztZQUM5RCxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFDNUMsQ0FBQztZQUNELFNBQVM7UUFDWCxDQUFDO1FBRUQsdUJBQXVCO1FBQ3ZCLE1BQU0sTUFBTSxHQUE2QjtZQUN2QyxLQUFLLEVBQUUsU0FBUztZQUNoQixRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO2FBQ3JCO1lBQ0QsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDO1FBRUYsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPO1lBQ0wsS0FBSyxFQUFFLEtBQUs7WUFDWixPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLEtBQUssRUFBRSxLQUFLO1FBQ1osT0FBTyxFQUFFLE9BQU87S0FDakIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJhckNoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9iYXItY2hhcnQnO1xuaW1wb3J0IHsgQVhEb251dENoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9kb251dC1jaGFydCc7XG5pbXBvcnQgeyBBWExpbmVDaGFydFZhbHVlIH0gZnJvbSAnQGFjb3JleC9jaGFydHMvbGluZS1jaGFydCc7XG5pbXBvcnQgeyBBWFBDb250ZXh0RGF0YSwgQVhQRmlsdGVyQ2xhdXNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBBWFBpZUNoYXJ0UmVwb3J0TWFwcGVyKGRhdGE6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4pOiBBWERvbnV0Q2hhcnRWYWx1ZSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhkYXRhKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBpZDoga2V5LFxuICAgIGxhYmVsOiBrZXksXG4gICAgdmFsdWU6IHZhbHVlLFxuICB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBWEJhckNoYXJ0UmVwb3J0TWFwcGVyKGRhdGE6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4pOiBBWEJhckNoYXJ0VmFsdWUge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZGF0YSkubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgaWQ6IGtleSxcbiAgICBsYWJlbDoga2V5LFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQVhMaW5lQ2hhcnRSZXBvcnRNYXBwZXIoZGF0YTogUmVjb3JkPHN0cmluZywgbnVtYmVyPik6IEFYTGluZUNoYXJ0VmFsdWUge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZGF0YSk7XG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBkYXRhUG9pbnRzID0gZW50cmllcy5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICB4OiBrZXksXG4gICAgeTogdmFsdWUsXG4gIH0pKTtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIGlkOiAnc2VyaWVzLTEnLFxuICAgICAgbGFiZWw6ICdEYXRhIFNlcmllcycsXG4gICAgICB0b29sdGlwTGFiZWw6ICdDb3VudHJpZXMgSW5mbycsXG4gICAgICBsaW5lQ29sb3I6ICcjZDgxMTU5JyxcbiAgICAgIGZpbGxDb2xvcjogJyNkODExNTkyMCcsXG4gICAgICBkYXRhOiBkYXRhUG9pbnRzLFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogQ29udmVydHMgQVhQQ29udGV4dERhdGEgKGZpbHRlciBjb250ZXh0KSB0byBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gKiBcbiAqIElucHV0IGZvcm1hdDpcbiAqIHtcbiAqICAgXCJmaWVsZE5hbWVcIjoge1xuICogICAgIFwib3BlcmF0aW9uXCI6IHsgXCJ0eXBlXCI6IFwiYmV0d2VlblwiIH0sXG4gKiAgICAgXCJ2YWx1ZVwiOiB7IFwiZnJvbVwiOiBcIi4uLlwiLCBcInRvXCI6IFwiLi4uXCIgfVxuICogICB9XG4gKiB9XG4gKiBcbiAqIE91dHB1dCBmb3JtYXQ6XG4gKiB7XG4gKiAgIGxvZ2ljOiAnYW5kJyxcbiAqICAgZmlsdGVyczogW1xuICogICAgIHtcbiAqICAgICAgIGZpZWxkOiAnZmllbGROYW1lJyxcbiAqICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdiZXR3ZWVuJyB9LFxuICogICAgICAgdmFsdWU6IHsgZnJvbTogXCIuLi5cIiwgdG86IFwiLi4uXCIgfVxuICogICAgIH1cbiAqICAgXVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENvbnRleHREYXRhVG9GaWx0ZXJDbGF1c2UoY29udGV4dDogQVhQQ29udGV4dERhdGEpOiBBWFBGaWx0ZXJDbGF1c2Uge1xuICBjb25zdCBmaWx0ZXJzOiBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb25bXSA9IFtdO1xuXG4gIC8vIEl0ZXJhdGUgdGhyb3VnaCBhbGwga2V5cyBpbiBjb250ZXh0XG4gIGZvciAoY29uc3QgW2ZpZWxkTmFtZSwgZmllbGREYXRhXSBvZiBPYmplY3QuZW50cmllcyhjb250ZXh0KSkge1xuICAgIC8vIFNraXAgaWYgZmllbGREYXRhIGlzIG5vdCBhbiBvYmplY3Qgb3IgZG9lc24ndCBoYXZlIG9wZXJhdGlvblxuICAgIGlmICghZmllbGREYXRhIHx8IHR5cGVvZiBmaWVsZERhdGEgIT09ICdvYmplY3QnIHx8ICEoJ29wZXJhdGlvbicgaW4gZmllbGREYXRhKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3Qgb3BlcmF0aW9uID0gKGZpZWxkRGF0YSBhcyBhbnkpLm9wZXJhdGlvbjtcbiAgICBjb25zdCB2YWx1ZSA9IChmaWVsZERhdGEgYXMgYW55KS52YWx1ZTtcblxuICAgIC8vIFNraXAgaWYgb3BlcmF0aW9uIHR5cGUgaXMgbWlzc2luZ1xuICAgIGlmICghb3BlcmF0aW9uIHx8ICFvcGVyYXRpb24udHlwZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gU2tpcCBpZiB2YWx1ZSBpcyBlbXB0eSAobnVsbCwgdW5kZWZpbmVkLCBlbXB0eSBzdHJpbmcsIGVtcHR5IG9iamVjdCwgZW1wdHkgYXJyYXkpXG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApXG4gICAgKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgZmlsdGVyIGNsYXVzZVxuICAgIGNvbnN0IGZpbHRlcjogQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uID0ge1xuICAgICAgZmllbGQ6IGZpZWxkTmFtZSxcbiAgICAgIG9wZXJhdG9yOiB7XG4gICAgICAgIHR5cGU6IG9wZXJhdGlvbi50eXBlLFxuICAgICAgfSxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9O1xuXG4gICAgZmlsdGVycy5wdXNoKGZpbHRlcik7XG4gIH1cblxuICAvLyBSZXR1cm4gZmlsdGVyIGNsYXVzZSB3aXRoIEFORCBsb2dpY1xuICBpZiAoZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naWM6ICdhbmQnLFxuICAgICAgZmlsdGVyczogW10sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbG9naWM6ICdhbmQnLFxuICAgIGZpbHRlcnM6IGZpbHRlcnMsXG4gIH07XG59XG4iXX0=","import { AXP_REPORT_DEFINITION_PROVIDER, AXP_REPORT_CATEGORY_PROVIDER } from '../../reports';\nimport { AXPQueryService } from '@acorex/platform/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMReportDefinitionProvider {\n constructor() {\n this.queryService = inject(AXPQueryService);\n this.entityName = `${RootConfig.module.name}.${RootConfig.entities.report.name}`;\n }\n async getList(categoryId) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n // Returning empty array to avoid duplicate API calls\n console.warn('AXMReportDefinitionProvider.getList is deprecated. Use API providers instead.');\n return [];\n }\n async getById(id) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n console.warn('AXMReportDefinitionProvider.getById is deprecated. Use API providers instead.');\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider, decorators: [{\n type: Injectable\n }] });\nexport const AXM_REPORT_DEFINITION_PROVIDER = {\n provide: AXP_REPORT_DEFINITION_PROVIDER,\n useClass: AXMReportDefinitionProvider,\n multi: true,\n};\n// --- Category Provider ---\nexport class AXMReportCategoryProvider {\n constructor() {\n this.queryService = inject(AXPQueryService);\n this.entityName = `${RootConfig.module.name}.${RootConfig.entities.category.name}`;\n }\n async getList(parentId) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n // Returning empty array to avoid duplicate API calls\n console.warn('AXMReportCategoryProvider.getList is deprecated. Use API providers instead.');\n return [];\n }\n async getById(id) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n console.warn('AXMReportCategoryProvider.getById is deprecated. Use API providers instead.');\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider, decorators: [{\n type: Injectable\n }] });\nexport const AXM_REPORT_CATEGORY_PROVIDER = {\n provide: AXP_REPORT_CATEGORY_PROVIDER,\n useClass: AXMReportCategoryProvider,\n multi: true,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC1ydW5uZXIvcmVwb3J0cy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9ELDhCQUE4QixFQUFnRCw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3TCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFJekMsTUFBTSxPQUFPLDJCQUEyQjtJQUR4QztRQUVZLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZDLGVBQVUsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0tBZ0J2RjtJQWRHLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBa0I7UUFDNUIsa0VBQWtFO1FBQ2xFLHNEQUFzRDtRQUN0RCxxREFBcUQ7UUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO1FBQzlGLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUNwQixrRUFBa0U7UUFDbEUsc0RBQXNEO1FBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsK0VBQStFLENBQUMsQ0FBQztRQUM5RixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDOytHQWpCUSwyQkFBMkI7bUhBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVTs7QUFxQlgsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUc7SUFDMUMsT0FBTyxFQUFFLDhCQUE4QjtJQUN2QyxRQUFRLEVBQUUsMkJBQTJCO0lBQ3JDLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVGLDZCQUE2QjtBQUU3QixNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRVksaUJBQVksR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkMsZUFBVSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7S0FnQnpGO0lBZEcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFpQjtRQUMzQixrRUFBa0U7UUFDbEUsc0RBQXNEO1FBQ3RELHFEQUFxRDtRQUNyRCxPQUFPLENBQUMsSUFBSSxDQUFDLDZFQUE2RSxDQUFDLENBQUM7UUFDNUYsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFVO1FBQ3BCLGtFQUFrRTtRQUNsRSxzREFBc0Q7UUFDdEQsT0FBTyxDQUFDLElBQUksQ0FBQyw2RUFBNkUsQ0FBQyxDQUFDO1FBQzVGLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7K0dBakJRLHlCQUF5QjttSEFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVOztBQXFCWCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRztJQUN4QyxPQUFPLEVBQUUsNEJBQTRCO0lBQ3JDLFFBQVEsRUFBRSx5QkFBeUI7SUFDbkMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQUmVwb3J0RGVmaW5pdGlvbiwgQVhQUmVwb3J0RGVmaW5pdGlvblByb3ZpZGVyLCBBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVIsIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIsIEFYUFJlcG9ydENhdGVnb3J5LCBBWFBfUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vcmVwb3J0cyc7XG5pbXBvcnQgeyBBWFBRdWVyeVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuICAgIHByaXZhdGUgcXVlcnlTZXJ2aWNlID0gaW5qZWN0KEFYUFF1ZXJ5U2VydmljZSk7XG4gICAgcHJpdmF0ZSBlbnRpdHlOYW1lID0gYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5uYW1lfWA7XG5cbiAgICBhc3luYyBnZXRMaXN0KGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbltdPiB7XG4gICAgICAgIC8vIE5vdGU6IFRoaXMgcHJvdmlkZXIgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgQVBJIHByb3ZpZGVyc1xuICAgICAgICAvLyB0aGF0IHVzZSBjYWNoZWQgZGF0YSBmcm9tIHRoZSBjYXRlZ29yeSBBUEkgcmVzcG9uc2VcbiAgICAgICAgLy8gUmV0dXJuaW5nIGVtcHR5IGFycmF5IHRvIGF2b2lkIGR1cGxpY2F0ZSBBUEkgY2FsbHNcbiAgICAgICAgY29uc29sZS53YXJuKCdBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIuZ2V0TGlzdCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIE5vdGU6IFRoaXMgcHJvdmlkZXIgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgQVBJIHByb3ZpZGVyc1xuICAgICAgICAvLyB0aGF0IHVzZSBjYWNoZWQgZGF0YSBmcm9tIHRoZSBjYXRlZ29yeSBBUEkgcmVzcG9uc2VcbiAgICAgICAgY29uc29sZS53YXJuKCdBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIuZ2V0QnlJZCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFYTV9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiA9IHtcbiAgICBwcm92aWRlOiBBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVIsXG4gICAgdXNlQ2xhc3M6IEFYTVJlcG9ydERlZmluaXRpb25Qcm92aWRlcixcbiAgICBtdWx0aTogdHJ1ZSxcbn07XG5cbi8vIC0tLSAgQ2F0ZWdvcnkgUHJvdmlkZXIgLS0tXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUmVwb3J0Q2F0ZWdvcnlQcm92aWRlciBpbXBsZW1lbnRzIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIge1xuICAgIHByaXZhdGUgcXVlcnlTZXJ2aWNlID0gaW5qZWN0KEFYUFF1ZXJ5U2VydmljZSk7XG4gICAgcHJpdmF0ZSBlbnRpdHlOYW1lID0gYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLmNhdGVnb3J5Lm5hbWV9YDtcblxuICAgIGFzeW5jIGdldExpc3QocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgLy8gTm90ZTogVGhpcyBwcm92aWRlciBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBBUEkgcHJvdmlkZXJzXG4gICAgICAgIC8vIHRoYXQgdXNlIGNhY2hlZCBkYXRhIGZyb20gdGhlIGNhdGVnb3J5IEFQSSByZXNwb25zZVxuICAgICAgICAvLyBSZXR1cm5pbmcgZW1wdHkgYXJyYXkgdG8gYXZvaWQgZHVwbGljYXRlIEFQSSBjYWxsc1xuICAgICAgICBjb25zb2xlLndhcm4oJ0FYTVJlcG9ydENhdGVnb3J5UHJvdmlkZXIuZ2V0TGlzdCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnRDYXRlZ29yeSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICAvLyBOb3RlOiBUaGlzIHByb3ZpZGVyIGlzIG5vdyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIEFQSSBwcm92aWRlcnNcbiAgICAgICAgLy8gdGhhdCB1c2UgY2FjaGVkIGRhdGEgZnJvbSB0aGUgY2F0ZWdvcnkgQVBJIHJlc3BvbnNlXG4gICAgICAgIGNvbnNvbGUud2FybignQVhNUmVwb3J0Q2F0ZWdvcnlQcm92aWRlci5nZXRCeUlkIGlzIGRlcHJlY2F0ZWQuIFVzZSBBUEkgcHJvdmlkZXJzIGluc3RlYWQuJyk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgQVhNX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUiA9IHtcbiAgICBwcm92aWRlOiBBWFBfUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSLFxuICAgIHVzZUNsYXNzOiBBWE1SZXBvcnRDYXRlZ29yeVByb3ZpZGVyLFxuICAgIG11bHRpOiB0cnVlLFxufTsgIl19","import { inject, Injectable } from \"@angular/core\";\nimport { AXPEntityService } from \"@acorex/platform/layout/entity\";\nimport { RootConfig } from \"./const\";\nimport * as i0 from \"@angular/core\";\nexport class AXMSystemReportsCategoryProvider {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.reportCategoryService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.report.name + \"Category\").data();\n }\n async getList(parentId) {\n const list = [];\n if (parentId) {\n const result = await this.reportCategoryService.query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [{\n field: 'parentId',\n operator: {\n type: 'equal',\n },\n value: parentId,\n }]\n }\n });\n list.push(...result.items);\n }\n else {\n const result = await this.reportCategoryService.query();\n list.push(...result.items);\n }\n return list;\n }\n async getById(id) {\n return await this.reportCategoryService.byKey(id);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsCategoryProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsCategoryProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsCategoryProvider, decorators: [{\n type: Injectable\n }] });\nexport class AXMSystemReportsDefinitionProvider {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.reportDefinitionService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.report.name).data();\n }\n async getList(categoryId) {\n const list = [];\n // Use 'contains' operator to filter by categoryIds array field\n const result = await this.reportDefinitionService.query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [{\n field: 'categoryIds',\n operator: {\n type: 'contains',\n },\n value: categoryId,\n }]\n }\n });\n list.push(...result.items);\n return list;\n }\n async getById(id) {\n return await this.reportDefinitionService.byKey(id);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMSystemReportsDefinitionProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcmVwb3J0LnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUdyQyxNQUFNLE9BQU8sZ0NBQWdDO0lBRDdDO1FBR3FCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEQsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBWSxDQUFDO0tBOEJ4SjtJQTVCRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQWlCO1FBQzNCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO2dCQUNsRCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLEVBQUUsSUFBSTtnQkFDVixNQUFNLEVBQUU7b0JBQ0osS0FBSyxFQUFFLEtBQUs7b0JBQ1osT0FBTyxFQUFFLENBQUM7NEJBQ04sS0FBSyxFQUFFLFVBQVU7NEJBQ2pCLFFBQVEsRUFBRTtnQ0FDTixJQUFJLEVBQUUsT0FBTzs2QkFDaEI7NEJBQ0QsS0FBSyxFQUFFLFFBQVE7eUJBQ2xCLENBQUM7aUJBQ0w7YUFDSixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUNwQixPQUFPLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDOytHQWhDUSxnQ0FBZ0M7bUhBQWhDLGdDQUFnQzs7NEZBQWhDLGdDQUFnQztrQkFENUMsVUFBVTs7QUFxQ1gsTUFBTSxPQUFPLGtDQUFrQztJQUQvQztRQUdZLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekMsNEJBQXVCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7S0EwQm5JO0lBeEJHLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBa0I7UUFDNUIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLCtEQUErRDtRQUMvRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7WUFDcEQsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRTtnQkFDSixLQUFLLEVBQUUsS0FBSztnQkFDWixPQUFPLEVBQUUsQ0FBQzt3QkFDTixLQUFLLEVBQUUsYUFBYTt3QkFDcEIsUUFBUSxFQUFFOzRCQUNOLElBQUksRUFBRSxVQUFVO3lCQUNuQjt3QkFDRCxLQUFLLEVBQUUsVUFBVTtxQkFDcEIsQ0FBQzthQUNMO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixPQUFPLElBQTZCLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUNwQixPQUFPLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQW9DLENBQUM7SUFDM0YsQ0FBQzsrR0E1QlEsa0NBQWtDO21IQUFsQyxrQ0FBa0M7OzRGQUFsQyxrQ0FBa0M7a0JBRDlDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2F0ZWdvcnksIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIsIEFYUFJlcG9ydERlZmluaXRpb24sIEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlciB9IGZyb20gXCIuL3JlcG9ydHNcIjtcbmltcG9ydCB7IEFYUEVudGl0eVNlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5XCI7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSBcIi4vY29uc3RcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTVN5c3RlbVJlcG9ydHNDYXRlZ29yeVByb3ZpZGVyIGltcGxlbWVudHMgQVhQUmVwb3J0Q2F0ZWdvcnlQcm92aWRlciB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGVudGl0eVNlcnZpY2UgPSBpbmplY3QoQVhQRW50aXR5U2VydmljZSk7XG4gICAgcHJpdmF0ZSByZXBvcnRDYXRlZ29yeVNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2Uud2l0aEVudGl0eShSb290Q29uZmlnLm1vZHVsZS5uYW1lLCBSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5uYW1lICsgXCJDYXRlZ29yeVwiKS5kYXRhPGFueSwgYW55PigpO1xuXG4gICAgYXN5bmMgZ2V0TGlzdChwYXJlbnRJZD86IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnlbXT4ge1xuICAgICAgICBjb25zdCBsaXN0ID0gW107XG4gICAgICAgIGlmIChwYXJlbnRJZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXBvcnRDYXRlZ29yeVNlcnZpY2UucXVlcnkoe1xuICAgICAgICAgICAgICAgIHNraXA6IDAsXG4gICAgICAgICAgICAgICAgdGFrZTogMTAwMCxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdhbmQnLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdwYXJlbnRJZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcXVhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGlzdC5wdXNoKC4uLnJlc3VsdC5pdGVtcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcG9ydENhdGVnb3J5U2VydmljZS5xdWVyeSgpO1xuICAgICAgICAgICAgbGlzdC5wdXNoKC4uLnJlc3VsdC5pdGVtcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnRDYXRlZ29yeSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvcnRDYXRlZ29yeVNlcnZpY2UuYnlLZXkoaWQpO1xuICAgIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTVN5c3RlbVJlcG9ydHNEZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuXG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUEVudGl0eVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVwb3J0RGVmaW5pdGlvblNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2Uud2l0aEVudGl0eShSb290Q29uZmlnLm1vZHVsZS5uYW1lLCBSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5uYW1lKS5kYXRhKCk7XG5cbiAgICBhc3luYyBnZXRMaXN0KGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbltdPiB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBbXTtcbiAgICAgICAgLy8gVXNlICdjb250YWlucycgb3BlcmF0b3IgdG8gZmlsdGVyIGJ5IGNhdGVnb3J5SWRzIGFycmF5IGZpZWxkXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVwb3J0RGVmaW5pdGlvblNlcnZpY2UucXVlcnkoe1xuICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICAgIHRha2U6IDEwMDAsXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBsb2dpYzogJ2FuZCcsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogW3tcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY29udGFpbnMnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2F0ZWdvcnlJZCxcbiAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbGlzdC5wdXNoKC4uLnJlc3VsdC5pdGVtcyk7XG4gICAgICAgIHJldHVybiBsaXN0IGFzIEFYUFJlcG9ydERlZmluaXRpb25bXTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydERlZmluaXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwb3J0RGVmaW5pdGlvblNlcnZpY2UuYnlLZXkoaWQpIGFzIEFYUFJlcG9ydERlZmluaXRpb24gfCB1bmRlZmluZWQ7XG4gICAgfVxufVxuIl19","export const AXMPermissionsKeys = {\n ReportManagement: {\n Management: 'ReportManagement:Permission:Management',\n Report: {\n Management: 'ReportManagement:Permission:Report.Management',\n View: 'ReportManagement:Permission:Report.View',\n Create: 'ReportManagement:Permission:Report.Create',\n Update: 'ReportManagement:Permission:Report.Update',\n Delete: 'ReportManagement:Permission:Report.Delete',\n },\n Category: {\n Management: 'ReportManagement:Permission:Category.Management',\n View: 'ReportManagement:Permission:Category.View',\n Create: 'ReportManagement:Permission:Category.Create',\n Update: 'ReportManagement:Permission:Category.Update',\n Delete: 'ReportManagement:Permission:Category.Delete',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcGVybWlzc2lvbi5rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLGdCQUFnQixFQUFFO1FBQ2hCLFVBQVUsRUFBRSx3Q0FBd0M7UUFDcEQsTUFBTSxFQUFFO1lBQ04sVUFBVSxFQUFFLCtDQUErQztZQUMzRCxJQUFJLEVBQUUseUNBQXlDO1lBQy9DLE1BQU0sRUFBRSwyQ0FBMkM7WUFDbkQsTUFBTSxFQUFFLDJDQUEyQztZQUNuRCxNQUFNLEVBQUUsMkNBQTJDO1NBQ3BEO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsVUFBVSxFQUFFLGlEQUFpRDtZQUM3RCxJQUFJLEVBQUUsMkNBQTJDO1lBQ2pELE1BQU0sRUFBRSw2Q0FBNkM7WUFDckQsTUFBTSxFQUFFLDZDQUE2QztZQUNyRCxNQUFNLEVBQUUsNkNBQTZDO1NBQ3REO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFYTVBlcm1pc3Npb25zS2V5cyA9IHtcbiAgUmVwb3J0TWFuYWdlbWVudDoge1xuICAgIE1hbmFnZW1lbnQ6ICdSZXBvcnRNYW5hZ2VtZW50OlBlcm1pc3Npb246TWFuYWdlbWVudCcsXG4gICAgUmVwb3J0OiB7XG4gICAgICBNYW5hZ2VtZW50OiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOlJlcG9ydC5NYW5hZ2VtZW50JyxcbiAgICAgIFZpZXc6ICdSZXBvcnRNYW5hZ2VtZW50OlBlcm1pc3Npb246UmVwb3J0LlZpZXcnLFxuICAgICAgQ3JlYXRlOiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOlJlcG9ydC5DcmVhdGUnLFxuICAgICAgVXBkYXRlOiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOlJlcG9ydC5VcGRhdGUnLFxuICAgICAgRGVsZXRlOiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOlJlcG9ydC5EZWxldGUnLFxuICAgIH0sXG4gICAgQ2F0ZWdvcnk6IHtcbiAgICAgIE1hbmFnZW1lbnQ6ICdSZXBvcnRNYW5hZ2VtZW50OlBlcm1pc3Npb246Q2F0ZWdvcnkuTWFuYWdlbWVudCcsXG4gICAgICBWaWV3OiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOkNhdGVnb3J5LlZpZXcnLFxuICAgICAgQ3JlYXRlOiAnUmVwb3J0TWFuYWdlbWVudDpQZXJtaXNzaW9uOkNhdGVnb3J5LkNyZWF0ZScsXG4gICAgICBVcGRhdGU6ICdSZXBvcnRNYW5hZ2VtZW50OlBlcm1pc3Npb246Q2F0ZWdvcnkuVXBkYXRlJyxcbiAgICAgIERlbGV0ZTogJ1JlcG9ydE1hbmFnZW1lbnQ6UGVybWlzc2lvbjpDYXRlZ29yeS5EZWxldGUnLFxuICAgIH0sXG4gIH0sXG59O1xuIl19","import { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport { RootConfig } from './const';\nimport * as i0 from \"@angular/core\";\nexport class AXMPermissionDefinitionProvider {\n constructor(injector) {\n this.injector = injector;\n this.translateService = this.injector.get(AXTranslationService);\n }\n async define(context) {\n const keys = AXMPermissionsKeys.ReportManagement;\n const trans = async (key) => await this.translateService.translateAsync(key);\n context\n .addGroup(RootConfig.module.name, await trans('@report-management:module.menus.root.title'))\n // Reports Management\n .addPermission(keys.Report.Management, await trans('@report-management:reports.permissions.reports.title'))\n .addChild(keys.Report.View, await trans('@report-management:reports.permissions.reports.actions.view.title'))\n .addChild(keys.Report.Create, await trans('@report-management:reports.permissions.reports.actions.create.title'))\n .addChild(keys.Report.Update, await trans('@report-management:reports.permissions.reports.actions.update.title'))\n .addChild(keys.Report.Delete, await trans('@report-management:reports.permissions.reports.actions.delete.title'))\n .endPermission()\n // Categories Management\n .addPermission(keys.Category.Management, await trans('@report-management:reports.permissions.categories.title'))\n .addChild(keys.Category.View, await trans('@report-management:reports.permissions.categories.actions.view.title'))\n .addChild(keys.Category.Create, await trans('@report-management:reports.permissions.categories.actions.create.title'))\n .addChild(keys.Category.Update, await trans('@report-management:reports.permissions.categories.actions.update.title'))\n .addChild(keys.Category.Delete, await trans('@report-management:reports.permissions.categories.actions.delete.title'))\n .endPermission()\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR3JDLE1BQU0sT0FBTywrQkFBK0I7SUFHMUMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUZyQixxQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRW5DLENBQUM7SUFFMUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUErQztRQUMxRCxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNqRCxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFckYsT0FBTzthQUNKLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzVGLHFCQUFxQjthQUNwQixhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQzthQUMxRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQzthQUM1RyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxhQUFhLEVBQUU7WUFDaEIsd0JBQXdCO2FBQ3ZCLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO2FBQy9HLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO2FBQ2pILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILGFBQWEsRUFBRTthQUNmLFFBQVEsRUFBRSxDQUFDO0lBQ2hCLENBQUM7K0dBMUJVLCtCQUErQjttSEFBL0IsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUQzQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciwgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlckNvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTVBlcm1pc3Npb25zS2V5cyB9IGZyb20gJy4vcGVybWlzc2lvbi5rZXlzJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTVBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGFzeW5jIGRlZmluZShjb250ZXh0OiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGtleXMgPSBBWE1QZXJtaXNzaW9uc0tleXMuUmVwb3J0TWFuYWdlbWVudDtcbiAgICBjb25zdCB0cmFucyA9IGFzeW5jIChrZXk6IHN0cmluZykgPT4gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKGtleSk7XG5cbiAgICBjb250ZXh0XG4gICAgICAuYWRkR3JvdXAoUm9vdENvbmZpZy5tb2R1bGUubmFtZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDptb2R1bGUubWVudXMucm9vdC50aXRsZScpKVxuICAgICAgLy8gUmVwb3J0cyBNYW5hZ2VtZW50XG4gICAgICAuYWRkUGVybWlzc2lvbihrZXlzLlJlcG9ydC5NYW5hZ2VtZW50LCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMucmVwb3J0cy50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuUmVwb3J0LlZpZXcsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5yZXBvcnRzLmFjdGlvbnMudmlldy50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuUmVwb3J0LkNyZWF0ZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLnJlcG9ydHMuYWN0aW9ucy5jcmVhdGUudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLlJlcG9ydC5VcGRhdGUsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5yZXBvcnRzLmFjdGlvbnMudXBkYXRlLnRpdGxlJykpXG4gICAgICAuYWRkQ2hpbGQoa2V5cy5SZXBvcnQuRGVsZXRlLCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMucmVwb3J0cy5hY3Rpb25zLmRlbGV0ZS50aXRsZScpKVxuICAgICAgLmVuZFBlcm1pc3Npb24oKVxuICAgICAgLy8gQ2F0ZWdvcmllcyBNYW5hZ2VtZW50XG4gICAgICAuYWRkUGVybWlzc2lvbihrZXlzLkNhdGVnb3J5Lk1hbmFnZW1lbnQsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5jYXRlZ29yaWVzLnRpdGxlJykpXG4gICAgICAuYWRkQ2hpbGQoa2V5cy5DYXRlZ29yeS5WaWV3LCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMuY2F0ZWdvcmllcy5hY3Rpb25zLnZpZXcudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLkNhdGVnb3J5LkNyZWF0ZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLmNhdGVnb3JpZXMuYWN0aW9ucy5jcmVhdGUudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLkNhdGVnb3J5LlVwZGF0ZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLmNhdGVnb3JpZXMuYWN0aW9ucy51cGRhdGUudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLkNhdGVnb3J5LkRlbGV0ZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLmNhdGVnb3JpZXMuYWN0aW9ucy5kZWxldGUudGl0bGUnKSlcbiAgICAgIC5lbmRQZXJtaXNzaW9uKClcbiAgICAgIC5lbmRHcm91cCgpO1xuICB9XG59XG5cbiJdfQ==","export const AXPReportManagementMenuKeys = {\n Root: 'report-management:menu',\n Reports: 'report-management:menu:reports',\n Categories: 'report-management:menu:categories',\n DataSets: 'report-management:menu:data-sets',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvbWVudS5rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3ZDLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLGdDQUFnQztJQUN6QyxVQUFVLEVBQUUsbUNBQW1DO0lBQy9DLFFBQVEsRUFBRSxrQ0FBa0M7Q0FDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBWFBSZXBvcnRNYW5hZ2VtZW50TWVudUtleXMgPSB7XG4gICAgUm9vdDogJ3JlcG9ydC1tYW5hZ2VtZW50Om1lbnUnLFxuICAgIFJlcG9ydHM6ICdyZXBvcnQtbWFuYWdlbWVudDptZW51OnJlcG9ydHMnLFxuICAgIENhdGVnb3JpZXM6ICdyZXBvcnQtbWFuYWdlbWVudDptZW51OmNhdGVnb3JpZXMnLFxuICAgIERhdGFTZXRzOiAncmVwb3J0LW1hbmFnZW1lbnQ6bWVudTpkYXRhLXNldHMnLFxufSBhcyBjb25zdDtcblxuIl19","import { inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPReportManagementMenuKeys } from './menu.keys';\nexport class AXMMenuProvider {\n constructor() {\n this.sessionService = inject(AXPSessionService);\n }\n async provide(context) {\n const module = RootConfig.module;\n context.addItems([\n {\n name: AXPReportManagementMenuKeys.Reports,\n text: RootConfig.entities.report.titlePlural,\n path: `${this.sessionService.application?.name}/${module.route}/reports`,\n icon: RootConfig.entities.report.icon,\n priority: 900001,\n },\n ]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL21lbnUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxRCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNZLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFldkQsQ0FBQztJQWJHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBK0I7UUFDekMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUVqQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2I7Z0JBQ0ksSUFBSSxFQUFFLDJCQUEyQixDQUFDLE9BQU87Z0JBQ3pDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXO2dCQUM1QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssVUFBVTtnQkFDeEUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQ3JDLFFBQVEsRUFBRSxNQUFNO2FBQ25CO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQTWVudVByb3ZpZGVyLCBBWFBNZW51UHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi9jb25zdCc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBSZXBvcnRNYW5hZ2VtZW50TWVudUtleXMgfSBmcm9tICcuL21lbnUua2V5cyc7XG5cbmV4cG9ydCBjbGFzcyBBWE1NZW51UHJvdmlkZXIgaW1wbGVtZW50cyBBWFBNZW51UHJvdmlkZXIge1xuICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuXG4gICAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBNZW51UHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IFJvb3RDb25maWcubW9kdWxlO1xuXG4gICAgICAgIGNvbnRleHQuYWRkSXRlbXMoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEFYUFJlcG9ydE1hbmFnZW1lbnRNZW51S2V5cy5SZXBvcnRzLFxuICAgICAgICAgICAgICAgIHRleHQ6IFJvb3RDb25maWcuZW50aXRpZXMucmVwb3J0LnRpdGxlUGx1cmFsLFxuICAgICAgICAgICAgICAgIHBhdGg6IGAke3RoaXMuc2Vzc2lvblNlcnZpY2UuYXBwbGljYXRpb24/Lm5hbWV9LyR7bW9kdWxlLnJvdXRlfS9yZXBvcnRzYCxcbiAgICAgICAgICAgICAgICBpY29uOiBSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5pY29uLFxuICAgICAgICAgICAgICAgIHByaW9yaXR5OiA5MDAwMDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { RootConfig } from './const';\nimport * as i0 from \"@angular/core\";\nexport class AXMEntityProvider {\n async get(moduleName, entityName) {\n // Simulate report entity definition\n if (moduleName == RootConfig.module.name && entityName == RootConfig.entities.report.name) {\n return {\n name: \"Report\",\n module: \"ReportManagement\",\n title: \"Report Management\",\n formats: {\n individual: \"Report Management\",\n plural: \"Report Management\",\n },\n properties: [],\n };\n }\n return null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMEntityProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMEntityProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXR5LnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxVQUFVLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR3JDLE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFVBQWtCO1FBQzlDLG9DQUFvQztRQUNwQyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUYsT0FBTztnQkFDTCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsa0JBQWtCO2dCQUMxQixLQUFLLEVBQUUsbUJBQW1CO2dCQUMxQixPQUFPLEVBQUU7b0JBQ1AsVUFBVSxFQUFFLG1CQUFtQjtvQkFDL0IsTUFBTSxFQUFFLG1CQUFtQjtpQkFDNUI7Z0JBQ0QsVUFBVSxFQUFFLEVBQUU7YUFDRixDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBakJVLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRW50aXR5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHtcbiAgQVhQRW50aXR5RGVmaW5pdGlvbkxvYWRlcixcbiAgQVhQRW50aXR5RGVmaW5pdGlvblByZWxvYWRlcixcbiAgQVhQRW50aXR5UHJlbG9hZEVudGl0eSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTUVudGl0eVByb3ZpZGVyIGltcGxlbWVudHMgQVhQRW50aXR5RGVmaW5pdGlvbkxvYWRlciB7XG5cbiAgYXN5bmMgZ2V0KG1vZHVsZU5hbWU6IHN0cmluZywgZW50aXR5TmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBFbnRpdHkgfCBudWxsPiB7XG4gICAgLy8gU2ltdWxhdGUgcmVwb3J0IGVudGl0eSBkZWZpbml0aW9uXG4gICAgaWYgKG1vZHVsZU5hbWUgPT0gUm9vdENvbmZpZy5tb2R1bGUubmFtZSAmJiBlbnRpdHlOYW1lID09IFJvb3RDb25maWcuZW50aXRpZXMucmVwb3J0Lm5hbWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IFwiUmVwb3J0XCIsXG4gICAgICAgIG1vZHVsZTogXCJSZXBvcnRNYW5hZ2VtZW50XCIsXG4gICAgICAgIHRpdGxlOiBcIlJlcG9ydCBNYW5hZ2VtZW50XCIsXG4gICAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgICBpbmRpdmlkdWFsOiBcIlJlcG9ydCBNYW5hZ2VtZW50XCIsXG4gICAgICAgICAgcGx1cmFsOiBcIlJlcG9ydCBNYW5hZ2VtZW50XCIsXG4gICAgICAgIH0sXG4gICAgICAgIHByb3BlcnRpZXM6IFtdLFxuICAgICAgfSBhcyBBWFBFbnRpdHk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59Il19","export const AXPReportManagementFeatureKeys = {\n ReportBuilder: 'ReportManagement:Feature:ReportBuilder',\n SavedReports: 'ReportManagement:Feature:SavedReports',\n ScheduledReports: 'ReportManagement:Feature:ScheduledReports',\n BackgroundReports: 'ReportManagement:Feature:BackgroundReports',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMua2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzLmtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUc7SUFDNUMsYUFBYSxFQUFFLHdDQUF3QztJQUN2RCxZQUFZLEVBQUUsdUNBQXVDO0lBQ3JELGdCQUFnQixFQUFFLDJDQUEyQztJQUM3RCxpQkFBaUIsRUFBRSw0Q0FBNEM7Q0FDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBWFBSZXBvcnRNYW5hZ2VtZW50RmVhdHVyZUtleXMgPSB7XG4gIFJlcG9ydEJ1aWxkZXI6ICdSZXBvcnRNYW5hZ2VtZW50OkZlYXR1cmU6UmVwb3J0QnVpbGRlcicsXG4gIFNhdmVkUmVwb3J0czogJ1JlcG9ydE1hbmFnZW1lbnQ6RmVhdHVyZTpTYXZlZFJlcG9ydHMnLFxuICBTY2hlZHVsZWRSZXBvcnRzOiAnUmVwb3J0TWFuYWdlbWVudDpGZWF0dXJlOlNjaGVkdWxlZFJlcG9ydHMnLFxuICBCYWNrZ3JvdW5kUmVwb3J0czogJ1JlcG9ydE1hbmFnZW1lbnQ6RmVhdHVyZTpCYWNrZ3JvdW5kUmVwb3J0cycsXG59IGFzIGNvbnN0O1xuXG4iXX0=","//#region ---- Imports ----\nimport { AXPReportManagementFeatureKeys } from './features.keys';\n//#endregion\n//#region ---- Feature Definition Provider ----\n/**\n * Report Management Feature Definition Provider.\n * Provides feature definitions for the Report Management module.\n */\nexport class AXPReportManagementFeatureDefinitionProvider {\n async provide(context) {\n // Report Builder feature\n context.addFeature(AXPReportManagementFeatureKeys.ReportBuilder, {\n title: '@report-management:features.report-builder.title',\n description: '@report-management:features.report-builder.description',\n defaultValue: true,\n type: 'boolean',\n });\n // Saved Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.SavedReports, {\n title: '@report-management:features.saved-reports.title',\n description: '@report-management:features.saved-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n // Scheduled Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.ScheduledReports, {\n title: '@report-management:features.scheduled-reports.title',\n description: '@report-management:features.scheduled-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n // Background Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.BackgroundReports, {\n title: '@report-management:features.background-reports.title',\n description: '@report-management:features.background-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n }\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZS1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQU0vQixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRSxZQUFZO0FBRVosbURBQW1EO0FBRW5EOzs7R0FHRztBQUNILE1BQU0sT0FBTyw0Q0FBNEM7SUFDdkQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUE0QztRQUN4RCx5QkFBeUI7UUFDekIsT0FBTyxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLEVBQUU7WUFDL0QsS0FBSyxFQUFFLGtEQUFrRDtZQUN6RCxXQUFXLEVBQUUsd0RBQXdEO1lBQ3JFLFlBQVksRUFBRSxJQUFJO1lBQ2xCLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztRQUVILHdCQUF3QjtRQUN4QixPQUFPLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLFlBQVksRUFBRTtZQUM5RCxLQUFLLEVBQUUsaURBQWlEO1lBQ3hELFdBQVcsRUFBRSx1REFBdUQ7WUFDcEUsWUFBWSxFQUFFLElBQUk7WUFDbEIsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsNEJBQTRCO1FBQzVCLE9BQU8sQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLEVBQUU7WUFDbEUsS0FBSyxFQUFFLHFEQUFxRDtZQUM1RCxXQUFXLEVBQUUsMkRBQTJEO1lBQ3hFLFlBQVksRUFBRSxJQUFJO1lBQ2xCLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztRQUVILDZCQUE2QjtRQUM3QixPQUFPLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLGlCQUFpQixFQUFFO1lBQ25FLEtBQUssRUFBRSxzREFBc0Q7WUFDN0QsV0FBVyxFQUFFLDREQUE0RDtZQUN6RSxZQUFZLEVBQUUsSUFBSTtZQUNsQixJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQge1xuICBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyLFxuICBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUFJlcG9ydE1hbmFnZW1lbnRGZWF0dXJlS2V5cyB9IGZyb20gJy4vZmVhdHVyZXMua2V5cyc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIEZlYXR1cmUgRGVmaW5pdGlvbiBQcm92aWRlciAgIC0tLS1cblxuLyoqXG4gKiBSZXBvcnQgTWFuYWdlbWVudCBGZWF0dXJlIERlZmluaXRpb24gUHJvdmlkZXIuXG4gKiBQcm92aWRlcyBmZWF0dXJlIGRlZmluaXRpb25zIGZvciB0aGUgUmVwb3J0IE1hbmFnZW1lbnQgbW9kdWxlLlxuICovXG5leHBvcnQgY2xhc3MgQVhQUmVwb3J0TWFuYWdlbWVudEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFJlcG9ydCBCdWlsZGVyIGZlYXR1cmVcbiAgICBjb250ZXh0LmFkZEZlYXR1cmUoQVhQUmVwb3J0TWFuYWdlbWVudEZlYXR1cmVLZXlzLlJlcG9ydEJ1aWxkZXIsIHtcbiAgICAgIHRpdGxlOiAnQHJlcG9ydC1tYW5hZ2VtZW50OmZlYXR1cmVzLnJlcG9ydC1idWlsZGVyLnRpdGxlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQHJlcG9ydC1tYW5hZ2VtZW50OmZlYXR1cmVzLnJlcG9ydC1idWlsZGVyLmRlc2NyaXB0aW9uJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICB9KTtcblxuICAgIC8vIFNhdmVkIFJlcG9ydHMgZmVhdHVyZVxuICAgIGNvbnRleHQuYWRkRmVhdHVyZShBWFBSZXBvcnRNYW5hZ2VtZW50RmVhdHVyZUtleXMuU2F2ZWRSZXBvcnRzLCB7XG4gICAgICB0aXRsZTogJ0ByZXBvcnQtbWFuYWdlbWVudDpmZWF0dXJlcy5zYXZlZC1yZXBvcnRzLnRpdGxlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQHJlcG9ydC1tYW5hZ2VtZW50OmZlYXR1cmVzLnNhdmVkLXJlcG9ydHMuZGVzY3JpcHRpb24nLFxuICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIH0pO1xuXG4gICAgLy8gU2NoZWR1bGVkIFJlcG9ydHMgZmVhdHVyZVxuICAgIGNvbnRleHQuYWRkRmVhdHVyZShBWFBSZXBvcnRNYW5hZ2VtZW50RmVhdHVyZUtleXMuU2NoZWR1bGVkUmVwb3J0cywge1xuICAgICAgdGl0bGU6ICdAcmVwb3J0LW1hbmFnZW1lbnQ6ZmVhdHVyZXMuc2NoZWR1bGVkLXJlcG9ydHMudGl0bGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdAcmVwb3J0LW1hbmFnZW1lbnQ6ZmVhdHVyZXMuc2NoZWR1bGVkLXJlcG9ydHMuZGVzY3JpcHRpb24nLFxuICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIH0pO1xuXG4gICAgLy8gQmFja2dyb3VuZCBSZXBvcnRzIGZlYXR1cmVcbiAgICBjb250ZXh0LmFkZEZlYXR1cmUoQVhQUmVwb3J0TWFuYWdlbWVudEZlYXR1cmVLZXlzLkJhY2tncm91bmRSZXBvcnRzLCB7XG4gICAgICB0aXRsZTogJ0ByZXBvcnQtbWFuYWdlbWVudDpmZWF0dXJlcy5iYWNrZ3JvdW5kLXJlcG9ydHMudGl0bGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdAcmVwb3J0LW1hbmFnZW1lbnQ6ZmVhdHVyZXMuYmFja2dyb3VuZC1yZXBvcnRzLmRlc2NyaXB0aW9uJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICB9KTtcbiAgfVxufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","import { AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex/platform/core';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { ReportManagementManifest } from './manifest';\nimport { AXPDomainModule, provideEntity } from '@acorex/platform/domain';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { NgModule } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { RootConfig } from './const';\nimport { AXM_REPORT_CATEGORY_PROVIDER, AXM_REPORT_DEFINITION_PROVIDER, } from './features/report-runner/reports.provider';\nimport { AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\n// Entity Modules\nimport { AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER } from './reports';\nimport { AXMSystemReportsCategoryProvider, AXMSystemReportsDefinitionProvider } from './report.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMEntityProvider } from './entity.provider';\nimport { AXPReportManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport * as i0 from \"@angular/core\";\nfunction routesFacory() {\n let routes = [\n {\n path: `:app/${RootConfig.module.route}/viewer`,\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: ':reportId',\n loadComponent: () => import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then((c) => c.AXPReportViewerPageComponent),\n data: { reuse: true },\n },\n {\n path: '',\n loadComponent: () => import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then((c) => c.AXPReportViewerPageComponent),\n data: { reuse: true },\n },\n ],\n },\n {\n path: `:app/${RootConfig.module.route}/reports`,\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: '**',\n loadComponent: () => import('./features/report-runner/report-runner-root-page/report-runner-root-page.component').then((c) => c.AXMReportRunnerRootPageComponent),\n data: { reuse: true },\n },\n ],\n },\n ];\n return routes;\n}\nexport class AXMReportManagementModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, imports: [AXPDomainModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, providers: [\n // Module-specific providers (not part of manifest system)\n AXM_REPORT_DEFINITION_PROVIDER,\n AXM_REPORT_CATEGORY_PROVIDER,\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n provideEntity([RootConfig.entities.report.fullName, RootConfig.entities.category.fullName]),\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: ReportManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPReportManagementFeatureDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_REPORT_CATEGORY_PROVIDER,\n useClass: AXMSystemReportsCategoryProvider,\n multi: true,\n },\n {\n provide: AXP_REPORT_DEFINITION_PROVIDER,\n useClass: AXMSystemReportsDefinitionProvider,\n multi: true,\n },\n ], imports: [AXPDomainModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXPDomainModule,\n // Entity Modules\n ],\n exports: [],\n declarations: [],\n providers: [\n // Module-specific providers (not part of manifest system)\n AXM_REPORT_DEFINITION_PROVIDER,\n AXM_REPORT_CATEGORY_PROVIDER,\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n provideEntity([RootConfig.entities.report.fullName, RootConfig.entities.category.fullName]),\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: ReportManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPReportManagementFeatureDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_REPORT_CATEGORY_PROVIDER,\n useClass: AXMSystemReportsCategoryProvider,\n multi: true,\n },\n {\n provide: AXP_REPORT_DEFINITION_PROVIDER,\n useClass: AXMSystemReportsDefinitionProvider,\n multi: true,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hbmFnZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcmVwb3J0LW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsOEJBQThCLEdBQy9CLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFM0UsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsK0JBQStCLEVBQUUs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LEVBQUUsNEJBQTRCOzRCQUNyQyxRQUFRLEVBQUUsaUJBQWlCOzRCQUMzQixLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxRQUFRLEVBQUUsNENBQTRDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxRQUFRLEVBQUUsZ0NBQWdDOzRCQUMxQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFFRDs0QkFDRSxPQUFPLEVBQUUsOEJBQThCOzRCQUN2QyxRQUFRLEVBQUUsa0NBQWtDOzRCQUM1QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEF1dGhHdWFyZCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBfTU9EVUxFX01BTklGRVNUX1BST1ZJREVSLCBBWFBfRkVBVFVSRV9ERUZJTklUSU9OX1BST1ZJREVSIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUF9FTlRJVFlfREVGSU5JVElPTl9MT0FERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgUmVwb3J0TWFuYWdlbWVudE1hbmlmZXN0IH0gZnJvbSAnLi9tYW5pZmVzdCc7XG5pbXBvcnQgeyBBWFBEb21haW5Nb2R1bGUsIHByb3ZpZGVFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2RvbWFpbic7XG5pbXBvcnQgeyBBWFBSb290TGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVzLCBST1VURVMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4vY29uc3QnO1xuaW1wb3J0IHtcbiAgQVhNX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUixcbiAgQVhNX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSLFxufSBmcm9tICcuL2ZlYXR1cmVzL3JlcG9ydC1ydW5uZXIvcmVwb3J0cy5wcm92aWRlcic7XG5pbXBvcnQgeyBBWFBfTUVOVV9QUk9WSURFUiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUF9QRVJNSVNTSU9OX0RFRklOSVRJT05fUFJPVklERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuXG4vLyBFbnRpdHkgTW9kdWxlc1xuaW1wb3J0IHsgQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUiwgQVhQX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSIH0gZnJvbSAnLi9yZXBvcnRzJztcbmltcG9ydCB7IEFYTVN5c3RlbVJlcG9ydHNDYXRlZ29yeVByb3ZpZGVyLCBBWE1TeXN0ZW1SZXBvcnRzRGVmaW5pdGlvblByb3ZpZGVyIH0gZnJvbSAnLi9yZXBvcnQucHJvdmlkZXInO1xuaW1wb3J0IHsgQVhNUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciB9IGZyb20gJy4vcGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYTU1lbnVQcm92aWRlciB9IGZyb20gJy4vbWVudS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWE1FbnRpdHlQcm92aWRlciB9IGZyb20gJy4vZW50aXR5LnByb3ZpZGVyJztcbmltcG9ydCB7IEFYUFJlcG9ydE1hbmFnZW1lbnRGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyIH0gZnJvbSAnLi9mZWF0dXJlLWRlZmluaXRpb24ucHJvdmlkZXInO1xuXG5mdW5jdGlvbiByb3V0ZXNGYWNvcnkoKSB7XG4gIGxldCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAgICB7XG4gICAgICBwYXRoOiBgOmFwcC8ke1Jvb3RDb25maWcubW9kdWxlLnJvdXRlfS92aWV3ZXJgLFxuICAgICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gQVhQUm9vdExheW91dENvbXBvbmVudDtcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJzpyZXBvcnRJZCcsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgnLi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXItcGFnZS9yZXBvcnQtdmlld2VyLXBhZ2UuY29tcG9uZW50JykudGhlbihcbiAgICAgICAgICAgICAgKGMpID0+IGMuQVhQUmVwb3J0Vmlld2VyUGFnZUNvbXBvbmVudCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZGF0YTogeyByZXVzZTogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgnLi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXItcGFnZS9yZXBvcnQtdmlld2VyLXBhZ2UuY29tcG9uZW50JykudGhlbihcbiAgICAgICAgICAgICAgKGMpID0+IGMuQVhQUmVwb3J0Vmlld2VyUGFnZUNvbXBvbmVudCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZGF0YTogeyByZXVzZTogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHBhdGg6IGA6YXBwLyR7Um9vdENvbmZpZy5tb2R1bGUucm91dGV9L3JlcG9ydHNgLFxuICAgICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gQVhQUm9vdExheW91dENvbXBvbmVudDtcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJyoqJyxcbiAgICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KCcuL2ZlYXR1cmVzL3JlcG9ydC1ydW5uZXIvcmVwb3J0LXJ1bm5lci1yb290LXBhZ2UvcmVwb3J0LXJ1bm5lci1yb290LXBhZ2UuY29tcG9uZW50JykudGhlbihcbiAgICAgICAgICAgICAgKGMpID0+IGMuQVhNUmVwb3J0UnVubmVyUm9vdFBhZ2VDb21wb25lbnQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGRhdGE6IHsgcmV1c2U6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbiAgcmV0dXJuIHJvdXRlcztcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEFYUERvbWFpbk1vZHVsZSxcbiAgICAvLyBFbnRpdHkgTW9kdWxlc1xuICBdLFxuICBleHBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gTW9kdWxlLXNwZWNpZmljIHByb3ZpZGVycyAobm90IHBhcnQgb2YgbWFuaWZlc3Qgc3lzdGVtKVxuICAgIEFYTV9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUixcbiAgICBBWE1fUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFJPVVRFUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRmFjdG9yeTogcm91dGVzRmFjb3J5LFxuICAgIH0sXG4gICAgcHJvdmlkZUVudGl0eShbUm9vdENvbmZpZy5lbnRpdGllcy5yZXBvcnQuZnVsbE5hbWUsIFJvb3RDb25maWcuZW50aXRpZXMuY2F0ZWdvcnkuZnVsbE5hbWVdKSxcbiAgICAvLyBNb2R1bGUgTWFuaWZlc3QgUHJvdmlkZXJcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfTU9EVUxFX01BTklGRVNUX1BST1ZJREVSLFxuICAgICAgdXNlVmFsdWU6IFJlcG9ydE1hbmFnZW1lbnRNYW5pZmVzdCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgLy8gUHJvdmlkZXIgcmVmZXJlbmNlcyAobm93IHVzaW5nIHRva2VucylcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfUEVSTUlTU0lPTl9ERUZJTklUSU9OX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEFYTVBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9NRU5VX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEFYTU1lbnVQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1FbnRpdHlQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0ZFQVRVUkVfREVGSU5JVElPTl9QUk9WSURFUixcbiAgICAgIHVzZUNsYXNzOiBBWFBSZXBvcnRNYW5hZ2VtZW50RmVhdHVyZURlZmluaXRpb25Qcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1TeXN0ZW1SZXBvcnRzQ2F0ZWdvcnlQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVIsXG4gICAgICB1c2VDbGFzczogQVhNU3lzdGVtUmVwb3J0c0RlZmluaXRpb25Qcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVJlcG9ydE1hbmFnZW1lbnRNb2R1bGUgeyB9XG4iXX0=","import { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPPageStatus, AXPWidgetRegistryService } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { AXPReportDefinitionService, } from '../../reports';\nimport { convertContextDataToFilterClause } from '../../reports/report-mapper';\nexport const AXPReportViewerViewModel = signalStore(withState(() => ({\n reportDefinition: null,\n currentLayout: null,\n filterContext: {},\n categoriesPath: [],\n allowFetchData: false,\n shouldExecuteReport: false,\n lastAppliedFilterContext: null, // Track last applied filters\n hasBeenExecuted: false, // Track if report has been executed at least once\n status: AXPPageStatus.Idle,\n error: null,\n})), withComputed((store, widgetRegistryService = inject(AXPWidgetRegistryService)) => ({\n //#region ---- Layout Management ----\n availableLayouts: computed(() => {\n const report = store.reportDefinition();\n if (!report?.layouts)\n return [];\n return report.layouts.map((layout) => ({\n id: layout.id,\n title: layout.title,\n icon: layout.icon,\n type: layout.layout.type,\n }));\n }),\n defaultLayout: computed(() => {\n const report = store.reportDefinition();\n if (!report?.layouts?.length)\n return null;\n // Find layout marked as default, or use first layout\n return report.layouts.find((l) => l.isDefault) || report.layouts[0];\n }),\n activeLayoutId: computed(() => store.currentLayout()?.id || null),\n layoutType: computed(() => store.currentLayout()?.layout?.type || null),\n //#endregion\n //#region ---- Layout-Specific Configurations ----\n tableLayoutConfig: computed(() => {\n const layout = store.currentLayout();\n return layout?.layout?.type === 'table' ? layout.layout : null;\n }),\n chartLayoutConfig: computed(() => {\n const layout = store.currentLayout();\n return layout?.layout?.type === 'chart' ? layout.layout : null;\n }),\n //#endregion\n //#region ---- State Indicators ----\n isLoading: computed(() => store.status() === AXPPageStatus.Processing),\n isExecuting: computed(() => store.status() === AXPPageStatus.Submitting),\n hasError: computed(() => store.error() !== null),\n canExecute: computed(() => {\n // Always allow execution if there's an error (to enable retry)\n if (store.error() !== null) {\n return true;\n }\n // Allow execution if there are unapplied filters\n const currentContext = store.filterContext();\n const lastApplied = store.lastAppliedFilterContext();\n const hasBeenExecuted = store.hasBeenExecuted();\n if (hasBeenExecuted && JSON.stringify(currentContext) !== JSON.stringify(lastApplied)) {\n return true;\n }\n // Allow execution if report hasn't been executed yet\n if (!hasBeenExecuted) {\n return true;\n }\n // Otherwise, don't allow execution\n return false;\n }),\n hasMultipleLayouts: computed(() => {\n const report = store.reportDefinition();\n return (report?.layouts?.length ?? 0) > 1;\n }),\n title: computed(() => store.reportDefinition()?.title ?? 'Report Viewer'),\n description: computed(() => store.reportDefinition()?.description ?? null),\n //#endregion\n //#region ---- Form Configuration ----\n formDefinition: computed(() => {\n const report = store.reportDefinition();\n if (!report || !report.parameterGroups) {\n return { groups: [] };\n }\n const formDefinition = {\n groups: report.parameterGroups.map((group) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n parameters: group.parameters.map(function (param) {\n const widget = widgetRegistryService.resolve(param.widget.type ?? '');\n const widgetType = widget?.defaultFilterWidgetName ?? (param.widget.type ?? '');\n return {\n path: param.path,\n title: param.title,\n description: param.description,\n badge: `{{ filter.getTitle(context.eval(\"${param.path}.operation.type\")) }}`,\n widget: {\n path: param.path,\n type: widgetType,\n options: {\n ...param.widget.options,\n clearButton: true,\n hasClearButton: true,\n },\n }\n };\n }),\n })),\n };\n return formDefinition;\n }),\n //#endregion\n //#region ---- Layout Type Detection ----\n isTableLayout: computed(() => store.currentLayout()?.layout?.type === 'table'),\n isChartLayout: computed(() => store.currentLayout()?.layout?.type === 'chart'),\n //#endregion\n //#region ---- Filter States ----\n hasUnappliedFilters: computed(() => {\n const currentContext = store.filterContext();\n const lastApplied = store.lastAppliedFilterContext();\n const hasBeenExecuted = store.hasBeenExecuted();\n // If report has never been executed, don't show unapplied filters warning\n if (!hasBeenExecuted) {\n return false;\n }\n // If no filters have been applied yet, return true\n if (lastApplied === null) {\n return true;\n }\n // Check if current filters are different from last applied filters\n const currentKeys = Object.keys(currentContext);\n const lastKeys = Object.keys(lastApplied);\n if (currentKeys.length !== lastKeys.length) {\n return true;\n }\n // Check if any values are different\n for (const key of currentKeys) {\n if (currentContext[key] !== lastApplied[key]) {\n return true;\n }\n }\n return false;\n }),\n //#endregion\n //#region ---- Action States ----\n canSwitchLayout: computed(() => (store.reportDefinition()?.layouts?.length ?? 0) > 1 && store.status() !== AXPPageStatus.Submitting),\n canSelectRows: computed(() => {\n const layout = store.currentLayout();\n return (layout?.layout?.type === 'table' &&\n layout.layout.options?.selectable?.mode &&\n layout.layout.options?.selectable?.mode !== 'none');\n }),\n //#endregion\n})), withMethods((store, reportDefinitionService = inject(AXPReportDefinitionService), commandService = inject(AXPCommandService)) => {\n const executeReport = async () => {\n try {\n const report = store.reportDefinition();\n const layout = store.currentLayout();\n if (!report || !layout) {\n patchState(store, {\n error: 'Report or layout not found',\n });\n return;\n }\n patchState(store, {\n status: AXPPageStatus.Submitting,\n error: null,\n allowFetchData: true,\n shouldExecuteReport: true,\n lastAppliedFilterContext: { ...store.filterContext() }, // Mark current filters as applied\n hasBeenExecuted: true, // Mark that report has been executed at least once\n });\n patchState(store, {\n status: AXPPageStatus.Submitted,\n error: null,\n });\n }\n catch (error) {\n patchState(store, {\n status: AXPPageStatus.Error,\n error: error instanceof Error ? error.message : 'An unexpected error occurred while executing the report',\n });\n }\n };\n const fetchData = async (parameters = {}) => {\n const report = store.reportDefinition();\n const layout = store.currentLayout();\n if (!report || !layout) {\n return null;\n }\n patchState(store, {\n status: AXPPageStatus.Processing,\n error: null,\n });\n try {\n // Create execution context - ensure dataSource is provided\n const dataSource = layout.dataSource || {\n type: 'query',\n name: 'getEmployeeList',\n };\n // Convert filter context to AXPFilterClause format\n const filterContext = {\n ...store.filterContext(),\n ...parameters,\n };\n const filterClause = convertContextDataToFilterClause(filterContext);\n // Preserve pagination parameters (skip/take) that are not part of the filter context structure\n // used by convertContextDataToFilterClause (it only converts { operation, value } items).\n const paginationSkip = filterContext.skip;\n const paginationTake = filterContext.take;\n if (paginationSkip !== undefined) {\n filterClause.skip = paginationSkip;\n }\n if (paginationTake !== undefined) {\n filterClause.take = paginationTake;\n }\n const context = {\n reportId: report.id,\n layoutId: layout.id,\n dataSource: dataSource,\n filters: filterClause,\n };\n const executionResult = await commandService.execute('ReportManagement.Report:Execute', context);\n if (!executionResult?.success || !executionResult.data) {\n patchState(store, {\n error: executionResult?.message?.text || 'Failed to execute report',\n });\n return null;\n }\n return executionResult.data;\n }\n catch (error) {\n patchState(store, {\n error: 'Failed to execute report',\n });\n console.error('Error executing report:', error);\n return null;\n }\n finally {\n patchState(store, {\n status: AXPPageStatus.Idle,\n });\n }\n };\n return {\n //#region ---- Report Loading ----\n async loadReport(reportId) {\n patchState(store, {\n status: AXPPageStatus.Processing,\n error: null,\n });\n try {\n const report = await reportDefinitionService.getReportById(reportId);\n if (report) {\n // Configure parameter widgets with proper paths\n report.parameterGroups.forEach((group) => {\n group.parameters.forEach((param) => {\n param.widget.path = param.path;\n });\n });\n // Load categories path for breadcrumbs\n const categoriesPath = await reportDefinitionService.getCategoriesPathByReportId(reportId);\n // Set default layout\n const defaultLayout = report.layouts.find((l) => l.isDefault) || report.layouts[0];\n patchState(store, {\n reportDefinition: report,\n currentLayout: defaultLayout,\n categoriesPath: categoriesPath || [],\n filterContext: {}, // Reset context when loading new report\n allowFetchData: false,\n hasBeenExecuted: false, // Reset execution state for new report\n });\n }\n }\n catch (error) {\n patchState(store, {\n error: 'Failed to load report definition',\n });\n console.error('Error loading report:', error);\n }\n finally {\n patchState(store, {\n status: AXPPageStatus.Idle,\n });\n }\n },\n //#endregion\n //#region ---- Layout Management ----\n switchLayout(layoutId) {\n const report = store.reportDefinition();\n if (!report)\n return;\n const layout = report.layouts.find((l) => l.id === layoutId);\n if (layout) {\n patchState(store, {\n currentLayout: layout,\n });\n }\n },\n //#endregion\n //#region ---- Data Execution ----\n executeReport,\n fetchData,\n //#endregion\n //#region ---- Filter Management ----\n updateFilterContext(context) {\n patchState(store, {\n filterContext: { ...store.filterContext(), ...context },\n shouldExecuteReport: false, // Reset execution flag when filters change\n });\n },\n clearFilters() {\n patchState(store, {\n allowFetchData: false,\n shouldExecuteReport: false,\n filterContext: {},\n lastAppliedFilterContext: null, // Reset applied filters when clearing\n hasBeenExecuted: false, // Reset execution state when clearing filters\n });\n },\n resetFilters() {\n patchState(store, {\n allowFetchData: false,\n });\n },\n //#endregion\n //#region ---- Export Management ----\n async exportReport(format) {\n const layout = store.currentLayout();\n if (!layout?.export) {\n console.warn('Export not configured for current layout');\n return;\n }\n try {\n // Export logic would go here\n // This would typically call a different command for export\n console.log(`Exporting report in ${format} format`);\n }\n catch (error) {\n console.error('Error exporting report:', error);\n }\n },\n //#endregion\n //#region ---- Utility Methods ----\n refresh() {\n return executeReport();\n },\n clearError() {\n patchState(store, {\n error: null,\n });\n },\n clearExecutionState() {\n patchState(store, {\n hasBeenExecuted: false,\n allowFetchData: false,\n shouldExecuteReport: false,\n });\n },\n cancel() {\n patchState(store, {\n status: AXPPageStatus.Idle,\n hasBeenExecuted: false,\n error: null,\n });\n //TODO: Cancel the report execution\n },\n reset() {\n patchState(store, {\n reportDefinition: null,\n currentLayout: null,\n filterContext: {},\n allowFetchData: false,\n shouldExecuteReport: false,\n lastAppliedFilterContext: null,\n hasBeenExecuted: false,\n categoriesPath: [],\n status: AXPPageStatus.Idle,\n error: null,\n });\n },\n //#endregion\n };\n}), withHooks((store, translationService = inject(AXTranslationService), localeService = inject(AXLocaleService)) => ({\n async onInit() {\n // Subscribe to language and locale changes\n translationService.langChanges$.subscribe(() => {\n // Handle language change if needed\n });\n localeService.profileChanged$.subscribe(() => {\n // Handle locale change if needed\n });\n },\n onDestroy() {\n // Cleanup if needed\n },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXdlci52aWV3bW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXIudmlld21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFNTCwwQkFBMEIsR0FLM0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0UsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUNqRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNmLGdCQUFnQixFQUFFLElBQWtDO0lBQ3BELGFBQWEsRUFBRSxJQUF3QztJQUN2RCxhQUFhLEVBQUUsRUFBb0I7SUFDbkMsY0FBYyxFQUFFLEVBQVc7SUFDM0IsY0FBYyxFQUFFLEtBQUs7SUFDckIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQix3QkFBd0IsRUFBRSxJQUE2QixFQUFFLDZCQUE2QjtJQUN0RixlQUFlLEVBQUUsS0FBSyxFQUFF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QUFFLEVBQUU7Z0JBQ2xCLE1BQU0sRUFBRSxhQUFhLENBQUMsSUFBSTtnQkFDMUIsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsWUFBWTtLQUNiLENBQUM7QUFDSixDQUFDLENBQ0YsRUFFRCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsYUFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoSCxLQUFLLENBQUMsTUFBTTtRQUNWLDJDQUEyQztRQUMzQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QyxtQ0FBbUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFSCxhQUFhLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0MsaUNBQWlDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFNBQVM7UUFDUCxvQkFBb0I7SUFDdEIsQ0FBQztDQUNGLENBQUMsQ0FBQyxDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWExvY2FsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvbG9jYWxlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUENvbnRleHREYXRhIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUER5bmFtaWNGb3JtRGVmaW5pdGlvbiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQVhQUGFnZVN0YXR1cywgQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgQVhQQ29tbWFuZFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGF0Y2hTdGF0ZSwgc2lnbmFsU3RvcmUsIHdpdGhDb21wdXRlZCwgd2l0aEhvb2tzLCB3aXRoTWV0aG9kcywgd2l0aFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQge1xuICBBWFBFeGVjdXRpb25SZXBvcnRDb21tYW5kUmVzdWx0LFxuICBBWFBMYXlvdXRFeGVjdXRpb25Db250ZXh0LFxuICBBWFBMYXlvdXRTd2l0Y2hlck9wdGlvbixcbiAgQVhQUmVwb3J0Q2hhcnRMYXlvdXQsXG4gIEFYUFJlcG9ydERlZmluaXRpb24sXG4gIEFYUFJlcG9ydERlZmluaXRpb25TZXJ2aWNlLFxuICBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uLFxuICBBWFBSZXBvcnRQYXJhbWV0ZXIsXG4gIEFYUFJlcG9ydFBhcmFtZXRlckdyb3VwLFxuICBBWFBSZXBvcnRUYWJsZUxheW91dCxcbn0gZnJvbSAnLi4vLi4vcmVwb3J0cyc7XG5pbXBvcnQgeyBjb252ZXJ0Q29udGV4dERhdGFUb0ZpbHRlckNsYXVzZSB9IGZyb20gJy4uLy4uL3JlcG9ydHMvcmVwb3J0LW1hcHBlcic7XG5cbmV4cG9ydCBjb25zdCBBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwgPSBzaWduYWxTdG9yZShcbiAgd2l0aFN0YXRlKCgpID0+ICh7XG4gICAgcmVwb3J0RGVmaW5pdGlvbjogbnVsbCBhcyBBWFBSZXBvcnREZWZpbml0aW9uIHwgbnVsbCxcbiAgICBjdXJyZW50TGF5b3V0OiBudWxsIGFzIEFYUFJlcG9ydExheW91dERlZmluaXRpb24gfCBudWxsLFxuICAgIGZpbHRlckNvbnRleHQ6IHt9IGFzIEFYUENvbnRleHREYXRhLFxuICAgIGNhdGVnb3JpZXNQYXRoOiBbXSBhcyBhbnlbXSxcbiAgICBhbGxvd0ZldGNoRGF0YTogZmFsc2UsXG4gICAgc2hvdWxkRXhlY3V0ZVJlcG9ydDogZmFsc2UsXG4gICAgbGFzdEFwcGxpZWRGaWx0ZXJDb250ZXh0OiBudWxsIGFzIEFYUENvbnRleHREYXRhIHwgbnVsbCwgLy8gVHJhY2sgbGFzdCBhcHBsaWVkIGZpbHRlcnNcbiAgICBoYXNCZWVuRXhlY3V0ZWQ6IGZhbHNlLCAvLyBUcmFjayBpZiByZXBvcnQgaGFzIGJlZW4gZXhlY3V0ZWQgYXQgbGVhc3Qgb25jZVxuICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5JZGxlLFxuICAgIGVycm9yOiBudWxsIGFzIHN0cmluZyB8IG51bGwsXG4gIH0pKSxcblxuICB3aXRoQ29tcHV0ZWQoKHN0b3JlLCB3aWRnZXRSZWdpc3RyeVNlcnZpY2UgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKSkgPT4gKHtcbiAgICAvLyNyZWdpb24gLS0tLSAgIExheW91dCBNYW5hZ2VtZW50ICAgLS0tLVxuXG4gICAgYXZhaWxhYmxlTGF5b3V0czogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgaWYgKCFyZXBvcnQ/LmxheW91dHMpIHJldHVybiBbXTtcblxuICAgICAgcmV0dXJuIHJlcG9ydC5sYXlvdXRzLm1hcChcbiAgICAgICAgKGxheW91dDogQVhQUmVwb3J0TGF5b3V0RGVmaW5pdGlvbikgPT5cbiAgICAgICAgICAoe1xuICAgICAgICAgICAgaWQ6IGxheW91dC5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBsYXlvdXQudGl0bGUsXG4gICAgICAgICAgICBpY29uOiBsYXlvdXQuaWNvbixcbiAgICAgICAgICAgIHR5cGU6IGxheW91dC5sYXlvdXQudHlwZSxcbiAgICAgICAgICB9KSBhcyBBWFBMYXlvdXRTd2l0Y2hlck9wdGlvbixcbiAgICAgICk7XG4gICAgfSksXG5cbiAgICBkZWZhdWx0TGF5b3V0OiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCByZXBvcnQgPSBzdG9yZS5yZXBvcnREZWZpbml0aW9uKCk7XG4gICAgICBpZiAoIXJlcG9ydD8ubGF5b3V0cz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICAgICAgLy8gRmluZCBsYXlvdXQgbWFya2VkIGFzIGRlZmF1bHQsIG9yIHVzZSBmaXJzdCBsYXlvdXRcbiAgICAgIHJldHVybiByZXBvcnQubGF5b3V0cy5maW5kKChsOiBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uKSA9PiBsLmlzRGVmYXVsdCkgfHwgcmVwb3J0LmxheW91dHNbMF07XG4gICAgfSksXG5cbiAgICBhY3RpdmVMYXlvdXRJZDogY29tcHV0ZWQoKCkgPT4gc3RvcmUuY3VycmVudExheW91dCgpPy5pZCB8fCBudWxsKSxcblxuICAgIGxheW91dFR5cGU6IGNvbXB1dGVkKCgpID0+IHN0b3JlLmN1cnJlbnRMYXlvdXQoKT8ubGF5b3V0Py50eXBlIHx8IG51bGwpLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIExheW91dC1TcGVjaWZpYyBDb25maWd1cmF0aW9ucyAgIC0tLS1cblxuICAgIHRhYmxlTGF5b3V0Q29uZmlnOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICByZXR1cm4gbGF5b3V0Py5sYXlvdXQ/LnR5cGUgPT09ICd0YWJsZScgPyAobGF5b3V0LmxheW91dCBhcyBBWFBSZXBvcnRUYWJsZUxheW91dCkgOiBudWxsO1xuICAgIH0pLFxuXG4gICAgY2hhcnRMYXlvdXRDb25maWc6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGxheW91dCA9IHN0b3JlLmN1cnJlbnRMYXlvdXQoKTtcbiAgICAgIHJldHVybiBsYXlvdXQ/LmxheW91dD8udHlwZSA9PT0gJ2NoYXJ0JyA/IChsYXlvdXQubGF5b3V0IGFzIEFYUFJlcG9ydENoYXJ0TGF5b3V0KSA6IG51bGw7XG4gICAgfSksXG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgU3RhdGUgSW5kaWNhdG9ycyAgIC0tLS1cblxuICAgIGlzTG9hZGluZzogY29tcHV0ZWQoKCkgPT4gc3RvcmUuc3RhdHVzKCkgPT09IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZyksXG4gICAgaXNFeGVjdXRpbmc6IGNvbXB1dGVkKCgpID0+IHN0b3JlLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLlN1Ym1pdHRpbmcpLFxuICAgIGhhc0Vycm9yOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5lcnJvcigpICE9PSBudWxsKSxcbiAgICBjYW5FeGVjdXRlOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAvLyBBbHdheXMgYWxsb3cgZXhlY3V0aW9uIGlmIHRoZXJlJ3MgYW4gZXJyb3IgKHRvIGVuYWJsZSByZXRyeSlcbiAgICAgIGlmIChzdG9yZS5lcnJvcigpICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBbGxvdyBleGVjdXRpb24gaWYgdGhlcmUgYXJlIHVuYXBwbGllZCBmaWx0ZXJzXG4gICAgICBjb25zdCBjdXJyZW50Q29udGV4dCA9IHN0b3JlLmZpbHRlckNvbnRleHQoKTtcbiAgICAgIGNvbnN0IGxhc3RBcHBsaWVkID0gc3RvcmUubGFzdEFwcGxpZWRGaWx0ZXJDb250ZXh0KCk7XG4gICAgICBjb25zdCBoYXNCZWVuRXhlY3V0ZWQgPSBzdG9yZS5oYXNCZWVuRXhlY3V0ZWQoKTtcblxuICAgICAgaWYgKGhhc0JlZW5FeGVjdXRlZCAmJiBKU09OLnN0cmluZ2lmeShjdXJyZW50Q29udGV4dCkgIT09IEpTT04uc3RyaW5naWZ5KGxhc3RBcHBsaWVkKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQWxsb3cgZXhlY3V0aW9uIGlmIHJlcG9ydCBoYXNuJ3QgYmVlbiBleGVjdXRlZCB5ZXRcbiAgICAgIGlmICghaGFzQmVlbkV4ZWN1dGVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBPdGhlcndpc2UsIGRvbid0IGFsbG93IGV4ZWN1dGlvblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pLFxuICAgIGhhc011bHRpcGxlTGF5b3V0czogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgcmV0dXJuIChyZXBvcnQ/LmxheW91dHM/Lmxlbmd0aCA/PyAwKSA+IDE7XG4gICAgfSksXG5cbiAgICB0aXRsZTogY29tcHV0ZWQoKCkgPT4gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpPy50aXRsZSA/PyAnUmVwb3J0IFZpZXdlcicpLFxuICAgIGRlc2NyaXB0aW9uOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5yZXBvcnREZWZpbml0aW9uKCk/LmRlc2NyaXB0aW9uID8/IG51bGwpLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEZvcm0gQ29uZmlndXJhdGlvbiAgIC0tLS1cblxuICAgIGZvcm1EZWZpbml0aW9uOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCByZXBvcnQgPSBzdG9yZS5yZXBvcnREZWZpbml0aW9uKCk7XG4gICAgICBpZiAoIXJlcG9ydCB8fCAhcmVwb3J0LnBhcmFtZXRlckdyb3Vwcykge1xuICAgICAgICByZXR1cm4geyBncm91cHM6IFtdIH0gYXMgQVhQRHluYW1pY0Zvcm1EZWZpbml0aW9uO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgZ3JvdXBzOiByZXBvcnQucGFyYW1ldGVyR3JvdXBzLm1hcCgoZ3JvdXA6IEFYUFJlcG9ydFBhcmFtZXRlckdyb3VwKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGdyb3VwLm5hbWUsXG4gICAgICAgICAgdGl0bGU6IGdyb3VwLnRpdGxlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBncm91cC5kZXNjcmlwdGlvbixcbiAgICAgICAgICBwYXJhbWV0ZXJzOiBncm91cC5wYXJhbWV0ZXJzLm1hcChmdW5jdGlvbihwYXJhbTogQVhQUmVwb3J0UGFyYW1ldGVyKSB7XG4gICAgICAgICAgICBjb25zdCB3aWRnZXQgPSB3aWRnZXRSZWdpc3RyeVNlcnZpY2UucmVzb2x2ZShwYXJhbS53aWRnZXQudHlwZSA/PyAnJyk7XG4gICAgICAgICAgICBjb25zdCB3aWRnZXRUeXBlID0gd2lkZ2V0Py5kZWZhdWx0RmlsdGVyV2lkZ2V0TmFtZSA/PyAocGFyYW0ud2lkZ2V0LnR5cGUgPz8gJycpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcGF0aDogcGFyYW0ucGF0aCxcbiAgICAgICAgICAgICAgdGl0bGU6IHBhcmFtLnRpdGxlLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcGFyYW0uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgIGJhZGdlOiBge3sgZmlsdGVyLmdldFRpdGxlKGNvbnRleHQuZXZhbChcIiR7cGFyYW0ucGF0aH0ub3BlcmF0aW9uLnR5cGVcIikpIH19YCxcbiAgICAgICAgICAgICAgd2lkZ2V0IDoge1xuICAgICAgICAgICAgICAgIHBhdGg6IHBhcmFtLnBhdGgsXG4gICAgICAgICAgICAgICAgdHlwZTogd2lkZ2V0VHlwZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAuLi5wYXJhbS53aWRnZXQub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgIGNsZWFyQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgaGFzQ2xlYXJCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSkpLFxuICAgICAgfSBhcyBBWFBEeW5hbWljRm9ybURlZmluaXRpb247XG4gICAgICByZXR1cm4gZm9ybURlZmluaXRpb247XG4gICAgfSksXG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgTGF5b3V0IFR5cGUgRGV0ZWN0aW9uICAgLS0tLVxuXG4gICAgaXNUYWJsZUxheW91dDogY29tcHV0ZWQoKCkgPT4gc3RvcmUuY3VycmVudExheW91dCgpPy5sYXlvdXQ/LnR5cGUgPT09ICd0YWJsZScpLFxuICAgIGlzQ2hhcnRMYXlvdXQ6IGNvbXB1dGVkKCgpID0+IHN0b3JlLmN1cnJlbnRMYXlvdXQoKT8ubGF5b3V0Py50eXBlID09PSAnY2hhcnQnKSxcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBGaWx0ZXIgU3RhdGVzICAgLS0tLVxuXG4gICAgaGFzVW5hcHBsaWVkRmlsdGVyczogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudENvbnRleHQgPSBzdG9yZS5maWx0ZXJDb250ZXh0KCk7XG4gICAgICBjb25zdCBsYXN0QXBwbGllZCA9IHN0b3JlLmxhc3RBcHBsaWVkRmlsdGVyQ29udGV4dCgpO1xuICAgICAgY29uc3QgaGFzQmVlbkV4ZWN1dGVkID0gc3RvcmUuaGFzQmVlbkV4ZWN1dGVkKCk7XG5cbiAgICAgIC8vIElmIHJlcG9ydCBoYXMgbmV2ZXIgYmVlbiBleGVjdXRlZCwgZG9uJ3Qgc2hvdyB1bmFwcGxpZWQgZmlsdGVycyB3YXJuaW5nXG4gICAgICBpZiAoIWhhc0JlZW5FeGVjdXRlZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIG5vIGZpbHRlcnMgaGF2ZSBiZWVuIGFwcGxpZWQgeWV0LCByZXR1cm4gdHJ1ZVxuICAgICAgaWYgKGxhc3RBcHBsaWVkID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBjdXJyZW50IGZpbHRlcnMgYXJlIGRpZmZlcmVudCBmcm9tIGxhc3QgYXBwbGllZCBmaWx0ZXJzXG4gICAgICBjb25zdCBjdXJyZW50S2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRDb250ZXh0KTtcbiAgICAgIGNvbnN0IGxhc3RLZXlzID0gT2JqZWN0LmtleXMobGFzdEFwcGxpZWQpO1xuXG4gICAgICBpZiAoY3VycmVudEtleXMubGVuZ3RoICE9PSBsYXN0S2V5cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIGFueSB2YWx1ZXMgYXJlIGRpZmZlcmVudFxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgY3VycmVudEtleXMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0W2tleV0gIT09IGxhc3RBcHBsaWVkW2tleV0pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSksXG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQWN0aW9uIFN0YXRlcyAgIC0tLS1cblxuICAgIGNhblN3aXRjaExheW91dDogY29tcHV0ZWQoXG4gICAgICAoKSA9PiAoc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpPy5sYXlvdXRzPy5sZW5ndGggPz8gMCkgPiAxICYmIHN0b3JlLnN0YXR1cygpICE9PSBBWFBQYWdlU3RhdHVzLlN1Ym1pdHRpbmcsXG4gICAgKSxcblxuICAgIGNhblNlbGVjdFJvd3M6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGxheW91dCA9IHN0b3JlLmN1cnJlbnRMYXlvdXQoKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGxheW91dD8ubGF5b3V0Py50eXBlID09PSAndGFibGUnICYmXG4gICAgICAgIGxheW91dC5sYXlvdXQub3B0aW9ucz8uc2VsZWN0YWJsZT8ubW9kZSAmJlxuICAgICAgICBsYXlvdXQubGF5b3V0Lm9wdGlvbnM/LnNlbGVjdGFibGU/Lm1vZGUgIT09ICdub25lJ1xuICAgICAgKTtcbiAgICB9KSxcblxuICAgIC8vI2VuZHJlZ2lvblxuICB9KSksXG5cbiAgd2l0aE1ldGhvZHMoXG4gICAgKFxuICAgICAgc3RvcmUsXG4gICAgICByZXBvcnREZWZpbml0aW9uU2VydmljZTogQVhQUmVwb3J0RGVmaW5pdGlvblNlcnZpY2UgPSBpbmplY3QoQVhQUmVwb3J0RGVmaW5pdGlvblNlcnZpY2UpLFxuICAgICAgY29tbWFuZFNlcnZpY2U6IEFYUENvbW1hbmRTZXJ2aWNlID0gaW5qZWN0KEFYUENvbW1hbmRTZXJ2aWNlKSxcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGVSZXBvcnQgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgICAgIGNvbnN0IGxheW91dCA9IHN0b3JlLmN1cnJlbnRMYXlvdXQoKTtcbiAgICAgICAgICBpZiAoIXJlcG9ydCB8fCAhbGF5b3V0KSB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgIGVycm9yOiAnUmVwb3J0IG9yIGxheW91dCBub3QgZm91bmQnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLlN1Ym1pdHRpbmcsXG4gICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICAgIGFsbG93RmV0Y2hEYXRhOiB0cnVlLFxuICAgICAgICAgICAgc2hvdWxkRXhlY3V0ZVJlcG9ydDogdHJ1ZSxcbiAgICAgICAgICAgIGxhc3RBcHBsaWVkRmlsdGVyQ29udGV4dDogeyAuLi5zdG9yZS5maWx0ZXJDb250ZXh0KCkgfSwgLy8gTWFyayBjdXJyZW50IGZpbHRlcnMgYXMgYXBwbGllZFxuICAgICAgICAgICAgaGFzQmVlbkV4ZWN1dGVkOiB0cnVlLCAvLyBNYXJrIHRoYXQgcmVwb3J0IGhhcyBiZWVuIGV4ZWN1dGVkIGF0IGxlYXN0IG9uY2VcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5TdWJtaXR0ZWQsXG4gICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuRXJyb3IsXG4gICAgICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCB3aGlsZSBleGVjdXRpbmcgdGhlIHJlcG9ydCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBmZXRjaERhdGEgPSBhc3luYyAocGFyYW1ldGVyczogQVhQQ29udGV4dERhdGEgPSB7fSk6IFByb21pc2U8QVhQRXhlY3V0aW9uUmVwb3J0Q29tbWFuZFJlc3VsdCB8IG51bGw+ID0+IHtcbiAgICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICAgIGlmICghcmVwb3J0IHx8ICFsYXlvdXQpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZyxcbiAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBDcmVhdGUgZXhlY3V0aW9uIGNvbnRleHQgLSBlbnN1cmUgZGF0YVNvdXJjZSBpcyBwcm92aWRlZFxuICAgICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBsYXlvdXQuZGF0YVNvdXJjZSB8fCB7XG4gICAgICAgICAgICB0eXBlOiAncXVlcnknIGFzIGNvbnN0LFxuICAgICAgICAgICAgbmFtZTogJ2dldEVtcGxveWVlTGlzdCcsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIENvbnZlcnQgZmlsdGVyIGNvbnRleHQgdG8gQVhQRmlsdGVyQ2xhdXNlIGZvcm1hdFxuICAgICAgICAgIGNvbnN0IGZpbHRlckNvbnRleHQgPSB7XG4gICAgICAgICAgICAuLi5zdG9yZS5maWx0ZXJDb250ZXh0KCksXG4gICAgICAgICAgICAuLi5wYXJhbWV0ZXJzLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgZmlsdGVyQ2xhdXNlID0gY29udmVydENvbnRleHREYXRhVG9GaWx0ZXJDbGF1c2UoZmlsdGVyQ29udGV4dCk7XG5cbiAgICAgICAgICAvLyBQcmVzZXJ2ZSBwYWdpbmF0aW9uIHBhcmFtZXRlcnMgKHNraXAvdGFrZSkgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIGZpbHRlciBjb250ZXh0IHN0cnVjdHVyZVxuICAgICAgICAgIC8vIHVzZWQgYnkgY29udmVydENvbnRleHREYXRhVG9GaWx0ZXJDbGF1c2UgKGl0IG9ubHkgY29udmVydHMgeyBvcGVyYXRpb24sIHZhbHVlIH0gaXRlbXMpLlxuICAgICAgICAgIGNvbnN0IHBhZ2luYXRpb25Ta2lwID0gKGZpbHRlckNvbnRleHQgYXMgYW55KS5za2lwO1xuICAgICAgICAgIGNvbnN0IHBhZ2luYXRpb25UYWtlID0gKGZpbHRlckNvbnRleHQgYXMgYW55KS50YWtlO1xuICAgICAgICAgIGlmIChwYWdpbmF0aW9uU2tpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAoZmlsdGVyQ2xhdXNlIGFzIGFueSkuc2tpcCA9IHBhZ2luYXRpb25Ta2lwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGFnaW5hdGlvblRha2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgKGZpbHRlckNsYXVzZSBhcyBhbnkpLnRha2UgPSBwYWdpbmF0aW9uVGFrZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjb250ZXh0OiBBWFBMYXlvdXRFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICAgICAgcmVwb3J0SWQ6IHJlcG9ydC5pZCxcbiAgICAgICAgICAgIGxheW91dElkOiBsYXlvdXQuaWQsXG4gICAgICAgICAgICBkYXRhU291cmNlOiBkYXRhU291cmNlLFxuICAgICAgICAgICAgZmlsdGVyczogZmlsdGVyQ2xhdXNlLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBleGVjdXRpb25SZXN1bHQgPSBhd2FpdCBjb21tYW5kU2VydmljZS5leGVjdXRlKCdSZXBvcnRNYW5hZ2VtZW50LlJlcG9ydDpFeGVjdXRlJywgY29udGV4dCk7XG4gICAgICAgICAgaWYgKCFleGVjdXRpb25SZXN1bHQ/LnN1Y2Nlc3MgfHwgIWV4ZWN1dGlvblJlc3VsdC5kYXRhKSB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgIGVycm9yOiBleGVjdXRpb25SZXN1bHQ/Lm1lc3NhZ2U/LnRleHQgfHwgJ0ZhaWxlZCB0byBleGVjdXRlIHJlcG9ydCcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXhlY3V0aW9uUmVzdWx0LmRhdGE7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgZXJyb3I6ICdGYWlsZWQgdG8gZXhlY3V0ZSByZXBvcnQnLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV4ZWN1dGluZyByZXBvcnQ6JywgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5JZGxlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAvLyNyZWdpb24gLS0tLSAgIFJlcG9ydCBMb2FkaW5nICAgLS0tLVxuXG4gICAgICAgIGFzeW5jIGxvYWRSZXBvcnQocmVwb3J0SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5Qcm9jZXNzaW5nLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVwb3J0ID0gYXdhaXQgcmVwb3J0RGVmaW5pdGlvblNlcnZpY2UuZ2V0UmVwb3J0QnlJZChyZXBvcnRJZCk7XG4gICAgICAgICAgICBpZiAocmVwb3J0KSB7XG4gICAgICAgICAgICAgIC8vIENvbmZpZ3VyZSBwYXJhbWV0ZXIgd2lkZ2V0cyB3aXRoIHByb3BlciBwYXRoc1xuICAgICAgICAgICAgICByZXBvcnQucGFyYW1ldGVyR3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3JvdXAucGFyYW1ldGVycy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcGFyYW0ud2lkZ2V0LnBhdGggPSBwYXJhbS5wYXRoO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAvLyBMb2FkIGNhdGVnb3JpZXMgcGF0aCBmb3IgYnJlYWRjcnVtYnNcbiAgICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllc1BhdGggPSBhd2FpdCByZXBvcnREZWZpbml0aW9uU2VydmljZS5nZXRDYXRlZ29yaWVzUGF0aEJ5UmVwb3J0SWQocmVwb3J0SWQpO1xuXG4gICAgICAgICAgICAgIC8vIFNldCBkZWZhdWx0IGxheW91dFxuICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID1cbiAgICAgICAgICAgICAgICByZXBvcnQubGF5b3V0cy5maW5kKChsOiBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uKSA9PiBsLmlzRGVmYXVsdCkgfHwgcmVwb3J0LmxheW91dHNbMF07XG5cbiAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgIHJlcG9ydERlZmluaXRpb246IHJlcG9ydCxcbiAgICAgICAgICAgICAgICBjdXJyZW50TGF5b3V0OiBkZWZhdWx0TGF5b3V0LFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNQYXRoOiBjYXRlZ29yaWVzUGF0aCB8fCBbXSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJDb250ZXh0OiB7fSwgLy8gUmVzZXQgY29udGV4dCB3aGVuIGxvYWRpbmcgbmV3IHJlcG9ydFxuICAgICAgICAgICAgICAgIGFsbG93RmV0Y2hEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBoYXNCZWVuRXhlY3V0ZWQ6IGZhbHNlLCAvLyBSZXNldCBleGVjdXRpb24gc3RhdGUgZm9yIG5ldyByZXBvcnRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgZXJyb3I6ICdGYWlsZWQgdG8gbG9hZCByZXBvcnQgZGVmaW5pdGlvbicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgcmVwb3J0OicsIGVycm9yKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuSWRsZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAvLyNlbmRyZWdpb25cblxuICAgICAgICAvLyNyZWdpb24gLS0tLSAgIExheW91dCBNYW5hZ2VtZW50ICAgLS0tLVxuXG4gICAgICAgIHN3aXRjaExheW91dChsYXlvdXRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgICAgIGlmICghcmVwb3J0KSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBsYXlvdXQgPSByZXBvcnQubGF5b3V0cy5maW5kKChsOiBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uKSA9PiBsLmlkID09PSBsYXlvdXRJZCk7XG4gICAgICAgICAgaWYgKGxheW91dCkge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICBjdXJyZW50TGF5b3V0OiBsYXlvdXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBEYXRhIEV4ZWN1dGlvbiAgIC0tLS1cblxuICAgICAgICBleGVjdXRlUmVwb3J0LFxuICAgICAgICBmZXRjaERhdGEsXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBGaWx0ZXIgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgICAgICB1cGRhdGVGaWx0ZXJDb250ZXh0KGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBmaWx0ZXJDb250ZXh0OiB7IC4uLnN0b3JlLmZpbHRlckNvbnRleHQoKSwgLi4uY29udGV4dCB9LFxuICAgICAgICAgICAgc2hvdWxkRXhlY3V0ZVJlcG9ydDogZmFsc2UsIC8vIFJlc2V0IGV4ZWN1dGlvbiBmbGFnIHdoZW4gZmlsdGVycyBjaGFuZ2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuXG4gICAgICAgIGNsZWFyRmlsdGVycygpOiB2b2lkIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBhbGxvd0ZldGNoRGF0YTogZmFsc2UsXG4gICAgICAgICAgICBzaG91bGRFeGVjdXRlUmVwb3J0OiBmYWxzZSxcbiAgICAgICAgICAgIGZpbHRlckNvbnRleHQ6IHt9LFxuICAgICAgICAgICAgbGFzdEFwcGxpZWRGaWx0ZXJDb250ZXh0OiBudWxsLCAvLyBSZXNldCBhcHBsaWVkIGZpbHRlcnMgd2hlbiBjbGVhcmluZ1xuICAgICAgICAgICAgaGFzQmVlbkV4ZWN1dGVkOiBmYWxzZSwgLy8gUmVzZXQgZXhlY3V0aW9uIHN0YXRlIHdoZW4gY2xlYXJpbmcgZmlsdGVyc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlc2V0RmlsdGVycygpOiB2b2lkIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBhbGxvd0ZldGNoRGF0YTogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBFeHBvcnQgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgICAgICBhc3luYyBleHBvcnRSZXBvcnQoZm9ybWF0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICAgICAgaWYgKCFsYXlvdXQ/LmV4cG9ydCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdFeHBvcnQgbm90IGNvbmZpZ3VyZWQgZm9yIGN1cnJlbnQgbGF5b3V0Jyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEV4cG9ydCBsb2dpYyB3b3VsZCBnbyBoZXJlXG4gICAgICAgICAgICAvLyBUaGlzIHdvdWxkIHR5cGljYWxseSBjYWxsIGEgZGlmZmVyZW50IGNvbW1hbmQgZm9yIGV4cG9ydFxuICAgICAgICAgICAgY29uc29sZS5sb2coYEV4cG9ydGluZyByZXBvcnQgaW4gJHtmb3JtYXR9IGZvcm1hdGApO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBleHBvcnRpbmcgcmVwb3J0OicsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBVdGlsaXR5IE1ldGhvZHMgICAtLS0tXG5cbiAgICAgICAgcmVmcmVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICByZXR1cm4gZXhlY3V0ZVJlcG9ydCgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNsZWFyRXJyb3IoKTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2xlYXJFeGVjdXRpb25TdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBoYXNCZWVuRXhlY3V0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgYWxsb3dGZXRjaERhdGE6IGZhbHNlLFxuICAgICAgICAgICAgc2hvdWxkRXhlY3V0ZVJlcG9ydDogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FuY2VsKCk6IHZvaWQge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5JZGxlLFxuICAgICAgICAgICAgaGFzQmVlbkV4ZWN1dGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vVE9ETzogQ2FuY2VsIHRoZSByZXBvcnQgZXhlY3V0aW9uXG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgcmVwb3J0RGVmaW5pdGlvbjogbnVsbCxcbiAgICAgICAgICAgIGN1cnJlbnRMYXlvdXQ6IG51bGwsXG4gICAgICAgICAgICBmaWx0ZXJDb250ZXh0OiB7fSxcbiAgICAgICAgICAgIGFsbG93RmV0Y2hEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3VsZEV4ZWN1dGVSZXBvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgbGFzdEFwcGxpZWRGaWx0ZXJDb250ZXh0OiBudWxsLFxuICAgICAgICAgICAgaGFzQmVlbkV4ZWN1dGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXNQYXRoOiBbXSxcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5JZGxlLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG4gICAgICB9O1xuICAgIH0sXG4gICksXG5cbiAgd2l0aEhvb2tzKChzdG9yZSwgdHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKSwgbG9jYWxlU2VydmljZSA9IGluamVjdChBWExvY2FsZVNlcnZpY2UpKSA9PiAoe1xuICAgIGFzeW5jIG9uSW5pdCgpIHtcbiAgICAgIC8vIFN1YnNjcmliZSB0byBsYW5ndWFnZSBhbmQgbG9jYWxlIGNoYW5nZXNcbiAgICAgIHRyYW5zbGF0aW9uU2VydmljZS5sYW5nQ2hhbmdlcyQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gSGFuZGxlIGxhbmd1YWdlIGNoYW5nZSBpZiBuZWVkZWRcbiAgICAgIH0pO1xuXG4gICAgICBsb2NhbGVTZXJ2aWNlLnByb2ZpbGVDaGFuZ2VkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBIYW5kbGUgbG9jYWxlIGNoYW5nZSBpZiBuZWVkZWRcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25EZXN0cm95KCkge1xuICAgICAgLy8gQ2xlYW51cCBpZiBuZWVkZWRcbiAgICB9LFxuICB9KSksXG4pO1xuIl19","import { AXBarChartComponent } from '@acorex/charts/bar-chart';\nimport { AXChartLegendComponent } from '@acorex/charts/chart-legend';\nimport { AXDonutChartComponent } from '@acorex/charts/donut-chart';\nimport { AXLineChartComponent } from '@acorex/charts/line-chart';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule, AXPPageStatus } from '@acorex/platform/layout/widget-core';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXBarChartReportMapper, AXLineChartReportMapper, AXPieChartReportMapper, } from '../../../../reports/report-mapper';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/translation\";\nimport * as i2 from \"@angular/common\";\nexport class AXPReportChartViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.AXPPageStatus = AXPPageStatus;\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Current chart layout configuration\n */\n this.chartLayout = computed(() => {\n const layout = this.vm.currentLayout();\n return layout?.layout.type === 'chart' ? layout.layout : null;\n }, ...(ngDevMode ? [{ debugName: \"chartLayout\" }] : []));\n /**\n * Chart configuration options\n */\n this.chartOptions = computed(() => {\n const chartLayout = this.chartLayout();\n return chartLayout?.options || null;\n }, ...(ngDevMode ? [{ debugName: \"chartOptions\" }] : []));\n /**\n * Chart type for rendering\n */\n this.chartType = computed(() => {\n const options = this.chartOptions();\n return options?.chartType || 'bar';\n }, ...(ngDevMode ? [{ debugName: \"chartType\" }] : []));\n /**\n * Data mapping configuration\n */\n this.dataMapping = computed(() => {\n const options = this.chartOptions();\n return options?.dataMapping || null;\n }, ...(ngDevMode ? [{ debugName: \"dataMapping\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to fetch chart data when conditions are met\n */\n this.#fetchData = effect(() => {\n if (this.vm.allowFetchData() && this.vm.shouldExecuteReport() && this.chartOptions()) {\n this.vm.fetchData().then((data) => {\n const raw = ((data?.data).data ?? {});\n switch (this.chartType()) {\n case 'bar': {\n const v = AXBarChartReportMapper(raw);\n this.barChartData.set(v);\n break;\n }\n case 'doughnut': {\n const v = AXPieChartReportMapper(raw);\n this.donutChartData.set(v);\n break;\n }\n case 'line':\n default: {\n const v = AXLineChartReportMapper(raw);\n this.lineChartData.set(v);\n break;\n }\n }\n });\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n this.legendOptions = signal({\n mode: 'vertical',\n }, ...(ngDevMode ? [{ debugName: \"legendOptions\" }] : []));\n this.barChartData = signal([], ...(ngDevMode ? [{ debugName: \"barChartData\" }] : []));\n this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"barChartOptions\" }] : []));\n this.donutChartData = signal([], ...(ngDevMode ? [{ debugName: \"donutChartData\" }] : []));\n this.donutChartOptions = computed(() => {\n return {\n totalLabel: 'Total',\n showTooltip: true,\n showDataLabels: this.donutChartData().length <= 10,\n };\n }, ...(ngDevMode ? [{ debugName: \"donutChartOptions\" }] : []));\n this.lineChartData = signal([], ...(ngDevMode ? [{ debugName: \"lineChartData\" }] : []));\n this.lineChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"lineChartOptions\" }] : []));\n /**\n * Check if bar chart data has items\n */\n this.hasBarChartData = computed(() => {\n const data = this.barChartData();\n return Array.isArray(data) && data.length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasBarChartData\" }] : []));\n /**\n * Check if donut chart data has items\n */\n this.hasDonutChartData = computed(() => {\n const data = this.donutChartData();\n return Array.isArray(data) && data.length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasDonutChartData\" }] : []));\n /**\n * Check if line chart data has items\n */\n this.hasLineChartData = computed(() => {\n const data = this.lineChartData();\n return Array.isArray(data) && data.length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasLineChartData\" }] : []));\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to fetch chart data when conditions are met\n */\n #fetchData;\n //#endregion\n //#region ---- Helper Methods ----\n /**\n * Check if chart is ready to render\n */\n isChartReady() {\n return !!(this.chartOptions() && this.dataMapping());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportChartViewComponent, isStandalone: true, selector: \"axp-report-chart-view\", host: { classAttribute: \"axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col\" }, ngImport: i0, template: \"<ng-container *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\\\">\\n <div class=\\\"ax-spinner ax-spin ax-w-10 ax-h-10\\\"></div>\\n <div class=\\\"__loading-text ax-text-sm ax-opacity-70\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message\\n mode=\\\"error\\\"\\n icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\"\\n >\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <section\\n class=\\\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\\\"\\n >\\n @if (chartLayout()?.header) {\\n <header\\n class=\\\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\\\"\\n >\\n <h3 class=\\\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\\\">\\n {{ chartLayout()?.header?.title }}\\n </h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\\\">\\n {{ '@general:common.date.today' | translate | async }}\\n </div>\\n }\\n </header>\\n }\\n\\n <div class=\\\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\\\">\\n <div\\n class=\\\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\\\"\\n [class]=\\\"\\n legendOptions().mode === 'horizontal'\\n ? 'ax-flex-col ax-gap-4'\\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\\n \\\"\\n >\\n @switch (chartType()) {\\n @case ('bar') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-bar-chart #barChart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n @if (hasBarChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"barChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n @case ('doughnut') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-donut-chart #donutChart [data]=\\\"donutChartData()\\\" [options]=\\\"donutChartOptions()\\\"></ax-donut-chart>\\n </div>\\n @if (hasDonutChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"donutChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n @default {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-line-chart #lineChart [data]=\\\"lineChartData()\\\" [options]=\\\"lineChartOptions()\\\"></ax-line-chart>\\n </div>\\n @if (hasLineChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"lineChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n }\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <footer class=\\\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </footer>\\n }\\n </section>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\"\\n >\\n </axp-state-message>\\n }\\n</ng-container>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i1.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: AXBarChartComponent, selector: \"ax-bar-chart\", inputs: [\"data\", \"options\"], outputs: [\"barClick\"] }, { kind: \"component\", type: AXDonutChartComponent, selector: \"ax-donut-chart\", inputs: [\"data\", \"options\"], outputs: [\"segmentClick\", \"segmentHover\"] }, { kind: \"component\", type: AXLineChartComponent, selector: \"ax-line-chart\", inputs: [\"data\", \"options\"], outputs: [\"pointClick\"] }, { kind: \"component\", type: AXChartLegendComponent, selector: \"ax-chart-legend\", inputs: [\"chart\", \"options\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"itemMouseLeave\"] }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i1.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportChartViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-chart-view', imports: [\n CommonModule,\n AXTranslationModule,\n AXPWidgetCoreModule,\n AXBarChartComponent,\n AXDonutChartComponent,\n AXLineChartComponent,\n AXChartLegendComponent,\n AXPStateMessageComponent,\n ], host: {\n class: 'axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col',\n }, changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ng-container *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\\\">\\n <div class=\\\"ax-spinner ax-spin ax-w-10 ax-h-10\\\"></div>\\n <div class=\\\"__loading-text ax-text-sm ax-opacity-70\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message\\n mode=\\\"error\\\"\\n icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\"\\n >\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <section\\n class=\\\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\\\"\\n >\\n @if (chartLayout()?.header) {\\n <header\\n class=\\\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\\\"\\n >\\n <h3 class=\\\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\\\">\\n {{ chartLayout()?.header?.title }}\\n </h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\\\">\\n {{ '@general:common.date.today' | translate | async }}\\n </div>\\n }\\n </header>\\n }\\n\\n <div class=\\\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\\\">\\n <div\\n class=\\\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\\\"\\n [class]=\\\"\\n legendOptions().mode === 'horizontal'\\n ? 'ax-flex-col ax-gap-4'\\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\\n \\\"\\n >\\n @switch (chartType()) {\\n @case ('bar') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-bar-chart #barChart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n @if (hasBarChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"barChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n @case ('doughnut') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-donut-chart #donutChart [data]=\\\"donutChartData()\\\" [options]=\\\"donutChartOptions()\\\"></ax-donut-chart>\\n </div>\\n @if (hasDonutChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"donutChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n @default {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\"\\n >\\n <ax-line-chart #lineChart [data]=\\\"lineChartData()\\\" [options]=\\\"lineChartOptions()\\\"></ax-line-chart>\\n </div>\\n @if (hasLineChartData()) {\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"lineChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n }\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <footer class=\\\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </footer>\\n }\\n </section>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\"\\n >\\n </axp-state-message>\\n }\\n</ng-container>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNoYXJ0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcmVwb3J0LXZpZXdlci92aWV3cy9yZXBvcnQtY2hhcnQtdmlldy9yZXBvcnQtY2hhcnQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC1jaGFydC12aWV3L3JlcG9ydC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBcUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sNkJBQTZCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBdUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJB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SDs7V0FFRztRQUNnQixxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2xELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQyw0REFBQyxDQUFDO0tBR0o7SUF6RkMsWUFBWTtJQUVaLCtCQUErQjtJQUUvQjs7T0FFRztJQUNILFVBQVUsQ0F3QlA7SUFFSCxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOztPQUVHO0lBQ08sWUFBWTtRQUNwQixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDOytHQXBGVSwyQkFBMkI7bUdBQTNCLDJCQUEyQiw0S0NuQ3hDLHd3SkEwR0EsMkNEdEZJLFlBQVksOEJBQ1osbUJBQW1CLDhHQUNuQixtQkFBbUIsK0JBQ25CLG1CQUFtQiw2R0FDbkIscUJBQXFCLG1JQUNyQixvQkFBb0IsZ0hBQ3BCLHNCQUFzQixzSkFDdEIsd0JBQXdCOzs0RkFRZiwyQkFBMkI7a0JBbEJ2QyxTQUFTOytCQUNFLHVCQUF1QixXQUN4Qjt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLHdCQUF3QjtxQkFDekIsUUFDSzt3QkFDSixLQUFLLEVBQUUsK0RBQStEO3FCQUN2RSxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFyQ2hhcnRDb21wb25lbnQsIEFYQmFyQ2hhcnRPcHRpb24sIEFYQmFyQ2hhcnRWYWx1ZSB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2Jhci1jaGFydCc7XG5pbXBvcnQgeyBBWENoYXJ0TGVnZW5kQ29tcG9uZW50LCBBWENoYXJ0TGVnZW5kT3B0aW9ucyB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2NoYXJ0LWxlZ2VuZCc7XG5pbXBvcnQgeyBBWERvbnV0Q2hhcnRDb21wb25lbnQsIEFYRG9udXRDaGFydFZhbHVlIH0gZnJvbSAnQGFjb3JleC9jaGFydHMvZG9udXQtY2hhcnQnO1xuaW1wb3J0IHsgQVhMaW5lQ2hhcnRDb21wb25lbnQsIEFYTGluZUNoYXJ0T3B0aW9uLCBBWExpbmVDaGFydFZhbHVlIH0gZnJvbSAnQGFjb3JleC9jaGFydHMvbGluZS1jaGFydCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVNb2R1bGUsIEFYUFBhZ2VTdGF0dXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhCYXJDaGFydFJlcG9ydE1hcHBlcixcbiAgQVhMaW5lQ2hhcnRSZXBvcnRNYXBwZXIsXG4gIEFYUGllQ2hhcnRSZXBvcnRNYXBwZXIsXG59IGZyb20gJy4uLy4uLy4uLy4uL3JlcG9ydHMvcmVwb3J0LW1hcHBlcic7XG5pbXBvcnQgeyBBWFBSZXBvcnRDaGFydExheW91dCB9IGZyb20gJy4uLy4uLy4uLy4uL3JlcG9ydHMvcmVwb3J0LnR5cGVzJztcbmltcG9ydCB7IEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3JlcG9ydC12aWV3ZXIudmlld21vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLXJlcG9ydC1jaGFydC12aWV3JyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gICAgQVhCYXJDaGFydENvbXBvbmVudCxcbiAgICBBWERvbnV0Q2hhcnRDb21wb25lbnQsXG4gICAgQVhMaW5lQ2hhcnRDb21wb25lbnQsXG4gICAgQVhDaGFydExlZ2VuZENvbXBvbmVudCxcbiAgICBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQsXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2F4cC1yZXBvcnQtY2hhcnQtdmlldyBheC13LWZ1bGwgYXgtaC1mdWxsIGF4LWZsZXggYXgtZmxleC1jb2wnLFxuICB9LFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LWNoYXJ0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhQUmVwb3J0Q2hhcnRWaWV3Q29tcG9uZW50IHtcbiAgLy8jcmVnaW9uIC0tLS0gICBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBBWFBQYWdlU3RhdHVzID0gQVhQUGFnZVN0YXR1cztcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbXB1dGVkIFByb3BlcnRpZXMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgY2hhcnQgbGF5b3V0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFydExheW91dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsYXlvdXQgPSB0aGlzLnZtLmN1cnJlbnRMYXlvdXQoKTtcbiAgICByZXR1cm4gbGF5b3V0Py5sYXlvdXQudHlwZSA9PT0gJ2NoYXJ0JyA/IChsYXlvdXQubGF5b3V0IGFzIEFYUFJlcG9ydENoYXJ0TGF5b3V0KSA6IG51bGw7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBDaGFydCBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFydE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2hhcnRMYXlvdXQgPSB0aGlzLmNoYXJ0TGF5b3V0KCk7XG4gICAgcmV0dXJuIGNoYXJ0TGF5b3V0Py5vcHRpb25zIHx8IG51bGw7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBDaGFydCB0eXBlIGZvciByZW5kZXJpbmdcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFydFR5cGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY2hhcnRPcHRpb25zKCk7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmNoYXJ0VHlwZSB8fCAnYmFyJztcbiAgfSk7XG5cbiAgLyoqXG4gICAqIERhdGEgbWFwcGluZyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YU1hcHBpbmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY2hhcnRPcHRpb25zKCk7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmRhdGFNYXBwaW5nIHx8IG51bGw7XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRWZmZWN0cyAgIC0tLS1cblxuICAvKipcbiAgICogRWZmZWN0IHRvIGZldGNoIGNoYXJ0IGRhdGEgd2hlbiBjb25kaXRpb25zIGFyZSBtZXRcbiAgICovXG4gICNmZXRjaERhdGEgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLnZtLmFsbG93RmV0Y2hEYXRhKCkgJiYgdGhpcy52bS5zaG91bGRFeGVjdXRlUmVwb3J0KCkgJiYgdGhpcy5jaGFydE9wdGlvbnMoKSkge1xuICAgICAgdGhpcy52bS5mZXRjaERhdGEoKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9ICgoKGRhdGE/LmRhdGEgYXMgYW55KS5kYXRhIGFzIGFueSkgPz8ge30pIGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gICAgICAgIHN3aXRjaCAodGhpcy5jaGFydFR5cGUoKSkge1xuICAgICAgICAgIGNhc2UgJ2Jhcic6IHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSBBWEJhckNoYXJ0UmVwb3J0TWFwcGVyKHJhdyk7XG4gICAgICAgICAgICB0aGlzLmJhckNoYXJ0RGF0YS5zZXQodik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnZG91Z2hudXQnOiB7XG4gICAgICAgICAgICBjb25zdCB2ID0gQVhQaWVDaGFydFJlcG9ydE1hcHBlcihyYXcpO1xuICAgICAgICAgICAgdGhpcy5kb251dENoYXJ0RGF0YS5zZXQodik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnbGluZSc6XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgdiA9IEFYTGluZUNoYXJ0UmVwb3J0TWFwcGVyKHJhdyk7XG4gICAgICAgICAgICB0aGlzLmxpbmVDaGFydERhdGEuc2V0KHYpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIE1ldGhvZHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGNoYXJ0IGlzIHJlYWR5IHRvIHJlbmRlclxuICAgKi9cbiAgcHJvdGVjdGVkIGlzQ2hhcnRSZWFkeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5jaGFydE9wdGlvbnMoKSAmJiB0aGlzLmRhdGFNYXBwaW5nKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxlZ2VuZE9wdGlvbnMgPSBzaWduYWw8QVhDaGFydExlZ2VuZE9wdGlvbnM+KHtcbiAgICBtb2RlOiAndmVydGljYWwnLFxuICB9KTtcblxuICBwcm90ZWN0ZWQgYmFyQ2hhcnREYXRhID0gc2lnbmFsPEFYQmFyQ2hhcnRWYWx1ZT4oW10pO1xuICBwcm90ZWN0ZWQgYmFyQ2hhcnRPcHRpb25zID0gc2lnbmFsPEFYQmFyQ2hhcnRPcHRpb24+KHt9KTtcblxuICBwcm90ZWN0ZWQgZG9udXRDaGFydERhdGEgPSBzaWduYWw8QVhEb251dENoYXJ0VmFsdWU+KFtdKTtcblxuICBwcm90ZWN0ZWQgZG9udXRDaGFydE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsTGFiZWw6ICdUb3RhbCcsXG4gICAgICBzaG93VG9vbHRpcDogdHJ1ZSxcbiAgICAgIHNob3dEYXRhTGFiZWxzOiB0aGlzLmRvbnV0Q2hhcnREYXRhKCkubGVuZ3RoIDw9IDEwLFxuICAgIH07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBsaW5lQ2hhcnREYXRhID0gc2lnbmFsPEFYTGluZUNoYXJ0VmFsdWU+KFtdKTtcbiAgcHJvdGVjdGVkIGxpbmVDaGFydE9wdGlvbnMgPSBzaWduYWw8QVhMaW5lQ2hhcnRPcHRpb24+KHt9KTtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYmFyIGNoYXJ0IGRhdGEgaGFzIGl0ZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzQmFyQ2hhcnREYXRhID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJhckNoYXJ0RGF0YSgpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEpICYmIGRhdGEubGVuZ3RoID4gMDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGRvbnV0IGNoYXJ0IGRhdGEgaGFzIGl0ZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzRG9udXRDaGFydERhdGEgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZG9udXRDaGFydERhdGEoKTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRhKSAmJiBkYXRhLmxlbmd0aCA+IDA7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBsaW5lIGNoYXJ0IGRhdGEgaGFzIGl0ZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzTGluZUNoYXJ0RGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5saW5lQ2hhcnREYXRhKCk7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YSkgJiYgZGF0YS5sZW5ndGggPiAwO1xuICB9KTtcblxuICAvLyNlbmRyZWdpb25cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gIEBpZiAodm0uc3RhdHVzKCkgPT09IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZykge1xuICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiX19sb2FkaW5nIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWgtZnVsbCBheC1nYXAtNiBheC1wLThcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1zcGlubmVyIGF4LXNwaW4gYXgtdy0xMCBheC1oLTEwXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiX19sb2FkaW5nLXRleHQgYXgtdGV4dC1zbSBheC1vcGFjaXR5LTcwXCI+XG4gICAgICAgIHt7IHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQubWVzc2FnZXMubG9hZGluZycpIHwgYXN5bmMgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9IEBlbHNlIGlmICh2bS5zdGF0dXMoKSA9PT0gQVhQUGFnZVN0YXR1cy5FcnJvcikge1xuICAgIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gICAgPGF4cC1zdGF0ZS1tZXNzYWdlXG4gICAgICBtb2RlPVwiZXJyb3JcIlxuICAgICAgaWNvbj1cImZhLWxpZ2h0IGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCJcbiAgICAgIFt0aXRsZV09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtdGl0bGUnXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJ2bS5lcnJvcigpIHx8ICdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5tZXNzYWdlcy5lcnJvci5mZXRjaC1kZXNjcmlwdGlvbidcIlxuICAgID5cbiAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICB9IEBlbHNlIGlmIChpc0NoYXJ0UmVhZHkoKSkge1xuICAgIDwhLS0gQ2hhcnQgQ29udGVudCAtLT5cbiAgICA8c2VjdGlvblxuICAgICAgY2xhc3M9XCJfX2NoYXJ0LWNvbnRhaW5lciBheC1vdmVyZmxvdy1hdXRvIG1kOmF4LW92ZXJmbG93LWhpZGRlbiBheC1yb3VuZGVkLTJ4bCBheC1ib3JkZXIgYXgtaC1mdWxsIGF4LWZsZXggYXgtZmxleC1jb2xcIlxuICAgID5cbiAgICAgIEBpZiAoY2hhcnRMYXlvdXQoKT8uaGVhZGVyKSB7XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICBjbGFzcz1cIl9fY2hhcnQtaGVhZGVyIGF4LXAtNCBtZDpheC1wLTYgYXgtYm9yZGVyLWIgYXgtZmxleCBheC1mbGV4LWNvbCBzbTpheC1mbGV4LXJvdyBheC1nYXAtMiBzbTpheC1pdGVtcy1jZW50ZXIgc206YXgtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoMyBjbGFzcz1cIl9fY2hhcnQtdGl0bGUgYXgtdGV4dC1iYXNlIG1kOmF4LXRleHQtbGcgYXgtZm9udC1zZW1pYm9sZCBheC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAge3sgY2hhcnRMYXlvdXQoKT8uaGVhZGVyPy50aXRsZSB9fVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgQGlmIChjaGFydExheW91dCgpPy5oZWFkZXI/LnNob3dEYXRlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19jaGFydC1kYXRlIGF4LXRleHQteHMgbWQ6YXgtdGV4dC1zbSBheC1vcGFjaXR5LTcwIGF4LWZvbnQtbWVkaXVtIGF4LWZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAge3sgJ0BnZW5lcmFsOmNvbW1vbi5kYXRlLnRvZGF5JyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiX19jaGFydC1ib2R5IGF4LWZsZXgtMSBheC1wLTMgbWQ6YXgtcC02XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIl9fY2hhcnQtd3JhcHBlciBheC1oLWZ1bGwgYXgtaXRlbXMtY2VudGVyIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTQgbGc6YXgtZ2FwLTZcIlxuICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgIGxlZ2VuZE9wdGlvbnMoKS5tb2RlID09PSAnaG9yaXpvbnRhbCdcbiAgICAgICAgICAgICAgPyAnYXgtZmxleC1jb2wgYXgtZ2FwLTQnXG4gICAgICAgICAgICAgIDogJ2F4LWZsZXgtY29sIGxnOmF4LWZsZXgtcm93IGF4LWdhcC00IGxnOmF4LWdhcC02J1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICBAc3dpdGNoIChjaGFydFR5cGUoKSkge1xuICAgICAgICAgICAgQGNhc2UgKCdiYXInKSB7XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIl9fY2hhcnQtY29udGVudCBheC1mbGV4LTEgYXgtaC1mdWxsIGF4LW1pbi1oLVsyNTBweF0gbWQ6YXgtbWluLWgtWzMwMHB4XSBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC13LWZ1bGwgYXgtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxheC1iYXItY2hhcnQgI2JhckNoYXJ0IFtkYXRhXT1cImJhckNoYXJ0RGF0YSgpXCIgW29wdGlvbnNdPVwiYmFyQ2hhcnRPcHRpb25zKClcIj48L2F4LWJhci1jaGFydD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoaGFzQmFyQ2hhcnREYXRhKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19jaGFydC1sZWdlbmQgYXgtdy1maXQgYXgtZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgICAgICAgICAgPGF4LWNoYXJ0LWxlZ2VuZCBbb3B0aW9uc109XCJsZWdlbmRPcHRpb25zKClcIiBbY2hhcnRdPVwiYmFyQ2hhcnRcIj48L2F4LWNoYXJ0LWxlZ2VuZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdkb3VnaG51dCcpIHtcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiX19jaGFydC1jb250ZW50IGF4LWZsZXgtMSBheC1oLWZ1bGwgYXgtbWluLWgtWzI1MHB4XSBtZDpheC1taW4taC1bMzAwcHhdIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LXctZnVsbCBheC1vdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGF4LWRvbnV0LWNoYXJ0ICNkb251dENoYXJ0IFtkYXRhXT1cImRvbnV0Q2hhcnREYXRhKClcIiBbb3B0aW9uc109XCJkb251dENoYXJ0T3B0aW9ucygpXCI+PC9heC1kb251dC1jaGFydD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoaGFzRG9udXRDaGFydERhdGEoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWxlZ2VuZCBheC13LWZpdCBheC1mbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtY2hhcnQtbGVnZW5kIFtvcHRpb25zXT1cImxlZ2VuZE9wdGlvbnMoKVwiIFtjaGFydF09XCJkb251dENoYXJ0XCI+PC9heC1jaGFydC1sZWdlbmQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiX19jaGFydC1jb250ZW50IGF4LWZsZXgtMSBheC1oLWZ1bGwgYXgtbWluLWgtWzI1MHB4XSBtZDpheC1taW4taC1bMzAwcHhdIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LXctZnVsbCBheC1vdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGF4LWxpbmUtY2hhcnQgI2xpbmVDaGFydCBbZGF0YV09XCJsaW5lQ2hhcnREYXRhKClcIiBbb3B0aW9uc109XCJsaW5lQ2hhcnRPcHRpb25zKClcIj48L2F4LWxpbmUtY2hhcnQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGhhc0xpbmVDaGFydERhdGEoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWxlZ2VuZCBheC13LWZpdCBheC1mbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtY2hhcnQtbGVnZW5kIFtvcHRpb25zXT1cImxlZ2VuZE9wdGlvbnMoKVwiIFtjaGFydF09XCJsaW5lQ2hhcnRcIj48L2F4LWNoYXJ0LWxlZ2VuZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChjaGFydExheW91dCgpPy5mb290ZXIpIHtcbiAgICAgICAgPGZvb3RlciBjbGFzcz1cIl9fY2hhcnQtZm9vdGVyIGF4LXAtNCBtZDpheC1wLTYgYXgtYm9yZGVyLXRcIj5cbiAgICAgICAgICBAaWYgKGNoYXJ0TGF5b3V0KCk/LmZvb3Rlcj8uY3VzdG9tSHRtbCkge1xuICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImNoYXJ0TGF5b3V0KCk/LmZvb3Rlcj8uY3VzdG9tSHRtbFwiPjwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9mb290ZXI+XG4gICAgICB9XG4gICAgPC9zZWN0aW9uPlxuICB9IEBlbHNlIHtcbiAgICA8IS0tIE5vIENvbmZpZ3VyYXRpb24gU3RhdGUgLS0+XG4gICAgPGF4cC1zdGF0ZS1tZXNzYWdlXG4gICAgICBpY29uPVwiZmEtbGlnaHQgZmEtY2hhcnQtbGluZVwiXG4gICAgICBbdGl0bGVdPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQuZW1wdHktc3RhdGVzLm5vLWNvbmZpZy50aXRsZSdcIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIidAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5jb21wb25lbnRzLmNoYXJ0LmVtcHR5LXN0YXRlcy5uby1jb25maWcuZGVzY3JpcHRpb24nXCJcbiAgICA+XG4gICAgPC9heHAtc3RhdGUtbWVzc2FnZT5cbiAgfVxuPC9uZy1jb250YWluZXI+XG4iXX0=","import { AXDataTableModule } from '@acorex/components/data-table';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { applySystemActionDefault, getSystemActions } from '@acorex/platform/core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/data-table\";\nimport * as i2 from \"@acorex/platform/layout/widget-core\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\nexport class AXPReportTableViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.commandService = inject(AXPCommandService);\n this.grid = viewChild('grid', ...(ngDevMode ? [{ debugName: \"grid\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when report is executed\n */\n this.#fetchData = effect(() => {\n if (this.grid() && this.vm.allowFetchData() && this.vm.shouldExecuteReport()) {\n this.grid()?.refresh();\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n //#endregion\n //#region ---- Computed Properties ----\n this.layout = computed(() => {\n return this.vm.currentLayout()?.layout;\n }, ...(ngDevMode ? [{ debugName: \"layout\" }] : []));\n this.dataSource = new AXDataSource({\n load: async (e) => {\n if (!this.vm.allowFetchData()) {\n return { items: [], total: 0 };\n }\n const result = await this.vm.fetchData(e);\n if (!result?.data || result.data.type !== 'table') {\n console.error('invalid table result');\n return { items: [], total: 0 };\n }\n ;\n let items = result.data.items ?? [];\n let total = result.data.total || 0;\n return { items, total };\n },\n pageSize: 10,\n key: 'id'\n });\n this.columns = computed(() => {\n return this.layout().columns?.map((col) => ({\n field: col.field,\n title: col.title || col.field,\n width: col.width || '150px',\n visible: col.visible !== false,\n align: col.align || 'left',\n widget: { ...col.widget, path: col.field }\n })) || [];\n }, ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n this.paginationEnabled = computed(() => {\n return this.layout().options?.pagination !== false;\n }, ...(ngDevMode ? [{ debugName: \"paginationEnabled\" }] : []));\n this.primaryRowAction = computed(() => {\n return this.layout().actions?.filter(a => a.priority === 'primary')?.map(a => this.convertToRowCommandItem(a)) || [];\n }, ...(ngDevMode ? [{ debugName: \"primaryRowAction\" }] : []));\n this.hasPrimaryRowAction = computed(() => {\n return this.primaryRowAction().length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasPrimaryRowAction\" }] : []));\n this.secondaryRowAction = computed(() => {\n return this.layout().actions?.filter(a => a.priority === 'secondary')?.map(a => this.convertToRowCommandItem(a)) || [];\n }, ...(ngDevMode ? [{ debugName: \"secondaryRowAction\" }] : []));\n this.hasSecondaryRowAction = computed(() => {\n return this.secondaryRowAction().length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasSecondaryRowAction\" }] : []));\n this.defaultRowAction = computed(() => {\n const defaultAction = this.layout().actions?.find(a => a.default);\n if (!defaultAction) {\n return null;\n }\n return this.convertToRowCommandItem(defaultAction);\n }, ...(ngDevMode ? [{ debugName: \"defaultRowAction\" }] : []));\n }\n //#endregion\n //#region ---- Event Handlers ----\n handleRowClick(event) {\n this.handleRowAction(event.name, event.data);\n }\n handleDbRowClick(event) {\n if (this.defaultRowAction()) {\n this.handleRowAction(this.defaultRowAction().name, event.data);\n }\n }\n handleRowAction(name, data) {\n this.commandService.execute(name, data);\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when report is executed\n */\n #fetchData;\n //#endregion\n //#region ---- Helpers ----\n convertToRowCommandItem(action) {\n const systemAction = getSystemActions(action.type);\n if (!systemAction) {\n return {\n icon: action.icon ?? 'fa-light fa-eye',\n iconOnly: action.iconOnly ?? true,\n text: action.title,\n name: action.command?.name,\n divided: action.break,\n color: action.color,\n };\n }\n const defaultAction = applySystemActionDefault(action, systemAction.key);\n return {\n icon: defaultAction.icon ?? 'fa-light fa-eye',\n text: defaultAction.title,\n name: action.command?.name,\n divided: defaultAction.break,\n color: defaultAction.color,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportTableViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportTableViewComponent, isStandalone: true, selector: \"axp-report-table-view\", viewQueries: [{ propertyName: \"grid\", first: true, predicate: [\"grid\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<ax-data-table\\n #grid\\n [dataSource]=\\\"dataSource\\\"\\n [paging]=\\\"true\\\"\\n (onRowDbClick)=\\\"handleDbRowClick($event)\\\"\\n class=\\\"ax-flex-1\\\"\\n>\\n <!-- Dynamic columns based on configuration -->\\n <ax-index-column fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n @if (vm.canSelectRows()) {\\n <ax-select-column fixed=\\\"start\\\" [width]=\\\"'50px'\\\"></ax-select-column>\\n }\\n @for (column of columns(); track column.field) {\\n @if (column.visible) {\\n <axp-widget-column-renderer\\n [customWidth]=\\\"column.width + 'px'\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n [node]=\\\"column.widget!\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (hasPrimaryRowAction()) {\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"primaryRowAction().length * 70 + 'px'\\\"\\n [items]=\\\"primaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-command-column>\\n }\\n @if (hasSecondaryRowAction()) {\\n <ax-dropdown-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"secondaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-dropdown-command-column>\\n }\\n</ax-data-table>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXDataTableModule }, { kind: \"component\", type: i1.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"rowDetailsTemplate\", \"rowTemplate\", \"emptyTemplate\", \"noDataTemplate\", \"alternative\", \"showHeader\", \"fixedHeader\", \"showFooter\", \"fixedFooter\", \"itemHeight\", \"allowReordering\", \"paging\", \"fetchDataMode\", \"loading\", \"focusedRow\"], outputs: [\"selectedRowsChange\", \"focusedRowChange\", \"onRowClick\", \"onRowDbClick\", \"onColumnsOrderChanged\", \"onColumnSizeChanged\", \"onPageChanged\"] }, { kind: \"component\", type: i1.AXRowIndexColumnComponent, selector: \"ax-index-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"padZero\"] }, { kind: \"component\", type: i1.AXRowSelectColumnComponent, selector: \"ax-select-column\", inputs: [\"width\", \"caption\", \"fixed\"] }, { kind: \"component\", type: i1.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: i1.AXRowDropdownCommandColumnComponent, selector: \"ax-dropdown-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"emptyStateTemplate\", \"emptyStateText\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i2.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportTableViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-table-view', standalone: true, imports: [\n CommonModule,\n AXDataTableModule,\n AXLoadingModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPWidgetCoreModule\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<ax-data-table\\n #grid\\n [dataSource]=\\\"dataSource\\\"\\n [paging]=\\\"true\\\"\\n (onRowDbClick)=\\\"handleDbRowClick($event)\\\"\\n class=\\\"ax-flex-1\\\"\\n>\\n <!-- Dynamic columns based on configuration -->\\n <ax-index-column fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n @if (vm.canSelectRows()) {\\n <ax-select-column fixed=\\\"start\\\" [width]=\\\"'50px'\\\"></ax-select-column>\\n }\\n @for (column of columns(); track column.field) {\\n @if (column.visible) {\\n <axp-widget-column-renderer\\n [customWidth]=\\\"column.width + 'px'\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n [node]=\\\"column.widget!\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (hasPrimaryRowAction()) {\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"primaryRowAction().length * 70 + 'px'\\\"\\n [items]=\\\"primaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-command-column>\\n }\\n @if (hasSecondaryRowAction()) {\\n <ax-dropdown-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"secondaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-dropdown-command-column>\\n }\\n</ax-data-table>\\n\" }]\n }], propDecorators: { grid: [{ type: i0.ViewChild, args: ['grid', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXRhYmxlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcmVwb3J0LXZpZXdlci92aWV3cy9yZXBvcnQtdGFibGUtdmlldy9yZXBvcnQtdGFibGUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC10YWJsZS12aWV3L3JlcG9ydC10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsaUJBQWlCLEVBQXVFLE1BQU0sK0JBQStCLENBQUM7QUFDN0osT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBdUIsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEVBQXVCLHdCQUF3QixFQUFFLGdCQUFn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RGF0YVRhYmxlUm93RGJDbGljaywgQVhSb3dDb21tYW5kSXRlbSwgQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZU1vZHVsZSwgQVhQV2lkZ2V0Q29sdW1uTm9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3JlcG9ydC12aWV3ZXIudmlld21vZGVsJztcbmltcG9ydCB7IEFYUFJlcG9ydENvbHVtbiwgQVhQUmVwb3J0VGFibGVMYXlvdXQsIEFYUFJlcG9ydFRhYmxlTGF5b3V0Um93QWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vcmVwb3J0cyc7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYRGF0YVNvdXJjZVF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYUFN5c3RlbUFjdGlvblR5cGUsIGFwcGx5U3lzdGVtQWN0aW9uRGVmYXVsdCwgZ2V0U3lzdGVtQWN0aW9ucyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBDb21tYW5kU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtdGFibGUtdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhEYXRhVGFibGVNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQV2lkZ2V0Q29yZU1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQUmVwb3J0VGFibGVWaWV3Q29tcG9uZW50IHtcblxuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tbWFuZFNlcnZpY2UgPSBpbmplY3QoQVhQQ29tbWFuZFNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JpZCA9IHZpZXdDaGlsZDxBWERhdGFUYWJsZUNvbXBvbmVudD4oJ2dyaWQnKTtcblxuICAvLyNlbmRyZWdpb25cblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0NsaWNrKGV2ZW50OiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlUm93QWN0aW9uKGV2ZW50Lm5hbWUsIGV2ZW50LmRhdGEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURiUm93Q2xpY2soZXZlbnQ6IEFYRGF0YVRhYmxlUm93RGJDbGljayk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlZmF1bHRSb3dBY3Rpb24oKSkge1xuICAgICAgdGhpcy5oYW5kbGVSb3dBY3Rpb24odGhpcy5kZWZhdWx0Um93QWN0aW9uKCkhLm5hbWUsIGV2ZW50LmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dBY3Rpb24obmFtZTogc3RyaW5nLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1hbmRTZXJ2aWNlLmV4ZWN1dGUobmFtZSwgZGF0YSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEVmZmVjdHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEVmZmVjdCB0byBoYW5kbGUgZGF0YSBmZXRjaGluZyB3aGVuIHJlcG9ydCBpcyBleGVjdXRlZFxuICAgKi9cbiAgI2ZldGNoRGF0YSA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZ3JpZCgpICYmIHRoaXMudm0uYWxsb3dGZXRjaERhdGEoKSAmJiB0aGlzLnZtLnNob3VsZEV4ZWN1dGVSZXBvcnQoKSkge1xuICAgICAgdGhpcy5ncmlkKCk/LnJlZnJlc2goKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuXG4gIHByb3RlY3RlZCByZWFkb25seSBsYXlvdXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICh0aGlzLnZtLmN1cnJlbnRMYXlvdXQoKT8ubGF5b3V0IGFzIEFYUFJlcG9ydFRhYmxlTGF5b3V0KSE7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZSh7XG4gICAgbG9hZDogYXN5bmMgKGU6IEFYRGF0YVNvdXJjZVF1ZXJ5KSA9PiB7XG4gICAgICBpZiAoIXRoaXMudm0uYWxsb3dGZXRjaERhdGEoKSkge1xuICAgICAgICByZXR1cm4geyBpdGVtczogW10sIHRvdGFsOiAwIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy52bS5mZXRjaERhdGEoZSlcbiAgICAgIGlmICghcmVzdWx0Py5kYXRhIHx8IHJlc3VsdC5kYXRhLnR5cGUgIT09ICd0YWJsZScpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignaW52YWxpZCB0YWJsZSByZXN1bHQnKTtcbiAgICAgICAgcmV0dXJuIHsgaXRlbXM6IFtdLCB0b3RhbDogMCB9XG4gICAgICB9O1xuXG4gICAgICBsZXQgaXRlbXM6IGFueVtdID0gcmVzdWx0LmRhdGEuaXRlbXMgYXMgYW55W10gPz8gW107XG4gICAgICBsZXQgdG90YWwgPSByZXN1bHQuZGF0YS50b3RhbCB8fCAwO1xuXG4gICAgICByZXR1cm4geyBpdGVtcywgdG90YWwgfTtcbiAgICB9LFxuICAgIHBhZ2VTaXplOiAxMCxcbiAgICBrZXk6ICdpZCdcbiAgfSk7XG5cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5sYXlvdXQoKS5jb2x1bW5zPy5tYXAoKGNvbDogQVhQUmVwb3J0Q29sdW1uKSA9PiAoe1xuICAgICAgZmllbGQ6IGNvbC5maWVsZCxcbiAgICAgIHRpdGxlOiBjb2wudGl0bGUgfHwgY29sLmZpZWxkLFxuICAgICAgd2lkdGg6IGNvbC53aWR0aCB8fCAnMTUwcHgnLFxuICAgICAgdmlzaWJsZTogY29sLnZpc2libGUgIT09IGZhbHNlLFxuICAgICAgYWxpZ246IGNvbC5hbGlnbiB8fCAnbGVmdCcsXG4gICAgICB3aWRnZXQ6IHsgLi4uY29sLndpZGdldCwgcGF0aDogY29sLmZpZWxkIH0gYXMgQVhQV2lkZ2V0Q29sdW1uTm9kZVxuICAgIH0pKSB8fCBbXTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2luYXRpb25FbmFibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmxheW91dCgpLm9wdGlvbnM/LnBhZ2luYXRpb24gIT09IGZhbHNlO1xuICB9KTtcblxuXG4gIHByb3RlY3RlZCByZWFkb25seSBwcmltYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQ8QVhSb3dDb21tYW5kSXRlbVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmlsdGVyKGEgPT4gYS5wcmlvcml0eSA9PT0gJ3ByaW1hcnknKT8ubWFwKGEgPT4gdGhpcy5jb252ZXJ0VG9Sb3dDb21tYW5kSXRlbShhKSkgfHwgW107XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBoYXNQcmltYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnByaW1hcnlSb3dBY3Rpb24oKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Vjb25kYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQ8QVhSb3dDb21tYW5kSXRlbVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmlsdGVyKGEgPT4gYS5wcmlvcml0eSA9PT0gJ3NlY29uZGFyeScpPy5tYXAoYSA9PiB0aGlzLmNvbnZlcnRUb1Jvd0NvbW1hbmRJdGVtKGEpKSB8fCBbXTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc1NlY29uZGFyeVJvd0FjdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWNvbmRhcnlSb3dBY3Rpb24oKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFJvd0FjdGlvbiA9IGNvbXB1dGVkPEFYUm93Q29tbWFuZEl0ZW0gfCBudWxsPigoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdEFjdGlvbiA9IHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmluZChhID0+IGEuZGVmYXVsdCk7XG4gICAgaWYgKCFkZWZhdWx0QWN0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRvUm93Q29tbWFuZEl0ZW0oZGVmYXVsdEFjdGlvbik7XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVycyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgY29udmVydFRvUm93Q29tbWFuZEl0ZW0oYWN0aW9uOiBBWFBSZXBvcnRUYWJsZUxheW91dFJvd0FjdGlvbik6IEFYUm93Q29tbWFuZEl0ZW0ge1xuICAgIGNvbnN0IHN5c3RlbUFjdGlvbiA9IGdldFN5c3RlbUFjdGlvbnMoYWN0aW9uLnR5cGUgYXMgQVhQU3lzdGVtQWN0aW9uVHlwZSk7XG4gICAgaWYgKCFzeXN0ZW1BY3Rpb24pIHtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvbjogYWN0aW9uLmljb24gPz8gJ2ZhLWxpZ2h0IGZhLWV5ZScsXG4gICAgICAgIGljb25Pbmx5OiBhY3Rpb24uaWNvbk9ubHkgPz8gdHJ1ZSxcbiAgICAgICAgdGV4dDogYWN0aW9uLnRpdGxlLFxuICAgICAgICBuYW1lOiBhY3Rpb24uY29tbWFuZD8ubmFtZSxcbiAgICAgICAgZGl2aWRlZDogYWN0aW9uLmJyZWFrLFxuICAgICAgICBjb2xvcjogYWN0aW9uLmNvbG9yLFxuICAgICAgfSBhcyBBWFJvd0NvbW1hbmRJdGVtO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0QWN0aW9uID0gYXBwbHlTeXN0ZW1BY3Rpb25EZWZhdWx0KGFjdGlvbiwgc3lzdGVtQWN0aW9uLmtleSBhcyBBWFBTeXN0ZW1BY3Rpb25UeXBlKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWNvbjogZGVmYXVsdEFjdGlvbi5pY29uID8/ICdmYS1saWdodCBmYS1leWUnLFxuICAgICAgdGV4dDogZGVmYXVsdEFjdGlvbi50aXRsZSxcbiAgICAgIG5hbWU6IGFjdGlvbi5jb21tYW5kPy5uYW1lLFxuICAgICAgZGl2aWRlZDogZGVmYXVsdEFjdGlvbi5icmVhayxcbiAgICAgIGNvbG9yOiBkZWZhdWx0QWN0aW9uLmNvbG9yLFxuICAgIH0gYXMgQVhSb3dDb21tYW5kSXRlbTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG59ICIsIjxheC1kYXRhLXRhYmxlXG4gICNncmlkXG4gIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICBbcGFnaW5nXT1cInRydWVcIlxuICAob25Sb3dEYkNsaWNrKT1cImhhbmRsZURiUm93Q2xpY2soJGV2ZW50KVwiXG4gIGNsYXNzPVwiYXgtZmxleC0xXCJcbj5cbiAgPCEtLSBEeW5hbWljIGNvbHVtbnMgYmFzZWQgb24gY29uZmlndXJhdGlvbiAtLT5cbiAgPGF4LWluZGV4LWNvbHVtbiBmaXhlZD1cInN0YXJ0XCIgW3dpZHRoXT1cIic4MHB4J1wiIFtwYWRaZXJvXT1cInRydWVcIj48L2F4LWluZGV4LWNvbHVtbj5cbiAgQGlmICh2bS5jYW5TZWxlY3RSb3dzKCkpIHtcbiAgICA8YXgtc2VsZWN0LWNvbHVtbiBmaXhlZD1cInN0YXJ0XCIgW3dpZHRoXT1cIic1MHB4J1wiPjwvYXgtc2VsZWN0LWNvbHVtbj5cbiAgfVxuICBAZm9yIChjb2x1bW4gb2YgY29sdW1ucygpOyB0cmFjayBjb2x1bW4uZmllbGQpIHtcbiAgICBAaWYgKGNvbHVtbi52aXNpYmxlKSB7XG4gICAgICA8YXhwLXdpZGdldC1jb2x1bW4tcmVuZGVyZXJcbiAgICAgICAgW2N1c3RvbVdpZHRoXT1cImNvbHVtbi53aWR0aCArICdweCdcIlxuICAgICAgICBbY2FwdGlvbl09XCIoY29sdW1uLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgIFtub2RlXT1cImNvbHVtbi53aWRnZXQhXCJcbiAgICAgID48L2F4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyPlxuICAgIH1cbiAgfVxuICBAaWYgKGhhc1ByaW1hcnlSb3dBY3Rpb24oKSkge1xuICAgIDxheC1jb21tYW5kLWNvbHVtblxuICAgICAgZml4ZWQ9XCJlbmRcIlxuICAgICAgW3dpZHRoXT1cInByaW1hcnlSb3dBY3Rpb24oKS5sZW5ndGggKiA3MCArICdweCdcIlxuICAgICAgW2l0ZW1zXT1cInByaW1hcnlSb3dBY3Rpb24oKVwiXG4gICAgICAob25JdGVtQ2xpY2spPVwiaGFuZGxlUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgPjwvYXgtY29tbWFuZC1jb2x1bW4+XG4gIH1cbiAgQGlmIChoYXNTZWNvbmRhcnlSb3dBY3Rpb24oKSkge1xuICAgIDxheC1kcm9wZG93bi1jb21tYW5kLWNvbHVtblxuICAgICAgZml4ZWQ9XCJlbmRcIlxuICAgICAgW3dpZHRoXT1cIic2MHB4J1wiXG4gICAgICBbaXRlbXNdPVwic2Vjb25kYXJ5Um93QWN0aW9uKClcIlxuICAgICAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZVJvd0NsaWNrKCRldmVudClcIlxuICAgID48L2F4LWRyb3Bkb3duLWNvbW1hbmQtY29sdW1uPlxuICB9XG48L2F4LWRhdGEtdGFibGU+XG4iXX0=","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXLoadingDialogModule, AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPDeviceService, } from '@acorex/platform/core';\nimport { AXPLayoutRendererComponent } from '@acorex/platform/layout/builder';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutStartSideComponent, } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, untracked, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AXPReportViewerViewModel } from '../report-viewer.viewmodel';\nimport { AXPReportChartViewComponent } from '../views/report-chart-view/report-chart-view.component';\nimport { AXPReportTableViewComponent } from '../views/report-table-view/report-table-view.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/core/translation\";\nimport * as i5 from \"@acorex/components/dropdown\";\nexport class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super();\n //#region ---- Dependencies ----\n this.layoutService = inject(AXPLayoutThemeService);\n this.deviceService = inject(AXPDeviceService);\n this.route = inject(ActivatedRoute);\n this.router = inject(Router);\n this.unsubscriber = inject(AXUnsubscriber);\n this.loadingDialog = inject(AXLoadingDialogService);\n this.destroyRef = inject(DestroyRef);\n //#endregion\n //#region ---- Inputs ----\n this.reportId = input(...(ngDevMode ? [undefined, { debugName: \"reportId\" }] : []));\n this.reportParameters = input({}, ...(ngDevMode ? [{ debugName: \"reportParameters\" }] : []));\n //#endregion\n //#region ---- ViewChildren ----\n this.filtersForm = viewChild('filtersForm', ...(ngDevMode ? [{ debugName: \"filtersForm\" }] : []));\n //#endregion\n //#region ---- ViewModel ----\n this.vm = inject(AXPReportViewerViewModel);\n //#endregion\n //#region ---- Effects ----\n this.watchNavigationLoading = effect(() => {\n const isBusy = this.vm.isLoading() || this.vm.isExecuting();\n untracked(() => {\n this.layoutService.setNavigationLoading(isBusy);\n //\n if (isBusy) {\n void this.openContentLoading();\n }\n else {\n this.closeContentLoading();\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"watchNavigationLoading\" }] : []));\n //#endregion\n this.loadingDialogRef = null;\n this.isDialogOpening = false;\n //#region ---- Computed Properties ----\n this.showFiltersPanel = () => this.deviceService.isLarge();\n this.showReportDisplay = () => this.deviceService.isLarge() || (this.deviceService.isSmall() && this.vm.hasBeenExecuted());\n this.baseRoutes = [this.sessionService.application?.name, 'report-management'];\n //#endregion\n //#region ---- Layout Configurations ----\n this.defaultLayout = () => ({\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 6 },\n lg: { colSpan: 12 },\n },\n });\n this.compactLayout = () => ({\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 4 },\n lg: { colSpan: 3 },\n },\n });\n this.destroyRef.onDestroy(() => this.closeContentLoading());\n }\n //#endregion\n //#region ---- Lifecycle ----\n async ngOnInit() {\n await super.ngOnInit();\n // Subscribe to route parameter changes for dynamic report loading\n this.unsubscriber.takeUntilDestroy(this.route.paramMap).subscribe(async (params) => {\n const reportId = params.get('reportId') || this.route.snapshot.queryParamMap.get('reportId') || this.reportId();\n if (reportId) {\n await this.loadReportAndRefresh(reportId);\n }\n });\n }\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n //#endregion\n //#region ---- Helper Methods ----\n async loadReportAndRefresh(reportId) {\n await this.vm.loadReport(reportId);\n // Force refresh of page layout (breadcrumbs, title, etc.) after report loads\n this.recompute();\n // Handle initial parameters from query string\n const queryParams = this.route.snapshot.queryParams;\n const initialParams = { ...queryParams };\n delete initialParams['reportId']; // Remove reportId from parameters\n // Parse filter context values coming from URL (they are strings)\n const parsedInitialParams = this.parseFilterContextFromUrl(initialParams);\n // Merge with component input parameters\n const allParams = { ...parsedInitialParams, ...this.reportParameters() };\n if (Object.keys(allParams).length > 0) {\n console.log('Applying initial parameters:', allParams);\n this.vm.updateFilterContext(allParams);\n // Auto-execute if parameters are provided\n setTimeout(async () => {\n await this.vm.executeReport();\n }, 500); // Small delay to ensure form is ready\n }\n }\n async openContentLoading() {\n if (this.loadingDialogRef || this.isDialogOpening) {\n return;\n }\n this.isDialogOpening = true;\n try {\n const [title, description, cancelText] = await Promise.all([\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.in-progress-title'),\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.in-progress-description'),\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.cancel-button'),\n ]);\n this.loadingDialogRef = this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n progressColor: 'primary',\n text: description,\n buttons: [\n {\n text: cancelText,\n color: 'danger',\n onClick: () => {\n this.closeContentLoading();\n this.vm.cancel();\n },\n },\n ],\n });\n }\n finally {\n this.isDialogOpening = false;\n }\n }\n closeContentLoading() {\n if (!this.loadingDialogRef) {\n return;\n }\n this.loadingDialogRef.close();\n this.loadingDialogRef = null;\n }\n /**\n * Synchronizes filter context to URL query parameters using dot notation\n * @param filterContext The current filter context to sync\n */\n syncFiltersToUrl(filterContext) {\n // Get current query params\n const currentParams = this.route.snapshot.queryParams;\n const reportId = currentParams['reportId'];\n // Get all filter keys from current params (excluding reportId and internal fields)\n const currentFilterKeys = new Set();\n Object.keys(currentParams).forEach((key) => {\n if (key !== 'reportId' &&\n !key.endsWith('EditorObj') &&\n !key.startsWith('__') &&\n !key.endsWith('EditorValue') &&\n !key.includes('.displayText')) {\n // Extract root key (before first dot) for filter identification\n const rootKey = key.includes('.') ? key.split('.')[0] : key;\n currentFilterKeys.add(rootKey);\n }\n });\n // Build new query params - start with current params and remove filter-related ones\n const queryParams = { ...currentParams };\n // Remove all filter-related params first (we'll add them back if they have values)\n Object.keys(queryParams).forEach((key) => {\n if (key !== 'reportId' &&\n !key.endsWith('EditorObj') &&\n !key.startsWith('__') &&\n !key.endsWith('EditorValue') &&\n !key.includes('.displayText')) {\n delete queryParams[key];\n }\n });\n const processedFilterKeys = new Set();\n // Add filter params that have values\n Object.keys(filterContext).forEach((key) => {\n // Skip internal editor fields (EditorObj, __EditorValue)\n if (key.endsWith('EditorObj') || key.startsWith('__') || key.endsWith('EditorValue')) {\n return;\n }\n processedFilterKeys.add(key);\n const value = filterContext[key];\n // Check if value is empty (null, undefined, empty string, or empty array)\n const isEmpty = this.isFilterValueEmpty(value);\n if (!isEmpty) {\n const flattened = this.flattenToDotNotation(key, value);\n Object.assign(queryParams, flattened);\n }\n // If empty, we don't add it to queryParams, so it will be removed from URL\n });\n // Remove filter keys that are no longer in filterContext\n currentFilterKeys.forEach((filterKey) => {\n if (!processedFilterKeys.has(filterKey)) {\n // This filter was removed - ensure all related params are removed\n Object.keys(currentParams).forEach((paramKey) => {\n if (paramKey === filterKey || paramKey.startsWith(`${filterKey}.`)) {\n delete queryParams[paramKey];\n }\n });\n }\n });\n // Preserve reportId if exists\n if (reportId) {\n queryParams['reportId'] = String(reportId);\n }\n else {\n delete queryParams['reportId'];\n }\n // Update URL without reloading\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true, // Don't add to browser history\n });\n }\n /**\n * Checks if a filter value is considered empty\n */\n isFilterValueEmpty(value) {\n if (value === null || value === undefined || value === '') {\n return true;\n }\n // Check if it's a filter object with empty value\n if (typeof value === 'object' && !Array.isArray(value)) {\n const filterObj = value;\n const filterValue = filterObj.value;\n if (filterValue === null || filterValue === undefined || filterValue === '') {\n return true;\n }\n if (Array.isArray(filterValue) && filterValue.length === 0) {\n return true;\n }\n // Check nested object values\n if (typeof filterValue === 'object' && !Array.isArray(filterValue)) {\n const hasAnyValue = Object.values(filterValue).some((v) => v !== null && v !== undefined && v !== '');\n return !hasAnyValue;\n }\n }\n // Check if it's an empty array\n if (Array.isArray(value) && value.length === 0) {\n return true;\n }\n return false;\n }\n /**\n * Flattens filter context to dot notation query parameters\n * Only includes operation.type and value - skips displayText and other fields\n * Example: { operation: { type: 'in' }, value: ['POST', 'GET'] }\n * -> { 'fieldName.operation.type': 'in', 'fieldName.value': 'POST,GET' }\n */\n flattenToDotNotation(prefix, value) {\n const result = {};\n if (value == null) {\n return result;\n }\n // Handle filter context object - only extract operation.type and value\n if (typeof value === 'object' && !Array.isArray(value)) {\n const filterObj = value;\n // Extract operation.type if exists\n if (filterObj.operation?.type) {\n result[`${prefix}.operation.type`] = String(filterObj.operation.type);\n }\n // Extract value - handle arrays and primitives\n if (filterObj.value !== undefined && filterObj.value !== null && filterObj.value !== '') {\n if (Array.isArray(filterObj.value)) {\n if (filterObj.value.length > 0) {\n result[`${prefix}.value`] = filterObj.value.map((v) => String(v)).join(',');\n }\n }\n else if (typeof filterObj.value === 'object') {\n // If value is an object, flatten it recursively\n const flattenedValue = this.flattenValueObject(filterObj.value);\n Object.assign(result, flattenedValue);\n }\n else {\n result[`${prefix}.value`] = String(filterObj.value);\n }\n }\n return result;\n }\n // Handle primitives directly\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n result[prefix] = String(value);\n return result;\n }\n // Handle arrays - join with comma\n if (Array.isArray(value)) {\n if (value.length > 0) {\n result[prefix] = value.map(v => String(v)).join(',');\n }\n return result;\n }\n // Fallback: convert to string\n result[prefix] = String(value);\n return result;\n }\n /**\n * Flattens a value object (for nested objects in value field)\n */\n flattenValueObject(obj, prefix = '') {\n const result = {};\n if (obj == null || typeof obj !== 'object') {\n return result;\n }\n for (const [key, val] of Object.entries(obj)) {\n const newPrefix = prefix ? `${prefix}.${key}` : key;\n if (val == null) {\n continue;\n }\n if (typeof val === 'string' || typeof val === 'number' || typeof val === 'boolean') {\n result[newPrefix] = String(val);\n }\n else if (Array.isArray(val)) {\n if (val.length > 0) {\n result[newPrefix] = val.map((v) => String(v)).join(',');\n }\n }\n else if (typeof val === 'object') {\n const flattened = this.flattenValueObject(val, newPrefix);\n Object.assign(result, flattened);\n }\n }\n return result;\n }\n /**\n * Reconstructs filter context from dot notation query parameters\n * Only parses operation.type and value - ignores other fields\n * Example: { 'fieldName.operation.type': 'in', 'fieldName.value': 'POST,GET' }\n * -> { fieldName: { operation: { type: 'in' }, value: ['POST', 'GET'] } }\n */\n parseFilterContextFromUrl(params) {\n const result = {};\n // Filter out reportId and internal editor fields\n const filteredParams = {};\n for (const [key, value] of Object.entries(params)) {\n // Skip reportId and internal editor fields (EditorObj, __EditorValue, displayText)\n if (key !== 'reportId' &&\n !key.endsWith('EditorObj') &&\n !key.startsWith('__') &&\n !key.endsWith('EditorValue') &&\n !key.includes('.displayText')) {\n filteredParams[key] = value;\n }\n }\n // Group by root key (before first dot)\n for (const [key, value] of Object.entries(filteredParams)) {\n if (!key.includes('.')) {\n // Simple key without dot notation - skip (we only want operation.type and value)\n continue;\n }\n // Split by dot and reconstruct nested structure\n const parts = key.split('.');\n const rootKey = parts[0];\n const path = parts.slice(1);\n // Only process operation.type and value paths\n if (path.length === 2 && path[0] === 'operation' && path[1] === 'type') {\n // operation.type\n if (!result[rootKey]) {\n result[rootKey] = { operation: {} };\n }\n if (!result[rootKey].operation) {\n result[rootKey].operation = {};\n }\n result[rootKey].operation.type = String(value);\n }\n else if (path.length === 1 && path[0] === 'value') {\n // value\n if (!result[rootKey]) {\n result[rootKey] = {};\n }\n result[rootKey].value = this.parseValue(String(value));\n }\n else if (path.length > 1 && path[0] === 'value') {\n // nested value object (e.g., value.from, value.to for between)\n if (!result[rootKey]) {\n result[rootKey] = {};\n }\n if (!result[rootKey].value) {\n result[rootKey].value = {};\n }\n const valuePath = path.slice(1);\n this.setNestedValue(result[rootKey].value, valuePath, this.parseValue(String(value)));\n }\n }\n // Post-process: Convert values to arrays if operation.type is 'in' or 'notIn'\n // Also reconstruct EditorObj for lookup widgets (from value only, no displayText)\n for (const [key, value] of Object.entries(result)) {\n if (value && typeof value === 'object' && value.operation?.type) {\n const operationType = value.operation.type;\n // If operation is 'in' or 'notIn', ensure value is an array\n if ((operationType === 'in' || operationType === 'notIn') && typeof value.value === 'string') {\n // Convert comma-separated string to array\n value.value = value.value.split(',').map((v) => v.trim()).filter((v) => v !== '');\n }\n // Reconstruct EditorObj for lookup widgets from value only\n // This is needed because lookup widget expects EditorObj to exist\n if (value.value !== undefined && value.value !== null && value.value !== '') {\n const editorObjKey = `${key}EditorObj`;\n const valueField = 'id'; // Default value field for lookup\n const textField = 'title'; // Default text field for lookup\n if (operationType === 'in' || operationType === 'notIn') {\n // Multiple selection: create array of objects with value as both id and title\n const values = Array.isArray(value.value) ? value.value : [value.value];\n result[editorObjKey] = values.map((val) => ({\n [valueField]: val,\n [textField]: val // Use value as title since we don't have displayText\n }));\n }\n else {\n // Single selection: create single object\n result[editorObjKey] = {\n [valueField]: value.value,\n [textField]: value.value // Use value as title since we don't have displayText\n };\n }\n }\n }\n }\n return result;\n }\n /**\n * Sets a value in a nested object using a path array\n */\n setNestedValue(obj, path, value) {\n let current = obj;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n if (!current[key] || typeof current[key] !== 'object') {\n current[key] = {};\n }\n current = current[key];\n }\n const lastKey = path[path.length - 1];\n current[lastKey] = value;\n }\n /**\n * Parses a string value, handling arrays (comma-separated) and primitives\n */\n parseValue(value) {\n if (value === '') {\n return value;\n }\n // Check if it's a comma-separated array\n if (value.includes(',')) {\n return value.split(',').map(v => this.parsePrimitive(v.trim()));\n }\n return this.parsePrimitive(value);\n }\n /**\n * Parses a primitive value\n * For query params, we keep everything as string to match user requirement\n * Arrays are handled separately in parseValue\n */\n parsePrimitive(value) {\n return value;\n }\n //#endregion\n //#region ---- Event Handlers ----\n handleFiltersChange(event) {\n this.vm.updateFilterContext(event);\n this.syncFiltersToUrl(event);\n }\n handleFiltersInitiated(event) {\n this.vm.updateFilterContext(event);\n }\n async handleExecuteReport() {\n const isValid = await this.filtersForm()?.validate();\n if (!isValid?.result) {\n return;\n }\n await this.vm.executeReport();\n }\n handleRefresh() {\n this.vm.refresh();\n }\n handleClearFilters() {\n this.vm.clearFilters();\n // Reset form if available\n const form = this.filtersForm();\n if (form) {\n form.reset();\n }\n // Clear URL query parameters (preserve reportId if exists)\n const currentParams = this.route.snapshot.queryParams;\n const reportId = currentParams['reportId'];\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: reportId ? { reportId } : {},\n replaceUrl: true,\n });\n }\n //#endregion\n //#region ---- Page Configuration Overrides ----\n async getPageBreadcrumbs() {\n const breadcrumbs = [\n {\n name: 'reports',\n title: await this.translateService.translateAsync('@report-management:module.menus.root.title'),\n command: {\n name: 'navigate-to-reports',\n },\n },\n ];\n // Add categories path\n const categoriesPath = this.vm.categoriesPath();\n if (categoriesPath && categoriesPath.length > 0) {\n let urlParts = [...this.baseRoutes, 'reports'];\n for (const category of categoriesPath) {\n urlParts.push(category.id);\n breadcrumbs.push({\n name: category.id,\n title: category.title,\n command: {\n name: 'navigate-to-category',\n options: {\n path: [...urlParts],\n },\n },\n });\n }\n }\n // Add report title as final breadcrumb\n const reportDefinition = this.vm.reportDefinition();\n if (reportDefinition) {\n breadcrumbs.push({\n name: 'report-viewer',\n title: reportDefinition.title,\n });\n }\n return breadcrumbs;\n }\n async getPageTitle() {\n const reportDefinition = this.vm.reportDefinition();\n if (reportDefinition) {\n return reportDefinition.title;\n }\n return await this.translateService.translateAsync('@report-management:report-viewer.components.report-viewer.title');\n }\n async getPageDescription() {\n const reportDefinition = this.vm.reportDefinition();\n return reportDefinition?.description || null;\n }\n async getBackButton() {\n // On mobile, if report has been executed (showing report), show \"Filters\" as back button\n if (this.deviceService.isSmall() && this.vm.hasBeenExecuted()) {\n return {\n title: await this.translateService.translateAsync('@general:terms.interface.filter.title'),\n };\n }\n const categoriesPath = this.vm.categoriesPath();\n if (!categoriesPath || categoriesPath.length === 0) {\n // If no categories path, go back to reports root\n return {\n title: await this.translateService.translateAsync('@report-management:report-runner.terms.menu-title'),\n };\n }\n if (categoriesPath.length === 1) {\n // If only one category, go back to reports root\n return {\n title: await this.translateService.translateAsync('@report-management:report-runner.terms.menu-title'),\n };\n }\n // Go back to parent category\n const parentCategory = categoriesPath[categoriesPath.length - 1];\n return {\n title: parentCategory.title,\n };\n }\n async onBackButtonClick() {\n // On mobile, if report has been executed (showing report), go back to filters\n if (this.deviceService.isSmall() && this.vm.hasBeenExecuted()) {\n this.vm.clearExecutionState();\n return;\n }\n const categoriesPath = this.vm.categoriesPath();\n if (!categoriesPath || categoriesPath.length <= 1) {\n // Navigate back to reports root\n await this.router.navigate([...this.baseRoutes, 'reports']);\n }\n else {\n // Navigate to parent category\n let urlParts = [...this.baseRoutes, 'reports'];\n for (const cat of categoriesPath) {\n urlParts.push(cat.id);\n }\n await this.router.navigate(urlParts);\n }\n }\n async execute(command) {\n switch (command.name) {\n case 'execute-report':\n await this.handleExecuteReport();\n break;\n case 'refresh-report':\n this.handleRefresh();\n break;\n case 'reset-filters':\n this.handleClearFilters();\n break;\n case 'navigate-to-reports':\n await this.router.navigate([...this.baseRoutes, 'reports']);\n break;\n case 'navigate-to-category':\n const path = command.options?.['path'];\n if (path) {\n await this.router.navigate(path);\n }\n break;\n default:\n console.warn(`Unknown command: ${command.name}`);\n break;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportViewerPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportViewerPageComponent, isStandalone: true, selector: \"axp-report-viewer-page\", inputs: { reportId: { classPropertyName: \"reportId\", publicName: \"reportId\", isSignal: true, isRequired: false, transformFunction: null }, reportParameters: { classPropertyName: \"reportParameters\", publicName: \"reportParameters\", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: \"axp-report-viewer-page\" }, providers: [\n AXUnsubscriber,\n AXPReportViewerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPReportViewerPageComponent,\n },\n ], viewQueries: [{ propertyName: \"filtersForm\", first: true, predicate: [\"filtersForm\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <!-- Left Panel: Filters (Always visible for desktop) -->\\n @if (showFiltersPanel()) {\\n <axp-layout-start-side>\\n <axp-layout-header>\\n <axp-layout-title>\\n {{ t('@report-management:report-viewer.components.filters.title') | async }}\\n </axp-layout-title>\\n </axp-layout-header>\\n <axp-layout-content>\\n <axp-layout-renderer\\n #filtersForm\\n [layout]=\\\"vm.formDefinition()\\\"\\n [context]=\\\"vm.filterContext()\\\"\\n [look]=\\\"'group'\\\"\\n (contextChange)=\\\"handleFiltersChange($event)\\\"\\n (contextInitiated)=\\\"handleFiltersInitiated($event)\\\"\\n >\\n </axp-layout-renderer>\\n </axp-layout-content>\\n <axp-layout-footer class=\\\"ax-p-4 ax-border-t\\\" *translate=\\\"let t\\\">\\n @if (vm.hasUnappliedFilters()) {\\n <div class=\\\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\\\">\\n <ax-icon class=\\\"fa-light fa-exclamation-triangle ax-text-sm\\\"></ax-icon>\\n <span class=\\\"ax-text-xs\\\">{{\\n t('@report-management:report-viewer.components.filters.messages.warning.unapplied') | async\\n }}</span>\\n </div>\\n </div>\\n }\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.execute.title') | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-layout-footer>\\n </axp-layout-start-side>\\n }\\n <axp-page-toolbar>\\n <axp-layout-prefix>\\n @if (vm.hasMultipleLayouts() && showReportDisplay()) {\\n <ax-button [text]=\\\"vm.currentLayout()?.title\\\">\\n <ax-icon icon=\\\"fa-light {{ vm.currentLayout()?.icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n @for (layout of vm.availableLayouts(); track layout.id) {\\n <ax-button-item-list>\\n <ax-button-item\\n [text]=\\\"layout.title\\\"\\n [selected]=\\\"vm.currentLayout()?.id === layout.id\\\"\\n (onClick)=\\\"vm.switchLayout(layout.id)\\\"\\n >\\n <ax-icon icon=\\\"fa-light {{ layout.icon }}\\\"></ax-icon>\\n </ax-button-item>\\n </ax-button-item-list>\\n }\\n </ax-dropdown-panel>\\n </ax-button>\\n }\\n </axp-layout-prefix>\\n <axp-layout-suffix> </axp-layout-suffix>\\n </axp-page-toolbar>\\n\\n <!-- Main Content: Report Display -->\\n <axp-page-content class=\\\"ax-overflow-auto\\\">\\n @if (vm.hasError()) {\\n <!-- Error State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-exclamation-triangle\\\"\\n look=\\\"error\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || 'An unexpected error occurred'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.retry.title') | async\\\"\\n (onClick)=\\\"vm.clearError()\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-refresh\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else if (!vm.reportDefinition()) {\\n <!-- No Report Selected State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.description'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.browse-reports.title') | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-folder-open\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"reportDisplay\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Desktop: Report Display Area -->\\n<ng-template #reportDisplay>\\n @if (showReportDisplay()) {\\n <!-- Desktop & Mobile: Report Display Area -->\\n @if (vm.isTableLayout()) {\\n <axp-report-table-view> </axp-report-table-view>\\n } @else if (vm.isChartLayout()) {\\n <axp-report-chart-view> </axp-report-chart-view>\\n }\\n } @else {\\n <!-- Mobile: Show filters -->\\n <axp-layout-renderer #filtersForm [layout]=\\\"vm.formDefinition()\\\" [context]=\\\"vm.filterContext()\\\" [look]=\\\"'fieldset'\\\">\\n </axp-layout-renderer>\\n }\\n</ng-template>\\n\\n<!-- Mobile: Execute Button -->\\n@if (deviceService.isSmall() && !vm.hasBeenExecuted()) {\\n <axp-page-footer class=\\\"ax-p-2 ax-border-t\\\">\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"'@report-management:report-viewer.actions.execute.title' | translate | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-page-footer>\\n}\\n\", styles: [\".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:1rem}.axp-report-viewer-page .__mobile-filters{display:flex;height:100%;flex-direction:column;overflow-y:auto}.axp-report-viewer-page .__mobile-filters .__mobile-filters-content{flex:1 1 0%}.axp-report-viewer-page .__mobile-filters .__mobile-filters-footer{position:sticky;bottom:0;border-top-width:1px;padding-top:.5rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i2.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i2.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { 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-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i4.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i5.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"ngmodule\", type: AXLoadingDialogModule }, { kind: \"component\", type: \n //\n AXPLayoutRendererComponent, selector: \"axp-layout-renderer\", inputs: [\"layout\", \"context\", \"look\", \"mode\"], outputs: [\"contextChange\", \"contextInitiated\", \"validityChange\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutStartSideComponent, selector: \"axp-layout-page-start-side, axp-layout-start-side\" }, { kind: \"component\", type: AXPThemeLayoutHeaderComponent, selector: \"axp-layout-header\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPReportTableViewComponent, selector: \"axp-report-table-view\" }, { kind: \"component\", type: AXPThemeLayoutFooterComponent, selector: \"axp-layout-footer, axp-layout-page-footer\" }, { kind: \"component\", type: AXPReportChartViewComponent, selector: \"axp-report-chart-view\" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportViewerPageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-viewer-page', standalone: true, imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXBadgeModule,\n AXLoadingDialogModule,\n //\n AXPLayoutRendererComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutBlockComponent,\n AXPReportTableViewComponent,\n AXPThemeLayoutFooterComponent,\n AXPReportChartViewComponent,\n AXPStateMessageComponent,\n ], providers: [\n AXUnsubscriber,\n AXPReportViewerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPReportViewerPageComponent,\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <!-- Left Panel: Filters (Always visible for desktop) -->\\n @if (showFiltersPanel()) {\\n <axp-layout-start-side>\\n <axp-layout-header>\\n <axp-layout-title>\\n {{ t('@report-management:report-viewer.components.filters.title') | async }}\\n </axp-layout-title>\\n </axp-layout-header>\\n <axp-layout-content>\\n <axp-layout-renderer\\n #filtersForm\\n [layout]=\\\"vm.formDefinition()\\\"\\n [context]=\\\"vm.filterContext()\\\"\\n [look]=\\\"'group'\\\"\\n (contextChange)=\\\"handleFiltersChange($event)\\\"\\n (contextInitiated)=\\\"handleFiltersInitiated($event)\\\"\\n >\\n </axp-layout-renderer>\\n </axp-layout-content>\\n <axp-layout-footer class=\\\"ax-p-4 ax-border-t\\\" *translate=\\\"let t\\\">\\n @if (vm.hasUnappliedFilters()) {\\n <div class=\\\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\\\">\\n <ax-icon class=\\\"fa-light fa-exclamation-triangle ax-text-sm\\\"></ax-icon>\\n <span class=\\\"ax-text-xs\\\">{{\\n t('@report-management:report-viewer.components.filters.messages.warning.unapplied') | async\\n }}</span>\\n </div>\\n </div>\\n }\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.execute.title') | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-layout-footer>\\n </axp-layout-start-side>\\n }\\n <axp-page-toolbar>\\n <axp-layout-prefix>\\n @if (vm.hasMultipleLayouts() && showReportDisplay()) {\\n <ax-button [text]=\\\"vm.currentLayout()?.title\\\">\\n <ax-icon icon=\\\"fa-light {{ vm.currentLayout()?.icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n @for (layout of vm.availableLayouts(); track layout.id) {\\n <ax-button-item-list>\\n <ax-button-item\\n [text]=\\\"layout.title\\\"\\n [selected]=\\\"vm.currentLayout()?.id === layout.id\\\"\\n (onClick)=\\\"vm.switchLayout(layout.id)\\\"\\n >\\n <ax-icon icon=\\\"fa-light {{ layout.icon }}\\\"></ax-icon>\\n </ax-button-item>\\n </ax-button-item-list>\\n }\\n </ax-dropdown-panel>\\n </ax-button>\\n }\\n </axp-layout-prefix>\\n <axp-layout-suffix> </axp-layout-suffix>\\n </axp-page-toolbar>\\n\\n <!-- Main Content: Report Display -->\\n <axp-page-content class=\\\"ax-overflow-auto\\\">\\n @if (vm.hasError()) {\\n <!-- Error State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-exclamation-triangle\\\"\\n look=\\\"error\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || 'An unexpected error occurred'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.retry.title') | async\\\"\\n (onClick)=\\\"vm.clearError()\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-refresh\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else if (!vm.reportDefinition()) {\\n <!-- No Report Selected State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.description'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.browse-reports.title') | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-folder-open\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"reportDisplay\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Desktop: Report Display Area -->\\n<ng-template #reportDisplay>\\n @if (showReportDisplay()) {\\n <!-- Desktop & Mobile: Report Display Area -->\\n @if (vm.isTableLayout()) {\\n <axp-report-table-view> </axp-report-table-view>\\n } @else if (vm.isChartLayout()) {\\n <axp-report-chart-view> </axp-report-chart-view>\\n }\\n } @else {\\n <!-- Mobile: Show filters -->\\n <axp-layout-renderer #filtersForm [layout]=\\\"vm.formDefinition()\\\" [context]=\\\"vm.filterContext()\\\" [look]=\\\"'fieldset'\\\">\\n </axp-layout-renderer>\\n }\\n</ng-template>\\n\\n<!-- Mobile: Execute Button -->\\n@if (deviceService.isSmall() && !vm.hasBeenExecuted()) {\\n <axp-page-footer class=\\\"ax-p-2 ax-border-t\\\">\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"'@report-management:report-viewer.actions.execute.title' | translate | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-page-footer>\\n}\\n\", styles: [\".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:1rem}.axp-report-viewer-page .__mobile-filters{display:flex;height:100%;flex-direction:column;overflow-y:auto}.axp-report-viewer-page .__mobile-filters .__mobile-filters-content{flex:1 1 0%}.axp-report-viewer-page .__mobile-filters .__mobile-filters-footer{position:sticky;bottom:0;border-top-width:1px;padding-top:.5rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { reportId: [{ type: i0.Input, args: [{ isSignal: true, alias: \"reportId\", required: false }] }], reportParameters: [{ type: i0.Input, args: [{ isSignal: true, alias: \"reportParameters\", required: false }] }], filtersForm: [{ type: i0.ViewChild, args: ['filtersForm', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXdlci1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvcmVwb3J0LXZpZXdlci1wYWdlL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXItcGFnZS9yZXBvcnQtdmlld2VyLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFJTCxnQkFBZ0IsR0FHakIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFP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Q2Qsd0JBQXdCO3dCQUN4Qjs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDhCQUE4Qjt5QkFDMUM7cUJBQ0YsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7bVRBd0JtQixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYTG9hZGluZ0RpYWxvZ01vZHVsZSwgQVhMb2FkaW5nRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nLWRpYWxvZyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7XG4gIEFYUEJhY2tCdXR0b24sXG4gIEFYUEJyZWFkY3J1bWJJdGVtLFxuICBBWFBDb250ZXh0RGF0YSxcbiAgQVhQRGV2aWNlU2VydmljZSxcbiAgQVhQRXhlY3V0ZUNvbW1hbmQsXG4gIEFYUEdyaWRMYXlvdXRPcHRpb25zLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQTGF5b3V0UmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7XG4gIEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCxcbiAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgQVhQVGhlbWVMYXlvdXRGb290ZXJDb21wb25lbnQsXG4gIEFYUFRoZW1lTGF5b3V0SGVhZGVyQ29tcG9uZW50LFxuICBBWFBUaGVtZUxheW91dFN0YXJ0U2lkZUNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZSwgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRUaGVtZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3RoZW1lcy9zaGFyZWQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgdW50cmFja2VkLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsIH0gZnJvbSAnLi4vcmVwb3J0LXZpZXdlci52aWV3bW9kZWwnO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2hhcnRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vdmlld3MvcmVwb3J0LWNoYXJ0LXZpZXcvcmVwb3J0LWNoYXJ0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYUFJlcG9ydFRhYmxlVmlld0NvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXdzL3JlcG9ydC10YWJsZS12aWV3L3JlcG9ydC10YWJsZS12aWV3LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtdmlld2VyLXBhZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWEJhZGdlTW9kdWxlLFxuICAgIEFYTG9hZGluZ0RpYWxvZ01vZHVsZSxcbiAgICAvL1xuICAgIEFYUExheW91dFJlbmRlcmVyQ29tcG9uZW50LFxuICAgIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRTdGFydFNpZGVDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRIZWFkZXJDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgICBBWFBSZXBvcnRUYWJsZVZpZXdDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRGb290ZXJDb21wb25lbnQsXG4gICAgQVhQUmVwb3J0Q2hhcnRWaWV3Q29tcG9uZW50LFxuICAgIEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQVhVbnN1YnNjcmliZXIsXG4gICAgQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUFBhZ2VMYXlvdXRCYXNlLFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUFJlcG9ydFZpZXdlclBhZ2VDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ2F4cC1yZXBvcnQtdmlld2VyLXBhZ2UnIH0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUFJlcG9ydFZpZXdlclBhZ2VDb21wb25lbnQgZXh0ZW5kcyBBWFBQYWdlTGF5b3V0QmFzZUNvbXBvbmVudCB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dFRoZW1lU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkZXZpY2VTZXJ2aWNlID0gaW5qZWN0KEFYUERldmljZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRpbmdEaWFsb2cgPSBpbmplY3QoQVhMb2FkaW5nRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIElucHV0cyAgIC0tLS1cblxuICByZXBvcnRJZCA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVwb3J0UGFyYW1ldGVycyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIGFueT4+KHt9KTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFZpZXdDaGlsZHJlbiAgIC0tLS1cblxuICBwcml2YXRlIGZpbHRlcnNGb3JtID0gdmlld0NoaWxkPEFYUExheW91dFJlbmRlcmVyQ29tcG9uZW50PignZmlsdGVyc0Zvcm0nKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFZpZXdNb2RlbCAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEVmZmVjdHMgICAtLS0tXG5cbiAgcHJpdmF0ZSByZWFkb25seSB3YXRjaE5hdmlnYXRpb25Mb2FkaW5nID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpc0J1c3kgPSB0aGlzLnZtLmlzTG9hZGluZygpIHx8IHRoaXMudm0uaXNFeGVjdXRpbmcoKTtcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLnNldE5hdmlnYXRpb25Mb2FkaW5nKGlzQnVzeSk7XG4gICAgICAvL1xuICAgICAgaWYgKGlzQnVzeSkge1xuICAgICAgICB2b2lkIHRoaXMub3BlbkNvbnRlbnRMb2FkaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb3NlQ29udGVudExvYWRpbmcoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJpdmF0ZSBsb2FkaW5nRGlhbG9nUmVmOiB7IGNsb3NlOiAoKSA9PiB2b2lkIH0gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpc0RpYWxvZ09wZW5pbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gdGhpcy5jbG9zZUNvbnRlbnRMb2FkaW5nKCkpO1xuICB9XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb21wdXRlZCBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBzaG93RmlsdGVyc1BhbmVsID0gKCkgPT4gdGhpcy5kZXZpY2VTZXJ2aWNlLmlzTGFyZ2UoKTtcblxuICBwcm90ZWN0ZWQgc2hvd1JlcG9ydERpc3BsYXkgPSAoKSA9PlxuICAgIHRoaXMuZGV2aWNlU2VydmljZS5pc0xhcmdlKCkgfHwgKHRoaXMuZGV2aWNlU2VydmljZS5pc1NtYWxsKCkgJiYgdGhpcy52bS5oYXNCZWVuRXhlY3V0ZWQoKSk7XG5cbiAgcHJpdmF0ZSBiYXNlUm91dGVzID0gW3RoaXMuc2Vzc2lvblNlcnZpY2UuYXBwbGljYXRpb24/Lm5hbWUsICdyZXBvcnQtbWFuYWdlbWVudCddO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgTGF5b3V0IENvbmZpZ3VyYXRpb25zICAgLS0tLVxuXG4gIHByb3RlY3RlZCBkZWZhdWx0TGF5b3V0ID0gKCk6IEFYUEdyaWRMYXlvdXRPcHRpb25zID0+ICh7XG4gICAgcG9zaXRpb25zOiB7XG4gICAgICBzbTogeyBjb2xTcGFuOiAxMiB9LFxuICAgICAgbWQ6IHsgY29sU3BhbjogNiB9LFxuICAgICAgbGc6IHsgY29sU3BhbjogMTIgfSxcbiAgICB9LFxuICB9KTtcblxuICBwcm90ZWN0ZWQgY29tcGFjdExheW91dCA9ICgpOiBBWFBHcmlkTGF5b3V0T3B0aW9ucyA9PiAoe1xuICAgIHBvc2l0aW9uczoge1xuICAgICAgc206IHsgY29sU3BhbjogMTIgfSxcbiAgICAgIG1kOiB7IGNvbFNwYW46IDQgfSxcbiAgICAgIGxnOiB7IGNvbFNwYW46IDMgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIExpZmVjeWNsZSAgIC0tLS1cblxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHJvdXRlIHBhcmFtZXRlciBjaGFuZ2VzIGZvciBkeW5hbWljIHJlcG9ydCBsb2FkaW5nXG4gICAgdGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSh0aGlzLnJvdXRlLnBhcmFtTWFwKS5zdWJzY3JpYmUoYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0SWQgPSBwYXJhbXMuZ2V0KCdyZXBvcnRJZCcpIHx8IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3JlcG9ydElkJykgfHwgdGhpcy5yZXBvcnRJZCgpO1xuXG4gICAgICBpZiAocmVwb3J0SWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkUmVwb3J0QW5kUmVmcmVzaChyZXBvcnRJZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRWZmZWN0IHRvIGhhbmRsZSBkYXRhIGZldGNoaW5nIHdoZW4gY2hhcnQgY29uZmlndXJhdGlvbiBjaGFuZ2VzXG4gICAqL1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIE1ldGhvZHMgICAtLS0tXG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUmVwb3J0QW5kUmVmcmVzaChyZXBvcnRJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy52bS5sb2FkUmVwb3J0KHJlcG9ydElkKTtcblxuICAgIC8vIEZvcmNlIHJlZnJlc2ggb2YgcGFnZSBsYXlvdXQgKGJyZWFkY3J1bWJzLCB0aXRsZSwgZXRjLikgYWZ0ZXIgcmVwb3J0IGxvYWRzXG4gICAgdGhpcy5yZWNvbXB1dGUoKTtcblxuICAgIC8vIEhhbmRsZSBpbml0aWFsIHBhcmFtZXRlcnMgZnJvbSBxdWVyeSBzdHJpbmdcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgY29uc3QgaW5pdGlhbFBhcmFtcyA9IHsgLi4ucXVlcnlQYXJhbXMgfTtcbiAgICBkZWxldGUgaW5pdGlhbFBhcmFtc1sncmVwb3J0SWQnXTsgLy8gUmVtb3ZlIHJlcG9ydElkIGZyb20gcGFyYW1ldGVyc1xuXG4gICAgLy8gUGFyc2UgZmlsdGVyIGNvbnRleHQgdmFsdWVzIGNvbWluZyBmcm9tIFVSTCAodGhleSBhcmUgc3RyaW5ncylcbiAgICBjb25zdCBwYXJzZWRJbml0aWFsUGFyYW1zID0gdGhpcy5wYXJzZUZpbHRlckNvbnRleHRGcm9tVXJsKGluaXRpYWxQYXJhbXMpO1xuXG4gICAgLy8gTWVyZ2Ugd2l0aCBjb21wb25lbnQgaW5wdXQgcGFyYW1ldGVyc1xuICAgIGNvbnN0IGFsbFBhcmFtcyA9IHsgLi4ucGFyc2VkSW5pdGlhbFBhcmFtcywgLi4udGhpcy5yZXBvcnRQYXJhbWV0ZXJzKCkgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhhbGxQYXJhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdBcHBseWluZyBpbml0aWFsIHBhcmFtZXRlcnM6JywgYWxsUGFyYW1zKTtcbiAgICAgIHRoaXMudm0udXBkYXRlRmlsdGVyQ29udGV4dChhbGxQYXJhbXMpO1xuICAgICAgLy8gQXV0by1leGVjdXRlIGlmIHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkXG4gICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy52bS5leGVjdXRlUmVwb3J0KCk7XG4gICAgICB9LCA1MDApOyAvLyBTbWFsbCBkZWxheSB0byBlbnN1cmUgZm9ybSBpcyByZWFkeVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb3BlbkNvbnRlbnRMb2FkaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmxvYWRpbmdEaWFsb2dSZWYgfHwgdGhpcy5pc0RpYWxvZ09wZW5pbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzRGlhbG9nT3BlbmluZyA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgW3RpdGxlLCBkZXNjcmlwdGlvbiwgY2FuY2VsVGV4dF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMubG9hZGluZy5pbi1wcm9ncmVzcy10aXRsZScpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLm1lc3NhZ2VzLmxvYWRpbmcuaW4tcHJvZ3Jlc3MtZGVzY3JpcHRpb24nLFxuICAgICAgICApLFxuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMubG9hZGluZy5jYW5jZWwtYnV0dG9uJyksXG4gICAgICBdKTtcblxuICAgICAgdGhpcy5sb2FkaW5nRGlhbG9nUmVmID0gdGhpcy5sb2FkaW5nRGlhbG9nLnNob3coe1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgbW9kZTogJ2luZGV0ZXJtaW5hdGUnLFxuICAgICAgICBwcm9ncmVzc0NvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIHRleHQ6IGRlc2NyaXB0aW9uLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogY2FuY2VsVGV4dCxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZUNvbnRlbnRMb2FkaW5nKCk7XG4gICAgICAgICAgICAgIHRoaXMudm0uY2FuY2VsKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0RpYWxvZ09wZW5pbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlQ29udGVudExvYWRpbmcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmdEaWFsb2dSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRpbmdEaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB0aGlzLmxvYWRpbmdEaWFsb2dSZWYgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bmNocm9uaXplcyBmaWx0ZXIgY29udGV4dCB0byBVUkwgcXVlcnkgcGFyYW1ldGVycyB1c2luZyBkb3Qgbm90YXRpb25cbiAgICogQHBhcmFtIGZpbHRlckNvbnRleHQgVGhlIGN1cnJlbnQgZmlsdGVyIGNvbnRleHQgdG8gc3luY1xuICAgKi9cbiAgcHJpdmF0ZSBzeW5jRmlsdGVyc1RvVXJsKGZpbHRlckNvbnRleHQ6IEFYUENvbnRleHREYXRhKTogdm9pZCB7XG4gICAgLy8gR2V0IGN1cnJlbnQgcXVlcnkgcGFyYW1zXG4gICAgY29uc3QgY3VycmVudFBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgY29uc3QgcmVwb3J0SWQgPSBjdXJyZW50UGFyYW1zWydyZXBvcnRJZCddO1xuXG4gICAgLy8gR2V0IGFsbCBmaWx0ZXIga2V5cyBmcm9tIGN1cnJlbnQgcGFyYW1zIChleGNsdWRpbmcgcmVwb3J0SWQgYW5kIGludGVybmFsIGZpZWxkcylcbiAgICBjb25zdCBjdXJyZW50RmlsdGVyS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIE9iamVjdC5rZXlzKGN1cnJlbnRQYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBrZXkgIT09ICdyZXBvcnRJZCcgJiZcbiAgICAgICAgIWtleS5lbmRzV2l0aCgnRWRpdG9yT2JqJykgJiZcbiAgICAgICAgIWtleS5zdGFydHNXaXRoKCdfXycpICYmXG4gICAgICAgICFrZXkuZW5kc1dpdGgoJ0VkaXRvclZhbHVlJykgJiZcbiAgICAgICAgIWtleS5pbmNsdWRlcygnLmRpc3BsYXlUZXh0JylcbiAgICAgICkge1xuICAgICAgICAvLyBFeHRyYWN0IHJvb3Qga2V5IChiZWZvcmUgZmlyc3QgZG90KSBmb3IgZmlsdGVyIGlkZW50aWZpY2F0aW9uXG4gICAgICAgIGNvbnN0IHJvb3RLZXkgPSBrZXkuaW5jbHVkZXMoJy4nKSA/IGtleS5zcGxpdCgnLicpWzBdIDoga2V5O1xuICAgICAgICBjdXJyZW50RmlsdGVyS2V5cy5hZGQocm9vdEtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBCdWlsZCBuZXcgcXVlcnkgcGFyYW1zIC0gc3RhcnQgd2l0aCBjdXJyZW50IHBhcmFtcyBhbmQgcmVtb3ZlIGZpbHRlci1yZWxhdGVkIG9uZXNcbiAgICBjb25zdCBxdWVyeVBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA9IHsgLi4uY3VycmVudFBhcmFtcyB9O1xuICAgIFxuICAgIC8vIFJlbW92ZSBhbGwgZmlsdGVyLXJlbGF0ZWQgcGFyYW1zIGZpcnN0ICh3ZSdsbCBhZGQgdGhlbSBiYWNrIGlmIHRoZXkgaGF2ZSB2YWx1ZXMpXG4gICAgT2JqZWN0LmtleXMocXVlcnlQYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBrZXkgIT09ICdyZXBvcnRJZCcgJiZcbiAgICAgICAgIWtleS5lbmRzV2l0aCgnRWRpdG9yT2JqJykgJiZcbiAgICAgICAgIWtleS5zdGFydHNXaXRoKCdfXycpICYmXG4gICAgICAgICFrZXkuZW5kc1dpdGgoJ0VkaXRvclZhbHVlJykgJiZcbiAgICAgICAgIWtleS5pbmNsdWRlcygnLmRpc3BsYXlUZXh0JylcbiAgICAgICkge1xuICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHByb2Nlc3NlZEZpbHRlcktleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIC8vIEFkZCBmaWx0ZXIgcGFyYW1zIHRoYXQgaGF2ZSB2YWx1ZXNcbiAgICBPYmplY3Qua2V5cyhmaWx0ZXJDb250ZXh0KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIC8vIFNraXAgaW50ZXJuYWwgZWRpdG9yIGZpZWxkcyAoRWRpdG9yT2JqLCBfX0VkaXRvclZhbHVlKVxuICAgICAgaWYgKGtleS5lbmRzV2l0aCgnRWRpdG9yT2JqJykgfHwga2V5LnN0YXJ0c1dpdGgoJ19fJykgfHwga2V5LmVuZHNXaXRoKCdFZGl0b3JWYWx1ZScpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcHJvY2Vzc2VkRmlsdGVyS2V5cy5hZGQoa2V5KTtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyQ29udGV4dFtrZXldO1xuICAgICAgXG4gICAgICAvLyBDaGVjayBpZiB2YWx1ZSBpcyBlbXB0eSAobnVsbCwgdW5kZWZpbmVkLCBlbXB0eSBzdHJpbmcsIG9yIGVtcHR5IGFycmF5KVxuICAgICAgY29uc3QgaXNFbXB0eSA9IHRoaXMuaXNGaWx0ZXJWYWx1ZUVtcHR5KHZhbHVlKTtcbiAgICAgIFxuICAgICAgaWYgKCFpc0VtcHR5KSB7XG4gICAgICAgIGNvbnN0IGZsYXR0ZW5lZCA9IHRoaXMuZmxhdHRlblRvRG90Tm90YXRpb24oa2V5LCB2YWx1ZSk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24ocXVlcnlQYXJhbXMsIGZsYXR0ZW5lZCk7XG4gICAgICB9XG4gICAgICAvLyBJZiBlbXB0eSwgd2UgZG9uJ3QgYWRkIGl0IHRvIHF1ZXJ5UGFyYW1zLCBzbyBpdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSBVUkxcbiAgICB9KTtcblxuICAgIC8vIFJlbW92ZSBmaWx0ZXIga2V5cyB0aGF0IGFyZSBubyBsb25nZXIgaW4gZmlsdGVyQ29udGV4dFxuICAgIGN1cnJlbnRGaWx0ZXJLZXlzLmZvckVhY2goKGZpbHRlcktleSkgPT4ge1xuICAgICAgaWYgKCFwcm9jZXNzZWRGaWx0ZXJLZXlzLmhhcyhmaWx0ZXJLZXkpKSB7XG4gICAgICAgIC8vIFRoaXMgZmlsdGVyIHdhcyByZW1vdmVkIC0gZW5zdXJlIGFsbCByZWxhdGVkIHBhcmFtcyBhcmUgcmVtb3ZlZFxuICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50UGFyYW1zKS5mb3JFYWNoKChwYXJhbUtleSkgPT4ge1xuICAgICAgICAgIGlmIChwYXJhbUtleSA9PT0gZmlsdGVyS2V5IHx8IHBhcmFtS2V5LnN0YXJ0c1dpdGgoYCR7ZmlsdGVyS2V5fS5gKSkge1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zW3BhcmFtS2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gUHJlc2VydmUgcmVwb3J0SWQgaWYgZXhpc3RzXG4gICAgaWYgKHJlcG9ydElkKSB7XG4gICAgICBxdWVyeVBhcmFtc1sncmVwb3J0SWQnXSA9IFN0cmluZyhyZXBvcnRJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1sncmVwb3J0SWQnXTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgVVJMIHdpdGhvdXQgcmVsb2FkaW5nXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXMsXG4gICAgICByZXBsYWNlVXJsOiB0cnVlLCAvLyBEb24ndCBhZGQgdG8gYnJvd3NlciBoaXN0b3J5XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZmlsdGVyIHZhbHVlIGlzIGNvbnNpZGVyZWQgZW1wdHlcbiAgICovXG4gIHByaXZhdGUgaXNGaWx0ZXJWYWx1ZUVtcHR5KHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBpdCdzIGEgZmlsdGVyIG9iamVjdCB3aXRoIGVtcHR5IHZhbHVlXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBjb25zdCBmaWx0ZXJPYmogPSB2YWx1ZSBhcyBhbnk7XG4gICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGZpbHRlck9iai52YWx1ZTtcbiAgICAgIFxuICAgICAgaWYgKGZpbHRlclZhbHVlID09PSBudWxsIHx8IGZpbHRlclZhbHVlID09PSB1bmRlZmluZWQgfHwgZmlsdGVyVmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZSkgJiYgZmlsdGVyVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDaGVjayBuZXN0ZWQgb2JqZWN0IHZhbHVlc1xuICAgICAgaWYgKHR5cGVvZiBmaWx0ZXJWYWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGhhc0FueVZhbHVlID0gT2JqZWN0LnZhbHVlcyhmaWx0ZXJWYWx1ZSkuc29tZSgodikgPT4gdiAhPT0gbnVsbCAmJiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gJycpO1xuICAgICAgICByZXR1cm4gIWhhc0FueVZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGl0J3MgYW4gZW1wdHkgYXJyYXlcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRmxhdHRlbnMgZmlsdGVyIGNvbnRleHQgdG8gZG90IG5vdGF0aW9uIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogT25seSBpbmNsdWRlcyBvcGVyYXRpb24udHlwZSBhbmQgdmFsdWUgLSBza2lwcyBkaXNwbGF5VGV4dCBhbmQgb3RoZXIgZmllbGRzXG4gICAqIEV4YW1wbGU6IHsgb3BlcmF0aW9uOiB7IHR5cGU6ICdpbicgfSwgdmFsdWU6IFsnUE9TVCcsICdHRVQnXSB9IFxuICAgKiAgICAgICAgICAtPiB7ICdmaWVsZE5hbWUub3BlcmF0aW9uLnR5cGUnOiAnaW4nLCAnZmllbGROYW1lLnZhbHVlJzogJ1BPU1QsR0VUJyB9XG4gICAqL1xuICBwcml2YXRlIGZsYXR0ZW5Ub0RvdE5vdGF0aW9uKHByZWZpeDogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGZpbHRlciBjb250ZXh0IG9iamVjdCAtIG9ubHkgZXh0cmFjdCBvcGVyYXRpb24udHlwZSBhbmQgdmFsdWVcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGZpbHRlck9iaiA9IHZhbHVlIGFzIGFueTtcbiAgICAgIFxuICAgICAgLy8gRXh0cmFjdCBvcGVyYXRpb24udHlwZSBpZiBleGlzdHNcbiAgICAgIGlmIChmaWx0ZXJPYmoub3BlcmF0aW9uPy50eXBlKSB7XG4gICAgICAgIHJlc3VsdFtgJHtwcmVmaXh9Lm9wZXJhdGlvbi50eXBlYF0gPSBTdHJpbmcoZmlsdGVyT2JqLm9wZXJhdGlvbi50eXBlKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gRXh0cmFjdCB2YWx1ZSAtIGhhbmRsZSBhcnJheXMgYW5kIHByaW1pdGl2ZXNcbiAgICAgIGlmIChmaWx0ZXJPYmoudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJPYmoudmFsdWUgIT09IG51bGwgJiYgZmlsdGVyT2JqLnZhbHVlICE9PSAnJykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJPYmoudmFsdWUpKSB7XG4gICAgICAgICAgaWYgKGZpbHRlck9iai52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXN1bHRbYCR7cHJlZml4fS52YWx1ZWBdID0gZmlsdGVyT2JqLnZhbHVlLm1hcCgodjogYW55KSA9PiBTdHJpbmcodikpLmpvaW4oJywnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpbHRlck9iai52YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAvLyBJZiB2YWx1ZSBpcyBhbiBvYmplY3QsIGZsYXR0ZW4gaXQgcmVjdXJzaXZlbHlcbiAgICAgICAgICBjb25zdCBmbGF0dGVuZWRWYWx1ZSA9IHRoaXMuZmxhdHRlblZhbHVlT2JqZWN0KGZpbHRlck9iai52YWx1ZSk7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIGZsYXR0ZW5lZFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRbYCR7cHJlZml4fS52YWx1ZWBdID0gU3RyaW5nKGZpbHRlck9iai52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcHJpbWl0aXZlcyBkaXJlY3RseVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJlc3VsdFtwcmVmaXhdID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGFycmF5cyAtIGpvaW4gd2l0aCBjb21tYVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0W3ByZWZpeF0gPSB2YWx1ZS5tYXAodiA9PiBTdHJpbmcodikpLmpvaW4oJywnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IGNvbnZlcnQgdG8gc3RyaW5nXG4gICAgcmVzdWx0W3ByZWZpeF0gPSBTdHJpbmcodmFsdWUpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRmxhdHRlbnMgYSB2YWx1ZSBvYmplY3QgKGZvciBuZXN0ZWQgb2JqZWN0cyBpbiB2YWx1ZSBmaWVsZClcbiAgICovXG4gIHByaXZhdGUgZmxhdHRlblZhbHVlT2JqZWN0KG9iajogYW55LCBwcmVmaXggPSAnJyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgICBjb25zdCBuZXdQcmVmaXggPSBwcmVmaXggPyBgJHtwcmVmaXh9LiR7a2V5fWAgOiBrZXk7XG4gICAgICBcbiAgICAgIGlmICh2YWwgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXN1bHRbbmV3UHJlZml4XSA9IFN0cmluZyh2YWwpO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgaWYgKHZhbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmVzdWx0W25ld1ByZWZpeF0gPSB2YWwubWFwKCh2OiBhbnkpID0+IFN0cmluZyh2KSkuam9pbignLCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGZsYXR0ZW5lZCA9IHRoaXMuZmxhdHRlblZhbHVlT2JqZWN0KHZhbCwgbmV3UHJlZml4KTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIGZsYXR0ZW5lZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbnN0cnVjdHMgZmlsdGVyIGNvbnRleHQgZnJvbSBkb3Qgbm90YXRpb24gcXVlcnkgcGFyYW1ldGVyc1xuICAgKiBPbmx5IHBhcnNlcyBvcGVyYXRpb24udHlwZSBhbmQgdmFsdWUgLSBpZ25vcmVzIG90aGVyIGZpZWxkc1xuICAgKiBFeGFtcGxlOiB7ICdmaWVsZE5hbWUub3BlcmF0aW9uLnR5cGUnOiAnaW4nLCAnZmllbGROYW1lLnZhbHVlJzogJ1BPU1QsR0VUJyB9XG4gICAqICAgICAgICAgIC0+IHsgZmllbGROYW1lOiB7IG9wZXJhdGlvbjogeyB0eXBlOiAnaW4nIH0sIHZhbHVlOiBbJ1BPU1QnLCAnR0VUJ10gfSB9XG4gICAqL1xuICBwcml2YXRlIHBhcnNlRmlsdGVyQ29udGV4dEZyb21VcmwocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIC8vIEZpbHRlciBvdXQgcmVwb3J0SWQgYW5kIGludGVybmFsIGVkaXRvciBmaWVsZHNcbiAgICBjb25zdCBmaWx0ZXJlZFBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG4gICAgICAvLyBTa2lwIHJlcG9ydElkIGFuZCBpbnRlcm5hbCBlZGl0b3IgZmllbGRzIChFZGl0b3JPYmosIF9fRWRpdG9yVmFsdWUsIGRpc3BsYXlUZXh0KVxuICAgICAgaWYgKFxuICAgICAgICBrZXkgIT09ICdyZXBvcnRJZCcgJiYgXG4gICAgICAgICFrZXkuZW5kc1dpdGgoJ0VkaXRvck9iaicpICYmIFxuICAgICAgICAha2V5LnN0YXJ0c1dpdGgoJ19fJykgJiYgXG4gICAgICAgICFrZXkuZW5kc1dpdGgoJ0VkaXRvclZhbHVlJykgJiZcbiAgICAgICAgIWtleS5pbmNsdWRlcygnLmRpc3BsYXlUZXh0JylcbiAgICAgICkge1xuICAgICAgICBmaWx0ZXJlZFBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR3JvdXAgYnkgcm9vdCBrZXkgKGJlZm9yZSBmaXJzdCBkb3QpXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVyZWRQYXJhbXMpKSB7XG4gICAgICBpZiAoIWtleS5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgIC8vIFNpbXBsZSBrZXkgd2l0aG91dCBkb3Qgbm90YXRpb24gLSBza2lwICh3ZSBvbmx5IHdhbnQgb3BlcmF0aW9uLnR5cGUgYW5kIHZhbHVlKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gU3BsaXQgYnkgZG90IGFuZCByZWNvbnN0cnVjdCBuZXN0ZWQgc3RydWN0dXJlXG4gICAgICBjb25zdCBwYXJ0cyA9IGtleS5zcGxpdCgnLicpO1xuICAgICAgY29uc3Qgcm9vdEtleSA9IHBhcnRzWzBdO1xuICAgICAgY29uc3QgcGF0aCA9IHBhcnRzLnNsaWNlKDEpO1xuXG4gICAgICAvLyBPbmx5IHByb2Nlc3Mgb3BlcmF0aW9uLnR5cGUgYW5kIHZhbHVlIHBhdGhzXG4gICAgICBpZiAocGF0aC5sZW5ndGggPT09IDIgJiYgcGF0aFswXSA9PT0gJ29wZXJhdGlvbicgJiYgcGF0aFsxXSA9PT0gJ3R5cGUnKSB7XG4gICAgICAgIC8vIG9wZXJhdGlvbi50eXBlXG4gICAgICAgIGlmICghcmVzdWx0W3Jvb3RLZXldKSB7XG4gICAgICAgICAgcmVzdWx0W3Jvb3RLZXldID0geyBvcGVyYXRpb246IHt9IH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXN1bHRbcm9vdEtleV0ub3BlcmF0aW9uKSB7XG4gICAgICAgICAgcmVzdWx0W3Jvb3RLZXldLm9wZXJhdGlvbiA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFtyb290S2V5XS5vcGVyYXRpb24udHlwZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHBhdGgubGVuZ3RoID09PSAxICYmIHBhdGhbMF0gPT09ICd2YWx1ZScpIHtcbiAgICAgICAgLy8gdmFsdWVcbiAgICAgICAgaWYgKCFyZXN1bHRbcm9vdEtleV0pIHtcbiAgICAgICAgICByZXN1bHRbcm9vdEtleV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbcm9vdEtleV0udmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUoU3RyaW5nKHZhbHVlKSk7XG4gICAgICB9IGVsc2UgaWYgKHBhdGgubGVuZ3RoID4gMSAmJiBwYXRoWzBdID09PSAndmFsdWUnKSB7XG4gICAgICAgIC8vIG5lc3RlZCB2YWx1ZSBvYmplY3QgKGUuZy4sIHZhbHVlLmZyb20sIHZhbHVlLnRvIGZvciBiZXR3ZWVuKVxuICAgICAgICBpZiAoIXJlc3VsdFtyb290S2V5XSkge1xuICAgICAgICAgIHJlc3VsdFtyb290S2V5XSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVzdWx0W3Jvb3RLZXldLnZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0W3Jvb3RLZXldLnZhbHVlID0ge307XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWVQYXRoID0gcGF0aC5zbGljZSgxKTtcbiAgICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyZXN1bHRbcm9vdEtleV0udmFsdWUsIHZhbHVlUGF0aCwgdGhpcy5wYXJzZVZhbHVlKFN0cmluZyh2YWx1ZSkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQb3N0LXByb2Nlc3M6IENvbnZlcnQgdmFsdWVzIHRvIGFycmF5cyBpZiBvcGVyYXRpb24udHlwZSBpcyAnaW4nIG9yICdub3RJbidcbiAgICAvLyBBbHNvIHJlY29uc3RydWN0IEVkaXRvck9iaiBmb3IgbG9va3VwIHdpZGdldHMgKGZyb20gdmFsdWUgb25seSwgbm8gZGlzcGxheVRleHQpXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0KSkge1xuICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUub3BlcmF0aW9uPy50eXBlKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvblR5cGUgPSB2YWx1ZS5vcGVyYXRpb24udHlwZTtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIG9wZXJhdGlvbiBpcyAnaW4nIG9yICdub3RJbicsIGVuc3VyZSB2YWx1ZSBpcyBhbiBhcnJheVxuICAgICAgICBpZiAoKG9wZXJhdGlvblR5cGUgPT09ICdpbicgfHwgb3BlcmF0aW9uVHlwZSA9PT0gJ25vdEluJykgJiYgdHlwZW9mIHZhbHVlLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIC8vIENvbnZlcnQgY29tbWEtc2VwYXJhdGVkIHN0cmluZyB0byBhcnJheVxuICAgICAgICAgIHZhbHVlLnZhbHVlID0gdmFsdWUudmFsdWUuc3BsaXQoJywnKS5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpLmZpbHRlcigodjogc3RyaW5nKSA9PiB2ICE9PSAnJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZWNvbnN0cnVjdCBFZGl0b3JPYmogZm9yIGxvb2t1cCB3aWRnZXRzIGZyb20gdmFsdWUgb25seVxuICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIGxvb2t1cCB3aWRnZXQgZXhwZWN0cyBFZGl0b3JPYmogdG8gZXhpc3RcbiAgICAgICAgaWYgKHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUudmFsdWUgIT09IG51bGwgJiYgdmFsdWUudmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgY29uc3QgZWRpdG9yT2JqS2V5ID0gYCR7a2V5fUVkaXRvck9iamA7XG4gICAgICAgICAgY29uc3QgdmFsdWVGaWVsZCA9ICdpZCc7IC8vIERlZmF1bHQgdmFsdWUgZmllbGQgZm9yIGxvb2t1cFxuICAgICAgICAgIGNvbnN0IHRleHRGaWVsZCA9ICd0aXRsZSc7IC8vIERlZmF1bHQgdGV4dCBmaWVsZCBmb3IgbG9va3VwXG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKG9wZXJhdGlvblR5cGUgPT09ICdpbicgfHwgb3BlcmF0aW9uVHlwZSA9PT0gJ25vdEluJykge1xuICAgICAgICAgICAgLy8gTXVsdGlwbGUgc2VsZWN0aW9uOiBjcmVhdGUgYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIHZhbHVlIGFzIGJvdGggaWQgYW5kIHRpdGxlXG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlLnZhbHVlKSA/IHZhbHVlLnZhbHVlIDogW3ZhbHVlLnZhbHVlXTtcbiAgICAgICAgICAgIHJlc3VsdFtlZGl0b3JPYmpLZXldID0gdmFsdWVzLm1hcCgodmFsOiBzdHJpbmcpID0+ICh7XG4gICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXTogdmFsLFxuICAgICAgICAgICAgICBbdGV4dEZpZWxkXTogdmFsIC8vIFVzZSB2YWx1ZSBhcyB0aXRsZSBzaW5jZSB3ZSBkb24ndCBoYXZlIGRpc3BsYXlUZXh0XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNpbmdsZSBzZWxlY3Rpb246IGNyZWF0ZSBzaW5nbGUgb2JqZWN0XG4gICAgICAgICAgICByZXN1bHRbZWRpdG9yT2JqS2V5XSA9IHtcbiAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgW3RleHRGaWVsZF06IHZhbHVlLnZhbHVlIC8vIFVzZSB2YWx1ZSBhcyB0aXRsZSBzaW5jZSB3ZSBkb24ndCBoYXZlIGRpc3BsYXlUZXh0XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhIHZhbHVlIGluIGEgbmVzdGVkIG9iamVjdCB1c2luZyBhIHBhdGggYXJyYXlcbiAgICovXG4gIHByaXZhdGUgc2V0TmVzdGVkVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZ1tdLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIGxldCBjdXJyZW50ID0gb2JqO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IHBhdGhbaV07XG4gICAgICBpZiAoIWN1cnJlbnRba2V5XSB8fCB0eXBlb2YgY3VycmVudFtrZXldICE9PSAnb2JqZWN0Jykge1xuICAgICAgICBjdXJyZW50W2tleV0gPSB7fTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gICAgfVxuICAgIGNvbnN0IGxhc3RLZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgY3VycmVudFtsYXN0S2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyBhIHN0cmluZyB2YWx1ZSwgaGFuZGxpbmcgYXJyYXlzIChjb21tYS1zZXBhcmF0ZWQpIGFuZCBwcmltaXRpdmVzXG4gICAqL1xuICBwcml2YXRlIHBhcnNlVmFsdWUodmFsdWU6IHN0cmluZyk6IHVua25vd24ge1xuICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGFycmF5XG4gICAgaWYgKHZhbHVlLmluY2x1ZGVzKCcsJykpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5zcGxpdCgnLCcpLm1hcCh2ID0+IHRoaXMucGFyc2VQcmltaXRpdmUodi50cmltKCkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wYXJzZVByaW1pdGl2ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIGEgcHJpbWl0aXZlIHZhbHVlXG4gICAqIEZvciBxdWVyeSBwYXJhbXMsIHdlIGtlZXAgZXZlcnl0aGluZyBhcyBzdHJpbmcgdG8gbWF0Y2ggdXNlciByZXF1aXJlbWVudFxuICAgKiBBcnJheXMgYXJlIGhhbmRsZWQgc2VwYXJhdGVseSBpbiBwYXJzZVZhbHVlXG4gICAqL1xuICBwcml2YXRlIHBhcnNlUHJpbWl0aXZlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIGhhbmRsZUZpbHRlcnNDaGFuZ2UoZXZlbnQ6IEFYUENvbnRleHREYXRhKTogdm9pZCB7XG4gICAgdGhpcy52bS51cGRhdGVGaWx0ZXJDb250ZXh0KGV2ZW50KTtcbiAgICB0aGlzLnN5bmNGaWx0ZXJzVG9VcmwoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUZpbHRlcnNJbml0aWF0ZWQoZXZlbnQ6IEFYUENvbnRleHREYXRhKTogdm9pZCB7XG4gICAgdGhpcy52bS51cGRhdGVGaWx0ZXJDb250ZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVFeGVjdXRlUmVwb3J0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlzVmFsaWQgPSBhd2FpdCB0aGlzLmZpbHRlcnNGb3JtKCk/LnZhbGlkYXRlKCk7XG4gICAgaWYgKCFpc1ZhbGlkPy5yZXN1bHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy52bS5leGVjdXRlUmVwb3J0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlUmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLnZtLnJlZnJlc2goKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbGVhckZpbHRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy52bS5jbGVhckZpbHRlcnMoKTtcblxuICAgIC8vIFJlc2V0IGZvcm0gaWYgYXZhaWxhYmxlXG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZmlsdGVyc0Zvcm0oKTtcbiAgICBpZiAoZm9ybSkge1xuICAgICAgZm9ybS5yZXNldCgpO1xuICAgIH1cblxuICAgIC8vIENsZWFyIFVSTCBxdWVyeSBwYXJhbWV0ZXJzIChwcmVzZXJ2ZSByZXBvcnRJZCBpZiBleGlzdHMpXG4gICAgY29uc3QgY3VycmVudFBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgY29uc3QgcmVwb3J0SWQgPSBjdXJyZW50UGFyYW1zWydyZXBvcnRJZCddO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICBxdWVyeVBhcmFtczogcmVwb3J0SWQgPyB7IHJlcG9ydElkIH0gOiB7fSxcbiAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFBhZ2UgQ29uZmlndXJhdGlvbiBPdmVycmlkZXMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VCcmVhZGNydW1icygpOiBQcm9taXNlPEFYUEJyZWFkY3J1bWJJdGVtW10+IHtcbiAgICBjb25zdCBicmVhZGNydW1iczogQVhQQnJlYWRjcnVtYkl0ZW1bXSA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JlcG9ydHMnLFxuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcmVwb3J0LW1hbmFnZW1lbnQ6bW9kdWxlLm1lbnVzLnJvb3QudGl0bGUnKSxcbiAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgIG5hbWU6ICduYXZpZ2F0ZS10by1yZXBvcnRzJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIC8vIEFkZCBjYXRlZ29yaWVzIHBhdGhcbiAgICBjb25zdCBjYXRlZ29yaWVzUGF0aCA9IHRoaXMudm0uY2F0ZWdvcmllc1BhdGgoKTtcbiAgICBpZiAoY2F0ZWdvcmllc1BhdGggJiYgY2F0ZWdvcmllc1BhdGgubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHVybFBhcnRzID0gWy4uLnRoaXMuYmFzZVJvdXRlcywgJ3JlcG9ydHMnXTtcbiAgICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllc1BhdGgpIHtcbiAgICAgICAgdXJsUGFydHMucHVzaChjYXRlZ29yeS5pZCk7XG4gICAgICAgIGJyZWFkY3J1bWJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IGNhdGVnb3J5LmlkLFxuICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeS50aXRsZSxcbiAgICAgICAgICBjb21tYW5kOiB7XG4gICAgICAgICAgICBuYW1lOiAnbmF2aWdhdGUtdG8tY2F0ZWdvcnknLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBwYXRoOiBbLi4udXJsUGFydHNdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgcmVwb3J0IHRpdGxlIGFzIGZpbmFsIGJyZWFkY3J1bWJcbiAgICBjb25zdCByZXBvcnREZWZpbml0aW9uID0gdGhpcy52bS5yZXBvcnREZWZpbml0aW9uKCk7XG4gICAgaWYgKHJlcG9ydERlZmluaXRpb24pIHtcbiAgICAgIGJyZWFkY3J1bWJzLnB1c2goe1xuICAgICAgICBuYW1lOiAncmVwb3J0LXZpZXdlcicsXG4gICAgICAgIHRpdGxlOiByZXBvcnREZWZpbml0aW9uLnRpdGxlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyZWFkY3J1bWJzO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZVRpdGxlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVwb3J0RGVmaW5pdGlvbiA9IHRoaXMudm0ucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgIGlmIChyZXBvcnREZWZpbml0aW9uKSB7XG4gICAgICByZXR1cm4gcmVwb3J0RGVmaW5pdGlvbi50aXRsZTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5jb21wb25lbnRzLnJlcG9ydC12aWV3ZXIudGl0bGUnLFxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlRGVzY3JpcHRpb24oKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgcmVwb3J0RGVmaW5pdGlvbiA9IHRoaXMudm0ucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgIHJldHVybiByZXBvcnREZWZpbml0aW9uPy5kZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0QmFja0J1dHRvbigpOiBQcm9taXNlPEFYUEJhY2tCdXR0b24gfCBudWxsPiB7XG4gICAgLy8gT24gbW9iaWxlLCBpZiByZXBvcnQgaGFzIGJlZW4gZXhlY3V0ZWQgKHNob3dpbmcgcmVwb3J0KSwgc2hvdyBcIkZpbHRlcnNcIiBhcyBiYWNrIGJ1dHRvblxuICAgIGlmICh0aGlzLmRldmljZVNlcnZpY2UuaXNTbWFsbCgpICYmIHRoaXMudm0uaGFzQmVlbkV4ZWN1dGVkKCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BnZW5lcmFsOnRlcm1zLmludGVyZmFjZS5maWx0ZXIudGl0bGUnKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgY2F0ZWdvcmllc1BhdGggPSB0aGlzLnZtLmNhdGVnb3JpZXNQYXRoKCk7XG5cbiAgICBpZiAoIWNhdGVnb3JpZXNQYXRoIHx8IGNhdGVnb3JpZXNQYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gSWYgbm8gY2F0ZWdvcmllcyBwYXRoLCBnbyBiYWNrIHRvIHJlcG9ydHMgcm9vdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC1ydW5uZXIudGVybXMubWVudS10aXRsZScpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoY2F0ZWdvcmllc1BhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBJZiBvbmx5IG9uZSBjYXRlZ29yeSwgZ28gYmFjayB0byByZXBvcnRzIHJvb3RcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtcnVubmVyLnRlcm1zLm1lbnUtdGl0bGUnKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gR28gYmFjayB0byBwYXJlbnQgY2F0ZWdvcnlcbiAgICBjb25zdCBwYXJlbnRDYXRlZ29yeSA9IGNhdGVnb3JpZXNQYXRoW2NhdGVnb3JpZXNQYXRoLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogcGFyZW50Q2F0ZWdvcnkudGl0bGUsXG4gICAgfTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIG9uQmFja0J1dHRvbkNsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIE9uIG1vYmlsZSwgaWYgcmVwb3J0IGhhcyBiZWVuIGV4ZWN1dGVkIChzaG93aW5nIHJlcG9ydCksIGdvIGJhY2sgdG8gZmlsdGVyc1xuICAgIGlmICh0aGlzLmRldmljZVNlcnZpY2UuaXNTbWFsbCgpICYmIHRoaXMudm0uaGFzQmVlbkV4ZWN1dGVkKCkpIHtcbiAgICAgIHRoaXMudm0uY2xlYXJFeGVjdXRpb25TdGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNhdGVnb3JpZXNQYXRoID0gdGhpcy52bS5jYXRlZ29yaWVzUGF0aCgpO1xuXG4gICAgaWYgKCFjYXRlZ29yaWVzUGF0aCB8fCBjYXRlZ29yaWVzUGF0aC5sZW5ndGggPD0gMSkge1xuICAgICAgLy8gTmF2aWdhdGUgYmFjayB0byByZXBvcnRzIHJvb3RcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsuLi50aGlzLmJhc2VSb3V0ZXMsICdyZXBvcnRzJ10pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOYXZpZ2F0ZSB0byBwYXJlbnQgY2F0ZWdvcnlcbiAgICAgIGxldCB1cmxQYXJ0cyA9IFsuLi50aGlzLmJhc2VSb3V0ZXMsICdyZXBvcnRzJ107XG4gICAgICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzUGF0aCkge1xuICAgICAgICB1cmxQYXJ0cy5wdXNoKGNhdC5pZCk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh1cmxQYXJ0cyk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZShjb21tYW5kOiBBWFBFeGVjdXRlQ29tbWFuZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAoY29tbWFuZC5uYW1lKSB7XG4gICAgICBjYXNlICdleGVjdXRlLXJlcG9ydCc6XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRXhlY3V0ZVJlcG9ydCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlZnJlc2gtcmVwb3J0JzpcbiAgICAgICAgdGhpcy5oYW5kbGVSZWZyZXNoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmVzZXQtZmlsdGVycyc6XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xlYXJGaWx0ZXJzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbmF2aWdhdGUtdG8tcmVwb3J0cyc6XG4gICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsuLi50aGlzLmJhc2VSb3V0ZXMsICdyZXBvcnRzJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ25hdmlnYXRlLXRvLWNhdGVnb3J5JzpcbiAgICAgICAgY29uc3QgcGF0aCA9IGNvbW1hbmQub3B0aW9ucz8uWydwYXRoJ10gYXMgc3RyaW5nW107XG4gICAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUocGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gY29tbWFuZDogJHtjb21tYW5kLm5hbWV9YCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIiwiPGF4cC1wYWdlLWxheW91dCAqdHJhbnNsYXRlPVwibGV0IHRcIj5cbiAgPCEtLSBMZWZ0IFBhbmVsOiBGaWx0ZXJzIChBbHdheXMgdmlzaWJsZSBmb3IgZGVza3RvcCkgLS0+XG4gIEBpZiAoc2hvd0ZpbHRlcnNQYW5lbCgpKSB7XG4gICAgPGF4cC1sYXlvdXQtc3RhcnQtc2lkZT5cbiAgICAgIDxheHAtbGF5b3V0LWhlYWRlcj5cbiAgICAgICAgPGF4cC1sYXlvdXQtdGl0bGU+XG4gICAgICAgICAge3sgdCgnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuY29tcG9uZW50cy5maWx0ZXJzLnRpdGxlJykgfCBhc3luYyB9fVxuICAgICAgICA8L2F4cC1sYXlvdXQtdGl0bGU+XG4gICAgICA8L2F4cC1sYXlvdXQtaGVhZGVyPlxuICAgICAgPGF4cC1sYXlvdXQtY29udGVudD5cbiAgICAgICAgPGF4cC1sYXlvdXQtcmVuZGVyZXJcbiAgICAgICAgICAjZmlsdGVyc0Zvcm1cbiAgICAgICAgICBbbGF5b3V0XT1cInZtLmZvcm1EZWZpbml0aW9uKClcIlxuICAgICAgICAgIFtjb250ZXh0XT1cInZtLmZpbHRlckNvbnRleHQoKVwiXG4gICAgICAgICAgW2xvb2tdPVwiJ2dyb3VwJ1wiXG4gICAgICAgICAgKGNvbnRleHRDaGFuZ2UpPVwiaGFuZGxlRmlsdGVyc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAoY29udGV4dEluaXRpYXRlZCk9XCJoYW5kbGVGaWx0ZXJzSW5pdGlhdGVkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXhwLWxheW91dC1yZW5kZXJlcj5cbiAgICAgIDwvYXhwLWxheW91dC1jb250ZW50PlxuICAgICAgPGF4cC1sYXlvdXQtZm9vdGVyIGNsYXNzPVwiYXgtcC00IGF4LWJvcmRlci10XCIgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gICAgICAgIEBpZiAodm0uaGFzVW5hcHBsaWVkRmlsdGVycygpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXctZnVsbCBheC13YXJuaW5nLWxpZ2h0ZXN0IGF4LW1iLTIgYXgtcC0yIGF4LXJvdW5kZWQgYXgtYm9yZGVyIGF4LWJvcmRlci13YXJuaW5nLTIwMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yIGF4LXRleHQtd2FybmluZy04MDBcIj5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1leGNsYW1hdGlvbi10cmlhbmdsZSBheC10ZXh0LXNtXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQteHNcIj57e1xuICAgICAgICAgICAgICAgIHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuZmlsdGVycy5tZXNzYWdlcy53YXJuaW5nLnVuYXBwbGllZCcpIHwgYXN5bmNcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJheC13LWZ1bGxcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhdm0uY2FuRXhlY3V0ZSgpXCJcbiAgICAgICAgICBbdGV4dF09XCJ0KCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5hY3Rpb25zLmV4ZWN1dGUudGl0bGUnKSB8IGFzeW5jXCJcbiAgICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgICAob25DbGljayk9XCJleGVjdXRlKHsgbmFtZTogJ2V4ZWN1dGUtcmVwb3J0JyB9KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLXBsYXlcIj48L2F4LWljb24+XG4gICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPC9heHAtbGF5b3V0LWZvb3Rlcj5cbiAgICA8L2F4cC1sYXlvdXQtc3RhcnQtc2lkZT5cbiAgfVxuICA8YXhwLXBhZ2UtdG9vbGJhcj5cbiAgICA8YXhwLWxheW91dC1wcmVmaXg+XG4gICAgICBAaWYgKHZtLmhhc011bHRpcGxlTGF5b3V0cygpICYmIHNob3dSZXBvcnREaXNwbGF5KCkpIHtcbiAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJ2bS5jdXJyZW50TGF5b3V0KCk/LnRpdGxlXCI+XG4gICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IHt7IHZtLmN1cnJlbnRMYXlvdXQoKT8uaWNvbiB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICBAZm9yIChsYXlvdXQgb2Ygdm0uYXZhaWxhYmxlTGF5b3V0cygpOyB0cmFjayBsYXlvdXQuaWQpIHtcbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgICAgICBbdGV4dF09XCJsYXlvdXQudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInZtLmN1cnJlbnRMYXlvdXQoKT8uaWQgPT09IGxheW91dC5pZFwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJ2bS5zd2l0Y2hMYXlvdXQobGF5b3V0LmlkKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IHt7IGxheW91dC5pY29uIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIH1cbiAgICA8L2F4cC1sYXlvdXQtcHJlZml4PlxuICAgIDxheHAtbGF5b3V0LXN1ZmZpeD4gPC9heHAtbGF5b3V0LXN1ZmZpeD5cbiAgPC9heHAtcGFnZS10b29sYmFyPlxuXG4gIDwhLS0gTWFpbiBDb250ZW50OiBSZXBvcnQgRGlzcGxheSAtLT5cbiAgPGF4cC1wYWdlLWNvbnRlbnQgY2xhc3M9XCJheC1vdmVyZmxvdy1hdXRvXCI+XG4gICAgQGlmICh2bS5oYXNFcnJvcigpKSB7XG4gICAgICA8IS0tIEVycm9yIFN0YXRlIC0tPlxuICAgICAgPGF4cC1zdGF0ZS1tZXNzYWdlXG4gICAgICAgIGljb249XCJmYS1saWdodCBmYS1leGNsYW1hdGlvbi10cmlhbmdsZVwiXG4gICAgICAgIGxvb2s9XCJlcnJvclwiXG4gICAgICAgIFt0aXRsZV09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtdGl0bGUnXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cInZtLmVycm9yKCkgfHwgJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQnXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBzbG90PVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgIGxvb2s9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBbdGV4dF09XCJ0KCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5hY3Rpb25zLnJldHJ5LnRpdGxlJykgfCBhc3luY1wiXG4gICAgICAgICAgICAob25DbGljayk9XCJ2bS5jbGVhckVycm9yKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtcmVmcmVzaFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgfSBAZWxzZSBpZiAoIXZtLnJlcG9ydERlZmluaXRpb24oKSkge1xuICAgICAgPCEtLSBObyBSZXBvcnQgU2VsZWN0ZWQgU3RhdGUgLS0+XG4gICAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgICAgaWNvbj1cImZhLWxpZ2h0IGZhLWNoYXJ0LWxpbmVcIlxuICAgICAgICBbdGl0bGVdPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMucmVwb3J0LXZpZXdlci5lbXB0eS1zdGF0ZXMubm8tcmVwb3J0LnRpdGxlJ1wiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuY29tcG9uZW50cy5yZXBvcnQtdmlld2VyLmVtcHR5LXN0YXRlcy5uby1yZXBvcnQuZGVzY3JpcHRpb24nXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBzbG90PVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgIGxvb2s9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBbdGV4dF09XCJ0KCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5hY3Rpb25zLmJyb3dzZS1yZXBvcnRzLnRpdGxlJykgfCBhc3luY1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1mb2xkZXItb3BlblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVwb3J0RGlzcGxheVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgPC9heHAtcGFnZS1jb250ZW50PlxuPC9heHAtcGFnZS1sYXlvdXQ+XG5cbjwhLS0gRGVza3RvcDogUmVwb3J0IERpc3BsYXkgQXJlYSAtLT5cbjxuZy10ZW1wbGF0ZSAjcmVwb3J0RGlzcGxheT5cbiAgQGlmIChzaG93UmVwb3J0RGlzcGxheSgpKSB7XG4gICAgPCEtLSBEZXNrdG9wICYgTW9iaWxlOiBSZXBvcnQgRGlzcGxheSBBcmVhIC0tPlxuICAgIEBpZiAodm0uaXNUYWJsZUxheW91dCgpKSB7XG4gICAgICA8YXhwLXJlcG9ydC10YWJsZS12aWV3PiA8L2F4cC1yZXBvcnQtdGFibGUtdmlldz5cbiAgICB9IEBlbHNlIGlmICh2bS5pc0NoYXJ0TGF5b3V0KCkpIHtcbiAgICAgIDxheHAtcmVwb3J0LWNoYXJ0LXZpZXc+IDwvYXhwLXJlcG9ydC1jaGFydC12aWV3PlxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgPCEtLSBNb2JpbGU6IFNob3cgZmlsdGVycyAgLS0+XG4gICAgPGF4cC1sYXlvdXQtcmVuZGVyZXIgI2ZpbHRlcnNGb3JtIFtsYXlvdXRdPVwidm0uZm9ybURlZmluaXRpb24oKVwiIFtjb250ZXh0XT1cInZtLmZpbHRlckNvbnRleHQoKVwiIFtsb29rXT1cIidmaWVsZHNldCdcIj5cbiAgICA8L2F4cC1sYXlvdXQtcmVuZGVyZXI+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gTW9iaWxlOiBFeGVjdXRlIEJ1dHRvbiAtLT5cbkBpZiAoZGV2aWNlU2VydmljZS5pc1NtYWxsKCkgJiYgIXZtLmhhc0JlZW5FeGVjdXRlZCgpKSB7XG4gIDxheHAtcGFnZS1mb290ZXIgY2xhc3M9XCJheC1wLTIgYXgtYm9yZGVyLXRcIj5cbiAgICA8YXgtYnV0dG9uXG4gICAgICBjbGFzcz1cImF4LXctZnVsbFwiXG4gICAgICBbZGlzYWJsZWRdPVwiIXZtLmNhbkV4ZWN1dGUoKVwiXG4gICAgICBbdGV4dF09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuYWN0aW9ucy5leGVjdXRlLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgKG9uQ2xpY2spPVwiZXhlY3V0ZSh7IG5hbWU6ICdleGVjdXRlLXJlcG9ydCcgfSlcIlxuICAgID5cbiAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1wbGF5XCI+PC9heC1pY29uPlxuICAgICAgPC9heC1wcmVmaXg+XG4gICAgPC9heC1idXR0b24+XG4gIDwvYXhwLXBhZ2UtZm9vdGVyPlxufVxuIl19","import { AXBarChartComponent } from '@acorex/charts/bar-chart';\nimport { AXChartLegendComponent } from '@acorex/charts/chart-legend';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPWidgetCoreModule, AXPPageStatus } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXBarChartReportMapper } from '../../../../reports/report-mapper';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/translation\";\nimport * as i2 from \"@angular/common\";\nexport class AXPReportBarChartViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.AXPPageStatus = AXPPageStatus;\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Current chart layout configuration\n */\n this.chartLayout = computed(() => {\n const layout = this.vm.currentLayout();\n return layout?.layout.type === 'chart' ? layout.layout : null;\n }, ...(ngDevMode ? [{ debugName: \"chartLayout\" }] : []));\n /**\n * Chart configuration options\n */\n this.chartOptions = computed(() => {\n const chartLayout = this.chartLayout();\n return chartLayout?.options || null;\n }, ...(ngDevMode ? [{ debugName: \"chartOptions\" }] : []));\n /**\n * Chart type for rendering\n */\n this.chartType = computed(() => {\n const options = this.chartOptions();\n return options?.chartType || 'bar';\n }, ...(ngDevMode ? [{ debugName: \"chartType\" }] : []));\n /**\n * Data mapping configuration\n */\n this.dataMapping = computed(() => {\n const options = this.chartOptions();\n return options?.dataMapping || null;\n }, ...(ngDevMode ? [{ debugName: \"dataMapping\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n this.#fetchData = effect(() => {\n if (this.vm.allowFetchData() && this.vm.shouldExecuteReport() && this.chartOptions()) {\n // TODO: Implement chart data fetching\n console.log('Chart data fetch triggered', {\n chartType: this.chartType(),\n dataMapping: this.dataMapping(),\n });\n this.vm.fetchData().then((data) => {\n const barChartData = AXBarChartReportMapper((data?.data).data ?? {});\n this.barChartData.set(barChartData);\n console.log('barChartData', barChartData);\n });\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n this.barChartData = signal([], ...(ngDevMode ? [{ debugName: \"barChartData\" }] : []));\n this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"barChartOptions\" }] : []));\n this.legendOptions = signal({\n mode: 'horizontal',\n }, ...(ngDevMode ? [{ debugName: \"legendOptions\" }] : []));\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n #fetchData;\n //#endregion\n //#region ---- Event Handlers ----\n /**\n * Handle chart click events\n */\n handleChartClick(event) {\n // TODO: Implement chart click handling\n console.log('Chart clicked:', event);\n }\n /**\n * Handle chart data point selection\n */\n handleDataPointSelect(event) {\n // TODO: Implement data point selection\n console.log('Data point selected:', event);\n }\n //#endregion\n //#region ---- Helper Methods ----\n /**\n * Check if chart is ready to render\n */\n isChartReady() {\n return !!(this.chartOptions() && this.dataMapping());\n }\n /**\n * Get chart configuration for rendering\n */\n getChartConfig() {\n // TODO: Transform AXPReportChartOptions to chart library format\n return {\n type: this.chartType(),\n options: this.chartOptions(),\n dataMapping: this.dataMapping(),\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportBarChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportBarChartViewComponent, isStandalone: true, selector: \"axp-report-bar-chart-view\", ngImport: i0, template: \"<div class=\\\"axp-report-chart-view\\\" *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading\\\">\\n <div class=\\\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\\\">\\n </div>\\n <div class=\\\"__loading-text\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <div class=\\\"__chart-container\\\">\\n @if (chartLayout()?.header) {\\n <div class=\\\"__chart-header\\\">\\n <h3 class=\\\"__chart-title\\\">{{ chartLayout()?.header?.title }}</h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date\\\">{{ '@general:common.date.today' | translate | async }}</div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"__chart-body\\\">\\n <!-- Chart component will be rendered here -->\\n <div class=\\\"__chart-placeholder\\\">\\n <div class=\\\"__placeholder-content\\\">\\n <div class=\\\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\\\"\\n [class]=\\\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\\\">\\n <!-- Chart Area -->\\n <div class=\\\"ax-flex-0 ax-size-96\\\">\\n <ax-bar-chart #chart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <!-- Legend Area -->\\n @if (barChartData().length > 0) {\\n <div>\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"chart\\\"></ax-chart-legend>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <div class=\\\"__chart-footer\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </div>\\n }\\n </div>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-column\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</div>\", styles: [\".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i1.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: AXBarChartComponent, selector: \"ax-bar-chart\", inputs: [\"data\", \"options\"], outputs: [\"barClick\"] }, { kind: \"component\", type: AXChartLegendComponent, selector: \"ax-chart-legend\", inputs: [\"chart\", \"options\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"itemMouseLeave\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i1.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportBarChartViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-bar-chart-view', standalone: true, imports: [\n CommonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPStateMessageComponent,\n AXPWidgetCoreModule,\n AXBarChartComponent,\n AXChartLegendComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"axp-report-chart-view\\\" *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading\\\">\\n <div class=\\\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\\\">\\n </div>\\n <div class=\\\"__loading-text\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <div class=\\\"__chart-container\\\">\\n @if (chartLayout()?.header) {\\n <div class=\\\"__chart-header\\\">\\n <h3 class=\\\"__chart-title\\\">{{ chartLayout()?.header?.title }}</h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date\\\">{{ '@general:common.date.today' | translate | async }}</div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"__chart-body\\\">\\n <!-- Chart component will be rendered here -->\\n <div class=\\\"__chart-placeholder\\\">\\n <div class=\\\"__placeholder-content\\\">\\n <div class=\\\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\\\"\\n [class]=\\\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\\\">\\n <!-- Chart Area -->\\n <div class=\\\"ax-flex-0 ax-size-96\\\">\\n <ax-bar-chart #chart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <!-- Legend Area -->\\n @if (barChartData().length > 0) {\\n <div>\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"chart\\\"></ax-chart-legend>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <div class=\\\"__chart-footer\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </div>\\n }\\n </div>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-column\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</div>\", styles: [\".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWJhci1jaGFydC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvdmlld3MvcmVwb3J0LWJhci1jaGFydC12aWV3L3JlcG9ydC1iYXItY2hhcnQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC1iYXItY2hhcnQtdmlldy9yZXBvcnQtYmFyLWNoYXJ0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFxQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxzQkFBc0IsRUFBd0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FB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WEJhckNoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9iYXItY2hhcnQnO1xuaW1wb3J0IHsgQVhDaGFydExlZ2VuZENvbXBvbmVudCwgQVhDaGFydExlZ2VuZE9wdGlvbnMgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9jaGFydC1sZWdlbmQnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZU1vZHVsZSwgQVhQUGFnZVN0YXR1cyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQmFyQ2hhcnRSZXBvcnRNYXBwZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC1tYXBwZXInO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2hhcnRMYXlvdXQgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC50eXBlcyc7XG5pbXBvcnQgeyBBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuLi8uLi9yZXBvcnQtdmlld2VyLnZpZXdtb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtYmFyLWNoYXJ0LXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gICAgQVhCYXJDaGFydENvbXBvbmVudCxcbiAgICBBWENoYXJ0TGVnZW5kQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LWJhci1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3JlcG9ydC1iYXItY2hhcnQtdmlldy5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSZXBvcnRCYXJDaGFydFZpZXdDb21wb25lbnQge1xuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEFYUFBhZ2VTdGF0dXMgPSBBWFBQYWdlU3RhdHVzO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuICAvKipcbiAgICogQ3VycmVudCBjaGFydCBsYXlvdXQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0TGF5b3V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGxheW91dCA9IHRoaXMudm0uY3VycmVudExheW91dCgpO1xuICAgIHJldHVybiBsYXlvdXQ/LmxheW91dC50eXBlID09PSAnY2hhcnQnID8gKGxheW91dC5sYXlvdXQgYXMgQVhQUmVwb3J0Q2hhcnRMYXlvdXQpIDogbnVsbDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENoYXJ0IGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0T3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjaGFydExheW91dCA9IHRoaXMuY2hhcnRMYXlvdXQoKTtcbiAgICByZXR1cm4gY2hhcnRMYXlvdXQ/Lm9wdGlvbnMgfHwgbnVsbDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENoYXJ0IHR5cGUgZm9yIHJlbmRlcmluZ1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0VHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jaGFydE9wdGlvbnMoKTtcbiAgICByZXR1cm4gb3B0aW9ucz8uY2hhcnRUeXBlIHx8ICdiYXInO1xuICB9KTtcblxuICAvKipcbiAgICogRGF0YSBtYXBwaW5nIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhTWFwcGluZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jaGFydE9wdGlvbnMoKTtcbiAgICByZXR1cm4gb3B0aW9ucz8uZGF0YU1hcHBpbmcgfHwgbnVsbDtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBFZmZlY3RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgdG8gaGFuZGxlIGRhdGEgZmV0Y2hpbmcgd2hlbiBjaGFydCBjb25maWd1cmF0aW9uIGNoYW5nZXNcbiAgICovXG4gICNmZXRjaERhdGEgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLnZtLmFsbG93RmV0Y2hEYXRhKCkgJiYgdGhpcy52bS5zaG91bGRFeGVjdXRlUmVwb3J0KCkgJiYgdGhpcy5jaGFydE9wdGlvbnMoKSkge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGNoYXJ0IGRhdGEgZmV0Y2hpbmdcbiAgICAgIGNvbnNvbGUubG9nKCdDaGFydCBkYXRhIGZldGNoIHRyaWdnZXJlZCcsIHtcbiAgICAgICAgY2hhcnRUeXBlOiB0aGlzLmNoYXJ0VHlwZSgpLFxuICAgICAgICBkYXRhTWFwcGluZzogdGhpcy5kYXRhTWFwcGluZygpLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnZtLmZldGNoRGF0YSgpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgYmFyQ2hhcnREYXRhID0gQVhCYXJDaGFydFJlcG9ydE1hcHBlcigoKGRhdGE/LmRhdGEgYXMgYW55KS5kYXRhIGFzIGFueSkgPz8ge30pO1xuICAgICAgICB0aGlzLmJhckNoYXJ0RGF0YS5zZXQoYmFyQ2hhcnREYXRhKTtcbiAgICAgICAgY29uc29sZS5sb2coJ2JhckNoYXJ0RGF0YScsIGJhckNoYXJ0RGF0YSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjaGFydCBjbGljayBldmVudHNcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVDaGFydENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgY2hhcnQgY2xpY2sgaGFuZGxpbmdcbiAgICBjb25zb2xlLmxvZygnQ2hhcnQgY2xpY2tlZDonLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGNoYXJ0IGRhdGEgcG9pbnQgc2VsZWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRGF0YVBvaW50U2VsZWN0KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgZGF0YSBwb2ludCBzZWxlY3Rpb25cbiAgICBjb25zb2xlLmxvZygnRGF0YSBwb2ludCBzZWxlY3RlZDonLCBldmVudCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjaGFydCBpcyByZWFkeSB0byByZW5kZXJcbiAgICovXG4gIHByb3RlY3RlZCBpc0NoYXJ0UmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuY2hhcnRPcHRpb25zKCkgJiYgdGhpcy5kYXRhTWFwcGluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY2hhcnQgY29uZmlndXJhdGlvbiBmb3IgcmVuZGVyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q2hhcnRDb25maWcoKTogYW55IHtcbiAgICAvLyBUT0RPOiBUcmFuc2Zvcm0gQVhQUmVwb3J0Q2hhcnRPcHRpb25zIHRvIGNoYXJ0IGxpYnJhcnkgZm9ybWF0XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMuY2hhcnRUeXBlKCksXG4gICAgICBvcHRpb25zOiB0aGlzLmNoYXJ0T3B0aW9ucygpLFxuICAgICAgZGF0YU1hcHBpbmc6IHRoaXMuZGF0YU1hcHBpbmcoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGJhckNoYXJ0RGF0YSA9IHNpZ25hbDxBWEJhckNoYXJ0VmFsdWU+KFtdKTtcblxuICBwcm90ZWN0ZWQgYmFyQ2hhcnRPcHRpb25zID0gc2lnbmFsPEFYQmFyQ2hhcnRPcHRpb24+KHt9KTtcblxuICBwcm90ZWN0ZWQgbGVnZW5kT3B0aW9ucyA9IHNpZ25hbDxBWENoYXJ0TGVnZW5kT3B0aW9ucz4oe1xuICAgIG1vZGU6ICdob3Jpem9udGFsJyxcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iLCI8ZGl2IGNsYXNzPVwiYXhwLXJlcG9ydC1jaGFydC12aWV3XCIgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gIEBpZiAodm0uc3RhdHVzKCkgPT09IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZykge1xuICA8IS0tIExvYWRpbmcgU3RhdGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJfX2xvYWRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtc3Bpbm5lciBheC1zcGluIGF4LWJvcmRlci00IGF4LWJvcmRlci1ncmF5LTIwMCBheC1ib3JkZXItdC1wcmltYXJ5IGF4LXJvdW5kZWQtZnVsbCBheC13LTEyIGF4LWgtMTJcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiX19sb2FkaW5nLXRleHRcIj5cbiAgICAgIHt7IHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQubWVzc2FnZXMubG9hZGluZycpIHwgYXN5bmMgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIH0gQGVsc2UgaWYgKHZtLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLkVycm9yKSB7XG4gIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gIDxheHAtc3RhdGUtbWVzc2FnZSBtb2RlPVwiZXJyb3JcIiBpY29uPVwiZmEtbGlnaHQgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcIlxuICAgIFt0aXRsZV09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtdGl0bGUnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwidm0uZXJyb3IoKSB8fCAnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtZGVzY3JpcHRpb24nXCI+XG4gIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gIH0gQGVsc2UgaWYgKGlzQ2hhcnRSZWFkeSgpKSB7XG4gIDwhLS0gQ2hhcnQgQ29udGVudCAtLT5cbiAgPGRpdiBjbGFzcz1cIl9fY2hhcnQtY29udGFpbmVyXCI+XG4gICAgQGlmIChjaGFydExheW91dCgpPy5oZWFkZXIpIHtcbiAgICA8ZGl2IGNsYXNzPVwiX19jaGFydC1oZWFkZXJcIj5cbiAgICAgIDxoMyBjbGFzcz1cIl9fY2hhcnQtdGl0bGVcIj57eyBjaGFydExheW91dCgpPy5oZWFkZXI/LnRpdGxlIH19PC9oMz5cbiAgICAgIEBpZiAoY2hhcnRMYXlvdXQoKT8uaGVhZGVyPy5zaG93RGF0ZSkge1xuICAgICAgPGRpdiBjbGFzcz1cIl9fY2hhcnQtZGF0ZVwiPnt7ICdAZ2VuZXJhbDpjb21tb24uZGF0ZS50b2RheScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWJvZHlcIj5cbiAgICAgIDwhLS0gQ2hhcnQgY29tcG9uZW50IHdpbGwgYmUgcmVuZGVyZWQgaGVyZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LXBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3BsYWNlaG9sZGVyLWNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LXdyYXAgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWdhcC0xMFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwibGVnZW5kT3B0aW9ucygpLm1vZGUgPT09ICdob3Jpem9udGFsJyA/ICdheC1mbGV4LWNvbCcgOiAnYXgtZmxleC1yb3cnXCI+XG4gICAgICAgICAgICA8IS0tIENoYXJ0IEFyZWEgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC0wIGF4LXNpemUtOTZcIj5cbiAgICAgICAgICAgICAgPGF4LWJhci1jaGFydCAjY2hhcnQgW2RhdGFdPVwiYmFyQ2hhcnREYXRhKClcIiBbb3B0aW9uc109XCJiYXJDaGFydE9wdGlvbnMoKVwiPjwvYXgtYmFyLWNoYXJ0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIExlZ2VuZCBBcmVhIC0tPlxuICAgICAgICAgICAgQGlmIChiYXJDaGFydERhdGEoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8YXgtY2hhcnQtbGVnZW5kIFtvcHRpb25zXT1cImxlZ2VuZE9wdGlvbnMoKVwiIFtjaGFydF09XCJjaGFydFwiPjwvYXgtY2hhcnQtbGVnZW5kPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGNoYXJ0TGF5b3V0KCk/LmZvb3Rlcikge1xuICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWZvb3RlclwiPlxuICAgICAgQGlmIChjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWwpIHtcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWxcIj48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgPCEtLSBObyBDb25maWd1cmF0aW9uIFN0YXRlIC0tPlxuICA8YXhwLXN0YXRlLW1lc3NhZ2UgaWNvbj1cImZhLWxpZ2h0IGZhLWNoYXJ0LWNvbHVtblwiXG4gICAgW3RpdGxlXT1cIidAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5jb21wb25lbnRzLmNoYXJ0LmVtcHR5LXN0YXRlcy5uby1jb25maWcudGl0bGUnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQuZW1wdHktc3RhdGVzLm5vLWNvbmZpZy5kZXNjcmlwdGlvbidcIj5cbiAgPC9heHAtc3RhdGUtbWVzc2FnZT5cbiAgfVxuPC9kaXY+Il19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtcmVwb3J0LW1hbmFnZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2Fjb3JleC1tb2R1bGVzLXJlcG9ydC1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i2","i1","i3","i4"],"mappings":"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"}
|