@acorex/platform 20.3.0-next.12 → 20.3.0-next.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/index.d.ts +399 -368
- package/core/index.d.ts +3 -2
- package/fesm2022/acorex-platform-auth.mjs +19 -19
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +114 -162
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +45 -44
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +16 -16
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +1231 -2418
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +1317 -254
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +81 -81
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-entity-create-entity.command-764ie8R8.mjs → acorex-platform-layout-entity-create-entity.command-CuueLekJ.mjs} +4 -4
- package/fesm2022/{acorex-platform-layout-entity-create-entity.command-764ie8R8.mjs.map → acorex-platform-layout-entity-create-entity.command-CuueLekJ.mjs.map} +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +473 -183
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +21 -21
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +2667 -0
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-DSaD9Fwc.mjs → acorex-platform-layout-widgets-button-widget-designer.component-C82aG5Rf.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-C82aG5Rf.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs → acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-CMmz70I8.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-CMmz70I8.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs → acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-DDOyf7NG.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-DDOyf7NG.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs → acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-flsveRJc.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-flsveRJc.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs → acorex-platform-layout-widgets-extra-properties-values-widget-view.component-CFXLM9Ls.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-CFXLM9Ls.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs → acorex-platform-layout-widgets-extra-properties-widget-edit.component-1Wd5IUpo.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-1Wd5IUpo.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs → acorex-platform-layout-widgets-extra-properties-widget-view.component-WLyXXg19.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-WLyXXg19.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs → acorex-platform-layout-widgets-file-list-popup.component-DxTXIO_k.mjs} +8 -8
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-DxTXIO_k.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-B-ZEi2yd.mjs → acorex-platform-layout-widgets-page-widget-designer.component-44YSAqDc.mjs} +7 -7
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-44YSAqDc.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-CMqq_iOj.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-Dat0cqWe.mjs} +8 -8
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Dat0cqWe.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-CRpjdiNz.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-CtJBzqq_.mjs} +4 -4
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-CtJBzqq_.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-DeSmBqMa.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-Djpj1fNO.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Djpj1fNO.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets.mjs → acorex-platform-layout-widgets.mjs} +987 -616
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -0
- package/fesm2022/acorex-platform-native.mjs +7 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +40 -40
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-oOA674Jd.mjs +115 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-oOA674Jd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs → acorex-platform-themes-default-entity-master-list-view.component-Bk4p9oHD.mjs} +15 -15
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs.map → acorex-platform-themes-default-entity-master-list-view.component-Bk4p9oHD.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CrDQOCpB.mjs +101 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CrDQOCpB.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs → acorex-platform-themes-default-entity-master-single-view.component-CT-1gX4H.mjs} +17 -17
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-CT-1gX4H.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs → acorex-platform-themes-default-error-401.component-CHJFmJ2W.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs.map → acorex-platform-themes-default-error-401.component-CHJFmJ2W.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs → acorex-platform-themes-default-error-404.component-Db8KkVIF.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs.map → acorex-platform-themes-default-error-404.component-Db8KkVIF.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-Bt2PTL7_.mjs → acorex-platform-themes-default-error-offline.component-DH39Viy-.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-Bt2PTL7_.mjs.map → acorex-platform-themes-default-error-offline.component-DH39Viy-.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default.mjs +44 -44
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs → acorex-platform-themes-shared-icon-chooser-view.component-mFBYGE0_.mjs} +5 -5
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-mFBYGE0_.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs → acorex-platform-themes-shared-settings.provider-DY2xFnrv.mjs} +8 -8
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DY2xFnrv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-AeOQxjbS.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-viyyova6.mjs} +5 -5
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-viyyova6.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-DEVzRd6-.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-BrUtKTXd.mjs} +5 -5
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BrUtKTXd.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +66 -55
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +27 -39
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/layout/builder/README.md +2 -3
- package/layout/builder/index.d.ts +456 -879
- package/layout/components/index.d.ts +261 -81
- package/layout/designer/index.d.ts +4 -4
- package/layout/entity/index.d.ts +551 -13
- package/layout/views/index.d.ts +13 -13
- package/layout/widget-core/README.md +4 -0
- package/layout/widget-core/index.d.ts +950 -0
- package/layout/widgets/README.md +4 -0
- package/{widgets → layout/widgets}/index.d.ts +95 -61
- package/package.json +9 -5
- package/themes/shared/index.d.ts +2 -2
- package/workflow/index.d.ts +3 -173
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Ct-ri59W.mjs +0 -115
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Ct-ri59W.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-AeOQxjbS.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DEVzRd6-.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-DSaD9Fwc.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-B-ZEi2yd.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-CMqq_iOj.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-CRpjdiNz.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-DeSmBqMa.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets.mjs.map +0 -1
- package/widgets/README.md +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-layout-builder.mjs","sources":["../tmp-esm2022/layout/builder/lib/builder/widget-status.types.js","../tmp-esm2022/layout/builder/lib/builder/builder.service.js","../tmp-esm2022/layout/builder/lib/builder/context-store.service.js","../tmp-esm2022/layout/builder/lib/builder/widget-catalog.js","../tmp-esm2022/layout/builder/lib/builder/widget.types.js","../tmp-esm2022/layout/builder/lib/builder/widget-base.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/box-model-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/block-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/flex-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/inline-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/flex-item-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/grid-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/grid-item-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/table-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/table-item-ops-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/table-item-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/widget-registery.service.js","../tmp-esm2022/layout/builder/lib/builder/widget-column-renderer.js","../tmp-esm2022/layout/builder/lib/builder/widget-container.component.js","../tmp-esm2022/layout/builder/lib/builder/widget-placeholder.component.js","../tmp-esm2022/layout/builder/lib/builder/widget-renderer.directive.js","../tmp-esm2022/layout/builder/lib/builder/builder.module.js","../tmp-esm2022/layout/builder/lib/builder/helper/property-editor.helper.js","../tmp-esm2022/layout/builder/lib/builder/widget-categories.js","../tmp-esm2022/layout/builder/lib/builder/widget-group.types.js","../tmp-esm2022/layout/builder/acorex-platform-layout-builder.js"],"sourcesContent":["export var AXPPageStatus;\n(function (AXPPageStatus) {\n // Idle statuses\n AXPPageStatus[\"Idle\"] = \"idle\";\n // Rendering statuses\n AXPPageStatus[\"Rendering\"] = \"rendering\";\n AXPPageStatus[\"Rendered\"] = \"rendered\";\n // Processing statuses\n AXPPageStatus[\"Processing\"] = \"processing\";\n // Submission statuses\n AXPPageStatus[\"Submitting\"] = \"submitting\";\n AXPPageStatus[\"Submitted\"] = \"submitted\";\n // Validation statuses\n AXPPageStatus[\"Validating\"] = \"validating\";\n AXPPageStatus[\"Validated\"] = \"validated\";\n // Error handling\n AXPPageStatus[\"Error\"] = \"error\";\n})(AXPPageStatus || (AXPPageStatus = {}));\nexport var AXPWidgetStatus;\n(function (AXPWidgetStatus) {\n // Rendering statuses\n AXPWidgetStatus[\"Rendering\"] = \"rendering\";\n AXPWidgetStatus[\"Rendered\"] = \"rendered\";\n // Processing statuses\n AXPWidgetStatus[\"Processing\"] = \"processing\";\n // Error handling\n AXPWidgetStatus[\"Error\"] = \"error\";\n})(AXPWidgetStatus || (AXPWidgetStatus = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXN0YXR1cy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL3dpZGdldC1zdGF0dXMudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksYUFxQlg7QUFyQkQsV0FBWSxhQUFhO0lBQ3JCLGdCQUFnQjtJQUNoQiw4QkFBYSxDQUFBO0lBRWIscUJBQXFCO0lBQ3JCLHdDQUF1QixDQUFBO0lBQ3ZCLHNDQUFxQixDQUFBO0lBRXJCLHNCQUFzQjtJQUN0QiwwQ0FBeUIsQ0FBQTtJQUV6QixzQkFBc0I7SUFDdEIsMENBQXlCLENBQUE7SUFDekIsd0NBQXVCLENBQUE7SUFFdkIsc0JBQXNCO0lBQ3RCLDBDQUF5QixDQUFBO0lBQ3pCLHdDQUF1QixDQUFBO0lBRXZCLGlCQUFpQjtJQUNqQixnQ0FBZSxDQUFBO0FBQ25CLENBQUMsRUFyQlcsYUFBYSxLQUFiLGFBQWEsUUFxQnhCO0FBRUQsTUFBTSxDQUFOLElBQVksZUFVWDtBQVZELFdBQVksZUFBZTtJQUN2QixxQkFBcUI7SUFDckIsMENBQXVCLENBQUE7SUFDdkIsd0NBQXFCLENBQUE7SUFFckIsc0JBQXNCO0lBQ3RCLDRDQUF5QixDQUFBO0lBRXpCLGlCQUFpQjtJQUNqQixrQ0FBZSxDQUFBO0FBQ25CLENBQUMsRUFWVyxlQUFlLEtBQWYsZUFBZSxRQVUxQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEFYUFBhZ2VTdGF0dXMge1xuICAgIC8vIElkbGUgc3RhdHVzZXNcbiAgICBJZGxlID0gJ2lkbGUnLCAgICAgICAgICAgICAgICAgLy8gVGhlIHBhZ2UgaXMgaWRsZS5cblxuICAgIC8vIFJlbmRlcmluZyBzdGF0dXNlc1xuICAgIFJlbmRlcmluZyA9ICdyZW5kZXJpbmcnLCAgICAgICAvLyBUaGUgcGFnZSBpcyBiZWluZyByZW5kZXJlZC5cbiAgICBSZW5kZXJlZCA9ICdyZW5kZXJlZCcsICAgICAgICAgLy8gVGhlIHJlbmRlcmluZyBwcm9jZXNzIGlzIGNvbXBsZXRlLiBzaG91bGQgYmUgcmVuYW1lZCB0byBpZGxlXG5cbiAgICAvLyBQcm9jZXNzaW5nIHN0YXR1c2VzXG4gICAgUHJvY2Vzc2luZyA9ICdwcm9jZXNzaW5nJywgICAgIC8vIFRoZSBwYWdlIGlzIHBlcmZvcm1pbmcgYSB0YXNrIG9yIGludGVyYWN0aW9uLlxuXG4gICAgLy8gU3VibWlzc2lvbiBzdGF0dXNlc1xuICAgIFN1Ym1pdHRpbmcgPSAnc3VibWl0dGluZycsICAgLy8gVGhlIGZvcm0gaXMgYmVpbmcgc3VibWl0dGVkLlxuICAgIFN1Ym1pdHRlZCA9ICdzdWJtaXR0ZWQnLCAgICAgLy8gU3VibWlzc2lvbiBpcyBjb21wbGV0ZWQuXG5cbiAgICAvLyBWYWxpZGF0aW9uIHN0YXR1c2VzXG4gICAgVmFsaWRhdGluZyA9ICd2YWxpZGF0aW5nJywgICAgIC8vIFRoZSBmb3JtIGlzIGJlaW5nIHZhbGlkYXRlZC5cbiAgICBWYWxpZGF0ZWQgPSAndmFsaWRhdGVkJywgICAgICAgLy8gVmFsaWRhdGlvbiBpcyBjb21wbGV0ZWQuICBcblxuICAgIC8vIEVycm9yIGhhbmRsaW5nXG4gICAgRXJyb3IgPSAnZXJyb3InLFxufVxuXG5leHBvcnQgZW51bSBBWFBXaWRnZXRTdGF0dXMge1xuICAgIC8vIFJlbmRlcmluZyBzdGF0dXNlc1xuICAgIFJlbmRlcmluZyA9ICdyZW5kZXJpbmcnLCAgICAgICAvLyBUaGUgd2lkZ2V0IGlzIGJlaW5nIHJlbmRlcmVkLlxuICAgIFJlbmRlcmVkID0gJ3JlbmRlcmVkJywgICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIHByb2Nlc3MgaXMgY29tcGxldGUuXG5cbiAgICAvLyBQcm9jZXNzaW5nIHN0YXR1c2VzXG4gICAgUHJvY2Vzc2luZyA9ICdwcm9jZXNzaW5nJywgICAgIC8vIFRoZSB3aWRnZXQgaXMgcGVyZm9ybWluZyBhIHRhc2sgb3IgaW50ZXJhY3Rpb24uXG5cbiAgICAvLyBFcnJvciBoYW5kbGluZ1xuICAgIEVycm9yID0gJ2Vycm9yJywgICAgICAgICAgICAgICAvLyBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgYW55IHBoYXNlLlxufVxuIl19","import { computed, Injectable, signal } from '@angular/core';\nimport { set } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXPPageStatus, AXPWidgetStatus } from './widget-status.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPLayoutElement {\n api() {\n return {};\n }\n}\nexport class AXPLayoutBuilderService {\n constructor() {\n this.variables$ = signal({}, ...(ngDevMode ? [{ debugName: \"variables$\" }] : []));\n this.functions$ = signal({}, ...(ngDevMode ? [{ debugName: \"functions$\" }] : []));\n this.onRefresh = new Subject();\n this.widgets = new Map();\n this.onWidgetRegistered = new Subject();\n this.status$ = signal(AXPPageStatus.Rendering, ...(ngDevMode ? [{ debugName: \"status$\" }] : []));\n this.status = this.status$.asReadonly();\n this.isBusy = computed(() => {\n return [AXPPageStatus.Processing, AXPPageStatus.Submitting, AXPPageStatus.Rendering].includes(this.status());\n }, ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n }\n get variables() {\n return this.variables$();\n }\n get functions() {\n return this.functions$();\n }\n updateStatus() {\n this.status$.update(() => this.detectStatus());\n }\n detectStatus() {\n const statuses = Array.from(this.widgets.values()).map((c) => c.status());\n // Rendering statuses\n if (statuses.some((status) => status === AXPWidgetStatus.Rendering)) {\n return AXPPageStatus.Rendering;\n }\n if (statuses.every((status) => status === AXPWidgetStatus.Rendered)) {\n return AXPPageStatus.Rendered;\n }\n // Processing statuses\n if (statuses.some((status) => status === AXPWidgetStatus.Processing)) {\n return AXPPageStatus.Processing;\n }\n // Error handling\n if (statuses.some((status) => status === AXPWidgetStatus.Error)) {\n return AXPPageStatus.Error;\n }\n return AXPPageStatus.Rendered; // Default to Loaded when all widgets are in a completed state\n }\n refresh() {\n setTimeout(() => {\n this.onRefresh.next();\n }, 0);\n }\n setStatus(status) {\n this.status$.set(status);\n }\n setVariables(...args) {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.variables$.set(args[0]);\n else if (args.length == 2) {\n this.variables$.update((v) => set(v, args[0], args[1]));\n }\n }\n setFunctions(...args) {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.functions$.set(args[0]);\n else if (args.length == 2) {\n this.functions$.update((v) => set(v, args[0], args[1]));\n }\n }\n registerWidget(id, widget) {\n this.widgets.set(id, widget);\n this.onWidgetRegistered.next({ id, widget });\n }\n getWidget(id) {\n return this.widgets.get(id);\n }\n /**\n * Waits until a widget with the given id is registered, then resolves with it.\n * If the widget is already registered, resolves immediately.\n * Optionally accepts a timeout (in ms) after which it resolves with undefined.\n */\n async waitForWidget(id, timeoutMs) {\n const existing = this.widgets.get(id);\n if (existing) {\n return existing;\n }\n return new Promise((resolve) => {\n let resolved = false;\n let timer = null;\n const sub = this.onWidgetRegistered.subscribe(({ id: registeredId, widget }) => {\n if (registeredId === id && !resolved) {\n resolved = true;\n sub.unsubscribe();\n if (timer) {\n clearTimeout(timer);\n }\n resolve(widget);\n }\n });\n if (timeoutMs != null && timeoutMs > 0) {\n timer = setTimeout(() => {\n if (!resolved) {\n resolved = true;\n sub.unsubscribe();\n resolve(undefined);\n }\n }, timeoutMs);\n }\n });\n }\n ngOnDestroy() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFJdkUsTUFBTSxPQUFnQixnQkFBZ0I7SUFJcEMsR0FBRztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGO0FBR0QsTUFBTSxPQUFPLHVCQUF1QjtJQURwQztRQUVtQixlQUFVLEdBQUcsTUFBTSxDQUFNLEVBQUUsc0RBQUMsQ0FBQztRQUM3QixlQUFVLEdBQUcsTUFBTSxDQUE4QixFQUFFLHNEQUFDLENBQUM7UUFFdEQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXZELFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztRQUNyQyx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBNEMsQ0FBQztRQUU3RSxZQUFPLEdBQUcsTUFBTSxDQUFnQixhQUFhLENBQUMsU0FBUyxtREFBQyxDQUFDO1FBQzFELFdBQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRW5DLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEs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RSxJQUFJLFlBQVksS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDckMsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDaEIsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNsQixJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUNWLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdEIsQ0FBQztvQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ2QsUUFBUSxHQUFHLElBQUksQ0FBQzt3QkFDaEIsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNsQixPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3JCLENBQUM7Z0JBQ0gsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLEtBQVUsQ0FBQzs4R0EvSFgsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBQYWdlU3RhdHVzLCBBWFBXaWRnZXRTdGF0dXMgfSBmcm9tICcuL3dpZGdldC1zdGF0dXMudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBBWFBMYXlvdXRFbGVtZW50QVBJID0geyBbbmFtZTogc3RyaW5nXTogU3ViamVjdDxhbnk+IHwgRnVuY3Rpb24gfTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUExheW91dEVsZW1lbnQge1xuICBhYnN0cmFjdCBnZXQgaWQoKTogc3RyaW5nIHwgbnVsbDtcbiAgYWJzdHJhY3QgZ2V0IHN0YXR1cygpOiBTaWduYWw8QVhQV2lkZ2V0U3RhdHVzPjtcblxuICBhcGkoKTogQVhQTGF5b3V0RWxlbWVudEFQSSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFyaWFibGVzJCA9IHNpZ25hbDxhbnk+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBmdW5jdGlvbnMkID0gc2lnbmFsPHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb24gfT4oe30pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvblJlZnJlc2g6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgd2lkZ2V0cyA9IG5ldyBNYXA8c3RyaW5nLCBBWFBMYXlvdXRFbGVtZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uV2lkZ2V0UmVnaXN0ZXJlZCA9IG5ldyBTdWJqZWN0PHsgaWQ6IHN0cmluZzsgd2lkZ2V0OiBBWFBMYXlvdXRFbGVtZW50IH0+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXMkID0gc2lnbmFsPEFYUFBhZ2VTdGF0dXM+KEFYUFBhZ2VTdGF0dXMuUmVuZGVyaW5nKTtcbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cyA9IHRoaXMuc3RhdHVzJC5hc1JlYWRvbmx5KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQnVzeSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gW0FYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZywgQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nLCBBWFBQYWdlU3RhdHVzLlJlbmRlcmluZ10uaW5jbHVkZXModGhpcy5zdGF0dXMoKSk7XG4gIH0pO1xuXG4gIGdldCB2YXJpYWJsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGVzJCgpO1xuICB9XG5cbiAgZ2V0IGZ1bmN0aW9ucygpOiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH0ge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9ucyQoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0dXMoKSB7XG4gICAgdGhpcy5zdGF0dXMkLnVwZGF0ZSgoKSA9PiB0aGlzLmRldGVjdFN0YXR1cygpKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0U3RhdHVzKCk6IEFYUFBhZ2VTdGF0dXMge1xuICAgIGNvbnN0IHN0YXR1c2VzID0gQXJyYXkuZnJvbSh0aGlzLndpZGdldHMudmFsdWVzKCkpLm1hcCgoYykgPT4gYy5zdGF0dXMoKSk7XG4gICAgLy8gUmVuZGVyaW5nIHN0YXR1c2VzXG4gICAgaWYgKHN0YXR1c2VzLnNvbWUoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBXaWRnZXRTdGF0dXMuUmVuZGVyaW5nKSkge1xuICAgICAgcmV0dXJuIEFYUFBhZ2VTdGF0dXMuUmVuZGVyaW5nO1xuICAgIH1cbiAgICBpZiAoc3RhdHVzZXMuZXZlcnkoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBXaWRnZXRTdGF0dXMuUmVuZGVyZWQpKSB7XG4gICAgICByZXR1cm4gQVhQUGFnZVN0YXR1cy5SZW5kZXJlZDtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzaW5nIHN0YXR1c2VzXG4gICAgaWYgKHN0YXR1c2VzLnNvbWUoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBXaWRnZXRTdGF0dXMuUHJvY2Vzc2luZykpIHtcbiAgICAgIHJldHVybiBBWFBQYWdlU3RhdHVzLlByb2Nlc3Npbmc7XG4gICAgfVxuXG4gICAgLy8gRXJyb3IgaGFuZGxpbmdcbiAgICBpZiAoc3RhdHVzZXMuc29tZSgoc3RhdHVzKSA9PiBzdGF0dXMgPT09IEFYUFdpZGdldFN0YXR1cy5FcnJvcikpIHtcbiAgICAgIHJldHVybiBBWFBQYWdlU3RhdHVzLkVycm9yO1xuICAgIH1cblxuICAgIHJldHVybiBBWFBQYWdlU3RhdHVzLlJlbmRlcmVkOyAvLyBEZWZhdWx0IHRvIExvYWRlZCB3aGVuIGFsbCB3aWRnZXRzIGFyZSBpbiBhIGNvbXBsZXRlZCBzdGF0ZVxuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub25SZWZyZXNoLm5leHQoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHNldFN0YXR1cyhzdGF0dXM6IEFYUFBhZ2VTdGF0dXMpIHtcbiAgICB0aGlzLnN0YXR1cyQuc2V0KHN0YXR1cyk7XG4gIH1cblxuICBzZXRWYXJpYWJsZXMoa2V5c1ZhbHVlczogYW55KTogdm9pZDtcbiAgc2V0VmFyaWFibGVzKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbiAgc2V0VmFyaWFibGVzKC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09IDApIHJldHVybjtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAxKSB0aGlzLnZhcmlhYmxlcyQuc2V0KGFyZ3NbMF0pO1xuICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09IDIpIHtcbiAgICAgIHRoaXMudmFyaWFibGVzJC51cGRhdGUoKHYpID0+IHNldCh2LCBhcmdzWzBdLCBhcmdzWzFdKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RnVuY3Rpb25zKGtleXNWYWx1ZXM6IGFueSk6IHZvaWQ7XG4gIHNldEZ1bmN0aW9ucyhrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gIHNldEZ1bmN0aW9ucyguLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgZWxzZSBpZiAoYXJncy5sZW5ndGggPT0gMSkgdGhpcy5mdW5jdGlvbnMkLnNldChhcmdzWzBdKTtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAyKSB7XG4gICAgICB0aGlzLmZ1bmN0aW9ucyQudXBkYXRlKCh2KSA9PiBzZXQodiwgYXJnc1swXSwgYXJnc1sxXSkpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyV2lkZ2V0KGlkOiBzdHJpbmcsIHdpZGdldDogQVhQTGF5b3V0RWxlbWVudCkge1xuICAgIHRoaXMud2lkZ2V0cy5zZXQoaWQsIHdpZGdldCk7XG4gICAgdGhpcy5vbldpZGdldFJlZ2lzdGVyZWQubmV4dCh7IGlkLCB3aWRnZXQgfSk7XG4gIH1cblxuICBnZXRXaWRnZXQoaWQ6IHN0cmluZyk6IEFYUExheW91dEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLndpZGdldHMuZ2V0KGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWl0cyB1bnRpbCBhIHdpZGdldCB3aXRoIHRoZSBnaXZlbiBpZCBpcyByZWdpc3RlcmVkLCB0aGVuIHJlc29sdmVzIHdpdGggaXQuXG4gICAqIElmIHRoZSB3aWRnZXQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLCByZXNvbHZlcyBpbW1lZGlhdGVseS5cbiAgICogT3B0aW9uYWxseSBhY2NlcHRzIGEgdGltZW91dCAoaW4gbXMpIGFmdGVyIHdoaWNoIGl0IHJlc29sdmVzIHdpdGggdW5kZWZpbmVkLlxuICAgKi9cbiAgYXN5bmMgd2FpdEZvcldpZGdldChpZDogc3RyaW5nLCB0aW1lb3V0TXM/OiBudW1iZXIpOiBQcm9taXNlPEFYUExheW91dEVsZW1lbnQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMud2lkZ2V0cy5nZXQoaWQpO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxBWFBMYXlvdXRFbGVtZW50IHwgdW5kZWZpbmVkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgbGV0IHJlc29sdmVkID0gZmFsc2U7XG4gICAgICBsZXQgdGltZXI6IGFueSA9IG51bGw7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLm9uV2lkZ2V0UmVnaXN0ZXJlZC5zdWJzY3JpYmUoKHsgaWQ6IHJlZ2lzdGVyZWRJZCwgd2lkZ2V0IH0pID0+IHtcbiAgICAgICAgaWYgKHJlZ2lzdGVyZWRJZCA9PT0gaWQgJiYgIXJlc29sdmVkKSB7XG4gICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIGlmICh0aW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzb2x2ZSh3aWRnZXQpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRpbWVvdXRNcyAhPSBudWxsICYmIHRpbWVvdXRNcyA+IDApIHtcbiAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHJlc29sdmUodW5kZWZpbmVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHRpbWVvdXRNcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG59XG4iXX0=","import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';\nimport { cloneDeep, get, isEqual } from 'lodash-es';\nimport { computed } from '@angular/core';\nimport { setSmart } from '@acorex/platform/core';\nexport class AXPLayoutContextChangeEvent {\n}\nexport const AXPLayoutBuilderContextStore = signalStore(\n// Initial State\nwithState(() => ({\n data: {}, // Shared context data\n state: 'initiated', // Current state\n initialSnapshot: {}, // Snapshot of the first initialized state\n previousSnapshot: {}, // Snapshot of the previous state\n lastChange: {\n state: 'initiated',\n }, // Last change event\n})), \n// Computed Signals\nwithComputed(({ data, state, lastChange, initialSnapshot, previousSnapshot }) => ({\n isChanged: computed(() => state() === 'changed'),\n isReset: computed(() => state() === 'restored'),\n isInitiated: computed(() => state() === 'initiated'),\n isEmpty: computed(() => Object.keys(data()).length === 0),\n isDirty: computed(() => !isEqual(data(), previousSnapshot())),\n snapshot: computed(() => cloneDeep(data())), // Current data snapshot\n initial: computed(() => cloneDeep(initialSnapshot())), // Initial snapshot\n previous: computed(() => cloneDeep(previousSnapshot())), // Previous snapshot\n changeEvent: computed(() => lastChange()), // Reactive last change event\n})), \n// Methods for State Management\nwithMethods((store) => ({\n // Update a specific value\n update(path, value) {\n const currentData = cloneDeep(store.data());\n const oldValue = get(currentData, path);\n // Skip if the value hasn't changed\n if (isEqual(oldValue, value)) {\n return;\n }\n // Update the value and prepare the change event\n const updatedData = setSmart(currentData, path, value);\n const changeEvent = {\n oldValue,\n newValue: value,\n path,\n state: 'changed',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n patch(context) {\n const currentData = cloneDeep(store.data());\n // Update the value and prepare the change event\n const updatedData = { ...currentData, ...context };\n const changeEvent = {\n state: 'patch',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n // Reset to the initial state\n reset() {\n const initialData = store.initial();\n const changeEvent = {\n oldValue: cloneDeep(store.data()), // Current data becomes old value\n newValue: cloneDeep(initialData), // Reset to the initial state\n path: '',\n state: 'restored',\n data: initialData,\n };\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: initialData,\n state: 'restored',\n lastChange: changeEvent,\n });\n },\n // Initialize the state\n set(initialData) {\n const currentData = store.data();\n if (isEqual(currentData, initialData)) {\n return; // Skip if the current state matches the initial state\n }\n const changeEvent = {\n oldValue: null,\n newValue: cloneDeep(initialData),\n path: '',\n state: 'initiated',\n data: initialData,\n };\n patchState(store, {\n initialSnapshot: cloneDeep(initialData), // Save the initial state\n previousSnapshot: store.snapshot(), // Save the current state as the previous\n data: initialData,\n state: 'initiated',\n lastChange: changeEvent,\n });\n },\n // Get a specific value\n getValue(path) {\n return get(store.data(), path);\n },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvY29udGV4dC1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFPLE9BQU8sRUFBUyxNQUFNLFdBQVcsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUlqRCxNQUFNLE9BQU8sMkJBQTJCO0NBTXZDO0FBRUQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsV0FBVztBQUNuRCxnQkFBZ0I7QUFDaEIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDYixJQUFJLEVBQUUsRUFBRSxFQUFFLHNCQUFzQjtJQUNoQyxLQUFLLEVBQUUsV0FBb0MsRUFBRSxnQkFBZ0I7SUFDN0QsZUFBZSxFQUFFLEVBQUUsRUFBRSwwQ0FBMEM7SUFDL0QsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLGlDQUFpQztJQUN2RCxVQUFVLEVBQUU7UUFDUixLQUFLLEVBQUUsV0FBVztLQUNVLEVBQUUsb0JBQW9CO0NBQ3pELENBQUMsQ0FBQztBQUVILG1CQUFtQjtBQUNuQixZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLEtB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QUFDO0lBQ1AsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixRQUFRLENBQUMsSUFBWTtRQUNqQixPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNKLENBQUMsQ0FBQyxDQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaWduYWxTdG9yZSwgd2l0aFN0YXRlLCB3aXRoQ29tcHV0ZWQsIHdpdGhNZXRob2RzLCBwYXRjaFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgc2V0LCBpc0VxdWFsLCBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2V0U21hcnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBBWFBMYXlvdXRDb250ZXh0U3RhdGUgPSAnaW5pdGlhdGVkJyB8ICdyZXN0b3JlZCcgfCAnY2hhbmdlZCcgfCAncGF0Y2gnO1xuXG5leHBvcnQgY2xhc3MgQVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50IHtcbiAgICBvbGRWYWx1ZT86IGFueTtcbiAgICBuZXdWYWx1ZT86IGFueTtcbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIHN0YXRlOiBBWFBMYXlvdXRDb250ZXh0U3RhdGU7XG4gICAgZGF0YTogYW55O1xufVxuXG5leHBvcnQgY29uc3QgQVhQTGF5b3V0QnVpbGRlckNvbnRleHRTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICAgIC8vIEluaXRpYWwgU3RhdGVcbiAgICB3aXRoU3RhdGUoKCkgPT4gKHtcbiAgICAgICAgZGF0YToge30sIC8vIFNoYXJlZCBjb250ZXh0IGRhdGFcbiAgICAgICAgc3RhdGU6ICdpbml0aWF0ZWQnIGFzIEFYUExheW91dENvbnRleHRTdGF0ZSwgLy8gQ3VycmVudCBzdGF0ZVxuICAgICAgICBpbml0aWFsU25hcHNob3Q6IHt9LCAvLyBTbmFwc2hvdCBvZiB0aGUgZmlyc3QgaW5pdGlhbGl6ZWQgc3RhdGVcbiAgICAgICAgcHJldmlvdXNTbmFwc2hvdDoge30sIC8vIFNuYXBzaG90IG9mIHRoZSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICBsYXN0Q2hhbmdlOiB7XG4gICAgICAgICAgICBzdGF0ZTogJ2luaXRpYXRlZCcsXG4gICAgICAgIH0gYXMgQVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50LCAvLyBMYXN0IGNoYW5nZSBldmVudFxuICAgIH0pKSxcblxuICAgIC8vIENvbXB1dGVkIFNpZ25hbHNcbiAgICB3aXRoQ29tcHV0ZWQoKHsgZGF0YSwgc3RhdGUsIGxhc3RDaGFuZ2UsIGluaXRpYWxTbmFwc2hvdCwgcHJldmlvdXNTbmFwc2hvdCB9KSA9PiAoe1xuICAgICAgICBpc0NoYW5nZWQ6IGNvbXB1dGVkKCgpID0+IHN0YXRlKCkgPT09ICdjaGFuZ2VkJyksXG4gICAgICAgIGlzUmVzZXQ6IGNvbXB1dGVkKCgpID0+IHN0YXRlKCkgPT09ICdyZXN0b3JlZCcpLFxuICAgICAgICBpc0luaXRpYXRlZDogY29tcHV0ZWQoKCkgPT4gc3RhdGUoKSA9PT0gJ2luaXRpYXRlZCcpLFxuICAgICAgICBpc0VtcHR5OiBjb21wdXRlZCgoKSA9PiBPYmplY3Qua2V5cyhkYXRhKCkpLmxlbmd0aCA9PT0gMCksXG4gICAgICAgIGlzRGlydHk6IGNvbXB1dGVkKCgpID0+ICFpc0VxdWFsKGRhdGEoKSwgcHJldmlvdXNTbmFwc2hvdCgpKSksIFxuICAgICAgICBzbmFwc2hvdDogY29tcHV0ZWQoKCkgPT4gY2xvbmVEZWVwKGRhdGEoKSkpLCAvLyBDdXJyZW50IGRhdGEgc25hcHNob3RcbiAgICAgICAgaW5pdGlhbDogY29tcHV0ZWQoKCkgPT4gY2xvbmVEZWVwKGluaXRpYWxTbmFwc2hvdCgpKSksIC8vIEluaXRpYWwgc25hcHNob3RcbiAgICAgICAgcHJldmlvdXM6IGNvbXB1dGVkKCgpID0+IGNsb25lRGVlcChwcmV2aW91c1NuYXBzaG90KCkpKSwgLy8gUHJldmlvdXMgc25hcHNob3RcbiAgICAgICAgY2hhbmdlRXZlbnQ6IGNvbXB1dGVkKCgpID0+IGxhc3RDaGFuZ2UoKSksIC8vIFJlYWN0aXZlIGxhc3QgY2hhbmdlIGV2ZW50XG4gICAgfSkpLFxuXG4gICAgLy8gTWV0aG9kcyBmb3IgU3RhdGUgTWFuYWdlbWVudFxuICAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAgICAgICAgLy8gVXBkYXRlIGEgc3BlY2lmaWMgdmFsdWVcbiAgICAgICAgdXBkYXRlKHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGEgPSBjbG9uZURlZXAoc3RvcmUuZGF0YSgpKTtcbiAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gZ2V0KGN1cnJlbnREYXRhLCBwYXRoKTtcblxuICAgICAgICAgICAgLy8gU2tpcCBpZiB0aGUgdmFsdWUgaGFzbid0IGNoYW5nZWRcbiAgICAgICAgICAgIGlmIChpc0VxdWFsKG9sZFZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdmFsdWUgYW5kIHByZXBhcmUgdGhlIGNoYW5nZSBldmVudFxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBzZXRTbWFydChjdXJyZW50RGF0YSwgcGF0aCwgdmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IEFYUExheW91dENvbnRleHRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZSxcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2NoYW5nZWQnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZWREYXRhLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gUGF0Y2ggdGhlIHN0YXRlXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTbmFwc2hvdDogc3RvcmUuc25hcHNob3QoKSwgLy8gU2F2ZSB0aGUgcHJldmlvdXMgc3RhdGVcbiAgICAgICAgICAgICAgICBkYXRhOiB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2NoYW5nZWQnLFxuICAgICAgICAgICAgICAgIGxhc3RDaGFuZ2U6IGNoYW5nZUV2ZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcGF0Y2goY29udGV4dDoge30pIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRhID0gY2xvbmVEZWVwKHN0b3JlLmRhdGEoKSk7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHZhbHVlIGFuZCBwcmVwYXJlIHRoZSBjaGFuZ2UgZXZlbnRcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0geyAuLi5jdXJyZW50RGF0YSwgLi4uY29udGV4dCB9O1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IEFYUExheW91dENvbnRleHRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ3BhdGNoJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFBhdGNoIHRoZSBzdGF0ZVxuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgIHByZXZpb3VzU25hcHNob3Q6IHN0b3JlLnNuYXBzaG90KCksIC8vIFNhdmUgdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICAgICAgICAgICAgZGF0YTogdXBkYXRlZERhdGEsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdjaGFuZ2VkJyxcbiAgICAgICAgICAgICAgICBsYXN0Q2hhbmdlOiBjaGFuZ2VFdmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIFJlc2V0IHRvIHRoZSBpbml0aWFsIHN0YXRlXG4gICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgY29uc3QgaW5pdGlhbERhdGEgPSBzdG9yZS5pbml0aWFsKCk7XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VFdmVudDogQVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgIG9sZFZhbHVlOiBjbG9uZURlZXAoc3RvcmUuZGF0YSgpKSwgLy8gQ3VycmVudCBkYXRhIGJlY29tZXMgb2xkIHZhbHVlXG4gICAgICAgICAgICAgICAgbmV3VmFsdWU6IGNsb25lRGVlcChpbml0aWFsRGF0YSksIC8vIFJlc2V0IHRvIHRoZSBpbml0aWFsIHN0YXRlXG4gICAgICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdyZXN0b3JlZCcsXG4gICAgICAgICAgICAgICAgZGF0YTogaW5pdGlhbERhdGEsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTbmFwc2hvdDogc3RvcmUuc25hcHNob3QoKSwgLy8gU2F2ZSB0aGUgcHJldmlvdXMgc3RhdGVcbiAgICAgICAgICAgICAgICBkYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ3Jlc3RvcmVkJyxcbiAgICAgICAgICAgICAgICBsYXN0Q2hhbmdlOiBjaGFuZ2VFdmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHN0YXRlXG4gICAgICAgIHNldChpbml0aWFsRGF0YTogYW55KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IHN0b3JlLmRhdGEoKTtcbiAgICAgICAgICAgIGlmIChpc0VxdWFsKGN1cnJlbnREYXRhLCBpbml0aWFsRGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIFNraXAgaWYgdGhlIGN1cnJlbnQgc3RhdGUgbWF0Y2hlcyB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VFdmVudDogQVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgIG9sZFZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgIG5ld1ZhbHVlOiBjbG9uZURlZXAoaW5pdGlhbERhdGEpLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICBpbml0aWFsU25hcHNob3Q6IGNsb25lRGVlcChpbml0aWFsRGF0YSksIC8vIFNhdmUgdGhlIGluaXRpYWwgc3RhdGVcbiAgICAgICAgICAgICAgICBwcmV2aW91c1NuYXBzaG90OiBzdG9yZS5zbmFwc2hvdCgpLCAvLyBTYXZlIHRoZSBjdXJyZW50IHN0YXRlIGFzIHRoZSBwcmV2aW91c1xuICAgICAgICAgICAgICAgIGRhdGE6IGluaXRpYWxEYXRhLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyxcbiAgICAgICAgICAgICAgICBsYXN0Q2hhbmdlOiBjaGFuZ2VFdmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIEdldCBhIHNwZWNpZmljIHZhbHVlXG4gICAgICAgIGdldFZhbHVlKHBhdGg6IHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGdldChzdG9yZS5kYXRhKCksIHBhdGgpO1xuICAgICAgICB9LFxuICAgIH0pKVxuKTtcbiJdfQ==","const AXPWidgetsCatalog = {\n timeDuration: 'time-duration',\n tagable: 'tagable-editor',\n checkbox: 'checkbox-editor',\n color: 'color-editor',\n contact: 'contact-editor',\n dateTime: 'date-time-editor',\n largeText: 'large-text-editor',\n number: 'number-editor',\n numberUnit: 'number-unit-editor',\n password: 'password-editor',\n richText: 'rich-text-editor',\n select: 'select-editor',\n selectionList: 'selection-list-editor',\n text: 'text-editor',\n table: 'table-editor',\n toggle: 'toggle-editor',\n blockLayout: 'block-layout',\n pageLayout: 'page-layout',\n repeaterLayout: 'repeater-layout',\n textBlockLayout: 'text-block-layout',\n fileUploader: 'file-uploader',\n fileTypeExtension: 'file-type-extension',\n map: 'map',\n imageMarker: 'image-marker',\n image: 'image',\n gallery: 'gallery',\n signature: 'signature',\n buttonAction: 'button-action',\n document: 'document-layout',\n lookup: 'lookup-editor',\n formField: 'form-field',\n qrcode: 'qrcode',\n advancedGrid: 'advanced-grid-layout',\n advancedGridItem: 'advanced-grid-item-layout',\n grid: 'grid-layout',\n gridItem: 'grid-item-layout',\n // gridRow: 'grid-row-layout',\n widgetSelector: 'widget-selector',\n template: 'template',\n templateDesigner: 'template-designer',\n cronJob: 'cron-job',\n spacing: 'spacing',\n direction: 'direction',\n border: 'border',\n flexLayout: 'flex-layout',\n flexItem: 'flex-item-layout',\n tableLayout: 'table-layout',\n tableItem: 'table-item-layout',\n avatar: 'avatar',\n themePaletteChooser: 'theme-palette-chooser',\n themeModeChooser: 'theme-mode-chooser',\n menuOrientationChooser: 'menu-orientation-chooser',\n fontStyleChooser: 'font-style-chooser',\n fontSizeChooser: 'font-size-chooser',\n iconChooser: 'icon-chooser',\n themeColorChooser: 'theme-color-chooser',\n gridOptions: 'grid-options',\n gridItemOptions: 'grid-item-options',\n advancedGridOptions: 'advanced-grid-options',\n stringFilter: 'string-filter',\n numberFilter: 'number-filter',\n dateTimeFilter: 'datetime-filter',\n booleanFilter: 'boolean-filter',\n lookupFilter: 'lookup-filter',\n flexOptions: 'flex-options',\n flexItemOptions: 'flex-item-options',\n selectFilter: 'select-filter',\n requiredValidation: 'required-validation',\n regularExpressionValidation: 'regular-expression-validation',\n minLengthValidation: 'min-length-validation',\n maxLengthValidation: 'max-length-validation',\n lessThanValidation: 'less-than-validation',\n greaterThanValidation: 'greater-than-validation',\n betweenValidation: 'between-validation',\n equalValidation: 'equal-validation',\n callbackValidation: 'callback-validation',\n donutChart: 'donut-chart',\n lineChart: 'line-chart',\n barChart: 'bar-chart',\n gaugeChart: 'gauge-chart',\n stickyNote: 'sticky-note',\n clockCalendar: 'clock-calendar',\n analogClock: 'analog-clock',\n weather: 'weather',\n minimalWeather: 'minimal-weather',\n advancedWeather: 'advanced-weather',\n metaData: 'meta-data-editor',\n templateEditor: 'template-box-editor',\n panel: 'panel',\n notification: 'notification',\n taskBoard: 'task-board',\n comment: 'comment',\n list: 'list',\n listToolbar: 'list-toolbar',\n entityList: 'entity-list',\n documentUploader: 'document-uploader',\n};\nexport { AXPWidgetsCatalog };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNhdGFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLGlCQUFpQixHQUFzQjtJQUMzQyxZQUFZLEVBQUUsZUFBZTtJQUM3QixPQUFPLEVBQUUsZ0JBQWdCO0lBQ3pCLFFBQVEsRUFBRSxpQkFBaUI7SUFDM0IsS0FBSyxFQUFFLGNBQWM7SUFDckIsT0FBTyxFQUFFLGdCQUFnQjtJQUN6QixRQUFRLEVBQUUsa0JBQWtCO0lBQzVCLFNBQVMsRUFBRSxtQkFBbUI7SUFDOUIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsVUFBVSxFQUFFLG9CQUFvQjtJQUNoQyxRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsYUFBYSxFQUFFLHVCQUF1QjtJQUN0QyxJQUFJLEVBQUUsYUFBYTtJQUNuQixLQUFLLEVBQUUsY0FBYztJQUNyQixNQUFNLEVBQUUsZUFBZTtJQUN2QixXQUFXLEVBQUUsY0FBYztJQUMzQixVQUFVLEVBQUUsYUFBYTtJQUN6QixjQUFjLEVBQUUsaUJBQWlCO0lBQ2pDLGVBQWUsRUFBRSxtQkFBbUI7SUFDcEMsWUFBWSxFQUFFLGVBQWU7SUFDN0IsaUJBQWlCLEVBQUUscUJBQXFCO0lBQ3hDLEdBQUcsRUFBRSxLQUFLO0lBQ1YsV0FBVyxFQUFFLGNBQWM7SUFDM0IsS0FBSyxFQUFFLE9BQU87SUFDZCxPQUFPLEVBQUUsU0FBUztJQUNsQixTQUFTLEVBQUUsV0FBVztJQUN0QixZQUFZLEVBQUUsZUFBZTtJQUM3QixRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFlBQVksRUFBRSxzQkFBc0I7SUFDcEMsZ0JBQWdCLEVBQUUsMkJBQTJCO0lBQzdDLElBQUksRUFBRSxhQUFhO0lBQ25CLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsOEJBQThCO0lBQzlCLGNBQWMsRUFBRSxpQkFBaUI7SUFDakMsUUFBUSxFQUFFLFVBQVU7SUFDcEIsZ0JBQWdCLEVBQUUsbUJBQW1CO0lBQ3JDLE9BQU8sRUFBRSxVQUFVO0lBQ25CLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsU0FBUyxFQUFFLG1CQUFtQjtJQUM5QixNQUFNLEVBQUUsUUFBUTtJQUNoQixtQkFBbUIsRUFBRSx1QkFBdUI7SUFDNUMsZ0JBQWdCLEVBQUUsb0JBQW9CO0lBQ3RDLHNCQUFzQixFQUFFLDBCQUEwQjtJQUNsRCxnQkFBZ0IsRUFBRSxvQkFBb0I7SUFDdEMsZUFBZSxFQUFFLG1CQUFtQjtJQUNwQyxXQUFXLEVBQUUsY0FBYztJQUMzQixpQkFBaUIsRUFBRSxxQkFBcUI7SUFDeEMsV0FBVyxFQUFFLGNBQWM7SUFDM0IsZUFBZSxFQUFFLG1CQUFtQjtJQUNwQyxtQkFBbUIsRUFBRSx1QkFBdUI7SUFDNUMsWUFBWSxFQUFFLGVBQWU7SUFDN0IsWUFBWSxFQUFFLGVBQWU7SUFDN0IsY0FBYyxFQUFFLGlCQUFpQjtJQUNqQyxhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLFlBQVksRUFBRSxlQUFlO0lBQzdCLFdBQVcsRUFBRSxjQUFjO0lBQzNCLGVBQWUsRUFBRSxtQkFBbUI7SUFDcEMsWUFBWSxFQUFFLGVBQWU7SUFDN0Isa0JBQWtCLEVBQUUscUJBQXFCO0lBQ3pDLDJCQUEyQixFQUFFLCtCQUErQjtJQUM1RCxtQkFBbUIsRUFBRSx1QkFBdUI7SUFDNUMsbUJBQW1CLEVBQUUsdUJBQXVCO0lBQzVDLGtCQUFrQixFQUFFLHNCQUFzQjtJQUMxQyxxQkFBcUIsRUFBRSx5QkFBeUI7SUFDaEQsaUJBQWlCLEVBQUUsb0JBQW9CO0lBQ3ZDLGVBQWUsRUFBRSxrQkFBa0I7SUFDbkMsa0JBQWtCLEVBQUUscUJBQXFCO0lBQ3pDLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLGFBQWEsRUFBRSxnQkFBZ0I7SUFDL0IsV0FBVyxFQUFFLGNBQWM7SUFDM0IsT0FBTyxFQUFFLFNBQVM7SUFDbEIsY0FBYyxFQUFFLGlCQUFpQjtJQUNqQyxlQUFlLEVBQUUsa0JBQWtCO0lBQ25DLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsY0FBYyxFQUFFLHFCQUFxQjtJQUNyQyxLQUFLLEVBQUUsT0FBTztJQUNkLFlBQVksRUFBRSxjQUFjO0lBQzVCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxNQUFNO0lBQ1osV0FBVyxFQUFFLGNBQWM7SUFDM0IsVUFBVSxFQUFFLGFBQWE7SUFFekIsZ0JBQWdCLEVBQUUsbUJBQW1CO0NBQ3RDLENBQUM7QUFFRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdpZGdldFR5cGVzTWFwIH0gZnJvbSAnLi93aWRnZXQtbWFwJztcblxuY29uc3QgQVhQV2lkZ2V0c0NhdGFsb2c6IEFYUFdpZGdldFR5cGVzTWFwID0ge1xuICB0aW1lRHVyYXRpb246ICd0aW1lLWR1cmF0aW9uJyxcbiAgdGFnYWJsZTogJ3RhZ2FibGUtZWRpdG9yJyxcbiAgY2hlY2tib3g6ICdjaGVja2JveC1lZGl0b3InLFxuICBjb2xvcjogJ2NvbG9yLWVkaXRvcicsXG4gIGNvbnRhY3Q6ICdjb250YWN0LWVkaXRvcicsXG4gIGRhdGVUaW1lOiAnZGF0ZS10aW1lLWVkaXRvcicsXG4gIGxhcmdlVGV4dDogJ2xhcmdlLXRleHQtZWRpdG9yJyxcbiAgbnVtYmVyOiAnbnVtYmVyLWVkaXRvcicsXG4gIG51bWJlclVuaXQ6ICdudW1iZXItdW5pdC1lZGl0b3InLFxuICBwYXNzd29yZDogJ3Bhc3N3b3JkLWVkaXRvcicsXG4gIHJpY2hUZXh0OiAncmljaC10ZXh0LWVkaXRvcicsXG4gIHNlbGVjdDogJ3NlbGVjdC1lZGl0b3InLFxuICBzZWxlY3Rpb25MaXN0OiAnc2VsZWN0aW9uLWxpc3QtZWRpdG9yJyxcbiAgdGV4dDogJ3RleHQtZWRpdG9yJyxcbiAgdGFibGU6ICd0YWJsZS1lZGl0b3InLFxuICB0b2dnbGU6ICd0b2dnbGUtZWRpdG9yJyxcbiAgYmxvY2tMYXlvdXQ6ICdibG9jay1sYXlvdXQnLFxuICBwYWdlTGF5b3V0OiAncGFnZS1sYXlvdXQnLFxuICByZXBlYXRlckxheW91dDogJ3JlcGVhdGVyLWxheW91dCcsXG4gIHRleHRCbG9ja0xheW91dDogJ3RleHQtYmxvY2stbGF5b3V0JyxcbiAgZmlsZVVwbG9hZGVyOiAnZmlsZS11cGxvYWRlcicsXG4gIGZpbGVUeXBlRXh0ZW5zaW9uOiAnZmlsZS10eXBlLWV4dGVuc2lvbicsXG4gIG1hcDogJ21hcCcsXG4gIGltYWdlTWFya2VyOiAnaW1hZ2UtbWFya2VyJyxcbiAgaW1hZ2U6ICdpbWFnZScsXG4gIGdhbGxlcnk6ICdnYWxsZXJ5JyxcbiAgc2lnbmF0dXJlOiAnc2lnbmF0dXJlJyxcbiAgYnV0dG9uQWN0aW9uOiAnYnV0dG9uLWFjdGlvbicsXG4gIGRvY3VtZW50OiAnZG9jdW1lbnQtbGF5b3V0JyxcbiAgbG9va3VwOiAnbG9va3VwLWVkaXRvcicsXG4gIGZvcm1GaWVsZDogJ2Zvcm0tZmllbGQnLFxuICBxcmNvZGU6ICdxcmNvZGUnLFxuICBhZHZhbmNlZEdyaWQ6ICdhZHZhbmNlZC1ncmlkLWxheW91dCcsXG4gIGFkdmFuY2VkR3JpZEl0ZW06ICdhZHZhbmNlZC1ncmlkLWl0ZW0tbGF5b3V0JyxcbiAgZ3JpZDogJ2dyaWQtbGF5b3V0JyxcbiAgZ3JpZEl0ZW06ICdncmlkLWl0ZW0tbGF5b3V0JyxcbiAgLy8gZ3JpZFJvdzogJ2dyaWQtcm93LWxheW91dCcsXG4gIHdpZGdldFNlbGVjdG9yOiAnd2lkZ2V0LXNlbGVjdG9yJyxcbiAgdGVtcGxhdGU6ICd0ZW1wbGF0ZScsXG4gIHRlbXBsYXRlRGVzaWduZXI6ICd0ZW1wbGF0ZS1kZXNpZ25lcicsXG4gIGNyb25Kb2I6ICdjcm9uLWpvYicsXG4gIHNwYWNpbmc6ICdzcGFjaW5nJyxcbiAgZGlyZWN0aW9uOiAnZGlyZWN0aW9uJyxcbiAgYm9yZGVyOiAnYm9yZGVyJyxcbiAgZmxleExheW91dDogJ2ZsZXgtbGF5b3V0JyxcbiAgZmxleEl0ZW06ICdmbGV4LWl0ZW0tbGF5b3V0JyxcbiAgdGFibGVMYXlvdXQ6ICd0YWJsZS1sYXlvdXQnLFxuICB0YWJsZUl0ZW06ICd0YWJsZS1pdGVtLWxheW91dCcsXG4gIGF2YXRhcjogJ2F2YXRhcicsXG4gIHRoZW1lUGFsZXR0ZUNob29zZXI6ICd0aGVtZS1wYWxldHRlLWNob29zZXInLFxuICB0aGVtZU1vZGVDaG9vc2VyOiAndGhlbWUtbW9kZS1jaG9vc2VyJyxcbiAgbWVudU9yaWVudGF0aW9uQ2hvb3NlcjogJ21lbnUtb3JpZW50YXRpb24tY2hvb3NlcicsXG4gIGZvbnRTdHlsZUNob29zZXI6ICdmb250LXN0eWxlLWNob29zZXInLFxuICBmb250U2l6ZUNob29zZXI6ICdmb250LXNpemUtY2hvb3NlcicsXG4gIGljb25DaG9vc2VyOiAnaWNvbi1jaG9vc2VyJyxcbiAgdGhlbWVDb2xvckNob29zZXI6ICd0aGVtZS1jb2xvci1jaG9vc2VyJyxcbiAgZ3JpZE9wdGlvbnM6ICdncmlkLW9wdGlvbnMnLFxuICBncmlkSXRlbU9wdGlvbnM6ICdncmlkLWl0ZW0tb3B0aW9ucycsXG4gIGFkdmFuY2VkR3JpZE9wdGlvbnM6ICdhZHZhbmNlZC1ncmlkLW9wdGlvbnMnLFxuICBzdHJpbmdGaWx0ZXI6ICdzdHJpbmctZmlsdGVyJyxcbiAgbnVtYmVyRmlsdGVyOiAnbnVtYmVyLWZpbHRlcicsXG4gIGRhdGVUaW1lRmlsdGVyOiAnZGF0ZXRpbWUtZmlsdGVyJyxcbiAgYm9vbGVhbkZpbHRlcjogJ2Jvb2xlYW4tZmlsdGVyJyxcbiAgbG9va3VwRmlsdGVyOiAnbG9va3VwLWZpbHRlcicsXG4gIGZsZXhPcHRpb25zOiAnZmxleC1vcHRpb25zJyxcbiAgZmxleEl0ZW1PcHRpb25zOiAnZmxleC1pdGVtLW9wdGlvbnMnLFxuICBzZWxlY3RGaWx0ZXI6ICdzZWxlY3QtZmlsdGVyJyxcbiAgcmVxdWlyZWRWYWxpZGF0aW9uOiAncmVxdWlyZWQtdmFsaWRhdGlvbicsXG4gIHJlZ3VsYXJFeHByZXNzaW9uVmFsaWRhdGlvbjogJ3JlZ3VsYXItZXhwcmVzc2lvbi12YWxpZGF0aW9uJyxcbiAgbWluTGVuZ3RoVmFsaWRhdGlvbjogJ21pbi1sZW5ndGgtdmFsaWRhdGlvbicsXG4gIG1heExlbmd0aFZhbGlkYXRpb246ICdtYXgtbGVuZ3RoLXZhbGlkYXRpb24nLFxuICBsZXNzVGhhblZhbGlkYXRpb246ICdsZXNzLXRoYW4tdmFsaWRhdGlvbicsXG4gIGdyZWF0ZXJUaGFuVmFsaWRhdGlvbjogJ2dyZWF0ZXItdGhhbi12YWxpZGF0aW9uJyxcbiAgYmV0d2VlblZhbGlkYXRpb246ICdiZXR3ZWVuLXZhbGlkYXRpb24nLFxuICBlcXVhbFZhbGlkYXRpb246ICdlcXVhbC12YWxpZGF0aW9uJyxcbiAgY2FsbGJhY2tWYWxpZGF0aW9uOiAnY2FsbGJhY2stdmFsaWRhdGlvbicsXG4gIGRvbnV0Q2hhcnQ6ICdkb251dC1jaGFydCcsXG4gIGxpbmVDaGFydDogJ2xpbmUtY2hhcnQnLFxuICBiYXJDaGFydDogJ2Jhci1jaGFydCcsXG4gIGdhdWdlQ2hhcnQ6ICdnYXVnZS1jaGFydCcsXG4gIHN0aWNreU5vdGU6ICdzdGlja3ktbm90ZScsXG4gIGNsb2NrQ2FsZW5kYXI6ICdjbG9jay1jYWxlbmRhcicsXG4gIGFuYWxvZ0Nsb2NrOiAnYW5hbG9nLWNsb2NrJyxcbiAgd2VhdGhlcjogJ3dlYXRoZXInLFxuICBtaW5pbWFsV2VhdGhlcjogJ21pbmltYWwtd2VhdGhlcicsXG4gIGFkdmFuY2VkV2VhdGhlcjogJ2FkdmFuY2VkLXdlYXRoZXInLFxuICBtZXRhRGF0YTogJ21ldGEtZGF0YS1lZGl0b3InLFxuICB0ZW1wbGF0ZUVkaXRvcjogJ3RlbXBsYXRlLWJveC1lZGl0b3InLFxuICBwYW5lbDogJ3BhbmVsJyxcbiAgbm90aWZpY2F0aW9uOiAnbm90aWZpY2F0aW9uJyxcbiAgdGFza0JvYXJkOiAndGFzay1ib2FyZCcsXG4gIGNvbW1lbnQ6ICdjb21tZW50JyxcbiAgbGlzdDogJ2xpc3QnLFxuICBsaXN0VG9vbGJhcjogJ2xpc3QtdG9vbGJhcicsXG4gIGVudGl0eUxpc3Q6ICdlbnRpdHktbGlzdCcsXG5cbiAgZG9jdW1lbnRVcGxvYWRlcjogJ2RvY3VtZW50LXVwbG9hZGVyJyxcbn07XG5cbmV4cG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH07XG4iXX0=","import { InjectionToken } from '@angular/core';\nimport { cloneDeep, isNil, merge } from 'lodash-es';\nimport { AXPWidgetsCatalog } from './widget-catalog';\nexport function cloneProperty(property, values) {\n return merge(cloneDeep(property), values);\n}\nexport function createStringProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: !isNil(ctor.visible) ? ctor.visible : true,\n };\n}\nexport function createNumberProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'number',\n defaultValue: ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.number,\n options: ctor.options,\n },\n },\n visible: !isNil(ctor.visible) ? ctor.visible : true,\n };\n}\nexport function createBooleanProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'boolean',\n defaultValue: ctor.defaultValue ?? false,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: ctor.visible ?? true,\n };\n}\nexport function createSelectProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: Array.isArray(ctor.defaultValue)\n ? ctor.defaultValue.map((item) => (typeof item === 'string' ? { id: item } : item))\n : typeof ctor.defaultValue === 'string'\n ? { id: ctor.defaultValue, title: ctor.defaultValue }\n : ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ctor.dataSource.map((item) => (typeof item === 'string' ? { id: item, title: item } : item)),\n },\n },\n },\n visible: ctor.visible ?? true,\n };\n}\nexport const AXP_WIDGET_TOKEN = new InjectionToken('AXP_WIDGET_TOKEN');\nexport const AXP_WIDGET_COLUMN_TOKEN = new InjectionToken('AXP_WIDGET_COLUMN_TOKEN');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBNkJyRCxNQUFNLFVBQVUsYUFBYSxDQUMzQixRQUEyQixFQUMzQixNQUEyQztJQUUzQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQU9wQztJQUNDLE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLE1BQU0sRUFBRTtZQUNOLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixTQUFTLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJO2dCQUM1QixJQUFJLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUM3QjtTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUNwRCxDQUFDO0FBQ0os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QyxDQUFDO2lCQUN6RzthQUNGO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJO0tBQzlCLENBQUM7QUFDSixDQUFDO0FBaUNELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFxQixrQkFBa0IsQ0FBQyxDQUFDO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUEyQix5QkFBeUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhQRGF0YVR5cGUsXG4gIEFYUE1ldGFEYXRhLFxuICBBWFBPcHRpb25zRGF0YSxcbiAgQVhQUGFydGlhbE5lc3RlZCxcbiAgQVhQVmFsaWRhdGlvblJ1bGVzLFxuICBBWFBWYWx1ZVRyYW5zZm9ybWVyRnVuY3Rpb25zLFxuICBBWFBXaWRnZXRUcmlnZ2Vycyxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzTmlsLCBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRzQ2F0YWxvZyB9IGZyb20gJy4vd2lkZ2V0LWNhdGFsb2cnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q2F0ZWdvcnkgfSBmcm9tICcuL3dpZGdldC1jYXRlZ29yaWVzJztcbmltcG9ydCB7IEFYUFdpZGdldEdyb3VwIH0gZnJvbSAnLi93aWRnZXQtZ3JvdXAudHlwZXMnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0VHlwZXNNYXAgfSBmcm9tICcuL3dpZGdldC1tYXAnO1xuaW1wb3J0IHsgQVhQUGFnZVN0YXR1cyB9IGZyb20gJy4vd2lkZ2V0LXN0YXR1cy50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0UHJvcGVydHlHcm91cCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGdyb3VwOiBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwO1xuICBvcmRlcj86IG51bWJlcjtcbiAgc2NoZW1hOiB7XG4gICAgZGF0YVR5cGU6IEFYUERhdGFUeXBlO1xuICAgIG51bGxhYmxlPzogYm9vbGVhbjtcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnkgfCBzdHJpbmcgfCAoKGNvbnRleHQ6IGFueSB8IG51bGwpID0+IGFueSk7XG4gICAgaW50ZXJmYWNlOiBSZXF1aXJlZDxQaWNrPEFYUFdpZGdldE5vZGUsICdwYXRoJz4+ICYgT21pdDxBWFBXaWRnZXROb2RlLCAncGF0aCc+O1xuICB9O1xuICBvcHRpb25zPzogQVhQT3B0aW9uc0RhdGE7XG4gIHZhbGlkYXRpb25zPzogQVhQVmFsaWRhdGlvblJ1bGVzO1xuICB2aXNpYmxlOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVQcm9wZXJ0eShcbiAgcHJvcGVydHk6IEFYUFdpZGdldFByb3BlcnR5LFxuICB2YWx1ZXM6IEFYUFBhcnRpYWxOZXN0ZWQ8QVhQV2lkZ2V0UHJvcGVydHk+XG4pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiBtZXJnZShjbG9uZURlZXAocHJvcGVydHkpLCB2YWx1ZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RyaW5nUHJvcGVydHkoY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IGN0b3IuZGVmYXVsdFZhbHVlLFxuICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICAgICAgcGF0aDogY3Rvci5wYXRoID8/IGN0b3IubmFtZSxcbiAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB2aXNpYmxlOiAhaXNOaWwoY3Rvci52aXNpYmxlKSA/IGN0b3IudmlzaWJsZSA6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOdW1iZXJQcm9wZXJ0eShjdG9yOiB7XG4gIGRlZmF1bHRWYWx1ZT86IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBncm91cDogQVhQV2lkZ2V0UHJvcGVydHlHcm91cDtcbiAgdmlzaWJsZT86IGJvb2xlYW47XG4gIG9wdGlvbnM/OiB7XG4gICAgbWluVmFsdWU/OiBudW1iZXI7XG4gICAgbWF4VmFsdWU/OiBudW1iZXI7XG4gICAgZGVjaW1hbHM/OiBudW1iZXI7XG4gIH07XG59KTogQVhQV2lkZ2V0UHJvcGVydHkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICB0aXRsZTogY3Rvci50aXRsZSxcbiAgICBncm91cDogY3Rvci5ncm91cCxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogY3Rvci5kZWZhdWx0VmFsdWUsXG4gICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgbmFtZTogY3Rvci5uYW1lLFxuICAgICAgICBwYXRoOiBjdG9yLnBhdGggPz8gY3Rvci5uYW1lLFxuICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5udW1iZXIsXG4gICAgICAgIG9wdGlvbnM6IGN0b3Iub3B0aW9ucyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB2aXNpYmxlOiAhaXNOaWwoY3Rvci52aXNpYmxlKSA/IGN0b3IudmlzaWJsZSA6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb29sZWFuUHJvcGVydHkoY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU/OiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGdyb3VwOiBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbn0pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogY3Rvci5uYW1lLFxuICAgIHRpdGxlOiBjdG9yLnRpdGxlLFxuICAgIGdyb3VwOiBjdG9yLmdyb3VwLFxuICAgIHNjaGVtYToge1xuICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogY3Rvci5kZWZhdWx0VmFsdWUgPz8gZmFsc2UsXG4gICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgbmFtZTogY3Rvci5uYW1lLFxuICAgICAgICBwYXRoOiBjdG9yLnBhdGggPz8gY3Rvci5uYW1lLFxuICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgdmlzaWJsZTogY3Rvci52aXNpYmxlID8/IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RQcm9wZXJ0eTxUID0gc3RyaW5nIHwgeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0+KGN0b3I6IHtcbiAgZGVmYXVsdFZhbHVlOiBUIHwgVFtdIHwgYW55O1xuICBkYXRhU291cmNlOiBUW107XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IEFycmF5LmlzQXJyYXkoY3Rvci5kZWZhdWx0VmFsdWUpXG4gICAgICAgID8gY3Rvci5kZWZhdWx0VmFsdWUubWFwKChpdGVtKSA9PiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8geyBpZDogaXRlbSB9IDogaXRlbSkpXG4gICAgICAgIDogdHlwZW9mIGN0b3IuZGVmYXVsdFZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8geyBpZDogY3Rvci5kZWZhdWx0VmFsdWUsIHRpdGxlOiBjdG9yLmRlZmF1bHRWYWx1ZSB9XG4gICAgICAgICAgOiBjdG9yLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGludGVyZmFjZToge1xuICAgICAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgICAgIHBhdGg6IGN0b3IucGF0aCA/PyBjdG9yLm5hbWUsXG4gICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGRhdGFTb3VyY2U6IGN0b3IuZGF0YVNvdXJjZS5tYXAoKGl0ZW0pID0+ICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyB7IGlkOiBpdGVtLCB0aXRsZTogaXRlbSB9IDogaXRlbSkpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHZpc2libGU6IGN0b3IudmlzaWJsZSA/PyB0cnVlLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldE5vZGUge1xuICB0eXBlOiBBWFBXaWRnZXRUeXBlc01hcFtrZXlvZiBBWFBXaWRnZXRUeXBlc01hcF0gfCBrZXlvZiBBWFBXaWRnZXRUeXBlc01hcCB8IHN0cmluZztcbiAgbW9kZT86IEFYUFdpZGdldFJlbmRlck1vZGVcbiAgcGF0aD86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBmb3JtdWxhPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IEFYUFdpZGdldE5vZGVbXTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xuICB0cmlnZ2Vycz86IEFYUFdpZGdldFRyaWdnZXJzO1xuICBtZXRhPzogQVhQTWV0YURhdGE7XG4gIHZhbHVlVHJhbnNmb3Jtcz86IEFYUFZhbHVlVHJhbnNmb3JtZXJGdW5jdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Tm9kZVRva2VuIHtcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBjb25maWc6IEFYUFdpZGdldENvbmZpZztcbiAgbm9kZTogQVhQV2lkZ2V0Tm9kZTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbHVtbk5vZGUge1xuICB0eXBlOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbHVtbk5vZGVUb2tlbiBleHRlbmRzIEFYUFdpZGdldENvbHVtbk5vZGUge1xuICBjb25maWc6IEFYUFdpZGdldENvbmZpZztcbn1cblxuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQV2lkZ2V0Tm9kZVRva2VuPignQVhQX1dJREdFVF9UT0tFTicpO1xuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEFYUFdpZGdldENvbHVtbk5vZGVUb2tlbj4oJ0FYUF9XSURHRVRfQ09MVU1OX1RPS0VOJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnIHtcbiAgY29tcG9uZW50OiAoKSA9PiBQcm9taXNlPGFueT47XG4gIHByb3BlcnRpZXM/OiBBWFBXaWRnZXRQcm9wZXJ0eVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbmZpZ0NvbXBvbmVudHMge1xuICBkZXNpZ25lcj86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgdmlldz86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgZWRpdD86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgcHJpbnQ/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG4gIGNvbHVtbj86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgZmlsdGVyPzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRWaWV3VHlwZSA9ICdjb250YWluZXInIHwgJ2VkaXRvcicgfCAnYWN0aW9uJyB8ICd2aWV3JyB8ICdmaWx0ZXInIHwgJ3ZhbGlkYXRpb24nIHwgJ2Rhc2hib2FyZCc7XG5cbmV4cG9ydCB0eXBlIEFYUFdpZGdldERlc2lnbmVyT3B0aW9uc01hcCA9IHtcbiAgY29udGFpbmVyOiB7IGNhbkluc2VydDogYm9vbGVhbiB9O1xuICBlZGl0b3I6IHtcbiAgICBuZWVkTGFiZWw6IGJvb2xlYW47XG4gIH07XG4gIGFjdGlvbjoge307XG4gIHZpZXc6IHt9O1xufTtcblxuZXhwb3J0IHR5cGUgQVhQRXh0cmFjdFdpZGdldENvbmZpZzxUPiA9IHtcbiAgdHlwZTogQVhQV2lkZ2V0Vmlld1R5cGU7XG4gIGRlc2lnbmVyOiBUIGV4dGVuZHMgeyB0eXBlOiBpbmZlciBWIH1cbiAgPyBWIGV4dGVuZHMga2V5b2YgQVhQV2lkZ2V0RGVzaWduZXJPcHRpb25zTWFwXG4gID8gQVhQV2lkZ2V0RGVzaWduZXJPcHRpb25zTWFwW1ZdXG4gIDogYW55XG4gIDogYW55O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb25maWc8VCA9IGFueT4ge1xuICBuYW1lOiBBWFBXaWRnZXRUeXBlc01hcFtrZXlvZiBBWFBXaWRnZXRUeXBlc01hcF0gfCBrZXlvZiBBWFBXaWRnZXRUeXBlc01hcCB8IHN0cmluZztcbiAgYWxpYXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdGl0bGU6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGNhdGVnb3JpZXM/OiBBWFBXaWRnZXRDYXRlZ29yeSB8IEFYUFdpZGdldENhdGVnb3J5W107XG4gIGdyb3Vwcz86IEFYUFdpZGdldEdyb3VwW107XG4gIHByb3BlcnRpZXM/OiBBWFBXaWRnZXRQcm9wZXJ0eVtdO1xuICBjb21wb25lbnRzOiBBWFBXaWRnZXRDb25maWdDb21wb25lbnRzO1xuICBtZXRhPzogQVhQTWV0YURhdGE7XG4gIHR5cGU6IEFYUEV4dHJhY3RXaWRnZXRDb25maWc8VD5bJ3R5cGUnXTtcbiAgZGVzaWduZXI/OiBBWFBFeHRyYWN0V2lkZ2V0Q29uZmlnPFQ+WydkZXNpZ25lciddO1xuICBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgZGVmYXVsdEZpbHRlcldpZGdldE5hbWU/OlxuICB8ICdzdHJpbmctZmlsdGVyJ1xuICB8ICdudW1iZXItZmlsdGVyJ1xuICB8ICdkYXRldGltZS1maWx0ZXInXG4gIHwgJ2Jvb2xlYW4tZmlsdGVyJ1xuICB8ICdzZWxlY3QtZmlsdGVyJ1xuICB8ICdsb29rdXAtZmlsdGVyJztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgZXh0ZW5kZWRXaWRnZXQge1xuICB3aWRnZXQ6IEFYUFdpZGdldENvbmZpZztcbiAgcGFyZW50TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRSZW5kZXJNb2RlID0ga2V5b2YgQVhQV2lkZ2V0Q29uZmlnQ29tcG9uZW50cztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBMYXlvdXRCdWlsZGVyU3RhdHVzQ2hhbmdlZEV2ZW50IHtcbiAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzO1xufVxuXG5cbiJdfQ==","import { AXDataSource, convertArrayToDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDefinitionProviderService, extractValue, } from '@acorex/platform/core';\nimport { computed, effect, ElementRef, inject, Injectable, signal } from '@angular/core';\nimport { cloneDeep, get, isEqual, isNil, isObjectLike, isUndefined } from 'lodash-es';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { AXPLayoutBuilderService, AXPLayoutElement } from './builder.service';\nimport { AXPLayoutBuilderContextStore } from './context-store.service';\nimport { AXPWidgetStatus } from './widget-status.types';\nimport { AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_TOKEN } from './widget.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPBaseWidgetComponent extends AXPLayoutElement {\n constructor() {\n super(...arguments);\n this.token = inject(AXP_WIDGET_TOKEN);\n this.host = inject(ElementRef).nativeElement;\n this.layoutService = inject(AXPLayoutBuilderService);\n this.contextService = inject(AXPLayoutBuilderContextStore);\n this.config = this.token.config;\n this.node = this.token.node;\n this.name = this.token.node.name;\n this.component = this;\n this._options = signal(this.token.options ?? {}, ...(ngDevMode ? [{ debugName: \"_options\" }] : []));\n this.options = this._options.asReadonly();\n this.onOptionsChanged = new Subject();\n this._status = signal(AXPWidgetStatus.Rendering, ...(ngDevMode ? [{ debugName: \"_status\" }] : []));\n this.status = this._status.asReadonly();\n this.onStatusChanged = new BehaviorSubject(this._status());\n this.#statusEffect = effect(() => {\n this.onStatusChanged.next(this.status());\n }, ...(ngDevMode ? [{ debugName: \"#statusEffect\" }] : []));\n this.isBusy = computed(() => [AXPWidgetStatus.Rendering, AXPWidgetStatus.Processing].includes(this.status()), ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n this._children = signal(this.token.node.children ?? [], ...(ngDevMode ? [{ debugName: \"_children\" }] : []));\n this.children = this._children.asReadonly();\n }\n get id() {\n return this._id;\n }\n #statusEffect;\n outputs() {\n return [];\n }\n ngOnInit() {\n if (get(this.node, '__meta__.added')) {\n this.onAdded();\n }\n this.setStatus(AXPWidgetStatus.Rendered);\n }\n setStatus(status) {\n this._status.set(status);\n this.layoutService.updateStatus();\n }\n setOptions(values) {\n const oldValue = this.options();\n const value = cloneDeep(values);\n this._options.set({ ...oldValue, ...value });\n this.onOptionsChanged.next({ sender: this });\n }\n output(name) {\n const outputs = this.outputs().map((c) => (typeof c == 'string' ? { name: c, value: c } : c));\n if (outputs.some((c) => c.name == name)) {\n const opt = get(this, name);\n if (typeof opt == 'function') {\n return opt();\n }\n return opt;\n }\n return null;\n }\n call(name, ...args) {\n const fn = get(this, name);\n if (fn && typeof fn == 'function') {\n fn.bind(this)(...args);\n }\n }\n setChildren(children) {\n this._children.set([...children]);\n }\n onAdded() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBaseWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBaseWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPLayoutBaseWidgetComponent extends AXPBaseWidgetComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBaseWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBaseWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {\n constructor() {\n super(...arguments);\n this.path = this.token.node.path;\n this.defaultValue = this.token.defaultValue ?? this.token.node.defaultValue;\n this._isValueWidget = false;\n this.isValueWidget = () => this._isValueWidget;\n this.onValueChanged = new Subject();\n this.fullPath = signal(null, ...(ngDevMode ? [{ debugName: \"fullPath\" }] : []));\n this.parentPath = signal(null, ...(ngDevMode ? [{ debugName: \"parentPath\" }] : []));\n this.getValue = computed(() => {\n return this.fullPath() ? this.extractValue(this.fullPath()) : null;\n }, ...(ngDevMode ? [{ debugName: \"getValue\", equal: isEqual }] : [{ equal: isEqual }]));\n this.validationRules = computed(() => {\n const validationsRaw = this.options()['validations'];\n if (validationsRaw == null) {\n return [];\n }\n return Object.values(this.options()['validations'])\n .filter((c) => c != null)\n .map((c) => ({\n rule: c.rule,\n message: c.message,\n options: c.options,\n }));\n }, ...(ngDevMode ? [{ debugName: \"validationRules\" }] : []));\n }\n ngOnInit() {\n this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;\n if (this.isValueWidget()) {\n this.detectFullPath();\n if (!isNil(this.defaultValue) && isNil(this.getValue())) {\n this.setValue(this.defaultValue);\n }\n }\n //\n super.ngOnInit();\n }\n extractValue(path) {\n const rawValue = this.contextService.getValue(path);\n if (this.node.valueTransforms?.getter) {\n return this.node.valueTransforms?.getter(rawValue);\n }\n return rawValue;\n }\n setValue(value) {\n if (this.node.valueTransforms?.setter) {\n value = this.node.valueTransforms?.setter(value);\n }\n const oldValue = this.getValue();\n value = isUndefined(value) ? null : value;\n if (isNil(value) && isNil(oldValue)) {\n return;\n }\n if (isEqual(oldValue, value)) {\n return;\n }\n if (this.fullPath()) {\n this.contextService.update(this.fullPath(), value);\n this.onValueChanged.next({ sender: this });\n }\n }\n detectFullPath() {\n const sections = [];\n const ids = [];\n //\n let parent = this;\n //\n while (parent) {\n const isValueWidget = parent instanceof AXPValueWidgetComponent && parent.isValueWidget();\n const valueParent = parent;\n const path = valueParent.path ?? (isValueWidget ? valueParent.name : null);\n const id = valueParent.name;\n //\n if (path) {\n sections.push(path);\n }\n if (parent.index != null && isValueWidget) {\n sections.push(`[${parent.index}]`);\n }\n if (id) {\n ids.push(id);\n if (parent.index != null) {\n ids.push(`${parent.index}`);\n }\n }\n parent = parent.parent;\n }\n //\n this.fullPath.set(sections.reverse().join('.'));\n this.parentPath.set(sections.slice(0, sections.length - 1).join('.'));\n this._id = this.name || this.parent ? ids.reverse().join('_') : null;\n if (this._id) {\n this.layoutService.registerWidget(this._id, this);\n }\n }\n handleValueChanged(e) {\n if (e.isUserInteraction) {\n this.setValue(e.value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPValueWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPValueWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPValueWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPDataListWidgetComponent extends AXPValueWidgetComponent {\n constructor() {\n super(...arguments);\n this.dataService = inject(AXPDataSourceDefinitionProviderService);\n this.textField = computed(() => this.options()['textField'] ?? 'title', ...(ngDevMode ? [{ debugName: \"textField\" }] : []));\n this.valueField = computed(() => this.options()['valueField'] ?? 'id', ...(ngDevMode ? [{ debugName: \"valueField\" }] : []));\n this.dataSource = signal(convertArrayToDataSource([]), ...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.isReady = computed(() => {\n const key = this.dataSource().config?.key;\n const valueField = this.valueField();\n const result = key == valueField;\n return result;\n }, ...(ngDevMode ? [{ debugName: \"isReady\" }] : []));\n this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: \"selectedItems\" }] : []));\n this.rf = effect(async () => {\n const rawValue = this.options()['dataSource'];\n // static datasource class\n if (rawValue instanceof AXDataSource) {\n this.dataSource.set(rawValue);\n }\n // static array datasource\n else if (Array.isArray(rawValue)) {\n const ds = new AXDataSource({\n key: this.valueField(),\n pageSize: 10,\n load: async (e) => {\n const raw = this.options()['dataSource'];\n return {\n items: raw,\n total: raw.length,\n };\n },\n byKey: (key) => {\n const raw = this.options()['dataSource'];\n const item = raw.filter((c) => c[this.valueField()] == key);\n return Promise.resolve(item[0]);\n },\n });\n this.dataSource.set(ds);\n }\n // resolve data source by name\n else if (rawValue && (typeof rawValue == 'string' || typeof rawValue == 'object')) {\n const id = typeof rawValue == 'object' ? rawValue['id'] : rawValue;\n const c = await this.dataService.get(id);\n if (this.mode == 'designer' && c?.samples?.length) {\n this.dataSource.set(convertArrayToDataSource(c.samples, {\n key: this.valueField(),\n pageSize: 500,\n }));\n }\n else {\n const ds = c?.source();\n if (ds && ds instanceof Promise) {\n const d = await ds;\n this.dataSource.set(d);\n }\n else if (ds) {\n this.dataSource.set(ds);\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n }\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n }, ...(ngDevMode ? [{ debugName: \"rf\" }] : []));\n this.effect2 = effect(async () => {\n const value = this.getValue();\n const items = [];\n if (Array.isArray(value)) {\n items.push(...(await Promise.all(value.map((item) => this.extractItem(item)))));\n }\n else {\n items.push(await this.extractItem(value));\n }\n this.selectedItems.set(items.filter((c) => c != null));\n }, ...(ngDevMode ? [{ debugName: \"effect2\" }] : []));\n }\n async extractItem(item) {\n if (isNil(item)) {\n return null;\n }\n if (isObjectLike(item) && get(item, this.textField()) != null) {\n return item;\n }\n const key = extractValue(item, this.valueField());\n const ds = this.dataSource();\n if (ds.config?.byKey) {\n const found = await ds.config?.byKey(key);\n if (found) {\n return found;\n }\n }\n return isObjectLike(item)\n ? item\n : {\n [this.valueField()]: item,\n [this.textField()]: item,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPDataListWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPDataListWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPDataListWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPColumnWidgetComponent {\n constructor() {\n this.token = inject(AXP_WIDGET_COLUMN_TOKEN);\n this.path = this.token.path;\n this.options = this.token.options ?? {};\n this.rawValue = null;\n this.nullText = this.options['nullText'];\n this.nullValue = this.options['nullValue'];\n this.value = computed(() => {\n if (isNil(this.rawValue) && !isNil(this.nullValue)) {\n return this.nullValue;\n }\n return this.rawValue;\n }, ...(ngDevMode ? [{ debugName: \"value\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPColumnWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPColumnWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPColumnWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQXVCLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakcsT0FBTyxFQUNMLHNDQUFzQyxFQUd0QyxZQUFZLEdBQ2IsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQWdCLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFzQyxNQUFNLGdCQUFnQixDQUFDOztBQU0vRyxNQUFNLE9BQWdCLHNCQUF1QixTQUFRLGdCQUFnQjtJQURyRTs7UUFFcUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBK0IsQ0FBQztRQUV2RCxrQkFBYSxHQUFHLE1B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LENBQUM7UUFFeEIsYUFBUSxHQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFXLENBQUM7UUFDbkQsY0FBUyxHQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFNLENBQUM7UUFFdkQsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDeEIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QixDQUFDLGlEQUFDLENBQUM7S0FDSjs4R0FoQnFCLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUQ3QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEYXRhU291cmNlLCBBWFZhbHVlQ2hhbmdlZEV2ZW50LCBjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgQVhQRGF0YVNvdXJjZURlZmluaXRpb25Qcm92aWRlclNlcnZpY2UsXG4gIEFYUFZhbGlkYXRpb25SdWxlLFxuICBBWFBWYWxpZGF0aW9uUnVsZXMsXG4gIGV4dHJhY3RWYWx1ZSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBnZXQsIGlzRXF1YWwsIGlzTmlsLCBpc09iamVjdExpa2UsIGlzVW5kZWZpbmVkIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsIEFYUExheW91dEVsZW1lbnQgfSBmcm9tICcuL2J1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyQ29udGV4dFN0b3JlIH0gZnJvbSAnLi9jb250ZXh0LXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0U3RhdHVzIH0gZnJvbSAnLi93aWRnZXQtc3RhdHVzLnR5cGVzJztcbmltcG9ydCB7IEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOLCBBWFBfV0lER0VUX1RPS0VOLCBBWFBXaWRnZXROb2RlLCBBWFBXaWRnZXRSZW5kZXJNb2RlIH0gZnJvbSAnLi93aWRnZXQudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBBWFBDbGFzc01hcCA9IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PjtcbmV4cG9ydCB0eXBlIEFYUFN0eWxlTWFwID0gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPj47XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBCYXNlV2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQTGF5b3V0RWxlbWVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB0b2tlbiA9IGluamVjdChBWFBfV0lER0VUX1RPS0VOKTtcbiAgcHVibGljIHJlYWRvbmx5IGhvc3QgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGF5b3V0U2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb250ZXh0U2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyQ29udGV4dFN0b3JlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnID0gdGhpcy50b2tlbi5jb25maWc7XG4gIHB1YmxpYyByZWFkb25seSBub2RlID0gdGhpcy50b2tlbi5ub2RlO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBuYW1lID0gdGhpcy50b2tlbi5ub2RlLm5hbWU7XG5cbiAgcHJvdGVjdGVkIGNvbXBvbmVudCA9IHRoaXM7XG5cbiAgcHJvdGVjdGVkIF9pZDogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgX29wdGlvbnMgPSBzaWduYWwodGhpcy50b2tlbi5vcHRpb25zID8/IHt9KTtcbiAgcHVibGljIG9wdGlvbnMgPSB0aGlzLl9vcHRpb25zLmFzUmVhZG9ubHkoKTtcblxuICBwdWJsaWMgb25PcHRpb25zQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PHsgc2VuZGVyOiBBWFBCYXNlV2lkZ2V0Q29tcG9uZW50IH0+KCk7XG5cbiAgcHJpdmF0ZSBfc3RhdHVzID0gc2lnbmFsPEFYUFdpZGdldFN0YXR1cz4oQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmluZyk7XG4gIHB1YmxpYyBzdGF0dXMgPSB0aGlzLl9zdGF0dXMuYXNSZWFkb25seSgpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvblN0YXR1c0NoYW5nZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYUFdpZGdldFN0YXR1cz4odGhpcy5fc3RhdHVzKCkpO1xuXG4gICNzdGF0dXNFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMub25TdGF0dXNDaGFuZ2VkLm5leHQodGhpcy5zdGF0dXMoKSk7XG4gIH0pO1xuXG4gIHB1YmxpYyBpc0J1c3kgPSBjb21wdXRlZCgoKSA9PiBbQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmluZywgQVhQV2lkZ2V0U3RhdHVzLlByb2Nlc3NpbmddLmluY2x1ZGVzKHRoaXMuc3RhdHVzKCkpKTtcblxuICBwYXJlbnQ6IEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwYXJlbnRDb21wb25lbnQ6IENvbXBvbmVudFJlZjxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBwYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGluZGV4OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBtb2RlOiBBWFBXaWRnZXRSZW5kZXJNb2RlO1xuICBsb2NrZWQ6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIG91dHB1dHMoKTogKHN0cmluZyB8IHsgW25hbWU6IHN0cmluZ106IHVua25vd24gfSlbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKGdldCh0aGlzLm5vZGUsICdfX21ldGFfXy5hZGRlZCcpKSB7XG4gICAgICB0aGlzLm9uQWRkZWQoKTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0dXMoQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdGF0dXMoc3RhdHVzOiBBWFBXaWRnZXRTdGF0dXMpIHtcbiAgICB0aGlzLl9zdGF0dXMuc2V0KHN0YXR1cyk7XG4gICAgdGhpcy5sYXlvdXRTZXJ2aWNlLnVwZGF0ZVN0YXR1cygpO1xuICB9XG5cbiAgcHVibGljIHNldE9wdGlvbnModmFsdWVzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMub3B0aW9ucygpO1xuICAgIGNvbnN0IHZhbHVlID0gY2xvbmVEZWVwKHZhbHVlcyk7XG4gICAgdGhpcy5fb3B0aW9ucy5zZXQoeyAuLi5vbGRWYWx1ZSwgLi4udmFsdWUgfSk7XG4gICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2VkLm5leHQoeyBzZW5kZXI6IHRoaXMgfSk7XG4gIH1cblxuICBvdXRwdXQ8VCA9IGFueT4obmFtZTogc3RyaW5nKTogVCB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IHRoaXMub3V0cHV0cygpLm1hcCgoYykgPT4gKHR5cGVvZiBjID09ICdzdHJpbmcnID8geyBuYW1lOiBjLCB2YWx1ZTogYyB9IDogYykpIGFzIHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHZhbHVlOiB1bmtub3duO1xuICAgIH1bXTtcblxuICAgIGlmIChvdXRwdXRzLnNvbWUoKGMpID0+IGMubmFtZSA9PSBuYW1lKSkge1xuICAgICAgY29uc3Qgb3B0ID0gZ2V0KHRoaXMsIG5hbWUpO1xuICAgICAgaWYgKHR5cGVvZiBvcHQgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gb3B0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbCBhcyBUO1xuICB9XG5cbiAgY2FsbChuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3QgZm4gPSBnZXQodGhpcywgbmFtZSkgYXMgRnVuY3Rpb247XG4gICAgaWYgKGZuICYmIHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmbi5iaW5kKHRoaXMpKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBfY2hpbGRyZW4gPSBzaWduYWwodGhpcy50b2tlbi5ub2RlLmNoaWxkcmVuID8/IFtdKTtcbiAgcHJvdGVjdGVkIGNoaWxkcmVuID0gdGhpcy5fY2hpbGRyZW4uYXNSZWFkb25seSgpO1xuXG4gIHNldENoaWxkcmVuKGNoaWxkcmVuOiBBWFBXaWRnZXROb2RlW10pIHtcbiAgICB0aGlzLl9jaGlsZHJlbi5zZXQoWy4uLmNoaWxkcmVuXSk7XG4gIH1cblxuICBvbkFkZGVkKCkge31cblxuICBob3N0Q2xhc3M/KCk6IEFYUENsYXNzTWFwO1xuICBob3N0U3R5bGU/KCk6IEFYUFN0eWxlTWFwO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUEJhc2VXaWRnZXRDb21wb25lbnQge31cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50PFQgPSBhbnkgfCBudWxsPiBleHRlbmRzIEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGF0aCA9IHRoaXMudG9rZW4ubm9kZS5wYXRoO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFZhbHVlID0gdGhpcy50b2tlbi5kZWZhdWx0VmFsdWUgPz8gdGhpcy50b2tlbi5ub2RlLmRlZmF1bHRWYWx1ZTtcblxuICBwcml2YXRlIF9pc1ZhbHVlV2lkZ2V0ID0gZmFsc2U7XG4gIHByaXZhdGUgaXNWYWx1ZVdpZGdldCA9ICgpID0+IHRoaXMuX2lzVmFsdWVXaWRnZXQ7XG5cbiAgcHVibGljIG9uVmFsdWVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8eyBzZW5kZXI6IEFYUEJhc2VXaWRnZXRDb21wb25lbnQgfT4oKTtcblxuICBwdWJsaWMgZnVsbFBhdGggPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyBwYXJlbnRQYXRoID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2lzVmFsdWVXaWRnZXQgPSB0aGlzLmNvbmZpZy5wcm9wZXJ0aWVzPy5zb21lKChjKSA9PiBjLm5hbWUgPT0gJ3BhdGgnKSA/PyBmYWxzZTtcbiAgICBpZiAodGhpcy5pc1ZhbHVlV2lkZ2V0KCkpIHtcbiAgICAgIHRoaXMuZGV0ZWN0RnVsbFBhdGgoKTtcbiAgICAgIGlmICghaXNOaWwodGhpcy5kZWZhdWx0VmFsdWUpICYmIGlzTmlsKHRoaXMuZ2V0VmFsdWUoKSkpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZSA9IGNvbXB1dGVkPFQ+KFxuICAgICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmZ1bGxQYXRoKCkgPyB0aGlzLmV4dHJhY3RWYWx1ZSh0aGlzLmZ1bGxQYXRoKCkhKSA6IG51bGw7XG4gICAgfSxcbiAgICB7IGVxdWFsOiBpc0VxdWFsIH0sXG4gICk7XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRpb25SdWxlcyA9IGNvbXB1dGVkPEFYUFZhbGlkYXRpb25SdWxlcz4oKCkgPT4ge1xuICAgIGNvbnN0IHZhbGlkYXRpb25zUmF3ID0gdGhpcy5vcHRpb25zKClbJ3ZhbGlkYXRpb25zJ107XG4gICAgaWYgKHZhbGlkYXRpb25zUmF3ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5vcHRpb25zKClbJ3ZhbGlkYXRpb25zJ10pXG4gICAgICAuZmlsdGVyKChjKSA9PiBjICE9IG51bGwpXG4gICAgICAubWFwKFxuICAgICAgICAoYzogYW55KSA9PlxuICAgICAgICAgICh7XG4gICAgICAgICAgICBydWxlOiBjLnJ1bGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBjLm1lc3NhZ2UsXG4gICAgICAgICAgICBvcHRpb25zOiBjLm9wdGlvbnMsXG4gICAgICAgICAgfSkgYXMgQVhQVmFsaWRhdGlvblJ1bGUsXG4gICAgICApO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgZXh0cmFjdFZhbHVlKHBhdGg6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldFZhbHVlKHBhdGgpO1xuICAgIGlmICh0aGlzLm5vZGUudmFsdWVUcmFuc2Zvcm1zPy5nZXR0ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUudmFsdWVUcmFuc2Zvcm1zPy5nZXR0ZXIocmF3VmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmF3VmFsdWU7XG4gIH1cblxuICBzZXRWYWx1ZSh2YWx1ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodGhpcy5ub2RlLnZhbHVlVHJhbnNmb3Jtcz8uc2V0dGVyKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubm9kZS52YWx1ZVRyYW5zZm9ybXM/LnNldHRlcih2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIHZhbHVlID0gaXNVbmRlZmluZWQodmFsdWUpID8gbnVsbCA6IHZhbHVlO1xuICAgIGlmIChpc05pbCh2YWx1ZSkgJiYgaXNOaWwob2xkVmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0VxdWFsKG9sZFZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZnVsbFBhdGgoKSkge1xuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUodGhpcy5mdWxsUGF0aCgpISwgdmFsdWUpO1xuICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5uZXh0KHsgc2VuZGVyOiB0aGlzIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0RnVsbFBhdGgoKSB7XG4gICAgY29uc3Qgc2VjdGlvbnMgPSBbXTtcbiAgICBjb25zdCBpZHMgPSBbXTtcbiAgICAvL1xuICAgIGxldCBwYXJlbnQ6IEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQgfCBudWxsIHwgdW5kZWZpbmVkID0gdGhpcyBhcyBBWFBMYXlvdXRCYXNlV2lkZ2V0Q29tcG9uZW50O1xuICAgIC8vXG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgY29uc3QgaXNWYWx1ZVdpZGdldCA9IHBhcmVudCBpbnN0YW5jZW9mIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50ICYmIHBhcmVudC5pc1ZhbHVlV2lkZ2V0KCk7XG4gICAgICBjb25zdCB2YWx1ZVBhcmVudCA9IHBhcmVudCBhcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudDxhbnk+O1xuICAgICAgY29uc3QgcGF0aCA9IHZhbHVlUGFyZW50LnBhdGggPz8gKGlzVmFsdWVXaWRnZXQgPyB2YWx1ZVBhcmVudC5uYW1lIDogbnVsbCk7XG4gICAgICBjb25zdCBpZCA9IHZhbHVlUGFyZW50Lm5hbWU7XG4gICAgICAvL1xuICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgc2VjdGlvbnMucHVzaChwYXRoKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJlbnQuaW5kZXggIT0gbnVsbCAmJiBpc1ZhbHVlV2lkZ2V0KSB7XG4gICAgICAgIHNlY3Rpb25zLnB1c2goYFske3BhcmVudC5pbmRleH1dYCk7XG4gICAgICB9XG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgaWRzLnB1c2goaWQpO1xuICAgICAgICBpZiAocGFyZW50LmluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICBpZHMucHVzaChgJHtwYXJlbnQuaW5kZXh9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5mdWxsUGF0aC5zZXQoc2VjdGlvbnMucmV2ZXJzZSgpLmpvaW4oJy4nKSk7XG4gICAgdGhpcy5wYXJlbnRQYXRoLnNldChzZWN0aW9ucy5zbGljZSgwLCBzZWN0aW9ucy5sZW5ndGggLSAxKS5qb2luKCcuJykpO1xuICAgIHRoaXMuX2lkID0gdGhpcy5uYW1lIHx8IHRoaXMucGFyZW50ID8gaWRzLnJldmVyc2UoKS5qb2luKCdfJykgOiBudWxsO1xuICAgIGlmICh0aGlzLl9pZCkge1xuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHRoaXMuX2lkLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlVmFsdWVDaGFuZ2VkKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQ8VD4pIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgdGhpcy5zZXRWYWx1ZShlLnZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUERhdGFMaXN0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQ8YW55PiB7XG4gIHByaXZhdGUgZGF0YVNlcnZpY2UgPSBpbmplY3QoQVhQRGF0YVNvdXJjZURlZmluaXRpb25Qcm92aWRlclNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCB0ZXh0RmllbGQgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHRoaXMub3B0aW9ucygpWyd0ZXh0RmllbGQnXSA/PyAndGl0bGUnKTtcbiAgcHJvdGVjdGVkIHZhbHVlRmllbGQgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+ICh0aGlzLm9wdGlvbnMoKVsndmFsdWVGaWVsZCddIGFzIHN0cmluZykgPz8gJ2lkJyk7XG4gIHByb3RlY3RlZCBkYXRhU291cmNlID0gc2lnbmFsPEFYRGF0YVNvdXJjZTxhbnk+Pihjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2U8YW55PihbXSkpO1xuXG4gIHByb3RlY3RlZCBpc1JlYWR5ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZGF0YVNvdXJjZSgpLmNvbmZpZz8ua2V5O1xuICAgIGNvbnN0IHZhbHVlRmllbGQgPSB0aGlzLnZhbHVlRmllbGQoKTtcbiAgICBjb25zdCByZXN1bHQgPSBrZXkgPT0gdmFsdWVGaWVsZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcblxuICBwdWJsaWMgc2VsZWN0ZWRJdGVtcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuXG4gIHByaXZhdGUgcmYgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gdGhpcy5vcHRpb25zKClbJ2RhdGFTb3VyY2UnXTtcbiAgICAvLyBzdGF0aWMgIGRhdGFzb3VyY2UgY2xhc3NcbiAgICBpZiAocmF3VmFsdWUgaW5zdGFuY2VvZiBBWERhdGFTb3VyY2UpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQocmF3VmFsdWUpO1xuICAgIH1cbiAgICAvLyBzdGF0aWMgYXJyYXkgZGF0YXNvdXJjZVxuICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmF3VmFsdWUpKSB7XG4gICAgICBjb25zdCBkcyA9IG5ldyBBWERhdGFTb3VyY2Uoe1xuICAgICAgICBrZXk6IHRoaXMudmFsdWVGaWVsZCgpLFxuICAgICAgICBwYWdlU2l6ZTogMTAsXG4gICAgICAgIGxvYWQ6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByYXcgPSB0aGlzLm9wdGlvbnMoKVsnZGF0YVNvdXJjZSddO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcmF3LFxuICAgICAgICAgICAgdG90YWw6IHJhdy5sZW5ndGgsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgYnlLZXk6IChrZXk6IHVua25vd24pID0+IHtcbiAgICAgICAgICBjb25zdCByYXcgPSB0aGlzLm9wdGlvbnMoKVsnZGF0YVNvdXJjZSddO1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSByYXcuZmlsdGVyKChjOiBhbnkpID0+IGNbdGhpcy52YWx1ZUZpZWxkKCldID09IGtleSk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShpdGVtWzBdKSBhcyBhbnk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoZHMpO1xuICAgIH1cbiAgICAvLyByZXNvbHZlIGRhdGEgc291cmNlIGJ5IG5hbWVcbiAgICBlbHNlIGlmIChyYXdWYWx1ZSAmJiAodHlwZW9mIHJhd1ZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiByYXdWYWx1ZSA9PSAnb2JqZWN0JykpIHtcbiAgICAgIGNvbnN0IGlkID0gdHlwZW9mIHJhd1ZhbHVlID09ICdvYmplY3QnID8gcmF3VmFsdWVbJ2lkJ10gOiByYXdWYWx1ZTtcbiAgICAgIGNvbnN0IGMgPSBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLmdldChpZCk7XG4gICAgICBpZiAodGhpcy5tb2RlID09ICdkZXNpZ25lcicgJiYgYz8uc2FtcGxlcz8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoXG4gICAgICAgICAgY29udmVydEFycmF5VG9EYXRhU291cmNlKGMuc2FtcGxlcywge1xuICAgICAgICAgICAga2V5OiB0aGlzLnZhbHVlRmllbGQoKSxcbiAgICAgICAgICAgIHBhZ2VTaXplOiA1MDAsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkcyA9IGM/LnNvdXJjZSgpO1xuICAgICAgICBpZiAoZHMgJiYgZHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgY29uc3QgZCA9IGF3YWl0IGRzO1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZHMpIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0KGRzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlbXB0eSBkYXRhc291cmNlXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoY29udmVydEFycmF5VG9EYXRhU291cmNlPGFueT4oW10pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBlbXB0eSBkYXRhc291cmNlXG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0KGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZTxhbnk+KFtdKSk7XG4gICAgfVxuICB9KTtcblxuICBwcm90ZWN0ZWQgYXN5bmMgZXh0cmFjdEl0ZW0oaXRlbTogdW5rbm93bik6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKGlzTmlsKGl0ZW0pKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0TGlrZShpdGVtKSAmJiBnZXQoaXRlbSwgdGhpcy50ZXh0RmllbGQoKSkgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IGV4dHJhY3RWYWx1ZShpdGVtLCB0aGlzLnZhbHVlRmllbGQoKSk7XG4gICAgY29uc3QgZHMgPSB0aGlzLmRhdGFTb3VyY2UoKTtcbiAgICBpZiAoZHMuY29uZmlnPy5ieUtleSkge1xuICAgICAgY29uc3QgZm91bmQgPSBhd2FpdCBkcy5jb25maWc/LmJ5S2V5KGtleSk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNPYmplY3RMaWtlKGl0ZW0pXG4gICAgICA/IGl0ZW1cbiAgICAgIDoge1xuICAgICAgICAgIFt0aGlzLnZhbHVlRmllbGQoKV06IGl0ZW0sXG4gICAgICAgICAgW3RoaXMudGV4dEZpZWxkKCldOiBpdGVtLFxuICAgICAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBlZmZlY3QyID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBpdGVtczogYW55W10gPSBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGl0ZW1zLnB1c2goLi4uKGF3YWl0IFByb21pc2UuYWxsKHZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiB0aGlzLmV4dHJhY3RJdGVtKGl0ZW0pKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbXMucHVzaChhd2FpdCB0aGlzLmV4dHJhY3RJdGVtKHZhbHVlKSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zZXQoaXRlbXMuZmlsdGVyKChjKSA9PiBjICE9IG51bGwpKTtcbiAgfSk7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBDb2x1bW5XaWRnZXRDb21wb25lbnQ8VCA9IGFueSB8IG51bGwgfCB2b2lkPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9rZW4gPSBpbmplY3QoQVhQX1dJREdFVF9DT0xVTU5fVE9LRU4pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwYXRoID0gdGhpcy50b2tlbi5wYXRoO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyA9IHRoaXMudG9rZW4ub3B0aW9ucyA/PyB7fTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJhd1ZhbHVlOiBUID0gbnVsbCBhcyBUO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm93RGF0YTogYW55O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbnVsbFRleHQ6IGFueSA9IHRoaXMub3B0aW9uc1snbnVsbFRleHQnXSBhcyBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBudWxsVmFsdWU6IFQgPSB0aGlzLm9wdGlvbnNbJ251bGxWYWx1ZSddIGFzIFQ7XG5cbiAgcHJvdGVjdGVkIHZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChpc05pbCh0aGlzLnJhd1ZhbHVlKSAmJiAhaXNOaWwodGhpcy5udWxsVmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5udWxsVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJhd1ZhbHVlO1xuICB9KTtcbn1cbiJdfQ==","import { computed, Injectable } from '@angular/core';\nimport { AXPLayoutBaseWidgetComponent } from '../widget-base.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostBoxStyle = computed(() => {\n const options = this.options();\n const style = {};\n const spacing = options?.['spacing'];\n const border = options?.['border'];\n const backgroundColor = options?.['backgroundColor'];\n const direction = options?.['direction'];\n const overflow = options?.['overflow'];\n const overflowX = options?.['overflowX'];\n const overflowY = options?.['overflowY'];\n style['background-color'] = backgroundColor ?? '';\n style['padding'] = spacing?.padding ?? '';\n style['margin'] = spacing?.margin ?? '';\n style['border-radius'] = border?.radius ?? '';\n style['border-width'] = border?.width ?? '';\n style['border-color'] = border?.color ?? '';\n style['border-style'] = border?.style ?? '';\n style['overflow'] = overflow ?? '';\n style['overflow-x'] = overflowX ?? '';\n style['overflow-y'] = overflowY ?? '';\n style['direction'] = direction ?? '';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostBoxStyle\" }] : []));\n this.blockStyle = computed(() => {\n const options = this.options();\n const style = { ...this.hostBoxStyle() };\n const width = options?.['width'];\n const minWidth = options?.['minWidth'];\n const maxWidth = options?.['maxWidth'];\n const height = options?.['height'];\n const minHeight = options?.['minHeight'];\n const maxHeight = options?.['maxHeight'];\n style['min-width'] = minWidth ?? '';\n style['width'] = width ?? '';\n style['max-width'] = maxWidth ?? '';\n style['min-height'] = minHeight ?? '';\n style['height'] = height ?? '';\n style['max-height'] = maxHeight ?? '';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"blockStyle\" }] : []));\n this.inlineStyle = computed(() => {\n return { ...this.hostBoxStyle() };\n }, ...(ngDevMode ? [{ debugName: \"inlineStyle\" }] : []));\n this.blockClass = computed(() => {\n return {\n 'ax-block': true,\n 'ax-w-full': true,\n // 'ax-widget-outline': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"blockClass\" }] : []));\n this.inlineClass = computed(() => {\n return {\n 'ax-inline-block': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"inlineClass\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94LW1vZGVsLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9iYXNlLXdpZGdldC9ib3gtbW9kZWwtd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQWUsNEJBQTRCLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFHbEcsTUFBTSxPQUFnQixnQ0FBaUMsU0FBUSw0QkFBNEI7SUFEM0Y7O1FBRVMsaUJBQVksR0FBRyxRQUFRLENBQWMsR0FBRyxFQUFFO1lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUUvQixNQUFNLEtBQUssR0FBb0MsRUFBRSxDQUFDO1lBRWxELE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBb0MsQ0FBQztZQUN4RSxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQW1DLENBQUM7WUFFckUsTUFBTSxlQUFlLEdBQUcsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQXVCLENBQUM7WUFDM0UsTUFBTSxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUF1QixDQUFDO1lBRS9ELE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBdUIsQ0FBQztZQUM3RCxNQUFNLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQXVCLENBQUM7WUFDL0QsTUFBTSxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUF1QixDQUFDO1lBRS9ELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLGVBQWUsSUFBSSxFQUFFLENBQUM7WUFDbEQsS0FB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O2tCQURyRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEJvcmRlckJveFN0cmluZywgQVhQU3BhY2luZ0JveFN0cmluZyB9IGZyb20gJy4uL2hlbHBlcic7XG5pbXBvcnQgeyBBWFBDbGFzc01hcCwgQVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudCwgQVhQU3R5bGVNYXAgfSBmcm9tICcuLi93aWRnZXQtYmFzZS5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQQm94TW9kZWxMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBMYXlvdXRCYXNlV2lkZ2V0Q29tcG9uZW50IHtcbiAgcHVibGljIGhvc3RCb3hTdHlsZSA9IGNvbXB1dGVkPEFYUFN0eWxlTWFwPigoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucygpO1xuXG4gICAgY29uc3Qgc3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gPSB7fTtcblxuICAgIGNvbnN0IHNwYWNpbmcgPSBvcHRpb25zPy5bJ3NwYWNpbmcnXSBhcyBBWFBTcGFjaW5nQm94U3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGJvcmRlciA9IG9wdGlvbnM/LlsnYm9yZGVyJ10gYXMgQVhQQm9yZGVyQm94U3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gb3B0aW9ucz8uWydiYWNrZ3JvdW5kQ29sb3InXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gb3B0aW9ucz8uWydkaXJlY3Rpb24nXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBvdmVyZmxvdyA9IG9wdGlvbnM/Llsnb3ZlcmZsb3cnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3ZlcmZsb3dYID0gb3B0aW9ucz8uWydvdmVyZmxvd1gnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3ZlcmZsb3dZID0gb3B0aW9ucz8uWydvdmVyZmxvd1knXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBzdHlsZVsnYmFja2dyb3VuZC1jb2xvciddID0gYmFja2dyb3VuZENvbG9yID8/ICcnO1xuICAgIHN0eWxlWydwYWRkaW5nJ10gPSBzcGFjaW5nPy5wYWRkaW5nID8/ICcnO1xuICAgIHN0eWxlWydtYXJnaW4nXSA9IHNwYWNpbmc/Lm1hcmdpbiA/PyAnJztcblxuICAgIHN0eWxlWydib3JkZXItcmFkaXVzJ10gPSBib3JkZXI/LnJhZGl1cyA/PyAnJztcbiAgICBzdHlsZVsnYm9yZGVyLXdpZHRoJ10gPSBib3JkZXI/LndpZHRoID8/ICcnO1xuICAgIHN0eWxlWydib3JkZXItY29sb3InXSA9IGJvcmRlcj8uY29sb3IgPz8gJyc7XG4gICAgc3R5bGVbJ2JvcmRlci1zdHlsZSddID0gYm9yZGVyPy5zdHlsZSA/PyAnJztcblxuICAgIHN0eWxlWydvdmVyZmxvdyddID0gb3ZlcmZsb3cgPz8gJyc7XG4gICAgc3R5bGVbJ292ZXJmbG93LXgnXSA9IG92ZXJmbG93WCA/PyAnJztcbiAgICBzdHlsZVsnb3ZlcmZsb3cteSddID0gb3ZlcmZsb3dZID8/ICcnO1xuXG4gICAgc3R5bGVbJ2RpcmVjdGlvbiddID0gZGlyZWN0aW9uID8/ICcnO1xuXG4gICAgcmV0dXJuIHN0eWxlO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgYmxvY2tTdHlsZSA9IGNvbXB1dGVkPEFYUFN0eWxlTWFwPigoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucygpO1xuXG4gICAgY29uc3Qgc3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gPSB7IC4uLnRoaXMuaG9zdEJveFN0eWxlKCkgfTtcblxuICAgIGNvbnN0IHdpZHRoID0gb3B0aW9ucz8uWyd3aWR0aCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtaW5XaWR0aCA9IG9wdGlvbnM/LlsnbWluV2lkdGgnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWF4V2lkdGggPSBvcHRpb25zPy5bJ21heFdpZHRoJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgaGVpZ2h0ID0gb3B0aW9ucz8uWydoZWlnaHQnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWluSGVpZ2h0ID0gb3B0aW9ucz8uWydtaW5IZWlnaHQnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWF4SGVpZ2h0ID0gb3B0aW9ucz8uWydtYXhIZWlnaHQnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBzdHlsZVsnbWluLXdpZHRoJ10gPSBtaW5XaWR0aCA/PyAnJztcbiAgICBzdHlsZVsnd2lkdGgnXSA9IHdpZHRoID8/ICcnO1xuICAgIHN0eWxlWydtYXgtd2lkdGgnXSA9IG1heFdpZHRoID8/ICcnO1xuXG4gICAgc3R5bGVbJ21pbi1oZWlnaHQnXSA9IG1pbkhlaWdodCA/PyAnJztcbiAgICBzdHlsZVsnaGVpZ2h0J10gPSBoZWlnaHQgPz8gJyc7XG4gICAgc3R5bGVbJ21heC1oZWlnaHQnXSA9IG1heEhlaWdodCA/PyAnJztcblxuICAgIHJldHVybiBzdHlsZTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGlubGluZVN0eWxlID0gY29tcHV0ZWQ8QVhQU3R5bGVNYXA+KCgpID0+IHtcbiAgICByZXR1cm4geyAuLi50aGlzLmhvc3RCb3hTdHlsZSgpIH07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBibG9ja0NsYXNzID0gY29tcHV0ZWQ8QVhQQ2xhc3NNYXA+KCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2F4LWJsb2NrJzogdHJ1ZSxcbiAgICAgICdheC13LWZ1bGwnOiB0cnVlLFxuICAgICAgLy8gJ2F4LXdpZGdldC1vdXRsaW5lJzogdHJ1ZSxcbiAgICB9O1xuICB9KTtcblxuICBwcm90ZWN0ZWQgaW5saW5lQ2xhc3MgPSBjb21wdXRlZDxBWFBDbGFzc01hcD4oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAnYXgtaW5saW5lLWJsb2NrJzogdHJ1ZSxcbiAgICB9O1xuICB9KTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { AXPBoxModelLayoutWidgetComponent } from './box-model-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPBlockBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvYmFzZS13aWRnZXQvYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUdoRixNQUFNLE9BQWdCLGlDQUFrQyxTQUFRLGdDQUFnQztJQURoRzs7UUFFa0IsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLHFEQUFDLENBQUM7UUFDOUMsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLHFEQUFDLENBQUM7S0FDL0Q7OEdBSHFCLGlDQUFpQztrSEFBakMsaUNBQWlDOzsyRkFBakMsaUNBQWlDO2tCQUR0RCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEJveE1vZGVsTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9ib3gtbW9kZWwtd2lkZ2V0LmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBCbG9ja0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBCb3hNb2RlbExheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmJsb2NrQ2xhc3MoKSk7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmJsb2NrU3R5bGUoKSk7XG59XG4iXX0=","import { Injectable, computed } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.flex = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"flex\" }] : []));\n this.hostFlexStyle = computed(() => {\n const blockStyle = this.blockStyle();\n const style = { ...blockStyle };\n const flex = this.flex();\n if (isNil(flex?.flexDirection)) {\n style['flex-direction'] = '';\n }\n else {\n style['flex-direction'] = flex.flexDirection;\n }\n if (isNil(flex?.flexWrap)) {\n style['flex-wrap'] = '';\n }\n else {\n style['flex-wrap'] = flex.flexWrap;\n }\n //TODO NEED TO FIX LATER\n style['overflow'] = flex?.flexWrap === 'nowrap' ? 'auto' : '';\n //END\n if (isNil(flex?.justifyContent)) {\n style['justify-content'] = '';\n }\n else {\n style['justify-content'] = flex.justifyContent;\n }\n if (isNil(flex?.alignItems)) {\n style['align-items'] = '';\n }\n else {\n style['align-items'] = flex.alignItems;\n }\n if (isNil(flex?.gap)) {\n style['gap'] = '';\n }\n else {\n style['gap'] = flex.gap;\n }\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostFlexStyle\" }] : []));\n this.hostFlexClass = computed(() => {\n return {\n ...this.blockClass(),\n 'ax-flex': true,\n 'ax-h-full': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"hostFlexClass\" }] : []));\n this.hostClass = computed(() => {\n return this.hostFlexClass();\n }, ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => {\n return this.hostFlexStyle();\n }, ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9iYXNlLXdpZGdldC9mbGV4LWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUdsRixNQUFNLE9BQWdCLGdDQUFpQyxTQUFRLGlDQUFpQztJQURoRzs7UUFFWSxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQWtDLGdEQUFDLENBQUM7UUFFekUsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEtBQUssR0FBb0MsRUFBRSxHQUFHLFVBQVUsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQy9DLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMxQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDckMsQ0FBQztZQUNELHdCQUF3QjtZQUN4QixLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxFQUFFLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlELEtBQUs7WUFDTCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ2pELENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM1QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDekMsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUMxQixDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLHlEQUFDLENBQUM7UUFFSSxrQkFBYSxHQUFHLFFBQVEsQ0FBMEIsR0FBRyxFQUFFO1lBQzVELE9BQU87Z0JBQ0wsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNwQixTQUFTLEVBQUUsSUFBSTtnQkFDZixXQUFXLEVBQUUsSUFBSTthQUNsQixDQUFDO1FBQ0osQ0FBQyx5REFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxxREFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxxREFBQyxDQUFDO0tBQ0o7OEdBckRxQixnQ0FBZ0M7a0hBQWhDLGdDQUFnQzs7MkZBQWhDLGdDQUFnQztrQkFEckQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBGbGV4Qm94U3RyaW5nIH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7IEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUEZsZXhCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGZsZXggPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKSBhcyBBWFBGbGV4Qm94U3RyaW5nIHwgdW5kZWZpbmVkKTtcblxuICBwdWJsaWMgaG9zdEZsZXhTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBibG9ja1N0eWxlID0gdGhpcy5ibG9ja1N0eWxlKCk7XG4gICAgY29uc3Qgc3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gPSB7IC4uLmJsb2NrU3R5bGUgfTtcbiAgICBjb25zdCBmbGV4ID0gdGhpcy5mbGV4KCk7XG4gICAgaWYgKGlzTmlsKGZsZXg/LmZsZXhEaXJlY3Rpb24pKSB7XG4gICAgICBzdHlsZVsnZmxleC1kaXJlY3Rpb24nXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnZmxleC1kaXJlY3Rpb24nXSA9IGZsZXguZmxleERpcmVjdGlvbjtcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZsZXg/LmZsZXhXcmFwKSkge1xuICAgICAgc3R5bGVbJ2ZsZXgtd3JhcCddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydmbGV4LXdyYXAnXSA9IGZsZXguZmxleFdyYXA7XG4gICAgfVxuICAgIC8vVE9ETyBORUVEIFRPIEZJWCBMQVRFUlxuICAgIHN0eWxlWydvdmVyZmxvdyddID0gZmxleD8uZmxleFdyYXAgPT09ICdub3dyYXAnID8gJ2F1dG8nIDogJyc7XG4gICAgLy9FTkRcbiAgICBpZiAoaXNOaWwoZmxleD8uanVzdGlmeUNvbnRlbnQpKSB7XG4gICAgICBzdHlsZVsnanVzdGlmeS1jb250ZW50J10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2p1c3RpZnktY29udGVudCddID0gZmxleC5qdXN0aWZ5Q29udGVudDtcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZsZXg/LmFsaWduSXRlbXMpKSB7XG4gICAgICBzdHlsZVsnYWxpZ24taXRlbXMnXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnYWxpZ24taXRlbXMnXSA9IGZsZXguYWxpZ25JdGVtcztcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZsZXg/LmdhcCkpIHtcbiAgICAgIHN0eWxlWydnYXAnXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnZ2FwJ10gPSBmbGV4LmdhcDtcbiAgICB9XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9KTtcblxuICBwdWJsaWMgaG9zdEZsZXhDbGFzcyA9IGNvbXB1dGVkPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PigoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuYmxvY2tDbGFzcygpLFxuICAgICAgJ2F4LWZsZXgnOiB0cnVlLFxuICAgICAgJ2F4LWgtZnVsbCc6IHRydWUsXG4gICAgfTtcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0RmxleENsYXNzKCk7XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEZsZXhTdHlsZSgpO1xuICB9KTtcbn1cbiJdfQ==","import { computed, Injectable } from '@angular/core';\nimport { AXPBoxModelLayoutWidgetComponent } from './box-model-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPInlineBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostClass = computed(() => this.inlineClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.inlineStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL2Jhc2Utd2lkZ2V0L2lubGluZS1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBR2hGLE1BQU0sT0FBZ0Isa0NBQW1DLFNBQVEsZ0NBQWdDO0lBRGpHOztRQUVrQixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUscURBQUMsQ0FBQztRQUMvQyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUscURBQUMsQ0FBQztLQUNoRTs4R0FIcUIsa0NBQWtDO2tIQUFsQyxrQ0FBa0M7OzJGQUFsQyxrQ0FBa0M7a0JBRHZELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQm94TW9kZWxMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL2JveC1tb2RlbC13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUElubGluZUJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBCb3hNb2RlbExheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlubGluZUNsYXNzKCkpO1xuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdFN0eWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbmxpbmVTdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXPInlineBaseLayoutWidgetComponent } from './inline-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.flexItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"flexItem\" }] : []));\n this.hostFlexItemStyle = computed(() => {\n const inlineStyle = this.blockStyle();\n const style = { ...inlineStyle };\n const fi = this.flexItem();\n if (isNil(fi?.order)) {\n style['order'] = '';\n }\n else {\n style['order'] = fi.order;\n }\n if (isNil(fi?.grow)) {\n style['flex-grow'] = '';\n }\n else {\n style['flex-grow'] = fi.grow;\n }\n if (isNil(fi?.shrink)) {\n style['flex-shrink'] = '';\n }\n else {\n style['flex-shrink'] = fi.shrink;\n }\n if (isNil(fi?.basis)) {\n style['flex-basis'] = '';\n }\n else {\n style['flex-basis'] = fi.basis;\n }\n if (isNil(fi?.alignSelf)) {\n style['align-self'] = '';\n }\n else {\n style['align-self'] = fi.alignSelf;\n }\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostFlexItemStyle\" }] : []));\n this.hostFlexItemClass = computed(() => {\n return {\n ...this.blockClass(),\n };\n }, ...(ngDevMode ? [{ debugName: \"hostFlexItemClass\" }] : []));\n this.hostClass = computed(() => {\n return this.hostFlexItemClass();\n }, ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => {\n return this.hostFlexItemStyle();\n }, ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL2Jhc2Utd2lkZ2V0L2ZsZXgtaXRlbS1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFHcEYsTUFBTSxPQUFnQixvQ0FBcUMsU0FBUSxrQ0FBa0M7SUFEckc7O1FBRVksYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFzQyxvREFBQyxDQUFDO1FBRWpGLHNCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFvQyxFQUFFLEdBQUcsV0FBVyxFQUFFLENBQUM7WUFDbEUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM1QixDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDMUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQy9CLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM1QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkMsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQixLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzNCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNqQyxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3JDLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsNkRBQUMsQ0FBQztRQUVJLHNCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsT0FBTztnQkFDTCxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7YUFDckIsQ0FBQztRQUNKLENBQUMsNkRBQUMsQ0FBQztRQUVhLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDbEMsQ0FBQyxxREFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNsQyxDQUFDLHFEQUFDLENBQUM7S0FDSjs4R0FoRHFCLG9DQUFvQztrSEFBcEMsb0NBQW9DOzsyRkFBcEMsb0NBQW9DO2tCQUR6RCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUEZsZXhJdGVtQm94U3RyaW5nIH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7IEFYUElubGluZUJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL2lubGluZS1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQRmxleEl0ZW1CYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQSW5saW5lQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBmbGV4SXRlbSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpIGFzIEFYUEZsZXhJdGVtQm94U3RyaW5nIHwgdW5kZWZpbmVkKTtcblxuICBwdWJsaWMgaG9zdEZsZXhJdGVtU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5saW5lU3R5bGUgPSB0aGlzLmJsb2NrU3R5bGUoKTtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4uaW5saW5lU3R5bGUgfTtcbiAgICBjb25zdCBmaSA9IHRoaXMuZmxleEl0ZW0oKTtcbiAgICBpZiAoaXNOaWwoZmk/Lm9yZGVyKSkge1xuICAgICAgc3R5bGVbJ29yZGVyJ10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ29yZGVyJ10gPSBmaS5vcmRlcjtcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZpPy5ncm93KSkge1xuICAgICAgc3R5bGVbJ2ZsZXgtZ3JvdyddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydmbGV4LWdyb3cnXSA9IGZpLmdyb3c7XG4gICAgfVxuICAgIGlmIChpc05pbChmaT8uc2hyaW5rKSkge1xuICAgICAgc3R5bGVbJ2ZsZXgtc2hyaW5rJ10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2ZsZXgtc2hyaW5rJ10gPSBmaS5zaHJpbms7XG4gICAgfVxuICAgIGlmIChpc05pbChmaT8uYmFzaXMpKSB7XG4gICAgICBzdHlsZVsnZmxleC1iYXNpcyddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydmbGV4LWJhc2lzJ10gPSBmaS5iYXNpcztcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZpPy5hbGlnblNlbGYpKSB7XG4gICAgICBzdHlsZVsnYWxpZ24tc2VsZiddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydhbGlnbi1zZWxmJ10gPSBmaS5hbGlnblNlbGY7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZTtcbiAgfSk7XG5cbiAgcHVibGljIGhvc3RGbGV4SXRlbUNsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmJsb2NrQ2xhc3MoKSxcbiAgICB9O1xuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RGbGV4SXRlbUNsYXNzKCk7XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEZsZXhJdGVtU3R5bGUoKTtcbiAgfSk7XG59XG4iXX0=","import { Injectable, computed } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.grid = computed(() => this.options()?.['grid'], ...(ngDevMode ? [{ debugName: \"grid\" }] : []));\n this.hostGridStyle = computed(() => {\n const style = { ...this.inlineStyle() };\n const g = this.grid()?.default;\n if (g?.gap)\n style['gap'] = g.gap;\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostGridStyle\" }] : []));\n this.hostGridClass = computed(() => {\n const cls = {\n ...this.inlineClass(),\n 'ax-grid': true,\n };\n const g = this.grid()?.default;\n if (g?.columns)\n cls[`lg:ax-grid-cols-${g.columns}`] = true;\n if (g?.rows)\n cls[`lg:ax-grid-rows-${g.rows}`] = true;\n if (g?.justifyItems)\n cls[`lg:ax-justify-items-${g.justifyItems}`] = true;\n if (g?.alignItems)\n cls[`lg:ax-align-items-${g.alignItems}`] = true;\n if (g?.autoFlow)\n cls[`lg:ax-grid-flow-${g.autoFlow}`] = true;\n return cls;\n }, ...(ngDevMode ? [{ debugName: \"hostGridClass\" }] : []));\n this.hostClass = computed(() => this.hostGridClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostGridStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9iYXNlLXdpZGdldC9ncmlkLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFHbEYsTUFBTSxPQUFnQixnQ0FBaUMsU0FBUSxpQ0FBaUM7SUFEaEc7O1FBRVUsU0FBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQXdDLGdEQUFDLENBQUM7UUFFeEYsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25DLE1BQU0sS0FBSyxHQUFvQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDekUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQztZQUUvQixJQUFJLENBQUMsRUFBRSxHQUFHO2dCQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBRWpDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyx5REFBQyxDQUFDO1FBRUksa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25DLE1BQU0sR0FBRyxHQUE0QjtnQkFDbkMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNyQixTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDO1lBRUYsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQztZQUUvQixJQUFJLENBQUMsRUFBRSxPQUFPO2dCQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzNELElBQUksQ0FBQyxFQUFFLElBQUk7Z0JBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDckQsSUFBSSxDQUFDLEVBQUUsWUFBWTtnQkFBRSxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN6RSxJQUFJLENBQUMsRUFBRSxVQUFVO2dCQUFFLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ25FLElBQUksQ0FBQyxFQUFFLFFBQVE7Z0JBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFFN0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLHlEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUscURBQUMsQ0FBQztRQUNqRCxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUscURBQUMsQ0FBQztLQUNsRTs4R0EvQnFCLGdDQUFnQztrSEFBaEMsZ0NBQWdDOzsyRkFBaEMsZ0NBQWdDO2tCQURyRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEdyaWRCcmVha3BvaW50VmFsdWVzIH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7IEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUEdyaWRCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBncmlkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCk/LlsnZ3JpZCddIGFzIEFYUEdyaWRCcmVha3BvaW50VmFsdWVzIHwgdW5kZWZpbmVkKTtcblxuICBwdWJsaWMgaG9zdEdyaWRTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4udGhpcy5pbmxpbmVTdHlsZSgpIH07XG4gICAgY29uc3QgZyA9IHRoaXMuZ3JpZCgpPy5kZWZhdWx0O1xuXG4gICAgaWYgKGc/LmdhcCkgc3R5bGVbJ2dhcCddID0gZy5nYXA7XG5cbiAgICByZXR1cm4gc3R5bGU7XG4gIH0pO1xuXG4gIHB1YmxpYyBob3N0R3JpZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNsczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7XG4gICAgICAuLi50aGlzLmlubGluZUNsYXNzKCksXG4gICAgICAnYXgtZ3JpZCc6IHRydWUsXG4gICAgfTtcblxuICAgIGNvbnN0IGcgPSB0aGlzLmdyaWQoKT8uZGVmYXVsdDtcblxuICAgIGlmIChnPy5jb2x1bW5zKSBjbHNbYGxnOmF4LWdyaWQtY29scy0ke2cuY29sdW1uc31gXSA9IHRydWU7XG4gICAgaWYgKGc/LnJvd3MpIGNsc1tgbGc6YXgtZ3JpZC1yb3dzLSR7Zy5yb3dzfWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8uanVzdGlmeUl0ZW1zKSBjbHNbYGxnOmF4LWp1c3RpZnktaXRlbXMtJHtnLmp1c3RpZnlJdGVtc31gXSA9IHRydWU7XG4gICAgaWYgKGc/LmFsaWduSXRlbXMpIGNsc1tgbGc6YXgtYWxpZ24taXRlbXMtJHtnLmFsaWduSXRlbXN9YF0gPSB0cnVlO1xuICAgIGlmIChnPy5hdXRvRmxvdykgY2xzW2BsZzpheC1ncmlkLWZsb3ctJHtnLmF1dG9GbG93fWBdID0gdHJ1ZTtcblxuICAgIHJldHVybiBjbHM7XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhvc3RHcmlkQ2xhc3MoKSk7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhvc3RHcmlkU3R5bGUoKSk7XG59XG4iXX0=","import { Injectable, computed } from '@angular/core';\nimport { AXPFlexBaseLayoutWidgetComponent } from './flex-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.gridItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"gridItem\" }] : []));\n this.hostGridItemStyle = computed(() => {\n const style = { ...this.hostFlexStyle() };\n const g = this.gridItem();\n if (g?.alignSelf)\n style['align-self'] = g.alignSelf;\n if (g?.justifySelf)\n style['justify-self'] = g.justifySelf;\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostGridItemStyle\" }] : []));\n this.hostGridItemClass = computed(() => {\n const cls = { ...this.hostFlexClass() };\n const g = this.gridItem();\n if (g?.colSpan)\n cls[`lg:ax-col-span-${g.colSpan}`] = true;\n if (g?.colStart)\n cls[`lg:ax-col-start-${g.colStart}`] = true;\n if (g?.colEnd)\n cls[`lg:ax-col-end-${g.colEnd}`] = true;\n if (g?.rowSpan)\n cls[`lg:ax-row-span-${g.rowSpan}`] = true;\n if (g?.rowStart)\n cls[`lg:ax-row-start-${g.rowStart}`] = true;\n if (g?.rowEnd)\n cls[`lg:ax-row-end-${g.rowEnd}`] = true;\n return cls;\n }, ...(ngDevMode ? [{ debugName: \"hostGridItemClass\" }] : []));\n this.hostClass = computed(() => this.hostGridItemClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostGridItemStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL2Jhc2Utd2lkZ2V0L2dyaWQtaXRlbS1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBR2hGLE1BQU0sT0FBZ0Isb0NBQXFDLFNBQVEsZ0NBQWdDO0lBRG5HOztRQUVVLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBc0Msb0RBQUMsQ0FBQztRQUUvRSxzQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLE1BQU0sS0FBSyxHQUFvQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDM0UsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRTFCLElBQUksQ0FBQyxFQUFFLFNBQVM7Z0JBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDcEQsSUFBSSxDQUFDLEVBQUUsV0FBVztnQkFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUUxRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsNkRBQUMsQ0FBQztRQUVJLHNCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxHQUFHLEdBQTRCLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUNqRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFMUIsSUFBSSxDQUFDLEVBQUUsT0FBTztnQkFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMxRCxJQUFJLENBQUMsRUFBRSxRQUFRO2dCQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzdELElBQUksQ0FBQyxFQUFFLE1BQU07Z0JBQUUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFFdkQsSUFBSSxDQUFDLEVBQUUsT0FBTztnQkFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMxRCxJQUFJLENBQUMsRUFBRSxRQUFRO2dCQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzdELElBQUksQ0FBQyxFQUFFLE1BQU07Z0JBQUUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFFdkQsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLDZEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxxREFBQyxDQUFDO1FBQ3JELGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLHFEQUFDLENBQUM7S0FDdEU7OEdBOUJxQixvQ0FBb0M7a0hBQXBDLG9DQUFvQzs7MkZBQXBDLG9DQUFvQztrQkFEekQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBHcmlkSXRlbUJveFN0cmluZyB9IGZyb20gJy4uL2hlbHBlci9wcm9wZXJ0eS1lZGl0b3IudHlwZSc7XG5pbXBvcnQgeyBBWFBGbGV4QmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vZmxleC1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQR3JpZEl0ZW1CYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQRmxleEJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQge1xuICBwcml2YXRlIGdyaWRJdGVtID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkgYXMgQVhQR3JpZEl0ZW1Cb3hTdHJpbmcgfCB1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyBob3N0R3JpZEl0ZW1TdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4udGhpcy5ob3N0RmxleFN0eWxlKCkgfTtcbiAgICBjb25zdCBnID0gdGhpcy5ncmlkSXRlbSgpO1xuXG4gICAgaWYgKGc/LmFsaWduU2VsZikgc3R5bGVbJ2FsaWduLXNlbGYnXSA9IGcuYWxpZ25TZWxmO1xuICAgIGlmIChnPy5qdXN0aWZ5U2VsZikgc3R5bGVbJ2p1c3RpZnktc2VsZiddID0gZy5qdXN0aWZ5U2VsZjtcblxuICAgIHJldHVybiBzdHlsZTtcbiAgfSk7XG5cbiAgcHVibGljIGhvc3RHcmlkSXRlbUNsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNsczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7IC4uLnRoaXMuaG9zdEZsZXhDbGFzcygpIH07XG4gICAgY29uc3QgZyA9IHRoaXMuZ3JpZEl0ZW0oKTtcblxuICAgIGlmIChnPy5jb2xTcGFuKSBjbHNbYGxnOmF4LWNvbC1zcGFuLSR7Zy5jb2xTcGFufWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8uY29sU3RhcnQpIGNsc1tgbGc6YXgtY29sLXN0YXJ0LSR7Zy5jb2xTdGFydH1gXSA9IHRydWU7XG4gICAgaWYgKGc/LmNvbEVuZCkgY2xzW2BsZzpheC1jb2wtZW5kLSR7Zy5jb2xFbmR9YF0gPSB0cnVlO1xuXG4gICAgaWYgKGc/LnJvd1NwYW4pIGNsc1tgbGc6YXgtcm93LXNwYW4tJHtnLnJvd1NwYW59YF0gPSB0cnVlO1xuICAgIGlmIChnPy5yb3dTdGFydCkgY2xzW2BsZzpheC1yb3ctc3RhcnQtJHtnLnJvd1N0YXJ0fWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8ucm93RW5kKSBjbHNbYGxnOmF4LXJvdy1lbmQtJHtnLnJvd0VuZH1gXSA9IHRydWU7XG5cbiAgICByZXR1cm4gY2xzO1xuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdENsYXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ob3N0R3JpZEl0ZW1DbGFzcygpKTtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaG9zdEdyaWRJdGVtU3R5bGUoKSk7XG59XG4iXX0=","import { Injectable, computed } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostTableClass = computed(() => ({\n ...this.blockClass(),\n }), ...(ngDevMode ? [{ debugName: \"hostTableClass\" }] : []));\n this.hostTableStyle = computed(() => {\n const style = { ...this.blockStyle() };\n style['overflow-x'] = 'auto';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostTableStyle\" }] : []));\n this.hostClass = computed(() => this.hostTableClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostTableStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvYmFzZS13aWRnZXQvdGFibGUtYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUdsRixNQUFNLE9BQWdCLGlDQUFrQyxTQUFRLGlDQUFpQztJQURqRzs7UUFFUyxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUNyQixDQUFDLDBEQUFDLENBQUM7UUFFRyxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxLQUFLLEdBQW9DLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUN4RSxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQywwREFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLHFEQUFDLENBQUM7UUFDbEQsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLHFEQUFDLENBQUM7S0FDbkU7OEdBYnFCLGlDQUFpQztrSEFBakMsaUNBQWlDOzsyRkFBakMsaUNBQWlDO2tCQUR0RCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUFRhYmxlQmFzZUxheW91dFdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHB1YmxpYyBob3N0VGFibGVDbGFzcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgLi4udGhpcy5ibG9ja0NsYXNzKCksXG4gIH0pKTtcblxuICBwdWJsaWMgaG9zdFRhYmxlU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gPSB7IC4uLnRoaXMuYmxvY2tTdHlsZSgpIH07XG4gICAgc3R5bGVbJ292ZXJmbG93LXgnXSA9ICdhdXRvJztcbiAgICByZXR1cm4gc3R5bGU7XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhvc3RUYWJsZUNsYXNzKCkpO1xuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdFN0eWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ob3N0VGFibGVTdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableItemOpsBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1vcHMtYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvYmFzZS13aWRnZXQvdGFibGUtaXRlbS1vcHMtYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR2xGLE1BQU0sT0FBZ0Isd0NBQXlDLFNBQVEsaUNBQWlDOzhHQUFsRix3Q0FBd0M7a0hBQXhDLHdDQUF3Qzs7MkZBQXhDLHdDQUF3QztrQkFEN0QsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUFRhYmxlSXRlbU9wc0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBCbG9ja0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQge1xuICAvLyBDb2x1bW5zIChyZWxhdGl2ZSB0byBjdXJyZW50IGNlbGwpXG4gIGFic3RyYWN0IGluc2VydENvbHVtbkxlZnQoKTogdm9pZDtcbiAgYWJzdHJhY3QgaW5zZXJ0Q29sdW1uUmlnaHQoKTogdm9pZDtcblxuICAvLyBSb3dzIHJlbGF0aXZlIHRvIGN1cnJlbnQgY2VsbFxuICBhYnN0cmFjdCBpbnNlcnRSb3dBYm92ZSgpOiB2b2lkO1xuICBhYnN0cmFjdCBpbnNlcnRSb3dCZWxvdygpOiB2b2lkO1xuXG4gIC8vIENlbGwtbGV2ZWwgaW5zZXJ0IG9wZXJhdGlvbnMgKHJlbGF0aXZlIHRvIGN1cnJlbnQgY2VsbClcbiAgYWJzdHJhY3QgaW5zZXJ0Q2VsbFNoaWZ0UmlnaHQoKTogdm9pZDsgLy8gaW5zZXJ0IHRvIHRoZSBsZWZ0IG9mIHRhcmdldCwgc2hpZnQgcmlnaHQsIGluY3JlYXNlIGNvbHVtbnNcbiAgYWJzdHJhY3QgaW5zZXJ0Q2VsbFNoaWZ0RG93bigpOiB2b2lkOyAvLyBpbnNlcnQgYWJvdmUgdGFyZ2V0IHJvdywgc2hpZnQgZG93biwgaW5jcmVhc2Ugcm93c1xufVxuIl19","import { Injectable, computed } from '@angular/core';\nimport { AXPTableItemOpsBaseLayoutWidgetComponent } from './table-item-ops-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableItemBaseLayoutWidgetComponent extends AXPTableItemOpsBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.colSpan = computed(() => {\n const v = this.options()?.colSpan;\n return v ? Math.max(1, v) : 1;\n }, ...(ngDevMode ? [{ debugName: \"colSpan\" }] : []));\n this.rowSpan = computed(() => {\n const v = this.options()?.rowSpan;\n return v ? Math.max(1, v) : 1;\n }, ...(ngDevMode ? [{ debugName: \"rowSpan\" }] : []));\n this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9iYXNlLXdpZGdldC90YWJsZS1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFHbEcsTUFBTSxPQUFnQixxQ0FBc0MsU0FBUSx3Q0FBd0M7SUFENUc7O1FBRVksWUFBTyxHQUFHLFFBQVEsQ0FBUyxHQUFHLEVBQUU7WUFDeEMsTUFBTSxDQUFDLEdBQUksSUFBSSxDQUFDLE9BQU8sRUFBVSxFQUFFLE9BQTZCLENBQUM7WUFDakUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxtREFBQyxDQUFDO1FBQ08sWUFBTyxHQUFHLFFBQVEsQ0FBUyxHQUFHLEVBQUU7WUFDeEMsTUFBTSxDQUFDLEdBQUksSUFBSSxDQUFDLE9BQU8sRUFBVSxFQUFFLE9BQTZCLENBQUM7WUFDakUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxtREFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLHFEQUFDLENBQUM7UUFDOUMsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLHFEQUFDLENBQUM7S0FDL0Q7OEdBWnFCLHFDQUFxQztrSEFBckMscUNBQXFDOzsyRkFBckMscUNBQXFDO2tCQUQxRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFRhYmxlSXRlbU9wc0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLWl0ZW0tb3BzLWJhc2Utd2lkZ2V0LmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBUYWJsZUl0ZW1CYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQVGFibGVJdGVtT3BzQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBjb2xTcGFuID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgY29uc3QgdiA9ICh0aGlzLm9wdGlvbnMoKSBhcyBhbnkpPy5jb2xTcGFuIGFzIG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdiA/IE1hdGgubWF4KDEsIHYpIDogMTtcbiAgfSk7XG4gIHByb3RlY3RlZCByb3dTcGFuID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgY29uc3QgdiA9ICh0aGlzLm9wdGlvbnMoKSBhcyBhbnkpPy5yb3dTcGFuIGFzIG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdiA/IE1hdGgubWF4KDEsIHYpIDogMTtcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYmxvY2tDbGFzcygpKTtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYmxvY2tTdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetRegistryService {\n /**\n *\n */\n constructor() {\n this.types = new Map();\n AXPWidgetRegistryService.instance = this;\n }\n register(widget) {\n this.types.set(widget.name, widget);\n }\n extend(parentName, widget) {\n const parentWidget = this.resolve(parentName);\n const newWidget = merge({}, parentWidget, widget);\n newWidget.name = widget.name;\n this.register(newWidget);\n }\n resolve(name) {\n const widget = this.types.get(name);\n if (!widget) {\n throw new Error(`Widget with name \"${name}\" does not exist.`);\n }\n return widget;\n }\n all() {\n return Array.from(this.types.values());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetRegistryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFNbEMsTUFBTSxPQUFPLHdCQUF3QjtJQUtuQzs7T0FFRztJQUNIO1FBUFEsVUFBSyxHQUFpQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBUXRELHdCQUF3QixDQUFDLFFBQVEsR0FBQyxJQUFJLENBQUM7SUFDekMsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUF1QjtRQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBa0IsRUFBRSxNQUF1QjtRQUNoRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELFNBQVMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLG1CQUFtQixDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxHQUFHO1FBQ1IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQWpDVSx3QkFBd0I7a0hBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzsyRkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29uZmlnIH0gZnJvbSAnLi93aWRnZXQudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB0eXBlczogTWFwPHN0cmluZywgQVhQV2lkZ2V0Q29uZmlnPiA9IG5ldyBNYXAoKTtcblxuICBwdWJsaWMgc3RhdGljICBpbnN0YW5jZTpBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2U7XG5cbiAgLyoqXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UuaW5zdGFuY2U9dGhpcztcbiAgfVxuXG4gIHJlZ2lzdGVyKHdpZGdldDogQVhQV2lkZ2V0Q29uZmlnKSB7XG4gICAgdGhpcy50eXBlcy5zZXQod2lkZ2V0Lm5hbWUsIHdpZGdldCk7XG4gIH1cblxuICBleHRlbmQocGFyZW50TmFtZTogc3RyaW5nLCB3aWRnZXQ6IEFYUFdpZGdldENvbmZpZykge1xuICAgIGNvbnN0IHBhcmVudFdpZGdldCA9IHRoaXMucmVzb2x2ZShwYXJlbnROYW1lKTtcbiAgICBjb25zdCBuZXdXaWRnZXQgPSBtZXJnZSh7fSwgcGFyZW50V2lkZ2V0LCB3aWRnZXQpO1xuICAgIG5ld1dpZGdldC5uYW1lID0gd2lkZ2V0Lm5hbWU7XG4gICAgdGhpcy5yZWdpc3RlcihuZXdXaWRnZXQpO1xuICB9XG5cbiAgcmVzb2x2ZShuYW1lOiBzdHJpbmcpOiBBWFBXaWRnZXRDb25maWcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHdpZGdldCA9IHRoaXMudHlwZXMuZ2V0KG5hbWUpO1xuICAgIGlmICghd2lkZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdpZGdldCB3aXRoIG5hbWUgXCIke25hbWV9XCIgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgfVxuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cblxuICBwdWJsaWMgYWxsKCk6IEFYUFdpZGdldENvbmZpZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnR5cGVzLnZhbHVlcygpKTtcbiAgfVxufVxuIl19","import { AXBaseDataTable, AXDataTableColumnComponent } from '@acorex/components/data-table';\nimport { getSmart } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, Input, TemplateRef, ViewChild, inject, signal, } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXP_WIDGET_COLUMN_TOKEN } from './widget.types';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/core/translation\";\nexport class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.widgetRegistery = inject(AXPWidgetRegistryService);\n this.grid = inject(AXBaseDataTable);\n this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: \"mergedOptions\" }] : []));\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n this.injector = inject(Injector);\n this.cdr = inject(ChangeDetectorRef);\n }\n get node() {\n return this._node;\n }\n set node(v) {\n this._node = v;\n }\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n get renderCellTemplate() {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n // if (row.data?.__meta__?.expanded === undefined) {\n // this.width = `${parseInt(this.width as string) + 24}px`;\n // }\n }\n get renderHeaderTemplate() {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n get loadingEnabled() {\n return true;\n }\n get name() {\n return `col-${this.node.path}`;\n }\n async ngOnInit() {\n const widget = this.widgetRegistery.resolve(this.node.type);\n const mode = 'column';\n this.component = await widget?.components[mode]?.component();\n //\n const props = widget?.components[mode]?.properties\n ?.filter((c) => c.schema.defaultValue)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node.options) || {});\n const tokenValue = {\n path: this.node.path,\n options: this.mergedOptions(),\n };\n this.widgetInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_COLUMN_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n this.width = this.customWidth ? this.customWidth : (this.mergedOptions().width ?? '200px');\n this.allowResizing = this.mergedOptions().allowResizing || true;\n this.cdr.detectChanges();\n }\n getInputs(data) {\n return {\n rawValue: getSmart(data, this.node.path),\n rowData: data,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetColumnRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: AXPWidgetColumnRendererComponent, isStandalone: false, selector: \"axp-widget-column-renderer\", inputs: { caption: \"caption\", customExpandIcon: \"customExpandIcon\", customCollapseIcon: \"customCollapseIcon\", customWidth: \"customWidth\", node: \"node\", footerTemplate: \"footerTemplate\", expandHandler: \"expandHandler\", cellTemplate: \"cellTemplate\", headerTemplate: \"headerTemplate\" }, providers: [\n AXPLayoutBuilderService,\n { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },\n ], viewQueries: [{ propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }, { propertyName: \"_contentCellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header>{{ caption | translate | async }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-gap-2 ax-items-center\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [class.ax-invisible]=\"row.data.hasChild === false\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'far fa-minus-square ax-text-md ax-opacity-75'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'far fa-plus-square ax-text-md ax-opacity-75'\"></i>\n }\n }\n </div>\n }\n @if (component && widgetInjector && row?.data) {\n <ng-container\n *ngComponentOutlet=\"component; injector: widgetInjector; inputs: getInputs(row.data)\"\n ></ng-container>\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletEnvironmentInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i2.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetColumnRendererComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widget-column-renderer',\n template: `\n <ng-template #header>{{ caption | translate | async }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-gap-2 ax-items-center\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [class.ax-invisible]=\"row.data.hasChild === false\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'far fa-minus-square ax-text-md ax-opacity-75'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'far fa-plus-square ax-text-md ax-opacity-75'\"></i>\n }\n }\n </div>\n }\n @if (component && widgetInjector && row?.data) {\n <ng-container\n *ngComponentOutlet=\"component; injector: widgetInjector; inputs: getInputs(row.data)\"\n ></ng-container>\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n providers: [\n AXPLayoutBuilderService,\n { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['caption'],\n standalone: false,\n }]\n }], propDecorators: { customExpandIcon: [{\n type: Input\n }], customCollapseIcon: [{\n type: Input\n }], customWidth: [{\n type: Input\n }], node: [{\n type: Input,\n args: [{ required: true }]\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], expandHandler: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], _contentCellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], headerTemplate: [{\n type: Input\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbHVtbi1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL3dpZGdldC1jb2x1bW4tcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQXVCLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUE0QzlFLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSwwQkFBMEI7SUExQ2hGOztRQTJDWSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3JELFNBQUksR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFnQi9CLGtCQUFhLEdBQUcsTUFBTSxDQUFNLEVBQUUseURBQUMsQ0FBQztRQUM5QixlQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksc0RBQUMsQ0FBQztRQW9ENUIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7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LElBQUksRUFBRTtnQkFZbEIsY0FBYztzQkFEcEIsS0FBSztnQkFJRSxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUTtnQkFRWixhQUFhO3NCQURuQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUUsb0JBQW9CO3NCQUQzQixTQUFTO3VCQUFDLE1BQU07Z0JBUVYsY0FBYztzQkFEcEIsS0FBSztnQkFJRSxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFzZURhdGFUYWJsZSwgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBnZXRTbWFydCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldENvbHVtbk5vZGUsIEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOIH0gZnJvbSAnLi93aWRnZXQudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+e3sgY2FwdGlvbiB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvdz5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWdhcC0yIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICBAaWYgKGV4cGFuZEhhbmRsZXIpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlRXhwYW5kUm93KHJvdylcIlxuICAgICAgICAgICAgY2xhc3M9XCJheC1leHBhbmQtaGFuZGxlclwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtaW52aXNpYmxlXT1cInJvdy5kYXRhLmhhc0NoaWxkID09PSBmYWxzZVwiXG4gICAgICAgICAgICBpZD1cImF4LWV4cGFuZC1oYW5kbGVyLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbc3R5bGUucGFkZGluZy1pbmxpbmUtc3RhcnQucmVtXT1cInJvdy5kYXRhPy5fX21ldGFfXz8ubGV2ZWwgKiAyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGxvYWRpbmdSb3coKSA9PT0gcm93KSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXItdGhpcmQgYXgtYW5pbWF0ZS10d1NwaW4gYXgtYW5pbWF0ZS1pbmZpbml0ZVwiPjwvaT5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICBAaWYgKHJvdy5kYXRhPy5fX21ldGFfXz8uZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiY3VzdG9tQ29sbGFwc2VJY29uIHx8ICdmYXIgZmEtbWludXMtc3F1YXJlIGF4LXRleHQtbWQgYXgtb3BhY2l0eS03NSdcIj48L2k+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJjdXN0b21FeHBhbmRJY29uIHx8ICdmYXIgZmEtcGx1cy1zcXVhcmUgYXgtdGV4dC1tZCAgYXgtb3BhY2l0eS03NSdcIj48L2k+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGNvbXBvbmVudCAmJiB3aWRnZXRJbmplY3RvciAmJiByb3c/LmRhdGEpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJjb21wb25lbnQ7IGluamVjdG9yOiB3aWRnZXRJbmplY3RvcjsgaW5wdXRzOiBnZXRJbnB1dHMocm93LmRhdGEpXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUFdpZGdldENvbHVtblJlbmRlcmVyQ29tcG9uZW50IH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbnB1dHM6IFsnY2FwdGlvbiddLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29sdW1uUmVuZGVyZXJDb21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCB3aWRnZXRSZWdpc3RlcnkgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBncmlkID0gaW5qZWN0KEFYQmFzZURhdGFUYWJsZSk7XG5cbiAgQElucHV0KCkgY3VzdG9tRXhwYW5kSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBjdXN0b21Db2xsYXBzZUljb246IHN0cmluZztcblxuICBASW5wdXQoKSBjdXN0b21XaWR0aDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX25vZGU6IEFYUFdpZGdldENvbHVtbk5vZGU7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBnZXQgbm9kZSgpOiBBWFBXaWRnZXRDb2x1bW5Ob2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbm9kZTtcbiAgfVxuICBwdWJsaWMgc2V0IG5vZGUodjogQVhQV2lkZ2V0Q29sdW1uTm9kZSkge1xuICAgIHRoaXMuX25vZGUgPSB2O1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZWRPcHRpb25zID0gc2lnbmFsPGFueT4oe30pO1xuICBwcm90ZWN0ZWQgbG9hZGluZ1JvdyA9IHNpZ25hbChudWxsKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50Rm9vdGVyVGVtcGxhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZXhwYW5kSGFuZGxlcjogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBAVmlld0NoaWxkKCdjZWxsJylcbiAgcHJpdmF0ZSBfY29udGVudENlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuY2VsbFRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRDZWxsVGVtcGxhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBWaWV3Q2hpbGQoJ2hlYWRlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRIZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV4cGFuZFJvdyhyb3c6IGFueSkge1xuICAgIHRoaXMubG9hZGluZ1Jvdy5zZXQocm93KTtcbiAgICBhd2FpdCB0aGlzLmdyaWQuZXhwYW5kUm93KHJvdyk7XG4gICAgdGhpcy5sb2FkaW5nUm93LnNldChudWxsKTtcbiAgICAvLyBpZiAocm93LmRhdGE/Ll9fbWV0YV9fPy5leHBhbmRlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gICB0aGlzLndpZHRoID0gYCR7cGFyc2VJbnQodGhpcy53aWR0aCBhcyBzdHJpbmcpICsgMjR9cHhgO1xuICAgIC8vIH1cbiAgfVxuXG4gIGdldCByZW5kZXJIZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudEhlYWRlclRlbXBsYXRlO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGNvbC0ke3RoaXMubm9kZS5wYXRofWA7XG4gIH1cblxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgd2lkZ2V0SW5qZWN0b3IhOiBJbmplY3RvcjtcbiAgcHJvdGVjdGVkIGNvbXBvbmVudCE6IGFueTtcblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB3aWRnZXQgPSB0aGlzLndpZGdldFJlZ2lzdGVyeS5yZXNvbHZlKHRoaXMubm9kZS50eXBlKTtcbiAgICBjb25zdCBtb2RlID0gJ2NvbHVtbic7XG4gICAgdGhpcy5jb21wb25lbnQgPSBhd2FpdCB3aWRnZXQ/LmNvbXBvbmVudHNbbW9kZV0/LmNvbXBvbmVudCgpO1xuICAgIC8vXG4gICAgY29uc3QgcHJvcHMgPSB3aWRnZXQ/LmNvbXBvbmVudHNbbW9kZV0/LnByb3BlcnRpZXNcbiAgICAgID8uZmlsdGVyKChjKSA9PiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUpXG4gICAgICAubWFwKChjKSA9PiAoeyBbYy5uYW1lXTogYy5zY2hlbWEuZGVmYXVsdFZhbHVlIH0pKVxuICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmFjYywgLi4uY3VyciB9O1xuICAgICAgfSwge30pO1xuICAgIC8vXG4gICAgdGhpcy5tZXJnZWRPcHRpb25zLnNldChtZXJnZShwcm9wcywgdGhpcy5ub2RlLm9wdGlvbnMpIHx8IHt9KTtcblxuICAgIGNvbnN0IHRva2VuVmFsdWUgPSB7XG4gICAgICBwYXRoOiB0aGlzLm5vZGUucGF0aCxcbiAgICAgIG9wdGlvbnM6IHRoaXMubWVyZ2VkT3B0aW9ucygpLFxuICAgIH07XG4gICAgdGhpcy53aWRnZXRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOLFxuICAgICAgICAgIHVzZVZhbHVlOiB0b2tlblZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMud2lkdGggPSB0aGlzLmN1c3RvbVdpZHRoID8gdGhpcy5jdXN0b21XaWR0aCA6ICh0aGlzLm1lcmdlZE9wdGlvbnMoKS53aWR0aCA/PyAnMjAwcHgnKTtcbiAgICB0aGlzLmFsbG93UmVzaXppbmcgPSB0aGlzLm1lcmdlZE9wdGlvbnMoKS5hbGxvd1Jlc2l6aW5nIHx8IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0SW5wdXRzKGRhdGE6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJhd1ZhbHVlOiBnZXRTbWFydChkYXRhLCB0aGlzLm5vZGUucGF0aCEpLFxuICAgICAgcm93RGF0YTogZGF0YSxcbiAgICB9O1xuICB9XG59XG4iXX0=","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, computed, effect, inject, } from '@angular/core';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPLayoutBuilderContextStore } from './context-store.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetContainerComponent {\n set context(value) {\n this.contextService.set(value);\n }\n set functions(v) {\n this.builderService.setFunctions(v);\n }\n constructor() {\n this.contextService = inject(AXPLayoutBuilderContextStore);\n this.builderService = inject(AXPLayoutBuilderService);\n this.onContextChanged = new EventEmitter();\n this.status = computed(() => {\n return this.builderService.status();\n }, ...(ngDevMode ? [{ debugName: \"status\" }] : []));\n this.isBusy = computed(() => {\n return this.builderService.isBusy();\n }, ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n effect(() => {\n if (this.contextService.isChanged()) {\n this.onContextChanged.emit(this.contextService.changeEvent());\n }\n });\n }\n refresh() {\n this.builderService.refresh();\n }\n find(name) {\n return this.builderService.waitForWidget(name);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: AXPWidgetContainerComponent, isStandalone: false, selector: \"axp-widgets-container\", inputs: { context: \"context\", functions: \"functions\" }, outputs: { onContextChanged: \"onContextChanged\" }, host: { styleAttribute: \"display: contents;\" }, providers: [AXPLayoutBuilderService, AXPLayoutBuilderContextStore], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widgets-container',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { style: 'display: contents;' },\n providers: [AXPLayoutBuilderService, AXPLayoutBuilderContextStore],\n standalone: false,\n }]\n }], ctorParameters: () => [], propDecorators: { onContextChanged: [{\n type: Output\n }], context: [{\n type: Input\n }], functions: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsNEJBQTRCLEVBQStCLE1BQU0seUJBQXlCLENBQUM7O0FBVXBHLE1BQU0sT0FBTywyQkFBMkI7SUFPdEMsSUFDSSxPQUFPLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFDVyxTQUFTLENBQUMsQ0FBTTtRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7UUFoQmdCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDdEQsbUJBQWMsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUdqRCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBK0IsQ0FBQztRQW9CNUUsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RDLENBQUMsa0RBQUMsQ0FBQztRQUVJLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QyxDQUFDLGtEQUFDLENBQUM7UUFiRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFXTSxPQUFPO1FBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sSUFBSSxDQUFDLElBQVk7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDOzhHQXhDVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixnT0FIM0IsQ0FBQyx1QkFBdUIsRUFBRSw0QkFBNEIsQ0FBQywwQkFIeEQsMkJBQTJCOzsyRkFNMUIsMkJBQTJCO2tCQVJ2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7b0JBQ3JDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLDRCQUE0QixDQUFDO29CQUNsRSxVQUFVLEVBQUUsS0FBSztpQkFDbEI7d0RBTWlCLGdCQUFnQjtzQkFEL0IsTUFBTTtnQkFJSCxPQUFPO3NCQURWLEtBQUs7Z0JBTUssU0FBUztzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlckNvbnRleHRTdG9yZSwgQVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50IH0gZnJvbSAnLi9jb250ZXh0LXN0b3JlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0cy1jb250YWluZXInLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBzdHlsZTogJ2Rpc3BsYXk6IGNvbnRlbnRzOycgfSxcbiAgcHJvdmlkZXJzOiBbQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsIEFYUExheW91dEJ1aWxkZXJDb250ZXh0U3RvcmVdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29udGFpbmVyQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRleHRTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJDb250ZXh0U3RvcmUpO1xuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRlclNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgb25Db250ZXh0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50PigpO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBjb250ZXh0KHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnNldCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZ1bmN0aW9ucyh2OiBhbnkpIHtcbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldEZ1bmN0aW9ucyh2KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb250ZXh0U2VydmljZS5pc0NoYW5nZWQoKSkge1xuICAgICAgICB0aGlzLm9uQ29udGV4dENoYW5nZWQuZW1pdCh0aGlzLmNvbnRleHRTZXJ2aWNlLmNoYW5nZUV2ZW50KCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXR1cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5idWlsZGVyU2VydmljZS5zdGF0dXMoKTtcbiAgfSk7XG5cbiAgcHVibGljIGlzQnVzeSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5idWlsZGVyU2VydmljZS5pc0J1c3koKTtcbiAgfSk7XG5cblxuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkZXJTZXJ2aWNlLndhaXRGb3JXaWRnZXQobmFtZSk7XG4gIH1cbn1cbiJdfQ==","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/skeleton\";\nexport class AXPWidgetPlaceholderComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: AXPWidgetPlaceholderComponent, isStandalone: true, selector: \"axp-widget-placeholder\", ngImport: i0, template: `<div>\n <ax-skeleton class=\"ax-w-full ax-h-10 ax-rounded-md\"></ax-skeleton>\n </div>`, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i1.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetPlaceholderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widget-placeholder',\n template: `<div>\n <ax-skeleton class=\"ax-w-full ax-h-10 ax-rounded-md\"></ax-skeleton>\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXSkeletonModule],\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXBsYWNlaG9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL3dpZGdldC1wbGFjZWhvbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBV25FLE1BQU0sT0FBTyw2QkFBNkI7OEdBQTdCLDZCQUE2QjtrR0FBN0IsNkJBQTZCLGtGQVA5Qjs7U0FFSCwyREFFRyxnQkFBZ0I7OzJGQUdmLDZCQUE2QjtrQkFUekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUU7O1NBRUg7b0JBQ1AsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFNrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NrZWxldG9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLXdpZGdldC1wbGFjZWhvbGRlcicsXG4gIHRlbXBsYXRlOiBgPGRpdj5cbiAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC0xMCBheC1yb3VuZGVkLW1kXCI+PC9heC1za2VsZXRvbj5cbiAgPC9kaXY+YCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtBWFNrZWxldG9uTW9kdWxlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0UGxhY2Vob2xkZXJDb21wb25lbnQge31cbiJdfQ==","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport { Directive, Injector, ViewContainerRef, effect, inject, input, output, signal, } from '@angular/core';\nimport { cloneDeep, get, isEmpty, isEqual, isString, merge, set, sum } from 'lodash-es';\nimport { Subject, filter } from 'rxjs';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPLayoutBuilderContextStore } from './context-store.service';\nimport { AXPWidgetPlaceholderComponent } from './widget-placeholder.component';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetStatus } from './widget-status.types';\nimport { AXP_WIDGET_TOKEN, } from './widget.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetRendererDirective {\n //#endregion\n //#endregion\n constructor() {\n this.parentNode = input(...(ngDevMode ? [undefined, { debugName: \"parentNode\" }] : []));\n this.index = input(...(ngDevMode ? [undefined, { debugName: \"index\" }] : []));\n this.mode = input.required(...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n this.node = input.required(...(ngDevMode ? [{ debugName: \"node\" }] : []));\n this._options = signal({}, ...(ngDevMode ? [{ debugName: \"_options\" }] : []));\n this.options = this._options.asReadonly();\n this.onOptionsChanged = output();\n this.onValueChanged = output();\n //#region ---- Properties ----\n this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: \"mergedOptions\" }] : []));\n this.injector = inject(Injector);\n this.builderService = inject(AXPLayoutBuilderService);\n this.contextService = inject(AXPLayoutBuilderContextStore);\n this.widgetRegistery = inject(AXPWidgetRegistryService);\n this.unsubscriber = inject(AXUnsubscriber);\n this.translateService = inject(AXTranslationService);\n this.widgetService = inject(AXPWidgetRegistryService);\n this.expressionEvaluator = inject(AXPExpressionEvaluatorService);\n this.viewContainerRef = inject(ViewContainerRef);\n this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n this.expressionEvaluators = new Map();\n this.renderTimeoutId = null;\n this.hasInitialRender = false;\n this.onContextChanged = new Subject();\n //#region ---- Performance Optimization Properties ----\n this.contextUpdateQueue = new Set();\n this.contextUpdateTimeout = null;\n this.CONTEXT_UPDATE_DEBOUNCE_MS = 4; // ~250fps for large forms\n // Removed visibility detection - not needed for current implementation\n // Expression result caching\n this.expressionCache = new Map();\n this.EXPRESSION_CACHE_TTL = 500; // Cache for 500ms (increased for better hit rate)\n // Options change tracking\n this.lastAppliedOptions = null;\n // Expression result tracking\n this.lastExpressionResults = new Map();\n // Buffer for context changes that happen before initial render completes\n this.preRenderContextQueue = new Set();\n effect(async () => {\n const changed = this.contextService.changeEvent();\n // Don't trigger re-render during initial setup\n if (!this.hasInitialRender) {\n if (changed.path) {\n this.preRenderContextQueue.add(changed.path);\n // console.log(`📝 [${this.node().type}] Buffered pre-render context change: ${changed.path}`);\n }\n return;\n }\n // CRITICAL PERFORMANCE FIX: Only respond to relevant context changes\n if (changed.path && this.isRelevantContextChange(changed.path)) {\n // console.log(`🎯 [${this.node().type}] Context change detected: ${changed.path}`);\n this.queueContextUpdate(changed.path);\n }\n });\n this.builderService.onRefresh.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async () => {\n await this.processBatchedUpdates();\n });\n }\n //#region ---- Expression Caching Methods ----\n getCachedExpressionResult(expressionKey) {\n const cached = this.expressionCache.get(expressionKey);\n if (cached && performance.now() - cached.timestamp < this.EXPRESSION_CACHE_TTL) {\n // console.log(`💾 [${this.node().type}] Using cached expression result for '${expressionKey}'`);\n return cached.value;\n }\n return null;\n }\n setCachedExpressionResult(expressionKey, value) {\n this.expressionCache.set(expressionKey, {\n value,\n timestamp: performance.now(),\n });\n }\n clearExpressionCache() {\n this.expressionCache.clear();\n }\n isPathAffectingExpressions(changedPath) {\n // console.log(\n // `🔍 [${this.node().type}] Checking if path '${changedPath}' affects expressions. Expression count: ${this.expressionEvaluators.size}`,\n // );\n // If widget has no expressions, no need to clear cache\n if (this.expressionEvaluators.size === 0) {\n // console.log(`🔍 [${this.node().type}] Path '${changedPath}' - no expressions, keeping cache`);\n return false;\n }\n // Use the same logic as hasExpressionDependency to check for actual dependencies\n if (this.hasExpressionDependency(changedPath)) {\n // console.log(`🔍 [${this.node().type}] Path '${changedPath}' affects expressions - clearing cache`);\n return true;\n }\n // console.log(`🔍 [${this.node().type}] Path '${changedPath}' does not affect expressions - keeping cache`);\n return false;\n }\n //#endregion\n //#region ---- Context Batching Methods ----\n queueContextUpdate(path) {\n if (path) {\n // console.log(`🔄 [${this.node().type}] Queueing context update for path: ${path}`);\n this.contextUpdateQueue.add(path);\n // Clear existing timeout\n if (this.contextUpdateTimeout) {\n clearTimeout(this.contextUpdateTimeout);\n }\n // Debounce updates\n this.contextUpdateTimeout = setTimeout(() => {\n // console.log(`⚡ [${this.node().type}] Processing batched updates for ${this.contextUpdateQueue.size} paths`);\n this.processBatchedUpdates();\n }, this.CONTEXT_UPDATE_DEBOUNCE_MS);\n }\n }\n async processBatchedUpdates() {\n if (this.contextUpdateQueue.size === 0)\n return;\n const startTime = performance.now();\n const paths = Array.from(this.contextUpdateQueue);\n this.contextUpdateQueue.clear();\n // console.log(`📊 [${this.node().type}] Processing ${paths.length} paths:`, paths);\n // Clear expression cache only if changed paths affect this widget's expressions\n const shouldClearCache = paths.some((path) => this.isPathAffectingExpressions(path));\n if (shouldClearCache) {\n // console.log(`🗑️ [${this.node().type}] Clearing expression cache due to expression-affecting path change`);\n this.clearExpressionCache();\n }\n // Process updates in batches\n const optionsStartTime = performance.now();\n const hasOptionsUpdate = await this.updateOptionsBasedOnContext();\n const optionsTime = performance.now() - optionsStartTime;\n if (typeof hasOptionsUpdate === 'number' && hasOptionsUpdate > 0) {\n // console.log(`🔧 [${this.node().type}] Options updated (${optionsTime.toFixed(2)}ms)`);\n this.applyOptions();\n }\n // Check formulas for any of the changed paths\n const formulaStartTime = performance.now();\n const formulaNeedsUpdate = paths.some((path) => this.checkFormulaForUpdate(this.node().formula, path));\n if (formulaNeedsUpdate) {\n // console.log(`🧮 [${this.node().type}] Formula needs update`);\n await this.updateValueBasedOnFormula();\n }\n const formulaTime = performance.now() - formulaStartTime;\n // Emit context changes\n paths.forEach((path) => {\n this.onContextChanged.next({ path });\n });\n const totalTime = performance.now() - startTime;\n // console.log(\n // `✅ [${this.node().type}] Batch processing completed in ${totalTime.toFixed(2)}ms (options: ${optionsTime.toFixed(2)}ms, formula: ${formulaTime.toFixed(2)}ms)`,\n // );\n }\n //#endregion\n //#region ---- Context Relevance Filtering ----\n isRelevantContextChange(changedPath) {\n const node = this.node();\n // 1. Direct path match - widget's own field\n if (node.path === changedPath) {\n return true;\n }\n // 2. Parent path match - widget is inside the changed container\n if (node.path && changedPath.startsWith(node.path + '.')) {\n return true;\n }\n // 3. Child path match - changed field is inside this widget's container\n if (node.path && node.path.startsWith(changedPath + '.')) {\n return true;\n }\n // 4. Expression dependency check - if widget has expressions that depend on this path\n if (this.hasExpressionDependency(changedPath)) {\n return true;\n }\n // 5. Formula dependency check - if widget's formula depends on this path\n if (node.formula && this.checkFormulaForUpdate(node.formula, changedPath)) {\n return true;\n }\n // 6. Trigger dependency check - if widget has triggers that depend on this path\n if (this.hasTriggerDependency(changedPath)) {\n return true;\n }\n return false;\n }\n hasExpressionDependency(changedPath) {\n // Check if any cached expressions depend on the changed path\n for (const [path, evaluator] of this.expressionEvaluators) {\n // Check if the expression path itself contains the changed path\n if (path.includes(changedPath)) {\n return true;\n }\n // Parse the actual expression content to check for context.eval() calls\n // We need to get the original expression string to analyze it\n const node = this.node();\n const expressionValue = this.getExpressionValueFromNode(node, path);\n if (expressionValue && typeof expressionValue === 'string') {\n // Look for context.eval() calls that reference the changed path\n const contextEvalRegex = /context\\.eval\\(['\"]([^'\\\"]+)['\"]\\)/g;\n let match;\n while ((match = contextEvalRegex.exec(expressionValue)) !== null) {\n const evalPath = match[1];\n // Normalize Id-suffixed segments to dot-id form (e.g., 'typeId' -> 'type.id', 'party.typeId' -> 'party.type.id')\n const normalizePath = (p) => {\n if (!p)\n return p;\n const parts = p.split('.');\n const last = parts[parts.length - 1];\n if (last && last.endsWith('Id')) {\n parts.splice(parts.length - 1, 1, last.slice(0, -2), 'id');\n }\n return parts.join('.');\n };\n const isSegmentSuffix = (a, b) => {\n if (!a || !b)\n return false;\n const pa = a.split('.');\n const pb = b.split('.');\n if (pb.length > pa.length)\n return false;\n for (let i = 1; i <= pb.length; i++) {\n if (pa[pa.length - i] !== pb[pb.length - i])\n return false;\n }\n return true;\n };\n const evalNorm = normalizePath(evalPath);\n const changedNorm = normalizePath(changedPath);\n // Debug log for dependency check\n // console.log(\n // `🧭 [${this.node().type}] dep-check expr='${path}', changed='${changedPath}', eval='${evalPath}', evalNorm='${evalNorm}', changedNorm='${changedNorm}'`,\n // );\n // Generic direct and hierarchical dependency checks (raw and normalized)\n const rawMatch = evalPath === changedPath ||\n evalPath.startsWith(changedPath + '.') ||\n changedPath.startsWith(evalPath + '.') ||\n isSegmentSuffix(evalPath, changedPath) ||\n isSegmentSuffix(changedPath, evalPath);\n const normMatch = evalNorm === changedNorm ||\n evalNorm.startsWith(changedNorm + '.') ||\n changedNorm.startsWith(evalNorm + '.') ||\n isSegmentSuffix(evalNorm, changedNorm) ||\n isSegmentSuffix(changedNorm, evalNorm);\n if (rawMatch || normMatch) {\n // console.log(\n // `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (generic match)`,\n // );\n return true;\n }\n // Check for path aliases/mappings (e.g., typeId.id <-> type.id)\n if (this.isPathAlias(evalPath, changedPath)) {\n // console.log(\n // `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (path alias)`,\n // );\n return true;\n }\n }\n }\n }\n return false;\n }\n isPathAlias(evalPath, changedPath) {\n // Dynamic path alias detection based on 'Id' suffix pattern\n // Examples: typeId.id <-> type.id, categoryId.name <-> category.name\n // Check if evalPath ends with 'Id' and has a property\n if (evalPath.endsWith('Id') && evalPath.includes('.')) {\n const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));\n const property = evalPath.substring(evalPath.lastIndexOf('.') + 1);\n const mappedPath = `${basePath}.${property}`;\n if (changedPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n // Check if changedPath ends with 'Id' and has a property\n if (changedPath.endsWith('Id') && changedPath.includes('.')) {\n const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));\n const property = changedPath.substring(changedPath.lastIndexOf('.') + 1);\n const mappedPath = `${basePath}.${property}`;\n if (evalPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n // Check for direct 'Id' suffix mapping (e.g., typeId <-> type.id)\n if (evalPath.endsWith('Id') && !evalPath.includes('.')) {\n const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));\n const mappedPath = `${basePath}.id`;\n if (changedPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n if (changedPath.endsWith('Id') && !changedPath.includes('.')) {\n const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));\n const mappedPath = `${basePath}.id`;\n if (evalPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n return false;\n }\n getExpressionValueFromNode(node, path) {\n try {\n // Navigate through the node structure to find the expression value\n const pathParts = path.split('.');\n let current = node.options || {};\n // Navigate through the path parts\n for (const part of pathParts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part];\n }\n else {\n return null;\n }\n }\n return typeof current === 'string' ? current : null;\n }\n catch (error) {\n // console.error('Error extracting expression value from node:', error);\n return null;\n }\n }\n hasTriggerDependency(changedPath) {\n const node = this.node();\n const triggers = node.triggers || node.options?.['triggers'] || this.mergedOptions()?.triggers;\n if (!triggers)\n return false;\n // Check if any trigger event depends on the changed path\n for (const trigger of triggers) {\n if (trigger.event && trigger.event.includes(changedPath)) {\n return true;\n }\n }\n return false;\n }\n //#endregion\n // Removed visibility detection methods - not needed for current implementation\n // Detect input changes\n ngOnChanges(changes) {\n if (changes['mode'] || changes['node']) {\n // Check if either 'mode' or 'node' has changed\n this.rerenderComponent();\n }\n }\n rerenderComponent() {\n // Clear any pending render operation to prevent double rendering\n if (this.renderTimeoutId) {\n clearTimeout(this.renderTimeoutId);\n this.renderTimeoutId = null;\n }\n // Reset loading state to allow re-rendering\n this.isLoading.set(false);\n // Schedule the component loading\n this.renderTimeoutId = setTimeout(async () => {\n await this.loadComponent();\n this.renderTimeoutId = null;\n });\n }\n ngOnDestroy() {\n if (this.renderTimeoutId) {\n clearTimeout(this.renderTimeoutId);\n }\n if (this.contextUpdateTimeout) {\n clearTimeout(this.contextUpdateTimeout);\n }\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n async loadComponent() {\n if (this.isLoading()) {\n return;\n }\n this.isLoading.set(true);\n try {\n // Destroy the existing component if it exists\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n this.viewContainerRef.clear();\n //\n const widget = this.widgetRegistery.resolve(this.node().type);\n //\n const propertiesToProcess = [\n ...(widget?.properties ?? []),\n ...(widget?.components[this.mode()]?.properties ?? []),\n ]?.filter((c) => c.schema.defaultValue != null);\n // Process default values (evaluate expressions if needed)\n const props = {};\n for (const property of propertiesToProcess) {\n const defaultValue = property.schema.defaultValue;\n if (typeof defaultValue === 'string' && this.expressionEvaluator.isExpression(defaultValue)) {\n // Evaluate expression for default value\n try {\n const evaluatedValue = await this.evaluateExpression(defaultValue);\n props[property.name] = evaluatedValue;\n }\n catch (error) {\n // console.error(`Error evaluating default value expression for property ${property.name}:`, error);\n props[property.name] = cloneDeep(defaultValue); // Fallback to original value\n }\n }\n else {\n // Use static default value\n props[property.name] = cloneDeep(defaultValue);\n }\n }\n //\n this.mergedOptions.set(merge(props, widget?.options, this.node().options) || {});\n this.expressionEvaluators.clear();\n // Register expressions from widget defaults and node options to cover related-entity cases\n this.preprocessAndInitialOptions(cloneDeep(widget?.options));\n this.preprocessAndInitialOptions(cloneDeep(this.node().options));\n await this.updateOptionsBasedOnContext();\n //\n this._options.update((val) => ({ ...val, ...this.mergedOptions() }));\n // Evaluate default value\n let defaultValue = this.node().defaultValue;\n if (defaultValue && this.expressionEvaluator.isExpression(defaultValue)) {\n defaultValue = await this.evaluateExpression(defaultValue);\n }\n //\n const tokenValue = {\n node: this.node(),\n defaultValue: defaultValue,\n options: this.mergedOptions(),\n config: widget,\n };\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n //\n const loadingRef = this.viewContainerRef.createComponent(AXPWidgetPlaceholderComponent);\n //\n const com = await widget?.components[this.mode()]?.component();\n if (!com) {\n // console.error(`${this.node().type} widget component not found with mode: ${this.mode()}`);\n return;\n }\n this.componentRef = this.viewContainerRef.createComponent(com, { injector: token });\n this.instance = this.componentRef.instance;\n this.instance.setStatus(AXPWidgetStatus.Rendering);\n this.instance.parent = this.parentNode();\n this.instance.index = this.index();\n this.instance.mode = this.mode();\n this.instance.setStatus(AXPWidgetStatus.Rendered);\n this.instance?.onOptionsChanged?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onOptionsChanged.emit({ sender: this, widget: c.sender });\n });\n this.instance?.onValueChanged?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onValueChanged.emit({ sender: this, widget: c.sender });\n });\n await this.updateValueBasedOnFormula();\n await this.assignTriggers();\n //\n loadingRef.destroy();\n // Mark that initial render is complete\n this.hasInitialRender = true;\n // Re-evaluate expressions after initial render to catch late-arriving related context\n if (this.expressionEvaluators.size > 0) {\n // console.log(`🔄 [${this.node().type}] Re-evaluating expressions after initial render`);\n await this.updateOptionsBasedOnContext();\n this.applyOptions();\n }\n // Process any buffered pre-render context changes now that the component is ready\n if (this.preRenderContextQueue.size > 0) {\n // console.log(\n // `🚀 [${this.node().type}] Processing ${this.preRenderContextQueue.size} buffered pre-render changes`,\n // );\n this.preRenderContextQueue.forEach((p) => this.contextUpdateQueue.add(p));\n this.preRenderContextQueue.clear();\n await this.processBatchedUpdates();\n }\n }\n catch (error) {\n // console.error('Error loading component:', error);\n }\n finally {\n this.isLoading.set(false);\n }\n }\n applyOptions() {\n if (!this.instance)\n return;\n const currentOptions = this.mergedOptions();\n // Check if options have actually changed\n if (this.hasOptionsChanged(currentOptions)) {\n // console.log('applyOptions', this.node().path, '- options changed');\n this._options.update((val) => ({ ...val, ...currentOptions }));\n this.instance.setOptions(currentOptions);\n this.lastAppliedOptions = cloneDeep(currentOptions); // Deep clone using Lodash\n }\n else {\n // console.log('applyOptions', this.node().path, '- no changes, skipping');\n }\n }\n hasOptionsChanged(newOptions) {\n if (!this.lastAppliedOptions) {\n return true; // First time, always apply\n }\n // Deep comparison of options using Lodash isEqual\n return !isEqual(newOptions, this.lastAppliedOptions);\n }\n // Removed deepCloneValue method - now using Lodash cloneDeep\n checkFormulaForUpdate(formula, path) {\n if (formula) {\n const regex = /context\\.eval\\('([^']+)'\\)/g;\n const matches = formula.match(regex);\n const nodes = matches ? matches.map((match) => match.match(/'([^']+)'/)[1]) : [];\n return nodes.includes(path);\n }\n else\n return false;\n }\n preprocessAndInitialOptions(obj, pathPrefix = '') {\n if (!obj) {\n return;\n }\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n // CRITICAL FIX: Skip trigger actions during options processing\n //\n // PROBLEM: Trigger actions were being evaluated immediately during widget setup/options processing,\n // causing them to execute before the actual trigger event occurred. This meant triggers would fire\n // during initialization instead of when the specified context path actually changed.\n //\n // ROOT CAUSE: The expression evaluator was processing trigger action expressions (like console.log\n // or widget.setValue calls) as part of the normal options preprocessing, treating them as dynamic\n // expressions that needed immediate evaluation.\n //\n // SOLUTION: Detect when we're processing trigger actions and store them as static values without\n // expression evaluation. This ensures trigger actions are only evaluated when the trigger's\n // subscription callback actually fires (when the event condition is met).\n //\n // RESULT: Triggers now only execute when their event filters pass (e.g., when the specified\n // context path changes), not during widget initialization.\n if (currentPath.includes('triggers') && (key === 'action' || currentPath.endsWith('.action'))) {\n // Apply static values directly without expression evaluation\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n return;\n }\n if (typeof value === 'string' && this.expressionEvaluator.isExpression(value)) {\n // Cache dynamic expression for later evaluation\n this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n }\n else if (typeof value === 'object' &&\n value !== null &&\n (value.constructor === Object || Array.isArray(value))) {\n // Recursively handle nested objects\n this.preprocessAndInitialOptions(value, currentPath);\n }\n else {\n // Apply static values directly\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n }\n });\n }\n async updateOptionsBasedOnContext() {\n // Early return if no expressions to evaluate\n if (this.expressionEvaluators.size === 0) {\n return 0;\n }\n // console.log(`🔍 [${this.node().type}] Evaluating ${this.expressionEvaluators.size} expressions`);\n const updatePromises = Array.from(this.expressionEvaluators).map(async ([path, evaluator]) => {\n // Check cache first\n const cachedValue = this.getCachedExpressionResult(path);\n if (cachedValue !== null) {\n // console.log(`💾 [${this.node().type}] Using cached expression result for '${path}'`);\n return { path, newValue: cachedValue, fromCache: true };\n }\n // Evaluate expression if not cached\n const evalStartTime = performance.now();\n const newValue = await evaluator();\n const evalTime = performance.now() - evalStartTime;\n // Check if result has actually changed using Lodash isEqual\n const lastValue = this.lastExpressionResults.get(path);\n const hasChanged = !isEqual(newValue, lastValue);\n if (hasChanged) {\n // console.log(\n // `📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value changed`,\n // );\n // Cache the result and track it\n this.setCachedExpressionResult(path, newValue);\n this.lastExpressionResults.set(path, cloneDeep(newValue));\n return { path, newValue, fromCache: false, hasChanged: true };\n }\n else {\n // console.log(\n // `📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value unchanged, skipping update`,\n // );\n // Cache the result but don't update\n this.setCachedExpressionResult(path, newValue);\n this.lastExpressionResults.set(path, cloneDeep(newValue));\n return { path, newValue, fromCache: false, hasChanged: false };\n }\n });\n // Wait for all evaluators to complete\n const updates = await Promise.all(updatePromises);\n // Filter updates to only include those that have actually changed\n const changedUpdates = updates.filter((update) => update.hasChanged !== false);\n // Apply updates to mergedOptions only for changed values\n if (changedUpdates.length > 0) {\n this.mergedOptions.update((o) => {\n const updatedOptions = { ...o };\n changedUpdates.forEach(({ path, newValue }) => {\n set(updatedOptions, path, newValue);\n });\n return updatedOptions;\n });\n }\n const cacheHits = updates.filter((update) => update.fromCache).length;\n const skippedUpdates = updates.length - changedUpdates.length;\n // console.log(\n // `📋 [${this.node().type}] Applied ${changedUpdates.length} expression updates (${cacheHits} cache hits, ${skippedUpdates} skipped)`,\n // );\n return changedUpdates.length;\n }\n async updateValueBasedOnFormula() {\n if (this.node().formula) {\n const value = await this.evaluateExpression(this.node().formula);\n this.instance.setValue(value);\n }\n }\n async evaluateExpression(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n return await this.expressionEvaluator.evaluate(templateExpression, scope);\n }\n catch (error) {\n // console.error('Error evaluating expression:', error);\n return false;\n }\n }\n buildExpressionScope() {\n return {\n context: this.getContextScope(),\n events: this.getEventScope(),\n widget: this.getWidgetScope(),\n methods: this.getFunctionScope(),\n vars: this.getVariablesScope(),\n };\n }\n getContextScope() {\n return {\n eval: (path) => {\n //TODO: Handle array index\n const fullPath = path.startsWith('>') ? `${this.instance?.parentPath()}.${path.substring(1)}` : path;\n const value = this.contextService.getValue(fullPath);\n return value;\n },\n set: (path, value) => {\n this.contextService.update(path, value);\n },\n data: () => {\n return this.contextService.data();\n },\n isDirty: () => {\n return this.contextService.isDirty();\n },\n };\n }\n getEventScope() {\n return {\n context: (path) => {\n return this.onContextChanged.pipe(filter((c) => {\n // If no path filter specified, pass all events\n if (path == null || path === '') {\n return true;\n }\n // Ensure c.path exists\n if (!c.path) {\n return false;\n }\n // Pattern: \"prefix*\" - matches paths that start with prefix\n if (path.endsWith('*')) {\n const prefix = path.substring(0, path.length - 1);\n return c.path.startsWith(prefix);\n }\n // Pattern: \"*suffix\" - matches paths that end with suffix\n else if (path.startsWith('*')) {\n const suffix = path.substring(1);\n return c.path.endsWith(suffix);\n }\n // Exact match\n else {\n return c.path === path;\n }\n }));\n },\n from: (event) => get(this.instance.api(), event),\n };\n }\n getWidgetScope() {\n return {\n call: (name, ...args) => {\n this.instance.call(name, ...args);\n },\n setValue: (value) => {\n this.instance.setValue(value);\n },\n clear: () => {\n this.instance.setValue(undefined);\n },\n refresh: () => {\n const refresh = this.instance?.['refresh'];\n if (refresh && typeof refresh === 'function') {\n refresh.bind(this.instance)();\n }\n },\n output: (name) => {\n this.instance.output(name);\n },\n find: (id) => {\n return this.builderService.getWidget(id);\n },\n };\n }\n getFunctionScope() {\n const scope = {\n sum: (values) => {\n return sum(values);\n },\n translate: (text, options) => {\n return this.translateService.translateAsync(text, options);\n },\n widgetInfo: (name) => {\n return this.widgetService.resolve(name);\n },\n };\n // Add custom functions from builder service\n Object.entries(this.builderService.functions).forEach(([key, fn]) => {\n scope[key] = (...args) => {\n return fn(...args);\n };\n });\n return scope;\n }\n getVariablesScope() {\n return {\n eval: (path) => get(this.builderService.variables, path),\n };\n }\n async assignTriggers() {\n const node = this.node();\n // Check multiple possible locations for triggers\n const triggers = node.triggers || node.options?.['triggers'] || this.mergedOptions()?.triggers;\n if (!triggers) {\n return;\n }\n for (const trigger of triggers) {\n try {\n const event = await this.evaluateTrigger(trigger.event);\n if (event) {\n event.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n const exec = async (action) => {\n if (!isEmpty(action) && isString(action)) {\n await this.evaluateAction(action);\n }\n };\n const actions = Array.isArray(trigger.action) ? trigger.action : [trigger.action];\n actions.forEach(async (a) => await exec(a));\n });\n }\n }\n catch (error) {\n // console.error('Error assigning trigger:', error);\n }\n }\n }\n async evaluateTrigger(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n const result = await this.expressionEvaluator.evaluate(templateExpression, scope);\n // Check if result is an Observable\n if (result && typeof result.subscribe === 'function') {\n return result;\n }\n else {\n return null;\n }\n }\n catch (error) {\n // console.error('Error evaluating trigger expression:', error);\n return null;\n }\n }\n async evaluateAction(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n await this.expressionEvaluator.evaluate(templateExpression, scope);\n }\n catch (error) {\n // console.error('Error evaluating action expression:', templateExpression, error);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.8\", type: AXPWidgetRendererDirective, isStandalone: false, selector: \"[axp-widget-renderer]\", inputs: { parentNode: { classPropertyName: \"parentNode\", publicName: \"parentNode\", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: \"index\", publicName: \"index\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: \"node\", publicName: \"node\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onOptionsChanged: \"onOptionsChanged\", onValueChanged: \"onValueChanged\" }, providers: [\n {\n provide: AXUnsubscriber,\n },\n ], exportAs: [\"widgetRenderer\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetRendererDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axp-widget-renderer]',\n exportAs: 'widgetRenderer',\n providers: [\n {\n provide: AXUnsubscriber,\n },\n ],\n standalone: false,\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlbmRlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL3dpZGdldC1yZW5kZXJlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQStCLDZCQUE2QixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFDaEgsT0FBTyxFQUVMLFNBQVMsRUFDVCxRQUFRLEVBRVIsZ0JBQWdCLEVBRWhCLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEYsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFLTCxnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFjeEIsTUFBTSxPQUFPLDBCQUEwQjtJQTJEckMsWUFBWTtJQUVaLFlBQVk7SUFFWjtRQTlEQSxlQUFVLEdBQUcsS0FBSyxnRUFBdUMsQ0FBQztRQUUxRCxVQUFLLEdBQUcsS0FBSywyREFBaUIsQ0FBQztRQUUvQixTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsK0NBQXVCLENBQUM7UUFDN0MsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLCtDQUFpQixDQUFDO1FBRS9CLGFBQVEsR0FBRyxNQUFNLENBQW9DLEVBQUUsb0RBQUMsQ0FBQztRQUMxRCxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVyQyxxQkFBZ0IsR0FBRyxNQUFNLEVBQTBFLENBQUM7UUFDcEcsbUJBQWMsR0FBRyxNQUFNLEVBQTJFLENBQUM7UUFFMUcsa0NBQWtDO1FBRXhCLGtCQUFhLEdBQXdCLE1BQU0sQ0FBTSxFQUFFLHlEQUFDLENBQUM7UUFFdkQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixtQkFBYyxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2pELG1CQUFjLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDdEQsb0JBQWUsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNuRCxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNoRCxrQkFBYSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2pELHdCQUFtQixHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzlELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTFDLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxxREFBQyxDQUFDO1FBRzVCLHlCQUFvQixHQUFvQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWxFLG9CQUFlLEdBQVEsSUFBSSxDQUFDO1FBQzVCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6QixxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztRQUUzRCwyREFBMkQ7UUFFbkQsdUJBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUN2Qyx5QkFBb0IsR0FBUSxJQUFJLENBQUM7UUFDeEIsK0JBQTBCLEdBQUcsQ0FBQyxDQUFDLENBQUMsMEJBQTBCO1FBRTNFLHVFQUF1RTtRQUV2RSw0QkFBNEI7UUFDcEIsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBNkMsQ0FBQztRQUM5RCx5QkFBb0IsR0FBRyxHQUFHLENBQUMsQ0FBQyxrREFBa0Q7UUFFL0YsMEJBQTBCO1FBQ2xCLHVCQUFrQixHQUFRLElBQUksQ0FBQztRQUV2Qyw2QkFBNkI7UUFDckIsMEJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUV2RCx5RUFBeUU7UUFDakUsMEJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQU9oRCxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDaEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVsRCwrQ0FBK0M7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMzQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDakIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdDLCtGQUErRjtnQkFDakcsQ0FBQztnQkFDRCxPQUFPO1lBQ1QsQ0FBQztZQUVELHFFQUFxRTtZQUNyRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMvRCxvRkFBb0Y7Z0JBQ3BGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDMUYsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrREFBa0Q7SUFFMUMseUJBQXlCLENBQUMsYUFBcUI7UUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsSUFBSSxNQUFNLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDL0UsaUdBQWlHO1lBQ2pHLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztRQUN0QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8seUJBQXlCLENBQUMsYUFBcUIsRUFBRSxLQUFVO1FBQ2pFLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRTtZQUN0QyxLQUFLO1lBQ0wsU0FBUyxFQUFFLFdBQVcsQ0FBQyxHQUFHLEVBQUU7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxXQUFtQjtRQUNwRCxlQUFlO1FBQ2YsMklBQTJJO1FBQzNJLEtBQUs7UUFFTCx1REFBdUQ7UUFDdkQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pDLGlHQUFpRztZQUNqRyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxpRkFBaUY7UUFDakYsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxzR0FBc0c7WUFDdEcsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsNkdBQTZHO1FBQzdHLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFlBQVk7SUFFWixnREFBZ0Q7SUFFeEMsa0JBQWtCLENBQUMsSUFBWTtRQUNyQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QscUZBQXFGO1lBQ3JGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFbEMseUJBQXlCO1lBQ3pCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzlCLFlBQVksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBRUQsbUJBQW1CO1lBQ25CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUMxQywrR0FBK0c7Z0JBQy9HLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLENBQUMsRUFBRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxxQkFBcUI7UUFDakMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBRS9DLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVoQyxvRkFBb0Y7UUFFcEYsZ0ZBQWdGO1FBQ2hGLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckYsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLDhHQUE4RztZQUM5RyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBRUQsNkJBQTZCO1FBQzdCLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzNDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNsRSxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsZ0JBQWdCLENBQUM7UUFFekQsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVEsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqRSx5RkFBeUY7WUFDekYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCw4Q0FBOEM7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDM0MsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXZHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUN2QixnRUFBZ0U7WUFDaEUsTUFBTSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLGdCQUFnQixDQUFDO1FBRXpELHVCQUF1QjtRQUN2QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBQ2hELGVBQWU7UUFDZixvS0FBb0s7UUFDcEssS0FBSztJQUNQLENBQUM7SUFFRCxZQUFZO0lBRVosbURBQW1EO0lBRTNDLHVCQUF1QixDQUFDLFdBQW1CO1FBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV6Qiw0Q0FBNEM7UUFDNUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELGdFQUFnRTtRQUNoRSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsd0VBQXdFO1FBQ3hFLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxzRkFBc0Y7UUFDdEYsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCx5RUFBeUU7UUFDekUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDMUUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsZ0ZBQWdGO1FBQ2hGLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sdUJBQXVCLENBQUMsV0FBbUI7UUFDakQsNkRBQTZEO1FBQzdELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMxRCxnRUFBZ0U7WUFDaEUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELHdFQUF3RTtZQUN4RSw4REFBOEQ7WUFDOUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFcEUsSUFBSSxlQUFlLElBQUksT0FBTyxlQUFlLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzNELGdFQUFnRTtnQkFDaEUsTUFBTSxnQkFBZ0IsR0FBRyxxQ0FBcUMsQ0FBQztnQkFDL0QsSUFBSSxLQUFLLENBQUM7Z0JBQ1YsT0FBTyxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDakUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUUxQixpSEFBaUg7b0JBQ2pILE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBUyxFQUFVLEVBQUU7d0JBQzFDLElBQUksQ0FBQyxDQUFDOzRCQUFFLE9BQU8sQ0FBQyxDQUFDO3dCQUNqQixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMzQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDOzRCQUNoQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUM3RCxDQUFDO3dCQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDekIsQ0FBQyxDQUFDO29CQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBVyxFQUFFO3dCQUN4RCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFBRSxPQUFPLEtBQUssQ0FBQzt3QkFDM0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDeEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDeEIsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNOzRCQUFFLE9BQU8sS0FBSyxDQUFDO3dCQUN4QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDOzRCQUNwQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQ0FBRSxPQUFPLEtBQUssQ0FBQzt3QkFDNUQsQ0FBQzt3QkFDRCxPQUFPLElBQUksQ0FBQztvQkFDZCxDQUFDLENBQUM7b0JBRUYsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN6QyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBRS9DLGlDQUFpQztvQkFDakMsZUFBZTtvQkFDZiw2SkFBNko7b0JBQzdKLEtBQUs7b0JBRUwseUVBQXlFO29CQUN6RSxNQUFNLFFBQVEsR0FDWixRQUFRLEtBQUssV0FBVzt3QkFDeEIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO3dCQUN0QyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7d0JBQ3RDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDO3dCQUN0QyxlQUFlLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUV6QyxNQUFNLFNBQVMsR0FDYixRQUFRLEtBQUssV0FBVzt3QkFDeEIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO3dCQUN0QyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7d0JBQ3RDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDO3dCQUN0QyxlQUFlLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUV6QyxJQUFJLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQzt3QkFDMUIsZUFBZTt3QkFDZixpSUFBaUk7d0JBQ2pJLEtBQUs7d0JBQ0wsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztvQkFFRCxnRUFBZ0U7b0JBQ2hFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQzt3QkFDNUMsZUFBZTt3QkFDZiw4SEFBOEg7d0JBQzlILEtBQUs7d0JBQ0wsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxXQUFXLENBQUMsUUFBZ0IsRUFBRSxXQUFtQjtRQUN2RCw0REFBNEQ7UUFDNUQscUVBQXFFO1FBRXJFLHNEQUFzRDtRQUN0RCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkUsTUFBTSxVQUFVLEdBQUcsR0FBRyxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7WUFFN0MsSUFBSSxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQy9CLG1HQUFtRztnQkFDbkcsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELHlEQUF5RDtRQUN6RCxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN6RSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekUsTUFBTSxVQUFVLEdBQUcsR0FBRyxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7WUFFN0MsSUFBSSxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzVCLG1HQUFtRztnQkFDbkcsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELGtFQUFrRTtRQUNsRSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sVUFBVSxHQUFHLEdBQUcsUUFBUSxLQUFLLENBQUM7WUFFcEMsSUFBSSxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQy9CLG1HQUFtRztnQkFDbkcsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekUsTUFBTSxVQUFVLEdBQUcsR0FBRyxRQUFRLEtBQUssQ0FBQztZQUVwQyxJQUFJLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDNUIsbUdBQW1HO2dCQUNuRyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sMEJBQTBCLENBQUMsSUFBbUIsRUFBRSxJQUFZO1FBQ2xFLElBQUksQ0FBQztZQUNILG1FQUFtRTtZQUNuRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksT0FBTyxHQUFRLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBRXRDLGtDQUFrQztZQUNsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUM3QixJQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUM5RCxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdEQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZix3RUFBd0U7WUFDeEUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFdBQW1CO1FBQzlDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxDQUFDO1FBRS9GLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFNUIseURBQXlEO1FBQ3pELEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDL0IsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxZQUFZO0lBRVosK0VBQStFO0lBRS9FLHVCQUF1QjtJQUN2QixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdkMsK0NBQStDO1lBQy9DLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLGlFQUFpRTtRQUNqRSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFFRCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUIsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLFlBQVksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxhQUFhO1FBQ3pCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QixJQUFJLENBQUM7WUFDSCw4Q0FBOEM7WUFDOUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsQ0FBQztZQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixFQUFFO1lBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlELEVBQUU7WUFDRixNQUFNLG1CQUFtQixHQUFHO2dCQUMxQixHQUFHLENBQUMsTUFBTSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7Z0JBQzdCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7YUFDdkQsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDO1lBRWhELDBEQUEwRDtZQUMxRCxNQUFNLEtBQUssR0FBMkIsRUFBRSxDQUFDO1lBQ3pDLEtBQUssTUFBTSxRQUFRLElBQUksbUJBQW1CLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7Z0JBQ2xELElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztvQkFDNUYsd0NBQXdDO29CQUN4QyxJQUFJLENBQUM7d0JBQ0gsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQ25FLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDO29CQUN4QyxDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2Ysb0dBQW9HO3dCQUNwRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtvQkFDL0UsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sMkJBQTJCO29CQUMzQixLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDakQsQ0FBQztZQUNILENBQUM7WUFDRCxFQUFFO1lBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUVqRixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEMsMkZBQTJGO1lBQzNGLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNqRSxNQUFNLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1lBQ3pDLEVBQUU7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLHlCQUF5QjtZQUN6QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDO1lBQzVDLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDeEUsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzdELENBQUM7WUFDRCxFQUFFO1lBQ0YsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNqQixZQUFZLEVBQUUsWUFBWTtnQkFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxNQUFNO2FBQ08sQ0FBQztZQUN4QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUM1QixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3JCLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsZ0JBQWdCO3dCQUN6QixRQUFRLEVBQUUsVUFBVTtxQkFDckI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFDSCxFQUFFO1lBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQ3hGLEVBQUU7WUFDRixNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDL0QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULDZGQUE2RjtnQkFDN0YsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQStCLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2xILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNqRSxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQWlDLEVBQUUsQ0FBQyxDQUFDO1lBQzFGLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1QixFQUFFO1lBQ0YsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRXJCLHVDQUF1QztZQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBRTdCLHNGQUFzRjtZQUN0RixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLDBGQUEwRjtnQkFDMUYsTUFBTSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLENBQUM7WUFFRCxrRkFBa0Y7WUFDbEYsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxlQUFlO2dCQUNmLDBHQUEwRztnQkFDMUcsS0FBSztnQkFDTCxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNyQyxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixvREFBb0Q7UUFDdEQsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFM0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTVDLHlDQUF5QztRQUN6QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzNDLHNFQUFzRTtZQUN0RSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQywwQkFBMEI7UUFDakYsQ0FBQzthQUFNLENBQUM7WUFDTiwyRUFBMkU7UUFDN0UsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxVQUFlO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxDQUFDLDJCQUEyQjtRQUMxQyxDQUFDO1FBRUQsa0RBQWtEO1FBQ2xELE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCw2REFBNkQ7SUFFckQscUJBQXFCLENBQUMsT0FBMkIsRUFBRSxJQUFvQjtRQUM3RSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxLQUFLLEdBQUcsNkJBQTZCLENBQUM7WUFDNUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RGLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDOztZQUFNLE9BQU8sS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxHQUFRLEVBQUUsYUFBcUIsRUFBRTtRQUMzRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUMzQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFFOUQsK0RBQStEO1lBQy9ELEVBQUU7WUFDRixvR0FBb0c7WUFDcEcsbUdBQW1HO1lBQ25HLHFGQUFxRjtZQUNyRixFQUFFO1lBQ0YsbUdBQW1HO1lBQ25HLGtHQUFrRztZQUNsRyxnREFBZ0Q7WUFDaEQsRUFBRTtZQUNGLGlHQUFpRztZQUNqRyw0RkFBNEY7WUFDNUYsMEVBQTBFO1lBQzFFLEVBQUU7WUFDRiw0RkFBNEY7WUFDNUYsMkRBQTJEO1lBQzNELElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlGLDZEQUE2RDtnQkFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtvQkFDM0MsT0FBTyxHQUFHLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDakQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlFLGdEQUFnRDtnQkFDaEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbkYsQ0FBQztpQkFBTSxJQUNMLE9BQU8sS0FBSyxLQUFLLFFBQVE7Z0JBQ3pCLEtBQUssS0FBSyxJQUFJO2dCQUNkLENBQUMsS0FBSyxDQUFDLFdBQVcsS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUN0RCxDQUFDO2dCQUNELG9DQUFvQztnQkFDcEMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN2RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sK0JBQStCO2dCQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO29CQUMzQyxPQUFPLEdBQUcsQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNqRCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsMkJBQTJCO1FBQy9CLDZDQUE2QztRQUM3QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsb0dBQW9HO1FBRXBHLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFO1lBQzNGLG9CQUFvQjtZQUNwQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekQsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3pCLHdGQUF3RjtnQkFDeEYsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUMxRCxDQUFDO1lBRUQsb0NBQW9DO1lBQ3BDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxhQUFhLENBQUM7WUFFbkQsNERBQTREO1lBQzVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRWpELElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsZUFBZTtnQkFDZiwyR0FBMkc7Z0JBQzNHLEtBQUs7Z0JBQ0wsZ0NBQWdDO2dCQUNoQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDaEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGVBQWU7Z0JBQ2YsOEhBQThIO2dCQUM5SCxLQUFLO2dCQUNMLG9DQUFvQztnQkFDcEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2pFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILHNDQUFzQztRQUN0QyxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbEQsa0VBQWtFO1FBQ2xFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssS0FBSyxDQUFDLENBQUM7UUFFL0UseURBQXlEO1FBQ3pELElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM5QixNQUFNLGNBQWMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO29CQUM1QyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDdEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxjQUFjLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN0RSxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFFOUQsZUFBZTtRQUNmLHlJQUF5STtRQUN6SSxLQUFLO1FBQ0wsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFFRCxLQUFLLENBQUMseUJBQXlCO1FBQzdCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFRLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBMEI7UUFDekQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDMUMsT0FBTyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZix3REFBd0Q7WUFDeEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixPQUFPO1lBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDL0IsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDNUIsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1NBQy9CLENBQUM7SUFDSixDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUU7Z0JBQ3JCLDBCQUEwQjtnQkFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNyRyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDckQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsR0FBRyxFQUFFLENBQUMsSUFBWSxFQUFFLEtBQVUsRUFBRSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUNELElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BDLENBQUM7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFO2dCQUNaLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QyxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhO1FBQ25CLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQyxJQUFhLEVBQUUsRUFBRTtnQkFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUMvQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDWCwrQ0FBK0M7b0JBQy9DLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7d0JBQ2hDLE9BQU8sSUFBSSxDQUFDO29CQUNkLENBQUM7b0JBQ0QsdUJBQXVCO29CQUN2QixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNaLE9BQU8sS0FBSyxDQUFDO29CQUNmLENBQUM7b0JBQ0QsNERBQTREO29CQUM1RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDbEQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDbkMsQ0FBQztvQkFDRCwwREFBMEQ7eUJBQ3JELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNqQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNqQyxDQUFDO29CQUNELGNBQWM7eUJBQ1QsQ0FBQzt3QkFDSixPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO29CQUN6QixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUM7U0FDekQsQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE9BQU87WUFDTCxJQUFJLEVBQUUsQ0FBQyxJQUFZLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELFFBQVEsRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDWixNQUFNLE9BQU8sR0FBSSxJQUFJLENBQUMsUUFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDN0MsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELElBQUksRUFBRSxDQUFDLEVBQVUsRUFBRSxFQUFFO2dCQUNuQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLEtBQUssR0FBaUM7WUFDMUMsR0FBRyxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ25CLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFDRCxTQUFTLEVBQUUsQ0FBQyxJQUFZLEVBQUUsT0FBNEIsRUFBRSxFQUFFO2dCQUN4RCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdELENBQUM7WUFDRCxVQUFVLEVBQUUsQ0FBQyxJQUFZLEVBQStCLEVBQUU7Z0JBQ3hELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsQ0FBQztTQUNGLENBQUM7UUFFRiw0Q0FBNEM7UUFDNUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRTtnQkFDOUIsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNyQixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDO1NBQ2pFLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWM7UUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLGlEQUFpRDtRQUNqRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxDQUFDO1FBRS9GLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE9BQU87UUFDVCxDQUFDO1FBRUQsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO3dCQUM1RCxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsTUFBYyxFQUFFLEVBQUU7NEJBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0NBQ3pDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQzs0QkFDcEMsQ0FBQzt3QkFDSCxDQUFDLENBQUM7d0JBQ0YsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNsRixPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3RELENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixvREFBb0Q7WUFDdEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxrQkFBMEI7UUFDdEQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDMUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWxGLG1DQUFtQztZQUNuQyxJQUFJLE1BQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLGdFQUFnRTtZQUNoRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxrQkFBMEI7UUFDckQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsbUZBQW1GO1FBQ3JGLENBQUM7SUFDSCxDQUFDOzhHQXo1QlUsMEJBQTBCO2tHQUExQiwwQkFBMEIsNm9CQVAxQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxjQUFjO2FBQ3hCO1NBQ0Y7OzJGQUdVLDBCQUEwQjtrQkFWdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCO3FCQUNGO29CQUNELFVBQVUsRUFBRSxLQUFLO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVHJhbnNsYXRlT3B0aW9ucywgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlLCBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2VydmljZSwgQVhQTWV0YURhdGEgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEluamVjdG9yLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgaXNFbXB0eSwgaXNFcXVhbCwgaXNTdHJpbmcsIG1lcmdlLCBzZXQsIHN1bSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlckNvbnRleHRTdG9yZSB9IGZyb20gJy4vY29udGV4dC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUEJhc2VXaWRnZXRDb21wb25lbnQsIEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQsIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0UGxhY2Vob2xkZXJDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldC1wbGFjZWhvbGRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtcmVnaXN0ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0U3RhdHVzIH0gZnJvbSAnLi93aWRnZXQtc3RhdHVzLnR5cGVzJztcbmltcG9ydCB7XG4gIEFYUFdpZGdldENvbmZpZyxcbiAgQVhQV2lkZ2V0Tm9kZSxcbiAgQVhQV2lkZ2V0Tm9kZVRva2VuLFxuICBBWFBXaWRnZXRSZW5kZXJNb2RlLFxuICBBWFBfV0lER0VUX1RPS0VOLFxufSBmcm9tICcuL3dpZGdldC50eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEFYUFdpZGdldFJlbmRlcmVyRGlyZWN0aXZlT3B0aW9ucyA9IEFYUE1ldGFEYXRhO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXhwLXdpZGdldC1yZW5kZXJlcl0nLFxuICBleHBvcnRBczogJ3dpZGdldFJlbmRlcmVyJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhVbnN1YnNjcmliZXIsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIEFYUFdpZGdldFJlbmRlcmVyRGlyZWN0aXZlIHtcbiAgcGFyZW50Tm9kZSA9IGlucHV0PEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQgfCBudWxsPigpO1xuXG4gIGluZGV4ID0gaW5wdXQ8bnVtYmVyIHwgbnVsbD4oKTtcblxuICBtb2RlID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0UmVuZGVyTW9kZT4oKTtcbiAgbm9kZSA9IGlucHV0LnJlcXVpcmVkPEFYUFdpZGdldE5vZGU+KCk7XG5cbiAgcHJpdmF0ZSBfb3B0aW9ucyA9IHNpZ25hbDxBWFBXaWRnZXRSZW5kZXJlckRpcmVjdGl2ZU9wdGlvbnM+KHt9KTtcbiAgcHVibGljIG9wdGlvbnMgPSB0aGlzLl9vcHRpb25zLmFzUmVhZG9ubHkoKTtcblxuICBwdWJsaWMgb25PcHRpb25zQ2hhbmdlZCA9IG91dHB1dDx7IHNlbmRlcjogQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmU7IHdpZGdldDogQVhQQmFzZVdpZGdldENvbXBvbmVudCB9PigpO1xuICBwdWJsaWMgb25WYWx1ZUNoYW5nZWQgPSBvdXRwdXQ8eyBzZW5kZXI6IEFYUFdpZGdldFJlbmRlcmVyRGlyZWN0aXZlOyB3aWRnZXQ6IEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0+KCk7XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBtZXJnZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gc2lnbmFsPGFueT4oe30pO1xuXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcm90ZWN0ZWQgYnVpbGRlclNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgY29udGV4dFNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlckNvbnRleHRTdG9yZSk7XG4gIHByb3RlY3RlZCB3aWRnZXRSZWdpc3RlcnkgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlciA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHdpZGdldFNlcnZpY2UgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGV4cHJlc3Npb25FdmFsdWF0b3IgPSBpbmplY3QoQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNlcnZpY2UpO1xuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIC8vVE9ETyBjaGVjayBpZiBpbnN0YW5jZSBjYW5ub3QgYmUgcHVibGljIGNoYW5nZSBpdDpcbiAgcHVibGljIGluc3RhbmNlITogQVhQVmFsdWVXaWRnZXRDb21wb25lbnQ7XG4gIHByaXZhdGUgZXhwcmVzc2lvbkV2YWx1YXRvcnM6IE1hcDxzdHJpbmcsICgpID0+IFByb21pc2U8YW55Pj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcbiAgcHJpdmF0ZSByZW5kZXJUaW1lb3V0SWQ6IGFueSA9IG51bGw7XG4gIHByaXZhdGUgaGFzSW5pdGlhbFJlbmRlciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgb25Db250ZXh0Q2hhbmdlZCA9IG5ldyBTdWJqZWN0PHsgcGF0aDogc3RyaW5nIH0+KCk7XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQZXJmb3JtYW5jZSBPcHRpbWl6YXRpb24gUHJvcGVydGllcyAgIC0tLS1cblxuICBwcml2YXRlIGNvbnRleHRVcGRhdGVRdWV1ZSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBwcml2YXRlIGNvbnRleHRVcGRhdGVUaW1lb3V0OiBhbnkgPSBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IENPTlRFWFRfVVBEQVRFX0RFQk9VTkNFX01TID0gNDsgLy8gfjI1MGZwcyBmb3IgbGFyZ2UgZm9ybXNcblxuICAvLyBSZW1vdmVkIHZpc2liaWxpdHkgZGV0ZWN0aW9uIC0gbm90IG5lZWRlZCBmb3IgY3VycmVudCBpbXBsZW1lbnRhdGlvblxuXG4gIC8vIEV4cHJlc3Npb24gcmVzdWx0IGNhY2hpbmdcbiAgcHJpdmF0ZSBleHByZXNzaW9uQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgeyB2YWx1ZTogYW55OyB0aW1lc3RhbXA6IG51bWJlciB9PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IEVYUFJFU1NJT05fQ0FDSEVfVFRMID0gNTAwOyAvLyBDYWNoZSBmb3IgNTAwbXMgKGluY3JlYXNlZCBmb3IgYmV0dGVyIGhpdCByYXRlKVxuXG4gIC8vIE9wdGlvbnMgY2hhbmdlIHRyYWNraW5nXG4gIHByaXZhdGUgbGFzdEFwcGxpZWRPcHRpb25zOiBhbnkgPSBudWxsO1xuXG4gIC8vIEV4cHJlc3Npb24gcmVzdWx0IHRyYWNraW5nXG4gIHByaXZhdGUgbGFzdEV4cHJlc3Npb25SZXN1bHRzID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcblxuICAvLyBCdWZmZXIgZm9yIGNvbnRleHQgY2hhbmdlcyB0aGF0IGhhcHBlbiBiZWZvcmUgaW5pdGlhbCByZW5kZXIgY29tcGxldGVzXG4gIHByaXZhdGUgcHJlUmVuZGVyQ29udGV4dFF1ZXVlID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNoYW5nZUV2ZW50KCk7XG5cbiAgICAgIC8vIERvbid0IHRyaWdnZXIgcmUtcmVuZGVyIGR1cmluZyBpbml0aWFsIHNldHVwXG4gICAgICBpZiAoIXRoaXMuaGFzSW5pdGlhbFJlbmRlcikge1xuICAgICAgICBpZiAoY2hhbmdlZC5wYXRoKSB7XG4gICAgICAgICAgdGhpcy5wcmVSZW5kZXJDb250ZXh0UXVldWUuYWRkKGNoYW5nZWQucGF0aCk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYPCfk50gWyR7dGhpcy5ub2RlKCkudHlwZX1dIEJ1ZmZlcmVkIHByZS1yZW5kZXIgY29udGV4dCBjaGFuZ2U6ICR7Y2hhbmdlZC5wYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gQ1JJVElDQUwgUEVSRk9STUFOQ0UgRklYOiBPbmx5IHJlc3BvbmQgdG8gcmVsZXZhbnQgY29udGV4dCBjaGFuZ2VzXG4gICAgICBpZiAoY2hhbmdlZC5wYXRoICYmIHRoaXMuaXNSZWxldmFudENvbnRleHRDaGFuZ2UoY2hhbmdlZC5wYXRoKSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhg8J+OryBbJHt0aGlzLm5vZGUoKS50eXBlfV0gQ29udGV4dCBjaGFuZ2UgZGV0ZWN0ZWQ6ICR7Y2hhbmdlZC5wYXRofWApO1xuICAgICAgICB0aGlzLnF1ZXVlQ29udGV4dFVwZGF0ZShjaGFuZ2VkLnBhdGgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5vblJlZnJlc2gucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzQmF0Y2hlZFVwZGF0ZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXhwcmVzc2lvbiBDYWNoaW5nIE1ldGhvZHMgICAtLS0tXG5cbiAgcHJpdmF0ZSBnZXRDYWNoZWRFeHByZXNzaW9uUmVzdWx0KGV4cHJlc3Npb25LZXk6IHN0cmluZyk6IGFueSB8IG51bGwge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuZXhwcmVzc2lvbkNhY2hlLmdldChleHByZXNzaW9uS2V5KTtcbiAgICBpZiAoY2FjaGVkICYmIHBlcmZvcm1hbmNlLm5vdygpIC0gY2FjaGVkLnRpbWVzdGFtcCA8IHRoaXMuRVhQUkVTU0lPTl9DQUNIRV9UVEwpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5K+IFske3RoaXMubm9kZSgpLnR5cGV9XSBVc2luZyBjYWNoZWQgZXhwcmVzc2lvbiByZXN1bHQgZm9yICcke2V4cHJlc3Npb25LZXl9J2ApO1xuICAgICAgcmV0dXJuIGNhY2hlZC52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIHNldENhY2hlZEV4cHJlc3Npb25SZXN1bHQoZXhwcmVzc2lvbktleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5leHByZXNzaW9uQ2FjaGUuc2V0KGV4cHJlc3Npb25LZXksIHtcbiAgICAgIHZhbHVlLFxuICAgICAgdGltZXN0YW1wOiBwZXJmb3JtYW5jZS5ub3coKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJFeHByZXNzaW9uQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5leHByZXNzaW9uQ2FjaGUuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNQYXRoQWZmZWN0aW5nRXhwcmVzc2lvbnMoY2hhbmdlZFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIGNvbnNvbGUubG9nKFxuICAgIC8vICAgYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIENoZWNraW5nIGlmIHBhdGggJyR7Y2hhbmdlZFBhdGh9JyBhZmZlY3RzIGV4cHJlc3Npb25zLiBFeHByZXNzaW9uIGNvdW50OiAke3RoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuc2l6ZX1gLFxuICAgIC8vICk7XG5cbiAgICAvLyBJZiB3aWRnZXQgaGFzIG5vIGV4cHJlc3Npb25zLCBubyBuZWVkIHRvIGNsZWFyIGNhY2hlXG4gICAgaWYgKHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuc2l6ZSA9PT0gMCkge1xuICAgICAgLy8gY29uc29sZS5sb2coYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFBhdGggJyR7Y2hhbmdlZFBhdGh9JyAtIG5vIGV4cHJlc3Npb25zLCBrZWVwaW5nIGNhY2hlYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVXNlIHRoZSBzYW1lIGxvZ2ljIGFzIGhhc0V4cHJlc3Npb25EZXBlbmRlbmN5IHRvIGNoZWNrIGZvciBhY3R1YWwgZGVwZW5kZW5jaWVzXG4gICAgaWYgKHRoaXMuaGFzRXhwcmVzc2lvbkRlcGVuZGVuY3koY2hhbmdlZFBhdGgpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUGF0aCAnJHtjaGFuZ2VkUGF0aH0nIGFmZmVjdHMgZXhwcmVzc2lvbnMgLSBjbGVhcmluZyBjYWNoZWApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5sb2coYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFBhdGggJyR7Y2hhbmdlZFBhdGh9JyBkb2VzIG5vdCBhZmZlY3QgZXhwcmVzc2lvbnMgLSBrZWVwaW5nIGNhY2hlYCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb250ZXh0IEJhdGNoaW5nIE1ldGhvZHMgICAtLS0tXG5cbiAgcHJpdmF0ZSBxdWV1ZUNvbnRleHRVcGRhdGUocGF0aDogc3RyaW5nKSB7XG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5SEIFske3RoaXMubm9kZSgpLnR5cGV9XSBRdWV1ZWluZyBjb250ZXh0IHVwZGF0ZSBmb3IgcGF0aDogJHtwYXRofWApO1xuICAgICAgdGhpcy5jb250ZXh0VXBkYXRlUXVldWUuYWRkKHBhdGgpO1xuXG4gICAgICAvLyBDbGVhciBleGlzdGluZyB0aW1lb3V0XG4gICAgICBpZiAodGhpcy5jb250ZXh0VXBkYXRlVGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jb250ZXh0VXBkYXRlVGltZW91dCk7XG4gICAgICB9XG5cbiAgICAgIC8vIERlYm91bmNlIHVwZGF0ZXNcbiAgICAgIHRoaXMuY29udGV4dFVwZGF0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYOKaoSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUHJvY2Vzc2luZyBiYXRjaGVkIHVwZGF0ZXMgZm9yICR7dGhpcy5jb250ZXh0VXBkYXRlUXVldWUuc2l6ZX0gcGF0aHNgKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzQmF0Y2hlZFVwZGF0ZXMoKTtcbiAgICAgIH0sIHRoaXMuQ09OVEVYVF9VUERBVEVfREVCT1VOQ0VfTVMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc0JhdGNoZWRVcGRhdGVzKCkge1xuICAgIGlmICh0aGlzLmNvbnRleHRVcGRhdGVRdWV1ZS5zaXplID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCBwYXRocyA9IEFycmF5LmZyb20odGhpcy5jb250ZXh0VXBkYXRlUXVldWUpO1xuICAgIHRoaXMuY29udGV4dFVwZGF0ZVF1ZXVlLmNsZWFyKCk7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhg8J+TiiBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUHJvY2Vzc2luZyAke3BhdGhzLmxlbmd0aH0gcGF0aHM6YCwgcGF0aHMpO1xuXG4gICAgLy8gQ2xlYXIgZXhwcmVzc2lvbiBjYWNoZSBvbmx5IGlmIGNoYW5nZWQgcGF0aHMgYWZmZWN0IHRoaXMgd2lkZ2V0J3MgZXhwcmVzc2lvbnNcbiAgICBjb25zdCBzaG91bGRDbGVhckNhY2hlID0gcGF0aHMuc29tZSgocGF0aCkgPT4gdGhpcy5pc1BhdGhBZmZlY3RpbmdFeHByZXNzaW9ucyhwYXRoKSk7XG4gICAgaWYgKHNob3VsZENsZWFyQ2FjaGUpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5eR77iPIFske3RoaXMubm9kZSgpLnR5cGV9XSBDbGVhcmluZyBleHByZXNzaW9uIGNhY2hlIGR1ZSB0byBleHByZXNzaW9uLWFmZmVjdGluZyBwYXRoIGNoYW5nZWApO1xuICAgICAgdGhpcy5jbGVhckV4cHJlc3Npb25DYWNoZSgpO1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3MgdXBkYXRlcyBpbiBiYXRjaGVzXG4gICAgY29uc3Qgb3B0aW9uc1N0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IGhhc09wdGlvbnNVcGRhdGUgPSBhd2FpdCB0aGlzLnVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpO1xuICAgIGNvbnN0IG9wdGlvbnNUaW1lID0gcGVyZm9ybWFuY2Uubm93KCkgLSBvcHRpb25zU3RhcnRUaW1lO1xuXG4gICAgaWYgKHR5cGVvZiBoYXNPcHRpb25zVXBkYXRlID09PSAnbnVtYmVyJyAmJiBoYXNPcHRpb25zVXBkYXRlID4gMCkge1xuICAgICAgLy8gY29uc29sZS5sb2coYPCflKcgWyR7dGhpcy5ub2RlKCkudHlwZX1dIE9wdGlvbnMgdXBkYXRlZCAoJHtvcHRpb25zVGltZS50b0ZpeGVkKDIpfW1zKWApO1xuICAgICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3JtdWxhcyBmb3IgYW55IG9mIHRoZSBjaGFuZ2VkIHBhdGhzXG4gICAgY29uc3QgZm9ybXVsYVN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IGZvcm11bGFOZWVkc1VwZGF0ZSA9IHBhdGhzLnNvbWUoKHBhdGgpID0+IHRoaXMuY2hlY2tGb3JtdWxhRm9yVXBkYXRlKHRoaXMubm9kZSgpLmZvcm11bGEsIHBhdGgpKTtcblxuICAgIGlmIChmb3JtdWxhTmVlZHNVcGRhdGUpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGDwn6euIFske3RoaXMubm9kZSgpLnR5cGV9XSBGb3JtdWxhIG5lZWRzIHVwZGF0ZWApO1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCk7XG4gICAgfVxuICAgIGNvbnN0IGZvcm11bGFUaW1lID0gcGVyZm9ybWFuY2Uubm93KCkgLSBmb3JtdWxhU3RhcnRUaW1lO1xuXG4gICAgLy8gRW1pdCBjb250ZXh0IGNoYW5nZXNcbiAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICB0aGlzLm9uQ29udGV4dENoYW5nZWQubmV4dCh7IHBhdGggfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b3RhbFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAvLyAgIGDinIUgWyR7dGhpcy5ub2RlKCkudHlwZX1dIEJhdGNoIHByb2Nlc3NpbmcgY29tcGxldGVkIGluICR7dG90YWxUaW1lLnRvRml4ZWQoMil9bXMgKG9wdGlvbnM6ICR7b3B0aW9uc1RpbWUudG9GaXhlZCgyKX1tcywgZm9ybXVsYTogJHtmb3JtdWxhVGltZS50b0ZpeGVkKDIpfW1zKWAsXG4gICAgLy8gKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29udGV4dCBSZWxldmFuY2UgRmlsdGVyaW5nICAgLS0tLVxuXG4gIHByaXZhdGUgaXNSZWxldmFudENvbnRleHRDaGFuZ2UoY2hhbmdlZFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGUoKTtcblxuICAgIC8vIDEuIERpcmVjdCBwYXRoIG1hdGNoIC0gd2lkZ2V0J3Mgb3duIGZpZWxkXG4gICAgaWYgKG5vZGUucGF0aCA9PT0gY2hhbmdlZFBhdGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIDIuIFBhcmVudCBwYXRoIG1hdGNoIC0gd2lkZ2V0IGlzIGluc2lkZSB0aGUgY2hhbmdlZCBjb250YWluZXJcbiAgICBpZiAobm9kZS5wYXRoICYmIGNoYW5nZWRQYXRoLnN0YXJ0c1dpdGgobm9kZS5wYXRoICsgJy4nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gMy4gQ2hpbGQgcGF0aCBtYXRjaCAtIGNoYW5nZWQgZmllbGQgaXMgaW5zaWRlIHRoaXMgd2lkZ2V0J3MgY29udGFpbmVyXG4gICAgaWYgKG5vZGUucGF0aCAmJiBub2RlLnBhdGguc3RhcnRzV2l0aChjaGFuZ2VkUGF0aCArICcuJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIDQuIEV4cHJlc3Npb24gZGVwZW5kZW5jeSBjaGVjayAtIGlmIHdpZGdldCBoYXMgZXhwcmVzc2lvbnMgdGhhdCBkZXBlbmQgb24gdGhpcyBwYXRoXG4gICAgaWYgKHRoaXMuaGFzRXhwcmVzc2lvbkRlcGVuZGVuY3koY2hhbmdlZFBhdGgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyA1LiBGb3JtdWxhIGRlcGVuZGVuY3kgY2hlY2sgLSBpZiB3aWRnZXQncyBmb3JtdWxhIGRlcGVuZHMgb24gdGhpcyBwYXRoXG4gICAgaWYgKG5vZGUuZm9ybXVsYSAmJiB0aGlzLmNoZWNrRm9ybXVsYUZvclVwZGF0ZShub2RlLmZvcm11bGEsIGNoYW5nZWRQYXRoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gNi4gVHJpZ2dlciBkZXBlbmRlbmN5IGNoZWNrIC0gaWYgd2lkZ2V0IGhhcyB0cmlnZ2VycyB0aGF0IGRlcGVuZCBvbiB0aGlzIHBhdGhcbiAgICBpZiAodGhpcy5oYXNUcmlnZ2VyRGVwZW5kZW5jeShjaGFuZ2VkUGF0aCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzRXhwcmVzc2lvbkRlcGVuZGVuY3koY2hhbmdlZFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIGFueSBjYWNoZWQgZXhwcmVzc2lvbnMgZGVwZW5kIG9uIHRoZSBjaGFuZ2VkIHBhdGhcbiAgICBmb3IgKGNvbnN0IFtwYXRoLCBldmFsdWF0b3JdIG9mIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBleHByZXNzaW9uIHBhdGggaXRzZWxmIGNvbnRhaW5zIHRoZSBjaGFuZ2VkIHBhdGhcbiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKGNoYW5nZWRQYXRoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gUGFyc2UgdGhlIGFjdHVhbCBleHByZXNzaW9uIGNvbnRlbnQgdG8gY2hlY2sgZm9yIGNvbnRleHQuZXZhbCgpIGNhbGxzXG4gICAgICAvLyBXZSBuZWVkIHRvIGdldCB0aGUgb3JpZ2luYWwgZXhwcmVzc2lvbiBzdHJpbmcgdG8gYW5hbHl6ZSBpdFxuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuICAgICAgY29uc3QgZXhwcmVzc2lvblZhbHVlID0gdGhpcy5nZXRFeHByZXNzaW9uVmFsdWVGcm9tTm9kZShub2RlLCBwYXRoKTtcblxuICAgICAgaWYgKGV4cHJlc3Npb25WYWx1ZSAmJiB0eXBlb2YgZXhwcmVzc2lvblZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBMb29rIGZvciBjb250ZXh0LmV2YWwoKSBjYWxscyB0aGF0IHJlZmVyZW5jZSB0aGUgY2hhbmdlZCBwYXRoXG4gICAgICAgIGNvbnN0IGNvbnRleHRFdmFsUmVnZXggPSAvY29udGV4dFxcLmV2YWxcXChbJ1wiXShbXidcXFwiXSspWydcIl1cXCkvZztcbiAgICAgICAgbGV0IG1hdGNoO1xuICAgICAgICB3aGlsZSAoKG1hdGNoID0gY29udGV4dEV2YWxSZWdleC5leGVjKGV4cHJlc3Npb25WYWx1ZSkpICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgZXZhbFBhdGggPSBtYXRjaFsxXTtcblxuICAgICAgICAgIC8vIE5vcm1hbGl6ZSBJZC1zdWZmaXhlZCBzZWdtZW50cyB0byBkb3QtaWQgZm9ybSAoZS5nLiwgJ3R5cGVJZCcgLT4gJ3R5cGUuaWQnLCAncGFydHkudHlwZUlkJyAtPiAncGFydHkudHlwZS5pZCcpXG4gICAgICAgICAgY29uc3Qgbm9ybWFsaXplUGF0aCA9IChwOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgICAgICAgaWYgKCFwKSByZXR1cm4gcDtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gcC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbGFzdCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgaWYgKGxhc3QgJiYgbGFzdC5lbmRzV2l0aCgnSWQnKSkge1xuICAgICAgICAgICAgICBwYXJ0cy5zcGxpY2UocGFydHMubGVuZ3RoIC0gMSwgMSwgbGFzdC5zbGljZSgwLCAtMiksICdpZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oJy4nKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgaXNTZWdtZW50U3VmZml4ID0gKGE6IHN0cmluZywgYjogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICBpZiAoIWEgfHwgIWIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHBhID0gYS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgcGIgPSBiLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBpZiAocGIubGVuZ3RoID4gcGEubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBwYi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBpZiAocGFbcGEubGVuZ3RoIC0gaV0gIT09IHBiW3BiLmxlbmd0aCAtIGldKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgZXZhbE5vcm0gPSBub3JtYWxpemVQYXRoKGV2YWxQYXRoKTtcbiAgICAgICAgICBjb25zdCBjaGFuZ2VkTm9ybSA9IG5vcm1hbGl6ZVBhdGgoY2hhbmdlZFBhdGgpO1xuXG4gICAgICAgICAgLy8gRGVidWcgbG9nIGZvciBkZXBlbmRlbmN5IGNoZWNrXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgICAgLy8gICBg8J+nrSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gZGVwLWNoZWNrIGV4cHI9JyR7cGF0aH0nLCBjaGFuZ2VkPScke2NoYW5nZWRQYXRofScsIGV2YWw9JyR7ZXZhbFBhdGh9JywgZXZhbE5vcm09JyR7ZXZhbE5vcm19JywgY2hhbmdlZE5vcm09JyR7Y2hhbmdlZE5vcm19J2AsXG4gICAgICAgICAgLy8gKTtcblxuICAgICAgICAgIC8vIEdlbmVyaWMgZGlyZWN0IGFuZCBoaWVyYXJjaGljYWwgZGVwZW5kZW5jeSBjaGVja3MgKHJhdyBhbmQgbm9ybWFsaXplZClcbiAgICAgICAgICBjb25zdCByYXdNYXRjaCA9XG4gICAgICAgICAgICBldmFsUGF0aCA9PT0gY2hhbmdlZFBhdGggfHxcbiAgICAgICAgICAgIGV2YWxQYXRoLnN0YXJ0c1dpdGgoY2hhbmdlZFBhdGggKyAnLicpIHx8XG4gICAgICAgICAgICBjaGFuZ2VkUGF0aC5zdGFydHNXaXRoKGV2YWxQYXRoICsgJy4nKSB8fFxuICAgICAgICAgICAgaXNTZWdtZW50U3VmZml4KGV2YWxQYXRoLCBjaGFuZ2VkUGF0aCkgfHxcbiAgICAgICAgICAgIGlzU2VnbWVudFN1ZmZpeChjaGFuZ2VkUGF0aCwgZXZhbFBhdGgpO1xuXG4gICAgICAgICAgY29uc3Qgbm9ybU1hdGNoID1cbiAgICAgICAgICAgIGV2YWxOb3JtID09PSBjaGFuZ2VkTm9ybSB8fFxuICAgICAgICAgICAgZXZhbE5vcm0uc3RhcnRzV2l0aChjaGFuZ2VkTm9ybSArICcuJykgfHxcbiAgICAgICAgICAgIGNoYW5nZWROb3JtLnN0YXJ0c1dpdGgoZXZhbE5vcm0gKyAnLicpIHx8XG4gICAgICAgICAgICBpc1NlZ21lbnRTdWZmaXgoZXZhbE5vcm0sIGNoYW5nZWROb3JtKSB8fFxuICAgICAgICAgICAgaXNTZWdtZW50U3VmZml4KGNoYW5nZWROb3JtLCBldmFsTm9ybSk7XG5cbiAgICAgICAgICBpZiAocmF3TWF0Y2ggfHwgbm9ybU1hdGNoKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIC8vICAgYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIEV4cHJlc3Npb24gJyR7cGF0aH0nIGRlcGVuZHMgb24gJyR7Y2hhbmdlZFBhdGh9JyB2aWEgY29udGV4dC5ldmFsKCcke2V2YWxQYXRofScpIChnZW5lcmljIG1hdGNoKWAsXG4gICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2hlY2sgZm9yIHBhdGggYWxpYXNlcy9tYXBwaW5ncyAoZS5nLiwgdHlwZUlkLmlkIDwtPiB0eXBlLmlkKVxuICAgICAgICAgIGlmICh0aGlzLmlzUGF0aEFsaWFzKGV2YWxQYXRoLCBjaGFuZ2VkUGF0aCkpIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgLy8gICBg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gRXhwcmVzc2lvbiAnJHtwYXRofScgZGVwZW5kcyBvbiAnJHtjaGFuZ2VkUGF0aH0nIHZpYSBjb250ZXh0LmV2YWwoJyR7ZXZhbFBhdGh9JykgKHBhdGggYWxpYXMpYCxcbiAgICAgICAgICAgIC8vICk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1BhdGhBbGlhcyhldmFsUGF0aDogc3RyaW5nLCBjaGFuZ2VkUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gRHluYW1pYyBwYXRoIGFsaWFzIGRldGVjdGlvbiBiYXNlZCBvbiAnSWQnIHN1ZmZpeCBwYXR0ZXJuXG4gICAgLy8gRXhhbXBsZXM6IHR5cGVJZC5pZCA8LT4gdHlwZS5pZCwgY2F0ZWdvcnlJZC5uYW1lIDwtPiBjYXRlZ29yeS5uYW1lXG5cbiAgICAvLyBDaGVjayBpZiBldmFsUGF0aCBlbmRzIHdpdGggJ0lkJyBhbmQgaGFzIGEgcHJvcGVydHlcbiAgICBpZiAoZXZhbFBhdGguZW5kc1dpdGgoJ0lkJykgJiYgZXZhbFBhdGguaW5jbHVkZXMoJy4nKSkge1xuICAgICAgY29uc3QgYmFzZVBhdGggPSBldmFsUGF0aC5zdWJzdHJpbmcoMCwgZXZhbFBhdGgubGFzdEluZGV4T2YoJ0lkJykpO1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBldmFsUGF0aC5zdWJzdHJpbmcoZXZhbFBhdGgubGFzdEluZGV4T2YoJy4nKSArIDEpO1xuICAgICAgY29uc3QgbWFwcGVkUGF0aCA9IGAke2Jhc2VQYXRofS4ke3Byb3BlcnR5fWA7XG5cbiAgICAgIGlmIChjaGFuZ2VkUGF0aCA9PT0gbWFwcGVkUGF0aCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUGF0aCBhbGlhcyBkZXRlY3RlZDogJyR7ZXZhbFBhdGh9JyA8LT4gJyR7Y2hhbmdlZFBhdGh9J2ApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBjaGFuZ2VkUGF0aCBlbmRzIHdpdGggJ0lkJyBhbmQgaGFzIGEgcHJvcGVydHlcbiAgICBpZiAoY2hhbmdlZFBhdGguZW5kc1dpdGgoJ0lkJykgJiYgY2hhbmdlZFBhdGguaW5jbHVkZXMoJy4nKSkge1xuICAgICAgY29uc3QgYmFzZVBhdGggPSBjaGFuZ2VkUGF0aC5zdWJzdHJpbmcoMCwgY2hhbmdlZFBhdGgubGFzdEluZGV4T2YoJ0lkJykpO1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBjaGFuZ2VkUGF0aC5zdWJzdHJpbmcoY2hhbmdlZFBhdGgubGFzdEluZGV4T2YoJy4nKSArIDEpO1xuICAgICAgY29uc3QgbWFwcGVkUGF0aCA9IGAke2Jhc2VQYXRofS4ke3Byb3BlcnR5fWA7XG5cbiAgICAgIGlmIChldmFsUGF0aCA9PT0gbWFwcGVkUGF0aCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUGF0aCBhbGlhcyBkZXRlY3RlZDogJyR7ZXZhbFBhdGh9JyA8LT4gJyR7Y2hhbmdlZFBhdGh9J2ApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgZGlyZWN0ICdJZCcgc3VmZml4IG1hcHBpbmcgKGUuZy4sIHR5cGVJZCA8LT4gdHlwZS5pZClcbiAgICBpZiAoZXZhbFBhdGguZW5kc1dpdGgoJ0lkJykgJiYgIWV2YWxQYXRoLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgIGNvbnN0IGJhc2VQYXRoID0gZXZhbFBhdGguc3Vic3RyaW5nKDAsIGV2YWxQYXRoLmxhc3RJbmRleE9mKCdJZCcpKTtcbiAgICAgIGNvbnN0IG1hcHBlZFBhdGggPSBgJHtiYXNlUGF0aH0uaWRgO1xuXG4gICAgICBpZiAoY2hhbmdlZFBhdGggPT09IG1hcHBlZFBhdGgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFBhdGggYWxpYXMgZGV0ZWN0ZWQ6ICcke2V2YWxQYXRofScgPC0+ICcke2NoYW5nZWRQYXRofSdgKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQYXRoLmVuZHNXaXRoKCdJZCcpICYmICFjaGFuZ2VkUGF0aC5pbmNsdWRlcygnLicpKSB7XG4gICAgICBjb25zdCBiYXNlUGF0aCA9IGNoYW5nZWRQYXRoLnN1YnN0cmluZygwLCBjaGFuZ2VkUGF0aC5sYXN0SW5kZXhPZignSWQnKSk7XG4gICAgICBjb25zdCBtYXBwZWRQYXRoID0gYCR7YmFzZVBhdGh9LmlkYDtcblxuICAgICAgaWYgKGV2YWxQYXRoID09PSBtYXBwZWRQYXRoKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBQYXRoIGFsaWFzIGRldGVjdGVkOiAnJHtldmFsUGF0aH0nIDwtPiAnJHtjaGFuZ2VkUGF0aH0nYCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhwcmVzc2lvblZhbHVlRnJvbU5vZGUobm9kZTogQVhQV2lkZ2V0Tm9kZSwgcGF0aDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIE5hdmlnYXRlIHRocm91Z2ggdGhlIG5vZGUgc3RydWN0dXJlIHRvIGZpbmQgdGhlIGV4cHJlc3Npb24gdmFsdWVcbiAgICAgIGNvbnN0IHBhdGhQYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgIGxldCBjdXJyZW50OiBhbnkgPSBub2RlLm9wdGlvbnMgfHwge307XG5cbiAgICAgIC8vIE5hdmlnYXRlIHRocm91Z2ggdGhlIHBhdGggcGFydHNcbiAgICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXRoUGFydHMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQgJiYgdHlwZW9mIGN1cnJlbnQgPT09ICdvYmplY3QnICYmIHBhcnQgaW4gY3VycmVudCkge1xuICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W3BhcnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ3N0cmluZycgPyBjdXJyZW50IDogbnVsbDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgZXh0cmFjdGluZyBleHByZXNzaW9uIHZhbHVlIGZyb20gbm9kZTonLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhc1RyaWdnZXJEZXBlbmRlbmN5KGNoYW5nZWRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgY29uc3QgdHJpZ2dlcnMgPSBub2RlLnRyaWdnZXJzIHx8IG5vZGUub3B0aW9ucz8uWyd0cmlnZ2VycyddIHx8IHRoaXMubWVyZ2VkT3B0aW9ucygpPy50cmlnZ2VycztcblxuICAgIGlmICghdHJpZ2dlcnMpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGlmIGFueSB0cmlnZ2VyIGV2ZW50IGRlcGVuZHMgb24gdGhlIGNoYW5nZWQgcGF0aFxuICAgIGZvciAoY29uc3QgdHJpZ2dlciBvZiB0cmlnZ2Vycykge1xuICAgICAgaWYgKHRyaWdnZXIuZXZlbnQgJiYgdHJpZ2dlci5ldmVudC5pbmNsdWRlcyhjaGFuZ2VkUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vIFJlbW92ZWQgdmlzaWJpbGl0eSBkZXRlY3Rpb24gbWV0aG9kcyAtIG5vdCBuZWVkZWQgZm9yIGN1cnJlbnQgaW1wbGVtZW50YXRpb25cblxuICAvLyBEZXRlY3QgaW5wdXQgY2hhbmdlc1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ21vZGUnXSB8fCBjaGFuZ2VzWydub2RlJ10pIHtcbiAgICAgIC8vIENoZWNrIGlmIGVpdGhlciAnbW9kZScgb3IgJ25vZGUnIGhhcyBjaGFuZ2VkXG4gICAgICB0aGlzLnJlcmVuZGVyQ29tcG9uZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXJlbmRlckNvbXBvbmVudCgpIHtcbiAgICAvLyBDbGVhciBhbnkgcGVuZGluZyByZW5kZXIgb3BlcmF0aW9uIHRvIHByZXZlbnQgZG91YmxlIHJlbmRlcmluZ1xuICAgIGlmICh0aGlzLnJlbmRlclRpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVuZGVyVGltZW91dElkKTtcbiAgICAgIHRoaXMucmVuZGVyVGltZW91dElkID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBsb2FkaW5nIHN0YXRlIHRvIGFsbG93IHJlLXJlbmRlcmluZ1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG5cbiAgICAvLyBTY2hlZHVsZSB0aGUgY29tcG9uZW50IGxvYWRpbmdcbiAgICB0aGlzLnJlbmRlclRpbWVvdXRJZCA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkQ29tcG9uZW50KCk7XG4gICAgICB0aGlzLnJlbmRlclRpbWVvdXRJZCA9IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yZW5kZXJUaW1lb3V0SWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlbmRlclRpbWVvdXRJZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRleHRVcGRhdGVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jb250ZXh0VXBkYXRlVGltZW91dCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZENvbXBvbmVudCgpIHtcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gRGVzdHJveSB0aGUgZXhpc3RpbmcgY29tcG9uZW50IGlmIGl0IGV4aXN0c1xuICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgLy9cbiAgICAgIGNvbnN0IHdpZGdldCA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5LnJlc29sdmUodGhpcy5ub2RlKCkudHlwZSk7XG4gICAgICAvL1xuICAgICAgY29uc3QgcHJvcGVydGllc1RvUHJvY2VzcyA9IFtcbiAgICAgICAgLi4uKHdpZGdldD8ucHJvcGVydGllcyA/PyBbXSksXG4gICAgICAgIC4uLih3aWRnZXQ/LmNvbXBvbmVudHNbdGhpcy5tb2RlKCldPy5wcm9wZXJ0aWVzID8/IFtdKSxcbiAgICAgIF0/LmZpbHRlcigoYykgPT4gYy5zY2hlbWEuZGVmYXVsdFZhbHVlICE9IG51bGwpO1xuXG4gICAgICAvLyBQcm9jZXNzIGRlZmF1bHQgdmFsdWVzIChldmFsdWF0ZSBleHByZXNzaW9ucyBpZiBuZWVkZWQpXG4gICAgICBjb25zdCBwcm9wczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzVG9Qcm9jZXNzKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHByb3BlcnR5LnNjaGVtYS5kZWZhdWx0VmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnc3RyaW5nJyAmJiB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuaXNFeHByZXNzaW9uKGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgICAvLyBFdmFsdWF0ZSBleHByZXNzaW9uIGZvciBkZWZhdWx0IHZhbHVlXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGV2YWx1YXRlZFZhbHVlID0gYXdhaXQgdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24oZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIHByb3BzW3Byb3BlcnR5Lm5hbWVdID0gZXZhbHVhdGVkVmFsdWU7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoYEVycm9yIGV2YWx1YXRpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIGZvciBwcm9wZXJ0eSAke3Byb3BlcnR5Lm5hbWV9OmAsIGVycm9yKTtcbiAgICAgICAgICAgIHByb3BzW3Byb3BlcnR5Lm5hbWVdID0gY2xvbmVEZWVwKGRlZmF1bHRWYWx1ZSk7IC8vIEZhbGxiYWNrIHRvIG9yaWdpbmFsIHZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFVzZSBzdGF0aWMgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgIHByb3BzW3Byb3BlcnR5Lm5hbWVdID0gY2xvbmVEZWVwKGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vXG4gICAgICB0aGlzLm1lcmdlZE9wdGlvbnMuc2V0KG1lcmdlKHByb3BzLCB3aWRnZXQ/Lm9wdGlvbnMsIHRoaXMubm9kZSgpLm9wdGlvbnMpIHx8IHt9KTtcblxuICAgICAgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycy5jbGVhcigpO1xuICAgICAgLy8gUmVnaXN0ZXIgZXhwcmVzc2lvbnMgZnJvbSB3aWRnZXQgZGVmYXVsdHMgYW5kIG5vZGUgb3B0aW9ucyB0byBjb3ZlciByZWxhdGVkLWVudGl0eSBjYXNlc1xuICAgICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMoY2xvbmVEZWVwKHdpZGdldD8ub3B0aW9ucykpO1xuICAgICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMoY2xvbmVEZWVwKHRoaXMubm9kZSgpLm9wdGlvbnMpKTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCk7XG4gICAgICAvL1xuICAgICAgdGhpcy5fb3B0aW9ucy51cGRhdGUoKHZhbCkgPT4gKHsgLi4udmFsLCAuLi50aGlzLm1lcmdlZE9wdGlvbnMoKSB9KSk7XG4gICAgICAvLyBFdmFsdWF0ZSBkZWZhdWx0IHZhbHVlXG4gICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdGhpcy5ub2RlKCkuZGVmYXVsdFZhbHVlO1xuICAgICAgaWYgKGRlZmF1bHRWYWx1ZSAmJiB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuaXNFeHByZXNzaW9uKGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gYXdhaXQgdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24oZGVmYXVsdFZhbHVlKTtcbiAgICAgIH1cbiAgICAgIC8vXG4gICAgICBjb25zdCB0b2tlblZhbHVlID0ge1xuICAgICAgICBub2RlOiB0aGlzLm5vZGUoKSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMubWVyZ2VkT3B0aW9ucygpLFxuICAgICAgICBjb25maWc6IHdpZGdldCxcbiAgICAgIH0gYXMgQVhQV2lkZ2V0Tm9kZVRva2VuO1xuICAgICAgY29uc3QgdG9rZW4gPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFYUF9XSURHRVRfVE9LRU4sXG4gICAgICAgICAgICB1c2VWYWx1ZTogdG9rZW5WYWx1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgICAvL1xuICAgICAgY29uc3QgbG9hZGluZ1JlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoQVhQV2lkZ2V0UGxhY2Vob2xkZXJDb21wb25lbnQpO1xuICAgICAgLy9cbiAgICAgIGNvbnN0IGNvbSA9IGF3YWl0IHdpZGdldD8uY29tcG9uZW50c1t0aGlzLm1vZGUoKV0/LmNvbXBvbmVudCgpO1xuICAgICAgaWYgKCFjb20pIHtcbiAgICAgICAgLy8gY29uc29sZS5lcnJvcihgJHt0aGlzLm5vZGUoKS50eXBlfSB3aWRnZXQgY29tcG9uZW50IG5vdCBmb3VuZCB3aXRoIG1vZGU6ICR7dGhpcy5tb2RlKCl9YCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxBWFBWYWx1ZVdpZGdldENvbXBvbmVudDxhbnk+Pihjb20sIHsgaW5qZWN0b3I6IHRva2VuIH0pO1xuICAgICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgdGhpcy5pbnN0YW5jZS5zZXRTdGF0dXMoQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmluZyk7XG4gICAgICB0aGlzLmluc3RhbmNlLnBhcmVudCA9IHRoaXMucGFyZW50Tm9kZSgpO1xuICAgICAgdGhpcy5pbnN0YW5jZS5pbmRleCA9IHRoaXMuaW5kZXgoKTtcbiAgICAgIHRoaXMuaW5zdGFuY2UubW9kZSA9IHRoaXMubW9kZSgpO1xuICAgICAgdGhpcy5pbnN0YW5jZS5zZXRTdGF0dXMoQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmVkKTtcbiAgICAgIHRoaXMuaW5zdGFuY2U/Lm9uT3B0aW9uc0NoYW5nZWQ/LnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlZC5lbWl0KHsgc2VuZGVyOiB0aGlzLCB3aWRnZXQ6IGMuc2VuZGVyIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmluc3RhbmNlPy5vblZhbHVlQ2hhbmdlZD8ucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5lbWl0KHsgc2VuZGVyOiB0aGlzLCB3aWRnZXQ6IGMuc2VuZGVyIGFzIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0pO1xuICAgICAgfSk7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVZhbHVlQmFzZWRPbkZvcm11bGEoKTtcbiAgICAgIGF3YWl0IHRoaXMuYXNzaWduVHJpZ2dlcnMoKTtcbiAgICAgIC8vXG4gICAgICBsb2FkaW5nUmVmLmRlc3Ryb3koKTtcblxuICAgICAgLy8gTWFyayB0aGF0IGluaXRpYWwgcmVuZGVyIGlzIGNvbXBsZXRlXG4gICAgICB0aGlzLmhhc0luaXRpYWxSZW5kZXIgPSB0cnVlO1xuXG4gICAgICAvLyBSZS1ldmFsdWF0ZSBleHByZXNzaW9ucyBhZnRlciBpbml0aWFsIHJlbmRlciB0byBjYXRjaCBsYXRlLWFycml2aW5nIHJlbGF0ZWQgY29udGV4dFxuICAgICAgaWYgKHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuc2l6ZSA+IDApIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYPCflIQgWyR7dGhpcy5ub2RlKCkudHlwZX1dIFJlLWV2YWx1YXRpbmcgZXhwcmVzc2lvbnMgYWZ0ZXIgaW5pdGlhbCByZW5kZXJgKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKTtcbiAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyBhbnkgYnVmZmVyZWQgcHJlLXJlbmRlciBjb250ZXh0IGNoYW5nZXMgbm93IHRoYXQgdGhlIGNvbXBvbmVudCBpcyByZWFkeVxuICAgICAgaWYgKHRoaXMucHJlUmVuZGVyQ29udGV4dFF1ZXVlLnNpemUgPiAwKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFxuICAgICAgICAvLyAgIGDwn5qAIFske3RoaXMubm9kZSgpLnR5cGV9XSBQcm9jZXNzaW5nICR7dGhpcy5wcmVSZW5kZXJDb250ZXh0UXVldWUuc2l6ZX0gYnVmZmVyZWQgcHJlLXJlbmRlciBjaGFuZ2VzYCxcbiAgICAgICAgLy8gKTtcbiAgICAgICAgdGhpcy5wcmVSZW5kZXJDb250ZXh0UXVldWUuZm9yRWFjaCgocCkgPT4gdGhpcy5jb250ZXh0VXBkYXRlUXVldWUuYWRkKHApKTtcbiAgICAgICAgdGhpcy5wcmVSZW5kZXJDb250ZXh0UXVldWUuY2xlYXIoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzQmF0Y2hlZFVwZGF0ZXMoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBjb21wb25lbnQ6JywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlPcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLm1lcmdlZE9wdGlvbnMoKTtcblxuICAgIC8vIENoZWNrIGlmIG9wdGlvbnMgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgaWYgKHRoaXMuaGFzT3B0aW9uc0NoYW5nZWQoY3VycmVudE9wdGlvbnMpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnYXBwbHlPcHRpb25zJywgdGhpcy5ub2RlKCkucGF0aCwgJy0gb3B0aW9ucyBjaGFuZ2VkJyk7XG4gICAgICB0aGlzLl9vcHRpb25zLnVwZGF0ZSgodmFsKSA9PiAoeyAuLi52YWwsIC4uLmN1cnJlbnRPcHRpb25zIH0pKTtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0T3B0aW9ucyhjdXJyZW50T3B0aW9ucyk7XG4gICAgICB0aGlzLmxhc3RBcHBsaWVkT3B0aW9ucyA9IGNsb25lRGVlcChjdXJyZW50T3B0aW9ucyk7IC8vIERlZXAgY2xvbmUgdXNpbmcgTG9kYXNoXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdhcHBseU9wdGlvbnMnLCB0aGlzLm5vZGUoKS5wYXRoLCAnLSBubyBjaGFuZ2VzLCBza2lwcGluZycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzT3B0aW9uc0NoYW5nZWQobmV3T3B0aW9uczogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmxhc3RBcHBsaWVkT3B0aW9ucykge1xuICAgICAgcmV0dXJuIHRydWU7IC8vIEZpcnN0IHRpbWUsIGFsd2F5cyBhcHBseVxuICAgIH1cblxuICAgIC8vIERlZXAgY29tcGFyaXNvbiBvZiBvcHRpb25zIHVzaW5nIExvZGFzaCBpc0VxdWFsXG4gICAgcmV0dXJuICFpc0VxdWFsKG5ld09wdGlvbnMsIHRoaXMubGFzdEFwcGxpZWRPcHRpb25zKTtcbiAgfVxuXG4gIC8vIFJlbW92ZWQgZGVlcENsb25lVmFsdWUgbWV0aG9kIC0gbm93IHVzaW5nIExvZGFzaCBjbG9uZURlZXBcblxuICBwcml2YXRlIGNoZWNrRm9ybXVsYUZvclVwZGF0ZShmb3JtdWxhOiBzdHJpbmcgfCB1bmRlZmluZWQsIHBhdGg/OiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZvcm11bGEpIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL2NvbnRleHRcXC5ldmFsXFwoJyhbXiddKyknXFwpL2c7XG4gICAgICBjb25zdCBtYXRjaGVzID0gZm9ybXVsYS5tYXRjaChyZWdleCk7XG4gICAgICBjb25zdCBub2RlcyA9IG1hdGNoZXMgPyBtYXRjaGVzLm1hcCgobWF0Y2g6IGFueSkgPT4gbWF0Y2gubWF0Y2goLycoW14nXSspJy8pWzFdKSA6IFtdO1xuICAgICAgcmV0dXJuIG5vZGVzLmluY2x1ZGVzKHBhdGgpO1xuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMob2JqOiBhbnksIHBhdGhQcmVmaXg6IHN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgT2JqZWN0LmVudHJpZXMob2JqKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gcGF0aFByZWZpeCA/IGAke3BhdGhQcmVmaXh9LiR7a2V5fWAgOiBrZXk7XG5cbiAgICAgIC8vIENSSVRJQ0FMIEZJWDogU2tpcCB0cmlnZ2VyIGFjdGlvbnMgZHVyaW5nIG9wdGlvbnMgcHJvY2Vzc2luZ1xuICAgICAgLy9cbiAgICAgIC8vIFBST0JMRU06IFRyaWdnZXIgYWN0aW9ucyB3ZXJlIGJlaW5nIGV2YWx1YXRlZCBpbW1lZGlhdGVseSBkdXJpbmcgd2lkZ2V0IHNldHVwL29wdGlvbnMgcHJvY2Vzc2luZyxcbiAgICAgIC8vIGNhdXNpbmcgdGhlbSB0byBleGVjdXRlIGJlZm9yZSB0aGUgYWN0dWFsIHRyaWdnZXIgZXZlbnQgb2NjdXJyZWQuIFRoaXMgbWVhbnQgdHJpZ2dlcnMgd291bGQgZmlyZVxuICAgICAgLy8gZHVyaW5nIGluaXRpYWxpemF0aW9uIGluc3RlYWQgb2Ygd2hlbiB0aGUgc3BlY2lmaWVkIGNvbnRleHQgcGF0aCBhY3R1YWxseSBjaGFuZ2VkLlxuICAgICAgLy9cbiAgICAgIC8vIFJPT1QgQ0FVU0U6IFRoZSBleHByZXNzaW9uIGV2YWx1YXRvciB3YXMgcHJvY2Vzc2luZyB0cmlnZ2VyIGFjdGlvbiBleHByZXNzaW9ucyAobGlrZSBjb25zb2xlLmxvZ1xuICAgICAgLy8gb3Igd2lkZ2V0LnNldFZhbHVlIGNhbGxzKSBhcyBwYXJ0IG9mIHRoZSBub3JtYWwgb3B0aW9ucyBwcmVwcm9jZXNzaW5nLCB0cmVhdGluZyB0aGVtIGFzIGR5bmFtaWNcbiAgICAgIC8vIGV4cHJlc3Npb25zIHRoYXQgbmVlZGVkIGltbWVkaWF0ZSBldmFsdWF0aW9uLlxuICAgICAgLy9cbiAgICAgIC8vIFNPTFVUSU9OOiBEZXRlY3Qgd2hlbiB3ZSdyZSBwcm9jZXNzaW5nIHRyaWdnZXIgYWN0aW9ucyBhbmQgc3RvcmUgdGhlbSBhcyBzdGF0aWMgdmFsdWVzIHdpdGhvdXRcbiAgICAgIC8vIGV4cHJlc3Npb24gZXZhbHVhdGlvbi4gVGhpcyBlbnN1cmVzIHRyaWdnZXIgYWN0aW9ucyBhcmUgb25seSBldmFsdWF0ZWQgd2hlbiB0aGUgdHJpZ2dlcidzXG4gICAgICAvLyBzdWJzY3JpcHRpb24gY2FsbGJhY2sgYWN0dWFsbHkgZmlyZXMgKHdoZW4gdGhlIGV2ZW50IGNvbmRpdGlvbiBpcyBtZXQpLlxuICAgICAgLy9cbiAgICAgIC8vIFJFU1VMVDogVHJpZ2dlcnMgbm93IG9ubHkgZXhlY3V0ZSB3aGVuIHRoZWlyIGV2ZW50IGZpbHRlcnMgcGFzcyAoZS5nLiwgd2hlbiB0aGUgc3BlY2lmaWVkXG4gICAgICAvLyBjb250ZXh0IHBhdGggY2hhbmdlcyksIG5vdCBkdXJpbmcgd2lkZ2V0IGluaXRpYWxpemF0aW9uLlxuICAgICAgaWYgKGN1cnJlbnRQYXRoLmluY2x1ZGVzKCd0cmlnZ2VycycpICYmIChrZXkgPT09ICdhY3Rpb24nIHx8IGN1cnJlbnRQYXRoLmVuZHNXaXRoKCcuYWN0aW9uJykpKSB7XG4gICAgICAgIC8vIEFwcGx5IHN0YXRpYyB2YWx1ZXMgZGlyZWN0bHkgd2l0aG91dCBleHByZXNzaW9uIGV2YWx1YXRpb25cbiAgICAgICAgdGhpcy5tZXJnZWRPcHRpb25zLnVwZGF0ZSgoY3VycmVudE9wdGlvbnMpID0+IHtcbiAgICAgICAgICByZXR1cm4gc2V0KGN1cnJlbnRPcHRpb25zLCBjdXJyZW50UGF0aCwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xuICAgICAgICAvLyBDYWNoZSBkeW5hbWljIGV4cHJlc3Npb24gZm9yIGxhdGVyIGV2YWx1YXRpb25cbiAgICAgICAgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycy5zZXQoY3VycmVudFBhdGgsICgpID0+IHRoaXMuZXZhbHVhdGVFeHByZXNzaW9uKHZhbHVlKSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICh2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0IHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGhhbmRsZSBuZXN0ZWQgb2JqZWN0c1xuICAgICAgICB0aGlzLnByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyh2YWx1ZSwgY3VycmVudFBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXBwbHkgc3RhdGljIHZhbHVlcyBkaXJlY3RseVxuICAgICAgICB0aGlzLm1lcmdlZE9wdGlvbnMudXBkYXRlKChjdXJyZW50T3B0aW9ucykgPT4ge1xuICAgICAgICAgIHJldHVybiBzZXQoY3VycmVudE9wdGlvbnMsIGN1cnJlbnRQYXRoLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCkge1xuICAgIC8vIEVhcmx5IHJldHVybiBpZiBubyBleHByZXNzaW9ucyB0byBldmFsdWF0ZVxuICAgIGlmICh0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNpemUgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBFdmFsdWF0aW5nICR7dGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycy5zaXplfSBleHByZXNzaW9uc2ApO1xuXG4gICAgY29uc3QgdXBkYXRlUHJvbWlzZXMgPSBBcnJheS5mcm9tKHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMpLm1hcChhc3luYyAoW3BhdGgsIGV2YWx1YXRvcl0pID0+IHtcbiAgICAgIC8vIENoZWNrIGNhY2hlIGZpcnN0XG4gICAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IHRoaXMuZ2V0Q2FjaGVkRXhwcmVzc2lvblJlc3VsdChwYXRoKTtcbiAgICAgIGlmIChjYWNoZWRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhg8J+SviBbJHt0aGlzLm5vZGUoKS50eXBlfV0gVXNpbmcgY2FjaGVkIGV4cHJlc3Npb24gcmVzdWx0IGZvciAnJHtwYXRofSdgKTtcbiAgICAgICAgcmV0dXJuIHsgcGF0aCwgbmV3VmFsdWU6IGNhY2hlZFZhbHVlLCBmcm9tQ2FjaGU6IHRydWUgfTtcbiAgICAgIH1cblxuICAgICAgLy8gRXZhbHVhdGUgZXhwcmVzc2lvbiBpZiBub3QgY2FjaGVkXG4gICAgICBjb25zdCBldmFsU3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGF3YWl0IGV2YWx1YXRvcigpO1xuICAgICAgY29uc3QgZXZhbFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSAtIGV2YWxTdGFydFRpbWU7XG5cbiAgICAgIC8vIENoZWNrIGlmIHJlc3VsdCBoYXMgYWN0dWFsbHkgY2hhbmdlZCB1c2luZyBMb2Rhc2ggaXNFcXVhbFxuICAgICAgY29uc3QgbGFzdFZhbHVlID0gdGhpcy5sYXN0RXhwcmVzc2lvblJlc3VsdHMuZ2V0KHBhdGgpO1xuICAgICAgY29uc3QgaGFzQ2hhbmdlZCA9ICFpc0VxdWFsKG5ld1ZhbHVlLCBsYXN0VmFsdWUpO1xuXG4gICAgICBpZiAoaGFzQ2hhbmdlZCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgLy8gICBg8J+TnSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gRXhwcmVzc2lvbiAnJHtwYXRofScgZXZhbHVhdGVkIGluICR7ZXZhbFRpbWUudG9GaXhlZCgyKX1tcyAtIHZhbHVlIGNoYW5nZWRgLFxuICAgICAgICAvLyApO1xuICAgICAgICAvLyBDYWNoZSB0aGUgcmVzdWx0IGFuZCB0cmFjayBpdFxuICAgICAgICB0aGlzLnNldENhY2hlZEV4cHJlc3Npb25SZXN1bHQocGF0aCwgbmV3VmFsdWUpO1xuICAgICAgICB0aGlzLmxhc3RFeHByZXNzaW9uUmVzdWx0cy5zZXQocGF0aCwgY2xvbmVEZWVwKG5ld1ZhbHVlKSk7XG4gICAgICAgIHJldHVybiB7IHBhdGgsIG5ld1ZhbHVlLCBmcm9tQ2FjaGU6IGZhbHNlLCBoYXNDaGFuZ2VkOiB0cnVlIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgLy8gICBg8J+TnSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gRXhwcmVzc2lvbiAnJHtwYXRofScgZXZhbHVhdGVkIGluICR7ZXZhbFRpbWUudG9GaXhlZCgyKX1tcyAtIHZhbHVlIHVuY2hhbmdlZCwgc2tpcHBpbmcgdXBkYXRlYCxcbiAgICAgICAgLy8gKTtcbiAgICAgICAgLy8gQ2FjaGUgdGhlIHJlc3VsdCBidXQgZG9uJ3QgdXBkYXRlXG4gICAgICAgIHRoaXMuc2V0Q2FjaGVkRXhwcmVzc2lvblJlc3VsdChwYXRoLCBuZXdWYWx1ZSk7XG4gICAgICAgIHRoaXMubGFzdEV4cHJlc3Npb25SZXN1bHRzLnNldChwYXRoLCBjbG9uZURlZXAobmV3VmFsdWUpKTtcbiAgICAgICAgcmV0dXJuIHsgcGF0aCwgbmV3VmFsdWUsIGZyb21DYWNoZTogZmFsc2UsIGhhc0NoYW5nZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBXYWl0IGZvciBhbGwgZXZhbHVhdG9ycyB0byBjb21wbGV0ZVxuICAgIGNvbnN0IHVwZGF0ZXMgPSBhd2FpdCBQcm9taXNlLmFsbCh1cGRhdGVQcm9taXNlcyk7XG5cbiAgICAvLyBGaWx0ZXIgdXBkYXRlcyB0byBvbmx5IGluY2x1ZGUgdGhvc2UgdGhhdCBoYXZlIGFjdHVhbGx5IGNoYW5nZWRcbiAgICBjb25zdCBjaGFuZ2VkVXBkYXRlcyA9IHVwZGF0ZXMuZmlsdGVyKCh1cGRhdGUpID0+IHVwZGF0ZS5oYXNDaGFuZ2VkICE9PSBmYWxzZSk7XG5cbiAgICAvLyBBcHBseSB1cGRhdGVzIHRvIG1lcmdlZE9wdGlvbnMgb25seSBmb3IgY2hhbmdlZCB2YWx1ZXNcbiAgICBpZiAoY2hhbmdlZFVwZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5tZXJnZWRPcHRpb25zLnVwZGF0ZSgobykgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9IHsgLi4ubyB9O1xuICAgICAgICBjaGFuZ2VkVXBkYXRlcy5mb3JFYWNoKCh7IHBhdGgsIG5ld1ZhbHVlIH0pID0+IHtcbiAgICAgICAgICBzZXQodXBkYXRlZE9wdGlvbnMsIHBhdGgsIG5ld1ZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB1cGRhdGVkT3B0aW9ucztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGNhY2hlSGl0cyA9IHVwZGF0ZXMuZmlsdGVyKCh1cGRhdGUpID0+IHVwZGF0ZS5mcm9tQ2FjaGUpLmxlbmd0aDtcbiAgICBjb25zdCBza2lwcGVkVXBkYXRlcyA9IHVwZGF0ZXMubGVuZ3RoIC0gY2hhbmdlZFVwZGF0ZXMubGVuZ3RoO1xuXG4gICAgLy8gY29uc29sZS5sb2coXG4gICAgLy8gICBg8J+TiyBbJHt0aGlzLm5vZGUoKS50eXBlfV0gQXBwbGllZCAke2NoYW5nZWRVcGRhdGVzLmxlbmd0aH0gZXhwcmVzc2lvbiB1cGRhdGVzICgke2NhY2hlSGl0c30gY2FjaGUgaGl0cywgJHtza2lwcGVkVXBkYXRlc30gc2tpcHBlZClgLFxuICAgIC8vICk7XG4gICAgcmV0dXJuIGNoYW5nZWRVcGRhdGVzLmxlbmd0aDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVZhbHVlQmFzZWRPbkZvcm11bGEoKSB7XG4gICAgaWYgKHRoaXMubm9kZSgpLmZvcm11bGEpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24odGhpcy5ub2RlKCkuZm9ybXVsYSEpO1xuICAgICAgdGhpcy5pbnN0YW5jZS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBldmFsdWF0ZUV4cHJlc3Npb24odGVtcGxhdGVFeHByZXNzaW9uOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuYnVpbGRFeHByZXNzaW9uU2NvcGUoKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuZXZhbHVhdGUodGVtcGxhdGVFeHByZXNzaW9uLCBzY29wZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV2YWx1YXRpbmcgZXhwcmVzc2lvbjonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEV4cHJlc3Npb25TY29wZSgpOiBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZXh0OiB0aGlzLmdldENvbnRleHRTY29wZSgpLFxuICAgICAgZXZlbnRzOiB0aGlzLmdldEV2ZW50U2NvcGUoKSxcbiAgICAgIHdpZGdldDogdGhpcy5nZXRXaWRnZXRTY29wZSgpLFxuICAgICAgbWV0aG9kczogdGhpcy5nZXRGdW5jdGlvblNjb3BlKCksXG4gICAgICB2YXJzOiB0aGlzLmdldFZhcmlhYmxlc1Njb3BlKCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGV4dFNjb3BlKCk6IHsgW25hbWU6IHN0cmluZ106IEZ1bmN0aW9uIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBldmFsOiAocGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vVE9ETzogSGFuZGxlIGFycmF5IGluZGV4XG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5zdGFydHNXaXRoKCc+JykgPyBgJHt0aGlzLmluc3RhbmNlPy5wYXJlbnRQYXRoKCl9LiR7cGF0aC5zdWJzdHJpbmcoMSl9YCA6IHBhdGg7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb250ZXh0U2VydmljZS5nZXRWYWx1ZShmdWxsUGF0aCk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IChwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUocGF0aCwgdmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGRhdGE6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UuZGF0YSgpO1xuICAgICAgfSxcbiAgICAgIGlzRGlydHk6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UuaXNEaXJ0eSgpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFNjb3BlKCk6IHsgW25hbWU6IHN0cmluZ106IEZ1bmN0aW9uIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZXh0OiAocGF0aD86IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbkNvbnRleHRDaGFuZ2VkLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChjKSA9PiB7XG4gICAgICAgICAgICAvLyBJZiBubyBwYXRoIGZpbHRlciBzcGVjaWZpZWQsIHBhc3MgYWxsIGV2ZW50c1xuICAgICAgICAgICAgaWYgKHBhdGggPT0gbnVsbCB8fCBwYXRoID09PSAnJykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEVuc3VyZSBjLnBhdGggZXhpc3RzXG4gICAgICAgICAgICBpZiAoIWMucGF0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBQYXR0ZXJuOiBcInByZWZpeCpcIiAtIG1hdGNoZXMgcGF0aHMgdGhhdCBzdGFydCB3aXRoIHByZWZpeFxuICAgICAgICAgICAgaWYgKHBhdGguZW5kc1dpdGgoJyonKSkge1xuICAgICAgICAgICAgICBjb25zdCBwcmVmaXggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICByZXR1cm4gYy5wYXRoLnN0YXJ0c1dpdGgocHJlZml4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFBhdHRlcm46IFwiKnN1ZmZpeFwiIC0gbWF0Y2hlcyBwYXRocyB0aGF0IGVuZCB3aXRoIHN1ZmZpeFxuICAgICAgICAgICAgZWxzZSBpZiAocGF0aC5zdGFydHNXaXRoKCcqJykpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3VmZml4ID0gcGF0aC5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICAgIHJldHVybiBjLnBhdGguZW5kc1dpdGgoc3VmZml4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEV4YWN0IG1hdGNoXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGMucGF0aCA9PT0gcGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBmcm9tOiAoZXZlbnQ6IHN0cmluZykgPT4gZ2V0KHRoaXMuaW5zdGFuY2UuYXBpKCksIGV2ZW50KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXaWRnZXRTY29wZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgY2FsbDogKG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5jYWxsKG5hbWUsIC4uLmFyZ3MpO1xuICAgICAgfSxcbiAgICAgIHNldFZhbHVlOiAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmluc3RhbmNlLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmluc3RhbmNlLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICB9LFxuICAgICAgcmVmcmVzaDogKCkgPT4ge1xuICAgICAgICBjb25zdCByZWZyZXNoID0gKHRoaXMuaW5zdGFuY2UgYXMgYW55KT8uWydyZWZyZXNoJ107XG4gICAgICAgIGlmIChyZWZyZXNoICYmIHR5cGVvZiByZWZyZXNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmVmcmVzaC5iaW5kKHRoaXMuaW5zdGFuY2UpKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvdXRwdXQ6IChuYW1lOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5vdXRwdXQobmFtZSk7XG4gICAgICB9LFxuICAgICAgZmluZDogKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRlclNlcnZpY2UuZ2V0V2lkZ2V0KGlkKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RnVuY3Rpb25TY29wZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9IHtcbiAgICBjb25zdCBzY29wZTogeyBbbmFtZTogc3RyaW5nXTogRnVuY3Rpb24gfSA9IHtcbiAgICAgIHN1bTogKHZhbHVlczogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBzdW0odmFsdWVzKTtcbiAgICAgIH0sXG4gICAgICB0cmFuc2xhdGU6ICh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYyh0ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0sXG4gICAgICB3aWRnZXRJbmZvOiAobmFtZTogc3RyaW5nKTogQVhQV2lkZ2V0Q29uZmlnIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0U2VydmljZS5yZXNvbHZlKG5hbWUpO1xuICAgICAgfSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIGN1c3RvbSBmdW5jdGlvbnMgZnJvbSBidWlsZGVyIHNlcnZpY2VcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLmJ1aWxkZXJTZXJ2aWNlLmZ1bmN0aW9ucykuZm9yRWFjaCgoW2tleSwgZm5dKSA9PiB7XG4gICAgICBzY29wZVtrZXldID0gKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgIHJldHVybiBmbiguLi5hcmdzKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldFZhcmlhYmxlc1Njb3BlKCk6IHsgW25hbWU6IHN0cmluZ106IEZ1bmN0aW9uIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBldmFsOiAocGF0aDogc3RyaW5nKSA9PiBnZXQodGhpcy5idWlsZGVyU2VydmljZS52YXJpYWJsZXMsIHBhdGgpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFzc2lnblRyaWdnZXJzKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGUoKTtcbiAgICAvLyBDaGVjayBtdWx0aXBsZSBwb3NzaWJsZSBsb2NhdGlvbnMgZm9yIHRyaWdnZXJzXG4gICAgY29uc3QgdHJpZ2dlcnMgPSBub2RlLnRyaWdnZXJzIHx8IG5vZGUub3B0aW9ucz8uWyd0cmlnZ2VycyddIHx8IHRoaXMubWVyZ2VkT3B0aW9ucygpPy50cmlnZ2VycztcblxuICAgIGlmICghdHJpZ2dlcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gYXdhaXQgdGhpcy5ldmFsdWF0ZVRyaWdnZXIodHJpZ2dlci5ldmVudCk7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgIGV2ZW50LnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4ZWMgPSBhc3luYyAoYWN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGFjdGlvbikgJiYgaXNTdHJpbmcoYWN0aW9uKSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXZhbHVhdGVBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBBcnJheS5pc0FycmF5KHRyaWdnZXIuYWN0aW9uKSA/IHRyaWdnZXIuYWN0aW9uIDogW3RyaWdnZXIuYWN0aW9uXTtcbiAgICAgICAgICAgIGFjdGlvbnMuZm9yRWFjaChhc3luYyAoYTogc3RyaW5nKSA9PiBhd2FpdCBleGVjKGEpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgYXNzaWduaW5nIHRyaWdnZXI6JywgZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVUcmlnZ2VyKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKTogUHJvbWlzZTxPYnNlcnZhYmxlPGFueT4gfCBudWxsPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5idWlsZEV4cHJlc3Npb25TY29wZSgpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmV2YWx1YXRlKHRlbXBsYXRlRXhwcmVzc2lvbiwgc2NvcGUpO1xuXG4gICAgICAvLyBDaGVjayBpZiByZXN1bHQgaXMgYW4gT2JzZXJ2YWJsZVxuICAgICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0LnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV2YWx1YXRpbmcgdHJpZ2dlciBleHByZXNzaW9uOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVBY3Rpb24odGVtcGxhdGVFeHByZXNzaW9uOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmJ1aWxkRXhwcmVzc2lvblNjb3BlKCk7XG4gICAgICBhd2FpdCB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuZXZhbHVhdGUodGVtcGxhdGVFeHByZXNzaW9uLCBzY29wZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV2YWx1YXRpbmcgYWN0aW9uIGV4cHJlc3Npb246JywgdGVtcGxhdGVFeHByZXNzaW9uLCBlcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { Inject, NgModule, Optional } from '@angular/core';\nimport { AXPWidgetColumnRendererComponent } from './widget-column-renderer';\nimport { AXPWidgetContainerComponent } from './widget-container.component';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetRendererDirective } from './widget-renderer.directive';\nimport * as i0 from \"@angular/core\";\nconst COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];\nexport class AXPLayoutBuilderModule {\n static forRoot(config) {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry) => async () => {\n await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);\n await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);\n },\n deps: [AXPWidgetRegistryService],\n multi: true,\n },\n ],\n };\n }\n static forChild(config) {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry) => async () => {\n await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);\n await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);\n },\n deps: [AXPWidgetRegistryService],\n multi: true,\n },\n ],\n };\n }\n /**\n * @ignore\n */\n constructor(instances) {\n instances?.forEach((f) => {\n f();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderModule, deps: [{ token: 'AXPLayoutBuilderModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderModule, declarations: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective], imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule], exports: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderModule, imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule],\n exports: [...COMPONENTS],\n declarations: [...COMPONENTS],\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['AXPLayoutBuilderModuleFactory']\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9idWlsZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQXVCLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBUXpFLE1BQU0sVUFBVSxHQUFHLENBQUMsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztBQU8vRyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBc0M7UUFDbkQsT0FBTztZQUNMLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSwrQkFBK0I7b0JBQ3hDLFVBQVUsRUFBRSxDQUFDLFFBQWtDLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFO3dCQUM3RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7d0JBRTVGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQ3ZHLENBQUM7b0JBQ0osQ0FBQztvQkFDRCxJQUFJLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDaEMsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFzQztRQUNwRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLCtCQUErQjtvQkFDeEMsVUFBVSxFQUFFLENBQUMsUUFBa0MsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUU7d0JBQzdELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzt3QkFFNUYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDdkcsQ0FBQztvQkFDSixDQUFDO29CQUNELElBQUksRUFBRSxDQUFDLHdCQUF3QixDQUFDO29CQUNoQyxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQWlFLFNBQWdCO1FBQy9FLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FoRFUsc0JBQXNCLGtCQTRDRCwrQkFBK0I7K0dBNUNwRCxzQkFBc0IsaUJBUGYsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsMEJBQTBCLGFBR2pHLFlBQVksRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixhQUh2RSwyQkFBMkIsRUFBRSxnQ0FBZ0MsRUFBRSwwQkFBMEI7K0dBT2hHLHNCQUFzQixZQUp2QixZQUFZLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxtQkFBbUI7OzJGQUk5RSxzQkFBc0I7a0JBTGxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLENBQUM7b0JBQzFGLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO29CQUN4QixZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztpQkFDOUI7OzBCQTZDYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2tlbGV0b24nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29sdW1uUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldC1jb2x1bW4tcmVuZGVyZXInO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZW5kZXJlckRpcmVjdGl2ZSB9IGZyb20gJy4vd2lkZ2V0LXJlbmRlcmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb25maWcsIGV4dGVuZGVkV2lkZ2V0IH0gZnJvbSAnLi93aWRnZXQudHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUExheW91dEJ1aWxkZXJNb2R1bGVDb25maWdzIHtcbiAgd2lkZ2V0cz86IEFYUFdpZGdldENvbmZpZ1tdO1xuICBleHRlbmRlZFdpZGdldHM/OiBleHRlbmRlZFdpZGdldFtdO1xufVxuXG5jb25zdCBDT01QT05FTlRTID0gW0FYUFdpZGdldENvbnRhaW5lckNvbXBvbmVudCwgQVhQV2lkZ2V0Q29sdW1uUmVuZGVyZXJDb21wb25lbnQsIEFYUFdpZGdldFJlbmRlcmVyRGlyZWN0aXZlXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9ydGFsTW9kdWxlLCBBWFNrZWxldG9uTW9kdWxlLCBDb21tb25Nb2R1bGUsIEFYVHJhbnNsYXRpb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbLi4uQ09NUE9ORU5UU10sXG4gIGRlY2xhcmF0aW9uczogWy4uLkNPTVBPTkVOVFNdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogQVhQTGF5b3V0QnVpbGRlck1vZHVsZUNvbmZpZ3MpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFYUExheW91dEJ1aWxkZXJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6ICdBWFBMYXlvdXRCdWlsZGVyTW9kdWxlRmFjdG9yeScsXG4gICAgICAgICAgdXNlRmFjdG9yeTogKHJlZ2lzdHJ5OiBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpID0+IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGNvbmZpZz8ud2lkZ2V0cz8ubWFwKCh3KSA9PiBQcm9taXNlLnJlc29sdmUocmVnaXN0cnkucmVnaXN0ZXIodykpKSB8fCBbXSk7XG5cbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICBjb25maWc/LmV4dGVuZGVkV2lkZ2V0cz8ubWFwKChldykgPT4gUHJvbWlzZS5yZXNvbHZlKHJlZ2lzdHJ5LmV4dGVuZChldy5wYXJlbnROYW1lLCBldy53aWRnZXQpKSkgfHwgW10sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVwczogW0FYUFdpZGdldFJlZ2lzdHJ5U2VydmljZV0sXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZm9yQ2hpbGQoY29uZmlnPzogQVhQTGF5b3V0QnVpbGRlck1vZHVsZUNvbmZpZ3MpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFYUExheW91dEJ1aWxkZXJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6ICdBWFBMYXlvdXRCdWlsZGVyTW9kdWxlRmFjdG9yeScsXG4gICAgICAgICAgdXNlRmFjdG9yeTogKHJlZ2lzdHJ5OiBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpID0+IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGNvbmZpZz8ud2lkZ2V0cz8ubWFwKCh3KSA9PiBQcm9taXNlLnJlc29sdmUocmVnaXN0cnkucmVnaXN0ZXIodykpKSB8fCBbXSk7XG5cbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICBjb25maWc/LmV4dGVuZGVkV2lkZ2V0cz8ubWFwKChldykgPT4gUHJvbWlzZS5yZXNvbHZlKHJlZ2lzdHJ5LmV4dGVuZChldy5wYXJlbnROYW1lLCBldy53aWRnZXQpKSkgfHwgW10sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVwczogW0FYUFdpZGdldFJlZ2lzdHJ5U2VydmljZV0sXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdCgnQVhQTGF5b3V0QnVpbGRlck1vZHVsZUZhY3RvcnknKSBpbnN0YW5jZXM6IGFueVtdKSB7XG4gICAgaW5zdGFuY2VzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICBmKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","export class AXPPropertyEditorHelper {\n static expandShorthand(values) {\n switch (values.length) {\n case 1:\n return [values[0], values[0], values[0], values[0]];\n case 2:\n return [values[0], values[1], values[0], values[1]];\n case 3:\n return [values[0], values[1], values[2], values[1]];\n case 4:\n return values;\n default:\n throw new Error(`Invalid shorthand value count. Input: ${values}`);\n }\n }\n static condenseShorthand(values) {\n if (values.length !== 4) {\n throw new Error('Expected 4 values for condensation.');\n }\n if (values[0] === values[1] && values[1] === values[2] && values[2] === values[3]) {\n return `${values[0]}`;\n }\n else if (values[0] === values[2] && values[1] === values[3]) {\n return `${values[0]} ${values[1]}`;\n }\n else if (values[1] === values[3]) {\n return `${values[0]} ${values[1]} ${values[2]}`;\n }\n else {\n return `${values[0]} ${values[1]} ${values[2]} ${values[3]}`;\n }\n }\n static parseSides(input) {\n const values = this.expandShorthand(input.match(/(?:rgb\\([^)]+\\)|[^ ]+)/g)?.map((value) => value.trim()) || []);\n return { top: values[0], right: values[1], bottom: values[2], left: values[3] };\n }\n static parseSidesWithUnits(input) {\n const values = this.expandShorthand(input.match(/(?:rgb\\([^)]+\\)|[^ ]+)/g)?.map((value) => value.trim()) || []);\n return {\n top: AXPPropertyEditorHelper.getValueWithUnit(values[0]).value,\n right: AXPPropertyEditorHelper.getValueWithUnit(values[1]).value,\n bottom: AXPPropertyEditorHelper.getValueWithUnit(values[2]).value,\n left: AXPPropertyEditorHelper.getValueWithUnit(values[3]).value,\n };\n }\n static parseCorners(input) {\n const values = this.expandShorthand(input.split(' ').map((value) => value.trim()));\n return {\n 'top-left': AXPPropertyEditorHelper.getValueWithUnit(values[0]).value,\n 'top-right': AXPPropertyEditorHelper.getValueWithUnit(values[1]).value,\n 'bottom-left': AXPPropertyEditorHelper.getValueWithUnit(values[2]).value,\n 'bottom-right': AXPPropertyEditorHelper.getValueWithUnit(values[3]).value,\n };\n }\n static parseSpacingBox(input) {\n return {\n margin: this.parseSidesWithUnits(input.margin),\n padding: this.parseSidesWithUnits(input.padding),\n };\n }\n static parseBorderBox(input) {\n return {\n width: this.parseSidesWithUnits(input.width),\n radius: this.parseCorners(input.radius),\n color: this.parseSides(input.color),\n style: this.parseSides(input.style),\n };\n }\n static parseSpacingBoxReverse(input, units) {\n const format = (value, unit) => `${value}${unit}`;\n return {\n margin: AXPPropertyEditorHelper.condenseShorthand([\n format(input.margin.top, units.margin.top),\n format(input.margin.right, units.margin.right),\n format(input.margin.bottom, units.margin.bottom),\n format(input.margin.left, units.margin.left),\n ]),\n padding: AXPPropertyEditorHelper.condenseShorthand([\n format(input.padding.top, units.padding.top),\n format(input.padding.right, units.padding.right),\n format(input.padding.bottom, units.padding.bottom),\n format(input.padding.left, units.padding.left),\n ]),\n };\n }\n static parseBorderBoxReverse(input, units) {\n const format = (value, unit) => `${value}${unit}`;\n return {\n width: AXPPropertyEditorHelper.condenseShorthand([\n format(input.width.top, units.width.top),\n format(input.width.right, units.width.right),\n format(input.width.bottom, units.width.bottom),\n format(input.width.left, units.width.left),\n ]),\n radius: AXPPropertyEditorHelper.condenseShorthand([\n format(input.radius['top-left'], units.radius['top-left']),\n format(input.radius['top-right'], units.radius['top-right']),\n format(input.radius['bottom-right'], units.radius['bottom-right']),\n format(input.radius['bottom-left'], units.radius['bottom-left']),\n ]),\n color: AXPPropertyEditorHelper.condenseShorthand([\n `${input.color.top}${units.color.top}`,\n `${input.color.right}${units.color.right}`,\n `${input.color.bottom}${units.color.bottom}`,\n `${input.color.left}${units.color.left}`,\n ]),\n style: AXPPropertyEditorHelper.condenseShorthand([\n `${input.style.top}${units.style.top}`,\n `${input.style.right}${units.style.right}`,\n `${input.style.bottom}${units.style.bottom}`,\n `${input.style.left}${units.style.left}`,\n ]),\n };\n }\n static getValueWithUnit(input) {\n if (typeof input === 'number')\n return { value: input, unit: 'px' };\n if (input === 'auto')\n return { value: 0, unit: 'px' };\n const match = input.match(/^([0-9.]+)([a-z%]*)$/i);\n if (!match)\n throw new Error(`Invalid unit format: ${input}`);\n return { value: parseFloat(match[1]), unit: match[2] || '' };\n }\n static getValueFromUnit(value, unit) {\n return unit ? `${value}${unit}` : `${value}`;\n }\n static parseGap(gap) {\n const parts = gap.split(/\\s+/);\n const match = parts[0].match(/^(\\d+\\.?\\d*)([a-z%]+)$/);\n if (!match) {\n throw new Error('Invalid gap format');\n }\n const [, xValue, unit] = match;\n let yValue = parseFloat(xValue);\n if (parts.length === 2) {\n const secondMatch = parts[1].match(/^(\\d+\\.?\\d*)[a-z%]+$/);\n if (!secondMatch) {\n throw new Error('Invalid gap format');\n }\n yValue = parseFloat(secondMatch[1]);\n }\n return {\n values: {\n x: parseFloat(xValue),\n y: yValue,\n },\n unit,\n };\n }\n static parseGridTemplate(gridTemplate) {\n const match = gridTemplate.match(/^repeat\\((\\d+),\\s*(?:1fr|auto|minmax\\([^)]*\\))\\)$/);\n if (!match) {\n throw new Error(\"Invalid grid template format. Expected 'repeat(N, 1fr|auto|minmax(...))'.\");\n }\n return parseInt(match[1], 10);\n }\n static createGridTemplate(repetitionCount) {\n if (repetitionCount <= 0) {\n throw new Error('Repetition count must be a positive integer.');\n }\n return `repeat(${repetitionCount}, 1fr)`;\n }\n}\nexport function findNonEmptyBreakpoints(values) {\n const breakpoints = ['default', 'sm', 'md', 'lg', 'xl', '2xl', '3xl'];\n const nonEmptyBreakpoints = [];\n for (const breakpoint of breakpoints) {\n if (values[breakpoint] !== undefined) {\n nonEmptyBreakpoints.push(breakpoint);\n }\n }\n return nonEmptyBreakpoints;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZWRpdG9yLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL2hlbHBlci9wcm9wZXJ0eS1lZGl0b3IuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sT0FBTyx1QkFBdUI7SUFDMUIsTUFBTSxDQUFDLGVBQWUsQ0FBbUIsTUFBVztRQUMxRCxRQUFRLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RELEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsS0FBSyxDQUFDO2dCQUNKLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxNQUFNLENBQUM7WUFDaEI7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBSSxNQUFXO1FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FB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QztJQUNILENBQUM7SUFFRCxPQUFPLG1CQUFtQixDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWFBCb3JkZXJCb3gsXG4gIEFYUEJvcmRlckJveFN0cmluZyxcbiAgQVhQQnJlYWtwb2ludHMsXG4gIEFYUEJyZWFrcG9pbnRWYWx1ZXMsXG4gIEFYUFByb3BlcnR5Q29ybmVycyxcbiAgQVhQUHJvcGVydHlTaWRlcyxcbiAgQVhQU3BhY2luZ0JveCxcbiAgQVhQU3BhY2luZ0JveFN0cmluZyxcbn0gZnJvbSAnLi9wcm9wZXJ0eS1lZGl0b3IudHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlciB7XG4gIHByaXZhdGUgc3RhdGljIGV4cGFuZFNob3J0aGFuZDxUIGV4dGVuZHMgc3RyaW5nPih2YWx1ZXM6IFRbXSk6IFRbXSB7XG4gICAgc3dpdGNoICh2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBbdmFsdWVzWzBdLCB2YWx1ZXNbMF0sIHZhbHVlc1swXSwgdmFsdWVzWzBdXTtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIFt2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgdmFsdWVzWzBdLCB2YWx1ZXNbMV1dO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gW3ZhbHVlc1swXSwgdmFsdWVzWzFdLCB2YWx1ZXNbMl0sIHZhbHVlc1sxXV07XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2hvcnRoYW5kIHZhbHVlIGNvdW50LiBJbnB1dDogJHt2YWx1ZXN9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY29uZGVuc2VTaG9ydGhhbmQ8VD4odmFsdWVzOiBUW10pOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoICE9PSA0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIDQgdmFsdWVzIGZvciBjb25kZW5zYXRpb24uJyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlc1swXSA9PT0gdmFsdWVzWzFdICYmIHZhbHVlc1sxXSA9PT0gdmFsdWVzWzJdICYmIHZhbHVlc1syXSA9PT0gdmFsdWVzWzNdKSB7XG4gICAgICByZXR1cm4gYCR7dmFsdWVzWzBdfWA7XG4gICAgfSBlbHNlIGlmICh2YWx1ZXNbMF0gPT09IHZhbHVlc1syXSAmJiB2YWx1ZXNbMV0gPT09IHZhbHVlc1szXSkge1xuICAgICAgcmV0dXJuIGAke3ZhbHVlc1swXX0gJHt2YWx1ZXNbMV19YDtcbiAgICB9IGVsc2UgaWYgKHZhbHVlc1sxXSA9PT0gdmFsdWVzWzNdKSB7XG4gICAgICByZXR1cm4gYCR7dmFsdWVzWzBdfSAke3ZhbHVlc1sxXX0gJHt2YWx1ZXNbMl19YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke3ZhbHVlc1swXX0gJHt2YWx1ZXNbMV19ICR7dmFsdWVzWzJdfSAke3ZhbHVlc1szXX1gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlU2lkZXMoaW5wdXQ6IHN0cmluZyk6IEFYUFByb3BlcnR5U2lkZXMge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZXhwYW5kU2hvcnRoYW5kKGlucHV0Lm1hdGNoKC8oPzpyZ2JcXChbXildK1xcKXxbXiBdKykvZyk/Lm1hcCgodmFsdWUpID0+IHZhbHVlLnRyaW0oKSkgfHwgW10pO1xuICAgIHJldHVybiB7IHRvcDogdmFsdWVzWzBdLCByaWdodDogdmFsdWVzWzFdLCBib3R0b206IHZhbHVlc1syXSwgbGVmdDogdmFsdWVzWzNdIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZVNpZGVzV2l0aFVuaXRzKGlucHV0OiBzdHJpbmcpOiBBWFBQcm9wZXJ0eVNpZGVzPG51bWJlcj4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZXhwYW5kU2hvcnRoYW5kKGlucHV0Lm1hdGNoKC8oPzpyZ2JcXChbXildK1xcKXxbXiBdKykvZyk/Lm1hcCgodmFsdWUpID0+IHZhbHVlLnRyaW0oKSkgfHwgW10pO1xuICAgIHJldHVybiB7XG4gICAgICB0b3A6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzBdKS52YWx1ZSxcbiAgICAgIHJpZ2h0OiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5nZXRWYWx1ZVdpdGhVbml0KHZhbHVlc1sxXSkudmFsdWUsXG4gICAgICBib3R0b206IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzJdKS52YWx1ZSxcbiAgICAgIGxlZnQ6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzNdKS52YWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VDb3JuZXJzKGlucHV0OiBzdHJpbmcpOiBBWFBQcm9wZXJ0eUNvcm5lcnM8bnVtYmVyPiB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5leHBhbmRTaG9ydGhhbmQoaW5wdXQuc3BsaXQoJyAnKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS50cmltKCkpKTtcbiAgICByZXR1cm4ge1xuICAgICAgJ3RvcC1sZWZ0JzogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbMF0pLnZhbHVlLFxuICAgICAgJ3RvcC1yaWdodCc6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzFdKS52YWx1ZSxcbiAgICAgICdib3R0b20tbGVmdCc6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzJdKS52YWx1ZSxcbiAgICAgICdib3R0b20tcmlnaHQnOiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5nZXRWYWx1ZVdpdGhVbml0KHZhbHVlc1szXSkudmFsdWUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VTcGFjaW5nQm94KGlucHV0OiBBWFBTcGFjaW5nQm94U3RyaW5nKTogQVhQU3BhY2luZ0JveDxudW1iZXI+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWFyZ2luOiB0aGlzLnBhcnNlU2lkZXNXaXRoVW5pdHMoaW5wdXQubWFyZ2luKSxcbiAgICAgIHBhZGRpbmc6IHRoaXMucGFyc2VTaWRlc1dpdGhVbml0cyhpbnB1dC5wYWRkaW5nKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZUJvcmRlckJveChpbnB1dDogQVhQQm9yZGVyQm94U3RyaW5nKTogQVhQQm9yZGVyQm94PG51bWJlciB8IHN0cmluZz4ge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogdGhpcy5wYXJzZVNpZGVzV2l0aFVuaXRzKGlucHV0LndpZHRoKSxcbiAgICAgIHJhZGl1czogdGhpcy5wYXJzZUNvcm5lcnMoaW5wdXQucmFkaXVzKSxcbiAgICAgIGNvbG9yOiB0aGlzLnBhcnNlU2lkZXMoaW5wdXQuY29sb3IpLFxuICAgICAgc3R5bGU6IHRoaXMucGFyc2VTaWRlcyhpbnB1dC5zdHlsZSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VTcGFjaW5nQm94UmV2ZXJzZShcbiAgICBpbnB1dDogQVhQU3BhY2luZ0JveDxudW1iZXI+LFxuICAgIHVuaXRzOiBBWFBTcGFjaW5nQm94PHN0cmluZz4sXG4gICk6IEFYUFNwYWNpbmdCb3hTdHJpbmcge1xuICAgIGNvbnN0IGZvcm1hdCA9ICh2YWx1ZTogbnVtYmVyLCB1bml0OiBzdHJpbmcpID0+IGAke3ZhbHVlfSR7dW5pdH1gO1xuICAgIHJldHVybiB7XG4gICAgICBtYXJnaW46IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmNvbmRlbnNlU2hvcnRoYW5kKFtcbiAgICAgICAgZm9ybWF0KGlucHV0Lm1hcmdpbi50b3AsIHVuaXRzLm1hcmdpbi50b3ApLFxuICAgICAgICBmb3JtYXQoaW5wdXQubWFyZ2luLnJpZ2h0LCB1bml0cy5tYXJnaW4ucmlnaHQpLFxuICAgICAgICBmb3JtYXQoaW5wdXQubWFyZ2luLmJvdHRvbSwgdW5pdHMubWFyZ2luLmJvdHRvbSksXG4gICAgICAgIGZvcm1hdChpbnB1dC5tYXJnaW4ubGVmdCwgdW5pdHMubWFyZ2luLmxlZnQpLFxuICAgICAgXSksXG4gICAgICBwYWRkaW5nOiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5jb25kZW5zZVNob3J0aGFuZChbXG4gICAgICAgIGZvcm1hdChpbnB1dC5wYWRkaW5nLnRvcCwgdW5pdHMucGFkZGluZy50b3ApLFxuICAgICAgICBmb3JtYXQoaW5wdXQucGFkZGluZy5yaWdodCwgdW5pdHMucGFkZGluZy5yaWdodCksXG4gICAgICAgIGZvcm1hdChpbnB1dC5wYWRkaW5nLmJvdHRvbSwgdW5pdHMucGFkZGluZy5ib3R0b20pLFxuICAgICAgICBmb3JtYXQoaW5wdXQucGFkZGluZy5sZWZ0LCB1bml0cy5wYWRkaW5nLmxlZnQpLFxuICAgICAgXSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VCb3JkZXJCb3hSZXZlcnNlKFxuICAgIGlucHV0OiBBWFBCb3JkZXJCb3g8bnVtYmVyIHwgc3RyaW5nPixcbiAgICB1bml0czogQVhQQm9yZGVyQm94PHN0cmluZz4sXG4gICk6IEFYUEJvcmRlckJveFN0cmluZyB7XG4gICAgY29uc3QgZm9ybWF0ID0gKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIHVuaXQ6IHN0cmluZykgPT4gYCR7dmFsdWV9JHt1bml0fWA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmNvbmRlbnNlU2hvcnRoYW5kKFtcbiAgICAgICAgZm9ybWF0KGlucHV0LndpZHRoLnRvcCwgdW5pdHMud2lkdGgudG9wKSxcbiAgICAgICAgZm9ybWF0KGlucHV0LndpZHRoLnJpZ2h0LCB1bml0cy53aWR0aC5yaWdodCksXG4gICAgICAgIGZvcm1hdChpbnB1dC53aWR0aC5ib3R0b20sIHVuaXRzLndpZHRoLmJvdHRvbSksXG4gICAgICAgIGZvcm1hdChpbnB1dC53aWR0aC5sZWZ0LCB1bml0cy53aWR0aC5sZWZ0KSxcbiAgICAgIF0pLFxuICAgICAgcmFkaXVzOiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5jb25kZW5zZVNob3J0aGFuZChbXG4gICAgICAgIGZvcm1hdChpbnB1dC5yYWRpdXNbJ3RvcC1sZWZ0J10sIHVuaXRzLnJhZGl1c1sndG9wLWxlZnQnXSksXG4gICAgICAgIGZvcm1hdChpbnB1dC5yYWRpdXNbJ3RvcC1yaWdodCddLCB1bml0cy5yYWRpdXNbJ3RvcC1yaWdodCddKSxcbiAgICAgICAgZm9ybWF0KGlucHV0LnJhZGl1c1snYm90dG9tLXJpZ2h0J10sIHVuaXRzLnJhZGl1c1snYm90dG9tLXJpZ2h0J10pLFxuICAgICAgICBmb3JtYXQoaW5wdXQucmFkaXVzWydib3R0b20tbGVmdCddLCB1bml0cy5yYWRpdXNbJ2JvdHRvbS1sZWZ0J10pLFxuICAgICAgXSksXG4gICAgICBjb2xvcjogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuY29uZGVuc2VTaG9ydGhhbmQoW1xuICAgICAgICBgJHtpbnB1dC5jb2xvci50b3B9JHt1bml0cy5jb2xvci50b3B9YCxcbiAgICAgICAgYCR7aW5wdXQuY29sb3IucmlnaHR9JHt1bml0cy5jb2xvci5yaWdodH1gLFxuICAgICAgICBgJHtpbnB1dC5jb2xvci5ib3R0b219JHt1bml0cy5jb2xvci5ib3R0b219YCxcbiAgICAgICAgYCR7aW5wdXQuY29sb3IubGVmdH0ke3VuaXRzLmNvbG9yLmxlZnR9YCxcbiAgICAgIF0pLFxuICAgICAgc3R5bGU6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmNvbmRlbnNlU2hvcnRoYW5kKFtcbiAgICAgICAgYCR7aW5wdXQuc3R5bGUudG9wfSR7dW5pdHMuc3R5bGUudG9wfWAsXG4gICAgICAgIGAke2lucHV0LnN0eWxlLnJpZ2h0fSR7dW5pdHMuc3R5bGUucmlnaHR9YCxcbiAgICAgICAgYCR7aW5wdXQuc3R5bGUuYm90dG9tfSR7dW5pdHMuc3R5bGUuYm90dG9tfWAsXG4gICAgICAgIGAke2lucHV0LnN0eWxlLmxlZnR9JHt1bml0cy5zdHlsZS5sZWZ0fWAsXG4gICAgICBdKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRWYWx1ZVdpdGhVbml0KGlucHV0OiBzdHJpbmcgfCBudW1iZXIpOiB7IHZhbHVlOiBudW1iZXI7IHVuaXQ6IHN0cmluZyB9IHtcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJykgcmV0dXJuIHsgdmFsdWU6IGlucHV0LCB1bml0OiAncHgnIH07XG4gICAgaWYgKGlucHV0ID09PSAnYXV0bycpIHJldHVybiB7IHZhbHVlOiAwLCB1bml0OiAncHgnIH07XG5cbiAgICBjb25zdCBtYXRjaCA9IGlucHV0Lm1hdGNoKC9eKFswLTkuXSspKFthLXolXSopJC9pKTtcbiAgICBpZiAoIW1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdCBmb3JtYXQ6ICR7aW5wdXR9YCk7XG5cbiAgICByZXR1cm4geyB2YWx1ZTogcGFyc2VGbG9hdChtYXRjaFsxXSksIHVuaXQ6IG1hdGNoWzJdIHx8ICcnIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldFZhbHVlRnJvbVVuaXQodmFsdWU6IG51bWJlciwgdW5pdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdW5pdCA/IGAke3ZhbHVlfSR7dW5pdH1gIDogYCR7dmFsdWV9YDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VHYXAoZ2FwOiBzdHJpbmcpOiB7IHZhbHVlczogUmVjb3JkPCd4JyB8ICd5JywgbnVtYmVyPjsgdW5pdDogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHBhcnRzID0gZ2FwLnNwbGl0KC9cXHMrLyk7XG4gICAgY29uc3QgbWF0Y2ggPSBwYXJ0c1swXS5tYXRjaCgvXihcXGQrXFwuP1xcZCopKFthLXolXSspJC8pO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBnYXAgZm9ybWF0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgWywgeFZhbHVlLCB1bml0XSA9IG1hdGNoO1xuICAgIGxldCB5VmFsdWUgPSBwYXJzZUZsb2F0KHhWYWx1ZSk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgY29uc3Qgc2Vjb25kTWF0Y2ggPSBwYXJ0c1sxXS5tYXRjaCgvXihcXGQrXFwuP1xcZCopW2EteiVdKyQvKTtcbiAgICAgIGlmICghc2Vjb25kTWF0Y2gpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdhcCBmb3JtYXQnKTtcbiAgICAgIH1cbiAgICAgIHlWYWx1ZSA9IHBhcnNlRmxvYXQoc2Vjb25kTWF0Y2hbMV0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZXM6IHtcbiAgICAgICAgeDogcGFyc2VGbG9hdCh4VmFsdWUpLFxuICAgICAgICB5OiB5VmFsdWUsXG4gICAgICB9LFxuICAgICAgdW5pdCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZUdyaWRUZW1wbGF0ZShncmlkVGVtcGxhdGU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgbWF0Y2ggPSBncmlkVGVtcGxhdGUubWF0Y2goL15yZXBlYXRcXCgoXFxkKyksXFxzKig/OjFmcnxhdXRvfG1pbm1heFxcKFteKV0qXFwpKVxcKSQvKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyaWQgdGVtcGxhdGUgZm9ybWF0LiBFeHBlY3RlZCAncmVwZWF0KE4sIDFmcnxhdXRvfG1pbm1heCguLi4pKScuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlR3JpZFRlbXBsYXRlKHJlcGV0aXRpb25Db3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAocmVwZXRpdGlvbkNvdW50IDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVwZXRpdGlvbiBjb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIGByZXBlYXQoJHtyZXBldGl0aW9uQ291bnR9LCAxZnIpYDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZE5vbkVtcHR5QnJlYWtwb2ludHM8VD4odmFsdWVzOiBBWFBCcmVha3BvaW50VmFsdWVzPFQ+KTogQVhQQnJlYWtwb2ludHNbXSB7XG4gIGNvbnN0IGJyZWFrcG9pbnRzOiBBWFBCcmVha3BvaW50c1tdID0gWydkZWZhdWx0JywgJ3NtJywgJ21kJywgJ2xnJywgJ3hsJywgJzJ4bCcsICczeGwnXTtcbiAgY29uc3Qgbm9uRW1wdHlCcmVha3BvaW50czogQVhQQnJlYWtwb2ludHNbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYnJlYWtwb2ludCBvZiBicmVha3BvaW50cykge1xuICAgIGlmICh2YWx1ZXNbYnJlYWtwb2ludF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgbm9uRW1wdHlCcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub25FbXB0eUJyZWFrcG9pbnRzO1xufVxuIl19","export const AXP_WIDGETS_LAYOUT_CATEGORY = {\n name: 'layout',\n order: 1,\n title: 'Layout',\n};\nexport const AXP_WIDGETS_EDITOR_CATEGORY = {\n name: 'editor',\n order: 2,\n title: 'Editors',\n};\nexport const AXP_WIDGETS_ACTION_CATEGORY = {\n name: 'action',\n order: 3,\n title: 'Action',\n};\nexport const AXP_WIDGETS_ADVANCE_CATEGORY = {\n name: 'advance',\n order: 4,\n title: 'Advance',\n};\nexport const AXP_WIDGETS_CATEGORIES = [\n AXP_WIDGETS_LAYOUT_CATEGORY,\n AXP_WIDGETS_EDITOR_CATEGORY,\n AXP_WIDGETS_ACTION_CATEGORY,\n AXP_WIDGETS_ADVANCE_CATEGORY,\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNhdGVnb3JpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtY2F0ZWdvcmllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBc0I7SUFDNUQsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxRQUFRO0NBQ2hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBc0I7SUFDNUQsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxTQUFTO0NBQ2pCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBc0I7SUFDNUQsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxRQUFRO0NBQ2hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBc0I7SUFDN0QsSUFBSSxFQUFFLFNBQVM7SUFDZixLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxTQUFTO0NBQ2pCLENBQUM7QUFJRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBd0I7SUFDekQsMkJBQTJCO0lBQzNCLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0IsNEJBQTRCO0NBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENhdGVnb3J5IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVFNfTEFZT1VUX0NBVEVHT1JZOiBBWFBXaWRnZXRDYXRlZ29yeSA9IHtcbiAgbmFtZTogJ2xheW91dCcsXG4gIG9yZGVyOiAxLFxuICB0aXRsZTogJ0xheW91dCcsXG59O1xuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVFNfRURJVE9SX0NBVEVHT1JZOiBBWFBXaWRnZXRDYXRlZ29yeSA9IHtcbiAgbmFtZTogJ2VkaXRvcicsXG4gIG9yZGVyOiAyLFxuICB0aXRsZTogJ0VkaXRvcnMnLFxufTtcblxuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRTX0FDVElPTl9DQVRFR09SWTogQVhQV2lkZ2V0Q2F0ZWdvcnkgPSB7XG4gIG5hbWU6ICdhY3Rpb24nLFxuICBvcmRlcjogMyxcbiAgdGl0bGU6ICdBY3Rpb24nLFxufTtcblxuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRTX0FEVkFOQ0VfQ0FURUdPUlk6IEFYUFdpZGdldENhdGVnb3J5ID0ge1xuICBuYW1lOiAnYWR2YW5jZScsXG4gIG9yZGVyOiA0LFxuICB0aXRsZTogJ0FkdmFuY2UnLFxufTtcblxuXG5cbmV4cG9ydCBjb25zdCBBWFBfV0lER0VUU19DQVRFR09SSUVTOiBBWFBXaWRnZXRDYXRlZ29yeVtdID0gW1xuICBBWFBfV0lER0VUU19MQVlPVVRfQ0FURUdPUlksXG4gIEFYUF9XSURHRVRTX0VESVRPUl9DQVRFR09SWSxcbiAgQVhQX1dJREdFVFNfQUNUSU9OX0NBVEVHT1JZLFxuICBBWFBfV0lER0VUU19BRFZBTkNFX0NBVEVHT1JZLFxuXTtcbiJdfQ==","export var AXPWidgetGroupEnum;\n(function (AXPWidgetGroupEnum) {\n AXPWidgetGroupEnum[\"FormElement\"] = \"form-element\";\n AXPWidgetGroupEnum[\"DashboardWidget\"] = \"dashboard-widget\";\n AXPWidgetGroupEnum[\"FormTemplate\"] = \"form-template\";\n AXPWidgetGroupEnum[\"PropertyEditor\"] = \"property-editor\";\n AXPWidgetGroupEnum[\"MetaData\"] = \"meta-data\";\n AXPWidgetGroupEnum[\"SettingWidget\"] = \"setting-widget\";\n AXPWidgetGroupEnum[\"EntityWidget\"] = \"entity-widget\";\n})(AXPWidgetGroupEnum || (AXPWidgetGroupEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWdyb3VwLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LWdyb3VwLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sQ0FBTixJQUFZLGtCQVFYO0FBUkQsV0FBWSxrQkFBa0I7SUFDNUIsa0RBQTRCLENBQUE7SUFDNUIsMERBQW9DLENBQUE7SUFDcEMsb0RBQThCLENBQUE7SUFDOUIsd0RBQWtDLENBQUE7SUFDbEMsNENBQXNCLENBQUE7SUFDdEIsc0RBQWdDLENBQUE7SUFDaEMsb0RBQThCLENBQUE7QUFDaEMsQ0FBQyxFQVJXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFRN0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBWFBXaWRnZXRHcm91cCA9XG4gICdmb3JtLWVsZW1lbnQnIHxcbiAgJ2Rhc2hib2FyZC13aWRnZXQnIHxcbiAgJ2Zvcm0tdGVtcGxhdGUnIHxcbiAgJ3Byb3BlcnR5LWVkaXRvcicgfFxuICAnbWV0YS1kYXRhJyB8XG4gICdzZXR0aW5nLXdpZGdldCcgfFxuICAnZW50aXR5LXdpZGdldCc7XG5cblxuZXhwb3J0IGVudW0gQVhQV2lkZ2V0R3JvdXBFbnVtIHtcbiAgRm9ybUVsZW1lbnQgPSAnZm9ybS1lbGVtZW50JyxcbiAgRGFzaGJvYXJkV2lkZ2V0ID0gJ2Rhc2hib2FyZC13aWRnZXQnLFxuICBGb3JtVGVtcGxhdGUgPSAnZm9ybS10ZW1wbGF0ZScsXG4gIFByb3BlcnR5RWRpdG9yID0gJ3Byb3BlcnR5LWVkaXRvcicsXG4gIE1ldGFEYXRhID0gJ21ldGEtZGF0YScsXG4gIFNldHRpbmdXaWRnZXQgPSAnc2V0dGluZy13aWRnZXQnLFxuICBFbnRpdHlXaWRnZXQgPSAnZW50aXR5LXdpZGdldCcsXG59Il19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLWxheW91dC1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvYWNvcmV4LXBsYXRmb3JtLWxheW91dC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-layout-builder.mjs","sources":["../tmp-esm2022/layout/builder/lib/layout-builder.service.js","../tmp-esm2022/layout/builder/lib/layout-renderer.component.js","../tmp-esm2022/layout/builder/lib/layout-builder.module.js","../tmp-esm2022/layout/builder/acorex-platform-layout-builder.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPLayoutBuilderService {\n /**\n * Create a new layout builder\n */\n create() {\n return new LayoutBuilder();\n }\n /**\n * Convert Layout Builder definition to Layout Renderer format\n * با processing و cleaning options\n */\n convertToLayoutRenderer(definition) {\n const layoutDefinition = {\n zones: {},\n styles: definition.layoutConfig ? this.convertGridLayoutToStyles(definition.layoutConfig) : {}\n };\n const layoutNodes = [];\n let nodeCounter = 0;\n // Helper: count all nodes recursively\n const countNodes = (nodes) => {\n if (!nodes || nodes.length === 0)\n return 0;\n return nodes.reduce((acc, n) => acc + 1 + countNodes(n.children), 0);\n };\n const totalNodeCount = countNodes(definition.nodes);\n const hasMultipleNodes = totalNodeCount > 1;\n // Process nodes recursively - flatten everything into the same zone\n const processNodes = (nodes, parentZone = 'main') => {\n nodes.forEach((node) => {\n if (!node.widget)\n return;\n // Create layout node for widget\n const nodeId = node.id || `widget-${nodeCounter++}`;\n const layoutNode = {\n id: nodeId,\n type: node.widget.type,\n zone: parentZone,\n mode: node.mode || 'edit',\n options: node.widget.options || {}\n };\n // Convert layout config to node layout\n if (node.layout) {\n layoutNode.layout = this.convertToNodeLayout(node.layout);\n }\n else if (hasMultipleNodes && definition.layoutConfig) {\n // Apply default layout for multi-node structures when node has no explicit layout\n layoutNode.layout = this.convertToNodeLayout(definition.layoutConfig);\n }\n // Add order if specified\n if (node.order !== undefined) {\n if (!layoutNode.layout)\n layoutNode.layout = {};\n layoutNode.layout.order = typeof node.order === 'number' ? node.order : parseInt(node.order.toString());\n }\n // Process widget options and content\n this.processWidgetOptions(layoutNode, node);\n layoutNodes.push(layoutNode);\n // Recursively add children into the same zone (flat)\n if (node.children && node.children.length > 0) {\n processNodes(node.children, parentZone);\n }\n });\n };\n // Create zones in order and assign auto-order to nodes (recursively)\n let nodeOrder = 1;\n const assignOrder = (nodes) => {\n if (!nodes)\n return;\n nodes.forEach(n => {\n if (n.order === undefined || n.order === null) {\n n.order = nodeOrder++;\n }\n if (n.children && n.children.length > 0)\n assignOrder(n.children);\n });\n };\n assignOrder(definition.nodes);\n // Always create a default main zone when there are nodes\n if (totalNodeCount > 0) {\n layoutDefinition.zones['main'] = {\n layout: {\n type: 'flex',\n flexDirection: definition.direction === 'horizontal' ? 'row' : 'column',\n gap: '16px'\n },\n order: 0 // Main zone gets order 0 (first)\n };\n }\n processNodes(definition.nodes);\n return {\n layoutDefinition,\n layoutNodes\n };\n }\n // Removed container mapping helpers - all nodes are treated uniformly\n /**\n * Convert grid layout options to CSS styles\n */\n convertGridLayoutToStyles(layout) {\n const styles = {};\n // Handle responsive positions\n if (layout.positions) {\n // Use largest breakpoint for base styles\n const position = layout.positions.xxl || layout.positions.xl || layout.positions.lg ||\n layout.positions.md || layout.positions.sm;\n if (position) {\n if (position.colSpan && position.colSpan < 12) {\n styles['width'] = `${(position.colSpan / 12) * 100}%`;\n }\n }\n }\n return styles;\n }\n /**\n * Convert grid layout to node layout configuration\n */\n convertToNodeLayout(layout) {\n const nodeLayout = {};\n if (layout.positions) {\n const position = layout.positions.xxl || layout.positions.xl || layout.positions.lg ||\n layout.positions.md || layout.positions.sm;\n if (position) {\n if (position.colSpan && position.colSpan < 12) {\n nodeLayout.flex = `0 0 ${(position.colSpan / 12) * 100}%`;\n }\n if (position.rowSpan && position.rowSpan > 1) {\n nodeLayout.gridArea = `span ${position.rowSpan}`;\n }\n }\n }\n return nodeLayout;\n }\n /**\n * Process widget options based on actual widget configurations\n */\n processWidgetOptions(layoutNode, sourceNode) {\n if (!sourceNode.widget?.options)\n return;\n const options = sourceNode.widget.options;\n const processedOptions = { ...options };\n // Process based on actual widget type\n switch (sourceNode.widget.type) {\n case 'text-block-layout':\n // Text Block Widget - فقط content\n processedOptions.content = this.processTextBlockContent(options);\n break;\n case 'grid-layout':\n // Grid Layout Widget - complete grid system\n processedOptions.grid = this.processGridOptions(options);\n processedOptions.spacing = this.processSpacingOptions(options);\n processedOptions.border = this.processBorderOptions(options);\n if (options.backgroundColor)\n processedOptions.backgroundColor = options.backgroundColor;\n break;\n case 'flex-layout':\n // Flex Layout Widget\n processedOptions.flex = this.processFlexOptions(options);\n break;\n case 'panel-layout':\n // Panel Layout Widget\n processedOptions.panel = this.processPanelOptions(options);\n break;\n case 'tag':\n // Tag Widget (custom)\n processedOptions.label = options.label || options.content || 'Tag';\n processedOptions.tone = options.tone || 'primary';\n break;\n default:\n // Generic processing برای custom widgets\n if (options.content) {\n processedOptions.content = this.processGenericContent(options);\n }\n break;\n }\n layoutNode.options = processedOptions;\n }\n /**\n * Process text-block-layout content\n */\n processTextBlockContent(options) {\n if (!options.content)\n return '';\n let content = options.content;\n // اگر قبلاً HTML tag داره، استفاده کن\n if (content.includes('<')) {\n return content;\n }\n // تبدیل plain text به HTML با styling مناسب\n if (options.type === 'heading' || options.level === 'h1' || options.level === 'h2') {\n const level = options.level || 'h2';\n return `<${level} style=\"margin: 0 0 16px 0; color: #333; font-weight: 600;\">${content}</${level}>`;\n }\n if (options.weight === 'bold' || options.bold) {\n return `<strong style=\"color: #333;\">${content}</strong>`;\n }\n // Default text styling\n return `<span style=\"color: #333; line-height: 1.5;\">${content}</span>`;\n }\n /**\n * Process grid-layout options\n */\n processGridOptions(options) {\n return {\n default: {\n columns: options.columns || 12,\n rows: options.rows || 'auto',\n gap: options.gap || '16px',\n justifyItems: options.justifyItems || 'stretch',\n alignItems: options.alignItems || 'stretch',\n autoFlow: options.autoFlow || 'row'\n }\n };\n }\n /**\n * Process spacing options\n */\n processSpacingOptions(options) {\n if (!options.spacing && !options.padding && !options.margin)\n return undefined;\n return {\n padding: options.spacing?.padding || options.padding || '0px',\n margin: options.spacing?.margin || options.margin || '0px'\n };\n }\n /**\n * Process border options\n */\n processBorderOptions(options) {\n if (!options.border && !options.borderRadius && !options.borderWidth)\n return undefined;\n return {\n radius: options.border?.radius || options.borderRadius || '0px',\n width: options.border?.width || options.borderWidth || '0px',\n color: options.border?.color || options.borderColor || '#ddd',\n style: options.border?.style || options.borderStyle || 'solid'\n };\n }\n /**\n * Process flex-layout options\n */\n processFlexOptions(options) {\n return {\n flexDirection: options.flexDirection || 'row',\n justifyContent: options.justifyContent || 'flex-start',\n alignItems: options.alignItems || 'stretch',\n gap: options.gap || '16px',\n flexWrap: options.flexWrap || 'nowrap'\n };\n }\n /**\n * Process panel-layout options\n */\n processPanelOptions(options) {\n return {\n title: options.title || '',\n collapsible: options.collapsible || false,\n collapsed: options.collapsed || false,\n padding: options.padding || '16px'\n };\n }\n /**\n * Process tag content\n */\n processTagContent(options) {\n return options.label || options.content || 'Tag';\n }\n /**\n * Process generic content\n */\n processGenericContent(options) {\n if (!options.content)\n return '';\n // اگر HTML tags داره، استفاده کن\n if (options.content.includes('<')) {\n return options.content;\n }\n // Plain text با basic styling\n return `<span style=\"color: #333;\">${options.content}</span>`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: AXPLayoutBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: AXPLayoutBuilderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: AXPLayoutBuilderService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//#region ---- Layout Builder Implementation ----\nclass LayoutBuilder {\n constructor() {\n this.state = {\n nodes: [],\n mode: 'edit',\n direction: 'vertical',\n look: 'normal',\n layoutConfig: {\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 8 },\n lg: { colSpan: 6 },\n xl: { colSpan: 5 },\n xxl: { colSpan: 4 },\n },\n },\n };\n }\n widget(name, delegate) {\n const widgetBuilder = new WidgetBuilder(name);\n if (delegate) {\n delegate(widgetBuilder);\n }\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n layout(config) {\n this.state.layoutConfig = { ...this.state.layoutConfig, ...config };\n return this;\n }\n mode(mode) {\n this.state.mode = mode;\n return this;\n }\n direction(direction) {\n this.state.direction = direction;\n return this;\n }\n look(look) {\n this.state.look = look;\n return this;\n }\n // Predefined layout containers at root level - delegate pattern required\n grid(delegate) {\n const container = new GridContainerBuilder();\n if (delegate) {\n delegate(container);\n }\n this.state.nodes.push(container.build());\n return this;\n }\n flex(delegate) {\n const container = new FlexContainerBuilder();\n if (delegate) {\n delegate(container);\n }\n this.state.nodes.push(container.build());\n return this;\n }\n panel(delegate) {\n const container = new PanelContainerBuilder();\n if (delegate) {\n delegate(container);\n }\n this.state.nodes.push(container.build());\n return this;\n }\n page(delegate) {\n const container = new PageContainerBuilder();\n if (delegate) {\n delegate(container);\n }\n this.state.nodes.push(container.build());\n return this;\n }\n tabset(delegate) {\n const container = new TabsetContainerBuilder();\n if (delegate) {\n delegate(container);\n }\n this.state.nodes.push(container.build());\n return this;\n }\n // Direct widget methods at root level\n textBox(options) {\n const widgetBuilder = new WidgetBuilder().textBox(options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n largeTextBox(options) {\n const widgetBuilder = new WidgetBuilder().largeTextBox(options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n richText(options) {\n const widgetBuilder = new WidgetBuilder().richText(options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n passwordBox(options) {\n const widgetBuilder = new WidgetBuilder().passwordBox(options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n numberBox(options) {\n const widgetBuilder = new WidgetBuilder().numberBox(options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n selectBox(options) {\n const widgetBuilder = new WidgetBuilder().selectBox(options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n lookupBox(options) {\n const widgetBuilder = new WidgetBuilder().lookupBox(options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n selectionList(options) {\n const widgetBuilder = new WidgetBuilder().selectionList(options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n dateTimeBox(options) {\n const widgetBuilder = new WidgetBuilder().dateTimeBox(options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n toggleSwitch(options) {\n const widgetBuilder = new WidgetBuilder().toggleSwitch(options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n colorBox(options) {\n const widgetBuilder = new WidgetBuilder().colorBox(options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n customWidget(type, options) {\n const widgetBuilder = new WidgetBuilder().customWidget(type, options);\n this.state.nodes.push(widgetBuilder.build());\n return this;\n }\n build() {\n return {\n nodes: this.state.nodes,\n mode: this.state.mode,\n direction: this.state.direction,\n look: this.state.look,\n layoutConfig: this.state.layoutConfig,\n };\n }\n render() {\n console.log('render() called, state:', JSON.parse(JSON.stringify(this.state)));\n if (!this.state.nodes || !Array.isArray(this.state.nodes)) {\n console.error('Invalid nodes in state:', this.state.nodes);\n return {};\n }\n try {\n const nodes = this.transformToWidgetNodes(this.state.nodes);\n console.log('render() transformed nodes:', JSON.parse(JSON.stringify(nodes)));\n // No nodes\n if (!nodes || nodes.length === 0) {\n return {};\n }\n // Single node → return directly\n if (nodes.length === 1) {\n return nodes[0];\n }\n // Multiple nodes → wrap in a container node with layout config\n const flexDirection = this.state.direction === 'horizontal' ? 'row' : 'column';\n const container = {\n type: 'flex-layout',\n name: 'root',\n options: {\n flexDirection,\n gap: '16px',\n },\n children: nodes,\n };\n return container;\n }\n catch (error) {\n console.error('Error in render():', error);\n return {};\n }\n }\n transformToWidgetNodes(nodes) {\n console.log('transformToWidgetNodes called with nodes:', nodes);\n const sorted = this.sortNodes(nodes);\n // Helper to compute flex-item options from grid layout positions\n const toFlexItemOptions = (layout, order) => {\n let colSpan;\n const positions = layout?.positions ?? this.state.layoutConfig?.positions;\n if (positions) {\n colSpan = positions.xxl?.colSpan || positions.xl?.colSpan || positions.lg?.colSpan || positions.md?.colSpan || positions.sm?.colSpan;\n }\n const basis = colSpan && colSpan > 0 && colSpan <= 12 ? `${(colSpan / 12) * 100}%` : undefined;\n const opt = {};\n if (basis)\n opt.basis = basis;\n if (order !== undefined)\n opt.order = typeof order === 'number' ? order : parseInt(order.toString());\n return opt;\n };\n const multipleSiblings = sorted.length > 1;\n return sorted.map((node) => {\n console.log('Processing node:', node);\n // Build the actual widget node\n const widget = {\n type: node.widget?.type || 'unknown',\n name: node.id,\n options: {\n ...node.widget?.options,\n mode: node.mode,\n visible: node.visible,\n disabled: node.disabled,\n readonly: node.readonly,\n },\n };\n if (node.children && node.children.length > 0) {\n widget.children = this.transformToWidgetNodes(this.sortNodes(node.children));\n }\n // If we have multiple siblings at this level, wrap each item in a flex-item container\n if (multipleSiblings) {\n const flexItemOptions = toFlexItemOptions(node.layout, node.order);\n const wrapped = {\n type: 'flex-item-layout',\n name: `${node.id || 'item'}-container`,\n options: {\n ...flexItemOptions,\n },\n children: [widget],\n };\n return wrapped;\n }\n return widget;\n });\n }\n sortNodes(nodes) {\n if (!Array.isArray(nodes))\n return [];\n return nodes\n .map((n, idx) => ({ n, idx }))\n .sort((a, b) => {\n const ao = a.n.order;\n const bo = b.n.order;\n const aHas = ao !== undefined && ao !== null;\n const bHas = bo !== undefined && bo !== null;\n if (aHas && bHas) {\n if (typeof ao === 'number' && typeof bo === 'number')\n return ao - bo;\n return String(ao).localeCompare(String(bo));\n }\n if (aHas && !bHas)\n return -1;\n if (!aHas && bHas)\n return 1;\n return a.idx - b.idx;\n })\n .map(x => x.n);\n }\n}\n//#endregion\n//#region ---- Container Builder Implementation ----\n// Base Container Builder\nclass BaseContainerBuilder {\n constructor(containerType) {\n this.containerState = {\n type: 'widget',\n children: [],\n };\n this.containerState.widget = { type: containerType, options: {} };\n }\n baseId(id) {\n this.containerState.id = id;\n return this;\n }\n baseLayout(value) {\n if (typeof value === 'number') {\n this.containerState.layout = {\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 12 },\n lg: { colSpan: value },\n xl: { colSpan: value },\n xxl: { colSpan: value },\n },\n };\n }\n else {\n this.containerState.layout = value;\n }\n return this;\n }\n // Base methods shared by all containers\n ensureChildren() {\n this.containerState.children = this.containerState.children || [];\n }\n addDirectWidget(type, options) {\n const child = new WidgetBuilder();\n child.customWidget(type, options);\n this.ensureChildren();\n this.containerState.children.push(child.build());\n return this;\n }\n build() {\n return {\n id: this.containerState.id,\n name: this.containerState.name,\n widget: this.containerState.widget,\n children: this.containerState.children,\n layout: this.containerState.layout,\n mode: this.containerState.mode,\n order: this.containerState.order,\n visible: this.containerState.visible,\n disabled: this.containerState.disabled,\n readonly: this.containerState.readonly,\n };\n }\n}\n// Flex Container Builder\nclass FlexContainerBuilder extends BaseContainerBuilder {\n constructor() {\n super('flex-layout');\n }\n id(id) {\n return this.baseId(id);\n }\n layout(value) {\n return this.baseLayout(value);\n }\n mode(mode) {\n this.containerState.mode = mode;\n return this;\n }\n order(value) {\n this.containerState.order = value;\n return this;\n }\n visible(condition) {\n this.containerState.visible = condition;\n return this;\n }\n disabled(condition) {\n this.containerState.disabled = condition;\n return this;\n }\n readonly(condition) {\n this.containerState.readonly = condition;\n return this;\n }\n setOptions(options) {\n this.containerState.widget.options = { ...this.containerState.widget.options, ...options };\n return this;\n }\n // Individual fluent methods for Flex\n setFlexDirection(direction) {\n return this.setOptions({ flexDirection: direction });\n }\n setFlexWrap(wrap) {\n return this.setOptions({ flexWrap: wrap });\n }\n setJustifyContent(justify) {\n return this.setOptions({ justifyContent: justify });\n }\n setAlignItems(align) {\n return this.setOptions({ alignItems: align });\n }\n setGap(gap) {\n return this.setOptions({ gap });\n }\n setBackgroundColor(color) {\n return this.setOptions({ backgroundColor: color });\n }\n setPadding(padding) {\n return this.setOptions({ spacing: { padding } });\n }\n setMargin(margin) {\n return this.setOptions({ spacing: { margin } });\n }\n addContainer(name, delegate) {\n // Implementation will be simplified for now\n return this;\n }\n addWidget(name, delegate) {\n const childWidget = new WidgetBuilder(name);\n if (delegate) {\n delegate(childWidget);\n }\n this.ensureChildren();\n this.containerState.children.push(childWidget.build());\n return this;\n }\n textBox(options) {\n return this.addDirectWidget('text-editor', options);\n }\n largeTextBox(options) {\n return this.addDirectWidget('large-text-editor', options);\n }\n richText(options) {\n return this.addDirectWidget('rich-text-editor', options);\n }\n passwordBox(options) {\n return this.addDirectWidget('password-editor', options);\n }\n numberBox(options) {\n return this.addDirectWidget('number-editor', options);\n }\n selectBox(options) {\n return this.addDirectWidget('select-editor', options);\n }\n lookupBox(options) {\n return this.addDirectWidget('lookup-editor', options);\n }\n selectionList(options) {\n return this.addDirectWidget('selection-list', options);\n }\n dateTimeBox(options) {\n return this.addDirectWidget('date-time-editor', options);\n }\n toggleSwitch(options) {\n return this.addDirectWidget('toggle-editor', options);\n }\n colorBox(options) {\n return this.addDirectWidget('color-editor', options);\n }\n customWidget(type, options) {\n return this.addDirectWidget(type, options);\n }\n}\n// Grid Container Builder\nclass GridContainerBuilder extends BaseContainerBuilder {\n constructor() {\n super('grid-layout');\n }\n id(id) { return this.baseId(id); }\n layout(value) { return this.baseLayout(value); }\n mode(mode) { this.containerState.mode = mode; return this; }\n order(value) { this.containerState.order = value; return this; }\n visible(condition) { this.containerState.visible = condition; return this; }\n disabled(condition) { this.containerState.disabled = condition; return this; }\n readonly(condition) { this.containerState.readonly = condition; return this; }\n setOptions(options) {\n this.containerState.widget.options = { ...this.containerState.widget.options, ...options };\n return this;\n }\n // Individual fluent methods for Grid\n setColumns(columns) {\n return this.setOptions({ grid: { default: { columns } } });\n }\n setRows(rows) {\n return this.setOptions({ grid: { default: { rows } } });\n }\n setGap(gap) {\n return this.setOptions({ grid: { default: { gap } } });\n }\n setJustifyItems(justify) {\n return this.setOptions({ grid: { default: { justifyItems: justify } } });\n }\n setAlignItems(align) {\n return this.setOptions({ grid: { default: { alignItems: align } } });\n }\n setAutoFlow(flow) {\n return this.setOptions({ grid: { default: { autoFlow: flow } } });\n }\n setBackgroundColor(color) {\n return this.setOptions({ backgroundColor: color });\n }\n setPadding(padding) {\n return this.setOptions({ spacing: { padding } });\n }\n setMargin(margin) {\n return this.setOptions({ spacing: { margin } });\n }\n addContainer(name, delegate) { return this; }\n addWidget(name, delegate) {\n const childWidget = new WidgetBuilder(name);\n if (delegate)\n delegate(childWidget);\n this.ensureChildren();\n this.containerState.children.push(childWidget.build());\n return this;\n }\n textBox(options) { return this.addDirectWidget('text-editor', options); }\n largeTextBox(options) { return this.addDirectWidget('large-text-editor', options); }\n richText(options) { return this.addDirectWidget('rich-text-editor', options); }\n passwordBox(options) { return this.addDirectWidget('password-editor', options); }\n numberBox(options) { return this.addDirectWidget('number-editor', options); }\n selectBox(options) { return this.addDirectWidget('select-editor', options); }\n lookupBox(options) { return this.addDirectWidget('lookup-editor', options); }\n selectionList(options) { return this.addDirectWidget('selection-list', options); }\n dateTimeBox(options) { return this.addDirectWidget('date-time-editor', options); }\n toggleSwitch(options) { return this.addDirectWidget('toggle-editor', options); }\n colorBox(options) { return this.addDirectWidget('color-editor', options); }\n customWidget(type, options) { return this.addDirectWidget(type, options); }\n}\n// Panel Container Builder\nclass PanelContainerBuilder extends BaseContainerBuilder {\n constructor() {\n super('panel-layout');\n }\n id(id) { return this.baseId(id); }\n layout(value) { return this.baseLayout(value); }\n mode(mode) { this.containerState.mode = mode; return this; }\n order(value) { this.containerState.order = value; return this; }\n visible(condition) { this.containerState.visible = condition; return this; }\n disabled(condition) { this.containerState.disabled = condition; return this; }\n readonly(condition) { this.containerState.readonly = condition; return this; }\n setOptions(options) {\n this.containerState.widget.options = { ...this.containerState.widget.options, ...options };\n return this;\n }\n // Individual fluent methods for Panel\n setCaption(caption) {\n return this.setOptions({ caption });\n }\n setIcon(icon) {\n return this.setOptions({ icon });\n }\n setLook(look) {\n return this.setOptions({ look });\n }\n setShowHeader(show) {\n return this.setOptions({ showHeader: show });\n }\n setCollapsed(collapsed) {\n return this.setOptions({ collapsed });\n }\n addContainer(name, delegate) { return this; }\n addWidget(name, delegate) {\n const childWidget = new WidgetBuilder(name);\n if (delegate)\n delegate(childWidget);\n this.ensureChildren();\n this.containerState.children.push(childWidget.build());\n return this;\n }\n textBox(options) { return this.addDirectWidget('text-editor', options); }\n largeTextBox(options) { return this.addDirectWidget('large-text-editor', options); }\n richText(options) { return this.addDirectWidget('rich-text-editor', options); }\n passwordBox(options) { return this.addDirectWidget('password-editor', options); }\n numberBox(options) { return this.addDirectWidget('number-editor', options); }\n selectBox(options) { return this.addDirectWidget('select-editor', options); }\n lookupBox(options) { return this.addDirectWidget('lookup-editor', options); }\n selectionList(options) { return this.addDirectWidget('selection-list', options); }\n dateTimeBox(options) { return this.addDirectWidget('date-time-editor', options); }\n toggleSwitch(options) { return this.addDirectWidget('toggle-editor', options); }\n colorBox(options) { return this.addDirectWidget('color-editor', options); }\n customWidget(type, options) { return this.addDirectWidget(type, options); }\n}\n// Page Container Builder\nclass PageContainerBuilder extends BaseContainerBuilder {\n constructor() {\n super('page-layout');\n }\n id(id) { return this.baseId(id); }\n layout(value) { return this.baseLayout(value); }\n mode(mode) { this.containerState.mode = mode; return this; }\n order(value) { this.containerState.order = value; return this; }\n visible(condition) { this.containerState.visible = condition; return this; }\n disabled(condition) { this.containerState.disabled = condition; return this; }\n readonly(condition) { this.containerState.readonly = condition; return this; }\n setOptions(options) {\n this.containerState.widget.options = { ...this.containerState.widget.options, ...options };\n return this;\n }\n // Individual fluent methods for Page\n setBackgroundColor(color) {\n return this.setOptions({ backgroundColor: color });\n }\n setTheme(theme) {\n return this.setOptions({ theme });\n }\n setHasHeader(hasHeader) {\n return this.setOptions({ hasHeader });\n }\n setHasFooter(hasFooter) {\n return this.setOptions({ hasFooter });\n }\n setDirection(direction) {\n return this.setOptions({ direction });\n }\n addContainer(name, delegate) { return this; }\n addWidget(name, delegate) {\n const childWidget = new WidgetBuilder(name);\n if (delegate)\n delegate(childWidget);\n this.ensureChildren();\n this.containerState.children.push(childWidget.build());\n return this;\n }\n textBox(options) { return this.addDirectWidget('text-editor', options); }\n largeTextBox(options) { return this.addDirectWidget('large-text-editor', options); }\n richText(options) { return this.addDirectWidget('rich-text-editor', options); }\n passwordBox(options) { return this.addDirectWidget('password-editor', options); }\n numberBox(options) { return this.addDirectWidget('number-editor', options); }\n selectBox(options) { return this.addDirectWidget('select-editor', options); }\n lookupBox(options) { return this.addDirectWidget('lookup-editor', options); }\n selectionList(options) { return this.addDirectWidget('selection-list', options); }\n dateTimeBox(options) { return this.addDirectWidget('date-time-editor', options); }\n toggleSwitch(options) { return this.addDirectWidget('toggle-editor', options); }\n colorBox(options) { return this.addDirectWidget('color-editor', options); }\n customWidget(type, options) { return this.addDirectWidget(type, options); }\n}\n// Tabset Container Builder\nclass TabsetContainerBuilder extends BaseContainerBuilder {\n constructor() {\n super('tabset-layout');\n }\n id(id) { return this.baseId(id); }\n layout(value) { return this.baseLayout(value); }\n mode(mode) { this.containerState.mode = mode; return this; }\n order(value) { this.containerState.order = value; return this; }\n visible(condition) { this.containerState.visible = condition; return this; }\n disabled(condition) { this.containerState.disabled = condition; return this; }\n readonly(condition) { this.containerState.readonly = condition; return this; }\n setOptions(options) {\n this.containerState.widget.options = { ...this.containerState.widget.options, ...options };\n return this;\n }\n // Individual fluent methods for Tabset\n setLook(look) {\n return this.setOptions({ look });\n }\n setOrientation(orientation) {\n return this.setOptions({ orientation });\n }\n setActiveIndex(index) {\n return this.setOptions({ activeIndex: index });\n }\n addContainer(name, delegate) { return this; }\n addWidget(name, delegate) {\n const childWidget = new WidgetBuilder(name);\n if (delegate)\n delegate(childWidget);\n this.ensureChildren();\n this.containerState.children.push(childWidget.build());\n return this;\n }\n textBox(options) { return this.addDirectWidget('text-editor', options); }\n largeTextBox(options) { return this.addDirectWidget('large-text-editor', options); }\n richText(options) { return this.addDirectWidget('rich-text-editor', options); }\n passwordBox(options) { return this.addDirectWidget('password-editor', options); }\n numberBox(options) { return this.addDirectWidget('number-editor', options); }\n selectBox(options) { return this.addDirectWidget('select-editor', options); }\n lookupBox(options) { return this.addDirectWidget('lookup-editor', options); }\n selectionList(options) { return this.addDirectWidget('selection-list', options); }\n dateTimeBox(options) { return this.addDirectWidget('date-time-editor', options); }\n toggleSwitch(options) { return this.addDirectWidget('toggle-editor', options); }\n colorBox(options) { return this.addDirectWidget('color-editor', options); }\n customWidget(type, options) { return this.addDirectWidget(type, options); }\n}\n//#endregion\n//#region ---- Widget Builder Implementation ----\nclass WidgetBuilder {\n constructor(name) {\n this.widgetState = {\n type: 'widget',\n children: [],\n };\n if (name) {\n this.widgetState.name = name;\n }\n }\n // No utility methods needed - widget options are pure now\n isContainerWidgetType(type) {\n if (!type)\n return false;\n return ['grid-layout', 'flex-layout', 'panel-layout', 'page-layout', 'tabset-layout'].includes(type);\n }\n id(id) {\n this.widgetState.id = id;\n return this;\n }\n layout(value) {\n if (typeof value === 'number') {\n this.widgetState.layout = {\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 12 },\n lg: { colSpan: value },\n xl: { colSpan: value },\n xxl: { colSpan: value },\n }\n };\n }\n else {\n this.widgetState.layout = value;\n }\n return this;\n }\n mode(mode) {\n this.widgetState.mode = mode;\n return this;\n }\n visible(condition) {\n this.widgetState.visible = condition;\n return this;\n }\n disabled(condition) {\n this.widgetState.disabled = condition;\n return this;\n }\n readonly(condition) {\n this.widgetState.readonly = condition;\n return this;\n }\n order(value) {\n this.widgetState.order = value;\n return this;\n }\n // Container helpers - delegate pattern required\n grid(delegate) {\n const container = new GridContainerBuilder();\n if (delegate) {\n delegate(container);\n }\n const built = container.build();\n this.widgetState.widget = built.widget;\n this.widgetState.children = built.children;\n return this;\n }\n flex(delegate) {\n const container = new FlexContainerBuilder();\n if (delegate) {\n delegate(container);\n }\n const built = container.build();\n this.widgetState.widget = built.widget;\n this.widgetState.children = built.children;\n return this;\n }\n panel(delegate) {\n const container = new PanelContainerBuilder();\n if (delegate) {\n delegate(container);\n }\n const built = container.build();\n this.widgetState.widget = built.widget;\n this.widgetState.children = built.children;\n return this;\n }\n page(delegate) {\n const container = new PageContainerBuilder();\n if (delegate) {\n delegate(container);\n }\n const built = container.build();\n this.widgetState.widget = built.widget;\n this.widgetState.children = built.children;\n return this;\n }\n tabset(delegate) {\n const container = new TabsetContainerBuilder();\n if (delegate) {\n delegate(container);\n }\n const built = container.build();\n this.widgetState.widget = built.widget;\n this.widgetState.children = built.children;\n return this;\n }\n widget(name, delegate) {\n const child = new WidgetBuilder(name);\n if (delegate) {\n delegate(child);\n }\n this.widgetState.children = this.widgetState.children || [];\n this.widgetState.children.push(child.build());\n return this;\n }\n // Widget type methods\n textBox(options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.textBox(options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type: 'text-editor',\n options,\n };\n return this;\n }\n }\n largeTextBox(options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.largeTextBox(options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type: 'large-text-editor',\n options,\n };\n return this;\n }\n }\n richText(options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.richText(options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type: 'rich-text-editor',\n options,\n };\n return this;\n }\n }\n passwordBox(options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.passwordBox(options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type: 'password-editor',\n options,\n };\n return this;\n }\n }\n numberBox(options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.numberBox(options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type: 'number-editor',\n options,\n };\n return this;\n }\n }\n selectBox(options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.selectBox(options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type: 'select-editor',\n options,\n };\n return this;\n }\n }\n lookupBox(options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.lookupBox(options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type: 'lookup-editor',\n options,\n };\n return this;\n }\n }\n selectionList(options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.selectionList(options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type: 'selection-list',\n options,\n };\n return this;\n }\n }\n dateTimeBox(options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.dateTimeBox(options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type: 'date-time-editor',\n options,\n };\n return this;\n }\n }\n toggleSwitch(options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.toggleSwitch(options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type: 'toggle-editor',\n options,\n };\n return this;\n }\n }\n colorBox(options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.colorBox(options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type: 'color-editor',\n options,\n };\n return this;\n }\n }\n customWidget(type, options) {\n if (this.isContainerWidgetType(this.widgetState.widget?.type)) {\n const child = new WidgetBuilder();\n child.customWidget(type, options);\n this.widgetState.children.push(child.build());\n return this;\n }\n else {\n this.widgetState.widget = {\n type,\n options: options,\n };\n return this;\n }\n }\n build() {\n return {\n id: this.widgetState.id,\n name: this.widgetState.name,\n widget: this.widgetState.widget,\n children: this.widgetState.children,\n layout: this.widgetState.layout,\n mode: this.widgetState.mode,\n order: this.widgetState.order,\n visible: this.widgetState.visible,\n disabled: this.widgetState.disabled,\n readonly: this.widgetState.readonly,\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9sYXlvdXQtYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBNEMzQyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsdUJBQXVCLENBQUMsVUFBK0I7UUFJckQsTUFBTSxnQkFBZ0IsR0FBcUI7WUFDekMsS0FBSyxFQUFFLEVBQUU7WUFDVCxNQUFNLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUMvRixDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFFcEIsc0NBQXNDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBNEMsRUFBVSxFQUFFO1lBQzFFLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUM7UUFFRixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FB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QyxNQUFNO1lBQy9CLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7WUFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSztZQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTtTQUNwQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQR3JpZExheW91dE9wdGlvbnMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhQTGF5b3V0RGVmaW5pdGlvbixcbiAgQVhQTGF5b3V0RGlyZWN0aW9uLFxuICBBWFBMYXlvdXRMb29rLFxuICBBWFBMYXlvdXRNb2RlLFxuICBBWFBMYXlvdXROb2RlRGVmaW5pdGlvbixcbiAgQ29sb3JCb3hPcHRpb25zLFxuICBEYXRlVGltZUJveE9wdGlvbnMsXG4gIElMYXlvdXRCdWlsZGVyLFxuICBJV2lkZ2V0QnVpbGRlcixcbiAgSUdyaWRDb250YWluZXJCdWlsZGVyLFxuICBJRmxleENvbnRhaW5lckJ1aWxkZXIsXG4gIElQYW5lbENvbnRhaW5lckJ1aWxkZXIsXG4gIElQYWdlQ29udGFpbmVyQnVpbGRlcixcbiAgSVRhYnNldENvbnRhaW5lckJ1aWxkZXIsXG4gIExhcmdlVGV4dEJveE9wdGlvbnMsXG4gIExheW91dEJ1aWxkZXJTdGF0ZSxcbiAgTnVtYmVyQm94T3B0aW9ucyxcbiAgTG9va3VwQm94T3B0aW9ucyxcbiAgU2VsZWN0aW9uTGlzdE9wdGlvbnMsXG4gIFJpY2hUZXh0T3B0aW9ucyxcbiAgUGFzc3dvcmRCb3hPcHRpb25zLFxuICBTZWxlY3RCb3hPcHRpb25zLFxuICBUZXh0Qm94T3B0aW9ucyxcbiAgVG9nZ2xlU3dpdGNoT3B0aW9ucyxcbiAgV2lkZ2V0QnVpbGRlclN0YXRlLFxuICAvLyBDb250YWluZXIgb3B0aW9uc1xuICBBWFBHcmlkQ29udGFpbmVyT3B0aW9ucyxcbiAgQVhQRmxleENvbnRhaW5lck9wdGlvbnMsXG4gIEFYUFBhbmVsQ29udGFpbmVyT3B0aW9ucyxcbiAgQVhQUGFnZUNvbnRhaW5lck9wdGlvbnMsXG4gIEFYUFRhYnNldENvbnRhaW5lck9wdGlvbnMsXG4gIC8vIExheW91dCBSZW5kZXJlciB0eXBlc1xuICBMYXlvdXREZWZpbml0aW9uLFxuICBMYXlvdXROb2RlLFxuICBOb2RlTGF5b3V0Q29uZmlnLFxufSBmcm9tICcuL2xheW91dC1idWlsZGVyLnR5cGVzJztcbmltcG9ydCB7IEFYUFdpZGdldE5vZGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBsYXlvdXQgYnVpbGRlclxuICAgKi9cbiAgY3JlYXRlKCk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IExheW91dEJ1aWxkZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IExheW91dCBCdWlsZGVyIGRlZmluaXRpb24gdG8gTGF5b3V0IFJlbmRlcmVyIGZvcm1hdFxuICAgKiDYqNinIHByb2Nlc3Npbmcg2YggY2xlYW5pbmcgb3B0aW9uc1xuICAgKi9cbiAgY29udmVydFRvTGF5b3V0UmVuZGVyZXIoZGVmaW5pdGlvbjogQVhQTGF5b3V0RGVmaW5pdGlvbik6IHtcbiAgICBsYXlvdXREZWZpbml0aW9uOiBMYXlvdXREZWZpbml0aW9uO1xuICAgIGxheW91dE5vZGVzOiBMYXlvdXROb2RlW107XG4gIH0ge1xuICAgIGNvbnN0IGxheW91dERlZmluaXRpb246IExheW91dERlZmluaXRpb24gPSB7XG4gICAgICB6b25lczoge30sXG4gICAgICBzdHlsZXM6IGRlZmluaXRpb24ubGF5b3V0Q29uZmlnID8gdGhpcy5jb252ZXJ0R3JpZExheW91dFRvU3R5bGVzKGRlZmluaXRpb24ubGF5b3V0Q29uZmlnKSA6IHt9XG4gICAgfTtcblxuICAgIGNvbnN0IGxheW91dE5vZGVzOiBMYXlvdXROb2RlW10gPSBbXTtcbiAgICBsZXQgbm9kZUNvdW50ZXIgPSAwO1xuXG4gICAgLy8gSGVscGVyOiBjb3VudCBhbGwgbm9kZXMgcmVjdXJzaXZlbHlcbiAgICBjb25zdCBjb3VudE5vZGVzID0gKG5vZGVzOiBBWFBMYXlvdXROb2RlRGVmaW5pdGlvbltdIHwgdW5kZWZpbmVkKTogbnVtYmVyID0+IHtcbiAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSByZXR1cm4gMDtcbiAgICAgIHJldHVybiBub2Rlcy5yZWR1Y2UoKGFjYywgbikgPT4gYWNjICsgMSArIGNvdW50Tm9kZXMobi5jaGlsZHJlbiksIDApO1xuICAgIH07XG5cbiAgICBjb25zdCB0b3RhbE5vZGVDb3VudCA9IGNvdW50Tm9kZXMoZGVmaW5pdGlvbi5ub2Rlcyk7XG4gICAgY29uc3QgaGFzTXVsdGlwbGVOb2RlcyA9IHRvdGFsTm9kZUNvdW50ID4gMTtcblxuICAgIC8vIFByb2Nlc3Mgbm9kZXMgcmVjdXJzaXZlbHkgLSBmbGF0dGVuIGV2ZXJ5dGhpbmcgaW50byB0aGUgc2FtZSB6b25lXG4gICAgY29uc3QgcHJvY2Vzc05vZGVzID0gKG5vZGVzOiBBWFBMYXlvdXROb2RlRGVmaW5pdGlvbltdLCBwYXJlbnRab25lOiBzdHJpbmcgPSAnbWFpbicpID0+IHtcbiAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKCFub2RlLndpZGdldCkgcmV0dXJuO1xuICAgICAgICAvLyBDcmVhdGUgbGF5b3V0IG5vZGUgZm9yIHdpZGdldFxuICAgICAgICBjb25zdCBub2RlSWQgPSBub2RlLmlkIHx8IGB3aWRnZXQtJHtub2RlQ291bnRlcisrfWA7XG4gICAgICAgIGNvbnN0IGxheW91dE5vZGU6IExheW91dE5vZGUgPSB7XG4gICAgICAgICAgaWQ6IG5vZGVJZCxcbiAgICAgICAgICB0eXBlOiBub2RlLndpZGdldC50eXBlLFxuICAgICAgICAgIHpvbmU6IHBhcmVudFpvbmUsXG4gICAgICAgICAgbW9kZTogbm9kZS5tb2RlIHx8ICdlZGl0JyxcbiAgICAgICAgICBvcHRpb25zOiBub2RlLndpZGdldC5vcHRpb25zIHx8IHt9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQ29udmVydCBsYXlvdXQgY29uZmlnIHRvIG5vZGUgbGF5b3V0XG4gICAgICAgIGlmIChub2RlLmxheW91dCkge1xuICAgICAgICAgIGxheW91dE5vZGUubGF5b3V0ID0gdGhpcy5jb252ZXJ0VG9Ob2RlTGF5b3V0KG5vZGUubGF5b3V0KTtcbiAgICAgICAgfSBlbHNlIGlmIChoYXNNdWx0aXBsZU5vZGVzICYmIGRlZmluaXRpb24ubGF5b3V0Q29uZmlnKSB7XG4gICAgICAgICAgLy8gQXBwbHkgZGVmYXVsdCBsYXlvdXQgZm9yIG11bHRpLW5vZGUgc3RydWN0dXJlcyB3aGVuIG5vZGUgaGFzIG5vIGV4cGxpY2l0IGxheW91dFxuICAgICAgICAgIGxheW91dE5vZGUubGF5b3V0ID0gdGhpcy5jb252ZXJ0VG9Ob2RlTGF5b3V0KGRlZmluaXRpb24ubGF5b3V0Q29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCBvcmRlciBpZiBzcGVjaWZpZWRcbiAgICAgICAgaWYgKG5vZGUub3JkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICghbGF5b3V0Tm9kZS5sYXlvdXQpIGxheW91dE5vZGUubGF5b3V0ID0ge307XG4gICAgICAgICAgbGF5b3V0Tm9kZS5sYXlvdXQub3JkZXIgPSB0eXBlb2Ygbm9kZS5vcmRlciA9PT0gJ251bWJlcicgPyBub2RlLm9yZGVyIDogcGFyc2VJbnQobm9kZS5vcmRlci50b1N0cmluZygpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3Mgd2lkZ2V0IG9wdGlvbnMgYW5kIGNvbnRlbnRcbiAgICAgICAgdGhpcy5wcm9jZXNzV2lkZ2V0T3B0aW9ucyhsYXlvdXROb2RlLCBub2RlKTtcblxuICAgICAgICBsYXlvdXROb2Rlcy5wdXNoKGxheW91dE5vZGUpO1xuXG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGFkZCBjaGlsZHJlbiBpbnRvIHRoZSBzYW1lIHpvbmUgKGZsYXQpXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHByb2Nlc3NOb2Rlcyhub2RlLmNoaWxkcmVuLCBwYXJlbnRab25lKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSB6b25lcyBpbiBvcmRlciBhbmQgYXNzaWduIGF1dG8tb3JkZXIgdG8gbm9kZXMgKHJlY3Vyc2l2ZWx5KVxuICAgIGxldCBub2RlT3JkZXIgPSAxO1xuICAgIGNvbnN0IGFzc2lnbk9yZGVyID0gKG5vZGVzOiBBWFBMYXlvdXROb2RlRGVmaW5pdGlvbltdIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICBpZiAoIW5vZGVzKSByZXR1cm47XG4gICAgICBub2Rlcy5mb3JFYWNoKG4gPT4ge1xuICAgICAgICBpZiAobi5vcmRlciA9PT0gdW5kZWZpbmVkIHx8IG4ub3JkZXIgPT09IG51bGwpIHtcbiAgICAgICAgICBuLm9yZGVyID0gbm9kZU9yZGVyKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4uY2hpbGRyZW4gJiYgbi5jaGlsZHJlbi5sZW5ndGggPiAwKSBhc3NpZ25PcmRlcihuLmNoaWxkcmVuKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgYXNzaWduT3JkZXIoZGVmaW5pdGlvbi5ub2Rlcyk7XG4gICAgXG4gICAgLy8gQWx3YXlzIGNyZWF0ZSBhIGRlZmF1bHQgbWFpbiB6b25lIHdoZW4gdGhlcmUgYXJlIG5vZGVzXG4gICAgaWYgKHRvdGFsTm9kZUNvdW50ID4gMCkge1xuICAgICAgbGF5b3V0RGVmaW5pdGlvbi56b25lc1snbWFpbiddID0ge1xuICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICB0eXBlOiAnZmxleCcsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogZGVmaW5pdGlvbi5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICdyb3cnIDogJ2NvbHVtbicsXG4gICAgICAgICAgZ2FwOiAnMTZweCdcbiAgICAgICAgfSxcbiAgICAgICAgb3JkZXI6IDAgLy8gTWFpbiB6b25lIGdldHMgb3JkZXIgMCAoZmlyc3QpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb2Nlc3NOb2RlcyhkZWZpbml0aW9uLm5vZGVzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYXlvdXREZWZpbml0aW9uLFxuICAgICAgbGF5b3V0Tm9kZXNcbiAgICB9O1xuICB9XG5cbiAgLy8gUmVtb3ZlZCBjb250YWluZXIgbWFwcGluZyBoZWxwZXJzIC0gYWxsIG5vZGVzIGFyZSB0cmVhdGVkIHVuaWZvcm1seVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGdyaWQgbGF5b3V0IG9wdGlvbnMgdG8gQ1NTIHN0eWxlc1xuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0R3JpZExheW91dFRvU3R5bGVzKGxheW91dDogQVhQR3JpZExheW91dE9wdGlvbnMpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBzdHlsZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBcbiAgICAvLyBIYW5kbGUgcmVzcG9uc2l2ZSBwb3NpdGlvbnNcbiAgICBpZiAobGF5b3V0LnBvc2l0aW9ucykge1xuICAgICAgLy8gVXNlIGxhcmdlc3QgYnJlYWtwb2ludCBmb3IgYmFzZSBzdHlsZXNcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gbGF5b3V0LnBvc2l0aW9ucy54eGwgfHwgbGF5b3V0LnBvc2l0aW9ucy54bCB8fCBsYXlvdXQucG9zaXRpb25zLmxnIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQucG9zaXRpb25zLm1kIHx8IGxheW91dC5wb3NpdGlvbnMuc207XG4gICAgICBcbiAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICBpZiAocG9zaXRpb24uY29sU3BhbiAmJiBwb3NpdGlvbi5jb2xTcGFuIDwgMTIpIHtcbiAgICAgICAgICBzdHlsZXNbJ3dpZHRoJ10gPSBgJHsocG9zaXRpb24uY29sU3BhbiAvIDEyKSAqIDEwMH0lYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBncmlkIGxheW91dCB0byBub2RlIGxheW91dCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRUb05vZGVMYXlvdXQobGF5b3V0OiBBWFBHcmlkTGF5b3V0T3B0aW9ucyk6IE5vZGVMYXlvdXRDb25maWcge1xuICAgIGNvbnN0IG5vZGVMYXlvdXQ6IE5vZGVMYXlvdXRDb25maWcgPSB7fTtcbiAgICBcbiAgICBpZiAobGF5b3V0LnBvc2l0aW9ucykge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSBsYXlvdXQucG9zaXRpb25zLnh4bCB8fCBsYXlvdXQucG9zaXRpb25zLnhsIHx8IGxheW91dC5wb3NpdGlvbnMubGcgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgIGxheW91dC5wb3NpdGlvbnMubWQgfHwgbGF5b3V0LnBvc2l0aW9ucy5zbTtcbiAgICAgIFxuICAgICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICAgIGlmIChwb3NpdGlvbi5jb2xTcGFuICYmIHBvc2l0aW9uLmNvbFNwYW4gPCAxMikge1xuICAgICAgICAgIG5vZGVMYXlvdXQuZmxleCA9IGAwIDAgJHsocG9zaXRpb24uY29sU3BhbiAvIDEyKSAqIDEwMH0lYDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKHBvc2l0aW9uLnJvd1NwYW4gJiYgcG9zaXRpb24ucm93U3BhbiA+IDEpIHtcbiAgICAgICAgICBub2RlTGF5b3V0LmdyaWRBcmVhID0gYHNwYW4gJHtwb3NpdGlvbi5yb3dTcGFufWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZUxheW91dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIHdpZGdldCBvcHRpb25zIGJhc2VkIG9uIGFjdHVhbCB3aWRnZXQgY29uZmlndXJhdGlvbnNcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1dpZGdldE9wdGlvbnMobGF5b3V0Tm9kZTogTGF5b3V0Tm9kZSwgc291cmNlTm9kZTogQVhQTGF5b3V0Tm9kZURlZmluaXRpb24pIHtcbiAgICBpZiAoIXNvdXJjZU5vZGUud2lkZ2V0Py5vcHRpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBvcHRpb25zID0gc291cmNlTm9kZS53aWRnZXQub3B0aW9ucztcbiAgICBjb25zdCBwcm9jZXNzZWRPcHRpb25zOiBhbnkgPSB7IC4uLm9wdGlvbnMgfTtcblxuICAgIC8vIFByb2Nlc3MgYmFzZWQgb24gYWN0dWFsIHdpZGdldCB0eXBlXG4gICAgc3dpdGNoIChzb3VyY2VOb2RlLndpZGdldC50eXBlKSB7XG4gICAgICBjYXNlICd0ZXh0LWJsb2NrLWxheW91dCc6XG4gICAgICAgIC8vIFRleHQgQmxvY2sgV2lkZ2V0IC0g2YHZgti3IGNvbnRlbnRcbiAgICAgICAgcHJvY2Vzc2VkT3B0aW9ucy5jb250ZW50ID0gdGhpcy5wcm9jZXNzVGV4dEJsb2NrQ29udGVudChvcHRpb25zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAgIFxuICAgICAgY2FzZSAnZ3JpZC1sYXlvdXQnOlxuICAgICAgICAvLyBHcmlkIExheW91dCBXaWRnZXQgLSBjb21wbGV0ZSBncmlkIHN5c3RlbVxuICAgICAgICBwcm9jZXNzZWRPcHRpb25zLmdyaWQgPSB0aGlzLnByb2Nlc3NHcmlkT3B0aW9ucyhvcHRpb25zKTtcbiAgICAgICAgcHJvY2Vzc2VkT3B0aW9ucy5zcGFjaW5nID0gdGhpcy5wcm9jZXNzU3BhY2luZ09wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIHByb2Nlc3NlZE9wdGlvbnMuYm9yZGVyID0gdGhpcy5wcm9jZXNzQm9yZGVyT3B0aW9ucyhvcHRpb25zKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuYmFja2dyb3VuZENvbG9yKSBwcm9jZXNzZWRPcHRpb25zLmJhY2tncm91bmRDb2xvciA9IG9wdGlvbnMuYmFja2dyb3VuZENvbG9yO1xuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICBjYXNlICdmbGV4LWxheW91dCc6XG4gICAgICAgIC8vIEZsZXggTGF5b3V0IFdpZGdldFxuICAgICAgICBwcm9jZXNzZWRPcHRpb25zLmZsZXggPSB0aGlzLnByb2Nlc3NGbGV4T3B0aW9ucyhvcHRpb25zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAgIFxuICAgICAgY2FzZSAncGFuZWwtbGF5b3V0JzpcbiAgICAgICAgLy8gUGFuZWwgTGF5b3V0IFdpZGdldFxuICAgICAgICBwcm9jZXNzZWRPcHRpb25zLnBhbmVsID0gdGhpcy5wcm9jZXNzUGFuZWxPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICAvLyBUYWcgV2lkZ2V0IChjdXN0b20pXG4gICAgICAgIHByb2Nlc3NlZE9wdGlvbnMubGFiZWwgPSBvcHRpb25zLmxhYmVsIHx8IG9wdGlvbnMuY29udGVudCB8fCAnVGFnJztcbiAgICAgICAgcHJvY2Vzc2VkT3B0aW9ucy50b25lID0gb3B0aW9ucy50b25lIHx8ICdwcmltYXJ5JztcbiAgICAgICAgYnJlYWs7XG4gICAgICAgIFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gR2VuZXJpYyBwcm9jZXNzaW5nINio2LHYp9uMIGN1c3RvbSB3aWRnZXRzXG4gICAgICAgIGlmIChvcHRpb25zLmNvbnRlbnQpIHtcbiAgICAgICAgICBwcm9jZXNzZWRPcHRpb25zLmNvbnRlbnQgPSB0aGlzLnByb2Nlc3NHZW5lcmljQ29udGVudChvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBsYXlvdXROb2RlLm9wdGlvbnMgPSBwcm9jZXNzZWRPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgdGV4dC1ibG9jay1sYXlvdXQgY29udGVudFxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzVGV4dEJsb2NrQ29udGVudChvcHRpb25zOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghb3B0aW9ucy5jb250ZW50KSByZXR1cm4gJyc7XG4gICAgXG4gICAgbGV0IGNvbnRlbnQgPSBvcHRpb25zLmNvbnRlbnQ7XG4gICAgXG4gICAgLy8g2Kfar9ixINmC2KjZhNin2YsgSFRNTCB0YWcg2K/Yp9ix2YfYjCDYp9iz2KrZgdin2K/ZhyDaqdmGXG4gICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoJzwnKSkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuICAgIFxuICAgIC8vINiq2KjYr9uM2YQgcGxhaW4gdGV4dCDYqNmHIEhUTUwg2KjYpyBzdHlsaW5nINmF2YbYp9iz2KhcbiAgICBpZiAob3B0aW9ucy50eXBlID09PSAnaGVhZGluZycgfHwgb3B0aW9ucy5sZXZlbCA9PT0gJ2gxJyB8fCBvcHRpb25zLmxldmVsID09PSAnaDInKSB7XG4gICAgICBjb25zdCBsZXZlbCA9IG9wdGlvbnMubGV2ZWwgfHwgJ2gyJztcbiAgICAgIHJldHVybiBgPCR7bGV2ZWx9IHN0eWxlPVwibWFyZ2luOiAwIDAgMTZweCAwOyBjb2xvcjogIzMzMzsgZm9udC13ZWlnaHQ6IDYwMDtcIj4ke2NvbnRlbnR9PC8ke2xldmVsfT5gO1xuICAgIH1cbiAgICBcbiAgICBpZiAob3B0aW9ucy53ZWlnaHQgPT09ICdib2xkJyB8fCBvcHRpb25zLmJvbGQpIHtcbiAgICAgIHJldHVybiBgPHN0cm9uZyBzdHlsZT1cImNvbG9yOiAjMzMzO1wiPiR7Y29udGVudH08L3N0cm9uZz5gO1xuICAgIH1cbiAgICBcbiAgICAvLyBEZWZhdWx0IHRleHQgc3R5bGluZ1xuICAgIHJldHVybiBgPHNwYW4gc3R5bGU9XCJjb2xvcjogIzMzMzsgbGluZS1oZWlnaHQ6IDEuNTtcIj4ke2NvbnRlbnR9PC9zcGFuPmA7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBncmlkLWxheW91dCBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NHcmlkT3B0aW9ucyhvcHRpb25zOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbHVtbnM6IG9wdGlvbnMuY29sdW1ucyB8fCAxMixcbiAgICAgICAgcm93czogb3B0aW9ucy5yb3dzIHx8ICdhdXRvJyxcbiAgICAgICAgZ2FwOiBvcHRpb25zLmdhcCB8fCAnMTZweCcsXG4gICAgICAgIGp1c3RpZnlJdGVtczogb3B0aW9ucy5qdXN0aWZ5SXRlbXMgfHwgJ3N0cmV0Y2gnLFxuICAgICAgICBhbGlnbkl0ZW1zOiBvcHRpb25zLmFsaWduSXRlbXMgfHwgJ3N0cmV0Y2gnLFxuICAgICAgICBhdXRvRmxvdzogb3B0aW9ucy5hdXRvRmxvdyB8fCAncm93J1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBzcGFjaW5nIG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1NwYWNpbmdPcHRpb25zKG9wdGlvbnM6IGFueSk6IGFueSB7XG4gICAgaWYgKCFvcHRpb25zLnNwYWNpbmcgJiYgIW9wdGlvbnMucGFkZGluZyAmJiAhb3B0aW9ucy5tYXJnaW4pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZGRpbmc6IG9wdGlvbnMuc3BhY2luZz8ucGFkZGluZyB8fCBvcHRpb25zLnBhZGRpbmcgfHwgJzBweCcsXG4gICAgICBtYXJnaW46IG9wdGlvbnMuc3BhY2luZz8ubWFyZ2luIHx8IG9wdGlvbnMubWFyZ2luIHx8ICcwcHgnXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGJvcmRlciBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NCb3JkZXJPcHRpb25zKG9wdGlvbnM6IGFueSk6IGFueSB7XG4gICAgaWYgKCFvcHRpb25zLmJvcmRlciAmJiAhb3B0aW9ucy5ib3JkZXJSYWRpdXMgJiYgIW9wdGlvbnMuYm9yZGVyV2lkdGgpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIHJhZGl1czogb3B0aW9ucy5ib3JkZXI/LnJhZGl1cyB8fCBvcHRpb25zLmJvcmRlclJhZGl1cyB8fCAnMHB4JyxcbiAgICAgIHdpZHRoOiBvcHRpb25zLmJvcmRlcj8ud2lkdGggfHwgb3B0aW9ucy5ib3JkZXJXaWR0aCB8fCAnMHB4JyxcbiAgICAgIGNvbG9yOiBvcHRpb25zLmJvcmRlcj8uY29sb3IgfHwgb3B0aW9ucy5ib3JkZXJDb2xvciB8fCAnI2RkZCcsXG4gICAgICBzdHlsZTogb3B0aW9ucy5ib3JkZXI/LnN0eWxlIHx8IG9wdGlvbnMuYm9yZGVyU3R5bGUgfHwgJ3NvbGlkJ1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBmbGV4LWxheW91dCBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NGbGV4T3B0aW9ucyhvcHRpb25zOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBmbGV4RGlyZWN0aW9uOiBvcHRpb25zLmZsZXhEaXJlY3Rpb24gfHwgJ3JvdycsXG4gICAgICBqdXN0aWZ5Q29udGVudDogb3B0aW9ucy5qdXN0aWZ5Q29udGVudCB8fCAnZmxleC1zdGFydCcsXG4gICAgICBhbGlnbkl0ZW1zOiBvcHRpb25zLmFsaWduSXRlbXMgfHwgJ3N0cmV0Y2gnLFxuICAgICAgZ2FwOiBvcHRpb25zLmdhcCB8fCAnMTZweCcsXG4gICAgICBmbGV4V3JhcDogb3B0aW9ucy5mbGV4V3JhcCB8fCAnbm93cmFwJ1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBwYW5lbC1sYXlvdXQgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzUGFuZWxPcHRpb25zKG9wdGlvbnM6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiBvcHRpb25zLnRpdGxlIHx8ICcnLFxuICAgICAgY29sbGFwc2libGU6IG9wdGlvbnMuY29sbGFwc2libGUgfHwgZmFsc2UsXG4gICAgICBjb2xsYXBzZWQ6IG9wdGlvbnMuY29sbGFwc2VkIHx8IGZhbHNlLFxuICAgICAgcGFkZGluZzogb3B0aW9ucy5wYWRkaW5nIHx8ICcxNnB4J1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyB0YWcgY29udGVudFxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzVGFnQ29udGVudChvcHRpb25zOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBvcHRpb25zLmxhYmVsIHx8IG9wdGlvbnMuY29udGVudCB8fCAnVGFnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGdlbmVyaWMgY29udGVudFxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzR2VuZXJpY0NvbnRlbnQob3B0aW9uczogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIW9wdGlvbnMuY29udGVudCkgcmV0dXJuICcnO1xuICAgIFxuICAgIC8vINin2q/YsSBIVE1MIHRhZ3Mg2K/Yp9ix2YfYjCDYp9iz2KrZgdin2K/ZhyDaqdmGXG4gICAgaWYgKG9wdGlvbnMuY29udGVudC5pbmNsdWRlcygnPCcpKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jb250ZW50O1xuICAgIH1cbiAgICBcbiAgICAvLyBQbGFpbiB0ZXh0INio2KcgYmFzaWMgc3R5bGluZ1xuICAgIHJldHVybiBgPHNwYW4gc3R5bGU9XCJjb2xvcjogIzMzMztcIj4ke29wdGlvbnMuY29udGVudH08L3NwYW4+YDtcbiAgfVxuXG59XG5cbi8vI3JlZ2lvbiAtLS0tICAgTGF5b3V0IEJ1aWxkZXIgSW1wbGVtZW50YXRpb24gICAtLS0tXG5cbmNsYXNzIExheW91dEJ1aWxkZXIgaW1wbGVtZW50cyBJTGF5b3V0QnVpbGRlciB7XG4gIHByaXZhdGUgc3RhdGU6IExheW91dEJ1aWxkZXJTdGF0ZSA9IHtcbiAgICBub2RlczogW10sXG4gICAgbW9kZTogJ2VkaXQnLFxuICAgIGRpcmVjdGlvbjogJ3ZlcnRpY2FsJyxcbiAgICBsb29rOiAnbm9ybWFsJyxcbiAgICBsYXlvdXRDb25maWc6IHtcbiAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICBzbTogeyBjb2xTcGFuOiAxMiB9LFxuICAgICAgICBtZDogeyBjb2xTcGFuOiA4IH0sXG4gICAgICAgIGxnOiB7IGNvbFNwYW46IDYgfSxcbiAgICAgICAgeGw6IHsgY29sU3BhbjogNSB9LFxuICAgICAgICB4eGw6IHsgY29sU3BhbjogNCB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIHdpZGdldChuYW1lPzogc3RyaW5nLCBkZWxlZ2F0ZT86ICh3aWRnZXQ6IElXaWRnZXRCdWlsZGVyKSA9PiB2b2lkKTogSUxheW91dEJ1aWxkZXIge1xuICAgIGNvbnN0IHdpZGdldEJ1aWxkZXIgPSBuZXcgV2lkZ2V0QnVpbGRlcihuYW1lKTtcbiAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgIGRlbGVnYXRlKHdpZGdldEJ1aWxkZXIpO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlLm5vZGVzLnB1c2god2lkZ2V0QnVpbGRlci5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxheW91dChjb25maWc6IFBhcnRpYWw8QVhQR3JpZExheW91dE9wdGlvbnM+KTogSUxheW91dEJ1aWxkZXIge1xuICAgIHRoaXMuc3RhdGUubGF5b3V0Q29uZmlnID0geyAuLi50aGlzLnN0YXRlLmxheW91dENvbmZpZywgLi4uY29uZmlnIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtb2RlKG1vZGU6IEFYUExheW91dE1vZGUpOiBJTGF5b3V0QnVpbGRlciB7XG4gICAgdGhpcy5zdGF0ZS5tb2RlID0gbW9kZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRpcmVjdGlvbihkaXJlY3Rpb246IEFYUExheW91dERpcmVjdGlvbik6IElMYXlvdXRCdWlsZGVyIHtcbiAgICB0aGlzLnN0YXRlLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxvb2sobG9vazogQVhQTGF5b3V0TG9vayk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICB0aGlzLnN0YXRlLmxvb2sgPSBsb29rO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cblxuICAvLyBQcmVkZWZpbmVkIGxheW91dCBjb250YWluZXJzIGF0IHJvb3QgbGV2ZWwgLSBkZWxlZ2F0ZSBwYXR0ZXJuIHJlcXVpcmVkXG4gIGdyaWQoZGVsZWdhdGU6IChjb250YWluZXI6IElHcmlkQ29udGFpbmVyQnVpbGRlcikgPT4gdm9pZCk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgR3JpZENvbnRhaW5lckJ1aWxkZXIoKTtcbiAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgIGRlbGVnYXRlKGNvbnRhaW5lcik7XG4gICAgfVxuICAgIHRoaXMuc3RhdGUubm9kZXMucHVzaChjb250YWluZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmbGV4KGRlbGVnYXRlOiAoY29udGFpbmVyOiBJRmxleENvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBJTGF5b3V0QnVpbGRlciB7XG4gICAgY29uc3QgY29udGFpbmVyID0gbmV3IEZsZXhDb250YWluZXJCdWlsZGVyKCk7XG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShjb250YWluZXIpO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlLm5vZGVzLnB1c2goY29udGFpbmVyLmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcGFuZWwoZGVsZWdhdGU6IChjb250YWluZXI6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBJTGF5b3V0QnVpbGRlciB7XG4gICAgY29uc3QgY29udGFpbmVyID0gbmV3IFBhbmVsQ29udGFpbmVyQnVpbGRlcigpO1xuICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgZGVsZWdhdGUoY29udGFpbmVyKTtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZS5ub2Rlcy5wdXNoKGNvbnRhaW5lci5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHBhZ2UoZGVsZWdhdGU6IChjb250YWluZXI6IElQYWdlQ29udGFpbmVyQnVpbGRlcikgPT4gdm9pZCk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgUGFnZUNvbnRhaW5lckJ1aWxkZXIoKTtcbiAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgIGRlbGVnYXRlKGNvbnRhaW5lcik7XG4gICAgfVxuICAgIHRoaXMuc3RhdGUubm9kZXMucHVzaChjb250YWluZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0YWJzZXQoZGVsZWdhdGU6IChjb250YWluZXI6IElUYWJzZXRDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogSUxheW91dEJ1aWxkZXIge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IG5ldyBUYWJzZXRDb250YWluZXJCdWlsZGVyKCk7XG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShjb250YWluZXIpO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlLm5vZGVzLnB1c2goY29udGFpbmVyLmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gRGlyZWN0IHdpZGdldCBtZXRob2RzIGF0IHJvb3QgbGV2ZWxcbiAgdGV4dEJveChvcHRpb25zPzogVGV4dEJveE9wdGlvbnMpOiBJTGF5b3V0QnVpbGRlciB7XG4gICAgY29uc3Qgd2lkZ2V0QnVpbGRlciA9IG5ldyBXaWRnZXRCdWlsZGVyKCkudGV4dEJveChvcHRpb25zKTtcbiAgICB0aGlzLnN0YXRlLm5vZGVzLnB1c2god2lkZ2V0QnVpbGRlci5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxhcmdlVGV4dEJveChvcHRpb25zPzogTGFyZ2VUZXh0Qm94T3B0aW9ucyk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCB3aWRnZXRCdWlsZGVyID0gbmV3IFdpZGdldEJ1aWxkZXIoKS5sYXJnZVRleHRCb3gob3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZS5ub2Rlcy5wdXNoKHdpZGdldEJ1aWxkZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByaWNoVGV4dChvcHRpb25zPzogUmljaFRleHRPcHRpb25zKTogSUxheW91dEJ1aWxkZXIge1xuICAgIGNvbnN0IHdpZGdldEJ1aWxkZXIgPSBuZXcgV2lkZ2V0QnVpbGRlcigpLnJpY2hUZXh0KG9wdGlvbnMpO1xuICAgIHRoaXMuc3RhdGUubm9kZXMucHVzaCh3aWRnZXRCdWlsZGVyLmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcGFzc3dvcmRCb3gob3B0aW9ucz86IFBhc3N3b3JkQm94T3B0aW9ucyk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCB3aWRnZXRCdWlsZGVyID0gbmV3IFdpZGdldEJ1aWxkZXIoKS5wYXNzd29yZEJveChvcHRpb25zKTtcbiAgICB0aGlzLnN0YXRlLm5vZGVzLnB1c2god2lkZ2V0QnVpbGRlci5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG51bWJlckJveChvcHRpb25zPzogTnVtYmVyQm94T3B0aW9ucyk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCB3aWRnZXRCdWlsZGVyID0gbmV3IFdpZGdldEJ1aWxkZXIoKS5udW1iZXJCb3gob3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZS5ub2Rlcy5wdXNoKHdpZGdldEJ1aWxkZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZWxlY3RCb3gob3B0aW9uczogU2VsZWN0Qm94T3B0aW9ucyk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCB3aWRnZXRCdWlsZGVyID0gbmV3IFdpZGdldEJ1aWxkZXIoKS5zZWxlY3RCb3gob3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZS5ub2Rlcy5wdXNoKHdpZGdldEJ1aWxkZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsb29rdXBCb3gob3B0aW9uczogTG9va3VwQm94T3B0aW9ucyk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCB3aWRnZXRCdWlsZGVyID0gbmV3IFdpZGdldEJ1aWxkZXIoKS5sb29rdXBCb3gob3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZS5ub2Rlcy5wdXNoKHdpZGdldEJ1aWxkZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZWxlY3Rpb25MaXN0KG9wdGlvbnM6IFNlbGVjdGlvbkxpc3RPcHRpb25zKTogSUxheW91dEJ1aWxkZXIge1xuICAgIGNvbnN0IHdpZGdldEJ1aWxkZXIgPSBuZXcgV2lkZ2V0QnVpbGRlcigpLnNlbGVjdGlvbkxpc3Qob3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZS5ub2Rlcy5wdXNoKHdpZGdldEJ1aWxkZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkYXRlVGltZUJveChvcHRpb25zPzogRGF0ZVRpbWVCb3hPcHRpb25zKTogSUxheW91dEJ1aWxkZXIge1xuICAgIGNvbnN0IHdpZGdldEJ1aWxkZXIgPSBuZXcgV2lkZ2V0QnVpbGRlcigpLmRhdGVUaW1lQm94KG9wdGlvbnMpO1xuICAgIHRoaXMuc3RhdGUubm9kZXMucHVzaCh3aWRnZXRCdWlsZGVyLmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9nZ2xlU3dpdGNoKG9wdGlvbnM/OiBUb2dnbGVTd2l0Y2hPcHRpb25zKTogSUxheW91dEJ1aWxkZXIge1xuICAgIGNvbnN0IHdpZGdldEJ1aWxkZXIgPSBuZXcgV2lkZ2V0QnVpbGRlcigpLnRvZ2dsZVN3aXRjaChvcHRpb25zKTtcbiAgICB0aGlzLnN0YXRlLm5vZGVzLnB1c2god2lkZ2V0QnVpbGRlci5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbG9yQm94KG9wdGlvbnM/OiBDb2xvckJveE9wdGlvbnMpOiBJTGF5b3V0QnVpbGRlciB7XG4gICAgY29uc3Qgd2lkZ2V0QnVpbGRlciA9IG5ldyBXaWRnZXRCdWlsZGVyKCkuY29sb3JCb3gob3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZS5ub2Rlcy5wdXNoKHdpZGdldEJ1aWxkZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjdXN0b21XaWRnZXQ8VD4odHlwZTogc3RyaW5nLCBvcHRpb25zPzogVCk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCB3aWRnZXRCdWlsZGVyID0gbmV3IFdpZGdldEJ1aWxkZXIoKS5jdXN0b21XaWRnZXQ8VD4odHlwZSwgb3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZS5ub2Rlcy5wdXNoKHdpZGdldEJ1aWxkZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBidWlsZCgpOiBBWFBMYXlvdXREZWZpbml0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgbm9kZXM6IHRoaXMuc3RhdGUubm9kZXMsXG4gICAgICBtb2RlOiB0aGlzLnN0YXRlLm1vZGUsXG4gICAgICBkaXJlY3Rpb246IHRoaXMuc3RhdGUuZGlyZWN0aW9uLFxuICAgICAgbG9vazogdGhpcy5zdGF0ZS5sb29rLFxuICAgICAgbGF5b3V0Q29uZmlnOiB0aGlzLnN0YXRlLmxheW91dENvbmZpZyxcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyKCk6IEFYUFdpZGdldE5vZGUge1xuICAgIGNvbnNvbGUubG9nKCdyZW5kZXIoKSBjYWxsZWQsIHN0YXRlOicsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZSkpKTtcblxuICAgIGlmICghdGhpcy5zdGF0ZS5ub2RlcyB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLnN0YXRlLm5vZGVzKSkge1xuICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBub2RlcyBpbiBzdGF0ZTonLCB0aGlzLnN0YXRlLm5vZGVzKTtcbiAgICAgIHJldHVybiB7fSBhcyBBWFBXaWRnZXROb2RlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBub2RlcyA9IHRoaXMudHJhbnNmb3JtVG9XaWRnZXROb2Rlcyh0aGlzLnN0YXRlLm5vZGVzKTtcbiAgICAgIGNvbnNvbGUubG9nKCdyZW5kZXIoKSB0cmFuc2Zvcm1lZCBub2RlczonLCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5vZGVzKSkpO1xuXG4gICAgICAvLyBObyBub2Rlc1xuICAgICAgaWYgKCFub2RlcyB8fCBub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHt9IGFzIEFYUFdpZGdldE5vZGU7XG4gICAgICB9XG5cbiAgICAgIC8vIFNpbmdsZSBub2RlIOKGkiByZXR1cm4gZGlyZWN0bHlcbiAgICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIG5vZGVzWzBdO1xuICAgICAgfVxuXG4gICAgICAvLyBNdWx0aXBsZSBub2RlcyDihpIgd3JhcCBpbiBhIGNvbnRhaW5lciBub2RlIHdpdGggbGF5b3V0IGNvbmZpZ1xuICAgICAgY29uc3QgZmxleERpcmVjdGlvbiA9IHRoaXMuc3RhdGUuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAncm93JyA6ICdjb2x1bW4nO1xuICAgICAgY29uc3QgY29udGFpbmVyOiBBWFBXaWRnZXROb2RlID0ge1xuICAgICAgICB0eXBlOiAnZmxleC1sYXlvdXQnLFxuICAgICAgICBuYW1lOiAncm9vdCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uLFxuICAgICAgICAgIGdhcDogJzE2cHgnLFxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogbm9kZXMsXG4gICAgICB9IGFzIEFYUFdpZGdldE5vZGU7XG5cbiAgICAgIHJldHVybiBjb250YWluZXI7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIHJlbmRlcigpOicsIGVycm9yKTtcbiAgICAgIHJldHVybiB7fSBhcyBBWFBXaWRnZXROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtVG9XaWRnZXROb2Rlcyhub2RlczogQVhQTGF5b3V0Tm9kZURlZmluaXRpb25bXSk6IEFYUFdpZGdldE5vZGVbXSB7XG4gICAgY29uc29sZS5sb2coJ3RyYW5zZm9ybVRvV2lkZ2V0Tm9kZXMgY2FsbGVkIHdpdGggbm9kZXM6Jywgbm9kZXMpO1xuICAgIGNvbnN0IHNvcnRlZCA9IHRoaXMuc29ydE5vZGVzKG5vZGVzKTtcblxuICAgIC8vIEhlbHBlciB0byBjb21wdXRlIGZsZXgtaXRlbSBvcHRpb25zIGZyb20gZ3JpZCBsYXlvdXQgcG9zaXRpb25zXG4gICAgY29uc3QgdG9GbGV4SXRlbU9wdGlvbnMgPSAobGF5b3V0PzogQVhQR3JpZExheW91dE9wdGlvbnMsIG9yZGVyPzogbnVtYmVyIHwgc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgY29sU3BhbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgcG9zaXRpb25zID0gbGF5b3V0Py5wb3NpdGlvbnMgPz8gdGhpcy5zdGF0ZS5sYXlvdXRDb25maWc/LnBvc2l0aW9ucztcbiAgICAgIGlmIChwb3NpdGlvbnMpIHtcbiAgICAgICAgY29sU3BhbiA9IHBvc2l0aW9ucy54eGw/LmNvbFNwYW4gfHwgcG9zaXRpb25zLnhsPy5jb2xTcGFuIHx8IHBvc2l0aW9ucy5sZz8uY29sU3BhbiB8fCBwb3NpdGlvbnMubWQ/LmNvbFNwYW4gfHwgcG9zaXRpb25zLnNtPy5jb2xTcGFuO1xuICAgICAgfVxuICAgICAgY29uc3QgYmFzaXMgPSBjb2xTcGFuICYmIGNvbFNwYW4gPiAwICYmIGNvbFNwYW4gPD0gMTIgPyBgJHsoY29sU3BhbiAvIDEyKSAqIDEwMH0lYCA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IG9wdDogYW55ID0ge307XG4gICAgICBpZiAoYmFzaXMpIG9wdC5iYXNpcyA9IGJhc2lzO1xuICAgICAgaWYgKG9yZGVyICE9PSB1bmRlZmluZWQpIG9wdC5vcmRlciA9IHR5cGVvZiBvcmRlciA9PT0gJ251bWJlcicgPyBvcmRlciA6IHBhcnNlSW50KG9yZGVyLnRvU3RyaW5nKCkpO1xuICAgICAgcmV0dXJuIG9wdDtcbiAgICB9O1xuXG4gICAgY29uc3QgbXVsdGlwbGVTaWJsaW5ncyA9IHNvcnRlZC5sZW5ndGggPiAxO1xuXG4gICAgcmV0dXJuIHNvcnRlZC5tYXAoKG5vZGUpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdQcm9jZXNzaW5nIG5vZGU6Jywgbm9kZSk7XG5cbiAgICAgIC8vIEJ1aWxkIHRoZSBhY3R1YWwgd2lkZ2V0IG5vZGVcbiAgICAgIGNvbnN0IHdpZGdldDogQVhQV2lkZ2V0Tm9kZSA9IHtcbiAgICAgICAgdHlwZTogbm9kZS53aWRnZXQ/LnR5cGUgfHwgJ3Vua25vd24nLFxuICAgICAgICBuYW1lOiBub2RlLmlkLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgLi4ubm9kZS53aWRnZXQ/Lm9wdGlvbnMsXG4gICAgICAgICAgbW9kZTogbm9kZS5tb2RlLFxuICAgICAgICAgIHZpc2libGU6IG5vZGUudmlzaWJsZSxcbiAgICAgICAgICBkaXNhYmxlZDogbm9kZS5kaXNhYmxlZCxcbiAgICAgICAgICByZWFkb25seTogbm9kZS5yZWFkb25seSxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgQVhQV2lkZ2V0Tm9kZTtcblxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHdpZGdldC5jaGlsZHJlbiA9IHRoaXMudHJhbnNmb3JtVG9XaWRnZXROb2Rlcyh0aGlzLnNvcnROb2Rlcyhub2RlLmNoaWxkcmVuKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHdlIGhhdmUgbXVsdGlwbGUgc2libGluZ3MgYXQgdGhpcyBsZXZlbCwgd3JhcCBlYWNoIGl0ZW0gaW4gYSBmbGV4LWl0ZW0gY29udGFpbmVyXG4gICAgICBpZiAobXVsdGlwbGVTaWJsaW5ncykge1xuICAgICAgICBjb25zdCBmbGV4SXRlbU9wdGlvbnMgPSB0b0ZsZXhJdGVtT3B0aW9ucyhub2RlLmxheW91dCwgbm9kZS5vcmRlcik7XG4gICAgICAgIGNvbnN0IHdyYXBwZWQ6IEFYUFdpZGdldE5vZGUgPSB7XG4gICAgICAgICAgdHlwZTogJ2ZsZXgtaXRlbS1sYXlvdXQnLFxuICAgICAgICAgIG5hbWU6IGAke25vZGUuaWQgfHwgJ2l0ZW0nfS1jb250YWluZXJgLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLmZsZXhJdGVtT3B0aW9ucyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoaWxkcmVuOiBbd2lkZ2V0XSxcbiAgICAgICAgfSBhcyBBWFBXaWRnZXROb2RlO1xuICAgICAgICByZXR1cm4gd3JhcHBlZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHdpZGdldDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydE5vZGVzKG5vZGVzOiBBWFBMYXlvdXROb2RlRGVmaW5pdGlvbltdKTogQVhQTGF5b3V0Tm9kZURlZmluaXRpb25bXSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG5vZGVzKSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBub2Rlc1xuICAgICAgLm1hcCgobiwgaWR4KSA9PiAoeyBuLCBpZHggfSkpXG4gICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCBhbyA9IGEubi5vcmRlcjtcbiAgICAgICAgY29uc3QgYm8gPSBiLm4ub3JkZXI7XG4gICAgICAgIGNvbnN0IGFIYXMgPSBhbyAhPT0gdW5kZWZpbmVkICYmIGFvICE9PSBudWxsO1xuICAgICAgICBjb25zdCBiSGFzID0gYm8gIT09IHVuZGVmaW5lZCAmJiBibyAhPT0gbnVsbDtcbiAgICAgICAgaWYgKGFIYXMgJiYgYkhhcykge1xuICAgICAgICAgIGlmICh0eXBlb2YgYW8gPT09ICdudW1iZXInICYmIHR5cGVvZiBibyA9PT0gJ251bWJlcicpIHJldHVybiBhbyAtIGJvO1xuICAgICAgICAgIHJldHVybiBTdHJpbmcoYW8pLmxvY2FsZUNvbXBhcmUoU3RyaW5nKGJvKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFIYXMgJiYgIWJIYXMpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKCFhSGFzICYmIGJIYXMpIHJldHVybiAxO1xuICAgICAgICByZXR1cm4gYS5pZHggLSBiLmlkeDtcbiAgICAgIH0pXG4gICAgICAubWFwKHggPT4geC5uKTtcbiAgfVxufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBDb250YWluZXIgQnVpbGRlciBJbXBsZW1lbnRhdGlvbiAgIC0tLS1cblxuLy8gQmFzZSBDb250YWluZXIgQnVpbGRlclxuYWJzdHJhY3QgY2xhc3MgQmFzZUNvbnRhaW5lckJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgY29udGFpbmVyU3RhdGU6IFdpZGdldEJ1aWxkZXJTdGF0ZSA9IHtcbiAgICB0eXBlOiAnd2lkZ2V0JyBhcyBjb25zdCxcbiAgICBjaGlsZHJlbjogW10sXG4gIH07XG5cbiAgY29uc3RydWN0b3IoY29udGFpbmVyVHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS53aWRnZXQgPSB7IHR5cGU6IGNvbnRhaW5lclR5cGUsIG9wdGlvbnM6IHt9IH07XG4gIH1cblxuICBwcm90ZWN0ZWQgYmFzZUlkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLmlkID0gaWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYmFzZUxheW91dCh2YWx1ZTogUGFydGlhbDxBWFBHcmlkTGF5b3V0T3B0aW9ucz4gfCBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5jb250YWluZXJTdGF0ZS5sYXlvdXQgPSB7XG4gICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgIHNtOiB7IGNvbFNwYW46IDEyIH0sXG4gICAgICAgICAgbWQ6IHsgY29sU3BhbjogMTIgfSxcbiAgICAgICAgICBsZzogeyBjb2xTcGFuOiB2YWx1ZSB9LFxuICAgICAgICAgIHhsOiB7IGNvbFNwYW46IHZhbHVlIH0sXG4gICAgICAgICAgeHhsOiB7IGNvbFNwYW46IHZhbHVlIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRhaW5lclN0YXRlLmxheW91dCA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIEJhc2UgbWV0aG9kcyBzaGFyZWQgYnkgYWxsIGNvbnRhaW5lcnNcbiAgcHJvdGVjdGVkIGVuc3VyZUNoaWxkcmVuKCkge1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUuY2hpbGRyZW4gPSB0aGlzLmNvbnRhaW5lclN0YXRlLmNoaWxkcmVuIHx8IFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZERpcmVjdFdpZGdldDxUPih0eXBlOiBzdHJpbmcsIG9wdGlvbnM/OiBUKTogdGhpcyB7XG4gICAgY29uc3QgY2hpbGQgPSBuZXcgV2lkZ2V0QnVpbGRlcigpO1xuICAgIGNoaWxkLmN1c3RvbVdpZGdldDxUPih0eXBlLCBvcHRpb25zKTtcbiAgICB0aGlzLmVuc3VyZUNoaWxkcmVuKCk7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS5jaGlsZHJlbiEucHVzaChjaGlsZC5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGJ1aWxkKCk6IEFYUExheW91dE5vZGVEZWZpbml0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuY29udGFpbmVyU3RhdGUuaWQsXG4gICAgICBuYW1lOiB0aGlzLmNvbnRhaW5lclN0YXRlLm5hbWUsXG4gICAgICB3aWRnZXQ6IHRoaXMuY29udGFpbmVyU3RhdGUud2lkZ2V0LFxuICAgICAgY2hpbGRyZW46IHRoaXMuY29udGFpbmVyU3RhdGUuY2hpbGRyZW4sXG4gICAgICBsYXlvdXQ6IHRoaXMuY29udGFpbmVyU3RhdGUubGF5b3V0LFxuICAgICAgbW9kZTogdGhpcy5jb250YWluZXJTdGF0ZS5tb2RlLFxuICAgICAgb3JkZXI6IHRoaXMuY29udGFpbmVyU3RhdGUub3JkZXIsXG4gICAgICB2aXNpYmxlOiB0aGlzLmNvbnRhaW5lclN0YXRlLnZpc2libGUsXG4gICAgICBkaXNhYmxlZDogdGhpcy5jb250YWluZXJTdGF0ZS5kaXNhYmxlZCxcbiAgICAgIHJlYWRvbmx5OiB0aGlzLmNvbnRhaW5lclN0YXRlLnJlYWRvbmx5LFxuICAgIH07XG4gIH1cbn1cblxuLy8gRmxleCBDb250YWluZXIgQnVpbGRlclxuY2xhc3MgRmxleENvbnRhaW5lckJ1aWxkZXIgZXh0ZW5kcyBCYXNlQ29udGFpbmVyQnVpbGRlciBpbXBsZW1lbnRzIElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdmbGV4LWxheW91dCcpO1xuICB9XG5cbiAgaWQoaWQ6IHN0cmluZyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUlkKGlkKTtcbiAgfVxuXG4gIGxheW91dCh2YWx1ZTogUGFydGlhbDxBWFBHcmlkTGF5b3V0T3B0aW9ucz4gfCBudW1iZXIpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmJhc2VMYXlvdXQodmFsdWUpO1xuICB9XG5cbiAgbW9kZShtb2RlOiBBWFBMYXlvdXRNb2RlKTogSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLm1vZGUgPSBtb2RlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb3JkZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS5vcmRlciA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdmlzaWJsZShjb25kaXRpb246IGJvb2xlYW4gfCBzdHJpbmcpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUudmlzaWJsZSA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRpc2FibGVkKGNvbmRpdGlvbjogYm9vbGVhbiB8IHN0cmluZyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS5kaXNhYmxlZCA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlYWRvbmx5KGNvbmRpdGlvbjogYm9vbGVhbiB8IHN0cmluZyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS5yZWFkb25seSA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldE9wdGlvbnMob3B0aW9uczogQVhQRmxleENvbnRhaW5lck9wdGlvbnMpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUud2lkZ2V0IS5vcHRpb25zID0geyAuLi50aGlzLmNvbnRhaW5lclN0YXRlLndpZGdldCEub3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gSW5kaXZpZHVhbCBmbHVlbnQgbWV0aG9kcyBmb3IgRmxleFxuICBzZXRGbGV4RGlyZWN0aW9uKGRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJyB8ICdyb3ctcmV2ZXJzZScgfCAnY29sdW1uLXJldmVyc2UnKTogSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgZmxleERpcmVjdGlvbjogZGlyZWN0aW9uIH0pO1xuICB9XG5cbiAgc2V0RmxleFdyYXAod3JhcDogJ25vd3JhcCcgfCAnd3JhcCcgfCAnd3JhcC1yZXZlcnNlJyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGZsZXhXcmFwOiB3cmFwIH0pO1xuICB9XG5cbiAgc2V0SnVzdGlmeUNvbnRlbnQoanVzdGlmeTogJ2ZsZXgtc3RhcnQnIHwgJ2ZsZXgtZW5kJyB8ICdjZW50ZXInIHwgJ3NwYWNlLWJldHdlZW4nIHwgJ3NwYWNlLWFyb3VuZCcgfCAnc3BhY2UtZXZlbmx5Jyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGp1c3RpZnlDb250ZW50OiBqdXN0aWZ5IH0pO1xuICB9XG5cbiAgc2V0QWxpZ25JdGVtcyhhbGlnbjogJ2ZsZXgtc3RhcnQnIHwgJ2ZsZXgtZW5kJyB8ICdjZW50ZXInIHwgJ2Jhc2VsaW5lJyB8ICdzdHJldGNoJyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGFsaWduSXRlbXM6IGFsaWduIH0pO1xuICB9XG5cbiAgc2V0R2FwKGdhcDogc3RyaW5nKTogSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgZ2FwIH0pO1xuICB9XG5cbiAgc2V0QmFja2dyb3VuZENvbG9yKGNvbG9yOiBzdHJpbmcpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yIH0pO1xuICB9XG5cbiAgc2V0UGFkZGluZyhwYWRkaW5nOiBzdHJpbmcpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBzcGFjaW5nOiB7IHBhZGRpbmcgfSB9KTtcbiAgfVxuXG4gIHNldE1hcmdpbihtYXJnaW46IHN0cmluZyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IHNwYWNpbmc6IHsgbWFyZ2luIH0gfSk7XG4gIH1cblxuICBhZGRDb250YWluZXI8VCBleHRlbmRzIGltcG9ydCgnLi9sYXlvdXQtYnVpbGRlci50eXBlcycpLklCYXNlQ29udGFpbmVyQnVpbGRlcj4obmFtZT86IHN0cmluZywgZGVsZWdhdGU/OiAoY29udGFpbmVyOiBUKSA9PiB2b2lkKTogSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgICAvLyBJbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHNpbXBsaWZpZWQgZm9yIG5vd1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkV2lkZ2V0KG5hbWU/OiBzdHJpbmcsIGRlbGVnYXRlPzogKHdpZGdldDogSVdpZGdldEJ1aWxkZXIpID0+IHZvaWQpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIGNvbnN0IGNoaWxkV2lkZ2V0ID0gbmV3IFdpZGdldEJ1aWxkZXIobmFtZSk7XG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShjaGlsZFdpZGdldCk7XG4gICAgfVxuICAgIHRoaXMuZW5zdXJlQ2hpbGRyZW4oKTtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLmNoaWxkcmVuIS5wdXNoKGNoaWxkV2lkZ2V0LmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGV4dEJveChvcHRpb25zPzogVGV4dEJveE9wdGlvbnMpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgndGV4dC1lZGl0b3InLCBvcHRpb25zKTtcbiAgfVxuXG4gIGxhcmdlVGV4dEJveChvcHRpb25zPzogTGFyZ2VUZXh0Qm94T3B0aW9ucyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdsYXJnZS10ZXh0LWVkaXRvcicsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmljaFRleHQob3B0aW9ucz86IFJpY2hUZXh0T3B0aW9ucyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdyaWNoLXRleHQtZWRpdG9yJywgb3B0aW9ucyk7XG4gIH1cblxuICBwYXNzd29yZEJveChvcHRpb25zPzogUGFzc3dvcmRCb3hPcHRpb25zKTogSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3Bhc3N3b3JkLWVkaXRvcicsIG9wdGlvbnMpO1xuICB9XG5cbiAgbnVtYmVyQm94KG9wdGlvbnM/OiBOdW1iZXJCb3hPcHRpb25zKTogSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ251bWJlci1lZGl0b3InLCBvcHRpb25zKTtcbiAgfVxuXG4gIHNlbGVjdEJveChvcHRpb25zOiBTZWxlY3RCb3hPcHRpb25zKTogSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3NlbGVjdC1lZGl0b3InLCBvcHRpb25zKTtcbiAgfVxuXG4gIGxvb2t1cEJveChvcHRpb25zOiBMb29rdXBCb3hPcHRpb25zKTogSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ2xvb2t1cC1lZGl0b3InLCBvcHRpb25zKTtcbiAgfVxuXG4gIHNlbGVjdGlvbkxpc3Qob3B0aW9uczogU2VsZWN0aW9uTGlzdE9wdGlvbnMpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnc2VsZWN0aW9uLWxpc3QnLCBvcHRpb25zKTtcbiAgfVxuXG4gIGRhdGVUaW1lQm94KG9wdGlvbnM/OiBEYXRlVGltZUJveE9wdGlvbnMpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnZGF0ZS10aW1lLWVkaXRvcicsIG9wdGlvbnMpO1xuICB9XG5cbiAgdG9nZ2xlU3dpdGNoKG9wdGlvbnM/OiBUb2dnbGVTd2l0Y2hPcHRpb25zKTogSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3RvZ2dsZS1lZGl0b3InLCBvcHRpb25zKTtcbiAgfVxuXG4gIGNvbG9yQm94KG9wdGlvbnM/OiBDb2xvckJveE9wdGlvbnMpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnY29sb3ItZWRpdG9yJywgb3B0aW9ucyk7XG4gIH1cblxuICBjdXN0b21XaWRnZXQ8VD4odHlwZTogc3RyaW5nLCBvcHRpb25zPzogVCk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0PFQ+KHR5cGUsIG9wdGlvbnMpO1xuICB9XG59XG5cbi8vIEdyaWQgQ29udGFpbmVyIEJ1aWxkZXJcbmNsYXNzIEdyaWRDb250YWluZXJCdWlsZGVyIGV4dGVuZHMgQmFzZUNvbnRhaW5lckJ1aWxkZXIgaW1wbGVtZW50cyBJR3JpZENvbnRhaW5lckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignZ3JpZC1sYXlvdXQnKTtcbiAgfVxuXG4gIGlkKGlkOiBzdHJpbmcpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5iYXNlSWQoaWQpOyB9XG4gIGxheW91dCh2YWx1ZTogUGFydGlhbDxBWFBHcmlkTGF5b3V0T3B0aW9ucz4gfCBudW1iZXIpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5iYXNlTGF5b3V0KHZhbHVlKTsgfVxuICBtb2RlKG1vZGU6IEFYUExheW91dE1vZGUpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIgeyB0aGlzLmNvbnRhaW5lclN0YXRlLm1vZGUgPSBtb2RlOyByZXR1cm4gdGhpczsgfVxuICBvcmRlcih2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHsgdGhpcy5jb250YWluZXJTdGF0ZS5vcmRlciA9IHZhbHVlOyByZXR1cm4gdGhpczsgfVxuICB2aXNpYmxlKGNvbmRpdGlvbjogYm9vbGVhbiB8IHN0cmluZyk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7IHRoaXMuY29udGFpbmVyU3RhdGUudmlzaWJsZSA9IGNvbmRpdGlvbjsgcmV0dXJuIHRoaXM7IH1cbiAgZGlzYWJsZWQoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHsgdGhpcy5jb250YWluZXJTdGF0ZS5kaXNhYmxlZCA9IGNvbmRpdGlvbjsgcmV0dXJuIHRoaXM7IH1cbiAgcmVhZG9ubHkoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHsgdGhpcy5jb250YWluZXJTdGF0ZS5yZWFkb25seSA9IGNvbmRpdGlvbjsgcmV0dXJuIHRoaXM7IH1cblxuICBzZXRPcHRpb25zKG9wdGlvbnM6IEFYUEdyaWRDb250YWluZXJPcHRpb25zKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLndpZGdldCEub3B0aW9ucyA9IHsgLi4udGhpcy5jb250YWluZXJTdGF0ZS53aWRnZXQhLm9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIEluZGl2aWR1YWwgZmx1ZW50IG1ldGhvZHMgZm9yIEdyaWRcbiAgc2V0Q29sdW1ucyhjb2x1bW5zOiBudW1iZXIpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBncmlkOiB7IGRlZmF1bHQ6IHsgY29sdW1ucyB9IH0gfSk7XG4gIH1cblxuICBzZXRSb3dzKHJvd3M6IG51bWJlcik6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGdyaWQ6IHsgZGVmYXVsdDogeyByb3dzIH0gfSB9KTtcbiAgfVxuXG4gIHNldEdhcChnYXA6IHN0cmluZyk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGdyaWQ6IHsgZGVmYXVsdDogeyBnYXAgfSB9IH0pO1xuICB9XG5cbiAgc2V0SnVzdGlmeUl0ZW1zKGp1c3RpZnk6ICdzdGFydCcgfCAnZW5kJyB8ICdjZW50ZXInIHwgJ3N0cmV0Y2gnKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgZ3JpZDogeyBkZWZhdWx0OiB7IGp1c3RpZnlJdGVtczoganVzdGlmeSB9IH0gfSk7XG4gIH1cblxuICBzZXRBbGlnbkl0ZW1zKGFsaWduOiAnc3RhcnQnIHwgJ2VuZCcgfCAnY2VudGVyJyB8ICdzdHJldGNoJyk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGdyaWQ6IHsgZGVmYXVsdDogeyBhbGlnbkl0ZW1zOiBhbGlnbiB9IH0gfSk7XG4gIH1cblxuICBzZXRBdXRvRmxvdyhmbG93OiAncm93JyB8ICdjb2x1bW4nIHwgJ3JvdyBkZW5zZScgfCAnY29sdW1uIGRlbnNlJyk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGdyaWQ6IHsgZGVmYXVsdDogeyBhdXRvRmxvdzogZmxvdyB9IH0gfSk7XG4gIH1cblxuICBzZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3I6IHN0cmluZyk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGJhY2tncm91bmRDb2xvcjogY29sb3IgfSk7XG4gIH1cblxuICBzZXRQYWRkaW5nKHBhZGRpbmc6IHN0cmluZyk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IHNwYWNpbmc6IHsgcGFkZGluZyB9IH0pO1xuICB9XG5cbiAgc2V0TWFyZ2luKG1hcmdpbjogc3RyaW5nKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgc3BhY2luZzogeyBtYXJnaW4gfSB9KTtcbiAgfVxuXG4gIGFkZENvbnRhaW5lcjxUIGV4dGVuZHMgaW1wb3J0KCcuL2xheW91dC1idWlsZGVyLnR5cGVzJykuSUJhc2VDb250YWluZXJCdWlsZGVyPihuYW1lPzogc3RyaW5nLCBkZWxlZ2F0ZT86IChjb250YWluZXI6IFQpID0+IHZvaWQpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpczsgfVxuICBhZGRXaWRnZXQobmFtZT86IHN0cmluZywgZGVsZWdhdGU/OiAod2lkZ2V0OiBJV2lkZ2V0QnVpbGRlcikgPT4gdm9pZCk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7XG4gICAgY29uc3QgY2hpbGRXaWRnZXQgPSBuZXcgV2lkZ2V0QnVpbGRlcihuYW1lKTtcbiAgICBpZiAoZGVsZWdhdGUpIGRlbGVnYXRlKGNoaWxkV2lkZ2V0KTtcbiAgICB0aGlzLmVuc3VyZUNoaWxkcmVuKCk7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS5jaGlsZHJlbiEucHVzaChjaGlsZFdpZGdldC5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRleHRCb3gob3B0aW9ucz86IFRleHRCb3hPcHRpb25zKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCd0ZXh0LWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIGxhcmdlVGV4dEJveChvcHRpb25zPzogTGFyZ2VUZXh0Qm94T3B0aW9ucyk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnbGFyZ2UtdGV4dC1lZGl0b3InLCBvcHRpb25zKTsgfVxuICByaWNoVGV4dChvcHRpb25zPzogUmljaFRleHRPcHRpb25zKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdyaWNoLXRleHQtZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgcGFzc3dvcmRCb3gob3B0aW9ucz86IFBhc3N3b3JkQm94T3B0aW9ucyk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgncGFzc3dvcmQtZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgbnVtYmVyQm94KG9wdGlvbnM/OiBOdW1iZXJCb3hPcHRpb25zKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdudW1iZXItZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgc2VsZWN0Qm94KG9wdGlvbnM6IFNlbGVjdEJveE9wdGlvbnMpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3NlbGVjdC1lZGl0b3InLCBvcHRpb25zKTsgfVxuICBsb29rdXBCb3gob3B0aW9uczogTG9va3VwQm94T3B0aW9ucyk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnbG9va3VwLWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIHNlbGVjdGlvbkxpc3Qob3B0aW9uczogU2VsZWN0aW9uTGlzdE9wdGlvbnMpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3NlbGVjdGlvbi1saXN0Jywgb3B0aW9ucyk7IH1cbiAgZGF0ZVRpbWVCb3gob3B0aW9ucz86IERhdGVUaW1lQm94T3B0aW9ucyk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnZGF0ZS10aW1lLWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIHRvZ2dsZVN3aXRjaChvcHRpb25zPzogVG9nZ2xlU3dpdGNoT3B0aW9ucyk6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgndG9nZ2xlLWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIGNvbG9yQm94KG9wdGlvbnM/OiBDb2xvckJveE9wdGlvbnMpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ2NvbG9yLWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIGN1c3RvbVdpZGdldDxUPih0eXBlOiBzdHJpbmcsIG9wdGlvbnM/OiBUKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0PFQ+KHR5cGUsIG9wdGlvbnMpOyB9XG59XG5cbi8vIFBhbmVsIENvbnRhaW5lciBCdWlsZGVyXG5jbGFzcyBQYW5lbENvbnRhaW5lckJ1aWxkZXIgZXh0ZW5kcyBCYXNlQ29udGFpbmVyQnVpbGRlciBpbXBsZW1lbnRzIElQYW5lbENvbnRhaW5lckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigncGFuZWwtbGF5b3V0Jyk7XG4gIH1cblxuICBpZChpZDogc3RyaW5nKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmJhc2VJZChpZCk7IH1cbiAgbGF5b3V0KHZhbHVlOiBQYXJ0aWFsPEFYUEdyaWRMYXlvdXRPcHRpb25zPiB8IG51bWJlcik6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5iYXNlTGF5b3V0KHZhbHVlKTsgfVxuICBtb2RlKG1vZGU6IEFYUExheW91dE1vZGUpOiBJUGFuZWxDb250YWluZXJCdWlsZGVyIHsgdGhpcy5jb250YWluZXJTdGF0ZS5tb2RlID0gbW9kZTsgcmV0dXJuIHRoaXM7IH1cbiAgb3JkZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIgeyB0aGlzLmNvbnRhaW5lclN0YXRlLm9yZGVyID0gdmFsdWU7IHJldHVybiB0aGlzOyB9XG4gIHZpc2libGUoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7IHRoaXMuY29udGFpbmVyU3RhdGUudmlzaWJsZSA9IGNvbmRpdGlvbjsgcmV0dXJuIHRoaXM7IH1cbiAgZGlzYWJsZWQoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7IHRoaXMuY29udGFpbmVyU3RhdGUuZGlzYWJsZWQgPSBjb25kaXRpb247IHJldHVybiB0aGlzOyB9XG4gIHJlYWRvbmx5KGNvbmRpdGlvbjogYm9vbGVhbiB8IHN0cmluZyk6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIgeyB0aGlzLmNvbnRhaW5lclN0YXRlLnJlYWRvbmx5ID0gY29uZGl0aW9uOyByZXR1cm4gdGhpczsgfVxuXG4gIHNldE9wdGlvbnMob3B0aW9uczogQVhQUGFuZWxDb250YWluZXJPcHRpb25zKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS53aWRnZXQhLm9wdGlvbnMgPSB7IC4uLnRoaXMuY29udGFpbmVyU3RhdGUud2lkZ2V0IS5vcHRpb25zLCAuLi5vcHRpb25zIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBJbmRpdmlkdWFsIGZsdWVudCBtZXRob2RzIGZvciBQYW5lbFxuICBzZXRDYXB0aW9uKGNhcHRpb246IHN0cmluZyk6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBjYXB0aW9uIH0pO1xuICB9XG5cbiAgc2V0SWNvbihpY29uOiBzdHJpbmcpOiBJUGFuZWxDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgaWNvbiB9KTtcbiAgfVxuXG4gIHNldExvb2sobG9vazogJ3NvbGlkJyB8ICdmaWxsJyB8ICdvdXRsaW5lJyB8ICdmbGF0JyB8ICdub25lJyk6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBsb29rIH0pO1xuICB9XG5cbiAgc2V0U2hvd0hlYWRlcihzaG93OiBib29sZWFuKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IHNob3dIZWFkZXI6IHNob3cgfSk7XG4gIH1cblxuICBzZXRDb2xsYXBzZWQoY29sbGFwc2VkOiBib29sZWFuKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGNvbGxhcHNlZCB9KTtcbiAgfVxuXG4gIGFkZENvbnRhaW5lcjxUIGV4dGVuZHMgaW1wb3J0KCcuL2xheW91dC1idWlsZGVyLnR5cGVzJykuSUJhc2VDb250YWluZXJCdWlsZGVyPihuYW1lPzogc3RyaW5nLCBkZWxlZ2F0ZT86IChjb250YWluZXI6IFQpID0+IHZvaWQpOiBJUGFuZWxDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXM7IH1cbiAgYWRkV2lkZ2V0KG5hbWU/OiBzdHJpbmcsIGRlbGVnYXRlPzogKHdpZGdldDogSVdpZGdldEJ1aWxkZXIpID0+IHZvaWQpOiBJUGFuZWxDb250YWluZXJCdWlsZGVyIHtcbiAgICBjb25zdCBjaGlsZFdpZGdldCA9IG5ldyBXaWRnZXRCdWlsZGVyKG5hbWUpO1xuICAgIGlmIChkZWxlZ2F0ZSkgZGVsZWdhdGUoY2hpbGRXaWRnZXQpO1xuICAgIHRoaXMuZW5zdXJlQ2hpbGRyZW4oKTtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLmNoaWxkcmVuIS5wdXNoKGNoaWxkV2lkZ2V0LmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGV4dEJveChvcHRpb25zPzogVGV4dEJveE9wdGlvbnMpOiBJUGFuZWxDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCd0ZXh0LWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIGxhcmdlVGV4dEJveChvcHRpb25zPzogTGFyZ2VUZXh0Qm94T3B0aW9ucyk6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ2xhcmdlLXRleHQtZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgcmljaFRleHQob3B0aW9ucz86IFJpY2hUZXh0T3B0aW9ucyk6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3JpY2gtdGV4dC1lZGl0b3InLCBvcHRpb25zKTsgfVxuICBwYXNzd29yZEJveChvcHRpb25zPzogUGFzc3dvcmRCb3hPcHRpb25zKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgncGFzc3dvcmQtZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgbnVtYmVyQm94KG9wdGlvbnM/OiBOdW1iZXJCb3hPcHRpb25zKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnbnVtYmVyLWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIHNlbGVjdEJveChvcHRpb25zOiBTZWxlY3RCb3hPcHRpb25zKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnc2VsZWN0LWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIGxvb2t1cEJveChvcHRpb25zOiBMb29rdXBCb3hPcHRpb25zKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnbG9va3VwLWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIHNlbGVjdGlvbkxpc3Qob3B0aW9uczogU2VsZWN0aW9uTGlzdE9wdGlvbnMpOiBJUGFuZWxDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdzZWxlY3Rpb24tbGlzdCcsIG9wdGlvbnMpOyB9XG4gIGRhdGVUaW1lQm94KG9wdGlvbnM/OiBEYXRlVGltZUJveE9wdGlvbnMpOiBJUGFuZWxDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdkYXRlLXRpbWUtZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgdG9nZ2xlU3dpdGNoKG9wdGlvbnM/OiBUb2dnbGVTd2l0Y2hPcHRpb25zKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgndG9nZ2xlLWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIGNvbG9yQm94KG9wdGlvbnM/OiBDb2xvckJveE9wdGlvbnMpOiBJUGFuZWxDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdjb2xvci1lZGl0b3InLCBvcHRpb25zKTsgfVxuICBjdXN0b21XaWRnZXQ8VD4odHlwZTogc3RyaW5nLCBvcHRpb25zPzogVCk6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQ8VD4odHlwZSwgb3B0aW9ucyk7IH1cbn1cblxuLy8gUGFnZSBDb250YWluZXIgQnVpbGRlclxuY2xhc3MgUGFnZUNvbnRhaW5lckJ1aWxkZXIgZXh0ZW5kcyBCYXNlQ29udGFpbmVyQnVpbGRlciBpbXBsZW1lbnRzIElQYWdlQ29udGFpbmVyQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdwYWdlLWxheW91dCcpO1xuICB9XG5cbiAgaWQoaWQ6IHN0cmluZyk6IElQYWdlQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmJhc2VJZChpZCk7IH1cbiAgbGF5b3V0KHZhbHVlOiBQYXJ0aWFsPEFYUEdyaWRMYXlvdXRPcHRpb25zPiB8IG51bWJlcik6IElQYWdlQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmJhc2VMYXlvdXQodmFsdWUpOyB9XG4gIG1vZGUobW9kZTogQVhQTGF5b3V0TW9kZSk6IElQYWdlQ29udGFpbmVyQnVpbGRlciB7IHRoaXMuY29udGFpbmVyU3RhdGUubW9kZSA9IG1vZGU7IHJldHVybiB0aGlzOyB9XG4gIG9yZGVyKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIgeyB0aGlzLmNvbnRhaW5lclN0YXRlLm9yZGVyID0gdmFsdWU7IHJldHVybiB0aGlzOyB9XG4gIHZpc2libGUoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSVBhZ2VDb250YWluZXJCdWlsZGVyIHsgdGhpcy5jb250YWluZXJTdGF0ZS52aXNpYmxlID0gY29uZGl0aW9uOyByZXR1cm4gdGhpczsgfVxuICBkaXNhYmxlZChjb25kaXRpb246IGJvb2xlYW4gfCBzdHJpbmcpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIgeyB0aGlzLmNvbnRhaW5lclN0YXRlLmRpc2FibGVkID0gY29uZGl0aW9uOyByZXR1cm4gdGhpczsgfVxuICByZWFkb25seShjb25kaXRpb246IGJvb2xlYW4gfCBzdHJpbmcpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIgeyB0aGlzLmNvbnRhaW5lclN0YXRlLnJlYWRvbmx5ID0gY29uZGl0aW9uOyByZXR1cm4gdGhpczsgfVxuXG4gIHNldE9wdGlvbnMob3B0aW9uczogQVhQUGFnZUNvbnRhaW5lck9wdGlvbnMpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIge1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUud2lkZ2V0IS5vcHRpb25zID0geyAuLi50aGlzLmNvbnRhaW5lclN0YXRlLndpZGdldCEub3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gSW5kaXZpZHVhbCBmbHVlbnQgbWV0aG9kcyBmb3IgUGFnZVxuICBzZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3I6IHN0cmluZyk6IElQYWdlQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGJhY2tncm91bmRDb2xvcjogY29sb3IgfSk7XG4gIH1cblxuICBzZXRUaGVtZSh0aGVtZTogeyBpZDogc3RyaW5nIH0pOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyB0aGVtZSB9KTtcbiAgfVxuXG4gIHNldEhhc0hlYWRlcihoYXNIZWFkZXI6IGJvb2xlYW4pOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBoYXNIZWFkZXIgfSk7XG4gIH1cblxuICBzZXRIYXNGb290ZXIoaGFzRm9vdGVyOiBib29sZWFuKTogSVBhZ2VDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgaGFzRm9vdGVyIH0pO1xuICB9XG5cbiAgc2V0RGlyZWN0aW9uKGRpcmVjdGlvbjogc3RyaW5nKTogSVBhZ2VDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgZGlyZWN0aW9uIH0pO1xuICB9XG5cbiAgYWRkQ29udGFpbmVyPFQgZXh0ZW5kcyBpbXBvcnQoJy4vbGF5b3V0LWJ1aWxkZXIudHlwZXMnKS5JQmFzZUNvbnRhaW5lckJ1aWxkZXI+KG5hbWU/OiBzdHJpbmcsIGRlbGVnYXRlPzogKGNvbnRhaW5lcjogVCkgPT4gdm9pZCk6IElQYWdlQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzOyB9XG4gIGFkZFdpZGdldChuYW1lPzogc3RyaW5nLCBkZWxlZ2F0ZT86ICh3aWRnZXQ6IElXaWRnZXRCdWlsZGVyKSA9PiB2b2lkKTogSVBhZ2VDb250YWluZXJCdWlsZGVyIHtcbiAgICBjb25zdCBjaGlsZFdpZGdldCA9IG5ldyBXaWRnZXRCdWlsZGVyKG5hbWUpO1xuICAgIGlmIChkZWxlZ2F0ZSkgZGVsZWdhdGUoY2hpbGRXaWRnZXQpO1xuICAgIHRoaXMuZW5zdXJlQ2hpbGRyZW4oKTtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLmNoaWxkcmVuIS5wdXNoKGNoaWxkV2lkZ2V0LmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGV4dEJveChvcHRpb25zPzogVGV4dEJveE9wdGlvbnMpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3RleHQtZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgbGFyZ2VUZXh0Qm94KG9wdGlvbnM/OiBMYXJnZVRleHRCb3hPcHRpb25zKTogSVBhZ2VDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdsYXJnZS10ZXh0LWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIHJpY2hUZXh0KG9wdGlvbnM/OiBSaWNoVGV4dE9wdGlvbnMpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3JpY2gtdGV4dC1lZGl0b3InLCBvcHRpb25zKTsgfVxuICBwYXNzd29yZEJveChvcHRpb25zPzogUGFzc3dvcmRCb3hPcHRpb25zKTogSVBhZ2VDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdwYXNzd29yZC1lZGl0b3InLCBvcHRpb25zKTsgfVxuICBudW1iZXJCb3gob3B0aW9ucz86IE51bWJlckJveE9wdGlvbnMpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ251bWJlci1lZGl0b3InLCBvcHRpb25zKTsgfVxuICBzZWxlY3RCb3gob3B0aW9uczogU2VsZWN0Qm94T3B0aW9ucyk6IElQYWdlQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnc2VsZWN0LWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIGxvb2t1cEJveChvcHRpb25zOiBMb29rdXBCb3hPcHRpb25zKTogSVBhZ2VDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdsb29rdXAtZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgc2VsZWN0aW9uTGlzdChvcHRpb25zOiBTZWxlY3Rpb25MaXN0T3B0aW9ucyk6IElQYWdlQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnc2VsZWN0aW9uLWxpc3QnLCBvcHRpb25zKTsgfVxuICBkYXRlVGltZUJveChvcHRpb25zPzogRGF0ZVRpbWVCb3hPcHRpb25zKTogSVBhZ2VDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdkYXRlLXRpbWUtZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgdG9nZ2xlU3dpdGNoKG9wdGlvbnM/OiBUb2dnbGVTd2l0Y2hPcHRpb25zKTogSVBhZ2VDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCd0b2dnbGUtZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgY29sb3JCb3gob3B0aW9ucz86IENvbG9yQm94T3B0aW9ucyk6IElQYWdlQ29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnY29sb3ItZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgY3VzdG9tV2lkZ2V0PFQ+KHR5cGU6IHN0cmluZywgb3B0aW9ucz86IFQpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQ8VD4odHlwZSwgb3B0aW9ucyk7IH1cbn1cblxuLy8gVGFic2V0IENvbnRhaW5lciBCdWlsZGVyXG5jbGFzcyBUYWJzZXRDb250YWluZXJCdWlsZGVyIGV4dGVuZHMgQmFzZUNvbnRhaW5lckJ1aWxkZXIgaW1wbGVtZW50cyBJVGFic2V0Q29udGFpbmVyQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCd0YWJzZXQtbGF5b3V0Jyk7XG4gIH1cblxuICBpZChpZDogc3RyaW5nKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5iYXNlSWQoaWQpOyB9XG4gIGxheW91dCh2YWx1ZTogUGFydGlhbDxBWFBHcmlkTGF5b3V0T3B0aW9ucz4gfCBudW1iZXIpOiBJVGFic2V0Q29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmJhc2VMYXlvdXQodmFsdWUpOyB9XG4gIG1vZGUobW9kZTogQVhQTGF5b3V0TW9kZSk6IElUYWJzZXRDb250YWluZXJCdWlsZGVyIHsgdGhpcy5jb250YWluZXJTdGF0ZS5tb2RlID0gbW9kZTsgcmV0dXJuIHRoaXM7IH1cbiAgb3JkZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IElUYWJzZXRDb250YWluZXJCdWlsZGVyIHsgdGhpcy5jb250YWluZXJTdGF0ZS5vcmRlciA9IHZhbHVlOyByZXR1cm4gdGhpczsgfVxuICB2aXNpYmxlKGNvbmRpdGlvbjogYm9vbGVhbiB8IHN0cmluZyk6IElUYWJzZXRDb250YWluZXJCdWlsZGVyIHsgdGhpcy5jb250YWluZXJTdGF0ZS52aXNpYmxlID0gY29uZGl0aW9uOyByZXR1cm4gdGhpczsgfVxuICBkaXNhYmxlZChjb25kaXRpb246IGJvb2xlYW4gfCBzdHJpbmcpOiBJVGFic2V0Q29udGFpbmVyQnVpbGRlciB7IHRoaXMuY29udGFpbmVyU3RhdGUuZGlzYWJsZWQgPSBjb25kaXRpb247IHJldHVybiB0aGlzOyB9XG4gIHJlYWRvbmx5KGNvbmRpdGlvbjogYm9vbGVhbiB8IHN0cmluZyk6IElUYWJzZXRDb250YWluZXJCdWlsZGVyIHsgdGhpcy5jb250YWluZXJTdGF0ZS5yZWFkb25seSA9IGNvbmRpdGlvbjsgcmV0dXJuIHRoaXM7IH1cblxuICBzZXRPcHRpb25zKG9wdGlvbnM6IEFYUFRhYnNldENvbnRhaW5lck9wdGlvbnMpOiBJVGFic2V0Q29udGFpbmVyQnVpbGRlciB7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS53aWRnZXQhLm9wdGlvbnMgPSB7IC4uLnRoaXMuY29udGFpbmVyU3RhdGUud2lkZ2V0IS5vcHRpb25zLCAuLi5vcHRpb25zIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBJbmRpdmlkdWFsIGZsdWVudCBtZXRob2RzIGZvciBUYWJzZXRcbiAgc2V0TG9vayhsb29rOiAnd2l0aC1saW5lJyB8ICd3aXRoLWxpbmUtY29sb3InIHwgJ3BpbGxzJyB8ICdwaWxscy1jb2xvcicpOiBJVGFic2V0Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGxvb2sgfSk7XG4gIH1cblxuICBzZXRPcmllbnRhdGlvbihvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyk6IElUYWJzZXRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgb3JpZW50YXRpb24gfSk7XG4gIH1cblxuICBzZXRBY3RpdmVJbmRleChpbmRleDogbnVtYmVyKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBhY3RpdmVJbmRleDogaW5kZXggfSk7XG4gIH1cblxuICBhZGRDb250YWluZXI8VCBleHRlbmRzIGltcG9ydCgnLi9sYXlvdXQtYnVpbGRlci50eXBlcycpLklCYXNlQ29udGFpbmVyQnVpbGRlcj4obmFtZT86IHN0cmluZywgZGVsZWdhdGU/OiAoY29udGFpbmVyOiBUKSA9PiB2b2lkKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpczsgfVxuICBhZGRXaWRnZXQobmFtZT86IHN0cmluZywgZGVsZWdhdGU/OiAod2lkZ2V0OiBJV2lkZ2V0QnVpbGRlcikgPT4gdm9pZCk6IElUYWJzZXRDb250YWluZXJCdWlsZGVyIHtcbiAgICBjb25zdCBjaGlsZFdpZGdldCA9IG5ldyBXaWRnZXRCdWlsZGVyKG5hbWUpO1xuICAgIGlmIChkZWxlZ2F0ZSkgZGVsZWdhdGUoY2hpbGRXaWRnZXQpO1xuICAgIHRoaXMuZW5zdXJlQ2hpbGRyZW4oKTtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLmNoaWxkcmVuIS5wdXNoKGNoaWxkV2lkZ2V0LmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGV4dEJveChvcHRpb25zPzogVGV4dEJveE9wdGlvbnMpOiBJVGFic2V0Q29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgndGV4dC1lZGl0b3InLCBvcHRpb25zKTsgfVxuICBsYXJnZVRleHRCb3gob3B0aW9ucz86IExhcmdlVGV4dEJveE9wdGlvbnMpOiBJVGFic2V0Q29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnbGFyZ2UtdGV4dC1lZGl0b3InLCBvcHRpb25zKTsgfVxuICByaWNoVGV4dChvcHRpb25zPzogUmljaFRleHRPcHRpb25zKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3JpY2gtdGV4dC1lZGl0b3InLCBvcHRpb25zKTsgfVxuICBwYXNzd29yZEJveChvcHRpb25zPzogUGFzc3dvcmRCb3hPcHRpb25zKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3Bhc3N3b3JkLWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIG51bWJlckJveChvcHRpb25zPzogTnVtYmVyQm94T3B0aW9ucyk6IElUYWJzZXRDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdudW1iZXItZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgc2VsZWN0Qm94KG9wdGlvbnM6IFNlbGVjdEJveE9wdGlvbnMpOiBJVGFic2V0Q29udGFpbmVyQnVpbGRlciB7IHJldHVybiB0aGlzLmFkZERpcmVjdFdpZGdldCgnc2VsZWN0LWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIGxvb2t1cEJveChvcHRpb25zOiBMb29rdXBCb3hPcHRpb25zKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ2xvb2t1cC1lZGl0b3InLCBvcHRpb25zKTsgfVxuICBzZWxlY3Rpb25MaXN0KG9wdGlvbnM6IFNlbGVjdGlvbkxpc3RPcHRpb25zKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3NlbGVjdGlvbi1saXN0Jywgb3B0aW9ucyk7IH1cbiAgZGF0ZVRpbWVCb3gob3B0aW9ucz86IERhdGVUaW1lQm94T3B0aW9ucyk6IElUYWJzZXRDb250YWluZXJCdWlsZGVyIHsgcmV0dXJuIHRoaXMuYWRkRGlyZWN0V2lkZ2V0KCdkYXRlLXRpbWUtZWRpdG9yJywgb3B0aW9ucyk7IH1cbiAgdG9nZ2xlU3dpdGNoKG9wdGlvbnM/OiBUb2dnbGVTd2l0Y2hPcHRpb25zKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ3RvZ2dsZS1lZGl0b3InLCBvcHRpb25zKTsgfVxuICBjb2xvckJveChvcHRpb25zPzogQ29sb3JCb3hPcHRpb25zKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQoJ2NvbG9yLWVkaXRvcicsIG9wdGlvbnMpOyB9XG4gIGN1c3RvbVdpZGdldDxUPih0eXBlOiBzdHJpbmcsIG9wdGlvbnM/OiBUKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIgeyByZXR1cm4gdGhpcy5hZGREaXJlY3RXaWRnZXQ8VD4odHlwZSwgb3B0aW9ucyk7IH1cbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgV2lkZ2V0IEJ1aWxkZXIgSW1wbGVtZW50YXRpb24gICAtLS0tXG5cbmNsYXNzIFdpZGdldEJ1aWxkZXIgaW1wbGVtZW50cyBJV2lkZ2V0QnVpbGRlciB7XG4gIHByaXZhdGUgd2lkZ2V0U3RhdGU6IFdpZGdldEJ1aWxkZXJTdGF0ZSA9IHtcbiAgICB0eXBlOiAnd2lkZ2V0JyBhcyBjb25zdCxcbiAgICBjaGlsZHJlbjogW10sXG4gIH07XG5cbiAgY29uc3RydWN0b3IobmFtZT86IHN0cmluZykge1xuICAgIGlmIChuYW1lKSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLm5hbWUgPSBuYW1lO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5vIHV0aWxpdHkgbWV0aG9kcyBuZWVkZWQgLSB3aWRnZXQgb3B0aW9ucyBhcmUgcHVyZSBub3dcbiAgXG4gIHByaXZhdGUgaXNDb250YWluZXJXaWRnZXRUeXBlKHR5cGU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXR5cGUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gWydncmlkLWxheW91dCcsICdmbGV4LWxheW91dCcsICdwYW5lbC1sYXlvdXQnLCAncGFnZS1sYXlvdXQnLCAndGFic2V0LWxheW91dCddLmluY2x1ZGVzKHR5cGUpO1xuICB9XG5cbiAgaWQoaWQ6IHN0cmluZyk6IElXaWRnZXRCdWlsZGVyIHtcbiAgICB0aGlzLndpZGdldFN0YXRlLmlkID0gaWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsYXlvdXQodmFsdWU6IFBhcnRpYWw8QVhQR3JpZExheW91dE9wdGlvbnM+IHwgbnVtYmVyKTogSVdpZGdldEJ1aWxkZXIge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLmxheW91dCA9IHtcbiAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgc206IHsgY29sU3BhbjogMTIgfSxcbiAgICAgICAgICBtZDogeyBjb2xTcGFuOiAxMiB9LFxuICAgICAgICAgIGxnOiB7IGNvbFNwYW46IHZhbHVlIH0sXG4gICAgICAgICAgeGw6IHsgY29sU3BhbjogdmFsdWUgfSxcbiAgICAgICAgICB4eGw6IHsgY29sU3BhbjogdmFsdWUgfSxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS5sYXlvdXQgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtb2RlKG1vZGU6IEFYUExheW91dE1vZGUpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgdGhpcy53aWRnZXRTdGF0ZS5tb2RlID0gbW9kZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZpc2libGUoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSVdpZGdldEJ1aWxkZXIge1xuICAgIHRoaXMud2lkZ2V0U3RhdGUudmlzaWJsZSA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRpc2FibGVkKGNvbmRpdGlvbjogYm9vbGVhbiB8IHN0cmluZyk6IElXaWRnZXRCdWlsZGVyIHtcbiAgICB0aGlzLndpZGdldFN0YXRlLmRpc2FibGVkID0gY29uZGl0aW9uO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVhZG9ubHkoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSVdpZGdldEJ1aWxkZXIge1xuICAgIHRoaXMud2lkZ2V0U3RhdGUucmVhZG9ubHkgPSBjb25kaXRpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBvcmRlcih2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogSVdpZGdldEJ1aWxkZXIge1xuICAgIHRoaXMud2lkZ2V0U3RhdGUub3JkZXIgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIENvbnRhaW5lciBoZWxwZXJzIC0gZGVsZWdhdGUgcGF0dGVybiByZXF1aXJlZFxuICBncmlkKGRlbGVnYXRlOiAoY29udGFpbmVyOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgY29uc3QgY29udGFpbmVyID0gbmV3IEdyaWRDb250YWluZXJCdWlsZGVyKCk7XG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShjb250YWluZXIpO1xuICAgIH1cbiAgICBjb25zdCBidWlsdCA9IGNvbnRhaW5lci5idWlsZCgpO1xuICAgIHRoaXMud2lkZ2V0U3RhdGUud2lkZ2V0ID0gYnVpbHQud2lkZ2V0O1xuICAgIHRoaXMud2lkZ2V0U3RhdGUuY2hpbGRyZW4gPSBidWlsdC5jaGlsZHJlbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZsZXgoZGVsZWdhdGU6IChjb250YWluZXI6IElGbGV4Q29udGFpbmVyQnVpbGRlcikgPT4gdm9pZCk6IElXaWRnZXRCdWlsZGVyIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgRmxleENvbnRhaW5lckJ1aWxkZXIoKTtcbiAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgIGRlbGVnYXRlKGNvbnRhaW5lcik7XG4gICAgfVxuICAgIGNvbnN0IGJ1aWx0ID0gY29udGFpbmVyLmJ1aWxkKCk7XG4gICAgdGhpcy53aWRnZXRTdGF0ZS53aWRnZXQgPSBidWlsdC53aWRnZXQ7XG4gICAgdGhpcy53aWRnZXRTdGF0ZS5jaGlsZHJlbiA9IGJ1aWx0LmNoaWxkcmVuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcGFuZWwoZGVsZWdhdGU6IChjb250YWluZXI6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgY29uc3QgY29udGFpbmVyID0gbmV3IFBhbmVsQ29udGFpbmVyQnVpbGRlcigpO1xuICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgZGVsZWdhdGUoY29udGFpbmVyKTtcbiAgICB9XG4gICAgY29uc3QgYnVpbHQgPSBjb250YWluZXIuYnVpbGQoKTtcbiAgICB0aGlzLndpZGdldFN0YXRlLndpZGdldCA9IGJ1aWx0LndpZGdldDtcbiAgICB0aGlzLndpZGdldFN0YXRlLmNoaWxkcmVuID0gYnVpbHQuY2hpbGRyZW47XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwYWdlKGRlbGVnYXRlOiAoY29udGFpbmVyOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgY29uc3QgY29udGFpbmVyID0gbmV3IFBhZ2VDb250YWluZXJCdWlsZGVyKCk7XG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShjb250YWluZXIpO1xuICAgIH1cbiAgICBjb25zdCBidWlsdCA9IGNvbnRhaW5lci5idWlsZCgpO1xuICAgIHRoaXMud2lkZ2V0U3RhdGUud2lkZ2V0ID0gYnVpbHQud2lkZ2V0O1xuICAgIHRoaXMud2lkZ2V0U3RhdGUuY2hpbGRyZW4gPSBidWlsdC5jaGlsZHJlbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRhYnNldChkZWxlZ2F0ZTogKGNvbnRhaW5lcjogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgY29uc3QgY29udGFpbmVyID0gbmV3IFRhYnNldENvbnRhaW5lckJ1aWxkZXIoKTtcbiAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgIGRlbGVnYXRlKGNvbnRhaW5lcik7XG4gICAgfVxuICAgIGNvbnN0IGJ1aWx0ID0gY29udGFpbmVyLmJ1aWxkKCk7XG4gICAgdGhpcy53aWRnZXRTdGF0ZS53aWRnZXQgPSBidWlsdC53aWRnZXQ7XG4gICAgdGhpcy53aWRnZXRTdGF0ZS5jaGlsZHJlbiA9IGJ1aWx0LmNoaWxkcmVuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgd2lkZ2V0KG5hbWU/OiBzdHJpbmcsIGRlbGVnYXRlPzogKHdpZGdldDogSVdpZGdldEJ1aWxkZXIpID0+IHZvaWQpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgY29uc3QgY2hpbGQgPSBuZXcgV2lkZ2V0QnVpbGRlcihuYW1lKTtcbiAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgIGRlbGVnYXRlKGNoaWxkKTtcbiAgICB9XG4gICAgdGhpcy53aWRnZXRTdGF0ZS5jaGlsZHJlbiA9IHRoaXMud2lkZ2V0U3RhdGUuY2hpbGRyZW4gfHwgW107XG4gICAgdGhpcy53aWRnZXRTdGF0ZS5jaGlsZHJlbi5wdXNoKGNoaWxkLmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gV2lkZ2V0IHR5cGUgbWV0aG9kc1xuICB0ZXh0Qm94KG9wdGlvbnM/OiBUZXh0Qm94T3B0aW9ucyk6IElXaWRnZXRCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5pc0NvbnRhaW5lcldpZGdldFR5cGUodGhpcy53aWRnZXRTdGF0ZS53aWRnZXQ/LnR5cGUpKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IG5ldyBXaWRnZXRCdWlsZGVyKCk7XG4gICAgICBjaGlsZC50ZXh0Qm94KG9wdGlvbnMpO1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS5jaGlsZHJlbiEucHVzaChjaGlsZC5idWlsZCgpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLndpZGdldCA9IHtcbiAgICAgICAgdHlwZTogJ3RleHQtZWRpdG9yJyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICBsYXJnZVRleHRCb3gob3B0aW9ucz86IExhcmdlVGV4dEJveE9wdGlvbnMpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgaWYgKHRoaXMuaXNDb250YWluZXJXaWRnZXRUeXBlKHRoaXMud2lkZ2V0U3RhdGUud2lkZ2V0Py50eXBlKSkge1xuICAgICAgY29uc3QgY2hpbGQgPSBuZXcgV2lkZ2V0QnVpbGRlcigpO1xuICAgICAgY2hpbGQubGFyZ2VUZXh0Qm94KG9wdGlvbnMpO1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS5jaGlsZHJlbiEucHVzaChjaGlsZC5idWlsZCgpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLndpZGdldCA9IHtcbiAgICAgICAgdHlwZTogJ2xhcmdlLXRleHQtZWRpdG9yJyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICByaWNoVGV4dChvcHRpb25zPzogUmljaFRleHRPcHRpb25zKTogSVdpZGdldEJ1aWxkZXIge1xuICAgIGlmICh0aGlzLmlzQ29udGFpbmVyV2lkZ2V0VHlwZSh0aGlzLndpZGdldFN0YXRlLndpZGdldD8udHlwZSkpIHtcbiAgICAgIGNvbnN0IGNoaWxkID0gbmV3IFdpZGdldEJ1aWxkZXIoKTtcbiAgICAgIGNoaWxkLnJpY2hUZXh0KG9wdGlvbnMpO1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS5jaGlsZHJlbiEucHVzaChjaGlsZC5idWlsZCgpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLndpZGdldCA9IHtcbiAgICAgICAgdHlwZTogJ3JpY2gtdGV4dC1lZGl0b3InLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHBhc3N3b3JkQm94KG9wdGlvbnM/OiBQYXNzd29yZEJveE9wdGlvbnMpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgaWYgKHRoaXMuaXNDb250YWluZXJXaWRnZXRUeXBlKHRoaXMud2lkZ2V0U3RhdGUud2lkZ2V0Py50eXBlKSkge1xuICAgICAgY29uc3QgY2hpbGQgPSBuZXcgV2lkZ2V0QnVpbGRlcigpO1xuICAgICAgY2hpbGQucGFzc3dvcmRCb3gob3B0aW9ucyk7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLmNoaWxkcmVuIS5wdXNoKGNoaWxkLmJ1aWxkKCkpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUud2lkZ2V0ID0ge1xuICAgICAgICB0eXBlOiAncGFzc3dvcmQtZWRpdG9yJyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICBudW1iZXJCb3gob3B0aW9ucz86IE51bWJlckJveE9wdGlvbnMpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgaWYgKHRoaXMuaXNDb250YWluZXJXaWRnZXRUeXBlKHRoaXMud2lkZ2V0U3RhdGUud2lkZ2V0Py50eXBlKSkge1xuICAgICAgY29uc3QgY2hpbGQgPSBuZXcgV2lkZ2V0QnVpbGRlcigpO1xuICAgICAgY2hpbGQubnVtYmVyQm94KG9wdGlvbnMpO1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS5jaGlsZHJlbiEucHVzaChjaGlsZC5idWlsZCgpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLndpZGdldCA9IHtcbiAgICAgICAgdHlwZTogJ251bWJlci1lZGl0b3InLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEJveChvcHRpb25zOiBTZWxlY3RCb3hPcHRpb25zKTogSVdpZGdldEJ1aWxkZXIge1xuICAgIGlmICh0aGlzLmlzQ29udGFpbmVyV2lkZ2V0VHlwZSh0aGlzLndpZGdldFN0YXRlLndpZGdldD8udHlwZSkpIHtcbiAgICAgIGNvbnN0IGNoaWxkID0gbmV3IFdpZGdldEJ1aWxkZXIoKTtcbiAgICAgIGNoaWxkLnNlbGVjdEJveChvcHRpb25zKTtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUuY2hpbGRyZW4hLnB1c2goY2hpbGQuYnVpbGQoKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS53aWRnZXQgPSB7XG4gICAgICAgIHR5cGU6ICdzZWxlY3QtZWRpdG9yJyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICBsb29rdXBCb3gob3B0aW9uczogTG9va3VwQm94T3B0aW9ucyk6IElXaWRnZXRCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5pc0NvbnRhaW5lcldpZGdldFR5cGUodGhpcy53aWRnZXRTdGF0ZS53aWRnZXQ/LnR5cGUpKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IG5ldyBXaWRnZXRCdWlsZGVyKCk7XG4gICAgICBjaGlsZC5sb29rdXBCb3gob3B0aW9ucyk7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLmNoaWxkcmVuIS5wdXNoKGNoaWxkLmJ1aWxkKCkpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUud2lkZ2V0ID0ge1xuICAgICAgICB0eXBlOiAnbG9va3VwLWVkaXRvcicsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0aW9uTGlzdChvcHRpb25zOiBTZWxlY3Rpb25MaXN0T3B0aW9ucyk6IElXaWRnZXRCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5pc0NvbnRhaW5lcldpZGdldFR5cGUodGhpcy53aWRnZXRTdGF0ZS53aWRnZXQ/LnR5cGUpKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IG5ldyBXaWRnZXRCdWlsZGVyKCk7XG4gICAgICBjaGlsZC5zZWxlY3Rpb25MaXN0KG9wdGlvbnMpO1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS5jaGlsZHJlbiEucHVzaChjaGlsZC5idWlsZCgpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLndpZGdldCA9IHtcbiAgICAgICAgdHlwZTogJ3NlbGVjdGlvbi1saXN0JyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICBkYXRlVGltZUJveChvcHRpb25zPzogRGF0ZVRpbWVCb3hPcHRpb25zKTogSVdpZGdldEJ1aWxkZXIge1xuICAgIGlmICh0aGlzLmlzQ29udGFpbmVyV2lkZ2V0VHlwZSh0aGlzLndpZGdldFN0YXRlLndpZGdldD8udHlwZSkpIHtcbiAgICAgIGNvbnN0IGNoaWxkID0gbmV3IFdpZGdldEJ1aWxkZXIoKTtcbiAgICAgIGNoaWxkLmRhdGVUaW1lQm94KG9wdGlvbnMpO1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS5jaGlsZHJlbiEucHVzaChjaGlsZC5idWlsZCgpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLndpZGdldCA9IHtcbiAgICAgICAgdHlwZTogJ2RhdGUtdGltZS1lZGl0b3InLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVN3aXRjaChvcHRpb25zPzogVG9nZ2xlU3dpdGNoT3B0aW9ucyk6IElXaWRnZXRCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5pc0NvbnRhaW5lcldpZGdldFR5cGUodGhpcy53aWRnZXRTdGF0ZS53aWRnZXQ/LnR5cGUpKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IG5ldyBXaWRnZXRCdWlsZGVyKCk7XG4gICAgICBjaGlsZC50b2dnbGVTd2l0Y2gob3B0aW9ucyk7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLmNoaWxkcmVuIS5wdXNoKGNoaWxkLmJ1aWxkKCkpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUud2lkZ2V0ID0ge1xuICAgICAgICB0eXBlOiAndG9nZ2xlLWVkaXRvcicsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XG5cbiAgY29sb3JCb3gob3B0aW9ucz86IENvbG9yQm94T3B0aW9ucyk6IElXaWRnZXRCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5pc0NvbnRhaW5lcldpZGdldFR5cGUodGhpcy53aWRnZXRTdGF0ZS53aWRnZXQ/LnR5cGUpKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IG5ldyBXaWRnZXRCdWlsZGVyKCk7XG4gICAgICBjaGlsZC5jb2xvckJveChvcHRpb25zKTtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUuY2hpbGRyZW4hLnB1c2goY2hpbGQuYnVpbGQoKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS53aWRnZXQgPSB7XG4gICAgICAgIHR5cGU6ICdjb2xvci1lZGl0b3InLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIGN1c3RvbVdpZGdldDxUPih0eXBlOiBzdHJpbmcsIG9wdGlvbnM/OiBUKTogSVdpZGdldEJ1aWxkZXIge1xuICAgIGlmICh0aGlzLmlzQ29udGFpbmVyV2lkZ2V0VHlwZSh0aGlzLndpZGdldFN0YXRlLndpZGdldD8udHlwZSkpIHtcbiAgICAgIGNvbnN0IGNoaWxkID0gbmV3IFdpZGdldEJ1aWxkZXIoKTtcbiAgICAgIGNoaWxkLmN1c3RvbVdpZGdldDxUPih0eXBlLCBvcHRpb25zKTtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUuY2hpbGRyZW4hLnB1c2goY2hpbGQuYnVpbGQoKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS53aWRnZXQgPSB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMgYXMgdW5rbm93bixcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICBidWlsZCgpOiBBWFBMYXlvdXROb2RlRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLndpZGdldFN0YXRlLmlkLFxuICAgICAgbmFtZTogdGhpcy53aWRnZXRTdGF0ZS5uYW1lLFxuICAgICAgd2lkZ2V0OiB0aGlzLndpZGdldFN0YXRlLndpZGdldCxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLndpZGdldFN0YXRlLmNoaWxkcmVuLFxuICAgICAgbGF5b3V0OiB0aGlzLndpZGdldFN0YXRlLmxheW91dCxcbiAgICAgIG1vZGU6IHRoaXMud2lkZ2V0U3RhdGUubW9kZSxcbiAgICAgIG9yZGVyOiB0aGlzLndpZGdldFN0YXRlLm9yZGVyLFxuICAgICAgdmlzaWJsZTogdGhpcy53aWRnZXRTdGF0ZS52aXNpYmxlLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMud2lkZ2V0U3RhdGUuZGlzYWJsZWQsXG4gICAgICByZWFkb25seTogdGhpcy53aWRnZXRTdGF0ZS5yZWFkb25seSxcbiAgICB9O1xuICB9XG59XG5cbi8vI2VuZHJlZ2lvblxuIl19","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/widget-core\";\nexport class AXPLayoutRendererComponent {\n constructor() {\n this.renderedNode = {};\n }\n ngOnInit() {\n if (this.builder) {\n this.renderedNode = {\n type: 'block-layout',\n mode: this.builder.mode ?? 'view',\n children: (this.builder.nodes ?? []).map((node) => ({\n type: node.widget?.type ?? 'text-block-layout',\n mode: node.mode ?? 'view',\n children: (node.children ?? []).map((child) => ({\n type: child.widget?.type ?? 'text-block-layout',\n mode: child.mode ?? 'view',\n })),\n })),\n };\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: AXPLayoutRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.2.4\", type: AXPLayoutRendererComponent, isStandalone: true, selector: \"axp-layout-renderer\", inputs: { builder: \"builder\" }, ngImport: i0, template: `\n <axp-widgets-container>\n <ng-container \n axp-widget-renderer \n [node]=\"renderedNode\" \n [mode]=\"builder?.mode ?? 'view'\">\n </ng-container>\n </axp-widgets-container>\n `, isInline: true, styles: [\":host{display:block;width:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i1.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i1.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: AXPLayoutRendererComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-layout-renderer', standalone: true, imports: [CommonModule, AXPWidgetCoreModule], template: `\n <axp-widgets-container>\n <ng-container \n axp-widget-renderer \n [node]=\"renderedNode\" \n [mode]=\"builder?.mode ?? 'view'\">\n </ng-container>\n </axp-widgets-container>\n `, styles: [\":host{display:block;width:100%}\\n\"] }]\n }], propDecorators: { builder: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9sYXlvdXQtcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQWlCLE1BQU0scUNBQXFDLENBQUM7OztBQXVCekYsTUFBTSxPQUFPLDBCQUEwQjtJQXBCdkM7UUF1QkUsaUJBQVksR0FBa0IsRUFBbUIsQ0FBQztLQWtCbkQ7SUFoQkMsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUc7Z0JBQ2xCLElBQUksRUFBRSxjQUFjO2dCQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTTtnQkFDakMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNsRCxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksbUJBQW1CO29CQUM5QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNO29CQUN6QixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDOUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLG1CQUFtQjt3QkFDL0MsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksTUFBTTtxQkFDM0IsQ0FBQyxDQUFDO2lCQUNKLENBQUMsQ0FBQzthQUNhLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7OEdBcEJVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLCtHQWhCM0I7Ozs7Ozs7O0dBUVQsMEdBVFMsWUFBWSw4QkFBRSxtQkFBbUI7OzJGQWlCaEMsMEJBQTBCO2tCQXBCdEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDLFlBQ2xDOzs7Ozs7OztHQVFUOzhCQVNRLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVNb2R1bGUsIEFYUFdpZGdldE5vZGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXREZWZpbml0aW9uIH0gZnJvbSAnLi9sYXlvdXQtYnVpbGRlci50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1sYXlvdXQtcmVuZGVyZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWFBXaWRnZXRDb3JlTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YXhwLXdpZGdldHMtY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciBcbiAgICAgICAgYXhwLXdpZGdldC1yZW5kZXJlciBcbiAgICAgICAgW25vZGVdPVwicmVuZGVyZWROb2RlXCIgXG4gICAgICAgIFttb2RlXT1cImJ1aWxkZXI/Lm1vZGUgPz8gJ3ZpZXcnXCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2F4cC13aWRnZXRzLWNvbnRhaW5lcj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBBWFBMYXlvdXRSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGJ1aWxkZXI/OiBBWFBMYXlvdXREZWZpbml0aW9uO1xuICBcbiAgcmVuZGVyZWROb2RlOiBBWFBXaWRnZXROb2RlID0ge30gYXMgQVhQV2lkZ2V0Tm9kZTtcbiAgXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmJ1aWxkZXIpIHtcbiAgICAgIHRoaXMucmVuZGVyZWROb2RlID0ge1xuICAgICAgICB0eXBlOiAnYmxvY2stbGF5b3V0JyxcbiAgICAgICAgbW9kZTogdGhpcy5idWlsZGVyLm1vZGUgPz8gJ3ZpZXcnLFxuICAgICAgICBjaGlsZHJlbjogKHRoaXMuYnVpbGRlci5ub2RlcyA/PyBbXSkubWFwKChub2RlKSA9PiAoe1xuICAgICAgICAgIHR5cGU6IG5vZGUud2lkZ2V0Py50eXBlID8/ICd0ZXh0LWJsb2NrLWxheW91dCcsXG4gICAgICAgICAgbW9kZTogbm9kZS5tb2RlID8/ICd2aWV3JyxcbiAgICAgICAgICBjaGlsZHJlbjogKG5vZGUuY2hpbGRyZW4gPz8gW10pLm1hcCgoY2hpbGQpID0+ICh7XG4gICAgICAgICAgICB0eXBlOiBjaGlsZC53aWRnZXQ/LnR5cGUgPz8gJ3RleHQtYmxvY2stbGF5b3V0JyxcbiAgICAgICAgICAgIG1vZGU6IGNoaWxkLm1vZGUgPz8gJ3ZpZXcnLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSkpLFxuICAgICAgfSBhcyBBWFBXaWRnZXROb2RlO1xuICAgIH1cbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXPLayoutBuilderService } from './layout-builder.service';\nimport { AXPLayoutRendererComponent } from './layout-renderer.component';\nimport * as i0 from \"@angular/core\";\nexport class LayoutBuilderModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: LayoutBuilderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: LayoutBuilderModule, imports: [CommonModule, AXPLayoutRendererComponent], exports: [AXPLayoutRendererComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: LayoutBuilderModule, providers: [AXPLayoutBuilderService], imports: [CommonModule, AXPLayoutRendererComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: LayoutBuilderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AXPLayoutRendererComponent],\n providers: [AXPLayoutBuilderService],\n exports: [AXPLayoutRendererComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWJ1aWxkZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2xheW91dC1idWlsZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFPekUsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFKcEIsWUFBWSxFQUFFLDBCQUEwQixhQUV4QywwQkFBMEI7K0dBRXpCLG1CQUFtQixhQUhuQixDQUFDLHVCQUF1QixDQUFDLFlBRDFCLFlBQVksRUFBRSwwQkFBMEI7OzJGQUl2QyxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLDBCQUEwQixDQUFDO29CQUNuRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vbGF5b3V0LWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0LXJlbmRlcmVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFYUExheW91dFJlbmRlcmVyQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbQVhQTGF5b3V0QnVpbGRlclNlcnZpY2VdLFxuICBleHBvcnRzOiBbQVhQTGF5b3V0UmVuZGVyZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRCdWlsZGVyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLWxheW91dC1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvYWNvcmV4LXBsYXRmb3JtLWxheW91dC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|