@hmcts/ccd-case-ui-toolkit 7.0.20 → 7.0.21-CVE-fix

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.
Files changed (1081) hide show
  1. package/esm2022/lib/app.config.mjs +93 -0
  2. package/esm2022/lib/components/banners/alert/alert-icon-class.pipe.mjs +25 -0
  3. package/esm2022/lib/components/banners/alert/alert.component.mjs +94 -0
  4. package/esm2022/lib/components/banners/alert/alert.module.mjs +32 -0
  5. package/esm2022/lib/components/banners/banners.module.mjs +32 -0
  6. package/esm2022/lib/components/banners/notification-banner/notification-banner.component.mjs +119 -0
  7. package/esm2022/lib/components/banners/notification-banner/notification-banner.module.mjs +19 -0
  8. package/esm2022/lib/components/body/body.component.mjs +20 -0
  9. package/esm2022/lib/components/body/body.module.mjs +20 -0
  10. package/esm2022/lib/components/footer/footer.component.mjs +109 -0
  11. package/esm2022/lib/components/footer/footers.module.mjs +25 -0
  12. package/esm2022/lib/components/form/date-input/date-input.component.mjs +342 -0
  13. package/esm2022/lib/components/form/form.module.mjs +29 -0
  14. package/esm2022/lib/components/header/header-bar/header-bar.component.mjs +98 -0
  15. package/esm2022/lib/components/header/headers.module.mjs +25 -0
  16. package/esm2022/lib/components/header/navigation/navigation-item.component.mjs +44 -0
  17. package/esm2022/lib/components/header/navigation/navigation.component.mjs +25 -0
  18. package/esm2022/lib/components/header/phase/phase.component.mjs +48 -0
  19. package/esm2022/lib/components/tabs/tab.component.mjs +31 -0
  20. package/esm2022/lib/components/tabs/tabs.component.mjs +82 -0
  21. package/esm2022/lib/components/tabs/tabs.module.mjs +38 -0
  22. package/esm2022/lib/shared/commons/address-validation-constants.mjs +13 -0
  23. package/esm2022/lib/shared/commons/case-edit-data/case-edit-data.module.mjs +19 -0
  24. package/esm2022/lib/shared/commons/case-edit-data/case-edit-data.service.mjs +46 -0
  25. package/esm2022/lib/shared/commons/constants.mjs +13 -0
  26. package/esm2022/lib/shared/components/activity/activity-banner/activity-banner.component.mjs +42 -0
  27. package/esm2022/lib/shared/components/activity/activity-icon/activity-icon.component.mjs +35 -0
  28. package/esm2022/lib/shared/components/activity/activity.component.mjs +158 -0
  29. package/esm2022/lib/shared/components/activity/activity.module.mjs +55 -0
  30. package/esm2022/lib/shared/components/case-editor/case-access-utils/index.mjs +105 -0
  31. package/esm2022/lib/shared/components/case-editor/case-create/case-create.component.mjs +95 -0
  32. package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +463 -0
  33. package/esm2022/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +131 -0
  34. package/esm2022/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +140 -0
  35. package/esm2022/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.mjs +70 -0
  36. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +779 -0
  37. package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +560 -0
  38. package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +118 -0
  39. package/esm2022/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +96 -0
  40. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +82 -0
  41. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +166 -0
  42. package/esm2022/lib/shared/components/case-editor/case-progress/case-progress.component.mjs +84 -0
  43. package/esm2022/lib/shared/components/case-editor/domain/confirmation.model.mjs +25 -0
  44. package/esm2022/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.mjs +9 -0
  45. package/esm2022/lib/shared/components/case-editor/domain/wizard-page-field.model.mjs +7 -0
  46. package/esm2022/lib/shared/components/case-editor/domain/wizard-page.model.mjs +33 -0
  47. package/esm2022/lib/shared/components/case-editor/domain/wizard.model.mjs +55 -0
  48. package/esm2022/lib/shared/components/case-editor/services/case-edit-wizard.guard.mjs +98 -0
  49. package/esm2022/lib/shared/components/case-editor/services/case-flag-state.service.mjs +19 -0
  50. package/esm2022/lib/shared/components/case-editor/services/case-worker.service.mjs +35 -0
  51. package/esm2022/lib/shared/components/case-editor/services/case.notifier.mjs +53 -0
  52. package/esm2022/lib/shared/components/case-editor/services/cases.service.mjs +302 -0
  53. package/esm2022/lib/shared/components/case-editor/services/convert-href-to-router.service.mjs +42 -0
  54. package/esm2022/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +153 -0
  55. package/esm2022/lib/shared/components/case-editor/services/event-trigger.service.mjs +18 -0
  56. package/esm2022/lib/shared/components/case-editor/services/judicial-worker.service.mjs +35 -0
  57. package/esm2022/lib/shared/components/case-editor/services/page-validation.service.mjs +54 -0
  58. package/esm2022/lib/shared/components/case-editor/services/valid-page-list-caseFields.service.mjs +40 -0
  59. package/esm2022/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.mjs +117 -0
  60. package/esm2022/lib/shared/components/case-editor/services/work-allocation.service.mjs +215 -0
  61. package/esm2022/lib/shared/components/case-header/case-header.component.mjs +64 -0
  62. package/esm2022/lib/shared/components/case-header/case-header.module.mjs +25 -0
  63. package/esm2022/lib/shared/components/case-history/case-history.component.mjs +252 -0
  64. package/esm2022/lib/shared/components/case-history/case-history.module.mjs +36 -0
  65. package/esm2022/lib/shared/components/case-history/domain/case-history.model.mjs +37 -0
  66. package/esm2022/lib/shared/components/case-history/services/case-history.service.mjs +43 -0
  67. package/esm2022/lib/shared/components/case-list/case-list.component.mjs +373 -0
  68. package/esm2022/lib/shared/components/case-list/case-list.module.mjs +31 -0
  69. package/esm2022/lib/shared/components/case-list-filters/case-list-filters.component.mjs +56 -0
  70. package/esm2022/lib/shared/components/case-list-filters/case-list-filters.module.mjs +39 -0
  71. package/esm2022/lib/shared/components/case-timeline/case-timeline.component.mjs +115 -0
  72. package/esm2022/lib/shared/components/case-timeline/case-timeline.module.mjs +32 -0
  73. package/esm2022/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.mjs +251 -0
  74. package/esm2022/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +310 -0
  75. package/esm2022/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +74 -0
  76. package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +155 -0
  77. package/esm2022/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +710 -0
  78. package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +60 -0
  79. package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +255 -0
  80. package/esm2022/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +210 -0
  81. package/esm2022/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.mjs +49 -0
  82. package/esm2022/lib/shared/components/case-viewer/case-view/case-view.component.mjs +106 -0
  83. package/esm2022/lib/shared/components/case-viewer/case-viewer.component.mjs +136 -0
  84. package/esm2022/lib/shared/components/case-viewer/case-viewer.module.mjs +98 -0
  85. package/esm2022/lib/shared/components/case-viewer/printer/case-printer.component.mjs +116 -0
  86. package/esm2022/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.mjs +61 -0
  87. package/esm2022/lib/shared/components/case-viewer/services/case.resolver.mjs +141 -0
  88. package/esm2022/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +70 -0
  89. package/esm2022/lib/shared/components/create-case-filters/create-case-filters-selection.model.mjs +11 -0
  90. package/esm2022/lib/shared/components/create-case-filters/create-case-filters.component.mjs +288 -0
  91. package/esm2022/lib/shared/components/create-case-filters/create-case-filters.module.mjs +44 -0
  92. package/esm2022/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.mjs +59 -0
  93. package/esm2022/lib/shared/components/dialogs/dialogs.module.mjs +51 -0
  94. package/esm2022/lib/shared/components/dialogs/document-dialog/document-dialog.component.mjs +61 -0
  95. package/esm2022/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.mjs +59 -0
  96. package/esm2022/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.mjs +63 -0
  97. package/esm2022/lib/shared/components/error/callback-errors.component.mjs +147 -0
  98. package/esm2022/lib/shared/components/error/domain/error-context.mjs +5 -0
  99. package/esm2022/lib/shared/components/error/errors.module.mjs +33 -0
  100. package/esm2022/lib/shared/components/error-message/error-message.component.mjs +44 -0
  101. package/esm2022/lib/shared/components/error-message/error-message.module.mjs +41 -0
  102. package/esm2022/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +61 -0
  103. package/esm2022/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +55 -0
  104. package/esm2022/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +111 -0
  105. package/esm2022/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.mjs +69 -0
  106. package/esm2022/lib/shared/components/event-start/components/task-conflict/task-conflict.component.mjs +60 -0
  107. package/esm2022/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +55 -0
  108. package/esm2022/lib/shared/components/event-start/event-guard/event-start.guard.mjs +97 -0
  109. package/esm2022/lib/shared/components/event-start/event-start.component.mjs +55 -0
  110. package/esm2022/lib/shared/components/event-start/event-start.module.mjs +71 -0
  111. package/esm2022/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.mjs +31 -0
  112. package/esm2022/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +177 -0
  113. package/esm2022/lib/shared/components/event-trigger/event-trigger.component.mjs +117 -0
  114. package/esm2022/lib/shared/components/event-trigger/event-trigger.module.mjs +37 -0
  115. package/esm2022/lib/shared/components/loading-spinner/loading-spinner.component.mjs +25 -0
  116. package/esm2022/lib/shared/components/loading-spinner/loading-spinner.module.mjs +29 -0
  117. package/esm2022/lib/shared/components/pagination/pagination.component.mjs +261 -0
  118. package/esm2022/lib/shared/components/pagination/pagination.module.mjs +26 -0
  119. package/esm2022/lib/shared/components/palette/address/address-option.model.mjs +23 -0
  120. package/esm2022/lib/shared/components/palette/address/write-address-field.component.mjs +287 -0
  121. package/esm2022/lib/shared/components/palette/base-field/abstract-field-read.component.mjs +30 -0
  122. package/esm2022/lib/shared/components/palette/base-field/abstract-field-write.component.mjs +44 -0
  123. package/esm2022/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +84 -0
  124. package/esm2022/lib/shared/components/palette/base-field/field-read-label.component.mjs +85 -0
  125. package/esm2022/lib/shared/components/palette/base-field/field-read.component.mjs +89 -0
  126. package/esm2022/lib/shared/components/palette/base-field/field-write.component.mjs +77 -0
  127. package/esm2022/lib/shared/components/palette/base-field/payment-field.component.mjs +37 -0
  128. package/esm2022/lib/shared/components/palette/case-file-view/case-file-view-field.component.mjs +182 -0
  129. 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 +48 -0
  130. 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 +49 -0
  131. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +356 -0
  132. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.mjs +155 -0
  133. package/esm2022/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.mjs +93 -0
  134. package/esm2022/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +191 -0
  135. package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +302 -0
  136. package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.mjs +208 -0
  137. package/esm2022/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +169 -0
  138. package/esm2022/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +224 -0
  139. package/esm2022/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +311 -0
  140. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +202 -0
  141. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +355 -0
  142. package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +268 -0
  143. package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +516 -0
  144. package/esm2022/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.mjs +43 -0
  145. package/esm2022/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.mjs +43 -0
  146. package/esm2022/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.mjs +111 -0
  147. package/esm2022/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.mjs +79 -0
  148. package/esm2022/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +255 -0
  149. package/esm2022/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +704 -0
  150. package/esm2022/lib/shared/components/palette/case-link/read-case-link-field.component.mjs +32 -0
  151. package/esm2022/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +125 -0
  152. package/esm2022/lib/shared/components/palette/collection/collection-create-checker.service.mjs +42 -0
  153. package/esm2022/lib/shared/components/palette/collection/read-collection-field.component.mjs +78 -0
  154. package/esm2022/lib/shared/components/palette/collection/write-collection-field.component.mjs +449 -0
  155. package/esm2022/lib/shared/components/palette/complex/read-complex-field-collection-table.component.mjs +380 -0
  156. package/esm2022/lib/shared/components/palette/complex/read-complex-field-raw.component.mjs +50 -0
  157. package/esm2022/lib/shared/components/palette/complex/read-complex-field-table.component.mjs +75 -0
  158. package/esm2022/lib/shared/components/palette/complex/read-complex-field.component.mjs +70 -0
  159. package/esm2022/lib/shared/components/palette/complex/write-complex-field.component.mjs +173 -0
  160. package/esm2022/lib/shared/components/palette/date/read-date-field.component.mjs +25 -0
  161. package/esm2022/lib/shared/components/palette/date/write-date-container-field.component.mjs +33 -0
  162. package/esm2022/lib/shared/components/palette/date/write-date-field.component.mjs +77 -0
  163. package/esm2022/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +314 -0
  164. package/esm2022/lib/shared/components/palette/document/document-url.pipe.mjs +25 -0
  165. package/esm2022/lib/shared/components/palette/document/file-upload-progress.guard.mjs +31 -0
  166. package/esm2022/lib/shared/components/palette/document/file-upload-state.service.mjs +17 -0
  167. package/esm2022/lib/shared/components/palette/document/read-document-field.component.mjs +87 -0
  168. package/esm2022/lib/shared/components/palette/document/write-document-field.component.mjs +404 -0
  169. package/esm2022/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.mjs +18 -0
  170. package/esm2022/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.mjs +36 -0
  171. package/esm2022/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.mjs +125 -0
  172. package/esm2022/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.mjs +43 -0
  173. package/esm2022/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.mjs +147 -0
  174. package/esm2022/lib/shared/components/palette/dynamic-radio-list/dynamic-radio-list.pipe.mjs +25 -0
  175. package/esm2022/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.mjs +42 -0
  176. package/esm2022/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.mjs +125 -0
  177. package/esm2022/lib/shared/components/palette/email/read-email-field.component.mjs +35 -0
  178. package/esm2022/lib/shared/components/palette/email/write-email-field.component.mjs +74 -0
  179. package/esm2022/lib/shared/components/palette/fixed-list/fixed-list.pipe.mjs +23 -0
  180. package/esm2022/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.mjs +26 -0
  181. package/esm2022/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.mjs +107 -0
  182. package/esm2022/lib/shared/components/palette/fixed-radio-list/fixed-radio-list.pipe.mjs +18 -0
  183. package/esm2022/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.mjs +26 -0
  184. package/esm2022/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.mjs +96 -0
  185. package/esm2022/lib/shared/components/palette/history/case-history-viewer-field.component.mjs +16 -0
  186. package/esm2022/lib/shared/components/palette/history/event-log/event-log-details.component.mjs +98 -0
  187. package/esm2022/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +225 -0
  188. package/esm2022/lib/shared/components/palette/history/event-log/event-log.component.mjs +72 -0
  189. package/esm2022/lib/shared/components/palette/judicial-user/read-judicial-user-field.component.mjs +48 -0
  190. package/esm2022/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.mjs +253 -0
  191. package/esm2022/lib/shared/components/palette/label/label-field.component.mjs +50 -0
  192. package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +112 -0
  193. package/esm2022/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +194 -0
  194. package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +543 -0
  195. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +214 -0
  196. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +287 -0
  197. package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +69 -0
  198. package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +208 -0
  199. package/esm2022/lib/shared/components/palette/linked-cases/domain/linked-cases.model.mjs +67 -0
  200. package/esm2022/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +169 -0
  201. package/esm2022/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +138 -0
  202. package/esm2022/lib/shared/components/palette/linked-cases/utils/validators.utils.mjs +27 -0
  203. package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +237 -0
  204. package/esm2022/lib/shared/components/palette/markdown/markdown-component.module.mjs +29 -0
  205. package/esm2022/lib/shared/components/palette/markdown/markdown.component.mjs +44 -0
  206. package/esm2022/lib/shared/components/palette/money-gbp/money-gbp-input.component.mjs +127 -0
  207. package/esm2022/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.mjs +49 -0
  208. package/esm2022/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.mjs +79 -0
  209. package/esm2022/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.mjs +45 -0
  210. package/esm2022/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.mjs +127 -0
  211. package/esm2022/lib/shared/components/palette/number/read-number-field.component.mjs +24 -0
  212. package/esm2022/lib/shared/components/palette/number/write-number-field.component.mjs +74 -0
  213. package/esm2022/lib/shared/components/palette/order-summary/fee-value.model.mjs +4 -0
  214. package/esm2022/lib/shared/components/palette/order-summary/fee.model.mjs +8 -0
  215. package/esm2022/lib/shared/components/palette/order-summary/order-summary.model.mjs +6 -0
  216. package/esm2022/lib/shared/components/palette/order-summary/read-order-summary-field.component.mjs +73 -0
  217. package/esm2022/lib/shared/components/palette/order-summary/read-order-summary-row.component.mjs +44 -0
  218. package/esm2022/lib/shared/components/palette/order-summary/write-order-summary-field.component.mjs +44 -0
  219. package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-raw.component.mjs +87 -0
  220. package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-table.component.mjs +91 -0
  221. package/esm2022/lib/shared/components/palette/organisation/read-organisation-field.component.mjs +53 -0
  222. package/esm2022/lib/shared/components/palette/organisation/write-organisation-complex-field.component.mjs +34 -0
  223. package/esm2022/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +396 -0
  224. package/esm2022/lib/shared/components/palette/palette.module.mjs +291 -0
  225. package/esm2022/lib/shared/components/palette/palette.service.mjs +153 -0
  226. package/esm2022/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.mjs +24 -0
  227. package/esm2022/lib/shared/components/palette/phone-uk/read-phone-uk-field.component.mjs +22 -0
  228. package/esm2022/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.mjs +74 -0
  229. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +43 -0
  230. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +149 -0
  231. package/esm2022/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.mjs +66 -0
  232. package/esm2022/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.mjs +61 -0
  233. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +292 -0
  234. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +330 -0
  235. package/esm2022/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.mjs +23 -0
  236. package/esm2022/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +164 -0
  237. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.mjs +77 -0
  238. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.mjs +111 -0
  239. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +201 -0
  240. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +106 -0
  241. package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.mjs +24 -0
  242. package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +45 -0
  243. package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +125 -0
  244. package/esm2022/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +22 -0
  245. package/esm2022/lib/shared/components/palette/text/read-text-field.component.mjs +24 -0
  246. package/esm2022/lib/shared/components/palette/text/write-text-field.component.mjs +78 -0
  247. package/esm2022/lib/shared/components/palette/text-area/read-text-area-field.component.mjs +24 -0
  248. package/esm2022/lib/shared/components/palette/text-area/write-text-area-field.component.mjs +89 -0
  249. package/esm2022/lib/shared/components/palette/unsupported-field.component.mjs +17 -0
  250. package/esm2022/lib/shared/components/palette/utils/dash.pipe.mjs +16 -0
  251. package/esm2022/lib/shared/components/palette/utils/date.pipe.mjs +133 -0
  252. package/esm2022/lib/shared/components/palette/utils/field-label.pipe.mjs +30 -0
  253. package/esm2022/lib/shared/components/palette/utils/first-error.pipe.mjs +62 -0
  254. package/esm2022/lib/shared/components/palette/utils/is-compound.pipe.mjs +43 -0
  255. package/esm2022/lib/shared/components/palette/utils/is-mandatory.pipe.mjs +22 -0
  256. package/esm2022/lib/shared/components/palette/utils/is-read-only-and-not-collection.pipe.mjs +32 -0
  257. package/esm2022/lib/shared/components/palette/utils/is-read-only.pipe.mjs +22 -0
  258. package/esm2022/lib/shared/components/palette/utils/utils.module.mjs +71 -0
  259. package/esm2022/lib/shared/components/palette/waystopay/waystopay-field.component.mjs +34 -0
  260. package/esm2022/lib/shared/components/palette/yes-no/read-yes-no-field.component.mjs +36 -0
  261. package/esm2022/lib/shared/components/palette/yes-no/write-yes-no-field.component.mjs +102 -0
  262. package/esm2022/lib/shared/components/palette/yes-no/yes-no.service.mjs +50 -0
  263. package/esm2022/lib/shared/components/search-filters/domain/search-input.model.mjs +15 -0
  264. package/esm2022/lib/shared/components/search-filters/search-filters-wrapper.component.mjs +62 -0
  265. package/esm2022/lib/shared/components/search-filters/search-filters.component.mjs +337 -0
  266. package/esm2022/lib/shared/components/search-filters/search-filters.module.mjs +44 -0
  267. package/esm2022/lib/shared/components/search-result/search-result.component.mjs +834 -0
  268. package/esm2022/lib/shared/components/search-result/search-result.module.mjs +46 -0
  269. package/esm2022/lib/shared/components/workbasket-filters/workbasket-filters.component.mjs +494 -0
  270. package/esm2022/lib/shared/components/workbasket-filters/workbasket-filters.module.mjs +42 -0
  271. package/esm2022/lib/shared/directives/conditional-show/conditional-show-form.directive.mjs +169 -0
  272. package/esm2022/lib/shared/directives/conditional-show/conditional-show.module.mjs +33 -0
  273. package/esm2022/lib/shared/directives/conditional-show/domain/conditional-show.model.mjs +201 -0
  274. package/esm2022/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.mjs +17 -0
  275. package/esm2022/lib/shared/directives/conditional-show/services/grey-bar.service.mjs +48 -0
  276. package/esm2022/lib/shared/directives/focus-element/focus-element.directive.mjs +38 -0
  277. package/esm2022/lib/shared/directives/focus-element/focus-element.module.mjs +21 -0
  278. package/esm2022/lib/shared/directives/substitutor/label-substitutor.directive.mjs +88 -0
  279. package/esm2022/lib/shared/directives/substitutor/label-substitutor.module.mjs +30 -0
  280. package/esm2022/lib/shared/directives/substitutor/services/placeholder.service.mjs +209 -0
  281. package/esm2022/lib/shared/domain/activity/activity.model.mjs +17 -0
  282. package/esm2022/lib/shared/domain/addresses/address.model.mjs +11 -0
  283. package/esm2022/lib/shared/domain/alert/alert.model.mjs +5 -0
  284. package/esm2022/lib/shared/domain/case-details.model.mjs +13 -0
  285. package/esm2022/lib/shared/domain/case-event-data.model.mjs +11 -0
  286. package/esm2022/lib/shared/domain/case-file-view/case-file-view-category.model.mjs +8 -0
  287. package/esm2022/lib/shared/domain/case-file-view/case-file-view-document.model.mjs +10 -0
  288. package/esm2022/lib/shared/domain/case-file-view/categories-and-documents.model.mjs +10 -0
  289. package/esm2022/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.mjs +124 -0
  290. package/esm2022/lib/shared/domain/case-flag/flag-type.model.mjs +37 -0
  291. package/esm2022/lib/shared/domain/case-flag/hmcts-service-detail.model.mjs +18 -0
  292. package/esm2022/lib/shared/domain/case-view/case-event-trigger.model.mjs +34 -0
  293. package/esm2022/lib/shared/domain/case-view/case-print-document.model.mjs +6 -0
  294. package/esm2022/lib/shared/domain/case-view/case-tab.model.mjs +17 -0
  295. package/esm2022/lib/shared/domain/case-view/case-view-event.model.mjs +16 -0
  296. package/esm2022/lib/shared/domain/case-view/case-view-trigger.model.mjs +7 -0
  297. package/esm2022/lib/shared/domain/case-view/case-view.model.mjs +27 -0
  298. package/esm2022/lib/shared/domain/definition/access-control-list.model.mjs +8 -0
  299. package/esm2022/lib/shared/domain/definition/banner.model.mjs +8 -0
  300. package/esm2022/lib/shared/domain/definition/case-event.model.mjs +11 -0
  301. package/esm2022/lib/shared/domain/definition/case-field.model.mjs +216 -0
  302. package/esm2022/lib/shared/domain/definition/case-state.model.mjs +7 -0
  303. package/esm2022/lib/shared/domain/definition/case-type-lite.model.mjs +10 -0
  304. package/esm2022/lib/shared/domain/definition/case-type.model.mjs +20 -0
  305. package/esm2022/lib/shared/domain/definition/event-case-field.model.mjs +6 -0
  306. package/esm2022/lib/shared/domain/definition/field-type.model.mjs +30 -0
  307. package/esm2022/lib/shared/domain/definition/fixed-list-item.model.mjs +6 -0
  308. package/esm2022/lib/shared/domain/definition/jurisdiction.model.mjs +8 -0
  309. package/esm2022/lib/shared/domain/document/document-data.model.mjs +27 -0
  310. package/esm2022/lib/shared/domain/draft.model.mjs +16 -0
  311. package/esm2022/lib/shared/domain/http/http-error.model.mjs +43 -0
  312. package/esm2022/lib/shared/domain/organisation/organisation-converter.mjs +42 -0
  313. package/esm2022/lib/shared/domain/pagination-metadata.model.mjs +5 -0
  314. package/esm2022/lib/shared/domain/profile/profile.model.mjs +33 -0
  315. package/esm2022/lib/shared/domain/search/field.model.mjs +17 -0
  316. package/esm2022/lib/shared/domain/search/search-result-view-column.model.mjs +9 -0
  317. package/esm2022/lib/shared/domain/search/search-result-view-item.model.mjs +18 -0
  318. package/esm2022/lib/shared/domain/search/search-result-view.model.mjs +26 -0
  319. package/esm2022/lib/shared/domain/search/sorting/sort-parameters.mjs +9 -0
  320. package/esm2022/lib/shared/domain/workbasket/workbasket-input.model.mjs +11 -0
  321. package/esm2022/lib/shared/fixture/case-field-builder.mjs +67 -0
  322. package/esm2022/lib/shared/pipes/case-reference/case-reference.pipe.mjs +33 -0
  323. package/esm2022/lib/shared/pipes/case-title/ccd-case-title.pipe.mjs +31 -0
  324. package/esm2022/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.mjs +32 -0
  325. package/esm2022/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.mjs +27 -0
  326. package/esm2022/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +39 -0
  327. package/esm2022/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +173 -0
  328. package/esm2022/lib/shared/pipes/complex/ccd-tab-fields.pipe.mjs +31 -0
  329. package/esm2022/lib/shared/pipes/complex/fields-filter.pipe.mjs +105 -0
  330. package/esm2022/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.mjs +16 -0
  331. package/esm2022/lib/shared/pipes/link-cases-from-reason-code/ccd-link-cases-from-reason-code.pipe.mjs +28 -0
  332. package/esm2022/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.mjs +28 -0
  333. package/esm2022/lib/shared/pipes/pipes.module.mjs +64 -0
  334. package/esm2022/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.mjs +24 -0
  335. package/esm2022/lib/shared/services/activity/activity.polling.service.mjs +122 -0
  336. package/esm2022/lib/shared/services/activity/activity.service.mjs +85 -0
  337. package/esm2022/lib/shared/services/addresses/addresses.service.mjs +65 -0
  338. package/esm2022/lib/shared/services/alert/alert.service.mjs +157 -0
  339. package/esm2022/lib/shared/services/auth/auth.service.mjs +35 -0
  340. package/esm2022/lib/shared/services/banners/banners.service.mjs +35 -0
  341. package/esm2022/lib/shared/services/browser/browser.service.mjs +24 -0
  342. package/esm2022/lib/shared/services/case-fields/case-field.service.mjs +34 -0
  343. package/esm2022/lib/shared/services/case-fields/format-translator.service.mjs +242 -0
  344. package/esm2022/lib/shared/services/case-file-view/case-file-view.service.mjs +48 -0
  345. package/esm2022/lib/shared/services/case-flag/case-flag-refdata.service.mjs +104 -0
  346. package/esm2022/lib/shared/services/common-data-service/common-data-service.mjs +29 -0
  347. package/esm2022/lib/shared/services/definitions/definitions.module.mjs +19 -0
  348. package/esm2022/lib/shared/services/definitions/definitions.service.mjs +32 -0
  349. package/esm2022/lib/shared/services/document-management/document-management.service.mjs +114 -0
  350. package/esm2022/lib/shared/services/draft/draft.service.mjs +89 -0
  351. package/esm2022/lib/shared/services/error/error-notifier.service.mjs +16 -0
  352. package/esm2022/lib/shared/services/eventStatusService/event-status.service.mjs +21 -0
  353. package/esm2022/lib/shared/services/fields/fields.purger.mjs +304 -0
  354. package/esm2022/lib/shared/services/fields/fields.utils.mjs +615 -0
  355. package/esm2022/lib/shared/services/form/field-type-sanitiser.mjs +91 -0
  356. package/esm2022/lib/shared/services/form/form-error.service.mjs +46 -0
  357. package/esm2022/lib/shared/services/form/form-validators.service.mjs +56 -0
  358. package/esm2022/lib/shared/services/form/form-value.service.mjs +552 -0
  359. package/esm2022/lib/shared/services/http/http-error.service.mjs +67 -0
  360. package/esm2022/lib/shared/services/http/http.service.mjs +95 -0
  361. package/esm2022/lib/shared/services/jurisdiction/jurisdiction.service.mjs +36 -0
  362. package/esm2022/lib/shared/services/loading/loading.module.mjs +22 -0
  363. package/esm2022/lib/shared/services/loading/loading.service.mjs +35 -0
  364. package/esm2022/lib/shared/services/navigation/navigation-notifier.service.mjs +16 -0
  365. package/esm2022/lib/shared/services/order/order.service.mjs +37 -0
  366. package/esm2022/lib/shared/services/organisation/organisation.service.mjs +57 -0
  367. package/esm2022/lib/shared/services/profile/profile.notifier.mjs +17 -0
  368. package/esm2022/lib/shared/services/profile/profile.service.mjs +36 -0
  369. package/esm2022/lib/shared/services/request/request.options.builder.mjs +61 -0
  370. package/esm2022/lib/shared/services/router/router-helper.service.mjs +20 -0
  371. package/esm2022/lib/shared/services/search/search.service.mjs +96 -0
  372. package/esm2022/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.mjs +71 -0
  373. package/esm2022/lib/shared/services/session/session-storage.service.mjs +34 -0
  374. package/esm2022/lib/shared/services/utils/retry/retry.service.mjs +87 -0
  375. package/esm2022/lib/shared/services/window/window.service.mjs +40 -0
  376. package/esm2022/lib/shared/services/workbasket/workbasket-input-filter.service.mjs +57 -0
  377. package/esm2022/lib/shared/test/test-route-snapshot-builder.mjs +38 -0
  378. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +36099 -0
  379. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -0
  380. package/lib/shared/components/case-editor/case-editor.module.d.ts +0 -25
  381. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  382. package/lib/shared/components/case-header/case-header.module.d.ts +0 -8
  383. package/lib/shared/components/case-header/case-header.module.d.ts.map +1 -1
  384. package/lib/shared/components/case-history/case-history.module.d.ts +0 -12
  385. package/lib/shared/components/case-history/case-history.module.d.ts.map +1 -1
  386. package/lib/shared/components/case-list/case-list.module.d.ts +0 -11
  387. package/lib/shared/components/case-list/case-list.module.d.ts.map +1 -1
  388. package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts +0 -11
  389. package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts.map +1 -1
  390. package/lib/shared/components/case-timeline/case-timeline.module.d.ts +0 -11
  391. package/lib/shared/components/case-timeline/case-timeline.module.d.ts.map +1 -1
  392. package/lib/shared/components/case-viewer/case-viewer.module.d.ts +0 -36
  393. package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
  394. package/lib/shared/components/pagination/pagination.module.d.ts +0 -8
  395. package/lib/shared/components/pagination/pagination.module.d.ts.map +1 -1
  396. package/lib/shared/components/palette/address/write-address-field.component.d.ts +1 -2
  397. package/lib/shared/components/palette/address/write-address-field.component.d.ts.map +1 -1
  398. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +0 -1
  399. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  400. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +1 -2
  401. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
  402. package/lib/shared/components/palette/complex/write-complex-field.component.d.ts +1 -2
  403. package/lib/shared/components/palette/complex/write-complex-field.component.d.ts.map +1 -1
  404. package/lib/shared/components/palette/markdown/markdown-component.module.d.ts +0 -10
  405. package/lib/shared/components/palette/markdown/markdown-component.module.d.ts.map +1 -1
  406. package/lib/shared/components/palette/palette.module.d.ts +0 -148
  407. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  408. package/lib/shared/components/search-filters/search-filters.module.d.ts +0 -11
  409. package/lib/shared/components/search-filters/search-filters.module.d.ts.map +1 -1
  410. package/lib/shared/components/search-result/search-result.module.d.ts +0 -15
  411. package/lib/shared/components/search-result/search-result.module.d.ts.map +1 -1
  412. package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts +0 -10
  413. package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts.map +1 -1
  414. package/package.json +5 -11
  415. package/esm2020/lib/app.config.mjs +0 -45
  416. package/esm2020/lib/components/banners/alert/alert-icon-class.pipe.mjs +0 -25
  417. package/esm2020/lib/components/banners/alert/alert.component.mjs +0 -95
  418. package/esm2020/lib/components/banners/alert/alert.module.mjs +0 -32
  419. package/esm2020/lib/components/banners/banners.module.mjs +0 -32
  420. package/esm2020/lib/components/banners/notification-banner/notification-banner.component.mjs +0 -120
  421. package/esm2020/lib/components/banners/notification-banner/notification-banner.module.mjs +0 -19
  422. package/esm2020/lib/components/body/body.component.mjs +0 -20
  423. package/esm2020/lib/components/body/body.module.mjs +0 -20
  424. package/esm2020/lib/components/footer/footer.component.mjs +0 -105
  425. package/esm2020/lib/components/footer/footers.module.mjs +0 -25
  426. package/esm2020/lib/components/form/date-input/date-input.component.mjs +0 -331
  427. package/esm2020/lib/components/form/form.module.mjs +0 -29
  428. package/esm2020/lib/components/header/header-bar/header-bar.component.mjs +0 -97
  429. package/esm2020/lib/components/header/headers.module.mjs +0 -25
  430. package/esm2020/lib/components/header/navigation/navigation-item.component.mjs +0 -41
  431. package/esm2020/lib/components/header/navigation/navigation.component.mjs +0 -24
  432. package/esm2020/lib/components/header/phase/phase.component.mjs +0 -45
  433. package/esm2020/lib/components/tabs/tab.component.mjs +0 -28
  434. package/esm2020/lib/components/tabs/tabs.component.mjs +0 -79
  435. package/esm2020/lib/components/tabs/tabs.module.mjs +0 -38
  436. package/esm2020/lib/shared/commons/address-validation-constants.mjs +0 -13
  437. package/esm2020/lib/shared/commons/case-edit-data/case-edit-data.module.mjs +0 -19
  438. package/esm2020/lib/shared/commons/case-edit-data/case-edit-data.service.mjs +0 -47
  439. package/esm2020/lib/shared/commons/constants.mjs +0 -13
  440. package/esm2020/lib/shared/components/activity/activity-banner/activity-banner.component.mjs +0 -39
  441. package/esm2020/lib/shared/components/activity/activity-icon/activity-icon.component.mjs +0 -33
  442. package/esm2020/lib/shared/components/activity/activity.component.mjs +0 -151
  443. package/esm2020/lib/shared/components/activity/activity.module.mjs +0 -55
  444. package/esm2020/lib/shared/components/case-editor/case-access-utils/index.mjs +0 -105
  445. package/esm2020/lib/shared/components/case-editor/case-create/case-create.component.mjs +0 -87
  446. package/esm2020/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +0 -432
  447. package/esm2020/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +0 -125
  448. package/esm2020/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +0 -135
  449. package/esm2020/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.mjs +0 -69
  450. package/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +0 -751
  451. package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +0 -542
  452. package/esm2020/lib/shared/components/case-editor/case-editor.module.mjs +0 -213
  453. package/esm2020/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +0 -86
  454. package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +0 -80
  455. package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +0 -153
  456. package/esm2020/lib/shared/components/case-editor/case-progress/case-progress.component.mjs +0 -77
  457. package/esm2020/lib/shared/components/case-editor/domain/confirmation.model.mjs +0 -21
  458. package/esm2020/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.mjs +0 -4
  459. package/esm2020/lib/shared/components/case-editor/domain/wizard-page-field.model.mjs +0 -3
  460. package/esm2020/lib/shared/components/case-editor/domain/wizard-page.model.mjs +0 -26
  461. package/esm2020/lib/shared/components/case-editor/domain/wizard.model.mjs +0 -54
  462. package/esm2020/lib/shared/components/case-editor/services/case-edit-wizard.guard.mjs +0 -93
  463. package/esm2020/lib/shared/components/case-editor/services/case-flag-state.service.mjs +0 -19
  464. package/esm2020/lib/shared/components/case-editor/services/case-worker.service.mjs +0 -32
  465. package/esm2020/lib/shared/components/case-editor/services/case.notifier.mjs +0 -51
  466. package/esm2020/lib/shared/components/case-editor/services/cases.service.mjs +0 -294
  467. package/esm2020/lib/shared/components/case-editor/services/convert-href-to-router.service.mjs +0 -41
  468. package/esm2020/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +0 -143
  469. package/esm2020/lib/shared/components/case-editor/services/event-trigger.service.mjs +0 -20
  470. package/esm2020/lib/shared/components/case-editor/services/judicial-worker.service.mjs +0 -32
  471. package/esm2020/lib/shared/components/case-editor/services/page-validation.service.mjs +0 -53
  472. package/esm2020/lib/shared/components/case-editor/services/valid-page-list-caseFields.service.mjs +0 -39
  473. package/esm2020/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.mjs +0 -117
  474. package/esm2020/lib/shared/components/case-editor/services/work-allocation.service.mjs +0 -209
  475. package/esm2020/lib/shared/components/case-header/case-header.component.mjs +0 -61
  476. package/esm2020/lib/shared/components/case-header/case-header.module.mjs +0 -33
  477. package/esm2020/lib/shared/components/case-history/case-history.component.mjs +0 -242
  478. package/esm2020/lib/shared/components/case-history/case-history.module.mjs +0 -64
  479. package/esm2020/lib/shared/components/case-history/domain/case-history.model.mjs +0 -29
  480. package/esm2020/lib/shared/components/case-history/services/case-history.service.mjs +0 -40
  481. package/esm2020/lib/shared/components/case-list/case-list.component.mjs +0 -362
  482. package/esm2020/lib/shared/components/case-list/case-list.module.mjs +0 -47
  483. package/esm2020/lib/shared/components/case-list-filters/case-list-filters.component.mjs +0 -52
  484. package/esm2020/lib/shared/components/case-list-filters/case-list-filters.module.mjs +0 -64
  485. package/esm2020/lib/shared/components/case-timeline/case-timeline.component.mjs +0 -109
  486. package/esm2020/lib/shared/components/case-timeline/case-timeline.module.mjs +0 -52
  487. package/esm2020/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.mjs +0 -247
  488. package/esm2020/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +0 -298
  489. package/esm2020/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +0 -72
  490. package/esm2020/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +0 -141
  491. package/esm2020/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +0 -681
  492. package/esm2020/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +0 -58
  493. package/esm2020/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +0 -241
  494. package/esm2020/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +0 -199
  495. package/esm2020/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.mjs +0 -47
  496. package/esm2020/lib/shared/components/case-viewer/case-view/case-view.component.mjs +0 -98
  497. package/esm2020/lib/shared/components/case-viewer/case-viewer.component.mjs +0 -128
  498. package/esm2020/lib/shared/components/case-viewer/case-viewer.module.mjs +0 -191
  499. package/esm2020/lib/shared/components/case-viewer/printer/case-printer.component.mjs +0 -110
  500. package/esm2020/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.mjs +0 -60
  501. package/esm2020/lib/shared/components/case-viewer/services/case.resolver.mjs +0 -131
  502. package/esm2020/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +0 -64
  503. package/esm2020/lib/shared/components/create-case-filters/create-case-filters-selection.model.mjs +0 -8
  504. package/esm2020/lib/shared/components/create-case-filters/create-case-filters.component.mjs +0 -275
  505. package/esm2020/lib/shared/components/create-case-filters/create-case-filters.module.mjs +0 -44
  506. package/esm2020/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.mjs +0 -57
  507. package/esm2020/lib/shared/components/dialogs/dialogs.module.mjs +0 -51
  508. package/esm2020/lib/shared/components/dialogs/document-dialog/document-dialog.component.mjs +0 -59
  509. package/esm2020/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.mjs +0 -57
  510. package/esm2020/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.mjs +0 -61
  511. package/esm2020/lib/shared/components/error/callback-errors.component.mjs +0 -148
  512. package/esm2020/lib/shared/components/error/domain/error-context.mjs +0 -3
  513. package/esm2020/lib/shared/components/error/errors.module.mjs +0 -33
  514. package/esm2020/lib/shared/components/error-message/error-message.component.mjs +0 -43
  515. package/esm2020/lib/shared/components/error-message/error-message.module.mjs +0 -41
  516. package/esm2020/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +0 -59
  517. package/esm2020/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +0 -53
  518. package/esm2020/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +0 -104
  519. package/esm2020/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.mjs +0 -68
  520. package/esm2020/lib/shared/components/event-start/components/task-conflict/task-conflict.component.mjs +0 -58
  521. package/esm2020/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +0 -53
  522. package/esm2020/lib/shared/components/event-start/event-guard/event-start.guard.mjs +0 -94
  523. package/esm2020/lib/shared/components/event-start/event-start.component.mjs +0 -49
  524. package/esm2020/lib/shared/components/event-start/event-start.module.mjs +0 -71
  525. package/esm2020/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.mjs +0 -29
  526. package/esm2020/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +0 -168
  527. package/esm2020/lib/shared/components/event-trigger/event-trigger.component.mjs +0 -111
  528. package/esm2020/lib/shared/components/event-trigger/event-trigger.module.mjs +0 -37
  529. package/esm2020/lib/shared/components/loading-spinner/loading-spinner.component.mjs +0 -27
  530. package/esm2020/lib/shared/components/loading-spinner/loading-spinner.module.mjs +0 -29
  531. package/esm2020/lib/shared/components/pagination/pagination.component.mjs +0 -262
  532. package/esm2020/lib/shared/components/pagination/pagination.module.mjs +0 -35
  533. package/esm2020/lib/shared/components/palette/address/address-option.model.mjs +0 -21
  534. package/esm2020/lib/shared/components/palette/address/write-address-field.component.mjs +0 -282
  535. package/esm2020/lib/shared/components/palette/base-field/abstract-field-read.component.mjs +0 -31
  536. package/esm2020/lib/shared/components/palette/base-field/abstract-field-write.component.mjs +0 -44
  537. package/esm2020/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +0 -83
  538. package/esm2020/lib/shared/components/palette/base-field/field-read-label.component.mjs +0 -86
  539. package/esm2020/lib/shared/components/palette/base-field/field-read.component.mjs +0 -85
  540. package/esm2020/lib/shared/components/palette/base-field/field-write.component.mjs +0 -74
  541. package/esm2020/lib/shared/components/palette/base-field/payment-field.component.mjs +0 -35
  542. package/esm2020/lib/shared/components/palette/case-file-view/case-file-view-field.component.mjs +0 -171
  543. 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 +0 -48
  544. 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 +0 -48
  545. package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +0 -340
  546. package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.mjs +0 -153
  547. package/esm2020/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.mjs +0 -94
  548. package/esm2020/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +0 -190
  549. package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +0 -288
  550. package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.mjs +0 -207
  551. package/esm2020/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +0 -165
  552. package/esm2020/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +0 -219
  553. package/esm2020/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +0 -306
  554. package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +0 -200
  555. package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +0 -343
  556. package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +0 -267
  557. package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +0 -510
  558. package/esm2020/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.mjs +0 -41
  559. package/esm2020/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.mjs +0 -41
  560. package/esm2020/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.mjs +0 -109
  561. package/esm2020/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.mjs +0 -77
  562. package/esm2020/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +0 -246
  563. package/esm2020/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +0 -686
  564. package/esm2020/lib/shared/components/palette/case-link/read-case-link-field.component.mjs +0 -32
  565. package/esm2020/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +0 -122
  566. package/esm2020/lib/shared/components/palette/collection/collection-create-checker.service.mjs +0 -42
  567. package/esm2020/lib/shared/components/palette/collection/read-collection-field.component.mjs +0 -81
  568. package/esm2020/lib/shared/components/palette/collection/write-collection-field.component.mjs +0 -443
  569. package/esm2020/lib/shared/components/palette/complex/read-complex-field-collection-table.component.mjs +0 -379
  570. package/esm2020/lib/shared/components/palette/complex/read-complex-field-raw.component.mjs +0 -53
  571. package/esm2020/lib/shared/components/palette/complex/read-complex-field-table.component.mjs +0 -78
  572. package/esm2020/lib/shared/components/palette/complex/read-complex-field.component.mjs +0 -73
  573. package/esm2020/lib/shared/components/palette/complex/write-complex-field.component.mjs +0 -171
  574. package/esm2020/lib/shared/components/palette/date/read-date-field.component.mjs +0 -28
  575. package/esm2020/lib/shared/components/palette/date/write-date-container-field.component.mjs +0 -33
  576. package/esm2020/lib/shared/components/palette/date/write-date-field.component.mjs +0 -76
  577. package/esm2020/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +0 -309
  578. package/esm2020/lib/shared/components/palette/document/document-url.pipe.mjs +0 -24
  579. package/esm2020/lib/shared/components/palette/document/file-upload-progress.guard.mjs +0 -29
  580. package/esm2020/lib/shared/components/palette/document/file-upload-state.service.mjs +0 -16
  581. package/esm2020/lib/shared/components/palette/document/read-document-field.component.mjs +0 -81
  582. package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +0 -383
  583. package/esm2020/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.mjs +0 -18
  584. package/esm2020/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.mjs +0 -36
  585. package/esm2020/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.mjs +0 -124
  586. package/esm2020/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.mjs +0 -43
  587. package/esm2020/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.mjs +0 -145
  588. package/esm2020/lib/shared/components/palette/dynamic-radio-list/dynamic-radio-list.pipe.mjs +0 -25
  589. package/esm2020/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.mjs +0 -42
  590. package/esm2020/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.mjs +0 -124
  591. package/esm2020/lib/shared/components/palette/email/read-email-field.component.mjs +0 -35
  592. package/esm2020/lib/shared/components/palette/email/write-email-field.component.mjs +0 -73
  593. package/esm2020/lib/shared/components/palette/fixed-list/fixed-list.pipe.mjs +0 -23
  594. package/esm2020/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.mjs +0 -26
  595. package/esm2020/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.mjs +0 -106
  596. package/esm2020/lib/shared/components/palette/fixed-radio-list/fixed-radio-list.pipe.mjs +0 -18
  597. package/esm2020/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.mjs +0 -26
  598. package/esm2020/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.mjs +0 -95
  599. package/esm2020/lib/shared/components/palette/history/case-history-viewer-field.component.mjs +0 -16
  600. package/esm2020/lib/shared/components/palette/history/event-log/event-log-details.component.mjs +0 -97
  601. package/esm2020/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +0 -225
  602. package/esm2020/lib/shared/components/palette/history/event-log/event-log.component.mjs +0 -72
  603. package/esm2020/lib/shared/components/palette/judicial-user/read-judicial-user-field.component.mjs +0 -45
  604. package/esm2020/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.mjs +0 -242
  605. package/esm2020/lib/shared/components/palette/label/label-field.component.mjs +0 -50
  606. package/esm2020/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +0 -108
  607. package/esm2020/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +0 -189
  608. package/esm2020/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +0 -530
  609. package/esm2020/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +0 -204
  610. package/esm2020/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +0 -280
  611. package/esm2020/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +0 -66
  612. package/esm2020/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +0 -201
  613. package/esm2020/lib/shared/components/palette/linked-cases/domain/linked-cases.model.mjs +0 -22
  614. package/esm2020/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +0 -163
  615. package/esm2020/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +0 -132
  616. package/esm2020/lib/shared/components/palette/linked-cases/utils/validators.utils.mjs +0 -27
  617. package/esm2020/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +0 -229
  618. package/esm2020/lib/shared/components/palette/markdown/markdown-component.module.mjs +0 -40
  619. package/esm2020/lib/shared/components/palette/markdown/markdown.component.mjs +0 -43
  620. package/esm2020/lib/shared/components/palette/money-gbp/money-gbp-input.component.mjs +0 -123
  621. package/esm2020/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.mjs +0 -47
  622. package/esm2020/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.mjs +0 -78
  623. package/esm2020/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.mjs +0 -45
  624. package/esm2020/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.mjs +0 -126
  625. package/esm2020/lib/shared/components/palette/number/read-number-field.component.mjs +0 -24
  626. package/esm2020/lib/shared/components/palette/number/write-number-field.component.mjs +0 -73
  627. package/esm2020/lib/shared/components/palette/order-summary/fee-value.model.mjs +0 -3
  628. package/esm2020/lib/shared/components/palette/order-summary/fee.model.mjs +0 -4
  629. package/esm2020/lib/shared/components/palette/order-summary/order-summary.model.mjs +0 -3
  630. package/esm2020/lib/shared/components/palette/order-summary/read-order-summary-field.component.mjs +0 -73
  631. package/esm2020/lib/shared/components/palette/order-summary/read-order-summary-row.component.mjs +0 -43
  632. package/esm2020/lib/shared/components/palette/order-summary/write-order-summary-field.component.mjs +0 -44
  633. package/esm2020/lib/shared/components/palette/organisation/read-organisation-field-raw.component.mjs +0 -83
  634. package/esm2020/lib/shared/components/palette/organisation/read-organisation-field-table.component.mjs +0 -87
  635. package/esm2020/lib/shared/components/palette/organisation/read-organisation-field.component.mjs +0 -56
  636. package/esm2020/lib/shared/components/palette/organisation/write-organisation-complex-field.component.mjs +0 -33
  637. package/esm2020/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +0 -384
  638. package/esm2020/lib/shared/components/palette/palette.module.mjs +0 -738
  639. package/esm2020/lib/shared/components/palette/palette.service.mjs +0 -155
  640. package/esm2020/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.mjs +0 -24
  641. package/esm2020/lib/shared/components/palette/phone-uk/read-phone-uk-field.component.mjs +0 -22
  642. package/esm2020/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.mjs +0 -73
  643. package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +0 -42
  644. package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +0 -144
  645. package/esm2020/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.mjs +0 -64
  646. package/esm2020/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.mjs +0 -60
  647. package/esm2020/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +0 -281
  648. package/esm2020/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +0 -327
  649. package/esm2020/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.mjs +0 -22
  650. package/esm2020/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +0 -164
  651. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.mjs +0 -74
  652. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.mjs +0 -107
  653. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +0 -201
  654. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +0 -101
  655. package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.mjs +0 -21
  656. package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +0 -38
  657. package/esm2020/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +0 -121
  658. package/esm2020/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +0 -22
  659. package/esm2020/lib/shared/components/palette/text/read-text-field.component.mjs +0 -24
  660. package/esm2020/lib/shared/components/palette/text/write-text-field.component.mjs +0 -77
  661. package/esm2020/lib/shared/components/palette/text-area/read-text-area-field.component.mjs +0 -24
  662. package/esm2020/lib/shared/components/palette/text-area/write-text-area-field.component.mjs +0 -87
  663. package/esm2020/lib/shared/components/palette/unsupported-field.component.mjs +0 -17
  664. package/esm2020/lib/shared/components/palette/utils/dash.pipe.mjs +0 -16
  665. package/esm2020/lib/shared/components/palette/utils/date.pipe.mjs +0 -132
  666. package/esm2020/lib/shared/components/palette/utils/field-label.pipe.mjs +0 -29
  667. package/esm2020/lib/shared/components/palette/utils/first-error.pipe.mjs +0 -59
  668. package/esm2020/lib/shared/components/palette/utils/is-compound.pipe.mjs +0 -43
  669. package/esm2020/lib/shared/components/palette/utils/is-mandatory.pipe.mjs +0 -21
  670. package/esm2020/lib/shared/components/palette/utils/is-read-only-and-not-collection.pipe.mjs +0 -31
  671. package/esm2020/lib/shared/components/palette/utils/is-read-only.pipe.mjs +0 -21
  672. package/esm2020/lib/shared/components/palette/utils/utils.module.mjs +0 -71
  673. package/esm2020/lib/shared/components/palette/waystopay/waystopay-field.component.mjs +0 -34
  674. package/esm2020/lib/shared/components/palette/yes-no/read-yes-no-field.component.mjs +0 -34
  675. package/esm2020/lib/shared/components/palette/yes-no/write-yes-no-field.component.mjs +0 -100
  676. package/esm2020/lib/shared/components/palette/yes-no/yes-no.service.mjs +0 -50
  677. package/esm2020/lib/shared/components/search-filters/domain/search-input.model.mjs +0 -10
  678. package/esm2020/lib/shared/components/search-filters/search-filters-wrapper.component.mjs +0 -58
  679. package/esm2020/lib/shared/components/search-filters/search-filters.component.mjs +0 -326
  680. package/esm2020/lib/shared/components/search-filters/search-filters.module.mjs +0 -71
  681. package/esm2020/lib/shared/components/search-result/search-result.component.mjs +0 -815
  682. package/esm2020/lib/shared/components/search-result/search-result.module.mjs +0 -82
  683. package/esm2020/lib/shared/components/workbasket-filters/workbasket-filters.component.mjs +0 -479
  684. package/esm2020/lib/shared/components/workbasket-filters/workbasket-filters.module.mjs +0 -67
  685. package/esm2020/lib/shared/directives/conditional-show/conditional-show-form.directive.mjs +0 -164
  686. package/esm2020/lib/shared/directives/conditional-show/conditional-show.module.mjs +0 -33
  687. package/esm2020/lib/shared/directives/conditional-show/domain/conditional-show.model.mjs +0 -200
  688. package/esm2020/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.mjs +0 -19
  689. package/esm2020/lib/shared/directives/conditional-show/services/grey-bar.service.mjs +0 -47
  690. package/esm2020/lib/shared/directives/focus-element/focus-element.directive.mjs +0 -36
  691. package/esm2020/lib/shared/directives/focus-element/focus-element.module.mjs +0 -21
  692. package/esm2020/lib/shared/directives/substitutor/label-substitutor.directive.mjs +0 -82
  693. package/esm2020/lib/shared/directives/substitutor/label-substitutor.module.mjs +0 -30
  694. package/esm2020/lib/shared/directives/substitutor/services/placeholder.service.mjs +0 -200
  695. package/esm2020/lib/shared/domain/activity/activity.model.mjs +0 -10
  696. package/esm2020/lib/shared/domain/addresses/address.model.mjs +0 -13
  697. package/esm2020/lib/shared/domain/alert/alert.model.mjs +0 -3
  698. package/esm2020/lib/shared/domain/case-details.model.mjs +0 -4
  699. package/esm2020/lib/shared/domain/case-event-data.model.mjs +0 -4
  700. package/esm2020/lib/shared/domain/case-file-view/case-file-view-category.model.mjs +0 -3
  701. package/esm2020/lib/shared/domain/case-file-view/case-file-view-document.model.mjs +0 -4
  702. package/esm2020/lib/shared/domain/case-file-view/categories-and-documents.model.mjs +0 -7
  703. package/esm2020/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.mjs +0 -117
  704. package/esm2020/lib/shared/domain/case-flag/flag-type.model.mjs +0 -28
  705. package/esm2020/lib/shared/domain/case-flag/hmcts-service-detail.model.mjs +0 -10
  706. package/esm2020/lib/shared/domain/case-view/case-event-trigger.model.mjs +0 -23
  707. package/esm2020/lib/shared/domain/case-view/case-print-document.model.mjs +0 -3
  708. package/esm2020/lib/shared/domain/case-view/case-tab.model.mjs +0 -12
  709. package/esm2020/lib/shared/domain/case-view/case-view-event.model.mjs +0 -4
  710. package/esm2020/lib/shared/domain/case-view/case-view-trigger.model.mjs +0 -3
  711. package/esm2020/lib/shared/domain/case-view/case-view.model.mjs +0 -17
  712. package/esm2020/lib/shared/domain/definition/access-control-list.model.mjs +0 -3
  713. package/esm2020/lib/shared/domain/definition/banner.model.mjs +0 -3
  714. package/esm2020/lib/shared/domain/definition/case-event.model.mjs +0 -3
  715. package/esm2020/lib/shared/domain/definition/case-field.model.mjs +0 -198
  716. package/esm2020/lib/shared/domain/definition/case-state.model.mjs +0 -3
  717. package/esm2020/lib/shared/domain/definition/case-type-lite.model.mjs +0 -5
  718. package/esm2020/lib/shared/domain/definition/case-type.model.mjs +0 -12
  719. package/esm2020/lib/shared/domain/definition/event-case-field.model.mjs +0 -4
  720. package/esm2020/lib/shared/domain/definition/field-type.model.mjs +0 -22
  721. package/esm2020/lib/shared/domain/definition/fixed-list-item.model.mjs +0 -3
  722. package/esm2020/lib/shared/domain/definition/jurisdiction.model.mjs +0 -3
  723. package/esm2020/lib/shared/domain/document/document-data.model.mjs +0 -14
  724. package/esm2020/lib/shared/domain/draft.model.mjs +0 -11
  725. package/esm2020/lib/shared/domain/http/http-error.model.mjs +0 -34
  726. package/esm2020/lib/shared/domain/organisation/organisation-converter.mjs +0 -42
  727. package/esm2020/lib/shared/domain/pagination-metadata.model.mjs +0 -3
  728. package/esm2020/lib/shared/domain/profile/profile.model.mjs +0 -29
  729. package/esm2020/lib/shared/domain/search/field.model.mjs +0 -11
  730. package/esm2020/lib/shared/domain/search/search-result-view-column.model.mjs +0 -3
  731. package/esm2020/lib/shared/domain/search/search-result-view-item.model.mjs +0 -12
  732. package/esm2020/lib/shared/domain/search/search-result-view.model.mjs +0 -23
  733. package/esm2020/lib/shared/domain/search/sorting/sort-parameters.mjs +0 -7
  734. package/esm2020/lib/shared/domain/workbasket/workbasket-input.model.mjs +0 -5
  735. package/esm2020/lib/shared/fixture/case-field-builder.mjs +0 -69
  736. package/esm2020/lib/shared/pipes/case-reference/case-reference.pipe.mjs +0 -33
  737. package/esm2020/lib/shared/pipes/case-title/ccd-case-title.pipe.mjs +0 -29
  738. package/esm2020/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.mjs +0 -32
  739. package/esm2020/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.mjs +0 -29
  740. package/esm2020/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +0 -39
  741. package/esm2020/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +0 -173
  742. package/esm2020/lib/shared/pipes/complex/ccd-tab-fields.pipe.mjs +0 -31
  743. package/esm2020/lib/shared/pipes/complex/fields-filter.pipe.mjs +0 -105
  744. package/esm2020/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.mjs +0 -16
  745. package/esm2020/lib/shared/pipes/link-cases-from-reason-code/ccd-link-cases-from-reason-code.pipe.mjs +0 -27
  746. package/esm2020/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.mjs +0 -27
  747. package/esm2020/lib/shared/pipes/pipes.module.mjs +0 -64
  748. package/esm2020/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.mjs +0 -24
  749. package/esm2020/lib/shared/services/activity/activity.polling.service.mjs +0 -114
  750. package/esm2020/lib/shared/services/activity/activity.service.mjs +0 -82
  751. package/esm2020/lib/shared/services/addresses/addresses.service.mjs +0 -63
  752. package/esm2020/lib/shared/services/alert/alert.service.mjs +0 -142
  753. package/esm2020/lib/shared/services/auth/auth.service.mjs +0 -33
  754. package/esm2020/lib/shared/services/banners/banners.service.mjs +0 -33
  755. package/esm2020/lib/shared/services/browser/browser.service.mjs +0 -24
  756. package/esm2020/lib/shared/services/case-fields/case-field.service.mjs +0 -34
  757. package/esm2020/lib/shared/services/case-fields/format-translator.service.mjs +0 -242
  758. package/esm2020/lib/shared/services/case-file-view/case-file-view.service.mjs +0 -46
  759. package/esm2020/lib/shared/services/case-flag/case-flag-refdata.service.mjs +0 -102
  760. package/esm2020/lib/shared/services/common-data-service/common-data-service.mjs +0 -28
  761. package/esm2020/lib/shared/services/definitions/definitions.module.mjs +0 -19
  762. package/esm2020/lib/shared/services/definitions/definitions.service.mjs +0 -30
  763. package/esm2020/lib/shared/services/document-management/document-management.service.mjs +0 -112
  764. package/esm2020/lib/shared/services/draft/draft.service.mjs +0 -86
  765. package/esm2020/lib/shared/services/error/error-notifier.service.mjs +0 -18
  766. package/esm2020/lib/shared/services/eventStatusService/event-status.service.mjs +0 -21
  767. package/esm2020/lib/shared/services/fields/fields.purger.mjs +0 -303
  768. package/esm2020/lib/shared/services/fields/fields.utils.mjs +0 -615
  769. package/esm2020/lib/shared/services/form/field-type-sanitiser.mjs +0 -91
  770. package/esm2020/lib/shared/services/form/form-error.service.mjs +0 -46
  771. package/esm2020/lib/shared/services/form/form-validators.service.mjs +0 -56
  772. package/esm2020/lib/shared/services/form/form-value.service.mjs +0 -551
  773. package/esm2020/lib/shared/services/http/http-error.service.mjs +0 -65
  774. package/esm2020/lib/shared/services/http/http.service.mjs +0 -93
  775. package/esm2020/lib/shared/services/jurisdiction/jurisdiction.service.mjs +0 -34
  776. package/esm2020/lib/shared/services/loading/loading.module.mjs +0 -22
  777. package/esm2020/lib/shared/services/loading/loading.service.mjs +0 -37
  778. package/esm2020/lib/shared/services/navigation/navigation-notifier.service.mjs +0 -18
  779. package/esm2020/lib/shared/services/order/order.service.mjs +0 -39
  780. package/esm2020/lib/shared/services/organisation/organisation.service.mjs +0 -54
  781. package/esm2020/lib/shared/services/profile/profile.notifier.mjs +0 -19
  782. package/esm2020/lib/shared/services/profile/profile.service.mjs +0 -34
  783. package/esm2020/lib/shared/services/request/request.options.builder.mjs +0 -61
  784. package/esm2020/lib/shared/services/router/router-helper.service.mjs +0 -20
  785. package/esm2020/lib/shared/services/search/search.service.mjs +0 -89
  786. package/esm2020/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.mjs +0 -71
  787. package/esm2020/lib/shared/services/session/session-storage.service.mjs +0 -34
  788. package/esm2020/lib/shared/services/utils/retry/retry.service.mjs +0 -86
  789. package/esm2020/lib/shared/services/window/window.service.mjs +0 -40
  790. package/esm2020/lib/shared/services/workbasket/workbasket-input-filter.service.mjs +0 -53
  791. package/esm2020/lib/shared/test/test-route-snapshot-builder.mjs +0 -40
  792. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +0 -38542
  793. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +0 -1
  794. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +0 -35578
  795. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +0 -1
  796. /package/{esm2020 → esm2022}/hmcts-ccd-case-ui-toolkit.mjs +0 -0
  797. /package/{esm2020 → esm2022}/lib/components/banners/alert/index.mjs +0 -0
  798. /package/{esm2020 → esm2022}/lib/components/banners/index.mjs +0 -0
  799. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/domain/index.mjs +0 -0
  800. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/domain/notification-banner-config.model.mjs +0 -0
  801. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/enums/index.mjs +0 -0
  802. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/enums/notification-banner-style.enum.mjs +0 -0
  803. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/enums/notification-banner-type.enum.mjs +0 -0
  804. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/index.mjs +0 -0
  805. /package/{esm2020 → esm2022}/lib/components/body/index.mjs +0 -0
  806. /package/{esm2020 → esm2022}/lib/components/footer/index.mjs +0 -0
  807. /package/{esm2020 → esm2022}/lib/components/form/date-input/index.mjs +0 -0
  808. /package/{esm2020 → esm2022}/lib/components/form/index.mjs +0 -0
  809. /package/{esm2020 → esm2022}/lib/components/header/header-bar/index.mjs +0 -0
  810. /package/{esm2020 → esm2022}/lib/components/header/index.mjs +0 -0
  811. /package/{esm2020 → esm2022}/lib/components/header/navigation/index.mjs +0 -0
  812. /package/{esm2020 → esm2022}/lib/components/header/phase/index.mjs +0 -0
  813. /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
  814. /package/{esm2020 → esm2022}/lib/components/tabs/index.mjs +0 -0
  815. /package/{esm2020 → esm2022}/lib/shared/commons/case-edit-data/case-edit-validation.model.mjs +0 -0
  816. /package/{esm2020 → esm2022}/lib/shared/commons/case-edit-data/index.mjs +0 -0
  817. /package/{esm2020 → esm2022}/lib/shared/components/activity/activity-banner/index.mjs +0 -0
  818. /package/{esm2020 → esm2022}/lib/shared/components/activity/activity-icon/index.mjs +0 -0
  819. /package/{esm2020 → esm2022}/lib/shared/components/activity/index.mjs +0 -0
  820. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-create/index.mjs +0 -0
  821. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit/index.mjs +0 -0
  822. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-confirm/index.mjs +0 -0
  823. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-form/index.mjs +0 -0
  824. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-page/index.mjs +0 -0
  825. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.mjs +0 -0
  826. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-submit/index.mjs +0 -0
  827. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-event-completion/index.mjs +0 -0
  828. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-progress/index.mjs +0 -0
  829. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-params.model.mjs +0 -0
  830. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-portal-types.model.mjs +0 -0
  831. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-return-states.enum.model.mjs +0 -0
  832. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.mjs +0 -0
  833. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-states.enum.model.mjs +0 -0
  834. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/index.mjs +0 -0
  835. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/editor.routing.mjs +0 -0
  836. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/index.mjs +0 -0
  837. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/services/index.mjs +0 -0
  838. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/services/wizard-factory.service.mjs +0 -0
  839. /package/{esm2020 → esm2022}/lib/shared/components/case-header/index.mjs +0 -0
  840. /package/{esm2020 → esm2022}/lib/shared/components/case-history/index.mjs +0 -0
  841. /package/{esm2020 → esm2022}/lib/shared/components/case-list/index.mjs +0 -0
  842. /package/{esm2020 → esm2022}/lib/shared/components/case-list-filters/index.mjs +0 -0
  843. /package/{esm2020 → esm2022}/lib/shared/components/case-timeline/index.mjs +0 -0
  844. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-basic-access-view/index.mjs +0 -0
  845. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-request/index.mjs +0 -0
  846. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.mjs +0 -0
  847. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-request/models/index.mjs +0 -0
  848. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-success/index.mjs +0 -0
  849. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-event-trigger/index.mjs +0 -0
  850. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-full-access-view/index.mjs +0 -0
  851. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-reject/index.mjs +0 -0
  852. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-request/index.mjs +0 -0
  853. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.mjs +0 -0
  854. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.mjs +0 -0
  855. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-request/index.mjs +0 -0
  856. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.mjs +0 -0
  857. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-request/models/index.mjs +0 -0
  858. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-success/index.mjs +0 -0
  859. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-view/index.mjs +0 -0
  860. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/index.mjs +0 -0
  861. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/printer/index.mjs +0 -0
  862. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/printer/pipes/index.mjs +0 -0
  863. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/services/index.mjs +0 -0
  864. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/viewer.routing.mjs +0 -0
  865. /package/{esm2020 → esm2022}/lib/shared/components/create-case-filters/index.mjs +0 -0
  866. /package/{esm2020 → esm2022}/lib/shared/components/dialogs/delete-or-cancel-dialog/index.mjs +0 -0
  867. /package/{esm2020 → esm2022}/lib/shared/components/dialogs/document-dialog/index.mjs +0 -0
  868. /package/{esm2020 → esm2022}/lib/shared/components/dialogs/index.mjs +0 -0
  869. /package/{esm2020 → esm2022}/lib/shared/components/dialogs/remove-dialog/index.mjs +0 -0
  870. /package/{esm2020 → esm2022}/lib/shared/components/dialogs/save-or-discard-dialog/index.mjs +0 -0
  871. /package/{esm2020 → esm2022}/lib/shared/components/error/domain/index.mjs +0 -0
  872. /package/{esm2020 → esm2022}/lib/shared/components/error/index.mjs +0 -0
  873. /package/{esm2020 → esm2022}/lib/shared/components/error-message/index.mjs +0 -0
  874. /package/{esm2020 → esm2022}/lib/shared/components/event-start/index.mjs +0 -0
  875. /package/{esm2020 → esm2022}/lib/shared/components/event-start/models/event-start-state-machine-context.model.mjs +0 -0
  876. /package/{esm2020 → esm2022}/lib/shared/components/event-start/models/event-start-states-enum.model.mjs +0 -0
  877. /package/{esm2020 → esm2022}/lib/shared/components/event-start/models/index.mjs +0 -0
  878. /package/{esm2020 → esm2022}/lib/shared/components/event-start/services/index.mjs +0 -0
  879. /package/{esm2020 → esm2022}/lib/shared/components/event-trigger/index.mjs +0 -0
  880. /package/{esm2020 → esm2022}/lib/shared/components/helpers/index.mjs +0 -0
  881. /package/{esm2020 → esm2022}/lib/shared/components/helpers/init-dialog-helper.mjs +0 -0
  882. /package/{esm2020 → esm2022}/lib/shared/components/index.mjs +0 -0
  883. /package/{esm2020 → esm2022}/lib/shared/components/loading-spinner/index.mjs +0 -0
  884. /package/{esm2020 → esm2022}/lib/shared/components/pagination/index.mjs +0 -0
  885. /package/{esm2020 → esm2022}/lib/shared/components/palette/address/index.mjs +0 -0
  886. /package/{esm2020 → esm2022}/lib/shared/components/palette/base-field/index.mjs +0 -0
  887. /package/{esm2020 → esm2022}/lib/shared/components/palette/base-field/palette-context.enum.mjs +0 -0
  888. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/components/index.mjs +0 -0
  889. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu-item.model.mjs +0 -0
  890. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/components/shared/index.mjs +0 -0
  891. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/index.mjs +0 -0
  892. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.mjs +0 -0
  893. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/components/index.mjs +0 -0
  894. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.mjs +0 -0
  895. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/case-flag-state.model.mjs +0 -0
  896. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/case-flag.model.mjs +0 -0
  897. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/index.mjs +0 -0
  898. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/language.model.mjs +0 -0
  899. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.mjs +0 -0
  900. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.mjs +0 -0
  901. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.mjs +0 -0
  902. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.mjs +0 -0
  903. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.mjs +0 -0
  904. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.mjs +0 -0
  905. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-summary-list-display-mode.enum.mjs +0 -0
  906. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.mjs +0 -0
  907. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.mjs +0 -0
  908. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.mjs +0 -0
  909. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/index.mjs +0 -0
  910. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/search-language-interpreter-error-message.enum.mjs +0 -0
  911. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/search-language-interpreter-step.enum.mjs +0 -0
  912. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.mjs +0 -0
  913. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/select-flag-location-error-message.enum.mjs +0 -0
  914. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.mjs +0 -0
  915. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.mjs +0 -0
  916. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.mjs +0 -0
  917. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.mjs +0 -0
  918. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.mjs +0 -0
  919. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.mjs +0 -0
  920. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/index.mjs +0 -0
  921. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/pipes/index.mjs +0 -0
  922. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-link/index.mjs +0 -0
  923. /package/{esm2020 → esm2022}/lib/shared/components/palette/collection/index.mjs +0 -0
  924. /package/{esm2020 → esm2022}/lib/shared/components/palette/complex/index.mjs +0 -0
  925. /package/{esm2020 → esm2022}/lib/shared/components/palette/complex/sort-order.mjs +0 -0
  926. /package/{esm2020 → esm2022}/lib/shared/components/palette/date/index.mjs +0 -0
  927. /package/{esm2020 → esm2022}/lib/shared/components/palette/datetime-picker/datetime-picker-utils.mjs +0 -0
  928. /package/{esm2020 → esm2022}/lib/shared/components/palette/datetime-picker/index.mjs +0 -0
  929. /package/{esm2020 → esm2022}/lib/shared/components/palette/document/index.mjs +0 -0
  930. /package/{esm2020 → esm2022}/lib/shared/components/palette/dynamic-list/index.mjs +0 -0
  931. /package/{esm2020 → esm2022}/lib/shared/components/palette/dynamic-multi-select-list/index.mjs +0 -0
  932. /package/{esm2020 → esm2022}/lib/shared/components/palette/dynamic-radio-list/index.mjs +0 -0
  933. /package/{esm2020 → esm2022}/lib/shared/components/palette/email/index.mjs +0 -0
  934. /package/{esm2020 → esm2022}/lib/shared/components/palette/fixed-list/index.mjs +0 -0
  935. /package/{esm2020 → esm2022}/lib/shared/components/palette/fixed-radio-list/index.mjs +0 -0
  936. /package/{esm2020 → esm2022}/lib/shared/components/palette/history/event-log/index.mjs +0 -0
  937. /package/{esm2020 → esm2022}/lib/shared/components/palette/history/index.mjs +0 -0
  938. /package/{esm2020 → esm2022}/lib/shared/components/palette/index.mjs +0 -0
  939. /package/{esm2020 → esm2022}/lib/shared/components/palette/judicial-user/index.mjs +0 -0
  940. /package/{esm2020 → esm2022}/lib/shared/components/palette/label/index.mjs +0 -0
  941. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/components/index.mjs +0 -0
  942. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/domain/index.mjs +0 -0
  943. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/domain/linked-cases-state.model.mjs +0 -0
  944. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/enums/index.mjs +0 -0
  945. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/enums/write-linked-cases-field.enum.mjs +0 -0
  946. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/index.mjs +0 -0
  947. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/services/index.mjs +0 -0
  948. /package/{esm2020 → esm2022}/lib/shared/components/palette/markdown/index.mjs +0 -0
  949. /package/{esm2020 → esm2022}/lib/shared/components/palette/money-gbp/index.mjs +0 -0
  950. /package/{esm2020 → esm2022}/lib/shared/components/palette/multi-select-list/index.mjs +0 -0
  951. /package/{esm2020 → esm2022}/lib/shared/components/palette/number/index.mjs +0 -0
  952. /package/{esm2020 → esm2022}/lib/shared/components/palette/order-summary/index.mjs +0 -0
  953. /package/{esm2020 → esm2022}/lib/shared/components/palette/organisation/index.mjs +0 -0
  954. /package/{esm2020 → esm2022}/lib/shared/components/palette/payment/index.mjs +0 -0
  955. /package/{esm2020 → esm2022}/lib/shared/components/palette/phone-uk/index.mjs +0 -0
  956. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/__mocks__/index.mjs +0 -0
  957. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/components/index.mjs +0 -0
  958. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/index.mjs +0 -0
  959. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.mjs +0 -0
  960. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.mjs +0 -0
  961. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.mjs +0 -0
  962. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.mjs +0 -0
  963. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/index.mjs +0 -0
  964. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/case-queries-collection.model.mjs +0 -0
  965. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/index.mjs +0 -0
  966. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.mjs +0 -0
  967. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.mjs +0 -0
  968. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/query-create-context.enum.mjs +0 -0
  969. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.mjs +0 -0
  970. /package/{esm2020 → esm2022}/lib/shared/components/palette/text/index.mjs +0 -0
  971. /package/{esm2020 → esm2022}/lib/shared/components/palette/text-area/index.mjs +0 -0
  972. /package/{esm2020 → esm2022}/lib/shared/components/palette/utils/index.mjs +0 -0
  973. /package/{esm2020 → esm2022}/lib/shared/components/palette/waystopay/index.mjs +0 -0
  974. /package/{esm2020 → esm2022}/lib/shared/components/palette/yes-no/index.mjs +0 -0
  975. /package/{esm2020 → esm2022}/lib/shared/components/search-filters/domain/index.mjs +0 -0
  976. /package/{esm2020 → esm2022}/lib/shared/components/search-filters/index.mjs +0 -0
  977. /package/{esm2020 → esm2022}/lib/shared/components/search-result/index.mjs +0 -0
  978. /package/{esm2020 → esm2022}/lib/shared/components/workbasket-filters/index.mjs +0 -0
  979. /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/domain/index.mjs +0 -0
  980. /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/index.mjs +0 -0
  981. /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/services/condition-parser.service.mjs +0 -0
  982. /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/services/condition.peg.mjs +0 -0
  983. /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/services/index.mjs +0 -0
  984. /package/{esm2020 → esm2022}/lib/shared/directives/focus-element/index.mjs +0 -0
  985. /package/{esm2020 → esm2022}/lib/shared/directives/index.mjs +0 -0
  986. /package/{esm2020 → esm2022}/lib/shared/directives/substitutor/index.mjs +0 -0
  987. /package/{esm2020 → esm2022}/lib/shared/directives/substitutor/services/index.mjs +0 -0
  988. /package/{esm2020 → esm2022}/lib/shared/domain/activity/index.mjs +0 -0
  989. /package/{esm2020 → esm2022}/lib/shared/domain/addresses/index.mjs +0 -0
  990. /package/{esm2020 → esm2022}/lib/shared/domain/alert/alert-level.model.mjs +0 -0
  991. /package/{esm2020 → esm2022}/lib/shared/domain/alert/alert-status-params.model.mjs +0 -0
  992. /package/{esm2020 → esm2022}/lib/shared/domain/alert/index.mjs +0 -0
  993. /package/{esm2020 → esm2022}/lib/shared/domain/case-edit/case-edit.model.mjs +0 -0
  994. /package/{esm2020 → esm2022}/lib/shared/domain/case-edit/index.mjs +0 -0
  995. /package/{esm2020 → esm2022}/lib/shared/domain/case-file-view/case-file-view-sort-columns.enum.mjs +0 -0
  996. /package/{esm2020 → esm2022}/lib/shared/domain/case-file-view/document-tree-node/document-tree-node-type.model.mjs +0 -0
  997. /package/{esm2020 → esm2022}/lib/shared/domain/case-file-view/index.mjs +0 -0
  998. /package/{esm2020 → esm2022}/lib/shared/domain/case-flag/index.mjs +0 -0
  999. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/access-types.model.mjs +0 -0
  1000. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/case-view-event-ids.enum.mjs +0 -0
  1001. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/challenged-access-request.model.mjs +0 -0
  1002. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/index.mjs +0 -0
  1003. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/review-specific-access-request.model.mjs +0 -0
  1004. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/role-assignment-response.model.mjs +0 -0
  1005. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/role-request.model.mjs +0 -0
  1006. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/service-org-response.model.mjs +0 -0
  1007. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/specific-access-request.model.mjs +0 -0
  1008. /package/{esm2020 → esm2022}/lib/shared/domain/definition/display-context-enum.model.mjs +0 -0
  1009. /package/{esm2020 → esm2022}/lib/shared/domain/definition/field-type-enum.model.mjs +0 -0
  1010. /package/{esm2020 → esm2022}/lib/shared/domain/definition/index.mjs +0 -0
  1011. /package/{esm2020 → esm2022}/lib/shared/domain/document/index.mjs +0 -0
  1012. /package/{esm2020 → esm2022}/lib/shared/domain/error-message.model.mjs +0 -0
  1013. /package/{esm2020 → esm2022}/lib/shared/domain/http/index.mjs +0 -0
  1014. /package/{esm2020 → esm2022}/lib/shared/domain/index.mjs +0 -0
  1015. /package/{esm2020 → esm2022}/lib/shared/domain/jurisdiction/index.mjs +0 -0
  1016. /package/{esm2020 → esm2022}/lib/shared/domain/jurisdiction/judicial-user.model.mjs +0 -0
  1017. /package/{esm2020 → esm2022}/lib/shared/domain/order/index.mjs +0 -0
  1018. /package/{esm2020 → esm2022}/lib/shared/domain/order/orderable.model.mjs +0 -0
  1019. /package/{esm2020 → esm2022}/lib/shared/domain/organisation/index.mjs +0 -0
  1020. /package/{esm2020 → esm2022}/lib/shared/domain/organisation/simple-organisation.model.mjs +0 -0
  1021. /package/{esm2020 → esm2022}/lib/shared/domain/predicate.model.mjs +0 -0
  1022. /package/{esm2020 → esm2022}/lib/shared/domain/profile/index.mjs +0 -0
  1023. /package/{esm2020 → esm2022}/lib/shared/domain/search/index.mjs +0 -0
  1024. /package/{esm2020 → esm2022}/lib/shared/domain/search/sorting/search-result-view-item-comparator.mjs +0 -0
  1025. /package/{esm2020 → esm2022}/lib/shared/domain/sort-order.enum.mjs +0 -0
  1026. /package/{esm2020 → esm2022}/lib/shared/domain/user/user-details.model.mjs +0 -0
  1027. /package/{esm2020 → esm2022}/lib/shared/domain/user/user-info.model.mjs +0 -0
  1028. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/Task.mjs +0 -0
  1029. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/TaskPayload.mjs +0 -0
  1030. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/case-worker.model.mjs +0 -0
  1031. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/index.mjs +0 -0
  1032. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/judicial-worker.model.mjs +0 -0
  1033. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/task-response.model.mjs +0 -0
  1034. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/task-search-parameter.model.mjs +0 -0
  1035. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/wa-service-config.model.mjs +0 -0
  1036. /package/{esm2020 → esm2022}/lib/shared/domain/workbasket/index.mjs +0 -0
  1037. /package/{esm2020 → esm2022}/lib/shared/fixture/shared.test.fixture.mjs +0 -0
  1038. /package/{esm2020 → esm2022}/lib/shared/index.mjs +0 -0
  1039. /package/{esm2020 → esm2022}/lib/shared/pipes/case-reference/index.mjs +0 -0
  1040. /package/{esm2020 → esm2022}/lib/shared/pipes/case-title/index.mjs +0 -0
  1041. /package/{esm2020 → esm2022}/lib/shared/pipes/complex/index.mjs +0 -0
  1042. /package/{esm2020 → esm2022}/lib/shared/pipes/generic/index.mjs +0 -0
  1043. /package/{esm2020 → esm2022}/lib/shared/pipes/index.mjs +0 -0
  1044. /package/{esm2020 → esm2022}/lib/shared/pipes/link-cases-from-reason-code/index.mjs +0 -0
  1045. /package/{esm2020 → esm2022}/lib/shared/pipes/link-cases-reason-code/index.mjs +0 -0
  1046. /package/{esm2020 → esm2022}/lib/shared/services/activity/index.mjs +0 -0
  1047. /package/{esm2020 → esm2022}/lib/shared/services/addresses/address-parser.mjs +0 -0
  1048. /package/{esm2020 → esm2022}/lib/shared/services/addresses/address-type.enum.mjs +0 -0
  1049. /package/{esm2020 → esm2022}/lib/shared/services/addresses/index.mjs +0 -0
  1050. /package/{esm2020 → esm2022}/lib/shared/services/alert/index.mjs +0 -0
  1051. /package/{esm2020 → esm2022}/lib/shared/services/auth/index.mjs +0 -0
  1052. /package/{esm2020 → esm2022}/lib/shared/services/banners/index.mjs +0 -0
  1053. /package/{esm2020 → esm2022}/lib/shared/services/browser/index.mjs +0 -0
  1054. /package/{esm2020 → esm2022}/lib/shared/services/case-fields/index.mjs +0 -0
  1055. /package/{esm2020 → esm2022}/lib/shared/services/case-file-view/index.mjs +0 -0
  1056. /package/{esm2020 → esm2022}/lib/shared/services/case-flag/index.mjs +0 -0
  1057. /package/{esm2020 → esm2022}/lib/shared/services/case-flag/refdata-case-flag-type.enum.mjs +0 -0
  1058. /package/{esm2020 → esm2022}/lib/shared/services/definitions/index.mjs +0 -0
  1059. /package/{esm2020 → esm2022}/lib/shared/services/document-management/index.mjs +0 -0
  1060. /package/{esm2020 → esm2022}/lib/shared/services/draft/index.mjs +0 -0
  1061. /package/{esm2020 → esm2022}/lib/shared/services/error/index.mjs +0 -0
  1062. /package/{esm2020 → esm2022}/lib/shared/services/eventStatusService/index.mjs +0 -0
  1063. /package/{esm2020 → esm2022}/lib/shared/services/fields/index.mjs +0 -0
  1064. /package/{esm2020 → esm2022}/lib/shared/services/form/index.mjs +0 -0
  1065. /package/{esm2020 → esm2022}/lib/shared/services/http/index.mjs +0 -0
  1066. /package/{esm2020 → esm2022}/lib/shared/services/index.mjs +0 -0
  1067. /package/{esm2020 → esm2022}/lib/shared/services/jurisdiction/index.mjs +0 -0
  1068. /package/{esm2020 → esm2022}/lib/shared/services/loading/index.mjs +0 -0
  1069. /package/{esm2020 → esm2022}/lib/shared/services/navigation/index.mjs +0 -0
  1070. /package/{esm2020 → esm2022}/lib/shared/services/navigation/navigation-origin.model.mjs +0 -0
  1071. /package/{esm2020 → esm2022}/lib/shared/services/order/index.mjs +0 -0
  1072. /package/{esm2020 → esm2022}/lib/shared/services/organisation/index.mjs +0 -0
  1073. /package/{esm2020 → esm2022}/lib/shared/services/profile/index.mjs +0 -0
  1074. /package/{esm2020 → esm2022}/lib/shared/services/request/index.mjs +0 -0
  1075. /package/{esm2020 → esm2022}/lib/shared/services/router/index.mjs +0 -0
  1076. /package/{esm2020 → esm2022}/lib/shared/services/search/index.mjs +0 -0
  1077. /package/{esm2020 → esm2022}/lib/shared/services/session/index.mjs +0 -0
  1078. /package/{esm2020 → esm2022}/lib/shared/services/utils/retry/index.mjs +0 -0
  1079. /package/{esm2020 → esm2022}/lib/shared/services/window/index.mjs +0 -0
  1080. /package/{esm2020 → esm2022}/lib/shared/services/workbasket/index.mjs +0 -0
  1081. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
@@ -0,0 +1,704 @@
1
+ import { Component } from '@angular/core';
2
+ import { FormGroup } from '@angular/forms';
3
+ import { ActivatedRoute } from '@angular/router';
4
+ import { RpxTranslationService } from 'rpx-xui-translation';
5
+ import { CaseEditDataService } from '../../../commons/case-edit-data/case-edit-data.service';
6
+ import { FieldsUtils } from '../../../services/fields';
7
+ import { CaseFlagStateService } from '../../case-editor/services/case-flag-state.service';
8
+ import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component';
9
+ import { CaseFlagDisplayContextParameter, CaseFlagErrorMessage, CaseFlagFieldState, CaseFlagFormFields, CaseFlagStatus } from './enums';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/router";
12
+ import * as i2 from "../../../commons/case-edit-data/case-edit-data.service";
13
+ import * as i3 from "../../case-editor/services/case-flag-state.service";
14
+ import * as i4 from "rpx-xui-translation";
15
+ function WriteCaseFlagFieldComponent_div_0_div_4_Template(rf, ctx) { if (rf & 1) {
16
+ const _r6 = i0.ɵɵgetCurrentView();
17
+ i0.ɵɵelementStart(0, "div", 5)(1, "ul", 6)(2, "li")(3, "a", 7);
18
+ i0.ɵɵlistener("click", function WriteCaseFlagFieldComponent_div_0_div_4_Template_a_click_3_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const errorMessage_r4 = restoredCtx.$implicit; const ctx_r5 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r5.navigateToErrorElement(errorMessage_r4.fieldId)); });
19
+ i0.ɵɵtext(4);
20
+ i0.ɵɵpipe(5, "rpxTranslate");
21
+ i0.ɵɵelementEnd()()()();
22
+ } if (rf & 2) {
23
+ const errorMessage_r4 = ctx.$implicit;
24
+ i0.ɵɵadvance(4);
25
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 1, errorMessage_r4.description));
26
+ } }
27
+ function WriteCaseFlagFieldComponent_div_0_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "div", 2)(1, "h2", 3);
29
+ i0.ɵɵtext(2);
30
+ i0.ɵɵpipe(3, "rpxTranslate");
31
+ i0.ɵɵelementEnd();
32
+ i0.ɵɵtemplate(4, WriteCaseFlagFieldComponent_div_0_div_4_Template, 6, 3, "div", 4);
33
+ i0.ɵɵelementEnd();
34
+ } if (rf & 2) {
35
+ const ctx_r0 = i0.ɵɵnextContext();
36
+ i0.ɵɵadvance(2);
37
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 2, "There is a problem"), " ");
38
+ i0.ɵɵadvance(2);
39
+ i0.ɵɵproperty("ngForOf", ctx_r0.errorMessages);
40
+ } }
41
+ function WriteCaseFlagFieldComponent_div_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
42
+ const _r13 = i0.ɵɵgetCurrentView();
43
+ i0.ɵɵelementContainerStart(0);
44
+ i0.ɵɵelementStart(1, "ccd-select-flag-location", 11);
45
+ i0.ɵɵlistener("caseFlagStateEmitter", function WriteCaseFlagFieldComponent_div_1_ng_container_2_Template_ccd_select_flag_location_caseFlagStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r12.onCaseFlagStateEmitted($event)); });
46
+ i0.ɵɵelementEnd();
47
+ i0.ɵɵelementContainerEnd();
48
+ } if (rf & 2) {
49
+ const ctx_r7 = i0.ɵɵnextContext(2);
50
+ i0.ɵɵadvance(1);
51
+ i0.ɵɵproperty("formGroup", ctx_r7.caseFlagParentFormGroup)("flagsData", ctx_r7.flagsData)("isDisplayContextParameterExternal", ctx_r7.isDisplayContextParameterExternal);
52
+ } }
53
+ function WriteCaseFlagFieldComponent_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
54
+ const _r15 = i0.ɵɵgetCurrentView();
55
+ i0.ɵɵelementContainerStart(0);
56
+ i0.ɵɵelementStart(1, "ccd-select-flag-type", 12);
57
+ i0.ɵɵlistener("caseFlagStateEmitter", function WriteCaseFlagFieldComponent_div_1_ng_container_3_Template_ccd_select_flag_type_caseFlagStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r14.onCaseFlagStateEmitted($event)); })("flagCommentsOptionalEmitter", function WriteCaseFlagFieldComponent_div_1_ng_container_3_Template_ccd_select_flag_type_flagCommentsOptionalEmitter_1_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r16 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r16.onFlagCommentsOptionalEmitted($event)); });
58
+ i0.ɵɵelementEnd();
59
+ i0.ɵɵelementContainerEnd();
60
+ } if (rf & 2) {
61
+ const ctx_r8 = i0.ɵɵnextContext(2);
62
+ i0.ɵɵadvance(1);
63
+ i0.ɵɵproperty("formGroup", ctx_r8.caseFlagParentFormGroup)("jurisdiction", ctx_r8.jurisdiction)("caseTypeId", ctx_r8.caseTypeId)("hmctsServiceId", ctx_r8.hmctsServiceId)("isDisplayContextParameterExternal", ctx_r8.isDisplayContextParameterExternal)("isDisplayContextParameter2Point1Enabled", ctx_r8.isDisplayContextParameter2Point1Enabled)("selectedFlagsLocation", ctx_r8.selectedFlagsLocation);
64
+ } }
65
+ function WriteCaseFlagFieldComponent_div_1_ng_container_4_Template(rf, ctx) { if (rf & 1) {
66
+ const _r18 = i0.ɵɵgetCurrentView();
67
+ i0.ɵɵelementContainerStart(0);
68
+ i0.ɵɵelementStart(1, "ccd-search-language-interpreter", 13);
69
+ i0.ɵɵlistener("caseFlagStateEmitter", function WriteCaseFlagFieldComponent_div_1_ng_container_4_Template_ccd_search_language_interpreter_caseFlagStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r17.onCaseFlagStateEmitted($event)); });
70
+ i0.ɵɵelementEnd();
71
+ i0.ɵɵelementContainerEnd();
72
+ } if (rf & 2) {
73
+ const ctx_r9 = i0.ɵɵnextContext(2);
74
+ i0.ɵɵadvance(1);
75
+ i0.ɵɵproperty("formGroup", ctx_r9.caseFlagParentFormGroup)("flagType", ctx_r9.flagType);
76
+ } }
77
+ function WriteCaseFlagFieldComponent_div_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {
78
+ const _r20 = i0.ɵɵgetCurrentView();
79
+ i0.ɵɵelementContainerStart(0);
80
+ i0.ɵɵelementStart(1, "ccd-add-comments", 14);
81
+ i0.ɵɵlistener("caseFlagStateEmitter", function WriteCaseFlagFieldComponent_div_1_ng_container_5_Template_ccd_add_comments_caseFlagStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r19.onCaseFlagStateEmitted($event)); });
82
+ i0.ɵɵelementEnd();
83
+ i0.ɵɵelementContainerEnd();
84
+ } if (rf & 2) {
85
+ const ctx_r10 = i0.ɵɵnextContext(2);
86
+ i0.ɵɵadvance(1);
87
+ i0.ɵɵproperty("formGroup", ctx_r10.caseFlagParentFormGroup)("optional", ctx_r10.flagCommentsOptional)("isDisplayContextParameterExternal", ctx_r10.isDisplayContextParameterExternal)("isDisplayContextParameter2Point1Enabled", ctx_r10.isDisplayContextParameter2Point1Enabled);
88
+ } }
89
+ function WriteCaseFlagFieldComponent_div_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
90
+ const _r22 = i0.ɵɵgetCurrentView();
91
+ i0.ɵɵelementContainerStart(0);
92
+ i0.ɵɵelementStart(1, "ccd-confirm-flag-status", 15);
93
+ i0.ɵɵlistener("caseFlagStateEmitter", function WriteCaseFlagFieldComponent_div_1_ng_container_6_Template_ccd_confirm_flag_status_caseFlagStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.onCaseFlagStateEmitted($event)); });
94
+ i0.ɵɵelementEnd();
95
+ i0.ɵɵelementContainerEnd();
96
+ } if (rf & 2) {
97
+ const ctx_r11 = i0.ɵɵnextContext(2);
98
+ i0.ɵɵadvance(1);
99
+ i0.ɵɵproperty("formGroup", ctx_r11.caseFlagParentFormGroup)("defaultStatus", ctx_r11.flagType.defaultStatus);
100
+ } }
101
+ function WriteCaseFlagFieldComponent_div_1_Template(rf, ctx) { if (rf & 1) {
102
+ i0.ɵɵelementStart(0, "div", 8)(1, "div", 9);
103
+ i0.ɵɵtemplate(2, WriteCaseFlagFieldComponent_div_1_ng_container_2_Template, 2, 3, "ng-container", 10);
104
+ i0.ɵɵtemplate(3, WriteCaseFlagFieldComponent_div_1_ng_container_3_Template, 2, 7, "ng-container", 10);
105
+ i0.ɵɵtemplate(4, WriteCaseFlagFieldComponent_div_1_ng_container_4_Template, 2, 2, "ng-container", 10);
106
+ i0.ɵɵtemplate(5, WriteCaseFlagFieldComponent_div_1_ng_container_5_Template, 2, 4, "ng-container", 10);
107
+ i0.ɵɵtemplate(6, WriteCaseFlagFieldComponent_div_1_ng_container_6_Template, 2, 2, "ng-container", 10);
108
+ i0.ɵɵelementEnd()();
109
+ } if (rf & 2) {
110
+ const ctx_r1 = i0.ɵɵnextContext();
111
+ i0.ɵɵproperty("formGroup", ctx_r1.formGroup);
112
+ i0.ɵɵadvance(1);
113
+ i0.ɵɵproperty("ngSwitch", ctx_r1.fieldState);
114
+ i0.ɵɵadvance(1);
115
+ i0.ɵɵproperty("ngSwitchCase", ctx_r1.caseFlagFieldState.FLAG_LOCATION);
116
+ i0.ɵɵadvance(1);
117
+ i0.ɵɵproperty("ngSwitchCase", ctx_r1.caseFlagFieldState.FLAG_TYPE);
118
+ i0.ɵɵadvance(1);
119
+ i0.ɵɵproperty("ngSwitchCase", ctx_r1.caseFlagFieldState.FLAG_LANGUAGE_INTERPRETER);
120
+ i0.ɵɵadvance(1);
121
+ i0.ɵɵproperty("ngSwitchCase", ctx_r1.caseFlagFieldState.FLAG_COMMENTS);
122
+ i0.ɵɵadvance(1);
123
+ i0.ɵɵproperty("ngSwitchCase", ctx_r1.caseFlagFieldState.FLAG_STATUS);
124
+ } }
125
+ function WriteCaseFlagFieldComponent_div_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
126
+ const _r27 = i0.ɵɵgetCurrentView();
127
+ i0.ɵɵelementContainerStart(0);
128
+ i0.ɵɵelementStart(1, "ccd-manage-case-flags", 16);
129
+ i0.ɵɵlistener("caseFlagStateEmitter", function WriteCaseFlagFieldComponent_div_2_ng_container_2_Template_ccd_manage_case_flags_caseFlagStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r26.onCaseFlagStateEmitted($event)); });
130
+ i0.ɵɵelementEnd();
131
+ i0.ɵɵelementContainerEnd();
132
+ } if (rf & 2) {
133
+ const ctx_r23 = i0.ɵɵnextContext(2);
134
+ i0.ɵɵadvance(1);
135
+ i0.ɵɵproperty("formGroup", ctx_r23.caseFlagParentFormGroup)("flagsData", ctx_r23.flagsData)("caseTitle", ctx_r23.caseTitle)("displayContextParameter", ctx_r23.displayContextParameter);
136
+ } }
137
+ function WriteCaseFlagFieldComponent_div_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
138
+ const _r29 = i0.ɵɵgetCurrentView();
139
+ i0.ɵɵelementContainerStart(0);
140
+ i0.ɵɵelementStart(1, "ccd-update-flag", 17);
141
+ i0.ɵɵlistener("caseFlagStateEmitter", function WriteCaseFlagFieldComponent_div_2_ng_container_3_Template_ccd_update_flag_caseFlagStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.onCaseFlagStateEmitted($event)); });
142
+ i0.ɵɵelementEnd();
143
+ i0.ɵɵelementContainerEnd();
144
+ } if (rf & 2) {
145
+ const ctx_r24 = i0.ɵɵnextContext(2);
146
+ i0.ɵɵadvance(1);
147
+ i0.ɵɵproperty("formGroup", ctx_r24.caseFlagParentFormGroup)("displayContextParameter", ctx_r24.displayContextParameter);
148
+ } }
149
+ function WriteCaseFlagFieldComponent_div_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
150
+ const _r31 = i0.ɵɵgetCurrentView();
151
+ i0.ɵɵelementContainerStart(0);
152
+ i0.ɵɵelementStart(1, "ccd-update-flag-add-translation-form", 18);
153
+ i0.ɵɵlistener("caseFlagStateEmitter", function WriteCaseFlagFieldComponent_div_2_ng_container_4_Template_ccd_update_flag_add_translation_form_caseFlagStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r31); const ctx_r30 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r30.onCaseFlagStateEmitted($event)); });
154
+ i0.ɵɵelementEnd();
155
+ i0.ɵɵelementContainerEnd();
156
+ } if (rf & 2) {
157
+ const ctx_r25 = i0.ɵɵnextContext(2);
158
+ i0.ɵɵadvance(1);
159
+ i0.ɵɵproperty("formGroup", ctx_r25.caseFlagParentFormGroup);
160
+ } }
161
+ function WriteCaseFlagFieldComponent_div_2_Template(rf, ctx) { if (rf & 1) {
162
+ i0.ɵɵelementStart(0, "div", 8)(1, "div", 9);
163
+ i0.ɵɵtemplate(2, WriteCaseFlagFieldComponent_div_2_ng_container_2_Template, 2, 4, "ng-container", 10);
164
+ i0.ɵɵtemplate(3, WriteCaseFlagFieldComponent_div_2_ng_container_3_Template, 2, 2, "ng-container", 10);
165
+ i0.ɵɵtemplate(4, WriteCaseFlagFieldComponent_div_2_ng_container_4_Template, 2, 1, "ng-container", 10);
166
+ i0.ɵɵelementEnd()();
167
+ } if (rf & 2) {
168
+ const ctx_r2 = i0.ɵɵnextContext();
169
+ i0.ɵɵproperty("formGroup", ctx_r2.formGroup);
170
+ i0.ɵɵadvance(1);
171
+ i0.ɵɵproperty("ngSwitch", ctx_r2.fieldState);
172
+ i0.ɵɵadvance(1);
173
+ i0.ɵɵproperty("ngSwitchCase", ctx_r2.caseFlagFieldState.FLAG_MANAGE_CASE_FLAGS);
174
+ i0.ɵɵadvance(1);
175
+ i0.ɵɵproperty("ngSwitchCase", ctx_r2.caseFlagFieldState.FLAG_UPDATE);
176
+ i0.ɵɵadvance(1);
177
+ i0.ɵɵproperty("ngSwitchCase", ctx_r2.caseFlagFieldState.FLAG_UPDATE_WELSH_TRANSLATION);
178
+ } }
179
+ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
180
+ route;
181
+ caseEditDataService;
182
+ caseFlagStateService;
183
+ rpxTranslationService;
184
+ fieldState;
185
+ caseFlagFieldState = CaseFlagFieldState;
186
+ errorMessages = [];
187
+ flagsData;
188
+ selectedFlag;
189
+ caseFlagParentFormGroup;
190
+ flagCommentsOptional = false;
191
+ jurisdiction;
192
+ caseTypeId;
193
+ hmctsServiceId;
194
+ isDisplayContextParameterUpdate;
195
+ isDisplayContextParameterExternal;
196
+ isDisplayContextParameter2Point1Enabled;
197
+ caseTitle;
198
+ caseTitleSubscription;
199
+ displayContextParameter;
200
+ determinedLocation;
201
+ allCaseFlagStagesCompleted = false;
202
+ // Code for "Other" flag type as defined in Reference Data
203
+ otherFlagTypeCode = 'OT0001';
204
+ selectedManageCaseLocation = 'selectedManageCaseLocation';
205
+ caseNameMissing = 'Case name missing';
206
+ get flagType() {
207
+ return this.caseFlagParentFormGroup?.value.flagType;
208
+ }
209
+ get selectedFlagsLocation() {
210
+ return this.caseFlagParentFormGroup?.value.selectedLocation;
211
+ }
212
+ set selectedFlagsLocation(selectedLocation) {
213
+ if (this.caseFlagParentFormGroup) {
214
+ this.caseFlagParentFormGroup.value.selectedLocation = selectedLocation;
215
+ }
216
+ }
217
+ constructor(route, caseEditDataService, caseFlagStateService, rpxTranslationService) {
218
+ super();
219
+ this.route = route;
220
+ this.caseEditDataService = caseEditDataService;
221
+ this.caseFlagStateService = caseFlagStateService;
222
+ this.rpxTranslationService = rpxTranslationService;
223
+ }
224
+ ngOnInit() {
225
+ // If it is start of the journey or navigation from check your answers page then fieldStateToNavigate property
226
+ // in case flag state service will contain the field state to navigate based on create or manage journey
227
+ this.fieldState = this.caseFlagStateService.fieldStateToNavigate;
228
+ if (this.fieldState === undefined ||
229
+ this.fieldState === CaseFlagFieldState.FLAG_LOCATION ||
230
+ this.fieldState === CaseFlagFieldState.FLAG_MANAGE_CASE_FLAGS) {
231
+ const params = this.route.snapshot.params;
232
+ // Clear the form group, field state to navigate and set the page location
233
+ this.caseFlagStateService.resetCache(`../${params['eid']}/${params['page']}`);
234
+ }
235
+ // Reassign the form group from the case flag state service
236
+ this.caseFlagParentFormGroup = this.caseFlagStateService.formGroup;
237
+ // Clear form validation errors as a new page will be rendered based on field state
238
+ this.caseEditDataService.clearFormValidationErrors();
239
+ // Check for existing FlagLauncher control in parent and remove it - this is the only way to ensure its invalidity
240
+ // is set correctly at the start, when the component is reloaded and the control is re-registered. Otherwise, the
241
+ // validator state gets carried over
242
+ if (this.formGroup && this.formGroup.get(this.caseField.id)) {
243
+ this.formGroup.removeControl(this.caseField.id);
244
+ }
245
+ // From this point, this.formGroup refers to the FormGroup for the FlagLauncher field, not the parent FormGroup
246
+ this.formGroup = this.registerControl(new FormGroup({}, {
247
+ validators: (_) => {
248
+ if (!this.allCaseFlagStagesCompleted) {
249
+ // Return an error to mark the FormGroup as invalid if not all Case Flag stages have been completed
250
+ return { notAllCaseFlagStagesCompleted: true };
251
+ }
252
+ return null;
253
+ }
254
+ }), true);
255
+ // Get the case type ID from the CaseView object in the snapshot data (required for retrieving the available flag
256
+ // types for a case)
257
+ if (this.route.snapshot.data.case && this.route.snapshot.data.case.case_type) {
258
+ this.caseTypeId = this.route.snapshot.data.case.case_type.id;
259
+ // Get the jurisdiction (required for retrieving the available flag types if unable to determine using case type ID)
260
+ if (this.route.snapshot.data.case.case_type.jurisdiction) {
261
+ this.jurisdiction = this.route.snapshot.data.case.case_type.jurisdiction.id;
262
+ }
263
+ }
264
+ // Extract all flags-related data from the CaseEventTrigger object in the snapshot data
265
+ if (this.route.snapshot.data.eventTrigger) {
266
+ // Get the HMCTSServiceId from supplementary data, if it exists (required for retrieving the available flag types in
267
+ // the first instance, only falling back on case type ID or jurisdiction if it's not present)
268
+ if (this.route.snapshot.data.eventTrigger.supplementary_data
269
+ && this.route.snapshot.data.eventTrigger.supplementary_data.HMCTSServiceId) {
270
+ this.hmctsServiceId = this.route.snapshot.data.eventTrigger.supplementary_data.HMCTSServiceId;
271
+ }
272
+ if (this.route.snapshot.data.eventTrigger.case_fields) {
273
+ this.flagsData = (this.route.snapshot.data.eventTrigger.case_fields)
274
+ .reduce((flags, caseField) => FieldsUtils.extractFlagsDataFromCaseField(flags, caseField, caseField.id, caseField), []);
275
+ // Set displayContextParameter (to be passed as an input to ManageCaseFlagsComponent for setting correct title)
276
+ this.displayContextParameter =
277
+ this.setDisplayContextParameter(this.route.snapshot.data.eventTrigger.case_fields);
278
+ // Set boolean indicating the display_context_parameter is "update"
279
+ this.isDisplayContextParameterUpdate = this.setDisplayContextParameterUpdate(this.displayContextParameter);
280
+ // Set boolean indicating the display_context_parameter is "external"
281
+ this.isDisplayContextParameterExternal = this.setDisplayContextParameterExternal(this.displayContextParameter);
282
+ // Set boolean indicating the display_context_parameter is Case Flags v2.1 enabled
283
+ this.isDisplayContextParameter2Point1Enabled = this.setDisplayContextParameter2Point1Enabled(this.displayContextParameter);
284
+ // Set starting field state if fieldState not the right value
285
+ if (!this.fieldState) {
286
+ this.fieldState = this.isDisplayContextParameterUpdate ? CaseFlagFieldState.FLAG_MANAGE_CASE_FLAGS : CaseFlagFieldState.FLAG_LOCATION;
287
+ }
288
+ // Get case title, to be used by child components
289
+ this.caseTitleSubscription = this.caseEditDataService.caseTitle$.subscribe({
290
+ next: title => {
291
+ this.caseTitle = title?.length > 0 ? title : this.caseNameMissing;
292
+ }
293
+ });
294
+ }
295
+ }
296
+ }
297
+ setDisplayContextParameterUpdate(displayContextParameter) {
298
+ return displayContextParameter === CaseFlagDisplayContextParameter.UPDATE ||
299
+ displayContextParameter === CaseFlagDisplayContextParameter.UPDATE_EXTERNAL ||
300
+ displayContextParameter === CaseFlagDisplayContextParameter.UPDATE_2_POINT_1;
301
+ }
302
+ setDisplayContextParameterExternal(displayContextParameter) {
303
+ return displayContextParameter === CaseFlagDisplayContextParameter.CREATE_EXTERNAL ||
304
+ displayContextParameter === CaseFlagDisplayContextParameter.UPDATE_EXTERNAL;
305
+ }
306
+ setDisplayContextParameter2Point1Enabled(displayContextParameter) {
307
+ return displayContextParameter === CaseFlagDisplayContextParameter.CREATE_2_POINT_1 ||
308
+ displayContextParameter === CaseFlagDisplayContextParameter.UPDATE_2_POINT_1;
309
+ }
310
+ onCaseFlagStateEmitted(caseFlagState) {
311
+ this.caseEditDataService.clearFormValidationErrors();
312
+ this.errorMessages = caseFlagState.errorMessages;
313
+ this.selectedFlag = caseFlagState.selectedFlag;
314
+ // Validation succeeded; proceed to next state or final review stage ("Check your answers")
315
+ if (this.errorMessages.length === 0) {
316
+ if (this.canMoveToFinalReviewStage(caseFlagState)) {
317
+ this.moveToFinalReviewStage();
318
+ // Don't move to next state if current state is CaseFlagFieldState.FLAG_TYPE and the flag type is a parent - this
319
+ // means the user needs to select from the next set of flag types before they can move on
320
+ }
321
+ else if (!caseFlagState.isParentFlagType) {
322
+ // Proceed to next state
323
+ this.proceedToNextState();
324
+ }
325
+ }
326
+ }
327
+ canMoveToFinalReviewStage(caseFlagState) {
328
+ // If the journey is request support or manage support
329
+ // and the current state is either CaseFlagFieldState.FLAG_COMMENTS or CaseFlagFieldState.FLAG_UPDATE
330
+ // then move to final review stage
331
+ if (this.isDisplayContextParameterExternal) {
332
+ return caseFlagState.currentCaseFlagFieldState === CaseFlagFieldState.FLAG_COMMENTS ||
333
+ caseFlagState.currentCaseFlagFieldState === CaseFlagFieldState.FLAG_UPDATE;
334
+ }
335
+ // If the current state is one of:
336
+ // * CaseFlagFieldState.FLAG_STATUS AND Case Flags v2.1 is enabled
337
+ // * CaseFlagFieldState.FLAG_COMMENTS AND Case Flags v2.1 is not enabled
338
+ // * CaseFlagFieldState.FLAG_UPDATE and Welsh translation checkbox is not selected
339
+ // * CaseFlagFieldState.FLAG_UPDATE_WELSH_TRANSLATION
340
+ // then move to final review stage
341
+ return (caseFlagState.currentCaseFlagFieldState ===
342
+ CaseFlagFieldState.FLAG_STATUS && this.isDisplayContextParameter2Point1Enabled) ||
343
+ (caseFlagState.currentCaseFlagFieldState ===
344
+ CaseFlagFieldState.FLAG_COMMENTS && !this.isDisplayContextParameter2Point1Enabled) ||
345
+ (caseFlagState.currentCaseFlagFieldState === CaseFlagFieldState.FLAG_UPDATE &&
346
+ !this.caseFlagParentFormGroup.get(CaseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED)?.value) ||
347
+ caseFlagState.currentCaseFlagFieldState === CaseFlagFieldState.FLAG_UPDATE_WELSH_TRANSLATION;
348
+ }
349
+ proceedToNextState() {
350
+ if (!this.isAtFinalState()) {
351
+ // Skip the "language interpreter" state if current state is CaseFlagFieldState.FLAG_TYPE and the flag type doesn't
352
+ // have a "list of values" - currently, this is present only for those flag types that require language interpreter
353
+ // selection
354
+ if (this.fieldState === CaseFlagFieldState.FLAG_TYPE && !this.flagType?.listOfValues) {
355
+ this.fieldState = CaseFlagFieldState.FLAG_COMMENTS;
356
+ }
357
+ else {
358
+ this.fieldState++;
359
+ }
360
+ }
361
+ }
362
+ setFlagsCaseFieldValue() {
363
+ // tslint:disable-next-line: switch-default
364
+ switch (this.fieldState) {
365
+ case CaseFlagFieldState.FLAG_STATUS:
366
+ this.addFlagToCollection();
367
+ break;
368
+ case CaseFlagFieldState.FLAG_COMMENTS:
369
+ if (this.isDisplayContextParameterExternal || !this.isDisplayContextParameter2Point1Enabled) {
370
+ this.addFlagToCollection();
371
+ }
372
+ break;
373
+ case this.manageFlagFinalState:
374
+ this.updateFlagInCollection();
375
+ break;
376
+ }
377
+ }
378
+ addFlagToCollection() {
379
+ // Ensure no more than one new flag is being added at a time, by iterating through each Flags case field and removing
380
+ // any previous entry from the details array where that entry has no id (hence it is new - and there should be only
381
+ // one such entry). (This scenario occurs if the user repeats the Case Flag creation journey by using the "Change"
382
+ // link and selects either the same flag location as before or a different one.)
383
+ this.flagsData.forEach(instance => {
384
+ // Use the pathToFlagsFormGroup property for each Flags case field to drill down to the correct part of the
385
+ // CaseField value to remove the new value from
386
+ let value = instance.caseField?.value;
387
+ const pathToValue = instance.pathToFlagsFormGroup;
388
+ // Root-level Flags CaseFields don't have a dot-delimited path - just the CaseField ID itself - so don't drill down
389
+ if (pathToValue.indexOf('.') > -1) {
390
+ pathToValue.slice(pathToValue.indexOf('.') + 1).split('.').forEach(part => value = value[part]);
391
+ }
392
+ if (value?.details?.length > 0) {
393
+ const indexOfNewFlagDetail = value.details.findIndex(element => !element.hasOwnProperty('id'));
394
+ if (indexOfNewFlagDetail > -1) {
395
+ value.details.splice(indexOfNewFlagDetail, 1);
396
+ }
397
+ }
398
+ });
399
+ const formValues = this.caseFlagParentFormGroup?.value;
400
+ // Determine the correct location - internal or external - for the new flag. If returned as undefined, this
401
+ // indicates a configuration error with the external `Flags` object instance
402
+ this.determinedLocation =
403
+ this.determineLocationForFlag(!this.isDisplayContextParameterExternal, this.selectedFlagsLocation, formValues);
404
+ // Do not mutate this.selectedFlagsLocation; if this.selectedFlagsLocation becomes undefined,
405
+ // determineLocationForFlag() will no longer do anything when called with it - and the appropriate error message will
406
+ // not be redisplayed if the user clicks "Next" again on the "Add comments" page, after the error is first shown
407
+ if (this.determinedLocation) {
408
+ const path = this.determinedLocation.pathToFlagsFormGroup;
409
+ const flagDataRef = this.flagsData.find(item => item.pathToFlagsFormGroup === path);
410
+ let flagsCaseFieldValue = flagDataRef.caseField?.value;
411
+ // Use the pathToFlagsFormGroup property from the selected flag location to drill down to the correct part of the
412
+ // CaseField value to apply changes to
413
+ // Root-level Flags CaseFields don't have a dot-delimited path - just the CaseField ID itself - so don't drill down
414
+ if (path.indexOf('.') > -1) {
415
+ path.slice(path.indexOf('.') + 1).split('.').forEach(part => flagsCaseFieldValue = flagsCaseFieldValue[part]);
416
+ }
417
+ // If the CaseField for the selected flags location has no value, set it to an empty object so it can be populated
418
+ // with flag details
419
+ if (!flagsCaseFieldValue) {
420
+ flagDataRef.caseField.value = {};
421
+ flagsCaseFieldValue = flagDataRef.caseField.value;
422
+ }
423
+ // Create a details array if one does not exist
424
+ if (!flagsCaseFieldValue.hasOwnProperty('details')) {
425
+ flagsCaseFieldValue.details = [];
426
+ }
427
+ // Populate new FlagDetail instance and add to the Flags data within the CaseField instance of the selected flag
428
+ // location
429
+ flagsCaseFieldValue.details.push({ value: this.populateNewFlagDetailInstance() });
430
+ }
431
+ }
432
+ /**
433
+ * Determines the correct location (i.e. either the internal or external instance of a `Flags` object) for a new flag,
434
+ * according to the following:
435
+ *
436
+ * * Whether the user is internal or external (no effect for external users because they can access only the external
437
+ * instance)
438
+ * * The existence of two `Flags` objects - one internal, one external - linked by the same `groupId`;
439
+ * * For flags of type "Other", whether "only visible to HMCTS staff" has been selected or not ("Other" defaults to
440
+ * externally visible);
441
+ * * For all other flag types, the value of the `externallyAvailable` attribute.
442
+ *
443
+ * If the user is internal then the new flag should be assigned to the external `Flags` instance if:
444
+ * * Such an instance exists, AND
445
+ * * The flag type is "Other" and "only visible to HMCTS staff" was not selected, OR
446
+ * * The flag type is not "Other" and `externallyAvailable` is `true`.
447
+ *
448
+ * @param isInternalUser Whether the current user is internal or not
449
+ * @param selectedFlagsLocation The currently selected location for the new flag
450
+ * @param formValues All the values from the `caseFlagParentFormGroup`
451
+ * @returns The correctly determined location: either the internal or external location (if one exists) where a groupId
452
+ * is present; the original location otherwise. **Note:** If the external location is returned as undefined, this
453
+ * indicates a configuration error
454
+ */
455
+ determineLocationForFlag(isInternalUser, selectedFlagsLocation, formValues) {
456
+ if (isInternalUser && selectedFlagsLocation?.flags?.groupId) {
457
+ if ((formValues?.flagType?.flagCode === this.otherFlagTypeCode && !formValues?.flagIsVisibleInternallyOnly) ||
458
+ (formValues?.flagType?.flagCode !== this.otherFlagTypeCode && formValues?.flagType?.externallyAvailable)) {
459
+ // If necessary, find the corresponding flags object with the same groupId and external visibility (should be
460
+ // only one unless misconfigured)
461
+ const location = selectedFlagsLocation.flags.visibility?.toLowerCase() === 'external'
462
+ ? selectedFlagsLocation
463
+ : this.flagsData.filter((f) => f.flags?.groupId === selectedFlagsLocation.flags.groupId &&
464
+ f.flags?.visibility?.toLowerCase() === 'external')?.[0];
465
+ // If location is not truthy, set an error message and make caseFlagParentFormGroup invalid to prevent
466
+ // navigation to the summary page (by not triggering the submit event)
467
+ if (!location) {
468
+ this.errorMessages.push({
469
+ title: '',
470
+ description: CaseFlagErrorMessage.NO_EXTERNAL_FLAGS_COLLECTION
471
+ });
472
+ this.caseFlagParentFormGroup.setErrors({
473
+ noExternalCollection: true
474
+ });
475
+ }
476
+ return location;
477
+ }
478
+ else {
479
+ // If necessary, find the corresponding flags object with the same groupId and internal visibility (should be
480
+ // only one unless misconfigured); assumed to be internal if visibility attribute is null or undefined
481
+ const location = selectedFlagsLocation.flags.visibility?.toLowerCase() !== 'external'
482
+ ? selectedFlagsLocation
483
+ : this.flagsData.filter((f) => f.flags?.groupId === selectedFlagsLocation.flags.groupId &&
484
+ f.flags?.visibility?.toLowerCase() !== 'external')?.[0];
485
+ // If location is not truthy, set an error message and make caseFlagParentFormGroup invalid to prevent
486
+ // navigation to the summary page (by not triggering the submit event)
487
+ if (!location) {
488
+ this.errorMessages.push({
489
+ title: '',
490
+ description: CaseFlagErrorMessage.NO_INTERNAL_FLAGS_COLLECTION
491
+ });
492
+ this.caseFlagParentFormGroup.setErrors({
493
+ noInternalCollection: true
494
+ });
495
+ }
496
+ return location;
497
+ }
498
+ }
499
+ return selectedFlagsLocation;
500
+ }
501
+ updateFlagInCollection() {
502
+ // Ensure no more than one flag is being updated at a time, by iterating through each Flags case field and resetting
503
+ // the description, comments, status, and date/time modified (if present) for each entry in the details array, with
504
+ // original values from the corresponding formatted_value property. (This scenario occurs if the user repeats the
505
+ // Manage Case Flag journey by using the "Change" link and selects a different flag to update.)
506
+ this.flagsData.forEach(instance => {
507
+ // Use the pathToFlagsFormGroup property for each Flags case field to drill down to the correct part of the
508
+ // CaseField value for which to restore the original values
509
+ let value = instance.caseField?.value;
510
+ let formattedValue = instance.caseField?.formatted_value;
511
+ const pathToValue = instance.pathToFlagsFormGroup;
512
+ // Root-level Flags CaseFields don't have a dot-delimited path - just the CaseField ID itself - so don't drill down
513
+ if (pathToValue.indexOf('.') > -1) {
514
+ pathToValue.slice(pathToValue.indexOf('.') + 1).split('.').forEach(part => {
515
+ value = value[part];
516
+ if (formattedValue && FieldsUtils.isNonEmptyObject(formattedValue)) {
517
+ formattedValue = formattedValue[part];
518
+ }
519
+ });
520
+ }
521
+ if (value?.details?.length > 0 && formattedValue && FieldsUtils.isNonEmptyObject(formattedValue)) {
522
+ value.details.forEach(flagDetail => {
523
+ const originalFlagDetail = formattedValue.details?.find(detail => detail.id === flagDetail.id);
524
+ if (originalFlagDetail) {
525
+ flagDetail.value.otherDescription = originalFlagDetail.value?.otherDescription || null;
526
+ flagDetail.value.otherDescription_cy = originalFlagDetail.value?.otherDescription_cy || null;
527
+ flagDetail.value.flagComment = originalFlagDetail.value?.flagComment || null;
528
+ flagDetail.value.flagComment_cy = originalFlagDetail.value?.flagComment_cy || null;
529
+ flagDetail.value.flagUpdateComment = originalFlagDetail.value?.flagUpdateComment || null;
530
+ flagDetail.value.status = originalFlagDetail.value?.status;
531
+ flagDetail.value.dateTimeModified = originalFlagDetail.value?.dateTimeModified || null;
532
+ }
533
+ });
534
+ }
535
+ });
536
+ if (!this.selectedFlag) {
537
+ this.selectedFlag = this.formGroup.get(this.selectedManageCaseLocation).value;
538
+ }
539
+ let flagsCaseFieldValue = this.selectedFlag.caseField?.value;
540
+ // Use the pathToFlagsFormGroup property from the selected flag location to drill down to the correct part of the
541
+ // CaseField value to apply changes to
542
+ const path = this.selectedFlag.pathToFlagsFormGroup;
543
+ // Root-level Flags CaseFields don't have a dot-delimited path - just the CaseField ID itself - so don't drill down
544
+ if (path.indexOf('.') > -1) {
545
+ path.slice(path.indexOf('.') + 1).split('.').forEach(part => flagsCaseFieldValue = flagsCaseFieldValue[part]);
546
+ }
547
+ if (flagsCaseFieldValue) {
548
+ const flagDetailToUpdate = flagsCaseFieldValue.details?.find(detail => detail.id === this.selectedFlag.flagDetailDisplay?.flagDetail?.id);
549
+ if (flagDetailToUpdate) {
550
+ // Cache the *original* status of the flag before it is modified. This is needed if the user changes the flag status
551
+ // then decides to return to any part of the flag update journey. The ManageCaseFlagsComponent and UpdateFlagComponent
552
+ // should refer to a flag's original status, not the one set via the UI because this hasn't been persisted yet
553
+ this.selectedFlag.originalStatus = flagDetailToUpdate.value?.status;
554
+ // Update description fields only if flag type is "Other" (flag code OT0001); these fields apply only to that flag type
555
+ // If their FormControls don't exist, it means these fields weren't visited as part of the "Update Flag" journey, so do
556
+ // *not* update their values (otherwise they will become undefined)
557
+ if (flagDetailToUpdate.value?.flagCode === this.otherFlagTypeCode) {
558
+ if (this.caseFlagParentFormGroup.get(CaseFlagFormFields.OTHER_FLAG_DESCRIPTION)) {
559
+ flagDetailToUpdate.value.otherDescription = this.caseFlagParentFormGroup.get(CaseFlagFormFields.OTHER_FLAG_DESCRIPTION).value;
560
+ }
561
+ if (this.caseFlagParentFormGroup.get(CaseFlagFormFields.OTHER_FLAG_DESCRIPTION_WELSH)) {
562
+ flagDetailToUpdate.value.otherDescription_cy = this.caseFlagParentFormGroup.get(CaseFlagFormFields.OTHER_FLAG_DESCRIPTION_WELSH).value;
563
+ }
564
+ }
565
+ // Ensure that any comments entered with language set to Welsh do not end up in the English comments field
566
+ if (this.rpxTranslationService.language !== 'cy') {
567
+ flagDetailToUpdate.value.flagComment = this.caseFlagParentFormGroup.get(CaseFlagFormFields.COMMENTS)?.value;
568
+ }
569
+ // Populate from the *English* comments field if:
570
+ // * The Welsh comments field has no value (Welsh comments field acquires a value only when an HMCTS internal user has
571
+ // gone through the "add translation" step for Manage Case Flags), AND
572
+ // * The language is set to Welsh
573
+ // If the FormControl doesn't exist, it means this field wasn't visited as part of the "Update Flag" journey, so do
574
+ // *not* update its value (otherwise it will be overridden) - unless the user is external AND working in Welsh
575
+ if (this.caseFlagParentFormGroup.get(CaseFlagFormFields.COMMENTS_WELSH) || this.rpxTranslationService.language === 'cy') {
576
+ flagDetailToUpdate.value.flagComment_cy = this.caseFlagParentFormGroup.get(CaseFlagFormFields.COMMENTS_WELSH)?.value
577
+ ? this.caseFlagParentFormGroup.get(CaseFlagFormFields.COMMENTS_WELSH)?.value
578
+ : this.rpxTranslationService.language === 'cy'
579
+ ? this.caseFlagParentFormGroup.get(CaseFlagFormFields.COMMENTS)?.value
580
+ : null;
581
+ }
582
+ flagDetailToUpdate.value.flagUpdateComment = this.caseFlagParentFormGroup.get(CaseFlagFormFields.STATUS_CHANGE_REASON)?.value;
583
+ flagDetailToUpdate.value.status = CaseFlagStatus[this.caseFlagParentFormGroup.get(CaseFlagFormFields.STATUS)?.value];
584
+ flagDetailToUpdate.value.dateTimeModified = new Date().toISOString();
585
+ }
586
+ }
587
+ }
588
+ isAtFinalState() {
589
+ return this.isDisplayContextParameterUpdate
590
+ ? this.fieldState === this.manageFlagFinalState
591
+ : !this.isDisplayContextParameter2Point1Enabled
592
+ ? this.fieldState === CaseFlagFieldState.FLAG_COMMENTS
593
+ : this.fieldState === CaseFlagFieldState.FLAG_STATUS;
594
+ }
595
+ navigateToErrorElement(elementId) {
596
+ if (elementId) {
597
+ const htmlElement = document.getElementById(elementId);
598
+ if (htmlElement) {
599
+ htmlElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
600
+ htmlElement.focus();
601
+ }
602
+ }
603
+ }
604
+ onFlagCommentsOptionalEmitted(_) {
605
+ this.flagCommentsOptional = true;
606
+ }
607
+ populateNewFlagDetailInstance() {
608
+ const langSearchTerm = this.caseFlagParentFormGroup?.value['languageSearchTerm'];
609
+ const manualLangEntry = this.caseFlagParentFormGroup?.value['manualLanguageEntry'];
610
+ const flagType = this.caseFlagParentFormGroup?.value['flagType'];
611
+ const otherDesc = this.caseFlagParentFormGroup?.value['otherDescription'];
612
+ const formValues = this.caseFlagParentFormGroup?.value;
613
+ return {
614
+ name: this.flagType?.name,
615
+ name_cy: flagType?.name_cy,
616
+ // Currently, subTypeValue, subTypeValue_cy and subTypeKey are applicable only to language flag types
617
+ subTypeValue: langSearchTerm && this.rpxTranslationService.language === 'en'
618
+ ? langSearchTerm.value
619
+ : manualLangEntry && this.rpxTranslationService.language === 'en'
620
+ ? manualLangEntry
621
+ : null,
622
+ subTypeValue_cy: langSearchTerm && this.rpxTranslationService.language === 'cy'
623
+ ? langSearchTerm?.value_cy
624
+ : manualLangEntry && this.rpxTranslationService.language === 'cy'
625
+ ? manualLangEntry
626
+ : null,
627
+ // For user-entered (i.e. non-Reference Data) languages, there is no key
628
+ subTypeKey: langSearchTerm
629
+ ? langSearchTerm.key
630
+ : null,
631
+ otherDescription: flagType?.flagCode === this.otherFlagTypeCode &&
632
+ otherDesc && this.rpxTranslationService.language === 'en'
633
+ ? otherDesc
634
+ : null,
635
+ otherDescription_cy: flagType?.flagCode === this.otherFlagTypeCode &&
636
+ otherDesc && this.rpxTranslationService.language === 'cy'
637
+ ? otherDesc
638
+ : null,
639
+ flagComment: this.rpxTranslationService.language === 'en'
640
+ ? formValues?.flagComments
641
+ : null,
642
+ flagComment_cy: this.rpxTranslationService.language === 'cy'
643
+ ? formValues?.flagComments
644
+ : null,
645
+ flagUpdateComment: formValues?.statusReason,
646
+ dateTimeCreated: new Date().toISOString(),
647
+ path: flagType?.Path &&
648
+ flagType?.Path.map(pathValue => Object.assign({ id: null, value: pathValue })),
649
+ hearingRelevant: flagType?.hearingRelevant ? 'Yes' : 'No',
650
+ flagCode: flagType?.flagCode,
651
+ // Status should be set to whatever the default is for this flag type, if flag is being created by an external
652
+ // user, otherwise it should be set to "Active" if Case Flags v2.1 is NOT enabled, or the selected status if it is
653
+ status: this.isDisplayContextParameterExternal
654
+ ? flagType?.defaultStatus
655
+ : !this.isDisplayContextParameter2Point1Enabled
656
+ ? CaseFlagStatus.ACTIVE
657
+ : CaseFlagStatus[formValues?.selectedStatus],
658
+ availableExternally: flagType?.externallyAvailable ? 'Yes' : 'No'
659
+ };
660
+ }
661
+ moveToFinalReviewStage() {
662
+ this.setFlagsCaseFieldValue();
663
+ // Check that no errors have been set on caseFlagParentFormGroup (by determineLocationForFlag()); prevent moving to
664
+ // final review stage if errors exist
665
+ if (!this.caseFlagParentFormGroup.errors) {
666
+ // Clear the "notAllCaseFlagStagesCompleted" error
667
+ this.allCaseFlagStagesCompleted = true;
668
+ this.formGroup.updateValueAndValidity();
669
+ this.caseEditDataService.setTriggerSubmitEvent(true);
670
+ // Update this.selectedFlagsLocation with the correctly determined location, so the correct value is available to
671
+ // ReadCaseFlagFieldComponent when it initialises the Case Flag Summary page
672
+ this.selectedFlagsLocation = this.determinedLocation;
673
+ }
674
+ }
675
+ ngOnDestroy() {
676
+ // Reset the fieldstateToNavigate as the write journey completes at this point
677
+ this.caseFlagStateService.fieldStateToNavigate = undefined;
678
+ this.caseTitleSubscription?.unsubscribe();
679
+ }
680
+ get manageFlagFinalState() {
681
+ return this.caseFlagParentFormGroup.get(CaseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED)?.value
682
+ ? CaseFlagFieldState.FLAG_UPDATE_WELSH_TRANSLATION : CaseFlagFieldState.FLAG_UPDATE;
683
+ }
684
+ setDisplayContextParameter(caseFields) {
685
+ return caseFields.find(caseField => FieldsUtils.isCaseFieldOfType(caseField, ['FlagLauncher']))?.display_context_parameter;
686
+ }
687
+ static ɵfac = function WriteCaseFlagFieldComponent_Factory(t) { return new (t || WriteCaseFlagFieldComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.CaseEditDataService), i0.ɵɵdirectiveInject(i3.CaseFlagStateService), i0.ɵɵdirectiveInject(i4.RpxTranslationService)); };
688
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WriteCaseFlagFieldComponent, selectors: [["ccd-write-case-flag-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 3, consts: [["class", "govuk-error-summary", "aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 4, "ngIf"], ["class", "form-group", 3, "formGroup", 4, "ngIf"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], ["class", "govuk-error-summary__body", 4, "ngFor", "ngForOf"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [1, "validation-error", 3, "click"], [1, "form-group", 3, "formGroup"], [1, "govuk-form-group", 3, "ngSwitch"], [4, "ngSwitchCase"], [3, "formGroup", "flagsData", "isDisplayContextParameterExternal", "caseFlagStateEmitter"], [3, "formGroup", "jurisdiction", "caseTypeId", "hmctsServiceId", "isDisplayContextParameterExternal", "isDisplayContextParameter2Point1Enabled", "selectedFlagsLocation", "caseFlagStateEmitter", "flagCommentsOptionalEmitter"], [3, "formGroup", "flagType", "caseFlagStateEmitter"], [3, "formGroup", "optional", "isDisplayContextParameterExternal", "isDisplayContextParameter2Point1Enabled", "caseFlagStateEmitter"], [3, "formGroup", "defaultStatus", "caseFlagStateEmitter"], [3, "formGroup", "flagsData", "caseTitle", "displayContextParameter", "caseFlagStateEmitter"], [3, "formGroup", "displayContextParameter", "caseFlagStateEmitter"], [3, "formGroup", "caseFlagStateEmitter"]], template: function WriteCaseFlagFieldComponent_Template(rf, ctx) { if (rf & 1) {
689
+ i0.ɵɵtemplate(0, WriteCaseFlagFieldComponent_div_0_Template, 5, 4, "div", 0);
690
+ i0.ɵɵtemplate(1, WriteCaseFlagFieldComponent_div_1_Template, 7, 7, "div", 1);
691
+ i0.ɵɵtemplate(2, WriteCaseFlagFieldComponent_div_2_Template, 5, 5, "div", 1);
692
+ } if (rf & 2) {
693
+ i0.ɵɵproperty("ngIf", ctx.errorMessages.length > 0);
694
+ i0.ɵɵadvance(1);
695
+ i0.ɵɵproperty("ngIf", !ctx.isDisplayContextParameterUpdate);
696
+ i0.ɵɵadvance(1);
697
+ i0.ɵɵproperty("ngIf", ctx.isDisplayContextParameterUpdate);
698
+ } }, styles: [".validation-error[_ngcontent-%COMP%]{cursor:pointer;text-decoration:underline;color:#d4351c}"] });
699
+ }
700
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WriteCaseFlagFieldComponent, [{
701
+ type: Component,
702
+ args: [{ selector: 'ccd-write-case-flag-field', template: "<!-- Error message summary -->\n<div *ngIf=\"errorMessages.length > 0\" class=\"govuk-error-summary\" aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\" data-module=\"govuk-error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n {{'There is a problem' | rpxTranslate}}\n </h2>\n <div *ngFor=\"let errorMessage of errorMessages\" class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li>\n <a (click)=\"navigateToErrorElement(errorMessage.fieldId)\" class=\"validation-error\">{{errorMessage.description | rpxTranslate}}</a>\n </li>\n </ul>\n </div>\n</div>\n<div *ngIf=\"!isDisplayContextParameterUpdate\" class=\"form-group\" [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngSwitch]=\"fieldState\">\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_LOCATION\">\n <ccd-select-flag-location\n [formGroup]=\"caseFlagParentFormGroup\" [flagsData]=\"flagsData\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"\n [isDisplayContextParameterExternal]=\"isDisplayContextParameterExternal\"\n ></ccd-select-flag-location>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_TYPE\">\n <ccd-select-flag-type [formGroup]=\"caseFlagParentFormGroup\" [jurisdiction]=\"jurisdiction\" [caseTypeId]=\"caseTypeId\"\n [hmctsServiceId]=\"hmctsServiceId\" [isDisplayContextParameterExternal]=\"isDisplayContextParameterExternal\"\n [isDisplayContextParameter2Point1Enabled]=\"isDisplayContextParameter2Point1Enabled\"\n [selectedFlagsLocation]=\"selectedFlagsLocation\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"\n (flagCommentsOptionalEmitter)=\"onFlagCommentsOptionalEmitted($event)\"></ccd-select-flag-type>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_LANGUAGE_INTERPRETER\">\n <ccd-search-language-interpreter [formGroup]=\"caseFlagParentFormGroup\"\n [flagType]=\"flagType\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\">\n </ccd-search-language-interpreter>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_COMMENTS\">\n <ccd-add-comments [formGroup]=\"caseFlagParentFormGroup\" [optional]=\"flagCommentsOptional\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"\n [isDisplayContextParameterExternal]=\"isDisplayContextParameterExternal\"\n [isDisplayContextParameter2Point1Enabled]=\"isDisplayContextParameter2Point1Enabled\">\n </ccd-add-comments>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_STATUS\">\n <ccd-confirm-flag-status [formGroup]=\"caseFlagParentFormGroup\" [defaultStatus]=\"flagType.defaultStatus\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"></ccd-confirm-flag-status>\n </ng-container>\n </div>\n</div>\n<div *ngIf=\"isDisplayContextParameterUpdate\" class=\"form-group\" [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngSwitch]=\"fieldState\">\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_MANAGE_CASE_FLAGS\">\n <ccd-manage-case-flags [formGroup]=\"caseFlagParentFormGroup\" [flagsData]=\"flagsData\" [caseTitle]=\"caseTitle\"\n [displayContextParameter]=\"displayContextParameter\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"></ccd-manage-case-flags>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_UPDATE\">\n <ccd-update-flag [formGroup]=\"caseFlagParentFormGroup\"\n [displayContextParameter]=\"displayContextParameter\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"></ccd-update-flag>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_UPDATE_WELSH_TRANSLATION\">\n <ccd-update-flag-add-translation-form\n [formGroup]=\"caseFlagParentFormGroup\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"\n ></ccd-update-flag-add-translation-form>\n </ng-container>\n </div>\n</div>\n", styles: [".validation-error{cursor:pointer;text-decoration:underline;color:#d4351c}\n"] }]
703
+ }], function () { return [{ type: i1.ActivatedRoute }, { type: i2.CaseEditDataService }, { type: i3.CaseFlagStateService }, { type: i4.RpxTranslationService }]; }, null); })();
704
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY2FzZS1mbGFnLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmxhZy93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL3dyaXRlLWNhc2UtZmxhZy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUc3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFM0YsT0FBTyxFQUFFLCtCQUErQixFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7Ozs7SUNQdEksOEJBQWtGLFlBQUEsU0FBQSxXQUFBO0lBR3pFLDZPQUFTLGVBQUEsc0RBQTRDLENBQUEsSUFBQztJQUEwQixZQUEyQzs7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QjtZQVk5QixlQUFzQztZQUF0QywyREFBc0M7WUFvQ3RDLGVBQXFDO1lBQXJDLDBEQUFxQzs7O3VGRDlCOUIsMkJBQTJCO2NBTHZDLFNBQVM7MkJBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBScHhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdycHgteHVpLXRyYW5zbGF0aW9uJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FzZUVkaXREYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbnMvY2FzZS1lZGl0LWRhdGEvY2FzZS1lZGl0LWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBDYXNlRmllbGQsIEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBGbGFnVHlwZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLWZsYWcnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWVsZHMnO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcy9jYXNlLWZsYWctc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWZpZWxkL2Fic3RyYWN0LWZpZWxkLXdyaXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXNlRmxhZ1N0YXRlLCBGbGFnRGV0YWlsLCBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoLCBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoIH0gZnJvbSAnLi9kb21haW4nO1xuaW1wb3J0IHsgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlciwgQ2FzZUZsYWdFcnJvck1lc3NhZ2UsIENhc2VGbGFnRmllbGRTdGF0ZSwgQ2FzZUZsYWdGb3JtRmllbGRzLCBDYXNlRmxhZ1N0YXR1cyB9IGZyb20gJy4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtd3JpdGUtY2FzZS1mbGFnLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dyaXRlLWNhc2UtZmxhZy1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dyaXRlLWNhc2UtZmxhZy1maWVsZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlQ2FzZUZsYWdGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIGZpZWxkU3RhdGU6IG51bWJlcjtcbiAgcHVibGljIGNhc2VGbGFnRmllbGRTdGF0ZSA9IENhc2VGbGFnRmllbGRTdGF0ZTtcbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XG4gIHB1YmxpYyBmbGFnc0RhdGE6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGhbXTtcbiAgcHVibGljIHNlbGVjdGVkRmxhZzogRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aDtcbiAgcHVibGljIGNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBmbGFnQ29tbWVudHNPcHRpb25hbCA9IGZhbHNlO1xuICBwdWJsaWMganVyaXNkaWN0aW9uOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlVHlwZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBobWN0c1NlcnZpY2VJZDogc3RyaW5nO1xuICBwdWJsaWMgaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZTogYm9vbGVhbjtcbiAgcHVibGljIGlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbDogYm9vbGVhbjtcbiAgcHVibGljIGlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZDogYm9vbGVhbjtcbiAgcHVibGljIGNhc2VUaXRsZTogc3RyaW5nO1xuICBwdWJsaWMgY2FzZVRpdGxlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nO1xuICBwdWJsaWMgZGV0ZXJtaW5lZExvY2F0aW9uOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoO1xuICBwcml2YXRlIGFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkID0gZmFsc2U7XG4gIC8vIENvZGUgZm9yIFwiT3RoZXJcIiBmbGFnIHR5cGUgYXMgZGVmaW5lZCBpbiBSZWZlcmVuY2UgRGF0YVxuICBwcml2YXRlIHJlYWRvbmx5IG90aGVyRmxhZ1R5cGVDb2RlID0gJ09UMDAwMSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRNYW5hZ2VDYXNlTG9jYXRpb24gPSAnc2VsZWN0ZWRNYW5hZ2VDYXNlTG9jYXRpb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FzZU5hbWVNaXNzaW5nID0gJ0Nhc2UgbmFtZSBtaXNzaW5nJztcblxuICBwdWJsaWMgZ2V0IGZsYWdUeXBlKCk6IEZsYWdUeXBlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXA/LnZhbHVlLmZsYWdUeXBlO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZEZsYWdzTG9jYXRpb24oKTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwPy52YWx1ZS5zZWxlY3RlZExvY2F0aW9uO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZEZsYWdzTG9jYXRpb24oc2VsZWN0ZWRMb2NhdGlvbjogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cCkge1xuICAgICAgdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZS5zZWxlY3RlZExvY2F0aW9uID0gc2VsZWN0ZWRMb2NhdGlvbjtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFZGl0RGF0YVNlcnZpY2U6IENhc2VFZGl0RGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRmxhZ1N0YXRlU2VydmljZTogQ2FzZUZsYWdTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBycHhUcmFuc2xhdGlvblNlcnZpY2U6IFJweFRyYW5zbGF0aW9uU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIElmIGl0IGlzIHN0YXJ0IG9mIHRoZSBqb3VybmV5IG9yIG5hdmlnYXRpb24gZnJvbSBjaGVjayB5b3VyIGFuc3dlcnMgcGFnZSB0aGVuIGZpZWxkU3RhdGVUb05hdmlnYXRlIHByb3BlcnR5XG4gICAgLy8gaW4gY2FzZSBmbGFnIHN0YXRlIHNlcnZpY2Ugd2lsbCBjb250YWluIHRoZSBmaWVsZCBzdGF0ZSB0byBuYXZpZ2F0ZSBiYXNlZCBvbiBjcmVhdGUgb3IgbWFuYWdlIGpvdXJuZXlcbiAgICB0aGlzLmZpZWxkU3RhdGUgPSB0aGlzLmNhc2VGbGFnU3RhdGVTZXJ2aWNlLmZpZWxkU3RhdGVUb05hdmlnYXRlO1xuICAgIGlmICh0aGlzLmZpZWxkU3RhdGUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICB0aGlzLmZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OIHx8XG4gICAgICAgIHRoaXMuZmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTUFOQUdFX0NBU0VfRkxBR1MpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zO1xuICAgICAgLy8gQ2xlYXIgdGhlIGZvcm0gZ3JvdXAsIGZpZWxkIHN0YXRlIHRvIG5hdmlnYXRlIGFuZCBzZXQgdGhlIHBhZ2UgbG9jYXRpb25cbiAgICAgIHRoaXMuY2FzZUZsYWdTdGF0ZVNlcnZpY2UucmVzZXRDYWNoZShgLi4vJHtwYXJhbXNbJ2VpZCddfS8ke3BhcmFtc1sncGFnZSddfWApO1xuICAgIH1cbiAgICAvLyBSZWFzc2lnbiB0aGUgZm9ybSBncm91cCBmcm9tIHRoZSBjYXNlIGZsYWcgc3RhdGUgc2VydmljZVxuICAgIHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAgPSB0aGlzLmNhc2VGbGFnU3RhdGVTZXJ2aWNlLmZvcm1Hcm91cDtcbiAgICAvLyBDbGVhciBmb3JtIHZhbGlkYXRpb24gZXJyb3JzIGFzIGEgbmV3IHBhZ2Ugd2lsbCBiZSByZW5kZXJlZCBiYXNlZCBvbiBmaWVsZCBzdGF0ZVxuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jbGVhckZvcm1WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgLy8gQ2hlY2sgZm9yIGV4aXN0aW5nIEZsYWdMYXVuY2hlciBjb250cm9sIGluIHBhcmVudCBhbmQgcmVtb3ZlIGl0IC0gdGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZW5zdXJlIGl0cyBpbnZhbGlkaXR5XG4gICAgLy8gaXMgc2V0IGNvcnJlY3RseSBhdCB0aGUgc3RhcnQsIHdoZW4gdGhlIGNvbXBvbmVudCBpcyByZWxvYWRlZCBhbmQgdGhlIGNvbnRyb2wgaXMgcmUtcmVnaXN0ZXJlZC4gT3RoZXJ3aXNlLCB0aGVcbiAgICAvLyB2YWxpZGF0b3Igc3RhdGUgZ2V0cyBjYXJyaWVkIG92ZXJcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAgJiYgdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuY2FzZUZpZWxkLmlkKSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAucmVtb3ZlQ29udHJvbCh0aGlzLmNhc2VGaWVsZC5pZCk7XG4gICAgfVxuICAgIC8vIEZyb20gdGhpcyBwb2ludCwgdGhpcy5mb3JtR3JvdXAgcmVmZXJzIHRvIHRoZSBGb3JtR3JvdXAgZm9yIHRoZSBGbGFnTGF1bmNoZXIgZmllbGQsIG5vdCB0aGUgcGFyZW50IEZvcm1Hcm91cFxuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5yZWdpc3RlckNvbnRyb2wobmV3IEZvcm1Hcm91cCh7fSwge1xuICAgICAgdmFsaWRhdG9yczogKF86IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCA9PiB7XG4gICAgICAgIGlmICghdGhpcy5hbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZCkge1xuICAgICAgICAgIC8vIFJldHVybiBhbiBlcnJvciB0byBtYXJrIHRoZSBGb3JtR3JvdXAgYXMgaW52YWxpZCBpZiBub3QgYWxsIENhc2UgRmxhZyBzdGFnZXMgaGF2ZSBiZWVuIGNvbXBsZXRlZFxuICAgICAgICAgIHJldHVybiB7IG5vdEFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSksIHRydWUpIGFzIEZvcm1Hcm91cDtcblxuICAgIC8vIEdldCB0aGUgY2FzZSB0eXBlIElEIGZyb20gdGhlIENhc2VWaWV3IG9iamVjdCBpbiB0aGUgc25hcHNob3QgZGF0YSAocmVxdWlyZWQgZm9yIHJldHJpZXZpbmcgdGhlIGF2YWlsYWJsZSBmbGFnXG4gICAgLy8gdHlwZXMgZm9yIGEgY2FzZSlcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV90eXBlKSB7XG4gICAgICB0aGlzLmNhc2VUeXBlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuaWQ7XG4gICAgICAvLyBHZXQgdGhlIGp1cmlzZGljdGlvbiAocmVxdWlyZWQgZm9yIHJldHJpZXZpbmcgdGhlIGF2YWlsYWJsZSBmbGFnIHR5cGVzIGlmIHVuYWJsZSB0byBkZXRlcm1pbmUgdXNpbmcgY2FzZSB0eXBlIElEKVxuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24pIHtcbiAgICAgICAgdGhpcy5qdXJpc2RpY3Rpb24gPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBFeHRyYWN0IGFsbCBmbGFncy1yZWxhdGVkIGRhdGEgZnJvbSB0aGUgQ2FzZUV2ZW50VHJpZ2dlciBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGFcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlcikge1xuICAgICAgLy8gR2V0IHRoZSBITUNUU1NlcnZpY2VJZCBmcm9tIHN1cHBsZW1lbnRhcnkgZGF0YSwgaWYgaXQgZXhpc3RzIChyZXF1aXJlZCBmb3IgcmV0cmlldmluZyB0aGUgYXZhaWxhYmxlIGZsYWcgdHlwZXMgaW5cbiAgICAgIC8vIHRoZSBmaXJzdCBpbnN0YW5jZSwgb25seSBmYWxsaW5nIGJhY2sgb24gY2FzZSB0eXBlIElEIG9yIGp1cmlzZGljdGlvbiBpZiBpdCdzIG5vdCBwcmVzZW50KVxuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIuc3VwcGxlbWVudGFyeV9kYXRhXG4gICAgICAgICYmIHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIuc3VwcGxlbWVudGFyeV9kYXRhLkhNQ1RTU2VydmljZUlkKSB7XG4gICAgICAgIHRoaXMuaG1jdHNTZXJ2aWNlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZXZlbnRUcmlnZ2VyLnN1cHBsZW1lbnRhcnlfZGF0YS5ITUNUU1NlcnZpY2VJZDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpIHtcbiAgICAgICAgdGhpcy5mbGFnc0RhdGEgPSAoKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpIGFzIENhc2VGaWVsZFtdKVxuICAgICAgICAgIC5yZWR1Y2UoKGZsYWdzLCBjYXNlRmllbGQpID0+IEZpZWxkc1V0aWxzLmV4dHJhY3RGbGFnc0RhdGFGcm9tQ2FzZUZpZWxkKGZsYWdzLCBjYXNlRmllbGQsIGNhc2VGaWVsZC5pZCwgY2FzZUZpZWxkKSwgW10pO1xuXG4gICAgICAgIC8vIFNldCBkaXNwbGF5Q29udGV4dFBhcmFtZXRlciAodG8gYmUgcGFzc2VkIGFzIGFuIGlucHV0IHRvIE1hbmFnZUNhc2VGbGFnc0NvbXBvbmVudCBmb3Igc2V0dGluZyBjb3JyZWN0IHRpdGxlKVxuICAgICAgICB0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID1cbiAgICAgICAgICB0aGlzLnNldERpc3BsYXlDb250ZXh0UGFyYW1ldGVyKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMgYXMgQ2FzZUZpZWxkW10pO1xuXG4gICAgICAgIC8vIFNldCBib29sZWFuIGluZGljYXRpbmcgdGhlIGRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgaXMgXCJ1cGRhdGVcIlxuICAgICAgICB0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGUgPSB0aGlzLnNldERpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlKHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIpO1xuXG4gICAgICAgIC8vIFNldCBib29sZWFuIGluZGljYXRpbmcgdGhlIGRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgaXMgXCJleHRlcm5hbFwiXG4gICAgICAgIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsID0gdGhpcy5zZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsKHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIpO1xuXG4gICAgICAgIC8vIFNldCBib29sZWFuIGluZGljYXRpbmcgdGhlIGRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgaXMgQ2FzZSBGbGFncyB2Mi4xIGVuYWJsZWRcbiAgICAgICAgdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWQgPSB0aGlzLnNldERpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWQodGhpcy5kaXNwbGF5Q29udGV4dFBhcmFtZXRlcik7XG5cbiAgICAgICAgLy8gU2V0IHN0YXJ0aW5nIGZpZWxkIHN0YXRlIGlmIGZpZWxkU3RhdGUgbm90IHRoZSByaWdodCB2YWx1ZVxuICAgICAgICBpZiAoIXRoaXMuZmllbGRTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuZmllbGRTdGF0ZSA9IHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZSA/IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX01BTkFHRV9DQVNFX0ZMQUdTIDogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTE9DQVRJT047XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXQgY2FzZSB0aXRsZSwgdG8gYmUgdXNlZCBieSBjaGlsZCBjb21wb25lbnRzXG4gICAgICAgIHRoaXMuY2FzZVRpdGxlU3Vic2NyaXB0aW9uID0gdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNhc2VUaXRsZSQuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiB0aXRsZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhc2VUaXRsZSA9IHRpdGxlPy5sZW5ndGggPiAwID8gdGl0bGUgOiB0aGlzLmNhc2VOYW1lTWlzc2luZztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZShkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURSB8fFxuICAgICAgZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFX0VYVEVSTkFMIHx8XG4gICAgICBkaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9PT0gQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEVfMl9QT0lOVF8xO1xuICB9XG5cbiAgcHVibGljIHNldERpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWwoZGlzcGxheUNvbnRleHRQYXJhbWV0ZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9PT0gQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5DUkVBVEVfRVhURVJOQUwgfHxcbiAgICAgIGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV9FWFRFUk5BTDtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkKGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuQ1JFQVRFXzJfUE9JTlRfMSB8fFxuICAgICAgZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFXzJfUE9JTlRfMTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKGNhc2VGbGFnU3RhdGU6IENhc2VGbGFnU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuXG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gY2FzZUZsYWdTdGF0ZS5lcnJvck1lc3NhZ2VzO1xuICAgIHRoaXMuc2VsZWN0ZWRGbGFnID0gY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWc7XG5cbiAgICAvLyBWYWxpZGF0aW9uIHN1Y2NlZWRlZDsgcHJvY2VlZCB0byBuZXh0IHN0YXRlIG9yIGZpbmFsIHJldmlldyBzdGFnZSAoXCJDaGVjayB5b3VyIGFuc3dlcnNcIilcbiAgICBpZiAodGhpcy5lcnJvck1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKHRoaXMuY2FuTW92ZVRvRmluYWxSZXZpZXdTdGFnZShjYXNlRmxhZ1N0YXRlKSkge1xuICAgICAgICB0aGlzLm1vdmVUb0ZpbmFsUmV2aWV3U3RhZ2UoKTtcbiAgICAgICAgLy8gRG9uJ3QgbW92ZSB0byBuZXh0IHN0YXRlIGlmIGN1cnJlbnQgc3RhdGUgaXMgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSBhbmQgdGhlIGZsYWcgdHlwZSBpcyBhIHBhcmVudCAtIHRoaXNcbiAgICAgICAgLy8gbWVhbnMgdGhlIHVzZXIgbmVlZHMgdG8gc2VsZWN0IGZyb20gdGhlIG5leHQgc2V0IG9mIGZsYWcgdHlwZXMgYmVmb3JlIHRoZXkgY2FuIG1vdmUgb25cbiAgICAgIH0gZWxzZSBpZiAoIWNhc2VGbGFnU3RhdGUuaXNQYXJlbnRGbGFnVHlwZSkge1xuICAgICAgICAvLyBQcm9jZWVkIHRvIG5leHQgc3RhdGVcbiAgICAgICAgdGhpcy5wcm9jZWVkVG9OZXh0U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2FuTW92ZVRvRmluYWxSZXZpZXdTdGFnZShjYXNlRmxhZ1N0YXRlOiBDYXNlRmxhZ1N0YXRlKTogYm9vbGVhbiB7XG4gICAgLy8gSWYgdGhlIGpvdXJuZXkgaXMgcmVxdWVzdCBzdXBwb3J0IG9yIG1hbmFnZSBzdXBwb3J0XG4gICAgLy8gYW5kIHRoZSBjdXJyZW50IHN0YXRlIGlzIGVpdGhlciBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUyBvciBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEVcbiAgICAvLyB0aGVuIG1vdmUgdG8gZmluYWwgcmV2aWV3IHN0YWdlXG4gICAgaWYgKHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsKSB7XG4gICAgICByZXR1cm4gY2FzZUZsYWdTdGF0ZS5jdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUyB8fFxuICAgICAgICBjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURTtcbiAgICB9XG4gICAgLy8gSWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgb25lIG9mOlxuICAgIC8vICogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfU1RBVFVTIEFORCBDYXNlIEZsYWdzIHYyLjEgaXMgZW5hYmxlZFxuICAgIC8vICogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFMgQU5EIENhc2UgRmxhZ3MgdjIuMSBpcyBub3QgZW5hYmxlZFxuICAgIC8vICogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFIGFuZCBXZWxzaCB0cmFuc2xhdGlvbiBjaGVja2JveCBpcyBub3Qgc2VsZWN0ZWRcbiAgICAvLyAqIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURV9XRUxTSF9UUkFOU0xBVElPTlxuICAgIC8vIHRoZW4gbW92ZSB0byBmaW5hbCByZXZpZXcgc3RhZ2VcbiAgICByZXR1cm4gKGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT1cbiAgICAgIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1NUQVRVUyAmJiB0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZCkgfHxcbiAgICAgIChjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09XG4gICAgICAgIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTICYmICF0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZCkgfHxcbiAgICAgIChjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURSAmJlxuICAgICAgICAhdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLklTX1dFTFNIX1RSQU5TTEFUSU9OX05FRURFRCk/LnZhbHVlKSB8fFxuICAgICAgY2FzZUZsYWdTdGF0ZS5jdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEVfV0VMU0hfVFJBTlNMQVRJT047XG4gIH1cblxuICBwdWJsaWMgcHJvY2VlZFRvTmV4dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0F0RmluYWxTdGF0ZSgpKSB7XG4gICAgICAvLyBTa2lwIHRoZSBcImxhbmd1YWdlIGludGVycHJldGVyXCIgc3RhdGUgaWYgY3VycmVudCBzdGF0ZSBpcyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFIGFuZCB0aGUgZmxhZyB0eXBlIGRvZXNuJ3RcbiAgICAgIC8vIGhhdmUgYSBcImxpc3Qgb2YgdmFsdWVzXCIgLSBjdXJyZW50bHksIHRoaXMgaXMgcHJlc2VudCBvbmx5IGZvciB0aG9zZSBmbGFnIHR5cGVzIHRoYXQgcmVxdWlyZSBsYW5ndWFnZSBpbnRlcnByZXRlclxuICAgICAgLy8gc2VsZWN0aW9uXG4gICAgICBpZiAodGhpcy5maWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFICYmICF0aGlzLmZsYWdUeXBlPy5saXN0T2ZWYWx1ZXMpIHtcbiAgICAgICAgdGhpcy5maWVsZFN0YXRlID0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpZWxkU3RhdGUrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RmxhZ3NDYXNlRmllbGRWYWx1ZSgpOiB2b2lkIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHN3aXRjaC1kZWZhdWx0XG4gICAgc3dpdGNoICh0aGlzLmZpZWxkU3RhdGUpIHtcbiAgICAgIGNhc2UgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfU1RBVFVTOlxuICAgICAgICB0aGlzLmFkZEZsYWdUb0NvbGxlY3Rpb24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTOlxuICAgICAgICBpZiAodGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWwgfHwgIXRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy5hZGRGbGFnVG9Db2xsZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMubWFuYWdlRmxhZ0ZpbmFsU3RhdGU6XG4gICAgICAgIHRoaXMudXBkYXRlRmxhZ0luQ29sbGVjdGlvbigpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkRmxhZ1RvQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgbm8gbW9yZSB0aGFuIG9uZSBuZXcgZmxhZyBpcyBiZWluZyBhZGRlZCBhdCBhIHRpbWUsIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGVhY2ggRmxhZ3MgY2FzZSBmaWVsZCBhbmQgcmVtb3ZpbmdcbiAgICAvLyBhbnkgcHJldmlvdXMgZW50cnkgZnJvbSB0aGUgZGV0YWlscyBhcnJheSB3aGVyZSB0aGF0IGVudHJ5IGhhcyBubyBpZCAoaGVuY2UgaXQgaXMgbmV3IC0gYW5kIHRoZXJlIHNob3VsZCBiZSBvbmx5XG4gICAgLy8gb25lIHN1Y2ggZW50cnkpLiAoVGhpcyBzY2VuYXJpbyBvY2N1cnMgaWYgdGhlIHVzZXIgcmVwZWF0cyB0aGUgQ2FzZSBGbGFnIGNyZWF0aW9uIGpvdXJuZXkgYnkgdXNpbmcgdGhlIFwiQ2hhbmdlXCJcbiAgICAvLyBsaW5rIGFuZCBzZWxlY3RzIGVpdGhlciB0aGUgc2FtZSBmbGFnIGxvY2F0aW9uIGFzIGJlZm9yZSBvciBhIGRpZmZlcmVudCBvbmUuKVxuICAgIHRoaXMuZmxhZ3NEYXRhLmZvckVhY2goaW5zdGFuY2UgPT4ge1xuICAgICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmb3IgZWFjaCBGbGFncyBjYXNlIGZpZWxkIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAgIC8vIENhc2VGaWVsZCB2YWx1ZSB0byByZW1vdmUgdGhlIG5ldyB2YWx1ZSBmcm9tXG4gICAgICBsZXQgdmFsdWUgPSBpbnN0YW5jZS5jYXNlRmllbGQ/LnZhbHVlO1xuICAgICAgY29uc3QgcGF0aFRvVmFsdWUgPSBpbnN0YW5jZS5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAgIC8vIFJvb3QtbGV2ZWwgRmxhZ3MgQ2FzZUZpZWxkcyBkb24ndCBoYXZlIGEgZG90LWRlbGltaXRlZCBwYXRoIC0ganVzdCB0aGUgQ2FzZUZpZWxkIElEIGl0c2VsZiAtIHNvIGRvbid0IGRyaWxsIGRvd25cbiAgICAgIGlmIChwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgICBwYXRoVG9WYWx1ZS5zbGljZShwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiB2YWx1ZSA9IHZhbHVlW3BhcnRdKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZT8uZGV0YWlscz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBpbmRleE9mTmV3RmxhZ0RldGFpbCA9IHZhbHVlLmRldGFpbHMuZmluZEluZGV4KGVsZW1lbnQgPT4gIWVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2lkJykpO1xuICAgICAgICBpZiAoaW5kZXhPZk5ld0ZsYWdEZXRhaWwgPiAtMSkge1xuICAgICAgICAgIHZhbHVlLmRldGFpbHMuc3BsaWNlKGluZGV4T2ZOZXdGbGFnRGV0YWlsLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXA/LnZhbHVlO1xuICAgIC8vIERldGVybWluZSB0aGUgY29ycmVjdCBsb2NhdGlvbiAtIGludGVybmFsIG9yIGV4dGVybmFsIC0gZm9yIHRoZSBuZXcgZmxhZy4gSWYgcmV0dXJuZWQgYXMgdW5kZWZpbmVkLCB0aGlzXG4gICAgLy8gaW5kaWNhdGVzIGEgY29uZmlndXJhdGlvbiBlcnJvciB3aXRoIHRoZSBleHRlcm5hbCBgRmxhZ3NgIG9iamVjdCBpbnN0YW5jZVxuICAgIHRoaXMuZGV0ZXJtaW5lZExvY2F0aW9uID1cbiAgICAgIHRoaXMuZGV0ZXJtaW5lTG9jYXRpb25Gb3JGbGFnKCF0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbCwgdGhpcy5zZWxlY3RlZEZsYWdzTG9jYXRpb24sIGZvcm1WYWx1ZXMpO1xuICAgIC8vIERvIG5vdCBtdXRhdGUgdGhpcy5zZWxlY3RlZEZsYWdzTG9jYXRpb247IGlmIHRoaXMuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uIGJlY29tZXMgdW5kZWZpbmVkLFxuICAgIC8vIGRldGVybWluZUxvY2F0aW9uRm9yRmxhZygpIHdpbGwgbm8gbG9uZ2VyIGRvIGFueXRoaW5nIHdoZW4gY2FsbGVkIHdpdGggaXQgLSBhbmQgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2Ugd2lsbFxuICAgIC8vIG5vdCBiZSByZWRpc3BsYXllZCBpZiB0aGUgdXNlciBjbGlja3MgXCJOZXh0XCIgYWdhaW4gb24gdGhlIFwiQWRkIGNvbW1lbnRzXCIgcGFnZSwgYWZ0ZXIgdGhlIGVycm9yIGlzIGZpcnN0IHNob3duXG5cbiAgICBpZiAodGhpcy5kZXRlcm1pbmVkTG9jYXRpb24pIHtcbiAgICAgIGNvbnN0IHBhdGggPSB0aGlzLmRldGVybWluZWRMb2NhdGlvbi5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAgIGNvbnN0IGZsYWdEYXRhUmVmID0gdGhpcy5mbGFnc0RhdGEuZmluZChpdGVtID0+IGl0ZW0ucGF0aFRvRmxhZ3NGb3JtR3JvdXAgPT09IHBhdGgpO1xuICAgICAgbGV0IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSBmbGFnRGF0YVJlZi5jYXNlRmllbGQ/LnZhbHVlO1xuICAgICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmcm9tIHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAgIC8vIENhc2VGaWVsZCB2YWx1ZSB0byBhcHBseSBjaGFuZ2VzIHRvXG4gICAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgICBpZiAocGF0aC5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgICBwYXRoLnNsaWNlKHBhdGguaW5kZXhPZignLicpICsgMSkuc3BsaXQoJy4nKS5mb3JFYWNoKHBhcnQgPT4gZmxhZ3NDYXNlRmllbGRWYWx1ZSA9IGZsYWdzQ2FzZUZpZWxkVmFsdWVbcGFydF0pO1xuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIENhc2VGaWVsZCBmb3IgdGhlIHNlbGVjdGVkIGZsYWdzIGxvY2F0aW9uIGhhcyBubyB2YWx1ZSwgc2V0IGl0IHRvIGFuIGVtcHR5IG9iamVjdCBzbyBpdCBjYW4gYmUgcG9wdWxhdGVkXG4gICAgICAvLyB3aXRoIGZsYWcgZGV0YWlsc1xuICAgICAgaWYgKCFmbGFnc0Nhc2VGaWVsZFZhbHVlKSB7XG4gICAgICAgIGZsYWdEYXRhUmVmLmNhc2VGaWVsZC52YWx1ZSA9IHt9O1xuICAgICAgICBmbGFnc0Nhc2VGaWVsZFZhbHVlID0gZmxhZ0RhdGFSZWYuY2FzZUZpZWxkLnZhbHVlO1xuICAgICAgfVxuICAgICAgLy8gQ3JlYXRlIGEgZGV0YWlscyBhcnJheSBpZiBvbmUgZG9lcyBub3QgZXhpc3RcbiAgICAgIGlmICghZmxhZ3NDYXNlRmllbGRWYWx1ZS5oYXNPd25Qcm9wZXJ0eSgnZGV0YWlscycpKSB7XG4gICAgICAgIGZsYWdzQ2FzZUZpZWxkVmFsdWUuZGV0YWlscyA9IFtdO1xuICAgICAgfVxuICAgICAgLy8gUG9wdWxhdGUgbmV3IEZsYWdEZXRhaWwgaW5zdGFuY2UgYW5kIGFkZCB0byB0aGUgRmxhZ3MgZGF0YSB3aXRoaW4gdGhlIENhc2VGaWVsZCBpbnN0YW5jZSBvZiB0aGUgc2VsZWN0ZWQgZmxhZ1xuICAgICAgLy8gbG9jYXRpb25cbiAgICAgIGZsYWdzQ2FzZUZpZWxkVmFsdWUuZGV0YWlscy5wdXNoKHt2YWx1ZTogdGhpcy5wb3B1bGF0ZU5ld0ZsYWdEZXRhaWxJbnN0YW5jZSgpfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIGNvcnJlY3QgbG9jYXRpb24gKGkuZS4gZWl0aGVyIHRoZSBpbnRlcm5hbCBvciBleHRlcm5hbCBpbnN0YW5jZSBvZiBhIGBGbGFnc2Agb2JqZWN0KSBmb3IgYSBuZXcgZmxhZyxcbiAgICogYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmc6XG4gICAqXG4gICAqICogV2hldGhlciB0aGUgdXNlciBpcyBpbnRlcm5hbCBvciBleHRlcm5hbCAobm8gZWZmZWN0IGZvciBleHRlcm5hbCB1c2VycyBiZWNhdXNlIHRoZXkgY2FuIGFjY2VzcyBvbmx5IHRoZSBleHRlcm5hbFxuICAgKiBpbnN0YW5jZSlcbiAgICogKiBUaGUgZXhpc3RlbmNlIG9mIHR3byBgRmxhZ3NgIG9iamVjdHMgLSBvbmUgaW50ZXJuYWwsIG9uZSBleHRlcm5hbCAtIGxpbmtlZCBieSB0aGUgc2FtZSBgZ3JvdXBJZGA7XG4gICAqICogRm9yIGZsYWdzIG9mIHR5cGUgXCJPdGhlclwiLCB3aGV0aGVyIFwib25seSB2aXNpYmxlIHRvIEhNQ1RTIHN0YWZmXCIgaGFzIGJlZW4gc2VsZWN0ZWQgb3Igbm90IChcIk90aGVyXCIgZGVmYXVsdHMgdG9cbiAgICogZXh0ZXJuYWxseSB2aXNpYmxlKTtcbiAgICogKiBGb3IgYWxsIG90aGVyIGZsYWcgdHlwZXMsIHRoZSB2YWx1ZSBvZiB0aGUgYGV4dGVybmFsbHlBdmFpbGFibGVgIGF0dHJpYnV0ZS5cbiAgICpcbiAgICogSWYgdGhlIHVzZXIgaXMgaW50ZXJuYWwgdGhlbiB0aGUgbmV3IGZsYWcgc2hvdWxkIGJlIGFzc2lnbmVkIHRvIHRoZSBleHRlcm5hbCBgRmxhZ3NgIGluc3RhbmNlIGlmOlxuICAgKiAqIFN1Y2ggYW4gaW5zdGFuY2UgZXhpc3RzLCBBTkRcbiAgICogKiBUaGUgZmxhZyB0eXBlIGlzIFwiT3RoZXJcIiBhbmQgXCJvbmx5IHZpc2libGUgdG8gSE1DVFMgc3RhZmZcIiB3YXMgbm90IHNlbGVjdGVkLCBPUlxuICAgKiAqIFRoZSBmbGFnIHR5cGUgaXMgbm90IFwiT3RoZXJcIiBhbmQgYGV4dGVybmFsbHlBdmFpbGFibGVgIGlzIGB0cnVlYC5cbiAgICpcbiAgICogQHBhcmFtIGlzSW50ZXJuYWxVc2VyIFdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBpcyBpbnRlcm5hbCBvciBub3RcbiAgICogQHBhcmFtIHNlbGVjdGVkRmxhZ3NMb2NhdGlvbiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGxvY2F0aW9uIGZvciB0aGUgbmV3IGZsYWdcbiAgICogQHBhcmFtIGZvcm1WYWx1ZXMgQWxsIHRoZSB2YWx1ZXMgZnJvbSB0aGUgYGNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwYFxuICAgKiBAcmV0dXJucyBUaGUgY29ycmVjdGx5IGRldGVybWluZWQgbG9jYXRpb246IGVpdGhlciB0aGUgaW50ZXJuYWwgb3IgZXh0ZXJuYWwgbG9jYXRpb24gKGlmIG9uZSBleGlzdHMpIHdoZXJlIGEgZ3JvdXBJZFxuICAgKiBpcyBwcmVzZW50OyB0aGUgb3JpZ2luYWwgbG9jYXRpb24gb3RoZXJ3aXNlLiAqKk5vdGU6KiogSWYgdGhlIGV4dGVybmFsIGxvY2F0aW9uIGlzIHJldHVybmVkIGFzIHVuZGVmaW5lZCwgdGhpc1xuICAgKiBpbmRpY2F0ZXMgYSBjb25maWd1cmF0aW9uIGVycm9yXG4gICAqL1xuICBwdWJsaWMgZGV0ZXJtaW5lTG9jYXRpb25Gb3JGbGFnKGlzSW50ZXJuYWxVc2VyOiBib29sZWFuLCBzZWxlY3RlZEZsYWdzTG9jYXRpb246IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGgsXG4gICAgZm9ybVZhbHVlczogYW55KTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB7XG4gICAgICBpZiAoaXNJbnRlcm5hbFVzZXIgJiYgc2VsZWN0ZWRGbGFnc0xvY2F0aW9uPy5mbGFncz8uZ3JvdXBJZCkge1xuICAgICAgICBpZiAoKGZvcm1WYWx1ZXM/LmZsYWdUeXBlPy5mbGFnQ29kZSA9PT0gdGhpcy5vdGhlckZsYWdUeXBlQ29kZSAmJiAhZm9ybVZhbHVlcz8uZmxhZ0lzVmlzaWJsZUludGVybmFsbHlPbmx5KSB8fFxuICAgICAgICAgIChmb3JtVmFsdWVzPy5mbGFnVHlwZT8uZmxhZ0NvZGUgIT09IHRoaXMub3RoZXJGbGFnVHlwZUNvZGUgJiYgZm9ybVZhbHVlcz8uZmxhZ1R5cGU/LmV4dGVybmFsbHlBdmFpbGFibGUpKSB7XG4gICAgICAgICAgICAvLyBJZiBuZWNlc3NhcnksIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZ3Mgb2JqZWN0IHdpdGggdGhlIHNhbWUgZ3JvdXBJZCBhbmQgZXh0ZXJuYWwgdmlzaWJpbGl0eSAoc2hvdWxkIGJlXG4gICAgICAgICAgICAvLyBvbmx5IG9uZSB1bmxlc3MgbWlzY29uZmlndXJlZClcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gc2VsZWN0ZWRGbGFnc0xvY2F0aW9uLmZsYWdzLnZpc2liaWxpdHk/LnRvTG93ZXJDYXNlKCkgPT09ICdleHRlcm5hbCdcbiAgICAgICAgICAgICAgPyBzZWxlY3RlZEZsYWdzTG9jYXRpb25cbiAgICAgICAgICAgICAgOiB0aGlzLmZsYWdzRGF0YS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGYpID0+IGYuZmxhZ3M/Lmdyb3VwSWQgPT09IHNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5mbGFncy5ncm91cElkICYmXG4gICAgICAgICAgICAgICAgZi5mbGFncz8udmlzaWJpbGl0eT8udG9Mb3dlckNhc2UoKSA9PT0gJ2V4dGVybmFsJyk/LlswXTtcbiAgICAgICAgICAgIC8vIElmIGxvY2F0aW9uIGlzIG5vdCB0cnV0aHksIHNldCBhbiBlcnJvciBtZXNzYWdlIGFuZCBtYWtlIGNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwIGludmFsaWQgdG8gcHJldmVudFxuICAgICAgICAgICAgLy8gbmF2aWdhdGlvbiB0byB0aGUgc3VtbWFyeSBwYWdlIChieSBub3QgdHJpZ2dlcmluZyB0aGUgc3VibWl0IGV2ZW50KVxuICAgICAgICAgICAgaWYgKCFsb2NhdGlvbikge1xuICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBDYXNlRmxhZ0Vycm9yTWVzc2FnZS5OT19FWFRFUk5BTF9GTEFHU19DT0xMRUNUSU9OXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnNldEVycm9ycyh7XG4gICAgICAgICAgICAgICAgbm9FeHRlcm5hbENvbGxlY3Rpb246IHRydWVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbG9jYXRpb247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgbmVjZXNzYXJ5LCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIGZsYWdzIG9iamVjdCB3aXRoIHRoZSBzYW1lIGdyb3VwSWQgYW5kIGludGVybmFsIHZpc2liaWxpdHkgKHNob3VsZCBiZVxuICAgICAgICAgIC8vIG9ubHkgb25lIHVubGVzcyBtaXNjb25maWd1cmVkKTsgYXNzdW1lZCB0byBiZSBpbnRlcm5hbCBpZiB2aXNpYmlsaXR5IGF0dHJpYnV0ZSBpcyBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gc2VsZWN0ZWRGbGFnc0xvY2F0aW9uLmZsYWdzLnZpc2liaWxpdHk/LnRvTG93ZXJDYXNlKCkgIT09ICdleHRlcm5hbCdcbiAgICAgICAgICAgID8gc2VsZWN0ZWRGbGFnc0xvY2F0aW9uXG4gICAgICAgICAgICA6IHRoaXMuZmxhZ3NEYXRhLmZpbHRlcihcbiAgICAgICAgICAgICAgKGYpID0+IGYuZmxhZ3M/Lmdyb3VwSWQgPT09IHNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5mbGFncy5ncm91cElkICYmXG4gICAgICAgICAgICAgIGYuZmxhZ3M/LnZpc2liaWxpdHk/LnRvTG93ZXJDYXNlKCkgIT09ICdleHRlcm5hbCcpPy5bMF07XG4gICAgICAgICAgLy8gSWYgbG9jYXRpb24gaXMgbm90IHRydXRoeSwgc2V0IGFuIGVycm9yIG1lc3NhZ2UgYW5kIG1ha2UgY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAgaW52YWxpZCB0byBwcmV2ZW50XG4gICAgICAgICAgLy8gbmF2aWdhdGlvbiB0byB0aGUgc3VtbWFyeSBwYWdlIChieSBub3QgdHJpZ2dlcmluZyB0aGUgc3VibWl0IGV2ZW50KVxuICAgICAgICAgIGlmICghbG9jYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogQ2FzZUZsYWdFcnJvck1lc3NhZ2UuTk9fSU5URVJOQUxfRkxBR1NfQ09MTEVDVElPTlxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnNldEVycm9ycyh7XG4gICAgICAgICAgICAgIG5vSW50ZXJuYWxDb2xsZWN0aW9uOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGxvY2F0aW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VsZWN0ZWRGbGFnc0xvY2F0aW9uO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZsYWdJbkNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgLy8gRW5zdXJlIG5vIG1vcmUgdGhhbiBvbmUgZmxhZyBpcyBiZWluZyB1cGRhdGVkIGF0IGEgdGltZSwgYnkgaXRlcmF0aW5nIHRocm91Z2ggZWFjaCBGbGFncyBjYXNlIGZpZWxkIGFuZCByZXNldHRpbmdcbiAgICAvLyB0aGUgZGVzY3JpcHRpb24sIGNvbW1lbnRzLCBzdGF0dXMsIGFuZCBkYXRlL3RpbWUgbW9kaWZpZWQgKGlmIHByZXNlbnQpIGZvciBlYWNoIGVudHJ5IGluIHRoZSBkZXRhaWxzIGFycmF5LCB3aXRoXG4gICAgLy8gb3JpZ2luYWwgdmFsdWVzIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgZm9ybWF0dGVkX3ZhbHVlIHByb3BlcnR5LiAoVGhpcyBzY2VuYXJpbyBvY2N1cnMgaWYgdGhlIHVzZXIgcmVwZWF0cyB0aGVcbiAgICAvLyBNYW5hZ2UgQ2FzZSBGbGFnIGpvdXJuZXkgYnkgdXNpbmcgdGhlIFwiQ2hhbmdlXCIgbGluayBhbmQgc2VsZWN0cyBhIGRpZmZlcmVudCBmbGFnIHRvIHVwZGF0ZS4pXG4gICAgdGhpcy5mbGFnc0RhdGEuZm9yRWFjaChpbnN0YW5jZSA9PiB7XG4gICAgICAvLyBVc2UgdGhlIHBhdGhUb0ZsYWdzRm9ybUdyb3VwIHByb3BlcnR5IGZvciBlYWNoIEZsYWdzIGNhc2UgZmllbGQgdG8gZHJpbGwgZG93biB0byB0aGUgY29ycmVjdCBwYXJ0IG9mIHRoZVxuICAgICAgLy8gQ2FzZUZpZWxkIHZhbHVlIGZvciB3aGljaCB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCB2YWx1ZXNcbiAgICAgIGxldCB2YWx1ZSA9IGluc3RhbmNlLmNhc2VGaWVsZD8udmFsdWU7XG4gICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSBpbnN0YW5jZS5jYXNlRmllbGQ/LmZvcm1hdHRlZF92YWx1ZTtcbiAgICAgIGNvbnN0IHBhdGhUb1ZhbHVlID0gaW5zdGFuY2UucGF0aFRvRmxhZ3NGb3JtR3JvdXA7XG4gICAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgICBpZiAocGF0aFRvVmFsdWUuaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgICAgcGF0aFRvVmFsdWUuc2xpY2UocGF0aFRvVmFsdWUuaW5kZXhPZignLicpICsgMSkuc3BsaXQoJy4nKS5mb3JFYWNoKHBhcnQgPT4ge1xuICAgICAgICAgIHZhbHVlID0gdmFsdWVbcGFydF07XG4gICAgICAgICAgaWYgKGZvcm1hdHRlZFZhbHVlICYmIEZpZWxkc1V0aWxzLmlzTm9uRW1wdHlPYmplY3QoZm9ybWF0dGVkVmFsdWUpKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlW3BhcnRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWU/LmRldGFpbHM/Lmxlbmd0aCA+IDAgJiYgZm9ybWF0dGVkVmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChmb3JtYXR0ZWRWYWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZGV0YWlscy5mb3JFYWNoKGZsYWdEZXRhaWwgPT4ge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRmxhZ0RldGFpbCA9IGZvcm1hdHRlZFZhbHVlLmRldGFpbHM/LmZpbmQoZGV0YWlsID0+IGRldGFpbC5pZCA9PT0gZmxhZ0RldGFpbC5pZCk7XG4gICAgICAgICAgaWYgKG9yaWdpbmFsRmxhZ0RldGFpbCkge1xuICAgICAgICAgICAgZmxhZ0RldGFpbC52YWx1ZS5vdGhlckRlc2NyaXB0aW9uID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5vdGhlckRlc2NyaXB0aW9uIHx8IG51bGw7XG4gICAgICAgICAgICBmbGFnRGV0YWlsLnZhbHVlLm90aGVyRGVzY3JpcHRpb25fY3kgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/Lm90aGVyRGVzY3JpcHRpb25fY3kgfHwgbnVsbDtcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUuZmxhZ0NvbW1lbnQgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/LmZsYWdDb21tZW50IHx8IG51bGw7XG4gICAgICAgICAgICBmbGFnRGV0YWlsLnZhbHVlLmZsYWdDb21tZW50X2N5ID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5mbGFnQ29tbWVudF9jeSB8fCBudWxsO1xuICAgICAgICAgICAgZmxhZ0RldGFpbC52YWx1ZS5mbGFnVXBkYXRlQ29tbWVudCA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZT8uZmxhZ1VwZGF0ZUNvbW1lbnQgfHwgbnVsbDtcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUuc3RhdHVzID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5zdGF0dXM7XG4gICAgICAgICAgICBmbGFnRGV0YWlsLnZhbHVlLmRhdGVUaW1lTW9kaWZpZWQgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/LmRhdGVUaW1lTW9kaWZpZWQgfHwgbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghdGhpcy5zZWxlY3RlZEZsYWcpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGbGFnID0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuc2VsZWN0ZWRNYW5hZ2VDYXNlTG9jYXRpb24pLnZhbHVlIGFzIEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGg7XG4gICAgfVxuICAgIGxldCBmbGFnc0Nhc2VGaWVsZFZhbHVlID0gdGhpcy5zZWxlY3RlZEZsYWcuY2FzZUZpZWxkPy52YWx1ZTtcbiAgICAvLyBVc2UgdGhlIHBhdGhUb0ZsYWdzRm9ybUdyb3VwIHByb3BlcnR5IGZyb20gdGhlIHNlbGVjdGVkIGZsYWcgbG9jYXRpb24gdG8gZHJpbGwgZG93biB0byB0aGUgY29ycmVjdCBwYXJ0IG9mIHRoZVxuICAgIC8vIENhc2VGaWVsZCB2YWx1ZSB0byBhcHBseSBjaGFuZ2VzIHRvXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuc2VsZWN0ZWRGbGFnLnBhdGhUb0ZsYWdzRm9ybUdyb3VwO1xuICAgIC8vIFJvb3QtbGV2ZWwgRmxhZ3MgQ2FzZUZpZWxkcyBkb24ndCBoYXZlIGEgZG90LWRlbGltaXRlZCBwYXRoIC0ganVzdCB0aGUgQ2FzZUZpZWxkIElEIGl0c2VsZiAtIHNvIGRvbid0IGRyaWxsIGRvd25cbiAgICBpZiAocGF0aC5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgcGF0aC5zbGljZShwYXRoLmluZGV4T2YoJy4nKSArIDEpLnNwbGl0KCcuJykuZm9yRWFjaChwYXJ0ID0+IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSBmbGFnc0Nhc2VGaWVsZFZhbHVlW3BhcnRdKTtcbiAgICB9XG4gICAgaWYgKGZsYWdzQ2FzZUZpZWxkVmFsdWUpIHtcbiAgICAgIGNvbnN0IGZsYWdEZXRhaWxUb1VwZGF0ZSA9IGZsYWdzQ2FzZUZpZWxkVmFsdWUuZGV0YWlscz8uZmluZChcbiAgICAgICAgZGV0YWlsID0+IGRldGFpbC5pZCA9PT0gdGhpcy5zZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXk/LmZsYWdEZXRhaWw/LmlkKTtcbiAgICAgIGlmIChmbGFnRGV0YWlsVG9VcGRhdGUpIHtcbiAgICAgICAgLy8gQ2FjaGUgdGhlICpvcmlnaW5hbCogc3RhdHVzIG9mIHRoZSBmbGFnIGJlZm9yZSBpdCBpcyBtb2RpZmllZC4gVGhpcyBpcyBuZWVkZWQgaWYgdGhlIHVzZXIgY2hhbmdlcyB0aGUgZmxhZyBzdGF0dXNcbiAgICAgICAgLy8gdGhlbiBkZWNpZGVzIHRvIHJldHVybiB0byBhbnkgcGFydCBvZiB0aGUgZmxhZyB1cGRhdGUgam91cm5leS4gVGhlIE1hbmFnZUNhc2VGbGFnc0NvbXBvbmVudCBhbmQgVXBkYXRlRmxhZ0NvbXBvbmVudFxuICAgICAgICAvLyBzaG91bGQgcmVmZXIgdG8gYSBmbGFnJ3Mgb3JpZ2luYWwgc3RhdHVzLCBub3QgdGhlIG9uZSBzZXQgdmlhIHRoZSBVSSBiZWNhdXNlIHRoaXMgaGFzbid0IGJlZW4gcGVyc2lzdGVkIHlldFxuICAgICAgICB0aGlzLnNlbGVjdGVkRmxhZy5vcmlnaW5hbFN0YXR1cyA9IGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZT8uc3RhdHVzO1xuICAgICAgICAvLyBVcGRhdGUgZGVzY3JpcHRpb24gZmllbGRzIG9ubHkgaWYgZmxhZyB0eXBlIGlzIFwiT3RoZXJcIiAoZmxhZyBjb2RlIE9UMDAwMSk7IHRoZXNlIGZpZWxkcyBhcHBseSBvbmx5IHRvIHRoYXQgZmxhZyB0eXBlXG4gICAgICAgIC8vIElmIHRoZWlyIEZvcm1Db250cm9scyBkb24ndCBleGlzdCwgaXQgbWVhbnMgdGhlc2UgZmllbGRzIHdlcmVuJ3QgdmlzaXRlZCBhcyBwYXJ0IG9mIHRoZSBcIlVwZGF0ZSBGbGFnXCIgam91cm5leSwgc28gZG9cbiAgICAgICAgLy8gKm5vdCogdXBkYXRlIHRoZWlyIHZhbHVlcyAob3RoZXJ3aXNlIHRoZXkgd2lsbCBiZWNvbWUgdW5kZWZpbmVkKVxuICAgICAgICBpZiAoZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlPy5mbGFnQ29kZSA9PT0gdGhpcy5vdGhlckZsYWdUeXBlQ29kZSkge1xuICAgICAgICAgIGlmICh0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuT1RIRVJfRkxBR19ERVNDUklQVElPTikpIHtcbiAgICAgICAgICAgIGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZS5vdGhlckRlc2NyaXB0aW9uID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgIENhc2VGbGFnRm9ybUZpZWxkcy5PVEhFUl9GTEFHX0RFU0NSSVBUSU9OKS52YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5PVEhFUl9GTEFHX0RFU0NSSVBUSU9OX1dFTFNIKSkge1xuICAgICAgICAgICAgZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlLm90aGVyRGVzY3JpcHRpb25fY3kgPSB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgQ2FzZUZsYWdGb3JtRmllbGRzLk9USEVSX0ZMQUdfREVTQ1JJUFRJT05fV0VMU0gpLnZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBFbnN1cmUgdGhhdCBhbnkgY29tbWVudHMgZW50ZXJlZCB3aXRoIGxhbmd1YWdlIHNldCB0byBXZWxzaCBkbyBub3QgZW5kIHVwIGluIHRoZSBFbmdsaXNoIGNvbW1lbnRzIGZpZWxkXG4gICAgICAgIGlmICh0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSAhPT0gJ2N5Jykge1xuICAgICAgICAgIGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZS5mbGFnQ29tbWVudCA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5DT01NRU5UUyk/LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFBvcHVsYXRlIGZyb20gdGhlICpFbmdsaXNoKiBjb21tZW50cyBmaWVsZCBpZjpcbiAgICAgICAgLy8gKiBUaGUgV2Vsc2ggY29tbWVudHMgZmllbGQgaGFzIG5vIHZhbHVlIChXZWxzaCBjb21tZW50cyBmaWVsZCBhY3F1aXJlcyBhIHZhbHVlIG9ubHkgd2hlbiBhbiBITUNUUyBpbnRlcm5hbCB1c2VyIGhhc1xuICAgICAgICAvLyBnb25lIHRocm91Z2ggdGhlIFwiYWRkIHRyYW5zbGF0aW9uXCIgc3RlcCBmb3IgTWFuYWdlIENhc2UgRmxhZ3MpLCBBTkRcbiAgICAgICAgLy8gKiBUaGUgbGFuZ3VhZ2UgaXMgc2V0IHRvIFdlbHNoXG4gICAgICAgIC8vIElmIHRoZSBGb3JtQ29udHJvbCBkb2Vzbid0IGV4aXN0LCBpdCBtZWFucyB0aGlzIGZpZWxkIHdhc24ndCB2aXNpdGVkIGFzIHBhcnQgb2YgdGhlIFwiVXBkYXRlIEZsYWdcIiBqb3VybmV5LCBzbyBkb1xuICAgICAgICAvLyAqbm90KiB1cGRhdGUgaXRzIHZhbHVlIChvdGhlcndpc2UgaXQgd2lsbCBiZSBvdmVycmlkZGVuKSAtIHVubGVzcyB0aGUgdXNlciBpcyBleHRlcm5hbCBBTkQgd29ya2luZyBpbiBXZWxzaFxuICAgICAgICBpZiAodGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTX1dFTFNIKSB8fCB0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2N5Jykge1xuICAgICAgICAgIGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZS5mbGFnQ29tbWVudF9jeSA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5DT01NRU5UU19XRUxTSCk/LnZhbHVlXG4gICAgICAgICAgPyB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFNfV0VMU0gpPy52YWx1ZVxuICAgICAgICAgIDogdGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgPT09ICdjeSdcbiAgICAgICAgICAgID8gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTKT8udmFsdWVcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWUuZmxhZ1VwZGF0ZUNvbW1lbnQgPSB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTX0NIQU5HRV9SRUFTT04pPy52YWx1ZTtcbiAgICAgICAgZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlLnN0YXR1cyA9IENhc2VGbGFnU3RhdHVzW3RoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVMpPy52YWx1ZV07XG4gICAgICAgIGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZS5kYXRlVGltZU1vZGlmaWVkID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0F0RmluYWxTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlXG4gICAgICA/IHRoaXMuZmllbGRTdGF0ZSA9PT0gdGhpcy5tYW5hZ2VGbGFnRmluYWxTdGF0ZVxuICAgICAgOiAhdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWRcbiAgICAgICAgPyB0aGlzLmZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTXG4gICAgICAgIDogdGhpcy5maWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19TVEFUVVM7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb0Vycm9yRWxlbWVudChlbGVtZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50SWQpIHtcbiAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTtcbiAgICAgIGlmIChodG1sRWxlbWVudCkge1xuICAgICAgICBodG1sRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgICAgICBodG1sRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkZsYWdDb21tZW50c09wdGlvbmFsRW1pdHRlZChfOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZsYWdDb21tZW50c09wdGlvbmFsID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBwb3B1bGF0ZU5ld0ZsYWdEZXRhaWxJbnN0YW5jZSgpOiBGbGFnRGV0YWlsIHtcbiAgICBjb25zdCBsYW5nU2VhcmNoVGVybSA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXA/LnZhbHVlWydsYW5ndWFnZVNlYXJjaFRlcm0nXTtcbiAgICBjb25zdCBtYW51YWxMYW5nRW50cnkgPSB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwPy52YWx1ZVsnbWFudWFsTGFuZ3VhZ2VFbnRyeSddO1xuICAgIGNvbnN0IGZsYWdUeXBlID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cD8udmFsdWVbJ2ZsYWdUeXBlJ107XG4gICAgY29uc3Qgb3RoZXJEZXNjID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cD8udmFsdWVbJ290aGVyRGVzY3JpcHRpb24nXTtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cD8udmFsdWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMuZmxhZ1R5cGU/Lm5hbWUsXG4gICAgICBuYW1lX2N5OiBmbGFnVHlwZT8ubmFtZV9jeSxcbiAgICAgIC8vIEN1cnJlbnRseSwgc3ViVHlwZVZhbHVlLCBzdWJUeXBlVmFsdWVfY3kgYW5kIHN1YlR5cGVLZXkgYXJlIGFwcGxpY2FibGUgb25seSB0byBsYW5ndWFnZSBmbGFnIHR5cGVzXG4gICAgICBzdWJUeXBlVmFsdWU6IGxhbmdTZWFyY2hUZXJtICYmIHRoaXMucnB4VHJhbnNsYXRpb25TZXJ2aWNlLmxhbmd1YWdlID09PSAnZW4nXG4gICAgICAgID8gbGFuZ1NlYXJjaFRlcm0udmFsdWVcbiAgICAgICAgOiBtYW51YWxMYW5nRW50cnkgJiYgdGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgPT09ICdlbidcbiAgICAgICAgICA/IG1hbnVhbExhbmdFbnRyeVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIHN1YlR5cGVWYWx1ZV9jeTogbGFuZ1NlYXJjaFRlcm0gJiYgdGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgPT09ICdjeSdcbiAgICAgID8gbGFuZ1NlYXJjaFRlcm0/LnZhbHVlX2N5XG4gICAgICA6IG1hbnVhbExhbmdFbnRyeSAmJiB0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2N5J1xuICAgICAgICA/IG1hbnVhbExhbmdFbnRyeVxuICAgICAgICA6IG51bGwsXG4gICAgICAvLyBGb3IgdXNlci1lbnRlcmVkIChpLmUuIG5vbi1SZWZlcmVuY2UgRGF0YSkgbGFuZ3VhZ2VzLCB0aGVyZSBpcyBubyBrZXlcbiAgICAgIHN1YlR5cGVLZXk6IGxhbmdTZWFyY2hUZXJtXG4gICAgICAgID8gbGFuZ1NlYXJjaFRlcm0ua2V5XG4gICAgICAgIDogbnVsbCxcbiAgICAgIG90aGVyRGVzY3JpcHRpb246IGZsYWdUeXBlPy5mbGFnQ29kZSA9PT0gdGhpcy5vdGhlckZsYWdUeXBlQ29kZSAmJlxuICAgICAgICBvdGhlckRlc2MgJiYgdGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgPT09ICdlbidcbiAgICAgICAgPyBvdGhlckRlc2NcbiAgICAgICAgICA6IG51bGwsXG4gICAgICBvdGhlckRlc2NyaXB0aW9uX2N5OiBmbGFnVHlwZT8uZmxhZ0NvZGUgPT09IHRoaXMub3RoZXJGbGFnVHlwZUNvZGUgJiZcbiAgICAgICAgb3RoZXJEZXNjICYmIHRoaXMucnB4VHJhbnNsYXRpb25TZXJ2aWNlLmxhbmd1YWdlID09PSAnY3knXG4gICAgICAgID8gb3RoZXJEZXNjXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGZsYWdDb21tZW50OiB0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2VuJ1xuICAgICAgICA/IGZvcm1WYWx1ZXM/LmZsYWdDb21tZW50c1xuICAgICAgICA6IG51bGwsXG4gICAgICBmbGFnQ29tbWVudF9jeTogdGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgPT09ICdjeSdcbiAgICAgICAgPyBmb3JtVmFsdWVzPy5mbGFnQ29tbWVudHNcbiAgICAgICAgOiBudWxsLFxuICAgICAgZmxhZ1VwZGF0ZUNvbW1lbnQ6IGZvcm1WYWx1ZXM/LnN0YXR1c1JlYXNvbixcbiAgICAgIGRhdGVUaW1lQ3JlYXRlZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgcGF0aDogZmxhZ1R5cGU/LlBhdGggJiZcbiAgICAgICAgZmxhZ1R5cGU/LlBhdGgubWFwKHBhdGhWYWx1ZSA9PiBPYmplY3QuYXNzaWduKHsgaWQ6IG51bGwsIHZhbHVlOiBwYXRoVmFsdWUgfSkpLFxuICAgICAgaGVhcmluZ1JlbGV2YW50OiBmbGFnVHlwZT8uaGVhcmluZ1JlbGV2YW50ID8gJ1llcycgOiAnTm8nLFxuICAgICAgZmxhZ0NvZGU6IGZsYWdUeXBlPy5mbGFnQ29kZSxcbiAgICAgIC8vIFN0YXR1cyBzaG91bGQgYmUgc2V0IHRvIHdoYXRldmVyIHRoZSBkZWZhdWx0IGlzIGZvciB0aGlzIGZsYWcgdHlwZSwgaWYgZmxhZyBpcyBiZWluZyBjcmVhdGVkIGJ5IGFuIGV4dGVybmFsXG4gICAgICAvLyB1c2VyLCBvdGhlcndpc2UgaXQgc2hvdWxkIGJlIHNldCB0byBcIkFjdGl2ZVwiIGlmIENhc2UgRmxhZ3MgdjIuMSBpcyBOT1QgZW5hYmxlZCwgb3IgdGhlIHNlbGVjdGVkIHN0YXR1cyBpZiBpdCBpc1xuICAgICAgc3RhdHVzOiB0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbFxuICAgICAgICA/IGZsYWdUeXBlPy5kZWZhdWx0U3RhdHVzXG4gICAgICAgIDogIXRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkXG4gICAgICAgICAgPyBDYXNlRmxhZ1N0YXR1cy5BQ1RJVkVcbiAgICAgICAgICA6IENhc2VGbGFnU3RhdHVzW2Zvcm1WYWx1ZXM/LnNlbGVjdGVkU3RhdHVzXSxcbiAgICAgIGF2YWlsYWJsZUV4dGVybmFsbHk6IGZsYWdUeXBlPy5leHRlcm5hbGx5QXZhaWxhYmxlID8gJ1llcycgOiAnTm8nXG4gICAgfSBhcyBGbGFnRGV0YWlsO1xuICB9XG5cbiAgcHVibGljIG1vdmVUb0ZpbmFsUmV2aWV3U3RhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGbGFnc0Nhc2VGaWVsZFZhbHVlKCk7XG4gICAgLy8gQ2hlY2sgdGhhdCBubyBlcnJvcnMgaGF2ZSBiZWVuIHNldCBvbiBjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cCAoYnkgZGV0ZXJtaW5lTG9jYXRpb25Gb3JGbGFnKCkpOyBwcmV2ZW50IG1vdmluZyB0b1xuICAgIC8vIGZpbmFsIHJldmlldyBzdGFnZSBpZiBlcnJvcnMgZXhpc3RcbiAgICBpZiAoIXRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZXJyb3JzKSB7XG4gICAgICAvLyBDbGVhciB0aGUgXCJub3RBbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZFwiIGVycm9yXG4gICAgICB0aGlzLmFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRUcmlnZ2VyU3VibWl0RXZlbnQodHJ1ZSk7XG4gICAgICAvLyBVcGRhdGUgdGhpcy5zZWxlY3RlZEZsYWdzTG9jYXRpb24gd2l0aCB0aGUgY29ycmVjdGx5IGRldGVybWluZWQgbG9jYXRpb24sIHNvIHRoZSBjb3JyZWN0IHZhbHVlIGlzIGF2YWlsYWJsZSB0b1xuICAgICAgLy8gUmVhZENhc2VGbGFnRmllbGRDb21wb25lbnQgd2hlbiBpdCBpbml0aWFsaXNlcyB0aGUgQ2FzZSBGbGFnIFN1bW1hcnkgcGFnZVxuICAgICAgdGhpcy5zZWxlY3RlZEZsYWdzTG9jYXRpb24gPSB0aGlzLmRldGVybWluZWRMb2NhdGlvbjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gUmVzZXQgdGhlIGZpZWxkc3RhdGVUb05hdmlnYXRlIGFzIHRoZSB3cml0ZSBqb3VybmV5IGNvbXBsZXRlcyBhdCB0aGlzIHBvaW50XG4gICAgdGhpcy5jYXNlRmxhZ1N0YXRlU2VydmljZS5maWVsZFN0YXRlVG9OYXZpZ2F0ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNhc2VUaXRsZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWFuYWdlRmxhZ0ZpbmFsU3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5JU19XRUxTSF9UUkFOU0xBVElPTl9ORUVERUQpPy52YWx1ZVxuICAgID8gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFX1dFTFNIX1RSQU5TTEFUSU9OIDogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFO1xuICB9XG5cbiAgcHVibGljIHNldERpc3BsYXlDb250ZXh0UGFyYW1ldGVyKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2FzZUZpZWxkcy5maW5kKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnRmxhZ0xhdW5jaGVyJ10pKT8uZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlcjtcbiAgfVxufVxuIiwiPCEtLSBFcnJvciBtZXNzYWdlIHN1bW1hcnkgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiIHJvbGU9XCJhbGVydFwiIHRhYmluZGV4PVwiLTFcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWVycm9yLXN1bW1hcnlcIj5cbiAgPGgyIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fdGl0bGVcIiBpZD1cImVycm9yLXN1bW1hcnktdGl0bGVcIj5cbiAgICB7eydUaGVyZSBpcyBhIHByb2JsZW0nIHwgcnB4VHJhbnNsYXRlfX1cbiAgPC9oMj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGVycm9yTWVzc2FnZXNcIiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIj5cbiAgICA8dWwgY2xhc3M9XCJnb3Z1ay1saXN0IGdvdnVrLWVycm9yLXN1bW1hcnlfX2xpc3RcIj5cbiAgICAgIDxsaT5cbiAgICAgICAgPGEgKGNsaWNrKT1cIm5hdmlnYXRlVG9FcnJvckVsZW1lbnQoZXJyb3JNZXNzYWdlLmZpZWxkSWQpXCIgY2xhc3M9XCJ2YWxpZGF0aW9uLWVycm9yXCI+e3tlcnJvck1lc3NhZ2UuZGVzY3JpcHRpb24gfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZVwiIGNsYXNzPVwiZm9ybS1ncm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nU3dpdGNoXT1cImZpZWxkU3RhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19MT0NBVElPTlwiPlxuICAgICAgPGNjZC1zZWxlY3QtZmxhZy1sb2NhdGlvblxuICAgICAgICBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCIgW2ZsYWdzRGF0YV09XCJmbGFnc0RhdGFcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCJcbiAgICAgICAgW2lzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbF09XCJpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWxcIlxuICAgICAgPjwvY2NkLXNlbGVjdC1mbGFnLWxvY2F0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1RZUEVcIj5cbiAgICAgIDxjY2Qtc2VsZWN0LWZsYWctdHlwZSBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCIgW2p1cmlzZGljdGlvbl09XCJqdXJpc2RpY3Rpb25cIiBbY2FzZVR5cGVJZF09XCJjYXNlVHlwZUlkXCJcbiAgICAgICAgW2htY3RzU2VydmljZUlkXT1cImhtY3RzU2VydmljZUlkXCIgW2lzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbF09XCJpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWxcIlxuICAgICAgICBbaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkXT1cImlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZFwiXG4gICAgICAgIFtzZWxlY3RlZEZsYWdzTG9jYXRpb25dPVwic2VsZWN0ZWRGbGFnc0xvY2F0aW9uXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiXG4gICAgICAgIChmbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZXIpPVwib25GbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLXNlbGVjdC1mbGFnLXR5cGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTEFOR1VBR0VfSU5URVJQUkVURVJcIj5cbiAgICAgIDxjY2Qtc2VhcmNoLWxhbmd1YWdlLWludGVycHJldGVyIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIlxuICAgICAgICBbZmxhZ1R5cGVdPVwiZmxhZ1R5cGVcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+XG4gICAgICA8L2NjZC1zZWFyY2gtbGFuZ3VhZ2UtaW50ZXJwcmV0ZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFNcIj5cbiAgICAgIDxjY2QtYWRkLWNvbW1lbnRzIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbb3B0aW9uYWxdPVwiZmxhZ0NvbW1lbnRzT3B0aW9uYWxcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCJcbiAgICAgICAgW2lzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbF09XCJpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWxcIlxuICAgICAgICBbaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkXT1cImlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZFwiPlxuICAgICAgPC9jY2QtYWRkLWNvbW1lbnRzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1NUQVRVU1wiPlxuICAgICAgPGNjZC1jb25maXJtLWZsYWctc3RhdHVzIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbZGVmYXVsdFN0YXR1c109XCJmbGFnVHlwZS5kZWZhdWx0U3RhdHVzXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLWNvbmZpcm0tZmxhZy1zdGF0dXM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZVwiIGNsYXNzPVwiZm9ybS1ncm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nU3dpdGNoXT1cImZpZWxkU3RhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19NQU5BR0VfQ0FTRV9GTEFHU1wiPlxuICAgICAgPGNjZC1tYW5hZ2UtY2FzZS1mbGFncyBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCIgW2ZsYWdzRGF0YV09XCJmbGFnc0RhdGFcIiBbY2FzZVRpdGxlXT1cImNhc2VUaXRsZVwiXG4gICAgICAgIFtkaXNwbGF5Q29udGV4dFBhcmFtZXRlcl09XCJkaXNwbGF5Q29udGV4dFBhcmFtZXRlclwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC1tYW5hZ2UtY2FzZS1mbGFncz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEVcIj5cbiAgICAgIDxjY2QtdXBkYXRlLWZsYWcgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiXG4gICAgICAgIFtkaXNwbGF5Q29udGV4dFBhcmFtZXRlcl09XCJkaXNwbGF5Q29udGV4dFBhcmFtZXRlclwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC11cGRhdGUtZmxhZz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEVfV0VMU0hfVFJBTlNMQVRJT05cIj5cbiAgICAgIDxjY2QtdXBkYXRlLWZsYWctYWRkLXRyYW5zbGF0aW9uLWZvcm1cbiAgICAgICAgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIlxuICAgICAgPjwvY2NkLXVwZGF0ZS1mbGFnLWFkZC10cmFuc2xhdGlvbi1mb3JtPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19