@pega/angular-sdk-components 24.1.10 → 24.2.12

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 (271) hide show
  1. package/esm2022/lib/_bridge/angular-pconnect.mjs +3 -3
  2. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +6 -13
  3. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +3 -3
  4. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +4 -4
  5. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +3 -3
  6. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +4 -4
  7. package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +3 -3
  8. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +5 -6
  9. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +3 -3
  10. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +13 -6
  11. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +3 -3
  12. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +3 -3
  13. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +3 -3
  14. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +4 -4
  15. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +9 -7
  16. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +9 -9
  17. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +3 -3
  18. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
  19. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +23 -13
  20. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +3 -3
  21. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +12 -10
  22. package/esm2022/lib/_components/field/currency/currency.component.mjs +39 -21
  23. package/esm2022/lib/_components/field/date/date.component.mjs +19 -39
  24. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +32 -17
  25. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +43 -23
  26. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +133 -25
  27. package/esm2022/lib/_components/field/email/email.component.mjs +22 -7
  28. package/esm2022/lib/_components/field/group/group.component.mjs +6 -6
  29. package/esm2022/lib/_components/field/integer/integer.component.mjs +20 -7
  30. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +8 -7
  31. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +13 -6
  32. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +39 -23
  33. package/esm2022/lib/_components/field/phone/phone.component.mjs +17 -29
  34. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +10 -12
  35. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +17 -11
  36. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +7 -8
  37. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +3 -3
  38. package/esm2022/lib/_components/field/text/text.component.mjs +12 -8
  39. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +21 -9
  40. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +3 -3
  41. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +20 -7
  42. package/esm2022/lib/_components/field/time/time.component.mjs +31 -10
  43. package/esm2022/lib/_components/field/url/url.component.mjs +20 -7
  44. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +102 -23
  45. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +18 -44
  46. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +3 -3
  47. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +3 -3
  48. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +5 -12
  49. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +4 -4
  50. package/esm2022/lib/_components/infra/Containers/view-container/helper.mjs +22 -0
  51. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +9 -16
  52. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +5 -5
  53. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +73 -49
  54. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +5 -5
  55. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +3 -3
  56. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +10 -8
  57. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +3 -3
  58. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +3 -3
  59. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +5 -5
  60. package/esm2022/lib/_components/infra/reference/reference.component.mjs +74 -81
  61. package/esm2022/lib/_components/infra/region/region.component.mjs +3 -3
  62. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +25 -30
  63. package/esm2022/lib/_components/infra/stages/stages.component.mjs +5 -5
  64. package/esm2022/lib/_components/infra/view/view.component.mjs +22 -7
  65. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +20 -4
  66. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +3 -3
  67. package/esm2022/lib/_components/template/base/details-template-base.mjs +56 -0
  68. package/esm2022/lib/_components/template/base/form-template-base.mjs +16 -0
  69. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +4 -4
  70. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +11 -16
  71. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +6 -6
  72. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +13 -8
  73. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +37 -25
  74. package/esm2022/lib/_components/template/details/details.component.mjs +12 -39
  75. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +11 -38
  76. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +12 -41
  77. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +13 -40
  78. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +12 -41
  79. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +13 -42
  80. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +12 -41
  81. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +8 -7
  82. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +3 -3
  83. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +49 -42
  84. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +5 -5
  85. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +3 -3
  86. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +5 -5
  87. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +3 -3
  88. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +24 -9
  89. package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +3 -3
  90. package/esm2022/lib/_components/template/list-view/utils.mjs +1 -1
  91. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +3 -3
  92. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +4 -4
  93. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +6 -5
  94. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +3 -3
  95. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +4 -4
  96. package/esm2022/lib/_components/template/page/page.component.mjs +4 -4
  97. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +4 -4
  98. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +4 -4
  99. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +3 -3
  100. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +10 -9
  101. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +61 -29
  102. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +5 -5
  103. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +3 -3
  104. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +4 -4
  105. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +6 -5
  106. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +3 -3
  107. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +6 -5
  108. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +3 -3
  109. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +4 -4
  110. package/esm2022/lib/_components/template/utils.mjs +17 -1
  111. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +6 -5
  112. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +4 -4
  113. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +5 -5
  114. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +3 -3
  115. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +6 -8
  116. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +3 -3
  117. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +5 -5
  118. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +4 -4
  119. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +3 -3
  120. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +3 -3
  121. package/esm2022/lib/_components/widget/todo/todo.component.mjs +79 -63
  122. package/esm2022/lib/_components/widget/utility/utility.component.mjs +3 -3
  123. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +4 -4
  124. package/esm2022/lib/_helpers/createstage-utils.mjs +15 -0
  125. package/esm2022/lib/_helpers/field-group-utils.mjs +3 -3
  126. package/esm2022/lib/_helpers/filter-utils.mjs +1 -2
  127. package/esm2022/lib/_helpers/formatters/boolean.mjs +2 -2
  128. package/esm2022/lib/_helpers/formatters/common.mjs +3 -2
  129. package/esm2022/lib/_helpers/formatters/currency.mjs +2 -2
  130. package/esm2022/lib/_helpers/formatters/date.mjs +5 -5
  131. package/esm2022/lib/_helpers/formatters/format-utils.mjs +10 -2
  132. package/esm2022/lib/_helpers/formatters/index.mjs +30 -16
  133. package/esm2022/lib/_helpers/template-utils.mjs +3 -3
  134. package/esm2022/lib/_helpers/utils.mjs +44 -18
  135. package/esm2022/lib/_messages/error-messages.service.mjs +4 -4
  136. package/esm2022/lib/_messages/progress-spinner.service.mjs +3 -3
  137. package/esm2022/lib/_messages/update-worklist.service.mjs +3 -3
  138. package/esm2022/lib/_services/banner.service.mjs +35 -0
  139. package/esm2022/lib/_services/case.service.mjs +3 -3
  140. package/esm2022/lib/_services/datapage.service.mjs +3 -3
  141. package/esm2022/lib/_services/endpoints.mjs +1 -2
  142. package/esm2022/lib/_services/server-config.service.mjs +3 -3
  143. package/esm2022/public-api.mjs +16 -12
  144. package/fesm2022/pega-angular-sdk-components.mjs +1988 -1666
  145. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  146. package/lib/_components/designSystemExtension/banner/banner.component.d.ts +0 -1
  147. package/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.d.ts +0 -1
  148. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
  149. package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +2 -1
  150. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -3
  151. package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -3
  152. package/lib/_components/field/auto-complete/auto-complete.component.d.ts +8 -3
  153. package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +0 -1
  154. package/lib/_components/field/check-box/check-box.component.d.ts +2 -3
  155. package/lib/_components/field/currency/currency.component.d.ts +6 -4
  156. package/lib/_components/field/date/date.component.d.ts +17 -7
  157. package/lib/_components/field/date-time/date-time.component.d.ts +10 -3
  158. package/lib/_components/field/decimal/decimal.component.d.ts +4 -4
  159. package/lib/_components/field/dropdown/dropdown.component.d.ts +14 -3
  160. package/lib/_components/field/email/email.component.d.ts +2 -1
  161. package/lib/_components/field/group/group.component.d.ts +0 -1
  162. package/lib/_components/field/integer/integer.component.d.ts +2 -1
  163. package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -2
  164. package/lib/_components/field/multiselect/multiselect.component.d.ts +3 -3
  165. package/lib/_components/field/percentage/percentage.component.d.ts +6 -3
  166. package/lib/_components/field/phone/phone.component.d.ts +3 -8
  167. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +2 -2
  168. package/lib/_components/field/rich-text/rich-text.component.d.ts +3 -2
  169. package/lib/_components/field/scalar-list/scalar-list.component.d.ts +0 -1
  170. package/lib/_components/field/semantic-link/semantic-link.component.d.ts +0 -1
  171. package/lib/_components/field/text/text.component.d.ts +3 -2
  172. package/lib/_components/field/text-area/text-area.component.d.ts +2 -1
  173. package/lib/_components/field/text-content/text-content.component.d.ts +0 -1
  174. package/lib/_components/field/text-input/text-input.component.d.ts +2 -1
  175. package/lib/_components/field/time/time.component.d.ts +3 -1
  176. package/lib/_components/field/url/url.component.d.ts +2 -1
  177. package/lib/_components/field/user-reference/user-reference.component.d.ts +7 -1
  178. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +0 -2
  179. package/lib/_components/infra/Containers/flow-container/helpers.d.ts +1 -0
  180. package/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.d.ts +0 -1
  181. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +1 -4
  182. package/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.d.ts +0 -1
  183. package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
  184. package/lib/_components/infra/Containers/view-container/view-container.component.d.ts +0 -1
  185. package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
  186. package/lib/_components/infra/assignment/assignment.component.d.ts +6 -4
  187. package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +0 -1
  188. package/lib/_components/infra/dashboard-filter/dashboard-filter.component.d.ts +0 -1
  189. package/lib/_components/infra/defer-load/defer-load.component.d.ts +3 -3
  190. package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
  191. package/lib/_components/infra/multi-step/multi-step.component.d.ts +0 -1
  192. package/lib/_components/infra/navbar/navbar.component.d.ts +2 -3
  193. package/lib/_components/infra/reference/reference.component.d.ts +23 -3
  194. package/lib/_components/infra/region/region.component.d.ts +0 -1
  195. package/lib/_components/infra/root-container/root-container.component.d.ts +3 -2
  196. package/lib/_components/infra/stages/stages.component.d.ts +0 -1
  197. package/lib/_components/infra/view/view.component.d.ts +1 -1
  198. package/lib/_components/template/app-shell/app-shell.component.d.ts +0 -1
  199. package/lib/_components/template/banner-page/banner-page.component.d.ts +0 -1
  200. package/lib/_components/template/base/details-template-base.d.ts +21 -0
  201. package/lib/_components/template/base/form-template-base.d.ts +10 -0
  202. package/lib/_components/template/case-summary/case-summary.component.d.ts +0 -1
  203. package/lib/_components/template/case-view/case-view.component.d.ts +1 -3
  204. package/lib/_components/template/confirmation/confirmation.component.d.ts +0 -1
  205. package/lib/_components/template/data-reference/data-reference.component.d.ts +0 -1
  206. package/lib/_components/template/default-form/default-form.component.d.ts +8 -7
  207. package/lib/_components/template/details/details.component.d.ts +3 -12
  208. package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -12
  209. package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -14
  210. package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -14
  211. package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -14
  212. package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -14
  213. package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -14
  214. package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -1
  215. package/lib/_components/template/field-group-template/field-group-template.component.d.ts +12 -9
  216. package/lib/_components/template/inline-dashboard/inline-dashboard.component.d.ts +0 -1
  217. package/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.d.ts +0 -1
  218. package/lib/_components/template/list-page/list-page.component.d.ts +0 -1
  219. package/lib/_components/template/list-view/list-view.component.d.ts +7 -3
  220. package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
  221. package/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.d.ts +0 -1
  222. package/lib/_components/template/narrow-wide-form/narrow-wide-form.component.d.ts +0 -1
  223. package/lib/_components/template/one-column/one-column.component.d.ts +2 -2
  224. package/lib/_components/template/one-column-page/one-column-page.component.d.ts +0 -1
  225. package/lib/_components/template/one-column-tab/one-column-tab.component.d.ts +0 -1
  226. package/lib/_components/template/page/page.component.d.ts +0 -1
  227. package/lib/_components/template/promoted-filters/promoted-filters.component.d.ts +0 -1
  228. package/lib/_components/template/repeating-structures/repeating-structures.component.d.ts +0 -1
  229. package/lib/_components/template/simple-table/simple-table.component.d.ts +0 -1
  230. package/lib/_components/template/simple-table-manual/helpers.d.ts +4 -3
  231. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +10 -3
  232. package/lib/_components/template/simple-table-select/simple-table-select.component.d.ts +0 -1
  233. package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +0 -1
  234. package/lib/_components/template/sub-tabs/sub-tabs.component.d.ts +0 -1
  235. package/lib/_components/template/three-column/three-column.component.d.ts +2 -2
  236. package/lib/_components/template/three-column-page/three-column-page.component.d.ts +0 -1
  237. package/lib/_components/template/two-column/two-column.component.d.ts +2 -2
  238. package/lib/_components/template/two-column-page/two-column-page.component.d.ts +0 -1
  239. package/lib/_components/template/two-column-tab/two-column-tab.component.d.ts +0 -1
  240. package/lib/_components/template/utils.d.ts +7 -0
  241. package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -2
  242. package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -2
  243. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +3 -4
  244. package/lib/_components/widget/app-announcement/app-announcement.component.d.ts +0 -1
  245. package/lib/_components/widget/attachment/attachment.component.d.ts +3 -4
  246. package/lib/_components/widget/case-history/case-history.component.d.ts +0 -1
  247. package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -3
  248. package/lib/_components/widget/file-utility/file-utility.component.d.ts +1 -2
  249. package/lib/_components/widget/quick-create/quick-create.component.d.ts +0 -1
  250. package/lib/_components/widget/todo/todo.component.d.ts +10 -14
  251. package/lib/_components/widget/utility/utility.component.d.ts +0 -1
  252. package/lib/_helpers/common.d.ts +1 -1
  253. package/lib/_helpers/createstage-utils.d.ts +1 -0
  254. package/lib/_helpers/formatters/boolean.d.ts +1 -2
  255. package/lib/_helpers/formatters/common.d.ts +2 -2
  256. package/lib/_helpers/formatters/currency.d.ts +1 -2
  257. package/lib/_helpers/formatters/date.d.ts +1 -2
  258. package/lib/_helpers/formatters/index.d.ts +1 -2
  259. package/lib/_helpers/utils.d.ts +8 -0
  260. package/lib/_messages/error-messages.service.d.ts +1 -1
  261. package/lib/_services/banner.service.d.ts +8 -0
  262. package/lib/_services/endpoints.d.ts +0 -1
  263. package/lib/doc/KeyReleaseUpdates.md +23 -6
  264. package/package.json +3 -3
  265. package/public-api.d.ts +15 -11
  266. package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
  267. package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
  268. package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
  269. package/lib/_messages/get-login-status.service.d.ts +0 -10
  270. package/lib/_messages/oauth-response.service.d.ts +0 -14
  271. package/lib/_messages/reset-pconnect.service.d.ts +0 -15
@@ -9,14 +9,23 @@ import * as i1 from "../../../_bridge/angular-pconnect";
9
9
  import * as i2 from "../../../_messages/progress-spinner.service";
10
10
  import * as i3 from "../../../_messages/error-messages.service";
11
11
  import * as i4 from "@angular/material/snack-bar";
12
- import * as i5 from "@angular/common";
12
+ import * as i5 from "../../../_services/banner.service";
13
+ import * as i6 from "@angular/common";
14
+ function getRefreshProps(refreshConditions) {
15
+ // refreshConditions cuurently supports only "Changes" event
16
+ if (!refreshConditions) {
17
+ return [];
18
+ }
19
+ return refreshConditions.filter(item => item.event && item.event === 'Changes').map(item => [item.field, item.field?.substring(1)]) || [];
20
+ }
13
21
  export class AssignmentComponent {
14
- constructor(angularPConnect, psService, erService, ngZone, snackBar) {
22
+ constructor(angularPConnect, psService, erService, ngZone, snackBar, bannerService) {
15
23
  this.angularPConnect = angularPConnect;
16
24
  this.psService = psService;
17
25
  this.erService = erService;
18
26
  this.ngZone = ngZone;
19
27
  this.snackBar = snackBar;
28
+ this.bannerService = bannerService;
20
29
  this.isInModal$ = false;
21
30
  // For interaction with AngularPConnect
22
31
  this.angularPConnectData = {};
@@ -50,6 +59,7 @@ export class AssignmentComponent {
50
59
  checkAndUpdate() {
51
60
  // Should always check the bridge to see if the component should update itself (re-render)
52
61
  const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
62
+ this.bannerService.updateBanners(this.itemKey$);
53
63
  // ONLY call updateSelf when the component should update
54
64
  // AND removing the "gate" that was put there since shouldComponentUpdate
55
65
  // should be the real "gate"
@@ -71,6 +81,7 @@ export class AssignmentComponent {
71
81
  }
72
82
  }
73
83
  updateChanges() {
84
+ this.registerForRefresh();
74
85
  // pConn$ may be a 'reference' component, so normalize it
75
86
  this.newPConn$ = ReferenceComponent.normalizePConn(this.pConn$);
76
87
  if (this.arChildren$) {
@@ -202,6 +213,9 @@ export class AssignmentComponent {
202
213
  this.buttonClick(oData.action, oData.buttonType);
203
214
  }
204
215
  buttonClick(sAction, sButtonType) {
216
+ this.snackBarRef?.dismiss();
217
+ this.bannerService.clearBanners();
218
+ PCore.getPubSubUtils().publish('clearBannerMessages');
205
219
  // right now, done on an individual basis, setting bReInit to true
206
220
  // upon the next flow container state change, will cause the flow container
207
221
  // to re-initialize
@@ -221,20 +235,18 @@ export class AssignmentComponent {
221
235
  switch (sAction) {
222
236
  case 'navigateToStep':
223
237
  this.erService.sendMessage('publish', '');
224
- if (this.formValid()) {
225
- this.bReInit = true;
226
- this.psService.sendMessage(true);
227
- const navigatePromise = this.navigateToStep('previous', this.itemKey$);
228
- navigatePromise
229
- .then(() => {
230
- this.updateChanges();
231
- this.psService.sendMessage(false);
232
- })
233
- .catch(() => {
234
- this.psService.sendMessage(false);
235
- this.snackBar.open(`${this.localizedVal('Navigation failed!', this.localeCategory)}`, 'Ok');
236
- });
237
- }
238
+ this.bReInit = true;
239
+ this.psService.sendMessage(true);
240
+ const navigatePromise = this.navigateToStep('previous', this.itemKey$);
241
+ navigatePromise
242
+ .then(() => {
243
+ this.updateChanges();
244
+ this.psService.sendMessage(false);
245
+ })
246
+ .catch(() => {
247
+ this.psService.sendMessage(false);
248
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Navigation failed!', this.localeCategory)}`, 'Ok');
249
+ });
238
250
  break;
239
251
  case 'saveAssignment': {
240
252
  const caseID = this.pConn$.getCaseInfo().getKey();
@@ -242,14 +254,13 @@ export class AssignmentComponent {
242
254
  const savePromise = this.saveAssignment(this.itemKey$);
243
255
  savePromise
244
256
  .then(() => {
245
- // @ts-ignore - Property 'c11nEnv' is private and only accessible within class 'CaseInfo'.
246
257
  const caseType = this.pConn$.getCaseInfo().c11nEnv.getValue(PCore.getConstants().CASE_INFO.CASE_TYPE_ID);
247
258
  PCore.getPubSubUtils().publish('cancelPressed');
248
259
  this.onSaveActionSuccess({ caseType, caseID, assignmentID });
249
260
  })
250
261
  .catch(() => {
251
262
  this.psService.sendMessage(false);
252
- this.snackBar.open(`${this.localizedVal('Save failed', this.localeCategory)}`, 'Ok');
263
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Save failed', this.localeCategory)}`, 'Ok');
253
264
  });
254
265
  break;
255
266
  }
@@ -270,7 +281,7 @@ export class AssignmentComponent {
270
281
  })
271
282
  .catch(() => {
272
283
  this.psService.sendMessage(false);
273
- this.snackBar.open(`${this.localizedVal('Cancel failed!', this.localeCategory)}`, 'Ok');
284
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Cancel failed!', this.localeCategory)}`, 'Ok');
274
285
  });
275
286
  }
276
287
  else {
@@ -286,7 +297,7 @@ export class AssignmentComponent {
286
297
  })
287
298
  .catch(() => {
288
299
  this.psService.sendMessage(false);
289
- this.snackBar.open(`${this.localizedVal('Cancel failed!', this.localeCategory)}`, 'Ok');
300
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Cancel failed!', this.localeCategory)}`, 'Ok');
290
301
  });
291
302
  }
292
303
  break;
@@ -296,7 +307,7 @@ export class AssignmentComponent {
296
307
  .then(() => { })
297
308
  .catch(() => {
298
309
  this.psService.sendMessage(false);
299
- this.snackBar.open(`${this.localizedVal('Rejection failed!', this.localeCategory)}`, 'Ok');
310
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Rejection failed!', this.localeCategory)}`, 'Ok');
300
311
  });
301
312
  break;
302
313
  }
@@ -308,24 +319,18 @@ export class AssignmentComponent {
308
319
  switch (sAction) {
309
320
  case 'finishAssignment':
310
321
  this.erService.sendMessage('publish', '');
311
- if (this.formValid()) {
312
- this.bReInit = true;
313
- this.psService.sendMessage(true);
314
- const finishPromise = this.finishAssignment(this.itemKey$); // JA - was itemID but Nebula/Constellation uses itemKey
315
- finishPromise
316
- .then(() => {
317
- this.psService.sendMessage(false);
318
- this.updateChanges();
319
- })
320
- .catch(() => {
321
- this.psService.sendMessage(false);
322
- this.snackBar.open(`${this.localizedVal('Submit failed!', this.localeCategory)}`, 'Ok');
323
- });
324
- }
325
- else {
326
- // let snackBarRef = this.snackBar.open("Please fix errors on form.", "Ok");
327
- this.erService.sendMessage('show', this.localizedVal('Please fix errors on form.', this.localeCategory));
328
- }
322
+ this.bReInit = true;
323
+ this.psService.sendMessage(true);
324
+ const finishPromise = this.finishAssignment(this.itemKey$); // JA - was itemID but Nebula/Constellation uses itemKey
325
+ finishPromise
326
+ .then(() => {
327
+ this.psService.sendMessage(false);
328
+ this.updateChanges();
329
+ })
330
+ .catch(() => {
331
+ this.psService.sendMessage(false);
332
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Submit failed!', this.localeCategory)}`, 'Ok');
333
+ });
329
334
  break;
330
335
  case 'approveCase': {
331
336
  const approvePromise = this.approveCase(this.itemKey$);
@@ -333,7 +338,7 @@ export class AssignmentComponent {
333
338
  .then(() => { })
334
339
  .catch(() => {
335
340
  this.psService.sendMessage(false);
336
- this.snackBar.open(`${this.localizedVal('Approve failed!', this.localeCategory)}`, 'Ok');
341
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Approve failed!', this.localeCategory)}`, 'Ok');
337
342
  });
338
343
  break;
339
344
  }
@@ -351,19 +356,40 @@ export class AssignmentComponent {
351
356
  control.markAsTouched();
352
357
  });
353
358
  }
354
- // eslint-disable-next-line sonarjs/no-identical-functions
355
359
  topViewRefresh() {
356
360
  Object.values(this.formGroup$.controls).forEach((control) => {
357
361
  control.markAsTouched();
358
362
  });
359
363
  }
360
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AssignmentComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.ProgressSpinnerService }, { token: i3.ErrorMessagesService }, { token: i0.NgZone }, { token: i4.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
361
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AssignmentComponent, isStandalone: true, selector: "app-assignment", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", arChildren$: "arChildren$", itemKey$: "itemKey$", isCreateStage$: "isCreateStage$", updateToken$: "updateToken$", isInModal$: "isInModal$", banners: "banners" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <div><component-mapper name=\"AlertBanner\" [props]=\"{ banners }\" [parent]=\"this\"></component-mapper></div>\n <div *ngIf=\"bHasNavigation$\" class=\"psdk-stepper\">\n <component-mapper\n name=\"MultiStep\"\n [props]=\"{\n pConn$: newPConn$,\n formGroup$,\n arChildren$,\n arMainButtons$,\n arSecondaryButtons$,\n bIsVertical$,\n arCurrentStepIndicies$,\n arNavigationSteps$\n }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!bHasNavigation$\">\n <component-mapper\n name=\"AssignmentCard\"\n [props]=\"{ pConn$: newPConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$, updateToken$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i5.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatSnackBarModule) }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
364
+ registerForRefresh() {
365
+ const refreshConditions = this.pConn$.getCaseInfo()?.getActionRefreshConditions();
366
+ const pageReference = this.pConn$.getPageReference();
367
+ const context = this.pConn$.getContextName();
368
+ // refresh api de-registration
369
+ PCore.getRefreshManager().deRegisterForRefresh(context);
370
+ // refresh api registration
371
+ const refreshProps = getRefreshProps(refreshConditions);
372
+ const caseKey = this.pConn$.getCaseInfo().getKey();
373
+ const refreshOptions = {
374
+ autoDetectRefresh: true,
375
+ preserveClientChanges: false
376
+ };
377
+ if (refreshProps.length > 0) {
378
+ refreshProps.forEach(prop => {
379
+ PCore.getRefreshManager().registerForRefresh('PROP_CHANGE', this.pConn$.getActionsApi().refreshCaseView.bind(this.pConn$.getActionsApi(), caseKey, '', pageReference, {
380
+ ...refreshOptions,
381
+ refreshFor: prop[0]
382
+ }), `${pageReference}.${prop[1]}`, `${context}/${pageReference}`, context);
383
+ });
384
+ }
385
+ }
386
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AssignmentComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.ProgressSpinnerService }, { token: i3.ErrorMessagesService }, { token: i0.NgZone }, { token: i4.MatSnackBar }, { token: i5.BannerService }], target: i0.ɵɵFactoryTarget.Component }); }
387
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AssignmentComponent, isStandalone: true, selector: "app-assignment", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", arChildren$: "arChildren$", itemKey$: "itemKey$", isCreateStage$: "isCreateStage$", updateToken$: "updateToken$", isInModal$: "isInModal$" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <div><component-mapper name=\"AlertBanner\" [props]=\"{ banners: bannerService.banners }\" [parent]=\"this\"></component-mapper></div>\n <div *ngIf=\"bHasNavigation$\" class=\"psdk-stepper\">\n <component-mapper\n name=\"MultiStep\"\n [props]=\"{\n pConn$: newPConn$,\n formGroup$,\n arChildren$,\n arMainButtons$,\n arSecondaryButtons$,\n bIsVertical$,\n arCurrentStepIndicies$,\n arNavigationSteps$\n }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!bHasNavigation$\">\n <component-mapper\n name=\"AssignmentCard\"\n [props]=\"{ pConn$: newPConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$, updateToken$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i6.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatSnackBarModule) }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
362
388
  }
363
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AssignmentComponent, decorators: [{
389
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AssignmentComponent, decorators: [{
364
390
  type: Component,
365
- args: [{ selector: 'app-assignment', standalone: true, imports: [CommonModule, MatSnackBarModule, forwardRef(() => ComponentMapperComponent)], template: "<div>\n <div><component-mapper name=\"AlertBanner\" [props]=\"{ banners }\" [parent]=\"this\"></component-mapper></div>\n <div *ngIf=\"bHasNavigation$\" class=\"psdk-stepper\">\n <component-mapper\n name=\"MultiStep\"\n [props]=\"{\n pConn$: newPConn$,\n formGroup$,\n arChildren$,\n arMainButtons$,\n arSecondaryButtons$,\n bIsVertical$,\n arCurrentStepIndicies$,\n arNavigationSteps$\n }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!bHasNavigation$\">\n <component-mapper\n name=\"AssignmentCard\"\n [props]=\"{ pConn$: newPConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$, updateToken$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n" }]
366
- }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.ProgressSpinnerService }, { type: i3.ErrorMessagesService }, { type: i0.NgZone }, { type: i4.MatSnackBar }], propDecorators: { pConn$: [{
391
+ args: [{ selector: 'app-assignment', standalone: true, imports: [CommonModule, MatSnackBarModule, forwardRef(() => ComponentMapperComponent)], template: "<div>\n <div><component-mapper name=\"AlertBanner\" [props]=\"{ banners: bannerService.banners }\" [parent]=\"this\"></component-mapper></div>\n <div *ngIf=\"bHasNavigation$\" class=\"psdk-stepper\">\n <component-mapper\n name=\"MultiStep\"\n [props]=\"{\n pConn$: newPConn$,\n formGroup$,\n arChildren$,\n arMainButtons$,\n arSecondaryButtons$,\n bIsVertical$,\n arCurrentStepIndicies$,\n arNavigationSteps$\n }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!bHasNavigation$\">\n <component-mapper\n name=\"AssignmentCard\"\n [props]=\"{ pConn$: newPConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$, updateToken$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n" }]
392
+ }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.ProgressSpinnerService }, { type: i3.ErrorMessagesService }, { type: i0.NgZone }, { type: i4.MatSnackBar }, { type: i5.BannerService }], propDecorators: { pConn$: [{
367
393
  type: Input
368
394
  }], formGroup$: [{
369
395
  type: Input
@@ -377,7 +403,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
377
403
  type: Input
378
404
  }], isInModal$: [{
379
405
  type: Input
380
- }], banners: [{
381
- type: Input
382
406
  }] } });
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvaW5mcmEvYXNzaWdubWVudC9hc3NpZ25tZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9hc3NpZ25tZW50L2Fzc2lnbm1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFVLFVBQVUsRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBSzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7O0FBY3hHLE1BQU0sT0FBTyxtQkFBbUI7SUFnRDlCLFlBQ1UsZUFBdUMsRUFDdkMsU0FBaUMsRUFDakMsU0FBK0IsRUFDL0IsTUFBYyxFQUNkLFFBQXFCO1FBSnJCLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQTlDdEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUc1Qix1Q0FBdUM7UUFDdkMsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQU05QyxpQkFBWSxHQUFHLEtBQUss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VUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyTW9kdWxlLCBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IEVycm9yTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21lc3NhZ2VzL2Vycm9yLW1lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmZXJlbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5mcmEvcmVmZXJlbmNlL3JlZmVyZW5jZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIEFzc2lnbm1lbnRQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgdGVtcGxhdGU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFzc2lnbm1lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXNzaWdubWVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Fzc2lnbm1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0U25hY2tCYXJNb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgQXNzaWdubWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBhckNoaWxkcmVuJDogYW55W107XG4gIEBJbnB1dCgpIGl0ZW1LZXkkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzQ3JlYXRlU3RhZ2UkOiBib29sZWFuO1xuICBASW5wdXQoKSB1cGRhdGVUb2tlbiQ6IG51bWJlcjtcbiAgQElucHV0KCkgaXNJbk1vZGFsJCA9IGZhbHNlO1xuICBASW5wdXQoKSBiYW5uZXJzO1xuXG4gIC8vIEZvciBpbnRlcmFjdGlvbiB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogQXNzaWdubWVudFByb3BzO1xuXG4gIG5ld1BDb25uJDogYW55O1xuICBjb250YWluZXJOYW1lJDogc3RyaW5nO1xuXG4gIGJJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHRlbXBsYXRlTmFtZSQ6IHN0cmluZztcblxuICBhck1haW5CdXR0b25zJDogYW55W107XG4gIGFyU2Vjb25kYXJ5QnV0dG9ucyQ6IGFueVtdO1xuXG4gIGFjdGlvbnNBUEk6IGFueTtcblxuICBiSGFzTmF2aWdhdGlvbiQgPSBmYWxzZTtcbiAgYklzVmVydGljYWwkID0gZmFsc2U7XG4gIGFyQ3VycmVudFN0ZXBJbmRpY2llcyQ6IG51bWJlcltdID0gW107XG4gIGFyTmF2aWdhdGlvblN0ZXBzJDogYW55W10gPSBbXTtcblxuICBpbml0OiBib29sZWFuO1xuICBmaW5pc2hBc3NpZ25tZW50OiBhbnk7XG4gIG5hdmlnYXRlVG9TdGVwOiBhbnk7XG4gIHNhdmVBc3NpZ25tZW50OiBhbnk7XG4gIGNhbmNlbEFzc2lnbm1lbnQ6IGFueTtcbiAgY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50OiBhbnk7XG4gIHNob3dQYWdlOiBhbnk7XG4gIGFwcHJvdmVDYXNlOiBhbnk7XG4gIHJlamVjdENhc2U6IGFueTtcblxuICAvLyBpdGVtS2V5OiBzdHJpbmcgPSBcIlwiOyAgIC8vIEpBIC0gdGhpcyBpcyB3aGF0IE5lYnVsYS9Db25zdGVsbGF0aW9uIHVzZXMgdG8gcGFzcyB0byBmaW5pc2hBc3NpZ25tZW50LCBuYXZpZ2F0ZVRvU3RlcFxuXG4gIGJSZUluaXQgPSBmYWxzZTtcbiAgbG9jYWxpemVkVmFsO1xuICBsb2NhbGVDYXRlZ29yeSA9ICdBc3NpZ25tZW50JztcbiAgbG9jYWxlUmVmZXJlbmNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHNTZXJ2aWNlOiBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXJTZXJ2aWNlOiBFcnJvck1lc3NhZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xuXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgdGhpcy5iSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMubG9jYWxpemVkVmFsID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZTtcbiAgICB0aGlzLmxvY2FsZVJlZmVyZW5jZSA9IGAke3RoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0Q2xhc3NOYW1lKCl9IUNBU0UhJHt0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldE5hbWUoKX1gLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgY2hlY2tBbmRVcGRhdGUoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIC8vICAgIEFORCByZW1vdmluZyB0aGUgXCJnYXRlXCIgdGhhdCB3YXMgcHV0IHRoZXJlIHNpbmNlIHNob3VsZENvbXBvbmVudFVwZGF0ZVxuICAgIC8vICAgICAgc2hvdWxkIGJlIHRoZSByZWFsIFwiZ2F0ZVwiXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICBsZXQgbG9hZGluZ0luZm87XG4gICAgICB0cnkge1xuICAgICAgICAvLyBsb2FkaW5nSW5mbyA9IHRoaXMucENvbm4kLmdldExvYWRpbmdTdGF0dXMoKTtcbiAgICAgICAgbG9hZGluZ0luZm8gPSB0aGlzLm5ld1BDb25uJC5nZXRMb2FkaW5nU3RhdHVzKCk7XG5cbiAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UobG9hZGluZ0luZm8pO1xuICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgLyogZW1wdHkgKi9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5iSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNoYW5nZXMoKSB7XG4gICAgLy8gcENvbm4kIG1heSBiZSBhICdyZWZlcmVuY2UnIGNvbXBvbmVudCwgc28gbm9ybWFsaXplIGl0XG4gICAgdGhpcy5uZXdQQ29ubiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4odGhpcy5wQ29ubiQpO1xuXG4gICAgaWYgKHRoaXMuYXJDaGlsZHJlbiQpIHtcbiAgICAgIHRoaXMuY3JlYXRlQnV0dG9ucygpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRDb21wb25lbnQoKSB7XG4gICAgLy8gcENvbm4kIG1heSBiZSBhICdyZWZlcmVuY2UnIGNvbXBvbmVudCwgc28gbm9ybWFsaXplIGl0XG4gICAgLy8gdGhpcy5wQ29ubiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4odGhpcy5wQ29ubiQpO1xuICAgIHRoaXMubmV3UENvbm4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uKHRoaXMucENvbm4kKTtcblxuICAgIC8vIHByZXZlbnQgcmUtaW50aWFsaXppbmcgd2l0aCBmbG93Q29udGFpbmVyIHVwZGF0ZSB1bmxlc3MgYW4gYWN0aW9uIGlzIHRha2VuXG4gICAgdGhpcy5iUmVJbml0ID0gZmFsc2U7XG4gICAgdGhpcy5iSGFzTmF2aWdhdGlvbiQgPSBmYWxzZTtcblxuICAgIC8vIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpO1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5uZXdQQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMubmV3UENvbm4kLmdldENvbmZpZ1Byb3BzKCkpO1xuXG4gICAgdGhpcy50ZW1wbGF0ZU5hbWUkID0gdGhpcy5jb25maWdQcm9wcyQudGVtcGxhdGU7XG5cbiAgICAvLyBjcmVhdGUgcG9pbnRlcnMgdG8gZnVuY3Rpb25zXG4gICAgLypcbiAgICBsZXQgY29udGFpbmVyTWdyID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuICAgIGxldCBhY3Rpb25zQVBJID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgIGxldCBiYXNlQ29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgbGV0IGFjTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcbiAgICAqL1xuXG4gICAgY29uc3QgYWN0aW9uc0FQSSA9IHRoaXMubmV3UENvbm4kLmdldEFjdGlvbnNBcGkoKTtcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMubmV3UENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgY29uc3QgYWNOYW1lID0gdGhpcy5uZXdQQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuXG4gICAgLy8gZm9yIG5vdywgaW4gZ2VuZXJhbCB0aGlzIHNob3VsZCBiZSBvdmVycmlkZGVuIGJ5IHVwZGF0ZVNlbGYoKSwgYW5kIG5vdCBiZSBibGFua1xuICAgIGlmICh0aGlzLml0ZW1LZXkkID09PSAnJykge1xuICAgICAgdGhpcy5pdGVtS2V5JCA9IGJhc2VDb250ZXh0LmNvbmNhdCgnLycpLmNvbmNhdChhY05hbWUpO1xuICAgIH1cblxuICAgIC8vIHRoaXMucENvbm4kLmlzQm91bmRUb1N0YXRlKCk7XG4gICAgdGhpcy5uZXdQQ29ubiQuaXNCb3VuZFRvU3RhdGUoKTtcblxuICAgIHRoaXMuaW5pdCA9IGZhbHNlO1xuXG4gICAgLy8gc3RvcmUgb2ZmIGJvdW5kIGZ1bmN0aW9ucyB0byBhYm92ZSBwb2ludGVyc1xuICAgIHRoaXMuZmluaXNoQXNzaWdubWVudCA9IGFjdGlvbnNBUEkuZmluaXNoQXNzaWdubWVudC5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMubmF2aWdhdGVUb1N0ZXAgPSBhY3Rpb25zQVBJLm5hdmlnYXRlVG9TdGVwLmJpbmQoYWN0aW9uc0FQSSk7XG4gICAgdGhpcy5zYXZlQXNzaWdubWVudCA9IGFjdGlvbnNBUEkuc2F2ZUFzc2lnbm1lbnQuYmluZChhY3Rpb25zQVBJKTtcbiAgICB0aGlzLmNhbmNlbEFzc2lnbm1lbnQgPSBhY3Rpb25zQVBJLmNhbmNlbEFzc2lnbm1lbnQuYmluZChhY3Rpb25zQVBJKTtcbiAgICB0aGlzLnNob3dQYWdlID0gYWN0aW9uc0FQSS5zaG93UGFnZS5iaW5kKGFjdGlvbnNBUEkpO1xuXG4gICAgdGhpcy5jYW5jZWxDcmVhdGVTdGFnZUFzc2lnbm1lbnQgPSBhY3Rpb25zQVBJLmNhbmNlbENyZWF0ZVN0YWdlQXNzaWdubWVudC5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMuYXBwcm92ZUNhc2UgPSBhY3Rpb25zQVBJLmFwcHJvdmVDYXNlPy5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMucmVqZWN0Q2FzZSA9IGFjdGlvbnNBUEkucmVqZWN0Q2FzZT8uYmluZChhY3Rpb25zQVBJKTtcblxuICAgIGlmICh0aGlzLmFyQ2hpbGRyZW4kKSB7XG4gICAgICB0aGlzLmNyZWF0ZUJ1dHRvbnMoKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVCdXR0b25zKCkge1xuICAgIC8vIGxldCBvRGF0YSA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKTtcbiAgICBjb25zdCBvRGF0YSA9IHRoaXMubmV3UENvbm4kLmdldERhdGFPYmplY3QoKTtcblxuICAgIC8vIGluc2lkZVxuICAgIC8vIGdldCBmaXN0IGtpZCwgZ2V0IHRoZSBuYW1lIGFuZCBkaXNwbGFcbiAgICAvLyBwYXNzIGZpcnN0IGtpZCB0byBhIHZpZXcgY29udGFpbmVyLCB3aGljaCB3aWxsIGRpc3BlcnNlIGl0IHRvIGEgdmlldyB3aGljaCB3aWxsIHVzZSBvbmUgY29sdW1uLCB0d28gY29sdW1uLCBldGMuXG4gICAgY29uc3Qgb1dvcmtJdGVtID0gdGhpcy5hckNoaWxkcmVuJFswXS5nZXRQQ29ubmVjdCgpO1xuICAgIGNvbnN0IG9Xb3JrRGF0YSA9IG9Xb3JrSXRlbS5nZXREYXRhT2JqZWN0KCk7XG5cbiAgICBpZiAob1dvcmtEYXRhKSB7XG4gICAgICB0aGlzLmFjdGlvbnNBUEkgPSBvV29ya0l0ZW0uZ2V0QWN0aW9uc0FwaSgpO1xuXG4gICAgICAvLyB0aGlzLmNvbnRhaW5lck5hbWUkID0gb1dvcmtNZXRhW1wibmFtZVwiXTtcblxuICAgICAgaWYgKG9Xb3JrRGF0YS5jYXNlSW5mbyAmJiBvV29ya0RhdGEuY2FzZUluZm8uYXNzaWdubWVudHMgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJOYW1lJCA9IG9Xb3JrRGF0YS5jYXNlSW5mby5hc3NpZ25tZW50cz8uWzBdLm5hbWU7XG5cbiAgICAgICAgLy8gZ2V0IGNhc2VJbmZvXG4gICAgICAgIGNvbnN0IG9DYXNlSW5mbyA9IG9EYXRhLmNhc2VJbmZvO1xuXG4gICAgICAgIGlmIChvQ2FzZUluZm8gJiYgb0Nhc2VJbmZvLmFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICB0aGlzLmFyTWFpbkJ1dHRvbnMkID0gb0Nhc2VJbmZvLmFjdGlvbkJ1dHRvbnMubWFpbjtcbiAgICAgICAgICB0aGlzLmFyU2Vjb25kYXJ5QnV0dG9ucyQgPSBvQ2FzZUluZm8uYWN0aW9uQnV0dG9ucy5zZWNvbmRhcnk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob0Nhc2VJbmZvLm5hdmlnYXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuY3JlYXRlQnV0dG9uc0Zvck11bHRpU3RlcEZvcm0ob0Nhc2VJbmZvKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmJIYXNOYXZpZ2F0aW9uJCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlQnV0dG9uc0Zvck11bHRpU3RlcEZvcm0ob0Nhc2VJbmZvKSB7XG4gICAgdGhpcy5iSGFzTmF2aWdhdGlvbiQgPSB0cnVlO1xuXG4gICAgaWYgKChvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZSAmJiBvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZS50b0xvd2VyQ2FzZSgpID09PSAnc3RhbmRhcmQnKSB8fCBvQ2FzZUluZm8/Lm5hdmlnYXRpb24/LnN0ZXBzPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuYkhhc05hdmlnYXRpb24kID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZSAmJiBvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZS50b0xvd2VyQ2FzZSgpID09PSAndmVydGljYWwnKSB7XG4gICAgICB0aGlzLmJJc1ZlcnRpY2FsJCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYklzVmVydGljYWwkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gaXRlcmF0ZSB0aHJvdWdoIHN0ZXBzIHRvIGZpbmQgY3VycmVudCBvbmUocylcbiAgICAvLyBpbW11dGFibGUsIHNvIHdlIHdhbnQgdG8gY2hhbmdlIHRoZSBsb2NhbCBjb3B5LCBzbyBuZWVkIHRvIG1ha2UgYSBjb3B5XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIC8vIHdoYXQgY29tZXMgYmFjayBub3cgaW4gY29uZmlnT2JqZWN0IGlzIHRoZSBjaGlsZHJlbiBvZiB0aGUgZmxvd0NvbnRhaW5lclxuICAgICAgdGhpcy5hck5hdmlnYXRpb25TdGVwcyQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9DYXNlSW5mby5uYXZpZ2F0aW9uLnN0ZXBzKSk7XG4gICAgICB0aGlzLmFyTmF2aWdhdGlvblN0ZXBzJC5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgICBpZiAoc3RlcC5uYW1lKSB7XG4gICAgICAgICAgc3RlcC5uYW1lID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZShzdGVwLm5hbWUsIHVuZGVmaW5lZCwgdGhpcy5sb2NhbGVSZWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXJDdXJyZW50U3RlcEluZGljaWVzJCA9IFtdO1xuICAgICAgdGhpcy5hckN1cnJlbnRTdGVwSW5kaWNpZXMkID0gdGhpcy5maW5kQ3VycmVudEluZGljaWVzKHRoaXMuYXJOYXZpZ2F0aW9uU3RlcHMkLCB0aGlzLmFyQ3VycmVudFN0ZXBJbmRpY2llcyQsIDApO1xuICAgIH0pO1xuICB9XG5cbiAgZmluZEN1cnJlbnRJbmRpY2llcyhhclN0ZXBwZXJTdGVwczogYW55W10sIGFySW5kaWNpZXM6IG51bWJlcltdLCBkZXB0aDogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgYXJTdGVwcGVyU3RlcHMuZm9yRWFjaChzdGVwID0+IHtcbiAgICAgIGlmIChzdGVwLnZpc2l0ZWRfc3RhdHVzID09ICdjdXJyZW50Jykge1xuICAgICAgICBhckluZGljaWVzW2RlcHRoXSA9IGNvdW50O1xuXG4gICAgICAgIC8vIGFkZCBpblxuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJyc7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudmlzaXRlZF9zdGF0dXMgPT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICAgIHN0ZXAuc3RlcF9zdGF0dXMgPSAnY29tcGxldGVkJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICAgIHN0ZXAuc3RlcF9zdGF0dXMgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXAuc3RlcHMpIHtcbiAgICAgICAgYXJJbmRpY2llcyA9IHRoaXMuZmluZEN1cnJlbnRJbmRpY2llcyhzdGVwLnN0ZXBzLCBhckluZGljaWVzLCBkZXB0aCArIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFySW5kaWNpZXM7XG4gIH1cblxuICBvblNhdmVBY3Rpb25TdWNjZXNzKGRhdGEpIHtcbiAgICB0aGlzLmFjdGlvbnNBUEkuY2FuY2VsQXNzaWdubWVudCh0aGlzLml0ZW1LZXkkKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5DQVNFX0VWRU5UUy5DUkVBVEVfU1RBR0VfU0FWRUQsIGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgb25BY3Rpb25CdXR0b25DbGljayhvRGF0YTogYW55KSB7XG4gICAgdGhpcy5idXR0b25DbGljayhvRGF0YS5hY3Rpb24sIG9EYXRhLmJ1dHRvblR5cGUpO1xuICB9XG5cbiAgYnV0dG9uQ2xpY2soc0FjdGlvbiwgc0J1dHRvblR5cGUpIHtcbiAgICAvLyByaWdodCBub3csIGRvbmUgb24gYW4gaW5kaXZpZHVhbCBiYXNpcywgc2V0dGluZyBiUmVJbml0IHRvIHRydWVcbiAgICAvLyB1cG9uIHRoZSBuZXh0IGZsb3cgY29udGFpbmVyIHN0YXRlIGNoYW5nZSwgd2lsbCBjYXVzZSB0aGUgZmxvdyBjb250YWluZXJcbiAgICAvLyB0byByZS1pbml0aWFsaXplXG4gICAgLy8gdGhpcy5iUmVJbml0ID10cnVlO1xuXG4gICAgLypcbiAgICBsZXQgYmFzZUNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGxldCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG4gICAgbGV0IGl0ZW1JRCA9IGJhc2VDb250ZXh0LmNvbmNhdChcIi9cIikuY29uY2F0KGFjTmFtZSk7XG4gICAgKi9cblxuICAgIC8vIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5uZXdQQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICAvLyBjb25zdCBhY05hbWUgPSB0aGlzLm5ld1BDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG4gICAgLy8gY29uc3QgaXRlbUlEID0gYmFzZUNvbnRleHQuY29uY2F0KCcvJykuY29uY2F0KGFjTmFtZSk7XG5cbiAgICBpZiAoc0J1dHRvblR5cGUgPT0gJ3NlY29uZGFyeScpIHtcbiAgICAgIC8vIGNvbnN0IHN0ZXBJRCA9ICcnOyAvLyA/Pz9cblxuICAgICAgLy8gbmVlZCB0byBoYW5kbGUgY2FuY2VsIGFzIHRoaXMuY2FuY2VsKGRpc3BhdGNoSW5mbylcbiAgICAgIC8vIHRoaXMuYWN0aW9uc0FQSVtzQWN0aW9uXShkaXNwYXRjaEluZm8pO1xuICAgICAgc3dpdGNoIChzQWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ25hdmlnYXRlVG9TdGVwJzpcbiAgICAgICAgICB0aGlzLmVyU2VydmljZS5zZW5kTWVzc2FnZSgncHVibGlzaCcsICcnKTtcbiAgICAgICAgICBpZiAodGhpcy5mb3JtVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5iUmVJbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBuYXZpZ2F0ZVByb21pc2UgPSB0aGlzLm5hdmlnYXRlVG9TdGVwKCdwcmV2aW91cycsIHRoaXMuaXRlbUtleSQpO1xuICAgICAgICAgICAgbmF2aWdhdGVQcm9taXNlXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnTmF2aWdhdGlvbiBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzYXZlQXNzaWdubWVudCc6IHtcbiAgICAgICAgICBjb25zdCBjYXNlSUQgPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldEtleSgpO1xuICAgICAgICAgIGNvbnN0IGFzc2lnbm1lbnRJRCA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0QXNzaWdubWVudElEKCk7XG4gICAgICAgICAgY29uc3Qgc2F2ZVByb21pc2UgPSB0aGlzLnNhdmVBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpO1xuXG4gICAgICAgICAgc2F2ZVByb21pc2VcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIFByb3BlcnR5ICdjMTFuRW52JyBpcyBwcml2YXRlIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIGNsYXNzICdDYXNlSW5mbycuXG4gICAgICAgICAgICAgIGNvbnN0IGNhc2VUeXBlID0gdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5jMTFuRW52LmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX1RZUEVfSUQpO1xuICAgICAgICAgICAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnB1Ymxpc2goJ2NhbmNlbFByZXNzZWQnKTtcbiAgICAgICAgICAgICAgdGhpcy5vblNhdmVBY3Rpb25TdWNjZXNzKHsgY2FzZVR5cGUsIGNhc2VJRCwgYXNzaWdubWVudElEIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGAke3RoaXMubG9jYWxpemVkVmFsKCdTYXZlIGZhaWxlZCcsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpfWAsICdPaycpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2NhbmNlbEFzc2lnbm1lbnQnOlxuICAgICAgICAgIHRoaXMuYlJlSW5pdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5lclNlcnZpY2Uuc2VuZE1lc3NhZ2UoJ2Rpc21pc3MnLCAnJyk7XG4gICAgICAgICAgY29uc3QgaXNBc3NpZ25tZW50SW5DcmVhdGVTdGFnZSA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuaXNBc3NpZ25tZW50SW5DcmVhdGVTdGFnZSgpO1xuICAgICAgICAgIGNvbnN0IGlzTG9jYWxBY3Rpb24gPVxuICAgICAgICAgICAgdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5pc0xvY2FsQWN0aW9uKCkgfHxcbiAgICAgICAgICAgIChQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uSVNfTE9DQUxfQUNUSU9OICYmIHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5JU19MT0NBTF9BQ1RJT04pKTtcbiAgICAgICAgICAvLyBjaGVjayBpZiBjcmVhdGUgc3RhZ2UgKG1vZGFsKVxuICAgICAgICAgIGlmIChpc0Fzc2lnbm1lbnRJbkNyZWF0ZVN0YWdlICYmIHRoaXMuaXNJbk1vZGFsJCAmJiAhaXNMb2NhbEFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHRoaXMuY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpO1xuICAgICAgICAgICAgY2FuY2VsUHJvbWlzZVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIC8vIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChcbiAgICAgICAgICAgICAgICAvLyAgIFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkVWRU5UX0NBTkNFTCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ2FuY2VsIGZhaWxlZCEnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KX1gLCAnT2snKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKHRydWUpO1xuXG4gICAgICAgICAgICAvLyBwdWJsaXNoIGJlZm9yZSBjYW5jZWwgcHJlc3NlZCwgYmVjYXVzZVxuICAgICAgICAgICAgLy8gY2FuY2VsIGFzc2lnbm1lbnQgaGFwcGVucyBcImFmdGVyXCIgY2FuY2VsIGFzc2lnbm1lbnQgaGFwcGVuc1xuICAgICAgICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKCdjYW5jZWxQcmVzc2VkJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNhbmNlbFByb21pc2UgPSB0aGlzLmNhbmNlbEFzc2lnbm1lbnQodGhpcy5pdGVtS2V5JCk7XG4gICAgICAgICAgICBjYW5jZWxQcm9taXNlXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkVWRU5UX0NBTkNFTCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ2FuY2VsIGZhaWxlZCEnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KX1gLCAnT2snKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlamVjdENhc2UnOiB7XG4gICAgICAgICAgY29uc3QgcmVqZWN0UHJvbWlzZSA9IHRoaXMucmVqZWN0Q2FzZSh0aGlzLml0ZW1LZXkkKTtcblxuICAgICAgICAgIHJlamVjdFByb21pc2VcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHt9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ1JlamVjdGlvbiBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNCdXR0b25UeXBlID09ICdwcmltYXJ5Jykge1xuICAgICAgc3dpdGNoIChzQWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2ZpbmlzaEFzc2lnbm1lbnQnOlxuICAgICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdwdWJsaXNoJywgJycpO1xuICAgICAgICAgIGlmICh0aGlzLmZvcm1WYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmJSZUluaXQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UodHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBmaW5pc2hQcm9taXNlID0gdGhpcy5maW5pc2hBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpOyAvLyBKQSAtIHdhcyBpdGVtSUQgYnV0IE5lYnVsYS9Db25zdGVsbGF0aW9uIHVzZXMgaXRlbUtleVxuICAgICAgICAgICAgZmluaXNoUHJvbWlzZVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcygpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ1N1Ym1pdCBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBsZXQgc25hY2tCYXJSZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4oXCJQbGVhc2UgZml4IGVycm9ycyBvbiBmb3JtLlwiLCAgXCJPa1wiKTtcbiAgICAgICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdzaG93JywgdGhpcy5sb2NhbGl6ZWRWYWwoJ1BsZWFzZSBmaXggZXJyb3JzIG9uIGZvcm0uJywgdGhpcy5sb2NhbGVDYXRlZ29yeSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdhcHByb3ZlQ2FzZSc6IHtcbiAgICAgICAgICBjb25zdCBhcHByb3ZlUHJvbWlzZSA9IHRoaXMuYXBwcm92ZUNhc2UodGhpcy5pdGVtS2V5JCk7XG5cbiAgICAgICAgICBhcHByb3ZlUHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge30pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnQXBwcm92ZSBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9ybVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMudG91Y2hBbGwoKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAkLnZhbGlkO1xuICB9XG5cbiAgdG91Y2hBbGwoKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm1Hcm91cCQuY29udHJvbHMpLmZvckVhY2goKGNvbnRyb2w6IGFueSkgPT4ge1xuICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9uby1pZGVudGljYWwtZnVuY3Rpb25zXG4gIHRvcFZpZXdSZWZyZXNoKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtR3JvdXAkLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sOiBhbnkpID0+IHtcbiAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2Pjxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJBbGVydEJhbm5lclwiIFtwcm9wc109XCJ7IGJhbm5lcnMgfVwiIFtwYXJlbnRdPVwidGhpc1wiPjwvY29tcG9uZW50LW1hcHBlcj48L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImJIYXNOYXZpZ2F0aW9uJFwiIGNsYXNzPVwicHNkay1zdGVwcGVyXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJNdWx0aVN0ZXBcIlxuICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgcENvbm4kOiBuZXdQQ29ubiQsXG4gICAgICAgIGZvcm1Hcm91cCQsXG4gICAgICAgIGFyQ2hpbGRyZW4kLFxuICAgICAgICBhck1haW5CdXR0b25zJCxcbiAgICAgICAgYXJTZWNvbmRhcnlCdXR0b25zJCxcbiAgICAgICAgYklzVmVydGljYWwkLFxuICAgICAgICBhckN1cnJlbnRTdGVwSW5kaWNpZXMkLFxuICAgICAgICBhck5hdmlnYXRpb25TdGVwcyRcbiAgICAgIH1cIlxuICAgICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBhY3Rpb25CdXR0b25DbGljazogb25BY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFiSGFzTmF2aWdhdGlvbiRcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgbmFtZT1cIkFzc2lnbm1lbnRDYXJkXCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogbmV3UENvbm4kLCBmb3JtR3JvdXAkLCBhckNoaWxkcmVuJCwgYXJNYWluQnV0dG9ucyQsIGFyU2Vjb25kYXJ5QnV0dG9ucyQsIHVwZGF0ZVRva2VuJCB9XCJcbiAgICAgIFtwYXJlbnRdPVwidGhpc1wiXG4gICAgICBbb3V0cHV0RXZlbnRzXT1cInsgYWN0aW9uQnV0dG9uQ2xpY2s6IG9uQWN0aW9uQnV0dG9uQ2xpY2sgfVwiXG4gICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
407
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvaW5mcmEvYXNzaWdubWVudC9hc3NpZ25tZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9hc3NpZ25tZW50L2Fzc2lnbm1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFVLFVBQVUsRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBTTdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7OztBQUV4RyxTQUFTLGVBQWUsQ0FBQyxpQkFBaUI7SUFDeEMsNERBQTREO0lBQzVELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FB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Q0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUU7b0JBQ3hHLEdBQUcsY0FBYztvQkFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ3BCLENBQUMsRUFDRixHQUFHLGFBQWEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDN0IsR0FBRyxPQUFPLElBQUksYUFBYSxFQUFFLEVBQzdCLE9BQU8sQ0FDUixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzsrR0F0ZFUsbUJBQW1CO21HQUFuQixtQkFBbUIsbVNDaENoQyx5OEJBNEJBLDZFREVZLFlBQVksNEtBQUUsaUJBQWlCLG9EQUFtQix3QkFBd0I7OzRGQUV6RSxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzhPQUc3RSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBOZ1pvbmUsIGZvcndhcmRSZWYsIE9uRGVzdHJveSwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0U25hY2tCYXJNb2R1bGUsIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWVzc2FnZXMvZXJyb3ItbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21lc3NhZ2VzL3Byb2dyZXNzLXNwaW5uZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCYW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL2Jhbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2luZnJhL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbmZ1bmN0aW9uIGdldFJlZnJlc2hQcm9wcyhyZWZyZXNoQ29uZGl0aW9ucykge1xuICAvLyByZWZyZXNoQ29uZGl0aW9ucyBjdXVyZW50bHkgc3VwcG9ydHMgb25seSBcIkNoYW5nZXNcIiBldmVudFxuICBpZiAoIXJlZnJlc2hDb25kaXRpb25zKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiByZWZyZXNoQ29uZGl0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmV2ZW50ICYmIGl0ZW0uZXZlbnQgPT09ICdDaGFuZ2VzJykubWFwKGl0ZW0gPT4gW2l0ZW0uZmllbGQsIGl0ZW0uZmllbGQ/LnN1YnN0cmluZygxKV0pIHx8IFtdO1xufVxuXG5pbnRlcmZhY2UgQXNzaWdubWVudFByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICB0ZW1wbGF0ZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYXNzaWdubWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NpZ25tZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXNzaWdubWVudC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRTbmFja0Jhck1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBBc3NpZ25tZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGFyQ2hpbGRyZW4kOiBhbnlbXTtcbiAgQElucHV0KCkgaXRlbUtleSQ6IHN0cmluZztcbiAgQElucHV0KCkgaXNDcmVhdGVTdGFnZSQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHVwZGF0ZVRva2VuJDogbnVtYmVyO1xuICBASW5wdXQoKSBpc0luTW9kYWwkID0gZmFsc2U7XG5cbiAgLy8gRm9yIGludGVyYWN0aW9uIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBBc3NpZ25tZW50UHJvcHM7XG5cbiAgbmV3UENvbm4kOiBhbnk7XG4gIGNvbnRhaW5lck5hbWUkOiBzdHJpbmc7XG5cbiAgYkluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgdGVtcGxhdGVOYW1lJDogc3RyaW5nO1xuXG4gIGFyTWFpbkJ1dHRvbnMkOiBhbnlbXTtcbiAgYXJTZWNvbmRhcnlCdXR0b25zJDogYW55W107XG5cbiAgYWN0aW9uc0FQSTogYW55O1xuXG4gIGJIYXNOYXZpZ2F0aW9uJCA9IGZhbHNlO1xuICBiSXNWZXJ0aWNhbCQgPSBmYWxzZTtcbiAgYXJDdXJyZW50U3RlcEluZGljaWVzJDogbnVtYmVyW10gPSBbXTtcbiAgYXJOYXZpZ2F0aW9uU3RlcHMkOiBhbnlbXSA9IFtdO1xuXG4gIGluaXQ6IGJvb2xlYW47XG4gIGZpbmlzaEFzc2lnbm1lbnQ6IGFueTtcbiAgbmF2aWdhdGVUb1N0ZXA6IGFueTtcbiAgc2F2ZUFzc2lnbm1lbnQ6IGFueTtcbiAgY2FuY2VsQXNzaWdubWVudDogYW55O1xuICBjYW5jZWxDcmVhdGVTdGFnZUFzc2lnbm1lbnQ6IGFueTtcbiAgc2hvd1BhZ2U6IGFueTtcbiAgYXBwcm92ZUNhc2U6IGFueTtcbiAgcmVqZWN0Q2FzZTogYW55O1xuXG4gIC8vIGl0ZW1LZXk6IHN0cmluZyA9IFwiXCI7ICAgLy8gSkEgLSB0aGlzIGlzIHdoYXQgTmVidWxhL0NvbnN0ZWxsYXRpb24gdXNlcyB0byBwYXNzIHRvIGZpbmlzaEFzc2lnbm1lbnQsIG5hdmlnYXRlVG9TdGVwXG5cbiAgYlJlSW5pdCA9IGZhbHNlO1xuICBsb2NhbGl6ZWRWYWw7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ0Fzc2lnbm1lbnQnO1xuICBsb2NhbGVSZWZlcmVuY2U7XG5cbiAgc25hY2tCYXJSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlclNlcnZpY2U6IEVycm9yTWVzc2FnZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHVibGljIGJhbm5lclNlcnZpY2U6IEJhbm5lclNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgdGhpcy5pbml0Q29tcG9uZW50KCk7XG5cbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICB0aGlzLmJJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5sb2NhbGl6ZWRWYWwgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlO1xuICAgIHRoaXMubG9jYWxlUmVmZXJlbmNlID0gYCR7dGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5nZXRDbGFzc05hbWUoKX0hQ0FTRSEke3RoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0TmFtZSgpfWAudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIHRoaXMuYmFubmVyU2VydmljZS51cGRhdGVCYW5uZXJzKHRoaXMuaXRlbUtleSQpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICAvLyAgICBBTkQgcmVtb3ZpbmcgdGhlIFwiZ2F0ZVwiIHRoYXQgd2FzIHB1dCB0aGVyZSBzaW5jZSBzaG91bGRDb21wb25lbnRVcGRhdGVcbiAgICAvLyAgICAgIHNob3VsZCBiZSB0aGUgcmVhbCBcImdhdGVcIlxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgbGV0IGxvYWRpbmdJbmZvO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gbG9hZGluZ0luZm8gPSB0aGlzLnBDb25uJC5nZXRMb2FkaW5nU3RhdHVzKCk7XG4gICAgICAgIGxvYWRpbmdJbmZvID0gdGhpcy5uZXdQQ29ubiQuZ2V0TG9hZGluZ1N0YXR1cygpO1xuXG4gICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGxvYWRpbmdJbmZvKTtcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgIC8qIGVtcHR5ICovXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuYkluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDaGFuZ2VzKCkge1xuICAgIHRoaXMucmVnaXN0ZXJGb3JSZWZyZXNoKCk7XG5cbiAgICAvLyBwQ29ubiQgbWF5IGJlIGEgJ3JlZmVyZW5jZScgY29tcG9uZW50LCBzbyBub3JtYWxpemUgaXRcbiAgICB0aGlzLm5ld1BDb25uJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubih0aGlzLnBDb25uJCk7XG5cbiAgICBpZiAodGhpcy5hckNoaWxkcmVuJCkge1xuICAgICAgdGhpcy5jcmVhdGVCdXR0b25zKCk7XG4gICAgfVxuICB9XG5cbiAgaW5pdENvbXBvbmVudCgpIHtcbiAgICAvLyBwQ29ubiQgbWF5IGJlIGEgJ3JlZmVyZW5jZScgY29tcG9uZW50LCBzbyBub3JtYWxpemUgaXRcbiAgICAvLyB0aGlzLnBDb25uJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubih0aGlzLnBDb25uJCk7XG4gICAgdGhpcy5uZXdQQ29ubiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4odGhpcy5wQ29ubiQpO1xuXG4gICAgLy8gcHJldmVudCByZS1pbnRpYWxpemluZyB3aXRoIGZsb3dDb250YWluZXIgdXBkYXRlIHVubGVzcyBhbiBhY3Rpb24gaXMgdGFrZW5cbiAgICB0aGlzLmJSZUluaXQgPSBmYWxzZTtcbiAgICB0aGlzLmJIYXNOYXZpZ2F0aW9uJCA9IGZhbHNlO1xuXG4gICAgLy8gdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSk7XG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLm5ld1BDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5uZXdQQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSk7XG5cbiAgICB0aGlzLnRlbXBsYXRlTmFtZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC50ZW1wbGF0ZTtcblxuICAgIC8vIGNyZWF0ZSBwb2ludGVycyB0byBmdW5jdGlvbnNcbiAgICAvKlxuICAgIGxldCBjb250YWluZXJNZ3IgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJNYW5hZ2VyKCk7XG4gICAgbGV0IGFjdGlvbnNBUEkgPSB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG4gICAgbGV0IGJhc2VDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBsZXQgYWNOYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuICAgICovXG5cbiAgICBjb25zdCBhY3Rpb25zQVBJID0gdGhpcy5uZXdQQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5uZXdQQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBhY05hbWUgPSB0aGlzLm5ld1BDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG5cbiAgICAvLyBmb3Igbm93LCBpbiBnZW5lcmFsIHRoaXMgc2hvdWxkIGJlIG92ZXJyaWRkZW4gYnkgdXBkYXRlU2VsZigpLCBhbmQgbm90IGJlIGJsYW5rXG4gICAgaWYgKHRoaXMuaXRlbUtleSQgPT09ICcnKSB7XG4gICAgICB0aGlzLml0ZW1LZXkkID0gYmFzZUNvbnRleHQuY29uY2F0KCcvJykuY29uY2F0KGFjTmFtZSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcy5wQ29ubiQuaXNCb3VuZFRvU3RhdGUoKTtcbiAgICB0aGlzLm5ld1BDb25uJC5pc0JvdW5kVG9TdGF0ZSgpO1xuXG4gICAgdGhpcy5pbml0ID0gZmFsc2U7XG5cbiAgICAvLyBzdG9yZSBvZmYgYm91bmQgZnVuY3Rpb25zIHRvIGFib3ZlIHBvaW50ZXJzXG4gICAgdGhpcy5maW5pc2hBc3NpZ25tZW50ID0gYWN0aW9uc0FQSS5maW5pc2hBc3NpZ25tZW50LmJpbmQoYWN0aW9uc0FQSSk7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvU3RlcCA9IGFjdGlvbnNBUEkubmF2aWdhdGVUb1N0ZXAuYmluZChhY3Rpb25zQVBJKTtcbiAgICB0aGlzLnNhdmVBc3NpZ25tZW50ID0gYWN0aW9uc0FQSS5zYXZlQXNzaWdubWVudC5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMuY2FuY2VsQXNzaWdubWVudCA9IGFjdGlvbnNBUEkuY2FuY2VsQXNzaWdubWVudC5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMuc2hvd1BhZ2UgPSBhY3Rpb25zQVBJLnNob3dQYWdlLmJpbmQoYWN0aW9uc0FQSSk7XG5cbiAgICB0aGlzLmNhbmNlbENyZWF0ZVN0YWdlQXNzaWdubWVudCA9IGFjdGlvbnNBUEkuY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50LmJpbmQoYWN0aW9uc0FQSSk7XG4gICAgdGhpcy5hcHByb3ZlQ2FzZSA9IGFjdGlvbnNBUEkuYXBwcm92ZUNhc2U/LmJpbmQoYWN0aW9uc0FQSSk7XG4gICAgdGhpcy5yZWplY3RDYXNlID0gYWN0aW9uc0FQSS5yZWplY3RDYXNlPy5iaW5kKGFjdGlvbnNBUEkpO1xuXG4gICAgaWYgKHRoaXMuYXJDaGlsZHJlbiQpIHtcbiAgICAgIHRoaXMuY3JlYXRlQnV0dG9ucygpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUJ1dHRvbnMoKSB7XG4gICAgLy8gbGV0IG9EYXRhID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpO1xuICAgIGNvbnN0IG9EYXRhID0gdGhpcy5uZXdQQ29ubiQuZ2V0RGF0YU9iamVjdCgpO1xuXG4gICAgLy8gaW5zaWRlXG4gICAgLy8gZ2V0IGZpc3Qga2lkLCBnZXQgdGhlIG5hbWUgYW5kIGRpc3BsYVxuICAgIC8vIHBhc3MgZmlyc3Qga2lkIHRvIGEgdmlldyBjb250YWluZXIsIHdoaWNoIHdpbGwgZGlzcGVyc2UgaXQgdG8gYSB2aWV3IHdoaWNoIHdpbGwgdXNlIG9uZSBjb2x1bW4sIHR3byBjb2x1bW4sIGV0Yy5cbiAgICBjb25zdCBvV29ya0l0ZW0gPSB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCk7XG4gICAgY29uc3Qgb1dvcmtEYXRhID0gb1dvcmtJdGVtLmdldERhdGFPYmplY3QoKTtcblxuICAgIGlmIChvV29ya0RhdGEpIHtcbiAgICAgIHRoaXMuYWN0aW9uc0FQSSA9IG9Xb3JrSXRlbS5nZXRBY3Rpb25zQXBpKCk7XG5cbiAgICAgIC8vIHRoaXMuY29udGFpbmVyTmFtZSQgPSBvV29ya01ldGFbXCJuYW1lXCJdO1xuXG4gICAgICBpZiAob1dvcmtEYXRhLmNhc2VJbmZvICYmIG9Xb3JrRGF0YS5jYXNlSW5mby5hc3NpZ25tZW50cyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lck5hbWUkID0gb1dvcmtEYXRhLmNhc2VJbmZvLmFzc2lnbm1lbnRzPy5bMF0ubmFtZTtcblxuICAgICAgICAvLyBnZXQgY2FzZUluZm9cbiAgICAgICAgY29uc3Qgb0Nhc2VJbmZvID0gb0RhdGEuY2FzZUluZm87XG5cbiAgICAgICAgaWYgKG9DYXNlSW5mbyAmJiBvQ2FzZUluZm8uYWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgIHRoaXMuYXJNYWluQnV0dG9ucyQgPSBvQ2FzZUluZm8uYWN0aW9uQnV0dG9ucy5tYWluO1xuICAgICAgICAgIHRoaXMuYXJTZWNvbmRhcnlCdXR0b25zJCA9IG9DYXNlSW5mby5hY3Rpb25CdXR0b25zLnNlY29uZGFyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvQ2FzZUluZm8ubmF2aWdhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVCdXR0b25zRm9yTXVsdGlTdGVwRm9ybShvQ2FzZUluZm8pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYkhhc05hdmlnYXRpb24kID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjcmVhdGVCdXR0b25zRm9yTXVsdGlTdGVwRm9ybShvQ2FzZUluZm8pIHtcbiAgICB0aGlzLmJIYXNOYXZpZ2F0aW9uJCA9IHRydWU7XG5cbiAgICBpZiAoKG9DYXNlSW5mby5uYXZpZ2F0aW9uLnRlbXBsYXRlICYmIG9DYXNlSW5mby5uYXZpZ2F0aW9uLnRlbXBsYXRlLnRvTG93ZXJDYXNlKCkgPT09ICdzdGFuZGFyZCcpIHx8IG9DYXNlSW5mbz8ubmF2aWdhdGlvbj8uc3RlcHM/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5iSGFzTmF2aWdhdGlvbiQgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKG9DYXNlSW5mby5uYXZpZ2F0aW9uLnRlbXBsYXRlICYmIG9DYXNlSW5mby5uYXZpZ2F0aW9uLnRlbXBsYXRlLnRvTG93ZXJDYXNlKCkgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIHRoaXMuYklzVmVydGljYWwkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iSXNWZXJ0aWNhbCQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBpdGVyYXRlIHRocm91Z2ggc3RlcHMgdG8gZmluZCBjdXJyZW50IG9uZShzKVxuICAgIC8vIGltbXV0YWJsZSwgc28gd2Ugd2FudCB0byBjaGFuZ2UgdGhlIGxvY2FsIGNvcHksIHNvIG5lZWQgdG8gbWFrZSBhIGNvcHlcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgLy8gd2hhdCBjb21lcyBiYWNrIG5vdyBpbiBjb25maWdPYmplY3QgaXMgdGhlIGNoaWxkcmVuIG9mIHRoZSBmbG93Q29udGFpbmVyXG4gICAgICB0aGlzLmFyTmF2aWdhdGlvblN0ZXBzJCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob0Nhc2VJbmZvLm5hdmlnYXRpb24uc3RlcHMpKTtcbiAgICAgIHRoaXMuYXJOYXZpZ2F0aW9uU3RlcHMkLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgIGlmIChzdGVwLm5hbWUpIHtcbiAgICAgICAgICBzdGVwLm5hbWUgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlKHN0ZXAubmFtZSwgdW5kZWZpbmVkLCB0aGlzLmxvY2FsZVJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5hckN1cnJlbnRTdGVwSW5kaWNpZXMkID0gW107XG4gICAgICB0aGlzLmFyQ3VycmVudFN0ZXBJbmRpY2llcyQgPSB0aGlzLmZpbmRDdXJyZW50SW5kaWNpZXModGhpcy5hck5hdmlnYXRpb25TdGVwcyQsIHRoaXMuYXJDdXJyZW50U3RlcEluZGljaWVzJCwgMCk7XG4gICAgfSk7XG4gIH1cblxuICBmaW5kQ3VycmVudEluZGljaWVzKGFyU3RlcHBlclN0ZXBzOiBhbnlbXSwgYXJJbmRpY2llczogbnVtYmVyW10sIGRlcHRoOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBhclN0ZXBwZXJTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgaWYgKHN0ZXAudmlzaXRlZF9zdGF0dXMgPT0gJ2N1cnJlbnQnKSB7XG4gICAgICAgIGFySW5kaWNpZXNbZGVwdGhdID0gY291bnQ7XG5cbiAgICAgICAgLy8gYWRkIGluXG4gICAgICAgIHN0ZXAuc3RlcF9zdGF0dXMgPSAnJztcbiAgICAgIH0gZWxzZSBpZiAoc3RlcC52aXNpdGVkX3N0YXR1cyA9PSAnc3VjY2VzcycpIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgICAgc3RlcC5zdGVwX3N0YXR1cyA9ICdjb21wbGV0ZWQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgICAgc3RlcC5zdGVwX3N0YXR1cyA9ICcnO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RlcC5zdGVwcykge1xuICAgICAgICBhckluZGljaWVzID0gdGhpcy5maW5kQ3VycmVudEluZGljaWVzKHN0ZXAuc3RlcHMsIGFySW5kaWNpZXMsIGRlcHRoICsgMSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJJbmRpY2llcztcbiAgfVxuXG4gIG9uU2F2ZUFjdGlvblN1Y2Nlc3MoZGF0YSkge1xuICAgIHRoaXMuYWN0aW9uc0FQSS5jYW5jZWxBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkNBU0VfRVZFTlRTLkNSRUFURV9TVEFHRV9TQVZFRCwgZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBvbkFjdGlvbkJ1dHRvbkNsaWNrKG9EYXRhOiBhbnkpIHtcbiAgICB0aGlzLmJ1dHRvbkNsaWNrKG9EYXRhLmFjdGlvbiwgb0RhdGEuYnV0dG9uVHlwZSk7XG4gIH1cblxuICBidXR0b25DbGljayhzQWN0aW9uLCBzQnV0dG9uVHlwZSkge1xuICAgIHRoaXMuc25hY2tCYXJSZWY/LmRpc21pc3MoKTtcbiAgICB0aGlzLmJhbm5lclNlcnZpY2UuY2xlYXJCYW5uZXJzKCk7XG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKCdjbGVhckJhbm5lck1lc3NhZ2VzJyk7XG4gICAgLy8gcmlnaHQgbm93LCBkb25lIG9uIGFuIGluZGl2aWR1YWwgYmFzaXMsIHNldHRpbmcgYlJlSW5pdCB0byB0cnVlXG4gICAgLy8gdXBvbiB0aGUgbmV4dCBmbG93IGNvbnRhaW5lciBzdGF0ZSBjaGFuZ2UsIHdpbGwgY2F1c2UgdGhlIGZsb3cgY29udGFpbmVyXG4gICAgLy8gdG8gcmUtaW5pdGlhbGl6ZVxuICAgIC8vIHRoaXMuYlJlSW5pdCA9dHJ1ZTtcblxuICAgIC8qXG4gICAgbGV0IGJhc2VDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBsZXQgYWNOYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuICAgIGxldCBpdGVtSUQgPSBiYXNlQ29udGV4dC5jb25jYXQoXCIvXCIpLmNvbmNhdChhY05hbWUpO1xuICAgICovXG5cbiAgICAvLyBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMubmV3UENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgLy8gY29uc3QgYWNOYW1lID0gdGhpcy5uZXdQQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuICAgIC8vIGNvbnN0IGl0ZW1JRCA9IGJhc2VDb250ZXh0LmNvbmNhdCgnLycpLmNvbmNhdChhY05hbWUpO1xuXG4gICAgaWYgKHNCdXR0b25UeXBlID09ICdzZWNvbmRhcnknKSB7XG4gICAgICAvLyBjb25zdCBzdGVwSUQgPSAnJzsgLy8gPz8/XG5cbiAgICAgIC8vIG5lZWQgdG8gaGFuZGxlIGNhbmNlbCBhcyB0aGlzLmNhbmNlbChkaXNwYXRjaEluZm8pXG4gICAgICAvLyB0aGlzLmFjdGlvbnNBUElbc0FjdGlvbl0oZGlzcGF0Y2hJbmZvKTtcbiAgICAgIHN3aXRjaCAoc0FjdGlvbikge1xuICAgICAgICBjYXNlICduYXZpZ2F0ZVRvU3RlcCc6XG4gICAgICAgICAgdGhpcy5lclNlcnZpY2Uuc2VuZE1lc3NhZ2UoJ3B1Ymxpc2gnLCAnJyk7XG5cbiAgICAgICAgICB0aGlzLmJSZUluaXQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKHRydWUpO1xuXG4gICAgICAgICAgY29uc3QgbmF2aWdhdGVQcm9taXNlID0gdGhpcy5uYXZpZ2F0ZVRvU3RlcCgncHJldmlvdXMnLCB0aGlzLml0ZW1LZXkkKTtcbiAgICAgICAgICBuYXZpZ2F0ZVByb21pc2VcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXJSZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ05hdmlnYXRpb24gZmFpbGVkIScsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpfWAsICdPaycpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzYXZlQXNzaWdubWVudCc6IHtcbiAgICAgICAgICBjb25zdCBjYXNlSUQgPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldEtleSgpO1xuICAgICAgICAgIGNvbnN0IGFzc2lnbm1lbnRJRCA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0QXNzaWdubWVudElEKCk7XG4gICAgICAgICAgY29uc3Qgc2F2ZVByb21pc2UgPSB0aGlzLnNhdmVBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpO1xuXG4gICAgICAgICAgc2F2ZVByb21pc2VcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2FzZVR5cGUgPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmMxMW5FbnYuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfVFlQRV9JRCk7XG4gICAgICAgICAgICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaCgnY2FuY2VsUHJlc3NlZCcpO1xuICAgICAgICAgICAgICB0aGlzLm9uU2F2ZUFjdGlvblN1Y2Nlc3MoeyBjYXNlVHlwZSwgY2FzZUlELCBhc3NpZ25tZW50SUQgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyUmVmID0gdGhpcy5zbmFja0Jhci5vcGVuKGAke3RoaXMubG9jYWxpemVkVmFsKCdTYXZlIGZhaWxlZCcsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpfWAsICdPaycpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2NhbmNlbEFzc2lnbm1lbnQnOlxuICAgICAgICAgIHRoaXMuYlJlSW5pdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5lclNlcnZpY2Uuc2VuZE1lc3NhZ2UoJ2Rpc21pc3MnLCAnJyk7XG4gICAgICAgICAgY29uc3QgaXNBc3NpZ25tZW50SW5DcmVhdGVTdGFnZSA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuaXNBc3NpZ25tZW50SW5DcmVhdGVTdGFnZSgpO1xuICAgICAgICAgIGNvbnN0IGlzTG9jYWxBY3Rpb24gPVxuICAgICAgICAgICAgdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5pc0xvY2FsQWN0aW9uKCkgfHxcbiAgICAgICAgICAgIChQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uSVNfTE9DQUxfQUNUSU9OICYmIHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5JU19MT0NBTF9BQ1RJT04pKTtcbiAgICAgICAgICAvLyBjaGVjayBpZiBjcmVhdGUgc3RhZ2UgKG1vZGFsKVxuICAgICAgICAgIGlmIChpc0Fzc2lnbm1lbnRJbkNyZWF0ZVN0YWdlICYmIHRoaXMuaXNJbk1vZGFsJCAmJiAhaXNMb2NhbEFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHRoaXMuY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpO1xuICAgICAgICAgICAgY2FuY2VsUHJvbWlzZVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIC8vIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChcbiAgICAgICAgICAgICAgICAvLyAgIFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkVWRU5UX0NBTkNFTCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXJSZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ0NhbmNlbCBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZSh0cnVlKTtcblxuICAgICAgICAgICAgLy8gcHVibGlzaCBiZWZvcmUgY2FuY2VsIHByZXNzZWQsIGJlY2F1c2VcbiAgICAgICAgICAgIC8vIGNhbmNlbCBhc3NpZ25tZW50IGhhcHBlbnMgXCJhZnRlclwiIGNhbmNlbCBhc3NpZ25tZW50IGhhcHBlbnNcbiAgICAgICAgICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaCgnY2FuY2VsUHJlc3NlZCcpO1xuXG4gICAgICAgICAgICBjb25zdCBjYW5jZWxQcm9taXNlID0gdGhpcy5jYW5jZWxBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpO1xuICAgICAgICAgICAgY2FuY2VsUHJvbWlzZVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyUmVmID0gdGhpcy5zbmFja0Jhci5vcGVuKGAke3RoaXMubG9jYWxpemVkVmFsKCdDYW5jZWwgZmFpbGVkIScsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpfWAsICdPaycpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmVqZWN0Q2FzZSc6IHtcbiAgICAgICAgICBjb25zdCByZWplY3RQcm9taXNlID0gdGhpcy5yZWplY3RDYXNlKHRoaXMuaXRlbUtleSQpO1xuXG4gICAgICAgICAgcmVqZWN0UHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge30pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXJSZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ1JlamVjdGlvbiBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNCdXR0b25UeXBlID09ICdwcmltYXJ5Jykge1xuICAgICAgc3dpdGNoIChzQWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2ZpbmlzaEFzc2lnbm1lbnQnOlxuICAgICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdwdWJsaXNoJywgJycpO1xuICAgICAgICAgIHRoaXMuYlJlSW5pdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UodHJ1ZSk7XG4gICAgICAgICAgY29uc3QgZmluaXNoUHJvbWlzZSA9IHRoaXMuZmluaXNoQXNzaWdubWVudCh0aGlzLml0ZW1LZXkkKTsgLy8gSkEgLSB3YXMgaXRlbUlEIGJ1dCBOZWJ1bGEvQ29uc3RlbGxhdGlvbiB1c2VzIGl0ZW1LZXlcbiAgICAgICAgICBmaW5pc2hQcm9taXNlXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyUmVmID0gdGhpcy5zbmFja0Jhci5vcGVuKGAke3RoaXMubG9jYWxpemVkVmFsKCdTdWJtaXQgZmFpbGVkIScsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpfWAsICdPaycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYXBwcm92ZUNhc2UnOiB7XG4gICAgICAgICAgY29uc3QgYXBwcm92ZVByb21pc2UgPSB0aGlzLmFwcHJvdmVDYXNlKHRoaXMuaXRlbUtleSQpO1xuXG4gICAgICAgICAgYXBwcm92ZVByb21pc2VcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHt9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyUmVmID0gdGhpcy5zbmFja0Jhci5vcGVuKGAke3RoaXMubG9jYWxpemVkVmFsKCdBcHByb3ZlIGZhaWxlZCEnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KX1gLCAnT2snKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3JtVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgdGhpcy50b3VjaEFsbCgpO1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cCQudmFsaWQ7XG4gIH1cblxuICB0b3VjaEFsbCgpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwJC5jb250cm9scykuZm9yRWFjaCgoY29udHJvbDogYW55KSA9PiB7XG4gICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvcFZpZXdSZWZyZXNoKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtR3JvdXAkLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sOiBhbnkpID0+IHtcbiAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVnaXN0ZXJGb3JSZWZyZXNoKCkge1xuICAgIGNvbnN0IHJlZnJlc2hDb25kaXRpb25zID0gdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKT8uZ2V0QWN0aW9uUmVmcmVzaENvbmRpdGlvbnMoKTtcbiAgICBjb25zdCBwYWdlUmVmZXJlbmNlID0gdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuXG4gICAgLy8gcmVmcmVzaCBhcGkgZGUtcmVnaXN0cmF0aW9uXG4gICAgUENvcmUuZ2V0UmVmcmVzaE1hbmFnZXIoKS5kZVJlZ2lzdGVyRm9yUmVmcmVzaChjb250ZXh0KTtcblxuICAgIC8vIHJlZnJlc2ggYXBpIHJlZ2lzdHJhdGlvblxuICAgIGNvbnN0IHJlZnJlc2hQcm9wcyA9IGdldFJlZnJlc2hQcm9wcyhyZWZyZXNoQ29uZGl0aW9ucyk7XG4gICAgY29uc3QgY2FzZUtleSA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0S2V5KCk7XG4gICAgY29uc3QgcmVmcmVzaE9wdGlvbnMgPSB7XG4gICAgICBhdXRvRGV0ZWN0UmVmcmVzaDogdHJ1ZSxcbiAgICAgIHByZXNlcnZlQ2xpZW50Q2hhbmdlczogZmFsc2VcbiAgICB9O1xuICAgIGlmIChyZWZyZXNoUHJvcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmVmcmVzaFByb3BzLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgIFBDb3JlLmdldFJlZnJlc2hNYW5hZ2VyKCkucmVnaXN0ZXJGb3JSZWZyZXNoKFxuICAgICAgICAgICdQUk9QX0NIQU5HRScsXG4gICAgICAgICAgdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpLnJlZnJlc2hDYXNlVmlldy5iaW5kKHRoaXMucENvbm4kLmdldEFjdGlvbnNBcGkoKSwgY2FzZUtleSwgJycsIHBhZ2VSZWZlcmVuY2UsIHtcbiAgICAgICAgICAgIC4uLnJlZnJlc2hPcHRpb25zLFxuICAgICAgICAgICAgcmVmcmVzaEZvcjogcHJvcFswXVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGAke3BhZ2VSZWZlcmVuY2V9LiR7cHJvcFsxXX1gLFxuICAgICAgICAgIGAke2NvbnRleHR9LyR7cGFnZVJlZmVyZW5jZX1gLFxuICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdj5cbiAgPGRpdj48Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiQWxlcnRCYW5uZXJcIiBbcHJvcHNdPVwieyBiYW5uZXJzOiBiYW5uZXJTZXJ2aWNlLmJhbm5lcnMgfVwiIFtwYXJlbnRdPVwidGhpc1wiPjwvY29tcG9uZW50LW1hcHBlcj48L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImJIYXNOYXZpZ2F0aW9uJFwiIGNsYXNzPVwicHNkay1zdGVwcGVyXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJNdWx0aVN0ZXBcIlxuICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgcENvbm4kOiBuZXdQQ29ubiQsXG4gICAgICAgIGZvcm1Hcm91cCQsXG4gICAgICAgIGFyQ2hpbGRyZW4kLFxuICAgICAgICBhck1haW5CdXR0b25zJCxcbiAgICAgICAgYXJTZWNvbmRhcnlCdXR0b25zJCxcbiAgICAgICAgYklzVmVydGljYWwkLFxuICAgICAgICBhckN1cnJlbnRTdGVwSW5kaWNpZXMkLFxuICAgICAgICBhck5hdmlnYXRpb25TdGVwcyRcbiAgICAgIH1cIlxuICAgICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBhY3Rpb25CdXR0b25DbGljazogb25BY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFiSGFzTmF2aWdhdGlvbiRcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgbmFtZT1cIkFzc2lnbm1lbnRDYXJkXCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogbmV3UENvbm4kLCBmb3JtR3JvdXAkLCBhckNoaWxkcmVuJCwgYXJNYWluQnV0dG9ucyQsIGFyU2Vjb25kYXJ5QnV0dG9ucyQsIHVwZGF0ZVRva2VuJCB9XCJcbiAgICAgIFtwYXJlbnRdPVwidGhpc1wiXG4gICAgICBbb3V0cHV0RXZlbnRzXT1cInsgYWN0aW9uQnV0dG9uQ2xpY2s6IG9uQWN0aW9uQnV0dG9uQ2xpY2sgfVwiXG4gICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -23,12 +23,12 @@ export class AssignmentCardComponent {
23
23
  onActionButtonClick(oData) {
24
24
  this.actionButtonClick.emit(oData);
25
25
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AssignmentCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AssignmentCardComponent, isStandalone: true, selector: "app-assignment-card", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", arMainButtons$: "arMainButtons$", arSecondaryButtons$: "arSecondaryButtons$", arChildren$: "arChildren$", updateToken$: "updateToken$" }, outputs: { actionButtonClick: "actionButtonClick" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formGroup$\" name=\"flowContainer\" class=\"psdk-flow-container\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'CaseCreateStage'\"\n name=\"CaseCreateStage\"\n [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"\n ></component-mapper>\n <component-mapper *ngSwitchCase=\"'Region'\" name=\"Region\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <div *ngSwitchDefault>Assignment Card wants component not yet available: {{ kid.getPConnect().getComponentName() }}</div>\n </div>\n </div>\n</form>\n\n<div>\n <br />\n <div class=\"psdk-case-view-divider\"></div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$, arSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n</div>\n", styles: [".psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-flow-container{padding:0rem 1rem}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitch), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitchCase), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitchDefault), selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i2.ɵNgNoValidate), selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i0.forwardRef(() => i2.NgControlStatusGroup), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(() => i2.FormGroupDirective), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AssignmentCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AssignmentCardComponent, isStandalone: true, selector: "app-assignment-card", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", arMainButtons$: "arMainButtons$", arSecondaryButtons$: "arSecondaryButtons$", arChildren$: "arChildren$", updateToken$: "updateToken$" }, outputs: { actionButtonClick: "actionButtonClick" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formGroup$\" name=\"flowContainer\" class=\"psdk-flow-container\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'CaseCreateStage'\"\n name=\"CaseCreateStage\"\n [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"\n ></component-mapper>\n <component-mapper *ngSwitchCase=\"'Region'\" name=\"Region\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <div *ngSwitchDefault>Assignment Card wants component not yet available: {{ kid.getPConnect().getComponentName() }}</div>\n </div>\n </div>\n</form>\n\n<div>\n <br />\n <div class=\"psdk-case-view-divider\"></div>\n\n <component-mapper\n *ngIf=\"arMainButtons$ && arSecondaryButtons$\"\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$, arSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n</div>\n", styles: [".psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-flow-container{padding:0rem 1rem}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitch), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitchCase), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitchDefault), selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i2.ɵNgNoValidate), selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i0.forwardRef(() => i2.NgControlStatusGroup), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(() => i2.FormGroupDirective), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AssignmentCardComponent, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AssignmentCardComponent, decorators: [{
30
30
  type: Component,
31
- args: [{ selector: 'app-assignment-card', standalone: true, imports: [CommonModule, ReactiveFormsModule, forwardRef(() => ComponentMapperComponent)], template: "<form [formGroup]=\"formGroup$\" name=\"flowContainer\" class=\"psdk-flow-container\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'CaseCreateStage'\"\n name=\"CaseCreateStage\"\n [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"\n ></component-mapper>\n <component-mapper *ngSwitchCase=\"'Region'\" name=\"Region\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <div *ngSwitchDefault>Assignment Card wants component not yet available: {{ kid.getPConnect().getComponentName() }}</div>\n </div>\n </div>\n</form>\n\n<div>\n <br />\n <div class=\"psdk-case-view-divider\"></div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$, arSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n</div>\n", styles: [".psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-flow-container{padding:0rem 1rem}\n"] }]
31
+ args: [{ selector: 'app-assignment-card', standalone: true, imports: [CommonModule, ReactiveFormsModule, forwardRef(() => ComponentMapperComponent)], template: "<form [formGroup]=\"formGroup$\" name=\"flowContainer\" class=\"psdk-flow-container\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'CaseCreateStage'\"\n name=\"CaseCreateStage\"\n [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"\n ></component-mapper>\n <component-mapper *ngSwitchCase=\"'Region'\" name=\"Region\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <div *ngSwitchDefault>Assignment Card wants component not yet available: {{ kid.getPConnect().getComponentName() }}</div>\n </div>\n </div>\n</form>\n\n<div>\n <br />\n <div class=\"psdk-case-view-divider\"></div>\n\n <component-mapper\n *ngIf=\"arMainButtons$ && arSecondaryButtons$\"\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$, arSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n</div>\n", styles: [".psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-flow-container{padding:0rem 1rem}\n"] }]
32
32
  }], propDecorators: { pConn$: [{
33
33
  type: Input
34
34
  }], formGroup$: [{
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
44
44
  }], actionButtonClick: [{
45
45
  type: Output
46
46
  }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9hc3NpZ25tZW50LWNhcmQvYXNzaWdubWVudC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9hc3NpZ25tZW50LWNhcmQvYXNzaWdubWVudC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7OztBQVN4RyxNQUFNLE9BQU8sdUJBQXVCO0lBUHBDO1FBZVksc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7S0FpQnJFO0lBZkMsUUFBUTtRQUNOLDREQUE0RDtRQUM1RCxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELFdBQVc7UUFDVCw0REFBNEQ7UUFDNUQsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFVO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQzsrR0F4QlUsdUJBQXVCO21HQUF2Qix1QkFBdUIseVZDYnBDLHdtQ0EwQkEsME1EZlksWUFBWSxnaEJBQUUsbUJBQW1CLHlnQkFBbUIsd0JBQXdCOzs0RkFFM0UsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNFLHFCQUFxQixjQUduQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7OEJBRy9FLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tICcuLi9yZWZlcmVuY2UvcmVmZXJlbmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYXNzaWdubWVudC1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2lnbm1lbnQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Fzc2lnbm1lbnQtY2FyZC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIEFzc2lnbm1lbnRDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBhck1haW5CdXR0b25zJDogYW55W107XG4gIEBJbnB1dCgpIGFyU2Vjb25kYXJ5QnV0dG9ucyQ6IGFueVtdO1xuICBASW5wdXQoKSBhckNoaWxkcmVuJDogYW55W107XG4gIEBJbnB1dCgpIHVwZGF0ZVRva2VuJDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKSBhY3Rpb25CdXR0b25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQ2hpbGRyZW4gbWF5IGNvbnRhaW4gJ3JlZmVyZW5jZScgY29tcG9uZW50LCBzbyB3ZSBuZWVkIHRvXG4gICAgLy8gIG5vcm1hbGl6ZSB0aGVtXG4gICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KHRoaXMuYXJDaGlsZHJlbiQpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgLy8gQ2hpbGRyZW4gbWF5IGNvbnRhaW4gJ3JlZmVyZW5jZScgY29tcG9uZW50LCBzbyB3ZSBuZWVkIHRvXG4gICAgLy8gIG5vcm1hbGl6ZSB0aGVtXG4gICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KHRoaXMuYXJDaGlsZHJlbiQpO1xuICB9XG5cbiAgb25BY3Rpb25CdXR0b25DbGljayhvRGF0YTogYW55KSB7XG4gICAgdGhpcy5hY3Rpb25CdXR0b25DbGljay5lbWl0KG9EYXRhKTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXAkXCIgbmFtZT1cImZsb3dDb250YWluZXJcIiBjbGFzcz1cInBzZGstZmxvdy1jb250YWluZXJcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0Q29tcG9uZW50TmFtZSgpXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlciAqbmdTd2l0Y2hDYXNlPVwiJ1ZpZXcnXCIgbmFtZT1cIlZpZXdcIiBbcHJvcHNdPVwieyBmb3JtR3JvdXAkLCBwQ29ubiQ6IGtpZC5nZXRQQ29ubmVjdCgpIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0Nhc2VDcmVhdGVTdGFnZSdcIlxuICAgICAgICBuYW1lPVwiQ2FzZUNyZWF0ZVN0YWdlXCJcbiAgICAgICAgW3Byb3BzXT1cInsgZm9ybUdyb3VwJCwgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlciAqbmdTd2l0Y2hDYXNlPVwiJ1JlZ2lvbidcIiBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgZm9ybUdyb3VwJCwgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PkFzc2lnbm1lbnQgQ2FyZCB3YW50cyBjb21wb25lbnQgbm90IHlldCBhdmFpbGFibGU6IHt7IGtpZC5nZXRQQ29ubmVjdCgpLmdldENvbXBvbmVudE5hbWUoKSB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cblxuPGRpdj5cbiAgPGJyIC8+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLWNhc2Utdmlldy1kaXZpZGVyXCI+PC9kaXY+XG5cbiAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICBuYW1lPVwiQWN0aW9uQnV0dG9uc1wiXG4gICAgW3Byb3BzXT1cInsgYXJNYWluQnV0dG9ucyQsIGFyU2Vjb25kYXJ5QnV0dG9ucyQgfVwiXG4gICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICBbb3V0cHV0RXZlbnRzXT1cInsgYWN0aW9uQnV0dG9uQ2xpY2s6IG9uQWN0aW9uQnV0dG9uQ2xpY2sgfVwiXG4gID48L2NvbXBvbmVudC1tYXBwZXI+XG48L2Rpdj5cbiJdfQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9hc3NpZ25tZW50LWNhcmQvYXNzaWdubWVudC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9hc3NpZ25tZW50LWNhcmQvYXNzaWdubWVudC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7OztBQVN4RyxNQUFNLE9BQU8sdUJBQXVCO0lBUHBDO1FBZVksc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7S0FpQnJFO0lBZkMsUUFBUTtRQUNOLDREQUE0RDtRQUM1RCxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELFdBQVc7UUFDVCw0REFBNEQ7UUFDNUQsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFVO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQzsrR0F4QlUsdUJBQXVCO21HQUF2Qix1QkFBdUIseVZDYnBDLDZwQ0EyQkEsME1EaEJZLFlBQVkseW9CQUFFLG1CQUFtQix5Z0JBQW1CLHdCQUF3Qjs7NEZBRTNFLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzhCQUcvRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUmVmZXJlbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVmZXJlbmNlL3JlZmVyZW5jZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFzc2lnbm1lbnQtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NpZ25tZW50LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc3NpZ25tZW50LWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBBc3NpZ25tZW50Q2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgYXJNYWluQnV0dG9ucyQ6IGFueVtdO1xuICBASW5wdXQoKSBhclNlY29uZGFyeUJ1dHRvbnMkOiBhbnlbXTtcbiAgQElucHV0KCkgYXJDaGlsZHJlbiQ6IGFueVtdO1xuICBASW5wdXQoKSB1cGRhdGVUb2tlbiQ6IG51bWJlcjtcblxuICBAT3V0cHV0KCkgYWN0aW9uQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIENoaWxkcmVuIG1heSBjb250YWluICdyZWZlcmVuY2UnIGNvbXBvbmVudCwgc28gd2UgbmVlZCB0b1xuICAgIC8vICBub3JtYWxpemUgdGhlbVxuICAgIHRoaXMuYXJDaGlsZHJlbiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm5BcnJheSh0aGlzLmFyQ2hpbGRyZW4kKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIENoaWxkcmVuIG1heSBjb250YWluICdyZWZlcmVuY2UnIGNvbXBvbmVudCwgc28gd2UgbmVlZCB0b1xuICAgIC8vICBub3JtYWxpemUgdGhlbVxuICAgIHRoaXMuYXJDaGlsZHJlbiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm5BcnJheSh0aGlzLmFyQ2hpbGRyZW4kKTtcbiAgfVxuXG4gIG9uQWN0aW9uQnV0dG9uQ2xpY2sob0RhdGE6IGFueSkge1xuICAgIHRoaXMuYWN0aW9uQnV0dG9uQ2xpY2suZW1pdChvRGF0YSk7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwJFwiIG5hbWU9XCJmbG93Q29udGFpbmVyXCIgY2xhc3M9XCJwc2RrLWZsb3ctY29udGFpbmVyXCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGtpZCBvZiBhckNoaWxkcmVuJFwiPlxuICAgIDxkaXYgW25nU3dpdGNoXT1cImtpZC5nZXRQQ29ubmVjdCgpLmdldENvbXBvbmVudE5hbWUoKVwiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXIgKm5nU3dpdGNoQ2FzZT1cIidWaWV3J1wiIG5hbWU9XCJWaWV3XCIgW3Byb3BzXT1cInsgZm9ybUdyb3VwJCwgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidDYXNlQ3JlYXRlU3RhZ2UnXCJcbiAgICAgICAgbmFtZT1cIkNhc2VDcmVhdGVTdGFnZVwiXG4gICAgICAgIFtwcm9wc109XCJ7IGZvcm1Hcm91cCQsIHBDb25uJDoga2lkLmdldFBDb25uZWN0KCkgfVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXIgKm5nU3dpdGNoQ2FzZT1cIidSZWdpb24nXCIgbmFtZT1cIlJlZ2lvblwiIFtwcm9wc109XCJ7IGZvcm1Hcm91cCQsIHBDb25uJDoga2lkLmdldFBDb25uZWN0KCkgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICAgIDxkaXYgKm5nU3dpdGNoRGVmYXVsdD5Bc3NpZ25tZW50IENhcmQgd2FudHMgY29tcG9uZW50IG5vdCB5ZXQgYXZhaWxhYmxlOiB7eyBraWQuZ2V0UENvbm5lY3QoKS5nZXRDb21wb25lbnROYW1lKCkgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG5cbjxkaXY+XG4gIDxiciAvPlxuICA8ZGl2IGNsYXNzPVwicHNkay1jYXNlLXZpZXctZGl2aWRlclwiPjwvZGl2PlxuXG4gIDxjb21wb25lbnQtbWFwcGVyXG4gICAgKm5nSWY9XCJhck1haW5CdXR0b25zJCAmJiBhclNlY29uZGFyeUJ1dHRvbnMkXCJcbiAgICBuYW1lPVwiQWN0aW9uQnV0dG9uc1wiXG4gICAgW3Byb3BzXT1cInsgYXJNYWluQnV0dG9ucyQsIGFyU2Vjb25kYXJ5QnV0dG9ucyQgfVwiXG4gICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICBbb3V0cHV0RXZlbnRzXT1cInsgYWN0aW9uQnV0dG9uQ2xpY2s6IG9uQWN0aW9uQnV0dG9uQ2xpY2sgfVwiXG4gID48L2NvbXBvbmVudC1tYXBwZXI+XG48L2Rpdj5cbiJdfQ==
@@ -61,10 +61,10 @@ export class DashboardFilterComponent {
61
61
  };
62
62
  PCore.getPubSubUtils().publish(PCore.getConstants().PUB_SUB_EVENTS.EVENT_DASHBOARD_FILTER_CHANGE, filterData);
63
63
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DashboardFilterComponent, isStandalone: true, selector: "app-dashboard-filter", inputs: { pConn$: "pConn$", filtersFormGroup$: "filtersFormGroup$", inlineProps: "inlineProps", children: "children" }, ngImport: i0, template: "<div\n [ngClass]=\"{\n 'psdk-block-style': inlineProps.filterPosition === 'block-start'\n }\"\n>\n <div *ngFor=\"let kid of children\">\n <div *ngIf=\"kid.type === 'DateTime'\" [formGroup]=\"filtersFormGroup$\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>{{ kid.label }}</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate placeholder=\"Start date\" formControlName=\"start\" />\n <input matEndDate placeholder=\"End date\" formControlName=\"end\" (dateChange)=\"dateRangeChangeHandler(kid)\" />\n </mat-date-range-input>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n </mat-form-field>\n </div>\n <div *ngIf=\"kid.c11nEnv\">\n <span (input)=\"updateTmpData({ event: $event, field: kid })\">\n <component-mapper\n [name]=\"kid.c11nEnv.getPConnect().getComponentName()\"\n [props]=\"{\n pConn$: kid.c11nEnv.getPConnect(),\n formGroup$: filtersFormGroup$\n }\"\n errorMsg=\"Dashboard filter wants component not yet available: {{ kid.c11nEnv.getPConnect().getComponentName() }}\"\n >\n </component-mapper>\n </span>\n </div>\n </div>\n <div>\n <button mat-button color=\"primary\" (click)=\"clearFilters()\">Clear All</button>\n </div>\n</div>\n", styles: [".psdk-full-width{width:100%}.psdk-block-style{display:grid;direction:column-reverse;gap:1rem;grid-template-columns:repeat(7,1fr)}::ng-deep .mat-mdc-form-field-subscript-wrapper{height:0}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatFormFieldModule) }, { kind: "component", type: i0.forwardRef(() => i2.MatFormField), selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i0.forwardRef(() => i2.MatLabel), selector: "mat-label" }, { kind: "directive", type: i0.forwardRef(() => i2.MatSuffix), selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i3.DefaultValueAccessor), selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i0.forwardRef(() => i3.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i3.NgControlStatusGroup), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(() => i3.FormGroupDirective), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i0.forwardRef(() => i3.FormControlName), selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatDatepickerModule) }, { kind: "component", type: i0.forwardRef(() => i4.MatDatepickerToggle), selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i0.forwardRef(() => i4.MatDateRangeInput), selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i0.forwardRef(() => i4.MatStartDate), selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i0.forwardRef(() => i4.MatEndDate), selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i0.forwardRef(() => i4.MatDateRangePicker), selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatNativeDateModule) }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DashboardFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DashboardFilterComponent, isStandalone: true, selector: "app-dashboard-filter", inputs: { pConn$: "pConn$", filtersFormGroup$: "filtersFormGroup$", inlineProps: "inlineProps", children: "children" }, ngImport: i0, template: "<div\n [ngClass]=\"{\n 'psdk-block-style': inlineProps.filterPosition === 'block-start'\n }\"\n>\n <div *ngFor=\"let kid of children\">\n <div *ngIf=\"kid.type === 'DateTime'\" [formGroup]=\"filtersFormGroup$\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>{{ kid.label }}</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate placeholder=\"Start date\" formControlName=\"start\" />\n <input matEndDate placeholder=\"End date\" formControlName=\"end\" (dateChange)=\"dateRangeChangeHandler(kid)\" />\n </mat-date-range-input>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n </mat-form-field>\n </div>\n <div *ngIf=\"kid.c11nEnv\">\n <span (input)=\"updateTmpData({ event: $event, field: kid })\">\n <component-mapper\n [name]=\"kid.c11nEnv.getPConnect().getComponentName()\"\n [props]=\"{\n pConn$: kid.c11nEnv.getPConnect(),\n formGroup$: filtersFormGroup$\n }\"\n errorMsg=\"Dashboard filter wants component not yet available: {{ kid.c11nEnv.getPConnect().getComponentName() }}\"\n >\n </component-mapper>\n </span>\n </div>\n </div>\n <div>\n <button mat-button color=\"primary\" (click)=\"clearFilters()\">Clear All</button>\n </div>\n</div>\n", styles: [".psdk-full-width{width:100%}.psdk-block-style{display:grid;direction:column-reverse;gap:1rem;grid-template-columns:repeat(7,1fr)}::ng-deep .mat-mdc-form-field-subscript-wrapper{height:0}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatFormFieldModule) }, { kind: "component", type: i0.forwardRef(() => i2.MatFormField), selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i0.forwardRef(() => i2.MatLabel), selector: "mat-label" }, { kind: "directive", type: i0.forwardRef(() => i2.MatSuffix), selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i3.DefaultValueAccessor), selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i0.forwardRef(() => i3.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i3.NgControlStatusGroup), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(() => i3.FormGroupDirective), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i0.forwardRef(() => i3.FormControlName), selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatDatepickerModule) }, { kind: "component", type: i0.forwardRef(() => i4.MatDatepickerToggle), selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i0.forwardRef(() => i4.MatDateRangeInput), selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i0.forwardRef(() => i4.MatStartDate), selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i0.forwardRef(() => i4.MatEndDate), selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i0.forwardRef(() => i4.MatDateRangePicker), selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatNativeDateModule) }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
66
66
  }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardFilterComponent, decorators: [{
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DashboardFilterComponent, decorators: [{
68
68
  type: Component,
69
69
  args: [{ selector: 'app-dashboard-filter', standalone: true, imports: [
70
70
  CommonModule,