@bizdoc/core 2.1.13 → 2.2.1

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 (381) hide show
  1. package/assets/system/auth0.svg +13 -0
  2. package/esm2022/lib/admin/admin-dismiss.service.mjs +5 -5
  3. package/esm2022/lib/admin/admin-menu.component.mjs +5 -5
  4. package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +5 -5
  5. package/esm2022/lib/admin/architecture/designer-element.component.mjs +23 -23
  6. package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +6 -6
  7. package/esm2022/lib/admin/architecture/designer.base.mjs +16 -16
  8. package/esm2022/lib/admin/architecture/designer.component.mjs +7 -6
  9. package/esm2022/lib/admin/architecture/elements/action.component.mjs +4 -4
  10. package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +6 -5
  11. package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +6 -5
  12. package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +6 -5
  13. package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +4 -4
  14. package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +8 -7
  15. package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +6 -5
  16. package/esm2022/lib/admin/architecture/elements/control.component.mjs +4 -4
  17. package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +6 -5
  18. package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +6 -5
  19. package/esm2022/lib/admin/architecture/elements/cube.component.mjs +6 -6
  20. package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +8 -7
  21. package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +6 -5
  22. package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +6 -5
  23. package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +6 -5
  24. package/esm2022/lib/admin/architecture/elements/folder.component.mjs +4 -4
  25. package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +6 -6
  26. package/esm2022/lib/admin/architecture/elements/form.component.mjs +6 -6
  27. package/esm2022/lib/admin/architecture/elements/guide.component.mjs +4 -4
  28. package/esm2022/lib/admin/architecture/elements/job.component.mjs +6 -6
  29. package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +6 -5
  30. package/esm2022/lib/admin/architecture/elements/node.component.mjs +4 -4
  31. package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +6 -5
  32. package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +6 -5
  33. package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +6 -5
  34. package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +6 -5
  35. package/esm2022/lib/admin/architecture/elements/policy.component.mjs +4 -4
  36. package/esm2022/lib/admin/architecture/elements/report.component.mjs +4 -4
  37. package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +6 -5
  38. package/esm2022/lib/admin/architecture/elements/role.component.mjs +4 -4
  39. package/esm2022/lib/admin/architecture/elements/rule.component.mjs +4 -4
  40. package/esm2022/lib/admin/architecture/elements/state.component.mjs +4 -4
  41. package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +6 -5
  42. package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +6 -5
  43. package/esm2022/lib/admin/architecture/elements/type.component.mjs +6 -6
  44. package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +6 -5
  45. package/esm2022/lib/admin/architecture/elements/utility.component.mjs +4 -4
  46. package/esm2022/lib/admin/architecture/elements/view.component.mjs +4 -4
  47. package/esm2022/lib/admin/architecture/elements/widget.component.mjs +4 -4
  48. package/esm2022/lib/admin/architecture/icon-picker.component.mjs +6 -6
  49. package/esm2022/lib/admin/core/ace.input.mjs +6 -6
  50. package/esm2022/lib/admin/core/color-picker.input.mjs +6 -6
  51. package/esm2022/lib/admin/core/localized-string.component.mjs +6 -6
  52. package/esm2022/lib/admin/core/search.input.mjs +26 -10
  53. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +8 -7
  54. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +8 -7
  55. package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +6 -6
  56. package/esm2022/lib/admin/document-trace/trace-element.component.mjs +5 -5
  57. package/esm2022/lib/admin/form/designer/box-designer.component.mjs +12 -11
  58. package/esm2022/lib/admin/form/designer/properties.component.mjs +5 -5
  59. package/esm2022/lib/admin/form/designer/section.component.mjs +5 -5
  60. package/esm2022/lib/admin/form/designer/settings.component.mjs +6 -6
  61. package/esm2022/lib/admin/form/form.resolve.service.mjs +5 -5
  62. package/esm2022/lib/admin/form/workflow/node.component.mjs +5 -5
  63. package/esm2022/lib/admin/form/workflow/role-node.component.mjs +8 -7
  64. package/esm2022/lib/admin/form/workflow/workflow.component.mjs +5 -5
  65. package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +8 -7
  66. package/esm2022/lib/admin/patterns/patterns.component.mjs +8 -7
  67. package/esm2022/lib/admin/permissions/permissions.component.mjs +8 -7
  68. package/esm2022/lib/admin/positions/positions-popup.component.mjs +6 -6
  69. package/esm2022/lib/admin/positions/positions.component.mjs +8 -7
  70. package/esm2022/lib/admin/profiler/outofoffice.component.mjs +7 -7
  71. package/esm2022/lib/admin/profiler/profiler.component.mjs +8 -7
  72. package/esm2022/lib/admin/system.service.mjs +5 -5
  73. package/esm2022/lib/admin/utility-wrapper.component.mjs +5 -5
  74. package/esm2022/lib/admin/utility.pane.component.mjs +5 -5
  75. package/esm2022/lib/app.component.mjs +8 -8
  76. package/esm2022/lib/bizdoc.module.mjs +5 -5
  77. package/esm2022/lib/browse/browse-items.component.mjs +6 -6
  78. package/esm2022/lib/browse/browse.mobile.component.mjs +5 -5
  79. package/esm2022/lib/browse/browse.pane.component.mjs +5 -5
  80. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +5 -5
  81. package/esm2022/lib/browse/filter/filter.component.mjs +6 -6
  82. package/esm2022/lib/browse/folders-menu.component.mjs +5 -5
  83. package/esm2022/lib/chat/chat-info.mjs +6 -6
  84. package/esm2022/lib/chat/chat.mobile.component.mjs +4 -4
  85. package/esm2022/lib/chat/chat.service.mjs +5 -5
  86. package/esm2022/lib/chat/contacts.component.mjs +8 -8
  87. package/esm2022/lib/chat/contacts.pane.component.mjs +5 -5
  88. package/esm2022/lib/chat/conversation.component.mjs +6 -6
  89. package/esm2022/lib/chat/conversation.pane.component.mjs +5 -5
  90. package/esm2022/lib/compose/action/action-picker.component.mjs +6 -6
  91. package/esm2022/lib/compose/action/action.dialog.mjs +6 -6
  92. package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +5 -5
  93. package/esm2022/lib/compose/action/assign-action.component.mjs +7 -6
  94. package/esm2022/lib/compose/action/moveto-action.component.mjs +7 -6
  95. package/esm2022/lib/compose/action/return-action.component.mjs +7 -6
  96. package/esm2022/lib/compose/attachments/attachments.component.mjs +5 -5
  97. package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +6 -6
  98. package/esm2022/lib/compose/attachments/progress-button.directive.mjs +5 -5
  99. package/esm2022/lib/compose/box/box.component.mjs +7 -6
  100. package/esm2022/lib/compose/box/control.component.mjs +6 -6
  101. package/esm2022/lib/compose/box/row.component.mjs +5 -5
  102. package/esm2022/lib/compose/can-deactivate-changes.service.mjs +5 -5
  103. package/esm2022/lib/compose/comments/comment.component.mjs +6 -6
  104. package/esm2022/lib/compose/comments/comments.component.mjs +6 -6
  105. package/esm2022/lib/compose/comments/comments.pane.component.mjs +5 -5
  106. package/esm2022/lib/compose/comments/edit-comment.component.mjs +6 -6
  107. package/esm2022/lib/compose/comments/edits.component.mjs +6 -6
  108. package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +6 -6
  109. package/esm2022/lib/compose/comments/votes.component.mjs +6 -6
  110. package/esm2022/lib/compose/compose-resolve.service.mjs +9 -9
  111. package/esm2022/lib/compose/compose.mobile.component.mjs +9 -9
  112. package/esm2022/lib/compose/compose.pane.component.mjs +9 -9
  113. package/esm2022/lib/compose/copy/copy.dialog.mjs +5 -5
  114. package/esm2022/lib/compose/dismiss.service.mjs +5 -5
  115. package/esm2022/lib/compose/document-resolver.service.mjs +5 -5
  116. package/esm2022/lib/compose/document.component.mjs +5 -5
  117. package/esm2022/lib/compose/document.mobile.component.mjs +5 -5
  118. package/esm2022/lib/compose/document.pane.component.mjs +5 -5
  119. package/esm2022/lib/compose/events/events.component.mjs +5 -5
  120. package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +5 -5
  121. package/esm2022/lib/compose/form.component.mjs +48 -45
  122. package/esm2022/lib/compose/new-menu.component.mjs +5 -5
  123. package/esm2022/lib/compose/privilage.directive.mjs +11 -11
  124. package/esm2022/lib/compose/recipient-resolver.service.mjs +5 -5
  125. package/esm2022/lib/compose/state.component.mjs +5 -5
  126. package/esm2022/lib/compose/tag/tags.component.mjs +6 -6
  127. package/esm2022/lib/compose/trace/flow.component.mjs +5 -5
  128. package/esm2022/lib/compose/trace/people.component.mjs +5 -5
  129. package/esm2022/lib/compose/trace/trace.base.mjs +5 -5
  130. package/esm2022/lib/compose/trace/trace.component.mjs +5 -5
  131. package/esm2022/lib/compose/trace/trace.pane.component.mjs +5 -5
  132. package/esm2022/lib/compose/version-compare/version-compare.component.mjs +5 -5
  133. package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +16 -16
  134. package/esm2022/lib/compose/version-compare/version.pane.component.mjs +5 -5
  135. package/esm2022/lib/core/account.service.mjs +5 -5
  136. package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +5 -5
  137. package/esm2022/lib/core/avatar/avatar.component.mjs +5 -5
  138. package/esm2022/lib/core/checkbox.mjs +4 -4
  139. package/esm2022/lib/core/component-factory-resolver.mjs +5 -5
  140. package/esm2022/lib/core/datasource.service.mjs +5 -5
  141. package/esm2022/lib/core/fields/address.designer.mjs +7 -6
  142. package/esm2022/lib/core/fields/address.field.mjs +6 -5
  143. package/esm2022/lib/core/fields/autocomplete.field.mjs +14 -12
  144. package/esm2022/lib/core/fields/checkbox.designer.mjs +7 -6
  145. package/esm2022/lib/core/fields/checkbox.field.mjs +7 -6
  146. package/esm2022/lib/core/fields/checklist.designer.mjs +8 -7
  147. package/esm2022/lib/core/fields/checklist.field.mjs +6 -5
  148. package/esm2022/lib/core/fields/date-range.designer.mjs +7 -6
  149. package/esm2022/lib/core/fields/date-range.field.mjs +7 -6
  150. package/esm2022/lib/core/fields/date.designer.mjs +7 -6
  151. package/esm2022/lib/core/fields/date.field.mjs +6 -5
  152. package/esm2022/lib/core/fields/expression.field.mjs +11 -9
  153. package/esm2022/lib/core/fields/file.designer.mjs +8 -7
  154. package/esm2022/lib/core/fields/file.field.mjs +6 -5
  155. package/esm2022/lib/core/fields/html.designer.mjs +7 -6
  156. package/esm2022/lib/core/fields/html.field.mjs +6 -5
  157. package/esm2022/lib/core/fields/input.designer.mjs +7 -6
  158. package/esm2022/lib/core/fields/input.field.mjs +6 -5
  159. package/esm2022/lib/core/fields/localized-string.field.mjs +11 -9
  160. package/esm2022/lib/core/fields/numeric.designer.mjs +7 -6
  161. package/esm2022/lib/core/fields/numeric.field.mjs +6 -5
  162. package/esm2022/lib/core/fields/options.base.mjs +9 -9
  163. package/esm2022/lib/core/fields/options.component.mjs +5 -5
  164. package/esm2022/lib/core/fields/radio-button.designer.mjs +7 -6
  165. package/esm2022/lib/core/fields/radio-button.field.mjs +7 -6
  166. package/esm2022/lib/core/fields/select.designer.mjs +8 -7
  167. package/esm2022/lib/core/fields/select.field.mjs +6 -5
  168. package/esm2022/lib/core/fields/signature.designer.mjs +7 -6
  169. package/esm2022/lib/core/fields/signature.field.mjs +7 -6
  170. package/esm2022/lib/core/fields/switch.field.mjs +10 -18
  171. package/esm2022/lib/core/fields/textarea.designer.mjs +7 -6
  172. package/esm2022/lib/core/fields/textarea.field.mjs +6 -5
  173. package/esm2022/lib/core/fields/time.designer.mjs +7 -6
  174. package/esm2022/lib/core/fields/time.field.mjs +6 -5
  175. package/esm2022/lib/core/fields/timespan.field.mjs +11 -9
  176. package/esm2022/lib/core/fields/yesno.designer.mjs +8 -7
  177. package/esm2022/lib/core/fields/yesno.field.mjs +8 -7
  178. package/esm2022/lib/core/guide/guide.component.mjs +6 -6
  179. package/esm2022/lib/core/guide/guide.service.mjs +6 -6
  180. package/esm2022/lib/core/guide/help-tip.component.mjs +6 -6
  181. package/esm2022/lib/core/http.interceptor.mjs +7 -7
  182. package/esm2022/lib/core/hub.service.mjs +5 -5
  183. package/esm2022/lib/core/identity/identity.component.mjs +6 -6
  184. package/esm2022/lib/core/info/attachment-info.service.mjs +5 -5
  185. package/esm2022/lib/core/info/document-info.service.mjs +5 -5
  186. package/esm2022/lib/core/info/location-info.component.mjs +6 -6
  187. package/esm2022/lib/core/info/map-info.mjs +5 -5
  188. package/esm2022/lib/core/inputs/address.input.mjs +7 -7
  189. package/esm2022/lib/core/inputs/auto-complete.input.mjs +7 -7
  190. package/esm2022/lib/core/inputs/combination-picker-body.mjs +6 -6
  191. package/esm2022/lib/core/inputs/combination-picker.mjs +6 -6
  192. package/esm2022/lib/core/inputs/combination-pool.mjs +5 -5
  193. package/esm2022/lib/core/inputs/file.input.mjs +6 -6
  194. package/esm2022/lib/core/inputs/select.input.mjs +7 -7
  195. package/esm2022/lib/core/inputs/signature.input.mjs +6 -6
  196. package/esm2022/lib/core/inputs/time-picker.mjs +6 -6
  197. package/esm2022/lib/core/inputs/timespan.input.mjs +6 -6
  198. package/esm2022/lib/core/layout.component.mjs +5 -5
  199. package/esm2022/lib/core/lottie-animation.mjs +5 -5
  200. package/esm2022/lib/core/mailbox.service.mjs +7 -7
  201. package/esm2022/lib/core/none.component.mjs +4 -4
  202. package/esm2022/lib/core/pipes/action.pipe.mjs +5 -5
  203. package/esm2022/lib/core/pipes/calendar.pipe.mjs +5 -5
  204. package/esm2022/lib/core/pipes/date-format.pipe.mjs +5 -5
  205. package/esm2022/lib/core/pipes/daterange.pipe.mjs +8 -8
  206. package/esm2022/lib/core/pipes/difference.pipe.mjs +4 -4
  207. package/esm2022/lib/core/pipes/duration-format.pipe.mjs +5 -5
  208. package/esm2022/lib/core/pipes/duration.pipe.mjs +5 -5
  209. package/esm2022/lib/core/pipes/form.pipe.mjs +5 -5
  210. package/esm2022/lib/core/pipes/join.pipe.mjs +5 -5
  211. package/esm2022/lib/core/pipes/localized-string.pipe.mjs +5 -5
  212. package/esm2022/lib/core/pipes/role.pipe.mjs +5 -5
  213. package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +5 -5
  214. package/esm2022/lib/core/pipes/sort.pipe.mjs +7 -7
  215. package/esm2022/lib/core/pipes/state.pipe.mjs +5 -5
  216. package/esm2022/lib/core/pipes/time-ago.pipe.mjs +9 -9
  217. package/esm2022/lib/core/pipes/translate.pipe.mjs +13 -13
  218. package/esm2022/lib/core/pipes/type-value.pipe.mjs +5 -5
  219. package/esm2022/lib/core/pipes/user-name.pipe.mjs +5 -5
  220. package/esm2022/lib/core/popup/popup.component.mjs +6 -6
  221. package/esm2022/lib/core/popup/popup.service.mjs +5 -5
  222. package/esm2022/lib/core/popup/tooltip.directive.mjs +10 -10
  223. package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +6 -6
  224. package/esm2022/lib/core/prompt/mask/mask.component.mjs +6 -6
  225. package/esm2022/lib/core/prompt.service.mjs +5 -5
  226. package/esm2022/lib/core/router.mjs +9 -9
  227. package/esm2022/lib/core/save-changes.dialog.mjs +4 -4
  228. package/esm2022/lib/core/session.service.mjs +6 -6
  229. package/esm2022/lib/core/slots/router.directive.mjs +5 -5
  230. package/esm2022/lib/core/slots/router.service.mjs +5 -5
  231. package/esm2022/lib/core/slots/slots.component.mjs +6 -6
  232. package/esm2022/lib/core/tagging/documents.component.mjs +5 -5
  233. package/esm2022/lib/core/tagging/edit-input.component.mjs +5 -5
  234. package/esm2022/lib/core/tagging/emoji.component.mjs +5 -5
  235. package/esm2022/lib/core/tagging/tagging-item.directive.mjs +4 -4
  236. package/esm2022/lib/core/tagging/tagging.component-base.mjs +4 -4
  237. package/esm2022/lib/core/tagging/tagging.directive.mjs +6 -6
  238. package/esm2022/lib/core/tagging/tagging.pipe.mjs +5 -5
  239. package/esm2022/lib/core/tagging/users.component.mjs +5 -5
  240. package/esm2022/lib/core/translate.service.mjs +5 -5
  241. package/esm2022/lib/core/window-title.service.mjs +6 -6
  242. package/esm2022/lib/cube/accum/accum.component.mjs +5 -5
  243. package/esm2022/lib/cube/chart/chart.component.mjs +5 -5
  244. package/esm2022/lib/cube/cube-info.service.mjs +5 -5
  245. package/esm2022/lib/cube/cube-menu.component.mjs +5 -5
  246. package/esm2022/lib/cube/cube-view.component.mjs +5 -5
  247. package/esm2022/lib/cube/cube.service.mjs +6 -6
  248. package/esm2022/lib/cube/explore/document-item.component.mjs +8 -7
  249. package/esm2022/lib/cube/explore/explore-item.component.mjs +5 -5
  250. package/esm2022/lib/cube/explore/explore-items.component.mjs +5 -5
  251. package/esm2022/lib/cube/explore/explore.pane.component.mjs +5 -5
  252. package/esm2022/lib/cube/explore/item-resolver.service.mjs +9 -9
  253. package/esm2022/lib/cube/explore/item.pane.component.mjs +5 -5
  254. package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +5 -5
  255. package/esm2022/lib/cube/filter/filter.component.mjs +5 -5
  256. package/esm2022/lib/cube/grid/grid.component.mjs +5 -5
  257. package/esm2022/lib/cube/grid/spreadsheet.component.mjs +5 -5
  258. package/esm2022/lib/cube/matrix/matrix.base.mjs +5 -5
  259. package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +5 -5
  260. package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +5 -5
  261. package/esm2022/lib/cube/matrix/popup.component.mjs +6 -6
  262. package/esm2022/lib/cube/matrix/table.component.mjs +5 -5
  263. package/esm2022/lib/cube/parallel/parallel.component.mjs +5 -5
  264. package/esm2022/lib/cube/pivot/pivot.component.mjs +5 -5
  265. package/esm2022/lib/cube/sum/sum.component.mjs +5 -5
  266. package/esm2022/lib/cube/view-base.mjs +5 -5
  267. package/esm2022/lib/cube/view.mobile.component.mjs +5 -5
  268. package/esm2022/lib/cube/view.pane.component.mjs +5 -5
  269. package/esm2022/lib/dashboard/actions/actions.widget.mjs +8 -7
  270. package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +5 -5
  271. package/esm2022/lib/dashboard/cube/compare.widget.mjs +7 -6
  272. package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +5 -5
  273. package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +7 -6
  274. package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +5 -5
  275. package/esm2022/lib/dashboard/cube/document-state.widget.mjs +7 -6
  276. package/esm2022/lib/dashboard/cube/documents.widget.mjs +7 -6
  277. package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +7 -6
  278. package/esm2022/lib/dashboard/dashboard.component.mjs +6 -6
  279. package/esm2022/lib/dashboard/dashboard.pane.component.mjs +5 -5
  280. package/esm2022/lib/dashboard/recents/recents.widget.mjs +8 -7
  281. package/esm2022/lib/dashboard/score/activity.widget.mjs +7 -6
  282. package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +7 -6
  283. package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +7 -6
  284. package/esm2022/lib/dashboard/score/pending-results.widget.mjs +7 -6
  285. package/esm2022/lib/dashboard/score/personal-score.widget.mjs +7 -6
  286. package/esm2022/lib/dashboard/widget-item.component.mjs +5 -5
  287. package/esm2022/lib/designer.module.mjs +5 -5
  288. package/esm2022/lib/desktop.module.mjs +5 -5
  289. package/esm2022/lib/home/about/about.dialog.mjs +5 -5
  290. package/esm2022/lib/home/home-base.component.mjs +5 -5
  291. package/esm2022/lib/home/home.desktop.component.mjs +7 -7
  292. package/esm2022/lib/home/home.mobile.component.mjs +6 -6
  293. package/esm2022/lib/home/notifications/notifications.component.mjs +5 -5
  294. package/esm2022/lib/home/options/options.component.mjs +6 -6
  295. package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +6 -6
  296. package/esm2022/lib/home/sign/sign.component.mjs +6 -6
  297. package/esm2022/lib/home/tools.component.mjs +6 -6
  298. package/esm2022/lib/impersonate/impersonate.component.mjs +5 -5
  299. package/esm2022/lib/mobile.module.mjs +5 -5
  300. package/esm2022/lib/modules/chart.module.mjs +5 -5
  301. package/esm2022/lib/modules/circular-gauge.module.mjs +5 -5
  302. package/esm2022/lib/modules/date.adapter.mjs +3 -3
  303. package/esm2022/lib/modules/datepicker.intl.mjs +5 -5
  304. package/esm2022/lib/modules/dayjs.module.mjs +5 -5
  305. package/esm2022/lib/modules/diagram.module.mjs +5 -5
  306. package/esm2022/lib/modules/gantt.module.mjs +5 -5
  307. package/esm2022/lib/modules/grid.module.mjs +5 -5
  308. package/esm2022/lib/modules/linear-gauge.module.mjs +5 -5
  309. package/esm2022/lib/modules/material.module.mjs +5 -5
  310. package/esm2022/lib/modules/paginator.intl.mjs +5 -5
  311. package/esm2022/lib/modules/pivot.module.mjs +5 -5
  312. package/esm2022/lib/modules/schedule.module.mjs +5 -5
  313. package/esm2022/lib/modules/spreadsheet.module.mjs +5 -5
  314. package/esm2022/lib/modules/stepper.intl.mjs +5 -5
  315. package/esm2022/lib/modules/texteditor.module.mjs +5 -5
  316. package/esm2022/lib/notifications/filter.component.mjs +5 -5
  317. package/esm2022/lib/notifications/notifications-table.component.mjs +5 -5
  318. package/esm2022/lib/notifications/notifications.mobile.component.mjs +5 -5
  319. package/esm2022/lib/notifications/notifications.pane.component.mjs +5 -5
  320. package/esm2022/lib/notifications/notifications.service.mjs +5 -5
  321. package/esm2022/lib/notifications/types/commented.notification.mjs +6 -6
  322. package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +6 -6
  323. package/esm2022/lib/notifications/types/escalated.notification.mjs +6 -6
  324. package/esm2022/lib/notifications/types/invite.notification.mjs +6 -6
  325. package/esm2022/lib/notifications/types/liked.notification.mjs +6 -6
  326. package/esm2022/lib/notifications/types/long-running-task.notification.mjs +6 -6
  327. package/esm2022/lib/notifications/types/notification-base.mjs +5 -5
  328. package/esm2022/lib/notifications/types/nudge.notification.mjs +6 -6
  329. package/esm2022/lib/notifications/types/state-changed.notification.mjs +6 -6
  330. package/esm2022/lib/notifications/types/tagged.notification.mjs +6 -6
  331. package/esm2022/lib/notifications/types/text.notification.mjs +6 -6
  332. package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +6 -6
  333. package/esm2022/lib/options/options.component.mjs +6 -6
  334. package/esm2022/lib/options/options.service.mjs +5 -5
  335. package/esm2022/lib/reports/arguments-component.mjs +5 -5
  336. package/esm2022/lib/reports/cube/documents.component.mjs +7 -6
  337. package/esm2022/lib/reports/cube/grid-documents.component.mjs +5 -5
  338. package/esm2022/lib/reports/cube/role-performance.component.mjs +7 -6
  339. package/esm2022/lib/reports/cube/table-documents.component.mjs +5 -5
  340. package/esm2022/lib/reports/cube/usage-args.component.mjs +7 -6
  341. package/esm2022/lib/reports/cube/usage-base.mjs +5 -5
  342. package/esm2022/lib/reports/cube/usage-chart.component.mjs +5 -5
  343. package/esm2022/lib/reports/cube/usage-pivot.component.mjs +5 -5
  344. package/esm2022/lib/reports/cube/usage.component.mjs +7 -6
  345. package/esm2022/lib/reports/report-viewer.component.mjs +5 -5
  346. package/esm2022/lib/reports/report.mobile.component.mjs +5 -5
  347. package/esm2022/lib/reports/report.pane.component.mjs +5 -5
  348. package/esm2022/lib/reports/reports-menu.component.mjs +5 -5
  349. package/esm2022/lib/reports/substitution/substitution.component.mjs +6 -5
  350. package/esm2022/lib/reports/table/table-view.component.mjs +4 -4
  351. package/esm2022/lib/reports/tasks/tasks.component.mjs +7 -6
  352. package/esm2022/lib/scheduler/schedule.component.mjs +5 -5
  353. package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +5 -5
  354. package/esm2022/lib/scheduler/scheduler.pane.component.mjs +5 -5
  355. package/esm2022/lib/search/cube.component.mjs +7 -6
  356. package/esm2022/lib/search/document.component.mjs +7 -6
  357. package/esm2022/lib/search/guide.component.mjs +5 -5
  358. package/esm2022/lib/search/path.component.mjs +7 -6
  359. package/esm2022/lib/search/search.service.mjs +5 -5
  360. package/esm2022/lib/shared.module.mjs +5 -5
  361. package/esm2022/lib/system.module.mjs +5 -5
  362. package/esm2022/lib/views/cube/chart.component.mjs +7 -6
  363. package/esm2022/lib/views/cube/cube-base.mjs +5 -5
  364. package/esm2022/lib/views/cube/explore.component.mjs +7 -6
  365. package/esm2022/lib/views/cube/matrix.component.mjs +7 -6
  366. package/esm2022/lib/views/cube/parallel.component.mjs +7 -6
  367. package/esm2022/lib/views/cube/pivot.component.mjs +7 -6
  368. package/esm2022/lib/views/cube/sum.component.mjs +7 -6
  369. package/esm2022/lib/views/cube/view.component.mjs +7 -6
  370. package/esm2022/lib/views/timeline/timeline.component.exp.mjs +9 -7
  371. package/esm2022/lib/views/view-item.component.mjs +5 -5
  372. package/esm2022/lib/views/views.component.mjs +5 -5
  373. package/esm2022/lib/views/views.mobile.component.mjs +5 -5
  374. package/esm2022/lib/views/views.pane.component.mjs +5 -5
  375. package/fesm2022/bizdoc-core.mjs +1718 -1709
  376. package/fesm2022/bizdoc-core.mjs.map +1 -1
  377. package/lib/compose/form.component.d.ts +4 -2
  378. package/lib/core/fields/switch.field.d.ts +1 -0
  379. package/lib/core/fields/yesno.field.d.ts +1 -1
  380. package/lib/modules/date.adapter.d.ts +1 -2
  381. package/package.json +14 -14
@@ -135,20 +135,20 @@ export class ProfileSettingsDialog {
135
135
  inp.value = '';
136
136
  this.form.patchValue({});
137
137
  }
138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProfileSettingsDialog, deps: [{ token: i1.AccountService }, { token: i2.MatDialogRef }, { token: i3.FormBuilder }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
139
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProfileSettingsDialog, selector: "ng-component", viewQueries: [{ propertyName: "substitueInput", first: true, predicate: ["substitueInput"], descendants: true, read: MatInput }, { propertyName: "grantInput", first: true, predicate: ["grantInput"], descendants: true, read: MatChipInput }], ngImport: i0, template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"column\" formGroupName=\"outOfOffice\">\r\n <h3 class=\"mat-body-strong\">{{'OutOfOffice'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n <mat-option *ngFor=\"let u of ousers$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div>\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"from\" formControlName=\"from\" placeholder=\"{{'From'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"from\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #from></mat-datepicker>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"to\" formControlName=\"to\" [min]=\"form.controls['from'].value\" placeholder=\"{{'To'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"to\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #to></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <!--<hr />-->\r\n <div class=\"column\" formGroupName=\"grantAccess\">\r\n <h3 class=\"mat-body-strong\">{{'GrantAccess'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n <mat-chip-row *ngFor=\"let u of grantAccess.value.users || []\"\r\n [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n </mat-chip-grid>\r\n <input [formControl]=\"grants\" placeholder=\"{{'Users'| translate}}\"\r\n [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n <mat-option *ngFor=\"let u of gusers$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i5.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i5.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i5.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i5.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i7.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i7.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i11.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i12.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: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i14.UserNamePipe, name: "userName" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }] }); }
138
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: ProfileSettingsDialog, deps: [{ token: i1.AccountService }, { token: i2.MatDialogRef }, { token: i3.FormBuilder }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
139
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: ProfileSettingsDialog, selector: "ng-component", viewQueries: [{ propertyName: "substitueInput", first: true, predicate: ["substitueInput"], descendants: true, read: MatInput }, { propertyName: "grantInput", first: true, predicate: ["grantInput"], descendants: true, read: MatChipInput }], ngImport: i0, template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"column\" formGroupName=\"outOfOffice\">\r\n <h4 class=\"\">{{'OutOfOffice'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n <mat-option *ngFor=\"let u of ousers$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div>\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"from\" formControlName=\"from\" placeholder=\"{{'From'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"from\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #from></mat-datepicker>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field> \r\n <input matInput [matDatepicker]=\"to\" formControlName=\"to\" [min]=\"outOfOffice.controls['from'].value\" placeholder=\"{{'To'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"to\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #to></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <!--<hr />-->\r\n <div class=\"column\" formGroupName=\"grantAccess\">\r\n <h4 class=\"\">{{'GrantAccess'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n <mat-chip-row *ngFor=\"let u of grantAccess.value.users || []\"\r\n [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n </mat-chip-grid>\r\n <input [formControl]=\"grants\" placeholder=\"{{'Users'| translate}}\"\r\n [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n <mat-option *ngFor=\"let u of gusers$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i5.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i5.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i5.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i5.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i7.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i7.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i11.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i12.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: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i14.UserNamePipe, name: "userName" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }] }); }
140
140
  }
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProfileSettingsDialog, decorators: [{
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: ProfileSettingsDialog, decorators: [{
142
142
  type: Component,
143
- args: [{ template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"column\" formGroupName=\"outOfOffice\">\r\n <h3 class=\"mat-body-strong\">{{'OutOfOffice'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n <mat-option *ngFor=\"let u of ousers$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div>\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"from\" formControlName=\"from\" placeholder=\"{{'From'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"from\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #from></mat-datepicker>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"to\" formControlName=\"to\" [min]=\"form.controls['from'].value\" placeholder=\"{{'To'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"to\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #to></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <!--<hr />-->\r\n <div class=\"column\" formGroupName=\"grantAccess\">\r\n <h3 class=\"mat-body-strong\">{{'GrantAccess'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n <mat-chip-row *ngFor=\"let u of grantAccess.value.users || []\"\r\n [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n </mat-chip-grid>\r\n <input [formControl]=\"grants\" placeholder=\"{{'Users'| translate}}\"\r\n [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n <mat-option *ngFor=\"let u of gusers$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n" }]
144
- }], ctorParameters: function () { return [{ type: i1.AccountService }, { type: i2.MatDialogRef }, { type: i3.FormBuilder }, { type: undefined, decorators: [{
143
+ args: [{ template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"column\" formGroupName=\"outOfOffice\">\r\n <h4 class=\"\">{{'OutOfOffice'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n <mat-option *ngFor=\"let u of ousers$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div>\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"from\" formControlName=\"from\" placeholder=\"{{'From'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"from\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #from></mat-datepicker>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field> \r\n <input matInput [matDatepicker]=\"to\" formControlName=\"to\" [min]=\"outOfOffice.controls['from'].value\" placeholder=\"{{'To'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"to\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #to></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <!--<hr />-->\r\n <div class=\"column\" formGroupName=\"grantAccess\">\r\n <h4 class=\"\">{{'GrantAccess'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n <mat-chip-row *ngFor=\"let u of grantAccess.value.users || []\"\r\n [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n </mat-chip-grid>\r\n <input [formControl]=\"grants\" placeholder=\"{{'Users'| translate}}\"\r\n [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n <mat-option *ngFor=\"let u of gusers$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n" }]
144
+ }], ctorParameters: () => [{ type: i1.AccountService }, { type: i2.MatDialogRef }, { type: i3.FormBuilder }, { type: undefined, decorators: [{
145
145
  type: Inject,
146
146
  args: [MAT_DIALOG_DATA]
147
- }] }]; }, propDecorators: { substitueInput: [{
147
+ }] }], propDecorators: { substitueInput: [{
148
148
  type: ViewChild,
149
149
  args: ['substitueInput', { read: MatInput }]
150
150
  }], grantInput: [{
151
151
  type: ViewChild,
152
152
  args: ['grantInput', { read: MatChipInput }]
153
153
  }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0b2ZvZmZpY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wcm9maWxlci9vdXRvZm9mZmljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3Byb2ZpbGVyL291dG9mb2ZmaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVaEQsTUFBTSxPQUFPLHFCQUFxQjtJQXVCaEMsWUFBb0IsU0FBeUIsRUFDbkMsVUFBK0MsRUFDL0MsR0FBZ0IsRUFFakIsS0FBc0I7UUFKWCxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUNuQyxlQUFVLEdBQVYsVUFBVSxDQUFxQztRQUMvQyxRQUFHLEdBQUgsR0FBRyxDQUFhO1FBRWpCLFVBQUssR0FBTCxLQUFL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QUFDLE1BQU0sQ0FBQyxLQUFlLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUs7WUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztZQUVsRCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQzsrR0E1SFUscUJBQXFCLHVHQTBCdEIsZUFBZTttR0ExQmQscUJBQXFCLGlKQUlLLFFBQVEsbUdBQ1osWUFBWSw2QkN6Qi9DLGk1R0FnRUE7OzRGRDVDYSxxQkFBcUI7a0JBRGpDLFNBQVM7OzswQkEyQkwsTUFBTTsyQkFBQyxlQUFlOzRDQXRCd0IsY0FBYztzQkFBOUQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQ0UsVUFBVTtzQkFBMUQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU5URVIsIENPTU1BLCBTRU1JQ09MT04gfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2tleWNvZGVzXCI7XHJcbmltcG9ydCB7IFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHNcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRha2VVbnRpbCwgZmlsdGVyLCBzd2l0Y2hNYXAsIG1hcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2NvcmUvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IE91dE9mT2ZmaWNlU2V0dGluZ3MsIEdyYW50U2V0dGluZ3MsIFVzZXJJbmZvLCB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPdXRPZk9mZmljZURhdGEge1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIG91dE9mT2ZmaWNlOiBPdXRPZk9mZmljZVNldHRpbmdzO1xyXG4gIGdyYW50QWNjZXNzOiBHcmFudFNldHRpbmdzO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHsgdGVtcGxhdGVVcmw6ICdvdXRvZm9mZmljZS5jb21wb25lbnQuaHRtbCcgfSlcclxuZXhwb3J0IGNsYXNzIFByb2ZpbGVTZXR0aW5nc0RpYWxvZyBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUEsIFNFTUlDT0xPTl07XHJcbiAgcmVhZG9ubHkgc3Vic3RpdHV0ZSA9IHRoaXMuX2ZiLmNvbnRyb2w8VXNlckluZm8gfCBzdHJpbmc+KG51bGwpO1xyXG4gIHJlYWRvbmx5IGdyYW50cyA9IHRoaXMuX2ZiLmNvbnRyb2woW10pO1xyXG4gIEBWaWV3Q2hpbGQoJ3N1YnN0aXR1ZUlucHV0JywgeyByZWFkOiBNYXRJbnB1dCB9KSBzdWJzdGl0dWVJbnB1dDogTWF0SW5wdXQ7XHJcbiAgQFZpZXdDaGlsZCgnZ3JhbnRJbnB1dCcsIHsgcmVhZDogTWF0Q2hpcElucHV0IH0pIGdyYW50SW5wdXQ6IE1hdENoaXBJbnB1dDtcclxuICByZWFkb25seSBvdXRPZk9mZmljZSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIGFjdGl2ZTogdGhpcy5fZmIuY29udHJvbChmYWxzZSksXHJcbiAgICBzdWJzdGl0dWVJZDogdGhpcy5fZmIuY29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcclxuICAgIGZyb206IHRoaXMuX2ZiLmNvbnRyb2w8RGF0ZSB8IG51bGw+KG51bGwpLFxyXG4gICAgdG86IHRoaXMuX2ZiLmNvbnRyb2w8RGF0ZSB8IG51bGw+KG51bGwpXHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgZ3JhbnRBY2Nlc3MgPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICBhY3RpdmU6IHRoaXMuX2ZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgdXNlcnM6IHRoaXMuX2ZiLmNvbnRyb2w8c3RyaW5nW10+KFtdKVxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICBvdXRPZk9mZmljZTogdGhpcy5vdXRPZk9mZmljZSxcclxuICAgIGdyYW50QWNjZXNzOiB0aGlzLmdyYW50QWNjZXNzXHJcbiAgfSk7XHJcbiAgb3VzZXJzJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICBndXNlcnMkOiBPYnNlcnZhYmxlPFVzZXJJbmZvW10+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hY2NvdW50czogQWNjb3VudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxQcm9maWxlU2V0dGluZ3NEaWFsb2c+LFxyXG4gICAgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpXHJcbiAgICBwdWJsaWMgbW9kZWw6IE91dE9mT2ZmaWNlRGF0YSkge1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwpO1xyXG4gICAgY29uc3QgeyBhY3RpdmUsIHRvLCBmcm9tIH0gPSB0aGlzLm91dE9mT2ZmaWNlLmNvbnRyb2xzO1xyXG4gICAgaWYgKCF0aGlzLm1vZGVsLm91dE9mT2ZmaWNlIHx8ICF0aGlzLm1vZGVsLm91dE9mT2ZmaWNlLmFjdGl2ZSkge1xyXG4gICAgICB0by5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgZnJvbS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgdGhpcy5zdWJzdGl0dXRlLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN1YnN0aXR1dGUuYWRkVmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgaWYgKCF0aGlzLm1vZGVsLm91dE9mT2ZmaWNlLmZyb20pXHJcbiAgICAgICAgdG8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGVsLm91dE9mT2ZmaWNlLnN1YnN0aXR1ZUlkICYmXHJcbiAgICAgIHRoaXMuX2FjY291bnRzLmdldCh0aGlzLm1vZGVsLm91dE9mT2ZmaWNlLnN1YnN0aXR1ZUlkKS5zdWJzY3JpYmUodSA9PlxyXG4gICAgICAgIHRoaXMuc3Vic3RpdHV0ZS5zZXRWYWx1ZSh1LCB7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xyXG4gICAgYWN0aXZlLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKSkpLlxyXG4gICAgICBzdWJzY3JpYmUoYWN0aXZlID0+IHtcclxuICAgICAgICBpZiAoYWN0aXZlKSB7XHJcbiAgICAgICAgICBmcm9tLmVuYWJsZSgpO1xyXG4gICAgICAgICAgZnJvbS52YWx1ZSAmJiB0by5lbmFibGUoKTtcclxuICAgICAgICAgIHRoaXMuc3Vic3RpdHV0ZS5lbmFibGUoKTtcclxuICAgICAgICAgIHRoaXMuc3Vic3RpdHV0ZS5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5zdWJzdGl0dWVJbnB1dC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGZyb20uZGlzYWJsZSgpO1xyXG4gICAgICAgICAgdG8uZGlzYWJsZSgpO1xyXG4gICAgICAgICAgdGhpcy5zdWJzdGl0dXRlLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgdGhpcy5zdWJzdGl0dXRlLmRpc2FibGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5vdXNlcnMkID0gdGhpcy5zdWJzdGl0dXRlLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKSksXHJcbiAgICAgIGZpbHRlcih2ID0+IGlzU3RyaW5nKHYpKSxcclxuICAgICAgc3dpdGNoTWFwKHYgPT4gdGhpcy5fYWNjb3VudHMuZmluZEFsbCh2IGFzIGFueSkpLFxyXG4gICAgICBtYXAociA9PiByLmZpbHRlcih1ID0+IHUuaWQgIT09IHRoaXMubW9kZWwudXNlcklkKSkpO1xyXG4gICAgZnJvbS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkpKS5cclxuICAgICAgc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICAgIGlmICh2KVxyXG4gICAgICAgICAgdG8uZW5hYmxlKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdG8uZGlzYWJsZSgpO1xyXG4gICAgICB9KTtcclxuICAgIGlmICghdGhpcy5tb2RlbC5ncmFudEFjY2VzcyB8fCAhdGhpcy5tb2RlbC5ncmFudEFjY2Vzcy5hY3RpdmUpIHtcclxuICAgICAgdGhpcy5ncmFudHMuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyYW50QWNjZXNzLmNvbnRyb2xzWydhY3RpdmUnXS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkpKS5cclxuICAgICAgc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgICB0aGlzLmdyYW50cy5lbmFibGUoKTtcclxuICAgICAgICAgIHRoaXMuZ3JhbnRzLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLmdyYW50SW5wdXQuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmdyYW50cy5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5ndXNlcnMkID0gdGhpcy5ncmFudHMudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2RpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKSxcclxuICAgICAgZmlsdGVyKHYgPT4gaXNTdHJpbmcodikpLFxyXG4gICAgICBzd2l0Y2hNYXAodiA9PiB0aGlzLl9hY2NvdW50cy5maW5kQWxsKHYgYXMgYW55KSksXHJcbiAgICAgIG1hcChyID0+IHIuZmlsdGVyKHUgPT4gdS5pZCAhPT0gdGhpcy5tb2RlbC51c2VySWQpKSk7XHJcbiAgfVxyXG4gIHVzZXJEaXNwbGF5ID0gKGl0ZW06IFVzZXJJbmZvKSA9PiB7XHJcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0ubmFtZSA6IG51bGw7XHJcbiAgfVxyXG4gIHNldElkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XHJcbiAgICBjb25zdCB7IGlkIH0gPSBldmVudC5vcHRpb24udmFsdWUgYXMgVXNlckluZm87XHJcbiAgICB0aGlzLm91dE9mT2ZmaWNlLmNvbnRyb2xzWydzdWJzdGl0dWVJZCddLnNldFZhbHVlKGlkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGlkXHJcbiAgICovXHJcbiAgcmVtb3ZlR3JhbnQoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdXNlcnMgPSB0aGlzLmZvcm0udmFsdWUuZ3JhbnRBY2Nlc3M/LnVzZXJzO1xyXG4gICAgY29uc3QgaW5kZXggPSB1c2Vycy5pbmRleE9mKGlkKTtcclxuXHJcbiAgICBpZiAoaW5kZXggPj0gMClcclxuICAgICAgdXNlcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHt9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGlucFxyXG4gICAqIEBwYXJhbSBldmVudFxyXG4gICAqL1xyXG4gIGFkZEdyYW50KGlucDogSFRNTElucHV0RWxlbWVudCwgZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVzZXJzID0gdGhpcy5mb3JtLnZhbHVlLmdyYW50QWNjZXNzPy51c2VycztcclxuICAgIGNvbnN0IGlkID0gZXZlbnQub3B0aW9uLnZhbHVlIGFzIHN0cmluZztcclxuICAgIGlmICghdXNlcnMpXHJcbiAgICAgIHRoaXMuZ3JhbnRBY2Nlc3MuY29udHJvbHNbJ3VzZXJzJ10uc2V0VmFsdWUoW2lkXSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHVzZXJzLnB1c2goaWQpO1xyXG4gICAgaW5wLnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7fSk7XHJcbiAgfVxyXG59XHJcbiIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlPnt7J1NldHRpbmdzJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCIgZm9ybUdyb3VwTmFtZT1cIm91dE9mT2ZmaWNlXCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cIm1hdC1ib2R5LXN0cm9uZ1wiPnt7J091dE9mT2ZmaWNlJ3x0cmFuc2xhdGV9fTwvaDM+XHJcbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIGZvcm1Db250cm9sTmFtZT1cImFjdGl2ZVwiPnt7J0FjdGl2ZScgfCB0cmFuc2xhdGV9fTwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgPGJyIC8+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZsZXhcIj5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInN1YnN0aXR1dGVcIiB0eXBlPVwic2VhcmNoXCIgW21hdEF1dG9jb21wbGV0ZV09XCJzYXV0b1wiICNzdWJzdGl0dWVJbnB1dFxyXG4gICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0Fzc29jaWF0ZScgfCB0cmFuc2xhdGVcIiBbcmVxdWlyZWRdPVwib3V0T2ZPZmZpY2UudmFsdWUuYWN0aXZlXCIgLz5cclxuICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjc2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwidXNlckRpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJzZXRJZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdSBvZiBvdXNlcnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwidVwiPlxyXG4gICAgICAgICAgICA8c3Bhbj57e3UubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwiZnJvbVwiIGZvcm1Db250cm9sTmFtZT1cImZyb21cIiBwbGFjZWhvbGRlcj1cInt7J0Zyb20nfCB0cmFuc2xhdGV9fVwiIC8+XHJcbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIFtmb3JdPVwiZnJvbVwiIG1hdFN1ZmZpeD48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjZnJvbT48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cInRvXCIgZm9ybUNvbnRyb2xOYW1lPVwidG9cIiBbbWluXT1cImZvcm0uY29udHJvbHNbJ2Zyb20nXS52YWx1ZVwiIHBsYWNlaG9sZGVyPVwie3snVG8nfCB0cmFuc2xhdGV9fVwiIC8+XHJcbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIFtmb3JdPVwidG9cIiBtYXRTdWZmaXg+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3RvPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS08aHIgLz4tLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIiBmb3JtR3JvdXBOYW1lPVwiZ3JhbnRBY2Nlc3NcIj5cclxuICAgICAgPGgzIGNsYXNzPVwibWF0LWJvZHktc3Ryb25nXCI+e3snR3JhbnRBY2Nlc3MnfHRyYW5zbGF0ZX19PC9oMz5cclxuICAgICAgPG1hdC1zbGlkZS10b2dnbGUgZm9ybUNvbnRyb2xOYW1lPVwiYWN0aXZlXCI+e3snQWN0aXZlJyB8IHRyYW5zbGF0ZX19PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1jaGlwLWdyaWQgI2dyYW50TGlzdCBbYXR0ci5hcmlhLWxhYmVsXT1cIlwiIFtkaXNhYmxlZF09XCIhZ3JhbnRBY2Nlc3MudmFsdWUuYWN0aXZlXCI+XHJcbiAgICAgICAgICA8bWF0LWNoaXAtcm93ICpuZ0Zvcj1cImxldCB1IG9mIGdyYW50QWNjZXNzLnZhbHVlLnVzZXJzIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJncmFudEFjY2Vzcy52YWx1ZS5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmVHcmFudCh1KVwiPlxyXG4gICAgICAgICAgICB7e3UgfCB1c2VyTmFtZSB8IGFzeW5jfX1cclxuICAgICAgICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvbWF0LWNoaXAtcm93PlxyXG4gICAgICAgIDwvbWF0LWNoaXAtZ3JpZD5cclxuICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sXT1cImdyYW50c1wiIHBsYWNlaG9sZGVyPVwie3snVXNlcnMnfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJncmFudEFjY2Vzcy52YWx1ZS5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImdyYW50QXV0b1wiXHJcbiAgICAgICAgICAgICAgICNncmFudElucHV0XHJcbiAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiZ3JhbnRMaXN0XCJcclxuICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiPlxyXG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNncmFudEF1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwiYWRkR3JhbnQoZ3JhbnRJbnB1dCwgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgZ3VzZXJzJCB8IGFzeW5jXCIgW3ZhbHVlXT1cInUuaWRcIj5cclxuICAgICAgICAgICAge3t1Lm5hbWV9fVxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInUuZW1haWxcIj4mbmJzcDsgLSB7e3UuZW1haWx9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJmb3JtLnZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkXCI+e3snT0snIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT57eydDYW5jZWwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0b2ZvZmZpY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wcm9maWxlci9vdXRvZm9mZmljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3Byb2ZpbGVyL291dG9mb2ZmaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVaEQsTUFBTSxPQUFPLHFCQUFxQjtJQXVCaEMsWUFBb0IsU0FBeUIsRUFDbkMsVUFBK0MsRUFDL0MsR0FBZ0IsRUFFakIsS0FBc0I7UUFKWCxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUNuQyxlQUFVLEdBQVYsVUFBVSxDQUFxQztRQUMvQyxRQUFHLEdBQUgsR0FBRyxDQUFhO1FBRWpCLFVBQUssR0FBTCxLQUFL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QUFDLE1BQU0sQ0FBQyxLQUFlLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUs7WUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztZQUVsRCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs4R0E1SFUscUJBQXFCLHVHQTBCdEIsZUFBZTtrR0ExQmQscUJBQXFCLGlKQUlLLFFBQVEsbUdBQ1osWUFBWSw2QkN6Qi9DLDIzR0FnRUE7OzJGRDVDYSxxQkFBcUI7a0JBRGpDLFNBQVM7OzswQkEyQkwsTUFBTTsyQkFBQyxlQUFlO3lDQXRCd0IsY0FBYztzQkFBOUQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQ0UsVUFBVTtzQkFBMUQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU5URVIsIENPTU1BLCBTRU1JQ09MT04gfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2tleWNvZGVzXCI7XHJcbmltcG9ydCB7IFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHNcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRha2VVbnRpbCwgZmlsdGVyLCBzd2l0Y2hNYXAsIG1hcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2NvcmUvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IE91dE9mT2ZmaWNlU2V0dGluZ3MsIEdyYW50U2V0dGluZ3MsIFVzZXJJbmZvLCB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPdXRPZk9mZmljZURhdGEge1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIG91dE9mT2ZmaWNlOiBPdXRPZk9mZmljZVNldHRpbmdzO1xyXG4gIGdyYW50QWNjZXNzOiBHcmFudFNldHRpbmdzO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHsgdGVtcGxhdGVVcmw6ICdvdXRvZm9mZmljZS5jb21wb25lbnQuaHRtbCcgfSlcclxuZXhwb3J0IGNsYXNzIFByb2ZpbGVTZXR0aW5nc0RpYWxvZyBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUEsIFNFTUlDT0xPTl07XHJcbiAgcmVhZG9ubHkgc3Vic3RpdHV0ZSA9IHRoaXMuX2ZiLmNvbnRyb2w8VXNlckluZm8gfCBzdHJpbmc+KG51bGwpO1xyXG4gIHJlYWRvbmx5IGdyYW50cyA9IHRoaXMuX2ZiLmNvbnRyb2woW10pO1xyXG4gIEBWaWV3Q2hpbGQoJ3N1YnN0aXR1ZUlucHV0JywgeyByZWFkOiBNYXRJbnB1dCB9KSBzdWJzdGl0dWVJbnB1dDogTWF0SW5wdXQ7XHJcbiAgQFZpZXdDaGlsZCgnZ3JhbnRJbnB1dCcsIHsgcmVhZDogTWF0Q2hpcElucHV0IH0pIGdyYW50SW5wdXQ6IE1hdENoaXBJbnB1dDtcclxuICByZWFkb25seSBvdXRPZk9mZmljZSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIGFjdGl2ZTogdGhpcy5fZmIuY29udHJvbChmYWxzZSksXHJcbiAgICBzdWJzdGl0dWVJZDogdGhpcy5fZmIuY29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcclxuICAgIGZyb206IHRoaXMuX2ZiLmNvbnRyb2w8RGF0ZSB8IG51bGw+KG51bGwpLFxyXG4gICAgdG86IHRoaXMuX2ZiLmNvbnRyb2w8RGF0ZSB8IG51bGw+KG51bGwpXHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgZ3JhbnRBY2Nlc3MgPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICBhY3RpdmU6IHRoaXMuX2ZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgdXNlcnM6IHRoaXMuX2ZiLmNvbnRyb2w8c3RyaW5nW10+KFtdKVxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICBvdXRPZk9mZmljZTogdGhpcy5vdXRPZk9mZmljZSxcclxuICAgIGdyYW50QWNjZXNzOiB0aGlzLmdyYW50QWNjZXNzXHJcbiAgfSk7IFxyXG4gIG91c2VycyQ6IE9ic2VydmFibGU8VXNlckluZm9bXT47XHJcbiAgZ3VzZXJzJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UHJvZmlsZVNldHRpbmdzRGlhbG9nPixcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxyXG4gICAgcHVibGljIG1vZGVsOiBPdXRPZk9mZmljZURhdGEpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsKTtcclxuICAgIGNvbnN0IHsgYWN0aXZlLCB0bywgZnJvbSB9ID0gdGhpcy5vdXRPZk9mZmljZS5jb250cm9scztcclxuICAgIGlmICghdGhpcy5tb2RlbC5vdXRPZk9mZmljZSB8fCAhdGhpcy5tb2RlbC5vdXRPZk9mZmljZS5hY3RpdmUpIHtcclxuICAgICAgdG8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIGZyb20uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIHRoaXMuc3Vic3RpdHV0ZS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zdWJzdGl0dXRlLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIGlmICghdGhpcy5tb2RlbC5vdXRPZk9mZmljZS5mcm9tKVxyXG4gICAgICAgIHRvLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb2RlbC5vdXRPZk9mZmljZS5zdWJzdGl0dWVJZCAmJlxyXG4gICAgICB0aGlzLl9hY2NvdW50cy5nZXQodGhpcy5tb2RlbC5vdXRPZk9mZmljZS5zdWJzdGl0dWVJZCkuc3Vic2NyaWJlKHUgPT5cclxuICAgICAgICB0aGlzLnN1YnN0aXR1dGUuc2V0VmFsdWUodSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcclxuICAgIGFjdGl2ZS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkpKS5cclxuICAgICAgc3Vic2NyaWJlKGFjdGl2ZSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICAgICAgZnJvbS5lbmFibGUoKTtcclxuICAgICAgICAgIGZyb20udmFsdWUgJiYgdG8uZW5hYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLnN1YnN0aXR1dGUuZW5hYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLnN1YnN0aXR1dGUuYWRkVmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIHRoaXMuc3Vic3RpdHVlSW5wdXQuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBmcm9tLmRpc2FibGUoKTtcclxuICAgICAgICAgIHRvLmRpc2FibGUoKTtcclxuICAgICAgICAgIHRoaXMuc3Vic3RpdHV0ZS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICAgIHRoaXMuc3Vic3RpdHV0ZS5kaXNhYmxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMub3VzZXJzJCA9IHRoaXMuc3Vic3RpdHV0ZS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkpLFxyXG4gICAgICBmaWx0ZXIodiA9PiBpc1N0cmluZyh2KSksXHJcbiAgICAgIHN3aXRjaE1hcCh2ID0+IHRoaXMuX2FjY291bnRzLmZpbmRBbGwodiBhcyBhbnkpKSxcclxuICAgICAgbWFwKHIgPT4gci5maWx0ZXIodSA9PiB1LmlkICE9PSB0aGlzLm1vZGVsLnVzZXJJZCkpKTtcclxuICAgIGZyb20udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2RpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKSkuXHJcbiAgICAgIHN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICBpZiAodilcclxuICAgICAgICAgIHRvLmVuYWJsZSgpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRvLmRpc2FibGUoKTtcclxuICAgICAgfSk7XHJcbiAgICBpZiAoIXRoaXMubW9kZWwuZ3JhbnRBY2Nlc3MgfHwgIXRoaXMubW9kZWwuZ3JhbnRBY2Nlc3MuYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuZ3JhbnRzLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ncmFudEFjY2Vzcy5jb250cm9sc1snYWN0aXZlJ10udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2RpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKSkuXHJcbiAgICAgIHN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgdGhpcy5ncmFudHMuZW5hYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLmdyYW50cy5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5ncmFudElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5ncmFudHMuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZ3VzZXJzJCA9IHRoaXMuZ3JhbnRzLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKSksXHJcbiAgICAgIGZpbHRlcih2ID0+IGlzU3RyaW5nKHYpKSxcclxuICAgICAgc3dpdGNoTWFwKHYgPT4gdGhpcy5fYWNjb3VudHMuZmluZEFsbCh2IGFzIGFueSkpLFxyXG4gICAgICBtYXAociA9PiByLmZpbHRlcih1ID0+IHUuaWQgIT09IHRoaXMubW9kZWwudXNlcklkKSkpO1xyXG4gIH1cclxuICB1c2VyRGlzcGxheSA9IChpdGVtOiBVc2VySW5mbykgPT4ge1xyXG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLm5hbWUgOiBudWxsO1xyXG4gIH1cclxuICBzZXRJZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xyXG4gICAgY29uc3QgeyBpZCB9ID0gZXZlbnQub3B0aW9uLnZhbHVlIGFzIFVzZXJJbmZvO1xyXG4gICAgdGhpcy5vdXRPZk9mZmljZS5jb250cm9sc1snc3Vic3RpdHVlSWQnXS5zZXRWYWx1ZShpZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBpZFxyXG4gICAqL1xyXG4gIHJlbW92ZUdyYW50KGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVzZXJzID0gdGhpcy5mb3JtLnZhbHVlLmdyYW50QWNjZXNzPy51c2VycztcclxuICAgIGNvbnN0IGluZGV4ID0gdXNlcnMuaW5kZXhPZihpZCk7XHJcblxyXG4gICAgaWYgKGluZGV4ID49IDApXHJcbiAgICAgIHVzZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7fSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBpbnBcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBhZGRHcmFudChpbnA6IEhUTUxJbnB1dEVsZW1lbnQsIGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB1c2VycyA9IHRoaXMuZm9ybS52YWx1ZS5ncmFudEFjY2Vzcz8udXNlcnM7XHJcbiAgICBjb25zdCBpZCA9IGV2ZW50Lm9wdGlvbi52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICBpZiAoIXVzZXJzKVxyXG4gICAgICB0aGlzLmdyYW50QWNjZXNzLmNvbnRyb2xzWyd1c2VycyddLnNldFZhbHVlKFtpZF0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB1c2Vycy5wdXNoKGlkKTtcclxuICAgIGlucC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe30pO1xyXG4gIH1cclxufVxyXG4iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT57eydTZXR0aW5ncycgfCB0cmFuc2xhdGUgfX08L2gyPlxyXG48bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtblwiIGZvcm1Hcm91cE5hbWU9XCJvdXRPZk9mZmljZVwiPlxyXG4gICAgICA8aDQgY2xhc3M9XCJcIj57eydPdXRPZk9mZmljZSd8dHJhbnNsYXRlfX08L2g0PlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBmb3JtQ29udHJvbE5hbWU9XCJhY3RpdmVcIj57eydBY3RpdmUnIHwgdHJhbnNsYXRlfX08L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgIDxiciAvPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJzdWJzdGl0dXRlXCIgdHlwZT1cInNlYXJjaFwiIFttYXRBdXRvY29tcGxldGVdPVwic2F1dG9cIiAjc3Vic3RpdHVlSW5wdXRcclxuICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBc3NvY2lhdGUnIHwgdHJhbnNsYXRlXCIgW3JlcXVpcmVkXT1cIm91dE9mT2ZmaWNlLnZhbHVlLmFjdGl2ZVwiIC8+XHJcbiAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI3NhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cInVzZXJEaXNwbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwic2V0SWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2Ygb3VzZXJzJCB8IGFzeW5jXCIgW3ZhbHVlXT1cInVcIj5cclxuICAgICAgICAgICAgPHNwYW4+e3t1Lm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cImZyb21cIiBmb3JtQ29udHJvbE5hbWU9XCJmcm9tXCIgcGxhY2Vob2xkZXI9XCJ7eydGcm9tJ3wgdHJhbnNsYXRlfX1cIiAvPlxyXG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBbZm9yXT1cImZyb21cIiBtYXRTdWZmaXg+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI2Zyb20+PC9tYXQtZGF0ZXBpY2tlcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICZuYnNwO1xyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD4gXHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwidG9cIiBmb3JtQ29udHJvbE5hbWU9XCJ0b1wiIFttaW5dPVwib3V0T2ZPZmZpY2UuY29udHJvbHNbJ2Zyb20nXS52YWx1ZVwiIHBsYWNlaG9sZGVyPVwie3snVG8nfCB0cmFuc2xhdGV9fVwiIC8+XHJcbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIFtmb3JdPVwidG9cIiBtYXRTdWZmaXg+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3RvPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS08aHIgLz4tLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIiBmb3JtR3JvdXBOYW1lPVwiZ3JhbnRBY2Nlc3NcIj5cclxuICAgICAgPGg0IGNsYXNzPVwiXCI+e3snR3JhbnRBY2Nlc3MnfHRyYW5zbGF0ZX19PC9oND5cclxuICAgICAgPG1hdC1zbGlkZS10b2dnbGUgZm9ybUNvbnRyb2xOYW1lPVwiYWN0aXZlXCI+e3snQWN0aXZlJyB8IHRyYW5zbGF0ZX19PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1jaGlwLWdyaWQgI2dyYW50TGlzdCBbYXR0ci5hcmlhLWxhYmVsXT1cIlwiIFtkaXNhYmxlZF09XCIhZ3JhbnRBY2Nlc3MudmFsdWUuYWN0aXZlXCI+XHJcbiAgICAgICAgICA8bWF0LWNoaXAtcm93ICpuZ0Zvcj1cImxldCB1IG9mIGdyYW50QWNjZXNzLnZhbHVlLnVzZXJzIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJncmFudEFjY2Vzcy52YWx1ZS5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmVHcmFudCh1KVwiPlxyXG4gICAgICAgICAgICB7e3UgfCB1c2VyTmFtZSB8IGFzeW5jfX1cclxuICAgICAgICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvbWF0LWNoaXAtcm93PlxyXG4gICAgICAgIDwvbWF0LWNoaXAtZ3JpZD5cclxuICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sXT1cImdyYW50c1wiIHBsYWNlaG9sZGVyPVwie3snVXNlcnMnfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJncmFudEFjY2Vzcy52YWx1ZS5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImdyYW50QXV0b1wiXHJcbiAgICAgICAgICAgICAgICNncmFudElucHV0XHJcbiAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiZ3JhbnRMaXN0XCJcclxuICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiPlxyXG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNncmFudEF1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwiYWRkR3JhbnQoZ3JhbnRJbnB1dCwgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgZ3VzZXJzJCB8IGFzeW5jXCIgW3ZhbHVlXT1cInUuaWRcIj5cclxuICAgICAgICAgICAge3t1Lm5hbWV9fVxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInUuZW1haWxcIj4mbmJzcDsgLSB7e3UuZW1haWx9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJmb3JtLnZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkXCI+e3snT0snIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT57eydDYW5jZWwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiJdfQ==
@@ -39,7 +39,7 @@ import * as i25 from "../../core/pipes/difference.pipe";
39
39
  import * as i26 from "../../core/pipes/duration.pipe";
40
40
  import * as i27 from "../../core/pipes/role.pipe";
41
41
  import * as i28 from "../../core/pipes/translate.pipe";
42
- export let ProfilerComponent = class ProfilerComponent {
42
+ let ProfilerComponent = class ProfilerComponent {
43
43
  /** ctor */
44
44
  constructor(_sb, _utilityRef, _session, _dialog, _documentInfo, _chat, _guide, _router, _cd, _pane, _translate, _accounts, _fb) {
45
45
  this._sb = _sb;
@@ -257,19 +257,20 @@ export let ProfilerComponent = class ProfilerComponent {
257
257
  this._destroy.next();
258
258
  this._destroy.complete();
259
259
  }
260
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProfilerComponent, deps: [{ token: i1.PromptService }, { token: i2.UtilityRef }, { token: i3.SessionService }, { token: i4.MatDialog }, { token: i5.DocumentInfo }, { token: i6.ChatInfo }, { token: i7.GuideService }, { token: i8.PanesRouter }, { token: i0.ChangeDetectorRef }, { token: i9.PaneRef }, { token: i10.TranslateService }, { token: i11.AccountService }, { token: i12.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
261
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProfilerComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["activity"], descendants: true }, { propertyName: "chartElement", first: true, predicate: ["activity"], descendants: true, read: ElementRef }, { propertyName: "assignTpl", first: true, predicate: ["assignTpl"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<div *ngIf=\"data\" class=\"row wrap\">\r\n <!-- info -->\r\n <mat-card class=\"flex\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <br />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-icon-button (click)=\"chat()\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings()\" [bizdocTooltip]=\"'Settings' | translate\" [disabled]=\"!data\" data-help=\"settings\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <mat-card class=\"flex\" data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- pending -->\r\n <mat-card class=\"flex\" data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-mdc-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody role=\"rowgroup\">\r\n <tr *ngFor=\"let r of data.pending\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-mdc-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- positions -->\r\n <mat-card class=\"flex\" data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.positions.length; else none\">\r\n <tr *ngFor=\"let p of data.positions\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\">{{p.value }}</td>\r\n <td class=\"mat-mdc-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-mdc-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</div>\r\n<!-- assign dialog -->\r\n<ng-template #assignTpl>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-mdc-card{margin:5px}.mat-mdc-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-mdc-table{width:100%}\n"], dependencies: [{ kind: "directive", type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i12.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i12.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i12.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i12.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i14.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightColor", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartDoubleClick", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { kind: "directive", type: i14.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { kind: "component", type: i15.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i15.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i15.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i15.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i15.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i16.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i17.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i18.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i17.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i19.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i20.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i21.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: i21.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i22.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: i23.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i24.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i13.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.DifferencePipe, name: "amDifference" }, { kind: "pipe", type: i26.DurationPipe, name: "amDuration" }, { kind: "pipe", type: i27.RolePipe, name: "role" }, { kind: "pipe", type: i28.TranslatePipe, name: "translate" }] }); }
260
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: ProfilerComponent, deps: [{ token: i1.PromptService }, { token: i2.UtilityRef }, { token: i3.SessionService }, { token: i4.MatDialog }, { token: i5.DocumentInfo }, { token: i6.ChatInfo }, { token: i7.GuideService }, { token: i8.PanesRouter }, { token: i0.ChangeDetectorRef }, { token: i9.PaneRef }, { token: i10.TranslateService }, { token: i11.AccountService }, { token: i12.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
261
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: ProfilerComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["activity"], descendants: true }, { propertyName: "chartElement", first: true, predicate: ["activity"], descendants: true, read: ElementRef }, { propertyName: "assignTpl", first: true, predicate: ["assignTpl"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\" matSuffix>search</mat-icon>\r\n </mat-form-field>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<div *ngIf=\"data\" class=\"row wrap\">\r\n <!-- info -->\r\n <mat-card class=\"flex\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <br />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-icon-button (click)=\"chat()\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings()\" [bizdocTooltip]=\"'Settings' | translate\" [disabled]=\"!data\" data-help=\"settings\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <mat-card class=\"flex\" data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- pending -->\r\n <mat-card class=\"flex\" data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-header-cell\"></td>\r\n <td class=\"mat-mdc-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody role=\"rowgroup\">\r\n <tr *ngFor=\"let r of data.pending\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-mdc-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- positions -->\r\n <mat-card class=\"flex\" data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.positions.length; else none\">\r\n <tr *ngFor=\"let p of data.positions\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\">{{p.value }}</td>\r\n <td class=\"mat-mdc-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-mdc-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</div>\r\n<!-- assign dialog -->\r\n<ng-template #assignTpl>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-mdc-card{margin:5px}.mat-mdc-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-mdc-table{width:100%}\n"], dependencies: [{ kind: "directive", type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i12.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i12.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i12.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i12.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i14.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightColor", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartDoubleClick", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { kind: "directive", type: i14.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { kind: "component", type: i15.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i15.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i15.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i15.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i15.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i16.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i17.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i18.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i17.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i19.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i19.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i20.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "aria-describedby", "panelClass", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i21.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i21.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i22.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: i23.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i24.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i13.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.DifferencePipe, name: "amDifference" }, { kind: "pipe", type: i26.DurationPipe, name: "amDuration" }, { kind: "pipe", type: i27.RolePipe, name: "role" }, { kind: "pipe", type: i28.TranslatePipe, name: "translate" }] }); }
262
262
  };
263
263
  ProfilerComponent = __decorate([
264
264
  BizDoc({ selector: 'bizdoc-user-profiler' })
265
265
  /** component*/
266
266
  ], ProfilerComponent);
267
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProfilerComponent, decorators: [{
267
+ export { ProfilerComponent };
268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: ProfilerComponent, decorators: [{
268
269
  type: Component,
269
270
  args: [{ host: {
270
271
  class: 'pane'
271
- }, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<div *ngIf=\"data\" class=\"row wrap\">\r\n <!-- info -->\r\n <mat-card class=\"flex\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <br />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-icon-button (click)=\"chat()\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings()\" [bizdocTooltip]=\"'Settings' | translate\" [disabled]=\"!data\" data-help=\"settings\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <mat-card class=\"flex\" data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- pending -->\r\n <mat-card class=\"flex\" data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-mdc-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody role=\"rowgroup\">\r\n <tr *ngFor=\"let r of data.pending\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-mdc-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- positions -->\r\n <mat-card class=\"flex\" data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.positions.length; else none\">\r\n <tr *ngFor=\"let p of data.positions\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\">{{p.value }}</td>\r\n <td class=\"mat-mdc-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-mdc-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</div>\r\n<!-- assign dialog -->\r\n<ng-template #assignTpl>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-mdc-card{margin:5px}.mat-mdc-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-mdc-table{width:100%}\n"] }]
272
- }], ctorParameters: function () { return [{ type: i1.PromptService }, { type: i2.UtilityRef }, { type: i3.SessionService }, { type: i4.MatDialog }, { type: i5.DocumentInfo }, { type: i6.ChatInfo }, { type: i7.GuideService }, { type: i8.PanesRouter }, { type: i0.ChangeDetectorRef }, { type: i9.PaneRef }, { type: i10.TranslateService }, { type: i11.AccountService }, { type: i12.FormBuilder }]; }, propDecorators: { chart: [{
272
+ }, template: "<mat-toolbar>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\" matSuffix>search</mat-icon>\r\n </mat-form-field>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<div *ngIf=\"data\" class=\"row wrap\">\r\n <!-- info -->\r\n <mat-card class=\"flex\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <br />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-icon-button (click)=\"chat()\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings()\" [bizdocTooltip]=\"'Settings' | translate\" [disabled]=\"!data\" data-help=\"settings\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <mat-card class=\"flex\" data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- pending -->\r\n <mat-card class=\"flex\" data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-header-cell\"></td>\r\n <td class=\"mat-mdc-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody role=\"rowgroup\">\r\n <tr *ngFor=\"let r of data.pending\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-mdc-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- positions -->\r\n <mat-card class=\"flex\" data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-mdc-table\" *ngIf=\"data.positions.length; else none\">\r\n <tr *ngFor=\"let p of data.positions\" class=\"mat-mdc-row\">\r\n <td class=\"mat-mdc-cell\">{{p.value }}</td>\r\n <td class=\"mat-mdc-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-mdc-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</div>\r\n<!-- assign dialog -->\r\n<ng-template #assignTpl>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-mdc-card{margin:5px}.mat-mdc-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-mdc-table{width:100%}\n"] }]
273
+ }], ctorParameters: () => [{ type: i1.PromptService }, { type: i2.UtilityRef }, { type: i3.SessionService }, { type: i4.MatDialog }, { type: i5.DocumentInfo }, { type: i6.ChatInfo }, { type: i7.GuideService }, { type: i8.PanesRouter }, { type: i0.ChangeDetectorRef }, { type: i9.PaneRef }, { type: i10.TranslateService }, { type: i11.AccountService }, { type: i12.FormBuilder }], propDecorators: { chart: [{
273
274
  type: ViewChild,
274
275
  args: ['activity']
275
276
  }], chartElement: [{
@@ -282,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
282
283
  type: HostListener,
283
284
  args: ['window:keydown.f1', ['$event']]
284
285
  }] } });
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wcm9maWxlci9wcm9maWxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3Byb2ZpbGVyL3Byb2ZpbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBa0MsVUFBVSxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBbUIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVzFFLFdBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBcUQ1QixXQUFXO0lBQ1gsWUFBb0IsR0FB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QUFTLEdBQUcsRUFBRSxDQUFDO1lBQzdCLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGFBQWEsQ0FBQyxDQUEwQjtRQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7K0dBeE9VLGlCQUFpQjttR0FBakIsaUJBQWlCLG9UQUdHLFVBQVUsc0hDdEMzQyxrOUpBOEdBOztBRDNFYSxpQkFBaUI7SUFGN0IsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDN0MsZUFBZTtHQUNGLGlCQUFpQixDQXlPN0I7NEZBek9ZLGlCQUFpQjtrQkFUN0IsU0FBUzsyQkFHRjt3QkFDSixLQUFLLEVBQUUsTUFBTTtxQkFDZDt3YUFNc0IsS0FBSztzQkFBM0IsU0FBUzt1QkFBQyxVQUFVO2dCQUN3QixZQUFZO3NCQUF4RCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ25CLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFpRnRCLEtBQUs7c0JBREosWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE9uRGVzdHJveSwgVGVtcGxhdGVSZWYsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBDT01NQSwgRU5URVIsIFNFTUlDT0xPTiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IEF4aXNNb2RlbCwgQm9yZGVyTW9kZWwsIENoYXJ0Q29tcG9uZW50LCBJUG9pbnRFdmVudEFyZ3MsIElUb29sdGlwUmVuZGVyRXZlbnRBcmdzLCBMZWdlbmRTZXJpZXNNb2RlbCwgTWFya2VyT3B0aW9uc01vZGVsLCBTZXJpZXNNb2RlbCwgVG9vbHRpcFNldHRpbmdzTW9kZWwsIFpvb21TZXR0aW5nc01vZGVsIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGRlYm91bmNlVGltZSwgc3dpdGNoTWFwLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IEdyYW50U2V0dGluZ3MsIEd1aWRlU3RlcCwgT3V0T2ZPZmZpY2VTZXR0aW5ncywgVXNlckluZm8gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tICcuLi91dGlsaXR5LXJlZic7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IERvY3VtZW50SW5mbyB9IGZyb20gJy4uLy4uL2NvcmUvaW5mby9kb2N1bWVudC1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR3VpZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9ndWlkZS9ndWlkZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGT05UX0ZBTUlMWSB9IGZyb20gJy4uLy4uL2NvcmUvY29sb3JzJztcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhdEluZm8gfSBmcm9tICcuLi8uLi9jaGF0L2NoYXQtaW5mbyc7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3BhbmUtcmVmJztcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IFByb2ZpbGVTZXR0aW5nc0RpYWxvZywgT3V0T2ZPZmZpY2VEYXRhIH0gZnJvbSAnLi9vdXRvZm9mZmljZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2ZpbGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9maWxlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAncGFuZSdcclxuICB9LFxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtdXNlci1wcm9maWxlcicgfSlcclxuLyoqIGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBQcm9maWxlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICByZWFkb25seSBzZWFyY2ggPSB0aGlzLl9mYi5jb250cm9sKG51bGwpO1xyXG4gIEBWaWV3Q2hpbGQoJ2FjdGl2aXR5JykgY2hhcnQ6IENoYXJ0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2FjdGl2aXR5JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNoYXJ0RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhc3NpZ25UcGwnKSBhc3NpZ25UcGw6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgcmVhZG9ubHkgd2hvID0gdGhpcy5fZmIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICByZWFkb25seSBwcmltYXJ5WEF4aXMgPSB7XHJcbiAgICB2YWx1ZVR5cGU6ICdEYXRlVGltZScsXHJcbiAgICBsYWJlbEZvcm1hdDogJ01NTSBkZCcsXHJcbiAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfSBhcyBBeGlzTW9kZWw7XHJcbiAgcmVhZG9ubHkgcHJpbWFyeVlBeGlzID0ge1xyXG4gICAgbGFiZWxTdHlsZToge1xyXG4gICAgICBzaXplOiAnMHB4J1xyXG4gICAgfSxcclxuICB9IGFzIEF4aXNNb2RlbDtcclxuICByZWFkb25seSB6b29tU2V0dGluZ3M6IFpvb21TZXR0aW5nc01vZGVsID0ge1xyXG4gICAgZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IHRydWUsXHJcbiAgICBlbmFibGVQaW5jaFpvb21pbmc6IHRydWUsXHJcbiAgICB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsXHJcbiAgICBlbmFibGVTY3JvbGxiYXI6IHRydWVcclxuICB9O1xyXG4gIHJlYWRvbmx5IHRvb2x0aXA6IFRvb2x0aXBTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gICAgc2hhcmVkOiB0cnVlLFxyXG4gICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfTtcclxuICByZWFkb25seSBsZWdlbmQ6IExlZ2VuZFNlcmllc01vZGVsID0ge1xyXG4gICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgIH1cclxuICB9O1xyXG4gIHJlYWRvbmx5IGJvcmRlciA9IHsgd2lkdGg6IDAgfSBhcyBCb3JkZXJNb2RlbDtcclxuICByZWFkb25seSBtYXJrZXI6IE1hcmtlck9wdGlvbnNNb2RlbCA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICB3aWR0aDogMTAsXHJcbiAgICBoZWlnaHQ6IDEwXHJcbiAgfVxyXG4gIHVzZXJzJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICBhc3NpZ25hYmxlJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICBwYWxldHRlczogc3RyaW5nW10gPSB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgdGhlbWU6ICdNYXRlcmlhbCcgfCAnTWF0ZXJpYWxEYXJrJyA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICBkYXRhOiBQcm9maWxlSW5mbztcclxuICBjb2xzID0gMjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICByZWFkb25seSBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdID0gW0VOVEVSLCBDT01NQSwgU0VNSUNPTE9OXTtcclxuICBwcml2YXRlIF91c2VySWQ6IHN0cmluZztcclxuICAvKiogY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdXRpbGl0eVJlZjogVXRpbGl0eVJlZjxib29sZWFuLCBQcm9maWxlck1vZGVsLCBQcm9maWxlSW5mbywgc3RyaW5nPixcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudEluZm86IERvY3VtZW50SW5mbyxcclxuICAgIHByaXZhdGUgX2NoYXQ6IENoYXRJbmZvLFxyXG4gICAgcHJpdmF0ZSBfZ3VpZGU6IEd1aWRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUGFuZXNSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9wYW5lOiBQYW5lUmVmPFByb2ZpbGVyQ29tcG9uZW50PixcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy5jb2xzID0gMjtcclxuICAgIF9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgIHRoaXMudGhlbWUgPSB0LmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgICAgIHRoaXMucGFsZXR0ZXMgPSBfc2Vzc2lvbi5hY2NlbnRQYWxldHRlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGFuZS5xdWVyeVBhcmFtc0NoYW5nZSgpLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgY29uc3QgeyB1c2VySWQgfSA9IHA7XHJcbiAgICAgIHVzZXJJZCAmJiB0aGlzLl9vcGVuKHVzZXJJZCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3BhbmUucmVzaXplZCgpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGFydD8uY2hhcnRSZXNpemUoKSk7XHJcbiAgICB0aGlzLnVzZXJzJCA9IHRoaXMuc2VhcmNoLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcclxuICAgICAgZGVib3VuY2VUaW1lKDI1MCksXHJcbiAgICAgIGZpbHRlcih2ID0+ICFpc09iamVjdCh2KSksXHJcbiAgICAgIHN3aXRjaE1hcCh2ID0+IHRoaXMuX2FjY291bnRzLmZpbmRBbGwodikpKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uZjEnLCBbJyRldmVudCddKVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3Qgc3RlcHM6IEd1aWRlU3RlcFtdID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1zZXR0aW5nc10nLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ091dE9mT2ZmaWNlSGVscCcpXHJcbiAgICAgIH0pO1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmRhdGEuYWN0aXZpdHkpLmxlbmd0aCAmJlxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPWFjdGl2aXR5XScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpdml0eUhlbHAnKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGEucGVuZGluZy5sZW5ndGggJiZcclxuICAgICAgICBzdGVwcy5wdXNoKHtcclxuICAgICAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1wZW5kaW5nXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQZW5kaW5nSGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGF0YS5wb3NpdGlvbnMubGVuZ3RoICYmXHJcbiAgICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9cG9zaXRpb25zXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQb3NpdGlvbnNIZWxwJylcclxuICAgICAgICB9KTtcclxuICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXJlYXNzaWduXScsXHJcbiAgICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnUmVhc3NpZ25IZWxwJylcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHN0ZXBzLnB1c2goe1xyXG4gICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9c2VhcmNoXScsXHJcbiAgICAgIHBvc2l0aW9uOiAnQmVsb3cnLFxyXG4gICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQcm9maWxlclNlYXJjaEhlbHAnKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9ndWlkZS5zdGFydCh7XHJcbiAgICAgIG5hbWU6ICdwcm9maWxlcicsXHJcbiAgICAgIHN0ZXBzXHJcbiAgICB9KTtcclxuICAgIGV2dCAmJiBldnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbiAgY2hhbmdlKGV2dDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xyXG4gICAgY29uc3QgeyBpZDogdXNlcklkIH0gPSBldnQub3B0aW9uLnZhbHVlO1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7IHF1ZXJ5UGFyYW1zOiB7IHVzZXJJZCB9IH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gdXNlcklkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfb3Blbih1c2VySWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdXNlcklkID0gdXNlcklkO1xyXG4gICAgdGhpcy5fdXRpbGl0eVJlZi5wb3B1bGF0ZSh1c2VySWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IGU7XHJcbiAgICAgICAgdGhpcy5zZWFyY2gucmVzZXQobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB3aGlsZSAodGhpcy5jaGFydC5zZXJpZXMubGVuZ3RoKVxyXG4gICAgICAgICAgdGhpcy5jaGFydD8ucmVtb3ZlU2VyaWVzKDApO1xyXG4gICAgICAgIHRoaXMuY2hhcnQ/LmFkZFNlcmllcyh0aGlzLl9zZXJpZXMoKSk7XHJcbiAgICAgIH0sIGVycm9yOiAoKSA9PiB0aGlzLl9zYi5lcnJvcigpXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqICovXHJcbiAgcHJpdmF0ZSBfc2VyaWVzKCk6IFNlcmllc01vZGVsW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZGF0YS5hY3Rpdml0eSkubWFwKGEgPT4ge1xyXG4gICAgICBjb25zdCBsb2cgPSB0aGlzLmRhdGEuYWN0aXZpdHlbYV07XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogJ1NjYXR0ZXInLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuX2FjdGlvbk5hbWUoYSksXHJcbiAgICAgICAgeE5hbWU6ICd0aW1lJyxcclxuICAgICAgICB5TmFtZTogJ2R1cmF0aW9uJyxcclxuICAgICAgICBkYXRhU291cmNlOiBsb2cubWFwKGwgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGwuaWQsXHJcbiAgICAgICAgICAgIHRpbWU6IG5ldyBEYXRlKGwudGltZSksXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiBsLmR1cmF0aW9uXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FjdGlvbk5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgcmV0dXJuIGFjdGlvbiA/IGFjdGlvbi5wYXN0IHx8IGFjdGlvbi50aXRsZSA6IG5hbWU7XHJcbiAgfVxyXG4gIHBvaW50Q2xpY2soZXZ0OiBJUG9pbnRFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IHsgaWQgfSA9IGV2dC5zZXJpZXMuZGF0YVNvdXJjZVtldnQucG9pbnRJbmRleF07XHJcbiAgICB0aGlzLl9kb2N1bWVudEluZm8ub3BlbihpZCk7XHJcbiAgfVxyXG4gIHVzZXJEaXNwbGF5KGl0ZW06IFVzZXJJbmZvKSB7XHJcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0ubmFtZSA6IG51bGw7XHJcbiAgfVxyXG4gIHRyYWNlKGlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ2FkbWluJywgJ3Rvb2xzJywgJ2RvY3VtZW50LXRyYWNlJ10sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgZG9jdW1lbnRJZDogaWQuZW5jb2RlSWQoKSB9LFxyXG4gICAgICBwb2xpY3k6IE9wZW5Qb2xpY3kuRGVmZXIgfCBPcGVuUG9saWN5LlBpbm5hYmxlXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY2hhdCgpIHtcclxuICAgIHRoaXMuX2NoYXQub3Blbih0aGlzLl91c2VySWQpO1xyXG4gIH1cclxuICByZWFzc2lnbihwb3NpdGlvbj86IFBvc2l0aW9uSW5mbykge1xyXG4gICAgdGhpcy5hc3NpZ25hYmxlJCA9IHRoaXMuX2FjY291bnRzLmZpbmRBbGwoKS5waXBlKG1hcCh1ID0+IHUuZmlsdGVyKHUgPT4gdS5pZCAhPT0gdGhpcy5fdXNlcklkKSkpO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4odGhpcy5hc3NpZ25UcGwsIHt9KS5hZnRlckNsb3NlZCgpLlxyXG4gICAgICBzdWJzY3JpYmUodSA9PlxyXG4gICAgICAgIHUgJiYgdGhpcy5fcmVhc3NpZ24odSwgcG9zaXRpb24pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIHNldHRpbmdzKCkge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oUHJvZmlsZVNldHRpbmdzRGlhbG9nLCB7XHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdXNlcklkOiB0aGlzLl91c2VySWQsXHJcbiAgICAgICAgZ3JhbnRBY2Nlc3M6IHRoaXMuZGF0YS5ncmFudEFjY2VzcyxcclxuICAgICAgICBvdXRPZk9mZmljZTogdGhpcy5kYXRhLm91dE9mT2ZmaWNlXHJcbiAgICAgIH0gYXMgT3V0T2ZPZmZpY2VEYXRhXHJcbiAgICB9KS5hZnRlckNsb3NlZCgpLlxyXG4gICAgICBzdWJzY3JpYmUodiA9PlxyXG4gICAgICAgIHYgJiYgdGhpcy5fdXRpbGl0eVJlZi5leGVjdXRlKHtcclxuICAgICAgICAgIG91dE9mT2ZmaWNlOiB2Lm91dE9mT2ZmaWNlLFxyXG4gICAgICAgICAgZ3JhbnRBY2Nlc3M6IHYuZ3JhbnRBY2Nlc3MsXHJcbiAgICAgICAgICB1c2VySWQ6IHRoaXMuX3VzZXJJZFxyXG4gICAgICAgIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXRhLCB2KTtcclxuICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ0NoYW5nZXNTYXZlZCcpO1xyXG4gICAgICAgICAgfSwgZXJyb3I6ICgpID0+XHJcbiAgICAgICAgICAgIHRoaXMuX3NiLmVycm9yKClcclxuICAgICAgICB9KSk7XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgX3JlYXNzaWduKHdobzogc3RyaW5nLCBwb3NpdGlvbj86IFBvc2l0aW9uSW5mbykge1xyXG4gICAgdGhpcy5fdXRpbGl0eVJlZi5leGVjdXRlKHsgcmVhc3NpZ246IHsgd2hvLCAuLi5wb3NpdGlvbiB9LCB1c2VySWQ6IHRoaXMuX3VzZXJJZCB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2IudG9hc3QoJ0Fzc2lnbmVkJyk7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uKVxyXG4gICAgICAgICAgdGhpcy5kYXRhLnBvc2l0aW9ucy5yZW1vdmUocG9zaXRpb24pO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuZGF0YS5wb3NpdGlvbnMgPSBbXTtcclxuICAgICAgfSwgZXJyb3I6ICgpID0+XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRvb2x0aXBSZW5kZXIoZTogSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MpIHtcclxuICAgIGUudGV4dCA9IGAke2RheWpzLmR1cmF0aW9uKGUucG9pbnQueSBhcyBudW1iZXIsICdzJykuaHVtYW5pemUoKX1gO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5cclxuaW50ZXJmYWNlIFByb2ZpbGVJbmZvIHtcclxuICBvdXRPZk9mZmljZTogT3V0T2ZPZmZpY2VTZXR0aW5ncztcclxuICBncmFudEFjY2VzczogR3JhbnRTZXR0aW5ncztcclxuICBwb3NpdGlvbnM6IFBvc2l0aW9uSW5mb1tdO1xyXG4gIGFjdGl2aXR5OiB7XHJcbiAgICBbYWN0aW9uOiBzdHJpbmddOiB7XHJcbiAgICAgIGlkOiBudW1iZXI7XHJcbiAgICAgIC8qKiBzZWNvbmRzICovXHJcbiAgICAgIGR1cmF0aW9uOiBudW1iZXI7XHJcbiAgICAgIG51bWJlcjogc3RyaW5nO1xyXG4gICAgICB0aW1lOiBEYXRlO1xyXG4gICAgfVtdXHJcbiAgfTtcclxuICBwZW5kaW5nOiB7XHJcbiAgICBpZDogbnVtYmVyO1xyXG4gICAgcmVjZWl2ZWQ6IERhdGU7XHJcbiAgICBudW1iZXI6IHN0cmluZztcclxuICB9W107XHJcbiAgaW5mbzogVXNlckluZm87XHJcbn1cclxuaW50ZXJmYWNlIFBvc2l0aW9uSW5mbyB7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgcm9sZTogc3RyaW5nO1xyXG59XHJcbmludGVyZmFjZSBQcm9maWxlck1vZGVsIHtcclxuICBvdXRPZk9mZmljZT86IE91dE9mT2ZmaWNlU2V0dGluZ3M7XHJcbiAgZ3JhbnRBY2Nlc3M/OiBHcmFudFNldHRpbmdzO1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIHJlYXNzaWduPzoge1xyXG4gICAgd2hvOiBzdHJpbmc7XHJcbiAgICByb2xlPzogc3RyaW5nO1xyXG4gICAga2V5PzogYW55O1xyXG4gIH1cclxufVxyXG5cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxtYXQtaWNvbiAoY2xpY2spPVwibnVsbFwiIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJzZWFyY2hcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoXCIgZGF0YS1oZWxwPVwic2VhcmNoXCIgd2lkdGg9XCIyMFwiIC8+XHJcbiAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwidXNlckRpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJjaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgdXNlcnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwidVwiPlxyXG4gICAgICA8c3Bhbj57e3UubmFtZX19PC9zcGFuPlxyXG4gICAgPC9tYXQtb3B0aW9uPlxyXG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImd1aWRlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInSGVscCcgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+aGVscF9vdXRsaW5lPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPGRpdiAqbmdJZj1cImRhdGFcIiBjbGFzcz1cInJvdyB3cmFwXCI+XHJcbiAgPCEtLSBpbmZvIC0tPlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImZsZXhcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICA8c3Bhbj57e2RhdGEuaW5mby5uYW1lfX08L3NwYW4+XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8YnIgLz5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2hhdCgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NoYXQnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIiFkYXRhXCI+PG1hdC1pY29uPmNoYXQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzZXR0aW5ncygpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1NldHRpbmdzJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGF0YVwiIGRhdGEtaGVscD1cInNldHRpbmdzXCI+PG1hdC1pY29uPnNldHRpbmdzPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuICA8L21hdC1jYXJkPlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImZsZXhcIiBkYXRhLWhlbHA9XCJhY3Rpdml0eVwiPlxyXG4gICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgIHt7J0FjdGl2aXR5JyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8ZWpzLWNoYXJ0ICNhY3Rpdml0eSBbcHJpbWFyeVhBeGlzXT1cInByaW1hcnlYQXhpc1wiIFtwcmltYXJ5WUF4aXNdPVwicHJpbWFyeVlBeGlzXCIgW3pvb21TZXR0aW5nc109XCJ6b29tU2V0dGluZ3NcIiBbdG9vbHRpcF09J3Rvb2x0aXAnICh0b29sdGlwUmVuZGVyKT1cInRvb2x0aXBSZW5kZXIoJGV2ZW50KVwiIFtwYWxldHRlc109XCJwYWxldHRlc1wiIGJhY2tncm91bmQ9XCJ0cmFuc3BhcmVudFwiIFt0aGVtZV09J3RoZW1lJyBbYm9yZGVyXT1cImJvcmRlclwiIChwb2ludENsaWNrKT1cInBvaW50Q2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgIDxlLXNlcmllcy1jb2xsZWN0aW9uPlxyXG4gICAgICAgIDwvZS1zZXJpZXMtY29sbGVjdGlvbj5cclxuICAgICAgPC9lanMtY2hhcnQ+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgPC9tYXQtY2FyZD5cclxuICA8IS0tIHBlbmRpbmcgLS0+XHJcbiAgPG1hdC1jYXJkIGNsYXNzPVwiZmxleFwiIGRhdGEtaGVscD1cInBlbmRpbmdcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICB7eydQZW5kaW5nJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJtYXQtbWRjLXRhYmxlXCIgKm5nSWY9XCJkYXRhLnBlbmRpbmcubGVuZ3RoOyBlbHNlIG5vbmVcIj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICA8dHIgY2xhc3M9XCJtYXQtbWRjLXJvd1wiPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj48L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj48L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keSByb2xlPVwicm93Z3JvdXBcIj5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgciBvZiBkYXRhLnBlbmRpbmdcIiBjbGFzcz1cIm1hdC1tZGMtcm93XCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1tZGMtY2VsbFwiPjxhIChjbGljayk9XCJ0cmFjZShyLmlkKVwiPnt7ci5udW1iZXJ9fTwvYT48L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIj57eyByLnJlY2VpdmVkIHwgYW1EaWZmZXJlbmNlIDogbnVsbCA6ICdzJyB8IGFtRHVyYXRpb24gOiAncyd9fTwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgPC9tYXQtY2FyZD5cclxuICA8IS0tIHBvc2l0aW9ucyAtLT5cclxuICA8bWF0LWNhcmQgY2xhc3M9XCJmbGV4XCIgZGF0YS1oZWxwPVwicG9zaXRpb25zXCI+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAge3snUG9zaXRpb25zJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJtYXQtbWRjLXRhYmxlXCIgKm5nSWY9XCJkYXRhLnBvc2l0aW9ucy5sZW5ndGg7IGVsc2Ugbm9uZVwiPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcCBvZiBkYXRhLnBvc2l0aW9uc1wiIGNsYXNzPVwibWF0LW1kYy1yb3dcIj5cclxuICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1tZGMtY2VsbFwiPnt7cC52YWx1ZSB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIj57e3Aucm9sZSB8IHJvbGV9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlYXNzaWduKHApXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1JlYXNzaWduJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zd2FwX2hvcml6PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZWFzc2lnbigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1JlYXNzaWduQWxsJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGF0YSB8fCAhZGF0YS5wb3NpdGlvbnMubGVuZ3RoXCIgZGF0YS1oZWxwPVwicmVhc3NpZ25cIj48bWF0LWljb24+c3dhcF9ob3JpejwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcbiAgPC9tYXQtY2FyZD5cclxuPC9kaXY+XHJcbjwhLS0gYXNzaWduIGRpYWxvZyAtLT5cclxuPG5nLXRlbXBsYXRlICNhc3NpZ25UcGw+XHJcbiAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3snUmVhc3NpZ24nIHwgdHJhbnNsYXRlIH19PC9oMj5cclxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gICAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJjb2x1bW5cIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwie3snV2hvJyB8IHRyYW5zbGF0ZX19XCIgW2Zvcm1Db250cm9sXT1cIndob1wiIHJlcXVpcmVkPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgYXNzaWduYWJsZSQgfCBhc3luY1wiIFt2YWx1ZV09XCJ1LmlkXCI+e3t1Lm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJ3aG8udmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIXdoby52YWxpZFwiPnt7J09LJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT57eydDYW5jZWwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNub25lPlxyXG4gIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktMlwiPnt7J05vbmUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wcm9maWxlci9wcm9maWxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3Byb2ZpbGVyL3Byb2ZpbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBa0MsVUFBVSxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBbUIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVzFFLElBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBcUQ1QixXQUFXO0lBQ1gsWUFBb0IsR0FB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QUFTLEdBQUcsRUFBRSxDQUFDO1lBQzdCLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGFBQWEsQ0FBQyxDQUEwQjtRQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBeE9VLGlCQUFpQjtrR0FBakIsaUJBQWlCLG9UQUdHLFVBQVUsc0hDdEMzQyw2aktBZ0hBOztBRDdFYSxpQkFBaUI7SUFGN0IsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDN0MsZUFBZTtHQUNGLGlCQUFpQixDQXlPN0I7OzJGQXpPWSxpQkFBaUI7a0JBVDdCLFNBQVM7MkJBR0Y7d0JBQ0osS0FBSyxFQUFFLE1BQU07cUJBQ2Q7c1pBTXNCLEtBQUs7c0JBQTNCLFNBQVM7dUJBQUMsVUFBVTtnQkFDd0IsWUFBWTtzQkFBeEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNuQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBaUZ0QixLQUFLO3NCQURKLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgT25Jbml0LCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgQ09NTUEsIEVOVEVSLCBTRU1JQ09MT04gfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBBeGlzTW9kZWwsIEJvcmRlck1vZGVsLCBDaGFydENvbXBvbmVudCwgSVBvaW50RXZlbnRBcmdzLCBJVG9vbHRpcFJlbmRlckV2ZW50QXJncywgTGVnZW5kU2VyaWVzTW9kZWwsIE1hcmtlck9wdGlvbnNNb2RlbCwgU2VyaWVzTW9kZWwsIFRvb2x0aXBTZXR0aW5nc01vZGVsLCBab29tU2V0dGluZ3NNb2RlbCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0cyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIHN3aXRjaE1hcCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBHcmFudFNldHRpbmdzLCBHdWlkZVN0ZXAsIE91dE9mT2ZmaWNlU2V0dGluZ3MsIFVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5UmVmIH0gZnJvbSAnLi4vdXRpbGl0eS1yZWYnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEb2N1bWVudEluZm8gfSBmcm9tICcuLi8uLi9jb3JlL2luZm8vZG9jdW1lbnQtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEd1aWRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZ3VpZGUvZ3VpZGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRk9OVF9GQU1JTFkgfSBmcm9tICcuLi8uLi9jb3JlL2NvbG9ycyc7XHJcbmltcG9ydCB7IFBhbmVzUm91dGVyIH0gZnJvbSAnLi4vLi4vY29yZS9zbG90cy9yb3V0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENoYXRJbmZvIH0gZnJvbSAnLi4vLi4vY2hhdC9jaGF0LWluZm8nO1xyXG5pbXBvcnQgeyBQYW5lUmVmIH0gZnJvbSAnLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZic7XHJcbmltcG9ydCB7IE9wZW5Qb2xpY3kgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBQcm9maWxlU2V0dGluZ3NEaWFsb2csIE91dE9mT2ZmaWNlRGF0YSB9IGZyb20gJy4vb3V0b2ZvZmZpY2UuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZmlsZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ3BhbmUnXHJcbiAgfSxcclxufSlcclxuQEJpekRvYyh7IHNlbGVjdG9yOiAnYml6ZG9jLXVzZXItcHJvZmlsZXInIH0pXHJcbi8qKiBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgUHJvZmlsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcmVhZG9ubHkgc2VhcmNoID0gdGhpcy5fZmIuY29udHJvbChudWxsKTtcclxuICBAVmlld0NoaWxkKCdhY3Rpdml0eScpIGNoYXJ0OiBDaGFydENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhY3Rpdml0eScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjaGFydEVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYXNzaWduVHBsJykgYXNzaWduVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHJlYWRvbmx5IHdobyA9IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgcmVhZG9ubHkgcHJpbWFyeVhBeGlzID0ge1xyXG4gICAgdmFsdWVUeXBlOiAnRGF0ZVRpbWUnLFxyXG4gICAgbGFiZWxGb3JtYXQ6ICdNTU0gZGQnLFxyXG4gICAgbGFiZWxTdHlsZToge1xyXG4gICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgfVxyXG4gIH0gYXMgQXhpc01vZGVsO1xyXG4gIHJlYWRvbmx5IHByaW1hcnlZQXhpcyA9IHtcclxuICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgc2l6ZTogJzBweCdcclxuICAgIH0sXHJcbiAgfSBhcyBBeGlzTW9kZWw7XHJcbiAgcmVhZG9ubHkgem9vbVNldHRpbmdzOiBab29tU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiB0cnVlLFxyXG4gICAgZW5hYmxlUGluY2hab29taW5nOiB0cnVlLFxyXG4gICAgdG9vbGJhckl0ZW1zOiBbXSxcclxuICAgIGVuYWJsZVNlbGVjdGlvblpvb21pbmc6IGZhbHNlLFxyXG4gICAgZW5hYmxlU2Nyb2xsYmFyOiB0cnVlXHJcbiAgfTtcclxuICByZWFkb25seSB0b29sdGlwOiBUb29sdGlwU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIGVuYWJsZTogdHJ1ZSxcclxuICAgIHNoYXJlZDogdHJ1ZSxcclxuICAgIHRleHRTdHlsZToge1xyXG4gICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgfVxyXG4gIH07XHJcbiAgcmVhZG9ubHkgbGVnZW5kOiBMZWdlbmRTZXJpZXNNb2RlbCA9IHtcclxuICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfTtcclxuICByZWFkb25seSBib3JkZXIgPSB7IHdpZHRoOiAwIH0gYXMgQm9yZGVyTW9kZWw7XHJcbiAgcmVhZG9ubHkgbWFya2VyOiBNYXJrZXJPcHRpb25zTW9kZWwgPSB7XHJcbiAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgd2lkdGg6IDEwLFxyXG4gICAgaGVpZ2h0OiAxMFxyXG4gIH1cclxuICB1c2VycyQ6IE9ic2VydmFibGU8VXNlckluZm9bXT47XHJcbiAgYXNzaWduYWJsZSQ6IE9ic2VydmFibGU8VXNlckluZm9bXT47XHJcbiAgcGFsZXR0ZXM6IHN0cmluZ1tdID0gdGhpcy5fc2Vzc2lvbi5hY2NlbnRQYWxldHRlO1xyXG4gIHRoZW1lOiAnTWF0ZXJpYWwnIHwgJ01hdGVyaWFsRGFyaycgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgZGF0YTogUHJvZmlsZUluZm87XHJcbiAgY29scyA9IDI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUEsIFNFTUlDT0xPTl07XHJcbiAgcHJpdmF0ZSBfdXNlcklkOiBzdHJpbmc7XHJcbiAgLyoqIGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3V0aWxpdHlSZWY6IFV0aWxpdHlSZWY8Ym9vbGVhbiwgUHJvZmlsZXJNb2RlbCwgUHJvZmlsZUluZm8sIHN0cmluZz4sXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRJbmZvOiBEb2N1bWVudEluZm8sXHJcbiAgICBwcml2YXRlIF9jaGF0OiBDaGF0SW5mbyxcclxuICAgIHByaXZhdGUgX2d1aWRlOiBHdWlkZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFBhbmVzUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfcGFuZTogUGFuZVJlZjxQcm9maWxlckNvbXBvbmVudD4sXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hY2NvdW50czogQWNjb3VudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIpIHtcclxuICAgIHRoaXMuY29scyA9IDI7XHJcbiAgICBfc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICB0aGlzLnRoZW1lID0gdC5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnO1xyXG4gICAgICB0aGlzLnBhbGV0dGVzID0gX3Nlc3Npb24uYWNjZW50UGFsZXR0ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3BhbmUucXVlcnlQYXJhbXNDaGFuZ2UoKS5zdWJzY3JpYmUocCA9PiB7XHJcbiAgICAgIGNvbnN0IHsgdXNlcklkIH0gPSBwO1xyXG4gICAgICB1c2VySWQgJiYgdGhpcy5fb3Blbih1c2VySWQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9wYW5lLnJlc2l6ZWQoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hhcnQ/LmNoYXJ0UmVzaXplKCkpO1xyXG4gICAgdGhpcy51c2VycyQgPSB0aGlzLnNlYXJjaC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgyNTApLFxyXG4gICAgICBmaWx0ZXIodiA9PiAhaXNPYmplY3QodikpLFxyXG4gICAgICBzd2l0Y2hNYXAodiA9PiB0aGlzLl9hY2NvdW50cy5maW5kQWxsKHYpKSk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLmYxJywgWyckZXZlbnQnXSlcclxuICBndWlkZShldnQ/OiBFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHN0ZXBzOiBHdWlkZVN0ZXBbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuZGF0YSkge1xyXG4gICAgICBzdGVwcy5wdXNoKHtcclxuICAgICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9c2V0dGluZ3NdJyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdPdXRPZk9mZmljZUhlbHAnKVxyXG4gICAgICB9KTtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5kYXRhLmFjdGl2aXR5KS5sZW5ndGggJiZcclxuICAgICAgICBzdGVwcy5wdXNoKHtcclxuICAgICAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1hY3Rpdml0eV0nLFxyXG4gICAgICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aXZpdHlIZWxwJylcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRhLnBlbmRpbmcubGVuZ3RoICYmXHJcbiAgICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9cGVuZGluZ10nLFxyXG4gICAgICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnUGVuZGluZ0hlbHAnKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGEucG9zaXRpb25zLmxlbmd0aCAmJlxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXBvc2l0aW9uc10nLFxyXG4gICAgICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnUG9zaXRpb25zSGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1yZWFzc2lnbl0nLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1JlYXNzaWduSGVscCcpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBzdGVwcy5wdXNoKHtcclxuICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXNlYXJjaF0nLFxyXG4gICAgICBwb3NpdGlvbjogJ0JlbG93JyxcclxuICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnUHJvZmlsZXJTZWFyY2hIZWxwJylcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZ3VpZGUuc3RhcnQoe1xyXG4gICAgICBuYW1lOiAncHJvZmlsZXInLFxyXG4gICAgICBzdGVwc1xyXG4gICAgfSk7XHJcbiAgICBldnQgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIGNoYW5nZShldnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpIHtcclxuICAgIGNvbnN0IHsgaWQ6IHVzZXJJZCB9ID0gZXZ0Lm9wdGlvbi52YWx1ZTtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwgeyBxdWVyeVBhcmFtczogeyB1c2VySWQgfSB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHVzZXJJZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX29wZW4odXNlcklkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3VzZXJJZCA9IHVzZXJJZDtcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYucG9wdWxhdGUodXNlcklkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiBlID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoLnJlc2V0KG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuY2hhcnQuc2VyaWVzLmxlbmd0aClcclxuICAgICAgICAgIHRoaXMuY2hhcnQ/LnJlbW92ZVNlcmllcygwKTtcclxuICAgICAgICB0aGlzLmNoYXJ0Py5hZGRTZXJpZXModGhpcy5fc2VyaWVzKCkpO1xyXG4gICAgICB9LCBlcnJvcjogKCkgPT4gdGhpcy5fc2IuZXJyb3IoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgX3NlcmllcygpOiBTZXJpZXNNb2RlbFtdIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmRhdGEuYWN0aXZpdHkpLm1hcChhID0+IHtcclxuICAgICAgY29uc3QgbG9nID0gdGhpcy5kYXRhLmFjdGl2aXR5W2FdO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6ICdTY2F0dGVyJyxcclxuICAgICAgICBuYW1lOiB0aGlzLl9hY3Rpb25OYW1lKGEpLFxyXG4gICAgICAgIHhOYW1lOiAndGltZScsXHJcbiAgICAgICAgeU5hbWU6ICdkdXJhdGlvbicsXHJcbiAgICAgICAgZGF0YVNvdXJjZTogbG9nLm1hcChsID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBsLmlkLFxyXG4gICAgICAgICAgICB0aW1lOiBuZXcgRGF0ZShsLnRpbWUpLFxyXG4gICAgICAgICAgICBkdXJhdGlvbjogbC5kdXJhdGlvblxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hY3Rpb25OYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIHJldHVybiBhY3Rpb24gPyBhY3Rpb24ucGFzdCB8fCBhY3Rpb24udGl0bGUgOiBuYW1lO1xyXG4gIH1cclxuICBwb2ludENsaWNrKGV2dDogSVBvaW50RXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCB7IGlkIH0gPSBldnQuc2VyaWVzLmRhdGFTb3VyY2VbZXZ0LnBvaW50SW5kZXhdO1xyXG4gICAgdGhpcy5fZG9jdW1lbnRJbmZvLm9wZW4oaWQpO1xyXG4gIH1cclxuICB1c2VyRGlzcGxheShpdGVtOiBVc2VySW5mbykge1xyXG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLm5hbWUgOiBudWxsO1xyXG4gIH1cclxuICB0cmFjZShpZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWydhZG1pbicsICd0b29scycsICdkb2N1bWVudC10cmFjZSddLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IGRvY3VtZW50SWQ6IGlkLmVuY29kZUlkKCkgfSxcclxuICAgICAgcG9saWN5OiBPcGVuUG9saWN5LkRlZmVyIHwgT3BlblBvbGljeS5QaW5uYWJsZVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNoYXQoKSB7XHJcbiAgICB0aGlzLl9jaGF0Lm9wZW4odGhpcy5fdXNlcklkKTtcclxuICB9XHJcbiAgcmVhc3NpZ24ocG9zaXRpb24/OiBQb3NpdGlvbkluZm8pIHtcclxuICAgIHRoaXMuYXNzaWduYWJsZSQgPSB0aGlzLl9hY2NvdW50cy5maW5kQWxsKCkucGlwZShtYXAodSA9PiB1LmZpbHRlcih1ID0+IHUuaWQgIT09IHRoaXMuX3VzZXJJZCkpKTtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKHRoaXMuYXNzaWduVHBsLCB7fSkuYWZ0ZXJDbG9zZWQoKS5cclxuICAgICAgc3Vic2NyaWJlKHUgPT5cclxuICAgICAgICB1ICYmIHRoaXMuX3JlYXNzaWduKHUsIHBvc2l0aW9uKVxyXG4gICAgICApO1xyXG4gIH1cclxuICBzZXR0aW5ncygpIHtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKFByb2ZpbGVTZXR0aW5nc0RpYWxvZywge1xyXG4gICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHVzZXJJZDogdGhpcy5fdXNlcklkLFxyXG4gICAgICAgIGdyYW50QWNjZXNzOiB0aGlzLmRhdGEuZ3JhbnRBY2Nlc3MsXHJcbiAgICAgICAgb3V0T2ZPZmZpY2U6IHRoaXMuZGF0YS5vdXRPZk9mZmljZVxyXG4gICAgICB9IGFzIE91dE9mT2ZmaWNlRGF0YVxyXG4gICAgfSkuYWZ0ZXJDbG9zZWQoKS5cclxuICAgICAgc3Vic2NyaWJlKHYgPT5cclxuICAgICAgICB2ICYmIHRoaXMuX3V0aWxpdHlSZWYuZXhlY3V0ZSh7XHJcbiAgICAgICAgICBvdXRPZk9mZmljZTogdi5vdXRPZk9mZmljZSxcclxuICAgICAgICAgIGdyYW50QWNjZXNzOiB2LmdyYW50QWNjZXNzLFxyXG4gICAgICAgICAgdXNlcklkOiB0aGlzLl91c2VySWRcclxuICAgICAgICB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuZGF0YSwgdik7XHJcbiAgICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KCdDaGFuZ2VzU2F2ZWQnKTtcclxuICAgICAgICAgIH0sIGVycm9yOiAoKSA9PlxyXG4gICAgICAgICAgICB0aGlzLl9zYi5lcnJvcigpXHJcbiAgICAgICAgfSkpO1xyXG4gIH1cclxuICAvKiogKi9cclxuICBwcml2YXRlIF9yZWFzc2lnbih3aG86IHN0cmluZywgcG9zaXRpb24/OiBQb3NpdGlvbkluZm8pIHtcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYuZXhlY3V0ZSh7IHJlYXNzaWduOiB7IHdobywgLi4ucG9zaXRpb24gfSwgdXNlcklkOiB0aGlzLl91c2VySWQgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NiLnRvYXN0KCdBc3NpZ25lZCcpO1xyXG4gICAgICAgIGlmIChwb3NpdGlvbilcclxuICAgICAgICAgIHRoaXMuZGF0YS5wb3NpdGlvbnMucmVtb3ZlKHBvc2l0aW9uKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLmRhdGEucG9zaXRpb25zID0gW107XHJcbiAgICAgIH0sIGVycm9yOiAoKSA9PlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKClcclxuICAgIH0pO1xyXG4gIH1cclxuICB0b29sdGlwUmVuZGVyKGU6IElUb29sdGlwUmVuZGVyRXZlbnRBcmdzKSB7XHJcbiAgICBlLnRleHQgPSBgJHtkYXlqcy5kdXJhdGlvbihlLnBvaW50LnkgYXMgbnVtYmVyLCAncycpLmh1bWFuaXplKCl9YDtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBQcm9maWxlSW5mbyB7XHJcbiAgb3V0T2ZPZmZpY2U6IE91dE9mT2ZmaWNlU2V0dGluZ3M7XHJcbiAgZ3JhbnRBY2Nlc3M6IEdyYW50U2V0dGluZ3M7XHJcbiAgcG9zaXRpb25zOiBQb3NpdGlvbkluZm9bXTtcclxuICBhY3Rpdml0eToge1xyXG4gICAgW2FjdGlvbjogc3RyaW5nXToge1xyXG4gICAgICBpZDogbnVtYmVyO1xyXG4gICAgICAvKiogc2Vjb25kcyAqL1xyXG4gICAgICBkdXJhdGlvbjogbnVtYmVyO1xyXG4gICAgICBudW1iZXI6IHN0cmluZztcclxuICAgICAgdGltZTogRGF0ZTtcclxuICAgIH1bXVxyXG4gIH07XHJcbiAgcGVuZGluZzoge1xyXG4gICAgaWQ6IG51bWJlcjtcclxuICAgIHJlY2VpdmVkOiBEYXRlO1xyXG4gICAgbnVtYmVyOiBzdHJpbmc7XHJcbiAgfVtdO1xyXG4gIGluZm86IFVzZXJJbmZvO1xyXG59XHJcbmludGVyZmFjZSBQb3NpdGlvbkluZm8ge1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nO1xyXG4gIHJvbGU6IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgUHJvZmlsZXJNb2RlbCB7XHJcbiAgb3V0T2ZPZmZpY2U/OiBPdXRPZk9mZmljZVNldHRpbmdzO1xyXG4gIGdyYW50QWNjZXNzPzogR3JhbnRTZXR0aW5ncztcclxuICB1c2VySWQ6IHN0cmluZztcclxuICByZWFzc2lnbj86IHtcclxuICAgIHdobzogc3RyaW5nO1xyXG4gICAgcm9sZT86IHN0cmluZztcclxuICAgIGtleT86IGFueTtcclxuICB9XHJcbn1cclxuXHJcbiIsIjxtYXQtdG9vbGJhcj5cclxuICA8bWF0LWZvcm0tZmllbGQgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJzZWFyY2hcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoXCIgZGF0YS1oZWxwPVwic2VhcmNoXCIgd2lkdGg9XCIyMFwiIC8+XHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtkaXNwbGF5V2l0aF09XCJ1c2VyRGlzcGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiY2hhbmdlKCRldmVudClcIj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgdXNlcnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwidVwiPlxyXG4gICAgICAgIDxzcGFuPnt7dS5uYW1lfX08L3NwYW4+XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgIDxtYXQtaWNvbiAoY2xpY2spPVwibnVsbFwiIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiIG1hdFN1ZmZpeD5zZWFyY2g8L21hdC1pY29uPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJndWlkZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPmhlbHBfb3V0bGluZTwvbWF0LWljb24+PC9idXR0b24+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjxkaXYgKm5nSWY9XCJkYXRhXCIgY2xhc3M9XCJyb3cgd3JhcFwiPlxyXG4gIDwhLS0gaW5mbyAtLT5cclxuICA8bWF0LWNhcmQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgPHNwYW4+e3tkYXRhLmluZm8ubmFtZX19PC9zcGFuPlxyXG4gICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPGJyIC8+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWNhcmQtYWN0aW9ucz5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNoYXQoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidDaGF0JyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGF0YVwiPjxtYXQtaWNvbj5jaGF0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2V0dGluZ3MoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidTZXR0aW5ncycgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiIWRhdGFcIiBkYXRhLWhlbHA9XCJzZXR0aW5nc1wiPjxtYXQtaWNvbj5zZXR0aW5nczwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcbiAgPC9tYXQtY2FyZD5cclxuICA8bWF0LWNhcmQgY2xhc3M9XCJmbGV4XCIgZGF0YS1oZWxwPVwiYWN0aXZpdHlcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICB7eydBY3Rpdml0eScgfCB0cmFuc2xhdGV9fVxyXG4gICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPGVqcy1jaGFydCAjYWN0aXZpdHkgW3ByaW1hcnlYQXhpc109XCJwcmltYXJ5WEF4aXNcIiBbcHJpbWFyeVlBeGlzXT1cInByaW1hcnlZQXhpc1wiIFt6b29tU2V0dGluZ3NdPVwiem9vbVNldHRpbmdzXCIgW3Rvb2x0aXBdPSd0b29sdGlwJyAodG9vbHRpcFJlbmRlcik9XCJ0b29sdGlwUmVuZGVyKCRldmVudClcIiBbcGFsZXR0ZXNdPVwicGFsZXR0ZXNcIiBiYWNrZ3JvdW5kPVwidHJhbnNwYXJlbnRcIiBbdGhlbWVdPSd0aGVtZScgW2JvcmRlcl09XCJib3JkZXJcIiAocG9pbnRDbGljayk9XCJwb2ludENsaWNrKCRldmVudClcIj5cclxuICAgICAgICA8ZS1zZXJpZXMtY29sbGVjdGlvbj5cclxuICAgICAgICA8L2Utc2VyaWVzLWNvbGxlY3Rpb24+XHJcbiAgICAgIDwvZWpzLWNoYXJ0PlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gIDwvbWF0LWNhcmQ+XHJcbiAgPCEtLSBwZW5kaW5nIC0tPlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImZsZXhcIiBkYXRhLWhlbHA9XCJwZW5kaW5nXCI+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAge3snUGVuZGluZycgfCB0cmFuc2xhdGV9fVxyXG4gICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwibWF0LW1kYy10YWJsZVwiICpuZ0lmPVwiZGF0YS5wZW5kaW5nLmxlbmd0aDsgZWxzZSBub25lXCI+XHJcbiAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgPHRyIGNsYXNzPVwibWF0LW1kYy1yb3dcIj5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibWF0LW1kYy1oZWFkZXItY2VsbFwiPjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1tZGMtaGVhZGVyLWNlbGxcIj48L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keSByb2xlPVwicm93Z3JvdXBcIj5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgciBvZiBkYXRhLnBlbmRpbmdcIiBjbGFzcz1cIm1hdC1tZGMtcm93XCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1tZGMtY2VsbFwiPjxhIChjbGljayk9XCJ0cmFjZShyLmlkKVwiPnt7ci5udW1iZXJ9fTwvYT48L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIj57eyByLnJlY2VpdmVkIHwgYW1EaWZmZXJlbmNlIDogbnVsbCA6ICdzJyB8IGFtRHVyYXRpb24gOiAncyd9fTwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgPC9tYXQtY2FyZD5cclxuICA8IS0tIHBvc2l0aW9ucyAtLT5cclxuICA8bWF0LWNhcmQgY2xhc3M9XCJmbGV4XCIgZGF0YS1oZWxwPVwicG9zaXRpb25zXCI+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAge3snUG9zaXRpb25zJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJtYXQtbWRjLXRhYmxlXCIgKm5nSWY9XCJkYXRhLnBvc2l0aW9ucy5sZW5ndGg7IGVsc2Ugbm9uZVwiPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcCBvZiBkYXRhLnBvc2l0aW9uc1wiIGNsYXNzPVwibWF0LW1kYy1yb3dcIj5cclxuICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1tZGMtY2VsbFwiPnt7cC52YWx1ZSB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIj57e3Aucm9sZSB8IHJvbGV9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlYXNzaWduKHApXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1JlYXNzaWduJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zd2FwX2hvcml6PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZWFzc2lnbigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1JlYXNzaWduQWxsJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGF0YSB8fCAhZGF0YS5wb3NpdGlvbnMubGVuZ3RoXCIgZGF0YS1oZWxwPVwicmVhc3NpZ25cIj48bWF0LWljb24+c3dhcF9ob3JpejwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcbiAgPC9tYXQtY2FyZD5cclxuPC9kaXY+XHJcbjwhLS0gYXNzaWduIGRpYWxvZyAtLT5cclxuPG5nLXRlbXBsYXRlICNhc3NpZ25UcGw+XHJcbiAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3snUmVhc3NpZ24nIHwgdHJhbnNsYXRlIH19PC9oMj5cclxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gICAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJjb2x1bW5cIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwie3snV2hvJyB8IHRyYW5zbGF0ZX19XCIgW2Zvcm1Db250cm9sXT1cIndob1wiIHJlcXVpcmVkPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgYXNzaWduYWJsZSQgfCBhc3luY1wiIFt2YWx1ZV09XCJ1LmlkXCI+e3t1Lm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJ3aG8udmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIXdoby52YWxpZFwiPnt7J09LJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT57eydDYW5jZWwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNub25lPlxyXG4gIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktMlwiPnt7J05vbmUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -111,10 +111,10 @@ export class SystemService {
111
111
  return groups;
112
112
  }));
113
113
  }
114
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SystemService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
115
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SystemService }); }
114
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SystemService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
115
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SystemService }); }
116
116
  }
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SystemService, decorators: [{
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SystemService, decorators: [{
118
118
  type: Injectable
119
- }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFJN0MsTUFBTSxPQUFPLGFBQWE7SUFDeEIsS0FBSyxDQUFDLElBQVU7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFTLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW9CLG9CQUFvQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFDRCxPQUFPLENBQUMsSUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFvQixtQkFBbUIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RyxDQUFDO2FBQ2MsV0FBTSxHQUFHLEVBQUUsQUFBTCxDQUFNO0lBRzNCLE9BQU8sQ0FBQyxPQUFnRjtRQUN0RixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ25CLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUM7YUFDeEI7WUFDSCxJQUFJLE9BQU8sQ0FBQyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxR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QUFNLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRTt3QkFDVixLQUFLLEdBQUc7NEJBQ04sS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNOzRCQUNmLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDZCxDQUFDO3dCQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ25CLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO3FCQUMxQjs7d0JBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdCOztvQkFDSSxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDOytHQWxIVSxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGaWVsZEluZm8sIEZvcm0gfSBmcm9tICcuLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBFbGVtZW50RmFtaWx5IH0gZnJvbSAnLi9hcmNoaXRlY3R1cmUvZGVjbGFyYXRpb25zJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN5c3RlbVNlcnZpY2Uge1xyXG4gIHJ1bGVzKGFyZ3M/OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSdWxlW10+KCcvYXBpL3N5c3RlbS9mb3JtL3J1bGVzJywgeyBwYXJhbXM6IGFyZ3MgfSk7XHJcbiAgfVxyXG4gIHN5bmNocmluaXplKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxCYWNrZ3JvdW5kSm9iSW5mbz4oYC9hcGkvc3lzdGVtL2N1YmUvJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9L3N5bmNocm9uaXplYCwge30pO1xyXG4gIH1cclxuICBleGVjdXRlKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxCYWNrZ3JvdW5kSm9iSW5mbz4oYC9hcGkvc3lzdGVtL2pvYi8ke2VuY29kZVVSSUNvbXBvbmVudChuYW1lKX0vZXhlY3V0ZWAsIHt9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlID0ge307XHJcbiAgZmluZEFsbChvcHRpb25zOiB7IHNlYXJjaD86IHN0cmluZywgc3RhcnQ/OiBEYXRlLCBlbmQ/OiBEYXRlLCBmb3JtSWQ/OiBzdHJpbmcgfSlcclxuICBmaW5kQWxsKHNlYXJjaD86IHN0cmluZylcclxuICBmaW5kQWxsKG9wdGlvbnM6IHN0cmluZyB8IHsgc2VhcmNoPzogc3RyaW5nLCBzdGFydD86IERhdGUsIGVuZD86IERhdGUsIGZvcm1JZD86IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxEb2N1bWVudEluZm9bXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgICBpZiAoaXNTdHJpbmcob3B0aW9ucykpXHJcbiAgICAgIHBhcmFtc1snc2VhcmNoJ10gPSBvcHRpb25zO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChvcHRpb25zLnNlYXJjaCkgcGFyYW1zWydzZWFyY2gnXSA9IG9wdGlvbnMuc2VhcmNoO1xyXG4gICAgICBpZiAob3B0aW9ucy5mb3JtSWQpIHBhcmFtc1snZm9ybUlkJ10gPSBvcHRpb25zLmZvcm1JZDtcclxuICAgICAgaWYgKG9wdGlvbnMuc3RhcnQpIHBhcmFtc1snc3RhcnQnXSA9IG5ldyBEYXRlKG9wdGlvbnMuc3RhcnQpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIGlmIChvcHRpb25zLmVuZCkgcGFyYW1zWydlbmQnXSA9IG5ldyBEYXRlKG9wdGlvbnMuZW5kKS50b0lTT1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PERvY3VtZW50SW5mb1tdPignL2FwaS9zeXN0ZW0vZm9ybS9maW5kQWxsJywge1xyXG4gICAgICBwYXJhbXNcclxuICAgIH0pO1xyXG4gIH1cclxuICByb2xlcygpOiBPYnNlcnZhYmxlPFJvbGVbXT4ge1xyXG4gICAgcmV0dXJuIFN5c3RlbVNlcnZpY2UuX2NhY2hlWydyb2xlcyddIHx8IChTeXN0ZW1TZXJ2aWNlLl9jYWNoZVsncm9sZXMnXSA9XHJcbiAgICAgIHRoaXMuX2h0dHAuZ2V0PFJvbGVbXT4oJy9hcGkvc3lzdGVtL3Bvc2l0aW9ucy9yb2xlcycpLnBpcGUoc2hhcmVSZXBsYXkoKSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZm9ybUlkXHJcbiAgICovXHJcbiAgcmFuZ2UoZm9ybUlkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxSYW5nZUluZm9bXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgICBpZiAoZm9ybUlkKSBwYXJhbXNbJ2Zvcm1JZCddID0gZm9ybUlkO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJhbmdlSW5mb1tdPignL2FwaS9zeXN0ZW0vZm9ybS9yYW5nZScsIHtcclxuICAgICAgcGFyYW1zXHJcbiAgICB9KS5waXBlKHRhcCgocjogUmFuZ2VJbmZvW10pID0+XHJcbiAgICAgIHIuZm9yRWFjaChwID0+IHAuZGF0ZSA9IG5ldyBEYXRlKHAuZGF0ZSkpXHJcbiAgICApKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGZvcm1JZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgaW52aXRlKGZvcm1JZDogc3RyaW5nLCBvcHRpb25zOiB7IGdyb3Vwczogc3RyaW5nW10sIG1lc3NhZ2U/OiBzdHJpbmc7IGRldmljZXM6IEludml0ZURldmljZVtdLCBkdWU/OiBEYXRlIH0pIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDx7IHRhcmdldDogbnVtYmVyOyBvazogbnVtYmVyOyBpbT86IG51bWJlcjsgZW1haWw/OiBudW1iZXI7IHNtcz86IG51bWJlciB9PihgL2FwaS9zeXN0ZW0vZm9ybS9pbnZpdGUvJHtmb3JtSWR9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIHByb2plY3Rpb24ob3B0aW9uczogeyBncm91cHM6IHN0cmluZ1tdIH0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PG51bWJlcj4oJy9hcGkvc3lzdGVtL2Zvcm0vcHJvamVjdGlvbi8nLCBvcHRpb25zKTtcclxuICB9XHJcbiAgY3ViZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDdWJlSW5mbz4oYC9hcGkvc3lzdGVtL2N1YmUvJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9YCk7XHJcbiAgfVxyXG4gIGpvYihuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxKb2JJbmZvPihgL2FwaS9zeXN0ZW0vam9iLyR7ZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpfWApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqL1xyXG4gIGZvcm0obmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxGb3JtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Rm9ybT4oYC9hcGkvc3lzdGVtL2Zvcm0vJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9YCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NvbnRyb2xzOiBPYnNlcnZhYmxlPENvbnRyb2xJbmZvW10+O1xyXG4gIGNvbnRyb2xzKCk6IE9ic2VydmFibGU8Q29udHJvbEluZm9bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzIHx8ICh0aGlzLl9jb250cm9scyA9IHRoaXMuX2h0dHAuZ2V0PENvbnRyb2xJbmZvW10+KGAvYXBpL3N5c3RlbS9mb3JtL2NvbnRyb2xzYCkuXHJcbiAgICAgIHBpcGUoXHJcbiAgICAgICAgdGFwKGMgPT5cclxuICAgICAgICAgIGMuZm9yRWFjaChpID0+IGNbaS5uYW1lXSA9IGkpKSxcclxuICAgICAgICBzaGFyZVJlcGxheSgpKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RhdGF0eXBlczogT2JzZXJ2YWJsZTxEYXRhVHlwZUluZm9bXT47XHJcbiAgZGF0YXR5cGVzKCk6IE9ic2VydmFibGU8RGF0YVR5cGVJbmZvW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhdHlwZXMgfHwgKHRoaXMuX2RhdGF0eXBlcyA9IHRoaXMuX2h0dHAuZ2V0PERhdGFUeXBlSW5mb1tdPihgL2FwaS9zeXN0ZW0vZm9ybS9kYXRhdHlwZXNgKS5cclxuICAgICAgcGlwZShcclxuICAgICAgICB0YXAodCA9PlxyXG4gICAgICAgICAgdC5mb3JFYWNoKGkgPT4gdFtpLm5hbWVdID0gaSkpLFxyXG4gICAgICAgIHNoYXJlUmVwbGF5KCkpKTtcclxuICB9XHJcbiAgc2F2ZShmb3JtOiBGb3JtKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIGNvbnN0IHsgd29ya2Zsb3cgfSA9IGZvcm07XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8bnVtYmVyPihgL2FwaS9zeXN0ZW0vZm9ybS8ke2VuY29kZVVSSUNvbXBvbmVudChmb3JtLm5hbWUpfWAsIHsgd29ya2Zsb3cgfSk7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHtcclxuXHJcbiAgfVxyXG4gIHB1YmxpYyB0eXBlZ3JvdXBzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YXR5cGVzKCkucGlwZShtYXAodCA9PiB7XHJcbiAgICAgIGNvbnN0XHJcbiAgICAgICAgZGVmYXVsdGdyb3VwID0geyBlbGVtZW50czogW10gfSxcclxuICAgICAgICBncm91cHMgPSBbXSBhcyBFbGVtZW50RmFtaWx5W107XHJcbiAgICAgIGdyb3Vwc1snXyddID0gZGVmYXVsdGdyb3VwO1xyXG4gICAgICB0LmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgaWYgKHQuZmFtaWx5KSB7XHJcbiAgICAgICAgICBsZXQgZ3JvdXAgPSBncm91cHNbdC5mYW1pbHldO1xyXG4gICAgICAgICAgaWYgKCFncm91cCkge1xyXG4gICAgICAgICAgICBncm91cCA9IHtcclxuICAgICAgICAgICAgICB0aXRsZTogdC5mYW1pbHksXHJcbiAgICAgICAgICAgICAgZWxlbWVudHM6IFt0XVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBncm91cHMucHVzaChncm91cCk7XHJcbiAgICAgICAgICAgIGdyb3Vwc1t0LmZhbWlseV0gPSBncm91cDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgZ3JvdXAuZWxlbWVudHMucHVzaCh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBkZWZhdWx0Z3JvdXAuZWxlbWVudHMucHVzaCh0KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBncm91cHM7XHJcbiAgICB9KSlcclxuICB9XHJcbn1cclxuZXhwb3J0IHR5cGUgSW52aXRlRGV2aWNlID0gJ1NtcycgfCAnRW1haWwnIHwgJ0lNJztcclxuZXhwb3J0IGludGVyZmFjZSBSYW5nZUluZm8ge1xyXG4gIGNvdW50OiBudW1iZXI7XHJcbiAgZGF0ZTogRGF0ZTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50SW5mbyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBudW1iZXI6IHN0cmluZztcclxuICBzdWJqZWN0OiBzdHJpbmc7XHJcbiAgc3RhdGVJZDogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbEluZm8ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHN5c3RlbT86IGJvb2xlYW47XHJcbiAgdmlzaWJsZT86IGJvb2xlYW47XHJcbiAgaWNvbj86IHN0cmluZztcclxuICB0ZW1wbGF0ZT86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERhdGFUeXBlSW5mbyB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgYXNzaWduYWJsZT86IGJvb2xlYW47XHJcbiAgY29sdW1ucz86IEZpZWxkSW5mb1tdO1xyXG4gIGZhbWlseT86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEN1YmVJbmZvIHtcclxuICBqb2JJbmZvOiBCYWNrZ3JvdW5kSm9iSW5mbztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEpvYkluZm8ge1xyXG4gIGpvYkluZm86IEJhY2tncm91bmRKb2JJbmZvO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFja2dyb3VuZEpvYkluZm8ge1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIG5leHRFeGVjdXRpb24/OiBEYXRlO1xyXG4gIGxhc3RFeGVjdXRpb24/OiBEYXRlO1xyXG4gIGxhc3RKb2JTdGF0ZT86IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgUnVsZSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBSb2xlIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxufVxyXG4iXX0=
119
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFJN0MsTUFBTSxPQUFPLGFBQWE7SUFDeEIsS0FBSyxDQUFDLElBQVU7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFTLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW9CLG9CQUFvQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFDRCxPQUFPLENBQUMsSUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFvQixtQkFBbUIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RyxDQUFDO2FBQ2MsV0FBTSxHQUFHLEVBQUUsQUFBTCxDQUFNO0lBRzNCLE9BQU8sQ0FBQyxPQUFnRjtRQUN0RixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ25CLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUM7YUFDeEI7WUFDSCxJQUFJLE9BQU8sQ0FBQyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxR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QUFNLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRTt3QkFDVixLQUFLLEdBQUc7NEJBQ04sS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNOzRCQUNmLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDZCxDQUFDO3dCQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ25CLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO3FCQUMxQjs7d0JBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdCOztvQkFDSSxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDOzhHQWxIVSxhQUFhO2tIQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGaWVsZEluZm8sIEZvcm0gfSBmcm9tICcuLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBFbGVtZW50RmFtaWx5IH0gZnJvbSAnLi9hcmNoaXRlY3R1cmUvZGVjbGFyYXRpb25zJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN5c3RlbVNlcnZpY2Uge1xyXG4gIHJ1bGVzKGFyZ3M/OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSdWxlW10+KCcvYXBpL3N5c3RlbS9mb3JtL3J1bGVzJywgeyBwYXJhbXM6IGFyZ3MgfSk7XHJcbiAgfVxyXG4gIHN5bmNocmluaXplKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxCYWNrZ3JvdW5kSm9iSW5mbz4oYC9hcGkvc3lzdGVtL2N1YmUvJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9L3N5bmNocm9uaXplYCwge30pO1xyXG4gIH1cclxuICBleGVjdXRlKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxCYWNrZ3JvdW5kSm9iSW5mbz4oYC9hcGkvc3lzdGVtL2pvYi8ke2VuY29kZVVSSUNvbXBvbmVudChuYW1lKX0vZXhlY3V0ZWAsIHt9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlID0ge307XHJcbiAgZmluZEFsbChvcHRpb25zOiB7IHNlYXJjaD86IHN0cmluZywgc3RhcnQ/OiBEYXRlLCBlbmQ/OiBEYXRlLCBmb3JtSWQ/OiBzdHJpbmcgfSlcclxuICBmaW5kQWxsKHNlYXJjaD86IHN0cmluZylcclxuICBmaW5kQWxsKG9wdGlvbnM6IHN0cmluZyB8IHsgc2VhcmNoPzogc3RyaW5nLCBzdGFydD86IERhdGUsIGVuZD86IERhdGUsIGZvcm1JZD86IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxEb2N1bWVudEluZm9bXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgICBpZiAoaXNTdHJpbmcob3B0aW9ucykpXHJcbiAgICAgIHBhcmFtc1snc2VhcmNoJ10gPSBvcHRpb25zO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChvcHRpb25zLnNlYXJjaCkgcGFyYW1zWydzZWFyY2gnXSA9IG9wdGlvbnMuc2VhcmNoO1xyXG4gICAgICBpZiAob3B0aW9ucy5mb3JtSWQpIHBhcmFtc1snZm9ybUlkJ10gPSBvcHRpb25zLmZvcm1JZDtcclxuICAgICAgaWYgKG9wdGlvbnMuc3RhcnQpIHBhcmFtc1snc3RhcnQnXSA9IG5ldyBEYXRlKG9wdGlvbnMuc3RhcnQpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIGlmIChvcHRpb25zLmVuZCkgcGFyYW1zWydlbmQnXSA9IG5ldyBEYXRlKG9wdGlvbnMuZW5kKS50b0lTT1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PERvY3VtZW50SW5mb1tdPignL2FwaS9zeXN0ZW0vZm9ybS9maW5kQWxsJywge1xyXG4gICAgICBwYXJhbXNcclxuICAgIH0pO1xyXG4gIH1cclxuICByb2xlcygpOiBPYnNlcnZhYmxlPFJvbGVbXT4ge1xyXG4gICAgcmV0dXJuIFN5c3RlbVNlcnZpY2UuX2NhY2hlWydyb2xlcyddIHx8IChTeXN0ZW1TZXJ2aWNlLl9jYWNoZVsncm9sZXMnXSA9XHJcbiAgICAgIHRoaXMuX2h0dHAuZ2V0PFJvbGVbXT4oJy9hcGkvc3lzdGVtL3Bvc2l0aW9ucy9yb2xlcycpLnBpcGUoc2hhcmVSZXBsYXkoKSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZm9ybUlkXHJcbiAgICovXHJcbiAgcmFuZ2UoZm9ybUlkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxSYW5nZUluZm9bXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgICBpZiAoZm9ybUlkKSBwYXJhbXNbJ2Zvcm1JZCddID0gZm9ybUlkO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJhbmdlSW5mb1tdPignL2FwaS9zeXN0ZW0vZm9ybS9yYW5nZScsIHtcclxuICAgICAgcGFyYW1zXHJcbiAgICB9KS5waXBlKHRhcCgocjogUmFuZ2VJbmZvW10pID0+XHJcbiAgICAgIHIuZm9yRWFjaChwID0+IHAuZGF0ZSA9IG5ldyBEYXRlKHAuZGF0ZSkpXHJcbiAgICApKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGZvcm1JZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgaW52aXRlKGZvcm1JZDogc3RyaW5nLCBvcHRpb25zOiB7IGdyb3Vwczogc3RyaW5nW10sIG1lc3NhZ2U/OiBzdHJpbmc7IGRldmljZXM6IEludml0ZURldmljZVtdLCBkdWU/OiBEYXRlIH0pIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDx7IHRhcmdldDogbnVtYmVyOyBvazogbnVtYmVyOyBpbT86IG51bWJlcjsgZW1haWw/OiBudW1iZXI7IHNtcz86IG51bWJlciB9PihgL2FwaS9zeXN0ZW0vZm9ybS9pbnZpdGUvJHtmb3JtSWR9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIHByb2plY3Rpb24ob3B0aW9uczogeyBncm91cHM6IHN0cmluZ1tdIH0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PG51bWJlcj4oJy9hcGkvc3lzdGVtL2Zvcm0vcHJvamVjdGlvbi8nLCBvcHRpb25zKTtcclxuICB9XHJcbiAgY3ViZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDdWJlSW5mbz4oYC9hcGkvc3lzdGVtL2N1YmUvJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9YCk7XHJcbiAgfVxyXG4gIGpvYihuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxKb2JJbmZvPihgL2FwaS9zeXN0ZW0vam9iLyR7ZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpfWApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqL1xyXG4gIGZvcm0obmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxGb3JtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Rm9ybT4oYC9hcGkvc3lzdGVtL2Zvcm0vJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9YCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NvbnRyb2xzOiBPYnNlcnZhYmxlPENvbnRyb2xJbmZvW10+O1xyXG4gIGNvbnRyb2xzKCk6IE9ic2VydmFibGU8Q29udHJvbEluZm9bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzIHx8ICh0aGlzLl9jb250cm9scyA9IHRoaXMuX2h0dHAuZ2V0PENvbnRyb2xJbmZvW10+KGAvYXBpL3N5c3RlbS9mb3JtL2NvbnRyb2xzYCkuXHJcbiAgICAgIHBpcGUoXHJcbiAgICAgICAgdGFwKGMgPT5cclxuICAgICAgICAgIGMuZm9yRWFjaChpID0+IGNbaS5uYW1lXSA9IGkpKSxcclxuICAgICAgICBzaGFyZVJlcGxheSgpKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RhdGF0eXBlczogT2JzZXJ2YWJsZTxEYXRhVHlwZUluZm9bXT47XHJcbiAgZGF0YXR5cGVzKCk6IE9ic2VydmFibGU8RGF0YVR5cGVJbmZvW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhdHlwZXMgfHwgKHRoaXMuX2RhdGF0eXBlcyA9IHRoaXMuX2h0dHAuZ2V0PERhdGFUeXBlSW5mb1tdPihgL2FwaS9zeXN0ZW0vZm9ybS9kYXRhdHlwZXNgKS5cclxuICAgICAgcGlwZShcclxuICAgICAgICB0YXAodCA9PlxyXG4gICAgICAgICAgdC5mb3JFYWNoKGkgPT4gdFtpLm5hbWVdID0gaSkpLFxyXG4gICAgICAgIHNoYXJlUmVwbGF5KCkpKTtcclxuICB9XHJcbiAgc2F2ZShmb3JtOiBGb3JtKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIGNvbnN0IHsgd29ya2Zsb3cgfSA9IGZvcm07XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8bnVtYmVyPihgL2FwaS9zeXN0ZW0vZm9ybS8ke2VuY29kZVVSSUNvbXBvbmVudChmb3JtLm5hbWUpfWAsIHsgd29ya2Zsb3cgfSk7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHtcclxuXHJcbiAgfVxyXG4gIHB1YmxpYyB0eXBlZ3JvdXBzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YXR5cGVzKCkucGlwZShtYXAodCA9PiB7XHJcbiAgICAgIGNvbnN0XHJcbiAgICAgICAgZGVmYXVsdGdyb3VwID0geyBlbGVtZW50czogW10gfSxcclxuICAgICAgICBncm91cHMgPSBbXSBhcyBFbGVtZW50RmFtaWx5W107XHJcbiAgICAgIGdyb3Vwc1snXyddID0gZGVmYXVsdGdyb3VwO1xyXG4gICAgICB0LmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgaWYgKHQuZmFtaWx5KSB7XHJcbiAgICAgICAgICBsZXQgZ3JvdXAgPSBncm91cHNbdC5mYW1pbHldO1xyXG4gICAgICAgICAgaWYgKCFncm91cCkge1xyXG4gICAgICAgICAgICBncm91cCA9IHtcclxuICAgICAgICAgICAgICB0aXRsZTogdC5mYW1pbHksXHJcbiAgICAgICAgICAgICAgZWxlbWVudHM6IFt0XVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBncm91cHMucHVzaChncm91cCk7XHJcbiAgICAgICAgICAgIGdyb3Vwc1t0LmZhbWlseV0gPSBncm91cDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgZ3JvdXAuZWxlbWVudHMucHVzaCh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBkZWZhdWx0Z3JvdXAuZWxlbWVudHMucHVzaCh0KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBncm91cHM7XHJcbiAgICB9KSlcclxuICB9XHJcbn1cclxuZXhwb3J0IHR5cGUgSW52aXRlRGV2aWNlID0gJ1NtcycgfCAnRW1haWwnIHwgJ0lNJztcclxuZXhwb3J0IGludGVyZmFjZSBSYW5nZUluZm8ge1xyXG4gIGNvdW50OiBudW1iZXI7XHJcbiAgZGF0ZTogRGF0ZTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50SW5mbyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBudW1iZXI6IHN0cmluZztcclxuICBzdWJqZWN0OiBzdHJpbmc7XHJcbiAgc3RhdGVJZDogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbEluZm8ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHN5c3RlbT86IGJvb2xlYW47XHJcbiAgdmlzaWJsZT86IGJvb2xlYW47XHJcbiAgaWNvbj86IHN0cmluZztcclxuICB0ZW1wbGF0ZT86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERhdGFUeXBlSW5mbyB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgYXNzaWduYWJsZT86IGJvb2xlYW47XHJcbiAgY29sdW1ucz86IEZpZWxkSW5mb1tdO1xyXG4gIGZhbWlseT86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEN1YmVJbmZvIHtcclxuICBqb2JJbmZvOiBCYWNrZ3JvdW5kSm9iSW5mbztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEpvYkluZm8ge1xyXG4gIGpvYkluZm86IEJhY2tncm91bmRKb2JJbmZvO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFja2dyb3VuZEpvYkluZm8ge1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIG5leHRFeGVjdXRpb24/OiBEYXRlO1xyXG4gIGxhc3RFeGVjdXRpb24/OiBEYXRlO1xyXG4gIGxhc3RKb2JTdGF0ZT86IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgUnVsZSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBSb2xlIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxufVxyXG4iXX0=