@acorex/modules 20.2.2 → 20.2.4-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/index.d.ts +16 -8
- package/content-management/index.d.ts +48 -3
- package/document-management/index.d.ts +27 -24
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CdZ9BHOa.mjs → acorex-modules-auth-acorex-modules-auth-C8p1VeqM.mjs} +10 -10
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CdZ9BHOa.mjs.map → acorex-modules-auth-acorex-modules-auth-C8p1VeqM.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-D4ehfpnB.mjs → acorex-modules-auth-app-chooser.component-CDKLbD_u.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-D4ehfpnB.mjs.map → acorex-modules-auth-app-chooser.component-CDKLbD_u.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-BHRC357P.mjs → acorex-modules-auth-login.module-DGPRxnXo.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-BHRC357P.mjs.map → acorex-modules-auth-login.module-DGPRxnXo.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-DAYMmpBW.mjs → acorex-modules-auth-master.layout-BNFGuQQs.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-DAYMmpBW.mjs.map → acorex-modules-auth-master.layout-BNFGuQQs.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-B0Q3w45s.mjs → acorex-modules-auth-oauth-callback.component-B3sSFdOA.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-B0Q3w45s.mjs.map → acorex-modules-auth-oauth-callback.component-B3sSFdOA.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-BJpxtJYh.mjs → acorex-modules-auth-password.component-Dyox9sR4.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-BJpxtJYh.mjs.map → acorex-modules-auth-password.component-Dyox9sR4.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-password.component-ln2kDKPR.mjs +226 -0
- package/fesm2022/acorex-modules-auth-password.component-ln2kDKPR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-hvqL2dCH.mjs → acorex-modules-auth-routes-7vr8T08D.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-hvqL2dCH.mjs.map → acorex-modules-auth-routes-7vr8T08D.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-kPuT8yUw.mjs → acorex-modules-auth-two-factor.module-D6XCUP_A.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-kPuT8yUw.mjs.map → acorex-modules-auth-two-factor.module-D6XCUP_A.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-Chx_jTSJ.mjs → acorex-modules-auth-user-sessions.component-B5aBDmdR.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-user-sessions.component-Chx_jTSJ.mjs.map → acorex-modules-auth-user-sessions.component-B5aBDmdR.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-calendar-management.mjs +1 -1
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-common.mjs +503 -235
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +378 -457
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +119 -4
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +9 -9
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +0 -1
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-C4G6L94e.mjs → acorex-modules-document-management-acorex-modules-document-management-D9oPjJnn.mjs} +875 -142
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-D9oPjJnn.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-CbDcYxEZ.mjs → acorex-modules-document-management-attachment-widget.component-CcWvTWv0.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-CbDcYxEZ.mjs.map → acorex-modules-document-management-attachment-widget.component-CcWvTWv0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BCs4aZKn.mjs → acorex-modules-document-management-create-folder-dialog.component-DPFIPNE_.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BCs4aZKn.mjs.map → acorex-modules-document-management-create-folder-dialog.component-DPFIPNE_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-v1VroVv-.mjs → acorex-modules-document-management-details-view.component-BKNvUhdl.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-v1VroVv-.mjs.map → acorex-modules-document-management-details-view.component-BKNvUhdl.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs +116 -0
- package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-C5gJtH7_.mjs → acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-C5gJtH7_.mjs.map → acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-D5OwpnAP.mjs → acorex-modules-document-management-drive.component-DutBXTtm.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive.component-D5OwpnAP.mjs.map → acorex-modules-document-management-drive.component-DutBXTtm.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DkHt-dTD.mjs → acorex-modules-document-management-large-icons-view.component-DX2_xsbq.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DkHt-dTD.mjs.map → acorex-modules-document-management-large-icons-view.component-DX2_xsbq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-D2nA00k3.mjs → acorex-modules-document-management-large-tiles-view.component-CshjCgG5.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-D2nA00k3.mjs.map → acorex-modules-document-management-large-tiles-view.component-CshjCgG5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-RaW67V7O.mjs → acorex-modules-document-management-list-view.component-DdLTVccZ.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-RaW67V7O.mjs.map → acorex-modules-document-management-list-view.component-DdLTVccZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs → acorex-modules-document-management-meta-choose-popup.component-BomZu2bT.mjs} +2 -2
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BomZu2bT.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-B6nu7fmX.mjs → acorex-modules-document-management-permission-definition.provider-_AXz3sdF.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-B6nu7fmX.mjs.map → acorex-modules-document-management-permission-definition.provider-_AXz3sdF.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component--6V1Zaoz.mjs → acorex-modules-document-management-rename-node-dialog.component-DZRAXwFy.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component--6V1Zaoz.mjs.map → acorex-modules-document-management-rename-node-dialog.component-DZRAXwFy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-Cl1MKsX9.mjs → acorex-modules-document-management-small-icons-view.component-DG3AbQJO.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-Cl1MKsX9.mjs.map → acorex-modules-document-management-small-icons-view.component-DG3AbQJO.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-xoO1Loxt.mjs → acorex-modules-document-management-small-tiles-view.component-Cx9jczo-.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-xoO1Loxt.mjs.map → acorex-modules-document-management-small-tiles-view.component-Cx9jczo-.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-CeQnu6WW.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-CLSHVjDE.mjs} +34 -12
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CLSHVjDE.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs → acorex-modules-form-template-management-category.entity-BBjVWSJ_.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs.map → acorex-modules-form-template-management-category.entity-BBjVWSJ_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CfOa446m.mjs → acorex-modules-form-template-management-permission-definition.provider-I8BY9RVh.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CfOa446m.mjs.map → acorex-modules-form-template-management-permission-definition.provider-I8BY9RVh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-hLlHnm-I.mjs → acorex-modules-form-template-management-settings.provider-B8ip0Ou_.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-hLlHnm-I.mjs.map → acorex-modules-form-template-management-settings.provider-B8ip0Ou_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs → acorex-modules-form-template-management-template-picker.component-BNM3RyDv.mjs} +2 -3
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-BNM3RyDv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-D_Ys5kRT.mjs → acorex-modules-form-template-management-template-widget-edit.component-DFfvdZqJ.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-D_Ys5kRT.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-DFfvdZqJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs → acorex-modules-form-template-management-template.entity-BCpgfVMz.mjs} +10 -14
- package/fesm2022/acorex-modules-form-template-management-template.entity-BCpgfVMz.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CE13nuke.mjs → acorex-modules-form-template-management-viewer-popup.component-DDfjwbrL.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CE13nuke.mjs.map → acorex-modules-form-template-management-viewer-popup.component-DDfjwbrL.mjs.map} +1 -1
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-CTFlKzqy.mjs → acorex-modules-help-desk-acorex-modules-help-desk-CAibWOZT.mjs} +77 -36
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-CAibWOZT.mjs.map +1 -0
- package/fesm2022/acorex-modules-help-desk-capture-screen.component-BSBozesT.mjs +28 -0
- package/fesm2022/acorex-modules-help-desk-capture-screen.component-BSBozesT.mjs.map +1 -0
- package/fesm2022/acorex-modules-help-desk.mjs +2 -0
- package/fesm2022/acorex-modules-help-desk.mjs.map +1 -0
- package/fesm2022/acorex-modules-identifier-management.mjs +81 -39
- package/fesm2022/acorex-modules-identifier-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +4 -3
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +0 -1
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs +121 -0
- package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs.map +1 -0
- package/fesm2022/acorex-modules-meeting-management.mjs +2899 -0
- package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-notification-management-notification-page.component-TLxLpxzE.mjs +544 -0
- package/fesm2022/acorex-modules-notification-management-notification-page.component-TLxLpxzE.mjs.map +1 -0
- package/fesm2022/acorex-modules-notification-management.mjs +145 -126
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-employee.entity-CSY_U9Bl.mjs → acorex-modules-organization-management-employee.entity-CRc2YjNR.mjs} +114 -68
- package/fesm2022/acorex-modules-organization-management-employee.entity-CRc2YjNR.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +22 -1
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-B8X8tXFw.mjs → acorex-modules-party-management-acorex-modules-party-management-BUc-9XOG.mjs} +6 -6
- package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-B8X8tXFw.mjs.map → acorex-modules-party-management-acorex-modules-party-management-BUc-9XOG.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-b8aNBCpT.mjs → acorex-modules-party-management-party-identifier-type.entity-Bgq-y9TN.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-b8aNBCpT.mjs.map → acorex-modules-party-management-party-identifier-type.entity-Bgq-y9TN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs → acorex-modules-party-management-party-identifier.entity-CP47qbc-.mjs} +12 -10
- package/fesm2022/acorex-modules-party-management-party-identifier.entity-CP47qbc-.mjs.map +1 -0
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs → acorex-modules-party-management-party-relationship.entity-pGea5plN.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs.map → acorex-modules-party-management-party-relationship.entity-pGea5plN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-role.entity-C5BeakjX.mjs → acorex-modules-party-management-party-role.entity-CDt7Rxu7.mjs} +7 -7
- package/fesm2022/acorex-modules-party-management-party-role.entity-CDt7Rxu7.mjs.map +1 -0
- package/fesm2022/{acorex-modules-party-management-party.entity-Blwg8o3o.mjs → acorex-modules-party-management-party.entity-DAvqOPic.mjs} +4 -4
- package/fesm2022/acorex-modules-party-management-party.entity-DAvqOPic.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management.mjs +1 -1
- package/fesm2022/{acorex-modules-platform-management-list-version.component-DTfLeVbH.mjs → acorex-modules-platform-management-list-version.component-kFe_wuWc.mjs} +3 -3
- package/fesm2022/{acorex-modules-platform-management-list-version.component-DTfLeVbH.mjs.map → acorex-modules-platform-management-list-version.component-kFe_wuWc.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +12 -232
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +98 -97
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-CPR6H1R1.mjs → acorex-modules-report-management-report-create-root.component-L-7aG8op.mjs} +2 -2
- package/fesm2022/acorex-modules-report-management-report-create-root.component-L-7aG8op.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +5 -5
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs → acorex-modules-settings-management-setting-page.component-D-NKWNvS.mjs} +11 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-D-NKWNvS.mjs.map +1 -0
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs → acorex-modules-task-management-task-board.page-DbpqZaC7.mjs} +16 -11
- package/fesm2022/acorex-modules-task-management-task-board.page-DbpqZaC7.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management.mjs +3026 -2821
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management.mjs +39 -1
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/form-template-management/index.d.ts +3 -0
- package/help-desk/README.md +3 -0
- package/{issue-management → help-desk}/index.d.ts +12 -12
- package/identifier-management/index.d.ts +15 -16
- package/meeting-management/README.md +29 -0
- package/meeting-management/index.d.ts +248 -0
- package/notification-management/index.d.ts +6 -4
- package/package.json +24 -20
- package/platform-management/index.d.ts +1 -12
- package/task-management/index.d.ts +34 -2
- package/workflow-management/index.d.ts +4 -33
- package/fesm2022/acorex-modules-auth-password.component-NAY46d_2.mjs +0 -226
- package/fesm2022/acorex-modules-auth-password.component-NAY46d_2.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C4G6L94e.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CeQnu6WW.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs.map +0 -1
- package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-CTFlKzqy.mjs.map +0 -1
- package/fesm2022/acorex-modules-issue-management-capture-screen.component-DDvum8EG.mjs +0 -28
- package/fesm2022/acorex-modules-issue-management-capture-screen.component-DDvum8EG.mjs.map +0 -1
- package/fesm2022/acorex-modules-issue-management.mjs +0 -2
- package/fesm2022/acorex-modules-issue-management.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-employee.entity-CSY_U9Bl.mjs.map +0 -1
- package/fesm2022/acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs.map +0 -1
- package/fesm2022/acorex-modules-party-management-party-role.entity-C5BeakjX.mjs.map +0 -1
- package/fesm2022/acorex-modules-party-management-party.entity-Blwg8o3o.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-list-terms.component-B1gl5xfT.mjs +0 -93
- package/fesm2022/acorex-modules-platform-management-list-terms.component-B1gl5xfT.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-create-root.component-CPR6H1R1.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs +0 -244
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs.map +0 -1
- package/issue-management/README.md +0 -3
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs","sources":["../tmp-esm2022/workflow-management/lib/features/task-board/settings.keys.js","../tmp-esm2022/workflow-management/lib/features/task-board/task-board.viewmodel.js","../tmp-esm2022/workflow-management/lib/features/task-board/task-board-detail-panel/task-board-detail-panel.component.js","../tmp-esm2022/workflow-management/lib/features/task-board/views/task-board-calendar-view/task-board-calendar-view.component.js","../tmp-esm2022/workflow-management/lib/features/task-board/views/task-board-grid-view/task-board-grid-view.component.js","../tmp-esm2022/workflow-management/lib/features/task-board/views/task-board-kanban-view/task-board-kanban-view.component.js","../tmp-esm2022/workflow-management/lib/features/task-board/views/task-board-status-grouped-grid-view/task-board-status-grouped-grid-view.component.js","../tmp-esm2022/workflow-management/lib/features/task-board/task-board.page.js"],"sourcesContent":["export var AXMTaskBoardSettings;\n(function (AXMTaskBoardSettings) {\n AXMTaskBoardSettings[\"ViewMode\"] = \"taskboard.viewMode\";\n AXMTaskBoardSettings[\"ViewCategory\"] = \"taskboard.viewCategory\";\n AXMTaskBoardSettings[\"DaysCount\"] = \"taskboard.calendar.daysCount\";\n AXMTaskBoardSettings[\"CurrentDate\"] = \"taskboard.calendar.currentDate\";\n AXMTaskBoardSettings[\"SelectedTaskTypeFilter\"] = \"taskboard.filter.selectedTaskType\";\n})(AXMTaskBoardSettings || (AXMTaskBoardSettings = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Mua2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy93b3JrZmxvdy1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC9zZXR0aW5ncy5rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLG9CQU1YO0FBTkQsV0FBWSxvQkFBb0I7SUFDOUIsdURBQStCLENBQUE7SUFDL0IsK0RBQXVDLENBQUE7SUFDdkMsa0VBQTBDLENBQUE7SUFDMUMsc0VBQThDLENBQUE7SUFDOUMsb0ZBQTRELENBQUE7QUFDOUQsQ0FBQyxFQU5XLG9CQUFvQixLQUFwQixvQkFBb0IsUUFNL0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBBWE1UYXNrQm9hcmRTZXR0aW5ncyB7XG4gIFZpZXdNb2RlID0gJ3Rhc2tib2FyZC52aWV3TW9kZScsXG4gIFZpZXdDYXRlZ29yeSA9ICd0YXNrYm9hcmQudmlld0NhdGVnb3J5JyxcbiAgRGF5c0NvdW50ID0gJ3Rhc2tib2FyZC5jYWxlbmRhci5kYXlzQ291bnQnLFxuICBDdXJyZW50RGF0ZSA9ICd0YXNrYm9hcmQuY2FsZW5kYXIuY3VycmVudERhdGUnLFxuICBTZWxlY3RlZFRhc2tUeXBlRmlsdGVyID0gJ3Rhc2tib2FyZC5maWx0ZXIuc2VsZWN0ZWRUYXNrVHlwZScsXG59XG4iXX0=","import { AXPSettingService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withMethods, withState } from '@ngrx/signals';\nimport { AXMTaskBoardSettings } from './settings.keys';\nimport { AXPTaskBoardService } from './task-board.service';\nexport const AXMTaskBoardViewModel = signalStore({ providedIn: 'root' }, withState(() => ({\n daysCount: 7,\n taskTypes: [],\n isLoading: true,\n detailPanel: false,\n selectedTask: null,\n rangeStartDate: null,\n currentDate: new Date(),\n currentViewMode: 'month',\n selectedTaskTypeName: null,\n currentViewCategory: 'calendar',\n})), withComputed((store) => ({\n selectedTaskType: computed(() => {\n const name = store.selectedTaskTypeName();\n if (!name) {\n return null;\n }\n return store.taskTypes().find((tt) => tt.name === name) || null;\n }),\n // (Optional but recommended) Add a computed signal to easily check if a task is selected\n isTaskSelected: computed(() => store.selectedTask() !== null),\n isDetailPanelOpen: computed(() => store.detailPanel()),\n endDate: computed(() => {\n const currentDate = store.currentDate();\n const daysCount = store.daysCount();\n return new Date(currentDate.getTime() + daysCount * 24 * 60 * 60 * 1000);\n }),\n})), withMethods((store, settingService = inject(AXPSettingService), taskBoardService = inject(AXPTaskBoardService)) => {\n // Create a private method for getting the user-scoped settings to avoid repetition\n const userScopedSettings = () => settingService.scope(AXPPlatformScope.User);\n return {\n async initialize() {\n patchState(store, { isLoading: true });\n try {\n // 1. Load Task Types first\n const taskTypes = await taskBoardService.getTaskTypes();\n patchState(store, { taskTypes });\n // 2. Load Persisted Settings individually\n const [savedDateString, savedViewMode, savedViewCategory, savedTaskTypeName] = await Promise.all([\n userScopedSettings().get(AXMTaskBoardSettings.CurrentDate),\n userScopedSettings().get(AXMTaskBoardSettings.ViewMode),\n userScopedSettings().get(AXMTaskBoardSettings.ViewCategory),\n userScopedSettings().get(AXMTaskBoardSettings.SelectedTaskTypeFilter),\n ]);\n patchState(store, {\n currentViewMode: savedViewMode || 'month',\n currentViewCategory: savedViewCategory || 'calendar',\n currentDate: savedDateString ? new Date(savedDateString) : new Date(),\n selectedTaskTypeName: savedTaskTypeName || null,\n isLoading: false,\n });\n }\n catch (error) {\n console.error('Error initializing TaskBoard ViewModel:', error);\n patchState(store, {\n currentViewMode: 'month',\n currentDate: new Date(),\n selectedTaskTypeName: null,\n taskTypes: store.taskTypes(),\n isLoading: false,\n });\n }\n },\n setViewCategory(mode) {\n switch (mode) {\n case 'calendar':\n this.setViewMode('month');\n break;\n case 'table':\n this.setViewMode('grid');\n break;\n case 'kanban':\n this.setViewMode('kanban');\n break;\n }\n this.setCategory(mode);\n },\n setCategory(mode) {\n patchState(store, { currentViewCategory: mode });\n userScopedSettings()\n .set(AXMTaskBoardSettings.ViewCategory, mode)\n .catch((error) => console.error('Error saving calendar view category:', error));\n },\n setViewMode(mode) {\n if ((mode === 'kanban' || mode === 'status-grouped-grid') && store.selectedTaskTypeName() === null) {\n const taskTypeName = store.taskTypes()[0]?.name;\n if (taskTypeName) {\n patchState(store, { selectedTaskTypeName: taskTypeName });\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedTaskTypeFilter, taskTypeName)\n .catch((error) => console.error('Error saving selected task type filter:', error));\n }\n }\n patchState(store, { currentViewMode: mode });\n userScopedSettings()\n .set(AXMTaskBoardSettings.ViewMode, mode)\n .catch((error) => console.error('Error saving calendar view mode:', error));\n },\n setCurrentDate(date) {\n patchState(store, { currentDate: new Date(date) });\n userScopedSettings()\n .set(AXMTaskBoardSettings.CurrentDate, date.toISOString())\n .catch((error) => console.error('Error saving current date:', error));\n },\n setSelectedTaskTypeProvider(taskType) {\n const taskTypeName = taskType ? taskType.name : null;\n patchState(store, { selectedTaskTypeName: taskTypeName });\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedTaskTypeFilter, taskTypeName)\n .catch((error) => console.error('Error saving selected task type filter:', error));\n },\n /**\n * Sets the currently selected task. Pass `null` to clear the selection.\n * @param task The task to select, or null.\n */\n selectTask(task) {\n patchState(store, { selectedTask: task });\n },\n /**\n * A convenience method to clear the currently selected task.\n */\n clearSelectedTask() {\n patchState(store, { selectedTask: null });\n },\n openDetailPanel() {\n patchState(store, { detailPanel: true });\n },\n closeDetailPanel() {\n patchState(store, { detailPanel: false });\n },\n toggleDetailPanel() {\n patchState(store, { detailPanel: !store.detailPanel() });\n },\n async getStatusName(key, provider) {\n return taskBoardService.getStatusName(key, provider);\n },\n /**\n * Sets the start date for a new range selection.\n * Pass `null` to clear the selection.\n * @param date The start date of the range.\n */\n setRangeStartDate(date) {\n patchState(store, { rangeStartDate: date });\n },\n setDaysCount(days) {\n const count = Math.max(1, days);\n patchState(store, { daysCount: count });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DaysCount, count)\n .catch((error) => console.error('Error saving days count:', error));\n },\n };\n}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC52aWV3bW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvd29ya2Zsb3ctbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdGFzay1ib2FyZC52aWV3bW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFrQjNELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFdBQVcsQ0FDOUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQ3RCLFNBQVMsQ0FBb0IsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNsQyxTQUFTLEVBQUUsQ0FBQztJQUNaLFNBQVMsRUFBRSxFQUFFO0lBQ2IsU0FBUyxFQUFFLElBQUk7SUFDZixXQUFXLEVBQUUsS0FBSztJQUNsQixZQUFZLEVBQUUsSUFBSTtJQUNsQixjQUFjLEVBQUUsSUFBSTtJQUNwQixXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUU7SUFDdkIsZUFBZSxFQUFFLE9BQU87SUFDeEIsb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixtQkFBbUIsRUFBRSxVQUFVO0NBQ2hDLENBQUMsQ0FBQyxFQUVILFlBQVksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENB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LFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRDs7OztXQUlHO1FBQ0gsaUJBQWlCLENBQUMsSUFBaUI7WUFDakMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxZQUFZLENBQUMsSUFBWTtZQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEMsa0JBQWtCLEVBQUU7aUJBQ2pCLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2lCQUMxQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFNjaGVkdWxlclZpZXcgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2NoZWR1bGVyJztcbmltcG9ydCB7IEFYUFNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQUGxhdGZvcm1TY29wZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBUYXNrLCBBWFBXb3JrZmxvd1Rhc2tQcm92aWRlciB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd29ya2Zsb3cnO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGF0Y2hTdGF0ZSwgc2lnbmFsU3RvcmUsIHdpdGhDb21wdXRlZCwgd2l0aE1ldGhvZHMsIHdpdGhTdGF0ZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkU2V0dGluZ3MgfSBmcm9tICcuL3NldHRpbmdzLmtleXMnO1xuaW1wb3J0IHsgQVhQVGFza0JvYXJkU2VydmljZSB9IGZyb20gJy4vdGFzay1ib2FyZC5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgQVhQVGFza0JvYXJkVmlld01vZGUgPSBBWFNjaGVkdWxlclZpZXcgfCAna2FuYmFuJyB8ICdncmlkJyB8ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJztcbmV4cG9ydCB0eXBlIEFYUFRhc2tCb2FyZFZpZXdDYXRlZ29yeSA9ICdjYWxlbmRhcicgfCAndGFibGUnIHwgJ2thbmJhbic7XG5cbnR5cGUgQVhQVGFza0JvYXJkU3RhdGUgPSB7XG4gIGRheXNDb3VudDogbnVtYmVyO1xuICBjdXJyZW50RGF0ZTogRGF0ZTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBkZXRhaWxQYW5lbDogYm9vbGVhbjtcbiAgcmFuZ2VTdGFydERhdGU6IERhdGUgfCBudWxsO1xuICBzZWxlY3RlZFRhc2s6IEFYUFRhc2sgfCBudWxsO1xuICBzZWxlY3RlZFRhc2tUeXBlTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgdGFza1R5cGVzOiBBWFBXb3JrZmxvd1Rhc2tQcm92aWRlcltdO1xuICBjdXJyZW50Vmlld01vZGU6IEFYUFRhc2tCb2FyZFZpZXdNb2RlO1xuICBjdXJyZW50Vmlld0NhdGVnb3J5OiBBWFBUYXNrQm9hcmRWaWV3Q2F0ZWdvcnk7XG59O1xuXG5leHBvcnQgY29uc3QgQVhNVGFza0JvYXJkVmlld01vZGVsID0gc2lnbmFsU3RvcmUoXG4gIHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXG4gIHdpdGhTdGF0ZTxBWFBUYXNrQm9hcmRTdGF0ZT4oKCkgPT4gKHtcbiAgICBkYXlzQ291bnQ6IDcsXG4gICAgdGFza1R5cGVzOiBbXSxcbiAgICBpc0xvYWRpbmc6IHRydWUsXG4gICAgZGV0YWlsUGFuZWw6IGZhbHNlLFxuICAgIHNlbGVjdGVkVGFzazogbnVsbCxcbiAgICByYW5nZVN0YXJ0RGF0ZTogbnVsbCxcbiAgICBjdXJyZW50RGF0ZTogbmV3IERhdGUoKSxcbiAgICBjdXJyZW50Vmlld01vZGU6ICdtb250aCcsXG4gICAgc2VsZWN0ZWRUYXNrVHlwZU5hbWU6IG51bGwsXG4gICAgY3VycmVudFZpZXdDYXRlZ29yeTogJ2NhbGVuZGFyJyxcbiAgfSkpLFxuXG4gIHdpdGhDb21wdXRlZCgoc3RvcmUpID0+ICh7XG4gICAgc2VsZWN0ZWRUYXNrVHlwZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IHN0b3JlLnNlbGVjdGVkVGFza1R5cGVOYW1lKCk7XG4gICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RvcmUudGFza1R5cGVzKCkuZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IG5hbWUpIHx8IG51bGw7XG4gICAgfSksXG4gICAgLy8gKE9wdGlvbmFsIGJ1dCByZWNvbW1lbmRlZCkgQWRkIGEgY29tcHV0ZWQgc2lnbmFsIHRvIGVhc2lseSBjaGVjayBpZiBhIHRhc2sgaXMgc2VsZWN0ZWRcbiAgICBpc1Rhc2tTZWxlY3RlZDogY29tcHV0ZWQoKCkgPT4gc3RvcmUuc2VsZWN0ZWRUYXNrKCkgIT09IG51bGwpLFxuICAgIGlzRGV0YWlsUGFuZWxPcGVuOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5kZXRhaWxQYW5lbCgpKSxcbiAgICBlbmREYXRlOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IHN0b3JlLmN1cnJlbnREYXRlKCk7XG4gICAgICBjb25zdCBkYXlzQ291bnQgPSBzdG9yZS5kYXlzQ291bnQoKTtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShjdXJyZW50RGF0ZS5nZXRUaW1lKCkgKyBkYXlzQ291bnQgKiAyNCAqIDYwICogNjAgKiAxMDAwKTtcbiAgICB9KSxcbiAgfSkpLFxuXG4gIHdpdGhNZXRob2RzKChzdG9yZSwgc2V0dGluZ1NlcnZpY2UgPSBpbmplY3QoQVhQU2V0dGluZ1NlcnZpY2UpLCB0YXNrQm9hcmRTZXJ2aWNlID0gaW5qZWN0KEFYUFRhc2tCb2FyZFNlcnZpY2UpKSA9PiB7XG4gICAgLy8gQ3JlYXRlIGEgcHJpdmF0ZSBtZXRob2QgZm9yIGdldHRpbmcgdGhlIHVzZXItc2NvcGVkIHNldHRpbmdzIHRvIGF2b2lkIHJlcGV0aXRpb25cbiAgICBjb25zdCB1c2VyU2NvcGVkU2V0dGluZ3MgPSAoKSA9PiBzZXR0aW5nU2VydmljZS5zY29wZShBWFBQbGF0Zm9ybVNjb3BlLlVzZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgaXNMb2FkaW5nOiB0cnVlIH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gMS4gTG9hZCBUYXNrIFR5cGVzIGZpcnN0XG4gICAgICAgICAgY29uc3QgdGFza1R5cGVzID0gYXdhaXQgdGFza0JvYXJkU2VydmljZS5nZXRUYXNrVHlwZXMoKTtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IHRhc2tUeXBlcyB9KTtcblxuICAgICAgICAgIC8vIDIuIExvYWQgUGVyc2lzdGVkIFNldHRpbmdzIGluZGl2aWR1YWxseVxuICAgICAgICAgIGNvbnN0IFtzYXZlZERhdGVTdHJpbmcsIHNhdmVkVmlld01vZGUsIHNhdmVkVmlld0NhdGVnb3J5LCBzYXZlZFRhc2tUeXBlTmFtZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8c3RyaW5nIHwgdW5kZWZpbmVkPihBWE1UYXNrQm9hcmRTZXR0aW5ncy5DdXJyZW50RGF0ZSksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8QVhQVGFza0JvYXJkVmlld01vZGUgfCB1bmRlZmluZWQ+KEFYTVRhc2tCb2FyZFNldHRpbmdzLlZpZXdNb2RlKSxcbiAgICAgICAgICAgIHVzZXJTY29wZWRTZXR0aW5ncygpLmdldDxBWFBUYXNrQm9hcmRWaWV3Q2F0ZWdvcnkgfCB1bmRlZmluZWQ+KEFYTVRhc2tCb2FyZFNldHRpbmdzLlZpZXdDYXRlZ29yeSksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4oQVhNVGFza0JvYXJkU2V0dGluZ3MuU2VsZWN0ZWRUYXNrVHlwZUZpbHRlciksXG4gICAgICAgICAgXSk7XG5cbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBjdXJyZW50Vmlld01vZGU6IHNhdmVkVmlld01vZGUgfHwgJ21vbnRoJyxcbiAgICAgICAgICAgIGN1cnJlbnRWaWV3Q2F0ZWdvcnk6IHNhdmVkVmlld0NhdGVnb3J5IHx8ICdjYWxlbmRhcicsXG4gICAgICAgICAgICBjdXJyZW50RGF0ZTogc2F2ZWREYXRlU3RyaW5nID8gbmV3IERhdGUoc2F2ZWREYXRlU3RyaW5nKSA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBzZWxlY3RlZFRhc2tUeXBlTmFtZTogc2F2ZWRUYXNrVHlwZU5hbWUgfHwgbnVsbCxcbiAgICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW5pdGlhbGl6aW5nIFRhc2tCb2FyZCBWaWV3TW9kZWw6JywgZXJyb3IpO1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIGN1cnJlbnRWaWV3TW9kZTogJ21vbnRoJyxcbiAgICAgICAgICAgIGN1cnJlbnREYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgc2VsZWN0ZWRUYXNrVHlwZU5hbWU6IG51bGwsXG4gICAgICAgICAgICB0YXNrVHlwZXM6IHN0b3JlLnRhc2tUeXBlcygpLFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgc2V0Vmlld0NhdGVnb3J5KG1vZGU6IEFYUFRhc2tCb2FyZFZpZXdDYXRlZ29yeSkge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlICdjYWxlbmRhcic6XG4gICAgICAgICAgICB0aGlzLnNldFZpZXdNb2RlKCdtb250aCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFibGUnOlxuICAgICAgICAgICAgdGhpcy5zZXRWaWV3TW9kZSgnZ3JpZCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAna2FuYmFuJzpcbiAgICAgICAgICAgIHRoaXMuc2V0Vmlld01vZGUoJ2thbmJhbicpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRDYXRlZ29yeShtb2RlKTtcbiAgICAgIH0sXG5cbiAgICAgIHNldENhdGVnb3J5KG1vZGU6IEFYUFRhc2tCb2FyZFZpZXdDYXRlZ29yeSkge1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGN1cnJlbnRWaWV3Q2F0ZWdvcnk6IG1vZGUgfSk7XG5cbiAgICAgICAgdXNlclNjb3BlZFNldHRpbmdzKClcbiAgICAgICAgICAuc2V0KEFYTVRhc2tCb2FyZFNldHRpbmdzLlZpZXdDYXRlZ29yeSwgbW9kZSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgY2FsZW5kYXIgdmlldyBjYXRlZ29yeTonLCBlcnJvcikpO1xuICAgICAgfSxcblxuICAgICAgc2V0Vmlld01vZGUobW9kZTogQVhQVGFza0JvYXJkVmlld01vZGUpIHtcbiAgICAgICAgaWYgKChtb2RlID09PSAna2FuYmFuJyB8fCBtb2RlID09PSAnc3RhdHVzLWdyb3VwZWQtZ3JpZCcpICYmIHN0b3JlLnNlbGVjdGVkVGFza1R5cGVOYW1lKCkgPT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0YXNrVHlwZU5hbWUgPSBzdG9yZS50YXNrVHlwZXMoKVswXT8ubmFtZTtcbiAgICAgICAgICBpZiAodGFza1R5cGVOYW1lKSB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IHNlbGVjdGVkVGFza1R5cGVOYW1lOiB0YXNrVHlwZU5hbWUgfSk7XG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgICAgICAuc2V0KEFYTVRhc2tCb2FyZFNldHRpbmdzLlNlbGVjdGVkVGFza1R5cGVGaWx0ZXIsIHRhc2tUeXBlTmFtZSlcbiAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIHNlbGVjdGVkIHRhc2sgdHlwZSBmaWx0ZXI6JywgZXJyb3IpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGN1cnJlbnRWaWV3TW9kZTogbW9kZSB9KTtcbiAgICAgICAgdXNlclNjb3BlZFNldHRpbmdzKClcbiAgICAgICAgICAuc2V0KEFYTVRhc2tCb2FyZFNldHRpbmdzLlZpZXdNb2RlLCBtb2RlKVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBjYWxlbmRhciB2aWV3IG1vZGU6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIHNldEN1cnJlbnREYXRlKGRhdGU6IERhdGUpIHtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBjdXJyZW50RGF0ZTogbmV3IERhdGUoZGF0ZSkgfSk7XG4gICAgICAgIHVzZXJTY29wZWRTZXR0aW5ncygpXG4gICAgICAgICAgLnNldChBWE1UYXNrQm9hcmRTZXR0aW5ncy5DdXJyZW50RGF0ZSwgZGF0ZS50b0lTT1N0cmluZygpKVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBjdXJyZW50IGRhdGU6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIHNldFNlbGVjdGVkVGFza1R5cGVQcm92aWRlcih0YXNrVHlwZTogQVhQV29ya2Zsb3dUYXNrUHJvdmlkZXIgfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRhc2tUeXBlTmFtZSA9IHRhc2tUeXBlID8gdGFza1R5cGUubmFtZSA6IG51bGw7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgc2VsZWN0ZWRUYXNrVHlwZU5hbWU6IHRhc2tUeXBlTmFtZSB9KTtcbiAgICAgICAgdXNlclNjb3BlZFNldHRpbmdzKClcbiAgICAgICAgICAuc2V0KEFYTVRhc2tCb2FyZFNldHRpbmdzLlNlbGVjdGVkVGFza1R5cGVGaWx0ZXIsIHRhc2tUeXBlTmFtZSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgc2VsZWN0ZWQgdGFzayB0eXBlIGZpbHRlcjonLCBlcnJvcikpO1xuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBTZXRzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFzay4gUGFzcyBgbnVsbGAgdG8gY2xlYXIgdGhlIHNlbGVjdGlvbi5cbiAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSB0YXNrIHRvIHNlbGVjdCwgb3IgbnVsbC5cbiAgICAgICAqL1xuICAgICAgc2VsZWN0VGFzayh0YXNrOiBBWFBUYXNrIHwgbnVsbCkge1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IHNlbGVjdGVkVGFzazogdGFzayB9KTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogQSBjb252ZW5pZW5jZSBtZXRob2QgdG8gY2xlYXIgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0YXNrLlxuICAgICAgICovXG4gICAgICBjbGVhclNlbGVjdGVkVGFzaygpIHtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBzZWxlY3RlZFRhc2s6IG51bGwgfSk7XG4gICAgICB9LFxuXG4gICAgICBvcGVuRGV0YWlsUGFuZWwoKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgZGV0YWlsUGFuZWw6IHRydWUgfSk7XG4gICAgICB9LFxuXG4gICAgICBjbG9zZURldGFpbFBhbmVsKCkge1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGRldGFpbFBhbmVsOiBmYWxzZSB9KTtcbiAgICAgIH0sXG5cbiAgICAgIHRvZ2dsZURldGFpbFBhbmVsKCkge1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGRldGFpbFBhbmVsOiAhc3RvcmUuZGV0YWlsUGFuZWwoKSB9KTtcbiAgICAgIH0sXG5cbiAgICAgIGFzeW5jIGdldFN0YXR1c05hbWUoa2V5OiBhbnksIHByb3ZpZGVyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRhc2tCb2FyZFNlcnZpY2UuZ2V0U3RhdHVzTmFtZShrZXksIHByb3ZpZGVyKTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogU2V0cyB0aGUgc3RhcnQgZGF0ZSBmb3IgYSBuZXcgcmFuZ2Ugc2VsZWN0aW9uLlxuICAgICAgICogUGFzcyBgbnVsbGAgdG8gY2xlYXIgdGhlIHNlbGVjdGlvbi5cbiAgICAgICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydCBkYXRlIG9mIHRoZSByYW5nZS5cbiAgICAgICAqL1xuICAgICAgc2V0UmFuZ2VTdGFydERhdGUoZGF0ZTogRGF0ZSB8IG51bGwpIHtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyByYW5nZVN0YXJ0RGF0ZTogZGF0ZSB9KTtcbiAgICAgIH0sXG5cbiAgICAgIHNldERheXNDb3VudChkYXlzOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgY291bnQgPSBNYXRoLm1heCgxLCBkYXlzKTtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBkYXlzQ291bnQ6IGNvdW50IH0pO1xuICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgIC5zZXQoQVhNVGFza0JvYXJkU2V0dGluZ3MuRGF5c0NvdW50LCBjb3VudClcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZGF5cyBjb3VudDonLCBlcnJvcikpO1xuICAgICAgfSxcbiAgICB9O1xuICB9KSxcbik7XG4iXX0=","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { RootConfig } from '../../../const';\nimport { AXPTaskBoardService } from '../task-board.service';\nimport { AXMTaskBoardViewModel } from '../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/builder\";\nexport class AXMTaskBoardDetailPanel {\n constructor() {\n this.rootConfig = RootConfig;\n this.vm = inject(AXMTaskBoardViewModel);\n this.localeService = inject(AXLocaleService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.statusName = signal('', ...(ngDevMode ? [{ debugName: \"statusName\" }] : []));\n this.extraFields = signal([], ...(ngDevMode ? [{ debugName: \"extraFields\" }] : []));\n this.#selectedTaskChanged = effect(async () => {\n const selectedTask = this.vm.selectedTask();\n const key = selectedTask?.status.id;\n const provider = selectedTask?.provider;\n if (!provider)\n return;\n const name = await this.vm.getStatusName(key, provider);\n if (name)\n this.statusName.set(name);\n }, ...(ngDevMode ? [{ debugName: \"#selectedTaskChanged\" }] : []));\n this.#selectedTaskTypeChanged = effect(async () => {\n const selectedTask = this.vm.selectedTask();\n const selectedTaskType = this.taskBoardService.getProvider(selectedTask?.provider);\n const extraFields = await selectedTaskType?.getExtraFields();\n if (!extraFields) {\n this.extraFields.set([]);\n return;\n }\n this.extraFields.set(extraFields);\n }, ...(ngDevMode ? [{ debugName: \"#selectedTaskTypeChanged\" }] : []));\n }\n #selectedTaskChanged;\n #selectedTaskTypeChanged;\n capitalizeFirstLetter(text) {\n return String(text).charAt(0).toUpperCase() + String(text).slice(1);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardDetailPanel, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.6\", type: AXMTaskBoardDetailPanel, isStandalone: true, selector: \"axm-task-board-detail-panel\", ngImport: i0, template: \"@if (vm.isTaskSelected()) {\\n @let nodeInfo = vm.selectedTask();\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ nodeInfo?.title }}</span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <div class=\\\"__section\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ 'task-board.detail-panel.title' | translate: { scope: rootConfig.config.i18n } | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @if (nodeInfo?.description) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ 'task-board.detail-panel.description' | translate: { scope: rootConfig.config.i18n } | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.description }}</div>\\n </div>\\n }\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ 'task-board.detail-panel.start-date' | translate: { scope: rootConfig.config.i18n } | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.startDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ 'task-board.detail-panel.end-date' | translate: { scope: rootConfig.config.i18n } | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.endDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ 'task-board.detail-panel.reporter' | translate: { scope: rootConfig.config.i18n } | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.reporter\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n @if (nodeInfo?.assignee) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{\\n 'task-board.detail-panel.assignee' | translate: { scope: rootConfig.config.i18n } | async\\n }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.assignee }}</div>\\n </div>\\n }\\n @if (statusName()) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ 'task-board.detail-panel.status' | translate: { scope: rootConfig.config.i18n } | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ statusName() }}</div>\\n </div>\\n }\\n @if (nodeInfo?.priority) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ 'task-board.detail-panel.priority' | translate: { scope: rootConfig.config.i18n } | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ capitalizeFirstLetter(nodeInfo?.priority ?? '') }}</div>\\n </div>\\n }\\n @if (extraFields() && extraFields().length) {\\n <div class=\\\"__row\\\">\\n <axp-widgets-container [context]=\\\"nodeInfo\\\">\\n @for (extraField of extraFields(); track extraField) {\\n <div class=\\\"__title\\\">\\n <span>\\n {{ extraField.title | translate: { scope: rootConfig.config.i18n } | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n <ng-container axp-widget-renderer [node]=\\\"extraField.widget\\\" [mode]=\\\"'view'\\\"> </ng-container>\\n </div>\\n }\\n </axp-widgets-container>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n} @else {\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ 'task-board.detail-panel.no-task-selected' | translate: { scope: rootConfig.config.i18n } | async }}\\n </span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n}\\n\", styles: [\"axm-task-board-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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: 1024px){axm-task-board-detail-panel{width:24rem}}axm-task-board-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}@media (min-width: 1024px){axm-task-board-detail-panel>.__header{width:20rem}}axm-task-board-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-task-board-detail-panel>.__content{display:flex;flex-direction:column}axm-task-board-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-task-board-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-task-board-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-task-board-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\\n\"], dependencies: [{ kind: \"component\", type: 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: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: i1.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i1.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardDetailPanel, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-detail-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [\n AsyncPipe,\n AXFormatPipe,\n AXTranslatorPipe,\n AXButtonComponent,\n AXPLayoutBuilderModule,\n AXDecoratorIconComponent,\n ], template: \"@if (vm.isTaskSelected()) {\\n @let nodeInfo = vm.selectedTask();\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ nodeInfo?.title }}</span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <div class=\\\"__section\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ 'task-board.detail-panel.title' | translate: { scope: rootConfig.config.i18n } | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @if (nodeInfo?.description) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ 'task-board.detail-panel.description' | translate: { scope: rootConfig.config.i18n } | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.description }}</div>\\n </div>\\n }\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ 'task-board.detail-panel.start-date' | translate: { scope: rootConfig.config.i18n } | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.startDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ 'task-board.detail-panel.end-date' | translate: { scope: rootConfig.config.i18n } | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.endDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ 'task-board.detail-panel.reporter' | translate: { scope: rootConfig.config.i18n } | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.reporter\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n @if (nodeInfo?.assignee) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{\\n 'task-board.detail-panel.assignee' | translate: { scope: rootConfig.config.i18n } | async\\n }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.assignee }}</div>\\n </div>\\n }\\n @if (statusName()) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ 'task-board.detail-panel.status' | translate: { scope: rootConfig.config.i18n } | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ statusName() }}</div>\\n </div>\\n }\\n @if (nodeInfo?.priority) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ 'task-board.detail-panel.priority' | translate: { scope: rootConfig.config.i18n } | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ capitalizeFirstLetter(nodeInfo?.priority ?? '') }}</div>\\n </div>\\n }\\n @if (extraFields() && extraFields().length) {\\n <div class=\\\"__row\\\">\\n <axp-widgets-container [context]=\\\"nodeInfo\\\">\\n @for (extraField of extraFields(); track extraField) {\\n <div class=\\\"__title\\\">\\n <span>\\n {{ extraField.title | translate: { scope: rootConfig.config.i18n } | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n <ng-container axp-widget-renderer [node]=\\\"extraField.widget\\\" [mode]=\\\"'view'\\\"> </ng-container>\\n </div>\\n }\\n </axp-widgets-container>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n} @else {\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ 'task-board.detail-panel.no-task-selected' | translate: { scope: rootConfig.config.i18n } | async }}\\n </span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n}\\n\", styles: [\"axm-task-board-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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: 1024px){axm-task-board-detail-panel{width:24rem}}axm-task-board-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}@media (min-width: 1024px){axm-task-board-detail-panel>.__header{width:20rem}}axm-task-board-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-task-board-detail-panel>.__content{display:flex;flex-direction:column}axm-task-board-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-task-board-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-task-board-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-task-board-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1kZXRhaWwtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3dvcmtmbG93LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy90YXNrLWJvYXJkL3Rhc2stYm9hcmQtZGV0YWlsLXBhbmVsL3Rhc2stYm9hcmQtZGV0YWlsLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy93b3JrZmxvdy1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC90YXNrLWJvYXJkLWRldGFpbC1wYW5lbC90YXNrLWJvYXJkLWRldGFpbC1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBaUJoRSxNQUFNLE9BQU8sdUJBQXVCO0lBZnBDO1FBZ0JxQixlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLE9BQUUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV4RCxlQUFVLEdBQUcsTUFBTSxDQUFTLEVBQUUsc0RBQUMsQ0FBQztRQUNoQyxnQkFBVyxHQUFHLE1BQU0sQ0FBa0IsRUFBRSx1REFBQyxDQUFDO1FBRXBELHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN2QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzVDLE1BQU0sR0FBRyxHQUFHLFlBQVksRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLFlBQVksRUFBRSxRQUFRLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTztZQUN0QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN4RCxJQUFJLElBQUk7Z0JBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxnRUFBQyxDQUFDO1FBRUgsNkJBQXdCLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzNDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNuRixNQUFNLFdBQVcsR0FBRyxNQUFNLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pCLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxvRUFBQyxDQUFDO0tBS0o7SUF2QkMsb0JBQW9CLENBT2pCO0lBRUgsd0JBQXdCLENBU3JCO0lBRU8scUJBQXFCLENBQUMsSUFBWTtRQUMxQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzhHQS9CVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix1RkM1QnBDLHNxSkE0SEEsb3NFRHJHSSxpQkFBaUIsMFVBQ2pCLHNCQUFzQiwrWkFDdEIsd0JBQXdCLGlFQUx4QixTQUFTLHlDQUNULFlBQVksMENBQ1osZ0JBQWdCOzsyRkFNUCx1QkFBdUI7a0JBZm5DLFNBQVM7K0JBQ0UsNkJBQTZCLG1CQUd0Qix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNQLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0Qix3QkFBd0I7cUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRm9ybWF0UGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUEV4dHJhRmllbGQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIGluamVjdCwgc2lnbmFsLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYUFRhc2tCb2FyZFNlcnZpY2UgfSBmcm9tICcuLi90YXNrLWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkVmlld01vZGVsIH0gZnJvbSAnLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YXNrLWJvYXJkLWRldGFpbC1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBBWEZvcm1hdFBpcGUsXG4gICAgQVhUcmFuc2xhdG9yUGlwZSxcbiAgICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgICBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVGFza0JvYXJkRGV0YWlsUGFuZWwge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm9vdENvbmZpZyA9IFJvb3RDb25maWc7XG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IGluamVjdChBWE1UYXNrQm9hcmRWaWV3TW9kZWwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9jYWxlU2VydmljZSA9IGluamVjdChBWExvY2FsZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFza0JvYXJkU2VydmljZSA9IGluamVjdChBWFBUYXNrQm9hcmRTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgc3RhdHVzTmFtZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgcHJvdGVjdGVkIGV4dHJhRmllbGRzID0gc2lnbmFsPEFYUEV4dHJhRmllbGRbXT4oW10pO1xuXG4gICNzZWxlY3RlZFRhc2tDaGFuZ2VkID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZFRhc2sgPSB0aGlzLnZtLnNlbGVjdGVkVGFzaygpO1xuICAgIGNvbnN0IGtleSA9IHNlbGVjdGVkVGFzaz8uc3RhdHVzLmlkO1xuICAgIGNvbnN0IHByb3ZpZGVyID0gc2VsZWN0ZWRUYXNrPy5wcm92aWRlcjtcbiAgICBpZiAoIXByb3ZpZGVyKSByZXR1cm47XG4gICAgY29uc3QgbmFtZSA9IGF3YWl0IHRoaXMudm0uZ2V0U3RhdHVzTmFtZShrZXksIHByb3ZpZGVyKTtcbiAgICBpZiAobmFtZSkgdGhpcy5zdGF0dXNOYW1lLnNldChuYW1lKTtcbiAgfSk7XG5cbiAgI3NlbGVjdGVkVGFza1R5cGVDaGFuZ2VkID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZFRhc2sgPSB0aGlzLnZtLnNlbGVjdGVkVGFzaygpO1xuICAgIGNvbnN0IHNlbGVjdGVkVGFza1R5cGUgPSB0aGlzLnRhc2tCb2FyZFNlcnZpY2UuZ2V0UHJvdmlkZXIoc2VsZWN0ZWRUYXNrPy5wcm92aWRlcik7XG4gICAgY29uc3QgZXh0cmFGaWVsZHMgPSBhd2FpdCBzZWxlY3RlZFRhc2tUeXBlPy5nZXRFeHRyYUZpZWxkcygpO1xuICAgIGlmICghZXh0cmFGaWVsZHMpIHtcbiAgICAgIHRoaXMuZXh0cmFGaWVsZHMuc2V0KFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5leHRyYUZpZWxkcy5zZXQoZXh0cmFGaWVsZHMpO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6IHN0cmluZykge1xuICAgIHJldHVybiBTdHJpbmcodGV4dCkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBTdHJpbmcodGV4dCkuc2xpY2UoMSk7XG4gIH1cbn1cbiIsIkBpZiAodm0uaXNUYXNrU2VsZWN0ZWQoKSkge1xuICBAbGV0IG5vZGVJbmZvID0gdm0uc2VsZWN0ZWRUYXNrKCk7XG4gIDxkaXYgY2xhc3M9XCJfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICA8c3Bhbj57eyBub2RlSW5mbz8udGl0bGUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGF4LWJ1dHRvbiBbbG9va109XCInYmxhbmsnXCIgY2xhc3M9XCJheC1zbSBheC1yb3VuZGVkLWZ1bGxcIiAob25DbGljayk9XCJ2bS5jbG9zZURldGFpbFBhbmVsKClcIj5cbiAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS14bWFya1wiPjwvYXgtaWNvbj5cbiAgICA8L2F4LWJ1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgIDxzcGFuPnt7ICd0YXNrLWJvYXJkLmRldGFpbC1wYW5lbC50aXRsZScgfCB0cmFuc2xhdGU6IHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG4gfSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgICAgIEBpZiAobm9kZUluZm8/LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIl9fcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7eyAndGFzay1ib2FyZC5kZXRhaWwtcGFuZWwuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj57eyBub2RlSW5mbz8uZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiX19yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIHt7ICd0YXNrLWJvYXJkLmRldGFpbC1wYW5lbC5zdGFydC1kYXRlJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogcm9vdENvbmZpZy5jb25maWcuaTE4biB9IHwgYXN5bmMgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBub2RlSW5mbz8uc3RhcnREYXRlXG4gICAgICAgICAgICAgICAgfCBmb3JtYXQ6ICdkYXRldGltZScgOiB7IGZvcm1hdDogJ3Nob3J0JywgY2FsZW5kYXI6IGxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSB9XG4gICAgICAgICAgICAgICAgfCBhc3luY1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3Jvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyAndGFzay1ib2FyZC5kZXRhaWwtcGFuZWwuZW5kLWRhdGUnIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0gfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBub2RlSW5mbz8uZW5kRGF0ZVxuICAgICAgICAgICAgICAgIHwgZm9ybWF0OiAnZGF0ZXRpbWUnIDogeyBmb3JtYXQ6ICdzaG9ydCcsIGNhbGVuZGFyOiBsb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0gfVxuICAgICAgICAgICAgICAgIHwgYXN5bmNcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiX19yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ3Rhc2stYm9hcmQuZGV0YWlsLXBhbmVsLnJlcG9ydGVyJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogcm9vdENvbmZpZy5jb25maWcuaTE4biB9IHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgbm9kZUluZm8/LnJlcG9ydGVyXG4gICAgICAgICAgICAgICAgfCBmb3JtYXQ6ICdkYXRldGltZScgOiB7IGZvcm1hdDogJ3Nob3J0JywgY2FsZW5kYXI6IGxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSB9XG4gICAgICAgICAgICAgICAgfCBhc3luY1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAobm9kZUluZm8/LmFzc2lnbmVlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIl9fcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICd0YXNrLWJvYXJkLmRldGFpbC1wYW5lbC5hc3NpZ25lZScgfCB0cmFuc2xhdGU6IHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG4gfSB8IGFzeW5jXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+e3sgbm9kZUluZm8/LmFzc2lnbmVlIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzdGF0dXNOYW1lKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19yb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICd0YXNrLWJvYXJkLmRldGFpbC1wYW5lbC5zdGF0dXMnIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0gfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPnt7IHN0YXR1c05hbWUoKSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAobm9kZUluZm8/LnByaW9yaXR5KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIl9fcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7eyAndGFzay1ib2FyZC5kZXRhaWwtcGFuZWwucHJpb3JpdHknIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj57eyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIobm9kZUluZm8/LnByaW9yaXR5ID8/ICcnKSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoZXh0cmFGaWVsZHMoKSAmJiBleHRyYUZpZWxkcygpLmxlbmd0aCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3Jvd1wiPlxuICAgICAgICAgICAgPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbY29udGV4dF09XCJub2RlSW5mb1wiPlxuICAgICAgICAgICAgICBAZm9yIChleHRyYUZpZWxkIG9mIGV4dHJhRmllbGRzKCk7IHRyYWNrIGV4dHJhRmllbGQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dHJhRmllbGQudGl0bGUgfCB0cmFuc2xhdGU6IHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG4gfSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cImV4dHJhRmllbGQud2lkZ2V0XCIgW21vZGVdPVwiJ3ZpZXcnXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2F4cC13aWRnZXRzLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufSBAZWxzZSB7XG4gIDxkaXYgY2xhc3M9XCJfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3sgJ3Rhc2stYm9hcmQuZGV0YWlsLXBhbmVsLm5vLXRhc2stc2VsZWN0ZWQnIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0gfCBhc3luYyB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxheC1idXR0b24gW2xvb2tdPVwiJ2JsYW5rJ1wiIGNsYXNzPVwiYXgtc20gYXgtcm91bmRlZC1mdWxsXCIgKG9uQ2xpY2spPVwidm0uY2xvc2VEZXRhaWxQYW5lbCgpXCI+XG4gICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEteG1hcmtcIj48L2F4LWljb24+XG4gICAgPC9heC1idXR0b24+XG4gIDwvZGl2PlxufVxuIl19","import { AXSchedulerComponent, } from '@acorex/components/scheduler';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nexport class AXMTaskBoardCalendarViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.calendarService = inject(AXCalendarService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.schedulerComponent = viewChild(AXSchedulerComponent, ...(ngDevMode ? [{ debugName: \"schedulerComponent\" }] : []));\n this.startingDate = input(new Date(), ...(ngDevMode ? [{ debugName: \"startingDate\" }] : []));\n this.selectedView = input('month', ...(ngDevMode ? [{ debugName: \"selectedView\" }] : []));\n this.dataSource = input.required(...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.holidays = (range) => {\n return this.taskBoardService.getEvents(range);\n };\n this.currentSchedulerView = computed(() => this.selectedView() === 'kanban' || this.selectedView() === 'grid'\n ? 'month'\n : this.selectedView(), ...(ngDevMode ? [{ debugName: \"currentSchedulerView\" }] : []));\n this.onTaskClick = output();\n this.onTaskChanged = output();\n this.onMonthSlotDblClicked = output();\n this.onActionClick = output();\n this.component = output();\n this.onTaskRightClick = output();\n this.onRangeChanged = output();\n }\n ngAfterViewInit() {\n if (this.schedulerComponent()) {\n this.component.emit(this.schedulerComponent());\n }\n }\n onTaskDrop(event) {\n if (event.isSameSlotDrop)\n return;\n let from;\n let end;\n const apptStartDate = this.calendarService.create(event.appointment.startDate);\n const apptEndDate = event.appointment.endDate;\n const apptDiffTime = Math.abs(apptStartDate.date.getTime() - apptEndDate.getTime());\n switch (event.slot.view) {\n case 'month':\n case 'agenda':\n from = this.calendarService\n .create(event.slot.startDate.date)\n .set('hour', apptStartDate.hour)\n .set('minute', apptStartDate.minute)\n .set('second', apptStartDate.second).date;\n end = new Date(from.getTime() + apptDiffTime);\n break;\n default:\n from = event.slot.startDate.date;\n end = event.slot.endDate.date;\n const isAllDay = Math.abs(from.getTime() - end.getTime()) >= 24 * 60 * 60 * 1000 - 1;\n const wasAllDay = apptDiffTime >= 24 * 60 * 60 * 1000 - 1;\n if ((wasAllDay && isAllDay) || (!wasAllDay && !isAllDay)) {\n end = new Date(from.getTime() + apptDiffTime);\n }\n break;\n }\n this.taskBoardService.updateTaskDateRange(event.appointment, { from, end }).then((task) => {\n this.onTaskChanged.emit(task);\n this.schedulerComponent()?.refresh([task]);\n });\n }\n onTaskRightClickHandler(event) {\n this.onTaskRightClick.emit({ nativeEvent: event.nativeEvent, task: event.appointment });\n }\n onSlotDblClicked(event) {\n if (event.sender.selectedView() === 'month') {\n this.onMonthSlotDblClicked.emit(event.slot.startDate.date);\n }\n }\n async handleRangeChanged(event) {\n this.onRangeChanged.emit(event);\n }\n handleActionClick(event) {\n this.onActionClick.emit({ nativeEvent: event.nativeEvent, task: event.appointment });\n }\n onTaskClickHandler(event) {\n this.onTaskClick.emit(event.appointment);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardCalendarViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.1.6\", type: AXMTaskBoardCalendarViewComponent, isStandalone: true, selector: \"axm-task-board-calendar-view\", inputs: { startingDate: { classPropertyName: \"startingDate\", publicName: \"startingDate\", isSignal: true, isRequired: false, transformFunction: null }, selectedView: { classPropertyName: \"selectedView\", publicName: \"selectedView\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onTaskClick: \"onTaskClick\", onTaskChanged: \"onTaskChanged\", onMonthSlotDblClicked: \"onMonthSlotDblClicked\", onActionClick: \"onActionClick\", component: \"component\", onTaskRightClick: \"onTaskRightClick\", onRangeChanged: \"onRangeChanged\" }, viewQueries: [{ propertyName: \"schedulerComponent\", first: true, predicate: AXSchedulerComponent, descendants: true, isSignal: true }], ngImport: i0, template: \"<ax-scheduler\\n [hasHeader]=\\\"false\\\"\\n [hasActions]=\\\"true\\\"\\n [holidays]=\\\"holidays\\\"\\n [dataSource]=\\\"dataSource()\\\"\\n [startingDate]=\\\"startingDate()\\\"\\n [selectedView]=\\\"currentSchedulerView()\\\"\\n [multiDayViewDaysCount]=\\\"vm.daysCount()\\\"\\n (onAppointmentDrop)=\\\"onTaskDrop($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n (onRangeChanged)=\\\"handleRangeChanged($event)\\\"\\n (onSlotDblClicked)=\\\"onSlotDblClicked($event)\\\"\\n (onAppointmentClicked)=\\\"onTaskClickHandler($event)\\\"\\n (onAppointmentRightClick)=\\\"onTaskRightClickHandler($event)\\\"\\n></ax-scheduler>\\n\", styles: [\"ax-scheduler{line-height:1.5;background-color:rgba(var(--ax-sys-color-lightest-surface))!important}\\n\"], dependencies: [{ kind: \"component\", type: AXSchedulerComponent, selector: \"ax-scheduler\", inputs: [\"calendar\", \"startingDate\", \"endDayHour\", \"startDayHour\", \"hasHeader\", \"readonly\", \"draggable\", \"hasActions\", \"dragStartDelay\", \"allowFullScreen\", \"multiDayViewDaysCount\", \"tooltipTemplate\", \"dataSource\", \"holidays\", \"firstDayOfWeek\", \"views\", \"selectedView\"], outputs: [\"selectedViewChange\", \"onDataLoaded\", \"onRangeChanged\", \"onSlotClicked\", \"onSlotDblClicked\", \"onSlotRightClick\", \"onAppointmentDrop\", \"onActionClick\", \"onAppointmentClicked\", \"onAppointmentDblClicked\", \"onAppointmentRightClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardCalendarViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-calendar-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXSchedulerComponent], template: \"<ax-scheduler\\n [hasHeader]=\\\"false\\\"\\n [hasActions]=\\\"true\\\"\\n [holidays]=\\\"holidays\\\"\\n [dataSource]=\\\"dataSource()\\\"\\n [startingDate]=\\\"startingDate()\\\"\\n [selectedView]=\\\"currentSchedulerView()\\\"\\n [multiDayViewDaysCount]=\\\"vm.daysCount()\\\"\\n (onAppointmentDrop)=\\\"onTaskDrop($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n (onRangeChanged)=\\\"handleRangeChanged($event)\\\"\\n (onSlotDblClicked)=\\\"onSlotDblClicked($event)\\\"\\n (onAppointmentClicked)=\\\"onTaskClickHandler($event)\\\"\\n (onAppointmentRightClick)=\\\"onTaskRightClickHandler($event)\\\"\\n></ax-scheduler>\\n\", styles: [\"ax-scheduler{line-height:1.5;background-color:rgba(var(--ax-sys-color-lightest-surface))!important}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1jYWxlbmRhci12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy93b3JrZmxvdy1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC92aWV3cy90YXNrLWJvYXJkLWNhbGVuZGFyLXZpZXcvdGFzay1ib2FyZC1jYWxlbmRhci12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy93b3JrZmxvdy1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC92aWV3cy90YXNrLWJvYXJkLWNhbGVuZGFyLXZpZXcvdGFzay1ib2FyZC1jYWxlbmRhci12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxvQkFBb0IsR0FLckIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFFMUUsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUF3QixNQUFNLDRCQUE0QixDQUFDOztBQVV6RixNQUFNLE9BQU8saUNBQWlDO0lBUjlDO1FBU3FCLE9BQUUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNuQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FB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Q0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUM7SUFFUyxLQUFLLENBQUMsa0JBQWtCLENBQUMsS0FBMkI7UUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQXVDO1FBQ2pFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFzQixFQUFFLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRVMsa0JBQWtCLENBQUMsS0FBdUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQXNCLENBQUMsQ0FBQztJQUN0RCxDQUFDOzhHQTdGVSxpQ0FBaUM7a0dBQWpDLGlDQUFpQyxpekJBS2Isb0JBQW9CLGdFQ3RDckQsZ2xCQWVBLCtKRGdCWSxvQkFBb0I7OzJGQUVuQixpQ0FBaUM7a0JBUjdDLFNBQVM7K0JBQ0UsOEJBQThCLG1CQUd2Qix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWFNjaGVkdWxlckFwcG9pbnRtZW50RGF0YVNvdXJjZSxcbiAgQVhTY2hlZHVsZXJBcHBvaW50bWVudE1vdXNlRXZlbnQsXG4gIEFYU2NoZWR1bGVyQ29tcG9uZW50LFxuICBBWFNjaGVkdWxlckRhdGVSYW5nZSxcbiAgQVhTY2hlZHVsZXJTbG90RHJvcEV2ZW50LFxuICBBWFNjaGVkdWxlclNsb3RNb3VzZUV2ZW50LFxuICBBWFNjaGVkdWxlclZpZXcsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zY2hlZHVsZXInO1xuaW1wb3J0IHsgQVhDYWxlbmRhclNlcnZpY2UsIEFYSG9saWRheURhdGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IEFYUFRhc2ssIEFYUFRhc2tBY3Rpb24gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQVGFza0JvYXJkU2VydmljZSB9IGZyb20gJy4uLy4uL3Rhc2stYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRWaWV3TW9kZWwsIEFYUFRhc2tCb2FyZFZpZXdNb2RlIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tdGFzay1ib2FyZC1jYWxlbmRhci12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW0FYU2NoZWR1bGVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVGFza0JvYXJkQ2FsZW5kYXJWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IGluamVjdChBWE1UYXNrQm9hcmRWaWV3TW9kZWwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRhc2tCb2FyZFNlcnZpY2UgPSBpbmplY3QoQVhQVGFza0JvYXJkU2VydmljZSk7XG5cbiAgc2NoZWR1bGVyQ29tcG9uZW50ID0gdmlld0NoaWxkKEFYU2NoZWR1bGVyQ29tcG9uZW50KTtcblxuICBzdGFydGluZ0RhdGUgPSBpbnB1dDxEYXRlPihuZXcgRGF0ZSgpKTtcbiAgc2VsZWN0ZWRWaWV3ID0gaW5wdXQ8QVhQVGFza0JvYXJkVmlld01vZGU+KCdtb250aCcpO1xuICBkYXRhU291cmNlID0gaW5wdXQucmVxdWlyZWQ8QVhTY2hlZHVsZXJBcHBvaW50bWVudERhdGFTb3VyY2U+KCk7XG5cbiAgcHJvdGVjdGVkIGhvbGlkYXlzID0gKHJhbmdlOiBBWFNjaGVkdWxlckRhdGVSYW5nZSk6IFByb21pc2U8QVhIb2xpZGF5RGF0ZVtdPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMudGFza0JvYXJkU2VydmljZS5nZXRFdmVudHMocmFuZ2UpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBjdXJyZW50U2NoZWR1bGVyVmlldyA9IGNvbXB1dGVkPEFYU2NoZWR1bGVyVmlldz4oKCkgPT5cbiAgICB0aGlzLnNlbGVjdGVkVmlldygpID09PSAna2FuYmFuJyB8fCB0aGlzLnNlbGVjdGVkVmlldygpID09PSAnZ3JpZCdcbiAgICAgID8gJ21vbnRoJ1xuICAgICAgOiAodGhpcy5zZWxlY3RlZFZpZXcoKSBhcyBBWFNjaGVkdWxlclZpZXcpLFxuICApO1xuXG4gIG9uVGFza0NsaWNrID0gb3V0cHV0PEFYUFRhc2s+KCk7XG4gIG9uVGFza0NoYW5nZWQgPSBvdXRwdXQ8QVhQVGFzaz4oKTtcbiAgb25Nb250aFNsb3REYmxDbGlja2VkID0gb3V0cHV0PERhdGU+KCk7XG4gIG9uQWN0aW9uQ2xpY2sgPSBvdXRwdXQ8QVhQVGFza0FjdGlvbj4oKTtcbiAgY29tcG9uZW50ID0gb3V0cHV0PEFYU2NoZWR1bGVyQ29tcG9uZW50PigpO1xuICBvblRhc2tSaWdodENsaWNrID0gb3V0cHV0PEFYUFRhc2tBY3Rpb24+KCk7XG4gIG9uUmFuZ2VDaGFuZ2VkID0gb3V0cHV0PEFYU2NoZWR1bGVyRGF0ZVJhbmdlPigpO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY2hlZHVsZXJDb21wb25lbnQoKSkge1xuICAgICAgdGhpcy5jb21wb25lbnQuZW1pdCh0aGlzLnNjaGVkdWxlckNvbXBvbmVudCgpISk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uVGFza0Ryb3AoZXZlbnQ6IEFYU2NoZWR1bGVyU2xvdERyb3BFdmVudCkge1xuICAgIGlmIChldmVudC5pc1NhbWVTbG90RHJvcCkgcmV0dXJuO1xuICAgIGxldCBmcm9tOiBEYXRlO1xuICAgIGxldCBlbmQ6IERhdGU7XG4gICAgY29uc3QgYXBwdFN0YXJ0RGF0ZSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShldmVudC5hcHBvaW50bWVudC5zdGFydERhdGUpO1xuICAgIGNvbnN0IGFwcHRFbmREYXRlID0gZXZlbnQuYXBwb2ludG1lbnQuZW5kRGF0ZTtcblxuICAgIGNvbnN0IGFwcHREaWZmVGltZSA9IE1hdGguYWJzKGFwcHRTdGFydERhdGUuZGF0ZS5nZXRUaW1lKCkgLSBhcHB0RW5kRGF0ZS5nZXRUaW1lKCkpO1xuICAgIHN3aXRjaCAoZXZlbnQuc2xvdC52aWV3KSB7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICBjYXNlICdhZ2VuZGEnOlxuICAgICAgICBmcm9tID0gdGhpcy5jYWxlbmRhclNlcnZpY2VcbiAgICAgICAgICAuY3JlYXRlKGV2ZW50LnNsb3Quc3RhcnREYXRlLmRhdGUpXG4gICAgICAgICAgLnNldCgnaG91cicsIGFwcHRTdGFydERhdGUuaG91cilcbiAgICAgICAgICAuc2V0KCdtaW51dGUnLCBhcHB0U3RhcnREYXRlLm1pbnV0ZSlcbiAgICAgICAgICAuc2V0KCdzZWNvbmQnLCBhcHB0U3RhcnREYXRlLnNlY29uZCkuZGF0ZTtcbiAgICAgICAgZW5kID0gbmV3IERhdGUoZnJvbS5nZXRUaW1lKCkgKyBhcHB0RGlmZlRpbWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZnJvbSA9IGV2ZW50LnNsb3Quc3RhcnREYXRlLmRhdGU7XG4gICAgICAgIGVuZCA9IGV2ZW50LnNsb3QuZW5kRGF0ZS5kYXRlO1xuXG4gICAgICAgIGNvbnN0IGlzQWxsRGF5ID0gTWF0aC5hYnMoZnJvbS5nZXRUaW1lKCkgLSBlbmQuZ2V0VGltZSgpKSA+PSAyNCAqIDYwICogNjAgKiAxMDAwIC0gMTtcbiAgICAgICAgY29uc3Qgd2FzQWxsRGF5ID0gYXBwdERpZmZUaW1lID49IDI0ICogNjAgKiA2MCAqIDEwMDAgLSAxO1xuXG4gICAgICAgIGlmICgod2FzQWxsRGF5ICYmIGlzQWxsRGF5KSB8fCAoIXdhc0FsbERheSAmJiAhaXNBbGxEYXkpKSB7XG4gICAgICAgICAgZW5kID0gbmV3IERhdGUoZnJvbS5nZXRUaW1lKCkgKyBhcHB0RGlmZlRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMudGFza0JvYXJkU2VydmljZS51cGRhdGVUYXNrRGF0ZVJhbmdlKGV2ZW50LmFwcG9pbnRtZW50IGFzIEFYUFRhc2ssIHsgZnJvbSwgZW5kIH0pLnRoZW4oKHRhc2spID0+IHtcbiAgICAgIHRoaXMub25UYXNrQ2hhbmdlZC5lbWl0KHRhc2spO1xuICAgICAgdGhpcy5zY2hlZHVsZXJDb21wb25lbnQoKT8ucmVmcmVzaChbdGFza10pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uVGFza1JpZ2h0Q2xpY2tIYW5kbGVyKGV2ZW50OiBBWFNjaGVkdWxlckFwcG9pbnRtZW50TW91c2VFdmVudCkge1xuICAgIHRoaXMub25UYXNrUmlnaHRDbGljay5lbWl0KHsgbmF0aXZlRXZlbnQ6IGV2ZW50Lm5hdGl2ZUV2ZW50LCB0YXNrOiBldmVudC5hcHBvaW50bWVudCBhcyBBWFBUYXNrIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU2xvdERibENsaWNrZWQoZXZlbnQ6IEFYU2NoZWR1bGVyU2xvdE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuc2VuZGVyLnNlbGVjdGVkVmlldygpID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLm9uTW9udGhTbG90RGJsQ2xpY2tlZC5lbWl0KGV2ZW50LnNsb3Quc3RhcnREYXRlLmRhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVSYW5nZUNoYW5nZWQoZXZlbnQ6IEFYU2NoZWR1bGVyRGF0ZVJhbmdlKSB7XG4gICAgdGhpcy5vblJhbmdlQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVBY3Rpb25DbGljayhldmVudDogQVhTY2hlZHVsZXJBcHBvaW50bWVudE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2suZW1pdCh7IG5hdGl2ZUV2ZW50OiBldmVudC5uYXRpdmVFdmVudCwgdGFzazogZXZlbnQuYXBwb2ludG1lbnQgYXMgQVhQVGFzayB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblRhc2tDbGlja0hhbmRsZXIoZXZlbnQ6IEFYU2NoZWR1bGVyQXBwb2ludG1lbnRNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5vblRhc2tDbGljay5lbWl0KGV2ZW50LmFwcG9pbnRtZW50IGFzIEFYUFRhc2spO1xuICB9XG59XG4iLCI8YXgtc2NoZWR1bGVyXG4gIFtoYXNIZWFkZXJdPVwiZmFsc2VcIlxuICBbaGFzQWN0aW9uc109XCJ0cnVlXCJcbiAgW2hvbGlkYXlzXT1cImhvbGlkYXlzXCJcbiAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZSgpXCJcbiAgW3N0YXJ0aW5nRGF0ZV09XCJzdGFydGluZ0RhdGUoKVwiXG4gIFtzZWxlY3RlZFZpZXddPVwiY3VycmVudFNjaGVkdWxlclZpZXcoKVwiXG4gIFttdWx0aURheVZpZXdEYXlzQ291bnRdPVwidm0uZGF5c0NvdW50KClcIlxuICAob25BcHBvaW50bWVudERyb3ApPVwib25UYXNrRHJvcCgkZXZlbnQpXCJcbiAgKG9uQWN0aW9uQ2xpY2spPVwiaGFuZGxlQWN0aW9uQ2xpY2soJGV2ZW50KVwiXG4gIChvblJhbmdlQ2hhbmdlZCk9XCJoYW5kbGVSYW5nZUNoYW5nZWQoJGV2ZW50KVwiXG4gIChvblNsb3REYmxDbGlja2VkKT1cIm9uU2xvdERibENsaWNrZWQoJGV2ZW50KVwiXG4gIChvbkFwcG9pbnRtZW50Q2xpY2tlZCk9XCJvblRhc2tDbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gIChvbkFwcG9pbnRtZW50UmlnaHRDbGljayk9XCJvblRhc2tSaWdodENsaWNrSGFuZGxlcigkZXZlbnQpXCJcbj48L2F4LXNjaGVkdWxlcj5cbiJdfQ==","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, ViewEncapsulation, } from '@angular/core';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/data-table\";\nimport * as i2 from \"@acorex/platform/layout/builder\";\nexport class AXMTaskBoardGridViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.dataSource = input.required(...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.onTaskClick = output();\n this.onActionClick = output();\n this.fetchedTasks = signal([], ...(ngDevMode ? [{ debugName: \"fetchedTasks\" }] : []));\n this.columns = signal([], ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n this.tasksDataSource = computed(() => {\n const parentDataSource = this.dataSource();\n return new AXDataSource({\n load: async (e) => {\n const result = await parentDataSource({ skip: e.skip, take: e.take });\n this.fetchedTasks.set(result.items);\n const mappedItems = result.items.map((task) => ({\n id: task.id,\n data: task.data,\n title: task.title,\n priority: task.priority,\n description: task.description,\n statusTitle: task.status.title,\n reporter: task.reporter.fullName ?? '-',\n assignee: task.assignee?.fullName ?? 'unassigned',\n type: this.taskBoardService.getProvider(task.provider)?.title,\n endDate: this.calendarService.format(task.endDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n startDate: this.calendarService.format(task.startDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n }));\n return { items: mappedItems, total: result.total };\n },\n pageSize: 10,\n key: 'id',\n byKey: async (key) => {\n return this.fetchedTasks().find((task) => task.id === key);\n },\n });\n }, ...(ngDevMode ? [{ debugName: \"tasksDataSource\" }] : []));\n this.#dataSourceChanged = effect(() => {\n this.tasksDataSource().refresh();\n }, ...(ngDevMode ? [{ debugName: \"#dataSourceChanged\" }] : []));\n this.#providerChanged = effect(async () => {\n const provider = this.vm.selectedTaskType();\n if (!provider) {\n this.columns.set([]);\n return;\n }\n provider.getExtraFields().then((extraFields) => {\n if (extraFields) {\n this.columns.set(extraFields);\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"#providerChanged\" }] : []));\n }\n #dataSourceChanged;\n #providerChanged;\n handleRowClick(event) {\n if (event.data) {\n this.onTaskClick.emit(event.data);\n }\n }\n onActionClickHandler(e) {\n const task = e.data;\n if (!task)\n return;\n this.onActionClick.emit({ nativeEvent: e.nativeEvent, task });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardGridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.6\", type: AXMTaskBoardGridViewComponent, isStandalone: true, selector: \"axm-task-board-grid-view\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onTaskClick: \"onTaskClick\", onActionClick: \"onActionClick\" }, ngImport: i0, template: \"<ax-data-table\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"tasksDataSource()\\\"\\n (onRowClick)=\\\"handleRowClick($event)\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n>\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"statusTitle\\\" caption=\\\"status\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"type\\\" caption=\\\"type\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n\\n @if (columns().length) {\\n <ng-container>\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n </ng-container>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n</ax-data-table>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXDataTableModule }, { kind: \"component\", type: i1.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"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.AXDataTableTextColumnComponent, selector: \"ax-text-column\", inputs: [\"width\", \"caption\", \"allowSorting\", \"allowResizing\", \"fixed\", \"customExpandIcon\", \"customCollapseIcon\", \"dataField\", \"expandHandler\", \"wrapText\", \"cellTemplate\", \"footerTemplate\", \"headerTemplate\", \"format\", \"formatOptions\"] }, { kind: \"component\", type: i1.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: i2.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardGridViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-grid-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXDataTableModule, AXTranslatorPipe, AsyncPipe, AXPLayoutBuilderModule], template: \"<ax-data-table\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"tasksDataSource()\\\"\\n (onRowClick)=\\\"handleRowClick($event)\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n>\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"statusTitle\\\" caption=\\\"status\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"type\\\" caption=\\\"type\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n\\n @if (columns().length) {\\n <ng-container>\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n </ng-container>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n</ax-data-table>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1ncmlkLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3dvcmtmbG93LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy90YXNrLWJvYXJkL3ZpZXdzL3Rhc2stYm9hcmQtZ3JpZC12aWV3L3Rhc2stYm9hcmQtZ3JpZC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy93b3JrZmxvdy1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC92aWV3cy90YXNrLWJvYXJkLWdyaWQtdmlldy90YXNrLWJvYXJkLWdyaWQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBdUIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztB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Q0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs4R0EzRVUsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsK1NDOUIxQyxvbkRBa0NBLDBJRE5ZLGlCQUFpQix5Z0NBQStCLHNCQUFzQiwrUkFBbkQsZ0JBQWdCLDZDQUFFLFNBQVM7OzJGQUU3Qyw2QkFBNkI7a0JBUnpDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25DbGlja0V2ZW50LCBBWERhdGFTb3VyY2UgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVNb2R1bGUsIEFYRGF0YVRhYmxlUm93Q2xpY2sgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUEV4dHJhRmllbGQsIEFYUFRhc2ssIEFYUFRhc2tBY3Rpb24sIEFYUFRhc2tGaWx0ZXIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQVGFza0JvYXJkU2VydmljZSB9IGZyb20gJy4uLy4uL3Rhc2stYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRWaWV3TW9kZWwgfSBmcm9tICcuLi8uLi90YXNrLWJvYXJkLnZpZXdtb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS10YXNrLWJvYXJkLWdyaWQtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YXNrLWJvYXJkLWdyaWQtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhc2stYm9hcmQtZ3JpZC12aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbQVhEYXRhVGFibGVNb2R1bGUsIEFYVHJhbnNsYXRvclBpcGUsIEFzeW5jUGlwZSwgQVhQTGF5b3V0QnVpbGRlck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVRhc2tCb2FyZEdyaWRWaWV3Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYTVRhc2tCb2FyZFZpZXdNb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFza0JvYXJkU2VydmljZSA9IGluamVjdChBWFBUYXNrQm9hcmRTZXJ2aWNlKTtcblxuICBkYXRhU291cmNlID0gaW5wdXQucmVxdWlyZWQ8KGZpbHRlcj86IEFYUFRhc2tGaWx0ZXIpID0+IFByb21pc2U8eyBpdGVtczogQVhQVGFza1tdOyB0b3RhbDogbnVtYmVyIH0+PigpO1xuXG4gIG9uVGFza0NsaWNrID0gb3V0cHV0PEFYUFRhc2s+KCk7XG4gIG9uQWN0aW9uQ2xpY2sgPSBvdXRwdXQ8QVhQVGFza0FjdGlvbj4oKTtcblxuICBwcml2YXRlIGZldGNoZWRUYXNrcyA9IHNpZ25hbDxBWFBUYXNrW10+KFtdKTtcbiAgcHJvdGVjdGVkIGNvbHVtbnMgPSBzaWduYWw8QVhQRXh0cmFGaWVsZFtdPihbXSk7XG5cbiAgcHJvdGVjdGVkIHRhc2tzRGF0YVNvdXJjZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwYXJlbnREYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCk7XG4gICAgcmV0dXJuIG5ldyBBWERhdGFTb3VyY2U8YW55Pih7XG4gICAgICBsb2FkOiBhc3luYyAoZSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXJlbnREYXRhU291cmNlKHsgc2tpcDogZS5za2lwLCB0YWtlOiBlLnRha2UgfSk7XG4gICAgICAgIHRoaXMuZmV0Y2hlZFRhc2tzLnNldChyZXN1bHQuaXRlbXMpO1xuICAgICAgICBjb25zdCBtYXBwZWRJdGVtcyA9IHJlc3VsdC5pdGVtcy5tYXAoKHRhc2spID0+ICh7XG4gICAgICAgICAgaWQ6IHRhc2suaWQsXG4gICAgICAgICAgZGF0YTogdGFzay5kYXRhLFxuICAgICAgICAgIHRpdGxlOiB0YXNrLnRpdGxlLFxuICAgICAgICAgIHByaW9yaXR5OiB0YXNrLnByaW9yaXR5LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0YXNrLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIHN0YXR1c1RpdGxlOiB0YXNrLnN0YXR1cy50aXRsZSxcbiAgICAgICAgICByZXBvcnRlcjogdGFzay5yZXBvcnRlci5mdWxsTmFtZSA/PyAnLScsXG4gICAgICAgICAgYXNzaWduZWU6IHRhc2suYXNzaWduZWU/LmZ1bGxOYW1lID8/ICd1bmFzc2lnbmVkJyxcbiAgICAgICAgICB0eXBlOiB0aGlzLnRhc2tCb2FyZFNlcnZpY2UuZ2V0UHJvdmlkZXIodGFzay5wcm92aWRlcik/LnRpdGxlLFxuICAgICAgICAgIGVuZERhdGU6IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmZvcm1hdCh0YXNrLmVuZERhdGUsICdERC9NTS9ZWVlZIEhIOm1tJywge1xuICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzdGFydERhdGU6IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmZvcm1hdCh0YXNrLnN0YXJ0RGF0ZSwgJ0REL01NL1lZWVkgSEg6bW0nLCB7XG4gICAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiB7IGl0ZW1zOiBtYXBwZWRJdGVtcywgdG90YWw6IHJlc3VsdC50b3RhbCB9O1xuICAgICAgfSxcbiAgICAgIHBhZ2VTaXplOiAxMCxcbiAgICAgIGtleTogJ2lkJyxcbiAgICAgIGJ5S2V5OiBhc3luYyAoa2V5OiB1bmtub3duKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoZWRUYXNrcygpLmZpbmQoKHRhc2spID0+IHRhc2suaWQgPT09IGtleSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcblxuICAjZGF0YVNvdXJjZUNoYW5nZWQgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMudGFza3NEYXRhU291cmNlKCkucmVmcmVzaCgpO1xuICB9KTtcblxuICAjcHJvdmlkZXJDaGFuZ2VkID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwcm92aWRlciA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrVHlwZSgpO1xuICAgIGlmICghcHJvdmlkZXIpIHtcbiAgICAgIHRoaXMuY29sdW1ucy5zZXQoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb3ZpZGVyLmdldEV4dHJhRmllbGRzKCkudGhlbigoZXh0cmFGaWVsZHMpID0+IHtcbiAgICAgIGlmIChleHRyYUZpZWxkcykge1xuICAgICAgICB0aGlzLmNvbHVtbnMuc2V0KGV4dHJhRmllbGRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0NsaWNrKGV2ZW50OiBBWERhdGFUYWJsZVJvd0NsaWNrKSB7XG4gICAgaWYgKGV2ZW50LmRhdGEpIHtcbiAgICAgIHRoaXMub25UYXNrQ2xpY2suZW1pdChldmVudC5kYXRhIGFzIEFYUFRhc2spO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkFjdGlvbkNsaWNrSGFuZGxlcihlOiBBWEJ1dHRvbkNsaWNrRXZlbnQpIHtcbiAgICBjb25zdCB0YXNrID0gZS5kYXRhIGFzIEFYUFRhc2s7XG4gICAgaWYgKCF0YXNrKSByZXR1cm47XG4gICAgdGhpcy5vbkFjdGlvbkNsaWNrLmVtaXQoeyBuYXRpdmVFdmVudDogZS5uYXRpdmVFdmVudCwgdGFzayB9KTtcbiAgfVxufVxuIiwiPGF4LWRhdGEtdGFibGVcbiAgW2ZldGNoRGF0YU1vZGVdPVwiJ21hbnVhbCdcIlxuICBbZGF0YVNvdXJjZV09XCJ0YXNrc0RhdGFTb3VyY2UoKVwiXG4gIChvblJvd0NsaWNrKT1cImhhbmRsZVJvd0NsaWNrKCRldmVudClcIlxuICBbbG9hZGluZ109XCJ7IGVuYWJsZWQ6IHRydWUsIGFuaW1hdGlvbjogdHJ1ZSB9XCJcbj5cbiAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cInRpdGxlXCIgY2FwdGlvbj1cInRpdGxlXCIgW3dpZHRoXT1cIiczNTBweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwiZGVzY3JpcHRpb25cIiBjYXB0aW9uPVwiZGVzY3JpcHRpb25cIiBbd2lkdGhdPVwiJzUwMHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJzdGFydERhdGVcIiBjYXB0aW9uPVwiU3RhcnQgRGF0ZVwiIFt3aWR0aF09XCInMTUwcHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cImVuZERhdGVcIiBjYXB0aW9uPVwiRHVlIERhdGVcIiBbd2lkdGhdPVwiJzE1MHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJwcmlvcml0eVwiIGNhcHRpb249XCJwcmlvcml0eVwiIFt3aWR0aF09XCInMTI1cHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cInJlcG9ydGVyXCIgY2FwdGlvbj1cIlJlcG9ydGVyXCIgW3dpZHRoXT1cIicxMjVweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwiYXNzaWduZWVcIiBjYXB0aW9uPVwiQXNzaWduZWVcIiBbd2lkdGhdPVwiJzEyNXB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJzdGF0dXNUaXRsZVwiIGNhcHRpb249XCJzdGF0dXNcIiBbd2lkdGhdPVwiJzEyNXB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJ0eXBlXCIgY2FwdGlvbj1cInR5cGVcIiBbd2lkdGhdPVwiJzE1MHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG5cbiAgQGlmIChjb2x1bW5zKCkubGVuZ3RoKSB7XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zKCk7IHRyYWNrIGNvbHVtbikge1xuICAgICAgICA8YXhwLXdpZGdldC1jb2x1bW4tcmVuZGVyZXJcbiAgICAgICAgICBbbm9kZV09XCJjb2x1bW4ud2lkZ2V0XCJcbiAgICAgICAgICBbY2FwdGlvbl09XCIoY29sdW1uLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgID48L2F4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyPlxuICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuICB9XG5cbiAgPGF4LWNvbW1hbmQtY29sdW1uXG4gICAgZml4ZWQ9XCJlbmRcIlxuICAgIFt3aWR0aF09XCInNjBweCdcIlxuICAgIChvbkl0ZW1DbGljayk9XCJvbkFjdGlvbkNsaWNrSGFuZGxlcigkZXZlbnQpXCJcbiAgICBbaXRlbXNdPVwiW3sgbmFtZTogJ3ZpZXcnLCB0ZXh0OiAnVmlldycsIGljb246ICdheC1pY29uIGF4LWljb24tbW9yZS1ob3Jpem9udGFsJyB9XVwiXG4gID48L2F4LWNvbW1hbmQtY29sdW1uPlxuPC9heC1kYXRhLXRhYmxlPlxuIl19","import { AXKanbanComponent, } from '@acorex/components/kanban';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, model, output, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nexport class AXMTaskBoardKanbanViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.kanbanComponent = viewChild(AXKanbanComponent, ...(ngDevMode ? [{ debugName: \"kanbanComponent\" }] : []));\n this.tasks = model.required(...(ngDevMode ? [{ debugName: \"tasks\" }] : []));\n this.onTaskClick = output();\n this.onTaskChanged = output();\n this.component = output();\n this.onActionClick = output();\n this.statuses = signal([], ...(ngDevMode ? [{ debugName: \"statuses\" }] : []));\n this.stableTasks = computed(() => this.tasks(), ...(ngDevMode ? [{ debugName: \"stableTasks\", equal: isEqual }] : [{ equal: isEqual }]));\n this.kanbanTasks = computed(() => {\n return this.stableTasks().map((task) => ({\n id: task.id,\n title: task.title,\n index: task.index,\n cssClass: task.cssClass,\n priority: task.priority,\n statusKey: task.status.id,\n description: task.description,\n }));\n }, ...(ngDevMode ? [{ debugName: \"kanbanTasks\" }] : []));\n this.#providerChanged = effect(async () => {\n const statuses = await this.vm.selectedTaskType()?.getStatuses();\n if (statuses) {\n this.statuses.set(statuses);\n }\n }, ...(ngDevMode ? [{ debugName: \"#providerChanged\" }] : []));\n }\n ngAfterViewInit() {\n if (this.kanbanComponent()) {\n this.component.emit(this.kanbanComponent());\n }\n }\n #providerChanged;\n onSortChanged(event) {\n const tasks = this.tasks().map((item) => {\n const task = event.allItems.find((t) => t.id === item.id);\n if (task) {\n return { ...item, index: task.index, statusKey: task.statusKey };\n }\n return item;\n });\n this.taskBoardService.updateTasks(tasks).then((tasks) => {\n this.tasks.set(tasks);\n });\n }\n handleItemClick(event) {\n const task = this.stableTasks().find((task) => task.id === event.item.id);\n if (task) {\n this.onTaskClick.emit(task);\n }\n }\n handleActionClick(event) {\n const task = this.stableTasks().find((task) => task.id === event.item.id);\n if (task) {\n this.onActionClick.emit({ nativeEvent: event.nativeEvent, task: task });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardKanbanViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.1.6\", type: AXMTaskBoardKanbanViewComponent, isStandalone: true, selector: \"axm-task-board-kanban-view\", inputs: { tasks: { classPropertyName: \"tasks\", publicName: \"tasks\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { tasks: \"tasksChange\", onTaskClick: \"onTaskClick\", onTaskChanged: \"onTaskChanged\", component: \"component\", onActionClick: \"onActionClick\" }, viewQueries: [{ propertyName: \"kanbanComponent\", first: true, predicate: AXKanbanComponent, descendants: true, isSignal: true }], ngImport: i0, template: \"<ax-kanban\\n [hasActions]=\\\"true\\\"\\n [statuses]=\\\"statuses()\\\"\\n [dataSource]=\\\"kanbanTasks()\\\"\\n (onItemClick)=\\\"handleItemClick($event)\\\"\\n (onSortChanged)=\\\"onSortChanged($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n></ax-kanban>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"], dependencies: [{ kind: \"component\", type: AXKanbanComponent, selector: \"ax-kanban\", inputs: [\"hasActions\", \"dragStartDelay\", \"statuses\", \"itemTemplate\", \"dataSource\", \"keyField\", \"indexField\", \"titleField\", \"cssClassField\", \"priorityField\", \"statusKeyField\", \"descriptionField\", \"emptyTemplate\", \"headerTemplate\", \"footerTemplate\", \"contentFooterTemplate\", \"tooltipTemplate\"], outputs: [\"onSortChanged\", \"onItemClick\", \"onActionClick\", \"onItemDblClick\", \"onItemRightClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardKanbanViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-kanban-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXKanbanComponent], template: \"<ax-kanban\\n [hasActions]=\\\"true\\\"\\n [statuses]=\\\"statuses()\\\"\\n [dataSource]=\\\"kanbanTasks()\\\"\\n (onItemClick)=\\\"handleItemClick($event)\\\"\\n (onSortChanged)=\\\"onSortChanged($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n></ax-kanban>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1rYW5iYW4tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvd29ya2Zsb3ctbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1rYW5iYW4tdmlldy90YXNrLWJvYXJkLWthbmJhbi12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy93b3JrZmxvdy1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC92aWV3cy90YXNrLWJvYXJkLWthbmJhbi12aWV3L3Rhc2stYm9hcmQta2FuYmFuLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixHQUtsQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFVbkUsTUFBTSxPQUFPLCtCQUErQjtJQVI1QztRQVNxQixPQUFFLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbkMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFbEUsb0JBQWUsR0FBRyxTQUFTLENBQUMsaUJBQWlCLDJEQUFDLENB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SyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxLQUF5QjtRQUNuRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQztJQUNILENBQUM7OEdBbEVVLCtCQUErQjtrR0FBL0IsK0JBQStCLGlhQUlkLGlCQUFpQixnRUNyQy9DLGdRQVFBLDJJRHVCWSxpQkFBaUI7OzJGQUVoQiwrQkFBK0I7a0JBUjNDLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWEthbmJhbkNvbXBvbmVudCxcbiAgQVhLYW5iYW5JdGVtLFxuICBBWEthbmJhbk1vdXNlRXZlbnQsXG4gIEFYS2FuYmFuU29ydEV2ZW50LFxuICBBWEthbmJhblN0YXR1cyxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2thbmJhbic7XG5pbXBvcnQgeyBBWFBUYXNrLCBBWFBUYXNrQWN0aW9uIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIG1vZGVsLFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUFRhc2tCb2FyZFNlcnZpY2UgfSBmcm9tICcuLi8uLi90YXNrLWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkVmlld01vZGVsIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tdGFzay1ib2FyZC1rYW5iYW4tdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YXNrLWJvYXJkLWthbmJhbi12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1ib2FyZC1rYW5iYW4tdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW0FYS2FuYmFuQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVGFza0JvYXJkS2FuYmFuVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhNVGFza0JvYXJkVmlld01vZGVsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRhc2tCb2FyZFNlcnZpY2UgPSBpbmplY3QoQVhQVGFza0JvYXJkU2VydmljZSk7XG5cbiAga2FuYmFuQ29tcG9uZW50ID0gdmlld0NoaWxkKEFYS2FuYmFuQ29tcG9uZW50KTtcblxuICB0YXNrcyA9IG1vZGVsLnJlcXVpcmVkPEFYUFRhc2tbXT4oKTtcblxuICBvblRhc2tDbGljayA9IG91dHB1dDxBWFBUYXNrPigpO1xuICBvblRhc2tDaGFuZ2VkID0gb3V0cHV0PEFYUFRhc2s+KCk7XG4gIGNvbXBvbmVudCA9IG91dHB1dDxBWEthbmJhbkNvbXBvbmVudD4oKTtcbiAgb25BY3Rpb25DbGljayA9IG91dHB1dDxBWFBUYXNrQWN0aW9uPigpO1xuXG4gIHN0YXR1c2VzID0gc2lnbmFsPEFYS2FuYmFuU3RhdHVzW10+KFtdKTtcblxuICBzdGFibGVUYXNrcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGFza3MoKSwgeyBlcXVhbDogaXNFcXVhbCB9KTtcbiAgcHJvdGVjdGVkIGthbmJhblRhc2tzID0gY29tcHV0ZWQ8QVhLYW5iYW5JdGVtW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zdGFibGVUYXNrcygpLm1hcCgodGFzaykgPT4gKHtcbiAgICAgIGlkOiB0YXNrLmlkLFxuICAgICAgdGl0bGU6IHRhc2sudGl0bGUsXG4gICAgICBpbmRleDogdGFzay5pbmRleCxcbiAgICAgIGNzc0NsYXNzOiB0YXNrLmNzc0NsYXNzLFxuICAgICAgcHJpb3JpdHk6IHRhc2sucHJpb3JpdHksXG4gICAgICBzdGF0dXNLZXk6IHRhc2suc3RhdHVzLmlkLFxuICAgICAgZGVzY3JpcHRpb246IHRhc2suZGVzY3JpcHRpb24sXG4gICAgfSkpO1xuICB9KTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMua2FuYmFuQ29tcG9uZW50KCkpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LmVtaXQodGhpcy5rYW5iYW5Db21wb25lbnQoKSEpO1xuICAgIH1cbiAgfVxuXG4gICNwcm92aWRlckNoYW5nZWQgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHN0YXR1c2VzID0gYXdhaXQgdGhpcy52bS5zZWxlY3RlZFRhc2tUeXBlKCk/LmdldFN0YXR1c2VzKCk7XG4gICAgaWYgKHN0YXR1c2VzKSB7XG4gICAgICB0aGlzLnN0YXR1c2VzLnNldChzdGF0dXNlcyk7XG4gICAgfVxuICB9KTtcblxuICBwcm90ZWN0ZWQgb25Tb3J0Q2hhbmdlZChldmVudDogQVhLYW5iYW5Tb3J0RXZlbnQpIHtcbiAgICBjb25zdCB0YXNrcyA9IHRoaXMudGFza3MoKS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHRhc2sgPSBldmVudC5hbGxJdGVtcy5maW5kKCh0KSA9PiB0LmlkID09PSBpdGVtLmlkKTtcbiAgICAgIGlmICh0YXNrKSB7XG4gICAgICAgIHJldHVybiB7IC4uLml0ZW0sIGluZGV4OiB0YXNrLmluZGV4LCBzdGF0dXNLZXk6IHRhc2suc3RhdHVzS2V5IH07XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcbiAgICB0aGlzLnRhc2tCb2FyZFNlcnZpY2UudXBkYXRlVGFza3ModGFza3MpLnRoZW4oKHRhc2tzKSA9PiB7XG4gICAgICB0aGlzLnRhc2tzLnNldCh0YXNrcyk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlSXRlbUNsaWNrKGV2ZW50OiBBWEthbmJhbk1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5zdGFibGVUYXNrcygpLmZpbmQoKHRhc2spID0+IHRhc2suaWQgPT09IGV2ZW50Lml0ZW0uaWQpO1xuICAgIGlmICh0YXNrKSB7XG4gICAgICB0aGlzLm9uVGFza0NsaWNrLmVtaXQodGFzayk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUFjdGlvbkNsaWNrKGV2ZW50OiBBWEthbmJhbk1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5zdGFibGVUYXNrcygpLmZpbmQoKHRhc2spID0+IHRhc2suaWQgPT09IGV2ZW50Lml0ZW0uaWQpO1xuICAgIGlmICh0YXNrKSB7XG4gICAgICB0aGlzLm9uQWN0aW9uQ2xpY2suZW1pdCh7IG5hdGl2ZUV2ZW50OiBldmVudC5uYXRpdmVFdmVudCwgdGFzazogdGFzayB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxheC1rYW5iYW5cbiAgW2hhc0FjdGlvbnNdPVwidHJ1ZVwiXG4gIFtzdGF0dXNlc109XCJzdGF0dXNlcygpXCJcbiAgW2RhdGFTb3VyY2VdPVwia2FuYmFuVGFza3MoKVwiXG4gIChvbkl0ZW1DbGljayk9XCJoYW5kbGVJdGVtQ2xpY2soJGV2ZW50KVwiXG4gIChvblNvcnRDaGFuZ2VkKT1cIm9uU29ydENoYW5nZWQoJGV2ZW50KVwiXG4gIChvbkFjdGlvbkNsaWNrKT1cImhhbmRsZUFjdGlvbkNsaWNrKCRldmVudClcIlxuPjwvYXgta2FuYmFuPlxuIl19","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, output, signal, untracked, ViewEncapsulation, } from '@angular/core';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/data-table\";\nimport * as i2 from \"@acorex/platform/layout/builder\";\nexport class AXMTaskBoardStatusGroupedGridViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n this.provider = input(...(ngDevMode ? [undefined, { debugName: \"provider\" }] : []));\n this.dataSource = input.required(...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.onActionClick = output();\n this.groupedTasks = signal([], ...(ngDevMode ? [{ debugName: \"groupedTasks\" }] : []));\n this.allFetchedTasks = signal([], ...(ngDevMode ? [{ debugName: \"allFetchedTasks\" }] : []));\n this.columns = signal([], ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n this.statuses = signal([], ...(ngDevMode ? [{ debugName: \"statuses\" }] : []));\n this.#dataChanged = effect(async () => {\n const parentDataSource = this.dataSource();\n const allStatuses = this.statuses();\n if (!parentDataSource || allStatuses.length === 0) {\n this.groupedTasks.set([]);\n this.allFetchedTasks.set([]);\n return;\n }\n const result = await parentDataSource();\n this.allFetchedTasks.set(result.items);\n const allTasks = result.items;\n const statusGroups = allStatuses.map((status) => {\n const tasksForStatus = allTasks.filter((task) => task.status.id === status.key);\n return {\n statusInfo: status,\n tasks: this.createTaskDataSourceForGroup(tasksForStatus),\n };\n });\n this.groupedTasks.set(statusGroups);\n untracked(() => {\n setTimeout(() => {\n this.groupedTasks()?.forEach((group) => {\n group.tasks.refresh();\n });\n });\n });\n }, ...(ngDevMode ? [{ debugName: \"#dataChanged\" }] : []));\n this.#providerChanged = effect(async () => {\n const provider = this.vm.selectedTaskType();\n provider?.getExtraFields().then((extraFields) => {\n if (extraFields) {\n this.columns.set(extraFields);\n }\n });\n provider?.getStatuses().then((statuses) => {\n if (statuses) {\n this.statuses.set(statuses);\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"#providerChanged\" }] : []));\n }\n #dataChanged;\n #providerChanged;\n createTaskDataSourceForGroup(tasks) {\n return new AXDataSource({\n load: async (e) => {\n const items = tasks.map((task) => ({\n id: task.id,\n data: task.data,\n title: task.title,\n priority: task.priority,\n description: task.description,\n reporter: task.reporter.fullName ?? '-',\n assignee: task.assignee?.fullName ?? 'unassigned',\n endDate: this.calendarService.format(task.endDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n startDate: this.calendarService.format(task.startDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n }));\n return {\n items: items.slice(e.skip, e.skip + e.take),\n total: items.length,\n };\n },\n pageSize: 5,\n key: 'id',\n byKey: async (key) => {\n return tasks.find((task) => task.id === key);\n },\n });\n }\n onActionClickHandler(e) {\n const task = this.allFetchedTasks().find((task) => task.id === e.data.id);\n if (!task)\n return;\n this.onActionClick.emit({ nativeEvent: e.nativeEvent, task });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardStatusGroupedGridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.6\", type: AXMTaskBoardStatusGroupedGridViewComponent, isStandalone: true, selector: \"axm-task-board-status-grouped-grid-view\", inputs: { provider: { classPropertyName: \"provider\", publicName: \"provider\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onActionClick: \"onActionClick\" }, ngImport: i0, template: \"@for (group of groupedTasks(); track group) {\\n <h1 class=\\\"ax-text-xl ax-font-bold\\\">{{ group.statusInfo.title }}</h1>\\n <ax-data-table\\n class=\\\"ax-h-[300px]\\\"\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"group.tasks\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n >\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n </ax-data-table>\\n}\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXDataTableModule }, { kind: \"component\", type: i1.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"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.AXDataTableTextColumnComponent, selector: \"ax-text-column\", inputs: [\"width\", \"caption\", \"allowSorting\", \"allowResizing\", \"fixed\", \"customExpandIcon\", \"customCollapseIcon\", \"dataField\", \"expandHandler\", \"wrapText\", \"cellTemplate\", \"footerTemplate\", \"headerTemplate\", \"format\", \"formatOptions\"] }, { kind: \"component\", type: i1.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: i2.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardStatusGroupedGridViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-status-grouped-grid-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXDataTableModule, AXTranslatorPipe, AsyncPipe, AXPLayoutBuilderModule], template: \"@for (group of groupedTasks(); track group) {\\n <h1 class=\\\"ax-text-xl ax-font-bold\\\">{{ group.statusInfo.title }}</h1>\\n <ax-data-table\\n class=\\\"ax-h-[300px]\\\"\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"group.tasks\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n >\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n </ax-data-table>\\n}\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3dvcmtmbG93LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy90YXNrLWJvYXJkL3ZpZXdzL3Rhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3L3Rhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy93b3JrZmxvdy1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC92aWV3cy90YXNrLWJvYXJkLXN0YXR1cy1ncm91cGVkLWdyaWQtdmlldy90YXNrLWJvYXJkLXN0YXR1cy1ncm91cGVkLWdyaWQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQVF6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1Qs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MENBQTBDO2tCQVJ0RCxTQUFTOytCQUNFLHlDQUF5QyxtQkFHbEMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxXQUM1QixDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uQ2xpY2tFdmVudCwgQVhEYXRhU291cmNlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RhdGEtdGFibGUnO1xuaW1wb3J0IHsgQVhLYW5iYW5TdGF0dXMgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMva2FuYmFuJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBBWExvY2FsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvbG9jYWxlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRvclBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHtcbiAgQVhQRXh0cmFGaWVsZCxcbiAgQVhQVGFzayxcbiAgQVhQVGFza0FjdGlvbixcbiAgQVhQVGFza0ZpbHRlcixcbiAgQVhQV29ya2Zsb3dUYXNrUHJvdmlkZXIsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd29ya2Zsb3cnO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIHVudHJhY2tlZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkVmlld01vZGVsIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG5pbnRlcmZhY2UgU3RhdHVzVGFza0dyb3VwIHtcbiAgc3RhdHVzSW5mbzogQVhLYW5iYW5TdGF0dXM7XG4gIHRhc2tzOiBBWERhdGFTb3VyY2U8YW55Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLXRhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtBWERhdGFUYWJsZU1vZHVsZSwgQVhUcmFuc2xhdG9yUGlwZSwgQXN5bmNQaXBlLCBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVGFza0JvYXJkU3RhdHVzR3JvdXBlZEdyaWRWaWV3Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYTVRhc2tCb2FyZFZpZXdNb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuXG4gIHByb3ZpZGVyID0gaW5wdXQ8QVhQV29ya2Zsb3dUYXNrUHJvdmlkZXI+KCk7XG4gIGRhdGFTb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDwoZmlsdGVyPzogQVhQVGFza0ZpbHRlcikgPT4gUHJvbWlzZTx7IGl0ZW1zOiBBWFBUYXNrW107IHRvdGFsOiBudW1iZXIgfT4+KCk7XG5cbiAgb25BY3Rpb25DbGljayA9IG91dHB1dDxBWFBUYXNrQWN0aW9uPigpO1xuXG4gIGdyb3VwZWRUYXNrcyA9IHNpZ25hbDxTdGF0dXNUYXNrR3JvdXBbXT4oW10pO1xuICBwcml2YXRlIGFsbEZldGNoZWRUYXNrcyA9IHNpZ25hbDxBWFBUYXNrW10+KFtdKTtcbiAgcHJvdGVjdGVkIGNvbHVtbnMgPSBzaWduYWw8QVhQRXh0cmFGaWVsZFtdPihbXSk7XG4gIHByb3RlY3RlZCBzdGF0dXNlcyA9IHNpZ25hbDxBWEthbmJhblN0YXR1c1tdPihbXSk7XG5cbiAgI2RhdGFDaGFuZ2VkID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXJlbnREYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCk7XG4gICAgY29uc3QgYWxsU3RhdHVzZXMgPSB0aGlzLnN0YXR1c2VzKCk7XG5cbiAgICBpZiAoIXBhcmVudERhdGFTb3VyY2UgfHwgYWxsU3RhdHVzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmdyb3VwZWRUYXNrcy5zZXQoW10pO1xuICAgICAgdGhpcy5hbGxGZXRjaGVkVGFza3Muc2V0KFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXJlbnREYXRhU291cmNlKCk7XG4gICAgdGhpcy5hbGxGZXRjaGVkVGFza3Muc2V0KHJlc3VsdC5pdGVtcyk7XG4gICAgY29uc3QgYWxsVGFza3MgPSByZXN1bHQuaXRlbXM7XG5cbiAgICBjb25zdCBzdGF0dXNHcm91cHMgPSBhbGxTdGF0dXNlcy5tYXAoKHN0YXR1cykgPT4ge1xuICAgICAgY29uc3QgdGFza3NGb3JTdGF0dXMgPSBhbGxUYXNrcy5maWx0ZXIoKHRhc2spID0+IHRhc2suc3RhdHVzLmlkID09PSBzdGF0dXMua2V5KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1c0luZm86IHN0YXR1cyxcbiAgICAgICAgdGFza3M6IHRoaXMuY3JlYXRlVGFza0RhdGFTb3VyY2VGb3JHcm91cCh0YXNrc0ZvclN0YXR1cyksXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5ncm91cGVkVGFza3Muc2V0KHN0YXR1c0dyb3Vwcyk7XG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmdyb3VwZWRUYXNrcygpPy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgIGdyb3VwLnRhc2tzLnJlZnJlc2goKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgI3Byb3ZpZGVyQ2hhbmdlZCA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnZtLnNlbGVjdGVkVGFza1R5cGUoKTtcbiAgICBwcm92aWRlcj8uZ2V0RXh0cmFGaWVsZHMoKS50aGVuKChleHRyYUZpZWxkcykgPT4ge1xuICAgICAgaWYgKGV4dHJhRmllbGRzKSB7XG4gICAgICAgIHRoaXMuY29sdW1ucy5zZXQoZXh0cmFGaWVsZHMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHByb3ZpZGVyPy5nZXRTdGF0dXNlcygpLnRoZW4oKHN0YXR1c2VzKSA9PiB7XG4gICAgICBpZiAoc3RhdHVzZXMpIHtcbiAgICAgICAgdGhpcy5zdGF0dXNlcy5zZXQoc3RhdHVzZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBwcml2YXRlIGNyZWF0ZVRhc2tEYXRhU291cmNlRm9yR3JvdXAodGFza3M6IEFYUFRhc2tbXSk6IEFYRGF0YVNvdXJjZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IEFYRGF0YVNvdXJjZTxhbnk+KHtcbiAgICAgIGxvYWQ6IGFzeW5jIChlKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGFza3MubWFwKCh0YXNrKSA9PiAoe1xuICAgICAgICAgIGlkOiB0YXNrLmlkLFxuICAgICAgICAgIGRhdGE6IHRhc2suZGF0YSxcbiAgICAgICAgICB0aXRsZTogdGFzay50aXRsZSxcbiAgICAgICAgICBwcmlvcml0eTogdGFzay5wcmlvcml0eSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgICByZXBvcnRlcjogdGFzay5yZXBvcnRlci5mdWxsTmFtZSA/PyAnLScsXG4gICAgICAgICAgYXNzaWduZWU6IHRhc2suYXNzaWduZWU/LmZ1bGxOYW1lID8/ICd1bmFzc2lnbmVkJyxcbiAgICAgICAgICBlbmREYXRlOiB0aGlzLmNhbGVuZGFyU2VydmljZS5mb3JtYXQodGFzay5lbmREYXRlLCAnREQvTU0vWVlZWSBISDptbScsIHtcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3RhcnREYXRlOiB0aGlzLmNhbGVuZGFyU2VydmljZS5mb3JtYXQodGFzay5zdGFydERhdGUsICdERC9NTS9ZWVlZIEhIOm1tJywge1xuICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGl0ZW1zOiBpdGVtcy5zbGljZShlLnNraXAsIGUuc2tpcCArIGUudGFrZSksXG4gICAgICAgICAgdG90YWw6IGl0ZW1zLmxlbmd0aCxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBwYWdlU2l6ZTogNSxcbiAgICAgIGtleTogJ2lkJyxcbiAgICAgIGJ5S2V5OiBhc3luYyAoa2V5OiB1bmtub3duKSA9PiB7XG4gICAgICAgIHJldHVybiB0YXNrcy5maW5kKCh0YXNrKSA9PiB0YXNrLmlkID09PSBrZXkpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkFjdGlvbkNsaWNrSGFuZGxlcihlOiBBWEJ1dHRvbkNsaWNrRXZlbnQpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5hbGxGZXRjaGVkVGFza3MoKS5maW5kKCh0YXNrKSA9PiB0YXNrLmlkID09PSBlLmRhdGEuaWQpO1xuICAgIGlmICghdGFzaykgcmV0dXJuO1xuICAgIHRoaXMub25BY3Rpb25DbGljay5lbWl0KHsgbmF0aXZlRXZlbnQ6IGUubmF0aXZlRXZlbnQsIHRhc2sgfSk7XG4gIH1cbn1cbiIsIkBmb3IgKGdyb3VwIG9mIGdyb3VwZWRUYXNrcygpOyB0cmFjayBncm91cCkge1xuICA8aDEgY2xhc3M9XCJheC10ZXh0LXhsIGF4LWZvbnQtYm9sZFwiPnt7IGdyb3VwLnN0YXR1c0luZm8udGl0bGUgfX08L2gxPlxuICA8YXgtZGF0YS10YWJsZVxuICAgIGNsYXNzPVwiYXgtaC1bMzAwcHhdXCJcbiAgICBbZmV0Y2hEYXRhTW9kZV09XCInbWFudWFsJ1wiXG4gICAgW2RhdGFTb3VyY2VdPVwiZ3JvdXAudGFza3NcIlxuICAgIFtsb2FkaW5nXT1cInsgZW5hYmxlZDogdHJ1ZSwgYW5pbWF0aW9uOiB0cnVlIH1cIlxuICA+XG4gICAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cInRpdGxlXCIgY2FwdGlvbj1cInRpdGxlXCIgW3dpZHRoXT1cIiczNTBweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICAgIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJkZXNjcmlwdGlvblwiIGNhcHRpb249XCJkZXNjcmlwdGlvblwiIFt3aWR0aF09XCInNTAwcHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwic3RhcnREYXRlXCIgY2FwdGlvbj1cIlN0YXJ0IERhdGVcIiBbd2lkdGhdPVwiJzE1MHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gICAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cImVuZERhdGVcIiBjYXB0aW9uPVwiRHVlIERhdGVcIiBbd2lkdGhdPVwiJzE1MHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gICAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cInByaW9yaXR5XCIgY2FwdGlvbj1cInByaW9yaXR5XCIgW3dpZHRoXT1cIicxMjVweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICAgIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJyZXBvcnRlclwiIGNhcHRpb249XCJSZXBvcnRlclwiIFt3aWR0aF09XCInMTI1cHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwiYXNzaWduZWVcIiBjYXB0aW9uPVwiQXNzaWduZWVcIiBbd2lkdGhdPVwiJzEyNXB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gICAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cInByaW9yaXR5XCIgY2FwdGlvbj1cInByaW9yaXR5XCIgW3dpZHRoXT1cIicxMjVweCdcIj48L2F4LXRleHQtY29sdW1uPlxuXG4gICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnMoKTsgdHJhY2sgY29sdW1uKSB7XG4gICAgICA8YXhwLXdpZGdldC1jb2x1bW4tcmVuZGVyZXJcbiAgICAgICAgW25vZGVdPVwiY29sdW1uLndpZGdldFwiXG4gICAgICAgIFtjYXB0aW9uXT1cIihjb2x1bW4udGl0bGUgfCB0cmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgID48L2F4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyPlxuICAgIH1cblxuICAgIDxheC1jb21tYW5kLWNvbHVtblxuICAgICAgZml4ZWQ9XCJlbmRcIlxuICAgICAgW3dpZHRoXT1cIic2MHB4J1wiXG4gICAgICAob25JdGVtQ2xpY2spPVwib25BY3Rpb25DbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gICAgICBbaXRlbXNdPVwiW3sgbmFtZTogJ3ZpZXcnLCB0ZXh0OiAnVmlldycsIGljb246ICdheC1pY29uIGF4LWljb24tbW9yZS1ob3Jpem9udGFsJyB9XVwiXG4gICAgPjwvYXgtY29tbWFuZC1jb2x1bW4+XG4gIDwvYXgtZGF0YS10YWJsZT5cbn1cbiJdfQ==","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCalendarComponent } from '@acorex/components/calendar';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXMenuModule, } from '@acorex/components/menu';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter, startWith } from 'rxjs';\nimport { RootConfig } from '../../const';\nimport { AXMTaskBoardDetailPanel } from './task-board-detail-panel/task-board-detail-panel.component';\nimport { AXPTaskBoardService } from './task-board.service';\nimport { AXMTaskBoardViewModel } from './task-board.viewmodel';\nimport { AXMTaskBoardCalendarViewComponent } from './views/task-board-calendar-view/task-board-calendar-view.component';\nimport { AXMTaskBoardGridViewComponent } from './views/task-board-grid-view/task-board-grid-view.component';\nimport { AXMTaskBoardKanbanViewComponent } from './views/task-board-kanban-view/task-board-kanban-view.component';\nimport { AXMTaskBoardStatusGroupedGridViewComponent } from './views/task-board-status-grouped-grid-view/task-board-status-grouped-grid-view.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/menu\";\nimport * as i3 from \"@acorex/components/button\";\nimport * as i4 from \"@acorex/core/translation\";\nimport * as i5 from \"@acorex/components/decorators\";\nimport * as i6 from \"@acorex/components/popover\";\nimport * as i7 from \"@angular/common\";\nexport class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n this.router = inject(Router);\n this.rootConfig = RootConfig;\n this.vm = inject(AXMTaskBoardViewModel);\n this.unsubscribe = inject(AXUnsubscriber);\n this.activatedRoute = inject(ActivatedRoute);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.popover = viewChild('popover', ...(ngDevMode ? [{ debugName: \"popover\" }] : []));\n this.calendar = viewChild('calendar', ...(ngDevMode ? [{ debugName: \"calendar\" }] : []));\n this.currentTask = signal(null, ...(ngDevMode ? [{ debugName: \"currentTask\" }] : []));\n this.currentViewMode = signal('calendar', ...(ngDevMode ? [{ debugName: \"currentViewMode\" }] : []));\n this.schedulerComponent = signal(null, ...(ngDevMode ? [{ debugName: \"schedulerComponent\" }] : []));\n this.menuItems = signal([\n {\n key: 'calendar',\n text: 'calendar',\n icon: 'fa-light fa-calendar-day',\n children: [\n { key: 'day', text: 'daily', icon: 'fa-light fa-calendar-day' },\n { key: 'week', text: 'weekly', icon: 'fa-light fa-calendar-week' },\n { key: 'month', text: 'monthly', icon: 'fa-light fa-calendar-alt' },\n { key: 'agenda', text: 'agenda', icon: 'fa-light fa-calendar-range' },\n ],\n },\n {\n key: 'table',\n text: 'table',\n icon: 'fa-light fa-table',\n children: [\n { key: 'grid', text: 'grid', icon: 'fa-light fa-table' },\n { key: 'status-grouped-grid', text: 'status-grouped-grid', icon: 'fa-light fa-table' },\n ],\n },\n { key: 'kanban', text: 'kanban', icon: 'fa-light fa-chart-kanban' },\n ], ...(ngDevMode ? [{ debugName: \"menuItems\" }] : []));\n this.calendarType = computed(() => this.localeService.activeProfile().calendar.system, ...(ngDevMode ? [{ debugName: \"calendarType\" }] : []));\n this.todayButtonText = computed(() => {\n switch (this.vm.currentViewMode()) {\n case 'day':\n case 'grid':\n case 'agenda':\n case 'kanban':\n case 'timeline-day':\n case 'timeline-multi-day':\n case 'status-grouped-grid':\n return 'Today';\n case 'week':\n return 'Current week';\n case 'month':\n case 'timeline-month':\n return 'Current month';\n }\n }, ...(ngDevMode ? [{ debugName: \"todayButtonText\" }] : []));\n this.timeText = computed(() => {\n if (this.vm.currentViewMode() === 'grid' ||\n this.vm.currentViewMode() === 'kanban' ||\n this.vm.currentViewMode() === 'status-grouped-grid') {\n const start = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);\n const end = start.add('day', this.vm.daysCount() - 1);\n const startText = start.format('DD MMMM yyyy', { locale: this.localeService.activeProfile().calendar.system });\n const endText = end.format('DD MMMM yyyy', { locale: this.localeService.activeProfile().calendar.system });\n return `${startText} - ${endText}`;\n }\n return this.schedulerComponent()?.currentDateText();\n }, ...(ngDevMode ? [{ debugName: \"timeText\" }] : []));\n this.calendarDepth = computed(() => {\n if (this.vm.currentViewMode() === 'grid' ||\n this.vm.currentViewMode() === 'kanban' ||\n this.vm.currentViewMode() === 'status-grouped-grid') {\n return 'day';\n }\n return this.schedulerComponent()?.calendarDepth();\n }, ...(ngDevMode ? [{ debugName: \"calendarDepth\" }] : []));\n this.selectedViewMode = computed(() => {\n const currentMode = this.vm.currentViewMode();\n for (const category of this.menuItems()) {\n if (category.key === currentMode) {\n return { key: category.key, text: category.text, icon: category.icon };\n }\n if (category.children) {\n const foundChild = category.children.find((child) => child.key === currentMode);\n if (foundChild) {\n return foundChild;\n }\n }\n }\n const firstCategory = this.menuItems()[0];\n return firstCategory.children\n ? firstCategory.children[0]\n : { key: firstCategory.key, text: firstCategory.text, icon: firstCategory.icon };\n }, ...(ngDevMode ? [{ debugName: \"selectedViewMode\" }] : []));\n this.filter = computed(() => {\n const taskTypeProvider = this.vm.selectedTaskType();\n const types = taskTypeProvider ? [taskTypeProvider.name] : undefined;\n let from = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);\n let end;\n const currentView = this.vm.currentViewMode();\n if (currentView === 'kanban' ||\n currentView === 'grid' ||\n currentView === 'status-grouped-grid' ||\n currentView === 'agenda') {\n end = from.add('day', this.vm.daysCount() - 1);\n }\n else if (currentView === 'month' || currentView === 'timeline-month') {\n from = from.startOf('month');\n end = from.endOf('month');\n }\n else {\n end = from.endOf('day');\n }\n return {\n ...(types && { types }),\n range: { from: from.date, end: end.date },\n };\n }, ...(ngDevMode ? [{ debugName: \"filter\" }] : []));\n this.contextMenu = viewChild('rootContextMenu', ...(ngDevMode ? [{ debugName: \"contextMenu\" }] : []));\n this.schedulerDataSource = (filter) => {\n const taskTypeProvider = this.vm.selectedTaskType();\n const types = taskTypeProvider ? [taskTypeProvider.name] : undefined;\n const finalFilter = { ...this.filter(), ...filter, types: types };\n return this.taskBoardService.getTasks(finalFilter).then((result) => result.items);\n };\n this.gridDataSource = (filter) => {\n const taskTypeProvider = this.vm.selectedTaskType();\n const types = taskTypeProvider ? [taskTypeProvider.name] : undefined;\n const finalFilter = { ...this.filter(), ...filter, types: types };\n console.log(this.taskBoardService.getTasks(finalFilter));\n return this.taskBoardService.getTasks(finalFilter);\n };\n this.resolvedTasks = signal([], ...(ngDevMode ? [{ debugName: \"resolvedTasks\" }] : []));\n this.eff = effect(async () => {\n const viewMode = this.vm.currentViewMode();\n if (viewMode === 'kanban') {\n const result = await this.taskBoardService.getTasks(this.filter());\n this.resolvedTasks.set(result.items);\n }\n }, ...(ngDevMode ? [{ debugName: \"eff\" }] : []));\n this.rangeBasedViews = [\n 'grid',\n 'kanban',\n 'agenda',\n 'status-grouped-grid',\n 'timeline-multi-day',\n ];\n this.getCellClass = (date) => {\n const currentView = this.vm.currentViewMode();\n const selectionStartDate = this.vm.rangeStartDate();\n if (this.rangeBasedViews.includes(currentView)) {\n if (selectionStartDate) {\n const axSelectionStartDate = this.calendarService.create(selectionStartDate);\n if (date.equal(axSelectionStartDate, 'day')) {\n return 'ax-range-start ax-range-end';\n }\n return null;\n }\n const fromRange = this.calendarService.create(this.vm.currentDate());\n const endRange = fromRange.add('day', this.vm.daysCount() - 1);\n const isStart = date.equal(fromRange, 'day');\n const isEnd = date.equal(endRange, 'day');\n if (isStart && isEnd)\n return 'ax-range-start ax-range-end';\n if (isStart)\n return 'ax-range-start';\n if (isEnd)\n return 'ax-range-end';\n if (date.compare(fromRange, 'day') > 0 && date.compare(endRange, 'day') < 0) {\n return 'ax-range-between';\n }\n return null;\n }\n if (currentView === 'week') {\n const from = this.calendarService.create(this.vm.currentDate());\n const end = from.add('day', 6);\n if (date.equal(from, 'day'))\n return 'ax-range-start';\n if (date.equal(end, 'day'))\n return 'ax-range-end';\n if (date.compare(from, 'day') > 0 && date.compare(end, 'day') < 0) {\n return 'ax-range-between';\n }\n }\n return null;\n };\n }\n async ngOnInit() {\n await super.ngOnInit();\n await this.vm.initialize();\n this.router.events\n .pipe(this.unsubscribe.takeUntilDestroy, filter((event) => event instanceof NavigationEnd), startWith(null))\n .subscribe(async () => {\n await this.loadFromRoute();\n });\n }\n async getPageTitle() {\n return await this.translateService.translateAsync('task-board.page-title', { scope: this.rootConfig.config.i18n });\n }\n async getPageBreadcrumbs() {\n return [\n {\n title: await this.translateService.translateAsync('root-menu', { scope: this.rootConfig.config.i18n }),\n },\n ];\n }\n schedulerComponentChanged(component) {\n this.schedulerComponent.set(component);\n }\n async handleContextMenuOnOpening(event) {\n const currentTask = this.currentTask();\n if (!currentTask)\n return;\n const providerName = currentTask.provider;\n if (!providerName)\n return;\n const provider = this.taskBoardService.getProvider(providerName);\n if (!provider)\n return;\n const actions = await provider.getActions(currentTask);\n for (const item of actions) {\n event.items.push({\n text: item.title,\n icon: item.icon,\n data: {\n command: item.command,\n },\n });\n }\n }\n handleContextMenu(event) {\n this.currentTask.set(event.task);\n const x = event.nativeEvent.clientX;\n const y = event.nativeEvent.clientY;\n const element = event.nativeEvent.target;\n this.contextMenu()?.showAt({ x, y }, element);\n }\n handleMonthSlotDblClicked(date) {\n this.vm.setCurrentDate(date);\n this.vm.setViewMode('day');\n }\n handleViewChange(view, dropdownPanel) {\n this.router.navigate([], { queryParams: { view } });\n this.vm.setViewMode(view);\n this.popover()?.close();\n dropdownPanel.close();\n }\n handleSelectedTaskTypeChange(taskType) {\n this.vm.setSelectedTaskTypeProvider(taskType);\n this.schedulerComponent()?.refresh();\n }\n handleContextMenuItemClick(event) {\n this.taskBoardService.executeCommand(event.item.data?.command, this.currentTask()?.provider ?? '');\n }\n changeDate(forward) {\n const date = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);\n switch (this.vm.currentViewMode()) {\n case 'day':\n case 'timeline-day':\n this.vm.setCurrentDate(date.add('day', forward ? 1 : -1).date);\n break;\n case 'week':\n this.vm.setCurrentDate(date.add('week', forward ? 1 : -1).date);\n break;\n case 'grid':\n case 'agenda':\n case 'kanban':\n case 'timeline-multi-day':\n case 'status-grouped-grid':\n this.vm.setCurrentDate(date.add('day', forward ? this.vm.daysCount() : -this.vm.daysCount()).date);\n break;\n case 'month':\n case 'timeline-month':\n this.vm.setCurrentDate(date.add('month', forward ? 1 : -1).date);\n break;\n }\n this.popover()?.close();\n this.calendar()?.render();\n }\n handleCalendarSlotClick(event) {\n if (event.component.activeView !== event.component.depth)\n return;\n const clickedDate = event.item;\n const currentView = this.vm.currentViewMode();\n if (this.rangeBasedViews.includes(currentView)) {\n const selectionStartDate = this.vm.rangeStartDate();\n if (!selectionStartDate) {\n this.vm.setRangeStartDate(clickedDate);\n this.calendar()?.render();\n return;\n }\n const date1 = selectionStartDate.getTime();\n const date2 = clickedDate.getTime();\n const newStartDate = new Date(Math.min(date1, date2));\n const newEndDate = new Date(Math.max(date1, date2));\n const differenceInDays = this.calculateDifferenceInDays(newStartDate, newEndDate);\n this.vm.setCurrentDate(newStartDate);\n this.vm.setDaysCount(differenceInDays);\n this.vm.setRangeStartDate(null);\n this.calendar()?.render();\n this.popover()?.close();\n return;\n }\n let dateToSet = new Date(clickedDate);\n if (currentView === 'week') {\n const day = dateToSet.getDay();\n const weekStart = this.localeService.activeProfile().calendar.week.startsOn;\n let daysToSubtract = day - weekStart;\n if (daysToSubtract < 0) {\n daysToSubtract += 7;\n }\n dateToSet.setDate(dateToSet.getDate() - daysToSubtract);\n }\n this.vm.setCurrentDate(dateToSet);\n this.popover()?.close();\n this.calendar()?.render();\n }\n /**\n * Helper function to calculate the difference in whole days between two dates.\n * The result is inclusive (e.g., May 5 to May 6 is a 2-day range).\n */\n calculateDifferenceInDays(start, end) {\n if (!start || !end) {\n return 1;\n }\n const startDate = new Date(start.getFullYear(), start.getMonth(), start.getDate());\n const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());\n const timeDifference = endDate.getTime() - startDate.getTime();\n const daysDifference = Math.round(timeDifference / (1000 * 3600 * 24));\n return daysDifference + 1;\n }\n handleTodayClick() {\n this.vm.setRangeStartDate(null);\n let currentDate;\n if (this.vm.currentViewMode() === 'week') {\n currentDate = this.calendarService\n .create(new Date(), this.localeService.activeProfile().calendar.system)\n .startOf('week').date;\n }\n else {\n currentDate = new Date();\n }\n this.vm.setCurrentDate(currentDate);\n this.popover()?.close();\n this.calendar()?.render();\n }\n async loadFromRoute() {\n const snapshot = this.activatedRoute.snapshot;\n const view = snapshot.queryParamMap.get('view') ?? null;\n const allValidViews = this.menuItems().flatMap((c) => (c.children ? c.children.map((child) => child.key) : c.key));\n if (view && allValidViews.includes(view)) {\n this.vm.setViewMode(view);\n const category = this.menuItems().find((c) => c.key === view || c.children?.some((child) => child.key === view));\n if (category) {\n this.vm.setCategory(category.key);\n }\n }\n else if (!this.vm.currentViewMode()) {\n this.vm.setViewMode('day');\n this.vm.setCategory('calendar');\n }\n }\n setActiveTask(task) {\n this.vm.selectTask(task);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.6\", type: AXMTaskBoardPage, isStandalone: true, selector: \"ng-component\", providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMTaskBoardPage,\n },\n ], viewQueries: [{ propertyName: \"popover\", first: true, predicate: [\"popover\"], descendants: true, isSignal: true }, { propertyName: \"calendar\", first: true, predicate: [\"calendar\"], descendants: true, isSignal: true }, { propertyName: \"contextMenu\", first: true, predicate: [\"rootContextMenu\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-toolbar>\\n <axp-layout-prefix class=\\\"sm:ax-flex-row ax-flex-col ax-items-start\\\">\\n <ax-button [text]=\\\"(t('task-board.view.' + selectedViewMode().text, { scope: 'workflow-management' }) | async)!\\\">\\n <ax-prefix><ax-icon [icon]=\\\"selectedViewMode().icon\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel #dropdownPanel>\\n <ax-menu [orientation]=\\\"'vertical'\\\" class=\\\"ax-menu-container\\\">\\n @for (category of menuItems(); track category.key) {\\n <ng-container>\\n @if (category.children && category.children.length > 0) {\\n <ax-menu-item>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\\n @for (child of category.children; track child.key) {\\n <ax-menu-item (onClick)=\\\"handleViewChange(child.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"child.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text\\n >{{ (t('task-board.view.' + child.text, { scope: 'workflow-management' }) | async)! }}</ax-text\\n >\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n } @else {\\n <ax-menu-item (onClick)=\\\"handleViewChange(category.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\\n </ax-menu-item>\\n }\\n </ng-container>\\n }\\n </ax-menu>\\n </ax-dropdown-panel>\\n <ax-suffix>\\n <ax-icon icon=\\\"fa-light fa-caret-down\\\"></ax-icon>\\n </ax-suffix>\\n </ax-button>\\n\\n <div class=\\\"ax-scheduler-header ax-w-max ax-sm sm:ax-md\\\">\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(false)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" [text]=\\\"timeText()\\\" #date></ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(true)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-popover [target]=\\\"date\\\" [placement]=\\\"'bottom'\\\" #popover [adaptivityEnabled]=\\\"true\\\">\\n <div class=\\\"ax-overlay-pane\\\">\\n <ax-calendar\\n #calendar\\n [type]=\\\"calendarType()\\\"\\n [depth]=\\\"calendarDepth()\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [ngModel]=\\\"vm.currentDate()\\\"\\n class=\\\"ax-single-range-calendar\\\"\\n (onSlotClick)=\\\"handleCalendarSlotClick($event)\\\"\\n >\\n <ax-footer>\\n <ax-button\\n look=\\\"link\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"todayButtonText()\\\"\\n (onClick)=\\\"handleTodayClick()\\\"\\n ></ax-button>\\n </ax-footer>\\n </ax-calendar>\\n </div>\\n </ax-popover>\\n </div>\\n </axp-layout-prefix>\\n <axp-layout-suffix>\\n <ax-button\\n [text]=\\\"t(vm.selectedTaskType()?.title || 'task-board.all', { scope: rootConfig.config.i18n }) | async\\\"\\n >\\n <ax-prefix><ax-icon icon=\\\"fa-light {{vm.selectedTaskType()?.icon || 'fa-tasks'}}\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel>\\n <ax-button-item-list class=\\\"ax-p-2\\\">\\n @if(vm.currentViewMode()!=='kanban' && vm.currentViewMode()!=='status-grouped-grid') {\\n <ax-button-item\\n (onClick)=\\\"handleSelectedTaskTypeChange(null)\\\"\\n [text]=\\\"(t('task-board.all', { scope: rootConfig.config.i18n }) | async)!\\\"\\n >\\n <ax-prefix><ax-icon icon=\\\"fa-light fa-tasks\\\"></ax-icon></ax-prefix>\\n </ax-button-item>\\n } @for(item of vm.taskTypes(); track item.name) {\\n <ax-button-item\\n (onClick)=\\\"handleSelectedTaskTypeChange(item)\\\"\\n [text]=\\\"(t(item.title, { scope: rootConfig.config.i18n }) | async)!\\\"\\n >\\n <ax-prefix><ax-icon icon=\\\"fa-light {{ item.icon }}\\\"></ax-icon></ax-prefix>\\n </ax-button-item>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n @if(layoutService.isLarge()) {\\n <ax-button (onClick)=\\\"vm.toggleDetailPanel()\\\">\\n <ax-icon icon=\\\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\\\"></ax-icon>\\n </ax-button>\\n }\\n </axp-layout-suffix>\\n </axp-page-toolbar>\\n <axp-page-content class=\\\"ax-flex ax-flex-row ax-gap-2\\\">\\n @switch(vm.currentViewMode()) { @case('kanban') {\\n <axm-task-board-kanban-view\\n class=\\\"axp-kanban-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [tasks]=\\\"resolvedTasks()\\\"\\n (onTaskClick)=\\\"setActiveTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-kanban-view>\\n } @case('grid') {\\n <axm-task-board-grid-view\\n class=\\\"ax-h-full ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onTaskClick)=\\\"setActiveTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-grid-view>\\n } @case('status-grouped-grid') {\\n <axm-task-board-status-grouped-grid-view\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-status-grouped-grid-view>\\n } @default {\\n <axm-task-board-calendar-view\\n class=\\\"axp-scheduler-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"schedulerDataSource\\\"\\n [startingDate]=\\\"vm.currentDate()\\\"\\n (onTaskClick)=\\\"setActiveTask($event)\\\"\\n [selectedView]=\\\"vm.currentViewMode()\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n (onTaskRightClick)=\\\"handleContextMenu($event)\\\"\\n (component)=\\\"schedulerComponentChanged($event)\\\"\\n (onMonthSlotDblClicked)=\\\"handleMonthSlotDblClicked($event)\\\"\\n ></axm-task-board-calendar-view>\\n } }\\n <ax-context-menu\\n #rootContextMenu\\n [closeOn]=\\\"'leave'\\\"\\n [orientation]=\\\"'vertical'\\\"\\n (onOpening)=\\\"handleContextMenuOnOpening($event)\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\"\\n >\\n </ax-context-menu>\\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\\n <axm-task-board-detail-panel></axm-task-board-detail-panel>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\"html[dir=rtl] axp-page-layout axp-page-toolbar axp-layout-prefix .ax-scheduler-header .arrow-icon:before{-moz-transform:scale(-1,1);-webkit-transform:scale(-1,1);-o-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scaleX(-1)}.ax-single-range-calendar .ax-range-start,.ax-single-range-calendar .ax-range-end{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.85)!important}.ax-single-range-calendar .ax-range-start:hover,.ax-single-range-calendar .ax-range-end:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}.ax-single-range-calendar .ax-range-start.ax-state-holiday,.ax-single-range-calendar .ax-range-end.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.85)!important}.ax-single-range-calendar .ax-range-between{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.65)}.ax-single-range-calendar .ax-range-between.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.65)}.ax-single-range-calendar ax-footer{display:flex;justify-content:center;border-color:rgba(var(--ax-comp-calendar-view-header-border-color));border-top-width:var(--ax-comp-calendar-view-header-border-width, 1px)}axp-page-content:not(:has(axm-task-board-status-grouped-grid-view,axm-task-board-time-grouped-grid-view)){overflow-y:hidden}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: \n //\n AXMenuModule }, { kind: \"component\", type: i2.AXMenuItemComponent, selector: \"ax-menu-item\", inputs: [\"name\", \"data\", \"disabled\", \"color\"], outputs: [\"onClick\"] }, { kind: \"component\", type: i2.AXMenuComponent, selector: \"ax-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"hasArrow\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: i2.AXContextMenuComponent, selector: \"ax-context-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"target\"], outputs: [\"onItemClick\", \"onOpening\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.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: i3.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i3.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i4.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i5.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.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: AXBreadcrumbsModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: \n //\n 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: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXMTaskBoardCalendarViewComponent, selector: \"axm-task-board-calendar-view\", inputs: [\"startingDate\", \"selectedView\", \"dataSource\"], outputs: [\"onTaskClick\", \"onTaskChanged\", \"onMonthSlotDblClicked\", \"onActionClick\", \"component\", \"onTaskRightClick\", \"onRangeChanged\"] }, { kind: \"component\", type: AXMTaskBoardKanbanViewComponent, selector: \"axm-task-board-kanban-view\", inputs: [\"tasks\"], outputs: [\"tasksChange\", \"onTaskClick\", \"onTaskChanged\", \"component\", \"onActionClick\"] }, { kind: \"component\", type: AXMTaskBoardGridViewComponent, selector: \"axm-task-board-grid-view\", inputs: [\"dataSource\"], outputs: [\"onTaskClick\", \"onActionClick\"] }, { kind: \"component\", type: AXMTaskBoardStatusGroupedGridViewComponent, selector: \"axm-task-board-status-grouped-grid-view\", inputs: [\"provider\", \"dataSource\"], outputs: [\"onActionClick\"] }, { kind: \"component\", type: AXMTaskBoardDetailPanel, selector: \"axm-task-board-detail-panel\" }, { kind: \"component\", type: AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"component\", type: i6.AXPopoverComponent, selector: \"ax-popover\", inputs: [\"width\", \"disabled\", \"offsetX\", \"offsetY\", \"target\", \"placement\", \"content\", \"openOn\", \"closeOn\", \"hasBackdrop\", \"openAfter\", \"closeAfter\", \"backdropClass\", \"panelClass\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: AXCalendarComponent, selector: \"ax-calendar\", inputs: [\"rtl\", \"readonly\", \"value\", \"name\", \"disabled\", \"depth\", \"activeView\", \"minValue\", \"maxValue\", \"disabledDates\", \"holidayDates\", \"type\", \"cellTemplate\", \"cellClass\", \"showNavigation\", \"count\", \"id\"], outputs: [\"onOptionChanged\", \"valueChange\", \"onValueChanged\", \"minValueChange\", \"maxValueChange\", \"onBlur\", \"onFocus\", \"depthChange\", \"typeChange\", \"activeViewChange\", \"disabledDatesChange\", \"holidayDatesChange\", \"onNavigate\", \"onSlotClick\", \"countChange\"] }, { kind: \"pipe\", type: i7.AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXMTaskBoardPage, decorators: [{\n type: Component,\n args: [{ imports: [\n FormsModule,\n CommonModule,\n RouterModule,\n //\n AXMenuModule,\n AXButtonModule,\n AXDropdownButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n //\n AXPThemeLayoutBlockComponent,\n AXPPageLayoutComponent,\n AXMTaskBoardCalendarViewComponent,\n AXMTaskBoardKanbanViewComponent,\n AXMTaskBoardGridViewComponent,\n AXMTaskBoardStatusGroupedGridViewComponent,\n AXMTaskBoardDetailPanel,\n AXDropdownPanelComponent,\n AXPopoverModule,\n AXCalendarComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMTaskBoardPage,\n },\n ], template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-toolbar>\\n <axp-layout-prefix class=\\\"sm:ax-flex-row ax-flex-col ax-items-start\\\">\\n <ax-button [text]=\\\"(t('task-board.view.' + selectedViewMode().text, { scope: 'workflow-management' }) | async)!\\\">\\n <ax-prefix><ax-icon [icon]=\\\"selectedViewMode().icon\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel #dropdownPanel>\\n <ax-menu [orientation]=\\\"'vertical'\\\" class=\\\"ax-menu-container\\\">\\n @for (category of menuItems(); track category.key) {\\n <ng-container>\\n @if (category.children && category.children.length > 0) {\\n <ax-menu-item>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\\n @for (child of category.children; track child.key) {\\n <ax-menu-item (onClick)=\\\"handleViewChange(child.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"child.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text\\n >{{ (t('task-board.view.' + child.text, { scope: 'workflow-management' }) | async)! }}</ax-text\\n >\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n } @else {\\n <ax-menu-item (onClick)=\\\"handleViewChange(category.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\\n </ax-menu-item>\\n }\\n </ng-container>\\n }\\n </ax-menu>\\n </ax-dropdown-panel>\\n <ax-suffix>\\n <ax-icon icon=\\\"fa-light fa-caret-down\\\"></ax-icon>\\n </ax-suffix>\\n </ax-button>\\n\\n <div class=\\\"ax-scheduler-header ax-w-max ax-sm sm:ax-md\\\">\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(false)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" [text]=\\\"timeText()\\\" #date></ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(true)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-popover [target]=\\\"date\\\" [placement]=\\\"'bottom'\\\" #popover [adaptivityEnabled]=\\\"true\\\">\\n <div class=\\\"ax-overlay-pane\\\">\\n <ax-calendar\\n #calendar\\n [type]=\\\"calendarType()\\\"\\n [depth]=\\\"calendarDepth()\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [ngModel]=\\\"vm.currentDate()\\\"\\n class=\\\"ax-single-range-calendar\\\"\\n (onSlotClick)=\\\"handleCalendarSlotClick($event)\\\"\\n >\\n <ax-footer>\\n <ax-button\\n look=\\\"link\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"todayButtonText()\\\"\\n (onClick)=\\\"handleTodayClick()\\\"\\n ></ax-button>\\n </ax-footer>\\n </ax-calendar>\\n </div>\\n </ax-popover>\\n </div>\\n </axp-layout-prefix>\\n <axp-layout-suffix>\\n <ax-button\\n [text]=\\\"t(vm.selectedTaskType()?.title || 'task-board.all', { scope: rootConfig.config.i18n }) | async\\\"\\n >\\n <ax-prefix><ax-icon icon=\\\"fa-light {{vm.selectedTaskType()?.icon || 'fa-tasks'}}\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel>\\n <ax-button-item-list class=\\\"ax-p-2\\\">\\n @if(vm.currentViewMode()!=='kanban' && vm.currentViewMode()!=='status-grouped-grid') {\\n <ax-button-item\\n (onClick)=\\\"handleSelectedTaskTypeChange(null)\\\"\\n [text]=\\\"(t('task-board.all', { scope: rootConfig.config.i18n }) | async)!\\\"\\n >\\n <ax-prefix><ax-icon icon=\\\"fa-light fa-tasks\\\"></ax-icon></ax-prefix>\\n </ax-button-item>\\n } @for(item of vm.taskTypes(); track item.name) {\\n <ax-button-item\\n (onClick)=\\\"handleSelectedTaskTypeChange(item)\\\"\\n [text]=\\\"(t(item.title, { scope: rootConfig.config.i18n }) | async)!\\\"\\n >\\n <ax-prefix><ax-icon icon=\\\"fa-light {{ item.icon }}\\\"></ax-icon></ax-prefix>\\n </ax-button-item>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n @if(layoutService.isLarge()) {\\n <ax-button (onClick)=\\\"vm.toggleDetailPanel()\\\">\\n <ax-icon icon=\\\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\\\"></ax-icon>\\n </ax-button>\\n }\\n </axp-layout-suffix>\\n </axp-page-toolbar>\\n <axp-page-content class=\\\"ax-flex ax-flex-row ax-gap-2\\\">\\n @switch(vm.currentViewMode()) { @case('kanban') {\\n <axm-task-board-kanban-view\\n class=\\\"axp-kanban-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [tasks]=\\\"resolvedTasks()\\\"\\n (onTaskClick)=\\\"setActiveTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-kanban-view>\\n } @case('grid') {\\n <axm-task-board-grid-view\\n class=\\\"ax-h-full ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onTaskClick)=\\\"setActiveTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-grid-view>\\n } @case('status-grouped-grid') {\\n <axm-task-board-status-grouped-grid-view\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-status-grouped-grid-view>\\n } @default {\\n <axm-task-board-calendar-view\\n class=\\\"axp-scheduler-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"schedulerDataSource\\\"\\n [startingDate]=\\\"vm.currentDate()\\\"\\n (onTaskClick)=\\\"setActiveTask($event)\\\"\\n [selectedView]=\\\"vm.currentViewMode()\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n (onTaskRightClick)=\\\"handleContextMenu($event)\\\"\\n (component)=\\\"schedulerComponentChanged($event)\\\"\\n (onMonthSlotDblClicked)=\\\"handleMonthSlotDblClicked($event)\\\"\\n ></axm-task-board-calendar-view>\\n } }\\n <ax-context-menu\\n #rootContextMenu\\n [closeOn]=\\\"'leave'\\\"\\n [orientation]=\\\"'vertical'\\\"\\n (onOpening)=\\\"handleContextMenuOnOpening($event)\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\"\\n >\\n </ax-context-menu>\\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\\n <axm-task-board-detail-panel></axm-task-board-detail-panel>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\"html[dir=rtl] axp-page-layout axp-page-toolbar axp-layout-prefix .ax-scheduler-header .arrow-icon:before{-moz-transform:scale(-1,1);-webkit-transform:scale(-1,1);-o-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scaleX(-1)}.ax-single-range-calendar .ax-range-start,.ax-single-range-calendar .ax-range-end{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.85)!important}.ax-single-range-calendar .ax-range-start:hover,.ax-single-range-calendar .ax-range-end:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}.ax-single-range-calendar .ax-range-start.ax-state-holiday,.ax-single-range-calendar .ax-range-end.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.85)!important}.ax-single-range-calendar .ax-range-between{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.65)}.ax-single-range-calendar .ax-range-between.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.65)}.ax-single-range-calendar ax-footer{display:flex;justify-content:center;border-color:rgba(var(--ax-comp-calendar-view-header-border-color));border-top-width:var(--ax-comp-calendar-view-header-border-width, 1px)}axp-page-content:not(:has(axm-task-board-status-grouped-grid-view,axm-task-board-time-grouped-grid-view)){overflow-y:hidden}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3dvcmtmbG93LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy90YXNrLWJvYXJkL3Rhc2stYm9hcmQucGFnZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy93b3JrZmxvdy1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC90YXNrLWJvYXJkLnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBdUIsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUlMLFlBQVksR0FDYixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBc0IsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFakYsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFj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LDhCQUNaLFlBQVk7Z0JBQ1osRUFBRTtnQkFDRixZQUFZLGtoQkFDWixjQUFjLG91QkFDZCxzQkFBc0IsOEJBQ3RCLG1CQUFtQiw4R0FDbkIsaUJBQWlCLHNWQUNqQixlQUFlLDhCQUNmLG1CQUFtQiw4QkFDbkIsYUFBYTtnQkFDYixFQUFFO2dCQUNGLDRCQUE0QixnaUJBQzVCLHNCQUFzQiw0REFDdEIsaUNBQWlDLHlRQUNqQywrQkFBK0Isa0xBQy9CLDZCQUE2Qix3SUFDN0IsMENBQTBDLG9KQUMxQyx1QkFBdUIsd0VBQ3ZCLHdCQUF3QiwyTUFDeEIsZUFBZSx3VkFDZixtQkFBbUI7OzJGQVdWLGdCQUFnQjtrQkFyQzVCLFNBQVM7OEJBR0M7d0JBQ1AsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osRUFBRTt3QkFDRixZQUFZO3dCQUNaLGNBQWM7d0JBQ2Qsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsRUFBRTt3QkFDRiw0QkFBNEI7d0JBQzVCLHNCQUFzQjt3QkFDdEIsaUNBQWlDO3dCQUNqQywrQkFBK0I7d0JBQy9CLDZCQUE2Qjt3QkFDN0IsMENBQTBDO3dCQUMxQyx1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsZUFBZTt3QkFDZixtQkFBbUI7cUJBQ3BCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsa0JBQWtCO3lCQUM5QjtxQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhCcmVhZGNydW1ic01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9icmVhZGNydW1icyc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDYWxlbmRhckNvbXBvbmVudCwgQVhDYWxlbmRhclNsb3RDbGljayB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jYWxlbmRhcic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJvcGRvd25QYW5lbENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQge1xuICBBWENvbnRleHRNZW51Q29tcG9uZW50LFxuICBBWENvbnRleHRNZW51SXRlbXNDbGlja0V2ZW50LFxuICBBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50LFxuICBBWE1lbnVNb2R1bGUsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9tZW51JztcbmltcG9ydCB7IEFYUG9wb3ZlckNvbXBvbmVudCwgQVhQb3BvdmVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcG92ZXInO1xuaW1wb3J0IHsgQVhTY2hlZHVsZXJDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2NoZWR1bGVyJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJTZXJ2aWNlLCBBWERhdGVUaW1lIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBBWExvY2FsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvbG9jYWxlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQVhQQnJlYWRjcnVtYkl0ZW0gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQUGFnZUxheW91dEJhc2UsIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50LCBBWFBQYWdlTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvdmlld3MnO1xuaW1wb3J0IHsgQVhQVGFzaywgQVhQVGFza0FjdGlvbiwgQVhQVGFza0ZpbHRlciwgQVhQV29ya2Zsb3dUYXNrUHJvdmlkZXIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkRGV0YWlsUGFuZWwgfSBmcm9tICcuL3Rhc2stYm9hcmQtZGV0YWlsLXBhbmVsL3Rhc2stYm9hcmQtZGV0YWlsLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBUYXNrQm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi90YXNrLWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkVmlld01vZGVsLCBBWFBUYXNrQm9hcmRWaWV3Q2F0ZWdvcnksIEFYUFRhc2tCb2FyZFZpZXdNb2RlIH0gZnJvbSAnLi90YXNrLWJvYXJkLnZpZXdtb2RlbCc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRDYWxlbmRhclZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdzL3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy90YXNrLWJvYXJkLWNhbGVuZGFyLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYTVRhc2tCb2FyZEdyaWRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi92aWV3cy90YXNrLWJvYXJkLWdyaWQtdmlldy90YXNrLWJvYXJkLWdyaWQtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkS2FuYmFuVmlld0NvbXBvbmVudCB9IGZyb20gJy4vdmlld3MvdGFzay1ib2FyZC1rYW5iYW4tdmlldy90YXNrLWJvYXJkLWthbmJhbi12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRTdGF0dXNHcm91cGVkR3JpZFZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdzL3Rhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3L3Rhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1ib2FyZC5wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YXNrLWJvYXJkLnBhZ2Uuc2NzcyddLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICAvL1xuICAgIEFYTWVudU1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERyb3Bkb3duQnV0dG9uTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYQnJlYWRjcnVtYnNNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICAvL1xuICAgIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gICAgQVhQUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBBWE1UYXNrQm9hcmRDYWxlbmRhclZpZXdDb21wb25lbnQsXG4gICAgQVhNVGFza0JvYXJkS2FuYmFuVmlld0NvbXBvbmVudCxcbiAgICBBWE1UYXNrQm9hcmRHcmlkVmlld0NvbXBvbmVudCxcbiAgICBBWE1UYXNrQm9hcmRTdGF0dXNHcm91cGVkR3JpZFZpZXdDb21wb25lbnQsXG4gICAgQVhNVGFza0JvYXJkRGV0YWlsUGFuZWwsXG4gICAgQVhEcm9wZG93blBhbmVsQ29tcG9uZW50LFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgICBBWENhbGVuZGFyQ29tcG9uZW50LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQUGFnZUxheW91dEJhc2UsXG4gICAgICB1c2VFeGlzdGluZzogQVhNVGFza0JvYXJkUGFnZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1UYXNrQm9hcmRQYWdlIGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm9vdENvbmZpZyA9IFJvb3RDb25maWc7XG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IGluamVjdChBWE1UYXNrQm9hcmRWaWV3TW9kZWwpO1xuICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU2VydmljZSA9IGluamVjdChBWExvY2FsZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhbGVuZGFyU2VydmljZSA9IGluamVjdChBWENhbGVuZGFyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFza0JvYXJkU2VydmljZSA9IGluamVjdChBWFBUYXNrQm9hcmRTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgcG9wb3ZlciA9IHZpZXdDaGlsZDxBWFBvcG92ZXJDb21wb25lbnQ+KCdwb3BvdmVyJyk7XG4gIHByb3RlY3RlZCBjYWxlbmRhciA9IHZpZXdDaGlsZDxBWENhbGVuZGFyQ29tcG9uZW50PignY2FsZW5kYXInKTtcblxuICBwcml2YXRlIGN1cnJlbnRUYXNrID0gc2lnbmFsPEFYUFRhc2sgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIGN1cnJlbnRWaWV3TW9kZSA9IHNpZ25hbDwnY2FsZW5kYXInIHwgJ2thbmJhbicgfCAnZ3JpZCcgfCAnc3RhdHVzLWdyb3VwZWQtZ3JpZCc+KCdjYWxlbmRhcicpO1xuICBwcm90ZWN0ZWQgc2NoZWR1bGVyQ29tcG9uZW50ID0gc2lnbmFsPEFYU2NoZWR1bGVyQ29tcG9uZW50IHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51SXRlbXMgPSBzaWduYWw8XG4gICAge1xuICAgICAga2V5OiBBWFBUYXNrQm9hcmRWaWV3Q2F0ZWdvcnk7XG4gICAgICB0ZXh0OiBzdHJpbmc7XG4gICAgICBpY29uOiBzdHJpbmc7XG4gICAgICBjaGlsZHJlbj86IHsga2V5OiBBWFBUYXNrQm9hcmRWaWV3TW9kZTsgdGV4dDogc3RyaW5nOyBpY29uOiBzdHJpbmcgfVtdO1xuICAgIH1bXVxuICA+KFtcbiAgICB7XG4gICAgICBrZXk6ICdjYWxlbmRhcicsXG4gICAgICB0ZXh0OiAnY2FsZW5kYXInLFxuICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNhbGVuZGFyLWRheScsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7IGtleTogJ2RheScsIHRleHQ6ICdkYWlseScsIGljb246ICdmYS1saWdodCBmYS1jYWxlbmRhci1kYXknIH0sXG4gICAgICAgIHsga2V5OiAnd2VlaycsIHRleHQ6ICd3ZWVrbHknLCBpY29uOiAnZmEtbGlnaHQgZmEtY2FsZW5kYXItd2VlaycgfSxcbiAgICAgICAgeyBrZXk6ICdtb250aCcsIHRleHQ6ICdtb250aGx5JywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNhbGVuZGFyLWFsdCcgfSxcbiAgICAgICAgeyBrZXk6ICdhZ2VuZGEnLCB0ZXh0OiAnYWdlbmRhJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNhbGVuZGFyLXJhbmdlJyB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3RhYmxlJyxcbiAgICAgIHRleHQ6ICd0YWJsZScsXG4gICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdGFibGUnLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgeyBrZXk6ICdncmlkJywgdGV4dDogJ2dyaWQnLCBpY29uOiAnZmEtbGlnaHQgZmEtdGFibGUnIH0sXG4gICAgICAgIHsga2V5OiAnc3RhdHVzLWdyb3VwZWQtZ3JpZCcsIHRleHQ6ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLXRhYmxlJyB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHsga2V5OiAna2FuYmFuJywgdGV4dDogJ2thbmJhbicsIGljb246ICdmYS1saWdodCBmYS1jaGFydC1rYW5iYW4nIH0sXG4gIF0pO1xuXG4gIHByb3RlY3RlZCBjYWxlbmRhclR5cGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSk7XG4gIHByb3RlY3RlZCB0b2RheUJ1dHRvblRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpKSB7XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgY2FzZSAnZ3JpZCc6XG4gICAgICBjYXNlICdhZ2VuZGEnOlxuICAgICAgY2FzZSAna2FuYmFuJzpcbiAgICAgIGNhc2UgJ3RpbWVsaW5lLWRheSc6XG4gICAgICBjYXNlICd0aW1lbGluZS1tdWx0aS1kYXknOlxuICAgICAgY2FzZSAnc3RhdHVzLWdyb3VwZWQtZ3JpZCc6XG4gICAgICAgIHJldHVybiAnVG9kYXknO1xuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHJldHVybiAnQ3VycmVudCB3ZWVrJztcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgIGNhc2UgJ3RpbWVsaW5lLW1vbnRoJzpcbiAgICAgICAgcmV0dXJuICdDdXJyZW50IG1vbnRoJztcbiAgICB9XG4gIH0pO1xuICBwcm90ZWN0ZWQgdGltZVRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSA9PT0gJ2dyaWQnIHx8XG4gICAgICB0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpID09PSAna2FuYmFuJyB8fFxuICAgICAgdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSA9PT0gJ3N0YXR1cy1ncm91cGVkLWdyaWQnXG4gICAgKSB7XG4gICAgICBjb25zdCBzdGFydCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShcbiAgICAgICAgdGhpcy52bS5jdXJyZW50RGF0ZSgpLFxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSxcbiAgICAgICk7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydC5hZGQoJ2RheScsIHRoaXMudm0uZGF5c0NvdW50KCkgLSAxKTtcbiAgICAgIGNvbnN0IHN0YXJ0VGV4dCA9IHN0YXJ0LmZvcm1hdCgnREQgTU1NTSB5eXl5JywgeyBsb2NhbGU6IHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtIH0pO1xuICAgICAgY29uc3QgZW5kVGV4dCA9IGVuZC5mb3JtYXQoJ0REIE1NTU0geXl5eScsIHsgbG9jYWxlOiB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSB9KTtcbiAgICAgIHJldHVybiBgJHtzdGFydFRleHR9IC0gJHtlbmRUZXh0fWA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNjaGVkdWxlckNvbXBvbmVudCgpPy5jdXJyZW50RGF0ZVRleHQoKTtcbiAgfSk7XG4gIHByb3RlY3RlZCBjYWxlbmRhckRlcHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCkgPT09ICdncmlkJyB8fFxuICAgICAgdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSA9PT0gJ2thbmJhbicgfHxcbiAgICAgIHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCkgPT09ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJ1xuICAgICkge1xuICAgICAgcmV0dXJuICdkYXknO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXJDb21wb25lbnQoKT8uY2FsZW5kYXJEZXB0aCgpO1xuICB9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkVmlld01vZGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudE1vZGUgPSB0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpO1xuICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgdGhpcy5tZW51SXRlbXMoKSkge1xuICAgICAgaWYgKGNhdGVnb3J5LmtleSA9PT0gY3VycmVudE1vZGUpIHtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBjYXRlZ29yeS5rZXkgYXMgQVhQVGFza0JvYXJkVmlld01vZGUsIHRleHQ6IGNhdGVnb3J5LnRleHQsIGljb246IGNhdGVnb3J5Lmljb24gfTtcbiAgICAgIH1cbiAgICAgIGlmIChjYXRlZ29yeS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBmb3VuZENoaWxkID0gY2F0ZWdvcnkuY2hpbGRyZW4uZmluZCgoY2hpbGQpID0+IGNoaWxkLmtleSA9PT0gY3VycmVudE1vZGUpO1xuICAgICAgICBpZiAoZm91bmRDaGlsZCkge1xuICAgICAgICAgIHJldHVybiBmb3VuZENoaWxkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGZpcnN0Q2F0ZWdvcnkgPSB0aGlzLm1lbnVJdGVtcygpWzBdO1xuICAgIHJldHVybiBmaXJzdENhdGVnb3J5LmNoaWxkcmVuXG4gICAgICA/IGZpcnN0Q2F0ZWdvcnkuY2hpbGRyZW5bMF1cbiAgICAgIDogeyBrZXk6IGZpcnN0Q2F0ZWdvcnkua2V5IGFzIEFYUFRhc2tCb2FyZFZpZXdNb2RlLCB0ZXh0OiBmaXJzdENhdGVnb3J5LnRleHQsIGljb246IGZpcnN0Q2F0ZWdvcnkuaWNvbiB9O1xuICB9KTtcbiAgcHJvdGVjdGVkIGZpbHRlciA9IGNvbXB1dGVkPEFYUFRhc2tGaWx0ZXI+KCgpID0+IHtcbiAgICBjb25zdCB0YXNrVHlwZVByb3ZpZGVyID0gdGhpcy52bS5zZWxlY3RlZFRhc2tUeXBlKCk7XG4gICAgY29uc3QgdHlwZXMgPSB0YXNrVHlwZVByb3ZpZGVyID8gW3Rhc2tUeXBlUHJvdmlkZXIubmFtZV0gOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgZnJvbTogQVhEYXRlVGltZSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShcbiAgICAgIHRoaXMudm0uY3VycmVudERhdGUoKSxcbiAgICAgIHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtLFxuICAgICk7XG4gICAgbGV0IGVuZDogQVhEYXRlVGltZTtcblxuICAgIGNvbnN0IGN1cnJlbnRWaWV3ID0gdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKTtcblxuICAgIGlmIChcbiAgICAgIGN1cnJlbnRWaWV3ID09PSAna2FuYmFuJyB8fFxuICAgICAgY3VycmVudFZpZXcgPT09ICdncmlkJyB8fFxuICAgICAgY3VycmVudFZpZXcgPT09ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJyB8fFxuICAgICAgY3VycmVudFZpZXcgPT09ICdhZ2VuZGEnXG4gICAgKSB7XG4gICAgICBlbmQgPSBmcm9tLmFkZCgnZGF5JywgdGhpcy52bS5kYXlzQ291bnQoKSAtIDEpO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudFZpZXcgPT09ICdtb250aCcgfHwgY3VycmVudFZpZXcgPT09ICd0aW1lbGluZS1tb250aCcpIHtcbiAgICAgIGZyb20gPSBmcm9tLnN0YXJ0T2YoJ21vbnRoJyk7XG4gICAgICBlbmQgPSBmcm9tLmVuZE9mKCdtb250aCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmQgPSBmcm9tLmVuZE9mKCdkYXknKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uKHR5cGVzICYmIHsgdHlwZXMgfSksXG4gICAgICByYW5nZTogeyBmcm9tOiBmcm9tLmRhdGUsIGVuZDogZW5kLmRhdGUgfSxcbiAgICB9O1xuICB9KTtcblxuICBwcml2YXRlIGNvbnRleHRNZW51ID0gdmlld0NoaWxkPEFYQ29udGV4dE1lbnVDb21wb25lbnQ+KCdyb290Q29udGV4dE1lbnUnKTtcblxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBhd2FpdCBzdXBlci5uZ09uSW5pdCgpO1xuICAgIGF3YWl0IHRoaXMudm0uaW5pdGlhbGl6ZSgpO1xuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZS50YWtlVW50aWxEZXN0cm95LFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkRnJvbVJvdXRlKCk7XG4gICAgICB9KTtcbiAgfVxuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlVGl0bGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCd0YXNrLWJvYXJkLnBhZ2UtdGl0bGUnLCB7IHNjb3BlOiB0aGlzLnJvb3RDb25maWcuY29uZmlnLmkxOG4gfSk7XG4gIH1cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZUJyZWFkY3J1bWJzKCk6IFByb21pc2U8QVhQQnJlYWRjcnVtYkl0ZW1bXT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ3Jvb3QtbWVudScsIHsgc2NvcGU6IHRoaXMucm9vdENvbmZpZy5jb25maWcuaTE4biB9KSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzY2hlZHVsZXJEYXRhU291cmNlID0gKGZpbHRlcj86IEFYUFRhc2tGaWx0ZXIpOiBQcm9taXNlPEFYUFRhc2tbXT4gPT4ge1xuICAgIGNvbnN0IHRhc2tUeXBlUHJvdmlkZXIgPSB0aGlzLnZtLnNlbGVjdGVkVGFza1R5cGUoKTtcbiAgICBjb25zdCB0eXBlcyA9IHRhc2tUeXBlUHJvdmlkZXIgPyBbdGFza1R5cGVQcm92aWRlci5uYW1lXSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaW5hbEZpbHRlcjogQVhQVGFza0ZpbHRlciA9IHsgLi4udGhpcy5maWx0ZXIoKSwgLi4uZmlsdGVyLCB0eXBlczogdHlwZXMgfTtcblxuICAgIHJldHVybiB0aGlzLnRhc2tCb2FyZFNlcnZpY2UuZ2V0VGFza3MoZmluYWxGaWx0ZXIpLnRoZW4oKHJlc3VsdCkgPT4gcmVzdWx0Lml0ZW1zKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZ3JpZERhdGFTb3VyY2UgPSAoZmlsdGVyPzogQVhQVGFza0ZpbHRlcik6IFByb21pc2U8eyBpdGVtczogQVhQVGFza1tdOyB0b3RhbDogbnVtYmVyIH0+ID0+IHtcbiAgICBjb25zdCB0YXNrVHlwZVByb3ZpZGVyID0gdGhpcy52bS5zZWxlY3RlZFRhc2tUeXBlKCk7XG4gICAgY29uc3QgdHlwZXMgPSB0YXNrVHlwZVByb3ZpZGVyID8gW3Rhc2tUeXBlUHJvdmlkZXIubmFtZV0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmluYWxGaWx0ZXI6IEFYUFRhc2tGaWx0ZXIgPSB7IC4uLnRoaXMuZmlsdGVyKCksIC4uLmZpbHRlciwgdHlwZXM6IHR5cGVzIH07XG5cbiAgICBjb25zb2xlLmxvZyh0aGlzLnRhc2tCb2FyZFNlcnZpY2UuZ2V0VGFza3MoZmluYWxGaWx0ZXIpKTtcblxuICAgIHJldHVybiB0aGlzLnRhc2tCb2FyZFNlcnZpY2UuZ2V0VGFza3MoZmluYWxGaWx0ZXIpO1xuICB9O1xuXG4gIHJlc29sdmVkVGFza3MgPSBzaWduYWw8QVhQVGFza1tdPihbXSk7XG4gIGVmZiA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgdmlld01vZGUgPSB0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpO1xuICAgIGlmICh2aWV3TW9kZSA9PT0gJ2thbmJhbicpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMudGFza0JvYXJkU2VydmljZS5nZXRUYXNrcyh0aGlzLmZpbHRlcigpKTtcbiAgICAgIHRoaXMucmVzb2x2ZWRUYXNrcy5zZXQocmVzdWx0Lml0ZW1zKTtcbiAgICB9XG4gIH0pO1xuXG4gIHNjaGVkdWxlckNvbXBvbmVudENoYW5nZWQoY29tcG9uZW50OiBBWFNjaGVkdWxlckNvbXBvbmVudCkge1xuICAgIHRoaXMuc2NoZWR1bGVyQ29tcG9uZW50LnNldChjb21wb25lbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNvbnRleHRNZW51T25PcGVuaW5nKGV2ZW50OiBBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50KSB7XG4gICAgY29uc3QgY3VycmVudFRhc2sgPSB0aGlzLmN1cnJlbnRUYXNrKCk7XG4gICAgaWYgKCFjdXJyZW50VGFzaykgcmV0dXJuO1xuICAgIGNvbnN0IHByb3ZpZGVyTmFtZSA9IGN1cnJlbnRUYXNrLnByb3ZpZGVyO1xuICAgIGlmICghcHJvdmlkZXJOYW1lKSByZXR1cm47XG4gICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnRhc2tCb2FyZFNlcnZpY2UuZ2V0UHJvdmlkZXIocHJvdmlkZXJOYW1lKTtcbiAgICBpZiAoIXByb3ZpZGVyKSByZXR1cm47XG4gICAgY29uc3QgYWN0aW9ucyA9IGF3YWl0IHByb3ZpZGVyLmdldEFjdGlvbnMoY3VycmVudFRhc2spO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBhY3Rpb25zKSB7XG4gICAgICBldmVudC5pdGVtcy5wdXNoKHtcbiAgICAgICAgdGV4dDogaXRlbS50aXRsZSxcbiAgICAgICAgaWNvbjogaXRlbS5pY29uLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY29tbWFuZDogaXRlbS5jb21tYW5kLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbnRleHRNZW51KGV2ZW50OiBBWFBUYXNrQWN0aW9uKSB7XG4gICAgdGhpcy5jdXJyZW50VGFzay5zZXQoZXZlbnQudGFzayk7XG4gICAgY29uc3QgeCA9IGV2ZW50Lm5hdGl2ZUV2ZW50LmNsaWVudFg7XG4gICAgY29uc3QgeSA9IGV2ZW50Lm5hdGl2ZUV2ZW50LmNsaWVudFk7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLmNvbnRleHRNZW51KCk/LnNob3dBdCh7IHgsIHkgfSwgZWxlbWVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlTW9udGhTbG90RGJsQ2xpY2tlZChkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy52bS5zZXRDdXJyZW50RGF0ZShkYXRlKTtcbiAgICB0aGlzLnZtLnNldFZpZXdNb2RlKCdkYXknKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVWaWV3Q2hhbmdlKHZpZXc6IGFueSwgZHJvcGRvd25QYW5lbDogQVhEcm9wZG93blBhbmVsQ29tcG9uZW50KSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgcXVlcnlQYXJhbXM6IHsgdmlldyB9IH0pO1xuICAgIHRoaXMudm0uc2V0Vmlld01vZGUodmlldyk7XG4gICAgdGhpcy5wb3BvdmVyKCk/LmNsb3NlKCk7XG4gICAgZHJvcGRvd25QYW5lbC5jbG9zZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVNlbGVjdGVkVGFza1R5cGVDaGFuZ2UodGFza1R5cGU6IEFYUFdvcmtmbG93VGFza1Byb3ZpZGVyIHwgbnVsbCkge1xuICAgIHRoaXMudm0uc2V0U2VsZWN0ZWRUYXNrVHlwZVByb3ZpZGVyKHRhc2tUeXBlKTtcbiAgICB0aGlzLnNjaGVkdWxlckNvbXBvbmVudCgpPy5yZWZyZXNoKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29udGV4dE1lbnVJdGVtQ2xpY2soZXZlbnQ6IEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQpIHtcbiAgICB0aGlzLnRhc2tCb2FyZFNlcnZpY2UuZXhlY3V0ZUNvbW1hbmQoZXZlbnQuaXRlbS5kYXRhPy5jb21tYW5kLCB0aGlzLmN1cnJlbnRUYXNrKCk/LnByb3ZpZGVyID8/ICcnKTtcbiAgfVxuXG4gIGNoYW5nZURhdGUoZm9yd2FyZDogYm9vbGVhbikge1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUodGhpcy52bS5jdXJyZW50RGF0ZSgpLCB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSk7XG4gICAgc3dpdGNoICh0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpKSB7XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgY2FzZSAndGltZWxpbmUtZGF5JzpcbiAgICAgICAgdGhpcy52bS5zZXRDdXJyZW50RGF0ZShkYXRlLmFkZCgnZGF5JywgZm9yd2FyZCA/IDEgOiAtMSkuZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgdGhpcy52bS5zZXRDdXJyZW50RGF0ZShkYXRlLmFkZCgnd2VlaycsIGZvcndhcmQgPyAxIDogLTEpLmRhdGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZ3JpZCc6XG4gICAgICBjYXNlICdhZ2VuZGEnOlxuICAgICAgY2FzZSAna2FuYmFuJzpcbiAgICAgIGNhc2UgJ3RpbWVsaW5lLW11bHRpLWRheSc6XG4gICAgICBjYXNlICdzdGF0dXMtZ3JvdXBlZC1ncmlkJzpcbiAgICAgICAgdGhpcy52bS5zZXRDdXJyZW50RGF0ZShkYXRlLmFkZCgnZGF5JywgZm9yd2FyZCA/IHRoaXMudm0uZGF5c0NvdW50KCkgOiAtdGhpcy52bS5kYXlzQ291bnQoKSkuZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICBjYXNlICd0aW1lbGluZS1tb250aCc6XG4gICAgICAgIHRoaXMudm0uc2V0Q3VycmVudERhdGUoZGF0ZS5hZGQoJ21vbnRoJywgZm9yd2FyZCA/IDEgOiAtMSkuZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLnBvcG92ZXIoKT8uY2xvc2UoKTtcbiAgICB0aGlzLmNhbGVuZGFyKCk/LnJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSByYW5nZUJhc2VkVmlld3M6IEFYUFRhc2tCb2FyZFZpZXdNb2RlW10gPSBbXG4gICAgJ2dyaWQnLFxuICAgICdrYW5iYW4nLFxuICAgICdhZ2VuZGEnLFxuICAgICdzdGF0dXMtZ3JvdXBlZC1ncmlkJyxcbiAgICAndGltZWxpbmUtbXVsdGktZGF5JyxcbiAgXTtcblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2FsZW5kYXJTbG90Q2xpY2soZXZlbnQ6IEFYQ2FsZW5kYXJTbG90Q2xpY2spIHtcbiAgICBpZiAoZXZlbnQuY29tcG9uZW50LmFjdGl2ZVZpZXcgIT09IGV2ZW50LmNvbXBvbmVudC5kZXB0aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY2xpY2tlZERhdGU6IERhdGUgPSBldmVudC5pdGVtO1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3ID0gdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKTtcblxuICAgIGlmICh0aGlzLnJhbmdlQmFzZWRWaWV3cy5pbmNsdWRlcyhjdXJyZW50VmlldykpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0RGF0ZSA9IHRoaXMudm0ucmFuZ2VTdGFydERhdGUoKTtcblxuICAgICAgaWYgKCFzZWxlY3Rpb25TdGFydERhdGUpIHtcbiAgICAgICAgdGhpcy52bS5zZXRSYW5nZVN0YXJ0RGF0ZShjbGlja2VkRGF0ZSk7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIoKT8ucmVuZGVyKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0ZTEgPSBzZWxlY3Rpb25TdGFydERhdGUuZ2V0VGltZSgpO1xuICAgICAgY29uc3QgZGF0ZTIgPSBjbGlja2VkRGF0ZS5nZXRUaW1lKCk7XG4gICAgICBjb25zdCBuZXdTdGFydERhdGUgPSBuZXcgRGF0ZShNYXRoLm1pbihkYXRlMSwgZGF0ZTIpKTtcbiAgICAgIGNvbnN0IG5ld0VuZERhdGUgPSBuZXcgRGF0ZShNYXRoLm1heChkYXRlMSwgZGF0ZTIpKTtcblxuICAgICAgY29uc3QgZGlmZmVyZW5jZUluRGF5cyA9IHRoaXMuY2FsY3VsYXRlRGlmZmVyZW5jZUluRGF5cyhuZXdTdGFydERhdGUsIG5ld0VuZERhdGUpO1xuXG4gICAgICB0aGlzLnZtLnNldEN1cnJlbnREYXRlKG5ld1N0YXJ0RGF0ZSk7XG4gICAgICB0aGlzLnZtLnNldERheXNDb3VudChkaWZmZXJlbmNlSW5EYXlzKTtcbiAgICAgIHRoaXMudm0uc2V0UmFuZ2VTdGFydERhdGUobnVsbCk7XG5cbiAgICAgIHRoaXMuY2FsZW5kYXIoKT8ucmVuZGVyKCk7XG4gICAgICB0aGlzLnBvcG92ZXIoKT8uY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZGF0ZVRvU2V0ID0gbmV3IERhdGUoY2xpY2tlZERhdGUpO1xuXG4gICAgaWYgKGN1cnJlbnRWaWV3ID09PSAnd2VlaycpIHtcbiAgICAgIGNvbnN0IGRheSA9IGRhdGVUb1NldC5nZXREYXkoKTtcbiAgICAgIGNvbnN0IHdlZWtTdGFydCA9IHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIud2Vlay5zdGFydHNPbjtcbiAgICAgIGxldCBkYXlzVG9TdWJ0cmFjdCA9IGRheSAtIHdlZWtTdGFydDtcbiAgICAgIGlmIChkYXlzVG9TdWJ0cmFjdCA8IDApIHtcbiAgICAgICAgZGF5c1RvU3VidHJhY3QgKz0gNztcbiAgICAgIH1cbiAgICAgIGRhdGVUb1NldC5zZXREYXRlKGRhdGVUb1NldC5nZXREYXRlKCkgLSBkYXlzVG9TdWJ0cmFjdCk7XG4gICAgfVxuXG4gICAgdGhpcy52bS5zZXRDdXJyZW50RGF0ZShkYXRlVG9TZXQpO1xuICAgIHRoaXMucG9wb3ZlcigpPy5jbG9zZSgpO1xuICAgIHRoaXMuY2FsZW5kYXIoKT8ucmVuZGVyKCk7XG4gIH1cblxuICBnZXRDZWxsQ2xhc3MgPSAoZGF0ZTogQVhEYXRlVGltZSk6IHN0cmluZyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3ID0gdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKTtcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydERhdGUgPSB0aGlzLnZtLnJhbmdlU3RhcnREYXRlKCk7XG5cbiAgICBpZiAodGhpcy5yYW5nZUJhc2VkVmlld3MuaW5jbHVkZXMoY3VycmVudFZpZXcpKSB7XG4gICAgICBpZiAoc2VsZWN0aW9uU3RhcnREYXRlKSB7XG4gICAgICAgIGNvbnN0IGF4U2VsZWN0aW9uU3RhcnREYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHNlbGVjdGlvblN0YXJ0RGF0ZSk7XG4gICAgICAgIGlmIChkYXRlLmVxdWFsKGF4U2VsZWN0aW9uU3RhcnREYXRlLCAnZGF5JykpIHtcbiAgICAgICAgICByZXR1cm4gJ2F4LXJhbmdlLXN0YXJ0IGF4LXJhbmdlLWVuZCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZyb21SYW5nZSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZSh0aGlzLnZtLmN1cnJlbnREYXRlKCkpO1xuICAgICAgY29uc3QgZW5kUmFuZ2UgPSBmcm9tUmFuZ2UuYWRkKCdkYXknLCB0aGlzLnZtLmRheXNDb3VudCgpIC0gMSk7XG5cbiAgICAgIGNvbnN0IGlzU3RhcnQgPSBkYXRlLmVxdWFsKGZyb21SYW5nZSwgJ2RheScpO1xuICAgICAgY29uc3QgaXNFbmQgPSBkYXRlLmVxdWFsKGVuZFJhbmdlLCAnZGF5Jyk7XG5cbiAgICAgIGlmIChpc1N0YXJ0ICYmIGlzRW5kKSByZXR1cm4gJ2F4LXJhbmdlLXN0YXJ0IGF4LXJhbmdlLWVuZCc7XG4gICAgICBpZiAoaXNTdGFydCkgcmV0dXJuICdheC1yYW5nZS1zdGFydCc7XG4gICAgICBpZiAoaXNFbmQpIHJldHVybiAnYXgtcmFuZ2UtZW5kJztcbiAgICAgIGlmIChkYXRlLmNvbXBhcmUoZnJvbVJhbmdlLCAnZGF5JykgPiAwICYmIGRhdGUuY29tcGFyZShlbmRSYW5nZSwgJ2RheScpIDwgMCkge1xuICAgICAgICByZXR1cm4gJ2F4LXJhbmdlLWJldHdlZW4nO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFZpZXcgPT09ICd3ZWVrJykge1xuICAgICAgY29uc3QgZnJvbSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZSh0aGlzLnZtLmN1cnJlbnREYXRlKCkpO1xuICAgICAgY29uc3QgZW5kID0gZnJvbS5hZGQoJ2RheScsIDYpO1xuXG4gICAgICBpZiAoZGF0ZS5lcXVhbChmcm9tLCAnZGF5JykpIHJldHVybiAnYXgtcmFuZ2Utc3RhcnQnO1xuICAgICAgaWYgKGRhdGUuZXF1YWwoZW5kLCAnZGF5JykpIHJldHVybiAnYXgtcmFuZ2UtZW5kJztcbiAgICAgIGlmIChkYXRlLmNvbXBhcmUoZnJvbSwgJ2RheScpID4gMCAmJiBkYXRlLmNvbXBhcmUoZW5kLCAnZGF5JykgPCAwKSB7XG4gICAgICAgIHJldHVybiAnYXgtcmFuZ2UtYmV0d2Vlbic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gd2hvbGUgZGF5cyBiZXR3ZWVuIHR3byBkYXRlcy5cbiAgICogVGhlIHJlc3VsdCBpcyBpbmNsdXNpdmUgKGUuZy4sIE1heSA1IHRvIE1heSA2IGlzIGEgMi1kYXkgcmFuZ2UpLlxuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxhdGVEaWZmZXJlbmNlSW5EYXlzKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpOiBudW1iZXIge1xuICAgIGlmICghc3RhcnQgfHwgIWVuZCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0LmdldEZ1bGxZZWFyKCksIHN0YXJ0LmdldE1vbnRoKCksIHN0YXJ0LmdldERhdGUoKSk7XG4gICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKGVuZC5nZXRGdWxsWWVhcigpLCBlbmQuZ2V0TW9udGgoKSwgZW5kLmdldERhdGUoKSk7XG5cbiAgICBjb25zdCB0aW1lRGlmZmVyZW5jZSA9IGVuZERhdGUuZ2V0VGltZSgpIC0gc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgICBjb25zdCBkYXlzRGlmZmVyZW5jZSA9IE1hdGgucm91bmQodGltZURpZmZlcmVuY2UgLyAoMTAwMCAqIDM2MDAgKiAyNCkpO1xuXG4gICAgcmV0dXJuIGRheXNEaWZmZXJlbmNlICsgMTtcbiAgfVxuXG4gIGhhbmRsZVRvZGF5Q2xpY2soKSB7XG4gICAgdGhpcy52bS5zZXRSYW5nZVN0YXJ0RGF0ZShudWxsKTtcbiAgICBsZXQgY3VycmVudERhdGU6IERhdGU7XG4gICAgaWYgKHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCkgPT09ICd3ZWVrJykge1xuICAgICAgY3VycmVudERhdGUgPSB0aGlzLmNhbGVuZGFyU2VydmljZVxuICAgICAgICAuY3JlYXRlKG5ldyBEYXRlKCksIHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtKVxuICAgICAgICAuc3RhcnRPZignd2VlaycpLmRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgdGhpcy52bS5zZXRDdXJyZW50RGF0ZShjdXJyZW50RGF0ZSk7XG4gICAgdGhpcy5wb3BvdmVyKCk/LmNsb3NlKCk7XG4gICAgdGhpcy5jYWxlbmRhcigpPy5yZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZEZyb21Sb3V0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzbmFwc2hvdCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3Q7XG4gICAgY29uc3QgdmlldyA9IChzbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgndmlldycpIGFzIEFYUFRhc2tCb2FyZFZpZXdNb2RlKSA/PyBudWxsO1xuXG4gICAgY29uc3QgYWxsVmFsaWRWaWV3cyA9IHRoaXMubWVudUl0ZW1zKCkuZmxhdE1hcCgoYykgPT4gKGMuY2hpbGRyZW4gPyBjLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IGNoaWxkLmtleSkgOiBjLmtleSkpO1xuXG4gICAgaWYgKHZpZXcgJiYgYWxsVmFsaWRWaWV3cy5pbmNsdWRlcyh2aWV3KSkge1xuICAgICAgdGhpcy52bS5zZXRWaWV3TW9kZSh2aWV3KTtcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gdGhpcy5tZW51SXRlbXMoKS5maW5kKChjKSA9PiBjLmtleSA9PT0gdmlldyB8fCBjLmNoaWxkcmVuPy5zb21lKChjaGlsZCkgPT4gY2hpbGQua2V5ID09PSB2aWV3KSk7XG4gICAgICBpZiAoY2F0ZWdvcnkpIHtcbiAgICAgICAgdGhpcy52bS5zZXRDYXRlZ29yeShjYXRlZ29yeS5rZXkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXRoaXMudm0uY3VycmVudFZpZXdNb2RlKCkpIHtcbiAgICAgIHRoaXMudm0uc2V0Vmlld01vZGUoJ2RheScpO1xuICAgICAgdGhpcy52bS5zZXRDYXRlZ29yeSgnY2FsZW5kYXInKTtcbiAgICB9XG4gIH1cblxuICBzZXRBY3RpdmVUYXNrKHRhc2s6IEFYUFRhc2spIHtcbiAgICB0aGlzLnZtLnNlbGVjdFRhc2sodGFzayk7XG4gIH1cbn1cbiIsIjxheHAtcGFnZS1sYXlvdXQgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gIDxheHAtcGFnZS10b29sYmFyPlxuICAgIDxheHAtbGF5b3V0LXByZWZpeCBjbGFzcz1cInNtOmF4LWZsZXgtcm93IGF4LWZsZXgtY29sIGF4LWl0ZW1zLXN0YXJ0XCI+XG4gICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cIih0KCd0YXNrLWJvYXJkLnZpZXcuJyArIHNlbGVjdGVkVmlld01vZGUoKS50ZXh0LCB7IHNjb3BlOiAnd29ya2Zsb3ctbWFuYWdlbWVudCcgfSkgfCBhc3luYykhXCI+XG4gICAgICAgIDxheC1wcmVmaXg+PGF4LWljb24gW2ljb25dPVwic2VsZWN0ZWRWaWV3TW9kZSgpLmljb25cIj48L2F4LWljb24+PC9heC1wcmVmaXg+XG4gICAgICAgIDxheC1kcm9wZG93bi1wYW5lbCAjZHJvcGRvd25QYW5lbD5cbiAgICAgICAgICA8YXgtbWVudSBbb3JpZW50YXRpb25dPVwiJ3ZlcnRpY2FsJ1wiIGNsYXNzPVwiYXgtbWVudS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBmb3IgKGNhdGVnb3J5IG9mIG1lbnVJdGVtcygpOyB0cmFjayBjYXRlZ29yeS5rZXkpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIEBpZiAoY2F0ZWdvcnkuY2hpbGRyZW4gJiYgY2F0ZWdvcnkuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8YXgtbWVudS1pdGVtPlxuICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJjYXRlZ29yeS5pY29uXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDxheC10ZXh0Pnt7ICh0KCd0YXNrLWJvYXJkLicgKyBjYXRlZ29yeS50ZXh0LCB7IHNjb3BlOiAnd29ya2Zsb3ctbWFuYWdlbWVudCcgfSkgfCBhc3luYykhIH19PC9heC10ZXh0PlxuICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGNhdGVnb3J5LmNoaWxkcmVuOyB0cmFjayBjaGlsZC5rZXkpIHtcbiAgICAgICAgICAgICAgICA8YXgtbWVudS1pdGVtIChvbkNsaWNrKT1cImhhbmRsZVZpZXdDaGFuZ2UoY2hpbGQua2V5LGRyb3Bkb3duUGFuZWwpXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJjaGlsZC5pY29uXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8YXgtdGV4dFxuICAgICAgICAgICAgICAgICAgICA+e3sgKHQoJ3Rhc2stYm9hcmQudmlldy4nICsgY2hpbGQudGV4dCwgeyBzY29wZTogJ3dvcmtmbG93LW1hbmFnZW1lbnQnIH0pIHwgYXN5bmMpISB9fTwvYXgtdGV4dFxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvYXgtbWVudS1pdGVtPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9heC1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8YXgtbWVudS1pdGVtIChvbkNsaWNrKT1cImhhbmRsZVZpZXdDaGFuZ2UoY2F0ZWdvcnkua2V5LGRyb3Bkb3duUGFuZWwpXCI+XG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cImNhdGVnb3J5Lmljb25cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGF4LXRleHQ+e3sgKHQoJ3Rhc2stYm9hcmQuJyArIGNhdGVnb3J5LnRleHQsIHsgc2NvcGU6ICd3b3JrZmxvdy1tYW5hZ2VtZW50JyB9KSB8IGFzeW5jKSEgfX08L2F4LXRleHQ+XG4gICAgICAgICAgICAgIDwvYXgtbWVudS1pdGVtPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LW1lbnU+XG4gICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWNhcmV0LWRvd25cIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1zY2hlZHVsZXItaGVhZGVyIGF4LXctbWF4IGF4LXNtIHNtOmF4LW1kXCI+XG4gICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgKG9uQ2xpY2spPVwiY2hhbmdlRGF0ZShmYWxzZSlcIj5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtdGV4dC14bCBheC1pY29uLWNoZXZyb24tbGVmdCBhcnJvdy1pY29uXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiBbdGV4dF09XCJ0aW1lVGV4dCgpXCIgI2RhdGU+PC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgKG9uQ2xpY2spPVwiY2hhbmdlRGF0ZSh0cnVlKVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC10ZXh0LXhsIGF4LWljb24tY2hldnJvbi1yaWdodCBhcnJvdy1pY29uXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPGF4LXBvcG92ZXIgW3RhcmdldF09XCJkYXRlXCIgW3BsYWNlbWVudF09XCInYm90dG9tJ1wiICNwb3BvdmVyIFthZGFwdGl2aXR5RW5hYmxlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW92ZXJsYXktcGFuZVwiPlxuICAgICAgICAgICAgPGF4LWNhbGVuZGFyXG4gICAgICAgICAgICAgICNjYWxlbmRhclxuICAgICAgICAgICAgICBbdHlwZV09XCJjYWxlbmRhclR5cGUoKVwiXG4gICAgICAgICAgICAgIFtkZXB0aF09XCJjYWxlbmRhckRlcHRoKClcIlxuICAgICAgICAgICAgICBbY2VsbENsYXNzXT1cImdldENlbGxDbGFzc1wiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZtLmN1cnJlbnREYXRlKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LXNpbmdsZS1yYW5nZS1jYWxlbmRhclwiXG4gICAgICAgICAgICAgIChvblNsb3RDbGljayk9XCJoYW5kbGVDYWxlbmRhclNsb3RDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF4LWZvb3Rlcj5cbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBsb29rPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwidG9kYXlCdXR0b25UZXh0KClcIlxuICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlVG9kYXlDbGljaygpXCJcbiAgICAgICAgICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICAgICAgICAgIDwvYXgtZm9vdGVyPlxuICAgICAgICAgICAgPC9heC1jYWxlbmRhcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9heC1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9heHAtbGF5b3V0LXByZWZpeD5cbiAgICA8YXhwLWxheW91dC1zdWZmaXg+XG4gICAgICA8YXgtYnV0dG9uXG4gICAgICAgIFt0ZXh0XT1cInQodm0uc2VsZWN0ZWRUYXNrVHlwZSgpPy50aXRsZSB8fCAndGFzay1ib2FyZC5hbGwnLCB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0pIHwgYXN5bmNcIlxuICAgICAgPlxuICAgICAgICA8YXgtcHJlZml4PjxheC1pY29uIGljb249XCJmYS1saWdodCB7e3ZtLnNlbGVjdGVkVGFza1R5cGUoKT8uaWNvbiB8fCAnZmEtdGFza3MnfX1cIj48L2F4LWljb24+PC9heC1wcmVmaXg+XG4gICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdCBjbGFzcz1cImF4LXAtMlwiPlxuICAgICAgICAgICAgQGlmKHZtLmN1cnJlbnRWaWV3TW9kZSgpIT09J2thbmJhbicgJiYgdm0uY3VycmVudFZpZXdNb2RlKCkhPT0nc3RhdHVzLWdyb3VwZWQtZ3JpZCcpIHtcbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVTZWxlY3RlZFRhc2tUeXBlQ2hhbmdlKG51bGwpXCJcbiAgICAgICAgICAgICAgW3RleHRdPVwiKHQoJ3Rhc2stYm9hcmQuYWxsJywgeyBzY29wZTogcm9vdENvbmZpZy5jb25maWcuaTE4biB9KSB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXgtcHJlZml4PjxheC1pY29uIGljb249XCJmYS1saWdodCBmYS10YXNrc1wiPjwvYXgtaWNvbj48L2F4LXByZWZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICB9IEBmb3IoaXRlbSBvZiB2bS50YXNrVHlwZXMoKTsgdHJhY2sgaXRlbS5uYW1lKSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlU2VsZWN0ZWRUYXNrVHlwZUNoYW5nZShpdGVtKVwiXG4gICAgICAgICAgICAgIFt0ZXh0XT1cIih0KGl0ZW0udGl0bGUsIHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG4gfSkgfCBhc3luYykhXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD48YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQge3sgaXRlbS5pY29uIH19XCI+PC9heC1pY29uPjwvYXgtcHJlZml4PlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgQGlmKGxheW91dFNlcnZpY2UuaXNMYXJnZSgpKSB7XG4gICAgICA8YXgtYnV0dG9uIChvbkNsaWNrKT1cInZtLnRvZ2dsZURldGFpbFBhbmVsKClcIj5cbiAgICAgICAgPGF4LWljb24gaWNvbj1cInt7IHZtLmlzRGV0YWlsUGFuZWxPcGVuKCkgPyAnZmEtc29saWQgZmEtc3F1YXJlLWluZm8nIDogJ2ZhLWxpZ2h0IGZhLXNxdWFyZS1pbmZvJyB9fVwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgfVxuICAgIDwvYXhwLWxheW91dC1zdWZmaXg+XG4gIDwvYXhwLXBhZ2UtdG9vbGJhcj5cbiAgPGF4cC1wYWdlLWNvbnRlbnQgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtcm93IGF4LWdhcC0yXCI+XG4gICAgQHN3aXRjaCh2bS5jdXJyZW50Vmlld01vZGUoKSkgeyBAY2FzZSgna2FuYmFuJykge1xuICAgIDxheG0tdGFzay1ib2FyZC1rYW5iYW4tdmlld1xuICAgICAgY2xhc3M9XCJheHAta2FuYmFuLWNvbnRhaW5lciBheC1oLWZ1bGwgYXgtdy1mdWxsIGF4LW1pbi13LTBcIlxuICAgICAgW3Rhc2tzXT1cInJlc29sdmVkVGFza3MoKVwiXG4gICAgICAob25UYXNrQ2xpY2spPVwic2V0QWN0aXZlVGFzaygkZXZlbnQpXCJcbiAgICAgIChvbkFjdGlvbkNsaWNrKT1cImhhbmRsZUNvbnRleHRNZW51KCRldmVudClcIlxuICAgID48L2F4bS10YXNrLWJvYXJkLWthbmJhbi12aWV3PlxuICAgIH0gQGNhc2UoJ2dyaWQnKSB7XG4gICAgPGF4bS10YXNrLWJvYXJkLWdyaWQtdmlld1xuICAgICAgY2xhc3M9XCJheC1oLWZ1bGwgYXgtdy1mdWxsIGF4LW1pbi13LTBcIlxuICAgICAgW2RhdGFTb3VyY2VdPVwiZ3JpZERhdGFTb3VyY2VcIlxuICAgICAgKG9uVGFza0NsaWNrKT1cInNldEFjdGl2ZVRhc2soJGV2ZW50KVwiXG4gICAgICAob25BY3Rpb25DbGljayk9XCJoYW5kbGVDb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICA+PC9heG0tdGFzay1ib2FyZC1ncmlkLXZpZXc+XG4gICAgfSBAY2FzZSgnc3RhdHVzLWdyb3VwZWQtZ3JpZCcpIHtcbiAgICA8YXhtLXRhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3XG4gICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtdy1mdWxsIGF4LW1pbi13LTBcIlxuICAgICAgW2RhdGFTb3VyY2VdPVwiZ3JpZERhdGFTb3VyY2VcIlxuICAgICAgKG9uQWN0aW9uQ2xpY2spPVwiaGFuZGxlQ29udGV4dE1lbnUoJGV2ZW50KVwiXG4gICAgPjwvYXhtLXRhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3PlxuICAgIH0gQGRlZmF1bHQge1xuICAgIDxheG0tdGFzay1ib2FyZC1jYWxlbmRhci12aWV3XG4gICAgICBjbGFzcz1cImF4cC1zY2hlZHVsZXItY29udGFpbmVyIGF4LWgtZnVsbCBheC13LWZ1bGwgYXgtbWluLXctMFwiXG4gICAgICBbZGF0YVNvdXJjZV09XCJzY2hlZHVsZXJEYXRhU291cmNlXCJcbiAgICAgIFtzdGFydGluZ0RhdGVdPVwidm0uY3VycmVudERhdGUoKVwiXG4gICAgICAob25UYXNrQ2xpY2spPVwic2V0QWN0aXZlVGFzaygkZXZlbnQpXCJcbiAgICAgIFtzZWxlY3RlZFZpZXddPVwidm0uY3VycmVudFZpZXdNb2RlKClcIlxuICAgICAgKG9uQWN0aW9uQ2xpY2spPVwiaGFuZGxlQ29udGV4dE1lbnUoJGV2ZW50KVwiXG4gICAgICAob25UYXNrUmlnaHRDbGljayk9XCJoYW5kbGVDb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICAgIChjb21wb25lbnQpPVwic2NoZWR1bGVyQ29tcG9uZW50Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIChvbk1vbnRoU2xvdERibENsaWNrZWQpPVwiaGFuZGxlTW9udGhTbG90RGJsQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICA+PC9heG0tdGFzay1ib2FyZC1jYWxlbmRhci12aWV3PlxuICAgIH0gfVxuICAgIDxheC1jb250ZXh0LW1lbnVcbiAgICAgICNyb290Q29udGV4dE1lbnVcbiAgICAgIFtjbG9zZU9uXT1cIidsZWF2ZSdcIlxuICAgICAgW29yaWVudGF0aW9uXT1cIid2ZXJ0aWNhbCdcIlxuICAgICAgKG9uT3BlbmluZyk9XCJoYW5kbGVDb250ZXh0TWVudU9uT3BlbmluZygkZXZlbnQpXCJcbiAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVDb250ZXh0TWVudUl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9heC1jb250ZXh0LW1lbnU+XG4gICAgQGlmICh2bS5pc0RldGFpbFBhbmVsT3BlbigpICYmIGxheW91dFNlcnZpY2UuaXNMYXJnZSgpKSB7XG4gICAgPGF4bS10YXNrLWJvYXJkLWRldGFpbC1wYW5lbD48L2F4bS10YXNrLWJvYXJkLWRldGFpbC1wYW5lbD5cbiAgICB9XG4gIDwvYXhwLXBhZ2UtY29udGVudD5cbjwvYXhwLXBhZ2UtbGF5b3V0PlxuIl19"],"names":["i1","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAI,oBAAoB;AAC/B,CAAC,UAAU,oBAAoB,EAAE;AACjC,IAAI,oBAAoB,CAAC,UAAU,CAAC,GAAG,oBAAoB;AAC3D,IAAI,oBAAoB,CAAC,cAAc,CAAC,GAAG,wBAAwB;AACnE,IAAI,oBAAoB,CAAC,WAAW,CAAC,GAAG,8BAA8B;AACtE,IAAI,oBAAoB,CAAC,aAAa,CAAC,GAAG,gCAAgC;AAC1E,IAAI,oBAAoB,CAAC,wBAAwB,CAAC,GAAG,mCAAmC;AACxF,CAAC,EAAE,oBAAoB,KAAK,oBAAoB,GAAG,EAAE,CAAC,CAAC;;ACDhD,MAAM,qBAAqB,GAAG,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,OAAO;AAC1F,IAAI,SAAS,EAAE,CAAC;AAChB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,WAAW,EAAE,KAAK;AACtB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,WAAW,EAAE,IAAI,IAAI,EAAE;AAC3B,IAAI,eAAe,EAAE,OAAO;AAC5B,IAAI,oBAAoB,EAAE,IAAI;AAC9B,IAAI,mBAAmB,EAAE,UAAU;AACnC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,KAAK,MAAM;AAC9B,IAAI,gBAAgB,EAAE,QAAQ,CAAC,MAAM;AACrC,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,oBAAoB,EAAE;AACjD,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI;AACvE,KAAK,CAAC;AACN;AACA,IAAI,cAAc,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC;AACjE,IAAI,iBAAiB,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;AAC1D,IAAI,OAAO,EAAE,QAAQ,CAAC,MAAM;AAC5B,QAAQ,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE;AAC/C,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE;AAC3C,QAAQ,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAChF,KAAK,CAAC;AACN,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK;AACxH;AACA,IAAI,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAChF,IAAI,OAAO;AACX,QAAQ,MAAM,UAAU,GAAG;AAC3B,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAClD,YAAY,IAAI;AAChB;AACA,gBAAgB,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE;AACvE,gBAAgB,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC;AAChD;AACA,gBAAgB,MAAM,CAAC,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AACjH,oBAAoB,kBAAkB,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,WAAW,CAAC;AAC9E,oBAAoB,kBAAkB,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAC3E,oBAAoB,kBAAkB,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,YAAY,CAAC;AAC/E,oBAAoB,kBAAkB,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,sBAAsB,CAAC;AACzF,iBAAiB,CAAC;AAClB,gBAAgB,UAAU,CAAC,KAAK,EAAE;AAClC,oBAAoB,eAAe,EAAE,aAAa,IAAI,OAAO;AAC7D,oBAAoB,mBAAmB,EAAE,iBAAiB,IAAI,UAAU;AACxE,oBAAoB,WAAW,EAAE,eAAe,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,IAAI,EAAE;AACzF,oBAAoB,oBAAoB,EAAE,iBAAiB,IAAI,IAAI;AACnE,oBAAoB,SAAS,EAAE,KAAK;AACpC,iBAAiB,CAAC;AAClB;AACA,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC;AAC/E,gBAAgB,UAAU,CAAC,KAAK,EAAE;AAClC,oBAAoB,eAAe,EAAE,OAAO;AAC5C,oBAAoB,WAAW,EAAE,IAAI,IAAI,EAAE;AAC3C,oBAAoB,oBAAoB,EAAE,IAAI;AAC9C,oBAAoB,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;AAChD,oBAAoB,SAAS,EAAE,KAAK;AACpC,iBAAiB,CAAC;AAClB;AACA,SAAS;AACT,QAAQ,eAAe,CAAC,IAAI,EAAE;AAC9B,YAAY,QAAQ,IAAI;AACxB,gBAAgB,KAAK,UAAU;AAC/B,oBAAoB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAC7C,oBAAoB;AACpB,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5C,oBAAoB;AACpB,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC9C,oBAAoB;AACpB;AACA,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAClC,SAAS;AACT,QAAQ,WAAW,CAAC,IAAI,EAAE;AAC1B,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;AAC5D,YAAY,kBAAkB;AAC9B,iBAAiB,GAAG,CAAC,oBAAoB,CAAC,YAAY,EAAE,IAAI;AAC5D,iBAAiB,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;AAC/F,SAAS;AACT,QAAQ,WAAW,CAAC,IAAI,EAAE;AAC1B,YAAY,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,qBAAqB,KAAK,KAAK,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;AAChH,gBAAgB,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;AAC/D,gBAAgB,IAAI,YAAY,EAAE;AAClC,oBAAoB,UAAU,CAAC,KAAK,EAAE,EAAE,oBAAoB,EAAE,YAAY,EAAE,CAAC;AAC7E,oBAAoB,kBAAkB;AACtC,yBAAyB,GAAG,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,YAAY;AACtF,yBAAyB,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;AAC1G;AACA;AACA,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AACxD,YAAY,kBAAkB;AAC9B,iBAAiB,GAAG,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI;AACxD,iBAAiB,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;AAC3F,SAAS;AACT,QAAQ,cAAc,CAAC,IAAI,EAAE;AAC7B,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9D,YAAY,kBAAkB;AAC9B,iBAAiB,GAAG,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AACzE,iBAAiB,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;AACrF,SAAS;AACT,QAAQ,2BAA2B,CAAC,QAAQ,EAAE;AAC9C,YAAY,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI;AAChE,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,oBAAoB,EAAE,YAAY,EAAE,CAAC;AACrE,YAAY,kBAAkB;AAC9B,iBAAiB,GAAG,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,YAAY;AAC9E,iBAAiB,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;AAClG,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,UAAU,CAAC,IAAI,EAAE;AACzB,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACrD,SAAS;AACT;AACA;AACA;AACA,QAAQ,iBAAiB,GAAG;AAC5B,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACrD,SAAS;AACT,QAAQ,eAAe,GAAG;AAC1B,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AACpD,SAAS;AACT,QAAQ,gBAAgB,GAAG;AAC3B,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACrD,SAAS;AACT,QAAQ,iBAAiB,GAAG;AAC5B,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;AACpE,SAAS;AACT,QAAQ,MAAM,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC3C,YAAY,OAAO,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;AAChE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ,iBAAiB,CAAC,IAAI,EAAE;AAChC,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AACvD,SAAS;AACT,QAAQ,YAAY,CAAC,IAAI,EAAE;AAC3B,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;AAC3C,YAAY,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACnD,YAAY,kBAAkB;AAC9B,iBAAiB,GAAG,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK;AAC1D,iBAAiB,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AACnF,SAAS;AACT,KAAK;AACL,CAAC,CAAC,CAAC;;ACjJI,MAAM,uBAAuB,CAAC;AACrC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/C,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3D,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F,QAAQ,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,YAAY;AACvD,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AACvD,YAAY,MAAM,GAAG,GAAG,YAAY,EAAE,MAAM,CAAC,EAAE;AAC/C,YAAY,MAAM,QAAQ,GAAG,YAAY,EAAE,QAAQ;AACnD,YAAY,IAAI,CAAC,QAAQ;AACzB,gBAAgB;AAChB,YAAY,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;AACnE,YAAY,IAAI,IAAI;AACpB,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzE,QAAQ,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,YAAY;AAC3D,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AACvD,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC;AAC9F,YAAY,MAAM,WAAW,GAAG,MAAM,gBAAgB,EAAE,cAAc,EAAE;AACxE,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AACxC,gBAAgB;AAChB;AACA,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AAC7C,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7E;AACA,IAAI,oBAAoB;AACxB,IAAI,wBAAwB;AAC5B,IAAI,qBAAqB,CAAC,IAAI,EAAE;AAChC,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACzL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,6BAA6B,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,sqJAAsqJ,EAAE,MAAM,EAAE,CAAC,4oEAA4oE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,0BAA0B,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACnpQ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,6BAA6B,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC/J,wBAAwB,SAAS;AACjC,wBAAwB,YAAY;AACpC,wBAAwB,gBAAgB;AACxC,wBAAwB,iBAAiB;AACzC,wBAAwB,sBAAsB;AAC9C,wBAAwB,wBAAwB;AAChD,qBAAqB,EAAE,QAAQ,EAAE,sqJAAsqJ,EAAE,MAAM,EAAE,CAAC,4oEAA4oE,CAAC,EAAE;AACj2N,SAAS,CAAC,EAAE,CAAC;;ACtDN,MAAM,iCAAiC,CAAC;AAC/C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/C,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACxD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3D,QAAQ,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,oBAAoB,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9H,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpG,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjG,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAK;AACnC,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC;AACzD,SAAS;AACT,QAAQ,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK;AAC/G,cAAc;AACd,cAAc,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjG,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE;AACnC,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE;AACrC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,MAAM,EAAE;AAC7C,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE;AACrC,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE;AACjC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,EAAE;AACxC,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE;AACtC;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AACvC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1D;AACA;AACA,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,KAAK,CAAC,cAAc;AAChC,YAAY;AACZ,QAAQ,IAAI,IAAI;AAChB,QAAQ,IAAI,GAAG;AACf,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;AACtF,QAAQ,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO;AACrD,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;AAC3F,QAAQ,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI;AAC/B,YAAY,KAAK,OAAO;AACxB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,IAAI,GAAG,IAAI,CAAC;AAC5B,qBAAqB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI;AACrD,qBAAqB,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI;AACnD,qBAAqB,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM;AACvD,qBAAqB,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI;AAC7D,gBAAgB,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC;AAC7D,gBAAgB;AAChB,YAAY;AACZ,gBAAgB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI;AAChD,gBAAgB,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;AAC7C,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC;AACpG,gBAAgB,MAAM,SAAS,GAAG,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC;AACzE,gBAAgB,IAAI,CAAC,SAAS,IAAI,QAAQ,MAAM,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC1E,oBAAoB,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC;AACjE;AACA,gBAAgB;AAChB;AACA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AACnG,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,YAAY,IAAI,CAAC,kBAAkB,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACtD,SAAS,CAAC;AACV;AACA,IAAI,uBAAuB,CAAC,KAAK,EAAE;AACnC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;AAC/F;AACA,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,OAAO,EAAE;AACrD,YAAY,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACtE;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,KAAK,EAAE;AACpC,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AACvC;AACA,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;AAC5F;AACA,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;AAChD;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACnM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,iCAAiC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,8BAA8B,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,glBAAglB,EAAE,MAAM,EAAE,CAAC,uGAAuG,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACx4E;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE,UAAU,EAAE,CAAC;AAC3I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,8BAA8B,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,glBAAglB,EAAE,MAAM,EAAE,CAAC,uGAAuG,CAAC,EAAE;AACv4B,SAAS,CAAC,EAAE,CAAC;;AC7EN,MAAM,6BAA6B,CAAC;AAC3C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/C,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACxD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3D,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE;AACnC,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE;AACrC,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM;AAC9C,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE;AACtD,YAAY,OAAO,IAAI,YAAY,CAAC;AACpC,gBAAgB,IAAI,EAAE,OAAO,CAAC,KAAK;AACnC,oBAAoB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACzF,oBAAoB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACvD,oBAAoB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACpE,wBAAwB,EAAE,EAAE,IAAI,CAAC,EAAE;AACnC,wBAAwB,IAAI,EAAE,IAAI,CAAC,IAAI;AACvC,wBAAwB,KAAK,EAAE,IAAI,CAAC,KAAK;AACzC,wBAAwB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC/C,wBAAwB,WAAW,EAAE,IAAI,CAAC,WAAW;AACrD,wBAAwB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACtD,wBAAwB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG;AAC/D,wBAAwB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,YAAY;AACzE,wBAAwB,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK;AACrF,wBAAwB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,EAAE;AAC/F,4BAA4B,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM;AACtF,yBAAyB,CAAC;AAC1B,wBAAwB,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE;AACnG,4BAA4B,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM;AACtF,yBAAyB,CAAC;AAC1B,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;AACtE,iBAAiB;AACjB,gBAAgB,QAAQ,EAAE,EAAE;AAC5B,gBAAgB,GAAG,EAAE,IAAI;AACzB,gBAAgB,KAAK,EAAE,OAAO,GAAG,KAAK;AACtC,oBAAoB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC;AAC9E,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpE,QAAQ,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,MAAM;AAC/C,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE;AAC5C,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvE,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,YAAY;AACnD,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE;AACvD,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACpC,gBAAgB;AAChB;AACA,YAAY,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK;AAC5D,gBAAgB,IAAI,WAAW,EAAE;AACjC,oBAAoB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AACjD;AACA,aAAa,CAAC;AACd,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrE;AACA,IAAI,kBAAkB;AACtB,IAAI,gBAAgB;AACpB,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;AACxB,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7C;AACA;AACA,IAAI,oBAAoB,CAAC,CAAC,EAAE;AAC5B,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI;AAC3B,QAAQ,IAAI,CAAC,IAAI;AACjB,YAAY;AACZ,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;AACrE;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC/L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,6BAA6B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,onDAAonD,EAAE,MAAM,EAAE,CAAC,mFAAmF,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,8BAA8B,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,EAAE,CAAC,gCAAgC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACrrH;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,UAAU,EAAE,CAAC;AACvI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,0BAA0B,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,sBAAsB,CAAC,EAAE,QAAQ,EAAE,onDAAonD,EAAE,MAAM,EAAE,CAAC,mFAAmF,CAAC,EAAE;AACr8D,SAAS,CAAC,EAAE,CAAC;;ACrFN,MAAM,+BAA+B,CAAC;AAC7C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3D,QAAQ,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,iBAAiB,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrH,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE;AACnC,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE;AACrC,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE;AACjC,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE;AACrC,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrF,QAAQ,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/I,QAAQ,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM;AAC1C,YAAY,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACrD,gBAAgB,EAAE,EAAE,IAAI,CAAC,EAAE;AAC3B,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjC,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjC,gBAAgB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvC,gBAAgB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvC,gBAAgB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;AACzC,gBAAgB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7C,aAAa,CAAC,CAAC;AACf,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,YAAY;AACnD,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE;AAC5E,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3C;AACA,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrE;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AACpC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AACvD;AACA;AACA,IAAI,gBAAgB;AACpB,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACjD,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AACrE,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAgB,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAChF;AACA,YAAY,OAAO,IAAI;AACvB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;AACjE,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,SAAS,CAAC;AACV;AACA,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACjF,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC;AACA;AACA,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACjF,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACnF;AACA;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACjM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,+BAA+B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,gQAAgQ,EAAE,MAAM,EAAE,CAAC,mFAAmF,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAClhD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,UAAU,EAAE,CAAC;AACzI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,gQAAgQ,EAAE,MAAM,EAAE,CAAC,mFAAmF,CAAC,EAAE;AAC9hB,SAAS,CAAC,EAAE,CAAC;;AC5DN,MAAM,0CAA0C,CAAC;AACxD,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/C,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACxD,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE;AACrC,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnG,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrF,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY;AAC/C,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE;AACtD,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/C,YAAY,IAAI,CAAC,gBAAgB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/D,gBAAgB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;AACzC,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;AAC5C,gBAAgB;AAChB;AACA,YAAY,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE;AACnD,YAAY,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,YAAY,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK;AACzC,YAAY,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AAC7D,gBAAgB,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC;AAC/F,gBAAgB,OAAO;AACvB,oBAAoB,UAAU,EAAE,MAAM;AACtC,oBAAoB,KAAK,EAAE,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC;AAC5E,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AAC/C,YAAY,SAAS,CAAC,MAAM;AAC5B,gBAAgB,UAAU,CAAC,MAAM;AACjC,oBAAoB,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK;AAC5D,wBAAwB,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;AAC7C,qBAAqB,CAAC;AACtB,iBAAiB,CAAC;AAClB,aAAa,CAAC;AACd,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjE,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,YAAY;AACnD,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE;AACvD,YAAY,QAAQ,EAAE,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK;AAC7D,gBAAgB,IAAI,WAAW,EAAE;AACjC,oBAAoB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AACjD;AACA,aAAa,CAAC;AACd,YAAY,QAAQ,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;AACvD,gBAAgB,IAAI,QAAQ,EAAE;AAC9B,oBAAoB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/C;AACA,aAAa,CAAC;AACd,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrE;AACA,IAAI,YAAY;AAChB,IAAI,gBAAgB;AACpB,IAAI,4BAA4B,CAAC,KAAK,EAAE;AACxC,QAAQ,OAAO,IAAI,YAAY,CAAC;AAChC,YAAY,IAAI,EAAE,OAAO,CAAC,KAAK;AAC/B,gBAAgB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACnD,oBAAoB,EAAE,EAAE,IAAI,CAAC,EAAE;AAC/B,oBAAoB,IAAI,EAAE,IAAI,CAAC,IAAI;AACnC,oBAAoB,KAAK,EAAE,IAAI,CAAC,KAAK;AACrC,oBAAoB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC3C,oBAAoB,WAAW,EAAE,IAAI,CAAC,WAAW;AACjD,oBAAoB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG;AAC3D,oBAAoB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,YAAY;AACrE,oBAAoB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,EAAE;AAC3F,wBAAwB,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM;AAClF,qBAAqB,CAAC;AACtB,oBAAoB,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE;AAC/F,wBAAwB,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM;AAClF,qBAAqB,CAAC;AACtB,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,OAAO;AACvB,oBAAoB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AAC/D,oBAAoB,KAAK,EAAE,KAAK,CAAC,MAAM;AACvC,iBAAiB;AACjB,aAAa;AACb,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,GAAG,EAAE,IAAI;AACrB,YAAY,KAAK,EAAE,OAAO,GAAG,KAAK;AAClC,gBAAgB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC;AAC5D,aAAa;AACb,SAAS,CAAC;AACV;AACA,IAAI,oBAAoB,CAAC,CAAC,EAAE;AAC5B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACjF,QAAQ,IAAI,CAAC,IAAI;AACjB,YAAY;AACZ,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;AACrE;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0CAA0C,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC5M,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,0CAA0C,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,yCAAyC,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,glDAAglD,EAAE,MAAM,EAAE,CAAC,mFAAmF,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAED,IAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,8BAA8B,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,EAAE,CAAC,gCAAgC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAClxH;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0CAA0C,EAAE,UAAU,EAAE,CAAC;AACpJ,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,yCAAyC,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,sBAAsB,CAAC,EAAE,QAAQ,EAAE,glDAAglD,EAAE,MAAM,EAAE,CAAC,mFAAmF,CAAC,EAAE;AACh7D,SAAS,CAAC,EAAE,CAAC;;ACxEN,MAAM,gBAAgB,SAAS,0BAA0B,CAAC;AACjE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/C,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC;AACjD,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACpD,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACxD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3D,QAAQ,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3G,QAAQ,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3G,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;AAChC,YAAY;AACZ,gBAAgB,GAAG,EAAE,UAAU;AAC/B,gBAAgB,IAAI,EAAE,UAAU;AAChC,gBAAgB,IAAI,EAAE,0BAA0B;AAChD,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,0BAA0B,EAAE;AACnF,oBAAoB,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAA2B,EAAE;AACtF,oBAAoB,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,0BAA0B,EAAE;AACvF,oBAAoB,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,4BAA4B,EAAE;AACzF,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,GAAG,EAAE,OAAO;AAC5B,gBAAgB,IAAI,EAAE,OAAO;AAC7B,gBAAgB,IAAI,EAAE,mBAAmB;AACzC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE;AAC5E,oBAAoB,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,mBAAmB,EAAE;AAC1G,iBAAiB;AACjB,aAAa;AACb,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,0BAA0B,EAAE;AAC/E,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrJ,QAAQ,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM;AAC9C,YAAY,QAAQ,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;AAC7C,gBAAgB,KAAK,KAAK;AAC1B,gBAAgB,KAAK,MAAM;AAC3B,gBAAgB,KAAK,QAAQ;AAC7B,gBAAgB,KAAK,QAAQ;AAC7B,gBAAgB,KAAK,cAAc;AACnC,gBAAgB,KAAK,oBAAoB;AACzC,gBAAgB,KAAK,qBAAqB;AAC1C,oBAAoB,OAAO,OAAO;AAClC,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,OAAO,cAAc;AACzC,gBAAgB,KAAK,OAAO;AAC5B,gBAAgB,KAAK,gBAAgB;AACrC,oBAAoB,OAAO,eAAe;AAC1C;AACA,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpE,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM;AACvC,YAAY,IAAI,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,MAAM;AACpD,gBAAgB,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,QAAQ;AACtD,gBAAgB,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,qBAAqB,EAAE;AACrE,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpI,gBAAgB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACrE,gBAAgB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC9H,gBAAgB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC1H,gBAAgB,OAAO,CAAC,EAAE,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAClD;AACA,YAAY,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,eAAe,EAAE;AAC/D,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM;AAC5C,YAAY,IAAI,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,MAAM;AACpD,gBAAgB,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,QAAQ;AACtD,gBAAgB,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,qBAAqB,EAAE;AACrE,gBAAgB,OAAO,KAAK;AAC5B;AACA,YAAY,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,aAAa,EAAE;AAC7D,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,MAAM;AAC/C,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;AACzD,YAAY,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACrD,gBAAgB,IAAI,QAAQ,CAAC,GAAG,KAAK,WAAW,EAAE;AAClD,oBAAoB,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;AAC1F;AACA,gBAAgB,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvC,oBAAoB,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC;AACnG,oBAAoB,IAAI,UAAU,EAAE;AACpC,wBAAwB,OAAO,UAAU;AACzC;AACA;AACA;AACA,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACrD,YAAY,OAAO,aAAa,CAAC;AACjC,kBAAkB,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1C,kBAAkB,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE;AAChG,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;AACrC,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE;AAC/D,YAAY,MAAM,KAAK,GAAG,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,SAAS;AAChF,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7H,YAAY,IAAI,GAAG;AACnB,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;AACzD,YAAY,IAAI,WAAW,KAAK,QAAQ;AACxC,gBAAgB,WAAW,KAAK,MAAM;AACtC,gBAAgB,WAAW,KAAK,qBAAqB;AACrD,gBAAgB,WAAW,KAAK,QAAQ,EAAE;AAC1C,gBAAgB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC9D;AACA,iBAAiB,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,gBAAgB,EAAE;AAClF,gBAAgB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5C,gBAAgB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACzC;AACA,iBAAiB;AACjB,gBAAgB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACvC;AACA,YAAY,OAAO;AACnB,gBAAgB,IAAI,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;AACvC,gBAAgB,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;AACzD,aAAa;AACb,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3D,QAAQ,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,iBAAiB,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7G,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,MAAM,KAAK;AAC/C,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE;AAC/D,YAAY,MAAM,KAAK,GAAG,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,SAAS;AAChF,YAAY,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AAC7E,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC;AAC7F,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC,MAAM,KAAK;AAC1C,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE;AAC/D,YAAY,MAAM,KAAK,GAAG,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,SAAS;AAChF,YAAY,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AAC7E,YAAY,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACpE,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC9D,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/F,QAAQ,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,YAAY;AACtC,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;AACtD,YAAY,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACvC,gBAAgB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAClF,gBAAgB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACpD;AACA,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,eAAe,GAAG;AAC/B,YAAY,MAAM;AAClB,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,qBAAqB;AACjC,YAAY,oBAAoB;AAChC,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK;AACtC,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;AACzD,YAAY,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE;AAC/D,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC5D,gBAAgB,IAAI,kBAAkB,EAAE;AACxC,oBAAoB,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,kBAAkB,CAAC;AAChG,oBAAoB,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE;AACjE,wBAAwB,OAAO,6BAA6B;AAC5D;AACA,oBAAoB,OAAO,IAAI;AAC/B;AACA,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;AACpF,gBAAgB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC9E,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC5D,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;AACzD,gBAAgB,IAAI,OAAO,IAAI,KAAK;AACpC,oBAAoB,OAAO,6BAA6B;AACxD,gBAAgB,IAAI,OAAO;AAC3B,oBAAoB,OAAO,gBAAgB;AAC3C,gBAAgB,IAAI,KAAK;AACzB,oBAAoB,OAAO,cAAc;AACzC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;AAC7F,oBAAoB,OAAO,kBAAkB;AAC7C;AACA,gBAAgB,OAAO,IAAI;AAC3B;AACA,YAAY,IAAI,WAAW,KAAK,MAAM,EAAE;AACxC,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;AAC/E,gBAAgB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9C,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3C,oBAAoB,OAAO,gBAAgB;AAC3C,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1C,oBAAoB,OAAO,cAAc;AACzC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;AACnF,oBAAoB,OAAO,kBAAkB;AAC7C;AACA;AACA,YAAY,OAAO,IAAI;AACvB,SAAS;AACT;AACA,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,MAAM,KAAK,CAAC,QAAQ,EAAE;AAC9B,QAAQ,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;AAClC,QAAQ,IAAI,CAAC,MAAM,CAAC;AACpB,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC;AACvH,aAAa,SAAS,CAAC,YAAY;AACnC,YAAY,MAAM,IAAI,CAAC,aAAa,EAAE;AACtC,SAAS,CAAC;AACV;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC1H;AACA,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,OAAO;AACf,YAAY;AACZ,gBAAgB,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACtH,aAAa;AACb,SAAS;AACT;AACA,IAAI,yBAAyB,CAAC,SAAS,EAAE;AACzC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9C;AACA,IAAI,MAAM,0BAA0B,CAAC,KAAK,EAAE;AAC5C,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AAC9C,QAAQ,IAAI,CAAC,WAAW;AACxB,YAAY;AACZ,QAAQ,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ;AACjD,QAAQ,IAAI,CAAC,YAAY;AACzB,YAAY;AACZ,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,YAAY,CAAC;AACxE,QAAQ,IAAI,CAAC,QAAQ;AACrB,YAAY;AACZ,QAAQ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;AAC9D,QAAQ,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;AACpC,YAAY,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7B,gBAAgB,IAAI,EAAE,IAAI,CAAC,KAAK;AAChC,gBAAgB,IAAI,EAAE,IAAI,CAAC,IAAI;AAC/B,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,OAAO,EAAE,IAAI,CAAC,OAAO;AACzC,iBAAiB;AACjB,aAAa,CAAC;AACd;AACA;AACA,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AACxC,QAAQ,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO;AAC3C,QAAQ,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO;AAC3C,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM;AAChD,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC;AACrD;AACA,IAAI,yBAAyB,CAAC,IAAI,EAAE;AACpC,QAAQ,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;AACpC,QAAQ,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;AAClC;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE;AAC1C,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;AAC3D,QAAQ,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;AACjC,QAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;AAC/B,QAAQ,aAAa,CAAC,KAAK,EAAE;AAC7B;AACA,IAAI,4BAA4B,CAAC,QAAQ,EAAE;AAC3C,QAAQ,IAAI,CAAC,EAAE,CAAC,2BAA2B,CAAC,QAAQ,CAAC;AACrD,QAAQ,IAAI,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE;AAC5C;AACA,IAAI,0BAA0B,CAAC,KAAK,EAAE;AACtC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC;AAC1G;AACA,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3H,QAAQ,QAAQ,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;AACzC,YAAY,KAAK,KAAK;AACtB,YAAY,KAAK,cAAc;AAC/B,gBAAgB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,gBAAgB;AAChB,YAAY,KAAK,MAAM;AACvB,gBAAgB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,gBAAgB;AAChB,YAAY,KAAK,MAAM;AACvB,YAAY,KAAK,QAAQ;AACzB,YAAY,KAAK,QAAQ;AACzB,YAAY,KAAK,oBAAoB;AACrC,YAAY,KAAK,qBAAqB;AACtC,gBAAgB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;AAClH,gBAAgB;AAChB,YAAY,KAAK,OAAO;AACxB,YAAY,KAAK,gBAAgB;AACjC,gBAAgB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChF,gBAAgB;AAChB;AACA,QAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE;AACjC;AACA,IAAI,uBAAuB,CAAC,KAAK,EAAE;AACnC,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK;AAChE,YAAY;AACZ,QAAQ,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI;AACtC,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;AACrD,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACxD,YAAY,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE;AAC/D,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,gBAAgB,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACtD,gBAAgB,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE;AACzC,gBAAgB;AAChB;AACA,YAAY,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE;AACtD,YAAY,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE;AAC/C,YAAY,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjE,YAAY,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC/D,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,UAAU,CAAC;AAC7F,YAAY,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC;AAChD,YAAY,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC;AAClD,YAAY,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC3C,YAAY,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE;AACrC,YAAY,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;AACnC,YAAY;AACZ;AACA,QAAQ,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC;AAC7C,QAAQ,IAAI,WAAW,KAAK,MAAM,EAAE;AACpC,YAAY,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE;AAC1C,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;AACvF,YAAY,IAAI,cAAc,GAAG,GAAG,GAAG,SAAS;AAChD,YAAY,IAAI,cAAc,GAAG,CAAC,EAAE;AACpC,gBAAgB,cAAc,IAAI,CAAC;AACnC;AACA,YAAY,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC;AACnE;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC;AACzC,QAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA,IAAI,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE;AAC1C,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AAC5B,YAAY,OAAO,CAAC;AACpB;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC1F,QAAQ,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;AAClF,QAAQ,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;AACtE,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;AAC9E,QAAQ,OAAO,cAAc,GAAG,CAAC;AACjC;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACvC,QAAQ,IAAI,WAAW;AACvB,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,MAAM,EAAE;AAClD,YAAY,WAAW,GAAG,IAAI,CAAC;AAC/B,iBAAiB,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM;AACtF,iBAAiB,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI;AACrC;AACA,aAAa;AACb,YAAY,WAAW,GAAG,IAAI,IAAI,EAAE;AACpC;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC;AAC3C,QAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE;AACjC;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;AACrD,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI;AAC/D,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1H,QAAQ,IAAI,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClD,YAAY,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;AACrC,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAC5H,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;AACjD;AACA;AACA,aAAa,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE;AAC7C,YAAY,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;AACtC,YAAY,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC;AAC3C;AACA;AACA,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB,QAAQ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;AAChC;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACpL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE;AAC7K,YAAY;AACZ,gBAAgB,OAAO,EAAE,iBAAiB;AAC1C,gBAAgB,WAAW,EAAE,gBAAgB;AAC7C,aAAa;AACb,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,o2NAAo2N,EAAE,MAAM,EAAE,CAAC,u5CAAu5C,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAED,IAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,2CAA2C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,qDAAqD,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;AACnnS;AACA,gBAAgB,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,yBAAyB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,qBAAqB,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI;AACp8D;AACA,gBAAgB,4BAA4B,EAAE,QAAQ,EAAE,qfAAqf,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iCAAiC,EAAE,QAAQ,EAAE,8BAA8B,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,uBAAuB,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,+BAA+B,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,6BAA6B,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,0CAA0C,EAAE,QAAQ,EAAE,yCAAyC,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,6BAA6B,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7zF;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AAC1H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE;AAC9B,wBAAwB,WAAW;AACnC,wBAAwB,YAAY;AACpC,wBAAwB,YAAY;AACpC;AACA,wBAAwB,YAAY;AACpC,wBAAwB,cAAc;AACtC,wBAAwB,sBAAsB;AAC9C,wBAAwB,mBAAmB;AAC3C,wBAAwB,iBAAiB;AACzC,wBAAwB,eAAe;AACvC,wBAAwB,mBAAmB;AAC3C,wBAAwB,aAAa;AACrC;AACA,wBAAwB,4BAA4B;AACpD,wBAAwB,sBAAsB;AAC9C,wBAAwB,iCAAiC;AACzD,wBAAwB,+BAA+B;AACvD,wBAAwB,6BAA6B;AACrD,wBAAwB,0CAA0C;AAClE,wBAAwB,uBAAuB;AAC/C,wBAAwB,wBAAwB;AAChD,wBAAwB,eAAe;AACvC,wBAAwB,mBAAmB;AAC3C,qBAAqB,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;AAC1H,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE,gBAAgB;AACzD,yBAAyB;AACzB,qBAAqB,EAAE,QAAQ,EAAE,o2NAAo2N,EAAE,MAAM,EAAE,CAAC,u5CAAu5C,CAAC,EAAE;AAC1yQ,SAAS,CAAC,EAAE,CAAC;;;;"}
|