@hmcts/ccd-case-ui-toolkit 7.0.21-CVE-fix → 7.0.21-CVE-fix-02
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/esm2020/lib/app.config.mjs +45 -0
- package/esm2020/lib/components/banners/alert/alert-icon-class.pipe.mjs +25 -0
- package/esm2020/lib/components/banners/alert/alert.component.mjs +95 -0
- package/esm2020/lib/components/banners/alert/alert.module.mjs +32 -0
- package/esm2020/lib/components/banners/banners.module.mjs +32 -0
- package/esm2020/lib/components/banners/notification-banner/notification-banner.component.mjs +120 -0
- package/esm2020/lib/components/banners/notification-banner/notification-banner.module.mjs +19 -0
- package/esm2020/lib/components/body/body.component.mjs +20 -0
- package/esm2020/lib/components/body/body.module.mjs +20 -0
- package/esm2020/lib/components/footer/footer.component.mjs +105 -0
- package/esm2020/lib/components/footer/footers.module.mjs +25 -0
- package/esm2020/lib/components/form/date-input/date-input.component.mjs +331 -0
- package/esm2020/lib/components/form/form.module.mjs +29 -0
- package/esm2020/lib/components/header/header-bar/header-bar.component.mjs +97 -0
- package/esm2020/lib/components/header/headers.module.mjs +25 -0
- package/esm2020/lib/components/header/navigation/navigation-item.component.mjs +41 -0
- package/esm2020/lib/components/header/navigation/navigation.component.mjs +24 -0
- package/esm2020/lib/components/header/phase/phase.component.mjs +45 -0
- package/esm2020/lib/components/tabs/tab.component.mjs +28 -0
- package/esm2020/lib/components/tabs/tabs.component.mjs +79 -0
- package/esm2020/lib/components/tabs/tabs.module.mjs +38 -0
- package/esm2020/lib/shared/commons/address-validation-constants.mjs +13 -0
- package/esm2020/lib/shared/commons/case-edit-data/case-edit-data.module.mjs +19 -0
- package/esm2020/lib/shared/commons/case-edit-data/case-edit-data.service.mjs +47 -0
- package/esm2020/lib/shared/commons/constants.mjs +13 -0
- package/esm2020/lib/shared/components/activity/activity-banner/activity-banner.component.mjs +39 -0
- package/esm2020/lib/shared/components/activity/activity-icon/activity-icon.component.mjs +33 -0
- package/esm2020/lib/shared/components/activity/activity.component.mjs +151 -0
- package/esm2020/lib/shared/components/activity/activity.module.mjs +55 -0
- package/esm2020/lib/shared/components/case-editor/case-access-utils/index.mjs +105 -0
- package/esm2020/lib/shared/components/case-editor/case-create/case-create.component.mjs +87 -0
- package/esm2020/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +432 -0
- package/esm2020/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +125 -0
- package/esm2020/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +135 -0
- package/esm2020/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.mjs +69 -0
- package/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +751 -0
- package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +542 -0
- package/esm2020/lib/shared/components/case-editor/case-editor.module.mjs +213 -0
- package/esm2020/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +86 -0
- package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +80 -0
- package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +153 -0
- package/esm2020/lib/shared/components/case-editor/case-progress/case-progress.component.mjs +77 -0
- package/esm2020/lib/shared/components/case-editor/domain/confirmation.model.mjs +21 -0
- package/esm2020/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.mjs +4 -0
- package/esm2020/lib/shared/components/case-editor/domain/wizard-page-field.model.mjs +3 -0
- package/esm2020/lib/shared/components/case-editor/domain/wizard-page.model.mjs +26 -0
- package/esm2020/lib/shared/components/case-editor/domain/wizard.model.mjs +54 -0
- package/esm2020/lib/shared/components/case-editor/services/case-edit-wizard.guard.mjs +93 -0
- package/esm2020/lib/shared/components/case-editor/services/case-flag-state.service.mjs +19 -0
- package/esm2020/lib/shared/components/case-editor/services/case-worker.service.mjs +32 -0
- package/esm2020/lib/shared/components/case-editor/services/case.notifier.mjs +51 -0
- package/esm2020/lib/shared/components/case-editor/services/cases.service.mjs +294 -0
- package/esm2020/lib/shared/components/case-editor/services/convert-href-to-router.service.mjs +41 -0
- package/esm2020/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +143 -0
- package/esm2020/lib/shared/components/case-editor/services/event-trigger.service.mjs +20 -0
- package/esm2020/lib/shared/components/case-editor/services/judicial-worker.service.mjs +32 -0
- package/esm2020/lib/shared/components/case-editor/services/page-validation.service.mjs +53 -0
- package/esm2020/lib/shared/components/case-editor/services/valid-page-list-caseFields.service.mjs +39 -0
- package/esm2020/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.mjs +117 -0
- package/esm2020/lib/shared/components/case-editor/services/work-allocation.service.mjs +209 -0
- package/esm2020/lib/shared/components/case-header/case-header.component.mjs +61 -0
- package/esm2020/lib/shared/components/case-header/case-header.module.mjs +33 -0
- package/esm2020/lib/shared/components/case-history/case-history.component.mjs +242 -0
- package/esm2020/lib/shared/components/case-history/case-history.module.mjs +64 -0
- package/esm2020/lib/shared/components/case-history/domain/case-history.model.mjs +29 -0
- package/esm2020/lib/shared/components/case-history/services/case-history.service.mjs +40 -0
- package/esm2020/lib/shared/components/case-list/case-list.component.mjs +362 -0
- package/esm2020/lib/shared/components/case-list/case-list.module.mjs +47 -0
- package/esm2020/lib/shared/components/case-list-filters/case-list-filters.component.mjs +52 -0
- package/esm2020/lib/shared/components/case-list-filters/case-list-filters.module.mjs +64 -0
- package/esm2020/lib/shared/components/case-timeline/case-timeline.component.mjs +109 -0
- package/esm2020/lib/shared/components/case-timeline/case-timeline.module.mjs +52 -0
- package/esm2020/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.mjs +247 -0
- package/esm2020/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +298 -0
- package/esm2020/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +72 -0
- package/esm2020/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +141 -0
- package/esm2020/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +681 -0
- package/esm2020/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +58 -0
- package/esm2020/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +241 -0
- package/esm2020/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +199 -0
- package/esm2020/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.mjs +47 -0
- package/esm2020/lib/shared/components/case-viewer/case-view/case-view.component.mjs +98 -0
- package/esm2020/lib/shared/components/case-viewer/case-viewer.component.mjs +128 -0
- package/esm2020/lib/shared/components/case-viewer/case-viewer.module.mjs +191 -0
- package/esm2020/lib/shared/components/case-viewer/printer/case-printer.component.mjs +110 -0
- package/esm2020/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.mjs +60 -0
- package/esm2020/lib/shared/components/case-viewer/services/case.resolver.mjs +131 -0
- package/esm2020/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +64 -0
- package/esm2020/lib/shared/components/create-case-filters/create-case-filters-selection.model.mjs +8 -0
- package/esm2020/lib/shared/components/create-case-filters/create-case-filters.component.mjs +275 -0
- package/esm2020/lib/shared/components/create-case-filters/create-case-filters.module.mjs +44 -0
- package/esm2020/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.mjs +57 -0
- package/esm2020/lib/shared/components/dialogs/dialogs.module.mjs +51 -0
- package/esm2020/lib/shared/components/dialogs/document-dialog/document-dialog.component.mjs +59 -0
- package/esm2020/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.mjs +57 -0
- package/esm2020/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.mjs +61 -0
- package/esm2020/lib/shared/components/error/callback-errors.component.mjs +148 -0
- package/esm2020/lib/shared/components/error/domain/error-context.mjs +3 -0
- package/esm2020/lib/shared/components/error/errors.module.mjs +33 -0
- package/esm2020/lib/shared/components/error-message/error-message.component.mjs +43 -0
- package/esm2020/lib/shared/components/error-message/error-message.module.mjs +41 -0
- package/esm2020/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +59 -0
- package/esm2020/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +53 -0
- package/esm2020/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +104 -0
- package/esm2020/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.mjs +68 -0
- package/esm2020/lib/shared/components/event-start/components/task-conflict/task-conflict.component.mjs +58 -0
- package/esm2020/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +53 -0
- package/esm2020/lib/shared/components/event-start/event-guard/event-start.guard.mjs +94 -0
- package/esm2020/lib/shared/components/event-start/event-start.component.mjs +49 -0
- package/esm2020/lib/shared/components/event-start/event-start.module.mjs +71 -0
- package/esm2020/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.mjs +29 -0
- package/esm2020/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +168 -0
- package/esm2020/lib/shared/components/event-trigger/event-trigger.component.mjs +111 -0
- package/esm2020/lib/shared/components/event-trigger/event-trigger.module.mjs +37 -0
- package/esm2020/lib/shared/components/loading-spinner/loading-spinner.component.mjs +27 -0
- package/esm2020/lib/shared/components/loading-spinner/loading-spinner.module.mjs +29 -0
- package/esm2020/lib/shared/components/pagination/pagination.component.mjs +262 -0
- package/esm2020/lib/shared/components/pagination/pagination.module.mjs +35 -0
- package/esm2020/lib/shared/components/palette/address/address-option.model.mjs +21 -0
- package/esm2020/lib/shared/components/palette/address/write-address-field.component.mjs +280 -0
- package/esm2020/lib/shared/components/palette/base-field/abstract-field-read.component.mjs +31 -0
- package/esm2020/lib/shared/components/palette/base-field/abstract-field-write.component.mjs +44 -0
- package/esm2020/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +83 -0
- package/esm2020/lib/shared/components/palette/base-field/field-read-label.component.mjs +86 -0
- package/esm2020/lib/shared/components/palette/base-field/field-read.component.mjs +85 -0
- package/esm2020/lib/shared/components/palette/base-field/field-write.component.mjs +74 -0
- package/esm2020/lib/shared/components/palette/base-field/payment-field.component.mjs +35 -0
- package/esm2020/lib/shared/components/palette/case-file-view/case-file-view-field.component.mjs +171 -0
- package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.mjs +48 -0
- package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.mjs +48 -0
- package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +340 -0
- package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.mjs +153 -0
- package/esm2020/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.mjs +94 -0
- package/esm2020/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +190 -0
- package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +288 -0
- package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.mjs +207 -0
- package/esm2020/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +165 -0
- package/esm2020/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +219 -0
- package/esm2020/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +306 -0
- package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +200 -0
- package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +343 -0
- package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +267 -0
- package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +510 -0
- package/esm2020/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.mjs +41 -0
- package/esm2020/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.mjs +41 -0
- package/esm2020/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.mjs +109 -0
- package/esm2020/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.mjs +77 -0
- package/esm2020/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +246 -0
- package/esm2020/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +686 -0
- package/esm2020/lib/shared/components/palette/case-link/read-case-link-field.component.mjs +32 -0
- package/esm2020/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +122 -0
- package/esm2020/lib/shared/components/palette/collection/collection-create-checker.service.mjs +42 -0
- package/esm2020/lib/shared/components/palette/collection/read-collection-field.component.mjs +81 -0
- package/esm2020/lib/shared/components/palette/collection/write-collection-field.component.mjs +441 -0
- package/esm2020/lib/shared/components/palette/complex/read-complex-field-collection-table.component.mjs +379 -0
- package/esm2020/lib/shared/components/palette/complex/read-complex-field-raw.component.mjs +53 -0
- package/esm2020/lib/shared/components/palette/complex/read-complex-field-table.component.mjs +78 -0
- package/esm2020/lib/shared/components/palette/complex/read-complex-field.component.mjs +73 -0
- package/esm2020/lib/shared/components/palette/complex/write-complex-field.component.mjs +169 -0
- package/esm2020/lib/shared/components/palette/date/read-date-field.component.mjs +28 -0
- package/esm2020/lib/shared/components/palette/date/write-date-container-field.component.mjs +33 -0
- package/esm2020/lib/shared/components/palette/date/write-date-field.component.mjs +76 -0
- package/esm2020/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +309 -0
- package/esm2020/lib/shared/components/palette/document/document-url.pipe.mjs +24 -0
- package/esm2020/lib/shared/components/palette/document/file-upload-progress.guard.mjs +29 -0
- package/esm2020/lib/shared/components/palette/document/file-upload-state.service.mjs +16 -0
- package/esm2020/lib/shared/components/palette/document/read-document-field.component.mjs +81 -0
- package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +383 -0
- package/esm2020/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.mjs +18 -0
- package/esm2020/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.mjs +36 -0
- package/esm2020/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.mjs +124 -0
- package/esm2020/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.mjs +43 -0
- package/esm2020/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.mjs +145 -0
- package/esm2020/lib/shared/components/palette/dynamic-radio-list/dynamic-radio-list.pipe.mjs +25 -0
- package/esm2020/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.mjs +42 -0
- package/esm2020/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.mjs +124 -0
- package/esm2020/lib/shared/components/palette/email/read-email-field.component.mjs +35 -0
- package/esm2020/lib/shared/components/palette/email/write-email-field.component.mjs +73 -0
- package/esm2020/lib/shared/components/palette/fixed-list/fixed-list.pipe.mjs +23 -0
- package/esm2020/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.mjs +26 -0
- package/esm2020/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.mjs +106 -0
- package/esm2020/lib/shared/components/palette/fixed-radio-list/fixed-radio-list.pipe.mjs +18 -0
- package/esm2020/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.mjs +26 -0
- package/esm2020/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.mjs +95 -0
- package/esm2020/lib/shared/components/palette/history/case-history-viewer-field.component.mjs +16 -0
- package/esm2020/lib/shared/components/palette/history/event-log/event-log-details.component.mjs +97 -0
- package/esm2020/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +225 -0
- package/esm2020/lib/shared/components/palette/history/event-log/event-log.component.mjs +72 -0
- package/esm2020/lib/shared/components/palette/judicial-user/read-judicial-user-field.component.mjs +45 -0
- package/esm2020/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.mjs +242 -0
- package/esm2020/lib/shared/components/palette/label/label-field.component.mjs +50 -0
- package/esm2020/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +108 -0
- package/esm2020/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +189 -0
- package/esm2020/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +530 -0
- package/esm2020/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +204 -0
- package/esm2020/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +280 -0
- package/esm2020/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +66 -0
- package/esm2020/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +201 -0
- package/esm2020/lib/shared/components/palette/linked-cases/domain/linked-cases.model.mjs +22 -0
- package/esm2020/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +163 -0
- package/esm2020/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +132 -0
- package/esm2020/lib/shared/components/palette/linked-cases/utils/validators.utils.mjs +27 -0
- package/esm2020/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +229 -0
- package/esm2020/lib/shared/components/palette/markdown/markdown-component.module.mjs +40 -0
- package/esm2020/lib/shared/components/palette/markdown/markdown.component.mjs +43 -0
- package/esm2020/lib/shared/components/palette/money-gbp/money-gbp-input.component.mjs +123 -0
- package/esm2020/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.mjs +47 -0
- package/esm2020/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.mjs +78 -0
- package/esm2020/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.mjs +45 -0
- package/esm2020/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.mjs +126 -0
- package/esm2020/lib/shared/components/palette/number/read-number-field.component.mjs +24 -0
- package/esm2020/lib/shared/components/palette/number/write-number-field.component.mjs +73 -0
- package/esm2020/lib/shared/components/palette/order-summary/fee-value.model.mjs +3 -0
- package/esm2020/lib/shared/components/palette/order-summary/fee.model.mjs +4 -0
- package/esm2020/lib/shared/components/palette/order-summary/order-summary.model.mjs +3 -0
- package/esm2020/lib/shared/components/palette/order-summary/read-order-summary-field.component.mjs +73 -0
- package/esm2020/lib/shared/components/palette/order-summary/read-order-summary-row.component.mjs +43 -0
- package/esm2020/lib/shared/components/palette/order-summary/write-order-summary-field.component.mjs +44 -0
- package/esm2020/lib/shared/components/palette/organisation/read-organisation-field-raw.component.mjs +83 -0
- package/esm2020/lib/shared/components/palette/organisation/read-organisation-field-table.component.mjs +87 -0
- package/esm2020/lib/shared/components/palette/organisation/read-organisation-field.component.mjs +56 -0
- package/esm2020/lib/shared/components/palette/organisation/write-organisation-complex-field.component.mjs +33 -0
- package/esm2020/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +384 -0
- package/esm2020/lib/shared/components/palette/palette.module.mjs +738 -0
- package/esm2020/lib/shared/components/palette/palette.service.mjs +155 -0
- package/esm2020/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.mjs +24 -0
- package/esm2020/lib/shared/components/palette/phone-uk/read-phone-uk-field.component.mjs +22 -0
- package/esm2020/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.mjs +73 -0
- package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +42 -0
- package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +144 -0
- package/esm2020/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.mjs +64 -0
- package/esm2020/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.mjs +60 -0
- package/esm2020/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +281 -0
- package/esm2020/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +327 -0
- package/esm2020/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.mjs +22 -0
- package/esm2020/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +164 -0
- package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.mjs +74 -0
- package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.mjs +107 -0
- package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +201 -0
- package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +101 -0
- package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.mjs +21 -0
- package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +38 -0
- package/esm2020/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +121 -0
- package/esm2020/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +22 -0
- package/esm2020/lib/shared/components/palette/text/read-text-field.component.mjs +24 -0
- package/esm2020/lib/shared/components/palette/text/write-text-field.component.mjs +77 -0
- package/esm2020/lib/shared/components/palette/text-area/read-text-area-field.component.mjs +24 -0
- package/esm2020/lib/shared/components/palette/text-area/write-text-area-field.component.mjs +87 -0
- package/esm2020/lib/shared/components/palette/unsupported-field.component.mjs +17 -0
- package/esm2020/lib/shared/components/palette/utils/dash.pipe.mjs +16 -0
- package/esm2020/lib/shared/components/palette/utils/date.pipe.mjs +132 -0
- package/esm2020/lib/shared/components/palette/utils/field-label.pipe.mjs +29 -0
- package/esm2020/lib/shared/components/palette/utils/first-error.pipe.mjs +59 -0
- package/esm2020/lib/shared/components/palette/utils/is-compound.pipe.mjs +43 -0
- package/esm2020/lib/shared/components/palette/utils/is-mandatory.pipe.mjs +21 -0
- package/esm2020/lib/shared/components/palette/utils/is-read-only-and-not-collection.pipe.mjs +31 -0
- package/esm2020/lib/shared/components/palette/utils/is-read-only.pipe.mjs +21 -0
- package/esm2020/lib/shared/components/palette/utils/utils.module.mjs +71 -0
- package/esm2020/lib/shared/components/palette/waystopay/waystopay-field.component.mjs +34 -0
- package/esm2020/lib/shared/components/palette/yes-no/read-yes-no-field.component.mjs +34 -0
- package/esm2020/lib/shared/components/palette/yes-no/write-yes-no-field.component.mjs +100 -0
- package/esm2020/lib/shared/components/palette/yes-no/yes-no.service.mjs +50 -0
- package/esm2020/lib/shared/components/search-filters/domain/search-input.model.mjs +10 -0
- package/esm2020/lib/shared/components/search-filters/search-filters-wrapper.component.mjs +58 -0
- package/esm2020/lib/shared/components/search-filters/search-filters.component.mjs +326 -0
- package/esm2020/lib/shared/components/search-filters/search-filters.module.mjs +71 -0
- package/esm2020/lib/shared/components/search-result/search-result.component.mjs +815 -0
- package/esm2020/lib/shared/components/search-result/search-result.module.mjs +82 -0
- package/esm2020/lib/shared/components/workbasket-filters/workbasket-filters.component.mjs +479 -0
- package/esm2020/lib/shared/components/workbasket-filters/workbasket-filters.module.mjs +67 -0
- package/esm2020/lib/shared/directives/conditional-show/conditional-show-form.directive.mjs +164 -0
- package/esm2020/lib/shared/directives/conditional-show/conditional-show.module.mjs +33 -0
- package/esm2020/lib/shared/directives/conditional-show/domain/conditional-show.model.mjs +200 -0
- package/esm2020/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.mjs +19 -0
- package/esm2020/lib/shared/directives/conditional-show/services/grey-bar.service.mjs +47 -0
- package/esm2020/lib/shared/directives/focus-element/focus-element.directive.mjs +36 -0
- package/esm2020/lib/shared/directives/focus-element/focus-element.module.mjs +21 -0
- package/esm2020/lib/shared/directives/substitutor/label-substitutor.directive.mjs +82 -0
- package/esm2020/lib/shared/directives/substitutor/label-substitutor.module.mjs +30 -0
- package/esm2020/lib/shared/directives/substitutor/services/placeholder.service.mjs +200 -0
- package/esm2020/lib/shared/domain/activity/activity.model.mjs +10 -0
- package/esm2020/lib/shared/domain/addresses/address.model.mjs +13 -0
- package/esm2020/lib/shared/domain/alert/alert.model.mjs +3 -0
- package/esm2020/lib/shared/domain/case-details.model.mjs +4 -0
- package/esm2020/lib/shared/domain/case-event-data.model.mjs +4 -0
- package/esm2020/lib/shared/domain/case-file-view/case-file-view-category.model.mjs +3 -0
- package/esm2020/lib/shared/domain/case-file-view/case-file-view-document.model.mjs +4 -0
- package/esm2020/lib/shared/domain/case-file-view/categories-and-documents.model.mjs +7 -0
- package/esm2020/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.mjs +117 -0
- package/esm2020/lib/shared/domain/case-flag/flag-type.model.mjs +28 -0
- package/esm2020/lib/shared/domain/case-flag/hmcts-service-detail.model.mjs +10 -0
- package/esm2020/lib/shared/domain/case-view/case-event-trigger.model.mjs +23 -0
- package/esm2020/lib/shared/domain/case-view/case-print-document.model.mjs +3 -0
- package/esm2020/lib/shared/domain/case-view/case-tab.model.mjs +12 -0
- package/esm2020/lib/shared/domain/case-view/case-view-event.model.mjs +4 -0
- package/esm2020/lib/shared/domain/case-view/case-view-trigger.model.mjs +3 -0
- package/esm2020/lib/shared/domain/case-view/case-view.model.mjs +17 -0
- package/esm2020/lib/shared/domain/definition/access-control-list.model.mjs +3 -0
- package/esm2020/lib/shared/domain/definition/banner.model.mjs +3 -0
- package/esm2020/lib/shared/domain/definition/case-event.model.mjs +3 -0
- package/esm2020/lib/shared/domain/definition/case-field.model.mjs +198 -0
- package/esm2020/lib/shared/domain/definition/case-state.model.mjs +3 -0
- package/esm2020/lib/shared/domain/definition/case-type-lite.model.mjs +5 -0
- package/esm2020/lib/shared/domain/definition/case-type.model.mjs +12 -0
- package/esm2020/lib/shared/domain/definition/event-case-field.model.mjs +4 -0
- package/esm2020/lib/shared/domain/definition/field-type.model.mjs +22 -0
- package/esm2020/lib/shared/domain/definition/fixed-list-item.model.mjs +3 -0
- package/esm2020/lib/shared/domain/definition/jurisdiction.model.mjs +3 -0
- package/esm2020/lib/shared/domain/document/document-data.model.mjs +14 -0
- package/esm2020/lib/shared/domain/draft.model.mjs +11 -0
- package/esm2020/lib/shared/domain/http/http-error.model.mjs +34 -0
- package/esm2020/lib/shared/domain/organisation/organisation-converter.mjs +42 -0
- package/esm2020/lib/shared/domain/pagination-metadata.model.mjs +3 -0
- package/esm2020/lib/shared/domain/profile/profile.model.mjs +29 -0
- package/esm2020/lib/shared/domain/search/field.model.mjs +11 -0
- package/esm2020/lib/shared/domain/search/search-result-view-column.model.mjs +3 -0
- package/esm2020/lib/shared/domain/search/search-result-view-item.model.mjs +12 -0
- package/esm2020/lib/shared/domain/search/search-result-view.model.mjs +23 -0
- package/esm2020/lib/shared/domain/search/sorting/sort-parameters.mjs +7 -0
- package/esm2020/lib/shared/domain/workbasket/workbasket-input.model.mjs +5 -0
- package/esm2020/lib/shared/fixture/case-field-builder.mjs +69 -0
- package/esm2020/lib/shared/pipes/case-reference/case-reference.pipe.mjs +33 -0
- package/esm2020/lib/shared/pipes/case-title/ccd-case-title.pipe.mjs +29 -0
- package/esm2020/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.mjs +32 -0
- package/esm2020/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.mjs +29 -0
- package/esm2020/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +39 -0
- package/esm2020/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +173 -0
- package/esm2020/lib/shared/pipes/complex/ccd-tab-fields.pipe.mjs +31 -0
- package/esm2020/lib/shared/pipes/complex/fields-filter.pipe.mjs +105 -0
- package/esm2020/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.mjs +16 -0
- package/esm2020/lib/shared/pipes/link-cases-from-reason-code/ccd-link-cases-from-reason-code.pipe.mjs +27 -0
- package/esm2020/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.mjs +27 -0
- package/esm2020/lib/shared/pipes/pipes.module.mjs +64 -0
- package/esm2020/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.mjs +24 -0
- package/esm2020/lib/shared/services/activity/activity.polling.service.mjs +114 -0
- package/esm2020/lib/shared/services/activity/activity.service.mjs +82 -0
- package/esm2020/lib/shared/services/addresses/addresses.service.mjs +63 -0
- package/esm2020/lib/shared/services/alert/alert.service.mjs +142 -0
- package/esm2020/lib/shared/services/auth/auth.service.mjs +33 -0
- package/esm2020/lib/shared/services/banners/banners.service.mjs +33 -0
- package/esm2020/lib/shared/services/browser/browser.service.mjs +24 -0
- package/esm2020/lib/shared/services/case-fields/case-field.service.mjs +34 -0
- package/esm2020/lib/shared/services/case-fields/format-translator.service.mjs +242 -0
- package/esm2020/lib/shared/services/case-file-view/case-file-view.service.mjs +46 -0
- package/esm2020/lib/shared/services/case-flag/case-flag-refdata.service.mjs +102 -0
- package/esm2020/lib/shared/services/common-data-service/common-data-service.mjs +28 -0
- package/esm2020/lib/shared/services/definitions/definitions.module.mjs +19 -0
- package/esm2020/lib/shared/services/definitions/definitions.service.mjs +30 -0
- package/esm2020/lib/shared/services/document-management/document-management.service.mjs +112 -0
- package/esm2020/lib/shared/services/draft/draft.service.mjs +86 -0
- package/esm2020/lib/shared/services/error/error-notifier.service.mjs +18 -0
- package/esm2020/lib/shared/services/eventStatusService/event-status.service.mjs +21 -0
- package/esm2020/lib/shared/services/fields/fields.purger.mjs +303 -0
- package/esm2020/lib/shared/services/fields/fields.utils.mjs +615 -0
- package/esm2020/lib/shared/services/form/field-type-sanitiser.mjs +91 -0
- package/esm2020/lib/shared/services/form/form-error.service.mjs +46 -0
- package/esm2020/lib/shared/services/form/form-validators.service.mjs +56 -0
- package/esm2020/lib/shared/services/form/form-value.service.mjs +551 -0
- package/esm2020/lib/shared/services/http/http-error.service.mjs +65 -0
- package/esm2020/lib/shared/services/http/http.service.mjs +93 -0
- package/esm2020/lib/shared/services/jurisdiction/jurisdiction.service.mjs +34 -0
- package/esm2020/lib/shared/services/loading/loading.module.mjs +22 -0
- package/esm2020/lib/shared/services/loading/loading.service.mjs +37 -0
- package/esm2020/lib/shared/services/navigation/navigation-notifier.service.mjs +18 -0
- package/esm2020/lib/shared/services/order/order.service.mjs +39 -0
- package/esm2020/lib/shared/services/organisation/organisation.service.mjs +54 -0
- package/esm2020/lib/shared/services/profile/profile.notifier.mjs +19 -0
- package/esm2020/lib/shared/services/profile/profile.service.mjs +34 -0
- package/esm2020/lib/shared/services/request/request.options.builder.mjs +61 -0
- package/esm2020/lib/shared/services/router/router-helper.service.mjs +20 -0
- package/esm2020/lib/shared/services/search/search.service.mjs +89 -0
- package/esm2020/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.mjs +71 -0
- package/esm2020/lib/shared/services/session/session-storage.service.mjs +34 -0
- package/esm2020/lib/shared/services/utils/retry/retry.service.mjs +86 -0
- package/esm2020/lib/shared/services/window/window.service.mjs +40 -0
- package/esm2020/lib/shared/services/workbasket/workbasket-input-filter.service.mjs +53 -0
- package/esm2020/lib/shared/test/test-route-snapshot-builder.mjs +40 -0
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +38536 -0
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -0
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +35572 -0
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -0
- package/lib/shared/components/case-editor/case-editor.module.d.ts +25 -0
- package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
- package/lib/shared/components/case-header/case-header.module.d.ts +8 -0
- package/lib/shared/components/case-header/case-header.module.d.ts.map +1 -1
- package/lib/shared/components/case-history/case-history.module.d.ts +12 -0
- package/lib/shared/components/case-history/case-history.module.d.ts.map +1 -1
- package/lib/shared/components/case-list/case-list.module.d.ts +11 -0
- package/lib/shared/components/case-list/case-list.module.d.ts.map +1 -1
- package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts +11 -0
- package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts.map +1 -1
- package/lib/shared/components/case-timeline/case-timeline.module.d.ts +11 -0
- package/lib/shared/components/case-timeline/case-timeline.module.d.ts.map +1 -1
- package/lib/shared/components/case-viewer/case-viewer.module.d.ts +36 -0
- package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
- package/lib/shared/components/pagination/pagination.module.d.ts +8 -0
- package/lib/shared/components/pagination/pagination.module.d.ts.map +1 -1
- package/lib/shared/components/palette/markdown/markdown-component.module.d.ts +10 -0
- package/lib/shared/components/palette/markdown/markdown-component.module.d.ts.map +1 -1
- package/lib/shared/components/palette/palette.module.d.ts +148 -0
- package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
- package/lib/shared/components/search-filters/search-filters.module.d.ts +11 -0
- package/lib/shared/components/search-filters/search-filters.module.d.ts.map +1 -1
- package/lib/shared/components/search-result/search-result.module.d.ts +15 -0
- package/lib/shared/components/search-result/search-result.module.d.ts.map +1 -1
- package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts +10 -0
- package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts.map +1 -1
- package/package.json +11 -5
- package/esm2022/lib/app.config.mjs +0 -93
- package/esm2022/lib/components/banners/alert/alert-icon-class.pipe.mjs +0 -25
- package/esm2022/lib/components/banners/alert/alert.component.mjs +0 -94
- package/esm2022/lib/components/banners/alert/alert.module.mjs +0 -32
- package/esm2022/lib/components/banners/banners.module.mjs +0 -32
- package/esm2022/lib/components/banners/notification-banner/notification-banner.component.mjs +0 -119
- package/esm2022/lib/components/banners/notification-banner/notification-banner.module.mjs +0 -19
- package/esm2022/lib/components/body/body.component.mjs +0 -20
- package/esm2022/lib/components/body/body.module.mjs +0 -20
- package/esm2022/lib/components/footer/footer.component.mjs +0 -109
- package/esm2022/lib/components/footer/footers.module.mjs +0 -25
- package/esm2022/lib/components/form/date-input/date-input.component.mjs +0 -342
- package/esm2022/lib/components/form/form.module.mjs +0 -29
- package/esm2022/lib/components/header/header-bar/header-bar.component.mjs +0 -98
- package/esm2022/lib/components/header/headers.module.mjs +0 -25
- package/esm2022/lib/components/header/navigation/navigation-item.component.mjs +0 -44
- package/esm2022/lib/components/header/navigation/navigation.component.mjs +0 -25
- package/esm2022/lib/components/header/phase/phase.component.mjs +0 -48
- package/esm2022/lib/components/tabs/tab.component.mjs +0 -31
- package/esm2022/lib/components/tabs/tabs.component.mjs +0 -82
- package/esm2022/lib/components/tabs/tabs.module.mjs +0 -38
- package/esm2022/lib/shared/commons/address-validation-constants.mjs +0 -13
- package/esm2022/lib/shared/commons/case-edit-data/case-edit-data.module.mjs +0 -19
- package/esm2022/lib/shared/commons/case-edit-data/case-edit-data.service.mjs +0 -46
- package/esm2022/lib/shared/commons/constants.mjs +0 -13
- package/esm2022/lib/shared/components/activity/activity-banner/activity-banner.component.mjs +0 -42
- package/esm2022/lib/shared/components/activity/activity-icon/activity-icon.component.mjs +0 -35
- package/esm2022/lib/shared/components/activity/activity.component.mjs +0 -158
- package/esm2022/lib/shared/components/activity/activity.module.mjs +0 -55
- package/esm2022/lib/shared/components/case-editor/case-access-utils/index.mjs +0 -105
- package/esm2022/lib/shared/components/case-editor/case-create/case-create.component.mjs +0 -95
- package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +0 -463
- package/esm2022/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +0 -131
- package/esm2022/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +0 -140
- package/esm2022/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.mjs +0 -70
- package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +0 -779
- package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +0 -560
- package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +0 -118
- package/esm2022/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +0 -96
- package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +0 -82
- package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +0 -166
- package/esm2022/lib/shared/components/case-editor/case-progress/case-progress.component.mjs +0 -84
- package/esm2022/lib/shared/components/case-editor/domain/confirmation.model.mjs +0 -25
- package/esm2022/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.mjs +0 -9
- package/esm2022/lib/shared/components/case-editor/domain/wizard-page-field.model.mjs +0 -7
- package/esm2022/lib/shared/components/case-editor/domain/wizard-page.model.mjs +0 -33
- package/esm2022/lib/shared/components/case-editor/domain/wizard.model.mjs +0 -55
- package/esm2022/lib/shared/components/case-editor/services/case-edit-wizard.guard.mjs +0 -98
- package/esm2022/lib/shared/components/case-editor/services/case-flag-state.service.mjs +0 -19
- package/esm2022/lib/shared/components/case-editor/services/case-worker.service.mjs +0 -35
- package/esm2022/lib/shared/components/case-editor/services/case.notifier.mjs +0 -53
- package/esm2022/lib/shared/components/case-editor/services/cases.service.mjs +0 -302
- package/esm2022/lib/shared/components/case-editor/services/convert-href-to-router.service.mjs +0 -42
- package/esm2022/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +0 -153
- package/esm2022/lib/shared/components/case-editor/services/event-trigger.service.mjs +0 -18
- package/esm2022/lib/shared/components/case-editor/services/judicial-worker.service.mjs +0 -35
- package/esm2022/lib/shared/components/case-editor/services/page-validation.service.mjs +0 -54
- package/esm2022/lib/shared/components/case-editor/services/valid-page-list-caseFields.service.mjs +0 -40
- package/esm2022/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.mjs +0 -117
- package/esm2022/lib/shared/components/case-editor/services/work-allocation.service.mjs +0 -215
- package/esm2022/lib/shared/components/case-header/case-header.component.mjs +0 -64
- package/esm2022/lib/shared/components/case-header/case-header.module.mjs +0 -25
- package/esm2022/lib/shared/components/case-history/case-history.component.mjs +0 -252
- package/esm2022/lib/shared/components/case-history/case-history.module.mjs +0 -36
- package/esm2022/lib/shared/components/case-history/domain/case-history.model.mjs +0 -37
- package/esm2022/lib/shared/components/case-history/services/case-history.service.mjs +0 -43
- package/esm2022/lib/shared/components/case-list/case-list.component.mjs +0 -373
- package/esm2022/lib/shared/components/case-list/case-list.module.mjs +0 -31
- package/esm2022/lib/shared/components/case-list-filters/case-list-filters.component.mjs +0 -56
- package/esm2022/lib/shared/components/case-list-filters/case-list-filters.module.mjs +0 -39
- package/esm2022/lib/shared/components/case-timeline/case-timeline.component.mjs +0 -115
- package/esm2022/lib/shared/components/case-timeline/case-timeline.module.mjs +0 -32
- package/esm2022/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.mjs +0 -251
- package/esm2022/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +0 -310
- package/esm2022/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +0 -74
- package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +0 -155
- package/esm2022/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +0 -710
- package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +0 -60
- package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +0 -255
- package/esm2022/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +0 -210
- package/esm2022/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.mjs +0 -49
- package/esm2022/lib/shared/components/case-viewer/case-view/case-view.component.mjs +0 -106
- package/esm2022/lib/shared/components/case-viewer/case-viewer.component.mjs +0 -136
- package/esm2022/lib/shared/components/case-viewer/case-viewer.module.mjs +0 -98
- package/esm2022/lib/shared/components/case-viewer/printer/case-printer.component.mjs +0 -116
- package/esm2022/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.mjs +0 -61
- package/esm2022/lib/shared/components/case-viewer/services/case.resolver.mjs +0 -141
- package/esm2022/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +0 -70
- package/esm2022/lib/shared/components/create-case-filters/create-case-filters-selection.model.mjs +0 -11
- package/esm2022/lib/shared/components/create-case-filters/create-case-filters.component.mjs +0 -288
- package/esm2022/lib/shared/components/create-case-filters/create-case-filters.module.mjs +0 -44
- package/esm2022/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.mjs +0 -59
- package/esm2022/lib/shared/components/dialogs/dialogs.module.mjs +0 -51
- package/esm2022/lib/shared/components/dialogs/document-dialog/document-dialog.component.mjs +0 -61
- package/esm2022/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.mjs +0 -59
- package/esm2022/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.mjs +0 -63
- package/esm2022/lib/shared/components/error/callback-errors.component.mjs +0 -147
- package/esm2022/lib/shared/components/error/domain/error-context.mjs +0 -5
- package/esm2022/lib/shared/components/error/errors.module.mjs +0 -33
- package/esm2022/lib/shared/components/error-message/error-message.component.mjs +0 -44
- package/esm2022/lib/shared/components/error-message/error-message.module.mjs +0 -41
- package/esm2022/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +0 -61
- package/esm2022/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +0 -55
- package/esm2022/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +0 -111
- package/esm2022/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.mjs +0 -69
- package/esm2022/lib/shared/components/event-start/components/task-conflict/task-conflict.component.mjs +0 -60
- package/esm2022/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +0 -55
- package/esm2022/lib/shared/components/event-start/event-guard/event-start.guard.mjs +0 -97
- package/esm2022/lib/shared/components/event-start/event-start.component.mjs +0 -55
- package/esm2022/lib/shared/components/event-start/event-start.module.mjs +0 -71
- package/esm2022/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.mjs +0 -31
- package/esm2022/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +0 -177
- package/esm2022/lib/shared/components/event-trigger/event-trigger.component.mjs +0 -117
- package/esm2022/lib/shared/components/event-trigger/event-trigger.module.mjs +0 -37
- package/esm2022/lib/shared/components/loading-spinner/loading-spinner.component.mjs +0 -25
- package/esm2022/lib/shared/components/loading-spinner/loading-spinner.module.mjs +0 -29
- package/esm2022/lib/shared/components/pagination/pagination.component.mjs +0 -261
- package/esm2022/lib/shared/components/pagination/pagination.module.mjs +0 -26
- package/esm2022/lib/shared/components/palette/address/address-option.model.mjs +0 -23
- package/esm2022/lib/shared/components/palette/address/write-address-field.component.mjs +0 -287
- package/esm2022/lib/shared/components/palette/base-field/abstract-field-read.component.mjs +0 -30
- package/esm2022/lib/shared/components/palette/base-field/abstract-field-write.component.mjs +0 -44
- package/esm2022/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +0 -84
- package/esm2022/lib/shared/components/palette/base-field/field-read-label.component.mjs +0 -85
- package/esm2022/lib/shared/components/palette/base-field/field-read.component.mjs +0 -89
- package/esm2022/lib/shared/components/palette/base-field/field-write.component.mjs +0 -77
- package/esm2022/lib/shared/components/palette/base-field/payment-field.component.mjs +0 -37
- package/esm2022/lib/shared/components/palette/case-file-view/case-file-view-field.component.mjs +0 -182
- package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.mjs +0 -48
- package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.mjs +0 -49
- package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +0 -356
- package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.mjs +0 -155
- package/esm2022/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.mjs +0 -93
- package/esm2022/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +0 -191
- package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +0 -302
- package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.mjs +0 -208
- package/esm2022/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +0 -169
- package/esm2022/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +0 -224
- package/esm2022/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +0 -311
- package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +0 -202
- package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +0 -355
- package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +0 -268
- package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +0 -516
- package/esm2022/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.mjs +0 -43
- package/esm2022/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.mjs +0 -43
- package/esm2022/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.mjs +0 -111
- package/esm2022/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.mjs +0 -79
- package/esm2022/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +0 -255
- package/esm2022/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +0 -704
- package/esm2022/lib/shared/components/palette/case-link/read-case-link-field.component.mjs +0 -32
- package/esm2022/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +0 -125
- package/esm2022/lib/shared/components/palette/collection/collection-create-checker.service.mjs +0 -42
- package/esm2022/lib/shared/components/palette/collection/read-collection-field.component.mjs +0 -78
- package/esm2022/lib/shared/components/palette/collection/write-collection-field.component.mjs +0 -449
- package/esm2022/lib/shared/components/palette/complex/read-complex-field-collection-table.component.mjs +0 -380
- package/esm2022/lib/shared/components/palette/complex/read-complex-field-raw.component.mjs +0 -50
- package/esm2022/lib/shared/components/palette/complex/read-complex-field-table.component.mjs +0 -75
- package/esm2022/lib/shared/components/palette/complex/read-complex-field.component.mjs +0 -70
- package/esm2022/lib/shared/components/palette/complex/write-complex-field.component.mjs +0 -173
- package/esm2022/lib/shared/components/palette/date/read-date-field.component.mjs +0 -25
- package/esm2022/lib/shared/components/palette/date/write-date-container-field.component.mjs +0 -33
- package/esm2022/lib/shared/components/palette/date/write-date-field.component.mjs +0 -77
- package/esm2022/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +0 -314
- package/esm2022/lib/shared/components/palette/document/document-url.pipe.mjs +0 -25
- package/esm2022/lib/shared/components/palette/document/file-upload-progress.guard.mjs +0 -31
- package/esm2022/lib/shared/components/palette/document/file-upload-state.service.mjs +0 -17
- package/esm2022/lib/shared/components/palette/document/read-document-field.component.mjs +0 -87
- package/esm2022/lib/shared/components/palette/document/write-document-field.component.mjs +0 -404
- package/esm2022/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.mjs +0 -18
- package/esm2022/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.mjs +0 -36
- package/esm2022/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.mjs +0 -125
- package/esm2022/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.mjs +0 -43
- package/esm2022/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.mjs +0 -147
- package/esm2022/lib/shared/components/palette/dynamic-radio-list/dynamic-radio-list.pipe.mjs +0 -25
- package/esm2022/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.mjs +0 -42
- package/esm2022/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.mjs +0 -125
- package/esm2022/lib/shared/components/palette/email/read-email-field.component.mjs +0 -35
- package/esm2022/lib/shared/components/palette/email/write-email-field.component.mjs +0 -74
- package/esm2022/lib/shared/components/palette/fixed-list/fixed-list.pipe.mjs +0 -23
- package/esm2022/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.mjs +0 -26
- package/esm2022/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.mjs +0 -107
- package/esm2022/lib/shared/components/palette/fixed-radio-list/fixed-radio-list.pipe.mjs +0 -18
- package/esm2022/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.mjs +0 -26
- package/esm2022/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.mjs +0 -96
- package/esm2022/lib/shared/components/palette/history/case-history-viewer-field.component.mjs +0 -16
- package/esm2022/lib/shared/components/palette/history/event-log/event-log-details.component.mjs +0 -98
- package/esm2022/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +0 -225
- package/esm2022/lib/shared/components/palette/history/event-log/event-log.component.mjs +0 -72
- package/esm2022/lib/shared/components/palette/judicial-user/read-judicial-user-field.component.mjs +0 -48
- package/esm2022/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.mjs +0 -253
- package/esm2022/lib/shared/components/palette/label/label-field.component.mjs +0 -50
- package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +0 -112
- package/esm2022/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +0 -194
- package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +0 -543
- package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +0 -214
- package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +0 -287
- package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +0 -69
- package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +0 -208
- package/esm2022/lib/shared/components/palette/linked-cases/domain/linked-cases.model.mjs +0 -67
- package/esm2022/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +0 -169
- package/esm2022/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +0 -138
- package/esm2022/lib/shared/components/palette/linked-cases/utils/validators.utils.mjs +0 -27
- package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +0 -237
- package/esm2022/lib/shared/components/palette/markdown/markdown-component.module.mjs +0 -29
- package/esm2022/lib/shared/components/palette/markdown/markdown.component.mjs +0 -44
- package/esm2022/lib/shared/components/palette/money-gbp/money-gbp-input.component.mjs +0 -127
- package/esm2022/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.mjs +0 -49
- package/esm2022/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.mjs +0 -79
- package/esm2022/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.mjs +0 -45
- package/esm2022/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.mjs +0 -127
- package/esm2022/lib/shared/components/palette/number/read-number-field.component.mjs +0 -24
- package/esm2022/lib/shared/components/palette/number/write-number-field.component.mjs +0 -74
- package/esm2022/lib/shared/components/palette/order-summary/fee-value.model.mjs +0 -4
- package/esm2022/lib/shared/components/palette/order-summary/fee.model.mjs +0 -8
- package/esm2022/lib/shared/components/palette/order-summary/order-summary.model.mjs +0 -6
- package/esm2022/lib/shared/components/palette/order-summary/read-order-summary-field.component.mjs +0 -73
- package/esm2022/lib/shared/components/palette/order-summary/read-order-summary-row.component.mjs +0 -44
- package/esm2022/lib/shared/components/palette/order-summary/write-order-summary-field.component.mjs +0 -44
- package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-raw.component.mjs +0 -87
- package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-table.component.mjs +0 -91
- package/esm2022/lib/shared/components/palette/organisation/read-organisation-field.component.mjs +0 -53
- package/esm2022/lib/shared/components/palette/organisation/write-organisation-complex-field.component.mjs +0 -34
- package/esm2022/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +0 -396
- package/esm2022/lib/shared/components/palette/palette.module.mjs +0 -291
- package/esm2022/lib/shared/components/palette/palette.service.mjs +0 -153
- package/esm2022/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.mjs +0 -24
- package/esm2022/lib/shared/components/palette/phone-uk/read-phone-uk-field.component.mjs +0 -22
- package/esm2022/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.mjs +0 -74
- package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +0 -43
- package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +0 -149
- package/esm2022/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.mjs +0 -66
- package/esm2022/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.mjs +0 -61
- package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +0 -292
- package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +0 -330
- package/esm2022/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.mjs +0 -23
- package/esm2022/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +0 -164
- package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.mjs +0 -77
- package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.mjs +0 -111
- package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +0 -201
- package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +0 -106
- package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.mjs +0 -24
- package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +0 -45
- package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +0 -125
- package/esm2022/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +0 -22
- package/esm2022/lib/shared/components/palette/text/read-text-field.component.mjs +0 -24
- package/esm2022/lib/shared/components/palette/text/write-text-field.component.mjs +0 -78
- package/esm2022/lib/shared/components/palette/text-area/read-text-area-field.component.mjs +0 -24
- package/esm2022/lib/shared/components/palette/text-area/write-text-area-field.component.mjs +0 -89
- package/esm2022/lib/shared/components/palette/unsupported-field.component.mjs +0 -17
- package/esm2022/lib/shared/components/palette/utils/dash.pipe.mjs +0 -16
- package/esm2022/lib/shared/components/palette/utils/date.pipe.mjs +0 -133
- package/esm2022/lib/shared/components/palette/utils/field-label.pipe.mjs +0 -30
- package/esm2022/lib/shared/components/palette/utils/first-error.pipe.mjs +0 -62
- package/esm2022/lib/shared/components/palette/utils/is-compound.pipe.mjs +0 -43
- package/esm2022/lib/shared/components/palette/utils/is-mandatory.pipe.mjs +0 -22
- package/esm2022/lib/shared/components/palette/utils/is-read-only-and-not-collection.pipe.mjs +0 -32
- package/esm2022/lib/shared/components/palette/utils/is-read-only.pipe.mjs +0 -22
- package/esm2022/lib/shared/components/palette/utils/utils.module.mjs +0 -71
- package/esm2022/lib/shared/components/palette/waystopay/waystopay-field.component.mjs +0 -34
- package/esm2022/lib/shared/components/palette/yes-no/read-yes-no-field.component.mjs +0 -36
- package/esm2022/lib/shared/components/palette/yes-no/write-yes-no-field.component.mjs +0 -102
- package/esm2022/lib/shared/components/palette/yes-no/yes-no.service.mjs +0 -50
- package/esm2022/lib/shared/components/search-filters/domain/search-input.model.mjs +0 -15
- package/esm2022/lib/shared/components/search-filters/search-filters-wrapper.component.mjs +0 -62
- package/esm2022/lib/shared/components/search-filters/search-filters.component.mjs +0 -337
- package/esm2022/lib/shared/components/search-filters/search-filters.module.mjs +0 -44
- package/esm2022/lib/shared/components/search-result/search-result.component.mjs +0 -834
- package/esm2022/lib/shared/components/search-result/search-result.module.mjs +0 -46
- package/esm2022/lib/shared/components/workbasket-filters/workbasket-filters.component.mjs +0 -494
- package/esm2022/lib/shared/components/workbasket-filters/workbasket-filters.module.mjs +0 -42
- package/esm2022/lib/shared/directives/conditional-show/conditional-show-form.directive.mjs +0 -169
- package/esm2022/lib/shared/directives/conditional-show/conditional-show.module.mjs +0 -33
- package/esm2022/lib/shared/directives/conditional-show/domain/conditional-show.model.mjs +0 -201
- package/esm2022/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.mjs +0 -17
- package/esm2022/lib/shared/directives/conditional-show/services/grey-bar.service.mjs +0 -48
- package/esm2022/lib/shared/directives/focus-element/focus-element.directive.mjs +0 -38
- package/esm2022/lib/shared/directives/focus-element/focus-element.module.mjs +0 -21
- package/esm2022/lib/shared/directives/substitutor/label-substitutor.directive.mjs +0 -88
- package/esm2022/lib/shared/directives/substitutor/label-substitutor.module.mjs +0 -30
- package/esm2022/lib/shared/directives/substitutor/services/placeholder.service.mjs +0 -209
- package/esm2022/lib/shared/domain/activity/activity.model.mjs +0 -17
- package/esm2022/lib/shared/domain/addresses/address.model.mjs +0 -11
- package/esm2022/lib/shared/domain/alert/alert.model.mjs +0 -5
- package/esm2022/lib/shared/domain/case-details.model.mjs +0 -13
- package/esm2022/lib/shared/domain/case-event-data.model.mjs +0 -11
- package/esm2022/lib/shared/domain/case-file-view/case-file-view-category.model.mjs +0 -8
- package/esm2022/lib/shared/domain/case-file-view/case-file-view-document.model.mjs +0 -10
- package/esm2022/lib/shared/domain/case-file-view/categories-and-documents.model.mjs +0 -10
- package/esm2022/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.mjs +0 -124
- package/esm2022/lib/shared/domain/case-flag/flag-type.model.mjs +0 -37
- package/esm2022/lib/shared/domain/case-flag/hmcts-service-detail.model.mjs +0 -18
- package/esm2022/lib/shared/domain/case-view/case-event-trigger.model.mjs +0 -34
- package/esm2022/lib/shared/domain/case-view/case-print-document.model.mjs +0 -6
- package/esm2022/lib/shared/domain/case-view/case-tab.model.mjs +0 -17
- package/esm2022/lib/shared/domain/case-view/case-view-event.model.mjs +0 -16
- package/esm2022/lib/shared/domain/case-view/case-view-trigger.model.mjs +0 -7
- package/esm2022/lib/shared/domain/case-view/case-view.model.mjs +0 -27
- package/esm2022/lib/shared/domain/definition/access-control-list.model.mjs +0 -8
- package/esm2022/lib/shared/domain/definition/banner.model.mjs +0 -8
- package/esm2022/lib/shared/domain/definition/case-event.model.mjs +0 -11
- package/esm2022/lib/shared/domain/definition/case-field.model.mjs +0 -216
- package/esm2022/lib/shared/domain/definition/case-state.model.mjs +0 -7
- package/esm2022/lib/shared/domain/definition/case-type-lite.model.mjs +0 -10
- package/esm2022/lib/shared/domain/definition/case-type.model.mjs +0 -20
- package/esm2022/lib/shared/domain/definition/event-case-field.model.mjs +0 -6
- package/esm2022/lib/shared/domain/definition/field-type.model.mjs +0 -30
- package/esm2022/lib/shared/domain/definition/fixed-list-item.model.mjs +0 -6
- package/esm2022/lib/shared/domain/definition/jurisdiction.model.mjs +0 -8
- package/esm2022/lib/shared/domain/document/document-data.model.mjs +0 -27
- package/esm2022/lib/shared/domain/draft.model.mjs +0 -16
- package/esm2022/lib/shared/domain/http/http-error.model.mjs +0 -43
- package/esm2022/lib/shared/domain/organisation/organisation-converter.mjs +0 -42
- package/esm2022/lib/shared/domain/pagination-metadata.model.mjs +0 -5
- package/esm2022/lib/shared/domain/profile/profile.model.mjs +0 -33
- package/esm2022/lib/shared/domain/search/field.model.mjs +0 -17
- package/esm2022/lib/shared/domain/search/search-result-view-column.model.mjs +0 -9
- package/esm2022/lib/shared/domain/search/search-result-view-item.model.mjs +0 -18
- package/esm2022/lib/shared/domain/search/search-result-view.model.mjs +0 -26
- package/esm2022/lib/shared/domain/search/sorting/sort-parameters.mjs +0 -9
- package/esm2022/lib/shared/domain/workbasket/workbasket-input.model.mjs +0 -11
- package/esm2022/lib/shared/fixture/case-field-builder.mjs +0 -67
- package/esm2022/lib/shared/pipes/case-reference/case-reference.pipe.mjs +0 -33
- package/esm2022/lib/shared/pipes/case-title/ccd-case-title.pipe.mjs +0 -31
- package/esm2022/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.mjs +0 -32
- package/esm2022/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.mjs +0 -27
- package/esm2022/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +0 -39
- package/esm2022/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +0 -173
- package/esm2022/lib/shared/pipes/complex/ccd-tab-fields.pipe.mjs +0 -31
- package/esm2022/lib/shared/pipes/complex/fields-filter.pipe.mjs +0 -105
- package/esm2022/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.mjs +0 -16
- package/esm2022/lib/shared/pipes/link-cases-from-reason-code/ccd-link-cases-from-reason-code.pipe.mjs +0 -28
- package/esm2022/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.mjs +0 -28
- package/esm2022/lib/shared/pipes/pipes.module.mjs +0 -64
- package/esm2022/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.mjs +0 -24
- package/esm2022/lib/shared/services/activity/activity.polling.service.mjs +0 -122
- package/esm2022/lib/shared/services/activity/activity.service.mjs +0 -85
- package/esm2022/lib/shared/services/addresses/addresses.service.mjs +0 -65
- package/esm2022/lib/shared/services/alert/alert.service.mjs +0 -157
- package/esm2022/lib/shared/services/auth/auth.service.mjs +0 -35
- package/esm2022/lib/shared/services/banners/banners.service.mjs +0 -35
- package/esm2022/lib/shared/services/browser/browser.service.mjs +0 -24
- package/esm2022/lib/shared/services/case-fields/case-field.service.mjs +0 -34
- package/esm2022/lib/shared/services/case-fields/format-translator.service.mjs +0 -242
- package/esm2022/lib/shared/services/case-file-view/case-file-view.service.mjs +0 -48
- package/esm2022/lib/shared/services/case-flag/case-flag-refdata.service.mjs +0 -104
- package/esm2022/lib/shared/services/common-data-service/common-data-service.mjs +0 -29
- package/esm2022/lib/shared/services/definitions/definitions.module.mjs +0 -19
- package/esm2022/lib/shared/services/definitions/definitions.service.mjs +0 -32
- package/esm2022/lib/shared/services/document-management/document-management.service.mjs +0 -114
- package/esm2022/lib/shared/services/draft/draft.service.mjs +0 -89
- package/esm2022/lib/shared/services/error/error-notifier.service.mjs +0 -16
- package/esm2022/lib/shared/services/eventStatusService/event-status.service.mjs +0 -21
- package/esm2022/lib/shared/services/fields/fields.purger.mjs +0 -304
- package/esm2022/lib/shared/services/fields/fields.utils.mjs +0 -615
- package/esm2022/lib/shared/services/form/field-type-sanitiser.mjs +0 -91
- package/esm2022/lib/shared/services/form/form-error.service.mjs +0 -46
- package/esm2022/lib/shared/services/form/form-validators.service.mjs +0 -56
- package/esm2022/lib/shared/services/form/form-value.service.mjs +0 -552
- package/esm2022/lib/shared/services/http/http-error.service.mjs +0 -67
- package/esm2022/lib/shared/services/http/http.service.mjs +0 -95
- package/esm2022/lib/shared/services/jurisdiction/jurisdiction.service.mjs +0 -36
- package/esm2022/lib/shared/services/loading/loading.module.mjs +0 -22
- package/esm2022/lib/shared/services/loading/loading.service.mjs +0 -35
- package/esm2022/lib/shared/services/navigation/navigation-notifier.service.mjs +0 -16
- package/esm2022/lib/shared/services/order/order.service.mjs +0 -37
- package/esm2022/lib/shared/services/organisation/organisation.service.mjs +0 -57
- package/esm2022/lib/shared/services/profile/profile.notifier.mjs +0 -17
- package/esm2022/lib/shared/services/profile/profile.service.mjs +0 -36
- package/esm2022/lib/shared/services/request/request.options.builder.mjs +0 -61
- package/esm2022/lib/shared/services/router/router-helper.service.mjs +0 -20
- package/esm2022/lib/shared/services/search/search.service.mjs +0 -96
- package/esm2022/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.mjs +0 -71
- package/esm2022/lib/shared/services/session/session-storage.service.mjs +0 -34
- package/esm2022/lib/shared/services/utils/retry/retry.service.mjs +0 -87
- package/esm2022/lib/shared/services/window/window.service.mjs +0 -40
- package/esm2022/lib/shared/services/workbasket/workbasket-input-filter.service.mjs +0 -57
- package/esm2022/lib/shared/test/test-route-snapshot-builder.mjs +0 -38
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +0 -36099
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +0 -1
- /package/{esm2022 → esm2020}/hmcts-ccd-case-ui-toolkit.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/banners/alert/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/banners/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/banners/notification-banner/domain/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/banners/notification-banner/domain/notification-banner-config.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/banners/notification-banner/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/banners/notification-banner/enums/notification-banner-style.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/banners/notification-banner/enums/notification-banner-type.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/banners/notification-banner/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/body/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/footer/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/form/date-input/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/form/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/header/header-bar/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/header/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/header/navigation/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/header/phase/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/components/tabs/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/commons/case-edit-data/case-edit-validation.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/commons/case-edit-data/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/activity/activity-banner/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/activity/activity-icon/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/activity/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/case-create/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/case-edit/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/case-edit-confirm/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/case-edit-form/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/case-edit-page/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/case-edit-submit/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/case-event-completion/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/case-progress/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/domain/event-completion-params.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/domain/event-completion-portal-types.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/domain/event-completion-return-states.enum.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/domain/event-completion-states.enum.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/domain/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/editor.routing.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/services/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-editor/services/wizard-factory.service.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-header/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-history/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-list/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-list-filters/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-timeline/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-basic-access-view/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-challenged-access-request/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-challenged-access-request/models/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-challenged-access-success/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-event-trigger/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-full-access-view/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-review-specific-access-reject/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-review-specific-access-request/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-specific-access-request/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-specific-access-request/models/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-specific-access-success/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/case-view/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/printer/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/printer/pipes/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/services/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/case-viewer/viewer.routing.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/create-case-filters/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/dialogs/delete-or-cancel-dialog/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/dialogs/document-dialog/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/dialogs/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/dialogs/remove-dialog/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/dialogs/save-or-discard-dialog/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/error/domain/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/error/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/error-message/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/event-start/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/event-start/models/event-start-state-machine-context.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/event-start/models/event-start-states-enum.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/event-start/models/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/event-start/services/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/event-trigger/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/helpers/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/helpers/init-dialog-helper.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/loading-spinner/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/pagination/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/address/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/base-field/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/base-field/palette-context.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-file-view/components/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu-item.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-file-view/components/shared/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-file-view/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/components/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/domain/case-flag-state.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/domain/case-flag.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/domain/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/domain/language.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/case-flag-summary-list-display-mode.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/search-language-interpreter-error-message.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/search-language-interpreter-step.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/select-flag-location-error-message.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-flag/pipes/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/case-link/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/collection/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/complex/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/complex/sort-order.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/date/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/datetime-picker/datetime-picker-utils.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/datetime-picker/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/document/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/dynamic-list/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/dynamic-multi-select-list/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/dynamic-radio-list/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/email/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/fixed-list/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/fixed-radio-list/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/history/event-log/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/history/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/judicial-user/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/label/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/linked-cases/components/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/linked-cases/domain/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/linked-cases/domain/linked-cases-state.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/linked-cases/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/linked-cases/enums/write-linked-cases-field.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/linked-cases/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/linked-cases/services/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/markdown/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/money-gbp/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/multi-select-list/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/number/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/order-summary/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/organisation/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/payment/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/phone-uk/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/__mocks__/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/components/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/models/case-queries-collection.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/models/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/models/query-create-context.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/text/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/text-area/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/utils/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/waystopay/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/palette/yes-no/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/search-filters/domain/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/search-filters/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/search-result/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/components/workbasket-filters/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/directives/conditional-show/domain/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/directives/conditional-show/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/directives/conditional-show/services/condition-parser.service.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/directives/conditional-show/services/condition.peg.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/directives/conditional-show/services/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/directives/focus-element/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/directives/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/directives/substitutor/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/directives/substitutor/services/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/activity/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/addresses/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/alert/alert-level.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/alert/alert-status-params.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/alert/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-edit/case-edit.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-edit/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-file-view/case-file-view-sort-columns.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-file-view/document-tree-node/document-tree-node-type.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-file-view/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-flag/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-view/access-types.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-view/case-view-event-ids.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-view/challenged-access-request.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-view/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-view/review-specific-access-request.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-view/role-assignment-response.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-view/role-request.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-view/service-org-response.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/case-view/specific-access-request.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/definition/display-context-enum.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/definition/field-type-enum.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/definition/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/document/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/error-message.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/http/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/jurisdiction/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/jurisdiction/judicial-user.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/order/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/order/orderable.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/organisation/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/organisation/simple-organisation.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/predicate.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/profile/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/search/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/search/sorting/search-result-view-item-comparator.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/sort-order.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/user/user-details.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/user/user-info.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/work-allocation/Task.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/work-allocation/TaskPayload.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/work-allocation/case-worker.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/work-allocation/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/work-allocation/judicial-worker.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/work-allocation/task-response.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/work-allocation/task-search-parameter.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/work-allocation/wa-service-config.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/domain/workbasket/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/fixture/shared.test.fixture.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/pipes/case-reference/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/pipes/case-title/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/pipes/complex/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/pipes/generic/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/pipes/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/pipes/link-cases-from-reason-code/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/pipes/link-cases-reason-code/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/activity/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/addresses/address-parser.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/addresses/address-type.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/addresses/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/alert/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/auth/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/banners/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/browser/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/case-fields/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/case-file-view/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/case-flag/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/case-flag/refdata-case-flag-type.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/definitions/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/document-management/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/draft/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/error/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/eventStatusService/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/fields/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/form/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/http/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/jurisdiction/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/loading/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/navigation/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/navigation/navigation-origin.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/order/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/organisation/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/profile/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/request/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/router/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/search/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/session/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/utils/retry/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/window/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/shared/services/workbasket/index.mjs +0 -0
- /package/{esm2022 → esm2020}/public-api.mjs +0 -0
|
@@ -1,615 +0,0 @@
|
|
|
1
|
-
import { CurrencyPipe } from '@angular/common';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { FormArray, FormControl, FormGroup } from '@angular/forms';
|
|
4
|
-
import { plainToClassFromExist } from 'class-transformer';
|
|
5
|
-
import { CaseFlagDisplayContextParameter, CaseFlagStatus } from '../../components/palette/case-flag/enums';
|
|
6
|
-
import { DatePipe } from '../../components/palette/utils';
|
|
7
|
-
import { CaseField } from '../../domain';
|
|
8
|
-
import { FormatTranslatorService } from '../case-fields/format-translator.service';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
// @dynamic
|
|
11
|
-
export class FieldsUtils {
|
|
12
|
-
static caseLevelCaseFlagsFieldId = 'caseFlags';
|
|
13
|
-
static currencyPipe = new CurrencyPipe('en-GB');
|
|
14
|
-
static datePipe = new DatePipe(new FormatTranslatorService());
|
|
15
|
-
// EUI-4244. 3 dashes instead of 1 to make this less likely to clash with a real field.
|
|
16
|
-
static LABEL_SUFFIX = '---LABEL';
|
|
17
|
-
// Handling of Dynamic Lists in Complex Types
|
|
18
|
-
static SERVER_RESPONSE_FIELD_TYPE_COLLECTION = 'Collection';
|
|
19
|
-
static SERVER_RESPONSE_FIELD_TYPE_COMPLEX = 'Complex';
|
|
20
|
-
static SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE = ['DynamicList', 'DynamicRadioList'];
|
|
21
|
-
static isValidDisplayContext(ctx) {
|
|
22
|
-
return (ctx === 'MANDATORY' || ctx === 'READONLY'
|
|
23
|
-
|| ctx === 'OPTIONAL' || ctx === 'HIDDEN'
|
|
24
|
-
|| ctx === 'COMPLEX');
|
|
25
|
-
}
|
|
26
|
-
static convertToCaseField(obj) {
|
|
27
|
-
if (!(obj instanceof CaseField)) {
|
|
28
|
-
return plainToClassFromExist(new CaseField(), obj);
|
|
29
|
-
}
|
|
30
|
-
return obj;
|
|
31
|
-
}
|
|
32
|
-
static toValuesMap(caseFields) {
|
|
33
|
-
const valueMap = {};
|
|
34
|
-
caseFields.forEach(field => {
|
|
35
|
-
valueMap[field.id] = FieldsUtils.prepareValue(field);
|
|
36
|
-
});
|
|
37
|
-
return valueMap;
|
|
38
|
-
}
|
|
39
|
-
// public static getType(elem: any): string {
|
|
40
|
-
// return Object.prototype.toString.call(elem).slice(8, -1);
|
|
41
|
-
// }
|
|
42
|
-
static isObject(elem) {
|
|
43
|
-
return typeof elem === 'object' && elem !== null;
|
|
44
|
-
}
|
|
45
|
-
static isNonEmptyObject(elem) {
|
|
46
|
-
return this.isObject(elem) && Object.keys(elem).length !== 0;
|
|
47
|
-
}
|
|
48
|
-
static isArray(elem) {
|
|
49
|
-
return Array.isArray(elem);
|
|
50
|
-
}
|
|
51
|
-
static areCollectionValuesSimpleFields(fieldValue) {
|
|
52
|
-
return !this.isObject(fieldValue[0]['value']) && !Array.isArray(fieldValue[0]['value']) && fieldValue[0]['value'] !== undefined;
|
|
53
|
-
}
|
|
54
|
-
static isCollectionOfSimpleTypes(fieldValue) {
|
|
55
|
-
return this.isCollection(fieldValue) && this.areCollectionValuesSimpleFields(fieldValue);
|
|
56
|
-
}
|
|
57
|
-
static isMultiSelectValue(form) {
|
|
58
|
-
return this.isNonEmptyArray(form) && !this.isCollectionWithValue(form);
|
|
59
|
-
}
|
|
60
|
-
static isNonEmptyArray(pageFormFields) {
|
|
61
|
-
return Array.isArray(pageFormFields) && pageFormFields[0] !== undefined;
|
|
62
|
-
}
|
|
63
|
-
static isCollection(pageFormFields) {
|
|
64
|
-
return this.isNonEmptyArray(pageFormFields) && this.isCollectionWithValue(pageFormFields);
|
|
65
|
-
}
|
|
66
|
-
static isCollectionWithValue(pageFormFields) {
|
|
67
|
-
return pageFormFields[0]['value'] !== undefined;
|
|
68
|
-
}
|
|
69
|
-
static cloneObject(obj) {
|
|
70
|
-
return Object.assign({}, obj);
|
|
71
|
-
}
|
|
72
|
-
// temporary function until this can be moved to CaseView class (RDM-2681)
|
|
73
|
-
static getCaseFields(caseView) {
|
|
74
|
-
const caseDataFields = caseView.tabs.reduce((acc, tab) => {
|
|
75
|
-
return acc.concat(tab.fields);
|
|
76
|
-
}, []);
|
|
77
|
-
const metadataFields = caseView.metadataFields;
|
|
78
|
-
return metadataFields.concat(caseDataFields.filter((caseField) => {
|
|
79
|
-
return metadataFields.findIndex(metadataField => metadataField.id === caseField.id) < 0;
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
static addCaseFieldAndComponentReferences(c, cf, comp) {
|
|
83
|
-
c['caseField'] = cf;
|
|
84
|
-
c['component'] = comp;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Recursive check of an array or object and its descendants for the presence of any non-empty values.
|
|
88
|
-
*
|
|
89
|
-
* @param object The array or object to check
|
|
90
|
-
* @returns `true` if the array or object (or a descendant) contains at least one non-empty value; `false` otherwise
|
|
91
|
-
*/
|
|
92
|
-
static containsNonEmptyValues(object) {
|
|
93
|
-
if (!object) {
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
const values = Object.keys(object).map(key => object[key]);
|
|
97
|
-
const objectRefs = [];
|
|
98
|
-
// Also test for numeric values, and length > 0 for non-numeric values because this covers both strings and arrays.
|
|
99
|
-
// Note: Deliberate use of non-equality (!=) operator for null check, to handle both null and undefined values.
|
|
100
|
-
// tslint:disable-next-line: triple-equals
|
|
101
|
-
const hasNonNullPrimitive = values.some(x => (x != null &&
|
|
102
|
-
((typeof x === 'object' && x.constructor === Object) || Array.isArray(x)
|
|
103
|
-
? !objectRefs.push(x)
|
|
104
|
-
: typeof x === 'number' || x.length > 0)));
|
|
105
|
-
return !hasNonNullPrimitive ? objectRefs.some(y => this.containsNonEmptyValues(y)) : hasNonNullPrimitive;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* handleNestedDynamicLists()
|
|
109
|
-
* Reassigns list_item and value data to DynamicList children
|
|
110
|
-
* down the tree. Server response returns data only in
|
|
111
|
-
* the `value` object of parent complex type
|
|
112
|
-
*
|
|
113
|
-
* EUI-2530 Dynamic Lists for Elements in a Complex Type
|
|
114
|
-
*
|
|
115
|
-
* @param jsonBody - { case_fields: [ CaseField, CaseField ] }
|
|
116
|
-
*/
|
|
117
|
-
static handleNestedDynamicLists(jsonBody) {
|
|
118
|
-
if (jsonBody.case_fields) {
|
|
119
|
-
jsonBody.case_fields.forEach(caseField => {
|
|
120
|
-
if (caseField.field_type) {
|
|
121
|
-
this.setDynamicListDefinition(caseField, caseField.field_type, caseField);
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
return jsonBody;
|
|
126
|
-
}
|
|
127
|
-
static prepareValue(field) {
|
|
128
|
-
if (field.value) {
|
|
129
|
-
return field.value;
|
|
130
|
-
}
|
|
131
|
-
else if (field.isComplex()) {
|
|
132
|
-
const valueMap = {};
|
|
133
|
-
field.field_type.complex_fields.forEach(complexField => {
|
|
134
|
-
valueMap[complexField.id] = FieldsUtils.prepareValue(complexField);
|
|
135
|
-
});
|
|
136
|
-
return valueMap;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
static DEFAULT_MERGE_FUNCTION = function mergeFunction(field, result) {
|
|
140
|
-
if (!result.hasOwnProperty(field.id)) {
|
|
141
|
-
result[field.id] = field.value;
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
static LABEL_MERGE_FUNCTION = function mergeFunction(field, result) {
|
|
145
|
-
if (!result) {
|
|
146
|
-
result = {};
|
|
147
|
-
}
|
|
148
|
-
if (!result.hasOwnProperty(field.id)) {
|
|
149
|
-
result[field.id] = field.value;
|
|
150
|
-
}
|
|
151
|
-
// tslint:disable-next-line: switch-default
|
|
152
|
-
switch (field.field_type.type) {
|
|
153
|
-
case 'FixedList':
|
|
154
|
-
case 'FixedRadioList': {
|
|
155
|
-
result[field.id] = FieldsUtils.getFixedListLabelByCodeOrEmpty(field, result[field.id] || field.value);
|
|
156
|
-
break;
|
|
157
|
-
}
|
|
158
|
-
case 'MultiSelectList': {
|
|
159
|
-
const fieldValue = result[field.id] || [];
|
|
160
|
-
result[field.id + FieldsUtils.LABEL_SUFFIX] = [];
|
|
161
|
-
fieldValue.forEach((code, idx) => {
|
|
162
|
-
result[field.id + FieldsUtils.LABEL_SUFFIX][idx] = FieldsUtils.getFixedListLabelByCodeOrEmpty(field, code);
|
|
163
|
-
});
|
|
164
|
-
break;
|
|
165
|
-
}
|
|
166
|
-
case 'Label': {
|
|
167
|
-
result[field.id] = FieldsUtils.getLabel(field);
|
|
168
|
-
break;
|
|
169
|
-
}
|
|
170
|
-
case 'MoneyGBP': {
|
|
171
|
-
const fieldValue = (result[field.id] || field.value);
|
|
172
|
-
result[field.id] = FieldsUtils.getMoneyGBP(fieldValue);
|
|
173
|
-
break;
|
|
174
|
-
}
|
|
175
|
-
case 'Date': {
|
|
176
|
-
const fieldValue = (result[field.id] || field.value);
|
|
177
|
-
result[field.id] = FieldsUtils.getDate(fieldValue);
|
|
178
|
-
break;
|
|
179
|
-
}
|
|
180
|
-
case 'Complex': {
|
|
181
|
-
if (result[field.id] && field.field_type.complex_fields) {
|
|
182
|
-
field.field_type.complex_fields.forEach((f) => {
|
|
183
|
-
if (['Collection', 'Complex', 'MultiSelectList'].indexOf(f.field_type.type) > -1) {
|
|
184
|
-
FieldsUtils.LABEL_MERGE_FUNCTION(f, result[field.id]);
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
break;
|
|
189
|
-
}
|
|
190
|
-
case 'Collection': {
|
|
191
|
-
const elements = (result[field.id] || field.value);
|
|
192
|
-
if (elements) {
|
|
193
|
-
elements.forEach((elem) => {
|
|
194
|
-
// tslint:disable-next-line:switch-default
|
|
195
|
-
switch (field.field_type.collection_field_type.type) {
|
|
196
|
-
case 'MoneyGBP': {
|
|
197
|
-
elem.value = FieldsUtils.getMoneyGBP(elem.value);
|
|
198
|
-
break;
|
|
199
|
-
}
|
|
200
|
-
case 'Date': {
|
|
201
|
-
elem.value = FieldsUtils.getDate(elem.value);
|
|
202
|
-
break;
|
|
203
|
-
}
|
|
204
|
-
case 'Complex': {
|
|
205
|
-
if (field.field_type.collection_field_type.complex_fields) {
|
|
206
|
-
field.field_type.collection_field_type.complex_fields.forEach((f) => {
|
|
207
|
-
if (['Collection', 'Complex', 'MultiSelectList'].indexOf(f.field_type.type) > -1) {
|
|
208
|
-
FieldsUtils.LABEL_MERGE_FUNCTION(f, elem.value);
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
break;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
/**
|
|
222
|
-
* Formats a `MoneyGBP` value to include currency units.
|
|
223
|
-
* @param fieldValue The CurrencyPipe expects an `any` parameter so this must also be `any`,
|
|
224
|
-
* but it should be "number-like" (e.g., '1234')
|
|
225
|
-
* @returns A formatted string (e.g., £12.34)
|
|
226
|
-
*/
|
|
227
|
-
static getMoneyGBP(fieldValue) {
|
|
228
|
-
return fieldValue ? FieldsUtils.currencyPipe.transform(fieldValue / 100, 'GBP', 'symbol') : fieldValue;
|
|
229
|
-
}
|
|
230
|
-
static getLabel(fieldValue) {
|
|
231
|
-
return fieldValue ? fieldValue.label : '';
|
|
232
|
-
}
|
|
233
|
-
static getDate(fieldValue) {
|
|
234
|
-
try {
|
|
235
|
-
// Format specified here wasn't previously working and lots of tests depend on it not working
|
|
236
|
-
// Now that formats work correctly many test would break - and this could affect services which may depend on
|
|
237
|
-
// the orginal behaviour of returning dates in "d MMM yyyy"
|
|
238
|
-
// Note - replaced 'd' with 'D' as datepipe using moment to avoid timezone discrepancies
|
|
239
|
-
return FieldsUtils.datePipe.transform(fieldValue, null, 'D MMM yyyy');
|
|
240
|
-
}
|
|
241
|
-
catch (e) {
|
|
242
|
-
return this.textForInvalidField('Date', fieldValue);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
static getFixedListLabelByCodeOrEmpty(field, code) {
|
|
246
|
-
const relevantItem = code ? field.field_type.fixed_list_items.find(item => item.code === code) : null;
|
|
247
|
-
return relevantItem ? relevantItem.label : '';
|
|
248
|
-
}
|
|
249
|
-
static textForInvalidField(type, invalidValue) {
|
|
250
|
-
return `{ Invalid ${type}: ${invalidValue} }`;
|
|
251
|
-
}
|
|
252
|
-
static setDynamicListDefinition(caseField, caseFieldType, rootCaseField) {
|
|
253
|
-
if (caseFieldType.type === FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_COMPLEX) {
|
|
254
|
-
caseFieldType.complex_fields.forEach(field => {
|
|
255
|
-
try {
|
|
256
|
-
const isDynamicField = FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE.indexOf(field.field_type.type) !== -1;
|
|
257
|
-
if (isDynamicField) {
|
|
258
|
-
const dynamicListValue = this.getDynamicListValue(rootCaseField.value, field.id);
|
|
259
|
-
if (dynamicListValue) {
|
|
260
|
-
const list_items = dynamicListValue[0].list_items;
|
|
261
|
-
const complexValue = dynamicListValue.map(data => data.value);
|
|
262
|
-
const value = {
|
|
263
|
-
list_items,
|
|
264
|
-
value: complexValue.length > 0 ? complexValue : undefined
|
|
265
|
-
};
|
|
266
|
-
field.value = {
|
|
267
|
-
...value
|
|
268
|
-
};
|
|
269
|
-
field.formatted_value = {
|
|
270
|
-
...field.formatted_value,
|
|
271
|
-
...value
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
this.setDynamicListDefinition(field, field.field_type, rootCaseField);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
catch (error) {
|
|
280
|
-
console.log(error);
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
else if (caseFieldType.type === FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_COLLECTION) {
|
|
285
|
-
if (caseFieldType.collection_field_type) {
|
|
286
|
-
this.setDynamicListDefinition(caseField, caseFieldType.collection_field_type, rootCaseField);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
static getDynamicListValue(jsonBlock, key) {
|
|
291
|
-
const data = jsonBlock ? this.getNestedFieldValues(jsonBlock, key, []) : [];
|
|
292
|
-
return data.length > 0 ? data : null;
|
|
293
|
-
}
|
|
294
|
-
static getNestedFieldValues(jsonData, key, output = []) {
|
|
295
|
-
if (jsonData && jsonData[key]) {
|
|
296
|
-
output.push(jsonData[key]);
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
for (const elementKey in jsonData) {
|
|
300
|
-
if (typeof jsonData === 'object' && jsonData.hasOwnProperty(elementKey)) {
|
|
301
|
-
this.getNestedFieldValues(jsonData[elementKey], key, output);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
return output;
|
|
306
|
-
}
|
|
307
|
-
static isFlagsCaseField(caseField) {
|
|
308
|
-
if (!caseField) {
|
|
309
|
-
return false;
|
|
310
|
-
}
|
|
311
|
-
return this.isFlagsFieldType(caseField.field_type);
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* @deprecated Use {@link isCaseFieldOfType} instead, passing 'FlagLauncher' as the single type in the `types` array
|
|
315
|
-
*/
|
|
316
|
-
static isFlagLauncherCaseField(caseField) {
|
|
317
|
-
if (!caseField) {
|
|
318
|
-
return false;
|
|
319
|
-
}
|
|
320
|
-
return caseField.field_type.type === 'FlagLauncher';
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* @deprecated Use {@link isCaseFieldOfType} instead, passing 'ComponentLauncher' as the single type in the `types`
|
|
324
|
-
* array
|
|
325
|
-
*/
|
|
326
|
-
static isComponentLauncherCaseField(caseField) {
|
|
327
|
-
if (!caseField) {
|
|
328
|
-
return false;
|
|
329
|
-
}
|
|
330
|
-
return caseField.field_type.type === 'ComponentLauncher';
|
|
331
|
-
}
|
|
332
|
-
/**
|
|
333
|
-
* Checks if a {@link CaseField} is of one of the given field types.
|
|
334
|
-
*
|
|
335
|
-
* @param caseField The `CaseField` to check
|
|
336
|
-
* @param types An array of one or more field types
|
|
337
|
-
* @returns `true` if the `CaseField` type is one of those in the array of types to check against; `false`
|
|
338
|
-
* otherwise or if `caseField` or `types` are falsy
|
|
339
|
-
*/
|
|
340
|
-
static isCaseFieldOfType(caseField, types) {
|
|
341
|
-
if (!caseField || !types) {
|
|
342
|
-
return false;
|
|
343
|
-
}
|
|
344
|
-
return types.some(type => type === caseField.field_type.type || type === caseField.field_type.id);
|
|
345
|
-
}
|
|
346
|
-
static isLinkedCasesCaseField(caseField) {
|
|
347
|
-
return FieldsUtils.isComponentLauncherCaseField(caseField) &&
|
|
348
|
-
caseField.id === 'LinkedCasesComponentLauncher';
|
|
349
|
-
}
|
|
350
|
-
static containsLinkedCasesCaseField(caseFields) {
|
|
351
|
-
return caseFields?.some(caseField => FieldsUtils.isLinkedCasesCaseField(caseField));
|
|
352
|
-
}
|
|
353
|
-
static isFlagsFieldType(fieldType) {
|
|
354
|
-
if (!fieldType) {
|
|
355
|
-
return false;
|
|
356
|
-
}
|
|
357
|
-
// Note: This implementation supports the dummy field type ID of "CaseFlag" for testing and the real field type
|
|
358
|
-
// ID of "Flags"
|
|
359
|
-
return (fieldType.type === 'Complex' && (fieldType.id === 'CaseFlag' || fieldType.id === 'Flags'));
|
|
360
|
-
}
|
|
361
|
-
/**
|
|
362
|
-
* Extract flags data from a `CaseField` instance, recursing and iterating through sub-fields of a Complex field or
|
|
363
|
-
* each field in a Collection field.
|
|
364
|
-
*
|
|
365
|
-
* @param flags An array for accumulating extracted flags data and derived `FormGroup` paths
|
|
366
|
-
* @param caseField A `CaseField` instance from which to extract the flags data
|
|
367
|
-
* @param pathToFlagsFormGroup A (dot-delimited) string for concatenating the name of each control that forms the path
|
|
368
|
-
* to the `FormGroup` for the `Flags` instance
|
|
369
|
-
* @param topLevelCaseField The top-level `CaseField` that contains the value property. This is required because _only
|
|
370
|
-
* top-level_ `CaseField`s contain actual values and a reference needs to be maintained to such a field
|
|
371
|
-
* @param currentValue The current value object of a `CaseField` that is a sub-field of a non root-level Complex field.
|
|
372
|
-
* Required for mapping the `CaseField` value to a `Flags` object if it is a "Flags" `CaseField`. (For Complex types,
|
|
373
|
-
* only the _root-level_ `CaseField` contains a value property - all sub-fields, including any nested Complex fields,
|
|
374
|
-
* do *not* contain any values themselves.)
|
|
375
|
-
* @returns An array of `FlagsWithFormGroupPath`, each instance comprising a `Flags` object derived from a `CaseField`
|
|
376
|
-
* of type "Flags", and the dot-delimited path string to the corresponding `FormGroup`
|
|
377
|
-
*/
|
|
378
|
-
static extractFlagsDataFromCaseField(flags, caseField, pathToFlagsFormGroup, topLevelCaseField, currentValue) {
|
|
379
|
-
const fieldType = caseField.field_type;
|
|
380
|
-
switch (fieldType.type) {
|
|
381
|
-
case 'Complex':
|
|
382
|
-
// If the field is a Flags CaseField (these are implemented as Complex types), it can be mapped to a Flags
|
|
383
|
-
// object immediately
|
|
384
|
-
if (FieldsUtils.isFlagsCaseField(caseField)) {
|
|
385
|
-
// If the Flags CaseField has a value, it is a root-level Complex field; if it does not, it is a Flags
|
|
386
|
-
// CaseField that is a sub-field within another Complex field, so use the currentValue value (if any)
|
|
387
|
-
// instead. The exception to this is the "caseFlags" Flags CaseField, which will have an empty object value
|
|
388
|
-
// initially, because no party name is required
|
|
389
|
-
if (caseField.value && FieldsUtils.isNonEmptyObject(caseField.value) ||
|
|
390
|
-
caseField.id === this.caseLevelCaseFlagsFieldId) {
|
|
391
|
-
flags.push(this.mapCaseFieldToFlagsWithFormGroupPathObject(caseField, pathToFlagsFormGroup));
|
|
392
|
-
}
|
|
393
|
-
else if (currentValue && FieldsUtils.isNonEmptyObject(currentValue)) {
|
|
394
|
-
pathToFlagsFormGroup += `.${caseField.id}`;
|
|
395
|
-
flags.push(this.mapValueToFlagsWithFormGroupPathObject(caseField.id, currentValue, pathToFlagsFormGroup, topLevelCaseField));
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
else if (fieldType.complex_fields) {
|
|
399
|
-
const value = caseField.value ? caseField.value : currentValue;
|
|
400
|
-
if (value && FieldsUtils.isNonEmptyObject(value)) {
|
|
401
|
-
flags = fieldType.complex_fields.reduce((flagsOfComplexField, subField) => {
|
|
402
|
-
return this.extractFlagsDataFromCaseField(flagsOfComplexField, subField, pathToFlagsFormGroup, topLevelCaseField, value[subField.id]);
|
|
403
|
-
}, flags);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
break;
|
|
407
|
-
// For a Collection field, the values are stored directly as key-value pairs in the CaseField's value property
|
|
408
|
-
// as an array, unless the collection is a sub-field of a Complex type - sub-fields never contain values
|
|
409
|
-
case 'Collection':
|
|
410
|
-
// If this is a collection of Flags CaseFields, these can be mapped to Flags objects immediately
|
|
411
|
-
if (FieldsUtils.isFlagsFieldType(fieldType.collection_field_type)) {
|
|
412
|
-
// If the Collection CaseField has a value (an array), it is a root-level Collection field; if it does not,
|
|
413
|
-
// it is a Collection CaseField that is a sub-field within a Complex field, so use the currentValue value
|
|
414
|
-
// (if any) instead
|
|
415
|
-
const pathFragment = pathToFlagsFormGroup += '.index.value';
|
|
416
|
-
if (caseField.value) {
|
|
417
|
-
caseField.value.forEach((item, index) => {
|
|
418
|
-
// At each iteration, replace the "index" placeholder with the actual index
|
|
419
|
-
pathToFlagsFormGroup = pathFragment.replace('index', index.toString(10));
|
|
420
|
-
flags.push(this.mapValueToFlagsWithFormGroupPathObject(item.id, item.value, pathToFlagsFormGroup, caseField));
|
|
421
|
-
});
|
|
422
|
-
}
|
|
423
|
-
else if (currentValue) {
|
|
424
|
-
currentValue.forEach((item, index) => {
|
|
425
|
-
pathToFlagsFormGroup = pathFragment.replace('index', index.toString(10));
|
|
426
|
-
flags.push(this.mapValueToFlagsWithFormGroupPathObject(item.id, item.value, pathToFlagsFormGroup, topLevelCaseField));
|
|
427
|
-
});
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
else if (fieldType.collection_field_type.type === 'Complex' && fieldType.collection_field_type.complex_fields) {
|
|
431
|
-
if (caseField.value) {
|
|
432
|
-
// Perform a reduction over each Complex field's sub-fields (similar to what is done above for non-Flags
|
|
433
|
-
// Complex fields)
|
|
434
|
-
// (Cannot just call this function recursively for each Complex field in the collection because the CaseField
|
|
435
|
-
// for each one is not part of the collection)
|
|
436
|
-
const pathFragment = pathToFlagsFormGroup += '.index.value';
|
|
437
|
-
caseField.value.forEach((item, index) => {
|
|
438
|
-
// At each iteration, replace the "index" placeholder with the actual index
|
|
439
|
-
pathToFlagsFormGroup = pathFragment.replace('index', index.toString(10));
|
|
440
|
-
flags = fieldType.collection_field_type.complex_fields.reduce((flagsOfComplexField, subField) => {
|
|
441
|
-
return this.extractFlagsDataFromCaseField(flagsOfComplexField, subField, pathToFlagsFormGroup, topLevelCaseField, item.value[subField.id]);
|
|
442
|
-
}, flags);
|
|
443
|
-
});
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
break;
|
|
447
|
-
default:
|
|
448
|
-
// Ignore all other field types
|
|
449
|
-
}
|
|
450
|
-
return flags;
|
|
451
|
-
}
|
|
452
|
-
static mapCaseFieldToFlagsWithFormGroupPathObject(caseField, pathToFlagsFormGroup) {
|
|
453
|
-
return this.mapValueToFlagsWithFormGroupPathObject(caseField.id, caseField.value, pathToFlagsFormGroup, caseField);
|
|
454
|
-
}
|
|
455
|
-
static mapValueToFlagsWithFormGroupPathObject(id, value, pathToFlagsFormGroup, caseField) {
|
|
456
|
-
return {
|
|
457
|
-
flags: {
|
|
458
|
-
flagsCaseFieldId: id,
|
|
459
|
-
partyName: value ? value['partyName'] : null,
|
|
460
|
-
roleOnCase: value ? value['roleOnCase'] : null,
|
|
461
|
-
details: value && value['details'] && value['details'].length > 0
|
|
462
|
-
? value['details'].map(detail => {
|
|
463
|
-
return Object.assign({}, ...Object.keys(detail.value).map((k) => {
|
|
464
|
-
// The id property set below will be null for a new case flag, and a unique id returned from CCD when
|
|
465
|
-
// updating an existing flag
|
|
466
|
-
switch (k) {
|
|
467
|
-
// These two fields are date-time fields
|
|
468
|
-
case 'dateTimeModified':
|
|
469
|
-
case 'dateTimeCreated':
|
|
470
|
-
return { [k]: detail.value[k] ? new Date(detail.value[k]) : null, id: detail.id };
|
|
471
|
-
// This field is a "yes/no" field
|
|
472
|
-
case 'hearingRelevant':
|
|
473
|
-
return detail.value[k].toUpperCase() === 'YES' ? { [k]: true, id: detail.id } : { [k]: false, id: detail.id };
|
|
474
|
-
default:
|
|
475
|
-
return { [k]: detail.value[k], id: detail.id };
|
|
476
|
-
}
|
|
477
|
-
}));
|
|
478
|
-
})
|
|
479
|
-
: null,
|
|
480
|
-
visibility: value ? value['visibility'] : null,
|
|
481
|
-
groupId: value ? value['groupId'] : null
|
|
482
|
-
},
|
|
483
|
-
pathToFlagsFormGroup,
|
|
484
|
-
caseField
|
|
485
|
-
};
|
|
486
|
-
}
|
|
487
|
-
/**
|
|
488
|
-
* Count active flags in a `CaseField` instance, recursing and iterating through sub-fields of a Complex field or each
|
|
489
|
-
* field in a Collection field.
|
|
490
|
-
*
|
|
491
|
-
* @param activeCount An accumulation of the total number of active flags
|
|
492
|
-
* @param caseField A `CaseField` instance for which to count the active flags
|
|
493
|
-
* @param currentValue The current value object of a `CaseField` that is a sub-field of a non root-level Complex field.
|
|
494
|
-
* (For Complex types, only the _root-level_ `CaseField` contains a value property - all sub-fields, including any
|
|
495
|
-
* nested Complex fields, do *not* contain any values themselves.)
|
|
496
|
-
* @returns The count of active flags
|
|
497
|
-
*/
|
|
498
|
-
static countActiveFlagsInCaseField(activeCount, caseField, currentValue) {
|
|
499
|
-
const fieldType = caseField.field_type;
|
|
500
|
-
switch (fieldType.type) {
|
|
501
|
-
case 'Complex':
|
|
502
|
-
if (FieldsUtils.isFlagsCaseField(caseField)) {
|
|
503
|
-
// If the Flags CaseField has a value, it is a root-level Complex field; if it does not, it is a Flags
|
|
504
|
-
// CaseField that is a sub-field within another Complex field, so use the currentValue value (if any) instead
|
|
505
|
-
const value = caseField.value ? caseField.value : currentValue;
|
|
506
|
-
if (value && FieldsUtils.isNonEmptyObject(value) && value.details) {
|
|
507
|
-
activeCount = value.details.reduce((count, detail) => detail.value.status === CaseFlagStatus.ACTIVE ? count + 1 : count, activeCount);
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
else if (fieldType.complex_fields) {
|
|
511
|
-
const value = caseField.value ? caseField.value : currentValue;
|
|
512
|
-
if (value && FieldsUtils.isNonEmptyObject(value)) {
|
|
513
|
-
activeCount = fieldType.complex_fields.reduce((activeFlagsCountOfComplexField, subField) => {
|
|
514
|
-
return this.countActiveFlagsInCaseField(activeFlagsCountOfComplexField, subField, value[subField.id]);
|
|
515
|
-
}, activeCount);
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
break;
|
|
519
|
-
// For a Collection field, the values are stored directly as key-value pairs in the CaseField's value property
|
|
520
|
-
// as an array, unless the collection is a sub-field of a Complex type - sub-fields never contain values
|
|
521
|
-
case 'Collection':
|
|
522
|
-
if (FieldsUtils.isFlagsFieldType(fieldType.collection_field_type)) {
|
|
523
|
-
// If the Collection CaseField has a value (an array), it is a root-level Collection field; if it does not,
|
|
524
|
-
// it is a Collection CaseField that is a sub-field within a Complex field, so use the currentValue value
|
|
525
|
-
// (if any) instead
|
|
526
|
-
const value = caseField.value ? caseField.value : currentValue;
|
|
527
|
-
if (value) {
|
|
528
|
-
value.forEach((item) => {
|
|
529
|
-
if (item.value['details']) {
|
|
530
|
-
activeCount = item.value['details'].reduce((count, detail) => detail.value.status === CaseFlagStatus.ACTIVE ? count + 1 : count, activeCount);
|
|
531
|
-
}
|
|
532
|
-
});
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
else if (fieldType.collection_field_type.type === 'Complex' && fieldType.collection_field_type.complex_fields) {
|
|
536
|
-
if (caseField.value) {
|
|
537
|
-
// Perform a reduction over each Complex field's sub-fields (similar to what is done above for non-Flags
|
|
538
|
-
// Complex fields)
|
|
539
|
-
// (Cannot just call this function recursively for each Complex field in the collection because the CaseField
|
|
540
|
-
// for each one is not part of the collection)
|
|
541
|
-
caseField.value.forEach((item) => {
|
|
542
|
-
activeCount = fieldType.collection_field_type.complex_fields.reduce((activeFlagsCountOfComplexField, subField) => {
|
|
543
|
-
return this.countActiveFlagsInCaseField(activeFlagsCountOfComplexField, subField, item.value[subField.id]);
|
|
544
|
-
}, activeCount);
|
|
545
|
-
});
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
break;
|
|
549
|
-
default:
|
|
550
|
-
// Ignore all other field types
|
|
551
|
-
}
|
|
552
|
-
return activeCount;
|
|
553
|
-
}
|
|
554
|
-
static getValidationErrorMessageForFlagLauncherCaseField(caseField) {
|
|
555
|
-
switch (caseField.display_context_parameter) {
|
|
556
|
-
case CaseFlagDisplayContextParameter.CREATE:
|
|
557
|
-
case CaseFlagDisplayContextParameter.CREATE_2_POINT_1:
|
|
558
|
-
return 'Please select Next to complete the creation of the case flag';
|
|
559
|
-
case CaseFlagDisplayContextParameter.CREATE_EXTERNAL:
|
|
560
|
-
return 'Please select Next to complete the creation of the support request';
|
|
561
|
-
case CaseFlagDisplayContextParameter.UPDATE:
|
|
562
|
-
case CaseFlagDisplayContextParameter.UPDATE_2_POINT_1:
|
|
563
|
-
return 'Please select Next to complete the update of the selected case flag';
|
|
564
|
-
case CaseFlagDisplayContextParameter.UPDATE_EXTERNAL:
|
|
565
|
-
return 'Please select Next to complete the update of the selected support request';
|
|
566
|
-
default:
|
|
567
|
-
return '';
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
buildCanShowPredicate(eventTrigger, form) {
|
|
571
|
-
const currentState = this.getCurrentEventState(eventTrigger, form);
|
|
572
|
-
return (page) => {
|
|
573
|
-
return page.parsedShowCondition.match(currentState);
|
|
574
|
-
};
|
|
575
|
-
}
|
|
576
|
-
getCurrentEventState(eventTrigger, form) {
|
|
577
|
-
return this.mergeCaseFieldsAndFormFields(eventTrigger.case_fields, form.controls['data'].value);
|
|
578
|
-
}
|
|
579
|
-
cloneCaseField(obj) {
|
|
580
|
-
return Object.assign(new CaseField(), obj);
|
|
581
|
-
}
|
|
582
|
-
mergeCaseFieldsAndFormFields(caseFields, formFields) {
|
|
583
|
-
return this.mergeFields(caseFields, formFields, FieldsUtils.DEFAULT_MERGE_FUNCTION);
|
|
584
|
-
}
|
|
585
|
-
mergeLabelCaseFieldsAndFormFields(caseFields, formFields) {
|
|
586
|
-
return this.mergeFields(caseFields, formFields, FieldsUtils.LABEL_MERGE_FUNCTION);
|
|
587
|
-
}
|
|
588
|
-
controlIterator(aControl, formArrayFn, formGroupFn, controlFn) {
|
|
589
|
-
if (aControl instanceof FormArray) { // We're in a collection
|
|
590
|
-
formArrayFn(aControl);
|
|
591
|
-
}
|
|
592
|
-
else if (aControl instanceof FormGroup) { // We're in a complex type.
|
|
593
|
-
formGroupFn(aControl);
|
|
594
|
-
}
|
|
595
|
-
else if (aControl instanceof FormControl) { // FormControl
|
|
596
|
-
controlFn(aControl);
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
mergeFields(caseFields, formFields, mergeFunction) {
|
|
600
|
-
const result = FieldsUtils.cloneObject(formFields);
|
|
601
|
-
caseFields.forEach(field => {
|
|
602
|
-
mergeFunction(field, result);
|
|
603
|
-
if (field.field_type && field.field_type.complex_fields && field.field_type.complex_fields.length > 0) {
|
|
604
|
-
result[field.id] = this.mergeFields(field.field_type.complex_fields, result[field.id], mergeFunction);
|
|
605
|
-
}
|
|
606
|
-
});
|
|
607
|
-
return result;
|
|
608
|
-
}
|
|
609
|
-
static ɵfac = function FieldsUtils_Factory(t) { return new (t || FieldsUtils)(); };
|
|
610
|
-
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FieldsUtils, factory: FieldsUtils.ɵfac });
|
|
611
|
-
}
|
|
612
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FieldsUtils, [{
|
|
613
|
-
type: Injectable
|
|
614
|
-
}], null, null); })();
|
|
615
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9maWVsZHMvZmllbGRzLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUkxRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFELE9BQU8sRUFBb0IsU0FBUyxFQUF5RSxNQUFNLGNBQWMsQ0FBQztBQUNsSSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFFbkYsV0FBVztBQUVYLE1BQU0sT0FBTyxXQUFXO0lBQ2QsTUFBTSxDQUFVLHlCQUF5QixHQUFHLFdBQVcsQ0FBQztJQUN4RCxNQUFNLENBQVUsWUFBWSxHQUFpQixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RSxNQUFNLENBQVUsUUFBUSxHQUFhLElBQUksUUFBUSxDQUFDLElBQUksdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLHVGQUF1RjtJQUNoRixNQUFNLENBQVUsWUFBWSxHQUFHLFVBQVUsQ0FBQztJQUNqRCw2Q0FBNkM7SUFDdEMsTUFBTSxDQUFVLHFDQUFxQyxHQUFHLFlBQVksQ0FBQztJQUNyRSxNQUFNLENBQVUsa0NBQWtDLEdBQUcsU0FBUyxDQUFDO0lB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O2FBQU0sSUFBSSxRQUFRLFlBQVksU0FBUyxFQUFFLEVBQUUsMkJBQTJCO1lBQ3JFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QjthQUFNLElBQUksUUFBUSxZQUFZLFdBQVcsRUFBRSxFQUFFLGNBQWM7WUFDMUQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxVQUF1QixFQUFFLFVBQWtCLEVBQUUsYUFBeUQ7UUFDeEgsTUFBTSxNQUFNLEdBQVcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDN0IsSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3JHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2FBQ3ZHO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO3FFQTdwQlUsV0FBVztnRUFBWCxXQUFXLFdBQVgsV0FBVzs7dUZBQVgsV0FBVztjQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmVuY3lQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzRnJvbUV4aXN0IH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgV2l6YXJkUGFnZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvZG9tYWluJztcbmltcG9ydCB7IEFic3RyYWN0Rm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9wYWxldHRlL2Jhc2UtZmllbGQvYWJzdHJhY3QtZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxhZ0RldGFpbCwgRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZsYWcvZG9tYWluL2Nhc2UtZmxhZy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLCBDYXNlRmxhZ1N0YXR1cyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZsYWcvZW51bXMnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3BhbGV0dGUvdXRpbHMnO1xuaW1wb3J0IHsgQ2FzZUV2ZW50VHJpZ2dlciwgQ2FzZUZpZWxkLCBDYXNlVGFiLCBDYXNlVmlldywgRmllbGRUeXBlLCBGaWVsZFR5cGVFbnVtLCBGaXhlZExpc3RJdGVtLCBQcmVkaWNhdGUgfSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRm9ybWF0VHJhbnNsYXRvclNlcnZpY2UgfSBmcm9tICcuLi9jYXNlLWZpZWxkcy9mb3JtYXQtdHJhbnNsYXRvci5zZXJ2aWNlJztcblxuLy8gQGR5bmFtaWNcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGaWVsZHNVdGlscyB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNhc2VMZXZlbENhc2VGbGFnc0ZpZWxkSWQgPSAnY2FzZUZsYWdzJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgY3VycmVuY3lQaXBlOiBDdXJyZW5jeVBpcGUgPSBuZXcgQ3VycmVuY3lQaXBlKCdlbi1HQicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBkYXRlUGlwZTogRGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUobmV3IEZvcm1hdFRyYW5zbGF0b3JTZXJ2aWNlKCkpO1xuICAvLyBFVUktNDI0NC4gMyBkYXNoZXMgaW5zdGVhZCBvZiAxIHRvIG1ha2UgdGhpcyBsZXNzIGxpa2VseSB0byBjbGFzaCB3aXRoIGEgcmVhbCBmaWVsZC5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMQUJFTF9TVUZGSVggPSAnLS0tTEFCRUwnO1xuICAvLyBIYW5kbGluZyBvZiBEeW5hbWljIExpc3RzIGluIENvbXBsZXggVHlwZXNcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRVJWRVJfUkVTUE9OU0VfRklFTERfVFlQRV9DT0xMRUNUSU9OID0gJ0NvbGxlY3Rpb24nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNFUlZFUl9SRVNQT05TRV9GSUVMRF9UWVBFX0NPTVBMRVggPSAnQ29tcGxleCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0VSVkVSX1JFU1BPTlNFX0ZJRUxEX1RZUEVfRFlOQU1JQ19MSVNUX1RZUEU6IEZpZWxkVHlwZUVudW1bXSA9IFsnRHluYW1pY0xpc3QnLCAnRHluYW1pY1JhZGlvTGlzdCddO1xuXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZERpc3BsYXlDb250ZXh0KGN0eDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChjdHggPT09ICdNQU5EQVRPUlknIHx8IGN0eCA9PT0gJ1JFQURPTkxZJ1xuICAgICAgfHwgY3R4ID09PSAnT1BUSU9OQUwnIHx8IGN0eCA9PT0gJ0hJRERFTidcbiAgICAgIHx8IGN0eCA9PT0gJ0NPTVBMRVgnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvQ2FzZUZpZWxkKG9iajogYW55KTogQ2FzZUZpZWxkIHtcbiAgICBpZiAoIShvYmogaW5zdGFuY2VvZiBDYXNlRmllbGQpKSB7XG4gICAgICByZXR1cm4gcGxhaW5Ub0NsYXNzRnJvbUV4aXN0KG5ldyBDYXNlRmllbGQoKSwgb2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9WYWx1ZXNNYXAoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBhbnkge1xuICAgIGNvbnN0IHZhbHVlTWFwID0ge307XG4gICAgY2FzZUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIHZhbHVlTWFwW2ZpZWxkLmlkXSA9IEZpZWxkc1V0aWxzLnByZXBhcmVWYWx1ZShmaWVsZCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHZhbHVlTWFwO1xuICB9XG5cbiAgLy8gcHVibGljIHN0YXRpYyBnZXRUeXBlKGVsZW06IGFueSk6IHN0cmluZyB7XG4gIC8vICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlbGVtKS5zbGljZSg4LCAtMSk7XG4gIC8vIH1cblxuICBwdWJsaWMgc3RhdGljIGlzT2JqZWN0KGVsZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgZWxlbSA9PT0gJ29iamVjdCcgJiYgZWxlbSAhPT0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNOb25FbXB0eU9iamVjdChlbGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc09iamVjdChlbGVtKSAmJiBPYmplY3Qua2V5cyhlbGVtKS5sZW5ndGggIT09IDA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzQXJyYXkoZWxlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZWxlbSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFyZUNvbGxlY3Rpb25WYWx1ZXNTaW1wbGVGaWVsZHMoZmllbGRWYWx1ZTogYW55W10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNPYmplY3QoZmllbGRWYWx1ZVswXVsndmFsdWUnXSkgJiYgIUFycmF5LmlzQXJyYXkoZmllbGRWYWx1ZVswXVsndmFsdWUnXSkgJiYgZmllbGRWYWx1ZVswXVsndmFsdWUnXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0NvbGxlY3Rpb25PZlNpbXBsZVR5cGVzKGZpZWxkVmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzQ29sbGVjdGlvbihmaWVsZFZhbHVlKSAmJiB0aGlzLmFyZUNvbGxlY3Rpb25WYWx1ZXNTaW1wbGVGaWVsZHMoZmllbGRWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzTXVsdGlTZWxlY3RWYWx1ZShmb3JtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc05vbkVtcHR5QXJyYXkoZm9ybSkgJiYgIXRoaXMuaXNDb2xsZWN0aW9uV2l0aFZhbHVlKGZvcm0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc05vbkVtcHR5QXJyYXkocGFnZUZvcm1GaWVsZHM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBhZ2VGb3JtRmllbGRzKSAmJiBwYWdlRm9ybUZpZWxkc1swXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0NvbGxlY3Rpb24ocGFnZUZvcm1GaWVsZHM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzTm9uRW1wdHlBcnJheShwYWdlRm9ybUZpZWxkcykgJiYgdGhpcy5pc0NvbGxlY3Rpb25XaXRoVmFsdWUocGFnZUZvcm1GaWVsZHMpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0NvbGxlY3Rpb25XaXRoVmFsdWUocGFnZUZvcm1GaWVsZHM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHBhZ2VGb3JtRmllbGRzWzBdWyd2YWx1ZSddICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNsb25lT2JqZWN0KG9iajogYW55KTogYW55IHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcbiAgfVxuXG4gIC8vIHRlbXBvcmFyeSBmdW5jdGlvbiB1bnRpbCB0aGlzIGNhbiBiZSBtb3ZlZCB0byBDYXNlVmlldyBjbGFzcyAoUkRNLTI2ODEpXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Q2FzZUZpZWxkcyhjYXNlVmlldzogQ2FzZVZpZXcpOiBDYXNlRmllbGRbXSB7XG4gICAgY29uc3QgY2FzZURhdGFGaWVsZHM6IENhc2VGaWVsZFtdID0gY2FzZVZpZXcudGFicy5yZWR1Y2UoKGFjYzogQ2FzZUZpZWxkW10sIHRhYjogQ2FzZVRhYikgPT4ge1xuICAgICAgcmV0dXJuIGFjYy5jb25jYXQodGFiLmZpZWxkcyk7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgbWV0YWRhdGFGaWVsZHM6IENhc2VGaWVsZFtdID0gY2FzZVZpZXcubWV0YWRhdGFGaWVsZHM7XG4gICAgcmV0dXJuIG1ldGFkYXRhRmllbGRzLmNvbmNhdChjYXNlRGF0YUZpZWxkcy5maWx0ZXIoKGNhc2VGaWVsZDogQ2FzZUZpZWxkKSA9PiB7XG4gICAgICByZXR1cm4gbWV0YWRhdGFGaWVsZHMuZmluZEluZGV4KG1ldGFkYXRhRmllbGQgPT4gbWV0YWRhdGFGaWVsZC5pZCA9PT0gY2FzZUZpZWxkLmlkKSA8IDA7XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhZGRDYXNlRmllbGRBbmRDb21wb25lbnRSZWZlcmVuY2VzKGM6IEFic3RyYWN0Q29udHJvbCwgY2Y6IENhc2VGaWVsZCwgY29tcDogQWJzdHJhY3RGb3JtRmllbGRDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjWydjYXNlRmllbGQnXSA9IGNmO1xuICAgIGNbJ2NvbXBvbmVudCddID0gY29tcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmUgY2hlY2sgb2YgYW4gYXJyYXkgb3Igb2JqZWN0IGFuZCBpdHMgZGVzY2VuZGFudHMgZm9yIHRoZSBwcmVzZW5jZSBvZiBhbnkgbm9uLWVtcHR5IHZhbHVlcy5cbiAgICpcbiAgICogQHBhcmFtIG9iamVjdCBUaGUgYXJyYXkgb3Igb2JqZWN0IHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXkgb3Igb2JqZWN0IChvciBhIGRlc2NlbmRhbnQpIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBub24tZW1wdHkgdmFsdWU7IGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnRhaW5zTm9uRW1wdHlWYWx1ZXMob2JqZWN0OiBvYmplY3QpOiBib29sZWFuIHtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3Qua2V5cyhvYmplY3QpLm1hcChrZXkgPT4gb2JqZWN0W2tleV0pO1xuICAgIGNvbnN0IG9iamVjdFJlZnMgPSBbXTtcbiAgICAvLyBBbHNvIHRlc3QgZm9yIG51bWVyaWMgdmFsdWVzLCBhbmQgbGVuZ3RoID4gMCBmb3Igbm9uLW51bWVyaWMgdmFsdWVzIGJlY2F1c2UgdGhpcyBjb3ZlcnMgYm90aCBzdHJpbmdzIGFuZCBhcnJheXMuXG4gICAgLy8gTm90ZTogRGVsaWJlcmF0ZSB1c2Ugb2Ygbm9uLWVxdWFsaXR5ICghPSkgb3BlcmF0b3IgZm9yIG51bGwgY2hlY2ssIHRvIGhhbmRsZSBib3RoIG51bGwgYW5kIHVuZGVmaW5lZCB2YWx1ZXMuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB0cmlwbGUtZXF1YWxzXG4gICAgY29uc3QgaGFzTm9uTnVsbFByaW1pdGl2ZSA9IHZhbHVlcy5zb21lKHggPT4gKHggIT0gbnVsbCAmJlxuICAgICAgKCh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeC5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSB8fCBBcnJheS5pc0FycmF5KHgpXG4gICAgICAgID8gIW9iamVjdFJlZnMucHVzaCh4KVxuICAgICAgICA6IHR5cGVvZiB4ID09PSAnbnVtYmVyJyB8fCB4Lmxlbmd0aCA+IDApXG4gICAgKSk7XG4gICAgcmV0dXJuICFoYXNOb25OdWxsUHJpbWl0aXZlID8gb2JqZWN0UmVmcy5zb21lKHkgPT4gdGhpcy5jb250YWluc05vbkVtcHR5VmFsdWVzKHkpKSA6IGhhc05vbk51bGxQcmltaXRpdmU7XG4gIH1cblxuICAvKipcbiAgICogaGFuZGxlTmVzdGVkRHluYW1pY0xpc3RzKClcbiAgICogUmVhc3NpZ25zIGxpc3RfaXRlbSBhbmQgdmFsdWUgZGF0YSB0byBEeW5hbWljTGlzdCBjaGlsZHJlblxuICAgKiBkb3duIHRoZSB0cmVlLiBTZXJ2ZXIgcmVzcG9uc2UgcmV0dXJucyBkYXRhIG9ubHkgaW5cbiAgICogdGhlIGB2YWx1ZWAgb2JqZWN0IG9mIHBhcmVudCBjb21wbGV4IHR5cGVcbiAgICpcbiAgICogRVVJLTI1MzAgRHluYW1pYyBMaXN0cyBmb3IgRWxlbWVudHMgaW4gYSBDb21wbGV4IFR5cGVcbiAgICpcbiAgICogQHBhcmFtIGpzb25Cb2R5IC0geyBjYXNlX2ZpZWxkczogWyBDYXNlRmllbGQsIENhc2VGaWVsZCBdIH1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaGFuZGxlTmVzdGVkRHluYW1pY0xpc3RzKGpzb25Cb2R5OiB7IGNhc2VfZmllbGRzOiBDYXNlRmllbGRbXSB9KTogYW55IHtcbiAgICBpZiAoanNvbkJvZHkuY2FzZV9maWVsZHMpIHtcbiAgICAgIGpzb25Cb2R5LmNhc2VfZmllbGRzLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgaWYgKGNhc2VGaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICAgICAgdGhpcy5zZXREeW5hbWljTGlzdERlZmluaXRpb24oY2FzZUZpZWxkLCBjYXNlRmllbGQuZmllbGRfdHlwZSwgY2FzZUZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb25Cb2R5O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcHJlcGFyZVZhbHVlKGZpZWxkOiBDYXNlRmllbGQpOiBhbnkge1xuICAgIGlmIChmaWVsZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGZpZWxkLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoZmllbGQuaXNDb21wbGV4KCkpIHtcbiAgICAgIGNvbnN0IHZhbHVlTWFwID0ge307XG4gICAgICBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLmZvckVhY2goY29tcGxleEZpZWxkID0+IHtcbiAgICAgICAgdmFsdWVNYXBbY29tcGxleEZpZWxkLmlkXSA9IEZpZWxkc1V0aWxzLnByZXBhcmVWYWx1ZShjb21wbGV4RmllbGQpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdmFsdWVNYXA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9NRVJHRV9GVU5DVElPTiA9IGZ1bmN0aW9uIG1lcmdlRnVuY3Rpb24oZmllbGQ6IENhc2VGaWVsZCwgcmVzdWx0OiBvYmplY3QpOiB2b2lkIHtcbiAgICBpZiAoIXJlc3VsdC5oYXNPd25Qcm9wZXJ0eShmaWVsZC5pZCkpIHtcbiAgICAgIHJlc3VsdFtmaWVsZC5pZF0gPSBmaWVsZC52YWx1ZTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTEFCRUxfTUVSR0VfRlVOQ1RJT04gPSBmdW5jdGlvbiBtZXJnZUZ1bmN0aW9uKGZpZWxkOiBDYXNlRmllbGQsIHJlc3VsdDogb2JqZWN0KTogdm9pZCB7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHJlc3VsdCA9IHt9O1xuICAgIH1cbiAgICBpZiAoIXJlc3VsdC5oYXNPd25Qcm9wZXJ0eShmaWVsZC5pZCkpIHtcbiAgICAgIHJlc3VsdFtmaWVsZC5pZF0gPSBmaWVsZC52YWx1ZTtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHN3aXRjaC1kZWZhdWx0XG4gICAgc3dpdGNoIChmaWVsZC5maWVsZF90eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ0ZpeGVkTGlzdCc6XG4gICAgICBjYXNlICdGaXhlZFJhZGlvTGlzdCc6IHtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLmlkXSA9IEZpZWxkc1V0aWxzLmdldEZpeGVkTGlzdExhYmVsQnlDb2RlT3JFbXB0eShmaWVsZCwgcmVzdWx0W2ZpZWxkLmlkXSB8fCBmaWVsZC52YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnTXVsdGlTZWxlY3RMaXN0Jzoge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gcmVzdWx0W2ZpZWxkLmlkXSB8fCBbXTtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLmlkICsgRmllbGRzVXRpbHMuTEFCRUxfU1VGRklYXSA9IFtdO1xuICAgICAgICBmaWVsZFZhbHVlLmZvckVhY2goKGNvZGU6IGFueSwgaWR4OiBhbnkpID0+IHtcbiAgICAgICAgICByZXN1bHRbZmllbGQuaWQgKyBGaWVsZHNVdGlscy5MQUJFTF9TVUZGSVhdW2lkeF0gPSBGaWVsZHNVdGlscy5nZXRGaXhlZExpc3RMYWJlbEJ5Q29kZU9yRW1wdHkoZmllbGQsIGNvZGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdMYWJlbCc6IHtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLmlkXSA9IEZpZWxkc1V0aWxzLmdldExhYmVsKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdNb25leUdCUCc6IHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IChyZXN1bHRbZmllbGQuaWRdIHx8IGZpZWxkLnZhbHVlKTtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLmlkXSA9IEZpZWxkc1V0aWxzLmdldE1vbmV5R0JQKGZpZWxkVmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RhdGUnOiB7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSAocmVzdWx0W2ZpZWxkLmlkXSB8fCBmaWVsZC52YWx1ZSk7XG4gICAgICAgIHJlc3VsdFtmaWVsZC5pZF0gPSBGaWVsZHNVdGlscy5nZXREYXRlKGZpZWxkVmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0NvbXBsZXgnOiB7XG4gICAgICAgIGlmIChyZXN1bHRbZmllbGQuaWRdICYmIGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLmZvckVhY2goKGY6IENhc2VGaWVsZCkgPT4ge1xuICAgICAgICAgICAgaWYgKFsnQ29sbGVjdGlvbicsICdDb21wbGV4JywgJ011bHRpU2VsZWN0TGlzdCddLmluZGV4T2YoZi5maWVsZF90eXBlLnR5cGUpID4gLTEpIHtcbiAgICAgICAgICAgICAgRmllbGRzVXRpbHMuTEFCRUxfTUVSR0VfRlVOQ1RJT04oZiwgcmVzdWx0W2ZpZWxkLmlkXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDb2xsZWN0aW9uJzoge1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IChyZXN1bHRbZmllbGQuaWRdIHx8IGZpZWxkLnZhbHVlKTtcbiAgICAgICAgaWYgKGVsZW1lbnRzKSB7XG4gICAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6c3dpdGNoLWRlZmF1bHRcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICdNb25leUdCUCc6IHtcbiAgICAgICAgICAgICAgICBlbGVtLnZhbHVlID0gRmllbGRzVXRpbHMuZ2V0TW9uZXlHQlAoZWxlbS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSAnRGF0ZSc6IHtcbiAgICAgICAgICAgICAgICBlbGVtLnZhbHVlID0gRmllbGRzVXRpbHMuZ2V0RGF0ZShlbGVtLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlICdDb21wbGV4Jzoge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMuZm9yRWFjaCgoZjogQ2FzZUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChbJ0NvbGxlY3Rpb24nLCAnQ29tcGxleCcsICdNdWx0aVNlbGVjdExpc3QnXS5pbmRleE9mKGYuZmllbGRfdHlwZS50eXBlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgRmllbGRzVXRpbHMuTEFCRUxfTUVSR0VfRlVOQ1RJT04oZiwgZWxlbS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogRm9ybWF0cyBhIGBNb25leUdCUGAgdmFsdWUgdG8gaW5jbHVkZSBjdXJyZW5jeSB1bml0cy5cbiAgICogQHBhcmFtIGZpZWxkVmFsdWUgVGhlIEN1cnJlbmN5UGlwZSBleHBlY3RzIGFuIGBhbnlgIHBhcmFtZXRlciBzbyB0aGlzIG11c3QgYWxzbyBiZSBgYW55YCxcbiAgICogYnV0IGl0IHNob3VsZCBiZSBcIm51bWJlci1saWtlXCIgKGUuZy4sICcxMjM0JylcbiAgICogQHJldHVybnMgQSBmb3JtYXR0ZWQgc3RyaW5nIChlLmcuLCDCozEyLjM0KVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0TW9uZXlHQlAoZmllbGRWYWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZmllbGRWYWx1ZSA/IEZpZWxkc1V0aWxzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oZmllbGRWYWx1ZSAvIDEwMCwgJ0dCUCcsICdzeW1ib2wnKSA6IGZpZWxkVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRMYWJlbChmaWVsZFZhbHVlOiBDYXNlRmllbGQpOiBzdHJpbmcge1xuICAgIHJldHVybiBmaWVsZFZhbHVlID8gZmllbGRWYWx1ZS5sYWJlbCA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0RGF0ZShmaWVsZFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICAvLyBGb3JtYXQgc3BlY2lmaWVkIGhlcmUgd2Fzbid0IHByZXZpb3VzbHkgd29ya2luZyBhbmQgbG90cyBvZiB0ZXN0cyBkZXBlbmQgb24gaXQgbm90IHdvcmtpbmdcbiAgICAgIC8vIE5vdyB0aGF0IGZvcm1hdHMgd29yayBjb3JyZWN0bHkgbWFueSB0ZXN0IHdvdWxkIGJyZWFrIC0gYW5kIHRoaXMgY291bGQgYWZmZWN0IHNlcnZpY2VzIHdoaWNoIG1heSBkZXBlbmQgb25cbiAgICAgIC8vIHRoZSBvcmdpbmFsIGJlaGF2aW91ciBvZiByZXR1cm5pbmcgZGF0ZXMgaW4gXCJkIE1NTSB5eXl5XCJcbiAgICAgIC8vIE5vdGUgLSByZXBsYWNlZCAnZCcgd2l0aCAnRCcgYXMgZGF0ZXBpcGUgdXNpbmcgbW9tZW50IHRvIGF2b2lkIHRpbWV6b25lIGRpc2NyZXBhbmNpZXNcbiAgICAgIHJldHVybiBGaWVsZHNVdGlscy5kYXRlUGlwZS50cmFuc2Zvcm0oZmllbGRWYWx1ZSwgbnVsbCwgJ0QgTU1NIHl5eXknKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0Rm9ySW52YWxpZEZpZWxkKCdEYXRlJywgZmllbGRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0Rml4ZWRMaXN0TGFiZWxCeUNvZGVPckVtcHR5KGZpZWxkOiBDYXNlRmllbGQsIGNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVsZXZhbnRJdGVtOiBGaXhlZExpc3RJdGVtID0gY29kZSA/IGZpZWxkLmZpZWxkX3R5cGUuZml4ZWRfbGlzdF9pdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5jb2RlID09PSBjb2RlKSA6IG51bGw7XG4gICAgcmV0dXJuIHJlbGV2YW50SXRlbSA/IHJlbGV2YW50SXRlbS5sYWJlbCA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdGV4dEZvckludmFsaWRGaWVsZCh0eXBlOiBzdHJpbmcsIGludmFsaWRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHsgSW52YWxpZCAke3R5cGV9OiAke2ludmFsaWRWYWx1ZX0gfWA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZXREeW5hbWljTGlzdERlZmluaXRpb24oY2FzZUZpZWxkOiBDYXNlRmllbGQsIGNhc2VGaWVsZFR5cGU6IEZpZWxkVHlwZSwgcm9vdENhc2VGaWVsZDogQ2FzZUZpZWxkKSB7XG4gICAgaWYgKGNhc2VGaWVsZFR5cGUudHlwZSA9PT0gRmllbGRzVXRpbHMuU0VSVkVSX1JFU1BPTlNFX0ZJRUxEX1RZUEVfQ09NUExFWCkge1xuXG4gICAgICBjYXNlRmllbGRUeXBlLmNvbXBsZXhfZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGlzRHluYW1pY0ZpZWxkID0gRmllbGRzVXRpbHMuU0VSVkVSX1JFU1BPTlNFX0ZJRUxEX1RZUEVfRFlOQU1JQ19MSVNUX1RZUEUuaW5kZXhPZihmaWVsZC5maWVsZF90eXBlLnR5cGUpICE9PSAtMTtcblxuICAgICAgICAgIGlmIChpc0R5bmFtaWNGaWVsZCkge1xuICAgICAgICAgICAgY29uc3QgZHluYW1pY0xpc3RWYWx1ZSA9IHRoaXMuZ2V0RHluYW1pY0xpc3RWYWx1ZShyb290Q2FzZUZpZWxkLnZhbHVlLCBmaWVsZC5pZCk7XG4gICAgICAgICAgICBpZiAoZHluYW1pY0xpc3RWYWx1ZSkge1xuICAgICAgICAgICAgICBjb25zdCBsaXN0X2l0ZW1zID0gZHluYW1pY0xpc3RWYWx1ZVswXS5saXN0X2l0ZW1zO1xuICAgICAgICAgICAgICBjb25zdCBjb21wbGV4VmFsdWUgPSBkeW5hbWljTGlzdFZhbHVlLm1hcChkYXRhID0+IGRhdGEudmFsdWUpO1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjb21wbGV4VmFsdWUubGVuZ3RoID4gMCA/IGNvbXBsZXhWYWx1ZSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBmaWVsZC52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAuLi52YWx1ZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBmaWVsZC5mb3JtYXR0ZWRfdmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgLi4uZmllbGQuZm9ybWF0dGVkX3ZhbHVlLFxuICAgICAgICAgICAgICAgIC4uLnZhbHVlXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RHluYW1pY0xpc3REZWZpbml0aW9uKGZpZWxkLCBmaWVsZC5maWVsZF90eXBlLCByb290Q2FzZUZpZWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGNhc2VGaWVsZFR5cGUudHlwZSA9PT0gRmllbGRzVXRpbHMuU0VSVkVSX1JFU1BPTlNFX0ZJRUxEX1RZUEVfQ09MTEVDVElPTikge1xuICAgICAgaWYgKGNhc2VGaWVsZFR5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlKSB7XG4gICAgICAgIHRoaXMuc2V0RHluYW1pY0xpc3REZWZpbml0aW9uKGNhc2VGaWVsZCwgY2FzZUZpZWxkVHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUsIHJvb3RDYXNlRmllbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldER5bmFtaWNMaXN0VmFsdWUoanNvbkJsb2NrOiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YSA9IGpzb25CbG9jayA/IHRoaXMuZ2V0TmVzdGVkRmllbGRWYWx1ZXMoanNvbkJsb2NrLCBrZXksIFtdKSA6IFtdO1xuXG4gICAgcmV0dXJuIGRhdGEubGVuZ3RoID4gMCA/IGRhdGEgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0TmVzdGVkRmllbGRWYWx1ZXMoanNvbkRhdGE6IGFueSwga2V5OiBzdHJpbmcsIG91dHB1dDogYW55W10gPSBbXSkge1xuICAgIGlmIChqc29uRGF0YSAmJiBqc29uRGF0YVtrZXldKSB7XG4gICAgICBvdXRwdXQucHVzaChqc29uRGF0YVtrZXldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50S2V5IGluIGpzb25EYXRhKSB7XG4gICAgICAgIGlmICh0eXBlb2YganNvbkRhdGEgPT09ICdvYmplY3QnICYmIGpzb25EYXRhLmhhc093blByb3BlcnR5KGVsZW1lbnRLZXkpKSB7XG4gICAgICAgICAgdGhpcy5nZXROZXN0ZWRGaWVsZFZhbHVlcyhqc29uRGF0YVtlbGVtZW50S2V5XSwga2V5LCBvdXRwdXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzRmxhZ3NDYXNlRmllbGQoY2FzZUZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICBpZiAoIWNhc2VGaWVsZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmlzRmxhZ3NGaWVsZFR5cGUoY2FzZUZpZWxkLmZpZWxkX3R5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgaXNDYXNlRmllbGRPZlR5cGV9IGluc3RlYWQsIHBhc3NpbmcgJ0ZsYWdMYXVuY2hlcicgYXMgdGhlIHNpbmdsZSB0eXBlIGluIHRoZSBgdHlwZXNgIGFycmF5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgaWYgKCFjYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0ZsYWdMYXVuY2hlcic7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBpc0Nhc2VGaWVsZE9mVHlwZX0gaW5zdGVhZCwgcGFzc2luZyAnQ29tcG9uZW50TGF1bmNoZXInIGFzIHRoZSBzaW5nbGUgdHlwZSBpbiB0aGUgYHR5cGVzYFxuICAgKiBhcnJheVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0NvbXBvbmVudExhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgaWYgKCFjYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBvbmVudExhdW5jaGVyJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB7QGxpbmsgQ2FzZUZpZWxkfSBpcyBvZiBvbmUgb2YgdGhlIGdpdmVuIGZpZWxkIHR5cGVzLlxuICAgKlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkIFRoZSBgQ2FzZUZpZWxkYCB0byBjaGVja1xuICAgKiBAcGFyYW0gdHlwZXMgQW4gYXJyYXkgb2Ygb25lIG9yIG1vcmUgZmllbGQgdHlwZXNcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBgQ2FzZUZpZWxkYCB0eXBlIGlzIG9uZSBvZiB0aG9zZSBpbiB0aGUgYXJyYXkgb2YgdHlwZXMgdG8gY2hlY2sgYWdhaW5zdDsgYGZhbHNlYFxuICAgKiBvdGhlcndpc2Ugb3IgaWYgYGNhc2VGaWVsZGAgb3IgYHR5cGVzYCBhcmUgZmFsc3lcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNDYXNlRmllbGRPZlR5cGUoY2FzZUZpZWxkOiBDYXNlRmllbGQsIHR5cGVzOiBGaWVsZFR5cGVFbnVtW10pOiBib29sZWFuIHtcbiAgICBpZiAoIWNhc2VGaWVsZCB8fCAhdHlwZXMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09IGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgfHwgdHlwZSA9PT0gY2FzZUZpZWxkLmZpZWxkX3R5cGUuaWQpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0xpbmtlZENhc2VzQ2FzZUZpZWxkKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZpZWxkc1V0aWxzLmlzQ29tcG9uZW50TGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSAmJlxuICAgICAgY2FzZUZpZWxkLmlkID09PSAnTGlua2VkQ2FzZXNDb21wb25lbnRMYXVuY2hlcic7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnRhaW5zTGlua2VkQ2FzZXNDYXNlRmllbGQoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2FzZUZpZWxkcz8uc29tZShjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNMaW5rZWRDYXNlc0Nhc2VGaWVsZChjYXNlRmllbGQpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNGbGFnc0ZpZWxkVHlwZShmaWVsZFR5cGU6IEZpZWxkVHlwZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGRUeXBlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gTm90ZTogVGhpcyBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyB0aGUgZHVtbXkgZmllbGQgdHlwZSBJRCBvZiBcIkNhc2VGbGFnXCIgZm9yIHRlc3RpbmcgYW5kIHRoZSByZWFsIGZpZWxkIHR5cGVcbiAgICAvLyBJRCBvZiBcIkZsYWdzXCJcbiAgICByZXR1cm4gKGZpZWxkVHlwZS50eXBlID09PSAnQ29tcGxleCcgJiYgKGZpZWxkVHlwZS5pZCA9PT0gJ0Nhc2VGbGFnJyB8fCBmaWVsZFR5cGUuaWQgPT09ICdGbGFncycpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IGZsYWdzIGRhdGEgZnJvbSBhIGBDYXNlRmllbGRgIGluc3RhbmNlLCByZWN1cnNpbmcgYW5kIGl0ZXJhdGluZyB0aHJvdWdoIHN1Yi1maWVsZHMgb2YgYSBDb21wbGV4IGZpZWxkIG9yXG4gICAqIGVhY2ggZmllbGQgaW4gYSBDb2xsZWN0aW9uIGZpZWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZmxhZ3MgQW4gYXJyYXkgZm9yIGFjY3VtdWxhdGluZyBleHRyYWN0ZWQgZmxhZ3MgZGF0YSBhbmQgZGVyaXZlZCBgRm9ybUdyb3VwYCBwYXRoc1xuICAgKiBAcGFyYW0gY2FzZUZpZWxkIEEgYENhc2VGaWVsZGAgaW5zdGFuY2UgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBmbGFncyBkYXRhXG4gICAqIEBwYXJhbSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBBIChkb3QtZGVsaW1pdGVkKSBzdHJpbmcgZm9yIGNvbmNhdGVuYXRpbmcgdGhlIG5hbWUgb2YgZWFjaCBjb250cm9sIHRoYXQgZm9ybXMgdGhlIHBhdGhcbiAgICogdG8gdGhlIGBGb3JtR3JvdXBgIGZvciB0aGUgYEZsYWdzYCBpbnN0YW5jZVxuICAgKiBAcGFyYW0gdG9wTGV2ZWxDYXNlRmllbGQgVGhlIHRvcC1sZXZlbCBgQ2FzZUZpZWxkYCB0aGF0IGNvbnRhaW5zIHRoZSB2YWx1ZSBwcm9wZXJ0eS4gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIF9vbmx5XG4gICAqIHRvcC1sZXZlbF8gYENhc2VGaWVsZGBzIGNvbnRhaW4gYWN0dWFsIHZhbHVlcyBhbmQgYSByZWZlcmVuY2UgbmVlZHMgdG8gYmUgbWFpbnRhaW5lZCB0byBzdWNoIGEgZmllbGRcbiAgICogQHBhcmFtIGN1cnJlbnRWYWx1ZSBUaGUgY3VycmVudCB2YWx1ZSBvYmplY3Qgb2YgYSBgQ2FzZUZpZWxkYCB0aGF0IGlzIGEgc3ViLWZpZWxkIG9mIGEgbm9uIHJvb3QtbGV2ZWwgQ29tcGxleCBmaWVsZC5cbiAgICogUmVxdWlyZWQgZm9yIG1hcHBpbmcgdGhlIGBDYXNlRmllbGRgIHZhbHVlIHRvIGEgYEZsYWdzYCBvYmplY3QgaWYgaXQgaXMgYSBcIkZsYWdzXCIgYENhc2VGaWVsZGAuIChGb3IgQ29tcGxleCB0eXBlcyxcbiAgICogb25seSB0aGUgX3Jvb3QtbGV2ZWxfIGBDYXNlRmllbGRgIGNvbnRhaW5zIGEgdmFsdWUgcHJvcGVydHkgLSBhbGwgc3ViLWZpZWxkcywgaW5jbHVkaW5nIGFueSBuZXN0ZWQgQ29tcGxleCBmaWVsZHMsXG4gICAqIGRvICpub3QqIGNvbnRhaW4gYW55IHZhbHVlcyB0aGVtc2VsdmVzLilcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgYEZsYWdzV2l0aEZvcm1Hcm91cFBhdGhgLCBlYWNoIGluc3RhbmNlIGNvbXByaXNpbmcgYSBgRmxhZ3NgIG9iamVjdCBkZXJpdmVkIGZyb20gYSBgQ2FzZUZpZWxkYFxuICAgKiBvZiB0eXBlIFwiRmxhZ3NcIiwgYW5kIHRoZSBkb3QtZGVsaW1pdGVkIHBhdGggc3RyaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIGBGb3JtR3JvdXBgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4dHJhY3RGbGFnc0RhdGFGcm9tQ2FzZUZpZWxkKGZsYWdzOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoW10sIGNhc2VGaWVsZDogQ2FzZUZpZWxkLFxuICAgIHBhdGhUb0ZsYWdzRm9ybUdyb3VwOiBzdHJpbmcsIHRvcExldmVsQ2FzZUZpZWxkOiBDYXNlRmllbGQsIGN1cnJlbnRWYWx1ZT86IG9iamVjdCk6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGhbXSB7XG4gICAgY29uc3QgZmllbGRUeXBlID0gY2FzZUZpZWxkLmZpZWxkX3R5cGU7XG4gICAgc3dpdGNoIChmaWVsZFR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnQ29tcGxleCc6XG4gICAgICAgIC8vIElmIHRoZSBmaWVsZCBpcyBhIEZsYWdzIENhc2VGaWVsZCAodGhlc2UgYXJlIGltcGxlbWVudGVkIGFzIENvbXBsZXggdHlwZXMpLCBpdCBjYW4gYmUgbWFwcGVkIHRvIGEgRmxhZ3NcbiAgICAgICAgLy8gb2JqZWN0IGltbWVkaWF0ZWx5XG4gICAgICAgIGlmIChGaWVsZHNVdGlscy5pc0ZsYWdzQ2FzZUZpZWxkKGNhc2VGaWVsZCkpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgRmxhZ3MgQ2FzZUZpZWxkIGhhcyBhIHZhbHVlLCBpdCBpcyBhIHJvb3QtbGV2ZWwgQ29tcGxleCBmaWVsZDsgaWYgaXQgZG9lcyBub3QsIGl0IGlzIGEgRmxhZ3NcbiAgICAgICAgICAvLyBDYXNlRmllbGQgdGhhdCBpcyBhIHN1Yi1maWVsZCB3aXRoaW4gYW5vdGhlciBDb21wbGV4IGZpZWxkLCBzbyB1c2UgdGhlIGN1cnJlbnRWYWx1ZSB2YWx1ZSAoaWYgYW55KVxuICAgICAgICAgIC8vIGluc3RlYWQuIFRoZSBleGNlcHRpb24gdG8gdGhpcyBpcyB0aGUgXCJjYXNlRmxhZ3NcIiBGbGFncyBDYXNlRmllbGQsIHdoaWNoIHdpbGwgaGF2ZSBhbiBlbXB0eSBvYmplY3QgdmFsdWVcbiAgICAgICAgICAvLyBpbml0aWFsbHksIGJlY2F1c2Ugbm8gcGFydHkgbmFtZSBpcyByZXF1aXJlZFxuICAgICAgICAgIGlmIChjYXNlRmllbGQudmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChjYXNlRmllbGQudmFsdWUpIHx8XG4gICAgICAgICAgICBjYXNlRmllbGQuaWQgPT09IHRoaXMuY2FzZUxldmVsQ2FzZUZsYWdzRmllbGRJZCkge1xuICAgICAgICAgICAgZmxhZ3MucHVzaCh0aGlzLm1hcENhc2VGaWVsZFRvRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aE9iamVjdChjYXNlRmllbGQsIHBhdGhUb0ZsYWdzRm9ybUdyb3VwKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50VmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChjdXJyZW50VmFsdWUpKSB7XG4gICAgICAgICAgICBwYXRoVG9GbGFnc0Zvcm1Hcm91cCArPSBgLiR7Y2FzZUZpZWxkLmlkfWA7XG4gICAgICAgICAgICBmbGFncy5wdXNoKHRoaXMubWFwVmFsdWVUb0ZsYWdzV2l0aEZvcm1Hcm91cFBhdGhPYmplY3QoXG4gICAgICAgICAgICAgIGNhc2VGaWVsZC5pZCwgY3VycmVudFZhbHVlLCBwYXRoVG9GbGFnc0Zvcm1Hcm91cCwgdG9wTGV2ZWxDYXNlRmllbGQpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGRUeXBlLmNvbXBsZXhfZmllbGRzKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBjYXNlRmllbGQudmFsdWUgPyBjYXNlRmllbGQudmFsdWUgOiBjdXJyZW50VmFsdWU7XG4gICAgICAgICAgaWYgKHZhbHVlICYmIEZpZWxkc1V0aWxzLmlzTm9uRW1wdHlPYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICBmbGFncyA9IGZpZWxkVHlwZS5jb21wbGV4X2ZpZWxkcy5yZWR1Y2UoKGZsYWdzT2ZDb21wbGV4RmllbGQsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dHJhY3RGbGFnc0RhdGFGcm9tQ2FzZUZpZWxkKFxuICAgICAgICAgICAgICAgIGZsYWdzT2ZDb21wbGV4RmllbGQsIHN1YkZpZWxkLCBwYXRoVG9GbGFnc0Zvcm1Hcm91cCwgdG9wTGV2ZWxDYXNlRmllbGQsIHZhbHVlW3N1YkZpZWxkLmlkXSk7XG4gICAgICAgICAgICB9LCBmbGFncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gRm9yIGEgQ29sbGVjdGlvbiBmaWVsZCwgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGRpcmVjdGx5IGFzIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgQ2FzZUZpZWxkJ3MgdmFsdWUgcHJvcGVydHlcbiAgICAgIC8vIGFzIGFuIGFycmF5LCB1bmxlc3MgdGhlIGNvbGxlY3Rpb24gaXMgYSBzdWItZmllbGQgb2YgYSBDb21wbGV4IHR5cGUgLSBzdWItZmllbGRzIG5ldmVyIGNvbnRhaW4gdmFsdWVzXG4gICAgICBjYXNlICdDb2xsZWN0aW9uJzpcbiAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbGxlY3Rpb24gb2YgRmxhZ3MgQ2FzZUZpZWxkcywgdGhlc2UgY2FuIGJlIG1hcHBlZCB0byBGbGFncyBvYmplY3RzIGltbWVkaWF0ZWx5XG4gICAgICAgIGlmIChGaWVsZHNVdGlscy5pc0ZsYWdzRmllbGRUeXBlKGZpZWxkVHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUpKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIENvbGxlY3Rpb24gQ2FzZUZpZWxkIGhhcyBhIHZhbHVlIChhbiBhcnJheSksIGl0IGlzIGEgcm9vdC1sZXZlbCBDb2xsZWN0aW9uIGZpZWxkOyBpZiBpdCBkb2VzIG5vdCxcbiAgICAgICAgICAvLyBpdCBpcyBhIENvbGxlY3Rpb24gQ2FzZUZpZWxkIHRoYXQgaXMgYSBzdWItZmllbGQgd2l0aGluIGEgQ29tcGxleCBmaWVsZCwgc28gdXNlIHRoZSBjdXJyZW50VmFsdWUgdmFsdWVcbiAgICAgICAgICAvLyAoaWYgYW55KSBpbnN0ZWFkXG4gICAgICAgICAgY29uc3QgcGF0aEZyYWdtZW50ID0gcGF0aFRvRmxhZ3NGb3JtR3JvdXAgKz0gJy5pbmRleC52YWx1ZSc7XG4gICAgICAgICAgaWYgKGNhc2VGaWVsZC52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZUZpZWxkLnZhbHVlLmZvckVhY2goKGl0ZW06IHsgaWQ6IHN0cmluZzsgdmFsdWU6IG9iamVjdDsgfSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAvLyBBdCBlYWNoIGl0ZXJhdGlvbiwgcmVwbGFjZSB0aGUgXCJpbmRleFwiIHBsYWNlaG9sZGVyIHdpdGggdGhlIGFjdHVhbCBpbmRleFxuICAgICAgICAgICAgICBwYXRoVG9GbGFnc0Zvcm1Hcm91cCA9IHBhdGhGcmFnbWVudC5yZXBsYWNlKCdpbmRleCcsIGluZGV4LnRvU3RyaW5nKDEwKSk7XG4gICAgICAgICAgICAgIGZsYWdzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5tYXBWYWx1ZVRvRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aE9iamVjdChpdGVtLmlkLCBpdGVtLnZhbHVlLCBwYXRoVG9GbGFnc0Zvcm1Hcm91cCwgY2FzZUZpZWxkKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgKGN1cnJlbnRWYWx1ZSBhcyBbXSkuZm9yRWFjaCgoaXRlbTogeyBpZDogc3RyaW5nOyB2YWx1ZTogb2JqZWN0OyB9LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIHBhdGhUb0ZsYWdzRm9ybUdyb3VwID0gcGF0aEZyYWdtZW50LnJlcGxhY2UoJ2luZGV4JywgaW5kZXgudG9TdHJpbmcoMTApKTtcbiAgICAgICAgICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLm1hcFZhbHVlVG9GbGFnc1dpdGhGb3JtR3JvdXBQYXRoT2JqZWN0KGl0ZW0uaWQsIGl0ZW0udmFsdWUsIHBhdGhUb0ZsYWdzRm9ybUdyb3VwLCB0b3BMZXZlbENhc2VGaWVsZCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkVHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnICYmIGZpZWxkVHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICBpZiAoY2FzZUZpZWxkLnZhbHVlKSB7XG4gICAgICAgICAgICAvLyBQZXJmb3JtIGEgcmVkdWN0aW9uIG92ZXIgZWFjaCBDb21wbGV4IGZpZWxkJ3Mgc3ViLWZpZWxkcyAoc2ltaWxhciB0byB3aGF0IGlzIGRvbmUgYWJvdmUgZm9yIG5vbi1GbGFnc1xuICAgICAgICAgICAgLy8gQ29tcGxleCBmaWVsZHMpXG4gICAgICAgICAgICAvLyAoQ2Fubm90IGp1c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5IGZvciBlYWNoIENvbXBsZXggZmllbGQgaW4gdGhlIGNvbGxlY3Rpb24gYmVjYXVzZSB0aGUgQ2FzZUZpZWxkXG4gICAgICAgICAgICAvLyBmb3IgZWFjaCBvbmUgaXMgbm90IHBhcnQgb2YgdGhlIGNvbGxlY3Rpb24pXG4gICAgICAgICAgICBjb25zdCBwYXRoRnJhZ21lbnQgPSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCArPSAnLmluZGV4LnZhbHVlJztcbiAgICAgICAgICAgIGNhc2VGaWVsZC52YWx1ZS5mb3JFYWNoKChpdGVtOiB7IGlkOiBzdHJpbmc7IHZhbHVlOiBvYmplY3Q7IH0sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgLy8gQXQgZWFjaCBpdGVyYXRpb24sIHJlcGxhY2UgdGhlIFwiaW5kZXhcIiBwbGFjZWhvbGRlciB3aXRoIHRoZSBhY3R1YWwgaW5kZXhcbiAgICAgICAgICAgICAgcGF0aFRvRmxhZ3NGb3JtR3JvdXAgPSBwYXRoRnJhZ21lbnQucmVwbGFjZSgnaW5kZXgnLCBpbmRleC50b1N0cmluZygxMCkpO1xuICAgICAgICAgICAgICBmbGFncyA9IGZpZWxkVHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMucmVkdWNlKChmbGFnc09mQ29tcGxleEZpZWxkLCBzdWJGaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dHJhY3RGbGFnc0RhdGFGcm9tQ2FzZUZpZWxkKFxuICAgICAgICAgICAgICAgICAgZmxhZ3NPZkNvbXBsZXhGaWVsZCwgc3ViRmllbGQsIHBhdGhUb0ZsYWdzRm9ybUdyb3VwLCB0b3BMZXZlbENhc2VGaWVsZCwgaXRlbS52YWx1ZVtzdWJGaWVsZC5pZF0pO1xuICAgICAgICAgICAgICB9LCBmbGFncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgLy8gSWdub3JlIGFsbCBvdGhlciBmaWVsZCB0eXBlc1xuICAgIH1cbiAgICByZXR1cm4gZmxhZ3M7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBtYXBDYXNlRmllbGRUb0ZsYWdzV2l0aEZvcm1Hcm91cFBhdGhPYmplY3QoY2FzZUZpZWxkOiBDYXNlRmllbGQsXG4gICAgcGF0aFRvRmxhZ3NGb3JtR3JvdXA6IHN0cmluZyk6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGgge1xuICAgIHJldHVybiB0aGlzLm1hcFZhbHVlVG9GbGFnc1dpdGhGb3JtR3JvdXBQYXRoT2JqZWN0KGNhc2VGaWVsZC5pZCwgY2FzZUZpZWxkLnZhbHVlLCBwYXRoVG9GbGFnc0Zvcm1Hcm91cCwgY2FzZUZpZWxkKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG1hcFZhbHVlVG9GbGFnc1dpdGhGb3JtR3JvdXBQYXRoT2JqZWN0KGlkOiBzdHJpbmcsIHZhbHVlOiBvYmplY3QsXG4gICAgcGF0aFRvRmxhZ3NGb3JtR3JvdXA6IHN0cmluZywgY2FzZUZpZWxkOiBDYXNlRmllbGQpOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmxhZ3M6IHtcbiAgICAgICAgZmxhZ3NDYXNlRmllbGRJZDogaWQsXG4gICAgICAgIHBhcnR5TmFtZTogdmFsdWUgPyB2YWx1ZVsncGFydHlOYW1lJ10gOiBudWxsLFxuICAgICAgICByb2xlT25DYXNlOiB2YWx1ZSA/IHZhbHVlWydyb2xlT25DYXNlJ10gOiBudWxsLFxuICAgICAgICBkZXRhaWxzOiB2YWx1ZSAmJiB2YWx1ZVsnZGV0YWlscyddICYmIHZhbHVlWydkZXRhaWxzJ10ubGVuZ3RoID4gMFxuICAgICAgICAgID8gKHZhbHVlWydkZXRhaWxzJ10gYXMgYW55W10pLm1hcChkZXRhaWwgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIC4uLk9iamVjdC5rZXlzKGRldGFpbC52YWx1ZSkubWFwKChrKSA9PiB7XG4gICAgICAgICAgICAgIC8vIFRoZSBpZCBwcm9wZXJ0eSBzZXQgYmVsb3cgd2lsbCBiZSBudWxsIGZvciBhIG5ldyBjYXNlIGZsYWcsIGFuZCBhIHVuaXF1ZSBpZCByZXR1cm5lZCBmcm9tIENDRCB3aGVuXG4gICAgICAgICAgICAgIC8vIHVwZGF0aW5nIGFuIGV4aXN0aW5nIGZsYWdcbiAgICAgICAgICAgICAgc3dpdGNoIChrKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlc2UgdHdvIGZpZWxkcyBhcmUgZGF0ZS10aW1lIGZpZWxkc1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGVUaW1lTW9kaWZpZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGVUaW1lQ3JlYXRlZCc6XG4gICAgICAgICAgICAgICAgICByZXR1cm4geyBba106IGRldGFpbC52YWx1ZVtrXSA/IG5ldyBEYXRlKGRldGFpbC52YWx1ZVtrXSkgOiBudWxsLCBpZDogZGV0YWlsLmlkIH07XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBmaWVsZCBpcyBhIFwieWVzL25vXCIgZmllbGRcbiAgICAgICAgICAgICAgICBjYXNlICdoZWFyaW5nUmVsZXZhbnQnOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGRldGFpbC52YWx1ZVtrXS50b1VwcGVyQ2FzZSgpID09PSAnWUVTJyA/IHsgW2tdOiB0cnVlLCBpZDogZGV0YWlsLmlkIH0gOiB7IFtrXTogZmFsc2UsIGlkOiBkZXRhaWwuaWQgfTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgW2tdOiBkZXRhaWwudmFsdWVba10sIGlkOiBkZXRhaWwuaWQgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0pIGFzIEZsYWdEZXRhaWxbXVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgdmlzaWJpbGl0eTogdmFsdWUgPyB2YWx1ZVsndmlzaWJpbGl0eSddIDogbnVsbCxcbiAgICAgICAgZ3JvdXBJZDogdmFsdWUgPyB2YWx1ZVsnZ3JvdXBJZCddIDogbnVsbFxuICAgICAgfSxcbiAgICAgIHBhdGhUb0ZsYWdzRm9ybUdyb3VwLFxuICAgICAgY2FzZUZpZWxkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudCBhY3RpdmUgZmxhZ3MgaW4gYSBgQ2FzZUZpZWxkYCBpbnN0YW5jZSwgcmVjdXJzaW5nIGFuZCBpdGVyYXRpbmcgdGhyb3VnaCBzdWItZmllbGRzIG9mIGEgQ29tcGxleCBmaWVsZCBvciBlYWNoXG4gICAqIGZpZWxkIGluIGEgQ29sbGVjdGlvbiBmaWVsZC5cbiAgICpcbiAgICogQHBhcmFtIGFjdGl2ZUNvdW50IEFuIGFjY3VtdWxhdGlvbiBvZiB0aGUgdG90YWwgbnVtYmVyIG9mIGFjdGl2ZSBmbGFnc1xuICAgKiBAcGFyYW0gY2FzZUZpZWxkIEEgYENhc2VGaWVsZGAgaW5zdGFuY2UgZm9yIHdoaWNoIHRvIGNvdW50IHRoZSBhY3RpdmUgZmxhZ3NcbiAgICogQHBhcmFtIGN1cnJlbnRWYWx1ZSBUaGUgY3VycmVudCB2YWx1ZSBvYmplY3Qgb2YgYSBgQ2FzZUZpZWxkYCB0aGF0IGlzIGEgc3ViLWZpZWxkIG9mIGEgbm9uIHJvb3QtbGV2ZWwgQ29tcGxleCBmaWVsZC5cbiAgICogKEZvciBDb21wbGV4IHR5cGVzLCBvbmx5IHRoZSBfcm9vdC1sZXZlbF8gYENhc2VGaWVsZGAgY29udGFpbnMgYSB2YWx1ZSBwcm9wZXJ0eSAtIGFsbCBzdWItZmllbGRzLCBpbmNsdWRpbmcgYW55XG4gICAqIG5lc3RlZCBDb21wbGV4IGZpZWxkcywgZG8gKm5vdCogY29udGFpbiBhbnkgdmFsdWVzIHRoZW1zZWx2ZXMuKVxuICAgKiBAcmV0dXJucyBUaGUgY291bnQgb2YgYWN0aXZlIGZsYWdzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvdW50QWN0aXZlRmxhZ3NJbkNhc2VGaWVsZChhY3RpdmVDb3VudDogbnVtYmVyLCBjYXNlRmllbGQ6IENhc2VGaWVsZCwgY3VycmVudFZhbHVlPzogb2JqZWN0KTogbnVtYmVyIHtcbiAgICBjb25zdCBmaWVsZFR5cGUgPSBjYXNlRmllbGQuZmllbGRfdHlwZTtcbiAgICBzd2l0Y2ggKGZpZWxkVHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdDb21wbGV4JzpcbiAgICAgICAgaWYgKEZpZWxkc1V0aWxzLmlzRmxhZ3NDYXNlRmllbGQoY2FzZUZpZWxkKSkge1xuICAgICAgICAgIC8vIElmIHRoZSBGbGFncyBDYXNlRmllbGQgaGFzIGEgdmFsdWUsIGl0IGlzIGEgcm9vdC1sZXZlbCBDb21wbGV4IGZpZWxkOyBpZiBpdCBkb2VzIG5vdCwgaXQgaXMgYSBGbGFnc1xuICAgICAgICAgIC8vIENhc2VGaWVsZCB0aGF0IGlzIGEgc3ViLWZpZWxkIHdpdGhpbiBhbm90aGVyIENvbXBsZXggZmllbGQsIHNvIHVzZSB0aGUgY3VycmVudFZhbHVlIHZhbHVlIChpZiBhbnkpIGluc3RlYWRcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNhc2VGaWVsZC52YWx1ZSA/IGNhc2VGaWVsZC52YWx1ZSA6IGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdCh2YWx1ZSkgJiYgdmFsdWUuZGV0YWlscykge1xuICAgICAgICAgICAgYWN0aXZlQ291bnQgPSB2YWx1ZS5kZXRhaWxzLnJlZHVjZShcbiAgICAgICAgICAgICAgKGNvdW50LCBkZXRhaWwpID0+IGRldGFpbC52YWx1ZS5zdGF0dXMgPT09IENhc2VGbGFnU3RhdHVzLkFDVElWRSA/IGNvdW50ICsgMSA6IGNvdW50LFxuICAgICAgICAgICAgICBhY3RpdmVDb3VudFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGRUeXBlLmNvbXBsZXhfZmllbGRzKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBjYXNlRmllbGQudmFsdWUgPyBjYXNlRmllbGQudmFsdWUgOiBjdXJyZW50VmFsdWU7XG4gICAgICAgICAgaWYgKHZhbHVlICYmIEZpZWxkc1V0aWxzLmlzTm9uRW1wdHlPYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICBhY3RpdmVDb3VudCA9IGZpZWxkVHlwZS5jb21wbGV4X2ZpZWxkcy5yZWR1Y2UoKGFjdGl2ZUZsYWdzQ291bnRPZkNvbXBsZXhGaWVsZCwgc3ViRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY291bnRBY3RpdmVGbGFnc0luQ2FzZUZpZWxkKFxuICAgICAgICAgICAgICAgIGFjdGl2ZUZsYWdzQ291bnRPZkNvbXBsZXhGaWVsZCxcbiAgICAgICAgICAgICAgICBzdWJGaWVsZCxcbiAgICAgICAgICAgICAgICB2YWx1ZVtzdWJGaWVsZC5pZF1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sIGFjdGl2ZUNvdW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBGb3IgYSBDb2xsZWN0aW9uIGZpZWxkLCB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgZGlyZWN0bHkgYXMga2V5LXZhbHVlIHBhaXJzIGluIHRoZSBDYXNlRmllbGQncyB2YWx1ZSBwcm9wZXJ0eVxuICAgICAgLy8gYXMgYW4gYXJyYXksIHVubGVzcyB0aGUgY29sbGVjdGlvbiBpcyBhIHN1Yi1maWVsZCBvZiBhIENvbXBsZXggdHlwZSAtIHN1Yi1maWVsZHMgbmV2ZXIgY29udGFpbiB2YWx1ZXNcbiAgICAgIGNhc2UgJ0NvbGxlY3Rpb24nOlxuICAgICAgICBpZiAoRmllbGRzVXRpbHMuaXNGbGFnc0ZpZWxkVHlwZShmaWVsZFR5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlKSkge1xuICAgICAgICAgIC8vIElmIHRoZSBDb2xsZWN0aW9uIENhc2VGaWVsZCBoYXMgYSB2YWx1ZSAoYW4gYXJyYXkpLCBpdCBpcyBhIHJvb3QtbGV2ZWwgQ29sbGVjdGlvbiBmaWVsZDsgaWYgaXQgZG9lcyBub3QsXG4gICAgICAgICAgLy8gaXQgaXMgYSBDb2xsZWN0aW9uIENhc2VGaWVsZCB0aGF0IGlzIGEgc3ViLWZpZWxkIHdpdGhpbiBhIENvbXBsZXggZmllbGQsIHNvIHVzZSB0aGUgY3VycmVudFZhbHVlIHZhbHVlXG4gICAgICAgICAgLy8gKGlmIGFueSkgaW5zdGVhZFxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2FzZUZpZWxkLnZhbHVlID8gY2FzZUZpZWxkLnZhbHVlIDogY3VycmVudFZhbHVlO1xuICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgoaXRlbTogeyBpZDogc3RyaW5nOyB2YWx1ZTogb2JqZWN0OyB9KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpdGVtLnZhbHVlWydkZXRhaWxzJ10pIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVDb3VudCA9IGl0ZW0udmFsdWVbJ2RldGFpbHMnXS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAoY291bnQsIGRldGFpbCkgPT4gZGV0YWlsLnZhbHVlLnN0YXR1cyA9PT0gQ2FzZUZsYWdTdGF0dXMuQUNUSVZFID8gY291bnQgKyAxIDogY291bnQsXG4gICAgICAgICAgICAgICAgICBhY3RpdmVDb3VudFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZFR5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4JyAmJiBmaWVsZFR5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKSB7XG4gICAgICAgICAgaWYgKGNhc2VGaWVsZC52YWx1ZSkge1xuICAgICAgICAgICAgLy8gUGVyZm9ybSBhIHJlZHVjdGlvbiBvdmVyIGVhY2ggQ29tcGxleCBmaWVsZCdzIHN1Yi1maWVsZHMgKHNpbWlsYXIgdG8gd2hhdCBpcyBkb25lIGFib3ZlIGZvciBub24tRmxhZ3NcbiAgICAgICAgICAgIC8vIENvbXBsZXggZmllbGRzKVxuICAgICAgICAgICAgLy8gKENhbm5vdCBqdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiByZWN1cnNpdmVseSBmb3IgZWFjaCBDb21wbGV4IGZpZWxkIGluIHRoZSBjb2xsZWN0aW9uIGJlY2F1c2UgdGhlIENhc2VGaWVsZFxuICAgICAgICAgICAgLy8gZm9yIGVhY2ggb25lIGlzIG5vdCBwYXJ0IG9mIHRoZSBjb2xsZWN0aW9uKVxuICAgICAgICAgICAgY2FzZUZpZWxkLnZhbHVlLmZvckVhY2goKGl0ZW06IHsgaWQ6IHN0cmluZzsgdmFsdWU6IG9iamVjdDsgfSkgPT4ge1xuICAgICAgICAgICAgICBhY3RpdmVDb3VudCA9IGZpZWxkVHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMucmVkdWNlKFxuICAgICAgICAgICAgICAgIChhY3RpdmVGbGFnc0NvdW50T2ZDb21wbGV4RmllbGQsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb3VudEFjdGl2ZUZsYWdzSW5DYXNlRmllbGQoYWN0aXZlRmxhZ3NDb3VudE9mQ29tcGxleEZpZWxkLCBzdWJGaWVsZCwgaXRlbS52YWx1ZVtzdWJGaWVsZC5pZF0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWN0aXZlQ291bnRcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAvLyBJZ25vcmUgYWxsIG90aGVyIGZpZWxkIHR5cGVzXG4gICAgfVxuICAgIHJldHVybiBhY3RpdmVDb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZUZvckZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQ6IENhc2VGaWVsZCk6IHN0cmluZyB7XG4gICAgc3dpdGNoKGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyKSB7XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuQ1JFQVRFOlxuICAgICAgY2FzZSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLkNSRUFURV8yX1BPSU5UXzE6XG4gICAgICAgIHJldHVybiAnUGxlYXNlIHNlbGVjdCBOZXh0IHRvIGNvbXBsZXRlIHRoZSBjcmVhdGlvbiBvZiB0aGUgY2FzZSBmbGFnJztcbiAgICAgIGNhc2UgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5DUkVBVEVfRVhURVJOQUw6XG4gICAgICAgIHJldHVybiAnUGxlYXNlIHNlbGVjdCBOZXh0IHRvIGNvbXBsZXRlIHRoZSBjcmVhdGlvbiBvZiB0aGUgc3VwcG9ydCByZXF1ZXN0JztcbiAgICAgIGNhc2UgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEU6XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFXzJfUE9JTlRfMTpcbiAgICAgICAgcmV0dXJuICdQbGVhc2Ugc2VsZWN0IE5leHQgdG8gY29tcGxldGUgdGhlIHVwZGF0ZSBvZiB0aGUgc2VsZWN0ZWQgY2FzZSBmbGFnJztcbiAgICAgIGNhc2UgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEVfRVhURVJOQUw6XG4gICAgICAgIHJldHVybiAnUGxlYXNlIHNlbGVjdCBOZXh0IHRvIGNvbXBsZXRlIHRoZSB1cGRhdGUgb2YgdGhlIHNlbGVjdGVkIHN1cHBvcnQgcmVxdWVzdCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJ1aWxkQ2FuU2hvd1ByZWRpY2F0ZShldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXIsIGZvcm06IGFueSk6IFByZWRpY2F0ZTxXaXphcmRQYWdlPiB7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5nZXRDdXJyZW50RXZlbnRTdGF0ZShldmVudFRyaWdnZXIsIGZvcm0pO1xuICAgIHJldHVybiAocGFnZTogV2l6YXJkUGFnZSk6IGJvb2xlYW4gPT4ge1xuICAgICAgcmV0dXJuIHBhZ2UucGFyc2VkU2hvd0NvbmRpdGlvbi5tYXRjaChjdXJyZW50U3RhdGUpO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudEV2ZW50U3RhdGUoZXZlbnRUcmlnZ2VyOiB7IGNhc2VfZmllbGRzOiBDYXNlRmllbGRbXSB9LCBmb3JtOiBGb3JtR3JvdXApOiBvYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlQ2FzZUZpZWxkc0FuZEZvcm1GaWVsZHMoZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLCBmb3JtLmNvbnRyb2xzWydkYXRhJ10udmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGNsb25lQ2FzZUZpZWxkKG9iajogYW55KTogQ2FzZUZpZWxkIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgQ2FzZUZpZWxkKCksIG9iaik7XG4gIH1cblxuICBwdWJsaWMgbWVyZ2VDYXNlRmllbGRzQW5kRm9ybUZpZWxkcyhjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgZm9ybUZpZWxkczogb2JqZWN0KTogb2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZUZpZWxkcyhjYXNlRmllbGRzLCBmb3JtRmllbGRzLCBGaWVsZHNVdGlscy5ERUZBVUxUX01FUkdFX0ZVTkNUSU9OKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXJnZUxhYmVsQ2FzZUZpZWxkc0FuZEZvcm1GaWVsZHMoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIGZvcm1GaWVsZHM6IG9iamVjdCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMubWVyZ2VGaWVsZHMoY2FzZUZpZWxkcywgZm9ybUZpZWxkcywgRmllbGRzVXRpbHMuTEFCRUxfTUVSR0VfRlVOQ1RJT04pO1xuICB9XG5cbiAgcHVibGljIGNvbnRyb2xJdGVyYXRvcihcbiAgICBhQ29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICAgIGZvcm1BcnJheUZuOiAoYXJyYXk6IEZvcm1BcnJheSkgPT4gdm9pZCxcbiAgICBmb3JtR3JvdXBGbjogKGdyb3VwOiBGb3JtR3JvdXApID0+IHZvaWQsXG4gICAgY29udHJvbEZuOiAoY29udHJvbDogRm9ybUNvbnRyb2wpID0+IHZvaWRcbiAgKTogdm9pZCB7XG4gICAgaWYgKGFDb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7IC8vIFdlJ3JlIGluIGEgY29sbGVjdGlvblxuICAgICAgZm9ybUFycmF5Rm4oYUNvbnRyb2wpO1xuICAgIH0gZWxzZSBpZiAoYUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHsgLy8gV2UncmUgaW4gYSBjb21wbGV4IHR5cGUuXG4gICAgICBmb3JtR3JvdXBGbihhQ29udHJvbCk7XG4gICAgfSBlbHNlIGlmIChhQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7IC8vIEZvcm1Db250cm9sXG4gICAgICBjb250cm9sRm4oYUNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VGaWVsZHMoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIGZvcm1GaWVsZHM6IG9iamVjdCwgbWVyZ2VGdW5jdGlvbjogKGZpZWxkOiBDYXNlRmllbGQsIHJlc3VsdDogb2JqZWN0KSA9PiB2b2lkKTogb2JqZWN0IHtcbiAgICBjb25zdCByZXN1bHQ6IG9iamVjdCA9IEZpZWxkc1V0aWxzLmNsb25lT2JqZWN0KGZvcm1GaWVsZHMpO1xuICAgIGNhc2VGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBtZXJnZUZ1bmN0aW9uKGZpZWxkLCByZXN1bHQpO1xuICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUgJiYgZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyAmJiBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLmlkXSA9IHRoaXMubWVyZ2VGaWVsZHMoZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgcmVzdWx0W2ZpZWxkLmlkXSwgbWVyZ2VGdW5jdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
|