@acorex/modules 20.2.0-next.4 → 20.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/contact-management/index.d.ts +21 -163
- package/content-management/index.d.ts +59 -2
- package/conversation/index.d.ts +77 -68
- package/dashboard-management/index.d.ts +7 -4
- package/data-management/index.d.ts +66 -10
- package/document-management/index.d.ts +51 -2
- package/fesm2022/{acorex-modules-application-management-module-designer.component-CsZjqUAj.mjs → acorex-modules-application-management-module-designer.component-BitSGI0F.mjs} +7 -7
- package/fesm2022/{acorex-modules-application-management-module-designer.component-CsZjqUAj.mjs.map → acorex-modules-application-management-module-designer.component-BitSGI0F.mjs.map} +1 -1
- package/fesm2022/acorex-modules-application-management.mjs +41 -41
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-tDyQQDnk.mjs → acorex-modules-auth-acorex-modules-auth-CdZ9BHOa.mjs} +47 -47
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-tDyQQDnk.mjs.map → acorex-modules-auth-acorex-modules-auth-CdZ9BHOa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-yu1DJZKN.mjs → acorex-modules-auth-app-chooser.component-D4ehfpnB.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-app-chooser.component-yu1DJZKN.mjs.map → acorex-modules-auth-app-chooser.component-D4ehfpnB.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-blank.layout-ZjroQcdq.mjs → acorex-modules-auth-blank.layout-D0KDl_qd.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-blank.layout-ZjroQcdq.mjs.map → acorex-modules-auth-blank.layout-D0KDl_qd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-D1aa1F6G.mjs → acorex-modules-auth-login.module-BHRC357P.mjs} +8 -8
- package/fesm2022/{acorex-modules-auth-login.module-D1aa1F6G.mjs.map → acorex-modules-auth-login.module-BHRC357P.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-CGQmSlGQ.mjs → acorex-modules-auth-master.layout-DAYMmpBW.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-master.layout-CGQmSlGQ.mjs.map → acorex-modules-auth-master.layout-DAYMmpBW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-m9YiJ4e9.mjs → acorex-modules-auth-oauth-callback.component-B0Q3w45s.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-m9YiJ4e9.mjs.map → acorex-modules-auth-oauth-callback.component-B0Q3w45s.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-Cb3FJ1DZ.mjs → acorex-modules-auth-password.component-BJpxtJYh.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-password.component-Cb3FJ1DZ.mjs.map → acorex-modules-auth-password.component-BJpxtJYh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-CiWdX7f_.mjs → acorex-modules-auth-password.component-NAY46d_2.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-password.component-CiWdX7f_.mjs.map → acorex-modules-auth-password.component-NAY46d_2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-pae8qpX9.mjs → acorex-modules-auth-routes-hvqL2dCH.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-pae8qpX9.mjs.map → acorex-modules-auth-routes-hvqL2dCH.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-Bk0l3XoV.mjs → acorex-modules-auth-tenant-chooser.component-Cy94co3S.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-Bk0l3XoV.mjs.map → acorex-modules-auth-tenant-chooser.component-Cy94co3S.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-DDEIajiI.mjs → acorex-modules-auth-two-factor-code.component-CAbntIoR.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-DDEIajiI.mjs.map → acorex-modules-auth-two-factor-code.component-CAbntIoR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-DtcoHPH4.mjs → acorex-modules-auth-two-factor.module-kPuT8yUw.mjs} +7 -7
- package/fesm2022/{acorex-modules-auth-two-factor.module-DtcoHPH4.mjs.map → acorex-modules-auth-two-factor.module-kPuT8yUw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-sI6P2joA.mjs → acorex-modules-auth-user-sessions.component-Chx_jTSJ.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-user-sessions.component-sI6P2joA.mjs.map → acorex-modules-auth-user-sessions.component-Chx_jTSJ.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-calendar-management.mjs +22 -22
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-common-search-popup.component-D7Y4T3Rp.mjs → acorex-modules-common-search-popup.component-39U0-TIj.mjs} +4 -4
- package/fesm2022/{acorex-modules-common-search-popup.component-D7Y4T3Rp.mjs.map → acorex-modules-common-search-popup.component-39U0-TIj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-ceEtE6qB.mjs → acorex-modules-common-timeline-version-history-popup.component-_KJd8oGw.mjs} +4 -4
- package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-ceEtE6qB.mjs.map → acorex-modules-common-timeline-version-history-popup.component-_KJd8oGw.mjs.map} +1 -1
- package/fesm2022/acorex-modules-common.mjs +72 -49
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-_Bxallkg.mjs +863 -0
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-_Bxallkg.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-contact-method.entity-Ci93_mb9.mjs → acorex-modules-contact-management-contact-method.entity-CIeZtPSy.mjs} +2 -35
- package/fesm2022/acorex-modules-contact-management-contact-method.entity-CIeZtPSy.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-emergency-contact-category.entity-DjOm8qQb.mjs → acorex-modules-contact-management-emergency-contact-category.entity-B2DPfonq.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-emergency-contact-category.entity-DjOm8qQb.mjs.map → acorex-modules-contact-management-emergency-contact-category.entity-B2DPfonq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-emergency-contact.entity-BQyjzPR8.mjs → acorex-modules-contact-management-emergency-contact.entity-CeIealVy.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-emergency-contact.entity-BQyjzPR8.mjs.map → acorex-modules-contact-management-emergency-contact.entity-CeIealVy.mjs.map} +1 -1
- package/fesm2022/acorex-modules-contact-management.mjs +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +823 -14
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +161 -99
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +246 -142
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +516 -50
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DXGX-riG.mjs → acorex-modules-document-management-acorex-modules-document-management-C4G6L94e.mjs} +1132 -191
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C4G6L94e.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-NaY7Mn95.mjs → acorex-modules-document-management-attachment-widget.component-CbDcYxEZ.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-NaY7Mn95.mjs.map → acorex-modules-document-management-attachment-widget.component-CbDcYxEZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-epxEuBU5.mjs → acorex-modules-document-management-create-folder-dialog.component-BCs4aZKn.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-epxEuBU5.mjs.map → acorex-modules-document-management-create-folder-dialog.component-BCs4aZKn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-CMI2Eokj.mjs → acorex-modules-document-management-details-view.component-v1VroVv-.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-details-view.component-CMI2Eokj.mjs.map → acorex-modules-document-management-details-view.component-v1VroVv-.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs +123 -0
- package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-document-signature-popup.component-CK8MX49w.mjs +105 -0
- package/fesm2022/acorex-modules-document-management-document-signature-popup.component-CK8MX49w.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DBKgwm70.mjs → acorex-modules-document-management-drive-choose.component-C5gJtH7_.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DBKgwm70.mjs.map → acorex-modules-document-management-drive-choose.component-C5gJtH7_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-DoGdTL3n.mjs → acorex-modules-document-management-drive.component-D5OwpnAP.mjs} +40 -17
- package/fesm2022/acorex-modules-document-management-drive.component-D5OwpnAP.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BRsTSoln.mjs → acorex-modules-document-management-large-icons-view.component-DkHt-dTD.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BRsTSoln.mjs.map → acorex-modules-document-management-large-icons-view.component-DkHt-dTD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CpYeYyR5.mjs → acorex-modules-document-management-large-tiles-view.component-D2nA00k3.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CpYeYyR5.mjs.map → acorex-modules-document-management-large-tiles-view.component-D2nA00k3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-ZteosW8O.mjs → acorex-modules-document-management-link-dialog.component-DKOod11R.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-ZteosW8O.mjs.map → acorex-modules-document-management-link-dialog.component-DKOod11R.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-C4VFnACA.mjs → acorex-modules-document-management-list-view.component-RaW67V7O.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-list-view.component-C4VFnACA.mjs.map → acorex-modules-document-management-list-view.component-RaW67V7O.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-D5Csi3A3.mjs → acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-OXeS0kW8.mjs → acorex-modules-document-management-meta-selector-widget-column.component-CBAE1KZM.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-OXeS0kW8.mjs.map → acorex-modules-document-management-meta-selector-widget-column.component-CBAE1KZM.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-designer.component-BdVSGb3M.mjs → acorex-modules-document-management-meta-selector-widget-designer.component-B9Eqa6j0.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-designer.component-BdVSGb3M.mjs.map → acorex-modules-document-management-meta-selector-widget-designer.component-B9Eqa6j0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-view.component-B-Vos30P.mjs → acorex-modules-document-management-meta-selector-widget-view.component-BPBqDMwP.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-view.component-B-Vos30P.mjs.map → acorex-modules-document-management-meta-selector-widget-view.component-BPBqDMwP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-Bc7rbWwN.mjs → acorex-modules-document-management-permission-definition.provider-B6nu7fmX.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-Bc7rbWwN.mjs.map → acorex-modules-document-management-permission-definition.provider-B6nu7fmX.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DWUVMrVt.mjs → acorex-modules-document-management-rename-node-dialog.component--6V1Zaoz.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DWUVMrVt.mjs.map → acorex-modules-document-management-rename-node-dialog.component--6V1Zaoz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-CkyuEAwV.mjs → acorex-modules-document-management-share-dialog.component-mBEu2KpG.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-CkyuEAwV.mjs.map → acorex-modules-document-management-share-dialog.component-mBEu2KpG.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-DXjcTOny.mjs → acorex-modules-document-management-share-email-dialog.component-CI4SKdjk.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-DXjcTOny.mjs.map → acorex-modules-document-management-share-email-dialog.component-CI4SKdjk.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-CCirsfoz.mjs → acorex-modules-document-management-small-icons-view.component-Cl1MKsX9.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-CCirsfoz.mjs.map → acorex-modules-document-management-small-icons-view.component-Cl1MKsX9.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-58KZSQC4.mjs → acorex-modules-document-management-small-tiles-view.component-xoO1Loxt.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-58KZSQC4.mjs.map → acorex-modules-document-management-small-tiles-view.component-xoO1Loxt.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-DxSYInAR.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-CeQnu6WW.mjs} +56 -56
- package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-DxSYInAR.mjs.map → acorex-modules-form-template-management-acorex-modules-form-template-management-CeQnu6WW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-category.entity-DeCfvNqF.mjs → acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-category.entity-DeCfvNqF.mjs.map → acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-designer.page-BsjFGFOD.mjs → acorex-modules-form-template-management-designer.page-CarisHH5.mjs} +4 -4
- package/fesm2022/{acorex-modules-form-template-management-designer.page-BsjFGFOD.mjs.map → acorex-modules-form-template-management-designer.page-CarisHH5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CsjgxSgC.mjs → acorex-modules-form-template-management-permission-definition.provider-CfOa446m.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CsjgxSgC.mjs.map → acorex-modules-form-template-management-permission-definition.provider-CfOa446m.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-_BIGyRt8.mjs → acorex-modules-form-template-management-settings.provider-hLlHnm-I.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-_BIGyRt8.mjs.map → acorex-modules-form-template-management-settings.provider-hLlHnm-I.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-BCg756yD.mjs → acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs} +5 -5
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-BCg756yD.mjs.map → acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-DkqRsXMq.mjs → acorex-modules-form-template-management-template-widget-edit.component-D_Ys5kRT.mjs} +5 -5
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-DkqRsXMq.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-D_Ys5kRT.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template.entity-CQm29n5v.mjs → acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-template.entity-CQm29n5v.mjs.map → acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-DW2Z5EcJ.mjs → acorex-modules-form-template-management-viewer-popup.component-CE13nuke.mjs} +5 -5
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-DW2Z5EcJ.mjs.map → acorex-modules-form-template-management-viewer-popup.component-CE13nuke.mjs.map} +1 -1
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/acorex-modules-identifier-management.mjs +512 -0
- package/fesm2022/acorex-modules-identifier-management.mjs.map +1 -0
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-a_wcGVPh.mjs → acorex-modules-issue-management-acorex-modules-issue-management-CTFlKzqy.mjs} +36 -36
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-a_wcGVPh.mjs.map → acorex-modules-issue-management-acorex-modules-issue-management-CTFlKzqy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-CsahsE-E.mjs → acorex-modules-issue-management-capture-screen.component-DDvum8EG.mjs} +5 -5
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-CsahsE-E.mjs.map → acorex-modules-issue-management-capture-screen.component-DDvum8EG.mjs.map} +1 -1
- package/fesm2022/acorex-modules-issue-management.mjs +1 -1
- package/fesm2022/{acorex-modules-locale-management-settings.provider-PKnqTses.mjs → acorex-modules-locale-management-settings.provider-ClVIqYIL.mjs} +2 -2
- package/fesm2022/{acorex-modules-locale-management-settings.provider-PKnqTses.mjs.map → acorex-modules-locale-management-settings.provider-ClVIqYIL.mjs.map} +1 -1
- package/fesm2022/acorex-modules-locale-management.mjs +1974 -1
- package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +56 -43
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +198 -10
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +158 -100
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-item.component-CzIIXsRJ.mjs → acorex-modules-organization-management-add-item.component-DkXcoyHa.mjs} +4 -4
- package/fesm2022/{acorex-modules-organization-management-add-item.component-CzIIXsRJ.mjs.map → acorex-modules-organization-management-add-item.component-DkXcoyHa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-XXAEpYNo.mjs → acorex-modules-organization-management-org-chart-configuration.page-kVFv0xZ0.mjs} +5 -5
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-XXAEpYNo.mjs.map → acorex-modules-organization-management-org-chart-configuration.page-kVFv0xZ0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-CIveMQUH.mjs → acorex-modules-organization-management-org-chart-configuration.service-7I15ZQGa.mjs} +4 -4
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-CIveMQUH.mjs.map → acorex-modules-organization-management-org-chart-configuration.service-7I15ZQGa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-UqJ1VOJ-.mjs → acorex-modules-organization-management-org-chart.page-DuyhYwnh.mjs} +12 -12
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-UqJ1VOJ-.mjs.map → acorex-modules-organization-management-org-chart.page-DuyhYwnh.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management.mjs +265 -122
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-B8X8tXFw.mjs +714 -0
- package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-B8X8tXFw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-contact-source.entity-BsF9p0GK.mjs → acorex-modules-party-management-party-identifier-type.entity-b8aNBCpT.mjs} +238 -136
- package/fesm2022/acorex-modules-party-management-party-identifier-type.entity-b8aNBCpT.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs +470 -0
- package/fesm2022/acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-address-type.entity-DQZwgXki.mjs → acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs} +174 -218
- package/fesm2022/acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-contact-relationship.entity-CqdXpqLN.mjs → acorex-modules-party-management-party-role.entity-C5BeakjX.mjs} +157 -162
- package/fesm2022/acorex-modules-party-management-party-role.entity-C5BeakjX.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management-party.entity-Blwg8o3o.mjs +538 -0
- package/fesm2022/acorex-modules-party-management-party.entity-Blwg8o3o.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management-permission-definition.provider-DwMPgZkB.mjs +59 -0
- package/fesm2022/acorex-modules-party-management-permission-definition.provider-DwMPgZkB.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management.mjs +2 -0
- package/fesm2022/acorex-modules-party-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management-list-terms.component-B1gl5xfT.mjs +93 -0
- package/fesm2022/acorex-modules-platform-management-list-terms.component-B1gl5xfT.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-list-version.component-wqhq6ek4.mjs → acorex-modules-platform-management-list-version.component-DTfLeVbH.mjs} +4 -4
- package/fesm2022/{acorex-modules-platform-management-list-version.component-wqhq6ek4.mjs.map → acorex-modules-platform-management-list-version.component-DTfLeVbH.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +483 -2129
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +43 -43
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-CFNtnshF.mjs → acorex-modules-report-management-report-create-root.component-CPR6H1R1.mjs} +4 -4
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-CFNtnshF.mjs.map → acorex-modules-report-management-report-create-root.component-CPR6H1R1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-CbfJ_7Da.mjs → acorex-modules-report-management-report-runner-root-page.component-BIUto_c9.mjs} +8 -9
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-BIUto_c9.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +279 -35
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-scheduler-job-management.mjs +14 -14
- package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +60 -60
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BhF5x-8D.mjs → acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs} +4 -4
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BhF5x-8D.mjs.map → acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-Do_gNJ2t.mjs → acorex-modules-settings-management-setting-view.component-D5pKY0Ag.mjs} +4 -4
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-Do_gNJ2t.mjs.map → acorex-modules-settings-management-setting-view.component-D5pKY0Ag.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +6 -6
- package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-task-management.mjs +196 -153
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-text-template-management.mjs +24 -24
- package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-training-management.mjs +44 -44
- package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-workflow-management-acorex-modules-workflow-management-DC7jdoqZ.mjs → acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs} +13 -13
- package/fesm2022/{acorex-modules-workflow-management-acorex-modules-workflow-management-DC7jdoqZ.mjs.map → acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-Bv2GAPaN.mjs → acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs} +20 -20
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-Bv2GAPaN.mjs.map → acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs.map} +1 -1
- package/fesm2022/acorex-modules-workflow-management.mjs +1 -1
- package/identifier-management/README.md +269 -0
- package/identifier-management/index.d.ts +271 -0
- package/locale-management/index.d.ts +22 -1
- package/location-management/index.d.ts +4 -1
- package/notification-management/index.d.ts +9 -5
- package/package.json +13 -5
- package/party-management/README.md +177 -0
- package/party-management/index.d.ts +86 -0
- package/platform-management/index.d.ts +2 -140
- package/report-management/index.d.ts +481 -35
- package/task-management/index.d.ts +4 -4
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-Co0tt3cj.mjs +0 -2600
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-Co0tt3cj.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-address-type.entity-DQZwgXki.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-address.entity-CFfRywsB.mjs +0 -781
- package/fesm2022/acorex-modules-contact-management-contact-address.entity-CFfRywsB.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-method.entity-Ci93_mb9.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-relationship.entity-CqdXpqLN.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-source.entity-BsF9p0GK.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-DXGX-riG.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-DoGdTL3n.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-D5Csi3A3.mjs.map +0 -1
- package/fesm2022/acorex-modules-locale-management-acorex-modules-locale-management-CfaOC6U5.mjs +0 -1975
- package/fesm2022/acorex-modules-locale-management-acorex-modules-locale-management-CfaOC6U5.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CbfJ_7Da.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-document-management-drive.component-DoGdTL3n.mjs","sources":["../tmp-esm2022/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.js","../tmp-esm2022/document-management/lib/features/drive/drive.component.js"],"sourcesContent":["import { Component, inject, ViewEncapsulation } from \"@angular/core\";\nimport { AXPDocumentExplorerViewModel } from \"../../document-explorer.viewmodel\";\nimport { AXDecoratorModule } from \"@acorex/components/decorators\";\nimport { AXFormatModule } from \"@acorex/core/format\";\nimport { CommonModule } from \"@angular/common\";\nimport { AXButtonModule } from \"@acorex/components/button\";\nimport { AXTranslationModule } from \"@acorex/core/translation\";\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/core/translation\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@acorex/core/format\";\nexport class AXMDocumentExplorerDetailPanelComponent {\n constructor() {\n this.vm = inject(AXPDocumentExplorerViewModel);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: AXMDocumentExplorerDetailPanelComponent, isStandalone: true, selector: \"axm-document-explorer-detail-panel\", ngImport: i0, template: \"<!-- Multiple Selected -->\\n@if(vm.hasMultipleSelectedItems()) {\\n<div class=\\\"__header\\\" *translate=\\\"let t\\\">\\n <div class=\\\"__title\\\">\\n <i class=\\\"fa-fw fa-lg fa-solid\\\"></i>\\n <span> {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}</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<div class=\\\"__content\\\"></div>\\n}\\n<!-- Single Selected -->\\n@else {\\n<!-- Info -->\\n@let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\\n<div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <i class=\\\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\\\"></i>\\n <span>{{ nodeInfo.name }}</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<div class=\\\"__content\\\">\\n @for(section of nodeInfo.sections; track section.title) {\\n <div class=\\\"__section\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ section.title }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @for(detail of section.details; track detail.title) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ detail.title }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @if(detail.format) {\\n <span>{{ detail.content | format : detail.format | async }}</span>\\n } @else {\\n <span>{{ detail.content ?? '---' }}</span>\\n }\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n }\\n</div>\\n}\\n\", styles: [\"axm-document-explorer-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-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-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-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i3.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i5.AXFormatPipe, name: \"format\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-document-explorer-detail-panel', standalone: true, encapsulation: ViewEncapsulation.None, imports: [\n CommonModule,\n AXDecoratorModule,\n AXFormatModule,\n AXButtonModule,\n AXTranslationModule\n ], template: \"<!-- Multiple Selected -->\\n@if(vm.hasMultipleSelectedItems()) {\\n<div class=\\\"__header\\\" *translate=\\\"let t\\\">\\n <div class=\\\"__title\\\">\\n <i class=\\\"fa-fw fa-lg fa-solid\\\"></i>\\n <span> {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}</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<div class=\\\"__content\\\"></div>\\n}\\n<!-- Single Selected -->\\n@else {\\n<!-- Info -->\\n@let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\\n<div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <i class=\\\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\\\"></i>\\n <span>{{ nodeInfo.name }}</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<div class=\\\"__content\\\">\\n @for(section of nodeInfo.sections; track section.title) {\\n <div class=\\\"__section\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ section.title }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @for(detail of section.details; track detail.title) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ detail.title }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @if(detail.format) {\\n <span>{{ detail.content | format : detail.format | async }}</span>\\n } @else {\\n <span>{{ detail.content ?? '---' }}</span>\\n }\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n }\\n</div>\\n}\\n\", styles: [\"axm-document-explorer-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-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-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-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kb2N1bWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvZG9jdW1lbnQtZXhwbG9yZXIvdmlld3MvZGV0YWlsLXBhbmVsL2RldGFpbC1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZG9jdW1lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2RvY3VtZW50LWV4cGxvcmVyL3ZpZXdzL2RldGFpbC1wYW5lbC9kZXRhaWwtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFnQi9ELE1BQU0sT0FBTyx1Q0FBdUM7SUFkcEQ7UUFlYyxPQUFFLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7S0FDdkQ7OEdBRlksdUNBQXVDO2tHQUF2Qyx1Q0FBdUMsOEZDdEJwRCxxcURBb0RBLDJ0RURyQ1EsWUFBWSw4QkFDWixpQkFBaUIsK0hBQ2pCLGNBQWMsOEJBQ2QsY0FBYyw2WEFDZCxtQkFBbUI7OzJGQUdkLHVDQUF1QztrQkFkbkQsU0FBUzsrQkFDSSxvQ0FBb0MsY0FHbEMsSUFBSSxpQkFDRCxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNMLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsbUJBQW1CO3FCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFBEb2N1bWVudEV4cGxvcmVyVmlld01vZGVsIH0gZnJvbSBcIi4uLy4uL2RvY3VtZW50LWV4cGxvcmVyLnZpZXdtb2RlbFwiO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tIFwiQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IEFYRm9ybWF0TW9kdWxlIH0gZnJvbSBcIkBhY29yZXgvY29yZS9mb3JtYXRcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSBcIkBhY29yZXgvY29tcG9uZW50cy9idXR0b25cIjtcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tIFwiQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXhtLWRvY3VtZW50LWV4cGxvcmVyLWRldGFpbC1wYW5lbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RldGFpbC1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGV0YWlsLXBhbmVsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICAgICAgQVhGb3JtYXRNb2R1bGUsXG4gICAgICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgICAgICBBWFRyYW5zbGF0aW9uTW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBWE1Eb2N1bWVudEV4cGxvcmVyRGV0YWlsUGFuZWxDb21wb25lbnQge1xuICAgIHByb3RlY3RlZCB2bSA9IGluamVjdChBWFBEb2N1bWVudEV4cGxvcmVyVmlld01vZGVsKTtcbn1cbiIsIjwhLS0gIE11bHRpcGxlIFNlbGVjdGVkICAtLT5cbkBpZih2bS5oYXNNdWx0aXBsZVNlbGVjdGVkSXRlbXMoKSkge1xuPGRpdiBjbGFzcz1cIl9faGVhZGVyXCIgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgPGkgY2xhc3M9XCJmYS1mdyBmYS1sZyBmYS1zb2xpZFwiPjwvaT5cbiAgICA8c3Bhbj4ge3sgdm0uc2VsZWN0ZWRDb3VudCgpIH19IHt7IHQoJ2l0ZW1zU2VsZWN0ZWQnLCB7IHNjb3BlOiAnY29tbW9uJyB9KSB8IGFzeW5jIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGF4LWJ1dHRvbiBbbG9va109XCInYmxhbmsnXCIgY2xhc3M9XCJheC1zbSBheC1yb3VuZGVkLWZ1bGxcIiAob25DbGljayk9XCJ2bS5jbG9zZURldGFpbFBhbmVsKClcIj5cbiAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEteG1hcmtcIj48L2F4LWljb24+XG4gIDwvYXgtYnV0dG9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+PC9kaXY+XG59XG48IS0tIFNpbmdsZSBTZWxlY3RlZCAtLT5cbkBlbHNlIHtcbjwhLS0gSW5mbyAtLT5cbkBsZXQgbm9kZUluZm8gPSB2bS5nZXROb2RlSW5mbygodm0uc2VsZWN0ZWROb2RlKCkgPz8gdm0uY3VycmVudEZvbGRlcigpKSEpO1xuPGRpdiBjbGFzcz1cIl9faGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgPGkgY2xhc3M9XCJmYS1mdyBmYS1sZyB7eyBub2RlSW5mby5pY29uIH19IGZhLXNvbGlkXCI+PC9pPlxuICAgIDxzcGFuPnt7IG5vZGVJbmZvLm5hbWUgfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8YXgtYnV0dG9uIFtsb29rXT1cIidibGFuaydcIiBjbGFzcz1cImF4LXNtIGF4LXJvdW5kZWQtZnVsbFwiIChvbkNsaWNrKT1cInZtLmNsb3NlRGV0YWlsUGFuZWwoKVwiPlxuICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS14bWFya1wiPjwvYXgtaWNvbj5cbiAgPC9heC1idXR0b24+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj5cbiAgQGZvcihzZWN0aW9uIG9mIG5vZGVJbmZvLnNlY3Rpb25zOyB0cmFjayBzZWN0aW9uLnRpdGxlKSB7XG4gIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgPHNwYW4+e3sgc2VjdGlvbi50aXRsZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgICBAZm9yKGRldGFpbCBvZiBzZWN0aW9uLmRldGFpbHM7IHRyYWNrIGRldGFpbC50aXRsZSkge1xuICAgICAgPGRpdiBjbGFzcz1cIl9fcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgICAgPHNwYW4+e3sgZGV0YWlsLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPlxuICAgICAgICAgIEBpZihkZXRhaWwuZm9ybWF0KSB7XG4gICAgICAgICAgPHNwYW4+e3sgZGV0YWlsLmNvbnRlbnQgfCBmb3JtYXQgOiBkZXRhaWwuZm9ybWF0IHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHNwYW4+e3sgZGV0YWlsLmNvbnRlbnQgPz8gJy0tLScgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG59XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, HostListener, inject, signal, untracked, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFileModule } from '@acorex/core/file';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPFileTypeProviderService } from '@acorex/platform/common';\nimport { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { resolvePlatformScopeKey, resolvePlatformScopeName, } from '@acorex/platform/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { RootConfig } from '../../const';\nimport { AXMDocumentExplorerComponent, AXPDocumentExplorerViewModel } from '../document-explorer';\nimport { AXMDocumentExplorerDetailPanelComponent } from '../document-explorer/views/detail-panel/detail-panel.component';\nimport { AXMDocumentManagerService, AXMFolderPathBreadcrumbsComponent } from '../shared';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/dropdown\";\nimport * as i3 from \"@acorex/core/translation\";\nimport * as i4 from \"@acorex/components/decorators\";\nimport * as i5 from \"@acorex/components/search-box\";\nimport * as i6 from \"@angular/common\";\nexport class AXMDocumentDriveComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n //#region ---------------- Services & Dependencies ----------------\n this.rootConfig = RootConfig;\n this.fileTypeService = inject(AXPFileTypeProviderService);\n this.driveService = inject(AXMDocumentManagerService);\n this.vm = inject(AXPDocumentExplorerViewModel);\n this.router = inject(Router);\n this.activatedRoute = inject(ActivatedRoute);\n //#endregion\n //#region ---------------- View Properties ----------------\n this.filterItems = signal([], ...(ngDevMode ? [{ debugName: \"filterItems\" }] : []));\n this.selectedFilter = signal('all', ...(ngDevMode ? [{ debugName: \"selectedFilter\" }] : []));\n this.searchQuery = '';\n this.sortItems = signal([\n { key: 'name', textKey: 'actions.sort-by-name', icon: 'fa-light fa-font' },\n { key: 'modified', textKey: 'actions.sort-by-date', icon: 'fa-light fa-calendar' },\n { key: 'size', textKey: 'actions.sort-by-size', icon: 'fa-light fa-weight-hanging' },\n ], ...(ngDevMode ? [{ debugName: \"sortItems\" }] : []));\n this.viewsItems = signal([\n { key: 'large-icons', icon: 'fa-light fa-grid' },\n { key: 'small-icons', icon: 'fa-light fa-grid', break: true },\n { key: 'large-tiles', icon: 'fa-grid-2' },\n { key: 'small-tiles', icon: 'fa-grid-2', break: true },\n { key: 'details', icon: 'fa-bars', break: true },\n { key: 'list', icon: 'fa-list' },\n ], ...(ngDevMode ? [{ debugName: \"viewsItems\" }] : []));\n this.selectedViewMode = computed(() => this.viewsItems().find((item) => item.key === this.vm.viewMode()) || this.viewsItems()[0], ...(ngDevMode ? [{ debugName: \"selectedViewMode\" }] : []));\n this.selectionMode = signal('single', ...(ngDevMode ? [{ debugName: \"selectionMode\" }] : []));\n this.documentExplorer = viewChild(AXMDocumentExplorerComponent, ...(ngDevMode ? [{ debugName: \"documentExplorer\" }] : []));\n //#endregion\n //#region ---------------- Computed Properties ----------------\n this.selectedSort = computed(() => {\n const items = this.sortItems();\n return items.find((item) => item.key === this.vm.sortField()) || items[0];\n }, ...(ngDevMode ? [{ debugName: \"selectedSort\" }] : []));\n //#endregion\n //#region ---------------- Effects ----------------\n this.#navigateEffect = effect(() => {\n const navigatingFolderId = this.vm.navigatingFolderId();\n if (navigatingFolderId) {\n this.handleNavigateToFolder(navigatingFolderId);\n }\n }, ...(ngDevMode ? [{ debugName: \"#navigateEffect\" }] : []));\n this.#loadingEffect = effect(() => {\n const isLoading = this.vm.isLoading();\n untracked(() => {\n this.layoutService.setNavigationLoading(isLoading);\n });\n }, ...(ngDevMode ? [{ debugName: \"#loadingEffect\" }] : []));\n }\n //#endregion\n //#region ---------------- Effects ----------------\n #navigateEffect;\n #loadingEffect;\n //#endregion\n //#region ---------------- Lifecycle Hooks ----------------\n async ngOnInit() {\n super.ngOnInit();\n await this.loadFilterItems();\n const snapshot = this.activatedRoute.snapshot;\n const routerScope = resolvePlatformScopeKey(snapshot.parent?.paramMap.get('scope')?.trim()?.toLowerCase());\n await this.vm.initialize({ browseMode: 'file', scope: routerScope });\n this.activatedRoute.paramMap.subscribe(async () => {\n this.loadDrive();\n });\n }\n //#endregion\n //#region ---------------- Event Handlers ----------------\n async handleSearchChange(event) {\n if (event.value == null) {\n return;\n }\n if (event.value?.length > 0) {\n const result = await this.driveService.searchNodes(event.value, this.vm.scope(), {\n tenantId: this.sessionService.tenant?.id,\n userId: this.sessionService.user?.id,\n folderId: this.vm.currentNode()?.id,\n });\n this.vm.virtualFolder(result, {\n name: 'Search Result',\n parentId: this.vm.currentNode()?.id == 'virtual'\n ? (this.vm.currentNode()?.parentId ?? undefined)\n : this.vm.currentNode()?.id,\n });\n }\n else {\n this.vm.navigateToUp();\n }\n }\n handleCtrlKey(e) {\n this.selectionMode.set('multiple');\n }\n handleCtrlKeyUp(e) {\n this.selectionMode.set('single');\n }\n handleNavigateToFolder(folderId) {\n this.router.navigate([\n `${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}/${folderId}`,\n ]);\n setTimeout(() => {\n this.searchQuery = null;\n }, 200);\n }\n //#endregion\n //#region ---------------- Data Loading Methods ----------------\n async loadDrive() {\n const folderId = this.activatedRoute.snapshot.paramMap.get('id');\n if (folderId) {\n await this.vm.loadFolderContents(folderId);\n }\n else {\n // TODO: get root from tenant or user by scope\n const root = await this.driveService.getRoot(this.vm.scope(), {\n tenantId: this.sessionService.tenant?.id,\n userId: this.sessionService.user?.id,\n });\n if (root.result) {\n await this.router.navigate([\n `${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}/${root.result.id}`,\n ], {\n replaceUrl: true,\n });\n }\n }\n //\n this.recompute();\n }\n async loadFilterItems() {\n const types = await this.fileTypeService.items();\n const items = [\n { key: 'all', textKey: 'file-types.all', icon: 'fa-light fa-folder-closed' },\n ...types.map((type) => ({\n key: type.name,\n textKey: `file-types.${type.name}`,\n icon: type.icon || 'fa-light fa-file',\n })),\n ];\n this.filterItems.set(items);\n }\n //#endregion\n //#region ---------------- Filter Methods ----------------\n setFilter(key) {\n this.selectedFilter.set(key);\n }\n getFilterIcon() {\n if (this.selectedFilter() === 'all') {\n return 'fa-light fa-folder-closed';\n }\n const item = this.filterItems().find((item) => item.key === this.selectedFilter());\n return item?.icon || 'fa-light fa-file';\n }\n getFilterText() {\n if (this.selectedFilter() === 'all') {\n return 'file-types.all';\n }\n const item = this.filterItems().find((item) => item.key === this.selectedFilter());\n return item?.textKey || 'file-types.all';\n }\n //#endregion\n //#region ---------------- Page Configuration Overrides ----------------\n async getPrimaryMenuItems() {\n if (this.vm.hasMultipleSelectedItems()) {\n return [\n {\n name: 'deleteItems',\n title: 't(\"deleteItems\")',\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n },\n ];\n }\n const addItemItems = await this.vm.getFolderAddMenuItems();\n addItemItems[addItemItems.length - 1].break = false;\n return [\n {\n title: 't(\"add-item\")',\n icon: 'fa-light fa-plus',\n color: 'primary',\n items: addItemItems,\n },\n ];\n }\n async getSecondaryMenuItems() {\n if (this.vm.hasMultipleSelectedItems()) {\n return [\n {\n name: 'delete',\n title: 't(\"delete\")',\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n },\n ];\n }\n return this.vm.getFolderActionMenuItems();\n }\n async getPageTitle() {\n if (this.vm.isRoot()) {\n return this.translateService.translateAsync(`scope.${resolvePlatformScopeName(this.vm.scope())}.title`, { scope: this.rootConfig.config.i18n });\n }\n return this.vm.currentFolder()?.name || '';\n }\n async getPageDescription() {\n const count = await this.vm.itemsCount();\n const size = await this.vm.availableSpace();\n const formattedSize = await this.formatService.format(size, 'filesize');\n return this.translateService.translateAsync(`scope.${resolvePlatformScopeName(this.vm.scope())}.description`, {\n scope: this.rootConfig.config.i18n,\n params: {\n count,\n size: formattedSize,\n },\n });\n }\n getBackButton() {\n if (this.vm.isUpAvailable() && this.vm.currentPath().length > 1) {\n return {\n title: this.vm.currentPath()[this.vm.currentPath().length - 2].name,\n };\n }\n return null;\n }\n onBackButtonClick() {\n if (this.vm.isUpAvailable()) {\n this.vm.navigateToUp();\n }\n }\n async getPageBreadcrumbs() {\n return [\n {\n title: await this.translateService.translateAsync(`scope.${resolvePlatformScopeName(this.vm.scope())}.title`, { scope: this.rootConfig.config.i18n }),\n },\n ];\n }\n async execute(command) {\n const folderId = command.options?.['folderId'];\n switch (command.name) {\n case 'new-folder':\n if (folderId) {\n await this.driveService.showCreateFolderDialog(folderId);\n this.vm.refresh();\n }\n break;\n case 'open-gallery':\n if (folderId) {\n await this.driveService.showFileViewerPopup(this.vm.currentFolder().children[0]);\n }\n break;\n default:\n if (command.name.startsWith('upload.')) {\n await this.driveService.uploadFileByType(folderId, command.options?.['documentType']?.id);\n this.vm.refresh();\n }\n break;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AXMDocumentDriveComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: AXMDocumentDriveComponent, isStandalone: true, selector: \"axp-document-drive\", host: { listeners: { \"document:keydown.control\": \"handleCtrlKey($event)\", \"document:keyup.control\": \"handleCtrlKeyUp($event)\" } }, providers: [\n AXPDocumentExplorerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMDocumentDriveComponent,\n },\n ], viewQueries: [{ propertyName: \"documentExplorer\", first: true, predicate: AXMDocumentExplorerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<!-- Main Layout -->\\n<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-toolbar>\\n <!-- Left Side Toolbar -->\\n <axp-layout-prefix>\\n @if(vm.hasMultipleSelectedItems() ) {\\n <div class=\\\"ax-flex ax-gap-3 ax-items-center ax-h-10\\\">\\n <span class=\\\"ax-text-xl ax-font-bold\\\">\\n {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}\\n </span>\\n <span (click)=\\\"vm.deselectAll()\\\" class=\\\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\\\">{{\\n t('unselect', { scope: 'common' }) | async\\n }}</span>\\n </div>\\n }\\n <!---------->\\n @else {\\n <!-- Filter Dropdown -->\\n <ax-button [text]=\\\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"getFilterIcon()\\\"></ax-icon>\\n </ax-prefix>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list class=\\\"ax-p-2\\\">\\n @for(item of filterItems(); track item.key) {\\n <ax-button-item\\n (onClick)=\\\"setFilter(item.key)\\\"\\n [text]=\\\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n <!-- Search Box -->\\n <ax-search-box\\n [(value)]=\\\"searchQuery\\\"\\n (onValueChanged)=\\\"handleSearchChange($event)\\\"\\n class=\\\"ax-w-72 ax-hidden md:ax-flex\\\"\\n [placeholder]=\\\"t('actions.search', { scope: rootConfig.config.i18n }) | async\\\"\\n ><ax-clear-button></ax-clear-button\\n ></ax-search-box>\\n }\\n </axp-layout-prefix>\\n\\n <!-- Right Side Toolbar -->\\n <axp-layout-suffix>\\n <!-- Sort Dropdown -->\\n <ax-button>\\n <ax-icon\\n [icon]=\\\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\\\"\\n ></ax-icon>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <!-- Sort By Options -->\\n @for(item of sortItems(); track item.key) {\\n <ax-button-item\\n [text]=\\\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\\\"\\n (onClick)=\\\"vm.setSortField(item.key)\\\"\\n [selected]=\\\"vm.sortField() === item.key\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n <ax-divider></ax-divider>\\n <!-- Sort Direction Options -->\\n <ax-button-item\\n [text]=\\\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.sortDirection() === 'asc'\\\"\\n (onClick)=\\\"vm.setSortDirection('asc')\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-arrow-up-wide-short\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item\\n [text]=\\\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.sortDirection() === 'desc'\\\"\\n (onClick)=\\\"vm.setSortDirection('desc')\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-arrow-down-wide-short\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n <!-- View Mode Toggle -->\\n <ax-button>\\n <ax-icon icon=\\\"fa-light {{ selectedViewMode().icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n @for(item of viewsItems(); track item.key) {\\n <!-- view mode items -->\\n <ax-button-item\\n [text]=\\\"(t('view-modes.' + item.key, { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.isViewMode(item.key)\\\"\\n (onClick)=\\\"vm.setViewMode(item.key)\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light {{ item.icon }}\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n @if(item.break) {\\n <ax-divider></ax-divider>\\n }\\n <!-- end of view mode items -->\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n @if(layoutService.isLarge()) {\\n <!-- Detail Panel Toggle -->\\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\\n <!-- Content Section -->\\n <axp-page-content class=\\\"ax-overflow-auto ax-flex ax-flex-row ax-gap-4\\\">\\n <axm-document-explorer [selectionMode]=\\\"selectionMode()\\\"></axm-document-explorer>\\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\\n <axm-document-explorer-detail-panel class=\\\"ax-sticky ax-top-0 ax-z-50\\\"></axm-document-explorer-detail-panel>\\n }\\n </axp-page-content>\\n\\n <!-- Footer Section -->\\n @if(!layoutService.isSmall()) {\\n <axp-page-footer>\\n <axp-layout-prefix>\\n <axm-folder-path-breadcrumbs></axm-folder-path-breadcrumbs>\\n </axp-layout-prefix>\\n </axp-page-footer>\\n }\\n</axp-page-layout>\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: \n //\n AXMenuModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.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: i1.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i1.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXButtonGroupModule }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i2.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i3.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i4.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i4.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i4.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: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i5.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"ngmodule\", type: AXFileModule }, { kind: \"ngmodule\", type: AXDateTimeModule }, { kind: \"component\", type: \n //\n AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: \n //\n AXMDocumentExplorerComponent, selector: \"axm-document-explorer\", inputs: [\"browseMode\", \"viewMode\", \"selectionMode\", \"showContextMenu\"] }, { kind: \"component\", type: AXMFolderPathBreadcrumbsComponent, selector: \"axm-folder-path-breadcrumbs\" }, { kind: \"component\", type: AXMDocumentExplorerDetailPanelComponent, selector: \"axm-document-explorer-detail-panel\" }, { kind: \"pipe\", type: i6.AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AXMDocumentDriveComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-document-drive', standalone: true, imports: [\n CommonModule,\n RouterModule,\n //\n AXMenuModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n AXSearchBoxModule,\n AXFormatModule,\n AXFileModule,\n AXDateTimeModule,\n //\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n //\n AXMDocumentExplorerComponent,\n AXMFolderPathBreadcrumbsComponent,\n AXMDocumentExplorerDetailPanelComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n AXPDocumentExplorerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMDocumentDriveComponent,\n },\n ], template: \"<!-- Main Layout -->\\n<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-toolbar>\\n <!-- Left Side Toolbar -->\\n <axp-layout-prefix>\\n @if(vm.hasMultipleSelectedItems() ) {\\n <div class=\\\"ax-flex ax-gap-3 ax-items-center ax-h-10\\\">\\n <span class=\\\"ax-text-xl ax-font-bold\\\">\\n {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}\\n </span>\\n <span (click)=\\\"vm.deselectAll()\\\" class=\\\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\\\">{{\\n t('unselect', { scope: 'common' }) | async\\n }}</span>\\n </div>\\n }\\n <!---------->\\n @else {\\n <!-- Filter Dropdown -->\\n <ax-button [text]=\\\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"getFilterIcon()\\\"></ax-icon>\\n </ax-prefix>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list class=\\\"ax-p-2\\\">\\n @for(item of filterItems(); track item.key) {\\n <ax-button-item\\n (onClick)=\\\"setFilter(item.key)\\\"\\n [text]=\\\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n <!-- Search Box -->\\n <ax-search-box\\n [(value)]=\\\"searchQuery\\\"\\n (onValueChanged)=\\\"handleSearchChange($event)\\\"\\n class=\\\"ax-w-72 ax-hidden md:ax-flex\\\"\\n [placeholder]=\\\"t('actions.search', { scope: rootConfig.config.i18n }) | async\\\"\\n ><ax-clear-button></ax-clear-button\\n ></ax-search-box>\\n }\\n </axp-layout-prefix>\\n\\n <!-- Right Side Toolbar -->\\n <axp-layout-suffix>\\n <!-- Sort Dropdown -->\\n <ax-button>\\n <ax-icon\\n [icon]=\\\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\\\"\\n ></ax-icon>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <!-- Sort By Options -->\\n @for(item of sortItems(); track item.key) {\\n <ax-button-item\\n [text]=\\\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\\\"\\n (onClick)=\\\"vm.setSortField(item.key)\\\"\\n [selected]=\\\"vm.sortField() === item.key\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n <ax-divider></ax-divider>\\n <!-- Sort Direction Options -->\\n <ax-button-item\\n [text]=\\\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.sortDirection() === 'asc'\\\"\\n (onClick)=\\\"vm.setSortDirection('asc')\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-arrow-up-wide-short\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item\\n [text]=\\\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.sortDirection() === 'desc'\\\"\\n (onClick)=\\\"vm.setSortDirection('desc')\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-arrow-down-wide-short\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n <!-- View Mode Toggle -->\\n <ax-button>\\n <ax-icon icon=\\\"fa-light {{ selectedViewMode().icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n @for(item of viewsItems(); track item.key) {\\n <!-- view mode items -->\\n <ax-button-item\\n [text]=\\\"(t('view-modes.' + item.key, { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.isViewMode(item.key)\\\"\\n (onClick)=\\\"vm.setViewMode(item.key)\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light {{ item.icon }}\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n @if(item.break) {\\n <ax-divider></ax-divider>\\n }\\n <!-- end of view mode items -->\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n @if(layoutService.isLarge()) {\\n <!-- Detail Panel Toggle -->\\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\\n <!-- Content Section -->\\n <axp-page-content class=\\\"ax-overflow-auto ax-flex ax-flex-row ax-gap-4\\\">\\n <axm-document-explorer [selectionMode]=\\\"selectionMode()\\\"></axm-document-explorer>\\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\\n <axm-document-explorer-detail-panel class=\\\"ax-sticky ax-top-0 ax-z-50\\\"></axm-document-explorer-detail-panel>\\n }\\n </axp-page-content>\\n\\n <!-- Footer Section -->\\n @if(!layoutService.isSmall()) {\\n <axp-page-footer>\\n <axp-layout-prefix>\\n <axm-folder-path-breadcrumbs></axm-folder-path-breadcrumbs>\\n </axp-layout-prefix>\\n </axp-page-footer>\\n }\\n</axp-page-layout>\\n\" }]\n }], propDecorators: { handleCtrlKey: [{\n type: HostListener,\n args: ['document:keydown.control', ['$event']]\n }], handleCtrlKeyUp: [{\n type: HostListener,\n args: ['document:keyup.control', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpdmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2RvY3VtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9kcml2ZS9kcml2ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZG9jdW1lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2RyaXZlL2RyaXZlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBRU4sTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUs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NEIsMElBQzVCLGlDQUFpQyx3RUFDakMsdUNBQXVDOzsyRkFZOUIseUJBQXlCO2tCQXpDckMsU0FBUzsrQkFDRSxvQkFBb0IsY0FHbEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixFQUFFO3dCQUNGLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixFQUFFO3dCQUNGLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3dCQUM1QixFQUFFO3dCQUNGLDRCQUE0Qjt3QkFDNUIsaUNBQWlDO3dCQUNqQyx1Q0FBdUM7cUJBQ3hDLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNULDRCQUE0Qjt3QkFDNUI7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVywyQkFBMkI7eUJBQ3ZDO3FCQUNGOzhCQWdIRCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsMEJBQTBCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXBELGVBQWU7c0JBRGQsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgT25Jbml0LFxuICBzaWduYWwsXG4gIHVudHJhY2tlZCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhCcmVhZGNydW1ic01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9icmVhZGNydW1icyc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhCdXR0b25Hcm91cE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24tZ3JvdXAnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYTWVudU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9tZW51JztcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhEYXRlVGltZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQVhGaWxlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2ZpbGUnO1xuaW1wb3J0IHsgQVhGb3JtYXRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQRmlsZVR5cGVQcm92aWRlclNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZSwgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5cbmltcG9ydCB7IEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgQVhQQWN0aW9uTWVudUl0ZW0sXG4gIEFYUEJhY2tCdXR0b24sXG4gIEFYUEJyZWFkY3J1bWJJdGVtLFxuICBBWFBFeGVjdXRlQ29tbWFuZCxcbiAgQVhQUGxhdGZvcm1TY29wZSxcbiAgcmVzb2x2ZVBsYXRmb3JtU2NvcGVLZXksXG4gIHJlc29sdmVQbGF0Zm9ybVNjb3BlTmFtZSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNRG9jdW1lbnRFeHBsb3JlckNvbXBvbmVudCwgQVhQRG9jdW1lbnRFeHBsb3JlclZpZXdNb2RlbCB9IGZyb20gJy4uL2RvY3VtZW50LWV4cGxvcmVyJztcbmltcG9ydCB7IEFYTURvY3VtZW50RXhwbG9yZXJEZXRhaWxQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uL2RvY3VtZW50LWV4cGxvcmVyL3ZpZXdzL2RldGFpbC1wYW5lbC9kZXRhaWwtcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEFYTURvY3VtZW50TWFuYWdlclNlcnZpY2UsIEFYTUZvbGRlclBhdGhCcmVhZGNydW1ic0NvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBBWE1Eb2N1bWVudFNlbGVjdGlvbk1vZGUgfSBmcm9tICcuLi9zaGFyZWQvZG9jdW1lbnQtbWFuYWdlci50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1kb2N1bWVudC1kcml2ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcml2ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RyaXZlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIC8vXG4gICAgQVhNZW51TW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYQnV0dG9uR3JvdXBNb2R1bGUsXG4gICAgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYQnJlYWRjcnVtYnNNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWFNlYXJjaEJveE1vZHVsZSxcbiAgICBBWEZvcm1hdE1vZHVsZSxcbiAgICBBWEZpbGVNb2R1bGUsXG4gICAgQVhEYXRlVGltZU1vZHVsZSxcbiAgICAvL1xuICAgIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgICAvL1xuICAgIEFYTURvY3VtZW50RXhwbG9yZXJDb21wb25lbnQsXG4gICAgQVhNRm9sZGVyUGF0aEJyZWFkY3J1bWJzQ29tcG9uZW50LFxuICAgIEFYTURvY3VtZW50RXhwbG9yZXJEZXRhaWxQYW5lbENvbXBvbmVudCxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIEFYUERvY3VtZW50RXhwbG9yZXJWaWV3TW9kZWwsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQUGFnZUxheW91dEJhc2UsXG4gICAgICB1c2VFeGlzdGluZzogQVhNRG9jdW1lbnREcml2ZUNvbXBvbmVudCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Eb2N1bWVudERyaXZlQ29tcG9uZW50IGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyNyZWdpb24gLS0tLS0tLS0tLS0tLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByb3RlY3RlZCByZWFkb25seSByb290Q29uZmlnID0gUm9vdENvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlVHlwZVNlcnZpY2UgPSBpbmplY3QoQVhQRmlsZVR5cGVQcm92aWRlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRyaXZlU2VydmljZSA9IGluamVjdChBWE1Eb2N1bWVudE1hbmFnZXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYUERvY3VtZW50RXhwbG9yZXJWaWV3TW9kZWwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByb3RlY3RlZCByZWFkb25seSBhY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0tLS0tLS0tLS0tLS0gICBWaWV3IFByb3BlcnRpZXMgICAtLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlckl0ZW1zID0gc2lnbmFsPEFycmF5PHsga2V5OiBzdHJpbmc7IHRleHRLZXk6IHN0cmluZzsgaWNvbjogc3RyaW5nIH0+PihbXSk7XG4gIHB1YmxpYyBzZWxlY3RlZEZpbHRlciA9IHNpZ25hbDxzdHJpbmc+KCdhbGwnKTtcblxuICBwcm90ZWN0ZWQgc2VhcmNoUXVlcnk6IHN0cmluZyB8IG51bGwgPSAnJztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc29ydEl0ZW1zID0gc2lnbmFsKFtcbiAgICB7IGtleTogJ25hbWUnLCB0ZXh0S2V5OiAnYWN0aW9ucy5zb3J0LWJ5LW5hbWUnLCBpY29uOiAnZmEtbGlnaHQgZmEtZm9udCcgfSxcbiAgICB7IGtleTogJ21vZGlmaWVkJywgdGV4dEtleTogJ2FjdGlvbnMuc29ydC1ieS1kYXRlJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNhbGVuZGFyJyB9LFxuICAgIHsga2V5OiAnc2l6ZScsIHRleHRLZXk6ICdhY3Rpb25zLnNvcnQtYnktc2l6ZScsIGljb246ICdmYS1saWdodCBmYS13ZWlnaHQtaGFuZ2luZycgfSxcbiAgXSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpZXdzSXRlbXMgPSBzaWduYWwoW1xuICAgIHsga2V5OiAnbGFyZ2UtaWNvbnMnLCBpY29uOiAnZmEtbGlnaHQgZmEtZ3JpZCcgfSxcbiAgICB7IGtleTogJ3NtYWxsLWljb25zJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWdyaWQnLCBicmVhazogdHJ1ZSB9LFxuICAgIHsga2V5OiAnbGFyZ2UtdGlsZXMnLCBpY29uOiAnZmEtZ3JpZC0yJyB9LFxuICAgIHsga2V5OiAnc21hbGwtdGlsZXMnLCBpY29uOiAnZmEtZ3JpZC0yJywgYnJlYWs6IHRydWUgfSxcbiAgICB7IGtleTogJ2RldGFpbHMnLCBpY29uOiAnZmEtYmFycycsIGJyZWFrOiB0cnVlIH0sXG4gICAgeyBrZXk6ICdsaXN0JywgaWNvbjogJ2ZhLWxpc3QnIH0sXG4gIF0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFZpZXdNb2RlID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy52aWV3c0l0ZW1zKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5rZXkgPT09IHRoaXMudm0udmlld01vZGUoKSkgfHwgdGhpcy52aWV3c0l0ZW1zKClbMF0sXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3Rpb25Nb2RlID0gc2lnbmFsPEFYTURvY3VtZW50U2VsZWN0aW9uTW9kZT4oJ3NpbmdsZScpO1xuICBwcm90ZWN0ZWQgZG9jdW1lbnRFeHBsb3JlciA9IHZpZXdDaGlsZChBWE1Eb2N1bWVudEV4cGxvcmVyQ29tcG9uZW50KTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLS0tLS0tLS0tLS0tLSAgIENvbXB1dGVkIFByb3BlcnRpZXMgICAtLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkU29ydCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuc29ydEl0ZW1zKCk7XG4gICAgcmV0dXJuIGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0ua2V5ID09PSB0aGlzLnZtLnNvcnRGaWVsZCgpKSB8fCBpdGVtc1swXTtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0tLS0tLS0tLS0tLS0gICBFZmZlY3RzICAgLS0tLS0tLS0tLS0tLS0tLVxuXG4gICNuYXZpZ2F0ZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmF2aWdhdGluZ0ZvbGRlcklkID0gdGhpcy52bS5uYXZpZ2F0aW5nRm9sZGVySWQoKTtcbiAgICBpZiAobmF2aWdhdGluZ0ZvbGRlcklkKSB7XG4gICAgICB0aGlzLmhhbmRsZU5hdmlnYXRlVG9Gb2xkZXIobmF2aWdhdGluZ0ZvbGRlcklkKTtcbiAgICB9XG4gIH0pO1xuXG4gICNsb2FkaW5nRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpc0xvYWRpbmcgPSB0aGlzLnZtLmlzTG9hZGluZygpO1xuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICB0aGlzLmxheW91dFNlcnZpY2Uuc2V0TmF2aWdhdGlvbkxvYWRpbmcoaXNMb2FkaW5nKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0tLS0tLS0tLS0tLS0gICBMaWZlY3ljbGUgSG9va3MgICAtLS0tLS0tLS0tLS0tLS0tXG5cbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBhd2FpdCB0aGlzLmxvYWRGaWx0ZXJJdGVtcygpO1xuICAgIGNvbnN0IHNuYXBzaG90ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdDtcbiAgICBjb25zdCByb3V0ZXJTY29wZSA9IHJlc29sdmVQbGF0Zm9ybVNjb3BlS2V5KHNuYXBzaG90LnBhcmVudD8ucGFyYW1NYXAuZ2V0KCdzY29wZScpPy50cmltKCk/LnRvTG93ZXJDYXNlKCkhKTtcbiAgICBhd2FpdCB0aGlzLnZtLmluaXRpYWxpemUoeyBicm93c2VNb2RlOiAnZmlsZScsIHNjb3BlOiByb3V0ZXJTY29wZSBhcyBBWFBQbGF0Zm9ybVNjb3BlIH0pO1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1NYXAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMubG9hZERyaXZlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLS0tLS0tLS0tLS0tLSAgIEV2ZW50IEhhbmRsZXJzICAgLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGFzeW5jIGhhbmRsZVNlYXJjaENoYW5nZShldmVudDogQVhWYWx1ZUNoYW5nZWRFdmVudCkge1xuICAgIGlmIChldmVudC52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnZhbHVlPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRyaXZlU2VydmljZS5zZWFyY2hOb2RlcyhldmVudC52YWx1ZSwgdGhpcy52bS5zY29wZSgpLCB7XG4gICAgICAgIHRlbmFudElkOiB0aGlzLnNlc3Npb25TZXJ2aWNlLnRlbmFudD8uaWQsXG4gICAgICAgIHVzZXJJZDogdGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZCxcbiAgICAgICAgZm9sZGVySWQ6IHRoaXMudm0uY3VycmVudE5vZGUoKT8uaWQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudm0udmlydHVhbEZvbGRlcihyZXN1bHQsIHtcbiAgICAgICAgbmFtZTogJ1NlYXJjaCBSZXN1bHQnLFxuICAgICAgICBwYXJlbnRJZDpcbiAgICAgICAgICB0aGlzLnZtLmN1cnJlbnROb2RlKCk/LmlkID09ICd2aXJ0dWFsJ1xuICAgICAgICAgICAgPyAodGhpcy52bS5jdXJyZW50Tm9kZSgpPy5wYXJlbnRJZCA/PyB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IHRoaXMudm0uY3VycmVudE5vZGUoKT8uaWQsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52bS5uYXZpZ2F0ZVRvVXAoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wnLCBbJyRldmVudCddKVxuICBoYW5kbGVDdHJsS2V5KGU6IEV2ZW50KSB7XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlLnNldCgnbXVsdGlwbGUnKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwLmNvbnRyb2wnLCBbJyRldmVudCddKVxuICBoYW5kbGVDdHJsS2V5VXAoZTogRXZlbnQpIHtcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGUuc2V0KCdzaW5nbGUnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVOYXZpZ2F0ZVRvRm9sZGVyKGZvbGRlcklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICBgJHt0aGlzLnNlc3Npb25TZXJ2aWNlLmFwcGxpY2F0aW9uPy5uYW1lfS9kcml2ZS8ke3Jlc29sdmVQbGF0Zm9ybVNjb3BlTmFtZSh0aGlzLnZtLnNjb3BlKCkpfS8ke2ZvbGRlcklkfWAsXG4gICAgXSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VhcmNoUXVlcnkgPSBudWxsO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLS0tLS0tLS0tLS0tLSAgIERhdGEgTG9hZGluZyBNZXRob2RzICAgLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERyaXZlKCkge1xuICAgIGNvbnN0IGZvbGRlcklkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJyk7XG4gICAgaWYgKGZvbGRlcklkKSB7XG4gICAgICBhd2FpdCB0aGlzLnZtLmxvYWRGb2xkZXJDb250ZW50cyhmb2xkZXJJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE86IGdldCByb290IGZyb20gdGVuYW50IG9yIHVzZXIgYnkgc2NvcGVcbiAgICAgIGNvbnN0IHJvb3QgPSBhd2FpdCB0aGlzLmRyaXZlU2VydmljZS5nZXRSb290KHRoaXMudm0uc2NvcGUoKSwge1xuICAgICAgICB0ZW5hbnRJZDogdGhpcy5zZXNzaW9uU2VydmljZS50ZW5hbnQ/LmlkLFxuICAgICAgICB1c2VySWQ6IHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcj8uaWQsXG4gICAgICB9KTtcbiAgICAgIGlmIChyb290LnJlc3VsdCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcbiAgICAgICAgICBbXG4gICAgICAgICAgICBgJHt0aGlzLnNlc3Npb25TZXJ2aWNlLmFwcGxpY2F0aW9uPy5uYW1lfS9kcml2ZS8ke3Jlc29sdmVQbGF0Zm9ybVNjb3BlTmFtZSh0aGlzLnZtLnNjb3BlKCkpfS8ke1xuICAgICAgICAgICAgICByb290LnJlc3VsdC5pZFxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5yZWNvbXB1dGUoKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRGaWx0ZXJJdGVtcygpIHtcbiAgICBjb25zdCB0eXBlcyA9IGF3YWl0IHRoaXMuZmlsZVR5cGVTZXJ2aWNlLml0ZW1zKCk7XG4gICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICB7IGtleTogJ2FsbCcsIHRleHRLZXk6ICdmaWxlLXR5cGVzLmFsbCcsIGljb246ICdmYS1saWdodCBmYS1mb2xkZXItY2xvc2VkJyB9LFxuICAgICAgLi4udHlwZXMubWFwKCh0eXBlKSA9PiAoe1xuICAgICAgICBrZXk6IHR5cGUubmFtZSxcbiAgICAgICAgdGV4dEtleTogYGZpbGUtdHlwZXMuJHt0eXBlLm5hbWV9YCxcbiAgICAgICAgaWNvbjogdHlwZS5pY29uIHx8ICdmYS1saWdodCBmYS1maWxlJyxcbiAgICAgIH0pKSxcbiAgICBdO1xuICAgIHRoaXMuZmlsdGVySXRlbXMuc2V0KGl0ZW1zKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tLS0tLS0tLS0tLS0tICAgRmlsdGVyIE1ldGhvZHMgICAtLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJvdGVjdGVkIHNldEZpbHRlcihrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIuc2V0KGtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmlsdGVySWNvbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsdGVyKCkgPT09ICdhbGwnKSB7XG4gICAgICByZXR1cm4gJ2ZhLWxpZ2h0IGZhLWZvbGRlci1jbG9zZWQnO1xuICAgIH1cbiAgICBjb25zdCBpdGVtID0gdGhpcy5maWx0ZXJJdGVtcygpLmZpbmQoKGl0ZW0pID0+IGl0ZW0ua2V5ID09PSB0aGlzLnNlbGVjdGVkRmlsdGVyKCkpO1xuICAgIHJldHVybiBpdGVtPy5pY29uIHx8ICdmYS1saWdodCBmYS1maWxlJztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWx0ZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWx0ZXIoKSA9PT0gJ2FsbCcpIHtcbiAgICAgIHJldHVybiAnZmlsZS10eXBlcy5hbGwnO1xuICAgIH1cbiAgICBjb25zdCBpdGVtID0gdGhpcy5maWx0ZXJJdGVtcygpLmZpbmQoKGl0ZW0pID0+IGl0ZW0ua2V5ID09PSB0aGlzLnNlbGVjdGVkRmlsdGVyKCkpO1xuICAgIHJldHVybiBpdGVtPy50ZXh0S2V5IHx8ICdmaWxlLXR5cGVzLmFsbCc7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLS0tLS0tLS0tLS0tLSAgIFBhZ2UgQ29uZmlndXJhdGlvbiBPdmVycmlkZXMgICAtLS0tLS0tLS0tLS0tLS0tXG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UHJpbWFyeU1lbnVJdGVtcygpOiBQcm9taXNlPEFYUEFjdGlvbk1lbnVJdGVtW10+IHtcbiAgICBpZiAodGhpcy52bS5oYXNNdWx0aXBsZVNlbGVjdGVkSXRlbXMoKSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdkZWxldGVJdGVtcycsXG4gICAgICAgICAgdGl0bGU6ICd0KFwiZGVsZXRlSXRlbXNcIiknLFxuICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS10cmFzaC1jYW4nLFxuICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIGNvbnN0IGFkZEl0ZW1JdGVtcyA9IGF3YWl0IHRoaXMudm0uZ2V0Rm9sZGVyQWRkTWVudUl0ZW1zKCk7XG4gICAgYWRkSXRlbUl0ZW1zW2FkZEl0ZW1JdGVtcy5sZW5ndGggLSAxXS5icmVhayA9IGZhbHNlO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAndChcImFkZC1pdGVtXCIpJyxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXBsdXMnLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBpdGVtczogYWRkSXRlbUl0ZW1zLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0U2Vjb25kYXJ5TWVudUl0ZW1zKCk6IFByb21pc2U8QVhQQWN0aW9uTWVudUl0ZW1bXT4ge1xuICAgIGlmICh0aGlzLnZtLmhhc011bHRpcGxlU2VsZWN0ZWRJdGVtcygpKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2RlbGV0ZScsXG4gICAgICAgICAgdGl0bGU6ICd0KFwiZGVsZXRlXCIpJyxcbiAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdHJhc2gtY2FuJyxcbiAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy52bS5nZXRGb2xkZXJBY3Rpb25NZW51SXRlbXMoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VUaXRsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLnZtLmlzUm9vdCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICBgc2NvcGUuJHtyZXNvbHZlUGxhdGZvcm1TY29wZU5hbWUodGhpcy52bS5zY29wZSgpIGFzIEFYUFBsYXRmb3JtU2NvcGUpfS50aXRsZWAsXG4gICAgICAgIHsgc2NvcGU6IHRoaXMucm9vdENvbmZpZy5jb25maWcuaTE4biB9LFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudm0uY3VycmVudEZvbGRlcigpPy5uYW1lIHx8ICcnO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZURlc2NyaXB0aW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgY291bnQgPSBhd2FpdCB0aGlzLnZtLml0ZW1zQ291bnQoKTtcbiAgICBjb25zdCBzaXplID0gYXdhaXQgdGhpcy52bS5hdmFpbGFibGVTcGFjZSgpO1xuICAgIGNvbnN0IGZvcm1hdHRlZFNpemUgPSBhd2FpdCB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHNpemUsICdmaWxlc2l6ZScpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICBgc2NvcGUuJHtyZXNvbHZlUGxhdGZvcm1TY29wZU5hbWUodGhpcy52bS5zY29wZSgpIGFzIEFYUFBsYXRmb3JtU2NvcGUpfS5kZXNjcmlwdGlvbmAsXG4gICAgICB7XG4gICAgICAgIHNjb3BlOiB0aGlzLnJvb3RDb25maWcuY29uZmlnLmkxOG4sXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGNvdW50LFxuICAgICAgICAgIHNpemU6IGZvcm1hdHRlZFNpemUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBnZXRCYWNrQnV0dG9uKCk6IEFYUEJhY2tCdXR0b24gfCBudWxsIHtcbiAgICBpZiAodGhpcy52bS5pc1VwQXZhaWxhYmxlKCkgJiYgdGhpcy52bS5jdXJyZW50UGF0aCgpLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnZtLmN1cnJlbnRQYXRoKClbdGhpcy52bS5jdXJyZW50UGF0aCgpLmxlbmd0aCAtIDJdLm5hbWUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uQmFja0J1dHRvbkNsaWNrKCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy52bS5pc1VwQXZhaWxhYmxlKCkpIHtcbiAgICAgIHRoaXMudm0ubmF2aWdhdGVUb1VwKCk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZUJyZWFkY3J1bWJzKCk6IFByb21pc2U8QVhQQnJlYWRjcnVtYkl0ZW1bXT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgYHNjb3BlLiR7cmVzb2x2ZVBsYXRmb3JtU2NvcGVOYW1lKHRoaXMudm0uc2NvcGUoKSBhcyBBWFBQbGF0Zm9ybVNjb3BlKX0udGl0bGVgLFxuICAgICAgICAgIHsgc2NvcGU6IHRoaXMucm9vdENvbmZpZy5jb25maWcuaTE4biB9LFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZShjb21tYW5kOiBBWFBFeGVjdXRlQ29tbWFuZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvbGRlcklkID0gY29tbWFuZC5vcHRpb25zPy5bJ2ZvbGRlcklkJ10gYXMgc3RyaW5nO1xuICAgIHN3aXRjaCAoY29tbWFuZC5uYW1lKSB7XG4gICAgICBjYXNlICduZXctZm9sZGVyJzpcbiAgICAgICAgaWYgKGZvbGRlcklkKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZVNlcnZpY2Uuc2hvd0NyZWF0ZUZvbGRlckRpYWxvZyhmb2xkZXJJZCk7XG4gICAgICAgICAgdGhpcy52bS5yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvcGVuLWdhbGxlcnknOlxuICAgICAgICBpZiAoZm9sZGVySWQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlU2VydmljZS5zaG93RmlsZVZpZXdlclBvcHVwKHRoaXMudm0uY3VycmVudEZvbGRlcigpIS5jaGlsZHJlbiFbMF0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGNvbW1hbmQubmFtZS5zdGFydHNXaXRoKCd1cGxvYWQuJykpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlU2VydmljZS51cGxvYWRGaWxlQnlUeXBlKGZvbGRlcklkLCBjb21tYW5kLm9wdGlvbnM/LlsnZG9jdW1lbnRUeXBlJ10/LmlkKTtcbiAgICAgICAgICB0aGlzLnZtLnJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cbiIsIjwhLS0gTWFpbiBMYXlvdXQgLS0+XG48YXhwLXBhZ2UtbGF5b3V0ICp0cmFuc2xhdGU9XCJsZXQgdFwiPlxuICA8YXhwLXBhZ2UtdG9vbGJhcj5cbiAgICA8IS0tIExlZnQgU2lkZSBUb29sYmFyIC0tPlxuICAgIDxheHAtbGF5b3V0LXByZWZpeD5cbiAgICAgIEBpZih2bS5oYXNNdWx0aXBsZVNlbGVjdGVkSXRlbXMoKSApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWdhcC0zIGF4LWl0ZW1zLWNlbnRlciBheC1oLTEwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC14bCBheC1mb250LWJvbGRcIj5cbiAgICAgICAgICB7eyB2bS5zZWxlY3RlZENvdW50KCkgfX0ge3sgdCgnaXRlbXNTZWxlY3RlZCcsIHsgc2NvcGU6ICdjb21tb24nIH0pIHwgYXN5bmMgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiAoY2xpY2spPVwidm0uZGVzZWxlY3RBbGwoKVwiIGNsYXNzPVwiYXgtdGV4dC1zbSBheC10ZXh0LXNlY29uZGFyeSBheC11bmRlcmxpbmUgYXgtY3Vyc29yLXBvaW50ZXJcIj57e1xuICAgICAgICAgIHQoJ3Vuc2VsZWN0JywgeyBzY29wZTogJ2NvbW1vbicgfSkgfCBhc3luY1xuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPCEtLS0tLS0tLS0tPlxuICAgICAgQGVsc2Uge1xuICAgICAgPCEtLSBGaWx0ZXIgRHJvcGRvd24gLS0+XG4gICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cInQoZ2V0RmlsdGVyVGV4dCgpLCB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0pIHwgYXN5bmNcIj5cbiAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJnZXRGaWx0ZXJJY29uKClcIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtcHJlZml4PlxuXG4gICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdCBjbGFzcz1cImF4LXAtMlwiPlxuICAgICAgICAgICAgQGZvcihpdGVtIG9mIGZpbHRlckl0ZW1zKCk7IHRyYWNrIGl0ZW0ua2V5KSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic2V0RmlsdGVyKGl0ZW0ua2V5KVwiXG4gICAgICAgICAgICAgIFt0ZXh0XT1cIih0KGl0ZW0udGV4dEtleSwgeyBzY29wZTogcm9vdENvbmZpZy5jb25maWcuaTE4biB9KSB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cIml0ZW0uaWNvblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPCEtLSBTZWFyY2ggQm94IC0tPlxuICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgWyh2YWx1ZSldPVwic2VhcmNoUXVlcnlcIlxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlU2VhcmNoQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBjbGFzcz1cImF4LXctNzIgYXgtaGlkZGVuIG1kOmF4LWZsZXhcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwidCgnYWN0aW9ucy5zZWFyY2gnLCB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0pIHwgYXN5bmNcIlxuICAgICAgICA+PGF4LWNsZWFyLWJ1dHRvbj48L2F4LWNsZWFyLWJ1dHRvblxuICAgICAgPjwvYXgtc2VhcmNoLWJveD5cbiAgICAgIH1cbiAgICA8L2F4cC1sYXlvdXQtcHJlZml4PlxuXG4gICAgPCEtLSBSaWdodCBTaWRlIFRvb2xiYXIgLS0+XG4gICAgPGF4cC1sYXlvdXQtc3VmZml4PlxuICAgICAgPCEtLSBTb3J0IERyb3Bkb3duIC0tPlxuICAgICAgPGF4LWJ1dHRvbj5cbiAgICAgICAgPGF4LWljb25cbiAgICAgICAgICBbaWNvbl09XCInZmEtbGlnaHQgZmEtYXJyb3ctJyArICh2bS5zb3J0RGlyZWN0aW9uKCkgPT09ICdhc2MnID8gJ3VwJyA6ICdkb3duJykgKyAnLXdpZGUtc2hvcnQnXCJcbiAgICAgICAgPjwvYXgtaWNvbj5cbiAgICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgPCEtLSBTb3J0IEJ5IE9wdGlvbnMgLS0+XG4gICAgICAgICAgICBAZm9yKGl0ZW0gb2Ygc29ydEl0ZW1zKCk7IHRyYWNrIGl0ZW0ua2V5KSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgW3RleHRdPVwiKHQoaXRlbS50ZXh0S2V5LCB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0pIHwgYXN5bmMpIVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLnNldFNvcnRGaWVsZChpdGVtLmtleSlcIlxuICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwidm0uc29ydEZpZWxkKCkgPT09IGl0ZW0ua2V5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICAgICAgICAgIDwhLS0gU29ydCBEaXJlY3Rpb24gT3B0aW9ucyAtLT5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICBbdGV4dF09XCIodCgnYWN0aW9ucy5zb3J0LWFzY2VuZGluZycsIHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG4gfSkgfCBhc3luYykhXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInZtLnNvcnREaXJlY3Rpb24oKSA9PT0gJ2FzYydcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJ2bS5zZXRTb3J0RGlyZWN0aW9uKCdhc2MnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWFycm93LXVwLXdpZGUtc2hvcnRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICBbdGV4dF09XCIodCgnYWN0aW9ucy5zb3J0LWRlc2NlbmRpbmcnLCB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0pIHwgYXN5bmMpIVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJ2bS5zb3J0RGlyZWN0aW9uKCkgPT09ICdkZXNjJ1wiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLnNldFNvcnREaXJlY3Rpb24oJ2Rlc2MnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWFycm93LWRvd24td2lkZS1zaG9ydFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICA8IS0tIFZpZXcgTW9kZSBUb2dnbGUgLS0+XG4gICAgICA8YXgtYnV0dG9uPlxuICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQge3sgc2VsZWN0ZWRWaWV3TW9kZSgpLmljb24gfX1cIj48L2F4LWljb24+XG4gICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgIEBmb3IoaXRlbSBvZiB2aWV3c0l0ZW1zKCk7IHRyYWNrIGl0ZW0ua2V5KSB7XG4gICAgICAgICAgICA8IS0tIHZpZXcgbW9kZSBpdGVtcyAtLT5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICBbdGV4dF09XCIodCgndmlldy1tb2Rlcy4nICsgaXRlbS5rZXksIHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG4gfSkgfCBhc3luYykhXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInZtLmlzVmlld01vZGUoaXRlbS5rZXkpXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidm0uc2V0Vmlld01vZGUoaXRlbS5rZXkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQge3sgaXRlbS5pY29uIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICBAaWYoaXRlbS5icmVhaykge1xuICAgICAgICAgICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPCEtLSBlbmQgb2YgdmlldyBtb2RlIGl0ZW1zIC0tPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICBAaWYobGF5b3V0U2VydmljZS5pc0xhcmdlKCkpIHtcbiAgICAgIDwhLS0gRGV0YWlsIFBhbmVsIFRvZ2dsZSAtLT5cbiAgICAgIDxheC1idXR0b24gKG9uQ2xpY2spPVwidm0udG9nZ2xlRGV0YWlsUGFuZWwoKVwiPlxuICAgICAgICA8YXgtaWNvbiBpY29uPVwie3sgdm0uaXNEZXRhaWxQYW5lbE9wZW4oKSA/ICdmYS1zb2xpZCBmYS1zcXVhcmUtaW5mbycgOiAnZmEtbGlnaHQgZmEtc3F1YXJlLWluZm8nIH19XCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgICB9XG4gICAgPC9heHAtbGF5b3V0LXN1ZmZpeD5cbiAgPC9heHAtcGFnZS10b29sYmFyPlxuXG4gIDwhLS0gQ29udGVudCBTZWN0aW9uIC0tPlxuICA8YXhwLXBhZ2UtY29udGVudCBjbGFzcz1cImF4LW92ZXJmbG93LWF1dG8gYXgtZmxleCBheC1mbGV4LXJvdyBheC1nYXAtNFwiPlxuICAgIDxheG0tZG9jdW1lbnQtZXhwbG9yZXIgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZSgpXCI+PC9heG0tZG9jdW1lbnQtZXhwbG9yZXI+XG4gICAgQGlmICh2bS5pc0RldGFpbFBhbmVsT3BlbigpICYmIGxheW91dFNlcnZpY2UuaXNMYXJnZSgpKSB7XG4gICAgPGF4bS1kb2N1bWVudC1leHBsb3Jlci1kZXRhaWwtcGFuZWwgY2xhc3M9XCJheC1zdGlja3kgYXgtdG9wLTAgYXgtei01MFwiPjwvYXhtLWRvY3VtZW50LWV4cGxvcmVyLWRldGFpbC1wYW5lbD5cbiAgICB9XG4gIDwvYXhwLXBhZ2UtY29udGVudD5cblxuICA8IS0tIEZvb3RlciBTZWN0aW9uIC0tPlxuICBAaWYoIWxheW91dFNlcnZpY2UuaXNTbWFsbCgpKSB7XG4gIDxheHAtcGFnZS1mb290ZXI+XG4gICAgPGF4cC1sYXlvdXQtcHJlZml4PlxuICAgICAgPGF4bS1mb2xkZXItcGF0aC1icmVhZGNydW1icz48L2F4bS1mb2xkZXItcGF0aC1icmVhZGNydW1icz5cbiAgICA8L2F4cC1sYXlvdXQtcHJlZml4PlxuICA8L2F4cC1wYWdlLWZvb3Rlcj5cbiAgfVxuPC9heHAtcGFnZS1sYXlvdXQ+XG4iXX0="],"names":["i1","i2","i4","i5","i6"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,MAAM,uCAAuC,CAAC;AACrD,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACtD;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,uCAAuC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACzM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,uCAAuC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,oCAAoC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,qqDAAqqD,EAAE,MAAM,EAAE,CAAC,oqEAAoqE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,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,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,MAAM,EAAE,IAAI,EAAEC,IAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAEC,IAAE,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC19J;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uCAAuC,EAAE,UAAU,EAAE,CAAC;AACjJ,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,oCAAoC,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;AACvI,wBAAwB,YAAY;AACpC,wBAAwB,iBAAiB;AACzC,wBAAwB,cAAc;AACtC,wBAAwB,cAAc;AACtC,wBAAwB;AACxB,qBAAqB,EAAE,QAAQ,EAAE,qqDAAqqD,EAAE,MAAM,EAAE,CAAC,oqEAAoqE,CAAC,EAAE;AACx3H,SAAS,CAAC,EAAE,CAAC;;ACGN,MAAM,yBAAyB,SAAS,0BAA0B,CAAC;AAC1E,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,0BAA0B,CAAC;AACjE,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAC7D,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACtD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACpD;AACA;AACA,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,cAAc,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpG,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,kBAAkB,EAAE;AACtF,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,sBAAsB,EAAE;AAC9F,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,4BAA4B,EAAE;AAChG,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACjC,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,kBAAkB,EAAE;AAC5D,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE;AACzE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE;AACrD,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE;AAClE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5D,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;AAC5C,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/D,QAAQ,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpM,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrG,QAAQ,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,4BAA4B,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAClI;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM;AAC3C,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC1C,YAAY,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AACrF,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjE;AACA;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM;AAC5C,YAAY,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE;AACnE,YAAY,IAAI,kBAAkB,EAAE;AACpC,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC;AAC/D;AACA,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpE,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM;AAC3C,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE;AACjD,YAAY,SAAS,CAAC,MAAM;AAC5B,gBAAgB,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,SAAS,CAAC;AAClE,aAAa,CAAC;AACd,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnE;AACA;AACA;AACA,IAAI,eAAe;AACnB,IAAI,cAAc;AAClB;AACA;AACA,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,KAAK,CAAC,QAAQ,EAAE;AACxB,QAAQ,MAAM,IAAI,CAAC,eAAe,EAAE;AACpC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;AACrD,QAAQ,MAAM,WAAW,GAAG,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;AAClH,QAAQ,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAC5E,QAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY;AAC3D,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,SAAS,CAAC;AACV;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,KAAK,EAAE;AACpC,QAAQ,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;AACjC,YAAY;AACZ;AACA,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE;AACrC,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;AAC7F,gBAAgB,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE;AACxD,gBAAgB,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;AACpD,gBAAgB,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE;AACnD,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE;AAC1C,gBAAgB,IAAI,EAAE,eAAe;AACrC,gBAAgB,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI;AACvD,uBAAuB,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,QAAQ,IAAI,SAAS;AACnE,sBAAsB,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE;AAC/C,aAAa,CAAC;AACd;AACA,aAAa;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AAClC;AACA;AACA,IAAI,aAAa,CAAC,CAAC,EAAE;AACrB,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1C;AACA,IAAI,eAAe,CAAC,CAAC,EAAE;AACvB,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxC;AACA,IAAI,sBAAsB,CAAC,QAAQ,EAAE;AACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC7B,YAAY,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACrH,SAAS,CAAC;AACV,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI;AACnC,SAAS,EAAE,GAAG,CAAC;AACf;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACxE,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACtD;AACA,aAAa;AACb;AACA,YAAY,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;AAC1E,gBAAgB,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE;AACxD,gBAAgB,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;AACpD,aAAa,CAAC;AACd,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAgB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3C,oBAAoB,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnI,iBAAiB,EAAE;AACnB,oBAAoB,UAAU,EAAE,IAAI;AACpC,iBAAiB,CAAC;AAClB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AACxD,QAAQ,MAAM,KAAK,GAAG;AACtB,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,2BAA2B,EAAE;AACxF,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACpC,gBAAgB,GAAG,EAAE,IAAI,CAAC,IAAI;AAC9B,gBAAgB,OAAO,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,gBAAgB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,kBAAkB;AACrD,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC;AACA;AACA;AACA,IAAI,SAAS,CAAC,GAAG,EAAE;AACnB,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,KAAK,EAAE;AAC7C,YAAY,OAAO,2BAA2B;AAC9C;AACA,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1F,QAAQ,OAAO,IAAI,EAAE,IAAI,IAAI,kBAAkB;AAC/C;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,KAAK,EAAE;AAC7C,YAAY,OAAO,gBAAgB;AACnC;AACA,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1F,QAAQ,OAAO,IAAI,EAAE,OAAO,IAAI,gBAAgB;AAChD;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,wBAAwB,EAAE,EAAE;AAChD,YAAY,OAAO;AACnB,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,aAAa;AACvC,oBAAoB,KAAK,EAAE,kBAAkB;AAC7C,oBAAoB,IAAI,EAAE,uBAAuB;AACjD,oBAAoB,KAAK,EAAE,QAAQ;AACnC,iBAAiB;AACjB,aAAa;AACb;AACA,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE;AAClE,QAAQ,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK;AAC3D,QAAQ,OAAO;AACf,YAAY;AACZ,gBAAgB,KAAK,EAAE,eAAe;AACtC,gBAAgB,IAAI,EAAE,kBAAkB;AACxC,gBAAgB,KAAK,EAAE,SAAS;AAChC,gBAAgB,KAAK,EAAE,YAAY;AACnC,aAAa;AACb,SAAS;AACT;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,wBAAwB,EAAE,EAAE;AAChD,YAAY,OAAO;AACnB,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,QAAQ;AAClC,oBAAoB,KAAK,EAAE,aAAa;AACxC,oBAAoB,IAAI,EAAE,uBAAuB;AACjD,oBAAoB,KAAK,EAAE,QAAQ;AACnC,iBAAiB;AACjB,aAAa;AACb;AACA,QAAQ,OAAO,IAAI,CAAC,EAAE,CAAC,wBAAwB,EAAE;AACjD;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE;AAC9B,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC3J;AACA,QAAQ,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,IAAI,IAAI,EAAE;AAClD;AACA,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;AAChD,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE;AACnD,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;AAC/E,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE;AACtH,YAAY,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9C,YAAY,MAAM,EAAE;AACpB,gBAAgB,KAAK;AACrB,gBAAgB,IAAI,EAAE,aAAa;AACnC,aAAa;AACb,SAAS,CAAC;AACV;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACzE,YAAY,OAAO;AACnB,gBAAgB,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI;AACnF,aAAa;AACb;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;AACrC,YAAY,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AAClC;AACA;AACA,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,OAAO;AACf,YAAY;AACZ,gBAAgB,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACrK,aAAa;AACb,SAAS;AACT;AACA,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;AACtD,QAAQ,QAAQ,OAAO,CAAC,IAAI;AAC5B,YAAY,KAAK,YAAY;AAC7B,gBAAgB,IAAI,QAAQ,EAAE;AAC9B,oBAAoB,MAAM,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,QAAQ,CAAC;AAC5E,oBAAoB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE;AACrC;AACA,gBAAgB;AAChB,YAAY,KAAK,cAAc;AAC/B,gBAAgB,IAAI,QAAQ,EAAE;AAC9B,oBAAoB,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpG;AACA,gBAAgB;AAChB,YAAY;AACZ,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AACxD,oBAAoB,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,CAAC;AAC7G,oBAAoB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE;AACrC;AACA,gBAAgB;AAChB;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,yBAAyB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,yBAAyB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,EAAE,EAAE,SAAS,EAAE;AAC/T,YAAY,4BAA4B;AACxC,YAAY;AACZ,gBAAgB,OAAO,EAAE,iBAAiB;AAC1C,gBAAgB,WAAW,EAAE,yBAAyB;AACtD,aAAa;AACb,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,4BAA4B,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,+8KAA+8K,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,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;AAClyL;AACA,gBAAgB,YAAY,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,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEF,IAAE,CAAC,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,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,EAAEC,EAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,CAAC,+BAA+B,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,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,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI;AACv6E;AACA,gBAAgB,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,4BAA4B,EAAE,QAAQ,EAAE,qfAAqf,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI;AAC5pB;AACA,gBAAgB,4BAA4B,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iCAAiC,EAAE,QAAQ,EAAE,6BAA6B,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uCAAuC,EAAE,QAAQ,EAAE,oCAAoC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAEC,IAAE,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;AAChhB;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC;AACnI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;AAChF,wBAAwB,YAAY;AACpC,wBAAwB,YAAY;AACpC;AACA,wBAAwB,YAAY;AACpC,wBAAwB,cAAc;AACtC,wBAAwB,mBAAmB;AAC3C,wBAAwB,sBAAsB;AAC9C,wBAAwB,gBAAgB;AACxC,wBAAwB,mBAAmB;AAC3C,wBAAwB,iBAAiB;AACzC,wBAAwB,eAAe;AACvC,wBAAwB,mBAAmB;AAC3C,wBAAwB,aAAa;AACrC,wBAAwB,iBAAiB;AACzC,wBAAwB,cAAc;AACtC,wBAAwB,YAAY;AACpC,wBAAwB,gBAAgB;AACxC;AACA,wBAAwB,sBAAsB;AAC9C,wBAAwB,4BAA4B;AACpD;AACA,wBAAwB,4BAA4B;AACpD,wBAAwB,iCAAiC;AACzD,wBAAwB,uCAAuC;AAC/D,qBAAqB,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;AAC1H,wBAAwB,4BAA4B;AACpD,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE,yBAAyB;AAClE,yBAAyB;AACzB,qBAAqB,EAAE,QAAQ,EAAE,+8KAA+8K,EAAE;AACl/K,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,EAAE,CAAC;AAC9C,gBAAgB,IAAI,EAAE,YAAY;AAClC,gBAAgB,IAAI,EAAE,CAAC,0BAA0B,EAAE,CAAC,QAAQ,CAAC;AAC7D,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;AAClC,gBAAgB,IAAI,EAAE,YAAY;AAClC,gBAAgB,IAAI,EAAE,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC;AAC3D,aAAa,CAAC,EAAE,EAAE,CAAC;;;;"}
|
package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-D5Csi3A3.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-document-management-meta-choose-popup.component-D5Csi3A3.mjs","sources":["../tmp-esm2022/document-management/lib/features/meta-choose-widget/meta-choose-popup/meta-choose-popup.component.js"],"sourcesContent":["import { Component, signal, ViewEncapsulation, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTreeViewModule } from '@acorex/components/tree-view';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXMMetaDataDefinitionCategoryService } from '@acorex/modules/platform-management';\nimport { CdkDrag, CdkDragHandle, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXCollapseModule } from '@acorex/components/collapse';\nimport { FormsModule } from '@angular/forms';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/search-box\";\nimport * as i3 from \"@acorex/components/tree-view\";\nimport * as i4 from \"@acorex/components/decorators\";\nimport * as i5 from \"@acorex/components/button\";\nimport * as i6 from \"@acorex/components/check-box\";\nimport * as i7 from \"@acorex/components/collapse\";\nimport * as i8 from \"@acorex/components/label\";\nimport * as i9 from \"@angular/forms\";\nimport * as i10 from \"@acorex/core/translation\";\n//#endregion\nexport class AXPMetaChoosePopupComponent extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.categoryService = inject(AXMMetaDataDefinitionCategoryService);\n this.workflow = inject(AXPWorkflowService);\n this.initialData = [];\n /**\n * Holds the complete list of tree items in a flattened structure.\n * This structure makes it easy to:\n * 1) Provide children lazily via `provideLazyTreeView` using `parentId`.\n * 2) Perform search across all levels while still being able to include\n * ancestor nodes of matched items.\n */\n this.treeViewData = signal([], ...(ngDevMode ? [{ debugName: \"treeViewData\" }] : []));\n /**\n * Flat list of ALL nodes (for easy look-ups during search).\n */\n this.originalFlatData = [];\n /**\n * Original *nested* tree structure (used to reset and to rebuild filtered trees).\n */\n this.originalNestedData = [];\n this.searchTerm = signal('', ...(ngDevMode ? [{ debugName: \"searchTerm\" }] : []));\n //#region ---- Selected Configs ----\n this.selectedConfigs = signal([], ...(ngDevMode ? [{ debugName: \"selectedConfigs\" }] : []));\n }\n //#endregion\n ngOnInit() {\n this.categoryService.getAllWithItems().then((categories) => {\n //#region ---- Helper Functions ----\n const convertCategoryToTreeItem = (category) => {\n const categoryChildren = [\n // Map sub-categories recursively\n ...category.categories.map((c) => convertCategoryToTreeItem(c)),\n // Map items of current category\n ...category.items.map((item) => ({\n id: item.id,\n text: item.title,\n parentId: category.id,\n hasCheckbox: true,\n isSelected: false,\n //\n interface: item.interface,\n name: item.name,\n title: item.title\n })),\n ];\n return {\n id: category.id,\n text: category.title,\n parentId: category.parentId,\n hasCheckbox: false,\n children: categoryChildren,\n isSelected: false,\n //fake\n interface: '',\n name: '',\n title: ''\n };\n };\n //#endregion\n // Build **nested** tree structure first so that each parent\n // contains its children array (similar to the sample at line 208).\n const nestedTree = categories.map((c) => convertCategoryToTreeItem(c));\n // Additionally build a flattened list of all nodes (same objects) so\n // that we can re-use the existing search implementation which\n // expects a flat array.\n const flatList = [];\n const collectFlat = (nodes) => {\n nodes.forEach((n) => {\n flatList.push(n);\n if (Array.isArray(n.children) && n.children.length > 0) {\n collectFlat(n.children);\n }\n });\n };\n collectFlat(nestedTree);\n // --- Apply initial selections ---\n if (this.initialData && this.initialData.length > 0) {\n const initialIds = new Set(this.initialData.map((d) => d.id));\n flatList.forEach((node) => {\n if (node.hasCheckbox && initialIds.has(node.id)) {\n node.isSelected = true;\n }\n });\n }\n // Persist original data (both flattened and nested) & initialise reactive signal.\n this.originalFlatData = flatList;\n this.originalNestedData = nestedTree;\n // Set initial tree view data to display the tree\n this.treeViewData.set([...nestedTree]);\n // Initialise selected list if any initial selections\n this.synchroniseSelectedConfigs();\n });\n this.selectedConfigs.set(this.initialData ?? []);\n }\n handleSelectClick() {\n // Return the configured selected items from the right panel\n const selectedConfigs = this.selectedConfigs();\n if (selectedConfigs.length > 0) {\n this.close(selectedConfigs);\n }\n else {\n this.close();\n }\n }\n handleCloseClick() {\n this.close();\n }\n handleChangeSearchValue(e) {\n const term = (e.value ?? '').trim();\n this.searchTerm.set(term);\n // Reset to the pristine nested tree when search is cleared.\n if (!term) {\n this.treeViewData.set([...this.originalNestedData]);\n return;\n }\n const loweredTerm = term.toLowerCase();\n // Build a quick lookup map to traverse ancestors efficiently\n const mapById = new Map(this.originalFlatData.map((item) => [item.id, item]));\n // Helper to collect all ancestors of a given node\n const collectAncestors = (node) => {\n const ancestors = [];\n let currentParentId = node.parentId;\n while (currentParentId) {\n const parent = mapById.get(currentParentId);\n if (!parent) {\n break;\n }\n ancestors.push(parent);\n currentParentId = parent.parentId;\n }\n return ancestors;\n };\n // 1) Find all nodes whose text contains the search term\n const matchedNodes = this.originalFlatData.filter((item) => item.text.toLowerCase().includes(loweredTerm));\n // 2) Collect their ancestors to ensure the tree can render correct paths\n const resultSet = new Map();\n matchedNodes.forEach((node) => {\n resultSet.set(node.id, node);\n collectAncestors(node).forEach((ancestor) => resultSet.set(ancestor.id, ancestor));\n });\n // ---------------------------------------------------------\n // Ensure child nodes are NOT rendered at the root level.\n // We only pass nodes to the tree component that do **not**\n // have their parent already present in the final result set.\n // This preserves the correct hierarchy and prevents duplicates\n // like the extra root-level entry highlighted in yellow.\n // ---------------------------------------------------------\n // Build a *nested* tree that contains ONLY nodes present in `resultSet`.\n const idSet = new Set(resultSet.keys());\n const cloneIfIncluded = (node) => {\n if (!idSet.has(node.id)) {\n return null;\n }\n const cloned = {\n ...node,\n // Create fresh children array (will be populated recursively)\n children: []\n };\n if (Array.isArray(node.children)) {\n node.children.forEach((child) => {\n const c = cloneIfIncluded(child);\n if (c) {\n cloned.children.push(c);\n }\n });\n }\n return cloned;\n };\n const filteredRoots = [];\n this.originalNestedData.forEach((root) => {\n const clonedRoot = cloneIfIncluded(root);\n if (clonedRoot) {\n filteredRoots.push(clonedRoot);\n }\n });\n this.treeViewData.set(filteredRoots);\n }\n //#region ---- Tree Interaction Handlers ----\n handleSelectionChanged(e) {\n // Tree toggles selection internally; just sync configs afterwards\n this.synchroniseSelectedConfigs();\n }\n synchroniseSelectedConfigs() {\n const selectedNodes = this.originalFlatData.filter((n) => n.hasCheckbox && n.isSelected);\n this.selectedConfigs.update((prev) => {\n // Remove configs that are no longer selected\n let next = prev.filter((cfg) => selectedNodes.some((n) => n.id === cfg.id));\n // Add new configs\n selectedNodes.forEach((n) => {\n if (!next.some((cfg) => cfg.id === n.id)) {\n next.push({ ...n, isRequired: false, placeholder: '', status: 'temporary' });\n }\n });\n return [...next];\n });\n }\n toggleSelection(cfg) {\n // Find the original node in flatData and update it\n const originalNode = this.originalFlatData.find(n => n.id === cfg.id);\n if (originalNode) {\n originalNode.isSelected = !originalNode.isSelected;\n }\n // Force tree view to update by triggering signal change\n this.treeViewData.set([...this.treeViewData()]);\n this.synchroniseSelectedConfigs();\n }\n //#endregion\n //#region ---- Drag & Drop (Ordering) ----\n handleDrop(event) {\n const list = [...this.selectedConfigs()];\n moveItemInArray(list, event.previousIndex, event.currentIndex);\n this.selectedConfigs.set(list);\n }\n //#endregion\n //#region ---- Manual Ordering Methods ----\n moveItemUp(e, index) {\n e.stopPropagation();\n if (index <= 0)\n return; // Already at top\n const list = [...this.selectedConfigs()];\n [list[index - 1], list[index]] = [list[index], list[index - 1]];\n this.selectedConfigs.set(list);\n }\n moveItemDown(e, index) {\n e.stopPropagation();\n const currentList = this.selectedConfigs();\n if (index >= currentList.length - 1)\n return; // Already at bottom\n const list = [...currentList];\n [list[index], list[index + 1]] = [list[index + 1], list[index]];\n this.selectedConfigs.set(list);\n }\n //#endregion\n //#region ---- Template Actions ----\n async handlePreviewMeta(item) {\n if (item.hasCheckbox) {\n await this.workflow.execute('open-form-template', {\n data: {\n template: item.interface,\n },\n metadata: {\n preview: true,\n },\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AXPMetaChoosePopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: AXPMetaChoosePopupComponent, isStandalone: true, selector: \"axp-meta-choose-popup\", providers: [], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-p-4 ax-flex ax-gap-4 ax-overflow-hidden\\\">\\n <!-- Left: Meta tree -->\\n <div class=\\\"ax-flex-1 ax-flex ax-flex-col ax-gap-4 ax-min-w-0\\\">\\n <ax-search-box\\n [placeholder]=\\\"'widget.lookup.search' | translate | async\\\"\\n [value]=\\\"searchTerm()\\\"\\n (onValueChanged)=\\\"handleChangeSearchValue($event)\\\"\\n ><ax-clear-button></ax-clear-button\\n ></ax-search-box>\\n\\n <ax-tree-view\\n [hasChildField]=\\\"'hasChild'\\\"\\n [parentField]=\\\"'parentId'\\\"\\n [items]=\\\"treeViewData()\\\"\\n [selectionMode]=\\\"'multiple'\\\"\\n [selectedField]=\\\"'isSelected'\\\"\\n (onSelectionChanged)=\\\"handleSelectionChanged($event)\\\"\\n [itemTemplate]=\\\"itemTemplate\\\"\\n [focusNodeEnabled]=\\\"false\\\"\\n class=\\\"ax-flex-1 ax-overflow-auto\\\"\\n ></ax-tree-view>\\n </div>\\n\\n <!-- Right: Selected list -->\\n <div class=\\\"ax-w-1/2 ax-flex ax-flex-col ax-gap-3 ax-select-none ax-overflow-auto ax-h-[400px]\\\" cdkDropList (cdkDropListDropped)=\\\"handleDrop($event)\\\">\\n <h6 class=\\\"ax-font-semibold ax-text-sm\\\" *ngIf=\\\"selectedConfigs().length\\\">Selected Items</h6>\\n\\n @for(cfg of selectedConfigs(); track cfg.id; let i = $index) {\\n <div cdkDrag class=\\\"ax-bg-white ax-rounded-md ax-shadow-sm ax-border ax-border-gray-200\\\" cdkDragBoundary=\\\".ax-select-none\\\">\\n <!-- Collapse with custom header template -->\\n <ax-collapse-group look=\\\"fill\\\">\\n <ax-collapse caption=\\\"Options\\\" [headerTemplate]=\\\"headerTpl\\\">\\n <div class=\\\"ax-flex ax-flex-col\\\">\\n <ax-check-box\\n [ngModel]=\\\"cfg.isRequired\\\"\\n (onValueChanged)=\\\"cfg.isRequired = $event.value ?? false\\\"\\n >\\n <ax-label>{{ 'required' | translate | async }}</ax-label>\\n </ax-check-box>\\n \\n </div>\\n \\n <!-- Header template -->\\n <ng-template #headerTpl>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-w-full ax-px-3 ax-py-2\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2\\\">\\n <ax-icon class=\\\"fa-solid fa-grip-dots-vertical ax-cursor-move ax-text-gray-400\\\" cdkDragHandle></ax-icon>\\n <span class=\\\"ax-text-sm ax-font-medium\\\">{{ cfg.text }}</span>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <ax-icon \\n class=\\\"fa-solid fa-chevron-up ax-text-primary ax-cursor-pointer ax-text-xs\\\" \\n (click)=\\\"moveItemUp($event,i)\\\"\\n [class.ax-opacity-30]=\\\"i === 0\\\"\\n [class.ax-cursor-not-allowed]=\\\"i === 0\\\"\\n title=\\\"Move Up\\\">\\n </ax-icon>\\n <ax-icon \\n class=\\\"fa-solid fa-chevron-down ax-text-primary ax-cursor-pointer ax-text-xs ax-px-2\\\" \\n (click)=\\\"moveItemDown($event,i)\\\"\\n [class.ax-opacity-30]=\\\"i === selectedConfigs().length - 1\\\"\\n [class.ax-cursor-not-allowed]=\\\"i === selectedConfigs().length - 1\\\"\\n title=\\\"Move Down\\\">\\n </ax-icon>\\n <ax-icon class=\\\"fa-solid fa-xmark ax-text-danger ax-cursor-pointer\\\" (click)=\\\"toggleSelection(cfg)\\\"></ax-icon>\\n </div>\\n </div>\\n </ng-template>\\n </ax-collapse>\\n </ax-collapse-group>\\n </div>\\n }\\n </div>\\n</div>\\n\\n<ax-footer>\\n <ax-suffix>\\n <ax-button look=\\\"solid\\\" [text]=\\\"('close' | translate | async)!\\\" (onClick)=\\\"handleCloseClick()\\\"> </ax-button>\\n <ax-button look=\\\"solid\\\" color=\\\"primary\\\" [text]=\\\"('select' | translate | async)!\\\" (onClick)=\\\"handleSelectClick()\\\">\\n </ax-button>\\n </ax-suffix>\\n</ax-footer>\\n\\n<ng-template #itemTemplate let-item>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-w-full\\\">\\n <span>{{ item.text }}</span>\\n @if(item.hasCheckbox) {\\n <ax-icon \\n class=\\\"fa-regular fa-eye ax-text-primary ax-cursor-pointer ax-ml-2\\\" \\n (click)=\\\"handlePreviewMeta(item)\\\"\\n title=\\\"Preview Meta\\\">\\n </ax-icon>\\n }\\n </div>\\n</ng-template>\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: \n // Angular\n CommonModule }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: \n // ACoreX\n AXSearchBoxModule }, { kind: \"component\", type: i2.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXTreeViewModule }, { kind: \"component\", type: i3.AXTreeViewComponent, selector: \"ax-tree-view\", inputs: [\"items\", \"showCheckbox\", \"hasCheckboxField\", \"selectionMode\", \"selectionBehavior\", \"selectionScope\", \"focusNodeEnabled\", \"valueField\", \"textField\", \"visibleField\", \"disableField\", \"hasChildField\", \"selectedField\", \"expandedField\", \"tooltipField\", \"childrenField\", \"activeField\", \"indeterminateField\", \"parentField\", \"iconField\", \"toggleIcons\", \"look\", \"showEmptyNodeMassage\", \"itemTemplate\", \"emptyTemplate\", \"expandOn\"], outputs: [\"onSelectionChanged\", \"onItemSelectedChanged\", \"onNodeClick\", \"onCollapsedChanged\", \"onNodedbClick\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i4.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i4.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i4.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: AXButtonModule }, { kind: \"component\", type: i5.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: AXTranslationModule }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i6.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"checked\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }, { kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"ngmodule\", type: AXCollapseModule }, { kind: \"component\", type: i7.AXCollapseComponent, selector: \"ax-collapse\", inputs: [\"disabled\", \"look\", \"isCollapsed\", \"showHeader\", \"caption\", \"icon\", \"isLoading\", \"headerTemplate\"], outputs: [\"onClick\", \"isCollapsedChange\"] }, { kind: \"component\", type: i7.AXCollapseGroupComponent, selector: \"ax-collapse-group\", inputs: [\"look\", \"accordion\", \"activeIndex\"], outputs: [\"accordionChange\", \"activeIndexChange\"] }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"component\", type: i8.AXLabelComponent, selector: \"ax-label\", inputs: [\"required\", \"for\"], outputs: [\"requiredChange\"] }, { kind: \"directive\", type: \n // CDK DragDrop modules\n CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\", \"cdkDropListHasAnchor\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"directive\", type: CdkDragHandle, selector: \"[cdkDragHandle]\", inputs: [\"cdkDragHandleDisabled\"] }, { kind: \"ngmodule\", type: \n // Forms\n FormsModule }, { kind: \"directive\", type: i9.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i9.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i10.AXTranslatorPipe, name: \"translate\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AXPMetaChoosePopupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-meta-choose-popup', imports: [\n // Angular\n CommonModule,\n // ACoreX\n AXSearchBoxModule,\n AXTreeViewModule,\n AXDecoratorModule,\n AXButtonModule,\n AXTranslationModule,\n AXCheckBoxModule,\n AXTextBoxModule,\n AXCollapseModule,\n AXLabelModule,\n // CDK DragDrop modules\n CdkDropList,\n CdkDrag,\n CdkDragHandle,\n // Forms\n FormsModule,\n ], encapsulation: ViewEncapsulation.None, providers: [], template: \"<div class=\\\"ax-p-4 ax-flex ax-gap-4 ax-overflow-hidden\\\">\\n <!-- Left: Meta tree -->\\n <div class=\\\"ax-flex-1 ax-flex ax-flex-col ax-gap-4 ax-min-w-0\\\">\\n <ax-search-box\\n [placeholder]=\\\"'widget.lookup.search' | translate | async\\\"\\n [value]=\\\"searchTerm()\\\"\\n (onValueChanged)=\\\"handleChangeSearchValue($event)\\\"\\n ><ax-clear-button></ax-clear-button\\n ></ax-search-box>\\n\\n <ax-tree-view\\n [hasChildField]=\\\"'hasChild'\\\"\\n [parentField]=\\\"'parentId'\\\"\\n [items]=\\\"treeViewData()\\\"\\n [selectionMode]=\\\"'multiple'\\\"\\n [selectedField]=\\\"'isSelected'\\\"\\n (onSelectionChanged)=\\\"handleSelectionChanged($event)\\\"\\n [itemTemplate]=\\\"itemTemplate\\\"\\n [focusNodeEnabled]=\\\"false\\\"\\n class=\\\"ax-flex-1 ax-overflow-auto\\\"\\n ></ax-tree-view>\\n </div>\\n\\n <!-- Right: Selected list -->\\n <div class=\\\"ax-w-1/2 ax-flex ax-flex-col ax-gap-3 ax-select-none ax-overflow-auto ax-h-[400px]\\\" cdkDropList (cdkDropListDropped)=\\\"handleDrop($event)\\\">\\n <h6 class=\\\"ax-font-semibold ax-text-sm\\\" *ngIf=\\\"selectedConfigs().length\\\">Selected Items</h6>\\n\\n @for(cfg of selectedConfigs(); track cfg.id; let i = $index) {\\n <div cdkDrag class=\\\"ax-bg-white ax-rounded-md ax-shadow-sm ax-border ax-border-gray-200\\\" cdkDragBoundary=\\\".ax-select-none\\\">\\n <!-- Collapse with custom header template -->\\n <ax-collapse-group look=\\\"fill\\\">\\n <ax-collapse caption=\\\"Options\\\" [headerTemplate]=\\\"headerTpl\\\">\\n <div class=\\\"ax-flex ax-flex-col\\\">\\n <ax-check-box\\n [ngModel]=\\\"cfg.isRequired\\\"\\n (onValueChanged)=\\\"cfg.isRequired = $event.value ?? false\\\"\\n >\\n <ax-label>{{ 'required' | translate | async }}</ax-label>\\n </ax-check-box>\\n \\n </div>\\n \\n <!-- Header template -->\\n <ng-template #headerTpl>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-w-full ax-px-3 ax-py-2\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2\\\">\\n <ax-icon class=\\\"fa-solid fa-grip-dots-vertical ax-cursor-move ax-text-gray-400\\\" cdkDragHandle></ax-icon>\\n <span class=\\\"ax-text-sm ax-font-medium\\\">{{ cfg.text }}</span>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <ax-icon \\n class=\\\"fa-solid fa-chevron-up ax-text-primary ax-cursor-pointer ax-text-xs\\\" \\n (click)=\\\"moveItemUp($event,i)\\\"\\n [class.ax-opacity-30]=\\\"i === 0\\\"\\n [class.ax-cursor-not-allowed]=\\\"i === 0\\\"\\n title=\\\"Move Up\\\">\\n </ax-icon>\\n <ax-icon \\n class=\\\"fa-solid fa-chevron-down ax-text-primary ax-cursor-pointer ax-text-xs ax-px-2\\\" \\n (click)=\\\"moveItemDown($event,i)\\\"\\n [class.ax-opacity-30]=\\\"i === selectedConfigs().length - 1\\\"\\n [class.ax-cursor-not-allowed]=\\\"i === selectedConfigs().length - 1\\\"\\n title=\\\"Move Down\\\">\\n </ax-icon>\\n <ax-icon class=\\\"fa-solid fa-xmark ax-text-danger ax-cursor-pointer\\\" (click)=\\\"toggleSelection(cfg)\\\"></ax-icon>\\n </div>\\n </div>\\n </ng-template>\\n </ax-collapse>\\n </ax-collapse-group>\\n </div>\\n }\\n </div>\\n</div>\\n\\n<ax-footer>\\n <ax-suffix>\\n <ax-button look=\\\"solid\\\" [text]=\\\"('close' | translate | async)!\\\" (onClick)=\\\"handleCloseClick()\\\"> </ax-button>\\n <ax-button look=\\\"solid\\\" color=\\\"primary\\\" [text]=\\\"('select' | translate | async)!\\\" (onClick)=\\\"handleSelectClick()\\\">\\n </ax-button>\\n </ax-suffix>\\n</ax-footer>\\n\\n<ng-template #itemTemplate let-item>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-w-full\\\">\\n <span>{{ item.text }}</span>\\n @if(item.hasCheckbox) {\\n <ax-icon \\n class=\\\"fa-regular fa-eye ax-text-primary ax-cursor-pointer ax-ml-2\\\" \\n (click)=\\\"handlePreviewMeta(item)\\\"\\n title=\\\"Preview Meta\\\">\\n </ax-icon>\\n }\\n </div>\\n</ng-template>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1jaG9vc2UtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2RvY3VtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9tZXRhLWNob29zZS13aWRnZXQvbWV0YS1jaG9vc2UtcG9wdXAvbWV0YS1jaG9vc2UtcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2RvY3VtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9tZXRhLWNob29zZS13aWRnZXQvbWV0YS1jaG9vc2UtcG9wdXAvbWV0YS1jaG9vc2UtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlELE1BQU0sOEJBQThCLENBQUM7QUFDL0csT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxvQ0FBb0MsRUFBdUYsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoTCxPQUFPLEVBQUUsT0FBTyxFQUFlLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENB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Q1AsQ0FBQztJQUNMLENBQUM7OEdBbFRRLDJCQUEyQjtrR0FBM0IsMkJBQTJCLG9FQUp6QixFQUVWLGlEQ3RFTCw0cElBK0ZBO2dCRC9DUSxVQUFVO2dCQUNWLFlBQVk7Z0JBQ1osU0FBUztnQkFDVCxpQkFBaUIsNFlBQ2pCLGdCQUFnQiw0b0JBQ2hCLGlCQUFpQixzY0FDakIsY0FBYyw2WEFDZCxtQkFBbUIsOEJBQ25CLGdCQUFnQixxU0FDaEIsZUFBZSw4QkFDZixnQkFBZ0IsOGJBQ2hCLGFBQWE7Z0JBQ2IsdUJBQXVCO2dCQUN2QixXQUFXLHNoQkFDWCxPQUFPLHdjQUNQLGFBQWE7Z0JBQ2IsUUFBUTtnQkFDUixXQUFXOzsyRkFPTiwyQkFBMkI7a0JBN0J2QyxTQUFTOytCQUNJLHVCQUF1QixXQUd4Qjt3QkFDTCxVQUFVO3dCQUNWLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYix1QkFBdUI7d0JBQ3ZCLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxhQUFhO3dCQUNiLFFBQVE7d0JBQ1IsV0FBVztxQkFDZCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLEVBRVYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24sIHZpZXdDaGlsZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQVhCYXNlUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhUcmVlVmlld01vZHVsZSwgQVhUcmVlSXRlbUNsaWNrQmFzZUV2ZW50LCBBWFRyZWVWaWV3Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RyZWUtdmlldyc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhNTWV0YURhdGFEZWZpbml0aW9uQ2F0ZWdvcnlTZXJ2aWNlLCBBWE1NZXRhRGF0YURlZmluaXRpb25DYXRlZ29yeVdpdGhJdGVtc0VudGl0eU1vZGVsLCBBWE1NZXRhRGF0YURlZmluaXRpb25FbnRpdHlNb2RlbCB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9wbGF0Zm9ybS1tYW5hZ2VtZW50JztcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcmFnSGFuZGxlLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBBWENoZWNrQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NoZWNrLWJveCc7XG5pbXBvcnQgeyBBWFRleHRCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGV4dC1ib3gnO1xuaW1wb3J0IHsgQVhDb2xsYXBzZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb2xsYXBzZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFYTGFiZWxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbGFiZWwnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBBWFBNZXRhRGF0YURlZmluaXRpb24gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBNZXRhVHJlZUl0ZW0gZXh0ZW5kcyBBWFBNZXRhRGF0YURlZmluaXRpb24ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgcGFyZW50SWQ/OiBzdHJpbmc7XG4gICAgaGFzQ2hpbGQ/OiBib29sZWFuO1xuICAgIGhhc0NoZWNrYm94PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBjaGlsZHJlbiBjb2xsZWN0aW9uIGZvciBuZXN0ZWQgdHJlZSByZW5kZXJpbmcuXG4gICAgICovXG4gICAgY2hpbGRyZW4/OiBBWFBNZXRhVHJlZUl0ZW1bXTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbn1cblxuLy8jcmVnaW9uIC0tLS0gICBIZWxwZXIgSW50ZXJmYWNlcyAgIC0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RlZENvbmZpZyBleHRlbmRzIEFYUE1ldGFUcmVlSXRlbSB7XG4gICAgaXNSZXF1aXJlZDogYm9vbGVhbjtcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xufVxuXG4vLyNlbmRyZWdpb25cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheHAtbWV0YS1jaG9vc2UtcG9wdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tZXRhLWNob29zZS1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL21ldGEtY2hvb3NlLXBvcHVwLmNvbXBvbmVudC5zY3NzJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC8vIEFuZ3VsYXJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICAvLyBBQ29yZVhcbiAgICAgICAgQVhTZWFyY2hCb3hNb2R1bGUsXG4gICAgICAgIEFYVHJlZVZpZXdNb2R1bGUsXG4gICAgICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgICAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICAgICAgQVhDaGVja0JveE1vZHVsZSxcbiAgICAgICAgQVhUZXh0Qm94TW9kdWxlLFxuICAgICAgICBBWENvbGxhcHNlTW9kdWxlLFxuICAgICAgICBBWExhYmVsTW9kdWxlLFxuICAgICAgICAvLyBDREsgRHJhZ0Ryb3AgbW9kdWxlc1xuICAgICAgICBDZGtEcm9wTGlzdCxcbiAgICAgICAgQ2RrRHJhZyxcbiAgICAgICAgQ2RrRHJhZ0hhbmRsZSxcbiAgICAgICAgLy8gRm9ybXNcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQTWV0YUNob29zZVBvcHVwQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUGFnZUNvbXBvbmVudCB7XG5cbiAgICBwcm90ZWN0ZWQgY2F0ZWdvcnlTZXJ2aWNlID0gaW5qZWN0KEFYTU1ldGFEYXRhRGVmaW5pdGlvbkNhdGVnb3J5U2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHdvcmtmbG93ID0gaW5qZWN0KEFYUFdvcmtmbG93U2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgaW5pdGlhbERhdGE6IFNlbGVjdGVkQ29uZmlnW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEhvbGRzIHRoZSBjb21wbGV0ZSBsaXN0IG9mIHRyZWUgaXRlbXMgaW4gYSBmbGF0dGVuZWQgc3RydWN0dXJlLlxuICAgICAqIFRoaXMgc3RydWN0dXJlIG1ha2VzIGl0IGVhc3kgdG86XG4gICAgICogIDEpIFByb3ZpZGUgY2hpbGRyZW4gbGF6aWx5IHZpYSBgcHJvdmlkZUxhenlUcmVlVmlld2AgdXNpbmcgYHBhcmVudElkYC5cbiAgICAgKiAgMikgUGVyZm9ybSBzZWFyY2ggYWNyb3NzIGFsbCBsZXZlbHMgd2hpbGUgc3RpbGwgYmVpbmcgYWJsZSB0byBpbmNsdWRlXG4gICAgICogICAgIGFuY2VzdG9yIG5vZGVzIG9mIG1hdGNoZWQgaXRlbXMuXG4gICAgICovXG4gICAgdHJlZVZpZXdEYXRhID0gc2lnbmFsPEFYUE1ldGFUcmVlSXRlbVtdPihbXSk7XG5cbiAgICAvKipcbiAgICAgKiBGbGF0IGxpc3Qgb2YgQUxMIG5vZGVzIChmb3IgZWFzeSBsb29rLXVwcyBkdXJpbmcgc2VhcmNoKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIG9yaWdpbmFsRmxhdERhdGE6IEFYUE1ldGFUcmVlSXRlbVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBPcmlnaW5hbCAqbmVzdGVkKiB0cmVlIHN0cnVjdHVyZSAodXNlZCB0byByZXNldCBhbmQgdG8gcmVidWlsZCBmaWx0ZXJlZCB0cmVlcykuXG4gICAgICovXG4gICAgcHJpdmF0ZSBvcmlnaW5hbE5lc3RlZERhdGE6IEFYUE1ldGFUcmVlSXRlbVtdID0gW107XG5cbiAgICBwcm90ZWN0ZWQgc2VhcmNoVGVybSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgU2VsZWN0ZWQgQ29uZmlncyAgIC0tLS1cblxuICAgIHNlbGVjdGVkQ29uZmlncyA9IHNpZ25hbDxTZWxlY3RlZENvbmZpZ1tdPihbXSk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNhdGVnb3J5U2VydmljZS5nZXRBbGxXaXRoSXRlbXMoKS50aGVuKChjYXRlZ29yaWVzKSA9PiB7XG5cbiAgICAgICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIEZ1bmN0aW9ucyAgIC0tLS1cblxuICAgICAgICAgICAgY29uc3QgY29udmVydENhdGVnb3J5VG9UcmVlSXRlbSA9IChjYXRlZ29yeTogQVhNTWV0YURhdGFEZWZpbml0aW9uQ2F0ZWdvcnlXaXRoSXRlbXNFbnRpdHlNb2RlbDxzdHJpbmc+KTogQVhQTWV0YVRyZWVJdGVtID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYXRlZ29yeUNoaWxkcmVuOiBBWFBNZXRhVHJlZUl0ZW1bXSA9IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWFwIHN1Yi1jYXRlZ29yaWVzIHJlY3Vyc2l2ZWx5XG4gICAgICAgICAgICAgICAgICAgIC4uLmNhdGVnb3J5LmNhdGVnb3JpZXMubWFwKChjOiBBWE1NZXRhRGF0YURlZmluaXRpb25DYXRlZ29yeVdpdGhJdGVtc0VudGl0eU1vZGVsPHN0cmluZz4pID0+IGNvbnZlcnRDYXRlZ29yeVRvVHJlZUl0ZW0oYykpLFxuICAgICAgICAgICAgICAgICAgICAvLyBNYXAgaXRlbXMgb2YgY3VycmVudCBjYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAuLi5jYXRlZ29yeS5pdGVtcy5tYXAoKGl0ZW06IEFYTU1ldGFEYXRhRGVmaW5pdGlvbkVudGl0eU1vZGVsKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IGNhdGVnb3J5LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ2hlY2tib3g6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2U6IGl0ZW0uaW50ZXJmYWNlIGFzIHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGNhdGVnb3J5LmlkLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBjYXRlZ29yeS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IGNhdGVnb3J5LnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICBoYXNDaGVja2JveDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBjYXRlZ29yeUNoaWxkcmVuLFxuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLy9mYWtlXG4gICAgICAgICAgICAgICAgICAgIGludGVyZmFjZTogJycsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJydcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgICAgIC8vIEJ1aWxkICoqbmVzdGVkKiogdHJlZSBzdHJ1Y3R1cmUgZmlyc3Qgc28gdGhhdCBlYWNoIHBhcmVudFxuICAgICAgICAgICAgLy8gY29udGFpbnMgaXRzIGNoaWxkcmVuIGFycmF5IChzaW1pbGFyIHRvIHRoZSBzYW1wbGUgYXQgbGluZSAyMDgpLlxuICAgICAgICAgICAgY29uc3QgbmVzdGVkVHJlZTogQVhQTWV0YVRyZWVJdGVtW10gPSBjYXRlZ29yaWVzLm1hcCgoYykgPT4gY29udmVydENhdGVnb3J5VG9UcmVlSXRlbShjKSk7XG5cbiAgICAgICAgICAgIC8vIEFkZGl0aW9uYWxseSBidWlsZCBhIGZsYXR0ZW5lZCBsaXN0IG9mIGFsbCBub2RlcyAoc2FtZSBvYmplY3RzKSBzb1xuICAgICAgICAgICAgLy8gdGhhdCB3ZSBjYW4gcmUtdXNlIHRoZSBleGlzdGluZyBzZWFyY2ggaW1wbGVtZW50YXRpb24gd2hpY2hcbiAgICAgICAgICAgIC8vIGV4cGVjdHMgYSBmbGF0IGFycmF5LlxuICAgICAgICAgICAgY29uc3QgZmxhdExpc3Q6IEFYUE1ldGFUcmVlSXRlbVtdID0gW107XG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0RmxhdCA9IChub2RlczogQVhQTWV0YVRyZWVJdGVtW10pID0+IHtcbiAgICAgICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZsYXRMaXN0LnB1c2gobik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG4uY2hpbGRyZW4pICYmIG4uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdEZsYXQobi5jaGlsZHJlbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb2xsZWN0RmxhdChuZXN0ZWRUcmVlKTtcblxuICAgICAgICAgICAgLy8gLS0tICAgQXBwbHkgaW5pdGlhbCBzZWxlY3Rpb25zICAgLS0tXG4gICAgICAgICAgICBpZiAodGhpcy5pbml0aWFsRGF0YSAmJiB0aGlzLmluaXRpYWxEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbml0aWFsSWRzID0gbmV3IFNldCh0aGlzLmluaXRpYWxEYXRhLm1hcCgoZCkgPT4gZC5pZCkpO1xuXG4gICAgICAgICAgICAgICAgZmxhdExpc3QuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5oYXNDaGVja2JveCAmJiBpbml0aWFsSWRzLmhhcyhub2RlLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBQZXJzaXN0IG9yaWdpbmFsIGRhdGEgKGJvdGggZmxhdHRlbmVkIGFuZCBuZXN0ZWQpICYgaW5pdGlhbGlzZSByZWFjdGl2ZSBzaWduYWwuXG4gICAgICAgICAgICB0aGlzLm9yaWdpbmFsRmxhdERhdGEgPSBmbGF0TGlzdDtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxOZXN0ZWREYXRhID0gbmVzdGVkVHJlZTtcblxuICAgICAgICAgICAgLy8gU2V0IGluaXRpYWwgdHJlZSB2aWV3IGRhdGEgdG8gZGlzcGxheSB0aGUgdHJlZVxuICAgICAgICAgICAgdGhpcy50cmVlVmlld0RhdGEuc2V0KFsuLi5uZXN0ZWRUcmVlXSk7XG5cbiAgICAgICAgICAgIC8vIEluaXRpYWxpc2Ugc2VsZWN0ZWQgbGlzdCBpZiBhbnkgaW5pdGlhbCBzZWxlY3Rpb25zXG4gICAgICAgICAgICB0aGlzLnN5bmNocm9uaXNlU2VsZWN0ZWRDb25maWdzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb25maWdzLnNldCh0aGlzLmluaXRpYWxEYXRhID8/IFtdKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlU2VsZWN0Q2xpY2soKSB7XG4gICAgICAgIC8vIFJldHVybiB0aGUgY29uZmlndXJlZCBzZWxlY3RlZCBpdGVtcyBmcm9tIHRoZSByaWdodCBwYW5lbFxuICAgICAgICBjb25zdCBzZWxlY3RlZENvbmZpZ3MgPSB0aGlzLnNlbGVjdGVkQ29uZmlncygpO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZENvbmZpZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZShzZWxlY3RlZENvbmZpZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNsb3NlQ2xpY2soKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlQ2hhbmdlU2VhcmNoVmFsdWUoZTogQVhWYWx1ZUNoYW5nZWRFdmVudCkge1xuICAgICAgICBjb25zdCB0ZXJtID0gKGUudmFsdWUgPz8gJycpLnRyaW0oKTtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtLnNldCh0ZXJtKTtcblxuICAgICAgICAvLyBSZXNldCB0byB0aGUgcHJpc3RpbmUgbmVzdGVkIHRyZWUgd2hlbiBzZWFyY2ggaXMgY2xlYXJlZC5cbiAgICAgICAgaWYgKCF0ZXJtKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVWaWV3RGF0YS5zZXQoWy4uLnRoaXMub3JpZ2luYWxOZXN0ZWREYXRhXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb3dlcmVkVGVybSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAvLyBCdWlsZCBhIHF1aWNrIGxvb2t1cCBtYXAgdG8gdHJhdmVyc2UgYW5jZXN0b3JzIGVmZmljaWVudGx5XG4gICAgICAgIGNvbnN0IG1hcEJ5SWQgPSBuZXcgTWFwPHN0cmluZywgQVhQTWV0YVRyZWVJdGVtPihcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxGbGF0RGF0YS5tYXAoKGl0ZW0pID0+IFtpdGVtLmlkLCBpdGVtXSlcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBIZWxwZXIgdG8gY29sbGVjdCBhbGwgYW5jZXN0b3JzIG9mIGEgZ2l2ZW4gbm9kZVxuICAgICAgICBjb25zdCBjb2xsZWN0QW5jZXN0b3JzID0gKG5vZGU6IEFYUE1ldGFUcmVlSXRlbSk6IEFYUE1ldGFUcmVlSXRlbVtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFuY2VzdG9yczogQVhQTWV0YVRyZWVJdGVtW10gPSBbXTtcbiAgICAgICAgICAgIGxldCBjdXJyZW50UGFyZW50SWQgPSBub2RlLnBhcmVudElkO1xuICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRQYXJlbnRJZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IG1hcEJ5SWQuZ2V0KGN1cnJlbnRQYXJlbnRJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFuY2VzdG9ycy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmVudElkID0gcGFyZW50LnBhcmVudElkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFuY2VzdG9ycztcbiAgICAgICAgfTtcblxuICAgICAgICAvLyAxKSBGaW5kIGFsbCBub2RlcyB3aG9zZSB0ZXh0IGNvbnRhaW5zIHRoZSBzZWFyY2ggdGVybVxuICAgICAgICBjb25zdCBtYXRjaGVkTm9kZXMgPSB0aGlzLm9yaWdpbmFsRmxhdERhdGEuZmlsdGVyKChpdGVtKSA9PlxuICAgICAgICAgICAgaXRlbS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJlZFRlcm0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gMikgQ29sbGVjdCB0aGVpciBhbmNlc3RvcnMgdG8gZW5zdXJlIHRoZSB0cmVlIGNhbiByZW5kZXIgY29ycmVjdCBwYXRoc1xuICAgICAgICBjb25zdCByZXN1bHRTZXQgPSBuZXcgTWFwPHN0cmluZywgQVhQTWV0YVRyZWVJdGVtPigpO1xuICAgICAgICBtYXRjaGVkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0U2V0LnNldChub2RlLmlkLCBub2RlKTtcbiAgICAgICAgICAgIGNvbGxlY3RBbmNlc3RvcnMobm9kZSkuZm9yRWFjaCgoYW5jZXN0b3IpID0+IHJlc3VsdFNldC5zZXQoYW5jZXN0b3IuaWQsIGFuY2VzdG9yKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAvLyBFbnN1cmUgY2hpbGQgbm9kZXMgYXJlIE5PVCByZW5kZXJlZCBhdCB0aGUgcm9vdCBsZXZlbC5cbiAgICAgICAgLy8gV2Ugb25seSBwYXNzIG5vZGVzIHRvIHRoZSB0cmVlIGNvbXBvbmVudCB0aGF0IGRvICoqbm90KipcbiAgICAgICAgLy8gaGF2ZSB0aGVpciBwYXJlbnQgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBmaW5hbCByZXN1bHQgc2V0LlxuICAgICAgICAvLyBUaGlzIHByZXNlcnZlcyB0aGUgY29ycmVjdCBoaWVyYXJjaHkgYW5kIHByZXZlbnRzIGR1cGxpY2F0ZXNcbiAgICAgICAgLy8gbGlrZSB0aGUgZXh0cmEgcm9vdC1sZXZlbCBlbnRyeSBoaWdobGlnaHRlZCBpbiB5ZWxsb3cuXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAvLyBCdWlsZCBhICpuZXN0ZWQqIHRyZWUgdGhhdCBjb250YWlucyBPTkxZIG5vZGVzIHByZXNlbnQgaW4gYHJlc3VsdFNldGAuXG4gICAgICAgIGNvbnN0IGlkU2V0ID0gbmV3IFNldDxzdHJpbmc+KHJlc3VsdFNldC5rZXlzKCkpO1xuXG4gICAgICAgIGNvbnN0IGNsb25lSWZJbmNsdWRlZCA9IChub2RlOiBBWFBNZXRhVHJlZUl0ZW0pOiBBWFBNZXRhVHJlZUl0ZW0gfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmICghaWRTZXQuaGFzKG5vZGUuaWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNsb25lZDogQVhQTWV0YVRyZWVJdGVtID0ge1xuICAgICAgICAgICAgICAgIC4uLm5vZGUsXG4gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGZyZXNoIGNoaWxkcmVuIGFycmF5ICh3aWxsIGJlIHBvcHVsYXRlZCByZWN1cnNpdmVseSlcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjID0gY2xvbmVJZkluY2x1ZGVkKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lZC5jaGlsZHJlbiEucHVzaChjKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2xvbmVkO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkUm9vdHM6IEFYUE1ldGFUcmVlSXRlbVtdID0gW107XG4gICAgICAgIHRoaXMub3JpZ2luYWxOZXN0ZWREYXRhLmZvckVhY2goKHJvb3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lZFJvb3QgPSBjbG9uZUlmSW5jbHVkZWQocm9vdCk7XG4gICAgICAgICAgICBpZiAoY2xvbmVkUm9vdCkge1xuICAgICAgICAgICAgICAgIGZpbHRlcmVkUm9vdHMucHVzaChjbG9uZWRSb290KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy50cmVlVmlld0RhdGEuc2V0KGZpbHRlcmVkUm9vdHMpO1xuICAgIH1cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgVHJlZSBJbnRlcmFjdGlvbiBIYW5kbGVycyAgIC0tLS1cblxuICAgIHByb3RlY3RlZCBoYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKGU6IEFYVHJlZUl0ZW1DbGlja0Jhc2VFdmVudCkge1xuICAgICAgICAvLyBUcmVlIHRvZ2dsZXMgc2VsZWN0aW9uIGludGVybmFsbHk7IGp1c3Qgc3luYyBjb25maWdzIGFmdGVyd2FyZHNcbiAgICAgICAgdGhpcy5zeW5jaHJvbmlzZVNlbGVjdGVkQ29uZmlncygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3luY2hyb25pc2VTZWxlY3RlZENvbmZpZ3MoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZXMgPSB0aGlzLm9yaWdpbmFsRmxhdERhdGEuZmlsdGVyKChuKSA9PiBuLmhhc0NoZWNrYm94ICYmIG4uaXNTZWxlY3RlZCk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbmZpZ3MudXBkYXRlKChwcmV2KSA9PiB7XG4gICAgICAgICAgICAvLyBSZW1vdmUgY29uZmlncyB0aGF0IGFyZSBubyBsb25nZXIgc2VsZWN0ZWRcbiAgICAgICAgICAgIGxldCBuZXh0ID0gcHJldi5maWx0ZXIoKGNmZykgPT4gc2VsZWN0ZWROb2Rlcy5zb21lKChuKSA9PiBuLmlkID09PSBjZmcuaWQpKTtcblxuICAgICAgICAgICAgLy8gQWRkIG5ldyBjb25maWdzXG4gICAgICAgICAgICBzZWxlY3RlZE5vZGVzLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW5leHQuc29tZSgoY2ZnKSA9PiBjZmcuaWQgPT09IG4uaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQucHVzaCh7IC4uLm4sIGlzUmVxdWlyZWQ6IGZhbHNlLCBwbGFjZWhvbGRlcjogJycgICwgc3RhdHVzOiAndGVtcG9yYXJ5JyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIFsuLi5uZXh0XTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHRvZ2dsZVNlbGVjdGlvbihjZmc6IFNlbGVjdGVkQ29uZmlnKSB7XG4gICAgICAgIC8vIEZpbmQgdGhlIG9yaWdpbmFsIG5vZGUgaW4gZmxhdERhdGEgYW5kIHVwZGF0ZSBpdFxuICAgICAgICBjb25zdCBvcmlnaW5hbE5vZGUgPSB0aGlzLm9yaWdpbmFsRmxhdERhdGEuZmluZChuID0+IG4uaWQgPT09IGNmZy5pZCk7XG4gICAgICAgIGlmIChvcmlnaW5hbE5vZGUpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsTm9kZS5pc1NlbGVjdGVkID0gIW9yaWdpbmFsTm9kZS5pc1NlbGVjdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9yY2UgdHJlZSB2aWV3IHRvIHVwZGF0ZSBieSB0cmlnZ2VyaW5nIHNpZ25hbCBjaGFuZ2VcbiAgICAgICAgdGhpcy50cmVlVmlld0RhdGEuc2V0KFsuLi50aGlzLnRyZWVWaWV3RGF0YSgpXSk7XG5cbiAgICAgICAgdGhpcy5zeW5jaHJvbmlzZVNlbGVjdGVkQ29uZmlncygpO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBEcmFnICYgRHJvcCAoT3JkZXJpbmcpICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIGhhbmRsZURyb3AoZXZlbnQ6IENka0RyYWdEcm9wPFNlbGVjdGVkQ29uZmlnW10+KSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBbLi4udGhpcy5zZWxlY3RlZENvbmZpZ3MoKV07XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheShsaXN0LCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29uZmlncy5zZXQobGlzdCk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIE1hbnVhbCBPcmRlcmluZyBNZXRob2RzICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIG1vdmVJdGVtVXAoZTogTW91c2VFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoaW5kZXggPD0gMCkgcmV0dXJuOyAvLyBBbHJlYWR5IGF0IHRvcFxuXG4gICAgICAgIGNvbnN0IGxpc3QgPSBbLi4udGhpcy5zZWxlY3RlZENvbmZpZ3MoKV07XG4gICAgICAgIFtsaXN0W2luZGV4IC0gMV0sIGxpc3RbaW5kZXhdXSA9IFtsaXN0W2luZGV4XSwgbGlzdFtpbmRleCAtIDFdXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbmZpZ3Muc2V0KGxpc3QpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBtb3ZlSXRlbURvd24oZTogTW91c2VFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCBjdXJyZW50TGlzdCA9IHRoaXMuc2VsZWN0ZWRDb25maWdzKCk7XG4gICAgICAgIGlmIChpbmRleCA+PSBjdXJyZW50TGlzdC5sZW5ndGggLSAxKSByZXR1cm47IC8vIEFscmVhZHkgYXQgYm90dG9tXG5cbiAgICAgICAgY29uc3QgbGlzdCA9IFsuLi5jdXJyZW50TGlzdF07XG4gICAgICAgIFtsaXN0W2luZGV4XSwgbGlzdFtpbmRleCArIDFdXSA9IFtsaXN0W2luZGV4ICsgMV0sIGxpc3RbaW5kZXhdXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbmZpZ3Muc2V0KGxpc3QpO1xuXG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFRlbXBsYXRlIEFjdGlvbnMgICAtLS0tXG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlUHJldmlld01ldGEoaXRlbTogQVhQTWV0YVRyZWVJdGVtKSB7XG4gICAgICAgIGlmIChpdGVtLmhhc0NoZWNrYm94KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ29wZW4tZm9ybS10ZW1wbGF0ZScsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiBpdGVtLmludGVyZmFjZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtcC00IGF4LWZsZXggYXgtZ2FwLTQgYXgtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDwhLS0gTGVmdDogTWV0YSB0cmVlIC0tPlxuICA8ZGl2IGNsYXNzPVwiYXgtZmxleC0xIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTQgYXgtbWluLXctMFwiPlxuICAgIDxheC1zZWFyY2gtYm94XG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldC5sb29rdXAuc2VhcmNoJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgIFt2YWx1ZV09XCJzZWFyY2hUZXJtKClcIlxuICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImhhbmRsZUNoYW5nZVNlYXJjaFZhbHVlKCRldmVudClcIlxuICAgICAgPjxheC1jbGVhci1idXR0b24+PC9heC1jbGVhci1idXR0b25cbiAgICA+PC9heC1zZWFyY2gtYm94PlxuXG4gICAgPGF4LXRyZWUtdmlld1xuICAgICAgW2hhc0NoaWxkRmllbGRdPVwiJ2hhc0NoaWxkJ1wiXG4gICAgICBbcGFyZW50RmllbGRdPVwiJ3BhcmVudElkJ1wiXG4gICAgICBbaXRlbXNdPVwidHJlZVZpZXdEYXRhKClcIlxuICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiJ211bHRpcGxlJ1wiXG4gICAgICBbc2VsZWN0ZWRGaWVsZF09XCInaXNTZWxlY3RlZCdcIlxuICAgICAgKG9uU2VsZWN0aW9uQ2hhbmdlZCk9XCJoYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgW2ZvY3VzTm9kZUVuYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3ctYXV0b1wiXG4gICAgPjwvYXgtdHJlZS12aWV3PlxuICA8L2Rpdj5cblxuICA8IS0tIFJpZ2h0OiBTZWxlY3RlZCBsaXN0IC0tPlxuICA8ZGl2IGNsYXNzPVwiYXgtdy0xLzIgYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMyBheC1zZWxlY3Qtbm9uZSBheC1vdmVyZmxvdy1hdXRvIGF4LWgtWzQwMHB4XVwiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiaGFuZGxlRHJvcCgkZXZlbnQpXCI+XG4gICAgPGg2IGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LXNtXCIgKm5nSWY9XCJzZWxlY3RlZENvbmZpZ3MoKS5sZW5ndGhcIj5TZWxlY3RlZCBJdGVtczwvaDY+XG5cbiAgICBAZm9yKGNmZyBvZiBzZWxlY3RlZENvbmZpZ3MoKTsgdHJhY2sgY2ZnLmlkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPGRpdiBjZGtEcmFnIGNsYXNzPVwiYXgtYmctd2hpdGUgYXgtcm91bmRlZC1tZCBheC1zaGFkb3ctc20gYXgtYm9yZGVyIGF4LWJvcmRlci1ncmF5LTIwMFwiIGNka0RyYWdCb3VuZGFyeT1cIi5heC1zZWxlY3Qtbm9uZVwiPlxuICAgICAgICA8IS0tIENvbGxhcHNlIHdpdGggY3VzdG9tIGhlYWRlciB0ZW1wbGF0ZSAtLT5cbiAgICAgICAgPGF4LWNvbGxhcHNlLWdyb3VwIGxvb2s9XCJmaWxsXCI+XG4gICAgICAgICAgPGF4LWNvbGxhcHNlIGNhcHRpb249XCJPcHRpb25zXCIgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRwbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICA8YXgtY2hlY2stYm94XG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjZmcuaXNSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiY2ZnLmlzUmVxdWlyZWQgPSAkZXZlbnQudmFsdWUgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YXgtbGFiZWw+e3sgJ3JlcXVpcmVkJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9heC1sYWJlbD5cbiAgICAgICAgICAgICAgPC9heC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8IS0tIEhlYWRlciB0ZW1wbGF0ZSAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVHBsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LXctZnVsbCBheC1weC0zIGF4LXB5LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtZ3JpcC1kb3RzLXZlcnRpY2FsIGF4LWN1cnNvci1tb3ZlIGF4LXRleHQtZ3JheS00MDBcIiBjZGtEcmFnSGFuZGxlPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1zbSBheC1mb250LW1lZGl1bVwiPnt7IGNmZy50ZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi11cCBheC10ZXh0LXByaW1hcnkgYXgtY3Vyc29yLXBvaW50ZXIgYXgtdGV4dC14c1wiIFxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUl0ZW1VcCgkZXZlbnQsaSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtb3BhY2l0eS0zMF09XCJpID09PSAwXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LWN1cnNvci1ub3QtYWxsb3dlZF09XCJpID09PSAwXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJNb3ZlIFVwXCI+XG4gICAgICAgICAgICAgICAgICA8L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYS1zb2xpZCBmYS1jaGV2cm9uLWRvd24gYXgtdGV4dC1wcmltYXJ5IGF4LWN1cnNvci1wb2ludGVyIGF4LXRleHQteHMgYXgtcHgtMlwiIFxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUl0ZW1Eb3duKCRldmVudCxpKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1vcGFjaXR5LTMwXT1cImkgPT09IHNlbGVjdGVkQ29uZmlncygpLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtY3Vyc29yLW5vdC1hbGxvd2VkXT1cImkgPT09IHNlbGVjdGVkQ29uZmlncygpLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIk1vdmUgRG93blwiPlxuICAgICAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS14bWFyayBheC10ZXh0LWRhbmdlciBheC1jdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb24oY2ZnKVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvYXgtY29sbGFwc2U+XG4gICAgICAgIDwvYXgtY29sbGFwc2UtZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxheC1mb290ZXI+XG4gIDxheC1zdWZmaXg+XG4gICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBbdGV4dF09XCIoJ2Nsb3NlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSFcIiAob25DbGljayk9XCJoYW5kbGVDbG9zZUNsaWNrKClcIj4gPC9heC1idXR0b24+XG4gICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiBbdGV4dF09XCIoJ3NlbGVjdCcgfCB0cmFuc2xhdGUgfCBhc3luYykhXCIgKG9uQ2xpY2spPVwiaGFuZGxlU2VsZWN0Q2xpY2soKVwiPlxuICAgIDwvYXgtYnV0dG9uPlxuICA8L2F4LXN1ZmZpeD5cbjwvYXgtZm9vdGVyPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtaXRlbT5cbiAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC13LWZ1bGxcIj5cbiAgICA8c3Bhbj57eyBpdGVtLnRleHQgfX08L3NwYW4+XG4gICAgQGlmKGl0ZW0uaGFzQ2hlY2tib3gpIHtcbiAgICA8YXgtaWNvbiBcbiAgICAgIGNsYXNzPVwiZmEtcmVndWxhciBmYS1leWUgYXgtdGV4dC1wcmltYXJ5IGF4LWN1cnNvci1wb2ludGVyIGF4LW1sLTJcIiBcbiAgICAgIChjbGljayk9XCJoYW5kbGVQcmV2aWV3TWV0YShpdGVtKVwiXG4gICAgICB0aXRsZT1cIlByZXZpZXcgTWV0YVwiPlxuICAgIDwvYXgtaWNvbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ=="],"names":["i2","i4","i5","i8","i9","i10"],"mappings":"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"}
|