@hmcts/ccd-case-ui-toolkit 5.0.7-angular11-upgrade → 5.0.8-angular11-upgrade

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 (305) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +21811 -14307
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +2 -2
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/shared/components/case-editor/case-create/case-create.component.js +94 -0
  6. package/esm2015/lib/shared/components/case-editor/case-create/index.js +2 -0
  7. package/esm2015/lib/shared/components/case-editor/case-edit/case-edit.component.js +113 -0
  8. package/esm2015/lib/shared/components/case-editor/case-edit/index.js +2 -0
  9. package/esm2015/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.js +131 -0
  10. package/esm2015/lib/shared/components/case-editor/case-edit-confirm/index.js +2 -0
  11. package/esm2015/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.js +146 -0
  12. package/esm2015/lib/shared/components/case-editor/case-edit-form/index.js +2 -0
  13. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page-text.enum.js +11 -0
  14. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +654 -0
  15. package/esm2015/lib/shared/components/case-editor/case-edit-page/index.js +2 -0
  16. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +759 -0
  17. package/esm2015/lib/shared/components/case-editor/case-edit-submit/index.js +2 -0
  18. package/esm2015/lib/shared/components/case-editor/case-editor.module.js +185 -0
  19. package/esm2015/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.js +89 -0
  20. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.js +72 -0
  21. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.js +157 -0
  22. package/esm2015/lib/shared/components/case-editor/case-event-completion/index.js +4 -0
  23. package/esm2015/lib/shared/components/case-editor/case-progress/case-progress.component.js +85 -0
  24. package/esm2015/lib/shared/components/case-editor/case-progress/index.js +2 -0
  25. package/esm2015/lib/shared/components/case-editor/domain/event-completion-params.model.js +2 -0
  26. package/esm2015/lib/shared/components/case-editor/domain/event-completion-portal-types.model.js +6 -0
  27. package/esm2015/lib/shared/components/case-editor/editor.routing.js +31 -0
  28. package/esm2015/lib/shared/components/case-editor/index.js +13 -0
  29. package/esm2015/lib/shared/components/case-editor/services/case-edit-wizard.guard.js +92 -0
  30. package/esm2015/lib/shared/components/case-editor/services/convert-href-to-router.service.js +41 -0
  31. package/esm2015/lib/shared/components/case-editor/services/event-completion-state-machine.service.js +162 -0
  32. package/esm2015/lib/shared/components/case-editor/services/event-trigger.service.js +20 -0
  33. package/esm2015/lib/shared/components/case-editor/services/index.js +12 -0
  34. package/esm2015/lib/shared/components/case-editor/services/page-validation.service.js +50 -0
  35. package/esm2015/lib/shared/components/case-editor/services/wizard-factory.service.js +7 -0
  36. package/esm2015/lib/shared/components/case-history/case-history.component.js +264 -0
  37. package/esm2015/lib/shared/components/case-history/case-history.module.js +52 -0
  38. package/esm2015/lib/shared/components/case-history/domain/case-history.model.js +28 -0
  39. package/esm2015/lib/shared/components/case-history/index.js +3 -0
  40. package/esm2015/lib/shared/components/case-history/services/case-history.service.js +40 -0
  41. package/esm2015/lib/shared/components/case-timeline/case-timeline.component.js +118 -0
  42. package/esm2015/lib/shared/components/case-timeline/case-timeline.module.js +46 -0
  43. package/esm2015/lib/shared/components/case-timeline/index.js +3 -0
  44. package/esm2015/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.js +195 -0
  45. package/esm2015/lib/shared/components/case-viewer/case-basic-access-view/index.js +2 -0
  46. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.js +307 -0
  47. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/index.js +2 -0
  48. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.js +20 -0
  49. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/models/index.js +2 -0
  50. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.js +64 -0
  51. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-success/index.js +2 -0
  52. package/esm2015/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.js +120 -0
  53. package/esm2015/lib/shared/components/case-viewer/case-event-trigger/index.js +2 -0
  54. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +545 -0
  55. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/index.js +2 -0
  56. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.js +63 -0
  57. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-reject/index.js +2 -0
  58. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.js +258 -0
  59. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/index.js +2 -0
  60. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.js +18 -0
  61. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.js +2 -0
  62. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js +195 -0
  63. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/index.js +2 -0
  64. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.js +11 -0
  65. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/models/index.js +2 -0
  66. package/esm2015/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.js +60 -0
  67. package/esm2015/lib/shared/components/case-viewer/case-specific-access-success/index.js +2 -0
  68. package/esm2015/lib/shared/components/case-viewer/case-view/case-view.component.js +100 -0
  69. package/esm2015/lib/shared/components/case-viewer/case-view/index.js +2 -0
  70. package/esm2015/lib/shared/components/case-viewer/case-viewer.component.js +129 -0
  71. package/esm2015/lib/shared/components/case-viewer/case-viewer.module.js +155 -0
  72. package/esm2015/lib/shared/components/case-viewer/index.js +14 -0
  73. package/esm2015/lib/shared/components/case-viewer/printer/case-printer.component.js +111 -0
  74. package/esm2015/lib/shared/components/case-viewer/printer/index.js +4 -0
  75. package/esm2015/lib/shared/components/case-viewer/printer/pipes/index.js +2 -0
  76. package/esm2015/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.js +60 -0
  77. package/esm2015/lib/shared/components/case-viewer/services/case.resolver.js +110 -0
  78. package/esm2015/lib/shared/components/case-viewer/services/event-trigger.resolver.js +64 -0
  79. package/esm2015/lib/shared/components/case-viewer/services/index.js +3 -0
  80. package/esm2015/lib/shared/components/case-viewer/viewer.routing.js +127 -0
  81. package/esm2015/lib/shared/components/event-trigger/event-trigger.component.js +108 -0
  82. package/esm2015/lib/shared/components/event-trigger/event-trigger.module.js +35 -0
  83. package/esm2015/lib/shared/components/event-trigger/index.js +3 -0
  84. package/esm2015/lib/shared/components/index.js +5 -5
  85. package/esm2015/lib/shared/components/palette/complex/index.js +1 -7
  86. package/esm2015/lib/shared/components/palette/complex/write-complex-field.component.js +2 -2
  87. package/esm2015/lib/shared/components/palette/palette.module.js +16 -27
  88. package/esm2015/lib/shared/components/search-result/index.js +3 -0
  89. package/esm2015/lib/shared/components/search-result/search-result.component.js +845 -0
  90. package/esm2015/lib/shared/components/search-result/search-result.module.js +67 -0
  91. package/esm2015/lib/shared/domain/case-view/role-request.model.js +1 -1
  92. package/esm2015/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.js +29 -0
  93. package/esm2015/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.js +29 -0
  94. package/esm2015/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.js +154 -0
  95. package/esm2015/lib/shared/pipes/complex/ccd-tab-fields.pipe.js +31 -0
  96. package/esm2015/lib/shared/pipes/complex/cdd-page-fields.pipe.js +39 -0
  97. package/esm2015/lib/shared/pipes/complex/fields-filter.pipe.js +103 -0
  98. package/esm2015/lib/shared/pipes/complex/index.js +7 -0
  99. package/esm2015/lib/shared/pipes/index.js +3 -2
  100. package/esm2015/lib/shared/pipes/pipes.module.js +26 -9
  101. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +19417 -12703
  102. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  103. package/lib/shared/components/case-editor/case-create/case-create.component.d.ts +33 -0
  104. package/lib/shared/components/case-editor/case-create/case-create.component.d.ts.map +1 -0
  105. package/lib/shared/components/case-editor/case-create/index.d.ts +2 -0
  106. package/lib/shared/components/case-editor/case-create/index.d.ts.map +1 -0
  107. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +50 -0
  108. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -0
  109. package/lib/shared/components/case-editor/case-edit/index.d.ts +2 -0
  110. package/lib/shared/components/case-editor/case-edit/index.d.ts.map +1 -0
  111. package/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.d.ts +26 -0
  112. package/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.d.ts.map +1 -0
  113. package/lib/shared/components/case-editor/case-edit-confirm/index.d.ts +2 -0
  114. package/lib/shared/components/case-editor/case-edit-confirm/index.d.ts.map +1 -0
  115. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts +26 -0
  116. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts.map +1 -0
  117. package/lib/shared/components/case-editor/case-edit-form/index.d.ts +2 -0
  118. package/lib/shared/components/case-editor/case-edit-form/index.d.ts.map +1 -0
  119. package/lib/shared/components/case-editor/case-edit-page/case-edit-page-text.enum.d.ts +10 -0
  120. package/lib/shared/components/case-editor/case-edit-page/case-edit-page-text.enum.d.ts.map +1 -0
  121. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +100 -0
  122. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -0
  123. package/lib/shared/components/case-editor/case-edit-page/index.d.ts +2 -0
  124. package/lib/shared/components/case-editor/case-edit-page/index.d.ts.map +1 -0
  125. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +123 -0
  126. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -0
  127. package/lib/shared/components/case-editor/case-edit-submit/index.d.ts +2 -0
  128. package/lib/shared/components/case-editor/case-edit-submit/index.d.ts.map +1 -0
  129. package/lib/shared/components/case-editor/case-editor.module.d.ts +27 -0
  130. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -0
  131. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts +31 -0
  132. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts.map +1 -0
  133. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts +11 -0
  134. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts.map +1 -0
  135. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +32 -0
  136. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -0
  137. package/lib/shared/components/case-editor/case-event-completion/index.d.ts +4 -0
  138. package/lib/shared/components/case-editor/case-event-completion/index.d.ts.map +1 -0
  139. package/lib/shared/components/case-editor/case-progress/case-progress.component.d.ts +30 -0
  140. package/lib/shared/components/case-editor/case-progress/case-progress.component.d.ts.map +1 -0
  141. package/lib/shared/components/case-editor/case-progress/index.d.ts +2 -0
  142. package/lib/shared/components/case-editor/case-progress/index.d.ts.map +1 -0
  143. package/lib/shared/components/case-editor/domain/event-completion-params.model.d.ts +7 -0
  144. package/lib/shared/components/case-editor/domain/event-completion-params.model.d.ts.map +1 -0
  145. package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts +5 -0
  146. package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts.map +1 -0
  147. package/lib/shared/components/case-editor/editor.routing.d.ts +3 -0
  148. package/lib/shared/components/case-editor/editor.routing.d.ts.map +1 -0
  149. package/lib/shared/components/case-editor/index.d.ts +13 -0
  150. package/lib/shared/components/case-editor/index.d.ts.map +1 -0
  151. package/lib/shared/components/case-editor/services/case-edit-wizard.guard.d.ts +23 -0
  152. package/lib/shared/components/case-editor/services/case-edit-wizard.guard.d.ts.map +1 -0
  153. package/lib/shared/components/case-editor/services/convert-href-to-router.service.d.ts +14 -0
  154. package/lib/shared/components/case-editor/services/convert-href-to-router.service.d.ts.map +1 -0
  155. package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts +33 -0
  156. package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts.map +1 -0
  157. package/lib/shared/components/case-editor/services/event-trigger.service.d.ts +10 -0
  158. package/lib/shared/components/case-editor/services/event-trigger.service.d.ts.map +1 -0
  159. package/lib/shared/components/case-editor/services/index.d.ts +12 -0
  160. package/lib/shared/components/case-editor/services/index.d.ts.map +1 -0
  161. package/lib/shared/components/case-editor/services/page-validation.service.d.ts +17 -0
  162. package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -0
  163. package/lib/shared/components/case-editor/services/wizard-factory.service.d.ts +6 -0
  164. package/lib/shared/components/case-editor/services/wizard-factory.service.d.ts.map +1 -0
  165. package/lib/shared/components/case-history/case-history.component.d.ts +33 -0
  166. package/lib/shared/components/case-history/case-history.component.d.ts.map +1 -0
  167. package/lib/shared/components/case-history/case-history.module.d.ts +14 -0
  168. package/lib/shared/components/case-history/case-history.module.d.ts.map +1 -0
  169. package/lib/shared/components/case-history/domain/case-history.model.d.ts +16 -0
  170. package/lib/shared/components/case-history/domain/case-history.model.d.ts.map +1 -0
  171. package/lib/shared/components/case-history/index.d.ts +3 -0
  172. package/lib/shared/components/case-history/index.d.ts.map +1 -0
  173. package/lib/shared/components/case-history/services/case-history.service.d.ts +17 -0
  174. package/lib/shared/components/case-history/services/case-history.service.d.ts.map +1 -0
  175. package/lib/shared/components/case-timeline/case-timeline.component.d.ts +27 -0
  176. package/lib/shared/components/case-timeline/case-timeline.component.d.ts.map +1 -0
  177. package/lib/shared/components/case-timeline/case-timeline.module.d.ts +13 -0
  178. package/lib/shared/components/case-timeline/case-timeline.module.d.ts.map +1 -0
  179. package/lib/shared/components/case-timeline/index.d.ts +3 -0
  180. package/lib/shared/components/case-timeline/index.d.ts.map +1 -0
  181. package/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.d.ts +19 -0
  182. package/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.d.ts.map +1 -0
  183. package/lib/shared/components/case-viewer/case-basic-access-view/index.d.ts +2 -0
  184. package/lib/shared/components/case-viewer/case-basic-access-view/index.d.ts.map +1 -0
  185. package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts +40 -0
  186. package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts.map +1 -0
  187. package/lib/shared/components/case-viewer/case-challenged-access-request/index.d.ts +2 -0
  188. package/lib/shared/components/case-viewer/case-challenged-access-request/index.d.ts.map +1 -0
  189. package/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.d.ts +17 -0
  190. package/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.d.ts.map +1 -0
  191. package/lib/shared/components/case-viewer/case-challenged-access-request/models/index.d.ts +2 -0
  192. package/lib/shared/components/case-viewer/case-challenged-access-request/models/index.d.ts.map +1 -0
  193. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts +12 -0
  194. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts.map +1 -0
  195. package/lib/shared/components/case-viewer/case-challenged-access-success/index.d.ts +2 -0
  196. package/lib/shared/components/case-viewer/case-challenged-access-success/index.d.ts.map +1 -0
  197. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +41 -0
  198. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -0
  199. package/lib/shared/components/case-viewer/case-event-trigger/index.d.ts +2 -0
  200. package/lib/shared/components/case-viewer/case-event-trigger/index.d.ts.map +1 -0
  201. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +90 -0
  202. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -0
  203. package/lib/shared/components/case-viewer/case-full-access-view/index.d.ts +2 -0
  204. package/lib/shared/components/case-viewer/case-full-access-view/index.d.ts.map +1 -0
  205. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts +14 -0
  206. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts.map +1 -0
  207. package/lib/shared/components/case-viewer/case-review-specific-access-reject/index.d.ts +2 -0
  208. package/lib/shared/components/case-viewer/case-review-specific-access-reject/index.d.ts.map +1 -0
  209. package/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts +49 -0
  210. package/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts.map +1 -0
  211. package/lib/shared/components/case-viewer/case-review-specific-access-request/index.d.ts +2 -0
  212. package/lib/shared/components/case-viewer/case-review-specific-access-request/index.d.ts.map +1 -0
  213. package/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.d.ts +15 -0
  214. package/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.d.ts.map +1 -0
  215. package/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.d.ts +2 -0
  216. package/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.d.ts.map +1 -0
  217. package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts +33 -0
  218. package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts.map +1 -0
  219. package/lib/shared/components/case-viewer/case-specific-access-request/index.d.ts +2 -0
  220. package/lib/shared/components/case-viewer/case-specific-access-request/index.d.ts.map +1 -0
  221. package/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.d.ts +9 -0
  222. package/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.d.ts.map +1 -0
  223. package/lib/shared/components/case-viewer/case-specific-access-request/models/index.d.ts +2 -0
  224. package/lib/shared/components/case-viewer/case-specific-access-request/models/index.d.ts.map +1 -0
  225. package/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.d.ts +12 -0
  226. package/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.d.ts.map +1 -0
  227. package/lib/shared/components/case-viewer/case-specific-access-success/index.d.ts +2 -0
  228. package/lib/shared/components/case-viewer/case-specific-access-success/index.d.ts.map +1 -0
  229. package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts +32 -0
  230. package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts.map +1 -0
  231. package/lib/shared/components/case-viewer/case-view/index.d.ts +2 -0
  232. package/lib/shared/components/case-viewer/case-view/index.d.ts.map +1 -0
  233. package/lib/shared/components/case-viewer/case-viewer.component.d.ts +32 -0
  234. package/lib/shared/components/case-viewer/case-viewer.component.d.ts.map +1 -0
  235. package/lib/shared/components/case-viewer/case-viewer.module.d.ts +36 -0
  236. package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -0
  237. package/lib/shared/components/case-viewer/index.d.ts +14 -0
  238. package/lib/shared/components/case-viewer/index.d.ts.map +1 -0
  239. package/lib/shared/components/case-viewer/printer/case-printer.component.d.ts +24 -0
  240. package/lib/shared/components/case-viewer/printer/case-printer.component.d.ts.map +1 -0
  241. package/lib/shared/components/case-viewer/printer/index.d.ts +4 -0
  242. package/lib/shared/components/case-viewer/printer/index.d.ts.map +1 -0
  243. package/lib/shared/components/case-viewer/printer/pipes/index.d.ts +2 -0
  244. package/lib/shared/components/case-viewer/printer/pipes/index.d.ts.map +1 -0
  245. package/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.d.ts +24 -0
  246. package/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.d.ts.map +1 -0
  247. package/lib/shared/components/case-viewer/services/case.resolver.d.ts +29 -0
  248. package/lib/shared/components/case-viewer/services/case.resolver.d.ts.map +1 -0
  249. package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts +26 -0
  250. package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts.map +1 -0
  251. package/lib/shared/components/case-viewer/services/index.d.ts +3 -0
  252. package/lib/shared/components/case-viewer/services/index.d.ts.map +1 -0
  253. package/lib/shared/components/case-viewer/viewer.routing.d.ts +3 -0
  254. package/lib/shared/components/case-viewer/viewer.routing.d.ts.map +1 -0
  255. package/lib/shared/components/event-trigger/event-trigger.component.d.ts +24 -0
  256. package/lib/shared/components/event-trigger/event-trigger.component.d.ts.map +1 -0
  257. package/lib/shared/components/event-trigger/event-trigger.module.d.ts +11 -0
  258. package/lib/shared/components/event-trigger/event-trigger.module.d.ts.map +1 -0
  259. package/lib/shared/components/event-trigger/index.d.ts +3 -0
  260. package/lib/shared/components/event-trigger/index.d.ts.map +1 -0
  261. package/lib/shared/components/index.d.ts +4 -0
  262. package/lib/shared/components/index.d.ts.map +1 -1
  263. package/lib/shared/components/palette/complex/index.d.ts +0 -6
  264. package/lib/shared/components/palette/complex/index.d.ts.map +1 -1
  265. package/lib/shared/components/palette/complex/write-complex-field.component.d.ts.map +1 -1
  266. package/lib/shared/components/palette/palette.module.d.ts +87 -93
  267. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  268. package/lib/shared/components/search-result/index.d.ts +3 -0
  269. package/lib/shared/components/search-result/index.d.ts.map +1 -0
  270. package/lib/shared/components/search-result/search-result.component.d.ts +111 -0
  271. package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -0
  272. package/lib/shared/components/search-result/search-result.module.d.ts +16 -0
  273. package/lib/shared/components/search-result/search-result.module.d.ts.map +1 -0
  274. package/lib/shared/domain/case-view/role-request.model.d.ts.map +1 -1
  275. package/lib/shared/{components/palette → pipes}/complex/ccd-collection-table-value-case-fields.pipe.d.ts +1 -1
  276. package/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.d.ts.map +1 -0
  277. package/lib/shared/{components/palette → pipes}/complex/ccd-cyapage-label-filter.pipe.d.ts +1 -1
  278. package/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.d.ts.map +1 -0
  279. package/lib/shared/{components/palette → pipes}/complex/ccd-read-fields-filter.pipe.d.ts +1 -1
  280. package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -0
  281. package/lib/shared/{components/palette → pipes}/complex/ccd-tab-fields.pipe.d.ts +2 -2
  282. package/lib/shared/pipes/complex/ccd-tab-fields.pipe.d.ts.map +1 -0
  283. package/lib/shared/{components/palette → pipes}/complex/cdd-page-fields.pipe.d.ts +2 -2
  284. package/lib/shared/pipes/complex/cdd-page-fields.pipe.d.ts.map +1 -0
  285. package/lib/shared/{components/palette → pipes}/complex/fields-filter.pipe.d.ts +1 -1
  286. package/lib/shared/pipes/complex/fields-filter.pipe.d.ts.map +1 -0
  287. package/lib/shared/pipes/complex/index.d.ts +7 -0
  288. package/lib/shared/pipes/complex/index.d.ts.map +1 -0
  289. package/lib/shared/pipes/index.d.ts +2 -1
  290. package/lib/shared/pipes/index.d.ts.map +1 -1
  291. package/lib/shared/pipes/pipes.module.d.ts +7 -2
  292. package/lib/shared/pipes/pipes.module.d.ts.map +1 -1
  293. package/package.json +1 -1
  294. package/esm2015/lib/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.js +0 -29
  295. package/esm2015/lib/shared/components/palette/complex/ccd-cyapage-label-filter.pipe.js +0 -29
  296. package/esm2015/lib/shared/components/palette/complex/ccd-read-fields-filter.pipe.js +0 -154
  297. package/esm2015/lib/shared/components/palette/complex/ccd-tab-fields.pipe.js +0 -31
  298. package/esm2015/lib/shared/components/palette/complex/cdd-page-fields.pipe.js +0 -39
  299. package/esm2015/lib/shared/components/palette/complex/fields-filter.pipe.js +0 -103
  300. package/lib/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.d.ts.map +0 -1
  301. package/lib/shared/components/palette/complex/ccd-cyapage-label-filter.pipe.d.ts.map +0 -1
  302. package/lib/shared/components/palette/complex/ccd-read-fields-filter.pipe.d.ts.map +0 -1
  303. package/lib/shared/components/palette/complex/ccd-tab-fields.pipe.d.ts.map +0 -1
  304. package/lib/shared/components/palette/complex/cdd-page-fields.pipe.d.ts.map +0 -1
  305. package/lib/shared/components/palette/complex/fields-filter.pipe.d.ts.map +0 -1
@@ -0,0 +1,845 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormGroup } from '@angular/forms';
3
+ import { AbstractAppConfig } from '../../../app.config';
4
+ import { PlaceholderService } from '../../directives/substitutor/services/placeholder.service';
5
+ import { DisplayMode } from '../../domain/activity/activity.model';
6
+ import { CaseField } from '../../domain/definition/case-field.model';
7
+ import { CaseState } from '../../domain/definition/case-state.model';
8
+ import { CaseType } from '../../domain/definition/case-type.model';
9
+ import { Jurisdiction } from '../../domain/definition/jurisdiction.model';
10
+ import { DRAFT_PREFIX } from '../../domain/draft.model';
11
+ import { PaginationMetadata } from '../../domain/pagination-metadata.model';
12
+ import { SearchResultView } from '../../domain/search/search-result-view.model';
13
+ import { SortOrder } from '../../domain/search/sorting/sort-order';
14
+ import { SortParameters } from '../../domain/search/sorting/sort-parameters';
15
+ import { CaseReferencePipe } from '../../pipes/case-reference/case-reference.pipe';
16
+ import { ActivityService } from '../../services/activity/activity.service';
17
+ import { BrowserService } from '../../services/browser/browser.service';
18
+ import { SearchResultViewItemComparatorFactory } from '../../services/search-result/sorting/search-result-view-item-comparator-factory';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "../../services/search-result/sorting/search-result-view-item-comparator-factory";
21
+ import * as i2 from "../../../app.config";
22
+ import * as i3 from "../../services/activity/activity.service";
23
+ import * as i4 from "../../pipes/case-reference/case-reference.pipe";
24
+ import * as i5 from "../../directives/substitutor/services/placeholder.service";
25
+ import * as i6 from "../../services/browser/browser.service";
26
+ import * as i7 from "@angular/common";
27
+ import * as i8 from "@angular/router";
28
+ import * as i9 from "../../directives/substitutor/label-substitutor.directive";
29
+ import * as i10 from "../activity/activity.component";
30
+ import * as i11 from "../pagination/pagination.component";
31
+ import * as i12 from "ngx-pagination";
32
+ import * as i13 from "../../pipes/search-result/sorting/sort-search-result.pipe";
33
+ function SearchResultComponent_table_0_div_4_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵelementStart(0, "div", 11);
35
+ i0.ɵɵelementStart(1, "span", 12);
36
+ i0.ɵɵtext(2, "!");
37
+ i0.ɵɵelementEnd();
38
+ i0.ɵɵelementStart(3, "strong", 13);
39
+ i0.ɵɵelementStart(4, "span", 14);
40
+ i0.ɵɵtext(5, "Warning");
41
+ i0.ɵɵelementEnd();
42
+ i0.ɵɵtext(6);
43
+ i0.ɵɵpipe(7, "number");
44
+ i0.ɵɵelementEnd();
45
+ i0.ɵɵelementEnd();
46
+ } if (rf & 2) {
47
+ const ctx_r3 = i0.ɵɵnextContext(2);
48
+ i0.ɵɵadvance(6);
49
+ i0.ɵɵtextInterpolate1(" The total size of the result set is ", i0.ɵɵpipeBind1(7, 1, ctx_r3.paginationMetadata.total_results_count), ". Only the first 10,000 records are available for display. ");
50
+ } }
51
+ function SearchResultComponent_table_0_div_5_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵelementStart(0, "div", 15);
53
+ i0.ɵɵelementStart(1, "span", 16);
54
+ i0.ɵɵtext(2, "Showing ");
55
+ i0.ɵɵelementStart(3, "span", 17);
56
+ i0.ɵɵtext(4);
57
+ i0.ɵɵelementEnd();
58
+ i0.ɵɵtext(5, " to ");
59
+ i0.ɵɵelementStart(6, "span", 17);
60
+ i0.ɵɵtext(7);
61
+ i0.ɵɵelementEnd();
62
+ i0.ɵɵtext(8, " of ");
63
+ i0.ɵɵelementStart(9, "span", 17);
64
+ i0.ɵɵtext(10);
65
+ i0.ɵɵelementEnd();
66
+ i0.ɵɵtext(11, " results");
67
+ i0.ɵɵelementEnd();
68
+ i0.ɵɵelementEnd();
69
+ } if (rf & 2) {
70
+ const ctx_r4 = i0.ɵɵnextContext(2);
71
+ i0.ɵɵattributeInterpolate1("aria-label", "", ctx_r4.getTotalResults(), " results have been found");
72
+ i0.ɵɵadvance(4);
73
+ i0.ɵɵtextInterpolate(ctx_r4.getFirstResult());
74
+ i0.ɵɵadvance(3);
75
+ i0.ɵɵtextInterpolate(ctx_r4.getLastResult());
76
+ i0.ɵɵadvance(3);
77
+ i0.ɵɵtextInterpolate(ctx_r4.getTotalResults());
78
+ } }
79
+ function SearchResultComponent_table_0_div_6_Template(rf, ctx) { if (rf & 1) {
80
+ const _r12 = i0.ɵɵgetCurrentView();
81
+ i0.ɵɵelementStart(0, "div", 18);
82
+ i0.ɵɵelementStart(1, "span");
83
+ i0.ɵɵelementStart(2, "a", 19);
84
+ i0.ɵɵlistener("click", function SearchResultComponent_table_0_div_6_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(2); return ctx_r11.clearSelection(); });
85
+ i0.ɵɵtext(3, "Reset case selection");
86
+ i0.ɵɵelementEnd();
87
+ i0.ɵɵelementEnd();
88
+ i0.ɵɵelementEnd();
89
+ } }
90
+ function SearchResultComponent_table_0_th_9_Template(rf, ctx) { if (rf & 1) {
91
+ const _r14 = i0.ɵɵgetCurrentView();
92
+ i0.ɵɵelementStart(0, "th", 20);
93
+ i0.ɵɵelementStart(1, "div", 21);
94
+ i0.ɵɵelementStart(2, "input", 22);
95
+ i0.ɵɵlistener("change", function SearchResultComponent_table_0_th_9_Template_input_change_2_listener() { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(2); return ctx_r13.selectAll(); });
96
+ i0.ɵɵelementEnd();
97
+ i0.ɵɵelement(3, "label", 23);
98
+ i0.ɵɵelementEnd();
99
+ i0.ɵɵelementEnd();
100
+ } if (rf & 2) {
101
+ const ctx_r6 = i0.ɵɵnextContext(2);
102
+ i0.ɵɵadvance(2);
103
+ i0.ɵɵproperty("checked", ctx_r6.allOnPageSelected())("disabled", !ctx_r6.canAnyBeShared());
104
+ } }
105
+ function SearchResultComponent_table_0_th_10_div_6_Template(rf, ctx) { if (rf & 1) {
106
+ const _r19 = i0.ɵɵgetCurrentView();
107
+ i0.ɵɵelementStart(0, "div", 28);
108
+ i0.ɵɵelementStart(1, "a", 29);
109
+ i0.ɵɵlistener("click", function SearchResultComponent_table_0_th_10_div_6_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r19); const col_r15 = i0.ɵɵnextContext().$implicit; const ctx_r17 = i0.ɵɵnextContext(2); return ctx_r17.sort(col_r15); });
110
+ i0.ɵɵelementEnd();
111
+ i0.ɵɵelementEnd();
112
+ } if (rf & 2) {
113
+ const col_r15 = i0.ɵɵnextContext().$implicit;
114
+ const ctx_r16 = i0.ɵɵnextContext(2);
115
+ i0.ɵɵadvance(1);
116
+ i0.ɵɵproperty("innerHTML", ctx_r16.sortWidget(col_r15), i0.ɵɵsanitizeHtml);
117
+ } }
118
+ function SearchResultComponent_table_0_th_10_Template(rf, ctx) { if (rf & 1) {
119
+ const _r22 = i0.ɵɵgetCurrentView();
120
+ i0.ɵɵelementStart(0, "th");
121
+ i0.ɵɵelementStart(1, "table", 24);
122
+ i0.ɵɵelementStart(2, "tr");
123
+ i0.ɵɵelement(3, "th", 25);
124
+ i0.ɵɵelementStart(4, "div", 26);
125
+ i0.ɵɵlistener("click", function SearchResultComponent_table_0_th_10_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r22); const col_r15 = ctx.$implicit; const ctx_r21 = i0.ɵɵnextContext(2); return ctx_r21.sort(col_r15); });
126
+ i0.ɵɵtext(5);
127
+ i0.ɵɵelementEnd();
128
+ i0.ɵɵtemplate(6, SearchResultComponent_table_0_th_10_div_6_Template, 2, 1, "div", 27);
129
+ i0.ɵɵelementEnd();
130
+ i0.ɵɵelementEnd();
131
+ i0.ɵɵelementEnd();
132
+ } if (rf & 2) {
133
+ const col_r15 = ctx.$implicit;
134
+ const ctx_r7 = i0.ɵɵnextContext(2);
135
+ i0.ɵɵadvance(1);
136
+ i0.ɵɵattribute("aria-label", ctx_r7.sortLabelText(col_r15.label, ctx_r7.isSortAscending(col_r15)));
137
+ i0.ɵɵadvance(4);
138
+ i0.ɵɵtextInterpolate(col_r15.label);
139
+ i0.ɵɵadvance(1);
140
+ i0.ɵɵproperty("ngIf", ctx_r7.comparator(col_r15));
141
+ } }
142
+ function SearchResultComponent_table_0_th_11_Template(rf, ctx) { if (rf & 1) {
143
+ i0.ɵɵelement(0, "th", 30);
144
+ } }
145
+ function SearchResultComponent_table_0_ng_container_13_tr_1_td_1_Template(rf, ctx) { if (rf & 1) {
146
+ const _r30 = i0.ɵɵgetCurrentView();
147
+ i0.ɵɵelementStart(0, "td", 20);
148
+ i0.ɵɵelementStart(1, "div", 21);
149
+ i0.ɵɵelementStart(2, "input", 32);
150
+ i0.ɵɵlistener("change", function SearchResultComponent_table_0_ng_container_13_tr_1_td_1_Template_input_change_2_listener() { i0.ɵɵrestoreView(_r30); const result_r24 = i0.ɵɵnextContext().$implicit; const ctx_r28 = i0.ɵɵnextContext(3); return ctx_r28.changeSelection(result_r24); });
151
+ i0.ɵɵelementEnd();
152
+ i0.ɵɵelement(3, "label", 33);
153
+ i0.ɵɵelementEnd();
154
+ i0.ɵɵelementEnd();
155
+ } if (rf & 2) {
156
+ const result_r24 = i0.ɵɵnextContext().$implicit;
157
+ const ctx_r25 = i0.ɵɵnextContext(3);
158
+ i0.ɵɵadvance(2);
159
+ i0.ɵɵpropertyInterpolate1("id", "select-", result_r24.case_id, "");
160
+ i0.ɵɵpropertyInterpolate1("name", "select-", result_r24.case_id, "");
161
+ i0.ɵɵproperty("checked", ctx_r25.isSelected(result_r24))("disabled", !ctx_r25.canBeShared(result_r24));
162
+ i0.ɵɵadvance(1);
163
+ i0.ɵɵpropertyInterpolate1("for", "select-", result_r24.case_id, "");
164
+ } }
165
+ const _c0 = function () { return ["value"]; };
166
+ function SearchResultComponent_table_0_ng_container_13_tr_1_td_2_a_1_ng_container_2_ccd_field_read_1_Template(rf, ctx) { if (rf & 1) {
167
+ i0.ɵɵelement(0, "ccd-field-read", 42);
168
+ } if (rf & 2) {
169
+ const col_r32 = i0.ɵɵnextContext(3).$implicit;
170
+ const result_r24 = i0.ɵɵnextContext().$implicit;
171
+ const ctx_r37 = i0.ɵɵnextContext(3);
172
+ i0.ɵɵproperty("caseField", ctx_r37.getColumnsWithPrefix(result_r24.columns[col_r32.case_field_id], result_r24))("contextFields", result_r24.hydrated_case_fields)("elementsToSubstitute", i0.ɵɵpureFunction0(3, _c0));
173
+ } }
174
+ function SearchResultComponent_table_0_ng_container_13_tr_1_td_2_a_1_ng_container_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
175
+ i0.ɵɵtext(0);
176
+ i0.ɵɵpipe(1, "ccdCaseReference");
177
+ } if (rf & 2) {
178
+ const result_r24 = i0.ɵɵnextContext(4).$implicit;
179
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(1, 1, result_r24.case_id));
180
+ } }
181
+ function SearchResultComponent_table_0_ng_container_13_tr_1_td_2_a_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
182
+ i0.ɵɵelementContainerStart(0, 39);
183
+ i0.ɵɵtemplate(1, SearchResultComponent_table_0_ng_container_13_tr_1_td_2_a_1_ng_container_2_ccd_field_read_1_Template, 1, 4, "ccd-field-read", 40);
184
+ i0.ɵɵtemplate(2, SearchResultComponent_table_0_ng_container_13_tr_1_td_2_a_1_ng_container_2_ng_template_2_Template, 2, 3, "ng-template", null, 41, i0.ɵɵtemplateRefExtractor);
185
+ i0.ɵɵelementContainerEnd();
186
+ } if (rf & 2) {
187
+ const _r38 = i0.ɵɵreference(3);
188
+ const col_r32 = i0.ɵɵnextContext(2).$implicit;
189
+ const result_r24 = i0.ɵɵnextContext().$implicit;
190
+ const ctx_r36 = i0.ɵɵnextContext(3);
191
+ i0.ɵɵadvance(1);
192
+ i0.ɵɵproperty("ngIf", ctx_r36.draftPrefixOrGet(col_r32, result_r24))("ngIfElse", _r38);
193
+ } }
194
+ function SearchResultComponent_table_0_ng_container_13_tr_1_td_2_a_1_Template(rf, ctx) { if (rf & 1) {
195
+ i0.ɵɵelementStart(0, "a", 37);
196
+ i0.ɵɵpipe(1, "ccdCaseReference");
197
+ i0.ɵɵtemplate(2, SearchResultComponent_table_0_ng_container_13_tr_1_td_2_a_1_ng_container_2_Template, 4, 2, "ng-container", 38);
198
+ i0.ɵɵelementEnd();
199
+ } if (rf & 2) {
200
+ const result_r24 = i0.ɵɵnextContext(2).$implicit;
201
+ const ctx_r34 = i0.ɵɵnextContext(3);
202
+ i0.ɵɵattributeInterpolate1("aria-label", "go to case with Case reference:", i0.ɵɵpipeBind1(1, 3, result_r24.case_id), "");
203
+ i0.ɵɵproperty("routerLink", ctx_r34.prepareCaseLinkUrl(result_r24.case_id));
204
+ i0.ɵɵadvance(2);
205
+ i0.ɵɵproperty("ngIf", !ctx_r34.hideRows);
206
+ } }
207
+ function SearchResultComponent_table_0_ng_container_13_tr_1_td_2_div_2_Template(rf, ctx) { if (rf & 1) {
208
+ i0.ɵɵelementStart(0, "div", 39);
209
+ i0.ɵɵelement(1, "ccd-field-read", 42);
210
+ i0.ɵɵelementEnd();
211
+ } if (rf & 2) {
212
+ const col_r32 = i0.ɵɵnextContext().$implicit;
213
+ const result_r24 = i0.ɵɵnextContext().$implicit;
214
+ const ctx_r35 = i0.ɵɵnextContext(3);
215
+ i0.ɵɵstyleProp("visibility", ctx_r35.hideRows ? "hidden" : "visible");
216
+ i0.ɵɵadvance(1);
217
+ i0.ɵɵproperty("caseField", result_r24.columns[col_r32.case_field_id])("contextFields", result_r24.hydrated_case_fields)("elementsToSubstitute", i0.ɵɵpureFunction0(5, _c0));
218
+ } }
219
+ function SearchResultComponent_table_0_ng_container_13_tr_1_td_2_Template(rf, ctx) { if (rf & 1) {
220
+ i0.ɵɵelementStart(0, "td", 34);
221
+ i0.ɵɵtemplate(1, SearchResultComponent_table_0_ng_container_13_tr_1_td_2_a_1_Template, 3, 5, "a", 35);
222
+ i0.ɵɵtemplate(2, SearchResultComponent_table_0_ng_container_13_tr_1_td_2_div_2_Template, 2, 6, "div", 36);
223
+ i0.ɵɵelementEnd();
224
+ } if (rf & 2) {
225
+ const colIndex_r33 = ctx.index;
226
+ i0.ɵɵadvance(1);
227
+ i0.ɵɵproperty("ngIf", colIndex_r33 == 0);
228
+ i0.ɵɵadvance(1);
229
+ i0.ɵɵproperty("ngIf", colIndex_r33 != 0);
230
+ } }
231
+ function SearchResultComponent_table_0_ng_container_13_tr_1_td_3_Template(rf, ctx) { if (rf & 1) {
232
+ i0.ɵɵelementStart(0, "td");
233
+ i0.ɵɵelementStart(1, "div");
234
+ i0.ɵɵelement(2, "ccd-activity", 43);
235
+ i0.ɵɵelementEnd();
236
+ i0.ɵɵelementEnd();
237
+ } if (rf & 2) {
238
+ const result_r24 = i0.ɵɵnextContext().$implicit;
239
+ const ctx_r27 = i0.ɵɵnextContext(3);
240
+ i0.ɵɵadvance(1);
241
+ i0.ɵɵstyleProp("visibility", ctx_r27.hideRows ? "hidden" : "visible");
242
+ i0.ɵɵadvance(1);
243
+ i0.ɵɵproperty("caseId", result_r24.case_id)("displayMode", ctx_r27.ICON);
244
+ } }
245
+ function SearchResultComponent_table_0_ng_container_13_tr_1_Template(rf, ctx) { if (rf & 1) {
246
+ i0.ɵɵelementStart(0, "tr");
247
+ i0.ɵɵtemplate(1, SearchResultComponent_table_0_ng_container_13_tr_1_td_1_Template, 4, 5, "td", 8);
248
+ i0.ɵɵtemplate(2, SearchResultComponent_table_0_ng_container_13_tr_1_td_2_Template, 3, 2, "td", 31);
249
+ i0.ɵɵtemplate(3, SearchResultComponent_table_0_ng_container_13_tr_1_td_3_Template, 3, 4, "td", 0);
250
+ i0.ɵɵelementEnd();
251
+ } if (rf & 2) {
252
+ const ctx_r23 = i0.ɵɵnextContext(3);
253
+ i0.ɵɵadvance(1);
254
+ i0.ɵɵproperty("ngIf", ctx_r23.selectionEnabled);
255
+ i0.ɵɵadvance(1);
256
+ i0.ɵɵproperty("ngForOf", ctx_r23.resultView.columns);
257
+ i0.ɵɵadvance(1);
258
+ i0.ɵɵproperty("ngIf", ctx_r23.activityEnabled());
259
+ } }
260
+ const _c1 = function (a0, a1, a2) { return { itemsPerPage: a0, currentPage: a1, totalItems: a2 }; };
261
+ function SearchResultComponent_table_0_ng_container_13_Template(rf, ctx) { if (rf & 1) {
262
+ i0.ɵɵelementContainerStart(0);
263
+ i0.ɵɵtemplate(1, SearchResultComponent_table_0_ng_container_13_tr_1_Template, 4, 3, "tr", 9);
264
+ i0.ɵɵpipe(2, "paginate");
265
+ i0.ɵɵelementContainerEnd();
266
+ } if (rf & 2) {
267
+ const ctx_r9 = i0.ɵɵnextContext(2);
268
+ i0.ɵɵadvance(1);
269
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind2(2, 1, ctx_r9.resultView.results, i0.ɵɵpureFunction3(4, _c1, ctx_r9.paginationPageSize, ctx_r9.selected.page, ctx_r9.resultTotal)));
270
+ } }
271
+ function SearchResultComponent_table_0_ng_container_14_tr_1_td_1_Template(rf, ctx) { if (rf & 1) {
272
+ const _r56 = i0.ɵɵgetCurrentView();
273
+ i0.ɵɵelementStart(0, "td", 20);
274
+ i0.ɵɵelementStart(1, "div", 21);
275
+ i0.ɵɵelementStart(2, "input", 44);
276
+ i0.ɵɵlistener("change", function SearchResultComponent_table_0_ng_container_14_tr_1_td_1_Template_input_change_2_listener() { i0.ɵɵrestoreView(_r56); const result_r50 = i0.ɵɵnextContext().$implicit; const ctx_r54 = i0.ɵɵnextContext(3); return ctx_r54.changeSelection(result_r50); })("keyup", function SearchResultComponent_table_0_ng_container_14_tr_1_td_1_Template_input_keyup_2_listener($event) { i0.ɵɵrestoreView(_r56); const result_r50 = i0.ɵɵnextContext().$implicit; const ctx_r57 = i0.ɵɵnextContext(3); return ctx_r57.onKeyUp($event, result_r50); });
277
+ i0.ɵɵelementEnd();
278
+ i0.ɵɵelement(3, "label", 33);
279
+ i0.ɵɵelementEnd();
280
+ i0.ɵɵelementEnd();
281
+ } if (rf & 2) {
282
+ const result_r50 = i0.ɵɵnextContext().$implicit;
283
+ const ctx_r51 = i0.ɵɵnextContext(3);
284
+ i0.ɵɵadvance(2);
285
+ i0.ɵɵpropertyInterpolate1("id", "select-", result_r50.case_id, "");
286
+ i0.ɵɵpropertyInterpolate1("name", "select-", result_r50.case_id, "");
287
+ i0.ɵɵproperty("checked", ctx_r51.isSelected(result_r50))("disabled", !ctx_r51.canBeShared(result_r50));
288
+ i0.ɵɵadvance(1);
289
+ i0.ɵɵpropertyInterpolate1("for", "select-", result_r50.case_id, "");
290
+ } }
291
+ function SearchResultComponent_table_0_ng_container_14_tr_1_td_2_a_1_ng_container_2_ccd_field_read_1_Template(rf, ctx) { if (rf & 1) {
292
+ i0.ɵɵelement(0, "ccd-field-read", 42);
293
+ } if (rf & 2) {
294
+ const col_r60 = i0.ɵɵnextContext(3).$implicit;
295
+ const result_r50 = i0.ɵɵnextContext().$implicit;
296
+ const ctx_r65 = i0.ɵɵnextContext(3);
297
+ i0.ɵɵproperty("caseField", ctx_r65.getColumnsWithPrefix(result_r50.columns[col_r60.case_field_id], result_r50))("contextFields", result_r50.hydrated_case_fields)("elementsToSubstitute", i0.ɵɵpureFunction0(3, _c0));
298
+ } }
299
+ function SearchResultComponent_table_0_ng_container_14_tr_1_td_2_a_1_ng_container_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
300
+ i0.ɵɵtext(0);
301
+ i0.ɵɵpipe(1, "ccdCaseReference");
302
+ } if (rf & 2) {
303
+ const result_r50 = i0.ɵɵnextContext(4).$implicit;
304
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(1, 1, result_r50.case_id));
305
+ } }
306
+ function SearchResultComponent_table_0_ng_container_14_tr_1_td_2_a_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
307
+ i0.ɵɵelementContainerStart(0, 39);
308
+ i0.ɵɵtemplate(1, SearchResultComponent_table_0_ng_container_14_tr_1_td_2_a_1_ng_container_2_ccd_field_read_1_Template, 1, 4, "ccd-field-read", 40);
309
+ i0.ɵɵtemplate(2, SearchResultComponent_table_0_ng_container_14_tr_1_td_2_a_1_ng_container_2_ng_template_2_Template, 2, 3, "ng-template", null, 41, i0.ɵɵtemplateRefExtractor);
310
+ i0.ɵɵelementContainerEnd();
311
+ } if (rf & 2) {
312
+ const _r66 = i0.ɵɵreference(3);
313
+ const col_r60 = i0.ɵɵnextContext(2).$implicit;
314
+ const result_r50 = i0.ɵɵnextContext().$implicit;
315
+ const ctx_r64 = i0.ɵɵnextContext(3);
316
+ i0.ɵɵadvance(1);
317
+ i0.ɵɵproperty("ngIf", ctx_r64.draftPrefixOrGet(col_r60, result_r50))("ngIfElse", _r66);
318
+ } }
319
+ function SearchResultComponent_table_0_ng_container_14_tr_1_td_2_a_1_Template(rf, ctx) { if (rf & 1) {
320
+ i0.ɵɵelementStart(0, "a", 37);
321
+ i0.ɵɵpipe(1, "ccdCaseReference");
322
+ i0.ɵɵtemplate(2, SearchResultComponent_table_0_ng_container_14_tr_1_td_2_a_1_ng_container_2_Template, 4, 2, "ng-container", 38);
323
+ i0.ɵɵelementEnd();
324
+ } if (rf & 2) {
325
+ const result_r50 = i0.ɵɵnextContext(2).$implicit;
326
+ const ctx_r62 = i0.ɵɵnextContext(3);
327
+ i0.ɵɵattributeInterpolate1("aria-label", "go to case with Case reference:", i0.ɵɵpipeBind1(1, 3, result_r50.case_id), "");
328
+ i0.ɵɵproperty("routerLink", ctx_r62.prepareCaseLinkUrl(result_r50.case_id));
329
+ i0.ɵɵadvance(2);
330
+ i0.ɵɵproperty("ngIf", !ctx_r62.hideRows);
331
+ } }
332
+ function SearchResultComponent_table_0_ng_container_14_tr_1_td_2_div_2_Template(rf, ctx) { if (rf & 1) {
333
+ i0.ɵɵelementStart(0, "div", 39);
334
+ i0.ɵɵelement(1, "ccd-field-read", 42);
335
+ i0.ɵɵelementEnd();
336
+ } if (rf & 2) {
337
+ const col_r60 = i0.ɵɵnextContext().$implicit;
338
+ const result_r50 = i0.ɵɵnextContext().$implicit;
339
+ const ctx_r63 = i0.ɵɵnextContext(3);
340
+ i0.ɵɵstyleProp("visibility", ctx_r63.hideRows ? "hidden" : "visible");
341
+ i0.ɵɵadvance(1);
342
+ i0.ɵɵproperty("caseField", result_r50.columns[col_r60.case_field_id])("contextFields", result_r50.hydrated_case_fields)("elementsToSubstitute", i0.ɵɵpureFunction0(5, _c0));
343
+ } }
344
+ function SearchResultComponent_table_0_ng_container_14_tr_1_td_2_Template(rf, ctx) { if (rf & 1) {
345
+ i0.ɵɵelementStart(0, "td", 34);
346
+ i0.ɵɵtemplate(1, SearchResultComponent_table_0_ng_container_14_tr_1_td_2_a_1_Template, 3, 5, "a", 35);
347
+ i0.ɵɵtemplate(2, SearchResultComponent_table_0_ng_container_14_tr_1_td_2_div_2_Template, 2, 6, "div", 36);
348
+ i0.ɵɵelementEnd();
349
+ } if (rf & 2) {
350
+ const colIndex_r61 = ctx.index;
351
+ i0.ɵɵadvance(1);
352
+ i0.ɵɵproperty("ngIf", colIndex_r61 == 0);
353
+ i0.ɵɵadvance(1);
354
+ i0.ɵɵproperty("ngIf", colIndex_r61 != 0);
355
+ } }
356
+ function SearchResultComponent_table_0_ng_container_14_tr_1_td_3_Template(rf, ctx) { if (rf & 1) {
357
+ i0.ɵɵelementStart(0, "td");
358
+ i0.ɵɵelementStart(1, "div");
359
+ i0.ɵɵelement(2, "ccd-activity", 43);
360
+ i0.ɵɵelementEnd();
361
+ i0.ɵɵelementEnd();
362
+ } if (rf & 2) {
363
+ const result_r50 = i0.ɵɵnextContext().$implicit;
364
+ const ctx_r53 = i0.ɵɵnextContext(3);
365
+ i0.ɵɵadvance(1);
366
+ i0.ɵɵstyleProp("visibility", ctx_r53.hideRows ? "hidden" : "visible");
367
+ i0.ɵɵadvance(1);
368
+ i0.ɵɵproperty("caseId", result_r50.case_id)("displayMode", ctx_r53.ICON);
369
+ } }
370
+ function SearchResultComponent_table_0_ng_container_14_tr_1_Template(rf, ctx) { if (rf & 1) {
371
+ i0.ɵɵelementStart(0, "tr");
372
+ i0.ɵɵtemplate(1, SearchResultComponent_table_0_ng_container_14_tr_1_td_1_Template, 4, 5, "td", 8);
373
+ i0.ɵɵtemplate(2, SearchResultComponent_table_0_ng_container_14_tr_1_td_2_Template, 3, 2, "td", 31);
374
+ i0.ɵɵtemplate(3, SearchResultComponent_table_0_ng_container_14_tr_1_td_3_Template, 3, 4, "td", 0);
375
+ i0.ɵɵelementEnd();
376
+ } if (rf & 2) {
377
+ const ctx_r49 = i0.ɵɵnextContext(3);
378
+ i0.ɵɵadvance(1);
379
+ i0.ɵɵproperty("ngIf", ctx_r49.selectionEnabled);
380
+ i0.ɵɵadvance(1);
381
+ i0.ɵɵproperty("ngForOf", ctx_r49.resultView.columns);
382
+ i0.ɵɵadvance(1);
383
+ i0.ɵɵproperty("ngIf", ctx_r49.activityEnabled());
384
+ } }
385
+ function SearchResultComponent_table_0_ng_container_14_Template(rf, ctx) { if (rf & 1) {
386
+ i0.ɵɵelementContainerStart(0);
387
+ i0.ɵɵtemplate(1, SearchResultComponent_table_0_ng_container_14_tr_1_Template, 4, 3, "tr", 9);
388
+ i0.ɵɵpipe(2, "paginate");
389
+ i0.ɵɵpipe(3, "ccdSortSearchResult");
390
+ i0.ɵɵelementContainerEnd();
391
+ } if (rf & 2) {
392
+ const ctx_r10 = i0.ɵɵnextContext(2);
393
+ i0.ɵɵadvance(1);
394
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind2(2, 1, i0.ɵɵpipeBind2(3, 4, ctx_r10.resultView.results, ctx_r10.sortParameters), i0.ɵɵpureFunction3(7, _c1, ctx_r10.paginationPageSize, ctx_r10.selected.page, ctx_r10.resultTotal)));
395
+ } }
396
+ function SearchResultComponent_table_0_Template(rf, ctx) { if (rf & 1) {
397
+ i0.ɵɵelementStart(0, "table");
398
+ i0.ɵɵelementStart(1, "caption");
399
+ i0.ɵɵelementStart(2, "h2", 3);
400
+ i0.ɵɵtext(3);
401
+ i0.ɵɵelementEnd();
402
+ i0.ɵɵtemplate(4, SearchResultComponent_table_0_div_4_Template, 8, 3, "div", 4);
403
+ i0.ɵɵtemplate(5, SearchResultComponent_table_0_div_5_Template, 12, 4, "div", 5);
404
+ i0.ɵɵtemplate(6, SearchResultComponent_table_0_div_6_Template, 4, 0, "div", 6);
405
+ i0.ɵɵelementEnd();
406
+ i0.ɵɵelementStart(7, "thead");
407
+ i0.ɵɵelementStart(8, "tr", 7);
408
+ i0.ɵɵtemplate(9, SearchResultComponent_table_0_th_9_Template, 4, 2, "th", 8);
409
+ i0.ɵɵtemplate(10, SearchResultComponent_table_0_th_10_Template, 7, 3, "th", 9);
410
+ i0.ɵɵtemplate(11, SearchResultComponent_table_0_th_11_Template, 1, 0, "th", 10);
411
+ i0.ɵɵelementEnd();
412
+ i0.ɵɵelementEnd();
413
+ i0.ɵɵelementStart(12, "tbody");
414
+ i0.ɵɵtemplate(13, SearchResultComponent_table_0_ng_container_13_Template, 3, 8, "ng-container", 0);
415
+ i0.ɵɵtemplate(14, SearchResultComponent_table_0_ng_container_14_Template, 4, 11, "ng-container", 0);
416
+ i0.ɵɵelementEnd();
417
+ i0.ɵɵelementEnd();
418
+ } if (rf & 2) {
419
+ const ctx_r0 = i0.ɵɵnextContext();
420
+ i0.ɵɵadvance(3);
421
+ i0.ɵɵtextInterpolate(ctx_r0.caseState ? "Your cases" : "Search result");
422
+ i0.ɵɵadvance(1);
423
+ i0.ɵɵproperty("ngIf", ctx_r0.paginationLimitEnforced);
424
+ i0.ɵɵadvance(1);
425
+ i0.ɵɵproperty("ngIf", ctx_r0.hasResults() || ctx_r0.hasDrafts());
426
+ i0.ɵɵadvance(1);
427
+ i0.ɵɵproperty("ngIf", (ctx_r0.hasResults() || ctx_r0.hasDrafts()) && ctx_r0.selectionEnabled);
428
+ i0.ɵɵadvance(3);
429
+ i0.ɵɵproperty("ngIf", ctx_r0.selectionEnabled);
430
+ i0.ɵɵadvance(1);
431
+ i0.ɵɵproperty("ngForOf", ctx_r0.resultView.columns);
432
+ i0.ɵɵadvance(1);
433
+ i0.ɵɵproperty("ngIf", ctx_r0.activityEnabled());
434
+ i0.ɵɵadvance(2);
435
+ i0.ɵɵproperty("ngIf", ctx_r0.consumerSortingEnabled);
436
+ i0.ɵɵadvance(1);
437
+ i0.ɵɵproperty("ngIf", !ctx_r0.consumerSortingEnabled);
438
+ } }
439
+ function SearchResultComponent_ccd_pagination_1_Template(rf, ctx) { if (rf & 1) {
440
+ const _r78 = i0.ɵɵgetCurrentView();
441
+ i0.ɵɵelementStart(0, "ccd-pagination", 45);
442
+ i0.ɵɵlistener("pageChange", function SearchResultComponent_ccd_pagination_1_Template_ccd_pagination_pageChange_0_listener($event) { i0.ɵɵrestoreView(_r78); const ctx_r77 = i0.ɵɵnextContext(); return ctx_r77.goToPage($event); });
443
+ i0.ɵɵelementEnd();
444
+ } if (rf & 2) {
445
+ const ctx_r1 = i0.ɵɵnextContext();
446
+ i0.ɵɵproperty("visibilityLabel", ctx_r1.hideRows ? "hidden" : "visible")("autoHide", true)("maxSize", 8)("screenReaderPaginationLabel", "Pagination")("screenReaderPageLabel", ctx_r1.page)("screenReaderCurrentLabel", "You're on page");
447
+ } }
448
+ function SearchResultComponent_div_2_Template(rf, ctx) { if (rf & 1) {
449
+ i0.ɵɵelementStart(0, "div", 46);
450
+ i0.ɵɵtext(1, " No cases found. Try using different filters.\n");
451
+ i0.ɵɵelementEnd();
452
+ } }
453
+ export class SearchResultComponent {
454
+ constructor(searchResultViewItemComparatorFactory, appConfig, activityService, caseReferencePipe, placeholderService, browserService, cdr) {
455
+ this.activityService = activityService;
456
+ this.caseReferencePipe = caseReferencePipe;
457
+ this.placeholderService = placeholderService;
458
+ this.browserService = browserService;
459
+ this.cdr = cdr;
460
+ this.ICON = DisplayMode.ICON;
461
+ this.selectionEnabled = false;
462
+ this.showOnlySelected = false;
463
+ this.preSelectedCases = [];
464
+ this.consumerSortingEnabled = false;
465
+ this.selection = new EventEmitter();
466
+ this.changePage = new EventEmitter();
467
+ this.clickCase = new EventEmitter();
468
+ this.sortHandler = new EventEmitter();
469
+ this.paginationLimitEnforced = false;
470
+ this.selected = {};
471
+ this.consumerSortParameters = { column: null, order: null, type: null };
472
+ this.selectedCases = [];
473
+ this.PAGINATION_MAX_ITEM_RESULT = 10000;
474
+ this.searchResultViewItemComparatorFactory = searchResultViewItemComparatorFactory;
475
+ this.paginationPageSize = appConfig.getPaginationPageSize();
476
+ this.hideRows = false;
477
+ }
478
+ get resultTotal() {
479
+ const total = this.paginationMetadata.total_results_count;
480
+ const maximumResultReached = total >= this.PAGINATION_MAX_ITEM_RESULT;
481
+ this.paginationLimitEnforced = maximumResultReached;
482
+ return maximumResultReached ? this.PAGINATION_MAX_ITEM_RESULT : total;
483
+ }
484
+ ngAfterViewInit() {
485
+ if (this.preSelectedCases) {
486
+ for (const preSelectedCase of this.preSelectedCases) {
487
+ if (this.selectedCases && !this.selectedCases.some(aCase => aCase.case_id === preSelectedCase.case_id)) {
488
+ this.selectedCases.push(preSelectedCase);
489
+ }
490
+ }
491
+ }
492
+ this.selection.emit(this.selectedCases);
493
+ }
494
+ ngOnChanges(changes) {
495
+ if (changes['resultView']) {
496
+ this.hideRows = false;
497
+ this.sortParameters = undefined;
498
+ // Clone `resultView` to prevent sorting the external variable
499
+ this.resultView = {
500
+ columns: this.resultView.columns.slice(0),
501
+ results: this.resultView.results.slice(0),
502
+ hasDrafts: this.resultView.hasDrafts
503
+ };
504
+ this.resultView.columns = this.resultView.columns.sort((a, b) => {
505
+ return a.order - b.order;
506
+ });
507
+ this.hydrateResultView();
508
+ this.draftsCount = this.draftsCount ? this.draftsCount : this.numberOfDrafts();
509
+ this.cdr.detectChanges();
510
+ }
511
+ if (changes['page']) {
512
+ this.selected.page = (changes['page']).currentValue;
513
+ this.cdr.detectChanges();
514
+ }
515
+ }
516
+ clearSelection() {
517
+ this.selectedCases = [];
518
+ this.selection.emit(this.selectedCases);
519
+ }
520
+ canBeShared(caseView) {
521
+ return caseView.supplementary_data && caseView.supplementary_data.hasOwnProperty('orgs_assigned_users');
522
+ }
523
+ canAnyBeShared() {
524
+ for (let i = 0, l = this.resultView.results.length; i < l; i++) {
525
+ if (this.canBeShared(this.resultView.results[i])) {
526
+ return true;
527
+ }
528
+ }
529
+ return false;
530
+ }
531
+ selectAll() {
532
+ if (this.allOnPageSelected()) {
533
+ // all cases already selected, so unselect all on this page
534
+ this.resultView.results.forEach(c => {
535
+ this.selectedCases.forEach((s, i) => {
536
+ if (c.case_id === s.case_id) {
537
+ this.selectedCases.splice(i, 1);
538
+ }
539
+ });
540
+ });
541
+ }
542
+ else {
543
+ this.resultView.results.forEach(c => {
544
+ if (!this.isSelected(c) && this.canBeShared(c)) {
545
+ this.selectedCases.push(c);
546
+ }
547
+ });
548
+ }
549
+ this.selection.emit(this.selectedCases);
550
+ }
551
+ changeSelection(c) {
552
+ if (this.isSelected(c)) {
553
+ this.selectedCases.forEach((s, i) => {
554
+ if (c.case_id === s.case_id) {
555
+ this.selectedCases.splice(i, 1);
556
+ }
557
+ });
558
+ }
559
+ else {
560
+ if (this.canBeShared(c)) {
561
+ this.selectedCases.push(c);
562
+ }
563
+ }
564
+ this.selection.emit(this.selectedCases);
565
+ }
566
+ isSelected(c) {
567
+ for (let i = 0, l = this.selectedCases.length; i < l; i++) {
568
+ if (c.case_id === this.selectedCases[i].case_id) {
569
+ return true;
570
+ }
571
+ }
572
+ return false;
573
+ }
574
+ allOnPageSelected() {
575
+ let canBeSharedCount = 0;
576
+ for (let i = 0, l = this.resultView.results.length; i < l; i++) {
577
+ const r = this.resultView.results[i];
578
+ if (this.canBeShared(r)) {
579
+ canBeSharedCount++;
580
+ }
581
+ if (!this.isSelected(r) && this.canBeShared(r)) {
582
+ return false;
583
+ }
584
+ }
585
+ if (canBeSharedCount === 0) {
586
+ return false;
587
+ }
588
+ return true;
589
+ }
590
+ /**
591
+ * Hydrates result view with case field definitions.
592
+ */
593
+ // A longer term resolution is to move this piece of logic to the backend
594
+ hydrateResultView() {
595
+ this.resultView.results.forEach(result => {
596
+ const caseFields = [];
597
+ Object.keys(result.case_fields).forEach(fieldId => {
598
+ const field = result.case_fields[fieldId];
599
+ caseFields.push(Object.assign(new CaseField(), {
600
+ id: fieldId,
601
+ label: null,
602
+ field_type: {},
603
+ value: field,
604
+ display_context: null,
605
+ }));
606
+ });
607
+ result.hydrated_case_fields = caseFields;
608
+ result.columns = {};
609
+ this.resultView.columns.forEach(col => {
610
+ result.columns[col.case_field_id] = this.buildCaseField(col, result);
611
+ });
612
+ });
613
+ }
614
+ goToPage(page) {
615
+ this.hideRows = true;
616
+ this.selected.init = false;
617
+ this.selected.jurisdiction = this.jurisdiction;
618
+ this.selected.caseType = this.caseType;
619
+ this.selected.caseState = this.caseState;
620
+ this.selected.formGroup = this.caseFilterFG;
621
+ this.selected.metadataFields = this.metadataFields;
622
+ this.selected.page = page;
623
+ // Apply filters
624
+ const queryParams = {};
625
+ queryParams[SearchResultComponent.PARAM_JURISDICTION] = this.selected.jurisdiction ? this.selected.jurisdiction.id : null;
626
+ queryParams[SearchResultComponent.PARAM_CASE_TYPE] = this.selected.caseType ? this.selected.caseType.id : null;
627
+ queryParams[SearchResultComponent.PARAM_CASE_STATE] = this.selected.caseState ? this.selected.caseState.id : null;
628
+ this.changePage.emit({
629
+ selected: this.selected,
630
+ queryParams
631
+ });
632
+ const topContainer = document.getElementById('top');
633
+ if (topContainer) {
634
+ if (document.activeElement instanceof HTMLElement) {
635
+ document.activeElement.blur();
636
+ }
637
+ topContainer.focus();
638
+ }
639
+ }
640
+ buildCaseField(col, result) {
641
+ return Object.assign(new CaseField(), {
642
+ id: col.case_field_id,
643
+ label: col.label,
644
+ field_type: col.case_field_type,
645
+ value: result.case_fields[col.case_field_id],
646
+ display_context_parameter: col.display_context_parameter,
647
+ display_context: col.display_context,
648
+ });
649
+ }
650
+ getColumnsWithPrefix(col, result) {
651
+ col.value = this.draftPrefixOrGet(col, result);
652
+ col.value = this.placeholderService.resolvePlaceholders(result.case_fields, col.value);
653
+ return col;
654
+ }
655
+ hasResults() {
656
+ return this.resultView.results.length && this.paginationMetadata.total_pages_count;
657
+ }
658
+ hasDrafts() {
659
+ return this.resultView.hasDrafts();
660
+ }
661
+ comparator(column) {
662
+ return this.searchResultViewItemComparatorFactory.createSearchResultViewItemComparator(column);
663
+ }
664
+ sort(column) {
665
+ if (this.consumerSortingEnabled) {
666
+ if (column.case_field_id !== this.consumerSortParameters.column) {
667
+ this.consumerSortParameters.order = SortOrder.DESCENDING;
668
+ }
669
+ else {
670
+ this.consumerSortParameters.order = this.consumerSortParameters.order === SortOrder.DESCENDING ?
671
+ SortOrder.ASCENDING :
672
+ SortOrder.DESCENDING;
673
+ }
674
+ this.consumerSortParameters.column = column.case_field_id;
675
+ this.consumerSortParameters.type = column.case_field_type.type;
676
+ this.sortHandler.emit(this.consumerSortParameters);
677
+ }
678
+ else {
679
+ if (this.comparator(column) === undefined) {
680
+ return;
681
+ }
682
+ else if (this.isSortAscending(column)) {
683
+ this.sortParameters = new SortParameters(this.comparator(column), SortOrder.ASCENDING);
684
+ }
685
+ else {
686
+ this.sortParameters = new SortParameters(this.comparator(column), SortOrder.DESCENDING);
687
+ }
688
+ }
689
+ }
690
+ sortWidget(column) {
691
+ let condition = false;
692
+ if (this.consumerSortingEnabled) {
693
+ const isColumn = column.case_field_id === this.consumerSortParameters.column;
694
+ const isAscending = this.consumerSortParameters.order === SortOrder.ASCENDING;
695
+ condition = !isColumn || (isColumn && isAscending);
696
+ }
697
+ else {
698
+ condition = this.isSortAscending(column);
699
+ }
700
+ return condition ? '&#9660;' : '&#9650;';
701
+ }
702
+ activityEnabled() {
703
+ return this.activityService.isEnabled;
704
+ }
705
+ hyphenateIfCaseReferenceOrGet(col, result) {
706
+ if (col.case_field_id === '[CASE_REFERENCE]') {
707
+ return this.caseReferencePipe.transform(result.case_fields[col.case_field_id]);
708
+ }
709
+ else {
710
+ if (col.id) {
711
+ if (col.id === '[CASE_REFERENCE]') {
712
+ return this.caseReferencePipe.transform(result.case_fields[col.id]);
713
+ }
714
+ else {
715
+ return result.case_fields[col.id];
716
+ }
717
+ }
718
+ else {
719
+ return result.case_fields[col.case_field_id];
720
+ }
721
+ }
722
+ }
723
+ draftPrefixOrGet(col, result) {
724
+ return result.case_id.startsWith(DRAFT_PREFIX) ? DRAFT_PREFIX : this.hyphenateIfCaseReferenceOrGet(col, result);
725
+ }
726
+ getFirstResult() {
727
+ const currentPage = (this.selected.page ? this.selected.page : 1);
728
+ return ((currentPage - 1) * this.paginationPageSize) + 1 + this.getDraftsCountIfNotPageOne(currentPage);
729
+ }
730
+ getLastResult() {
731
+ const currentPage = (this.selected.page ? this.selected.page : 1);
732
+ return ((currentPage - 1) * this.paginationPageSize) + this.resultView.results.length + this.getDraftsCountIfNotPageOne(currentPage);
733
+ }
734
+ getTotalResults() {
735
+ const total = this.paginationMetadata.total_results_count + this.draftsCount;
736
+ return total >= this.PAGINATION_MAX_ITEM_RESULT ? this.PAGINATION_MAX_ITEM_RESULT : total;
737
+ }
738
+ prepareCaseLinkUrl(caseId) {
739
+ let url = this.caseLinkUrlTemplate;
740
+ url = url.replace('jurisdiction_id', this.jurisdiction.id);
741
+ url = url.replace('caseType_id', this.caseType.id);
742
+ url = url.replace('case_id', caseId);
743
+ return url;
744
+ }
745
+ goToCase(caseId) {
746
+ this.clickCase.emit({
747
+ caseId
748
+ });
749
+ }
750
+ onKeyUp($event, c) {
751
+ if ($event.key === 'Space') {
752
+ if (this.browserService.isFirefox || this.browserService.isSafari || this.browserService.isIEOrEdge) {
753
+ this.changeSelection(c);
754
+ }
755
+ }
756
+ }
757
+ isSortAscending(column) {
758
+ const currentSortOrder = this.currentSortOrder(column);
759
+ return currentSortOrder === SortOrder.UNSORTED || currentSortOrder === SortOrder.DESCENDING;
760
+ }
761
+ sortLabelText(label, isAscending) {
762
+ return `Sort by ${label} ${isAscending ? 'ascending' : 'descending'}`;
763
+ }
764
+ currentSortOrder(column) {
765
+ let isAscending = true;
766
+ let isDescending = true;
767
+ if (this.comparator(column) === undefined) {
768
+ return SortOrder.UNSORTED;
769
+ }
770
+ for (let i = 0; i < this.resultView.results.length - 1; i++) {
771
+ const comparison = this.comparator(column).compare(this.resultView.results[i], this.resultView.results[i + 1]);
772
+ isDescending = isDescending && comparison <= 0;
773
+ isAscending = isAscending && comparison >= 0;
774
+ if (!isAscending && !isDescending) {
775
+ break;
776
+ }
777
+ }
778
+ return isAscending ? SortOrder.ASCENDING : isDescending ? SortOrder.DESCENDING : SortOrder.UNSORTED;
779
+ }
780
+ getDraftsCountIfNotPageOne(currentPage) {
781
+ return currentPage > 1 ? this.draftsCount : 0;
782
+ }
783
+ numberOfDrafts() {
784
+ return this.resultView.results.filter(_ => _.case_id.startsWith(DRAFT_PREFIX)).length;
785
+ }
786
+ }
787
+ SearchResultComponent.PARAM_JURISDICTION = 'jurisdiction';
788
+ SearchResultComponent.PARAM_CASE_TYPE = 'case-type';
789
+ SearchResultComponent.PARAM_CASE_STATE = 'case-state';
790
+ SearchResultComponent.ɵfac = function SearchResultComponent_Factory(t) { return new (t || SearchResultComponent)(i0.ɵɵdirectiveInject(i1.SearchResultViewItemComparatorFactory), i0.ɵɵdirectiveInject(i2.AbstractAppConfig), i0.ɵɵdirectiveInject(i3.ActivityService), i0.ɵɵdirectiveInject(i4.CaseReferencePipe), i0.ɵɵdirectiveInject(i5.PlaceholderService), i0.ɵɵdirectiveInject(i6.BrowserService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
791
+ SearchResultComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SearchResultComponent, selectors: [["ccd-search-result"]], inputs: { caseLinkUrlTemplate: "caseLinkUrlTemplate", jurisdiction: "jurisdiction", caseType: "caseType", caseState: "caseState", caseFilterFG: "caseFilterFG", resultView: "resultView", page: "page", paginationMetadata: "paginationMetadata", metadataFields: "metadataFields", selectionEnabled: "selectionEnabled", showOnlySelected: "showOnlySelected", preSelectedCases: "preSelectedCases", consumerSortingEnabled: "consumerSortingEnabled" }, outputs: { selection: "selection", changePage: "changePage", clickCase: "clickCase", sortHandler: "sortHandler" }, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 3, consts: [[4, "ngIf"], [3, "visibilityLabel", "autoHide", "maxSize", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel", "pageChange", 4, "ngIf"], ["class", "notification", "aria-label", "No cases found. Try using different filters.", 4, "ngIf"], ["id", "search-result-heading__text", "tabindex", "-1", 1, "heading-h2"], ["class", "govuk-warning-text pagination-limit-warning", 4, "ngIf"], ["class", "pagination-top", "role", "status", 4, "ngIf"], ["class", "reset-selection", "attr.aria-label", "Reset selection", 4, "ngIf"], ["scope", "row"], ["class", "govuk-table__checkbox", "scope", "col", 4, "ngIf"], [4, "ngFor", "ngForOf"], ["class", "search-result-column-activity", "style", "width: 110px;", 4, "ngIf"], [1, "govuk-warning-text", "pagination-limit-warning"], ["aria-hidden", "true", 1, "govuk-warning-text__icon"], [1, "govuk-warning-text__text"], [1, "govuk-warning-text__assistive"], ["role", "status", 1, "pagination-top"], ["id", "search-result-summary__text", 1, "text-16"], [1, "govuk-!-font-weight-bold"], ["attr.aria-label", "Reset selection", 1, "reset-selection"], ["href", "javascript:void()", 1, "search-result-reset-link", 3, "click"], ["scope", "col", 1, "govuk-table__checkbox"], [1, "govuk-checkboxes__item"], ["id", "select-all", "name", "select-all", "type", "checkbox", 1, "govuk-checkboxes__input", 3, "checked", "disabled", "change"], ["for", "select-all", 1, "govuk-label", "govuk-checkboxes__label"], [1, "search-result-column-header"], [2, "display", "none"], [1, "search-result-column-label", 3, "click"], ["class", "search-result-column-sort", 4, "ngIf"], [1, "search-result-column-sort"], ["href", "javascript:void(0)", 1, "sort-widget", 3, "innerHTML", "click"], [1, "search-result-column-activity", 2, "width", "110px"], ["class", "search-result-column-cell", "scope", "row", 4, "ngFor", "ngForOf"], ["type", "checkbox", 1, "govuk-checkboxes__input", 3, "id", "name", "checked", "disabled", "change"], [1, "govuk-label", "govuk-checkboxes__label", 3, "for"], ["scope", "row", 1, "search-result-column-cell"], ["class", "govuk-link", 3, "routerLink", 4, "ngIf"], ["class", "text-16", 3, "visibility", 4, "ngIf"], [1, "govuk-link", 3, "routerLink"], ["class", "text-16", 4, "ngIf"], [1, "text-16"], ["ccdLabelSubstitutor", "", 3, "caseField", "contextFields", "elementsToSubstitute", 4, "ngIf", "ngIfElse"], ["case_reference", ""], ["ccdLabelSubstitutor", "", 3, "caseField", "contextFields", "elementsToSubstitute"], [3, "caseId", "displayMode"], ["type", "checkbox", 1, "govuk-checkboxes__input", 3, "id", "name", "checked", "disabled", "change", "keyup"], [3, "visibilityLabel", "autoHide", "maxSize", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel", "pageChange"], ["aria-label", "No cases found. Try using different filters.", 1, "notification"]], template: function SearchResultComponent_Template(rf, ctx) { if (rf & 1) {
792
+ i0.ɵɵtemplate(0, SearchResultComponent_table_0_Template, 15, 9, "table", 0);
793
+ i0.ɵɵtemplate(1, SearchResultComponent_ccd_pagination_1_Template, 1, 6, "ccd-pagination", 1);
794
+ i0.ɵɵtemplate(2, SearchResultComponent_div_2_Template, 2, 0, "div", 2);
795
+ } if (rf & 2) {
796
+ i0.ɵɵproperty("ngIf", ctx.hasResults() || ctx.hasDrafts());
797
+ i0.ɵɵadvance(1);
798
+ i0.ɵɵproperty("ngIf", ctx.hasResults());
799
+ i0.ɵɵadvance(1);
800
+ i0.ɵɵproperty("ngIf", !(ctx.hasResults() || ctx.hasDrafts()));
801
+ } }, directives: [i7.NgIf, i7.NgForOf, i8.RouterLinkWithHref, i9.LabelSubstitutorDirective, i10.ActivityComponent, i11.PaginationComponent], pipes: [i7.DecimalPipe, i12.PaginatePipe, i4.CaseReferencePipe, i13.SortSearchResultPipe], styles: ["table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{vertical-align:top}table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{font-size:16px;word-wrap:break-word}table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{float:left}table[_ngcontent-%COMP%] .caseid-col[_ngcontent-%COMP%]{white-space:nowrap}.notification[_ngcontent-%COMP%]{text-align:center;padding:30px 0;margin-top:75px}a[_ngcontent-%COMP%]:hover{color:#005ea5}.search-result-reset-link[_ngcontent-%COMP%]{padding-right:15px;padding-left:15px}.search-result-column-header[_ngcontent-%COMP%]{width:unset;table-layout:normal}.search-result-column-header[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:table-cell;width:auto}@media screen and (max-width:379px){.search-result-column-header[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:block;float:right}}.search-result-column-label[_ngcontent-%COMP%]{font-size:16px;font-weight:700;word-wrap:break-word;cursor:pointer;padding-right:15px}.search-result-column-sort[_ngcontent-%COMP%]{font-size:16px}.sort-widget[_ngcontent-%COMP%]{cursor:pointer;text-decoration:none;color:#231f20}span.heading-medium[_ngcontent-%COMP%]{margin-top:-20px}.govuk-table__checkbox[_ngcontent-%COMP%]{vertical-align:middle;padding-left:3px}#search-result-heading__text[_ngcontent-%COMP%]:focus{outline:none}"], changeDetection: 0 });
802
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultComponent, [{
803
+ type: Component,
804
+ args: [{
805
+ selector: 'ccd-search-result',
806
+ templateUrl: './search-result.component.html',
807
+ styleUrls: ['./search-result.component.scss'],
808
+ changeDetection: ChangeDetectionStrategy.OnPush
809
+ }]
810
+ }], function () { return [{ type: i1.SearchResultViewItemComparatorFactory }, { type: i2.AbstractAppConfig }, { type: i3.ActivityService }, { type: i4.CaseReferencePipe }, { type: i5.PlaceholderService }, { type: i6.BrowserService }, { type: i0.ChangeDetectorRef }]; }, { caseLinkUrlTemplate: [{
811
+ type: Input
812
+ }], jurisdiction: [{
813
+ type: Input
814
+ }], caseType: [{
815
+ type: Input
816
+ }], caseState: [{
817
+ type: Input
818
+ }], caseFilterFG: [{
819
+ type: Input
820
+ }], resultView: [{
821
+ type: Input
822
+ }], page: [{
823
+ type: Input
824
+ }], paginationMetadata: [{
825
+ type: Input
826
+ }], metadataFields: [{
827
+ type: Input
828
+ }], selectionEnabled: [{
829
+ type: Input
830
+ }], showOnlySelected: [{
831
+ type: Input
832
+ }], preSelectedCases: [{
833
+ type: Input
834
+ }], consumerSortingEnabled: [{
835
+ type: Input
836
+ }], selection: [{
837
+ type: Output
838
+ }], changePage: [{
839
+ type: Output
840
+ }], clickCase: [{
841
+ type: Output
842
+ }], sortHandler: [{
843
+ type: Output
844
+ }] }); })();
845
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvc2VhcmNoLXJlc3VsdC9zZWFyY2gtcmVzdWx0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zZWFyY2gtcmVzdWx0L3NlYXJjaC1yZXN1bHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVKLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMvRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUc1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUs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QVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3hGLENBQUM7O0FBN2JzQix3Q0FBa0IsR0FBRyxjQUFjLENBQUM7QUFDcEMscUNBQWUsR0FBRyxXQUFXLENBQUM7QUFDOUIsc0NBQWdCLEdBQUcsWUFBWSxDQUFDOzBGQUo1QyxxQkFBcUI7MERBQXJCLHFCQUFxQjtRQzVCbEMsMkVBK0hRO1FBRVIsNEZBUWtFO1FBRWxFLHNFQUdNOztRQTlJRSwwREFBaUM7UUFrSXRDLGVBQWtCO1FBQWxCLHVDQUFrQjtRQVNmLGVBQW9DO1FBQXBDLDZEQUFvQzs7dUZEL0c3QixxQkFBcUI7Y0FOakMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFdBQVcsRUFBRSxnQ0FBZ0M7Z0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2dCQUM3QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDtvUkFVUSxtQkFBbUI7a0JBRHpCLEtBQUs7WUFJQyxZQUFZO2tCQURsQixLQUFLO1lBSUMsUUFBUTtrQkFEZCxLQUFLO1lBSUMsU0FBUztrQkFEZixLQUFLO1lBSUMsWUFBWTtrQkFEbEIsS0FBSztZQUlDLFVBQVU7a0JBRGhCLEtBQUs7WUFJQyxJQUFJO2tCQURWLEtBQUs7WUFJQyxrQkFBa0I7a0JBRHhCLEtBQUs7WUFJQyxjQUFjO2tCQURwQixLQUFLO1lBSUMsZ0JBQWdCO2tCQUR0QixLQUFLO1lBSUMsZ0JBQWdCO2tCQUR0QixLQUFLO1lBSUMsZ0JBQWdCO2tCQUR0QixLQUFLO1lBSUMsc0JBQXNCO2tCQUQ1QixLQUFLO1lBSUMsU0FBUztrQkFEZixNQUFNO1lBSUEsVUFBVTtrQkFEaEIsTUFBTTtZQUlBLFNBQVM7a0JBRGYsTUFBTTtZQUlBLFdBQVc7a0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFic3RyYWN0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vYXBwLmNvbmZpZyc7XG5pbXBvcnQgeyBQbGFjZWhvbGRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3N1YnN0aXR1dG9yL3NlcnZpY2VzL3BsYWNlaG9sZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlzcGxheU1vZGUgfSBmcm9tICcuLi8uLi9kb21haW4vYWN0aXZpdHkvYWN0aXZpdHkubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlU3RhdGUgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLXN0YXRlLm1vZGVsJztcbmltcG9ydCB7IENhc2VUeXBlIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS10eXBlLm1vZGVsJztcbmltcG9ydCB7IEp1cmlzZGljdGlvbiB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2p1cmlzZGljdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBEUkFGVF9QUkVGSVggfSBmcm9tICcuLi8uLi9kb21haW4vZHJhZnQubW9kZWwnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vZG9tYWluL3BhZ2luYXRpb24tbWV0YWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0Vmlld0NvbHVtbiB9IGZyb20gJy4uLy4uL2RvbWFpbi9zZWFyY2gvc2VhcmNoLXJlc3VsdC12aWV3LWNvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHRWaWV3SXRlbSB9IGZyb20gJy4uLy4uL2RvbWFpbi9zZWFyY2gvc2VhcmNoLXJlc3VsdC12aWV3LWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0VmlldyB9IGZyb20gJy4uLy4uL2RvbWFpbi9zZWFyY2gvc2VhcmNoLXJlc3VsdC12aWV3Lm1vZGVsJztcbmltcG9ydCB7IFNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvciB9IGZyb20gJy4uLy4uL2RvbWFpbi9zZWFyY2gvc29ydGluZy9zZWFyY2gtcmVzdWx0LXZpZXctaXRlbS1jb21wYXJhdG9yJztcbmltcG9ydCB7IFNvcnRPcmRlciB9IGZyb20gJy4uLy4uL2RvbWFpbi9zZWFyY2gvc29ydGluZy9zb3J0LW9yZGVyJztcbmltcG9ydCB7IFNvcnRQYXJhbWV0ZXJzIH0gZnJvbSAnLi4vLi4vZG9tYWluL3NlYXJjaC9zb3J0aW5nL3NvcnQtcGFyYW1ldGVycyc7XG5pbXBvcnQgeyBDYXNlUmVmZXJlbmNlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2Nhc2UtcmVmZXJlbmNlL2Nhc2UtcmVmZXJlbmNlLnBpcGUnO1xuaW1wb3J0IHsgQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWN0aXZpdHkvYWN0aXZpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jyb3dzZXIvYnJvd3Nlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3RvcnkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWFyY2gtcmVzdWx0L3NvcnRpbmcvc2VhcmNoLXJlc3VsdC12aWV3LWl0ZW0tY29tcGFyYXRvci1mYWN0b3J5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXNlYXJjaC1yZXN1bHQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXJlc3VsdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1yZXN1bHQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkFNX0pVUklTRElDVElPTiA9ICdqdXJpc2RpY3Rpb24nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkFNX0NBU0VfVFlQRSA9ICdjYXNlLXR5cGUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkFNX0NBU0VfU1RBVEUgPSAnY2FzZS1zdGF0ZSc7XG5cbiAgcHVibGljIElDT04gPSBEaXNwbGF5TW9kZS5JQ09OO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYXNlTGlua1VybFRlbXBsYXRlOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGp1cmlzZGljdGlvbjogSnVyaXNkaWN0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYXNlVHlwZTogQ2FzZVR5cGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VTdGF0ZTogQ2FzZVN0YXRlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYXNlRmlsdGVyRkc6IEZvcm1Hcm91cDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVzdWx0VmlldzogU2VhcmNoUmVzdWx0VmlldztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcGFnZTogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYWdpbmF0aW9uTWV0YWRhdGE6IFBhZ2luYXRpb25NZXRhZGF0YTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWV0YWRhdGFGaWVsZHM6IHN0cmluZ1tdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3Rpb25FbmFibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dPbmx5U2VsZWN0ZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcHJlU2VsZWN0ZWRDYXNlczogU2VhcmNoUmVzdWx0Vmlld0l0ZW1bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb25zdW1lclNvcnRpbmdFbmFibGVkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaFJlc3VsdFZpZXdJdGVtW10+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjaGFuZ2VQYWdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNsaWNrQ2FzZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzb3J0SGFuZGxlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHBhZ2luYXRpb25MaW1pdEVuZm9yY2VkID0gZmFsc2U7XG5cbiAgcHVibGljIHBhZ2luYXRpb25QYWdlU2l6ZTogbnVtYmVyO1xuXG4gIHB1YmxpYyBoaWRlUm93czogYm9vbGVhbjtcblxuICBwdWJsaWMgc2VsZWN0ZWQ6IHtcbiAgICBpbml0PzogYm9vbGVhbixcbiAgICBqdXJpc2RpY3Rpb24/OiBKdXJpc2RpY3Rpb24sXG4gICAgY2FzZVR5cGU/OiBDYXNlVHlwZSxcbiAgICBjYXNlU3RhdGU/OiBDYXNlU3RhdGUsXG4gICAgZm9ybUdyb3VwPzogRm9ybUdyb3VwLFxuICAgIG1ldGFkYXRhRmllbGRzPzogc3RyaW5nW10sXG4gICAgcGFnZT86IG51bWJlclxuICB9ID0ge307XG5cbiAgcHVibGljIHNvcnRQYXJhbWV0ZXJzOiBTb3J0UGFyYW1ldGVycztcbiAgcHVibGljIHNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3Rvcnk6IFNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3Rvcnk7XG4gIHB1YmxpYyBkcmFmdHNDb3VudDogbnVtYmVyO1xuXG4gIHB1YmxpYyBjb25zdW1lclNvcnRQYXJhbWV0ZXJzOiB7IGNvbHVtbjogc3RyaW5nLCBvcmRlcjogU29ydE9yZGVyLCB0eXBlOiBzdHJpbmcgfSA9IHsgY29sdW1uOiBudWxsLCBvcmRlcjogbnVsbCwgdHlwZTogbnVsbCB9O1xuXG4gIHB1YmxpYyBzZWxlY3RlZENhc2VzOiBTZWFyY2hSZXN1bHRWaWV3SXRlbVtdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBQQUdJTkFUSU9OX01BWF9JVEVNX1JFU1VMVCA9IDEwMDAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3Rvcnk6IFNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3RvcnksXG4gICAgYXBwQ29uZmlnOiBBYnN0cmFjdEFwcENvbmZpZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2aXR5U2VydmljZTogQWN0aXZpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZVJlZmVyZW5jZVBpcGU6IENhc2VSZWZlcmVuY2VQaXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhY2Vob2xkZXJTZXJ2aWNlOiBQbGFjZWhvbGRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBicm93c2VyU2VydmljZTogQnJvd3NlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0Vmlld0l0ZW1Db21wYXJhdG9yRmFjdG9yeSA9IHNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3Rvcnk7XG4gICAgdGhpcy5wYWdpbmF0aW9uUGFnZVNpemUgPSBhcHBDb25maWcuZ2V0UGFnaW5hdGlvblBhZ2VTaXplKCk7XG4gICAgdGhpcy5oaWRlUm93cyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCByZXN1bHRUb3RhbCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5wYWdpbmF0aW9uTWV0YWRhdGEudG90YWxfcmVzdWx0c19jb3VudDtcbiAgICBjb25zdCBtYXhpbXVtUmVzdWx0UmVhY2hlZCA9IHRvdGFsID49IHRoaXMuUEFHSU5BVElPTl9NQVhfSVRFTV9SRVNVTFQ7XG4gICAgdGhpcy5wYWdpbmF0aW9uTGltaXRFbmZvcmNlZCA9IG1heGltdW1SZXN1bHRSZWFjaGVkO1xuXG4gICAgcmV0dXJuIG1heGltdW1SZXN1bHRSZWFjaGVkID8gdGhpcy5QQUdJTkFUSU9OX01BWF9JVEVNX1JFU1VMVCA6IHRvdGFsO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmVTZWxlY3RlZENhc2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IHByZVNlbGVjdGVkQ2FzZSBvZiB0aGlzLnByZVNlbGVjdGVkQ2FzZXMpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDYXNlcyAmJiAhdGhpcy5zZWxlY3RlZENhc2VzLnNvbWUoYUNhc2UgPT4gYUNhc2UuY2FzZV9pZCA9PT0gcHJlU2VsZWN0ZWRDYXNlLmNhc2VfaWQpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VzLnB1c2gocHJlU2VsZWN0ZWRDYXNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbi5lbWl0KHRoaXMuc2VsZWN0ZWRDYXNlcyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXG4gICAgaWYgKGNoYW5nZXNbJ3Jlc3VsdFZpZXcnXSkge1xuICAgICAgdGhpcy5oaWRlUm93cyA9IGZhbHNlO1xuXG4gICAgICB0aGlzLnNvcnRQYXJhbWV0ZXJzID0gdW5kZWZpbmVkO1xuICAgICAgLy8gQ2xvbmUgYHJlc3VsdFZpZXdgIHRvIHByZXZlbnQgc29ydGluZyB0aGUgZXh0ZXJuYWwgdmFyaWFibGVcbiAgICAgIHRoaXMucmVzdWx0VmlldyA9IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5yZXN1bHRWaWV3LmNvbHVtbnMuc2xpY2UoMCksXG4gICAgICAgIHJlc3VsdHM6IHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzLnNsaWNlKDApLFxuICAgICAgICBoYXNEcmFmdHM6IHRoaXMucmVzdWx0Vmlldy5oYXNEcmFmdHNcbiAgICAgIH07XG5cbiAgICAgIHRoaXMucmVzdWx0Vmlldy5jb2x1bW5zID0gdGhpcy5yZXN1bHRWaWV3LmNvbHVtbnMuc29ydCgoYTogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbiwgYjogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbikgPT4ge1xuICAgICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5oeWRyYXRlUmVzdWx0VmlldygpO1xuICAgICAgdGhpcy5kcmFmdHNDb3VudCA9IHRoaXMuZHJhZnRzQ291bnQgPyB0aGlzLmRyYWZ0c0NvdW50IDogdGhpcy5udW1iZXJPZkRyYWZ0cygpO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydwYWdlJ10pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQucGFnZSA9IChjaGFuZ2VzWydwYWdlJ10pLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZENhc2VzID0gW107XG4gICAgdGhpcy5zZWxlY3Rpb24uZW1pdCh0aGlzLnNlbGVjdGVkQ2FzZXMpO1xuICB9XG5cbiAgcHVibGljIGNhbkJlU2hhcmVkKGNhc2VWaWV3OiBTZWFyY2hSZXN1bHRWaWV3SXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYXNlVmlldy5zdXBwbGVtZW50YXJ5X2RhdGEgJiYgY2FzZVZpZXcuc3VwcGxlbWVudGFyeV9kYXRhLmhhc093blByb3BlcnR5KCdvcmdzX2Fzc2lnbmVkX3VzZXJzJyk7XG4gIH1cblxuICBwdWJsaWMgY2FuQW55QmVTaGFyZWQoKTogYm9vbGVhbiB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aGlzLnJlc3VsdFZpZXcucmVzdWx0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNhbkJlU2hhcmVkKHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzW2ldKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGxPblBhZ2VTZWxlY3RlZCgpKSB7XG4gICAgICAvLyBhbGwgY2FzZXMgYWxyZWFkeSBzZWxlY3RlZCwgc28gdW5zZWxlY3QgYWxsIG9uIHRoaXMgcGFnZVxuICAgICAgdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VzLmZvckVhY2goKHMsIGkpID0+IHtcbiAgICAgICAgICBpZiAoYy5jYXNlX2lkID09PSBzLmNhc2VfaWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3VsdFZpZXcucmVzdWx0cy5mb3JFYWNoKGMgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChjKSAmJiB0aGlzLmNhbkJlU2hhcmVkKGMpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VzLnB1c2goYyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbi5lbWl0KHRoaXMuc2VsZWN0ZWRDYXNlcyk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlU2VsZWN0aW9uKGM6IFNlYXJjaFJlc3VsdFZpZXdJdGVtKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChjKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZENhc2VzLmZvckVhY2goKHMsIGkpID0+IHtcbiAgICAgICAgaWYgKGMuY2FzZV9pZCA9PT0gcy5jYXNlX2lkKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VzLnNwbGljZShpLCAxKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNhbkJlU2hhcmVkKGMpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcy5wdXNoKGMpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbi5lbWl0KHRoaXMuc2VsZWN0ZWRDYXNlcyk7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxlY3RlZChjOiBTZWFyY2hSZXN1bHRWaWV3SXRlbSk6IGJvb2xlYW4ge1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gdGhpcy5zZWxlY3RlZENhc2VzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGMuY2FzZV9pZCA9PT0gdGhpcy5zZWxlY3RlZENhc2VzW2ldLmNhc2VfaWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhbGxPblBhZ2VTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBsZXQgY2FuQmVTaGFyZWRDb3VudCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aGlzLnJlc3VsdFZpZXcucmVzdWx0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHIgPSB0aGlzLnJlc3VsdFZpZXcucmVzdWx0c1tpXTtcbiAgICAgIGlmICh0aGlzLmNhbkJlU2hhcmVkKHIpKSB7XG4gICAgICAgIGNhbkJlU2hhcmVkQ291bnQgKys7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChyKSAmJiB0aGlzLmNhbkJlU2hhcmVkKHIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNhbkJlU2hhcmVkQ291bnQgPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogSHlkcmF0ZXMgcmVzdWx0IHZpZXcgd2l0aCBjYXNlIGZpZWxkIGRlZmluaXRpb25zLlxuICAgKi9cbiAgLy8gQSBsb25nZXIgdGVybSByZXNvbHV0aW9uIGlzIHRvIG1vdmUgdGhpcyBwaWVjZSBvZiBsb2dpYyB0byB0aGUgYmFja2VuZFxuICBwdWJsaWMgaHlkcmF0ZVJlc3VsdFZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgICAgY29uc3QgY2FzZUZpZWxkcyA9IFtdO1xuXG4gICAgICBPYmplY3Qua2V5cyhyZXN1bHQuY2FzZV9maWVsZHMpLmZvckVhY2goZmllbGRJZCA9PiB7XG5cbiAgICAgICAgY29uc3QgZmllbGQgPSByZXN1bHQuY2FzZV9maWVsZHNbZmllbGRJZF07XG5cbiAgICAgICAgY2FzZUZpZWxkcy5wdXNoKE9iamVjdC5hc3NpZ24obmV3IENhc2VGaWVsZCgpLCB7XG4gICAgICAgICAgaWQ6IGZpZWxkSWQsXG4gICAgICAgICAgbGFiZWw6IG51bGwsXG4gICAgICAgICAgZmllbGRfdHlwZToge30sXG4gICAgICAgICAgdmFsdWU6IGZpZWxkLFxuICAgICAgICAgIGRpc3BsYXlfY29udGV4dDogbnVsbCxcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJlc3VsdC5oeWRyYXRlZF9jYXNlX2ZpZWxkcyA9IGNhc2VGaWVsZHM7XG4gICAgICByZXN1bHQuY29sdW1ucyA9IHt9O1xuXG4gICAgICB0aGlzLnJlc3VsdFZpZXcuY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgIHJlc3VsdC5jb2x1bW5zW2NvbC5jYXNlX2ZpZWxkX2lkXSA9IHRoaXMuYnVpbGRDYXNlRmllbGQoY29sLCByZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIHB1YmxpYyBnb1RvUGFnZShwYWdlKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlUm93cyA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RlZC5pbml0ID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSB0aGlzLmp1cmlzZGljdGlvbjtcbiAgICB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlID0gdGhpcy5jYXNlVHlwZTtcbiAgICB0aGlzLnNlbGVjdGVkLmNhc2VTdGF0ZSA9IHRoaXMuY2FzZVN0YXRlO1xuICAgIHRoaXMuc2VsZWN0ZWQuZm9ybUdyb3VwID0gdGhpcy5jYXNlRmlsdGVyRkc7XG4gICAgdGhpcy5zZWxlY3RlZC5tZXRhZGF0YUZpZWxkcyA9IHRoaXMubWV0YWRhdGFGaWVsZHM7XG4gICAgdGhpcy5zZWxlY3RlZC5wYWdlID0gcGFnZTtcbiAgICAvLyBBcHBseSBmaWx0ZXJzXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICBxdWVyeVBhcmFtc1tTZWFyY2hSZXN1bHRDb21wb25lbnQuUEFSQU1fSlVSSVNESUNUSU9OXSA9IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID8gdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uaWQgOiBudWxsO1xuICAgIHF1ZXJ5UGFyYW1zW1NlYXJjaFJlc3VsdENvbXBvbmVudC5QQVJBTV9DQVNFX1RZUEVdID0gdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA/IHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuaWQgOiBudWxsO1xuICAgIHF1ZXJ5UGFyYW1zW1NlYXJjaFJlc3VsdENvbXBvbmVudC5QQVJBTV9DQVNFX1NUQVRFXSA9IHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlID8gdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUuaWQgOiBudWxsO1xuICAgIHRoaXMuY2hhbmdlUGFnZS5lbWl0KHtcbiAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgcXVlcnlQYXJhbXNcbiAgICB9KTtcblxuICAgIGNvbnN0IHRvcENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3AnKTtcbiAgICBpZiAodG9wQ29udGFpbmVyKSB7XG4gICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgfVxuICAgICAgdG9wQ29udGFpbmVyLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJ1aWxkQ2FzZUZpZWxkKGNvbDogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbiwgcmVzdWx0OiBTZWFyY2hSZXN1bHRWaWV3SXRlbSk6IENhc2VGaWVsZCB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IENhc2VGaWVsZCgpLCB7XG4gICAgICBpZDogY29sLmNhc2VfZmllbGRfaWQsXG4gICAgICBsYWJlbDogY29sLmxhYmVsLFxuICAgICAgZmllbGRfdHlwZTogY29sLmNhc2VfZmllbGRfdHlwZSxcbiAgICAgIHZhbHVlOiByZXN1bHQuY2FzZV9maWVsZHNbY29sLmNhc2VfZmllbGRfaWRdLFxuICAgICAgZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlcjogY29sLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIsXG4gICAgICBkaXNwbGF5X2NvbnRleHQ6IGNvbC5kaXNwbGF5X2NvbnRleHQsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sdW1uc1dpdGhQcmVmaXgoY29sOiBDYXNlRmllbGQsIHJlc3VsdDogU2VhcmNoUmVzdWx0Vmlld0l0ZW0pOiBDYXNlRmllbGQge1xuICAgIGNvbC52YWx1ZSA9IHRoaXMuZHJhZnRQcmVmaXhPckdldChjb2wsIHJlc3VsdCk7XG4gICAgY29sLnZhbHVlID0gdGhpcy5wbGFjZWhvbGRlclNlcnZpY2UucmVzb2x2ZVBsYWNlaG9sZGVycyhyZXN1bHQuY2FzZV9maWVsZHMsIGNvbC52YWx1ZSk7XG4gICAgcmV0dXJuIGNvbDtcbiAgfVxuXG4gIHB1YmxpYyBoYXNSZXN1bHRzKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzLmxlbmd0aCAmJiB0aGlzLnBhZ2luYXRpb25NZXRhZGF0YS50b3RhbF9wYWdlc19jb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBoYXNEcmFmdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzdWx0Vmlldy5oYXNEcmFmdHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb21wYXJhdG9yKGNvbHVtbjogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbik6IFNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvciB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoUmVzdWx0Vmlld0l0ZW1Db21wYXJhdG9yRmFjdG9yeS5jcmVhdGVTZWFyY2hSZXN1bHRWaWV3SXRlbUNvbXBhcmF0b3IoY29sdW1uKTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0KGNvbHVtbjogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbikge1xuICAgIGlmICh0aGlzLmNvbnN1bWVyU29ydGluZ0VuYWJsZWQpIHtcbiAgICAgIGlmIChjb2x1bW4uY2FzZV9maWVsZF9pZCAhPT0gdGhpcy5jb25zdW1lclNvcnRQYXJhbWV0ZXJzLmNvbHVtbikge1xuICAgICAgICB0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMub3JkZXIgPSBTb3J0T3JkZXIuREVTQ0VORElORztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29uc3VtZXJTb3J0UGFyYW1ldGVycy5vcmRlciA9IHRoaXMuY29uc3VtZXJTb3J0UGFyYW1ldGVycy5vcmRlciA9PT0gU29ydE9yZGVyLkRFU0NFTkRJTkcgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0T3JkZXIuQVNDRU5ESU5HIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydE9yZGVyLkRFU0NFTkRJTkc7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMuY29sdW1uID0gY29sdW1uLmNhc2VfZmllbGRfaWQ7XG4gICAgICB0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMudHlwZSA9IGNvbHVtbi5jYXNlX2ZpZWxkX3R5cGUudHlwZTtcbiAgICAgIHRoaXMuc29ydEhhbmRsZXIuZW1pdCh0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jb21wYXJhdG9yKGNvbHVtbikgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTb3J0QXNjZW5kaW5nKGNvbHVtbikpIHtcbiAgICAgICAgdGhpcy5zb3J0UGFyYW1ldGVycyA9IG5ldyBTb3J0UGFyYW1ldGVycyh0aGlzLmNvbXBhcmF0b3IoY29sdW1uKSwgU29ydE9yZGVyLkFTQ0VORElORyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvcnRQYXJhbWV0ZXJzID0gbmV3IFNvcnRQYXJhbWV0ZXJzKHRoaXMuY29tcGFyYXRvcihjb2x1bW4pLCBTb3J0T3JkZXIuREVTQ0VORElORyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNvcnRXaWRnZXQoY29sdW1uOiBTZWFyY2hSZXN1bHRWaWV3Q29sdW1uKSB7XG4gICAgbGV0IGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmNvbnN1bWVyU29ydGluZ0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlzQ29sdW1uID0gY29sdW1uLmNhc2VfZmllbGRfaWQgPT09IHRoaXMuY29uc3VtZXJTb3J0UGFyYW1ldGVycy5jb2x1bW47XG4gICAgICBjb25zdCBpc0FzY2VuZGluZyA9IHRoaXMuY29uc3VtZXJTb3J0UGFyYW1ldGVycy5vcmRlciA9PT0gU29ydE9yZGVyLkFTQ0VORElORztcbiAgICAgIGNvbmRpdGlvbiA9ICFpc0NvbHVtbiB8fCAoaXNDb2x1bW4gJiYgaXNBc2NlbmRpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25kaXRpb24gPSB0aGlzLmlzU29ydEFzY2VuZGluZyhjb2x1bW4pO1xuICAgIH1cblxuICAgIHJldHVybiBjb25kaXRpb24gPyAnJiM5NjYwOycgOiAnJiM5NjUwOyc7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZpdHlFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5U2VydmljZS5pc0VuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgaHlwaGVuYXRlSWZDYXNlUmVmZXJlbmNlT3JHZXQoY29sLCByZXN1bHQpOiBhbnkge1xuICAgIGlmIChjb2wuY2FzZV9maWVsZF9pZCA9PT0gJ1tDQVNFX1JFRkVSRU5DRV0nKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYXNlUmVmZXJlbmNlUGlwZS50cmFuc2Zvcm0ocmVzdWx0LmNhc2VfZmllbGRzW2NvbC5jYXNlX2ZpZWxkX2lkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2wuaWQpIHtcbiAgICAgICAgaWYgKGNvbC5pZCA9PT0gJ1tDQVNFX1JFRkVSRU5DRV0nKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2FzZVJlZmVyZW5jZVBpcGUudHJhbnNmb3JtKHJlc3VsdC5jYXNlX2ZpZWxkc1tjb2wuaWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmNhc2VfZmllbGRzW2NvbC5pZF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXN1bHQuY2FzZV9maWVsZHNbY29sLmNhc2VfZmllbGRfaWRdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkcmFmdFByZWZpeE9yR2V0KGNvbCwgcmVzdWx0KTogYW55IHtcbiAgICByZXR1cm4gcmVzdWx0LmNhc2VfaWQuc3RhcnRzV2l0aChEUkFGVF9QUkVGSVgpID8gRFJBRlRfUFJFRklYIDogdGhpcy5oeXBoZW5hdGVJZkNhc2VSZWZlcmVuY2VPckdldChjb2wsIHJlc3VsdCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rmlyc3RSZXN1bHQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9ICh0aGlzLnNlbGVjdGVkLnBhZ2UgPyB0aGlzLnNlbGVjdGVkLnBhZ2UgOiAxKTtcbiAgICByZXR1cm4gKChjdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdpbmF0aW9uUGFnZVNpemUpICsgMSArIHRoaXMuZ2V0RHJhZnRzQ291bnRJZk5vdFBhZ2VPbmUoY3VycmVudFBhZ2UpO1xuICB9XG5cbiAgcHVibGljIGdldExhc3RSZXN1bHQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9ICh0aGlzLnNlbGVjdGVkLnBhZ2UgPyB0aGlzLnNlbGVjdGVkLnBhZ2UgOiAxKTtcbiAgICByZXR1cm4gKChjdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdpbmF0aW9uUGFnZVNpemUpICsgdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHMubGVuZ3RoICsgdGhpcy5nZXREcmFmdHNDb3VudElmTm90UGFnZU9uZShjdXJyZW50UGFnZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VG90YWxSZXN1bHRzKCk6IG51bWJlciB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnBhZ2luYXRpb25NZXRhZGF0YS50b3RhbF9yZXN1bHRzX2NvdW50ICsgdGhpcy5kcmFmdHNDb3VudDtcblxuICAgIHJldHVybiB0b3RhbCA+PSB0aGlzLlBBR0lOQVRJT05fTUFYX0lURU1fUkVTVUxUID8gdGhpcy5QQUdJTkFUSU9OX01BWF9JVEVNX1JFU1VMVCA6IHRvdGFsO1xuICB9XG5cbiAgcHVibGljIHByZXBhcmVDYXNlTGlua1VybChjYXNlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHVybCA9IHRoaXMuY2FzZUxpbmtVcmxUZW1wbGF0ZTtcbiAgICB1cmwgPSB1cmwucmVwbGFjZSgnanVyaXNkaWN0aW9uX2lkJywgdGhpcy5qdXJpc2RpY3Rpb24uaWQpO1xuICAgIHVybCA9IHVybC5yZXBsYWNlKCdjYXNlVHlwZV9pZCcsIHRoaXMuY2FzZVR5cGUuaWQpO1xuICAgIHVybCA9IHVybC5yZXBsYWNlKCdjYXNlX2lkJywgY2FzZUlkKTtcblxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBwdWJsaWMgZ29Ub0Nhc2UoY2FzZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNsaWNrQ2FzZS5lbWl0KHtcbiAgICAgIGNhc2VJZFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uS2V5VXAoJGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjOiBTZWFyY2hSZXN1bHRWaWV3SXRlbSk6IHZvaWQge1xuICAgIGlmICgkZXZlbnQua2V5ID09PSAnU3BhY2UnKSB7XG4gICAgICBpZiAodGhpcy5icm93c2VyU2VydmljZS5pc0ZpcmVmb3ggfHwgdGhpcy5icm93c2VyU2VydmljZS5pc1NhZmFyaSB8fCB0aGlzLmJyb3dzZXJTZXJ2aWNlLmlzSUVPckVkZ2UpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VTZWxlY3Rpb24oYyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzU29ydEFzY2VuZGluZyhjb2x1bW46IFNlYXJjaFJlc3VsdFZpZXdDb2x1bW4pOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50U29ydE9yZGVyID0gdGhpcy5jdXJyZW50U29ydE9yZGVyKGNvbHVtbik7XG5cbiAgICByZXR1cm4gY3VycmVudFNvcnRPcmRlciA9PT0gU29ydE9yZGVyLlVOU09SVEVEIHx8IGN1cnJlbnRTb3J0T3JkZXIgPT09IFNvcnRPcmRlci5ERVNDRU5ESU5HO1xuICB9XG5cbiAgcHVibGljIHNvcnRMYWJlbFRleHQobGFiZWw6IHN0cmluZywgaXNBc2NlbmRpbmc6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBgU29ydCBieSAke2xhYmVsfSAkeyBpc0FzY2VuZGluZyA/ICdhc2NlbmRpbmcnIDogJ2Rlc2NlbmRpbmcnfWA7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRTb3J0T3JkZXIoY29sdW1uOiBTZWFyY2hSZXN1bHRWaWV3Q29sdW1uKTogU29ydE9yZGVyIHtcblxuICAgIGxldCBpc0FzY2VuZGluZyA9IHRydWU7XG4gICAgbGV0IGlzRGVzY2VuZGluZyA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5jb21wYXJhdG9yKGNvbHVtbikgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFNvcnRPcmRlci5VTlNPUlRFRDtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlc3VsdFZpZXcucmVzdWx0cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbXBhcmlzb24gPSB0aGlzLmNvbXBhcmF0b3IoY29sdW1uKS5jb21wYXJlKHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzW2ldLCB0aGlzLnJlc3VsdFZpZXcucmVzdWx0c1tpICsgMV0pO1xuICAgICAgaXNEZXNjZW5kaW5nID0gaXNEZXNjZW5kaW5nICYmIGNvbXBhcmlzb24gPD0gMDtcbiAgICAgIGlzQXNjZW5kaW5nID0gaXNBc2NlbmRpbmcgJiYgY29tcGFyaXNvbiA+PSAwO1xuICAgICAgaWYgKCFpc0FzY2VuZGluZyAmJiAhaXNEZXNjZW5kaW5nKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNBc2NlbmRpbmcgPyBTb3J0T3JkZXIuQVNDRU5ESU5HIDogaXNEZXNjZW5kaW5nID8gU29ydE9yZGVyLkRFU0NFTkRJTkcgOiBTb3J0T3JkZXIuVU5TT1JURUQ7XG4gIH1cblxuICBwcml2YXRlIGdldERyYWZ0c0NvdW50SWZOb3RQYWdlT25lKGN1cnJlbnRQYWdlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY3VycmVudFBhZ2UgPiAxID8gdGhpcy5kcmFmdHNDb3VudCA6IDA7XG4gIH1cblxuICBwcml2YXRlIG51bWJlck9mRHJhZnRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzLmZpbHRlcihfID0+IF8uY2FzZV9pZC5zdGFydHNXaXRoKERSQUZUX1BSRUZJWCkpLmxlbmd0aDtcbiAgfVxufVxuIiwiPHRhYmxlICpuZ0lmPVwiaGFzUmVzdWx0cygpIHx8IGhhc0RyYWZ0cygpXCI+XG4gIDxjYXB0aW9uPlxuICAgIDxoMiBjbGFzcz1cImhlYWRpbmctaDJcIiBpZD1cInNlYXJjaC1yZXN1bHQtaGVhZGluZ19fdGV4dFwiIHRhYmluZGV4PVwiLTFcIj57eyBjYXNlU3RhdGUgPyAnWW91ciBjYXNlcycgOiAnU2VhcmNoIHJlc3VsdCcgfX08L2gyPlxuXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dCBwYWdpbmF0aW9uLWxpbWl0LXdhcm5pbmdcIiAqbmdJZj1cInBhZ2luYXRpb25MaW1pdEVuZm9yY2VkXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiE8L3NwYW4+XG4gICAgICA8c3Ryb25nIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X190ZXh0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X19hc3Npc3RpdmVcIj5XYXJuaW5nPC9zcGFuPlxuICAgICAgICBUaGUgdG90YWwgc2l6ZSBvZiB0aGUgcmVzdWx0IHNldCBpcyB7e3BhZ2luYXRpb25NZXRhZGF0YS50b3RhbF9yZXN1bHRzX2NvdW50IHwgbnVtYmVyfX0uIE9ubHkgdGhlIGZpcnN0IDEwLDAwMCByZWNvcmRzIGFyZSBhdmFpbGFibGUgZm9yIGRpc3BsYXkuXG4gICAgICA8L3N0cm9uZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCIoaGFzUmVzdWx0cygpIHx8IGhhc0RyYWZ0cygpKVwiIGNsYXNzPVwicGFnaW5hdGlvbi10b3BcIlxuICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgZ2V0VG90YWxSZXN1bHRzKCkgfX0gcmVzdWx0cyBoYXZlIGJlZW4gZm91bmRcIiByb2xlPVwic3RhdHVzXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIiBpZD1cInNlYXJjaC1yZXN1bHQtc3VtbWFyeV9fdGV4dFwiPlNob3dpbmcgXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgZ2V0Rmlyc3RSZXN1bHQoKSB9fTwvc3Bhbj5cbiAgICAgICAgdG9cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj57eyBnZXRMYXN0UmVzdWx0KCkgfX08L3NwYW4+XG4gICAgICAgIG9mXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgZ2V0VG90YWxSZXN1bHRzKCkgfX08L3NwYW4+IHJlc3VsdHM8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIihoYXNSZXN1bHRzKCkgfHwgaGFzRHJhZnRzKCkpICYmIHNlbGVjdGlvbkVuYWJsZWRcIiBjbGFzcz1cInJlc2V0LXNlbGVjdGlvblwiXG4gICAgICBhdHRyLmFyaWEtbGFiZWw9XCJSZXNldCBzZWxlY3Rpb25cIj5cbiAgICAgIDxzcGFuPjxhIGNsYXNzPVwic2VhcmNoLXJlc3VsdC1yZXNldC1saW5rXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgpXCIgKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKClcIj5SZXNldCBjYXNlIHNlbGVjdGlvbjwvYT48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvY2FwdGlvbj5cbiAgPHRoZWFkPlxuICAgIDx0ciBzY29wZT1cInJvd1wiPlxuICAgICAgPHRoICpuZ0lmPVwic2VsZWN0aW9uRW5hYmxlZFwiIGNsYXNzPVwiZ292dWstdGFibGVfX2NoZWNrYm94XCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2l0ZW1cIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pbnB1dFwiIGlkPVwic2VsZWN0LWFsbFwiIG5hbWU9XCJzZWxlY3QtYWxsXCIgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJzZWxlY3RBbGwoKVwiIFtjaGVja2VkXT1cImFsbE9uUGFnZVNlbGVjdGVkKClcIiBbZGlzYWJsZWRdPVwiIWNhbkFueUJlU2hhcmVkKClcIiAvPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCIgZm9yPVwic2VsZWN0LWFsbFwiPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90aD5cbiAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIHJlc3VsdFZpZXcuY29sdW1uc1wiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJzZWFyY2gtcmVzdWx0LWNvbHVtbi1oZWFkZXJcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic29ydExhYmVsVGV4dChjb2wubGFiZWwsIGlzU29ydEFzY2VuZGluZyhjb2wpKVwiPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PC90aD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtcmVzdWx0LWNvbHVtbi1sYWJlbFwiIChjbGljayk9XCJzb3J0KGNvbClcIj57e2NvbC5sYWJlbH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29tcGFyYXRvcihjb2wpXCIgY2xhc3M9XCJzZWFyY2gtcmVzdWx0LWNvbHVtbi1zb3J0XCI+XG4gICAgICAgICAgICAgIDxhIChjbGljayk9XCJzb3J0KGNvbClcIiBjbGFzcz1cInNvcnQtd2lkZ2V0XCIgW2lubmVySFRNTF09XCJzb3J0V2lkZ2V0KGNvbClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+PC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvdGg+XG4gICAgICA8dGggKm5nSWY9XCJhY3Rpdml0eUVuYWJsZWQoKVwiIGNsYXNzPVwic2VhcmNoLXJlc3VsdC1jb2x1bW4tYWN0aXZpdHlcIiBzdHlsZT1cIndpZHRoOiAxMTBweDtcIj48L3RoPlxuICAgIDwvdHI+XG4gIDwvdGhlYWQ+XG4gIDx0Ym9keT5cblxuICAgIDwhLS0gc29ydGVkIGJ5IGNvbnN1bWVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25zdW1lclNvcnRpbmdFbmFibGVkXCI+XG4gICAgICA8dHIgKm5nRm9yPVwibGV0IHJlc3VsdCBvZiByZXN1bHRWaWV3LnJlc3VsdHMgfCBwYWdpbmF0ZTogeyBpdGVtc1BlclBhZ2U6IHBhZ2luYXRpb25QYWdlU2l6ZSwgY3VycmVudFBhZ2U6IHNlbGVjdGVkLnBhZ2UsIHRvdGFsSXRlbXM6IHJlc3VsdFRvdGFsIH1cIj5cbiAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0aW9uRW5hYmxlZFwiIGNsYXNzPVwiZ292dWstdGFibGVfX2NoZWNrYm94XCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIiBpZD1cInNlbGVjdC17eyByZXN1bHQuY2FzZV9pZCB9fVwiIG5hbWU9XCJzZWxlY3Qte3sgcmVzdWx0LmNhc2VfaWQgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiAoY2hhbmdlKT1cImNoYW5nZVNlbGVjdGlvbihyZXN1bHQpXCIgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChyZXN1bHQpXCIgW2Rpc2FibGVkXT1cIiFjYW5CZVNoYXJlZChyZXN1bHQpXCIgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCIgZm9yPVwic2VsZWN0LXt7IHJlc3VsdC5jYXNlX2lkIH19XCI+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJzZWFyY2gtcmVzdWx0LWNvbHVtbi1jZWxsXCIgKm5nRm9yPVwibGV0IGNvbCBvZiByZXN1bHRWaWV3LmNvbHVtbnM7IGxldCBjb2xJbmRleCA9IGluZGV4XCIgc2NvcGU9XCJyb3dcIj5cbiAgICAgICAgICA8YSAqbmdJZj1cImNvbEluZGV4ID09IDBcIiBbcm91dGVyTGlua109XCJwcmVwYXJlQ2FzZUxpbmtVcmwocmVzdWx0LmNhc2VfaWQpXCJcbiAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cImdvIHRvIGNhc2Ugd2l0aCBDYXNlIHJlZmVyZW5jZTp7eyByZXN1bHQuY2FzZV9pZCB8IGNjZENhc2VSZWZlcmVuY2UgfX1cIiBjbGFzcz1cImdvdnVrLWxpbmtcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgY2xhc3M9XCJ0ZXh0LTE2XCIgKm5nSWY9XCIhaGlkZVJvd3NcIj5cbiAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkICpuZ0lmPVwiZHJhZnRQcmVmaXhPckdldChjb2wsIHJlc3VsdCk7IGVsc2UgY2FzZV9yZWZlcmVuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImdldENvbHVtbnNXaXRoUHJlZml4KHJlc3VsdC5jb2x1bW5zW2NvbC5jYXNlX2ZpZWxkX2lkXSwgcmVzdWx0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dEZpZWxkc109XCJyZXN1bHQuaHlkcmF0ZWRfY2FzZV9maWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnRzVG9TdWJzdGl0dXRlXT1cIlsndmFsdWUnXVwiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2FzZV9yZWZlcmVuY2U+e3tyZXN1bHQuY2FzZV9pZCB8IGNjZENhc2VSZWZlcmVuY2V9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbEluZGV4ICE9IDBcIiBjbGFzcz1cInRleHQtMTZcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJoaWRlUm93cyA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCI+XG4gICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgY2NkTGFiZWxTdWJzdGl0dXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYXNlRmllbGRdPVwicmVzdWx0LmNvbHVtbnNbY29sLmNhc2VfZmllbGRfaWRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dEZpZWxkc109XCJyZXN1bHQuaHlkcmF0ZWRfY2FzZV9maWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50c1RvU3Vic3RpdHV0ZV09XCJbJ3ZhbHVlJ11cIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgKm5nSWY9XCJhY3Rpdml0eUVuYWJsZWQoKVwiPlxuICAgICAgICAgIDxkaXYgW3N0eWxlLnZpc2liaWxpdHldPVwiaGlkZVJvd3MgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiPlxuICAgICAgICAgICAgPGNjZC1hY3Rpdml0eSBbY2FzZUlkXT1cInJlc3VsdC5jYXNlX2lkXCIgW2Rpc3BsYXlNb2RlXT1cIklDT05cIj48L2NjZC1hY3Rpdml0eT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBzb3J0ZWQgYnkgdG9vbGtpdCAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbnN1bWVyU29ydGluZ0VuYWJsZWRcIj5cbiAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcmVzdWx0IG9mIHJlc3VsdFZpZXcucmVzdWx0cyB8IGNjZFNvcnRTZWFyY2hSZXN1bHQgOiBzb3J0UGFyYW1ldGVycyB8IHBhZ2luYXRlOiB7IGl0ZW1zUGVyUGFnZTogcGFnaW5hdGlvblBhZ2VTaXplLCBjdXJyZW50UGFnZTogc2VsZWN0ZWQucGFnZSwgdG90YWxJdGVtczogcmVzdWx0VG90YWwgfVwiPlxuICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3Rpb25FbmFibGVkXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2hlY2tib3hcIiBzY29wZT1cImNvbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pdGVtXCI+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pbnB1dFwiIGlkPVwic2VsZWN0LXt7IHJlc3VsdC5jYXNlX2lkIH19XCIgbmFtZT1cInNlbGVjdC17eyByZXN1bHQuY2FzZV9pZCB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwiY2hhbmdlU2VsZWN0aW9uKHJlc3VsdClcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKHJlc3VsdClcIiBbZGlzYWJsZWRdPVwiIWNhbkJlU2hhcmVkKHJlc3VsdClcIiAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQsIHJlc3VsdClcIiAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstY2hlY2tib3hlc19fbGFiZWxcIiBmb3I9XCJzZWxlY3Qte3sgcmVzdWx0LmNhc2VfaWQgfX1cIj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cInNlYXJjaC1yZXN1bHQtY29sdW1uLWNlbGxcIiAqbmdGb3I9XCJsZXQgY29sIG9mIHJlc3VsdFZpZXcuY29sdW1uczsgbGV0IGNvbEluZGV4ID0gaW5kZXhcIiBzY29wZT1cInJvd1wiPlxuXG4gICAgICAgICAgPGEgKm5nSWY9XCJjb2xJbmRleCA9PSAwXCIgW3JvdXRlckxpbmtdPVwicHJlcGFyZUNhc2VMaW5rVXJsKHJlc3VsdC5jYXNlX2lkKVwiXG4gICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJnbyB0byBjYXNlIHdpdGggQ2FzZSByZWZlcmVuY2U6e3sgcmVzdWx0LmNhc2VfaWQgfCBjY2RDYXNlUmVmZXJlbmNlIH19XCIgY2xhc3M9XCJnb3Z1ay1saW5rXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwidGV4dC0xNlwiICpuZ0lmPVwiIWhpZGVSb3dzXCI+XG4gICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCAqbmdJZj1cImRyYWZ0UHJlZml4T3JHZXQoY29sLCByZXN1bHQpOyBlbHNlIGNhc2VfcmVmZXJlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJnZXRDb2x1bW5zV2l0aFByZWZpeChyZXN1bHQuY29sdW1uc1tjb2wuY2FzZV9maWVsZF9pZF0sIHJlc3VsdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRleHRGaWVsZHNdPVwicmVzdWx0Lmh5ZHJhdGVkX2Nhc2VfZmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50c1RvU3Vic3RpdHV0ZV09XCJbJ3ZhbHVlJ11cIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Nhc2VfcmVmZXJlbmNlPnt7cmVzdWx0LmNhc2VfaWQgfCBjY2RDYXNlUmVmZXJlbmNlfX08L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2xJbmRleCAhPSAwXCIgY2xhc3M9XCJ0ZXh0LTE2XCIgW3N0eWxlLnZpc2liaWxpdHldPVwiaGlkZVJvd3MgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiPlxuICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIGNjZExhYmVsU3Vic3RpdHV0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cInJlc3VsdC5jb2x1bW5zW2NvbC5jYXNlX2ZpZWxkX2lkXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRleHRGaWVsZHNdPVwicmVzdWx0Lmh5ZHJhdGVkX2Nhc2VfZmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWxlbWVudHNUb1N1YnN0aXR1dGVdPVwiWyd2YWx1ZSddXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkICpuZ0lmPVwiYWN0aXZpdHlFbmFibGVkKClcIj5cbiAgICAgICAgICA8ZGl2IFtzdHlsZS52aXNpYmlsaXR5XT1cImhpZGVSb3dzID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIj5cbiAgICAgICAgICAgIDxjY2QtYWN0aXZpdHkgW2Nhc2VJZF09XCJyZXN1bHQuY2FzZV9pZFwiIFtkaXNwbGF5TW9kZV09XCJJQ09OXCI+PC9jY2QtYWN0aXZpdHk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gIDwvdGJvZHk+XG48L3RhYmxlPlxuXG48Y2NkLXBhZ2luYXRpb24gXG4gICpuZ0lmPVwiaGFzUmVzdWx0cygpXCJcbiAgKHBhZ2VDaGFuZ2UpPVwiZ29Ub1BhZ2UoJGV2ZW50KVwiXG4gIFt2aXNpYmlsaXR5TGFiZWxdPVwiaGlkZVJvd3MgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiIFxuICBbYXV0b0hpZGVdPVwidHJ1ZVwiXG4gIFttYXhTaXplXT1cIjhcIlxuICBbc2NyZWVuUmVhZGVyUGFnaW5hdGlvbkxhYmVsXT1cIidQYWdpbmF0aW9uJ1wiXG4gIFtzY3JlZW5SZWFkZXJQYWdlTGFiZWxdPVwicGFnZVwiXG4gIFtzY3JlZW5SZWFkZXJDdXJyZW50TGFiZWxdPVwiJ1lvdVxcJ3JlIG9uIHBhZ2UnXCI+PC9jY2QtcGFnaW5hdGlvbj5cblxuPGRpdiAqbmdJZj1cIiEoaGFzUmVzdWx0cygpIHx8IGhhc0RyYWZ0cygpKVwiIGNsYXNzPVwibm90aWZpY2F0aW9uXCJcbiAgYXJpYS1sYWJlbD1cIk5vIGNhc2VzIGZvdW5kLiBUcnkgdXNpbmcgZGlmZmVyZW50IGZpbHRlcnMuXCI+XG4gIE5vIGNhc2VzIGZvdW5kLiBUcnkgdXNpbmcgZGlmZmVyZW50IGZpbHRlcnMuXG48L2Rpdj5cbiJdfQ==