@pega/angular-sdk-components 23.1.10 → 24.2.10

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 (238) hide show
  1. package/esm2022/lib/_bridge/angular-pconnect.mjs +18 -6
  2. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +6 -13
  3. package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +3 -1
  4. package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +1 -1
  5. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +4 -4
  6. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +4 -4
  7. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +4 -4
  8. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +5 -5
  9. package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +3 -3
  10. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +9 -6
  11. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +5 -5
  12. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +10 -7
  13. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +5 -5
  14. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +4 -4
  15. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +5 -5
  16. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +5 -5
  17. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +16 -9
  18. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +9 -9
  19. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +4 -4
  20. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
  21. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +14 -12
  22. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +5 -7
  23. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +111 -45
  24. package/esm2022/lib/_components/field/currency/currency.component.mjs +48 -18
  25. package/esm2022/lib/_components/field/date/date.component.mjs +21 -41
  26. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +26 -45
  27. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +41 -11
  28. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +126 -31
  29. package/esm2022/lib/_components/field/email/email.component.mjs +15 -8
  30. package/esm2022/lib/_components/field/group/group.component.mjs +11 -8
  31. package/esm2022/lib/_components/field/integer/integer.component.mjs +15 -10
  32. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +3 -3
  33. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +314 -0
  34. package/esm2022/lib/_components/field/multiselect/utils.mjs +187 -0
  35. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +41 -14
  36. package/esm2022/lib/_components/field/phone/phone.component.mjs +12 -19
  37. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +12 -19
  38. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +10 -11
  39. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +9 -9
  40. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +5 -5
  41. package/esm2022/lib/_components/field/text/text.component.mjs +7 -5
  42. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +15 -13
  43. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +5 -5
  44. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +15 -10
  45. package/esm2022/lib/_components/field/time/time.component.mjs +23 -12
  46. package/esm2022/lib/_components/field/url/url.component.mjs +17 -10
  47. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +69 -37
  48. package/esm2022/lib/_components/infra/Containers/base-components/flow-container-base.component.mjs +18 -0
  49. package/esm2022/lib/_components/infra/Containers/base-components/helper.mjs +71 -0
  50. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +40 -41
  51. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +1 -1
  52. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +3 -3
  53. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +41 -13
  54. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +4 -4
  55. package/esm2022/lib/_components/infra/Containers/view-container/helper.mjs +22 -0
  56. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +10 -18
  57. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +3 -3
  58. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +35 -40
  59. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +4 -4
  60. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +5 -6
  61. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +13 -16
  62. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +3 -3
  63. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +6 -6
  64. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +12 -8
  65. package/esm2022/lib/_components/infra/reference/reference.component.mjs +5 -5
  66. package/esm2022/lib/_components/infra/region/region.component.mjs +4 -4
  67. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +5 -5
  68. package/esm2022/lib/_components/infra/stages/stages.component.mjs +6 -6
  69. package/esm2022/lib/_components/infra/view/view.component.mjs +24 -9
  70. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +21 -5
  71. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +5 -5
  72. package/esm2022/lib/_components/template/base/details-template-base.mjs +56 -0
  73. package/esm2022/lib/_components/template/base/form-template-base.mjs +13 -0
  74. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +38 -9
  75. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +12 -23
  76. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +6 -6
  77. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +15 -12
  78. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +9 -21
  79. package/esm2022/lib/_components/template/details/details.component.mjs +12 -39
  80. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +11 -38
  81. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +12 -41
  82. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +13 -40
  83. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +12 -41
  84. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +13 -42
  85. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +12 -41
  86. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +9 -9
  87. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +4 -4
  88. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +9 -21
  89. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +10 -5
  90. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +4 -4
  91. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +6 -6
  92. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +4 -4
  93. package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +1 -1
  94. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +54 -35
  95. package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +2 -3
  96. package/esm2022/lib/_components/template/list-view/utils.mjs +1 -1
  97. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +5 -5
  98. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +4 -4
  99. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +6 -5
  100. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +4 -4
  101. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +4 -4
  102. package/esm2022/lib/_components/template/page/page.component.mjs +5 -5
  103. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +5 -5
  104. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +5 -6
  105. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +5 -7
  106. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +3 -3
  107. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +51 -32
  108. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +8 -10
  109. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +4 -4
  110. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +5 -5
  111. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +6 -5
  112. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +4 -4
  113. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +6 -5
  114. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +5 -5
  115. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +4 -4
  116. package/esm2022/lib/_components/template/utils.mjs +1 -1
  117. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +6 -5
  118. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +5 -5
  119. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +9 -7
  120. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +4 -4
  121. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +229 -424
  122. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +6 -7
  123. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +6 -10
  124. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +18 -22
  125. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +6 -6
  126. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +5 -5
  127. package/esm2022/lib/_components/widget/todo/todo.component.mjs +79 -64
  128. package/esm2022/lib/_components/widget/utility/utility.component.mjs +5 -5
  129. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +5 -5
  130. package/esm2022/lib/_helpers/case-utils.mjs +1 -1
  131. package/esm2022/lib/_helpers/createstage-utils.mjs +15 -0
  132. package/esm2022/lib/_helpers/currency-utils.mjs +1 -1
  133. package/esm2022/lib/_helpers/event-util.mjs +1 -1
  134. package/esm2022/lib/_helpers/field-group-utils.mjs +3 -3
  135. package/esm2022/lib/_helpers/filter-utils.mjs +1 -2
  136. package/esm2022/lib/_helpers/formatters/boolean.mjs +1 -1
  137. package/esm2022/lib/_helpers/formatters/common.mjs +3 -5
  138. package/esm2022/lib/_helpers/formatters/currency.mjs +2 -2
  139. package/esm2022/lib/_helpers/formatters/date.mjs +4 -4
  140. package/esm2022/lib/_helpers/formatters/format-utils.mjs +3 -3
  141. package/esm2022/lib/_helpers/formatters/index.mjs +17 -3
  142. package/esm2022/lib/_helpers/instructions-utils.mjs +36 -0
  143. package/esm2022/lib/_helpers/tab-utils.mjs +1 -1
  144. package/esm2022/lib/_helpers/template-utils.mjs +4 -4
  145. package/esm2022/lib/_helpers/utils.mjs +6 -6
  146. package/esm2022/lib/_messages/error-messages.service.mjs +4 -4
  147. package/esm2022/lib/_messages/progress-spinner.service.mjs +3 -3
  148. package/esm2022/lib/_messages/update-worklist.service.mjs +3 -3
  149. package/esm2022/lib/_services/case.service.mjs +4 -4
  150. package/esm2022/lib/_services/datapage.service.mjs +5 -5
  151. package/esm2022/lib/_services/endpoints.mjs +1 -2
  152. package/esm2022/lib/_services/server-config.service.mjs +3 -3
  153. package/esm2022/public-api.mjs +6 -4
  154. package/fesm2022/pega-angular-sdk-components.mjs +2722 -2143
  155. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  156. package/lib/_bridge/angular-pconnect.d.ts +2 -0
  157. package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +2 -0
  158. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +2 -0
  159. package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +1 -1
  160. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -1
  161. package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -2
  162. package/lib/_components/field/auto-complete/auto-complete.component.d.ts +3 -2
  163. package/lib/_components/field/check-box/check-box.component.d.ts +18 -0
  164. package/lib/_components/field/currency/currency.component.d.ts +10 -5
  165. package/lib/_components/field/date/date.component.d.ts +17 -6
  166. package/lib/_components/field/date-time/date-time.component.d.ts +10 -3
  167. package/lib/_components/field/decimal/decimal.component.d.ts +9 -1
  168. package/lib/_components/field/dropdown/dropdown.component.d.ts +13 -2
  169. package/lib/_components/field/email/email.component.d.ts +2 -0
  170. package/lib/_components/field/integer/integer.component.d.ts +3 -1
  171. package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -1
  172. package/lib/_components/field/multiselect/multiselect.component.d.ts +65 -0
  173. package/lib/_components/field/multiselect/utils.d.ts +8 -0
  174. package/lib/_components/field/percentage/percentage.component.d.ts +11 -1
  175. package/lib/_components/field/phone/phone.component.d.ts +3 -1
  176. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +2 -1
  177. package/lib/_components/field/rich-text/rich-text.component.d.ts +2 -0
  178. package/lib/_components/field/text/text.component.d.ts +3 -1
  179. package/lib/_components/field/text-area/text-area.component.d.ts +3 -1
  180. package/lib/_components/field/text-input/text-input.component.d.ts +3 -1
  181. package/lib/_components/field/time/time.component.d.ts +5 -1
  182. package/lib/_components/field/url/url.component.d.ts +4 -1
  183. package/lib/_components/field/user-reference/user-reference.component.d.ts +16 -4
  184. package/lib/_components/infra/Containers/base-components/flow-container-base.component.d.ts +8 -0
  185. package/lib/_components/infra/Containers/base-components/helper.d.ts +1 -0
  186. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +6 -7
  187. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +3 -2
  188. package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
  189. package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
  190. package/lib/_components/infra/assignment/assignment.component.d.ts +2 -2
  191. package/lib/_components/infra/defer-load/defer-load.component.d.ts +2 -2
  192. package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
  193. package/lib/_components/infra/navbar/navbar.component.d.ts +4 -2
  194. package/lib/_components/infra/view/view.component.d.ts +1 -0
  195. package/lib/_components/template/base/details-template-base.d.ts +22 -0
  196. package/lib/_components/template/base/form-template-base.d.ts +8 -0
  197. package/lib/_components/template/case-summary/case-summary.component.d.ts +2 -0
  198. package/lib/_components/template/case-view/case-view.component.d.ts +1 -2
  199. package/lib/_components/template/default-form/default-form.component.d.ts +2 -5
  200. package/lib/_components/template/details/details.component.d.ts +3 -11
  201. package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -11
  202. package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -13
  203. package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -13
  204. package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -13
  205. package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -13
  206. package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -13
  207. package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -0
  208. package/lib/_components/template/field-value-list/field-value-list.component.d.ts +2 -1
  209. package/lib/_components/template/list-view/list-view.component.d.ts +12 -3
  210. package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
  211. package/lib/_components/template/one-column/one-column.component.d.ts +2 -1
  212. package/lib/_components/template/simple-table-manual/helpers.d.ts +2 -2
  213. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +4 -0
  214. package/lib/_components/template/three-column/three-column.component.d.ts +2 -1
  215. package/lib/_components/template/two-column/two-column.component.d.ts +2 -1
  216. package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -1
  217. package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -1
  218. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +4 -2
  219. package/lib/_components/widget/attachment/attachment.component.d.ts +30 -54
  220. package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -2
  221. package/lib/_components/widget/file-utility/file-utility.component.d.ts +2 -2
  222. package/lib/_components/widget/todo/todo.component.d.ts +8 -10
  223. package/lib/_helpers/createstage-utils.d.ts +1 -0
  224. package/lib/_helpers/field-group-utils.d.ts +1 -1
  225. package/lib/_helpers/filter-utils.d.ts +1 -1
  226. package/lib/_helpers/formatters/common.d.ts +1 -1
  227. package/lib/_helpers/instructions-utils.d.ts +4 -0
  228. package/lib/_messages/error-messages.service.d.ts +1 -1
  229. package/lib/_services/endpoints.d.ts +0 -1
  230. package/lib/doc/KeyReleaseUpdates.md +35 -1
  231. package/package.json +3 -3
  232. package/public-api.d.ts +5 -3
  233. package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
  234. package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
  235. package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
  236. package/lib/_messages/get-login-status.service.d.ts +0 -10
  237. package/lib/_messages/oauth-response.service.d.ts +0 -14
  238. package/lib/_messages/reset-pconnect.service.d.ts +0 -15
@@ -42,18 +42,6 @@ export class FileUtilityComponent {
42
42
  this.link_url$ = '';
43
43
  this.closeSvgIcon$ = '';
44
44
  this.currentCaseID = '';
45
- this.addAttachmentsActions = [
46
- {
47
- text: 'Add files',
48
- id: 'addNewFiles',
49
- onClick: () => this.createModal('addLocalFile')
50
- },
51
- {
52
- text: 'Add links',
53
- id: 'addNewLinks',
54
- onClick: () => this.createModal('addLocalLink')
55
- }
56
- ];
57
45
  this.getNewListUtilityItemProps = ({ att, cancelFile, downloadFile, deleteFile, removeFile }) => {
58
46
  let actions;
59
47
  let isDownloadable = false;
@@ -212,6 +200,18 @@ export class FileUtilityComponent {
212
200
  this.lu_name$ = configProps.label ?? '';
213
201
  this.lu_icon$ = 'paper-clip';
214
202
  this.closeSvgIcon$ = this.utils.getImageSrc('times', this.utils.getSDKStaticContentUrl());
203
+ this.addAttachmentsActions = [
204
+ {
205
+ text: this.pConn$.getLocalizedValue('Add files', '', ''),
206
+ id: 'addNewFiles',
207
+ onClick: () => this.createModal('addLocalFile')
208
+ },
209
+ {
210
+ text: this.pConn$.getLocalizedValue('Add links', '', ''),
211
+ id: 'addNewLinks',
212
+ onClick: () => this.createModal('addLocalLink')
213
+ }
214
+ ];
215
215
  // const onViewAllCallback = () => this.onViewAll(this.arFullListAttachments);
216
216
  this.lu_onViewAllFunction = { onClick: this.onViewAll.bind(this) };
217
217
  this.removeFileFromList$ = { onClick: this.removeFileFromList.bind(this) };
@@ -242,7 +242,6 @@ export class FileUtilityComponent {
242
242
  }
243
243
  onAttachFiles(files) {
244
244
  const attachmentUtils = PCore.getAttachmentUtils();
245
- // @ts-ignore - second parameter pageReference for getValue method should be optional
246
245
  const caseID = this.pConn$.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);
247
246
  if (files.length > 0) {
248
247
  this.lu_bLoading$ = true;
@@ -275,7 +274,6 @@ export class FileUtilityComponent {
275
274
  errorHandler() { }
276
275
  onAttachLinks(links) {
277
276
  const attachmentUtils = PCore.getAttachmentUtils();
278
- // @ts-ignore - second parameter pageReference for getValue method should be optional
279
277
  const caseID = this.pConn$.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);
280
278
  if (links.length > 0) {
281
279
  this.lu_bLoading$ = true;
@@ -583,7 +581,6 @@ export class FileUtilityComponent {
583
581
  }
584
582
  }
585
583
  getCaseID() {
586
- // @ts-ignore - second parameter pageReference for getValue method should be optional
587
584
  return this.pConn$.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID) || '';
588
585
  }
589
586
  fetchCaseAttachments(caseID) {
@@ -622,7 +619,6 @@ export class FileUtilityComponent {
622
619
  return att.error ? () => this.removeFile() : null;
623
620
  }
624
621
  caseHasChanged() {
625
- // @ts-ignore - second parameter pageReference for getValue method should be optional
626
622
  const caseID = this.pConn$.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);
627
623
  if (this.currentCaseID !== caseID) {
628
624
  this.currentCaseID = caseID;
@@ -630,13 +626,13 @@ export class FileUtilityComponent {
630
626
  }
631
627
  return false;
632
628
  }
633
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileUtilityComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
634
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileUtilityComponent, isStandalone: true, selector: "app-file-utility", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div>\n <component-mapper\n name=\"ListUtility\"\n [props]=\"{\n name$: lu_name$,\n icon$: lu_icon$,\n bLoading$: lu_bLoading$,\n count$: lu_count$,\n arActions$: lu_arActions$,\n arItems$: lu_arItems$,\n onViewAll$: lu_onViewAllFunction,\n menuIconOverrideAction$: removeFileFromList$\n }\"\n ></component-mapper>\n</div>\n\n<div *ngIf=\"bShowFileModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local files', '', '') }}</h3>\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-file-selector\">\n <input hidden type=\"file\" multiple #uploader (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" (click)=\"uploader.click()\">{{ pConn$.getLocalizedValue('Upload file(s)', '', '') }}</button>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arFileList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arFileMainButtons$, arSecondaryButtons$: arFileSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onFileActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowLinkModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-link-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local link', '', '') }}</h3>\n <div class=\"psdk-modal-link-entry\">\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-links-row\">\n <div class=\"psdk-links-two-column\">\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>Link title</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeLink($event)\" [value]=\"link_title$\" />\n </mat-form-field>\n </div>\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>URL</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeURL($event)\" [value]=\"link_url$\" />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"psdk-modal-link-add\">\n <button mat-raised-button color=\"primary\" (click)=\"_addLink()\">{{ pConn$.getLocalizedValue('Add Link', '', '') }}</button>\n </div>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arLinksList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeLinksFromList$ }\"\n ></component-mapper>\n </div>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arLinkMainButtons$, arSecondaryButtons$: arLinkSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onLinkActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowViewAllModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <div class=\"psdk-view-all-header\">\n <div>\n <h3>{{ pConn$.getLocalizedValue('Attachments', '', '') }}</h3>\n </div>\n <div>\n <button mat-icon-button (click)=\"_closeViewAll()\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ closeSvgIcon$ }}\" />\n </button>\n </div>\n </div>\n <div class=\"psdk-view-all-body\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$: va_arItems$, menuIconOverrideAction$: removeLinksFromList$ }\"></component-mapper>\n </div>\n </div>\n</div>\n", styles: [".psdk-dialog-background{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-dialog-background-color);position:fixed;z-index:999;top:0;left:0}.psdk-modal-file-top,.psdk-modal-link-top{display:table;margin:auto;min-width:650px;background-color:var(--app-form-color);border:1px solid var(--app-inverse-form-color);border-radius:10px;padding:20px;box-shadow:0 0 10px 3px var(--app-box-shadow-color)}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center}.psdk-modal-link-entry{display:flex;flex-direction:row}.psdk-modal-link-data{flex-grow:3;margin:0 .3rem}.psdk-modal-link-add{flex-grow:1}.psdk-full-width{width:100%}.psdk-modal-body{max-height:500px;overflow-y:auto;overflow-x:hidden;width:100%}.psdk-view-all-header{display:flex;justify-content:space-between}.psdk-view-all-close-icon{width:1.5rem}.psdk-view-all-body{max-height:500px;overflow-y:auto;overflow-x:hidden}.psdk-links-two-column{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;width:85%}.psdk-modal-links-row{display:flex;flex-direction:row;justify-content:space-between}.psdk-links-add-link{padding:15px}ul{columns:2;-webkit-columns:2;-moz-columns:2}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatButtonModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i4.MatButton; }), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(function () { return i4.MatIconButton; }), selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatFormFieldModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i5.MatFormField; }), selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i0.forwardRef(function () { return i5.MatLabel; }), selector: "mat-label" }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatInputModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i6.MatInput; }), selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
629
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FileUtilityComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
630
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: FileUtilityComponent, isStandalone: true, selector: "app-file-utility", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div>\n <component-mapper\n name=\"ListUtility\"\n [props]=\"{\n name$: lu_name$,\n icon$: lu_icon$,\n bLoading$: lu_bLoading$,\n count$: lu_count$,\n arActions$: lu_arActions$,\n arItems$: lu_arItems$,\n onViewAll$: lu_onViewAllFunction,\n menuIconOverrideAction$: removeFileFromList$\n }\"\n ></component-mapper>\n</div>\n\n<div *ngIf=\"bShowFileModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local files', '', '') }}</h3>\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-file-selector\">\n <input hidden type=\"file\" multiple #uploader (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" (click)=\"uploader.click()\">{{ pConn$.getLocalizedValue('Upload file(s)', '', '') }}</button>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arFileList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arFileMainButtons$, arSecondaryButtons$: arFileSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onFileActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowLinkModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-link-top\">\n <h3>{{ pConn$.getLocalizedValue('Add links', '', '') }}</h3>\n <div class=\"psdk-modal-link-entry\">\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-links-row\">\n <div class=\"psdk-links-two-column\">\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>Link title</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeLink($event)\" [value]=\"link_title$\" />\n </mat-form-field>\n </div>\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>URL</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeURL($event)\" [value]=\"link_url$\" />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"psdk-modal-link-add\">\n <button mat-raised-button color=\"primary\" (click)=\"_addLink()\">{{ pConn$.getLocalizedValue('Add link', '', '') }}</button>\n </div>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arLinksList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeLinksFromList$ }\"\n ></component-mapper>\n </div>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arLinkMainButtons$, arSecondaryButtons$: arLinkSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onLinkActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowViewAllModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <div class=\"psdk-view-all-header\">\n <div>\n <h3>{{ pConn$.getLocalizedValue('Attachments', '', '') }}</h3>\n </div>\n <div>\n <button mat-icon-button (click)=\"_closeViewAll()\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ closeSvgIcon$ }}\" />\n </button>\n </div>\n </div>\n <div class=\"psdk-view-all-body\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$: va_arItems$, menuIconOverrideAction$: removeLinksFromList$ }\"></component-mapper>\n </div>\n </div>\n</div>\n", styles: [".psdk-dialog-background{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-dialog-background-color);position:fixed;z-index:999;top:0;left:0}.psdk-modal-file-top,.psdk-modal-link-top{display:table;margin:auto;min-width:650px;background-color:var(--app-form-color);border:1px solid var(--app-inverse-form-color);border-radius:10px;padding:20px;box-shadow:0 0 10px 3px var(--app-box-shadow-color)}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center}.psdk-modal-link-entry{display:flex;flex-direction:row}.psdk-modal-link-data{flex-grow:3;margin:0 .3rem}.psdk-modal-link-add{flex-grow:1}.psdk-full-width{width:100%}.psdk-modal-body{max-height:500px;overflow-y:auto;overflow-x:hidden;width:100%}.psdk-view-all-header{display:flex;justify-content:space-between}.psdk-view-all-close-icon{width:1.5rem}.psdk-view-all-body{max-height:500px;overflow-y:auto;overflow-x:hidden}.psdk-links-two-column{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;width:85%}.psdk-modal-links-row{display:flex;flex-direction:row;justify-content:space-between}.psdk-links-add-link{padding:15px}ul{columns:2;-webkit-columns:2;-moz-columns:2}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i4.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(() => i4.MatIconButton), selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatFormFieldModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatFormField), selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i0.forwardRef(() => i5.MatLabel), selector: "mat-label" }, { kind: "ngmodule", type: i0.forwardRef(() => MatInputModule) }, { kind: "directive", type: i0.forwardRef(() => i6.MatInput), selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
635
631
  }
636
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileUtilityComponent, decorators: [{
632
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FileUtilityComponent, decorators: [{
637
633
  type: Component,
638
- args: [{ selector: 'app-file-utility', standalone: true, imports: [CommonModule, MatButtonModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)], template: "<div>\n <component-mapper\n name=\"ListUtility\"\n [props]=\"{\n name$: lu_name$,\n icon$: lu_icon$,\n bLoading$: lu_bLoading$,\n count$: lu_count$,\n arActions$: lu_arActions$,\n arItems$: lu_arItems$,\n onViewAll$: lu_onViewAllFunction,\n menuIconOverrideAction$: removeFileFromList$\n }\"\n ></component-mapper>\n</div>\n\n<div *ngIf=\"bShowFileModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local files', '', '') }}</h3>\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-file-selector\">\n <input hidden type=\"file\" multiple #uploader (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" (click)=\"uploader.click()\">{{ pConn$.getLocalizedValue('Upload file(s)', '', '') }}</button>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arFileList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arFileMainButtons$, arSecondaryButtons$: arFileSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onFileActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowLinkModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-link-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local link', '', '') }}</h3>\n <div class=\"psdk-modal-link-entry\">\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-links-row\">\n <div class=\"psdk-links-two-column\">\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>Link title</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeLink($event)\" [value]=\"link_title$\" />\n </mat-form-field>\n </div>\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>URL</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeURL($event)\" [value]=\"link_url$\" />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"psdk-modal-link-add\">\n <button mat-raised-button color=\"primary\" (click)=\"_addLink()\">{{ pConn$.getLocalizedValue('Add Link', '', '') }}</button>\n </div>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arLinksList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeLinksFromList$ }\"\n ></component-mapper>\n </div>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arLinkMainButtons$, arSecondaryButtons$: arLinkSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onLinkActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowViewAllModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <div class=\"psdk-view-all-header\">\n <div>\n <h3>{{ pConn$.getLocalizedValue('Attachments', '', '') }}</h3>\n </div>\n <div>\n <button mat-icon-button (click)=\"_closeViewAll()\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ closeSvgIcon$ }}\" />\n </button>\n </div>\n </div>\n <div class=\"psdk-view-all-body\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$: va_arItems$, menuIconOverrideAction$: removeLinksFromList$ }\"></component-mapper>\n </div>\n </div>\n</div>\n", styles: [".psdk-dialog-background{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-dialog-background-color);position:fixed;z-index:999;top:0;left:0}.psdk-modal-file-top,.psdk-modal-link-top{display:table;margin:auto;min-width:650px;background-color:var(--app-form-color);border:1px solid var(--app-inverse-form-color);border-radius:10px;padding:20px;box-shadow:0 0 10px 3px var(--app-box-shadow-color)}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center}.psdk-modal-link-entry{display:flex;flex-direction:row}.psdk-modal-link-data{flex-grow:3;margin:0 .3rem}.psdk-modal-link-add{flex-grow:1}.psdk-full-width{width:100%}.psdk-modal-body{max-height:500px;overflow-y:auto;overflow-x:hidden;width:100%}.psdk-view-all-header{display:flex;justify-content:space-between}.psdk-view-all-close-icon{width:1.5rem}.psdk-view-all-body{max-height:500px;overflow-y:auto;overflow-x:hidden}.psdk-links-two-column{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;width:85%}.psdk-modal-links-row{display:flex;flex-direction:row;justify-content:space-between}.psdk-links-add-link{padding:15px}ul{columns:2;-webkit-columns:2;-moz-columns:2}\n"] }]
639
- }], ctorParameters: function () { return [{ type: i1.AngularPConnectService }, { type: i2.Utils }, { type: i0.NgZone }]; }, propDecorators: { pConn$: [{
634
+ args: [{ selector: 'app-file-utility', standalone: true, imports: [CommonModule, MatButtonModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)], template: "<div>\n <component-mapper\n name=\"ListUtility\"\n [props]=\"{\n name$: lu_name$,\n icon$: lu_icon$,\n bLoading$: lu_bLoading$,\n count$: lu_count$,\n arActions$: lu_arActions$,\n arItems$: lu_arItems$,\n onViewAll$: lu_onViewAllFunction,\n menuIconOverrideAction$: removeFileFromList$\n }\"\n ></component-mapper>\n</div>\n\n<div *ngIf=\"bShowFileModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <h3>{{ pConn$.getLocalizedValue('Add local files', '', '') }}</h3>\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-file-selector\">\n <input hidden type=\"file\" multiple #uploader (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" (click)=\"uploader.click()\">{{ pConn$.getLocalizedValue('Upload file(s)', '', '') }}</button>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arFileList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arFileMainButtons$, arSecondaryButtons$: arFileSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onFileActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowLinkModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-link-top\">\n <h3>{{ pConn$.getLocalizedValue('Add links', '', '') }}</h3>\n <div class=\"psdk-modal-link-entry\">\n <div class=\"psdk-modal-body\">\n <div class=\"psdk-modal-links-row\">\n <div class=\"psdk-links-two-column\">\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>Link title</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeLink($event)\" [value]=\"link_title$\" />\n </mat-form-field>\n </div>\n <div class=\"psdk-modal-link-data\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>URL</mat-label>\n <input matInput type=\"text\" required=\"true\" (change)=\"_fieldOnChangeURL($event)\" [value]=\"link_url$\" />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"psdk-modal-link-add\">\n <button mat-raised-button color=\"primary\" (click)=\"_addLink()\">{{ pConn$.getLocalizedValue('Add link', '', '') }}</button>\n </div>\n </div>\n\n <component-mapper\n name=\"SummaryList\"\n [props]=\"{ arItems$: arLinksList$, menuIconOverride$: 'trash', menuIconOverrideAction$: removeLinksFromList$ }\"\n ></component-mapper>\n </div>\n </div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$: arLinkMainButtons$, arSecondaryButtons$: arLinkSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onLinkActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowViewAllModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-file-top\">\n <div class=\"psdk-view-all-header\">\n <div>\n <h3>{{ pConn$.getLocalizedValue('Attachments', '', '') }}</h3>\n </div>\n <div>\n <button mat-icon-button (click)=\"_closeViewAll()\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ closeSvgIcon$ }}\" />\n </button>\n </div>\n </div>\n <div class=\"psdk-view-all-body\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$: va_arItems$, menuIconOverrideAction$: removeLinksFromList$ }\"></component-mapper>\n </div>\n </div>\n</div>\n", styles: [".psdk-dialog-background{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-dialog-background-color);position:fixed;z-index:999;top:0;left:0}.psdk-modal-file-top,.psdk-modal-link-top{display:table;margin:auto;min-width:650px;background-color:var(--app-form-color);border:1px solid var(--app-inverse-form-color);border-radius:10px;padding:20px;box-shadow:0 0 10px 3px var(--app-box-shadow-color)}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center}.psdk-modal-link-entry{display:flex;flex-direction:row}.psdk-modal-link-data{flex-grow:3;margin:0 .3rem}.psdk-modal-link-add{flex-grow:1}.psdk-full-width{width:100%}.psdk-modal-body{max-height:500px;overflow-y:auto;overflow-x:hidden;width:100%}.psdk-view-all-header{display:flex;justify-content:space-between}.psdk-view-all-close-icon{width:1.5rem}.psdk-view-all-body{max-height:500px;overflow-y:auto;overflow-x:hidden}.psdk-links-two-column{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;width:85%}.psdk-modal-links-row{display:flex;flex-direction:row;justify-content:space-between}.psdk-links-add-link{padding:15px}ul{columns:2;-webkit-columns:2;-moz-columns:2}\n"] }]
635
+ }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.Utils }, { type: i0.NgZone }], propDecorators: { pConn$: [{
640
636
  type: Input
641
637
  }] } });
642
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy93aWRnZXQvZmlsZS11dGlsaXR5L2ZpbGUtdXRpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2ZpbGUtdXRpbGl0eS9maWxlLXV0aWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUdsQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7QUFjeEcsTUFBTSxPQUFPLG9CQUFvQjtJQXlEL0IsWUFDVSxlQUF1QyxFQUN2QyxLQUFZLEVBQ1osTUFBYztRQUZkLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXpEeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFFOUMsMEJBQXFCLEdBQVUsRUFBRSxDQUFDO1FBRWxDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBRXRCLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBSXhCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUUzQix1QkFBa0IsR0FBVSxFQUFFLENBQUM7UUFDL0IsNEJBQXVCLEdBQVUsRUFBRSxDQUFDO1FBRXBDLHVCQUFrQixHQUFVLEVBQUUsQ0FBQztRQUMvQiw0QkFBdUIsR0FBVSxFQUFFLENBQUM7UUFFcEMsYUFBUSxHQUFVLEVBQUUsQ0FBQztRQUNyQixnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUd4QixhQUFRLEdBQVUsRUFBRSxDQUFDO1FBQ3JCLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBR3pCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUVuQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUVuQiwwQkFBcUIsR0FBVTtZQUM3QjtnQkFDRSxJQUFJLEVBQUUsV0FBVztnQkFDakIsRUFBRSxFQUFFLGFBQWE7Z0JBQ2pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQzthQUNoRDtZQUNEO2dCQUNFLElBQUksRUFBRSxXQUFXO2dCQUNqQixFQUFFLEVBQUUsYUFBYTtnQkFDakIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO2FBQ2hEO1NBQ0YsQ0FBQztRQTBORiwrQkFBMEIsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7WUFDekYsSUFBSSxPQUFPLENBQUM7WUFDWixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFFM0IsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxFQUFFO2dCQUN4QyxPQUFPLEdBQUc7b0JBQ1I7d0JBQ0UsRUFBRSxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRTt3QkFDdEIsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsSUFBSSxFQUFFLE9BQU87d0JBQ2IsT0FBTyxFQUFFLFVBQVU7cUJBQ3BCO2lCQUNGLENBQUM7YUFDSDtpQkFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3BCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO2dCQUNuQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDO29CQUN6Qjt3QkFDRSxVQUFVO3dCQUNWOzRCQUNFLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRTs0QkFDcEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNOzRCQUNsQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU07NEJBQ2xDLE9BQU8sRUFBRSxZQUFZO3lCQUN0QjtxQkFDRjtvQkFDRDt3QkFDRSxRQUFRO3dCQUNSOzRCQUNFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRTs0QkFDbEIsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsSUFBSSxFQUFFLE9BQU87NEJBQ2IsT0FBTyxFQUFFLFVBQVU7eUJBQ3BCO3FCQUNGO2lCQUNGLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUU7b0JBQ3ZDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTt3QkFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDdEI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsNkRBQTZEO2dCQUM3RCxjQUFjLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7YUFDckM7aUJBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO2dCQUNwQixPQUFPLEdBQUc7b0JBQ1I7d0JBQ0UsRUFBRSxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRTt3QkFDdEIsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsSUFBSSxFQUFFLE9BQU87d0JBQ2IsT0FBTyxFQUFFLFVBQVU7cUJBQ3BCO2lCQUNGLENBQUM7YUFDSDtZQUVELE9BQU87Z0JBQ0wsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNWLE1BQU0sRUFBRTtvQkFDTixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7b0JBQzFDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUTtpQkFDekQ7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtvQkFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7b0JBQ2QsSUFBSSxFQUFFLE9BQU87b0JBQ2IsS0FBSyxFQUFFLFVBQVU7aUJBQ2xCO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7aUJBQ2Y7Z0JBQ0QsT0FBTzthQUNSLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRiw0QkFBdUIsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7WUFDdEYsSUFBSSxPQUFPLENBQUM7WUFDWixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFFM0IsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxFQUFFO2dCQUN4QyxPQUFPLEdBQUc7b0JBQ1I7d0JBQ0UsRUFBRSxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRTt3QkFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7d0JBQ3JELElBQUksRUFBRSxPQUFPO3dCQUNiLE9BQU8sRUFBRSxVQUFVO3FCQUNwQjtpQkFDRixDQUFDO2FBQ0g7aUJBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztnQkFDbkMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztvQkFDekI7d0JBQ0UsVUFBVTt3QkFDVjs0QkFDRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUU7NEJBQ3BCLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQzs0QkFDaEgsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNOzRCQUNsQyxPQUFPLEVBQUUsWUFBWTt5QkFDdEI7cUJBQ0Y7b0JBQ0Q7d0JBQ0UsUUFBUTt3QkFDUjs0QkFDRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUU7NEJBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDOzRCQUNyRCxJQUFJLEVBQUUsT0FBTzs0QkFDYixPQUFPLEVBQUUsVUFBVTt5QkFDcEI7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFBRTtvQkFDdkMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO3dCQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUN0QjtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCw2REFBNkQ7Z0JBQzdELGNBQWMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQzthQUNyQztpQkFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3BCLE9BQU8sR0FBRztvQkFDUjt3QkFDRSxFQUFFLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFO3dCQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQzt3QkFDckQsSUFBSSxFQUFFLE9BQU87d0JBQ2IsT0FBTyxFQUFFLFVBQVU7cUJBQ3BCO2lCQUNGLENBQUM7YUFDSDtZQUVELE9BQU87Z0JBQ0wsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNWLE1BQU0sRUFBRTtvQkFDTixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7b0JBQzFDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUTtpQkFDekQ7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtvQkFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7b0JBQ2QsSUFBSSxFQUFFLE1BQU07b0JBQ1osS0FBSyxFQUFFLFlBQVk7aUJBQ3BCO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7aUJBQ2Y7Z0JBQ0QsT0FBTzthQUNSLENBQUM7UUFDSixDQUFDLENBQUM7UUFtRkYsaUJBQVksR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDckMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ25ELFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDO0lBNWJDLENBQUM7SUFFSixRQUFRO1FBQ04saUdBQWlHO1FBQ2pHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFeEcsTUFBTSxXQUFXLEdBQXFCLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRW5HLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFFN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFFMUYsOEVBQThFO1FBRTlFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBRW5FLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0UsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUU3RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FDN0IsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLFlBQVksRUFBVSxDQUFDLHNDQUFzQyxFQUNoRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDMUIsbUNBQW1DLENBQ3BDLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRTtZQUMxQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUM7UUFFRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsV0FBVyxDQUMvQixLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxFQUFVLENBQUMsc0NBQXNDLEVBQ2hGLG1DQUFtQyxDQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxhQUFhO1FBQ1gsbUZBQW1GO1FBQ25GLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDO1lBQ2xDLGVBQWUsRUFBRSxNQUFNLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRTtTQUN2RixDQUFDLENBQUM7UUFFSCwwRkFBMEY7UUFDMUYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRSx3REFBd0Q7UUFDeEQsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsS0FBSztRQUNqQixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuRCxxRkFBcUY7UUFDckYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVqRixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQzFCO1FBRUQsTUFBTSxPQUFPLEdBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QyxPQUFPLENBQUMsVUFBVSxDQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FDcEk7YUFDRSxJQUFJLENBQUMsQ0FBQyxhQUFrQixFQUFFLEVBQUU7WUFDM0IsTUFBTSxhQUFhLEdBQVEsRUFBRSxDQUFDO1lBQzlCLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ25DLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUU7b0JBQ3ZDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN4QztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDM0IsZUFBZSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQWtCO3FCQUNqSCxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNULElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUM1QixDQUFDLENBQUM7cUJBQ0QsS0FBSyxFQUFFLENBQUM7YUFDWjtRQUNILENBQUMsQ0FBQzthQUNELEtBQUssRUFBRSxDQUFDO1FBRVgsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixLQUFJLENBQUM7SUFFckIsWUFBWSxLQUFJLENBQUM7SUFFakIsYUFBYSxDQUFDLEtBQUs7UUFDakIsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDbkQscUZBQXFGO1FBQ3JGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFakYsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztTQUMxQjtRQUVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksRUFBRSxLQUFLO1lBQ1gsUUFBUSxFQUFFLEtBQUs7WUFDZixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxlQUFlLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBa0I7YUFDaEgsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxlQUFzQixFQUFFO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTFCLFlBQVksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3hDLE1BQU0sVUFBVSxHQUFHO2dCQUNqQixHQUFHLE9BQU87Z0JBQ1YsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxPQUFPLENBQUMsU0FBUyxFQUFFO2FBQ3pILENBQUM7WUFDRixJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUM5QixVQUFVLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7YUFDOUM7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUUvQix5QkFBeUI7UUFDekIsa0VBQWtFO0lBQ3BFLENBQUM7SUFFRCxrRkFBa0Y7SUFDbEYsMkJBQTJCO0lBQzNCLDBCQUEwQjtJQUUxQixrRkFBa0Y7SUFDbEYsOEJBQThCO0lBQzlCLGtDQUFrQztJQUNsQyxtR0FBbUc7SUFDbkcseUJBQXlCO0lBQ3pCLGVBQWU7SUFDZixRQUFRO0lBQ1IsTUFBTTtJQUNOLHFCQUFxQjtJQUNyQix1Q0FBdUM7SUFFdkMseUVBQXlFO0lBQ3pFLE1BQU07SUFDTixJQUFJO0lBRUosYUFBYTtRQUNYLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFaEMscUVBQXFFO0lBQ3ZFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFTO1FBQzFCLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtZQUNoQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFFdkIsS0FBSyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUU7Z0JBQ2xFLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxNQUFNLEVBQUU7b0JBQ3RDLDJDQUEyQztvQkFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNuQixVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbEMsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsTUFBTTtpQkFDUDthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBUztRQUMzQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWpELElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtZQUNoQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBRXZCLEtBQUssSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFO2dCQUN0RSxJQUFJLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksTUFBTSxFQUFFO29CQUMxQywyQ0FBMkM7b0JBQzNDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUVwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7d0JBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUM3QyxDQUFDLENBQUMsQ0FBQztvQkFFSCxNQUFNO2lCQUNQO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFzSkQsUUFBUTtRQUNOLG9CQUFvQjtRQUNwQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTVDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUM3QztRQUVELG1CQUFtQjtRQUNuQixJQUFJLEtBQUssR0FBUSxFQUFFLENBQUM7UUFDcEIsS0FBSyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFFckIsS0FBSyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUVyQyxLQUFLLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1lBQ3RDLEdBQUcsRUFBRSxLQUFLO1lBQ1YsWUFBWSxFQUFFLElBQUk7WUFDbEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNoQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFDNUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN0QyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7UUFDNUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBRTNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNuQixrRUFBa0U7WUFDbEUsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFOUIsZ0NBQWdDO1lBQ2hDLE1BQU0sSUFBSSxHQUFRLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUVmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpCLGVBQWU7WUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQzVDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBUTtRQUNuQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFN0MsV0FBVztZQUNULDREQUE0RDthQUMzRCxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDO2FBQy9CLElBQUksQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQ3JCLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQzthQUNsRDtpQkFBTSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7Z0JBQ3pCLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3BDLElBQUksR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO2lCQUNwQjtnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFPRCxVQUFVO1FBQ1IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBUTtRQUNqQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDL0MsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUNuQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRTdDLFdBQVc7aUJBQ1IsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQztpQkFDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xCLHNCQUFzQjtnQkFDdEIsZ0NBQWdDO2dCQUNoQywrREFBK0Q7Z0JBQy9ELDJCQUEyQjtnQkFDM0IsTUFBTTtnQkFDTixvQkFBb0I7Z0JBQ3BCLGdDQUFnQztnQkFDaEMsSUFBSTtZQUNOLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELGFBQWE7UUFDWCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUFpQjtRQUMzQixRQUFRLFNBQVMsRUFBRTtZQUNqQixLQUFLLGNBQWM7Z0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDO2dCQUVILE1BQU07WUFDUixLQUFLLGNBQWM7Z0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0ksSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVySSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkksQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFNO1FBQ2xCLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuRCwrQkFBK0I7UUFDL0IsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDO2dCQUNyQyxHQUFHO2dCQUNILFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ2pFLFVBQVUsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ3pELFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQzdELFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDMUQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBTztRQUNqQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sRUFBRTtZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLDJDQUEyQyxDQUFDO2FBQ3pEO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUM7WUFDN0MsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBTyxFQUFFLFdBQVc7UUFDbEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRCxPQUFPLFFBQVEsR0FBRyxXQUFXLENBQUM7SUFDaEMsQ0FBQztJQUVELHVCQUF1QixDQUFDLEtBQVU7UUFDaEMsZ0JBQWdCO1FBQ2hCLFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNwQixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7Z0JBRTdCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUVsQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsS0FBVTtRQUNoQyxnQkFBZ0I7UUFDaEIsUUFBUSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3BCLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztnQkFFN0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQixNQUFNO1lBQ1IsS0FBSyxhQUFhO2dCQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRWxDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUSxLQUFJLENBQUM7SUFFYixrQkFBa0IsQ0FBQyxLQUFVO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVU7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVoQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBRXpCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7aUJBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQztpQkFDRCxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLHFGQUFxRjtRQUNyRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pGLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFNO1FBQ3pCLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25ELE9BQU8sZUFBZSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELHlCQUF5QixDQUFDLElBQUk7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBRWhELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsZUFBZSxDQUFDLFdBQVc7UUFDekIsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsMEJBQTBCLENBQUMsR0FBRztRQUM1QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUNsQyxHQUFHO1lBQ0gsWUFBWSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUM7WUFDM0MsVUFBVSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7WUFDdkMsVUFBVSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7WUFDdkMsVUFBVSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLEdBQUc7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBRztRQUNuQixPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFHO1FBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0QsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQUc7UUFDbkIsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDO0lBRUQsY0FBYztRQUNaLHFGQUFxRjtRQUNyRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pGLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxNQUFNLEVBQUU7WUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0E1dUJVLG9CQUFvQjttR0FBcEIsb0JBQW9CLDBHQ3RCakMsZzFIQW9HQSwyMENEaEZZLFlBQVksZ05BQUUsZUFBZSw2aEJBQUUsa0JBQWtCLCtaQUFFLGNBQWMseWJBQW1CLHdCQUF3Qjs7NEZBRTNHLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7c0pBRy9HLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCBkb3dubG9hZCBmcm9tICdkb3dubG9hZGpzJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgRmlsZVV0aWxpdHlQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXV0aWxpdHknLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11dGlsaXR5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11dGlsaXR5LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXRpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG5cbiAgLy8gRm9yIGludGVyYWN0aW9uIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcblxuICBhckZ1bGxMaXN0QXR0YWNobWVudHM6IGFueVtdID0gW107XG5cbiAgbHVfbmFtZSQgPSAnJztcbiAgbHVfaWNvbiQgPSAnJztcbiAgbHVfYkxvYWRpbmckID0gZmFsc2U7XG4gIGx1X2NvdW50JCA9IDA7XG4gIGx1X2FyQWN0aW9ucyQ6IGFueVtdID0gW107XG4gIGx1X2FySXRlbXMkOiBhbnkgPSBbXTtcblxuICB2YV9hckl0ZW1zJDogYW55W10gPSBbXTtcblxuICBsdV9vblZpZXdBbGxGdW5jdGlvbjogYW55O1xuXG4gIGJTaG93RmlsZU1vZGFsJCA9IGZhbHNlO1xuICBiU2hvd0xpbmtNb2RhbCQgPSBmYWxzZTtcbiAgYlNob3dWaWV3QWxsTW9kYWwkID0gZmFsc2U7XG5cbiAgYXJGaWxlTWFpbkJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuICBhckZpbGVTZWNvbmRhcnlCdXR0b25zJDogYW55W10gPSBbXTtcblxuICBhckxpbmtNYWluQnV0dG9ucyQ6IGFueVtdID0gW107XG4gIGFyTGlua1NlY29uZGFyeUJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuXG4gIGFyRmlsZXMkOiBhbnlbXSA9IFtdO1xuICBhckZpbGVMaXN0JDogYW55W10gPSBbXTtcbiAgcmVtb3ZlRmlsZUZyb21MaXN0JDogYW55O1xuXG4gIGFyTGlua3MkOiBhbnlbXSA9IFtdO1xuICBhckxpbmtzTGlzdCQ6IGFueVtdID0gW107XG4gIHJlbW92ZUxpbmtzRnJvbUxpc3QkOiBhbnk7XG5cbiAgbGlua190aXRsZSQgPSAnJztcbiAgbGlua191cmwkID0gJyc7XG5cbiAgY2xvc2VTdmdJY29uJCA9ICcnO1xuXG4gIGN1cnJlbnRDYXNlSUQgPSAnJztcblxuICBhZGRBdHRhY2htZW50c0FjdGlvbnM6IGFueVtdID0gW1xuICAgIHtcbiAgICAgIHRleHQ6ICdBZGQgZmlsZXMnLFxuICAgICAgaWQ6ICdhZGROZXdGaWxlcycsXG4gICAgICBvbkNsaWNrOiAoKSA9PiB0aGlzLmNyZWF0ZU1vZGFsKCdhZGRMb2NhbEZpbGUnKVxuICAgIH0sXG4gICAge1xuICAgICAgdGV4dDogJ0FkZCBsaW5rcycsXG4gICAgICBpZDogJ2FkZE5ld0xpbmtzJyxcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHRoaXMuY3JlYXRlTW9kYWwoJ2FkZExvY2FsTGluaycpXG4gICAgfVxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgY29uc3QgY29uZmlnUHJvcHM6IEZpbGVVdGlsaXR5UHJvcHMgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSk7XG5cbiAgICB0aGlzLmx1X25hbWUkID0gY29uZmlnUHJvcHMubGFiZWwgPz8gJyc7XG4gICAgdGhpcy5sdV9pY29uJCA9ICdwYXBlci1jbGlwJztcblxuICAgIHRoaXMuY2xvc2VTdmdJY29uJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3RpbWVzJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuXG4gICAgLy8gY29uc3Qgb25WaWV3QWxsQ2FsbGJhY2sgPSAoKSA9PiB0aGlzLm9uVmlld0FsbCh0aGlzLmFyRnVsbExpc3RBdHRhY2htZW50cyk7XG5cbiAgICB0aGlzLmx1X29uVmlld0FsbEZ1bmN0aW9uID0geyBvbkNsaWNrOiB0aGlzLm9uVmlld0FsbC5iaW5kKHRoaXMpIH07XG5cbiAgICB0aGlzLnJlbW92ZUZpbGVGcm9tTGlzdCQgPSB7IG9uQ2xpY2s6IHRoaXMucmVtb3ZlRmlsZUZyb21MaXN0LmJpbmQodGhpcykgfTtcbiAgICB0aGlzLnJlbW92ZUxpbmtzRnJvbUxpc3QkID0geyBvbkNsaWNrOiB0aGlzLnJlbW92ZUxpbmtzRnJvbUxpc3QuYmluZCh0aGlzKSB9O1xuXG4gICAgdGhpcy51cGRhdGVTZWxmKCk7XG5cbiAgICB0aGlzLmNyZWF0ZU1vZGFsQnV0dG9ucygpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICAoUENvcmUuZ2V0RXZlbnRzKCkuZ2V0Q2FzZUV2ZW50KCkgYXMgYW55KS5DQVNFX0FUVEFDSE1FTlRTX1VQREFURURfRlJPTV9DQVNFVklFVyxcbiAgICAgIHRoaXMudXBkYXRlU2VsZi5iaW5kKHRoaXMpLFxuICAgICAgJ2Nhc2VBdHRhY2htZW50c1VwZGF0ZUZyb21DYXNldmlldydcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoXG4gICAgICAoUENvcmUuZ2V0RXZlbnRzKCkuZ2V0Q2FzZUV2ZW50KCkgYXMgYW55KS5DQVNFX0FUVEFDSE1FTlRTX1VQREFURURfRlJPTV9DQVNFVklFVyxcbiAgICAgICdjYXNlQXR0YWNobWVudHNVcGRhdGVGcm9tQ2FzZXZpZXcnXG4gICAgKTtcbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIC8vIGFkZGluZyBhIHByb3BlcnR5IHRvIHRyYWNrIGluIGNvbmZpZ1Byb3BzLCB3aGVuIGV2ZXIgdGhlIGF0dGFjaG1lbnQgZmlsZSBjaGFuZ2VzXG4gICAgLy8gbmVlZCB0byB0cmlnZ2VyIGEgcmVkcmF3XG4gICAgdGhpcy5wQ29ubiQucmVnaXN0ZXJBZGRpdGlvbmFsUHJvcHMoe1xuICAgICAgbGFzdFJlZnJlc2hUaW1lOiBgQFAgJHtQQ29yZS5nZXRDb25zdGFudHMoKS5TVU1NQVJZX09GX0FUVEFDSE1FTlRTX0xBU1RfUkVGUkVTSF9USU1FfWBcbiAgICB9KTtcblxuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYgfHwgdGhpcy5jYXNlSGFzQ2hhbmdlZCgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICBvbkF0dGFjaEZpbGVzKGZpbGVzKSB7XG4gICAgY29uc3QgYXR0YWNobWVudFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgLy8gQHRzLWlnbm9yZSAtIHNlY29uZCBwYXJhbWV0ZXIgcGFnZVJlZmVyZW5jZSBmb3IgZ2V0VmFsdWUgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgIGNvbnN0IGNhc2VJRCA9IHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fSUQpO1xuXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubHVfYkxvYWRpbmckID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBhckZpbGVzOiBhbnkgPSBBcnJheS5mcm9tKGZpbGVzKTtcblxuICAgIFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIGFyRmlsZXMubWFwKGZpbGUgPT4gYXR0YWNobWVudFV0aWxzLnVwbG9hZEF0dGFjaG1lbnQoZmlsZSwgdGhpcy5vblVwbG9hZFByb2dyZXNzLCB0aGlzLmVycm9ySGFuZGxlciwgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSkpXG4gICAgKVxuICAgICAgLnRoZW4oKGZpbGVSZXNwb25zZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzOiBhbnkgPSBbXTtcbiAgICAgICAgZmlsZVJlc3BvbnNlcy5mb3JFYWNoKGZpbGVSZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYgKGZpbGVSZXNwb25zZS5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKSB7XG4gICAgICAgICAgICB1cGxvYWRlZEZpbGVzLnB1c2goZmlsZVJlc3BvbnNlLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodXBsb2FkZWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgKGF0dGFjaG1lbnRVdGlscy5saW5rQXR0YWNobWVudHNUb0Nhc2UoY2FzZUlELCB1cGxvYWRlZEZpbGVzLCAnRmlsZScsIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpIGFzIFByb21pc2U8YW55PilcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoQXR0YWNobWVudHMoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgpO1xuXG4gICAgdGhpcy5hckZpbGVMaXN0JCA9IFtdO1xuICAgIHRoaXMubHVfYkxvYWRpbmckID0gZmFsc2U7XG4gIH1cblxuICByZWZyZXNoQXR0YWNobWVudHMoKSB7XG4gICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gIH1cblxuICBvblVwbG9hZFByb2dyZXNzKCkge31cblxuICBlcnJvckhhbmRsZXIoKSB7fVxuXG4gIG9uQXR0YWNoTGlua3MobGlua3MpIHtcbiAgICBjb25zdCBhdHRhY2htZW50VXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICAvLyBAdHMtaWdub3JlIC0gc2Vjb25kIHBhcmFtZXRlciBwYWdlUmVmZXJlbmNlIGZvciBnZXRWYWx1ZSBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgY29uc3QgY2FzZUlEID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19JRCk7XG5cbiAgICBpZiAobGlua3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sdV9iTG9hZGluZyQgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmtzVG9BdHRhY2ggPSBsaW5rcy5tYXAobGluayA9PiAoe1xuICAgICAgdHlwZTogJ1VSTCcsXG4gICAgICBjYXRlZ29yeTogJ1VSTCcsXG4gICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgbmFtZTogbGluay5saW5rVGl0bGVcbiAgICB9KSk7XG5cbiAgICAoYXR0YWNobWVudFV0aWxzLmxpbmtBdHRhY2htZW50c1RvQ2FzZShjYXNlSUQsIGxpbmtzVG9BdHRhY2gsICdVUkwnLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKSBhcyBQcm9taXNlPGFueT4pXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMucmVmcmVzaEF0dGFjaG1lbnRzKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfVxuXG4gIGFkZEF0dGFjaG1lbnRzKGF0dHNGcm9tUmVzcDogYW55W10gPSBbXSkge1xuICAgIHRoaXMubHVfYkxvYWRpbmckID0gZmFsc2U7XG5cbiAgICBhdHRzRnJvbVJlc3AgPSBhdHRzRnJvbVJlc3AubWFwKHJlc3BBdHQgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZEF0dCA9IHtcbiAgICAgICAgLi4ucmVzcEF0dCxcbiAgICAgICAgbWV0YTogYCR7cmVzcEF0dC5jYXRlZ29yeX0gLiAke3RoaXMudXRpbHMuZ2VuZXJhdGVEYXRlVGltZShyZXNwQXR0LmNyZWF0ZVRpbWUsICdEYXRlVGltZS1TaW5jZScpfSwgJHtyZXNwQXR0LmNyZWF0ZWRCeX1gXG4gICAgICB9O1xuICAgICAgaWYgKHVwZGF0ZWRBdHQudHlwZSA9PT0gJ0ZJTEUnKSB7XG4gICAgICAgIHVwZGF0ZWRBdHQubmFtZVdpdGhFeHQgPSB1cGRhdGVkQXR0LmZpbGVOYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVwZGF0ZWRBdHQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXR0c0Zyb21SZXNwO1xuICB9XG5cbiAgb25WaWV3QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuYlNob3dWaWV3QWxsTW9kYWwkID0gdHJ1ZTtcblxuICAgIC8vIGFkZCBjbGlja0F3YXkgbGlzdGVuZXJcbiAgICAvLyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2NsaWNrQXdheS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8vIEJlbG93IG1ldGhvZCBpcyBub3QgbmVlZGVkLCBzdGlsbCBoYXZpbmcgaXQgY29tbWVudGVkIGluIGNhc2Ugd2Ugd2FudCBpbiBmdXR1cmVcbiAgLy8gX2NsaWNrQXdheShldmVudDogYW55KSB7XG4gIC8vICAgbGV0IGJJblBvcFVwID0gZmFsc2U7XG5cbiAgLy8gICAvLyBydW4gdGhyb3VnaCBsaXN0IG9mIGVsZW1lbnRzIGluIHBhdGgsIGlmIG1lbnUgbm90IGluIHRoIHBhdGgsIHRoZW4gd2FudCB0b1xuICAvLyAgIC8vIGhpZGUgKHRvZ2dsZSkgdGhlIG1lbnVcbiAgLy8gICBmb3IgKGNvbnN0IGkgaW4gZXZlbnQucGF0aCkge1xuICAvLyAgICAgaWYgKGV2ZW50LnBhdGhbaV0uY2xhc3NOYW1lID09ICdwc2RrLW1vZGFsLWZpbGUtdG9wJyB8fCBldmVudC5wYXRoW2ldLnRhZ05hbWUgPT0gJ0JVVFRPTicpIHtcbiAgLy8gICAgICAgYkluUG9wVXAgPSB0cnVlO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vICAgaWYgKCFiSW5Qb3BVcCkge1xuICAvLyAgICAgdGhpcy5iU2hvd1ZpZXdBbGxNb2RhbCQgPSBmYWxzZTtcblxuICAvLyAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9jbGlja0F3YXkuYmluZCh0aGlzKSk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgX2Nsb3NlVmlld0FsbCgpIHtcbiAgICB0aGlzLmJTaG93Vmlld0FsbE1vZGFsJCA9IGZhbHNlO1xuXG4gICAgLy8gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9jbGlja0F3YXkuYmluZCh0aGlzKSk7XG4gIH1cblxuICByZW1vdmVGaWxlRnJvbUxpc3QoaXRlbTogYW55KSB7XG4gICAgaWYgKGl0ZW0gIT0gbnVsbCkge1xuICAgICAgY29uc3QgYXJGaWxlTGlzdCA9IHRoaXMuYXJGaWxlTGlzdCQ7XG4gICAgICBjb25zdCBpdGVtSWQgPSBpdGVtLmlkO1xuXG4gICAgICBmb3IgKGxldCBmaWxlSW5kZXggPSAwOyBmaWxlSW5kZXggPCBhckZpbGVMaXN0Lmxlbmd0aDsgZmlsZUluZGV4KyspIHtcbiAgICAgICAgaWYgKGFyRmlsZUxpc3RbZmlsZUluZGV4XS5pZCA9PSBpdGVtSWQpIHtcbiAgICAgICAgICAvLyByZW1vdmUgdGhlIGZpbGUgZnJvbSB0aGUgbGlzdCBhbmQgcmVkcmF3XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGFyRmlsZUxpc3Quc3BsaWNlKGZpbGVJbmRleCwgMSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVMaW5rc0Zyb21MaXN0KGl0ZW06IGFueSkge1xuICAgIGNvbnN0IGxvY2FsTGlua3NMaXN0ID0gdGhpcy5hckxpbmtzTGlzdCQuc2xpY2UoKTtcblxuICAgIGlmIChpdGVtICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGl0ZW1JZCA9IGl0ZW0uaWQ7XG5cbiAgICAgIGZvciAobGV0IGxpbmtJbmRleCA9IDA7IGxpbmtJbmRleCA8IGxvY2FsTGlua3NMaXN0Lmxlbmd0aDsgbGlua0luZGV4KyspIHtcbiAgICAgICAgaWYgKGxvY2FsTGlua3NMaXN0W2xpbmtJbmRleF0uaWQgPT0gaXRlbUlkKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRoZSBmaWxlIGZyb20gdGhlIGxpc3QgYW5kIHJlZHJhd1xuICAgICAgICAgIGxvY2FsTGlua3NMaXN0LnNwbGljZShsaW5rSW5kZXgsIDEpO1xuXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXJMaW5rc0xpc3QkID0gbG9jYWxMaW5rc0xpc3Quc2xpY2UoKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0TmV3TGlzdFV0aWxpdHlJdGVtUHJvcHMgPSAoeyBhdHQsIGNhbmNlbEZpbGUsIGRvd25sb2FkRmlsZSwgZGVsZXRlRmlsZSwgcmVtb3ZlRmlsZSB9KSA9PiB7XG4gICAgbGV0IGFjdGlvbnM7XG4gICAgbGV0IGlzRG93bmxvYWRhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoYXR0LnByb2dyZXNzICYmIGF0dC5wcm9ncmVzcyAhPT0gMTAwKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBDYW5jZWwtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICBpY29uOiAndGltZXMnLFxuICAgICAgICAgIG9uQ2xpY2s6IGNhbmNlbEZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGF0dC5saW5rcykge1xuICAgICAgY29uc3QgaXNGaWxlID0gYXR0LnR5cGUgPT09ICdGSUxFJztcbiAgICAgIGNvbnN0IElEID0gYXR0LklELnJlcGxhY2UoL1xccy9naSwgJycpO1xuICAgICAgY29uc3QgYWN0aW9uc01hcCA9IG5ldyBNYXAoW1xuICAgICAgICBbXG4gICAgICAgICAgJ2Rvd25sb2FkJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYGRvd25sb2FkLSR7SUR9YCxcbiAgICAgICAgICAgIHRleHQ6IGlzRmlsZSA/ICdEb3dubG9hZCcgOiAnT3BlbicsXG4gICAgICAgICAgICBpY29uOiBpc0ZpbGUgPyAnZG93bmxvYWQnIDogJ29wZW4nLFxuICAgICAgICAgICAgb25DbGljazogZG93bmxvYWRGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgJ2RlbGV0ZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBEZWxldGUtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgb25DbGljazogZGVsZXRlRmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgXSk7XG4gICAgICBhY3Rpb25zID0gW107XG4gICAgICBhY3Rpb25zTWFwLmZvckVhY2goKGFjdGlvbiwgYWN0aW9uS2V5KSA9PiB7XG4gICAgICAgIGlmIChhdHQubGlua3NbYWN0aW9uS2V5XSkge1xuICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGlzRG93bmxvYWRhYmxlID0gYXR0LmxpbmtzLmRvd25sb2FkO1xuICAgIH0gZWxzZSBpZiAoYXR0LmVycm9yKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBSZW1vdmUtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiAnUmVtb3ZlJyxcbiAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgIG9uQ2xpY2s6IHJlbW92ZUZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGF0dC5JRCxcbiAgICAgIHZpc3VhbDoge1xuICAgICAgICBpY29uOiB0aGlzLnV0aWxzLmdldEljb25Gb3JBdHRhY2htZW50KGF0dCksXG4gICAgICAgIHByb2dyZXNzOiBhdHQucHJvZ3Jlc3MgPT0gMTAwID8gdW5kZWZpbmVkIDogYXR0LnByb2dyZXNzXG4gICAgICB9LFxuICAgICAgcHJpbWFyeToge1xuICAgICAgICB0eXBlOiBhdHQudHlwZSxcbiAgICAgICAgbmFtZTogYXR0Lm5hbWUsXG4gICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgIGNsaWNrOiByZW1vdmVGaWxlXG4gICAgICB9LFxuICAgICAgc2Vjb25kYXJ5OiB7XG4gICAgICAgIHRleHQ6IGF0dC5tZXRhXG4gICAgICB9LFxuICAgICAgYWN0aW9uc1xuICAgIH07XG4gIH07XG5cbiAgZ2V0TGlzdFV0aWxpdHlJdGVtUHJvcHMgPSAoeyBhdHQsIGNhbmNlbEZpbGUsIGRvd25sb2FkRmlsZSwgZGVsZXRlRmlsZSwgcmVtb3ZlRmlsZSB9KSA9PiB7XG4gICAgbGV0IGFjdGlvbnM7XG4gICAgbGV0IGlzRG93bmxvYWRhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoYXR0LnByb2dyZXNzICYmIGF0dC5wcm9ncmVzcyAhPT0gMTAwKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBDYW5jZWwtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQ2FuY2VsJywgJycsICcnKSxcbiAgICAgICAgICBpY29uOiAndGltZXMnLFxuICAgICAgICAgIG9uQ2xpY2s6IGNhbmNlbEZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGF0dC5saW5rcykge1xuICAgICAgY29uc3QgaXNGaWxlID0gYXR0LnR5cGUgPT09ICdGSUxFJztcbiAgICAgIGNvbnN0IElEID0gYXR0LklELnJlcGxhY2UoL1xccy9naSwgJycpO1xuICAgICAgY29uc3QgYWN0aW9uc01hcCA9IG5ldyBNYXAoW1xuICAgICAgICBbXG4gICAgICAgICAgJ2Rvd25sb2FkJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYGRvd25sb2FkLSR7SUR9YCxcbiAgICAgICAgICAgIHRleHQ6IGlzRmlsZSA/IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdEb3dubG9hZCcsICcnLCAnJykgOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnT3BlbicsICcnLCAnJyksXG4gICAgICAgICAgICBpY29uOiBpc0ZpbGUgPyAnZG93bmxvYWQnIDogJ29wZW4nLFxuICAgICAgICAgICAgb25DbGljazogZG93bmxvYWRGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgJ2RlbGV0ZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBEZWxldGUtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0RlbGV0ZScsICcnLCAnJyksXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgb25DbGljazogZGVsZXRlRmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgXSk7XG4gICAgICBhY3Rpb25zID0gW107XG4gICAgICBhY3Rpb25zTWFwLmZvckVhY2goKGFjdGlvbiwgYWN0aW9uS2V5KSA9PiB7XG4gICAgICAgIGlmIChhdHQubGlua3NbYWN0aW9uS2V5XSkge1xuICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGlzRG93bmxvYWRhYmxlID0gYXR0LmxpbmtzLmRvd25sb2FkO1xuICAgIH0gZWxzZSBpZiAoYXR0LmVycm9yKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBSZW1vdmUtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnUmVtb3ZlJywgJycsICcnKSxcbiAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgIG9uQ2xpY2s6IHJlbW92ZUZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGF0dC5JRCxcbiAgICAgIHZpc3VhbDoge1xuICAgICAgICBpY29uOiB0aGlzLnV0aWxzLmdldEljb25Gb3JBdHRhY2htZW50KGF0dCksXG4gICAgICAgIHByb2dyZXNzOiBhdHQucHJvZ3Jlc3MgPT0gMTAwID8gdW5kZWZpbmVkIDogYXR0LnByb2dyZXNzXG4gICAgICB9LFxuICAgICAgcHJpbWFyeToge1xuICAgICAgICB0eXBlOiBhdHQudHlwZSxcbiAgICAgICAgbmFtZTogYXR0Lm5hbWUsXG4gICAgICAgIGljb246ICdvcGVuJyxcbiAgICAgICAgY2xpY2s6IGRvd25sb2FkRmlsZVxuICAgICAgfSxcbiAgICAgIHNlY29uZGFyeToge1xuICAgICAgICB0ZXh0OiBhdHQubWV0YVxuICAgICAgfSxcbiAgICAgIGFjdGlvbnNcbiAgICB9O1xuICB9O1xuXG4gIF9hZGRMaW5rKCkge1xuICAgIC8vIGNvcHkgbGlzdCBsb2NhbGx5XG4gICAgY29uc3QgbG9jYWxMaXN0ID0gdGhpcy5hckxpbmtzTGlzdCQuc2xpY2UoKTtcblxuICAgIGNvbnN0IHVybCA9IHRoaXMubGlua191cmwkO1xuXG4gICAgaWYgKCEvXihodHRwfGh0dHBzKTpcXC9cXC8vLnRlc3QodGhpcy5saW5rX3VybCQpKSB7XG4gICAgICB0aGlzLmxpbmtfdXJsJCA9IGBodHRwOi8vJHt0aGlzLmxpbmtfdXJsJH1gO1xuICAgIH1cblxuICAgIC8vIGxpc3QgZm9yIGRpc3BsYXlcbiAgICBsZXQgb0xpbms6IGFueSA9IHt9O1xuICAgIG9MaW5rLmljb24gPSAnY2hhaW4nO1xuXG4gICAgb0xpbmsuSUQgPSBgJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gO1xuXG4gICAgb0xpbmsgPSB0aGlzLmdldE5ld0xpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgIGF0dDogb0xpbmssXG4gICAgICBkb3dubG9hZEZpbGU6IG51bGwsXG4gICAgICBjYW5jZWxGaWxlOiBudWxsLFxuICAgICAgZGVsZXRlRmlsZTogbnVsbCxcbiAgICAgIHJlbW92ZUZpbGU6IG51bGxcbiAgICB9KTtcblxuICAgIG9MaW5rLnR5cGUgPSAnVVJMJztcbiAgICBvTGluay5wcmltYXJ5LnR5cGUgPSBvTGluay50eXBlO1xuICAgIG9MaW5rLnZpc3VhbC5pY29uID0gJ2NoYWluJztcbiAgICBvTGluay5wcmltYXJ5Lm5hbWUgPSB0aGlzLmxpbmtfdGl0bGUkO1xuICAgIG9MaW5rLnByaW1hcnkuaWNvbiA9ICdvcGVuJztcbiAgICBvTGluay5zZWNvbmRhcnkudGV4dCA9IHVybDtcblxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAvLyBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBhcnJheSBvciBzdW1tYXJ5IGxpc3Qgd29uJ3QgZGV0ZWN0IGNoYW5nZXNcbiAgICAgIHRoaXMuYXJMaW5rc0xpc3QkID0gbG9jYWxMaXN0LnNsaWNlKCk7XG4gICAgICB0aGlzLmFyTGlua3NMaXN0JC5wdXNoKG9MaW5rKTtcblxuICAgICAgLy8gbGlzdCBmb3IgYWN0dWFsbHkgYXR0YWNobWVudHNcbiAgICAgIGNvbnN0IGxpbms6IGFueSA9IHt9O1xuICAgICAgbGluay5pZCA9IG9MaW5rLmlkO1xuICAgICAgbGluay5saW5rVGl0bGUgPSB0aGlzLmxpbmtfdGl0bGUkO1xuICAgICAgbGluay50eXBlID0gb0xpbmsudHlwZTtcbiAgICAgIGxpbmsudXJsID0gdXJsO1xuXG4gICAgICB0aGlzLmFyTGlua3MkLnB1c2gobGluayk7XG5cbiAgICAgIC8vIGNsZWFyIHZhbHVlc1xuICAgICAgdGhpcy5saW5rX3RpdGxlJCA9ICcnO1xuICAgICAgdGhpcy5saW5rX3VybCQgPSAnJztcbiAgICB9KTtcbiAgfVxuXG4gIF9jaGFuZ2VUaXRsZShldmVudDogYW55KSB7XG4gICAgdGhpcy5saW5rX3RpdGxlJCA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XG4gIH1cblxuICBfY2hhbmdlVXJsKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmxpbmtfdXJsJCA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XG4gIH1cblxuICBkb3dubG9hZEZpbGUoYXR0OiBhbnkpIHtcbiAgICBjb25zdCBhdHRhY2hVdGlscyA9IFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpO1xuICAgIGNvbnN0IHsgSUQsIG5hbWUsIGV4dGVuc2lvbiwgdHlwZSB9ID0gYXR0O1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuXG4gICAgYXR0YWNoVXRpbHNcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSAzcmQgcGFyYW1ldGVyIFwicmVzcG9uc2VFbmNvZGluZ1wiIGlzIG9wdGlvbmFsXG4gICAgICAuZG93bmxvYWRBdHRhY2htZW50KElELCBjb250ZXh0KVxuICAgICAgLnRoZW4oKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAodHlwZSA9PT0gJ0ZJTEUnKSB7XG4gICAgICAgICAgdGhpcy5maWxlRG93bmxvYWQoY29udGVudC5kYXRhLCBuYW1lLCBleHRlbnNpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdVUkwnKSB7XG4gICAgICAgICAgbGV0IHsgZGF0YSB9ID0gY29udGVudDtcbiAgICAgICAgICBpZiAoIS9eKGh0dHB8aHR0cHMpOlxcL1xcLy8udGVzdChkYXRhKSkge1xuICAgICAgICAgICAgZGF0YSA9IGAvLyR7ZGF0YX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3aW5kb3cub3Blbihjb250ZW50LmRhdGEsICdfYmxhbmsnKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgfVxuXG4gIGZpbGVEb3dubG9hZCA9IChkYXRhLCBmaWxlTmFtZSwgZXh0KSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IGV4dCA/IGAke2ZpbGVOYW1lfS4ke2V4dH1gIDogZmlsZU5hbWU7XG4gICAgZG93bmxvYWQoYXRvYihkYXRhKSwgZmlsZSk7XG4gIH07XG5cbiAgY2FuY2VsRmlsZSgpIHtcbiAgICBhbGVydCgnY2FuY2VsJyk7XG4gIH1cblxuICBkZWxldGVGaWxlKGF0dDogYW55KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBhdHRhY2hVdGlscyA9IFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpO1xuICAgICAgY29uc3QgeyBJRCB9ID0gYXR0O1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG5cbiAgICAgIGF0dGFjaFV0aWxzXG4gICAgICAgIC5kZWxldGVBdHRhY2htZW50KElELCBjb250ZXh0KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgICAgICAgLy8gbGV0IG5ld0F0dGFjaG1lbnRzO1xuICAgICAgICAgIC8vIHNldEF0dGFjaG1lbnRzKChjdXJyZW50KSA9PiB7XG4gICAgICAgICAgLy8gICBuZXdBdHRhY2htZW50cyA9IGN1cnJlbnQuZmlsdGVyKChmaWxlKSA9PiBmaWxlLklEICE9PSBJRCk7XG4gICAgICAgICAgLy8gICByZXR1cm4gbmV3QXR0YWNobWVudHM7XG4gICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgLy8gaWYgKGNhbGxiYWNrRm4pIHtcbiAgICAgICAgICAvLyAgIGNhbGxiYWNrRm4obmV3QXR0YWNobWVudHMpO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlRmlsZSgpIHtcbiAgICBhbGVydCgncmVtb3ZlJyk7XG4gIH1cblxuICByZW1vdmVOZXdGaWxlKCkge1xuICAgIGFsZXJ0KCdyZW1vdmUnKTtcbiAgfVxuXG4gIGNyZWF0ZU1vZGFsKG1vZGFsVHlwZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChtb2RhbFR5cGUpIHtcbiAgICAgIGNhc2UgJ2FkZExvY2FsRmlsZSc6XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5iU2hvd0ZpbGVNb2RhbCQgPSB0cnVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FkZExvY2FsTGluayc6XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5iU2hvd0xpbmtNb2RhbCQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjcmVhdGVNb2RhbEJ1dHRvbnMoKSB7XG4gICAgdGhpcy5hckZpbGVNYWluQnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnYXR0YWNoJywganNBY3Rpb246ICdhdHRhY2hGaWxlcycsIG5hbWU6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBdHRhY2ggZmlsZXMnLCAnJywgJycpIH0pO1xuICAgIHRoaXMuYXJGaWxlU2Vjb25kYXJ5QnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnY2FuY2VsJywganNBY3Rpb246ICdjYW5jZWwnLCBuYW1lOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQ2FuY2VsJywgJycsICcnKSB9KTtcblxuICAgIHRoaXMuYXJMaW5rTWFpbkJ1dHRvbnMkLnB1c2goeyBhY3Rpb25JRDogJ2F0dGFjaCcsIGpzQWN0aW9uOiAnYXR0YWNoTGlua3MnLCBuYW1lOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQXR0YWNoIGxpbmtzJywgJycsICcnKSB9KTtcbiAgICB0aGlzLmFyTGlua1NlY29uZGFyeUJ1dHRvbnMkLnB1c2goeyBhY3Rpb25JRDogJ2NhbmNlbCcsIGpzQWN0aW9uOiAnY2FuY2VsJywgbmFtZTogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0NhbmNlbCcsICcnLCAnJykgfSk7XG4gIH1cblxuICB1cGxvYWRNeUZpbGVzKCRldmVudCkge1xuICAgIC8vIGFsZXJ0KCRldmVudC50YXJnZXQuZmlsZXNbMF0pOyAvLyBvdXRwdXRzIHRoZSBmaXJzdCBmaWxlXG4gICAgdGhpcy5hckZpbGVzJCA9IHRoaXMuZ2V0RmlsZXMoJGV2ZW50LnRhcmdldC5maWxlcyk7XG5cbiAgICAvLyBjb252ZXJ0IEZpbGVMaXN0IHRvIGFuIGFycmF5XG4gICAgY29uc3QgbXlGaWxlcyA9IEFycmF5LmZyb20odGhpcy5hckZpbGVzJCk7XG5cbiAgICB0aGlzLmFyRmlsZUxpc3QkID0gbXlGaWxlcy5tYXAoYXR0ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmdldE5ld0xpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgICAgYXR0LFxuICAgICAgICBkb3dubG9hZEZpbGU6ICFhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmRvd25sb2FkRmlsZShhdHQpIDogbnVsbCxcbiAgICAgICAgY2FuY2VsRmlsZTogYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5jYW5jZWxGaWxlKCkgOiBudWxsLFxuICAgICAgICBkZWxldGVGaWxlOiAhYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5kZWxldGVGaWxlKGF0dCkgOiBudWxsLFxuICAgICAgICByZW1vdmVGaWxlOiBhdHQuZXJyb3IgPyAoKSA9PiB0aGlzLnJlbW92ZU5ld0ZpbGUoKSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RmlsZXMoYXJGaWxlczogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0TmV3RmlsZXMoYXJGaWxlcyk7XG4gIH1cblxuICBzZXROZXdGaWxlcyhhckZpbGVzKSB7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYXJGaWxlcykge1xuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlTWF4U2l6ZShmaWxlLCA1KSkge1xuICAgICAgICBmaWxlLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgZmlsZS5tZXRhID0gJ0ZpbGUgaXMgdG9vIGJpZy4gTWF4IGFsbG93ZWQgc2l6ZSBpcyA1TUIuJztcbiAgICAgIH1cbiAgICAgIGZpbGUubWltZVR5cGUgPSBmaWxlLnR5cGU7XG4gICAgICBmaWxlLmljb24gPSB0aGlzLnV0aWxzLmdldEljb25Gcm9tRmlsZVR5cGUoZmlsZS50eXBlKTtcbiAgICAgIGZpbGUuSUQgPSBgJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1JJHtpbmRleH1gO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICByZXR1cm4gYXJGaWxlcztcbiAgfVxuXG4gIHZhbGlkYXRlTWF4U2l6ZShmaWxlT2JqLCBtYXhTaXplSW5NQik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpbGVTaXplID0gKGZpbGVPYmouc2l6ZSAvIDEwNDg1NzYpLnRvRml4ZWQoMik7XG4gICAgcmV0dXJuIGZpbGVTaXplIDwgbWF4U2l6ZUluTUI7XG4gIH1cblxuICBvbkZpbGVBY3Rpb25CdXR0b25DbGljayhldmVudDogYW55KSB7XG4gICAgLy8gbW9kYWwgYnV0dG9uc1xuICAgIHN3aXRjaCAoZXZlbnQuYWN0aW9uKSB7XG4gICAgICBjYXNlICdjYW5jZWwnOlxuICAgICAgICB0aGlzLmJTaG93RmlsZU1vZGFsJCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYXJPdXRGaWxlcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2F0dGFjaEZpbGVzJzpcbiAgICAgICAgdGhpcy5iU2hvd0ZpbGVNb2RhbCQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkF0dGFjaEZpbGVzKHRoaXMuYXJGaWxlcyQpO1xuXG4gICAgICAgIHRoaXMuY2xlYXJPdXRGaWxlcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uTGlua0FjdGlvbkJ1dHRvbkNsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBtb2RhbCBidXR0b25zXG4gICAgc3dpdGNoIChldmVudC5hY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2NhbmNlbCc6XG4gICAgICAgIHRoaXMuYlNob3dMaW5rTW9kYWwkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhck91dExpbmtzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXR0YWNoTGlua3MnOlxuICAgICAgICB0aGlzLmJTaG93TGlua01vZGFsJCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uQXR0YWNoTGlua3ModGhpcy5hckxpbmtzJCk7XG5cbiAgICAgICAgdGhpcy5jbGVhck91dExpbmtzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJPdXRGaWxlcygpIHtcbiAgICB0aGlzLmFyRmlsZUxpc3QkID0gW107XG4gICAgdGhpcy5hckZpbGVzJCA9IFtdO1xuICB9XG5cbiAgY2xlYXJPdXRMaW5rcygpIHtcbiAgICB0aGlzLmFyTGlua3NMaXN0JCA9IFtdO1xuICAgIHRoaXMuYXJMaW5rcyQgPSBbXTtcbiAgICB0aGlzLmxpbmtfdGl0bGUkID0gJyc7XG4gICAgdGhpcy5saW5rX3VybCQgPSAnJztcbiAgfVxuXG4gIGFkZEFMaW5rKCkge31cblxuICBfZmllbGRPbkNoYW5nZUxpbmsoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubGlua190aXRsZSQgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cblxuICBfZmllbGRPbkNoYW5nZVVSTChldmVudDogYW55KSB7XG4gICAgdGhpcy5saW5rX3VybCQgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIGNvbnN0IGNhc2VJRCA9IHRoaXMuZ2V0Q2FzZUlEKCk7XG5cbiAgICBpZiAoY2FzZUlEKSB7XG4gICAgICB0aGlzLmx1X2JMb2FkaW5nJCA9IHRydWU7XG5cbiAgICAgIHRoaXMuZmV0Y2hDYXNlQXR0YWNobWVudHMoY2FzZUlEKVxuICAgICAgICAudGhlbihyZXNwID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUF0dGFjaG1lbnRzUmVzcG9uc2UocmVzcCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgIH0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmx1X2JMb2FkaW5nJCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXNlSUQoKSB7XG4gICAgLy8gQHRzLWlnbm9yZSAtIHNlY29uZCBwYXJhbWV0ZXIgcGFnZVJlZmVyZW5jZSBmb3IgZ2V0VmFsdWUgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgIHJldHVybiB0aGlzLnBDb25uJC5nZXRWYWx1ZShQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uQ0FTRV9JTkZPX0lEKSB8fCAnJztcbiAgfVxuXG4gIGZldGNoQ2FzZUF0dGFjaG1lbnRzKGNhc2VJRCkge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRVdGlscyA9IFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpO1xuICAgIHJldHVybiBhdHRhY2htZW50VXRpbHMuZ2V0Q2FzZUF0dGFjaG1lbnRzKGNhc2VJRCwgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSk7XG4gIH1cblxuICBoYW5kbGVBdHRhY2htZW50c1Jlc3BvbnNlKHJlc3ApIHtcbiAgICB0aGlzLmFyRnVsbExpc3RBdHRhY2htZW50cyA9IHRoaXMuYWRkQXR0YWNobWVudHMocmVzcCk7XG4gICAgdGhpcy5sdV9jb3VudCQgPSB0aGlzLmFyRnVsbExpc3RBdHRhY2htZW50cy5sZW5ndGg7XG4gICAgdGhpcy5sdV9hckFjdGlvbnMkID0gdGhpcy5hZGRBdHRhY2htZW50c0FjdGlvbnM7XG5cbiAgICB0aGlzLmx1X2FySXRlbXMkID0gdGhpcy5nZXRVdGlsaXR5SXRlbXModGhpcy5hckZ1bGxMaXN0QXR0YWNobWVudHMuc2xpY2UoMCwgMykpO1xuICAgIHRoaXMudmFfYXJJdGVtcyQgPSB0aGlzLmdldFV0aWxpdHlJdGVtcyh0aGlzLmFyRnVsbExpc3RBdHRhY2htZW50cyk7XG4gIH1cblxuICBnZXRVdGlsaXR5SXRlbXMoYXR0YWNobWVudHMpIHtcbiAgICByZXR1cm4gYXR0YWNobWVudHMubWFwKHRoaXMubWFwQXR0YWNobWVudFRvVXRpbGl0eUl0ZW0uYmluZCh0aGlzKSk7XG4gIH1cblxuICBtYXBBdHRhY2htZW50VG9VdGlsaXR5SXRlbShhdHQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0VXRpbGl0eUl0ZW1Qcm9wcyh7XG4gICAgICBhdHQsXG4gICAgICBkb3dubG9hZEZpbGU6IHRoaXMuZ2V0RG93bmxvYWRGdW5jdGlvbihhdHQpLFxuICAgICAgY2FuY2VsRmlsZTogdGhpcy5nZXRDYW5jZWxGdW5jdGlvbihhdHQpLFxuICAgICAgZGVsZXRlRmlsZTogdGhpcy5nZXREZWxldGVGdW5jdGlvbihhdHQpLFxuICAgICAgcmVtb3ZlRmlsZTogdGhpcy5nZXRSZW1vdmVGdW5jdGlvbihhdHQpXG4gICAgfSk7XG4gIH1cblxuICBnZXREb3dubG9hZEZ1bmN0aW9uKGF0dCkge1xuICAgIHJldHVybiAhYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5kb3dubG9hZEZpbGUoYXR0KSA6IG51bGw7XG4gIH1cblxuICBnZXRDYW5jZWxGdW5jdGlvbihhdHQpIHtcbiAgICByZXR1cm4gYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5jYW5jZWxGaWxlKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0RGVsZXRlRnVuY3Rpb24oYXR0KSB7XG4gICAgcmV0dXJuICFhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmRlbGV0ZUZpbGUoYXR0KSA6IG51bGw7XG4gIH1cblxuICBnZXRSZW1vdmVGdW5jdGlvbihhdHQpIHtcbiAgICByZXR1cm4gYXR0LmVycm9yID8gKCkgPT4gdGhpcy5yZW1vdmVGaWxlKCkgOiBudWxsO1xuICB9XG5cbiAgY2FzZUhhc0NoYW5nZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQHRzLWlnbm9yZSAtIHNlY29uZCBwYXJhbWV0ZXIgcGFnZVJlZmVyZW5jZSBmb3IgZ2V0VmFsdWUgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgIGNvbnN0IGNhc2VJRCA9IHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fSUQpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRDYXNlSUQgIT09IGNhc2VJRCkge1xuICAgICAgdGhpcy5jdXJyZW50Q2FzZUlEID0gY2FzZUlEO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8Y29tcG9uZW50LW1hcHBlclxuICAgIG5hbWU9XCJMaXN0VXRpbGl0eVwiXG4gICAgW3Byb3BzXT1cIntcbiAgICAgIG5hbWUkOiBsdV9uYW1lJCxcbiAgICAgIGljb24kOiBsdV9pY29uJCxcbiAgICAgIGJMb2FkaW5nJDogbHVfYkxvYWRpbmckLFxuICAgICAgY291bnQkOiBsdV9jb3VudCQsXG4gICAgICBhckFjdGlvbnMkOiBsdV9hckFjdGlvbnMkLFxuICAgICAgYXJJdGVtcyQ6IGx1X2FySXRlbXMkLFxuICAgICAgb25WaWV3QWxsJDogbHVfb25WaWV3QWxsRnVuY3Rpb24sXG4gICAgICBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlRmlsZUZyb21MaXN0JFxuICAgIH1cIlxuICA+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJiU2hvd0ZpbGVNb2RhbCRcIiBjbGFzcz1cInBzZGstZGlhbG9nLWJhY2tncm91bmRcIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtZmlsZS10b3BcIj5cbiAgICA8aDM+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBZGQgbG9jYWwgZmlsZXMnLCAnJywgJycpIH19PC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1maWxlLXNlbGVjdG9yXCI+XG4gICAgICAgIDxpbnB1dCBoaWRkZW4gdHlwZT1cImZpbGVcIiBtdWx0aXBsZSAjdXBsb2FkZXIgKGNoYW5nZSk9XCJ1cGxvYWRNeUZpbGVzKCRldmVudClcIiAvPlxuXG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJ1cGxvYWRlci5jbGljaygpXCI+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdVcGxvYWQgZmlsZShzKScsICcnLCAnJykgfX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICBuYW1lPVwiU3VtbWFyeUxpc3RcIlxuICAgICAgICBbcHJvcHNdPVwieyBhckl0ZW1zJDogYXJGaWxlTGlzdCQsIG1lbnVJY29uT3ZlcnJpZGUkOiAndHJhc2gnLCBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlRmlsZUZyb21MaXN0JCB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgbmFtZT1cIkFjdGlvbkJ1dHRvbnNcIlxuICAgICAgW3Byb3BzXT1cInsgYXJNYWluQnV0dG9ucyQ6IGFyRmlsZU1haW5CdXR0b25zJCwgYXJTZWNvbmRhcnlCdXR0b25zJDogYXJGaWxlU2Vjb25kYXJ5QnV0dG9ucyQgfVwiXG4gICAgICBbcGFyZW50XT1cInRoaXNcIlxuICAgICAgW291dHB1dEV2ZW50c109XCJ7IGFjdGlvbkJ1dHRvbkNsaWNrOiBvbkZpbGVBY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dMaW5rTW9kYWwkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstdG9wXCI+XG4gICAgPGgzPnt7IHBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQWRkIGxvY2FsIGxpbmsnLCAnJywgJycpIH19PC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rLWVudHJ5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmtzLXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWxpbmtzLXR3by1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstZGF0YVwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxpbmsgdGl0bGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiByZXF1aXJlZD1cInRydWVcIiAoY2hhbmdlKT1cIl9maWVsZE9uQ2hhbmdlTGluaygkZXZlbnQpXCIgW3ZhbHVlXT1cImxpbmtfdGl0bGUkXCIgLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtbGluay1kYXRhXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInBzZGstZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VVJMPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgcmVxdWlyZWQ9XCJ0cnVlXCIgKGNoYW5nZSk9XCJfZmllbGRPbkNoYW5nZVVSTCgkZXZlbnQpXCIgW3ZhbHVlXT1cImxpbmtfdXJsJFwiIC8+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstYWRkXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJfYWRkTGluaygpXCI+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBZGQgTGluaycsICcnLCAnJykgfX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgICBuYW1lPVwiU3VtbWFyeUxpc3RcIlxuICAgICAgICAgIFtwcm9wc109XCJ7IGFySXRlbXMkOiBhckxpbmtzTGlzdCQsIG1lbnVJY29uT3ZlcnJpZGUkOiAndHJhc2gnLCBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlTGlua3NGcm9tTGlzdCQgfVwiXG4gICAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiQWN0aW9uQnV0dG9uc1wiXG4gICAgICBbcHJvcHNdPVwieyBhck1haW5CdXR0b25zJDogYXJMaW5rTWFpbkJ1dHRvbnMkLCBhclNlY29uZGFyeUJ1dHRvbnMkOiBhckxpbmtTZWNvbmRhcnlCdXR0b25zJCB9XCJcbiAgICAgIFtwYXJlbnRdPVwidGhpc1wiXG4gICAgICBbb3V0cHV0RXZlbnRzXT1cInsgYWN0aW9uQnV0dG9uQ2xpY2s6IG9uTGlua0FjdGlvbkJ1dHRvbkNsaWNrIH1cIlxuICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJiU2hvd1ZpZXdBbGxNb2RhbCRcIiBjbGFzcz1cInBzZGstZGlhbG9nLWJhY2tncm91bmRcIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtZmlsZS10b3BcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay12aWV3LWFsbC1oZWFkZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoMz57eyBwQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0F0dGFjaG1lbnRzJywgJycsICcnKSB9fTwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJfY2xvc2VWaWV3QWxsKClcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay11dGlsaXR5LWNhcmQtYWN0aW9ucy1zdmctaWNvblwiIHNyYz1cInt7IGNsb3NlU3ZnSWNvbiQgfX1cIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXZpZXctYWxsLWJvZHlcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJTdW1tYXJ5TGlzdFwiIFtwcm9wc109XCJ7IGFySXRlbXMkOiB2YV9hckl0ZW1zJCwgbWVudUljb25PdmVycmlkZUFjdGlvbiQ6IHJlbW92ZUxpbmtzRnJvbUxpc3QkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
638
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy93aWRnZXQvZmlsZS11dGlsaXR5L2ZpbGUtdXRpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2ZpbGUtdXRpbGl0eS9maWxlLXV0aWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUdsQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7QUFjeEcsTUFBTSxPQUFPLG9CQUFvQjtJQThDL0IsWUFDVSxlQUF1QyxFQUN2QyxLQUFZLEVBQ1osTUFBYztRQUZkLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTlDeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFFOUMsMEJBQXFCLEdBQVUsRUFBRSxDQUFDO1FBRWxDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFD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LENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0QsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQUc7UUFDbkIsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakYsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0FydUJVLG9CQUFvQjttR0FBcEIsb0JBQW9CLDBHQ3RCakMsMjBIQW9HQSw0ekNEaEZZLFlBQVksNEtBQUUsZUFBZSx1WUFBRSxrQkFBa0IseVdBQUUsY0FBYyxxWkFBbUIsd0JBQXdCOzs0RkFFM0csb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixjQUdoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztvSUFHL0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBOZ1pvbmUsIGZvcndhcmRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IGRvd25sb2FkIGZyb20gJ2Rvd25sb2FkanMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBGaWxlVXRpbGl0eVByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBsYWJlbD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbGUtdXRpbGl0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXV0aWxpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXV0aWxpdHkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVdGlsaXR5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcblxuICAvLyBGb3IgaW50ZXJhY3Rpb24gd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuXG4gIGFyRnVsbExpc3RBdHRhY2htZW50czogYW55W10gPSBbXTtcblxuICBsdV9uYW1lJCA9ICcnO1xuICBsdV9pY29uJCA9ICcnO1xuICBsdV9iTG9hZGluZyQgPSBmYWxzZTtcbiAgbHVfY291bnQkID0gMDtcbiAgbHVfYXJBY3Rpb25zJDogYW55W10gPSBbXTtcbiAgbHVfYXJJdGVtcyQ6IGFueSA9IFtdO1xuXG4gIHZhX2FySXRlbXMkOiBhbnlbXSA9IFtdO1xuXG4gIGx1X29uVmlld0FsbEZ1bmN0aW9uOiBhbnk7XG5cbiAgYlNob3dGaWxlTW9kYWwkID0gZmFsc2U7XG4gIGJTaG93TGlua01vZGFsJCA9IGZhbHNlO1xuICBiU2hvd1ZpZXdBbGxNb2RhbCQgPSBmYWxzZTtcblxuICBhckZpbGVNYWluQnV0dG9ucyQ6IGFueVtdID0gW107XG4gIGFyRmlsZVNlY29uZGFyeUJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuXG4gIGFyTGlua01haW5CdXR0b25zJDogYW55W10gPSBbXTtcbiAgYXJMaW5rU2Vjb25kYXJ5QnV0dG9ucyQ6IGFueVtdID0gW107XG5cbiAgYXJGaWxlcyQ6IGFueVtdID0gW107XG4gIGFyRmlsZUxpc3QkOiBhbnlbXSA9IFtdO1xuICByZW1vdmVGaWxlRnJvbUxpc3QkOiBhbnk7XG5cbiAgYXJMaW5rcyQ6IGFueVtdID0gW107XG4gIGFyTGlua3NMaXN0JDogYW55W10gPSBbXTtcbiAgcmVtb3ZlTGlua3NGcm9tTGlzdCQ6IGFueTtcblxuICBsaW5rX3RpdGxlJCA9ICcnO1xuICBsaW5rX3VybCQgPSAnJztcblxuICBjbG9zZVN2Z0ljb24kID0gJyc7XG5cbiAgY3VycmVudENhc2VJRCA9ICcnO1xuXG4gIGFkZEF0dGFjaG1lbnRzQWN0aW9uczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgY29uc3QgY29uZmlnUHJvcHM6IEZpbGVVdGlsaXR5UHJvcHMgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSk7XG5cbiAgICB0aGlzLmx1X25hbWUkID0gY29uZmlnUHJvcHMubGFiZWwgPz8gJyc7XG4gICAgdGhpcy5sdV9pY29uJCA9ICdwYXBlci1jbGlwJztcblxuICAgIHRoaXMuY2xvc2VTdmdJY29uJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3RpbWVzJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgIHRoaXMuYWRkQXR0YWNobWVudHNBY3Rpb25zID0gW1xuICAgICAge1xuICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQWRkIGZpbGVzJywgJycsICcnKSxcbiAgICAgICAgaWQ6ICdhZGROZXdGaWxlcycsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHRoaXMuY3JlYXRlTW9kYWwoJ2FkZExvY2FsRmlsZScpXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQWRkIGxpbmtzJywgJycsICcnKSxcbiAgICAgICAgaWQ6ICdhZGROZXdMaW5rcycsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHRoaXMuY3JlYXRlTW9kYWwoJ2FkZExvY2FsTGluaycpXG4gICAgICB9XG4gICAgXTtcbiAgICAvLyBjb25zdCBvblZpZXdBbGxDYWxsYmFjayA9ICgpID0+IHRoaXMub25WaWV3QWxsKHRoaXMuYXJGdWxsTGlzdEF0dGFjaG1lbnRzKTtcblxuICAgIHRoaXMubHVfb25WaWV3QWxsRnVuY3Rpb24gPSB7IG9uQ2xpY2s6IHRoaXMub25WaWV3QWxsLmJpbmQodGhpcykgfTtcblxuICAgIHRoaXMucmVtb3ZlRmlsZUZyb21MaXN0JCA9IHsgb25DbGljazogdGhpcy5yZW1vdmVGaWxlRnJvbUxpc3QuYmluZCh0aGlzKSB9O1xuICAgIHRoaXMucmVtb3ZlTGlua3NGcm9tTGlzdCQgPSB7IG9uQ2xpY2s6IHRoaXMucmVtb3ZlTGlua3NGcm9tTGlzdC5iaW5kKHRoaXMpIH07XG5cbiAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcblxuICAgIHRoaXMuY3JlYXRlTW9kYWxCdXR0b25zKCk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnN1YnNjcmliZShcbiAgICAgIFBDb3JlLmdldEV2ZW50cygpLmdldENhc2VFdmVudCgpLkNBU0VfQVRUQUNITUVOVFNfVVBEQVRFRF9GUk9NX0NBU0VWSUVXLFxuICAgICAgdGhpcy51cGRhdGVTZWxmLmJpbmQodGhpcyksXG4gICAgICAnY2FzZUF0dGFjaG1lbnRzVXBkYXRlRnJvbUNhc2V2aWV3J1xuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShQQ29yZS5nZXRFdmVudHMoKS5nZXRDYXNlRXZlbnQoKS5DQVNFX0FUVEFDSE1FTlRTX1VQREFURURfRlJPTV9DQVNFVklFVywgJ2Nhc2VBdHRhY2htZW50c1VwZGF0ZUZyb21DYXNldmlldycpO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgLy8gYWRkaW5nIGEgcHJvcGVydHkgdG8gdHJhY2sgaW4gY29uZmlnUHJvcHMsIHdoZW4gZXZlciB0aGUgYXR0YWNobWVudCBmaWxlIGNoYW5nZXNcbiAgICAvLyBuZWVkIHRvIHRyaWdnZXIgYSByZWRyYXdcbiAgICB0aGlzLnBDb25uJC5yZWdpc3RlckFkZGl0aW9uYWxQcm9wcyh7XG4gICAgICBsYXN0UmVmcmVzaFRpbWU6IGBAUCAke1BDb3JlLmdldENvbnN0YW50cygpLlNVTU1BUllfT0ZfQVRUQUNITUVOVFNfTEFTVF9SRUZSRVNIX1RJTUV9YFxuICAgIH0pO1xuXG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZiB8fCB0aGlzLmNhc2VIYXNDaGFuZ2VkKCkpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoRmlsZXMoZmlsZXMpIHtcbiAgICBjb25zdCBhdHRhY2htZW50VXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICBjb25zdCBjYXNlSUQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZShQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uQ0FTRV9JTkZPX0lEKTtcblxuICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmx1X2JMb2FkaW5nJCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgYXJGaWxlczogYW55ID0gQXJyYXkuZnJvbShmaWxlcyk7XG5cbiAgICBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICBhckZpbGVzLm1hcChmaWxlID0+IGF0dGFjaG1lbnRVdGlscy51cGxvYWRBdHRhY2htZW50KGZpbGUsIHRoaXMub25VcGxvYWRQcm9ncmVzcywgdGhpcy5lcnJvckhhbmRsZXIsIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpKVxuICAgIClcbiAgICAgIC50aGVuKChmaWxlUmVzcG9uc2VzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdXBsb2FkZWRGaWxlczogYW55ID0gW107XG4gICAgICAgIGZpbGVSZXNwb25zZXMuZm9yRWFjaChmaWxlUmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGlmIChmaWxlUmVzcG9uc2Uuc3RhdHVzID09PSAnZnVsZmlsbGVkJykge1xuICAgICAgICAgICAgdXBsb2FkZWRGaWxlcy5wdXNoKGZpbGVSZXNwb25zZS52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHVwbG9hZGVkRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIChhdHRhY2htZW50VXRpbHMubGlua0F0dGFjaG1lbnRzVG9DYXNlKGNhc2VJRCwgdXBsb2FkZWRGaWxlcywgJ0ZpbGUnLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKSBhcyBQcm9taXNlPGFueT4pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucmVmcmVzaEF0dGFjaG1lbnRzKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKTtcblxuICAgIHRoaXMuYXJGaWxlTGlzdCQgPSBbXTtcbiAgICB0aGlzLmx1X2JMb2FkaW5nJCA9IGZhbHNlO1xuICB9XG5cbiAgcmVmcmVzaEF0dGFjaG1lbnRzKCkge1xuICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICB9XG5cbiAgb25VcGxvYWRQcm9ncmVzcygpIHt9XG5cbiAgZXJyb3JIYW5kbGVyKCkge31cblxuICBvbkF0dGFjaExpbmtzKGxpbmtzKSB7XG4gICAgY29uc3QgYXR0YWNobWVudFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgY29uc3QgY2FzZUlEID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19JRCk7XG5cbiAgICBpZiAobGlua3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sdV9iTG9hZGluZyQgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmtzVG9BdHRhY2ggPSBsaW5rcy5tYXAobGluayA9PiAoe1xuICAgICAgdHlwZTogJ1VSTCcsXG4gICAgICBjYXRlZ29yeTogJ1VSTCcsXG4gICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgbmFtZTogbGluay5saW5rVGl0bGVcbiAgICB9KSk7XG5cbiAgICAoYXR0YWNobWVudFV0aWxzLmxpbmtBdHRhY2htZW50c1RvQ2FzZShjYXNlSUQsIGxpbmtzVG9BdHRhY2gsICdVUkwnLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKSBhcyBQcm9taXNlPGFueT4pXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMucmVmcmVzaEF0dGFjaG1lbnRzKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfVxuXG4gIGFkZEF0dGFjaG1lbnRzKGF0dHNGcm9tUmVzcDogYW55W10gPSBbXSkge1xuICAgIHRoaXMubHVfYkxvYWRpbmckID0gZmFsc2U7XG5cbiAgICBhdHRzRnJvbVJlc3AgPSBhdHRzRnJvbVJlc3AubWFwKHJlc3BBdHQgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZEF0dCA9IHtcbiAgICAgICAgLi4ucmVzcEF0dCxcbiAgICAgICAgbWV0YTogYCR7cmVzcEF0dC5jYXRlZ29yeX0gLiAke3RoaXMudXRpbHMuZ2VuZXJhdGVEYXRlVGltZShyZXNwQXR0LmNyZWF0ZVRpbWUsICdEYXRlVGltZS1TaW5jZScpfSwgJHtyZXNwQXR0LmNyZWF0ZWRCeX1gXG4gICAgICB9O1xuICAgICAgaWYgKHVwZGF0ZWRBdHQudHlwZSA9PT0gJ0ZJTEUnKSB7XG4gICAgICAgIHVwZGF0ZWRBdHQubmFtZVdpdGhFeHQgPSB1cGRhdGVkQXR0LmZpbGVOYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVwZGF0ZWRBdHQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXR0c0Zyb21SZXNwO1xuICB9XG5cbiAgb25WaWV3QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuYlNob3dWaWV3QWxsTW9kYWwkID0gdHJ1ZTtcblxuICAgIC8vIGFkZCBjbGlja0F3YXkgbGlzdGVuZXJcbiAgICAvLyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2NsaWNrQXdheS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8vIEJlbG93IG1ldGhvZCBpcyBub3QgbmVlZGVkLCBzdGlsbCBoYXZpbmcgaXQgY29tbWVudGVkIGluIGNhc2Ugd2Ugd2FudCBpbiBmdXR1cmVcbiAgLy8gX2NsaWNrQXdheShldmVudDogYW55KSB7XG4gIC8vICAgbGV0IGJJblBvcFVwID0gZmFsc2U7XG5cbiAgLy8gICAvLyBydW4gdGhyb3VnaCBsaXN0IG9mIGVsZW1lbnRzIGluIHBhdGgsIGlmIG1lbnUgbm90IGluIHRoIHBhdGgsIHRoZW4gd2FudCB0b1xuICAvLyAgIC8vIGhpZGUgKHRvZ2dsZSkgdGhlIG1lbnVcbiAgLy8gICBmb3IgKGNvbnN0IGkgaW4gZXZlbnQucGF0aCkge1xuICAvLyAgICAgaWYgKGV2ZW50LnBhdGhbaV0uY2xhc3NOYW1lID09ICdwc2RrLW1vZGFsLWZpbGUtdG9wJyB8fCBldmVudC5wYXRoW2ldLnRhZ05hbWUgPT0gJ0JVVFRPTicpIHtcbiAgLy8gICAgICAgYkluUG9wVXAgPSB0cnVlO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vICAgaWYgKCFiSW5Qb3BVcCkge1xuICAvLyAgICAgdGhpcy5iU2hvd1ZpZXdBbGxNb2RhbCQgPSBmYWxzZTtcblxuICAvLyAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9jbGlja0F3YXkuYmluZCh0aGlzKSk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgX2Nsb3NlVmlld0FsbCgpIHtcbiAgICB0aGlzLmJTaG93Vmlld0FsbE1vZGFsJCA9IGZhbHNlO1xuXG4gICAgLy8gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9jbGlja0F3YXkuYmluZCh0aGlzKSk7XG4gIH1cblxuICByZW1vdmVGaWxlRnJvbUxpc3QoaXRlbTogYW55KSB7XG4gICAgaWYgKGl0ZW0gIT0gbnVsbCkge1xuICAgICAgY29uc3QgYXJGaWxlTGlzdCA9IHRoaXMuYXJGaWxlTGlzdCQ7XG4gICAgICBjb25zdCBpdGVtSWQgPSBpdGVtLmlkO1xuXG4gICAgICBmb3IgKGxldCBmaWxlSW5kZXggPSAwOyBmaWxlSW5kZXggPCBhckZpbGVMaXN0Lmxlbmd0aDsgZmlsZUluZGV4KyspIHtcbiAgICAgICAgaWYgKGFyRmlsZUxpc3RbZmlsZUluZGV4XS5pZCA9PSBpdGVtSWQpIHtcbiAgICAgICAgICAvLyByZW1vdmUgdGhlIGZpbGUgZnJvbSB0aGUgbGlzdCBhbmQgcmVkcmF3XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGFyRmlsZUxpc3Quc3BsaWNlKGZpbGVJbmRleCwgMSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVMaW5rc0Zyb21MaXN0KGl0ZW06IGFueSkge1xuICAgIGNvbnN0IGxvY2FsTGlua3NMaXN0ID0gdGhpcy5hckxpbmtzTGlzdCQuc2xpY2UoKTtcblxuICAgIGlmIChpdGVtICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGl0ZW1JZCA9IGl0ZW0uaWQ7XG5cbiAgICAgIGZvciAobGV0IGxpbmtJbmRleCA9IDA7IGxpbmtJbmRleCA8IGxvY2FsTGlua3NMaXN0Lmxlbmd0aDsgbGlua0luZGV4KyspIHtcbiAgICAgICAgaWYgKGxvY2FsTGlua3NMaXN0W2xpbmtJbmRleF0uaWQgPT0gaXRlbUlkKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRoZSBmaWxlIGZyb20gdGhlIGxpc3QgYW5kIHJlZHJhd1xuICAgICAgICAgIGxvY2FsTGlua3NMaXN0LnNwbGljZShsaW5rSW5kZXgsIDEpO1xuXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXJMaW5rc0xpc3QkID0gbG9jYWxMaW5rc0xpc3Quc2xpY2UoKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0TmV3TGlzdFV0aWxpdHlJdGVtUHJvcHMgPSAoeyBhdHQsIGNhbmNlbEZpbGUsIGRvd25sb2FkRmlsZSwgZGVsZXRlRmlsZSwgcmVtb3ZlRmlsZSB9KSA9PiB7XG4gICAgbGV0IGFjdGlvbnM7XG4gICAgbGV0IGlzRG93bmxvYWRhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoYXR0LnByb2dyZXNzICYmIGF0dC5wcm9ncmVzcyAhPT0gMTAwKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBDYW5jZWwtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICBpY29uOiAndGltZXMnLFxuICAgICAgICAgIG9uQ2xpY2s6IGNhbmNlbEZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGF0dC5saW5rcykge1xuICAgICAgY29uc3QgaXNGaWxlID0gYXR0LnR5cGUgPT09ICdGSUxFJztcbiAgICAgIGNvbnN0IElEID0gYXR0LklELnJlcGxhY2UoL1xccy9naSwgJycpO1xuICAgICAgY29uc3QgYWN0aW9uc01hcCA9IG5ldyBNYXAoW1xuICAgICAgICBbXG4gICAgICAgICAgJ2Rvd25sb2FkJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYGRvd25sb2FkLSR7SUR9YCxcbiAgICAgICAgICAgIHRleHQ6IGlzRmlsZSA/ICdEb3dubG9hZCcgOiAnT3BlbicsXG4gICAgICAgICAgICBpY29uOiBpc0ZpbGUgPyAnZG93bmxvYWQnIDogJ29wZW4nLFxuICAgICAgICAgICAgb25DbGljazogZG93bmxvYWRGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgJ2RlbGV0ZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBEZWxldGUtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgb25DbGljazogZGVsZXRlRmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgXSk7XG4gICAgICBhY3Rpb25zID0gW107XG4gICAgICBhY3Rpb25zTWFwLmZvckVhY2goKGFjdGlvbiwgYWN0aW9uS2V5KSA9PiB7XG4gICAgICAgIGlmIChhdHQubGlua3NbYWN0aW9uS2V5XSkge1xuICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGlzRG93bmxvYWRhYmxlID0gYXR0LmxpbmtzLmRvd25sb2FkO1xuICAgIH0gZWxzZSBpZiAoYXR0LmVycm9yKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBSZW1vdmUtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiAnUmVtb3ZlJyxcbiAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgIG9uQ2xpY2s6IHJlbW92ZUZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGF0dC5JRCxcbiAgICAgIHZpc3VhbDoge1xuICAgICAgICBpY29uOiB0aGlzLnV0aWxzLmdldEljb25Gb3JBdHRhY2htZW50KGF0dCksXG4gICAgICAgIHByb2dyZXNzOiBhdHQucHJvZ3Jlc3MgPT0gMTAwID8gdW5kZWZpbmVkIDogYXR0LnByb2dyZXNzXG4gICAgICB9LFxuICAgICAgcHJpbWFyeToge1xuICAgICAgICB0eXBlOiBhdHQudHlwZSxcbiAgICAgICAgbmFtZTogYXR0Lm5hbWUsXG4gICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgIGNsaWNrOiByZW1vdmVGaWxlXG4gICAgICB9LFxuICAgICAgc2Vjb25kYXJ5OiB7XG4gICAgICAgIHRleHQ6IGF0dC5tZXRhXG4gICAgICB9LFxuICAgICAgYWN0aW9uc1xuICAgIH07XG4gIH07XG5cbiAgZ2V0TGlzdFV0aWxpdHlJdGVtUHJvcHMgPSAoeyBhdHQsIGNhbmNlbEZpbGUsIGRvd25sb2FkRmlsZSwgZGVsZXRlRmlsZSwgcmVtb3ZlRmlsZSB9KSA9PiB7XG4gICAgbGV0IGFjdGlvbnM7XG4gICAgbGV0IGlzRG93bmxvYWRhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoYXR0LnByb2dyZXNzICYmIGF0dC5wcm9ncmVzcyAhPT0gMTAwKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBDYW5jZWwtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQ2FuY2VsJywgJycsICcnKSxcbiAgICAgICAgICBpY29uOiAndGltZXMnLFxuICAgICAgICAgIG9uQ2xpY2s6IGNhbmNlbEZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGF0dC5saW5rcykge1xuICAgICAgY29uc3QgaXNGaWxlID0gYXR0LnR5cGUgPT09ICdGSUxFJztcbiAgICAgIGNvbnN0IElEID0gYXR0LklELnJlcGxhY2UoL1xccy9naSwgJycpO1xuICAgICAgY29uc3QgYWN0aW9uc01hcCA9IG5ldyBNYXAoW1xuICAgICAgICBbXG4gICAgICAgICAgJ2Rvd25sb2FkJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYGRvd25sb2FkLSR7SUR9YCxcbiAgICAgICAgICAgIHRleHQ6IGlzRmlsZSA/IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdEb3dubG9hZCcsICcnLCAnJykgOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnT3BlbicsICcnLCAnJyksXG4gICAgICAgICAgICBpY29uOiBpc0ZpbGUgPyAnZG93bmxvYWQnIDogJ29wZW4nLFxuICAgICAgICAgICAgb25DbGljazogZG93bmxvYWRGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgJ2RlbGV0ZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBEZWxldGUtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0RlbGV0ZScsICcnLCAnJyksXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgb25DbGljazogZGVsZXRlRmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgXSk7XG4gICAgICBhY3Rpb25zID0gW107XG4gICAgICBhY3Rpb25zTWFwLmZvckVhY2goKGFjdGlvbiwgYWN0aW9uS2V5KSA9PiB7XG4gICAgICAgIGlmIChhdHQubGlua3NbYWN0aW9uS2V5XSkge1xuICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGlzRG93bmxvYWRhYmxlID0gYXR0LmxpbmtzLmRvd25sb2FkO1xuICAgIH0gZWxzZSBpZiAoYXR0LmVycm9yKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBSZW1vdmUtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnUmVtb3ZlJywgJycsICcnKSxcbiAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgIG9uQ2xpY2s6IHJlbW92ZUZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGF0dC5JRCxcbiAgICAgIHZpc3VhbDoge1xuICAgICAgICBpY29uOiB0aGlzLnV0aWxzLmdldEljb25Gb3JBdHRhY2htZW50KGF0dCksXG4gICAgICAgIHByb2dyZXNzOiBhdHQucHJvZ3Jlc3MgPT0gMTAwID8gdW5kZWZpbmVkIDogYXR0LnByb2dyZXNzXG4gICAgICB9LFxuICAgICAgcHJpbWFyeToge1xuICAgICAgICB0eXBlOiBhdHQudHlwZSxcbiAgICAgICAgbmFtZTogYXR0Lm5hbWUsXG4gICAgICAgIGljb246ICdvcGVuJyxcbiAgICAgICAgY2xpY2s6IGRvd25sb2FkRmlsZVxuICAgICAgfSxcbiAgICAgIHNlY29uZGFyeToge1xuICAgICAgICB0ZXh0OiBhdHQubWV0YVxuICAgICAgfSxcbiAgICAgIGFjdGlvbnNcbiAgICB9O1xuICB9O1xuXG4gIF9hZGRMaW5rKCkge1xuICAgIC8vIGNvcHkgbGlzdCBsb2NhbGx5XG4gICAgY29uc3QgbG9jYWxMaXN0ID0gdGhpcy5hckxpbmtzTGlzdCQuc2xpY2UoKTtcblxuICAgIGNvbnN0IHVybCA9IHRoaXMubGlua191cmwkO1xuXG4gICAgaWYgKCEvXihodHRwfGh0dHBzKTpcXC9cXC8vLnRlc3QodGhpcy5saW5rX3VybCQpKSB7XG4gICAgICB0aGlzLmxpbmtfdXJsJCA9IGBodHRwOi8vJHt0aGlzLmxpbmtfdXJsJH1gO1xuICAgIH1cblxuICAgIC8vIGxpc3QgZm9yIGRpc3BsYXlcbiAgICBsZXQgb0xpbms6IGFueSA9IHt9O1xuICAgIG9MaW5rLmljb24gPSAnY2hhaW4nO1xuXG4gICAgb0xpbmsuSUQgPSBgJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gO1xuXG4gICAgb0xpbmsgPSB0aGlzLmdldE5ld0xpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgIGF0dDogb0xpbmssXG4gICAgICBkb3dubG9hZEZpbGU6IG51bGwsXG4gICAgICBjYW5jZWxGaWxlOiBudWxsLFxuICAgICAgZGVsZXRlRmlsZTogbnVsbCxcbiAgICAgIHJlbW92ZUZpbGU6IG51bGxcbiAgICB9KTtcblxuICAgIG9MaW5rLnR5cGUgPSAnVVJMJztcbiAgICBvTGluay5wcmltYXJ5LnR5cGUgPSBvTGluay50eXBlO1xuICAgIG9MaW5rLnZpc3VhbC5pY29uID0gJ2NoYWluJztcbiAgICBvTGluay5wcmltYXJ5Lm5hbWUgPSB0aGlzLmxpbmtfdGl0bGUkO1xuICAgIG9MaW5rLnByaW1hcnkuaWNvbiA9ICdvcGVuJztcbiAgICBvTGluay5zZWNvbmRhcnkudGV4dCA9IHVybDtcblxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAvLyBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBhcnJheSBvciBzdW1tYXJ5IGxpc3Qgd29uJ3QgZGV0ZWN0IGNoYW5nZXNcbiAgICAgIHRoaXMuYXJMaW5rc0xpc3QkID0gbG9jYWxMaXN0LnNsaWNlKCk7XG4gICAgICB0aGlzLmFyTGlua3NMaXN0JC5wdXNoKG9MaW5rKTtcblxuICAgICAgLy8gbGlzdCBmb3IgYWN0dWFsbHkgYXR0YWNobWVudHNcbiAgICAgIGNvbnN0IGxpbms6IGFueSA9IHt9O1xuICAgICAgbGluay5pZCA9IG9MaW5rLmlkO1xuICAgICAgbGluay5saW5rVGl0bGUgPSB0aGlzLmxpbmtfdGl0bGUkO1xuICAgICAgbGluay50eXBlID0gb0xpbmsudHlwZTtcbiAgICAgIGxpbmsudXJsID0gdXJsO1xuXG4gICAgICB0aGlzLmFyTGlua3MkLnB1c2gobGluayk7XG5cbiAgICAgIC8vIGNsZWFyIHZhbHVlc1xuICAgICAgdGhpcy5saW5rX3RpdGxlJCA9ICcnO1xuICAgICAgdGhpcy5saW5rX3VybCQgPSAnJztcbiAgICB9KTtcbiAgfVxuXG4gIF9jaGFuZ2VUaXRsZShldmVudDogYW55KSB7XG4gICAgdGhpcy5saW5rX3RpdGxlJCA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XG4gIH1cblxuICBfY2hhbmdlVXJsKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmxpbmtfdXJsJCA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XG4gIH1cblxuICBkb3dubG9hZEZpbGUoYXR0OiBhbnkpIHtcbiAgICBjb25zdCBhdHRhY2hVdGlscyA9IFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpO1xuICAgIGNvbnN0IHsgSUQsIG5hbWUsIGV4dGVuc2lvbiwgdHlwZSB9ID0gYXR0O1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuXG4gICAgYXR0YWNoVXRpbHNcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSAzcmQgcGFyYW1ldGVyIFwicmVzcG9uc2VFbmNvZGluZ1wiIGlzIG9wdGlvbmFsXG4gICAgICAuZG93bmxvYWRBdHRhY2htZW50KElELCBjb250ZXh0KVxuICAgICAgLnRoZW4oKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAodHlwZSA9PT0gJ0ZJTEUnKSB7XG4gICAgICAgICAgdGhpcy5maWxlRG93bmxvYWQoY29udGVudC5kYXRhLCBuYW1lLCBleHRlbnNpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdVUkwnKSB7XG4gICAgICAgICAgbGV0IHsgZGF0YSB9ID0gY29udGVudDtcbiAgICAgICAgICBpZiAoIS9eKGh0dHB8aHR0cHMpOlxcL1xcLy8udGVzdChkYXRhKSkge1xuICAgICAgICAgICAgZGF0YSA9IGAvLyR7ZGF0YX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3aW5kb3cub3Blbihjb250ZW50LmRhdGEsICdfYmxhbmsnKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgfVxuXG4gIGZpbGVEb3dubG9hZCA9IChkYXRhLCBmaWxlTmFtZSwgZXh0KSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IGV4dCA/IGAke2ZpbGVOYW1lfS4ke2V4dH1gIDogZmlsZU5hbWU7XG4gICAgZG93bmxvYWQoYXRvYihkYXRhKSwgZmlsZSk7XG4gIH07XG5cbiAgY2FuY2VsRmlsZSgpIHtcbiAgICBhbGVydCgnY2FuY2VsJyk7XG4gIH1cblxuICBkZWxldGVGaWxlKGF0dDogYW55KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBhdHRhY2hVdGlscyA9IFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpO1xuICAgICAgY29uc3QgeyBJRCB9ID0gYXR0O1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG5cbiAgICAgIGF0dGFjaFV0aWxzXG4gICAgICAgIC5kZWxldGVBdHRhY2htZW50KElELCBjb250ZXh0KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgICAgICAgLy8gbGV0IG5ld0F0dGFjaG1lbnRzO1xuICAgICAgICAgIC8vIHNldEF0dGFjaG1lbnRzKChjdXJyZW50KSA9PiB7XG4gICAgICAgICAgLy8gICBuZXdBdHRhY2htZW50cyA9IGN1cnJlbnQuZmlsdGVyKChmaWxlKSA9PiBmaWxlLklEICE9PSBJRCk7XG4gICAgICAgICAgLy8gICByZXR1cm4gbmV3QXR0YWNobWVudHM7XG4gICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgLy8gaWYgKGNhbGxiYWNrRm4pIHtcbiAgICAgICAgICAvLyAgIGNhbGxiYWNrRm4obmV3QXR0YWNobWVudHMpO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlRmlsZSgpIHtcbiAgICBhbGVydCgncmVtb3ZlJyk7XG4gIH1cblxuICByZW1vdmVOZXdGaWxlKCkge1xuICAgIGFsZXJ0KCdyZW1vdmUnKTtcbiAgfVxuXG4gIGNyZWF0ZU1vZGFsKG1vZGFsVHlwZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChtb2RhbFR5cGUpIHtcbiAgICAgIGNhc2UgJ2FkZExvY2FsRmlsZSc6XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5iU2hvd0ZpbGVNb2RhbCQgPSB0cnVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FkZExvY2FsTGluayc6XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5iU2hvd0xpbmtNb2RhbCQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjcmVhdGVNb2RhbEJ1dHRvbnMoKSB7XG4gICAgdGhpcy5hckZpbGVNYWluQnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnYXR0YWNoJywganNBY3Rpb246ICdhdHRhY2hGaWxlcycsIG5hbWU6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBdHRhY2ggZmlsZXMnLCAnJywgJycpIH0pO1xuICAgIHRoaXMuYXJGaWxlU2Vjb25kYXJ5QnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnY2FuY2VsJywganNBY3Rpb246ICdjYW5jZWwnLCBuYW1lOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQ2FuY2VsJywgJycsICcnKSB9KTtcblxuICAgIHRoaXMuYXJMaW5rTWFpbkJ1dHRvbnMkLnB1c2goeyBhY3Rpb25JRDogJ2F0dGFjaCcsIGpzQWN0aW9uOiAnYXR0YWNoTGlua3MnLCBuYW1lOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQXR0YWNoIGxpbmtzJywgJycsICcnKSB9KTtcbiAgICB0aGlzLmFyTGlua1NlY29uZGFyeUJ1dHRvbnMkLnB1c2goeyBhY3Rpb25JRDogJ2NhbmNlbCcsIGpzQWN0aW9uOiAnY2FuY2VsJywgbmFtZTogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0NhbmNlbCcsICcnLCAnJykgfSk7XG4gIH1cblxuICB1cGxvYWRNeUZpbGVzKCRldmVudCkge1xuICAgIC8vIGFsZXJ0KCRldmVudC50YXJnZXQuZmlsZXNbMF0pOyAvLyBvdXRwdXRzIHRoZSBmaXJzdCBmaWxlXG4gICAgdGhpcy5hckZpbGVzJCA9IHRoaXMuZ2V0RmlsZXMoJGV2ZW50LnRhcmdldC5maWxlcyk7XG5cbiAgICAvLyBjb252ZXJ0IEZpbGVMaXN0IHRvIGFuIGFycmF5XG4gICAgY29uc3QgbXlGaWxlcyA9IEFycmF5LmZyb20odGhpcy5hckZpbGVzJCk7XG5cbiAgICB0aGlzLmFyRmlsZUxpc3QkID0gbXlGaWxlcy5tYXAoYXR0ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmdldE5ld0xpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgICAgYXR0LFxuICAgICAgICBkb3dubG9hZEZpbGU6ICFhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmRvd25sb2FkRmlsZShhdHQpIDogbnVsbCxcbiAgICAgICAgY2FuY2VsRmlsZTogYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5jYW5jZWxGaWxlKCkgOiBudWxsLFxuICAgICAgICBkZWxldGVGaWxlOiAhYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5kZWxldGVGaWxlKGF0dCkgOiBudWxsLFxuICAgICAgICByZW1vdmVGaWxlOiBhdHQuZXJyb3IgPyAoKSA9PiB0aGlzLnJlbW92ZU5ld0ZpbGUoKSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RmlsZXMoYXJGaWxlczogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0TmV3RmlsZXMoYXJGaWxlcyk7XG4gIH1cblxuICBzZXROZXdGaWxlcyhhckZpbGVzKSB7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYXJGaWxlcykge1xuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlTWF4U2l6ZShmaWxlLCA1KSkge1xuICAgICAgICBmaWxlLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgZmlsZS5tZXRhID0gJ0ZpbGUgaXMgdG9vIGJpZy4gTWF4IGFsbG93ZWQgc2l6ZSBpcyA1TUIuJztcbiAgICAgIH1cbiAgICAgIGZpbGUubWltZVR5cGUgPSBmaWxlLnR5cGU7XG4gICAgICBmaWxlLmljb24gPSB0aGlzLnV0aWxzLmdldEljb25Gcm9tRmlsZVR5cGUoZmlsZS50eXBlKTtcbiAgICAgIGZpbGUuSUQgPSBgJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1JJHtpbmRleH1gO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICByZXR1cm4gYXJGaWxlcztcbiAgfVxuXG4gIHZhbGlkYXRlTWF4U2l6ZShmaWxlT2JqLCBtYXhTaXplSW5NQik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpbGVTaXplID0gKGZpbGVPYmouc2l6ZSAvIDEwNDg1NzYpLnRvRml4ZWQoMik7XG4gICAgcmV0dXJuIGZpbGVTaXplIDwgbWF4U2l6ZUluTUI7XG4gIH1cblxuICBvbkZpbGVBY3Rpb25CdXR0b25DbGljayhldmVudDogYW55KSB7XG4gICAgLy8gbW9kYWwgYnV0dG9uc1xuICAgIHN3aXRjaCAoZXZlbnQuYWN0aW9uKSB7XG4gICAgICBjYXNlICdjYW5jZWwnOlxuICAgICAgICB0aGlzLmJTaG93RmlsZU1vZGFsJCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYXJPdXRGaWxlcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2F0dGFjaEZpbGVzJzpcbiAgICAgICAgdGhpcy5iU2hvd0ZpbGVNb2RhbCQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkF0dGFjaEZpbGVzKHRoaXMuYXJGaWxlcyQpO1xuXG4gICAgICAgIHRoaXMuY2xlYXJPdXRGaWxlcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uTGlua0FjdGlvbkJ1dHRvbkNsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBtb2RhbCBidXR0b25zXG4gICAgc3dpdGNoIChldmVudC5hY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2NhbmNlbCc6XG4gICAgICAgIHRoaXMuYlNob3dMaW5rTW9kYWwkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhck91dExpbmtzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXR0YWNoTGlua3MnOlxuICAgICAgICB0aGlzLmJTaG93TGlua01vZGFsJCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uQXR0YWNoTGlua3ModGhpcy5hckxpbmtzJCk7XG5cbiAgICAgICAgdGhpcy5jbGVhck91dExpbmtzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJPdXRGaWxlcygpIHtcbiAgICB0aGlzLmFyRmlsZUxpc3QkID0gW107XG4gICAgdGhpcy5hckZpbGVzJCA9IFtdO1xuICB9XG5cbiAgY2xlYXJPdXRMaW5rcygpIHtcbiAgICB0aGlzLmFyTGlua3NMaXN0JCA9IFtdO1xuICAgIHRoaXMuYXJMaW5rcyQgPSBbXTtcbiAgICB0aGlzLmxpbmtfdGl0bGUkID0gJyc7XG4gICAgdGhpcy5saW5rX3VybCQgPSAnJztcbiAgfVxuXG4gIGFkZEFMaW5rKCkge31cblxuICBfZmllbGRPbkNoYW5nZUxpbmsoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubGlua190aXRsZSQgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cblxuICBfZmllbGRPbkNoYW5nZVVSTChldmVudDogYW55KSB7XG4gICAgdGhpcy5saW5rX3VybCQgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIGNvbnN0IGNhc2VJRCA9IHRoaXMuZ2V0Q2FzZUlEKCk7XG5cbiAgICBpZiAoY2FzZUlEKSB7XG4gICAgICB0aGlzLmx1X2JMb2FkaW5nJCA9IHRydWU7XG5cbiAgICAgIHRoaXMuZmV0Y2hDYXNlQXR0YWNobWVudHMoY2FzZUlEKVxuICAgICAgICAudGhlbihyZXNwID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUF0dGFjaG1lbnRzUmVzcG9uc2UocmVzcCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgIH0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmx1X2JMb2FkaW5nJCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXNlSUQoKSB7XG4gICAgcmV0dXJuIHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fSUQpIHx8ICcnO1xuICB9XG5cbiAgZmV0Y2hDYXNlQXR0YWNobWVudHMoY2FzZUlEKSB7XG4gICAgY29uc3QgYXR0YWNobWVudFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgcmV0dXJuIGF0dGFjaG1lbnRVdGlscy5nZXRDYXNlQXR0YWNobWVudHMoY2FzZUlELCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKTtcbiAgfVxuXG4gIGhhbmRsZUF0dGFjaG1lbnRzUmVzcG9uc2UocmVzcCkge1xuICAgIHRoaXMuYXJGdWxsTGlzdEF0dGFjaG1lbnRzID0gdGhpcy5hZGRBdHRhY2htZW50cyhyZXNwKTtcbiAgICB0aGlzLmx1X2NvdW50JCA9IHRoaXMuYXJGdWxsTGlzdEF0dGFjaG1lbnRzLmxlbmd0aDtcbiAgICB0aGlzLmx1X2FyQWN0aW9ucyQgPSB0aGlzLmFkZEF0dGFjaG1lbnRzQWN0aW9ucztcblxuICAgIHRoaXMubHVfYXJJdGVtcyQgPSB0aGlzLmdldFV0aWxpdHlJdGVtcyh0aGlzLmFyRnVsbExpc3RBdHRhY2htZW50cy5zbGljZSgwLCAzKSk7XG4gICAgdGhpcy52YV9hckl0ZW1zJCA9IHRoaXMuZ2V0VXRpbGl0eUl0ZW1zKHRoaXMuYXJGdWxsTGlzdEF0dGFjaG1lbnRzKTtcbiAgfVxuXG4gIGdldFV0aWxpdHlJdGVtcyhhdHRhY2htZW50cykge1xuICAgIHJldHVybiBhdHRhY2htZW50cy5tYXAodGhpcy5tYXBBdHRhY2htZW50VG9VdGlsaXR5SXRlbS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIG1hcEF0dGFjaG1lbnRUb1V0aWxpdHlJdGVtKGF0dCkge1xuICAgIHJldHVybiB0aGlzLmdldExpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgIGF0dCxcbiAgICAgIGRvd25sb2FkRmlsZTogdGhpcy5nZXREb3dubG9hZEZ1bmN0aW9uKGF0dCksXG4gICAgICBjYW5jZWxGaWxlOiB0aGlzLmdldENhbmNlbEZ1bmN0aW9uKGF0dCksXG4gICAgICBkZWxldGVGaWxlOiB0aGlzLmdldERlbGV0ZUZ1bmN0aW9uKGF0dCksXG4gICAgICByZW1vdmVGaWxlOiB0aGlzLmdldFJlbW92ZUZ1bmN0aW9uKGF0dClcbiAgICB9KTtcbiAgfVxuXG4gIGdldERvd25sb2FkRnVuY3Rpb24oYXR0KSB7XG4gICAgcmV0dXJuICFhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmRvd25sb2FkRmlsZShhdHQpIDogbnVsbDtcbiAgfVxuXG4gIGdldENhbmNlbEZ1bmN0aW9uKGF0dCkge1xuICAgIHJldHVybiBhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmNhbmNlbEZpbGUoKSA6IG51bGw7XG4gIH1cblxuICBnZXREZWxldGVGdW5jdGlvbihhdHQpIHtcbiAgICByZXR1cm4gIWF0dC5wcm9ncmVzcyA/ICgpID0+IHRoaXMuZGVsZXRlRmlsZShhdHQpIDogbnVsbDtcbiAgfVxuXG4gIGdldFJlbW92ZUZ1bmN0aW9uKGF0dCkge1xuICAgIHJldHVybiBhdHQuZXJyb3IgPyAoKSA9PiB0aGlzLnJlbW92ZUZpbGUoKSA6IG51bGw7XG4gIH1cblxuICBjYXNlSGFzQ2hhbmdlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjYXNlSUQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZShQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uQ0FTRV9JTkZPX0lEKTtcbiAgICBpZiAodGhpcy5jdXJyZW50Q2FzZUlEICE9PSBjYXNlSUQpIHtcbiAgICAgIHRoaXMuY3VycmVudENhc2VJRCA9IGNhc2VJRDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICBuYW1lPVwiTGlzdFV0aWxpdHlcIlxuICAgIFtwcm9wc109XCJ7XG4gICAgICBuYW1lJDogbHVfbmFtZSQsXG4gICAgICBpY29uJDogbHVfaWNvbiQsXG4gICAgICBiTG9hZGluZyQ6IGx1X2JMb2FkaW5nJCxcbiAgICAgIGNvdW50JDogbHVfY291bnQkLFxuICAgICAgYXJBY3Rpb25zJDogbHVfYXJBY3Rpb25zJCxcbiAgICAgIGFySXRlbXMkOiBsdV9hckl0ZW1zJCxcbiAgICAgIG9uVmlld0FsbCQ6IGx1X29uVmlld0FsbEZ1bmN0aW9uLFxuICAgICAgbWVudUljb25PdmVycmlkZUFjdGlvbiQ6IHJlbW92ZUZpbGVGcm9tTGlzdCRcbiAgICB9XCJcbiAgPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dGaWxlTW9kYWwkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWZpbGUtdG9wXCI+XG4gICAgPGgzPnt7IHBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQWRkIGxvY2FsIGZpbGVzJywgJycsICcnKSB9fTwvaDM+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtZmlsZS1zZWxlY3RvclwiPlxuICAgICAgICA8aW5wdXQgaGlkZGVuIHR5cGU9XCJmaWxlXCIgbXVsdGlwbGUgI3VwbG9hZGVyIChjaGFuZ2UpPVwidXBsb2FkTXlGaWxlcygkZXZlbnQpXCIgLz5cblxuICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidXBsb2FkZXIuY2xpY2soKVwiPnt7IHBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnVXBsb2FkIGZpbGUocyknLCAnJywgJycpIH19PC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgbmFtZT1cIlN1bW1hcnlMaXN0XCJcbiAgICAgICAgW3Byb3BzXT1cInsgYXJJdGVtcyQ6IGFyRmlsZUxpc3QkLCBtZW51SWNvbk92ZXJyaWRlJDogJ3RyYXNoJywgbWVudUljb25PdmVycmlkZUFjdGlvbiQ6IHJlbW92ZUZpbGVGcm9tTGlzdCQgfVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBY3Rpb25CdXR0b25zXCJcbiAgICAgIFtwcm9wc109XCJ7IGFyTWFpbkJ1dHRvbnMkOiBhckZpbGVNYWluQnV0dG9ucyQsIGFyU2Vjb25kYXJ5QnV0dG9ucyQ6IGFyRmlsZVNlY29uZGFyeUJ1dHRvbnMkIH1cIlxuICAgICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBhY3Rpb25CdXR0b25DbGljazogb25GaWxlQWN0aW9uQnV0dG9uQ2xpY2sgfVwiXG4gICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImJTaG93TGlua01vZGFsJFwiIGNsYXNzPVwicHNkay1kaWFsb2ctYmFja2dyb3VuZFwiPlxuICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rLXRvcFwiPlxuICAgIDxoMz57eyBwQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0FkZCBsaW5rcycsICcnLCAnJykgfX08L2gzPlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstZW50cnlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWJvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtbGlua3Mtcm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstbGlua3MtdHdvLWNvbHVtblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtbGluay1kYXRhXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInBzZGstZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGluayB0aXRsZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIHJlcXVpcmVkPVwidHJ1ZVwiIChjaGFuZ2UpPVwiX2ZpZWxkT25DaGFuZ2VMaW5rKCRldmVudClcIiBbdmFsdWVdPVwibGlua190aXRsZSRcIiAvPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rLWRhdGFcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHNkay1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5VUkw8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiByZXF1aXJlZD1cInRydWVcIiAoY2hhbmdlKT1cIl9maWVsZE9uQ2hhbmdlVVJMKCRldmVudClcIiBbdmFsdWVdPVwibGlua191cmwkXCIgLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtbGluay1hZGRcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIl9hZGRMaW5rKClcIj57eyBwQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0FkZCBsaW5rJywgJycsICcnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICAgIG5hbWU9XCJTdW1tYXJ5TGlzdFwiXG4gICAgICAgICAgW3Byb3BzXT1cInsgYXJJdGVtcyQ6IGFyTGlua3NMaXN0JCwgbWVudUljb25PdmVycmlkZSQ6ICd0cmFzaCcsIG1lbnVJY29uT3ZlcnJpZGVBY3Rpb24kOiByZW1vdmVMaW5rc0Zyb21MaXN0JCB9XCJcbiAgICAgICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBY3Rpb25CdXR0b25zXCJcbiAgICAgIFtwcm9wc109XCJ7IGFyTWFpbkJ1dHRvbnMkOiBhckxpbmtNYWluQnV0dG9ucyQsIGFyU2Vjb25kYXJ5QnV0dG9ucyQ6IGFyTGlua1NlY29uZGFyeUJ1dHRvbnMkIH1cIlxuICAgICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBhY3Rpb25CdXR0b25DbGljazogb25MaW5rQWN0aW9uQnV0dG9uQ2xpY2sgfVwiXG4gICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImJTaG93Vmlld0FsbE1vZGFsJFwiIGNsYXNzPVwicHNkay1kaWFsb2ctYmFja2dyb3VuZFwiPlxuICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1maWxlLXRvcFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXZpZXctYWxsLWhlYWRlclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGgzPnt7IHBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQXR0YWNobWVudHMnLCAnJywgJycpIH19PC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIl9jbG9zZVZpZXdBbGwoKVwiPlxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLXV0aWxpdHktY2FyZC1hY3Rpb25zLXN2Zy1pY29uXCIgc3JjPVwie3sgY2xvc2VTdmdJY29uJCB9fVwiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstdmlldy1hbGwtYm9keVwiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlN1bW1hcnlMaXN0XCIgW3Byb3BzXT1cInsgYXJJdGVtcyQ6IHZhX2FySXRlbXMkLCBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlTGlua3NGcm9tTGlzdCQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -31,13 +31,13 @@ export class ListUtilityComponent {
31
31
  getIconPath() {
32
32
  return `${this.utils.getSDKStaticContentUrl()}assets/icons/`;
33
33
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListUtilityComponent, deps: [{ token: i1.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListUtilityComponent, isStandalone: true, selector: "app-list-utility", inputs: { name$: "name$", icon$: "icon$", bLoading$: "bLoading$", count$: "count$", arActions$: "arActions$", arItems$: "arItems$", menuIconOverrideAction$: "menuIconOverrideAction$", onViewAll$: "onViewAll$" }, ngImport: i0, template: "<div style=\"text-align: left\">\n <div class=\"psdk-utility\">\n <div class=\"header\">\n <div class=\"header-icon\">\n <img class=\"psdk-utility-svg-icon\" src=\"{{ headerSvgIcon$ }}\" />\n </div>\n <div class=\"header-text\">{{ name$ }}</div>\n <div class=\"psdk-utility-count\" id=\"attachments-count\">{{ count$ }}</div>\n <div style=\"flex-grow: 1\"></div>\n <div class=\"header-icon\">\n <button mat-icon-button [matMenuTriggerFor]=\"utilityMenu\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ settingsSvgIcon$ }}\" />\n </button>\n <mat-menu #utilityMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arActions$\">\n <button mat-menu-item (click)=\"action.onClick()\">{{ action.text }}</button>\n </ng-container>\n </mat-menu>\n </div>\n </div>\n <div class=\"psdk-utiltiy-divider\"></div>\n <br />\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"50\"></mat-spinner>\n <div *ngIf=\"count$ == 0\" class=\"message\">{{ noItemsMessage$ }}</div>\n <div *ngIf=\"count$ > 0\" class=\"psdk-utility-items\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$, menuIconOverrideAction$ }\"></component-mapper>\n </div>\n <div class=\"psdk-utility-view-all\">\n <button *ngIf=\"count$ > 3\" mat-button color=\"primary\" (click)=\"onViewAll$.onClick()\">View all</button>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;top:40%;left:40%}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-utility-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-utility-view-all{width:100%;display:flex;justify-content:center}.psdk-utility-count{background:var(--app-primary-light-color);border-radius:.5625rem;color:var(--app-inverse-form-color);display:inline-block;font-size:.75rem;font-weight:700;text-align:center;width:1.125rem;vertical-align:top;margin:0 0 .313rem 1rem}.psdk-utility .header-text{font-size:1rem;font-weight:700;padding-bottom:.3125rem;text-align:left;display:inline-block}.psdk-utility .header-icon{display:inline-block}.psdk-utility{width:100%;padding:.625rem 0rem;text-align:left;background-color:var(--app-form-color);border-radius:.6125rem;margin:.3125rem 0rem;position:relative}.psdk-utility .header{text-align:left;display:flex;align-items:center}.psdk-utility-svg-icon{width:1.4rem;display:inline-block}.psdk-settings-svg-icon{width:1.4rem;display:inline-block;filter:var(--app-primary-color-filter)}.psdk-utility .message{text-align:center}.psdk-utility-card{display:flex;flex-direction:row;padding:.25rem 0rem .25rem .25rem}.psdk-utility-card-icon{flex-grow:1;max-width:2.813rem}.psdk-utility-card-svg-icon{width:2.5rem;display:inline-block}.psdk-utility-card-main{flex-grow:2;max-width:16.563rem}.psdk-utility-card-main-primary-url{color:var(--app-primary-color)}.psdk-utility-card-main-primary-url .mat-mdc-button.mat-primary{padding-left:0}.psdk-utility-card-main-primary-label{font-weight:700}.psdk-utility-card-actions{flex-grow:1;text-align:right}.psdk-utility-card-action-svg-icon{width:1.4rem;display:inline-block}.psdk-utility-card-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:middle;filter:var(--app-primary-color-filter)}.psdk-utility-card-action-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:bottom}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatButtonModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i3.MatButton; }), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(function () { return i3.MatIconButton; }), selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatMenuModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i4.MatMenu; }), selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i0.forwardRef(function () { return i4.MatMenuItem; }), selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatMenuTrigger; }), selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatProgressSpinnerModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i5.MatProgressSpinner; }), selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ListUtilityComponent, deps: [{ token: i1.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ListUtilityComponent, isStandalone: true, selector: "app-list-utility", inputs: { name$: "name$", icon$: "icon$", bLoading$: "bLoading$", count$: "count$", arActions$: "arActions$", arItems$: "arItems$", menuIconOverrideAction$: "menuIconOverrideAction$", onViewAll$: "onViewAll$" }, ngImport: i0, template: "<div style=\"text-align: left\">\n <div class=\"psdk-utility\">\n <div class=\"header\">\n <div class=\"header-icon\">\n <img class=\"psdk-utility-svg-icon\" src=\"{{ headerSvgIcon$ }}\" />\n </div>\n <div class=\"header-text\">{{ name$ }}</div>\n <div class=\"psdk-utility-count\" id=\"attachments-count\">{{ count$ }}</div>\n <div style=\"flex-grow: 1\"></div>\n <div class=\"header-icon\">\n <button id=\"file-menu\" mat-icon-button [matMenuTriggerFor]=\"utilityMenu\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ settingsSvgIcon$ }}\" />\n </button>\n <mat-menu #utilityMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arActions$\">\n <button mat-menu-item (click)=\"action.onClick()\">{{ action.text }}</button>\n </ng-container>\n </mat-menu>\n </div>\n </div>\n <div class=\"psdk-utiltiy-divider\"></div>\n <br />\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"50\"></mat-spinner>\n <div *ngIf=\"count$ == 0\" class=\"message\">{{ noItemsMessage$ }}</div>\n <div *ngIf=\"count$ > 0\" class=\"psdk-utility-items\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$, menuIconOverrideAction$ }\"></component-mapper>\n </div>\n <div class=\"psdk-utility-view-all\">\n <button *ngIf=\"count$ > 3\" mat-button color=\"primary\" (click)=\"onViewAll$.onClick()\">View all</button>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;top:40%;left:40%}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-utility-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-utility-view-all{width:100%;display:flex;justify-content:center}.psdk-utility-count{background:var(--app-primary-light-color);border-radius:.5625rem;color:var(--app-inverse-form-color);display:inline-block;font-size:.75rem;font-weight:700;text-align:center;width:1.125rem;vertical-align:top;margin:0 0 .313rem 1rem}.psdk-utility .header-text{font-size:1rem;font-weight:700;padding-bottom:.3125rem;text-align:left;display:inline-block}.psdk-utility .header-icon{display:inline-block}.psdk-utility{width:100%;padding:.625rem 0rem;text-align:left;background-color:var(--app-form-color);border-radius:.6125rem;margin:.3125rem 0rem;position:relative}.psdk-utility .header{text-align:left;display:flex;align-items:center}.psdk-utility-svg-icon{width:1.4rem;display:inline-block}.psdk-settings-svg-icon{width:1.4rem;display:inline-block;filter:var(--app-primary-color-filter)}.psdk-utility .message{text-align:center}.psdk-utility-card{display:flex;flex-direction:row;padding:.25rem 0rem .25rem .25rem}.psdk-utility-card-icon{flex-grow:1;max-width:2.813rem}.psdk-utility-card-svg-icon{width:2.5rem;display:inline-block}.psdk-utility-card-main{flex-grow:2;max-width:16.563rem}.psdk-utility-card-main-primary-url{color:var(--app-primary-color)}.psdk-utility-card-main-primary-url .mat-mdc-button.mat-primary{padding-left:0}.psdk-utility-card-main-primary-label{font-weight:700}.psdk-utility-card-actions{flex-grow:1;text-align:right}.psdk-utility-card-action-svg-icon{width:1.4rem;display:inline-block}.psdk-utility-card-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:middle;filter:var(--app-primary-color-filter)}.psdk-utility-card-action-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:bottom}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i2.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i3.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(() => i3.MatIconButton), selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatMenuModule) }, { kind: "component", type: i0.forwardRef(() => i4.MatMenu), selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i0.forwardRef(() => i4.MatMenuItem), selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i0.forwardRef(() => i4.MatMenuTrigger), selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatProgressSpinnerModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatProgressSpinner), selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListUtilityComponent, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ListUtilityComponent, decorators: [{
38
38
  type: Component,
39
- args: [{ selector: 'app-list-utility', standalone: true, imports: [CommonModule, MatButtonModule, MatMenuModule, MatProgressSpinnerModule, forwardRef(() => ComponentMapperComponent)], template: "<div style=\"text-align: left\">\n <div class=\"psdk-utility\">\n <div class=\"header\">\n <div class=\"header-icon\">\n <img class=\"psdk-utility-svg-icon\" src=\"{{ headerSvgIcon$ }}\" />\n </div>\n <div class=\"header-text\">{{ name$ }}</div>\n <div class=\"psdk-utility-count\" id=\"attachments-count\">{{ count$ }}</div>\n <div style=\"flex-grow: 1\"></div>\n <div class=\"header-icon\">\n <button mat-icon-button [matMenuTriggerFor]=\"utilityMenu\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ settingsSvgIcon$ }}\" />\n </button>\n <mat-menu #utilityMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arActions$\">\n <button mat-menu-item (click)=\"action.onClick()\">{{ action.text }}</button>\n </ng-container>\n </mat-menu>\n </div>\n </div>\n <div class=\"psdk-utiltiy-divider\"></div>\n <br />\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"50\"></mat-spinner>\n <div *ngIf=\"count$ == 0\" class=\"message\">{{ noItemsMessage$ }}</div>\n <div *ngIf=\"count$ > 0\" class=\"psdk-utility-items\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$, menuIconOverrideAction$ }\"></component-mapper>\n </div>\n <div class=\"psdk-utility-view-all\">\n <button *ngIf=\"count$ > 3\" mat-button color=\"primary\" (click)=\"onViewAll$.onClick()\">View all</button>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;top:40%;left:40%}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-utility-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-utility-view-all{width:100%;display:flex;justify-content:center}.psdk-utility-count{background:var(--app-primary-light-color);border-radius:.5625rem;color:var(--app-inverse-form-color);display:inline-block;font-size:.75rem;font-weight:700;text-align:center;width:1.125rem;vertical-align:top;margin:0 0 .313rem 1rem}.psdk-utility .header-text{font-size:1rem;font-weight:700;padding-bottom:.3125rem;text-align:left;display:inline-block}.psdk-utility .header-icon{display:inline-block}.psdk-utility{width:100%;padding:.625rem 0rem;text-align:left;background-color:var(--app-form-color);border-radius:.6125rem;margin:.3125rem 0rem;position:relative}.psdk-utility .header{text-align:left;display:flex;align-items:center}.psdk-utility-svg-icon{width:1.4rem;display:inline-block}.psdk-settings-svg-icon{width:1.4rem;display:inline-block;filter:var(--app-primary-color-filter)}.psdk-utility .message{text-align:center}.psdk-utility-card{display:flex;flex-direction:row;padding:.25rem 0rem .25rem .25rem}.psdk-utility-card-icon{flex-grow:1;max-width:2.813rem}.psdk-utility-card-svg-icon{width:2.5rem;display:inline-block}.psdk-utility-card-main{flex-grow:2;max-width:16.563rem}.psdk-utility-card-main-primary-url{color:var(--app-primary-color)}.psdk-utility-card-main-primary-url .mat-mdc-button.mat-primary{padding-left:0}.psdk-utility-card-main-primary-label{font-weight:700}.psdk-utility-card-actions{flex-grow:1;text-align:right}.psdk-utility-card-action-svg-icon{width:1.4rem;display:inline-block}.psdk-utility-card-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:middle;filter:var(--app-primary-color-filter)}.psdk-utility-card-action-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:bottom}\n"] }]
40
- }], ctorParameters: function () { return [{ type: i1.Utils }]; }, propDecorators: { name$: [{
39
+ args: [{ selector: 'app-list-utility', standalone: true, imports: [CommonModule, MatButtonModule, MatMenuModule, MatProgressSpinnerModule, forwardRef(() => ComponentMapperComponent)], template: "<div style=\"text-align: left\">\n <div class=\"psdk-utility\">\n <div class=\"header\">\n <div class=\"header-icon\">\n <img class=\"psdk-utility-svg-icon\" src=\"{{ headerSvgIcon$ }}\" />\n </div>\n <div class=\"header-text\">{{ name$ }}</div>\n <div class=\"psdk-utility-count\" id=\"attachments-count\">{{ count$ }}</div>\n <div style=\"flex-grow: 1\"></div>\n <div class=\"header-icon\">\n <button id=\"file-menu\" mat-icon-button [matMenuTriggerFor]=\"utilityMenu\">\n <img class=\"psdk-utility-card-actions-svg-icon\" src=\"{{ settingsSvgIcon$ }}\" />\n </button>\n <mat-menu #utilityMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arActions$\">\n <button mat-menu-item (click)=\"action.onClick()\">{{ action.text }}</button>\n </ng-container>\n </mat-menu>\n </div>\n </div>\n <div class=\"psdk-utiltiy-divider\"></div>\n <br />\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"50\"></mat-spinner>\n <div *ngIf=\"count$ == 0\" class=\"message\">{{ noItemsMessage$ }}</div>\n <div *ngIf=\"count$ > 0\" class=\"psdk-utility-items\">\n <component-mapper name=\"SummaryList\" [props]=\"{ arItems$, menuIconOverrideAction$ }\"></component-mapper>\n </div>\n <div class=\"psdk-utility-view-all\">\n <button *ngIf=\"count$ > 3\" mat-button color=\"primary\" (click)=\"onViewAll$.onClick()\">View all</button>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;top:40%;left:40%}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-utility-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-utility-view-all{width:100%;display:flex;justify-content:center}.psdk-utility-count{background:var(--app-primary-light-color);border-radius:.5625rem;color:var(--app-inverse-form-color);display:inline-block;font-size:.75rem;font-weight:700;text-align:center;width:1.125rem;vertical-align:top;margin:0 0 .313rem 1rem}.psdk-utility .header-text{font-size:1rem;font-weight:700;padding-bottom:.3125rem;text-align:left;display:inline-block}.psdk-utility .header-icon{display:inline-block}.psdk-utility{width:100%;padding:.625rem 0rem;text-align:left;background-color:var(--app-form-color);border-radius:.6125rem;margin:.3125rem 0rem;position:relative}.psdk-utility .header{text-align:left;display:flex;align-items:center}.psdk-utility-svg-icon{width:1.4rem;display:inline-block}.psdk-settings-svg-icon{width:1.4rem;display:inline-block;filter:var(--app-primary-color-filter)}.psdk-utility .message{text-align:center}.psdk-utility-card{display:flex;flex-direction:row;padding:.25rem 0rem .25rem .25rem}.psdk-utility-card-icon{flex-grow:1;max-width:2.813rem}.psdk-utility-card-svg-icon{width:2.5rem;display:inline-block}.psdk-utility-card-main{flex-grow:2;max-width:16.563rem}.psdk-utility-card-main-primary-url{color:var(--app-primary-color)}.psdk-utility-card-main-primary-url .mat-mdc-button.mat-primary{padding-left:0}.psdk-utility-card-main-primary-label{font-weight:700}.psdk-utility-card-actions{flex-grow:1;text-align:right}.psdk-utility-card-action-svg-icon{width:1.4rem;display:inline-block}.psdk-utility-card-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:middle;filter:var(--app-primary-color-filter)}.psdk-utility-card-action-actions-svg-icon{width:1.4rem;display:inline-block;vertical-align:bottom}\n"] }]
40
+ }], ctorParameters: () => [{ type: i1.Utils }], propDecorators: { name$: [{
41
41
  type: Input
42
42
  }], icon$: [{
43
43
  type: Input
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
54
54
  }], onViewAll$: [{
55
55
  type: Input
56
56
  }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC11dGlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy93aWRnZXQvbGlzdC11dGlsaXR5L2xpc3QtdXRpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2xpc3QtdXRpbGl0eS9saXN0LXV0aWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7O0FBU3hHLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLFlBQW9CLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBbEJ2QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsYUFBUSxHQUFVLEVBQUUsQ0FBQztRQUNyQiw0QkFBdUIsR0FBVSxFQUFFLENBQUM7UUFRN0Msb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFFN0IsZUFBVSxHQUFHLEVBQUUsQ0FBQztJQUVtQixDQUFDO0lBRXBDLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLGVBQWUsQ0FBQztJQUMvRCxDQUFDOytHQTlCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixnU0NmakMsMC9DQWdDQSx3K0REbkJZLFlBQVksb1hBQUUsZUFBZSw2aEJBQUUsYUFBYSwyaUJBQUUsd0JBQXdCLGlUQUFtQix3QkFBd0I7OzRGQUVoSCxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHdCQUF3QixFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzRGQUdwSCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxpc3QtdXRpbGl0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXV0aWxpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LXV0aWxpdHkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgTGlzdFV0aWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBuYW1lJCA9ICcnO1xuICBASW5wdXQoKSBpY29uJCA9ICcnO1xuICBASW5wdXQoKSBiTG9hZGluZyQgPSBmYWxzZTtcbiAgQElucHV0KCkgY291bnQkID0gMDtcbiAgQElucHV0KCkgYXJBY3Rpb25zJDogYW55W10gPSBbXTtcbiAgQElucHV0KCkgYXJJdGVtcyQ6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIG1lbnVJY29uT3ZlcnJpZGVBY3Rpb24kOiBhbnlbXSA9IFtdO1xuXG4gIC8vIGZ1bmN0aW9uIHRvIGFsbFxuICBASW5wdXQoKSBvblZpZXdBbGwkOiBhbnk7XG5cbiAgaGVhZGVyU3ZnSWNvbiQ6IHN0cmluZztcbiAgc2V0dGluZ3NTdmdJY29uJDogc3RyaW5nO1xuXG4gIG5vSXRlbXNNZXNzYWdlJCA9ICdObyBJdGVtcyc7XG5cbiAgaW1hZ2VQYXRoJCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdXRpbHM6IFV0aWxzKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW1hZ2VQYXRoJCA9IHRoaXMuZ2V0SWNvblBhdGgoKTtcblxuICAgIHRoaXMuaGVhZGVyU3ZnSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKHRoaXMuaWNvbiQsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgICB0aGlzLnNldHRpbmdzU3ZnSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdtb3JlJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICB9XG5cbiAgZ2V0SWNvblBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCl9YXNzZXRzL2ljb25zL2A7XG4gIH1cbn1cbiIsIjxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0XCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLXV0aWxpdHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWljb25cIj5cbiAgICAgICAgPGltZyBjbGFzcz1cInBzZGstdXRpbGl0eS1zdmctaWNvblwiIHNyYz1cInt7IGhlYWRlclN2Z0ljb24kIH19XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10ZXh0XCI+e3sgbmFtZSQgfX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXV0aWxpdHktY291bnRcIiBpZD1cImF0dGFjaG1lbnRzLWNvdW50XCI+e3sgY291bnQkIH19PC9kaXY+XG4gICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWljb25cIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInV0aWxpdHlNZW51XCI+XG4gICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstdXRpbGl0eS1jYXJkLWFjdGlvbnMtc3ZnLWljb25cIiBzcmM9XCJ7eyBzZXR0aW5nc1N2Z0ljb24kIH19XCIgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtbWVudSAjdXRpbGl0eU1lbnU9XCJtYXRNZW51XCIgb3ZlcmxhcFRyaWdnZXI9XCJmYWxzZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhckFjdGlvbnMkXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFjdGlvbi5vbkNsaWNrKClcIj57eyBhY3Rpb24udGV4dCB9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1tZW51PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstdXRpbHRpeS1kaXZpZGVyXCI+PC9kaXY+XG4gICAgPGJyIC8+XG4gICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYkxvYWRpbmckXCIgY2xhc3M9XCJwcm9ncmVzcy1zcGlubmVyXCIgZGlhbWV0ZXI9XCI1MFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgPGRpdiAqbmdJZj1cImNvdW50JCA9PSAwXCIgY2xhc3M9XCJtZXNzYWdlXCI+e3sgbm9JdGVtc01lc3NhZ2UkIH19PC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImNvdW50JCA+IDBcIiBjbGFzcz1cInBzZGstdXRpbGl0eS1pdGVtc1wiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlN1bW1hcnlMaXN0XCIgW3Byb3BzXT1cInsgYXJJdGVtcyQsIG1lbnVJY29uT3ZlcnJpZGVBY3Rpb24kIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstdXRpbGl0eS12aWV3LWFsbFwiPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvdW50JCA+IDNcIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvblZpZXdBbGwkLm9uQ2xpY2soKVwiPlZpZXcgYWxsPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC11dGlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy93aWRnZXQvbGlzdC11dGlsaXR5L2xpc3QtdXRpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2xpc3QtdXRpbGl0eS9saXN0LXV0aWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7O0FBU3hHLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLFlBQW9CLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBbEJ2QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsYUFBUSxHQUFVLEVBQUUsQ0FBQztRQUNyQiw0QkFBdUIsR0FBVSxFQUFFLENBQUM7UUFRN0Msb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFFN0IsZUFBVSxHQUFHLEVBQUUsQ0FBQztJQUVtQixDQUFDO0lBRXBDLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLGVBQWUsQ0FBQztJQUMvRCxDQUFDOytHQTlCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixnU0NmakMsMmdEQWdDQSx5OUREbkJZLFlBQVksOFRBQUUsZUFBZSx1WUFBRSxhQUFhLGkxQkFBRSx3QkFBd0IsNlFBQW1CLHdCQUF3Qjs7NEZBRWhILG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsd0JBQXdCLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7MEVBR3BILEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbGlzdC11dGlsaXR5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtdXRpbGl0eS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QtdXRpbGl0eS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdE1lbnVNb2R1bGUsIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0VXRpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG5hbWUkID0gJyc7XG4gIEBJbnB1dCgpIGljb24kID0gJyc7XG4gIEBJbnB1dCgpIGJMb2FkaW5nJCA9IGZhbHNlO1xuICBASW5wdXQoKSBjb3VudCQgPSAwO1xuICBASW5wdXQoKSBhckFjdGlvbnMkOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBhckl0ZW1zJDogYW55W10gPSBbXTtcbiAgQElucHV0KCkgbWVudUljb25PdmVycmlkZUFjdGlvbiQ6IGFueVtdID0gW107XG5cbiAgLy8gZnVuY3Rpb24gdG8gYWxsXG4gIEBJbnB1dCgpIG9uVmlld0FsbCQ6IGFueTtcblxuICBoZWFkZXJTdmdJY29uJDogc3RyaW5nO1xuICBzZXR0aW5nc1N2Z0ljb24kOiBzdHJpbmc7XG5cbiAgbm9JdGVtc01lc3NhZ2UkID0gJ05vIEl0ZW1zJztcblxuICBpbWFnZVBhdGgkID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlsczogVXRpbHMpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbWFnZVBhdGgkID0gdGhpcy5nZXRJY29uUGF0aCgpO1xuXG4gICAgdGhpcy5oZWFkZXJTdmdJY29uJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmModGhpcy5pY29uJCwgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgIHRoaXMuc2V0dGluZ3NTdmdJY29uJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ21vcmUnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gIH1cblxuICBnZXRJY29uUGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKX1hc3NldHMvaWNvbnMvYDtcbiAgfVxufVxuIiwiPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnRcIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstdXRpbGl0eVwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItaWNvblwiPlxuICAgICAgICA8aW1nIGNsYXNzPVwicHNkay11dGlsaXR5LXN2Zy1pY29uXCIgc3JjPVwie3sgaGVhZGVyU3ZnSWNvbiQgfX1cIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRleHRcIj57eyBuYW1lJCB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstdXRpbGl0eS1jb3VudFwiIGlkPVwiYXR0YWNobWVudHMtY291bnRcIj57eyBjb3VudCQgfX08L2Rpdj5cbiAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDFcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItaWNvblwiPlxuICAgICAgICA8YnV0dG9uIGlkPVwiZmlsZS1tZW51XCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJ1dGlsaXR5TWVudVwiPlxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLXV0aWxpdHktY2FyZC1hY3Rpb25zLXN2Zy1pY29uXCIgc3JjPVwie3sgc2V0dGluZ3NTdmdJY29uJCB9fVwiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LW1lbnUgI3V0aWxpdHlNZW51PVwibWF0TWVudVwiIG92ZXJsYXBUcmlnZ2VyPVwiZmFsc2VcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYXJBY3Rpb25zJFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhY3Rpb24ub25DbGljaygpXCI+e3sgYWN0aW9uLnRleHQgfX08L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXV0aWx0aXktZGl2aWRlclwiPjwvZGl2PlxuICAgIDxiciAvPlxuICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImJMb2FkaW5nJFwiIGNsYXNzPVwicHJvZ3Jlc3Mtc3Bpbm5lclwiIGRpYW1ldGVyPVwiNTBcIj48L21hdC1zcGlubmVyPlxuICAgIDxkaXYgKm5nSWY9XCJjb3VudCQgPT0gMFwiIGNsYXNzPVwibWVzc2FnZVwiPnt7IG5vSXRlbXNNZXNzYWdlJCB9fTwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJjb3VudCQgPiAwXCIgY2xhc3M9XCJwc2RrLXV0aWxpdHktaXRlbXNcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJTdW1tYXJ5TGlzdFwiIFtwcm9wc109XCJ7IGFySXRlbXMkLCBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXV0aWxpdHktdmlldy1hbGxcIj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJjb3VudCQgPiAzXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25WaWV3QWxsJC5vbkNsaWNrKClcIj5WaWV3IGFsbDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19