@bizdoc/core 2.3.10 → 2.3.13

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 (400) hide show
  1. package/assets/themes/brown.min.css +4 -4
  2. package/assets/themes/dark.min.css +4 -4
  3. package/assets/themes/deep-purple-light-blue.min.css +4 -4
  4. package/assets/themes/deep-purple-teal.min.css +4 -4
  5. package/assets/themes/default.min.css +4 -4
  6. package/assets/themes/green.min.css +4 -4
  7. package/assets/themes/indigo.min.css +4 -4
  8. package/assets/themes/readme.md +0 -0
  9. package/esm2022/lib/admin/admin-dismiss.service.mjs +3 -3
  10. package/esm2022/lib/admin/admin-menu.component.mjs +3 -3
  11. package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +5 -5
  12. package/esm2022/lib/admin/architecture/declarations.mjs +1 -1
  13. package/esm2022/lib/admin/architecture/designer-element.component.mjs +17 -16
  14. package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +4 -4
  15. package/esm2022/lib/admin/architecture/designer.base.mjs +10 -10
  16. package/esm2022/lib/admin/architecture/designer.component.mjs +60 -38
  17. package/esm2022/lib/admin/architecture/elements/action.component.mjs +4 -4
  18. package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +3 -3
  19. package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +3 -3
  20. package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +3 -3
  21. package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +3 -3
  22. package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +3 -3
  23. package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +4 -4
  24. package/esm2022/lib/admin/architecture/elements/control.component.mjs +3 -3
  25. package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +3 -3
  26. package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +3 -3
  27. package/esm2022/lib/admin/architecture/elements/cube.component.mjs +4 -4
  28. package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +3 -3
  29. package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +3 -3
  30. package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +3 -3
  31. package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +3 -3
  32. package/esm2022/lib/admin/architecture/elements/folder.component.mjs +4 -4
  33. package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +4 -4
  34. package/esm2022/lib/admin/architecture/elements/form.component.mjs +4 -4
  35. package/esm2022/lib/admin/architecture/elements/guide.component.mjs +3 -3
  36. package/esm2022/lib/admin/architecture/elements/job.component.mjs +4 -4
  37. package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +4 -4
  38. package/esm2022/lib/admin/architecture/elements/node.component.mjs +3 -3
  39. package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +3 -3
  40. package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +3 -3
  41. package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +3 -3
  42. package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +3 -3
  43. package/esm2022/lib/admin/architecture/elements/policy.component.mjs +3 -3
  44. package/esm2022/lib/admin/architecture/elements/report.component.mjs +3 -3
  45. package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +3 -3
  46. package/esm2022/lib/admin/architecture/elements/role.component.mjs +4 -4
  47. package/esm2022/lib/admin/architecture/elements/rule.component.mjs +3 -3
  48. package/esm2022/lib/admin/architecture/elements/source.component.mjs +3 -3
  49. package/esm2022/lib/admin/architecture/elements/state.component.mjs +4 -4
  50. package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +3 -3
  51. package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +3 -3
  52. package/esm2022/lib/admin/architecture/elements/type.component.mjs +4 -4
  53. package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +4 -4
  54. package/esm2022/lib/admin/architecture/elements/utility.component.mjs +3 -3
  55. package/esm2022/lib/admin/architecture/elements/view.component.mjs +3 -3
  56. package/esm2022/lib/admin/architecture/elements/widget.component.mjs +3 -3
  57. package/esm2022/lib/admin/architecture/icon-picker.component.mjs +4 -4
  58. package/esm2022/lib/admin/core/ace.input.mjs +4 -4
  59. package/esm2022/lib/admin/core/color-picker.input.mjs +4 -4
  60. package/esm2022/lib/admin/core/localized-string.component.mjs +4 -4
  61. package/esm2022/lib/admin/core/search.input.mjs +3 -3
  62. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +4 -4
  63. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +5 -5
  64. package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +3 -3
  65. package/esm2022/lib/admin/document-trace/trace-element.component.mjs +4 -4
  66. package/esm2022/lib/admin/form/designer/box-designer.component.mjs +7 -7
  67. package/esm2022/lib/admin/form/designer/properties.component.mjs +5 -5
  68. package/esm2022/lib/admin/form/designer/section.component.mjs +4 -4
  69. package/esm2022/lib/admin/form/designer/settings.component.mjs +4 -4
  70. package/esm2022/lib/admin/form/form.resolve.service.mjs +3 -3
  71. package/esm2022/lib/admin/form/workflow/node.component.mjs +4 -4
  72. package/esm2022/lib/admin/form/workflow/role-node.component.mjs +4 -4
  73. package/esm2022/lib/admin/form/workflow/workflow.component.mjs +5 -5
  74. package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +4 -4
  75. package/esm2022/lib/admin/patterns/patterns.component.mjs +4 -4
  76. package/esm2022/lib/admin/permissions/permissions.component.mjs +4 -4
  77. package/esm2022/lib/admin/positions/positions-popup.component.mjs +3 -3
  78. package/esm2022/lib/admin/positions/positions.component.mjs +5 -5
  79. package/esm2022/lib/admin/profiler/outofoffice.component.mjs +4 -4
  80. package/esm2022/lib/admin/profiler/profiler.component.mjs +4 -4
  81. package/esm2022/lib/admin/system.service.mjs +4 -4
  82. package/esm2022/lib/admin/utility-wrapper.component.mjs +3 -3
  83. package/esm2022/lib/admin/utility.pane.component.mjs +3 -3
  84. package/esm2022/lib/app.component.mjs +7 -7
  85. package/esm2022/lib/bizdoc.module.mjs +11 -11
  86. package/esm2022/lib/browse/browse-items.component.mjs +4 -4
  87. package/esm2022/lib/browse/browse.mobile.component.mjs +3 -3
  88. package/esm2022/lib/browse/browse.pane.component.mjs +4 -4
  89. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +5 -5
  90. package/esm2022/lib/browse/filter/filter.component.mjs +5 -5
  91. package/esm2022/lib/browse/folders-menu.component.mjs +5 -5
  92. package/esm2022/lib/chat/chat-info.mjs +4 -4
  93. package/esm2022/lib/chat/chat.mobile.component.mjs +4 -4
  94. package/esm2022/lib/chat/chat.service.mjs +4 -4
  95. package/esm2022/lib/chat/contacts.component.mjs +8 -8
  96. package/esm2022/lib/chat/contacts.pane.component.mjs +3 -3
  97. package/esm2022/lib/chat/conversation.component.mjs +5 -5
  98. package/esm2022/lib/chat/conversation.pane.component.mjs +4 -4
  99. package/esm2022/lib/compose/action/action-picker.component.mjs +4 -4
  100. package/esm2022/lib/compose/action/action.base.mjs +1 -1
  101. package/esm2022/lib/compose/action/action.dialog.mjs +4 -4
  102. package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +4 -4
  103. package/esm2022/lib/compose/action/assign-action.component.mjs +3 -3
  104. package/esm2022/lib/compose/action/moveto-action.component.mjs +4 -4
  105. package/esm2022/lib/compose/action/return-action.component.mjs +4 -4
  106. package/esm2022/lib/compose/attachments/attachments.component.mjs +4 -4
  107. package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +4 -4
  108. package/esm2022/lib/compose/attachments/progress-button.directive.mjs +3 -3
  109. package/esm2022/lib/compose/box/box.component.mjs +4 -4
  110. package/esm2022/lib/compose/box/control.component.mjs +3 -3
  111. package/esm2022/lib/compose/box/row.component.mjs +3 -3
  112. package/esm2022/lib/compose/can-deactivate-changes.service.mjs +3 -3
  113. package/esm2022/lib/compose/comments/comment.component.mjs +4 -4
  114. package/esm2022/lib/compose/comments/comments.component.mjs +5 -5
  115. package/esm2022/lib/compose/comments/comments.pane.component.mjs +3 -3
  116. package/esm2022/lib/compose/comments/edit-comment.component.mjs +3 -3
  117. package/esm2022/lib/compose/comments/edits.component.mjs +3 -3
  118. package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +4 -4
  119. package/esm2022/lib/compose/comments/votes.component.mjs +3 -3
  120. package/esm2022/lib/compose/compose-resolve.service.mjs +7 -7
  121. package/esm2022/lib/compose/compose.mobile.component.mjs +4 -4
  122. package/esm2022/lib/compose/compose.pane.component.mjs +4 -4
  123. package/esm2022/lib/compose/copy/copy.dialog.mjs +3 -3
  124. package/esm2022/lib/compose/dismiss.service.mjs +4 -4
  125. package/esm2022/lib/compose/document-resolver.service.mjs +3 -3
  126. package/esm2022/lib/compose/document.component.mjs +3 -3
  127. package/esm2022/lib/compose/document.mobile.component.mjs +3 -3
  128. package/esm2022/lib/compose/document.pane.component.mjs +3 -3
  129. package/esm2022/lib/compose/events/events.component.mjs +3 -3
  130. package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +4 -4
  131. package/esm2022/lib/compose/form.component.mjs +4 -4
  132. package/esm2022/lib/compose/new-menu.component.mjs +4 -4
  133. package/esm2022/lib/compose/privilage.directive.mjs +6 -6
  134. package/esm2022/lib/compose/recipient-resolver.service.mjs +3 -3
  135. package/esm2022/lib/compose/state.component.mjs +4 -4
  136. package/esm2022/lib/compose/tag/tags.component.mjs +4 -4
  137. package/esm2022/lib/compose/trace/flow.component.mjs +5 -5
  138. package/esm2022/lib/compose/trace/people.component.mjs +3 -3
  139. package/esm2022/lib/compose/trace/trace.base.mjs +4 -4
  140. package/esm2022/lib/compose/trace/trace.component.mjs +4 -4
  141. package/esm2022/lib/compose/trace/trace.pane.component.mjs +4 -4
  142. package/esm2022/lib/compose/version-compare/version-compare.component.mjs +3 -3
  143. package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +10 -10
  144. package/esm2022/lib/compose/version-compare/version.pane.component.mjs +4 -4
  145. package/esm2022/lib/core/account.service.mjs +3 -3
  146. package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  147. package/esm2022/lib/core/avatar/avatar.component.mjs +4 -4
  148. package/esm2022/lib/core/checkbox.mjs +3 -3
  149. package/esm2022/lib/core/component-factory-resolver.mjs +3 -3
  150. package/esm2022/lib/core/datasource.service.mjs +4 -4
  151. package/esm2022/lib/core/fields/address.designer.mjs +3 -3
  152. package/esm2022/lib/core/fields/address.field.mjs +3 -3
  153. package/esm2022/lib/core/fields/autocomplete.field.mjs +7 -7
  154. package/esm2022/lib/core/fields/checkbox.designer.mjs +3 -3
  155. package/esm2022/lib/core/fields/checkbox.field.mjs +3 -3
  156. package/esm2022/lib/core/fields/checklist.designer.mjs +4 -4
  157. package/esm2022/lib/core/fields/checklist.field.mjs +3 -3
  158. package/esm2022/lib/core/fields/date-range.designer.mjs +3 -3
  159. package/esm2022/lib/core/fields/date-range.field.mjs +3 -3
  160. package/esm2022/lib/core/fields/date.designer.mjs +3 -3
  161. package/esm2022/lib/core/fields/date.field.mjs +3 -3
  162. package/esm2022/lib/core/fields/expression.field.mjs +6 -6
  163. package/esm2022/lib/core/fields/file.designer.mjs +3 -3
  164. package/esm2022/lib/core/fields/file.field.mjs +3 -3
  165. package/esm2022/lib/core/fields/html.designer.mjs +3 -3
  166. package/esm2022/lib/core/fields/html.field.mjs +3 -3
  167. package/esm2022/lib/core/fields/input.designer.mjs +3 -3
  168. package/esm2022/lib/core/fields/input.field.mjs +4 -4
  169. package/esm2022/lib/core/fields/localized-string.field.mjs +6 -6
  170. package/esm2022/lib/core/fields/numeric.designer.mjs +3 -3
  171. package/esm2022/lib/core/fields/numeric.field.mjs +3 -3
  172. package/esm2022/lib/core/fields/options.base.mjs +6 -6
  173. package/esm2022/lib/core/fields/options.component.mjs +4 -4
  174. package/esm2022/lib/core/fields/radio-button.designer.mjs +3 -3
  175. package/esm2022/lib/core/fields/radio-button.field.mjs +3 -3
  176. package/esm2022/lib/core/fields/select.designer.mjs +4 -4
  177. package/esm2022/lib/core/fields/select.field.mjs +3 -3
  178. package/esm2022/lib/core/fields/signature.designer.mjs +3 -3
  179. package/esm2022/lib/core/fields/signature.field.mjs +3 -3
  180. package/esm2022/lib/core/fields/switch.field.mjs +3 -3
  181. package/esm2022/lib/core/fields/tags.designer.mjs +3 -3
  182. package/esm2022/lib/core/fields/tags.field.mjs +5 -5
  183. package/esm2022/lib/core/fields/textarea.designer.mjs +3 -3
  184. package/esm2022/lib/core/fields/textarea.field.mjs +3 -3
  185. package/esm2022/lib/core/fields/time.designer.mjs +3 -3
  186. package/esm2022/lib/core/fields/time.field.mjs +3 -3
  187. package/esm2022/lib/core/fields/timespan.field.mjs +6 -6
  188. package/esm2022/lib/core/fields/yesno.designer.mjs +4 -4
  189. package/esm2022/lib/core/fields/yesno.field.mjs +3 -3
  190. package/esm2022/lib/core/firebase.service.mjs +1 -1
  191. package/esm2022/lib/core/functions.mjs +1 -1
  192. package/esm2022/lib/core/guide/guide.component.mjs +4 -4
  193. package/esm2022/lib/core/guide/guide.service.mjs +4 -4
  194. package/esm2022/lib/core/guide/help-tip.component.mjs +3 -3
  195. package/esm2022/lib/core/http.interceptor.mjs +8 -21
  196. package/esm2022/lib/core/hub.service.mjs +3 -3
  197. package/esm2022/lib/core/identity/identity.component.mjs +4 -4
  198. package/esm2022/lib/core/info/attachment-info.service.mjs +3 -3
  199. package/esm2022/lib/core/info/document-info.service.mjs +3 -3
  200. package/esm2022/lib/core/info/location-info.component.mjs +8 -8
  201. package/esm2022/lib/core/info/map-info.mjs +3 -3
  202. package/esm2022/lib/core/inputs/address.input.mjs +4 -4
  203. package/esm2022/lib/core/inputs/auto-complete.input.mjs +4 -4
  204. package/esm2022/lib/core/inputs/combination-picker-body.mjs +4 -4
  205. package/esm2022/lib/core/inputs/combination-picker.mjs +4 -4
  206. package/esm2022/lib/core/inputs/combination-pool.mjs +5 -5
  207. package/esm2022/lib/core/inputs/file.input.mjs +5 -5
  208. package/esm2022/lib/core/inputs/select.input.mjs +5 -5
  209. package/esm2022/lib/core/inputs/signature.input.mjs +4 -4
  210. package/esm2022/lib/core/inputs/time-picker.mjs +4 -4
  211. package/esm2022/lib/core/inputs/timespan.input.mjs +4 -4
  212. package/esm2022/lib/core/layout.component.mjs +4 -4
  213. package/esm2022/lib/core/lottie-animation.mjs +3 -3
  214. package/esm2022/lib/core/mailbox.service.mjs +4 -4
  215. package/esm2022/lib/core/models.mjs +1 -1
  216. package/esm2022/lib/core/none.component.mjs +3 -3
  217. package/esm2022/lib/core/pipes/action.pipe.mjs +4 -4
  218. package/esm2022/lib/core/pipes/calendar.pipe.mjs +4 -4
  219. package/esm2022/lib/core/pipes/date-format.pipe.mjs +3 -3
  220. package/esm2022/lib/core/pipes/daterange.pipe.mjs +7 -7
  221. package/esm2022/lib/core/pipes/difference.pipe.mjs +3 -3
  222. package/esm2022/lib/core/pipes/duration-format.pipe.mjs +3 -3
  223. package/esm2022/lib/core/pipes/duration.pipe.mjs +3 -3
  224. package/esm2022/lib/core/pipes/form.pipe.mjs +4 -4
  225. package/esm2022/lib/core/pipes/join.pipe.mjs +3 -3
  226. package/esm2022/lib/core/pipes/localized-string.pipe.mjs +3 -3
  227. package/esm2022/lib/core/pipes/role.pipe.mjs +4 -4
  228. package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  229. package/esm2022/lib/core/pipes/sort.pipe.mjs +15 -11
  230. package/esm2022/lib/core/pipes/state.pipe.mjs +4 -4
  231. package/esm2022/lib/core/pipes/time-ago.pipe.mjs +7 -7
  232. package/esm2022/lib/core/pipes/translate.pipe.mjs +10 -10
  233. package/esm2022/lib/core/pipes/type-value.pipe.mjs +4 -4
  234. package/esm2022/lib/core/pipes/user-name.pipe.mjs +3 -3
  235. package/esm2022/lib/core/popup/popup.component.mjs +4 -4
  236. package/esm2022/lib/core/popup/popup.service.mjs +4 -4
  237. package/esm2022/lib/core/popup/tooltip.directive.mjs +7 -7
  238. package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  239. package/esm2022/lib/core/prompt/mask/mask.component.mjs +3 -3
  240. package/esm2022/lib/core/prompt.service.mjs +3 -3
  241. package/esm2022/lib/core/router.mjs +6 -6
  242. package/esm2022/lib/core/save-changes.dialog.mjs +3 -3
  243. package/esm2022/lib/core/session.service.mjs +4 -4
  244. package/esm2022/lib/core/slots/router.directive.mjs +3 -3
  245. package/esm2022/lib/core/slots/router.service.mjs +3 -3
  246. package/esm2022/lib/core/slots/slots.component.mjs +5 -5
  247. package/esm2022/lib/core/tagging/documents.component.mjs +4 -4
  248. package/esm2022/lib/core/tagging/edit-input.component.mjs +5 -5
  249. package/esm2022/lib/core/tagging/emoji.component.mjs +3 -3
  250. package/esm2022/lib/core/tagging/tagging-item.directive.mjs +3 -3
  251. package/esm2022/lib/core/tagging/tagging.component-base.mjs +3 -3
  252. package/esm2022/lib/core/tagging/tagging.directive.mjs +4 -4
  253. package/esm2022/lib/core/tagging/tagging.pipe.mjs +4 -4
  254. package/esm2022/lib/core/tagging/users.component.mjs +4 -4
  255. package/esm2022/lib/core/translate.service.mjs +4 -4
  256. package/esm2022/lib/core/translations.mjs +4 -2
  257. package/esm2022/lib/core/window-title.service.mjs +3 -3
  258. package/esm2022/lib/cube/accum/accum.component.mjs +4 -4
  259. package/esm2022/lib/cube/chart/chart.component.mjs +4 -4
  260. package/esm2022/lib/cube/cube-info.service.mjs +4 -4
  261. package/esm2022/lib/cube/cube-menu.component.mjs +3 -3
  262. package/esm2022/lib/cube/cube-view.component.mjs +4 -4
  263. package/esm2022/lib/cube/cube.service.mjs +4 -4
  264. package/esm2022/lib/cube/explore/document-item.component.mjs +4 -4
  265. package/esm2022/lib/cube/explore/explore-item.component.mjs +3 -3
  266. package/esm2022/lib/cube/explore/explore-items.component.mjs +4 -4
  267. package/esm2022/lib/cube/explore/explore.pane.component.mjs +3 -3
  268. package/esm2022/lib/cube/explore/item-resolver.service.mjs +6 -6
  269. package/esm2022/lib/cube/explore/item.pane.component.mjs +3 -3
  270. package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +4 -4
  271. package/esm2022/lib/cube/filter/filter.component.mjs +5 -5
  272. package/esm2022/lib/cube/grid/grid.component.mjs +4 -4
  273. package/esm2022/lib/cube/grid/spreadsheet.component.mjs +4 -4
  274. package/esm2022/lib/cube/matrix/matrix.base.mjs +4 -4
  275. package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  276. package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +3 -3
  277. package/esm2022/lib/cube/matrix/popup.component.mjs +3 -3
  278. package/esm2022/lib/cube/matrix/table.component.mjs +4 -4
  279. package/esm2022/lib/cube/parallel/item.mjs +1 -1
  280. package/esm2022/lib/cube/parallel/parallel.component.mjs +5 -5
  281. package/esm2022/lib/cube/pivot/pivot.component.mjs +4 -4
  282. package/esm2022/lib/cube/sum/sum.component.mjs +5 -5
  283. package/esm2022/lib/cube/view-base.mjs +4 -4
  284. package/esm2022/lib/cube/view.mobile.component.mjs +4 -4
  285. package/esm2022/lib/cube/view.pane.component.mjs +5 -5
  286. package/esm2022/lib/dashboard/actions/actions.widget.mjs +4 -4
  287. package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +4 -4
  288. package/esm2022/lib/dashboard/cube/compare.widget.mjs +4 -4
  289. package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +4 -4
  290. package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +4 -4
  291. package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +4 -4
  292. package/esm2022/lib/dashboard/cube/document-state.widget.mjs +3 -3
  293. package/esm2022/lib/dashboard/cube/documents.widget.mjs +3 -3
  294. package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +4 -4
  295. package/esm2022/lib/dashboard/dashboard.component.mjs +5 -5
  296. package/esm2022/lib/dashboard/dashboard.pane.component.mjs +3 -3
  297. package/esm2022/lib/dashboard/recents/recents.widget.mjs +3 -3
  298. package/esm2022/lib/dashboard/score/activity.widget.mjs +3 -3
  299. package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +3 -3
  300. package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +4 -4
  301. package/esm2022/lib/dashboard/score/pending-results.widget.mjs +3 -3
  302. package/esm2022/lib/dashboard/score/personal-score.widget.mjs +4 -4
  303. package/esm2022/lib/dashboard/widget-item.component.mjs +4 -4
  304. package/esm2022/lib/designer.module.mjs +4 -4
  305. package/esm2022/lib/desktop.module.mjs +4 -4
  306. package/esm2022/lib/home/about/about.dialog.mjs +3 -3
  307. package/esm2022/lib/home/home-base.component.mjs +4 -4
  308. package/esm2022/lib/home/home.desktop.component.mjs +5 -5
  309. package/esm2022/lib/home/home.mobile.component.mjs +4 -4
  310. package/esm2022/lib/home/notifications/notifications.component.mjs +4 -4
  311. package/esm2022/lib/home/options/options.component.mjs +5 -5
  312. package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  313. package/esm2022/lib/home/sign/sign.component.mjs +4 -4
  314. package/esm2022/lib/home/tools.component.mjs +3 -3
  315. package/esm2022/lib/impersonate/impersonate.component.mjs +3 -3
  316. package/esm2022/lib/mobile.module.mjs +4 -4
  317. package/esm2022/lib/modules/chart.module.mjs +4 -4
  318. package/esm2022/lib/modules/circular-gauge.module.mjs +4 -4
  319. package/esm2022/lib/modules/datepicker.intl.mjs +3 -3
  320. package/esm2022/lib/modules/dayjs.module.mjs +4 -4
  321. package/esm2022/lib/modules/diagram.module.mjs +4 -4
  322. package/esm2022/lib/modules/gantt.module.mjs +4 -4
  323. package/esm2022/lib/modules/grid.module.mjs +4 -4
  324. package/esm2022/lib/modules/linear-gauge.module.mjs +4 -4
  325. package/esm2022/lib/modules/material.module.mjs +4 -4
  326. package/esm2022/lib/modules/paginator.intl.mjs +3 -3
  327. package/esm2022/lib/modules/pivot.module.mjs +4 -4
  328. package/esm2022/lib/modules/schedule.module.mjs +4 -4
  329. package/esm2022/lib/modules/spreadsheet.module.mjs +4 -4
  330. package/esm2022/lib/modules/stepper.intl.mjs +3 -3
  331. package/esm2022/lib/modules/texteditor.module.mjs +4 -4
  332. package/esm2022/lib/notifications/filter.component.mjs +3 -3
  333. package/esm2022/lib/notifications/notifications-table.component.mjs +4 -4
  334. package/esm2022/lib/notifications/notifications.component-base.mjs +1 -1
  335. package/esm2022/lib/notifications/notifications.mobile.component.mjs +3 -3
  336. package/esm2022/lib/notifications/notifications.pane.component.mjs +3 -3
  337. package/esm2022/lib/notifications/notifications.service.mjs +4 -4
  338. package/esm2022/lib/notifications/types/commented.notification.mjs +4 -4
  339. package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +4 -4
  340. package/esm2022/lib/notifications/types/escalated.notification.mjs +3 -3
  341. package/esm2022/lib/notifications/types/invite.notification.mjs +3 -3
  342. package/esm2022/lib/notifications/types/liked.notification.mjs +4 -4
  343. package/esm2022/lib/notifications/types/long-running-task.notification.mjs +3 -3
  344. package/esm2022/lib/notifications/types/notification-base.mjs +3 -3
  345. package/esm2022/lib/notifications/types/nudge.notification.mjs +3 -3
  346. package/esm2022/lib/notifications/types/state-changed.notification.mjs +3 -3
  347. package/esm2022/lib/notifications/types/tagged.notification.mjs +3 -3
  348. package/esm2022/lib/notifications/types/text.notification.mjs +3 -3
  349. package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +3 -3
  350. package/esm2022/lib/options/options.component.mjs +4 -4
  351. package/esm2022/lib/options/options.service.mjs +3 -3
  352. package/esm2022/lib/reports/arguments-component.mjs +4 -4
  353. package/esm2022/lib/reports/cube/documents.component.mjs +3 -3
  354. package/esm2022/lib/reports/cube/grid-documents.component.mjs +4 -4
  355. package/esm2022/lib/reports/cube/role-performance.component.mjs +3 -3
  356. package/esm2022/lib/reports/cube/table-documents.component.mjs +3 -3
  357. package/esm2022/lib/reports/cube/usage-args.component.mjs +4 -4
  358. package/esm2022/lib/reports/cube/usage-base.mjs +3 -3
  359. package/esm2022/lib/reports/cube/usage-chart.component.mjs +4 -4
  360. package/esm2022/lib/reports/cube/usage-pivot.component.mjs +4 -4
  361. package/esm2022/lib/reports/cube/usage.component.mjs +3 -3
  362. package/esm2022/lib/reports/report-viewer.component.mjs +5 -5
  363. package/esm2022/lib/reports/report.mobile.component.mjs +5 -5
  364. package/esm2022/lib/reports/report.pane.component.mjs +4 -4
  365. package/esm2022/lib/reports/reports-menu.component.mjs +3 -3
  366. package/esm2022/lib/reports/substitution/substitution.component.mjs +3 -3
  367. package/esm2022/lib/reports/table/table-view.component.mjs +3 -3
  368. package/esm2022/lib/reports/tasks/tasks.component.mjs +3 -3
  369. package/esm2022/lib/scheduler/schedule.component.mjs +4 -4
  370. package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +3 -3
  371. package/esm2022/lib/scheduler/scheduler.pane.component.mjs +4 -4
  372. package/esm2022/lib/search/cube.component.mjs +3 -3
  373. package/esm2022/lib/search/document.component.mjs +3 -3
  374. package/esm2022/lib/search/guide.component.mjs +3 -3
  375. package/esm2022/lib/search/path.component.mjs +3 -3
  376. package/esm2022/lib/search/search.service.mjs +4 -4
  377. package/esm2022/lib/shared.module.mjs +4 -4
  378. package/esm2022/lib/system.module.mjs +4 -4
  379. package/esm2022/lib/views/cube/chart.component.mjs +4 -4
  380. package/esm2022/lib/views/cube/cube-base.mjs +4 -4
  381. package/esm2022/lib/views/cube/explore.component.mjs +3 -3
  382. package/esm2022/lib/views/cube/matrix.component.mjs +3 -3
  383. package/esm2022/lib/views/cube/parallel.component.mjs +4 -4
  384. package/esm2022/lib/views/cube/pivot.component.mjs +3 -3
  385. package/esm2022/lib/views/cube/sum.component.mjs +3 -3
  386. package/esm2022/lib/views/cube/view.component.mjs +5 -5
  387. package/esm2022/lib/views/timeline/timeline.component.exp.mjs +4 -4
  388. package/esm2022/lib/views/view-item.component.mjs +4 -4
  389. package/esm2022/lib/views/views.component.mjs +4 -4
  390. package/esm2022/lib/views/views.mobile.component.mjs +3 -3
  391. package/esm2022/lib/views/views.pane.component.mjs +3 -3
  392. package/fesm2022/bizdoc-core.mjs +1377 -1360
  393. package/fesm2022/bizdoc-core.mjs.map +1 -1
  394. package/lib/admin/architecture/declarations.d.ts +1 -0
  395. package/lib/admin/architecture/designer.component.d.ts +12 -4
  396. package/lib/core/http.interceptor.d.ts +2 -3
  397. package/lib/core/models.d.ts +1 -4
  398. package/lib/core/pipes/sort.pipe.d.ts +1 -1
  399. package/lib/core/translations.d.ts +2 -0
  400. package/package.json +13 -13
@@ -565,14 +565,14 @@ export class WorkflowComponent {
565
565
  this._nodedestroy.next();
566
566
  this._nodedestroy.complete();
567
567
  }
568
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: WorkflowComponent, deps: [{ token: i1.PromptService }, { token: i2.SystemService }, { token: i3.PaneRef }, { token: i4.PanesRouter }, { token: i5.SessionService }, { token: i6.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
569
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: WorkflowComponent, selector: "bizdoc-workflow", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "symbolPaletteEl", first: true, predicate: ["symbolPaletteEl"], descendants: true, static: true }, { propertyName: "diagramEl", first: true, predicate: ["diagramEl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.copy()\" [bizdocTooltip]=\"'Copy' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.paste()\" [bizdocTooltip]=\"'Paste' | translate\"><mat-icon>paste</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.remove()\" [bizdocTooltip]=\"'Remove' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>delete</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n <!--<ng-container *ngIf=\"connectors.length\">\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n <ng-container *ngIf=\"nodes[0].annotations.length\">\r\n < bizdoc-color-picker (valueChanges)='colorChange($event)' [label]=\"'Color'|translate\"></ bizdoc-color-picker>\r\n </ng-container>\r\n < bizdoc-color-picker (valueChanges)='bgChange($event)' [label]=\"'Background'|translate\"></ bizdoc-color-picker>\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n </ng-container>-->\r\n </mat-menu>\r\n &nbsp;\r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"boldChange()\" [bizdocTooltip]=\"'Bold' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_bold</mat-icon></button>\r\n <button mat-icon-button (click)=\"italicChange()\" [bizdocTooltip]=\"'Italic' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_italic</mat-icon></button>\r\n <button mat-icon-button [matMenuTriggerFor]=\"sizeMenu\"\r\n [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\"\r\n [bizdocTooltip]=\"'FontSize'|translate\">\r\n <mat-icon>format_size</mat-icon>\r\n </button>\r\n <mat-menu #sizeMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item *ngFor=\"let size of fontSizes\" (click)=\"fontSizeChange(size)\">\r\n {{size}}\r\n </button>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" [style.display]=\"tools?'':'none'\">\r\n <div dir=\"ltr\" #symbolPaletteEl>\r\n </div>\r\n </div>\r\n <div #diagramEl id=\"diagram\" class=\"flex\" dir=\"ltr\">\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .mat-mdc-menu-panel{min-width:0!important}.tools-divider:after{content:\"|\";opacity:.6;margin:0 2px}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i10.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i13.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] }); }
568
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: WorkflowComponent, deps: [{ token: i1.PromptService }, { token: i2.SystemService }, { token: i3.PaneRef }, { token: i4.PanesRouter }, { token: i5.SessionService }, { token: i6.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
569
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: WorkflowComponent, selector: "bizdoc-workflow", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "symbolPaletteEl", first: true, predicate: ["symbolPaletteEl"], descendants: true, static: true }, { propertyName: "diagramEl", first: true, predicate: ["diagramEl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.copy()\" [bizdocTooltip]=\"'Copy' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.paste()\" [bizdocTooltip]=\"'Paste' | translate\"><mat-icon>paste</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.remove()\" [bizdocTooltip]=\"'Remove' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>delete</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n <!--<ng-container *ngIf=\"connectors.length\">\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n <ng-container *ngIf=\"nodes[0].annotations.length\">\r\n < bizdoc-color-picker (valueChanges)='colorChange($event)' [label]=\"'Color'|translate\"></ bizdoc-color-picker>\r\n </ng-container>\r\n < bizdoc-color-picker (valueChanges)='bgChange($event)' [label]=\"'Background'|translate\"></ bizdoc-color-picker>\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n </ng-container>-->\r\n </mat-menu>\r\n &nbsp;\r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"boldChange()\" [bizdocTooltip]=\"'Bold' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_bold</mat-icon></button>\r\n <button mat-icon-button (click)=\"italicChange()\" [bizdocTooltip]=\"'Italic' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_italic</mat-icon></button>\r\n <button mat-icon-button [matMenuTriggerFor]=\"sizeMenu\"\r\n [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\"\r\n [bizdocTooltip]=\"'FontSize'|translate\">\r\n <mat-icon>format_size</mat-icon>\r\n </button>\r\n <mat-menu #sizeMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item *ngFor=\"let size of fontSizes\" (click)=\"fontSizeChange(size)\">\r\n {{size}}\r\n </button>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" [style.display]=\"tools?'':'none'\">\r\n <div dir=\"ltr\" #symbolPaletteEl>\r\n </div>\r\n </div>\r\n <div #diagramEl id=\"diagram\" class=\"flex\" dir=\"ltr\">\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}.container{-webkit-flex-grow:1;flex-grow:1;overflow-y:auto}#diagram{-webkit-flex-grow:1;flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .mat-mdc-menu-panel{min-width:0!important}.tools-divider:after{content:\"|\";opacity:.6;margin:0 2px}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i10.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i13.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] }); }
570
570
  }
571
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: WorkflowComponent, decorators: [{
571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: WorkflowComponent, decorators: [{
572
572
  type: Component,
573
573
  args: [{ selector: 'bizdoc-workflow', host: {
574
574
  class: 'pane'
575
- }, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.copy()\" [bizdocTooltip]=\"'Copy' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.paste()\" [bizdocTooltip]=\"'Paste' | translate\"><mat-icon>paste</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.remove()\" [bizdocTooltip]=\"'Remove' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>delete</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n <!--<ng-container *ngIf=\"connectors.length\">\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n <ng-container *ngIf=\"nodes[0].annotations.length\">\r\n < bizdoc-color-picker (valueChanges)='colorChange($event)' [label]=\"'Color'|translate\"></ bizdoc-color-picker>\r\n </ng-container>\r\n < bizdoc-color-picker (valueChanges)='bgChange($event)' [label]=\"'Background'|translate\"></ bizdoc-color-picker>\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n </ng-container>-->\r\n </mat-menu>\r\n &nbsp;\r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"boldChange()\" [bizdocTooltip]=\"'Bold' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_bold</mat-icon></button>\r\n <button mat-icon-button (click)=\"italicChange()\" [bizdocTooltip]=\"'Italic' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_italic</mat-icon></button>\r\n <button mat-icon-button [matMenuTriggerFor]=\"sizeMenu\"\r\n [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\"\r\n [bizdocTooltip]=\"'FontSize'|translate\">\r\n <mat-icon>format_size</mat-icon>\r\n </button>\r\n <mat-menu #sizeMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item *ngFor=\"let size of fontSizes\" (click)=\"fontSizeChange(size)\">\r\n {{size}}\r\n </button>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" [style.display]=\"tools?'':'none'\">\r\n <div dir=\"ltr\" #symbolPaletteEl>\r\n </div>\r\n </div>\r\n <div #diagramEl id=\"diagram\" class=\"flex\" dir=\"ltr\">\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .mat-mdc-menu-panel{min-width:0!important}.tools-divider:after{content:\"|\";opacity:.6;margin:0 2px}\n"] }]
575
+ }, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.copy()\" [bizdocTooltip]=\"'Copy' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.paste()\" [bizdocTooltip]=\"'Paste' | translate\"><mat-icon>paste</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.remove()\" [bizdocTooltip]=\"'Remove' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>delete</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n <!--<ng-container *ngIf=\"connectors.length\">\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n <ng-container *ngIf=\"nodes[0].annotations.length\">\r\n < bizdoc-color-picker (valueChanges)='colorChange($event)' [label]=\"'Color'|translate\"></ bizdoc-color-picker>\r\n </ng-container>\r\n < bizdoc-color-picker (valueChanges)='bgChange($event)' [label]=\"'Background'|translate\"></ bizdoc-color-picker>\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n </ng-container>-->\r\n </mat-menu>\r\n &nbsp;\r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"boldChange()\" [bizdocTooltip]=\"'Bold' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_bold</mat-icon></button>\r\n <button mat-icon-button (click)=\"italicChange()\" [bizdocTooltip]=\"'Italic' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_italic</mat-icon></button>\r\n <button mat-icon-button [matMenuTriggerFor]=\"sizeMenu\"\r\n [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\"\r\n [bizdocTooltip]=\"'FontSize'|translate\">\r\n <mat-icon>format_size</mat-icon>\r\n </button>\r\n <mat-menu #sizeMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item *ngFor=\"let size of fontSizes\" (click)=\"fontSizeChange(size)\">\r\n {{size}}\r\n </button>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" [style.display]=\"tools?'':'none'\">\r\n <div dir=\"ltr\" #symbolPaletteEl>\r\n </div>\r\n </div>\r\n <div #diagramEl id=\"diagram\" class=\"flex\" dir=\"ltr\">\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}.container{-webkit-flex-grow:1;flex-grow:1;overflow-y:auto}#diagram{-webkit-flex-grow:1;flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .mat-mdc-menu-panel{min-width:0!important}.tools-divider:after{content:\"|\";opacity:.6;margin:0 2px}\n"] }]
576
576
  }], ctorParameters: () => [{ type: i1.PromptService }, { type: i2.SystemService }, { type: i3.PaneRef }, { type: i4.PanesRouter }, { type: i5.SessionService }, { type: i6.TranslateService }], propDecorators: { symbolPaletteEl: [{
577
577
  type: ViewChild,
578
578
  args: ['symbolPaletteEl', { static: true }]
@@ -583,4 +583,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
583
583
  type: HostListener,
584
584
  args: ['document:keydown', ['$event']]
585
585
  }] } });
586
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9mb3JtL3dvcmtmbG93L3dvcmtmbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vZm9ybS93b3JrZmxvdy93b3JrZmxvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBYSxZQUFZLEVBQXFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGtCQUFrQixFQUFFLG1CQUFtQixFQUNaLGVBQWUsRUFDMUMsT0FBTyxFQUFhLFFBQVEsRUFDNUIsSUFBSSxFQUEwQixZQUFZLEVBQUUsb0JBQW9CLEVBQ2hFLGFBQWEsRUFBRSxZQUFZLEVBQzNCLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWlCLGVBQWUsRUFBZSxjQUFjLEVBQ3RILE1BQU0sMEJBQTBCLENBQUM7QUFRbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRXpELE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hFLGFBQWEsQ0FBQyxNQUFNLENBQUMsWUFB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LENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs4R0F4Z0JVLGlCQUFpQjtrR0FBakIsaUJBQWlCLG9ZQ2hFOUIsKytMQXVGQTs7MkZEdkJhLGlCQUFpQjtrQkFUN0IsU0FBUzsrQkFDRSxpQkFBaUIsUUFHckI7d0JBQ0osS0FBSyxFQUFFLE1BQU07cUJBQ2Q7ME5BTytDLGVBQWU7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNKLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkEyWnhDLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkRlc3Ryb3ksIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgT25Jbml0LCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpcnN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgRGlhZ3JhbUNvbnN0cmFpbnRzLCBTZWxlY3RvckNvbnN0cmFpbnRzLCBDb25uZWN0b3JNb2RlbCxcclxuICBUZXh0TW9kZWwsIFBvaW50UG9ydE1vZGVsLCBOb2RlQ29uc3RyYWludHMsIFNjcm9sbFNldHRpbmdzTW9kZWwsXHJcbiAgRGlhZ3JhbSwgTm9kZU1vZGVsLCBVbmRvUmVkbywgU3ltYm9sSW5mbywgSURyYWdFbnRlckV2ZW50QXJncywgU25hcFNldHRpbmdzTW9kZWwsIE1hcmdpbk1vZGVsLFxyXG4gIE5vZGUsIFBhbGV0dGVNb2RlbCwgU2VnbWVudHMsIERpYWdyYW1Ub29scywgQ29ubmVjdG9yQ29uc3RyYWludHMsIFNlbGVjdG9yTW9kZWwsIFJ1bGVyU2V0dGluZ3NNb2RlbCwgQWxpZ25tZW50T3B0aW9ucywgVGV4dFN0eWxlTW9kZWwsXHJcbiAgU3ltYm9sUGFsZXR0ZSwgQnBtbkRpYWdyYW1zLCBEYXRhQmluZGluZywgSVNlbGVjdGlvbkNoYW5nZUV2ZW50QXJncyxcclxuICBDb25uZWN0b3JFZGl0aW5nLCBDb25uZWN0b3JCcmlkZ2luZywgU25hcHBpbmcsIENvbm5lY3RvciwgU3dpbUxhbmVNb2RlbCwgUG9ydENvbnN0cmFpbnRzLCBIZWFkZXJNb2RlbCwgUG9ydFZpc2liaWxpdHksIFNuYXBDb25zdHJhaW50cywgU2hhcGVBbm5vdGF0aW9uTW9kZWwsIFBhdGhBbm5vdGF0aW9uTW9kZWwsIERpYWdyYW1Nb2RlbFxyXG59IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1kaWFncmFtcyc7XHJcbmltcG9ydCB7IEZvcm0gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTeXN0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3lzdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2xvdHMvcGFuZS1yZWYnO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd05vZGVDb21wb25lbnQgfSBmcm9tICcuL25vZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hZG1pbi1kaXNtaXNzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPcGVuUG9saWN5IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgTUFURVJJQUxfUEFMRVRURVMgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbG9ycyc7XHJcblxyXG5EaWFncmFtLkluamVjdChVbmRvUmVkbywgQ29ubmVjdG9yQnJpZGdpbmcsIENvbm5lY3RvckVkaXRpbmcsIFNuYXBwaW5nKTtcclxuU3ltYm9sUGFsZXR0ZS5JbmplY3QoQnBtbkRpYWdyYW1zKTtcclxuXHJcbmNvbnN0IHBvcnRzOiBQb2ludFBvcnRNb2RlbFtdID0gW1xyXG4gIHsgaWQ6ICdwb3J0MScsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDAsIHk6IDAuNSB9LCB2aXNpYmlsaXR5OiBQb3J0VmlzaWJpbGl0eS5Db25uZWN0IHwgUG9ydFZpc2liaWxpdHkuSG92ZXIsIGNvbnN0cmFpbnRzOiBQb3J0Q29uc3RyYWludHMuRGVmYXVsdCB8IFBvcnRDb25zdHJhaW50cy5EcmF3IH0sXHJcbiAgeyBpZDogJ3BvcnQyJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMC41LCB5OiAxIH0sIHZpc2liaWxpdHk6IFBvcnRWaXNpYmlsaXR5LkNvbm5lY3QgfCBQb3J0VmlzaWJpbGl0eS5Ib3ZlciwgY29uc3RyYWludHM6IFBvcnRDb25zdHJhaW50cy5EZWZhdWx0IHwgUG9ydENvbnN0cmFpbnRzLkRyYXcgfSxcclxuICB7IGlkOiAncG9ydDMnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAxLCB5OiAwLjUgfSwgdmlzaWJpbGl0eTogUG9ydFZpc2liaWxpdHkuQ29ubmVjdCB8IFBvcnRWaXNpYmlsaXR5LkhvdmVyLCBjb25zdHJhaW50czogUG9ydENvbnN0cmFpbnRzLkRlZmF1bHQgfCBQb3J0Q29uc3RyYWludHMuRHJhdyB9LFxyXG4gIHsgaWQ6ICdwb3J0NCcsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDAuNSwgeTogMCB9LCB2aXNpYmlsaXR5OiBQb3J0VmlzaWJpbGl0eS5Db25uZWN0IHwgUG9ydFZpc2liaWxpdHkuSG92ZXIsIGNvbnN0cmFpbnRzOiBQb3J0Q29uc3RyYWludHMuRGVmYXVsdCB8IFBvcnRDb25zdHJhaW50cy5EcmF3IH1cclxuXTtcclxuXHJcbmZ1bmN0aW9uIHNob3dQYWxldHRlSWNvbigpOiB2b2lkIHtcclxuICBjb25zdCBwYWxldHRlU3BhY2U6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhbGV0dGUtc3BhY2UnKTtcclxuICBjb25zdCBpc01vYmlsZSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOjU1MHB4KScpLm1hdGNoZXM7XHJcbiAgaWYgKGlzTW9iaWxlKSB7XHJcbiAgICBpZiAoIXBhbGV0dGVTcGFjZS5jbGFzc0xpc3QuY29udGFpbnMoJ3NiLW1vYmlsZS1wYWxldHRlLW9wZW4nKSkge1xyXG4gICAgICBwYWxldHRlU3BhY2UuY2xhc3NMaXN0LmFkZCgnc2ItbW9iaWxlLXBhbGV0dGUtb3BlbicpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFsZXR0ZVNwYWNlLmNsYXNzTGlzdC5yZW1vdmUoJ3NiLW1vYmlsZS1wYWxldHRlLW9wZW4nKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhbGV0dGVJY29uQ2xpY2soKSB7XHJcbiAgY29uc3QgaXNNb2JpbGUgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKG1heC13aWR0aDo1NTBweCknKS5tYXRjaGVzO1xyXG4gIGlmIChpc01vYmlsZSkge1xyXG4gICAgY29uc3QgcGFsZXR0ZUljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFsZXR0ZS1pY29uJyk7XHJcbiAgICBpZiAocGFsZXR0ZUljb24pIHtcclxuICAgICAgcGFsZXR0ZUljb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzaG93UGFsZXR0ZUljb24sIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLXdvcmtmbG93JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdwYW5lJ1xyXG4gIH1cclxufSlcclxuLyoqIHdvcmtmbG93IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBBZG1pbkNvbXBvbmVudCB7XHJcbiAgc3ltYm9sUGFsZXR0ZTogU3ltYm9sUGFsZXR0ZTtcclxuICByZWFkb25seSBmb250U2l6ZXMgPSBbOSwgMTEsIDEyLCAxMywgMTUsIDIxLCAzMSwgNDFdO1xyXG4gIGRpYWdyYW06IERpYWdyYW07XHJcbiAgQFZpZXdDaGlsZCgnc3ltYm9sUGFsZXR0ZUVsJywgeyBzdGF0aWM6IHRydWUgfSkgc3ltYm9sUGFsZXR0ZUVsOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWdyYW1FbCcsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWdyYW1FbDogRWxlbWVudFJlZjtcclxuICBwcml2YXRlIF90b29sczogYm9vbGVhbjtcclxuICBnZXQgdG9vbHMoKSB7IHJldHVybiB0aGlzLl90b29sczsgfVxyXG4gIHNldCB0b29scyh2YWw6IGJvb2xlYW4pIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkaWFncmFtX3Rvb2xzJywgdmFsID8gJzEnIDogJzAnKTtcclxuICAgIHRoaXMuX3Rvb2xzID0gdmFsO1xyXG4gIH1cclxuICBjb25uZWN0b3JUeXBlOiBTZWdtZW50cyA9ICdCZXppZXInO1xyXG4gIGFsaWdubWVudDogQWxpZ25tZW50T3B0aW9ucyA9ICdDZW50ZXInO1xyXG4gIGZvbnRTaXplID0gMTI7XHJcbiAgc2F2aW5nID0gZmFsc2U7XHJcbiAgZWxlbWVudD86IGFueTtcclxuICBkaXJ0eSA9IGZhbHNlO1xyXG4gIHBhcmFtczoge307XHJcbiAgcmVhZG9ubHkgcGFsZXR0ZXM6IFBhbGV0dGVNb2RlbFtdID0gW107XHJcbiAgZGlhZ3JhbUNvbnN0cmFpbnRzOiBEaWFncmFtQ29uc3RyYWludHMgPSBEaWFncmFtQ29uc3RyYWludHMuRGVmYXVsdCB8IERpYWdyYW1Db25zdHJhaW50cy5CcmlkZ2luZyB8IERpYWdyYW1Db25zdHJhaW50cy5Vc2VySW50ZXJhY3Rpb24gfCBEaWFncmFtQ29uc3RyYWludHMuWm9vbTtcclxuICAvL1N5bWJvbFBhbGV0dGUgUHJvcGVydGllc1xyXG4gIHJlYWRvbmx5IHN5bWJvbE1hcmdpbjogTWFyZ2luTW9kZWwgPSB7IGxlZnQ6IDEwLCByaWdodDogMTAsIHRvcDogMTAsIGJvdHRvbTogMTAgfTtcclxuICByZWFkb25seSBzbmFwU2V0dGluZ3M6IFNuYXBTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgc25hcExpbmVDb2xvcjogdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoMTAwKVxyXG4gIH07XHJcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtczogU2VsZWN0b3JNb2RlbCA9IHtcclxuICAgIGNvbnN0cmFpbnRzOiBTZWxlY3RvckNvbnN0cmFpbnRzLkFsbCAmIH5TZWxlY3RvckNvbnN0cmFpbnRzLlJvdGF0ZSxcclxuICB9O1xyXG4gIHJlYWRvbmx5IHNjcm9sbFNldHRpbmdzOiBTY3JvbGxTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgbWluWm9vbTogLjUsXHJcbiAgICBtYXhab29tOiAyLjUsXHJcbiAgfTtcclxuICByZWFkb25seSBydWxlclNldHRpbmdzOiBSdWxlclNldHRpbmdzTW9kZWwgPSB7XHJcbiAgfTtcclxuICBwcml2YXRlIF9mb3JtOiBGb3JtO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX25vZGVkZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAvKiogd29ya2Zsb3cgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfcHM6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGFuZTogUGFuZVJlZjxXb3JrZmxvd0NvbXBvbmVudD4sXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFBhbmVzUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuX3Rvb2xzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RpYWdyYW1fdG9vbHMnKSA9PT0gJzEnO1xyXG5cclxuICAgIHRoaXMuX3BhbGV0dGVzKCk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN5bWJvbFBhbGV0dGUgPSBuZXcgU3ltYm9sUGFsZXR0ZSh7XHJcbiAgICAgIGV4cGFuZE1vZGU6ICdNdWx0aXBsZScsXHJcbiAgICAgIHBhbGV0dGVzOiB0aGlzLnBhbGV0dGVzLFxyXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgICAgIGhlaWdodDogXCIxMDAlXCIsXHJcbiAgICAgIGVuYWJsZVJ0bDogZmFsc2UsXHJcbiAgICAgIGVuYWJsZUFuaW1hdGlvbjogZmFsc2UsXHJcbiAgICAgIHN5bWJvbEhlaWdodDogODAsXHJcbiAgICAgIHN5bWJvbFdpZHRoOiA4MCxcclxuICAgICAgc3ltYm9sTWFyZ2luOiB0aGlzLnN5bWJvbE1hcmdpbixcclxuICAgICAgZ2V0U3ltYm9sSW5mbzogdGhpcy5nZXRTeW1ib2xJbmZvLmJpbmQodGhpcyksXHJcbiAgICAgIGdldE5vZGVEZWZhdWx0czogdGhpcy5nZXRTeW1ib2xEZWZhdWx0cy5iaW5kKHRoaXMpLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN5bWJvbFBhbGV0dGUuYXBwZW5kVG8odGhpcy5zeW1ib2xQYWxldHRlRWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICB0aGlzLmRpYWdyYW0gPSBuZXcgRGlhZ3JhbSh7XHJcbiAgICAgIHdpZHRoOiBcIjEwMCVcIiwgaGVpZ2h0OiBcIjEwMCVcIixcclxuICAgICAgc25hcFNldHRpbmdzOiB0aGlzLnNuYXBTZXR0aW5ncyxcclxuICAgICAgZ2V0Q29ubmVjdG9yRGVmYXVsdHM6IHRoaXMuY29ubkRlZmF1bHRzLmJpbmQodGhpcyksXHJcbiAgICAgIGNvbnN0cmFpbnRzOiB0aGlzLmRpYWdyYW1Db25zdHJhaW50cyxcclxuICAgICAgZ2V0Tm9kZURlZmF1bHRzOiB0aGlzLm5vZGVEZWZhdWx0cy5iaW5kKHRoaXMpLFxyXG4gICAgICBzY3JvbGxTZXR0aW5nczogdGhpcy5zY3JvbGxTZXR0aW5ncyxcclxuICAgICAgc2VsZWN0ZWRJdGVtczogdGhpcy5zZWxlY3RlZEl0ZW1zLFxyXG4gICAgICBydWxlclNldHRpbmdzOiB0aGlzLnJ1bGVyU2V0dGluZ3MsXHJcbiAgICAgIGRyYWdFbnRlcjogdGhpcy5kcmFnRW50ZXIuYmluZCh0aGlzKSxcclxuICAgICAgY29ubmVjdGlvbkNoYW5nZTogdGhpcy5jaGFuZ2UuYmluZCh0aGlzKSxcclxuICAgICAgY29sbGVjdGlvbkNoYW5nZTogdGhpcy5jb2xsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcyksXHJcbiAgICAgIHByb3BlcnR5Q2hhbmdlOiB0aGlzLnByb3BlcnR5Q2hhbmdlLmJpbmQodGhpcyksXHJcbiAgICAgIHNlbGVjdGlvbkNoYW5nZTogdGhpcy5zZWxlY3Rpb25DaGFuZ2UuYmluZCh0aGlzKSxcclxuICAgIH0sIHRoaXMuZGlhZ3JhbUVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgcGFsZXR0ZUljb25DbGljaygpO1xyXG4gICAgdGhpcy5fcGFuZS5wYXJhbXNDaGFuZ2UoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHAgPT4ge1xyXG4gICAgICBjb25zdCBpZCA9IHBbJ2lkJ107XHJcbiAgICAgIHRoaXMuX2Zvcm0gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZm9ybXMuZmluZChmID0+IGYubmFtZSA9PT0gaWQpO1xyXG4gICAgICB0aGlzLl9wYW5lLnRpdGxlID0gdGhpcy5fZm9ybS50aXRsZTtcclxuICAgICAgdGhpcy5wYXJhbXMgPSB7IGlkOiB0aGlzLl9mb3JtLm5hbWUgfTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fcGFuZS5kYXRhQ2hhbmdlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShkID0+IHtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9mb3JtLCBkLmZvcm0pO1xyXG4gICAgICBjb25zdCBmbG93ID0gdGhpcy5fZm9ybS53b3JrZmxvdztcclxuICAgICAgdGhpcy5kaWFncmFtLm5vZGVzID0gZmxvdy5ub2RlcztcclxuICAgICAgdGhpcy5kaWFncmFtLmNvbm5lY3RvcnMgPSBmbG93LmNvbm5lY3RvcnM7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gICAgICB0aGlzLmRpYWdyYW0uYWRkKHRoaXMuX3ZlcnNpb25Ob2RlKGZsb3cudmVyc2lvbikpO1xyXG4gICAgICB0aGlzLmRpYWdyYW0uZml0VG9QYWdlKCk7XHJcbiAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9wYWxldHRlcygpIHtcclxuICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ub2Rlcy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICBjb25zdCBub2RlOiBOb2RlTW9kZWwgPSB7XHJcbiAgICAgICAgaWQ6IG4ubmFtZSxcclxuICAgICAgICBzaGFwZTogbi5zaGFwZSxcclxuICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICBub2RlVHlwZTogbi5uYW1lLFxyXG4gICAgICAgICAgdGl0bGU6IG4udGl0bGVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHdpZHRoOiAxNDUsXHJcbiAgICAgICAgaGVpZ2h0OiAxNDUsXHJcbiAgICAgIH07XHJcbiAgICAgIChub2RlIGFzIGFueSkubm9kZSA9IG4ubmFtZTtcclxuICAgICAgbGV0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVzLmZpbmQocCA9PiBwLnRpdGxlID09PSAobi5wYWxldHRlIHx8ICcnKSk7XHJcbiAgICAgIGlmICghcGFsZXR0ZSkge1xyXG4gICAgICAgIHBhbGV0dGUgPSB7IGlkOiBgXyR7bi5wYWxldHRlfWAsIGV4cGFuZGVkOiB0cnVlLCB0aXRsZTogbi5wYWxldHRlIHx8ICcnLCBzeW1ib2xzOiBbXSB9O1xyXG4gICAgICAgIHRoaXMucGFsZXR0ZXMucHVzaChwYWxldHRlKTtcclxuICAgICAgfVxyXG4gICAgICBwYWxldHRlLnN5bWJvbHMucHVzaChub2RlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wYWxldHRlcy5wdXNoKHtcclxuICAgICAgaWQ6ICdkZXNpZ24nLFxyXG4gICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnRGVzaWduJyksXHJcbiAgICAgIHN5bWJvbHM6IFt7XHJcbiAgICAgICAgaWQ6ICdMaW5rMjInLFxyXG4gICAgICAgIHR5cGU6ICdTdHJhaWdodCcsXHJcbiAgICAgICAgc291cmNlUG9pbnQ6IHsgeDogMCwgeTogMCB9LFxyXG4gICAgICAgIHRhcmdldFBvaW50OiB7IHg6IDYwLCB5OiA2MCB9LFxyXG4gICAgICAgIHRhcmdldERlY29yYXRvcjoge1xyXG4gICAgICAgICAgc2hhcGU6ICdBcnJvdycsXHJcbiAgICAgICAgICBzdHlsZTogeyBzdHJva2VDb2xvcjogJyM3NTc1NzUnLCBmaWxsOiAnIzc1NzU3NScgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICBzdHJva2VXaWR0aDogMSxcclxuICAgICAgICAgIHN0cm9rZURhc2hBcnJheTogJzQgNCcsXHJcbiAgICAgICAgICBzdHJva2VDb2xvcjogJyM3NTc1NzUnLFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAndGV4dCcsIHNoYXBlOiB7IHR5cGU6ICdUZXh0JywgY29udGVudDogJ1QnIH0sXHJcbiAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbnN0cmFpbnRzOiBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCAmIH5Ob2RlQ29uc3RyYWludHMuSW5Db25uZWN0ICYgfk5vZGVDb25zdHJhaW50cy5PdXRDb25uZWN0LFxyXG4gICAgICAgIGFkZEluZm86IHsgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1RleHQnKSB9XHJcbiAgICAgIH1dXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNvbG9yID0gTUFURVJJQUxfUEFMRVRURVNbJ2dyZXknXVsyMDBdO1xyXG4gICAgdGhpcy5wYWxldHRlcy5wdXNoKHtcclxuICAgICAgaWQ6ICdzd2ltbGFuZVNoYXBlcycsXHJcbiAgICAgIGV4cGFuZGVkOiB0cnVlLFxyXG4gICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnU3dpbWxhbmUgU2hhcGVzJyksXHJcbiAgICAgIHN5bWJvbHM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBpZDogJ3N3aW1sYW5lJyxcclxuICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0hvcml6b250YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgICAgICAgIGFubm90YXRpb246IHsgY29udGVudDogJ1BsYW4nIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdHlwZTogJ1N3aW1MYW5lJyxcclxuICAgICAgICAgICAgbGFuZXM6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZDogJ2xhbmUxJyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uOiB7IGNvbnRlbnQ6ICdMYW5lJyB9LFxyXG4gICAgICAgICAgICAgICAgICBzdHlsZTogeyBmaWxsOiBjb2xvciB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBvcmllbnRhdGlvbjogJ0hvcml6b250YWwnLFxyXG4gICAgICAgICAgICBpc0xhbmU6IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBoZWlnaHQ6IDYwLFxyXG4gICAgICAgICAgd2lkdGg6IDE0MCxcclxuICAgICAgICAgIG9mZnNldFg6IDcwLFxyXG4gICAgICAgICAgb2Zmc2V0WTogMzAsXHJcbiAgICAgICAgfSwge1xyXG4gICAgICAgICAgaWQ6ICd2c3dpbWxhbmUnLFxyXG4gICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnVmVydGljYWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdTd2ltTGFuZScsXHJcbiAgICAgICAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgICAgICAgIGFubm90YXRpb246IHsgY29udGVudDogJ1BsYW4nIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbGFuZXM6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZDogJ2xhbmUxJyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uOiB7IGNvbnRlbnQ6ICdMYW5lJyB9LFxyXG4gICAgICAgICAgICAgICAgICBzdHlsZTogeyBmaWxsOiBjb2xvciB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBvcmllbnRhdGlvbjogJ1ZlcnRpY2FsJywgaXNMYW5lOiB0cnVlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgaGVpZ2h0OiAxNDAsXHJcbiAgICAgICAgICB3aWR0aDogNjAsXHJcbiAgICAgICAgICBvZmZzZXRYOiA3MCxcclxuICAgICAgICAgIG9mZnNldFk6IDMwLFxyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIGlkOiAndnBoYXNlJyxcclxuICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1BoYXNlJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICB0eXBlOiAnU3dpbUxhbmUnLFxyXG4gICAgICAgICAgICBwaGFzZXM6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZTogeyBzdHJva2VXaWR0aDogMSwgc3Ryb2tlRGFzaEFycmF5OiAnMywzJywgc3Ryb2tlQ29sb3I6IGNvbG9yIH0sXHJcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHtcclxuICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbjogeyB0ZXh0OiAnUGhhc2UnIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgb3JpZW50YXRpb246ICdWZXJ0aWNhbCcsIGlzUGhhc2U6IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBoZWlnaHQ6IDYwLFxyXG4gICAgICAgICAgd2lkdGg6IDE0MCxcclxuICAgICAgICAgIHN0eWxlOiB7IHN0cm9rZUNvbG9yOiBjb2xvciB9XHJcbiAgICAgICAgfSwge1xyXG4gICAgICAgICAgaWQ6ICdocGhhc2UnLFxyXG4gICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnUGhhc2UnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdTd2ltTGFuZScsXHJcbiAgICAgICAgICAgIHBoYXNlczogW3tcclxuICAgICAgICAgICAgICBzdHlsZTogeyBzdHJva2VXaWR0aDogMSwgc3Ryb2tlRGFzaEFycmF5OiAnMywzJywgc3Ryb2tlQ29sb3I6IGNvbG9yIH0sXHJcbiAgICAgICAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uOiB7IHRleHQ6ICdQaGFzZScgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfV0sXHJcbiAgICAgICAgICAgIG9yaWVudGF0aW9uOiAnSG9yaXpvbnRhbCcsIGlzUGhhc2U6IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBoZWlnaHQ6IDYwLFxyXG4gICAgICAgICAgd2lkdGg6IDE0MCxcclxuICAgICAgICAgIHN0eWxlOiB7IHN0cm9rZUNvbG9yOiBjb2xvciB9XHJcbiAgICAgICAgfV1cclxuICAgIH0gYXMgUGFsZXR0ZU1vZGVsKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdmVyc2lvbk5vZGUodmVyc2lvbjogbnVtYmVyKTogTm9kZU1vZGVsIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGlkOiAndmVyc2lvbicsXHJcbiAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgdHlwZTogJ1RleHQnLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0RpYWdyYW1WZXJzaW9uJywgdmVyc2lvbiB8fCAwKVxyXG4gICAgICB9LFxyXG4gICAgICBvZmZzZXRZOiA1LFxyXG4gICAgICBvZmZzZXRYOiA1LFxyXG4gICAgICBzdHlsZToge1xyXG4gICAgICAgIGZvbnRTaXplOiA1MCxcclxuICAgICAgICBjb2xvcjogdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjaycsXHJcbiAgICAgICAgb3BhY2l0eTogLjFcclxuICAgICAgfSBhcyBUZXh0U3R5bGVNb2RlbCxcclxuICAgICAgY29uc3RyYWludHM6IE5vZGVDb25zdHJhaW50cy5SZWFkT25seSxcclxuICAgICAgekluZGV4OiAtMVxyXG4gICAgfTtcclxuICB9XHJcbiAgbm9kZURlZmF1bHRzID0gKG9iajogTm9kZU1vZGVsKTogTm9kZU1vZGVsID0+IHtcclxuICAgIHN3aXRjaCAob2JqLnNoYXBlLnR5cGUpIHtcclxuICAgICAgY2FzZSAnU3dpbUxhbmUnOlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdUZXh0JzpcclxuICAgICAgICBpZiAob2JqLmlkICE9PSAndmVyc2lvbicpXHJcbiAgICAgICAgICBvYmouY29uc3RyYWludHMgPSBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCAmIH5Ob2RlQ29uc3RyYWludHMuSW5Db25uZWN0ICYgfk5vZGVDb25zdHJhaW50cy5PdXRDb25uZWN0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmIChvYmouYWRkSW5mbyAmJiBvYmouYWRkSW5mb1snbm9kZVR5cGUnXSkge1xyXG4gICAgICAgICAgb2JqLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLkRlZmF1bHQgfCBOb2RlQ29uc3RyYWludHMuQXNwZWN0UmF0aW87XHJcbiAgICAgICAgICBvYmouc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnd2hpdGUnIDogJ2JsYWNrJztcclxuICAgICAgICAgIG9iai5wb3J0cyA9IHBvcnRzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG4gIHB1YmxpYyBjb25uRGVmYXVsdHMgPSAob2JqOiBDb25uZWN0b3JNb2RlbCkgPT4ge1xyXG4gICAgb2JqLmNvbnN0cmFpbnRzID0gQ29ubmVjdG9yQ29uc3RyYWludHMuRGVmYXVsdCB8IENvbm5lY3RvckNvbnN0cmFpbnRzLkJyaWRnaW5nO1xyXG4gICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjayc7XHJcbiAgICBpZiAoIW9iai50eXBlKSBvYmoudHlwZSA9IHRoaXMuY29ubmVjdG9yVHlwZTtcclxuICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXRTeW1ib2xJbmZvKHN5bWJvbDogTm9kZU1vZGVsKTogU3ltYm9sSW5mbyB7XHJcbiAgICByZXR1cm4gc3ltYm9sLmFkZEluZm8gPyB7XHJcbiAgICAgIGZpdDogdHJ1ZSxcclxuICAgICAgdG9vbHRpcDogKHN5bWJvbC5hZGRJbmZvIGFzIGFueSkudGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiB7IHRleHQ6IChzeW1ib2wuYWRkSW5mbyBhcyBhbnkpLnRpdGxlLCBvdmVyZmxvdzogJ1dyYXAnLCB3cmFwOiAnV3JhcFdpdGhPdmVyZmxvdycgfVxyXG4gICAgfSA6IG51bGw7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXRTeW1ib2xEZWZhdWx0cyhzeW1ib2w6IE5vZGVNb2RlbCk6IHZvaWQge1xyXG4gICAgc3ltYm9sLndpZHRoID0gc3ltYm9sLmhlaWdodCA9IDQwO1xyXG4gIH1cclxuICBwYW4oKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgPSB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgfCBEaWFncmFtQ29uc3RyYWludHMuUGFuO1xyXG4gICAgdGhpcy5kaWFncmFtLnRvb2wgPSBEaWFncmFtVG9vbHMuWm9vbVBhbjtcclxuICB9XHJcbiAgY3Vyc29yKCkge1xyXG4gICAgdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzID0gdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzICYgfkRpYWdyYW1Db25zdHJhaW50cy5QYW47XHJcbiAgICB0aGlzLmRpYWdyYW0udG9vbCA9IERpYWdyYW1Ub29scy5EZWZhdWx0O1xyXG4gIH1cclxuICBzZWxlY3Rpb25DaGFuZ2UoZXZ0OiBJU2VsZWN0aW9uQ2hhbmdlRXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCB7IG5ld1ZhbHVlLCBzdGF0ZSB9ID0gZXZ0O1xyXG4gICAgaWYgKHN0YXRlICE9PSAnQ2hhbmdpbmcnIHx8ICFuZXdWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5fbm9kZWRlc3Ryb3kubmV4dCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25uZWN0b3JzID0gbmV3VmFsdWUuZmlsdGVyKG4gPT4gbiBpbnN0YW5jZW9mIENvbm5lY3RvcikubWFwKG4gPT4gbiBhcyBDb25uZWN0b3JNb2RlbCk7XHJcbiAgICBpZiAoY29ubmVjdG9ycy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgY29ubmVjdG9yID0gY29ubmVjdG9yc1swXSxcclxuICAgICAgICB0eXBlID0gY29ubmVjdG9yLnR5cGU7XHJcbiAgICAgIHRoaXMuY29ubmVjdG9yVHlwZSA9IGNvbm5lY3RvcnMubGVuZ3RoID09PSAxIHx8XHJcbiAgICAgICAgY29ubmVjdG9ycy5ldmVyeShjID0+IGMudHlwZSA9PT0gdHlwZSkgPyB0eXBlIDogbnVsbDtcclxuICAgICAgaWYgKGNvbm5lY3Rvci5hbm5vdGF0aW9ucy5sZW5ndGggJiYgY29ubmVjdG9yLmFubm90YXRpb25zWzBdLnN0eWxlKVxyXG4gICAgICAgIHRoaXMuZm9udFNpemUgPSBjb25uZWN0b3IuYW5ub3RhdGlvbnNbMF0uc3R5bGUuZm9udFNpemU7XHJcbiAgICAgIHRoaXMuY29ubmVjdG9yVHlwZSA9IGNvbm5lY3RvcnMubGVuZ3RoID09PSAxIHx8XHJcbiAgICAgICAgY29ubmVjdG9ycy5ldmVyeShjID0+IGMudHlwZSA9PT0gdHlwZSkgPyB0eXBlIDogbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IG5vZGVzID0gbmV3VmFsdWUuZmlsdGVyKG4gPT4gbiBpbnN0YW5jZW9mIE5vZGUpO1xyXG4gICAgaWYgKG5vZGVzLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBub2RlID0gbm9kZXNbMF0sIGFkZEluZm8gPSBub2RlLmFkZEluZm8gYXMgYW55O1xyXG4gICAgICBpZiAoIWFkZEluZm8gfHwgIWFkZEluZm9bJ25vZGVUeXBlJ10pXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBpZiAobm9kZS5hbm5vdGF0aW9ucy5sZW5ndGggJiYgbm9kZS5hbm5vdGF0aW9uc1swXS5zdHlsZSlcclxuICAgICAgICB0aGlzLmZvbnRTaXplID0gbm9kZS5hbm5vdGF0aW9uc1swXS5zdHlsZS5mb250U2l6ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShXb3JrZmxvd05vZGVDb21wb25lbnQsIHtcclxuICAgICAgc3RhdGU6IHtcclxuICAgICAgICBkaWFncmFtOiB0aGlzLmRpYWdyYW0sXHJcbiAgICAgICAgbm9kZXMsXHJcbiAgICAgICAgY29ubmVjdG9yc1xyXG4gICAgICB9LFxyXG4gICAgICBwb2xpY3k6IE9wZW5Qb2xpY3kuVGFiIC8qJiB+T3BlblBvbGljeS5FeHBhbmRhYmxlKi8sXHJcbiAgICAgIGdyb3VwOiAnJ1xyXG4gICAgfSkudGhlbihwID0+IHtcclxuICAgICAgcC5pbnN0YW5jZS5jaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fbm9kZWRlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGFuZ2UoKSk7XHJcbiAgICAgIHRoaXMuX25vZGVkZXN0cm95LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHAuY2xvc2UoKSlcclxuICAgIH0pO1xyXG4gIH1cclxuICBhbGlnbih2YWx1ZTogQWxpZ25tZW50T3B0aW9ucykge1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMuZm9yRWFjaChuID0+IHtcclxuICAgICAgbi5hbm5vdGF0aW9ucy5sZW5ndGggJiYgT2JqZWN0LmFzc2lnbihuLmFubm90YXRpb25zWzBdLCB7XHJcbiAgICAgICAgb2Zmc2V0OiB7XHJcbiAgICAgICAgICB4OiB2YWx1ZSA9PT0gJ1JpZ2h0JyA/IDEgOiB2YWx1ZSA9PT0gJ0xlZnQnID8gMCA6IC41LFxyXG4gICAgICAgICAgeTogdmFsdWUgPT09ICdUb3AnID8gMCA6IHZhbHVlID09PSAnQm90dG9tJyA/IDEgOiAuNVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IHZhbHVlID09PSAnVG9wJyA/ICdCb3R0b20nIDogdmFsdWUgPT09ICdCb3R0b20nID8gJ1RvcCcgOiAnQ2VudGVyJyxcclxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiB2YWx1ZSA9PT0gJ1JpZ2h0JyA/ICdMZWZ0JyA6IHZhbHVlID09PSAnTGVmdCcgPyAnUmlnaHQnIDogJ0NlbnRlcidcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLmNvbm5lY3RvcnMuZm9yRWFjaChjID0+XHJcbiAgICAgIGMuYW5ub3RhdGlvbnMuZm9yRWFjaChhID0+IE9iamVjdC5hc3NpZ24oYSwge1xyXG4gICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiB2YWx1ZSA9PT0gJ1RvcCcgPyAnQm90dG9tJyA6IHZhbHVlID09PSAnQm90dG9tJyA/ICdUb3AnIDogJ0NlbnRlcicsXHJcbiAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogdmFsdWUgPT09ICdMZWZ0JyA/ICdMZWZ0JyA6IHZhbHVlID09PSAnUmlnaHQnID8gJ1JpZ2h0JyA6ICdDZW50ZXInLFxyXG4gICAgICAgIC8vICBkaXNwbGFjZW1lbnQ6IHtcclxuICAgICAgICAvLyAgICB4OiB2YWx1ZSA9PT0gJ1JpZ2h0JyA/IDEwIDogdmFsdWUgPT09ICdMZWZ0JyA/IC0xMCA6IDAsXHJcbiAgICAgICAgLy8gICAgeTogdmFsdWUgPT09ICdUb3AnID8gLTEwIDogdmFsdWUgPT09ICdCb3R0b20nID8gMTAgOiAwXHJcbiAgICAgICAgLy8gIH1cclxuICAgICAgfSkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5hbGlnbm1lbnQgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICBwdWJsaWMgZHJhZ0VudGVyKGFyZ3M6IElEcmFnRW50ZXJFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGlmIChhcmdzLmVsZW1lbnQgaW5zdGFuY2VvZiBOb2RlKSB7XHJcbiAgICAgIHN3aXRjaCAoYXJncy5lbGVtZW50LnNoYXBlLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdTd2ltTGFuZSc6XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNoYXBlID0gYXJncy5lbGVtZW50LnNoYXBlIGFzIFN3aW1MYW5lTW9kZWw7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoc2hhcGUub3JpZW50YXRpb24pIHtcclxuICAgICAgICAgICAgICBjYXNlICdIb3Jpem9udGFsJzpcclxuICAgICAgICAgICAgICAgIHNoYXBlLmxhbmVzWzBdLndpZHRoID0gNDAwO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSAnVmVydGljYWwnOlxyXG4gICAgICAgICAgICAgICAgc2hhcGUubGFuZXNbMF0uaGVpZ2h0ID0gNDAwO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnVGV4dCc6XHJcbiAgICAgICAgICAvLyhhcmdzLmVsZW1lbnQuc3R5bGUgYXMgVGV4dFN0eWxlTW9kZWwpLmZvbnRTaXplID0gMjA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGFyZ3MuZWxlbWVudDtcclxuICAgICAgICAgICAgYXJncy5lbGVtZW50LndpZHRoID0gMTAwO1xyXG4gICAgICAgICAgICBhcmdzLmVsZW1lbnQuaGVpZ2h0ICo9IDEwMCAvIHdpZHRoO1xyXG4gICAgICAgICAgICBhcmdzLmVsZW1lbnQub2Zmc2V0WCArPSAoYXJncy5lbGVtZW50LndpZHRoIC0gd2lkdGgpIC8gMjtcclxuICAgICAgICAgICAgYXJncy5lbGVtZW50Lm9mZnNldFkgKz0gKGFyZ3MuZWxlbWVudC5oZWlnaHQgLSBoZWlnaHQpIC8gMjtcclxuICAgICAgICAgICAgYXJncy5lbGVtZW50LnN0eWxlID0ge1xyXG4gICAgICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgICAgICAgICAgc3Ryb2tlQ29sb3I6IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snLFxyXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHJvcGVydHlDaGFuZ2UoZSkge1xyXG4gICAgaWYgKGUuY2F1c2UgIT09IDIpIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICBjaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgY29sbGVjdGlvbkNoYW5nZSgpIHtcclxuICAgIHRoaXMuX3JvdXRlci5jb2xsYXBzZSgpO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEN0cmwtcyBzYXZlXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlydHkgJiYgZXZlbnQuY3RybEtleSAmJiAoZXZlbnQua2V5ID09PSAncycgfHwgZXZlbnQua2V5ID09PSAnUycpKSB7XHJcbiAgICAgIHRoaXMuc2F2ZSgpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBiZ0NoYW5nZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMuZm9yRWFjaChuID0+IG4uc3R5bGUuZmlsbCA9IHZhbCk7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgY29sb3JDaGFuZ2UodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmZvckVhY2gobiA9PiBuLmFubm90YXRpb25zLmZvckVhY2goYSA9PiBhLnN0eWxlLmNvbG9yID0gdmFsKSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5jb25uZWN0b3JzLmZvckVhY2goYyA9PiBjLmFubm90YXRpb25zLmZvckVhY2goYSA9PiBhLnN0eWxlLmNvbG9yID0gdmFsKSk7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgY29ubmVjdG9yVHlwZUNoYW5nZSh0eXBlOiBTZWdtZW50cykge1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMuY29ubmVjdG9ycy5mb3JFYWNoKGMgPT4gYy50eXBlID0gdHlwZSk7XHJcbiAgICB0aGlzLmNvbm5lY3RvclR5cGUgPSB0eXBlO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIGJvbGRDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCB2YWwgPSAhdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXNbMF0uYW5ub3RhdGlvbnNbMF0/LnN0eWxlPy5ib2xkO1xyXG4gICAgZnVuY3Rpb24gY2hhbmdlKG5vZGU6IChOb2RlTW9kZWwgfCBDb25uZWN0b3JNb2RlbCkpIHtcclxuICAgICAgaWYgKG5vZGUuc2hhcGUudHlwZSA9PT0gJ1RleHQnKVxyXG4gICAgICAgIChub2RlLnN0eWxlIGFzIFRleHRTdHlsZU1vZGVsKS5ib2xkID0gdmFsO1xyXG4gICAgICBlbHNlIG5vZGUuYW5ub3RhdGlvbnMuZm9yRWFjaChhID0+IHtcclxuICAgICAgICBpZiAoIWEuc3R5bGUpXHJcbiAgICAgICAgICBhLnN0eWxlID0geyBib2xkOiB2YWwgfTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBhLnN0eWxlLmJvbGQgPSB2YWw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMuZm9yRWFjaChjaGFuZ2UpO1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMuY29ubmVjdG9ycy5mb3JFYWNoKGNoYW5nZSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICB9XHJcbiAgaXRhbGljQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgdmFsID0gIXRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzWzBdLmFubm90YXRpb25zWzBdPy5zdHlsZT8uaXRhbGljO1xyXG4gICAgZnVuY3Rpb24gY2hhbmdlKG5vZGU6IChOb2RlTW9kZWwgfCBDb25uZWN0b3JNb2RlbCkpIHtcclxuICAgICAgaWYgKG5vZGUuc2hhcGUudHlwZSA9PT0gJ1RleHQnKVxyXG4gICAgICAgIChub2RlLnN0eWxlIGFzIFRleHRTdHlsZU1vZGVsKS5pdGFsaWMgPSB2YWw7XHJcbiAgICAgIGVsc2Ugbm9kZS5hbm5vdGF0aW9ucy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgIGlmICghYS5zdHlsZSlcclxuICAgICAgICAgIGEuc3R5bGUgPSB7IGl0YWxpYzogdmFsIH07XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYS5zdHlsZS5pdGFsaWMgPSB2YWw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMuZm9yRWFjaChjaGFuZ2UpO1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMuY29ubmVjdG9ycy5mb3JFYWNoKGNoYW5nZSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICB9XHJcbiAgZm9udFNpemVDaGFuZ2UodmFsOiBudW1iZXIpIHtcclxuICAgIGZ1bmN0aW9uIGNoYW5nZShub2RlOiAoTm9kZU1vZGVsIHwgQ29ubmVjdG9yTW9kZWwpKSB7XHJcbiAgICAgIGlmIChub2RlLnNoYXBlLnR5cGUgPT09ICdUZXh0JylcclxuICAgICAgICAobm9kZS5zdHlsZSBhcyBUZXh0U3R5bGVNb2RlbCkuZm9udFNpemUgPSB2YWw7XHJcbiAgICAgIGVsc2UgKG5vZGUgYXMgTm9kZU1vZGVsKS5hbm5vdGF0aW9ucz8uZm9yRWFjaChhID0+IHtcclxuICAgICAgICBpZiAoIWEuc3R5bGUpXHJcbiAgICAgICAgICBhLnN0eWxlID0geyBmb250U2l6ZTogdmFsIH07XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYS5zdHlsZS5mb250U2l6ZSA9IHZhbDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2Rlcy5mb3JFYWNoKGNoYW5nZSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5jb25uZWN0b3JzLmZvckVhY2goY2hhbmdlKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gIH1cclxuICBzdHJva2VDaGFuZ2UodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLmNvbm5lY3RvcnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgYy5zdHlsZS5zdHJva2VDb2xvciA9IHZhbDtcclxuICAgICAgaWYgKGMuYW5ub3RhdGlvbnMpIGMuYW5ub3RhdGlvbnNbMF0uc3R5bGUuY29sb3IgPSB2YWw7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmZvckVhY2gobiA9PiBuLnN0eWxlLnN0cm9rZUNvbG9yID0gdmFsKTtcclxuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICBzYXZlKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VyaWFsaXphdGlvblNldHRpbmdzID0geyBwcmV2ZW50RGVmYXVsdHM6IHRydWUgfTtcclxuICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UodGhpcy5kaWFncmFtLnNhdmVEaWFncmFtKCkpIGFzIERpYWdyYW1Nb2RlbDtcclxuICAgIHRoaXMuX2Zvcm0ud29ya2Zsb3cuY29ubmVjdG9ycyA9IG9iai5jb25uZWN0b3JzO1xyXG4gICAgdGhpcy5fZm9ybS53b3JrZmxvdy5ub2RlcyA9IG9iai5ub2Rlcy5maWx0ZXIobiA9PiBuLmlkICE9PSAndmVyc2lvbicpO1xyXG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xyXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX3NlcnZpY2Uuc2F2ZSh0aGlzLl9mb3JtKSkudGhlbih2ID0+IHtcclxuICAgICAgdGhpcy5fcHMudG9hc3QoJ0NoYW5nZXNTYXZlZCcpO1xyXG4gICAgICBpZiAodGhpcy5fZm9ybS53b3JrZmxvdy52ZXJzaW9uIDwgdikge1xyXG4gICAgICAgIHRoaXMuX3BzLnRvYXN0KCdEaWFncmFtVmVyc2lvbicsIHYpO1xyXG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmRpYWdyYW0uZ2V0Tm9kZU9iamVjdCgndmVyc2lvbicpO1xyXG4gICAgICAgIChub2RlLnNoYXBlIGFzIFRleHRNb2RlbCkuY29udGVudCA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0RpYWdyYW1WZXJzaW9uJywgdik7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtLmRhdGFCaW5kKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fZm9ybS53b3JrZmxvdy52ZXJzaW9uID0gdjtcclxuICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgfSwgKCkgPT4ge1xyXG4gICAgICB0aGlzLl9wcy5lcnJvcigpO1xyXG4gICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zeW1ib2xQYWxldHRlPy5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmRpYWdyYW0/LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5fbm9kZWRlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fbm9kZWRlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ0b29scyA9ICF0b29sc1wiIFtiaXpkb2NUb29sdGlwXT1cIidDb2xsYXBzZScgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+dmlld19zaWRlYmFyPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInNhdmUoKVwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhZGlydHkgfHwgc2F2aW5nXCI+e3snU2F2ZUNoYW5nZXMnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZGlhZ3JhbS5maXRUb1BhZ2UoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidGaXRUb1BhZ2UnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPmZ1bGxzY3JlZW5fZXhpdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInBhbigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1BhbicgfCB0cmFuc2xhdGVcIj48c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi1wYW5cIj48L3NwYW4+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImN1cnNvcigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0N1cnNvcicgfCB0cmFuc2xhdGVcIj48c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi1jdXJzb3JcIj48L3NwYW4+PC9idXR0b24+XHJcbiAgPHNwYW4gY2xhc3M9XCJ0b29scy1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkaWFncmFtLnVuZG8oKVwiIFtiaXpkb2NUb29sdGlwXT1cIidVbmRvJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGlhZ3JhbS5oaXN0b3J5TWFuYWdlcj8uY2FuVW5kb1wiPjxtYXQtaWNvbj51bmRvPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZGlhZ3JhbS5yZWRvKClcIiBbYml6ZG9jVG9vbHRpcF09XCInUmVkbycgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiIWRpYWdyYW0uaGlzdG9yeU1hbmFnZXI/LmNhblJlZG9cIj48bWF0LWljb24+cmVkbzwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPHNwYW4gY2xhc3M9XCJ0b29scy1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkaWFncmFtLmNvcHkoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidDb3B5JyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCJkaWFncmFtLnNlbGVjdGVkSXRlbXM/LmNvbm5lY3RvcnMubGVuZ3RoID09PSAwICYmIGRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8ubm9kZXMubGVuZ3RoID09PSAwXCI+PG1hdC1pY29uPmNvcHk8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkaWFncmFtLnBhc3RlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInUGFzdGUnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPnBhc3RlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZGlhZ3JhbS5yZW1vdmUoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidSZW1vdmUnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cImRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8uY29ubmVjdG9ycy5sZW5ndGggPT09IDAgJiYgZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5ub2Rlcy5sZW5ndGggPT09IDBcIj48bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8c3BhbiBjbGFzcz1cInRvb2xzLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJsaW5lTWVudVwiIFtkaXNhYmxlZF09XCJkaWFncmFtLnNlbGVjdGVkSXRlbXM/LmNvbm5lY3RvcnMubGVuZ3RoID09PSAwXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0Nvbm5lY3Rvck1vZGUnfHRyYW5zbGF0ZVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJlLW1lbnUtaWNvblwiIFtuZ0NsYXNzXT1cInsnc2YtaWNvbi1zdHJhaWdodC1saW5lJzogY29ubmVjdG9yVHlwZSA9PT0gJ1N0cmFpZ2h0JyxcclxuICAgICAgICAgICdzZi1pY29uLW9ydGhvZ29uYWwtbGluZSc6IGNvbm5lY3RvclR5cGUgPT09ICdPcnRob2dvbmFsJyxcclxuICAgICAgICAgICdzZi1pY29uLWJlaXplci1saW5lJzogY29ubmVjdG9yVHlwZSA9PT0gJ0Jlemllcid9XCI+PC9zcGFuPlxyXG4gICAgPG1hdC1pY29uPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNsaW5lTWVudSBvdmVybGF5UGFuZWxDbGFzcz1cImljb24tbWVudS1wYW5lbFwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjb25uZWN0b3JUeXBlQ2hhbmdlKCdTdHJhaWdodCcpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZS1tZW51LWljb24gc2YtaWNvbi1zdHJhaWdodC1saW5lXCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImNvbm5lY3RvclR5cGVDaGFuZ2UoJ09ydGhvZ29uYWwnKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUtbWVudS1pY29uIHNmLWljb24tb3J0aG9nb25hbC1saW5lXCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImNvbm5lY3RvclR5cGVDaGFuZ2UoJ0JlemllcicpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZS1tZW51LWljb24gc2YtaWNvbi1iZWl6ZXItbGluZVwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPCEtLTxuZy1jb250YWluZXIgKm5nSWY9XCJjb25uZWN0b3JzLmxlbmd0aFwiPlxyXG4gICAgICA8IGJpemRvYy1jb2xvci1waWNrZXIgKHZhbHVlQ2hhbmdlcyk9J3N0cm9rZUNoYW5nZSgkZXZlbnQpJyBbbGFiZWxdPVwiJ1N0cm9rZSd8dHJhbnNsYXRlXCI+PC8gYml6ZG9jLWNvbG9yLXBpY2tlcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVzWzBdLmFubm90YXRpb25zLmxlbmd0aFwiPlxyXG4gICAgICAgIDwgYml6ZG9jLWNvbG9yLXBpY2tlciAodmFsdWVDaGFuZ2VzKT0nY29sb3JDaGFuZ2UoJGV2ZW50KScgW2xhYmVsXT1cIidDb2xvcid8dHJhbnNsYXRlXCI+PC8gYml6ZG9jLWNvbG9yLXBpY2tlcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwgYml6ZG9jLWNvbG9yLXBpY2tlciAodmFsdWVDaGFuZ2VzKT0nYmdDaGFuZ2UoJGV2ZW50KScgW2xhYmVsXT1cIidCYWNrZ3JvdW5kJ3x0cmFuc2xhdGVcIj48LyBiaXpkb2MtY29sb3ItcGlja2VyPlxyXG4gICAgICA8IGJpemRvYy1jb2xvci1waWNrZXIgKHZhbHVlQ2hhbmdlcyk9J3N0cm9rZUNoYW5nZSgkZXZlbnQpJyBbbGFiZWxdPVwiJ1N0cm9rZSd8dHJhbnNsYXRlXCI+PC8gYml6ZG9jLWNvbG9yLXBpY2tlcj5cclxuICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG4gIDwvbWF0LW1lbnU+XHJcbiAgJm5ic3A7XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJhbGlnbk1lbnVcIiBbZGlzYWJsZWRdPVwiZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5ub2Rlcy5sZW5ndGggPT09IDAgJiYgZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5jb25uZWN0b3JzLmxlbmd0aCA9PT0gMFwiIFtiaXpkb2NUb29sdGlwXT1cIidBbGlnbid8dHJhbnNsYXRlXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImUtaWNvbnNcIiBbbmdDbGFzc109XCJ7J3NmLWljb24tdG9wJzogYWxpZ25tZW50ID09PSAnVG9wJyxcclxuICAgICAgICAgICdzZi1pY29uLWxlZnQnOiBhbGlnbm1lbnQgPT09ICdMZWZ0JyxcclxuICAgICAgICAgICdzZi1pY29uLWNlbnRlcic6IGFsaWdubWVudCA9PT0gJ0NlbnRlcicsXHJcbiAgICAgICAgICAnc2YtaWNvbi1ib3R0b20nOiBhbGlnbm1lbnQgPT09ICdCb3R0b20nLFxyXG4gICAgICAgICAgJ3NmLWljb24tcmlnaHQnOiBhbGlnbm1lbnQgPT09ICdSaWdodCd9XCI+PC9zcGFuPlxyXG4gICAgPG1hdC1pY29uPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNhbGlnbk1lbnUgb3ZlcmxheVBhbmVsQ2xhc3M9XCJpY29uLW1lbnUtcGFuZWxcIj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYWxpZ24oJ1RvcCcpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLXRvcFwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhbGlnbignTGVmdCcpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLWxlZnRcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYWxpZ24oJ0NlbnRlcicpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLWNlbnRlclwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhbGlnbignUmlnaHQnKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi1yaWdodFwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhbGlnbignQm90dG9tJylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tYm90dG9tXCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9tYXQtbWVudT5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiYm9sZENoYW5nZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0JvbGQnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cImRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8uY29ubmVjdG9ycy5sZW5ndGggPT09IDAgJiYgZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5ub2Rlcy5sZW5ndGggPT09IDBcIj48bWF0LWljb24+Zm9ybWF0X2JvbGQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJpdGFsaWNDaGFuZ2UoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidJdGFsaWMnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cImRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8uY29ubmVjdG9ycy5sZW5ndGggPT09IDAgJiYgZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5ub2Rlcy5sZW5ndGggPT09IDBcIj48bWF0LWljb24+Zm9ybWF0X2l0YWxpYzwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInNpemVNZW51XCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaWFncmFtLnNlbGVjdGVkSXRlbXM/Lm5vZGVzLmxlbmd0aCA9PT0gMCAmJiBkaWFncmFtLnNlbGVjdGVkSXRlbXM/LmNvbm5lY3RvcnMubGVuZ3RoID09PSAwXCJcclxuICAgICAgICAgIFtiaXpkb2NUb29sdGlwXT1cIidGb250U2l6ZSd8dHJhbnNsYXRlXCI+XHJcbiAgICA8bWF0LWljb24+Zm9ybWF0X3NpemU8L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxtYXQtbWVudSAjc2l6ZU1lbnUgb3ZlcmxheVBhbmVsQ2xhc3M9XCJpY29uLW1lbnUtcGFuZWxcIj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgc2l6ZSBvZiBmb250U2l6ZXNcIiAoY2xpY2spPVwiZm9udFNpemVDaGFuZ2Uoc2l6ZSlcIj5cclxuICAgICAge3tzaXplfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbWF0LW1lbnU+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG48L21hdC10b29sYmFyPlxyXG48ZGl2IGNsYXNzPVwicm93IGNvbnRhaW5lclwiPlxyXG4gIDxkaXYgaWQ9XCJzeW1ib2xwYWxldHRlXCIgW3N0eWxlLmRpc3BsYXldPVwidG9vbHM/Jyc6J25vbmUnXCI+XHJcbiAgICA8ZGl2IGRpcj1cImx0clwiICNzeW1ib2xQYWxldHRlRWw+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICNkaWFncmFtRWwgaWQ9XCJkaWFncmFtXCIgY2xhc3M9XCJmbGV4XCIgZGlyPVwibHRyXCI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
586
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9mb3JtL3dvcmtmbG93L3dvcmtmbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vZm9ybS93b3JrZmxvdy93b3JrZmxvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBYSxZQUFZLEVBQXFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGtCQUFrQixFQUFFLG1CQUFtQixFQUNaLGVBQWUsRUFDMUMsT0FBTyxFQUFhLFFBQVEsRUFDNUIsSUFBSSxFQUEwQixZQUFZLEVBQUUsb0JBQW9CLEVBQ2hFLGFBQWEsRUFBRSxZQUFZLEVBQzNCLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWlCLGVBQWUsRUFBZSxjQUFjLEVBQ3RILE1BQU0sMEJBQTBCLENBQUM7QUFRbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRXpELE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hFLGFBQWEsQ0FBQyxNQUFNLENBQUMsWUFB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RSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBMlp4QyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgT25EZXN0cm95LCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaXJzdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIERpYWdyYW1Db25zdHJhaW50cywgU2VsZWN0b3JDb25zdHJhaW50cywgQ29ubmVjdG9yTW9kZWwsXHJcbiAgVGV4dE1vZGVsLCBQb2ludFBvcnRNb2RlbCwgTm9kZUNvbnN0cmFpbnRzLCBTY3JvbGxTZXR0aW5nc01vZGVsLFxyXG4gIERpYWdyYW0sIE5vZGVNb2RlbCwgVW5kb1JlZG8sIFN5bWJvbEluZm8sIElEcmFnRW50ZXJFdmVudEFyZ3MsIFNuYXBTZXR0aW5nc01vZGVsLCBNYXJnaW5Nb2RlbCxcclxuICBOb2RlLCBQYWxldHRlTW9kZWwsIFNlZ21lbnRzLCBEaWFncmFtVG9vbHMsIENvbm5lY3RvckNvbnN0cmFpbnRzLCBTZWxlY3Rvck1vZGVsLCBSdWxlclNldHRpbmdzTW9kZWwsIEFsaWdubWVudE9wdGlvbnMsIFRleHRTdHlsZU1vZGVsLFxyXG4gIFN5bWJvbFBhbGV0dGUsIEJwbW5EaWFncmFtcywgRGF0YUJpbmRpbmcsIElTZWxlY3Rpb25DaGFuZ2VFdmVudEFyZ3MsXHJcbiAgQ29ubmVjdG9yRWRpdGluZywgQ29ubmVjdG9yQnJpZGdpbmcsIFNuYXBwaW5nLCBDb25uZWN0b3IsIFN3aW1MYW5lTW9kZWwsIFBvcnRDb25zdHJhaW50cywgSGVhZGVyTW9kZWwsIFBvcnRWaXNpYmlsaXR5LCBTbmFwQ29uc3RyYWludHMsIFNoYXBlQW5ub3RhdGlvbk1vZGVsLCBQYXRoQW5ub3RhdGlvbk1vZGVsLCBEaWFncmFtTW9kZWxcclxufSBmcm9tICdAc3luY2Z1c2lvbi9lajItZGlhZ3JhbXMnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3lzdGVtU2VydmljZSB9IGZyb20gJy4uLy4uL3N5c3RlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3Nsb3RzL3BhbmUtcmVmJztcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi9ub2RlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFkbWluQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWRtaW4tZGlzbWlzcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IE1BVEVSSUFMX1BBTEVUVEVTIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb2xvcnMnO1xyXG5cclxuRGlhZ3JhbS5JbmplY3QoVW5kb1JlZG8sIENvbm5lY3RvckJyaWRnaW5nLCBDb25uZWN0b3JFZGl0aW5nLCBTbmFwcGluZyk7XHJcblN5bWJvbFBhbGV0dGUuSW5qZWN0KEJwbW5EaWFncmFtcyk7XHJcblxyXG5jb25zdCBwb3J0czogUG9pbnRQb3J0TW9kZWxbXSA9IFtcclxuICB7IGlkOiAncG9ydDEnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLCB5OiAwLjUgfSwgdmlzaWJpbGl0eTogUG9ydFZpc2liaWxpdHkuQ29ubmVjdCB8IFBvcnRWaXNpYmlsaXR5LkhvdmVyLCBjb25zdHJhaW50czogUG9ydENvbnN0cmFpbnRzLkRlZmF1bHQgfCBQb3J0Q29uc3RyYWludHMuRHJhdyB9LFxyXG4gIHsgaWQ6ICdwb3J0MicsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDAuNSwgeTogMSB9LCB2aXNpYmlsaXR5OiBQb3J0VmlzaWJpbGl0eS5Db25uZWN0IHwgUG9ydFZpc2liaWxpdHkuSG92ZXIsIGNvbnN0cmFpbnRzOiBQb3J0Q29uc3RyYWludHMuRGVmYXVsdCB8IFBvcnRDb25zdHJhaW50cy5EcmF3IH0sXHJcbiAgeyBpZDogJ3BvcnQzJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMSwgeTogMC41IH0sIHZpc2liaWxpdHk6IFBvcnRWaXNpYmlsaXR5LkNvbm5lY3QgfCBQb3J0VmlzaWJpbGl0eS5Ib3ZlciwgY29uc3RyYWludHM6IFBvcnRDb25zdHJhaW50cy5EZWZhdWx0IHwgUG9ydENvbnN0cmFpbnRzLkRyYXcgfSxcclxuICB7IGlkOiAncG9ydDQnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLjUsIHk6IDAgfSwgdmlzaWJpbGl0eTogUG9ydFZpc2liaWxpdHkuQ29ubmVjdCB8IFBvcnRWaXNpYmlsaXR5LkhvdmVyLCBjb25zdHJhaW50czogUG9ydENvbnN0cmFpbnRzLkRlZmF1bHQgfCBQb3J0Q29uc3RyYWludHMuRHJhdyB9XHJcbl07XHJcblxyXG5mdW5jdGlvbiBzaG93UGFsZXR0ZUljb24oKTogdm9pZCB7XHJcbiAgY29uc3QgcGFsZXR0ZVNwYWNlOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWxldHRlLXNwYWNlJyk7XHJcbiAgY29uc3QgaXNNb2JpbGUgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKG1heC13aWR0aDo1NTBweCknKS5tYXRjaGVzO1xyXG4gIGlmIChpc01vYmlsZSkge1xyXG4gICAgaWYgKCFwYWxldHRlU3BhY2UuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYi1tb2JpbGUtcGFsZXR0ZS1vcGVuJykpIHtcclxuICAgICAgcGFsZXR0ZVNwYWNlLmNsYXNzTGlzdC5hZGQoJ3NiLW1vYmlsZS1wYWxldHRlLW9wZW4nKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhbGV0dGVTcGFjZS5jbGFzc0xpc3QucmVtb3ZlKCdzYi1tb2JpbGUtcGFsZXR0ZS1vcGVuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBwYWxldHRlSWNvbkNsaWNrKCkge1xyXG4gIGNvbnN0IGlzTW9iaWxlID0gd2luZG93Lm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6NTUwcHgpJykubWF0Y2hlcztcclxuICBpZiAoaXNNb2JpbGUpIHtcclxuICAgIGNvbnN0IHBhbGV0dGVJY29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhbGV0dGUtaWNvbicpO1xyXG4gICAgaWYgKHBhbGV0dGVJY29uKSB7XHJcbiAgICAgIHBhbGV0dGVJY29uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgc2hvd1BhbGV0dGVJY29uLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy13b3JrZmxvdycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAncGFuZSdcclxuICB9XHJcbn0pXHJcbi8qKiB3b3JrZmxvdyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQWRtaW5Db21wb25lbnQge1xyXG4gIHN5bWJvbFBhbGV0dGU6IFN5bWJvbFBhbGV0dGU7XHJcbiAgcmVhZG9ubHkgZm9udFNpemVzID0gWzksIDExLCAxMiwgMTMsIDE1LCAyMSwgMzEsIDQxXTtcclxuICBkaWFncmFtOiBEaWFncmFtO1xyXG4gIEBWaWV3Q2hpbGQoJ3N5bWJvbFBhbGV0dGVFbCcsIHsgc3RhdGljOiB0cnVlIH0pIHN5bWJvbFBhbGV0dGVFbDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdkaWFncmFtRWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFncmFtRWw6IEVsZW1lbnRSZWY7XHJcbiAgcHJpdmF0ZSBfdG9vbHM6IGJvb2xlYW47XHJcbiAgZ2V0IHRvb2xzKCkgeyByZXR1cm4gdGhpcy5fdG9vbHM7IH1cclxuICBzZXQgdG9vbHModmFsOiBib29sZWFuKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGlhZ3JhbV90b29scycsIHZhbCA/ICcxJyA6ICcwJyk7XHJcbiAgICB0aGlzLl90b29scyA9IHZhbDtcclxuICB9XHJcbiAgY29ubmVjdG9yVHlwZTogU2VnbWVudHMgPSAnQmV6aWVyJztcclxuICBhbGlnbm1lbnQ6IEFsaWdubWVudE9wdGlvbnMgPSAnQ2VudGVyJztcclxuICBmb250U2l6ZSA9IDEyO1xyXG4gIHNhdmluZyA9IGZhbHNlO1xyXG4gIGVsZW1lbnQ/OiBhbnk7XHJcbiAgZGlydHkgPSBmYWxzZTtcclxuICBwYXJhbXM6IHt9O1xyXG4gIHJlYWRvbmx5IHBhbGV0dGVzOiBQYWxldHRlTW9kZWxbXSA9IFtdO1xyXG4gIGRpYWdyYW1Db25zdHJhaW50czogRGlhZ3JhbUNvbnN0cmFpbnRzID0gRGlhZ3JhbUNvbnN0cmFpbnRzLkRlZmF1bHQgfCBEaWFncmFtQ29uc3RyYWludHMuQnJpZGdpbmcgfCBEaWFncmFtQ29uc3RyYWludHMuVXNlckludGVyYWN0aW9uIHwgRGlhZ3JhbUNvbnN0cmFpbnRzLlpvb207XHJcbiAgLy9TeW1ib2xQYWxldHRlIFByb3BlcnRpZXNcclxuICByZWFkb25seSBzeW1ib2xNYXJnaW46IE1hcmdpbk1vZGVsID0geyBsZWZ0OiAxMCwgcmlnaHQ6IDEwLCB0b3A6IDEwLCBib3R0b206IDEwIH07XHJcbiAgcmVhZG9ubHkgc25hcFNldHRpbmdzOiBTbmFwU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIHNuYXBMaW5lQ29sb3I6IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDEwMClcclxuICB9O1xyXG4gIHJlYWRvbmx5IHNlbGVjdGVkSXRlbXM6IFNlbGVjdG9yTW9kZWwgPSB7XHJcbiAgICBjb25zdHJhaW50czogU2VsZWN0b3JDb25zdHJhaW50cy5BbGwgJiB+U2VsZWN0b3JDb25zdHJhaW50cy5Sb3RhdGUsXHJcbiAgfTtcclxuICByZWFkb25seSBzY3JvbGxTZXR0aW5nczogU2Nyb2xsU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIG1pblpvb206IC41LFxyXG4gICAgbWF4Wm9vbTogMi41LFxyXG4gIH07XHJcbiAgcmVhZG9ubHkgcnVsZXJTZXR0aW5nczogUnVsZXJTZXR0aW5nc01vZGVsID0ge1xyXG4gIH07XHJcbiAgcHJpdmF0ZSBfZm9ybTogRm9ybTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9ub2RlZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgLyoqIHdvcmtmbG93IGN0b3IgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3BzOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BhbmU6IFBhbmVSZWY8V29ya2Zsb3dDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBQYW5lc1JvdXRlcixcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLl90b29scyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkaWFncmFtX3Rvb2xzJykgPT09ICcxJztcclxuXHJcbiAgICB0aGlzLl9wYWxldHRlcygpO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zeW1ib2xQYWxldHRlID0gbmV3IFN5bWJvbFBhbGV0dGUoe1xyXG4gICAgICBleHBhbmRNb2RlOiAnTXVsdGlwbGUnLFxyXG4gICAgICBwYWxldHRlczogdGhpcy5wYWxldHRlcyxcclxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxyXG4gICAgICBlbmFibGVSdGw6IGZhbHNlLFxyXG4gICAgICBlbmFibGVBbmltYXRpb246IGZhbHNlLFxyXG4gICAgICBzeW1ib2xIZWlnaHQ6IDgwLFxyXG4gICAgICBzeW1ib2xXaWR0aDogODAsXHJcbiAgICAgIHN5bWJvbE1hcmdpbjogdGhpcy5zeW1ib2xNYXJnaW4sXHJcbiAgICAgIGdldFN5bWJvbEluZm86IHRoaXMuZ2V0U3ltYm9sSW5mby5iaW5kKHRoaXMpLFxyXG4gICAgICBnZXROb2RlRGVmYXVsdHM6IHRoaXMuZ2V0U3ltYm9sRGVmYXVsdHMuYmluZCh0aGlzKSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zeW1ib2xQYWxldHRlLmFwcGVuZFRvKHRoaXMuc3ltYm9sUGFsZXR0ZUVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5kaWFncmFtID0gbmV3IERpYWdyYW0oe1xyXG4gICAgICB3aWR0aDogXCIxMDAlXCIsIGhlaWdodDogXCIxMDAlXCIsXHJcbiAgICAgIHNuYXBTZXR0aW5nczogdGhpcy5zbmFwU2V0dGluZ3MsXHJcbiAgICAgIGdldENvbm5lY3RvckRlZmF1bHRzOiB0aGlzLmNvbm5EZWZhdWx0cy5iaW5kKHRoaXMpLFxyXG4gICAgICBjb25zdHJhaW50czogdGhpcy5kaWFncmFtQ29uc3RyYWludHMsXHJcbiAgICAgIGdldE5vZGVEZWZhdWx0czogdGhpcy5ub2RlRGVmYXVsdHMuYmluZCh0aGlzKSxcclxuICAgICAgc2Nyb2xsU2V0dGluZ3M6IHRoaXMuc2Nyb2xsU2V0dGluZ3MsXHJcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgcnVsZXJTZXR0aW5nczogdGhpcy5ydWxlclNldHRpbmdzLFxyXG4gICAgICBkcmFnRW50ZXI6IHRoaXMuZHJhZ0VudGVyLmJpbmQodGhpcyksXHJcbiAgICAgIGNvbm5lY3Rpb25DaGFuZ2U6IHRoaXMuY2hhbmdlLmJpbmQodGhpcyksXHJcbiAgICAgIGNvbGxlY3Rpb25DaGFuZ2U6IHRoaXMuY29sbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMpLFxyXG4gICAgICBwcm9wZXJ0eUNoYW5nZTogdGhpcy5wcm9wZXJ0eUNoYW5nZS5iaW5kKHRoaXMpLFxyXG4gICAgICBzZWxlY3Rpb25DaGFuZ2U6IHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcyksXHJcbiAgICB9LCB0aGlzLmRpYWdyYW1FbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIHBhbGV0dGVJY29uQ2xpY2soKTtcclxuICAgIHRoaXMuX3BhbmUucGFyYW1zQ2hhbmdlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgY29uc3QgaWQgPSBwWydpZCddO1xyXG4gICAgICB0aGlzLl9mb3JtID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvcm1zLmZpbmQoZiA9PiBmLm5hbWUgPT09IGlkKTtcclxuICAgICAgdGhpcy5fcGFuZS50aXRsZSA9IHRoaXMuX2Zvcm0udGl0bGU7XHJcbiAgICAgIHRoaXMucGFyYW1zID0geyBpZDogdGhpcy5fZm9ybS5uYW1lIH07XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3BhbmUuZGF0YUNoYW5nZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoZCA9PiB7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fZm9ybSwgZC5mb3JtKTtcclxuICAgICAgY29uc3QgZmxvdyA9IHRoaXMuX2Zvcm0ud29ya2Zsb3c7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5ub2RlcyA9IGZsb3cubm9kZXM7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5jb25uZWN0b3JzID0gZmxvdy5jb25uZWN0b3JzO1xyXG4gICAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICAgICAgdGhpcy5kaWFncmFtLmFkZCh0aGlzLl92ZXJzaW9uTm9kZShmbG93LnZlcnNpb24pKTtcclxuICAgICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSgpO1xyXG4gICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcGFsZXR0ZXMoKSB7XHJcbiAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubm9kZXMuZm9yRWFjaChuID0+IHtcclxuICAgICAgY29uc3Qgbm9kZTogTm9kZU1vZGVsID0ge1xyXG4gICAgICAgIGlkOiBuLm5hbWUsXHJcbiAgICAgICAgc2hhcGU6IG4uc2hhcGUsXHJcbiAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgbm9kZVR5cGU6IG4ubmFtZSxcclxuICAgICAgICAgIHRpdGxlOiBuLnRpdGxlXHJcbiAgICAgICAgfSxcclxuICAgICAgICB3aWR0aDogMTQ1LFxyXG4gICAgICAgIGhlaWdodDogMTQ1LFxyXG4gICAgICB9O1xyXG4gICAgICAobm9kZSBhcyBhbnkpLm5vZGUgPSBuLm5hbWU7XHJcbiAgICAgIGxldCBwYWxldHRlID0gdGhpcy5wYWxldHRlcy5maW5kKHAgPT4gcC50aXRsZSA9PT0gKG4ucGFsZXR0ZSB8fCAnJykpO1xyXG4gICAgICBpZiAoIXBhbGV0dGUpIHtcclxuICAgICAgICBwYWxldHRlID0geyBpZDogYF8ke24ucGFsZXR0ZX1gLCBleHBhbmRlZDogdHJ1ZSwgdGl0bGU6IG4ucGFsZXR0ZSB8fCAnJywgc3ltYm9sczogW10gfTtcclxuICAgICAgICB0aGlzLnBhbGV0dGVzLnB1c2gocGFsZXR0ZSk7XHJcbiAgICAgIH1cclxuICAgICAgcGFsZXR0ZS5zeW1ib2xzLnB1c2gobm9kZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucGFsZXR0ZXMucHVzaCh7XHJcbiAgICAgIGlkOiAnZGVzaWduJyxcclxuICAgICAgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0Rlc2lnbicpLFxyXG4gICAgICBzeW1ib2xzOiBbe1xyXG4gICAgICAgIGlkOiAnTGluazIyJyxcclxuICAgICAgICB0eXBlOiAnU3RyYWlnaHQnLFxyXG4gICAgICAgIHNvdXJjZVBvaW50OiB7IHg6IDAsIHk6IDAgfSxcclxuICAgICAgICB0YXJnZXRQb2ludDogeyB4OiA2MCwgeTogNjAgfSxcclxuICAgICAgICB0YXJnZXREZWNvcmF0b3I6IHtcclxuICAgICAgICAgIHNoYXBlOiAnQXJyb3cnLFxyXG4gICAgICAgICAgc3R5bGU6IHsgc3Ryb2tlQ29sb3I6ICcjNzU3NTc1JywgZmlsbDogJyM3NTc1NzUnIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXHJcbiAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6ICc0IDQnLFxyXG4gICAgICAgICAgc3Ryb2tlQ29sb3I6ICcjNzU3NTc1JyxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogJ3RleHQnLCBzaGFwZTogeyB0eXBlOiAnVGV4dCcsIGNvbnRlbnQ6ICdUJyB9LFxyXG4gICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICBmaWxsOiAndHJhbnNwYXJlbnQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25zdHJhaW50czogTm9kZUNvbnN0cmFpbnRzLkRlZmF1bHQgJiB+Tm9kZUNvbnN0cmFpbnRzLkluQ29ubmVjdCAmIH5Ob2RlQ29uc3RyYWludHMuT3V0Q29ubmVjdCxcclxuICAgICAgICBhZGRJbmZvOiB7IHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUZXh0JykgfVxyXG4gICAgICB9XVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjb2xvciA9IE1BVEVSSUFMX1BBTEVUVEVTWydncmV5J11bMjAwXTtcclxuICAgIHRoaXMucGFsZXR0ZXMucHVzaCh7XHJcbiAgICAgIGlkOiAnc3dpbWxhbmVTaGFwZXMnLFxyXG4gICAgICBleHBhbmRlZDogdHJ1ZSxcclxuICAgICAgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N3aW1sYW5lIFNoYXBlcycpLFxyXG4gICAgICBzeW1ib2xzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWQ6ICdzd2ltbGFuZScsXHJcbiAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdIb3Jpem9udGFsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICBoZWFkZXI6IHtcclxuICAgICAgICAgICAgICBhbm5vdGF0aW9uOiB7IGNvbnRlbnQ6ICdQbGFuJyB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHR5cGU6ICdTd2ltTGFuZScsXHJcbiAgICAgICAgICAgIGxhbmVzOiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaWQ6ICdsYW5lMScsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHtcclxuICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbjogeyBjb250ZW50OiAnTGFuZScgfSxcclxuICAgICAgICAgICAgICAgICAgc3R5bGU6IHsgZmlsbDogY29sb3IgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgb3JpZW50YXRpb246ICdIb3Jpem9udGFsJyxcclxuICAgICAgICAgICAgaXNMYW5lOiB0cnVlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgaGVpZ2h0OiA2MCxcclxuICAgICAgICAgIHdpZHRoOiAxNDAsXHJcbiAgICAgICAgICBvZmZzZXRYOiA3MCxcclxuICAgICAgICAgIG9mZnNldFk6IDMwLFxyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIGlkOiAndnN3aW1sYW5lJyxcclxuICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1ZlcnRpY2FsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICB0eXBlOiAnU3dpbUxhbmUnLFxyXG4gICAgICAgICAgICBoZWFkZXI6IHtcclxuICAgICAgICAgICAgICBhbm5vdGF0aW9uOiB7IGNvbnRlbnQ6ICdQbGFuJyB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxhbmVzOiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaWQ6ICdsYW5lMScsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHtcclxuICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbjogeyBjb250ZW50OiAnTGFuZScgfSxcclxuICAgICAgICAgICAgICAgICAgc3R5bGU6IHsgZmlsbDogY29sb3IgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgb3JpZW50YXRpb246ICdWZXJ0aWNhbCcsIGlzTGFuZTogdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGhlaWdodDogMTQwLFxyXG4gICAgICAgICAgd2lkdGg6IDYwLFxyXG4gICAgICAgICAgb2Zmc2V0WDogNzAsXHJcbiAgICAgICAgICBvZmZzZXRZOiAzMCxcclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICBpZDogJ3ZwaGFzZScsXHJcbiAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQaGFzZScpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgdHlwZTogJ1N3aW1MYW5lJyxcclxuICAgICAgICAgICAgcGhhc2VzOiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgc3Ryb2tlV2lkdGg6IDEsIHN0cm9rZURhc2hBcnJheTogJzMsMycsIHN0cm9rZUNvbG9yOiBjb2xvciB9LFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgIGFubm90YXRpb246IHsgdGV4dDogJ1BoYXNlJyB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfV0sXHJcbiAgICAgICAgICAgIG9yaWVudGF0aW9uOiAnVmVydGljYWwnLCBpc1BoYXNlOiB0cnVlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgaGVpZ2h0OiA2MCxcclxuICAgICAgICAgIHdpZHRoOiAxNDAsXHJcbiAgICAgICAgICBzdHlsZTogeyBzdHJva2VDb2xvcjogY29sb3IgfVxyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIGlkOiAnaHBoYXNlJyxcclxuICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1BoYXNlJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICB0eXBlOiAnU3dpbUxhbmUnLFxyXG4gICAgICAgICAgICBwaGFzZXM6IFt7XHJcbiAgICAgICAgICAgICAgc3R5bGU6IHsgc3Ryb2tlV2lkdGg6IDEsIHN0cm9rZURhc2hBcnJheTogJzMsMycsIHN0cm9rZUNvbG9yOiBjb2xvciB9LFxyXG4gICAgICAgICAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbjogeyB0ZXh0OiAnUGhhc2UnIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICBvcmllbnRhdGlvbjogJ0hvcml6b250YWwnLCBpc1BoYXNlOiB0cnVlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgaGVpZ2h0OiA2MCxcclxuICAgICAgICAgIHdpZHRoOiAxNDAsXHJcbiAgICAgICAgICBzdHlsZTogeyBzdHJva2VDb2xvcjogY29sb3IgfVxyXG4gICAgICAgIH1dXHJcbiAgICB9IGFzIFBhbGV0dGVNb2RlbCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ZlcnNpb25Ob2RlKHZlcnNpb246IG51bWJlcik6IE5vZGVNb2RlbCB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpZDogJ3ZlcnNpb24nLFxyXG4gICAgICBzaGFwZToge1xyXG4gICAgICAgIHR5cGU6ICdUZXh0JyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdEaWFncmFtVmVyc2lvbicsIHZlcnNpb24gfHwgMClcclxuICAgICAgfSxcclxuICAgICAgb2Zmc2V0WTogNSxcclxuICAgICAgb2Zmc2V0WDogNSxcclxuICAgICAgc3R5bGU6IHtcclxuICAgICAgICBmb250U2l6ZTogNTAsXHJcbiAgICAgICAgY29sb3I6IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snLFxyXG4gICAgICAgIG9wYWNpdHk6IC4xXHJcbiAgICAgIH0gYXMgVGV4dFN0eWxlTW9kZWwsXHJcbiAgICAgIGNvbnN0cmFpbnRzOiBOb2RlQ29uc3RyYWludHMuUmVhZE9ubHksXHJcbiAgICAgIHpJbmRleDogLTFcclxuICAgIH07XHJcbiAgfVxyXG4gIG5vZGVEZWZhdWx0cyA9IChvYmo6IE5vZGVNb2RlbCk6IE5vZGVNb2RlbCA9PiB7XHJcbiAgICBzd2l0Y2ggKG9iai5zaGFwZS50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ1N3aW1MYW5lJzpcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnVGV4dCc6XHJcbiAgICAgICAgaWYgKG9iai5pZCAhPT0gJ3ZlcnNpb24nKVxyXG4gICAgICAgICAgb2JqLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLkRlZmF1bHQgJiB+Tm9kZUNvbnN0cmFpbnRzLkluQ29ubmVjdCAmIH5Ob2RlQ29uc3RyYWludHMuT3V0Q29ubmVjdDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBpZiAob2JqLmFkZEluZm8gJiYgb2JqLmFkZEluZm9bJ25vZGVUeXBlJ10pIHtcclxuICAgICAgICAgIG9iai5jb25zdHJhaW50cyA9IE5vZGVDb25zdHJhaW50cy5EZWZhdWx0IHwgTm9kZUNvbnN0cmFpbnRzLkFzcGVjdFJhdGlvO1xyXG4gICAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjayc7XHJcbiAgICAgICAgICBvYmoucG9ydHMgPSBwb3J0cztcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuICBwdWJsaWMgY29ubkRlZmF1bHRzID0gKG9iajogQ29ubmVjdG9yTW9kZWwpID0+IHtcclxuICAgIG9iai5jb25zdHJhaW50cyA9IENvbm5lY3RvckNvbnN0cmFpbnRzLkRlZmF1bHQgfCBDb25uZWN0b3JDb25zdHJhaW50cy5CcmlkZ2luZztcclxuICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgaWYgKCFvYmoudHlwZSkgb2JqLnR5cGUgPSB0aGlzLmNvbm5lY3RvclR5cGU7XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0U3ltYm9sSW5mbyhzeW1ib2w6IE5vZGVNb2RlbCk6IFN5bWJvbEluZm8ge1xyXG4gICAgcmV0dXJuIHN5bWJvbC5hZGRJbmZvID8ge1xyXG4gICAgICBmaXQ6IHRydWUsXHJcbiAgICAgIHRvb2x0aXA6IChzeW1ib2wuYWRkSW5mbyBhcyBhbnkpLnRpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogeyB0ZXh0OiAoc3ltYm9sLmFkZEluZm8gYXMgYW55KS50aXRsZSwgb3ZlcmZsb3c6ICdXcmFwJywgd3JhcDogJ1dyYXBXaXRoT3ZlcmZsb3cnIH1cclxuICAgIH0gOiBudWxsO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0U3ltYm9sRGVmYXVsdHMoc3ltYm9sOiBOb2RlTW9kZWwpOiB2b2lkIHtcclxuICAgIHN5bWJvbC53aWR0aCA9IHN5bWJvbC5oZWlnaHQgPSA0MDtcclxuICB9XHJcbiAgcGFuKCkge1xyXG4gICAgdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzID0gdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzIHwgRGlhZ3JhbUNvbnN0cmFpbnRzLlBhbjtcclxuICAgIHRoaXMuZGlhZ3JhbS50b29sID0gRGlhZ3JhbVRvb2xzLlpvb21QYW47XHJcbiAgfVxyXG4gIGN1cnNvcigpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyA9IHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyAmIH5EaWFncmFtQ29uc3RyYWludHMuUGFuO1xyXG4gICAgdGhpcy5kaWFncmFtLnRvb2wgPSBEaWFncmFtVG9vbHMuRGVmYXVsdDtcclxuICB9XHJcbiAgc2VsZWN0aW9uQ2hhbmdlKGV2dDogSVNlbGVjdGlvbkNoYW5nZUV2ZW50QXJncykge1xyXG4gICAgY29uc3QgeyBuZXdWYWx1ZSwgc3RhdGUgfSA9IGV2dDtcclxuICAgIGlmIChzdGF0ZSAhPT0gJ0NoYW5naW5nJyB8fCAhbmV3VmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuX25vZGVkZXN0cm95Lm5leHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29ubmVjdG9ycyA9IG5ld1ZhbHVlLmZpbHRlcihuID0+IG4gaW5zdGFuY2VvZiBDb25uZWN0b3IpLm1hcChuID0+IG4gYXMgQ29ubmVjdG9yTW9kZWwpO1xyXG4gICAgaWYgKGNvbm5lY3RvcnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGNvbm5lY3RvciA9IGNvbm5lY3RvcnNbMF0sXHJcbiAgICAgICAgdHlwZSA9IGNvbm5lY3Rvci50eXBlO1xyXG4gICAgICB0aGlzLmNvbm5lY3RvclR5cGUgPSBjb25uZWN0b3JzLmxlbmd0aCA9PT0gMSB8fFxyXG4gICAgICAgIGNvbm5lY3RvcnMuZXZlcnkoYyA9PiBjLnR5cGUgPT09IHR5cGUpID8gdHlwZSA6IG51bGw7XHJcbiAgICAgIGlmIChjb25uZWN0b3IuYW5ub3RhdGlvbnMubGVuZ3RoICYmIGNvbm5lY3Rvci5hbm5vdGF0aW9uc1swXS5zdHlsZSlcclxuICAgICAgICB0aGlzLmZvbnRTaXplID0gY29ubmVjdG9yLmFubm90YXRpb25zWzBdLnN0eWxlLmZvbnRTaXplO1xyXG4gICAgICB0aGlzLmNvbm5lY3RvclR5cGUgPSBjb25uZWN0b3JzLmxlbmd0aCA9PT0gMSB8fFxyXG4gICAgICAgIGNvbm5lY3RvcnMuZXZlcnkoYyA9PiBjLnR5cGUgPT09IHR5cGUpID8gdHlwZSA6IG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBub2RlcyA9IG5ld1ZhbHVlLmZpbHRlcihuID0+IG4gaW5zdGFuY2VvZiBOb2RlKTtcclxuICAgIGlmIChub2Rlcy5sZW5ndGgpIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzWzBdLCBhZGRJbmZvID0gbm9kZS5hZGRJbmZvIGFzIGFueTtcclxuICAgICAgaWYgKCFhZGRJbmZvIHx8ICFhZGRJbmZvWydub2RlVHlwZSddKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgaWYgKG5vZGUuYW5ub3RhdGlvbnMubGVuZ3RoICYmIG5vZGUuYW5ub3RhdGlvbnNbMF0uc3R5bGUpXHJcbiAgICAgICAgdGhpcy5mb250U2l6ZSA9IG5vZGUuYW5ub3RhdGlvbnNbMF0uc3R5bGUuZm9udFNpemU7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoV29ya2Zsb3dOb2RlQ29tcG9uZW50LCB7XHJcbiAgICAgIHN0YXRlOiB7XHJcbiAgICAgICAgZGlhZ3JhbTogdGhpcy5kaWFncmFtLFxyXG4gICAgICAgIG5vZGVzLFxyXG4gICAgICAgIGNvbm5lY3RvcnNcclxuICAgICAgfSxcclxuICAgICAgcG9saWN5OiBPcGVuUG9saWN5LlRhYiAvKiYgfk9wZW5Qb2xpY3kuRXhwYW5kYWJsZSovLFxyXG4gICAgICBncm91cDogJydcclxuICAgIH0pLnRoZW4ocCA9PiB7XHJcbiAgICAgIHAuaW5zdGFuY2UuY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX25vZGVkZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hhbmdlKCkpO1xyXG4gICAgICB0aGlzLl9ub2RlZGVzdHJveS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiBwLmNsb3NlKCkpXHJcbiAgICB9KTtcclxuICB9XHJcbiAgYWxpZ24odmFsdWU6IEFsaWdubWVudE9wdGlvbnMpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgIG4uYW5ub3RhdGlvbnMubGVuZ3RoICYmIE9iamVjdC5hc3NpZ24obi5hbm5vdGF0aW9uc1swXSwge1xyXG4gICAgICAgIG9mZnNldDoge1xyXG4gICAgICAgICAgeDogdmFsdWUgPT09ICdSaWdodCcgPyAxIDogdmFsdWUgPT09ICdMZWZ0JyA/IDAgOiAuNSxcclxuICAgICAgICAgIHk6IHZhbHVlID09PSAnVG9wJyA/IDAgOiB2YWx1ZSA9PT0gJ0JvdHRvbScgPyAxIDogLjVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiB2YWx1ZSA9PT0gJ1RvcCcgPyAnQm90dG9tJyA6IHZhbHVlID09PSAnQm90dG9tJyA/ICdUb3AnIDogJ0NlbnRlcicsXHJcbiAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogdmFsdWUgPT09ICdSaWdodCcgPyAnTGVmdCcgOiB2YWx1ZSA9PT0gJ0xlZnQnID8gJ1JpZ2h0JyA6ICdDZW50ZXInXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5jb25uZWN0b3JzLmZvckVhY2goYyA9PlxyXG4gICAgICBjLmFubm90YXRpb25zLmZvckVhY2goYSA9PiBPYmplY3QuYXNzaWduKGEsIHtcclxuICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogdmFsdWUgPT09ICdUb3AnID8gJ0JvdHRvbScgOiB2YWx1ZSA9PT0gJ0JvdHRvbScgPyAnVG9wJyA6ICdDZW50ZXInLFxyXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6IHZhbHVlID09PSAnTGVmdCcgPyAnTGVmdCcgOiB2YWx1ZSA9PT0gJ1JpZ2h0JyA/ICdSaWdodCcgOiAnQ2VudGVyJyxcclxuICAgICAgICAvLyAgZGlzcGxhY2VtZW50OiB7XHJcbiAgICAgICAgLy8gICAgeDogdmFsdWUgPT09ICdSaWdodCcgPyAxMCA6IHZhbHVlID09PSAnTGVmdCcgPyAtMTAgOiAwLFxyXG4gICAgICAgIC8vICAgIHk6IHZhbHVlID09PSAnVG9wJyA/IC0xMCA6IHZhbHVlID09PSAnQm90dG9tJyA/IDEwIDogMFxyXG4gICAgICAgIC8vICB9XHJcbiAgICAgIH0pKVxyXG4gICAgKTtcclxuICAgIHRoaXMuYWxpZ25tZW50ID0gdmFsdWU7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgcHVibGljIGRyYWdFbnRlcihhcmdzOiBJRHJhZ0VudGVyRXZlbnRBcmdzKTogdm9pZCB7XHJcbiAgICBpZiAoYXJncy5lbGVtZW50IGluc3RhbmNlb2YgTm9kZSkge1xyXG4gICAgICBzd2l0Y2ggKGFyZ3MuZWxlbWVudC5zaGFwZS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnU3dpbUxhbmUnOlxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBjb25zdCBzaGFwZSA9IGFyZ3MuZWxlbWVudC5zaGFwZSBhcyBTd2ltTGFuZU1vZGVsO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHNoYXBlLm9yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSAnSG9yaXpvbnRhbCc6XHJcbiAgICAgICAgICAgICAgICBzaGFwZS5sYW5lc1swXS53aWR0aCA9IDQwMDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ1ZlcnRpY2FsJzpcclxuICAgICAgICAgICAgICAgIHNoYXBlLmxhbmVzWzBdLmhlaWdodCA9IDQwMDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1RleHQnOlxyXG4gICAgICAgICAgLy8oYXJncy5lbGVtZW50LnN0eWxlIGFzIFRleHRTdHlsZU1vZGVsKS5mb250U2l6ZSA9IDIwO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBhcmdzLmVsZW1lbnQ7XHJcbiAgICAgICAgICAgIGFyZ3MuZWxlbWVudC53aWR0aCA9IDEwMDtcclxuICAgICAgICAgICAgYXJncy5lbGVtZW50LmhlaWdodCAqPSAxMDAgLyB3aWR0aDtcclxuICAgICAgICAgICAgYXJncy5lbGVtZW50Lm9mZnNldFggKz0gKGFyZ3MuZWxlbWVudC53aWR0aCAtIHdpZHRoKSAvIDI7XHJcbiAgICAgICAgICAgIGFyZ3MuZWxlbWVudC5vZmZzZXRZICs9IChhcmdzLmVsZW1lbnQuaGVpZ2h0IC0gaGVpZ2h0KSAvIDI7XHJcbiAgICAgICAgICAgIGFyZ3MuZWxlbWVudC5zdHlsZSA9IHtcclxuICAgICAgICAgICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICAgIHN0cm9rZUNvbG9yOiB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnd2hpdGUnIDogJ2JsYWNrJyxcclxuICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByb3BlcnR5Q2hhbmdlKGUpIHtcclxuICAgIGlmIChlLmNhdXNlICE9PSAyKSB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgY2hhbmdlKCkge1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIGNvbGxlY3Rpb25DaGFuZ2UoKSB7XHJcbiAgICB0aGlzLl9yb3V0ZXIuY29sbGFwc2UoKTtcclxuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDdHJsLXMgc2F2ZVxyXG4gICAqIEBwYXJhbSBldmVudFxyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmRpcnR5ICYmIGV2ZW50LmN0cmxLZXkgJiYgKGV2ZW50LmtleSA9PT0gJ3MnIHx8IGV2ZW50LmtleSA9PT0gJ1MnKSkge1xyXG4gICAgICB0aGlzLnNhdmUoKTtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgYmdDaGFuZ2UodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmZvckVhY2gobiA9PiBuLnN0eWxlLmZpbGwgPSB2YWwpO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIGNvbG9yQ2hhbmdlKHZhbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2Rlcy5mb3JFYWNoKG4gPT4gbi5hbm5vdGF0aW9ucy5mb3JFYWNoKGEgPT4gYS5zdHlsZS5jb2xvciA9IHZhbCkpO1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMuY29ubmVjdG9ycy5mb3JFYWNoKGMgPT4gYy5hbm5vdGF0aW9ucy5mb3JFYWNoKGEgPT4gYS5zdHlsZS5jb2xvciA9IHZhbCkpO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIGNvbm5lY3RvclR5cGVDaGFuZ2UodHlwZTogU2VnbWVudHMpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLmNvbm5lY3RvcnMuZm9yRWFjaChjID0+IGMudHlwZSA9IHR5cGUpO1xyXG4gICAgdGhpcy5jb25uZWN0b3JUeXBlID0gdHlwZTtcclxuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICBib2xkQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgdmFsID0gIXRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzWzBdLmFubm90YXRpb25zWzBdPy5zdHlsZT8uYm9sZDtcclxuICAgIGZ1bmN0aW9uIGNoYW5nZShub2RlOiAoTm9kZU1vZGVsIHwgQ29ubmVjdG9yTW9kZWwpKSB7XHJcbiAgICAgIGlmIChub2RlLnNoYXBlLnR5cGUgPT09ICdUZXh0JylcclxuICAgICAgICAobm9kZS5zdHlsZSBhcyBUZXh0U3R5bGVNb2RlbCkuYm9sZCA9IHZhbDtcclxuICAgICAgZWxzZSBub2RlLmFubm90YXRpb25zLmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgaWYgKCFhLnN0eWxlKVxyXG4gICAgICAgICAgYS5zdHlsZSA9IHsgYm9sZDogdmFsIH07XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYS5zdHlsZS5ib2xkID0gdmFsO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmZvckVhY2goY2hhbmdlKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLmNvbm5lY3RvcnMuZm9yRWFjaChjaGFuZ2UpO1xyXG4gICAgdGhpcy5kaWFncmFtLmRhdGFCaW5kKCk7XHJcbiAgfVxyXG4gIGl0YWxpY0NoYW5nZSgpIHtcclxuICAgIGNvbnN0IHZhbCA9ICF0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2Rlc1swXS5hbm5vdGF0aW9uc1swXT8uc3R5bGU/Lml0YWxpYztcclxuICAgIGZ1bmN0aW9uIGNoYW5nZShub2RlOiAoTm9kZU1vZGVsIHwgQ29ubmVjdG9yTW9kZWwpKSB7XHJcbiAgICAgIGlmIChub2RlLnNoYXBlLnR5cGUgPT09ICdUZXh0JylcclxuICAgICAgICAobm9kZS5zdHlsZSBhcyBUZXh0U3R5bGVNb2RlbCkuaXRhbGljID0gdmFsO1xyXG4gICAgICBlbHNlIG5vZGUuYW5ub3RhdGlvbnMuZm9yRWFjaChhID0+IHtcclxuICAgICAgICBpZiAoIWEuc3R5bGUpXHJcbiAgICAgICAgICBhLnN0eWxlID0geyBpdGFsaWM6IHZhbCB9O1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGEuc3R5bGUuaXRhbGljID0gdmFsO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmZvckVhY2goY2hhbmdlKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLmNvbm5lY3RvcnMuZm9yRWFjaChjaGFuZ2UpO1xyXG4gICAgdGhpcy5kaWFncmFtLmRhdGFCaW5kKCk7XHJcbiAgfVxyXG4gIGZvbnRTaXplQ2hhbmdlKHZhbDogbnVtYmVyKSB7XHJcbiAgICBmdW5jdGlvbiBjaGFuZ2Uobm9kZTogKE5vZGVNb2RlbCB8IENvbm5lY3Rvck1vZGVsKSkge1xyXG4gICAgICBpZiAobm9kZS5zaGFwZS50eXBlID09PSAnVGV4dCcpXHJcbiAgICAgICAgKG5vZGUuc3R5bGUgYXMgVGV4dFN0eWxlTW9kZWwpLmZvbnRTaXplID0gdmFsO1xyXG4gICAgICBlbHNlIChub2RlIGFzIE5vZGVNb2RlbCkuYW5ub3RhdGlvbnM/LmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgaWYgKCFhLnN0eWxlKVxyXG4gICAgICAgICAgYS5zdHlsZSA9IHsgZm9udFNpemU6IHZhbCB9O1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGEuc3R5bGUuZm9udFNpemUgPSB2YWw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMuZm9yRWFjaChjaGFuZ2UpO1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMuY29ubmVjdG9ycy5mb3JFYWNoKGNoYW5nZSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICB9XHJcbiAgc3Ryb2tlQ2hhbmdlKHZhbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5jb25uZWN0b3JzLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIGMuc3R5bGUuc3Ryb2tlQ29sb3IgPSB2YWw7XHJcbiAgICAgIGlmIChjLmFubm90YXRpb25zKSBjLmFubm90YXRpb25zWzBdLnN0eWxlLmNvbG9yID0gdmFsO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2Rlcy5mb3JFYWNoKG4gPT4gbi5zdHlsZS5zdHJva2VDb2xvciA9IHZhbCk7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgc2F2ZSgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgdGhpcy5kaWFncmFtLnNlcmlhbGl6YXRpb25TZXR0aW5ncyA9IHsgcHJldmVudERlZmF1bHRzOiB0cnVlIH07XHJcbiAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKHRoaXMuZGlhZ3JhbS5zYXZlRGlhZ3JhbSgpKSBhcyBEaWFncmFtTW9kZWw7XHJcbiAgICB0aGlzLl9mb3JtLndvcmtmbG93LmNvbm5lY3RvcnMgPSBvYmouY29ubmVjdG9ycztcclxuICAgIHRoaXMuX2Zvcm0ud29ya2Zsb3cubm9kZXMgPSBvYmoubm9kZXMuZmlsdGVyKG4gPT4gbi5pZCAhPT0gJ3ZlcnNpb24nKTtcclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9zZXJ2aWNlLnNhdmUodGhpcy5fZm9ybSkpLnRoZW4odiA9PiB7XHJcbiAgICAgIHRoaXMuX3BzLnRvYXN0KCdDaGFuZ2VzU2F2ZWQnKTtcclxuICAgICAgaWYgKHRoaXMuX2Zvcm0ud29ya2Zsb3cudmVyc2lvbiA8IHYpIHtcclxuICAgICAgICB0aGlzLl9wcy50b2FzdCgnRGlhZ3JhbVZlcnNpb24nLCB2KTtcclxuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QoJ3ZlcnNpb24nKTtcclxuICAgICAgICAobm9kZS5zaGFwZSBhcyBUZXh0TW9kZWwpLmNvbnRlbnQgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdEaWFncmFtVmVyc2lvbicsIHYpO1xyXG4gICAgICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2Zvcm0ud29ya2Zsb3cudmVyc2lvbiA9IHY7XHJcbiAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgIH0sICgpID0+IHtcclxuICAgICAgdGhpcy5fcHMuZXJyb3IoKTtcclxuICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3ltYm9sUGFsZXR0ZT8uZGVzdHJveSgpO1xyXG4gICAgdGhpcy5kaWFncmFtPy5kZXN0cm95KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICAgIHRoaXMuX25vZGVkZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX25vZGVkZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtdG9vbGJhcj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidG9vbHMgPSAhdG9vbHNcIiBbYml6ZG9jVG9vbHRpcF09XCInQ29sbGFwc2UnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPnZpZXdfc2lkZWJhcjwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJzYXZlKClcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIWRpcnR5IHx8IHNhdmluZ1wiPnt7J1NhdmVDaGFuZ2VzJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRpYWdyYW0uZml0VG9QYWdlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInRml0VG9QYWdlJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5mdWxsc2NyZWVuX2V4aXQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwYW4oKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQYW4nIHwgdHJhbnNsYXRlXCI+PHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tcGFuXCI+PC9zcGFuPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjdXJzb3IoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidDdXJzb3InIHwgdHJhbnNsYXRlXCI+PHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tY3Vyc29yXCI+PC9zcGFuPjwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwidG9vbHMtZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZGlhZ3JhbS51bmRvKClcIiBbYml6ZG9jVG9vbHRpcF09XCInVW5kbycgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiIWRpYWdyYW0uaGlzdG9yeU1hbmFnZXI/LmNhblVuZG9cIj48bWF0LWljb24+dW5kbzwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRpYWdyYW0ucmVkbygpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1JlZG8nIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIiFkaWFncmFtLmhpc3RvcnlNYW5hZ2VyPy5jYW5SZWRvXCI+PG1hdC1pY29uPnJlZG88L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwidG9vbHMtZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZGlhZ3JhbS5jb3B5KClcIiBbYml6ZG9jVG9vbHRpcF09XCInQ29weScgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5jb25uZWN0b3JzLmxlbmd0aCA9PT0gMCAmJiBkaWFncmFtLnNlbGVjdGVkSXRlbXM/Lm5vZGVzLmxlbmd0aCA9PT0gMFwiPjxtYXQtaWNvbj5jb3B5PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZGlhZ3JhbS5wYXN0ZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1Bhc3RlJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5wYXN0ZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRpYWdyYW0ucmVtb3ZlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInUmVtb3ZlJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCJkaWFncmFtLnNlbGVjdGVkSXRlbXM/LmNvbm5lY3RvcnMubGVuZ3RoID09PSAwICYmIGRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8ubm9kZXMubGVuZ3RoID09PSAwXCI+PG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPHNwYW4gY2xhc3M9XCJ0b29scy1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibGluZU1lbnVcIiBbZGlzYWJsZWRdPVwiZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5jb25uZWN0b3JzLmxlbmd0aCA9PT0gMFwiIFtiaXpkb2NUb29sdGlwXT1cIidDb25uZWN0b3JNb2RlJ3x0cmFuc2xhdGVcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZS1tZW51LWljb25cIiBbbmdDbGFzc109XCJ7J3NmLWljb24tc3RyYWlnaHQtbGluZSc6IGNvbm5lY3RvclR5cGUgPT09ICdTdHJhaWdodCcsXHJcbiAgICAgICAgICAnc2YtaWNvbi1vcnRob2dvbmFsLWxpbmUnOiBjb25uZWN0b3JUeXBlID09PSAnT3J0aG9nb25hbCcsXHJcbiAgICAgICAgICAnc2YtaWNvbi1iZWl6ZXItbGluZSc6IGNvbm5lY3RvclR5cGUgPT09ICdCZXppZXInfVwiPjwvc3Bhbj5cclxuICAgIDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxtYXQtbWVudSAjbGluZU1lbnUgb3ZlcmxheVBhbmVsQ2xhc3M9XCJpY29uLW1lbnUtcGFuZWxcIj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY29ubmVjdG9yVHlwZUNoYW5nZSgnU3RyYWlnaHQnKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUtbWVudS1pY29uIHNmLWljb24tc3RyYWlnaHQtbGluZVwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjb25uZWN0b3JUeXBlQ2hhbmdlKCdPcnRob2dvbmFsJylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLW1lbnUtaWNvbiBzZi1pY29uLW9ydGhvZ29uYWwtbGluZVwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjb25uZWN0b3JUeXBlQ2hhbmdlKCdCZXppZXInKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUtbWVudS1pY29uIHNmLWljb24tYmVpemVyLWxpbmVcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDwhLS08bmctY29udGFpbmVyICpuZ0lmPVwiY29ubmVjdG9ycy5sZW5ndGhcIj5cclxuICAgICAgPCBiaXpkb2MtY29sb3ItcGlja2VyICh2YWx1ZUNoYW5nZXMpPSdzdHJva2VDaGFuZ2UoJGV2ZW50KScgW2xhYmVsXT1cIidTdHJva2UnfHRyYW5zbGF0ZVwiPjwvIGJpemRvYy1jb2xvci1waWNrZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2Rlc1swXS5hbm5vdGF0aW9ucy5sZW5ndGhcIj5cclxuICAgICAgICA8IGJpemRvYy1jb2xvci1waWNrZXIgKHZhbHVlQ2hhbmdlcyk9J2NvbG9yQ2hhbmdlKCRldmVudCknIFtsYWJlbF09XCInQ29sb3InfHRyYW5zbGF0ZVwiPjwvIGJpemRvYy1jb2xvci1waWNrZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IGJpemRvYy1jb2xvci1waWNrZXIgKHZhbHVlQ2hhbmdlcyk9J2JnQ2hhbmdlKCRldmVudCknIFtsYWJlbF09XCInQmFja2dyb3VuZCd8dHJhbnNsYXRlXCI+PC8gYml6ZG9jLWNvbG9yLXBpY2tlcj5cclxuICAgICAgPCBiaXpkb2MtY29sb3ItcGlja2VyICh2YWx1ZUNoYW5nZXMpPSdzdHJva2VDaGFuZ2UoJGV2ZW50KScgW2xhYmVsXT1cIidTdHJva2UnfHRyYW5zbGF0ZVwiPjwvIGJpemRvYy1jb2xvci1waWNrZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICA8L21hdC1tZW51PlxyXG4gICZuYnNwO1xyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWxpZ25NZW51XCIgW2Rpc2FibGVkXT1cImRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8ubm9kZXMubGVuZ3RoID09PSAwICYmIGRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8uY29ubmVjdG9ycy5sZW5ndGggPT09IDBcIiBbYml6ZG9jVG9vbHRpcF09XCInQWxpZ24nfHRyYW5zbGF0ZVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJlLWljb25zXCIgW25nQ2xhc3NdPVwieydzZi1pY29uLXRvcCc6IGFsaWdubWVudCA9PT0gJ1RvcCcsXHJcbiAgICAgICAgICAnc2YtaWNvbi1sZWZ0JzogYWxpZ25tZW50ID09PSAnTGVmdCcsXHJcbiAgICAgICAgICAnc2YtaWNvbi1jZW50ZXInOiBhbGlnbm1lbnQgPT09ICdDZW50ZXInLFxyXG4gICAgICAgICAgJ3NmLWljb24tYm90dG9tJzogYWxpZ25tZW50ID09PSAnQm90dG9tJyxcclxuICAgICAgICAgICdzZi1pY29uLXJpZ2h0JzogYWxpZ25tZW50ID09PSAnUmlnaHQnfVwiPjwvc3Bhbj5cclxuICAgIDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxtYXQtbWVudSAjYWxpZ25NZW51IG92ZXJsYXlQYW5lbENsYXNzPVwiaWNvbi1tZW51LXBhbmVsXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFsaWduKCdUb3AnKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi10b3BcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYWxpZ24oJ0xlZnQnKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi1sZWZ0XCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFsaWduKCdDZW50ZXInKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi1jZW50ZXJcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYWxpZ24oJ1JpZ2h0JylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tcmlnaHRcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYWxpZ24oJ0JvdHRvbScpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLWJvdHRvbVwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbWF0LW1lbnU+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImJvbGRDaGFuZ2UoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidCb2xkJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCJkaWFncmFtLnNlbGVjdGVkSXRlbXM/LmNvbm5lY3RvcnMubGVuZ3RoID09PSAwICYmIGRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8ubm9kZXMubGVuZ3RoID09PSAwXCI+PG1hdC1pY29uPmZvcm1hdF9ib2xkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiaXRhbGljQ2hhbmdlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInSXRhbGljJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCJkaWFncmFtLnNlbGVjdGVkSXRlbXM/LmNvbm5lY3RvcnMubGVuZ3RoID09PSAwICYmIGRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8ubm9kZXMubGVuZ3RoID09PSAwXCI+PG1hdC1pY29uPmZvcm1hdF9pdGFsaWM8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJzaXplTWVudVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5ub2Rlcy5sZW5ndGggPT09IDAgJiYgZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5jb25uZWN0b3JzLmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgICBbYml6ZG9jVG9vbHRpcF09XCInRm9udFNpemUnfHRyYW5zbGF0ZVwiPlxyXG4gICAgPG1hdC1pY29uPmZvcm1hdF9zaXplPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8bWF0LW1lbnUgI3NpemVNZW51IG92ZXJsYXlQYW5lbENsYXNzPVwiaWNvbi1tZW51LXBhbmVsXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHNpemUgb2YgZm9udFNpemVzXCIgKGNsaWNrKT1cImZvbnRTaXplQ2hhbmdlKHNpemUpXCI+XHJcbiAgICAgIHt7c2l6ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L21hdC1tZW51PlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPGRpdiBjbGFzcz1cInJvdyBjb250YWluZXJcIj5cclxuICA8ZGl2IGlkPVwic3ltYm9scGFsZXR0ZVwiIFtzdHlsZS5kaXNwbGF5XT1cInRvb2xzPycnOidub25lJ1wiPlxyXG4gICAgPGRpdiBkaXI9XCJsdHJcIiAjc3ltYm9sUGFsZXR0ZUVsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAjZGlhZ3JhbUVsIGlkPVwiZGlhZ3JhbVwiIGNsYXNzPVwiZmxleFwiIGRpcj1cImx0clwiPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -140,14 +140,14 @@ let ManageCubeIndexUtility = class ManageCubeIndexUtility {
140
140
  ngOnDestroy() {
141
141
  this._destroy.next();
142
142
  }
143
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ManageCubeIndexUtility, deps: [{ token: i1.Directionality }, { token: UtilityRef }, { token: i2.SessionService }, { token: i0.ViewContainerRef }, { token: i3.PromptService }, { token: i4.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
144
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: ManageCubeIndexUtility, selector: "ng-component", viewQueries: [{ propertyName: "editTmpl", first: true, predicate: ["editTmpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"add()\"><mat-icon>add</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table [dataSource]=\"dataSource\">\r\n <ng-container *ngFor=\"let a of axes; let i = index\" [matColumnDef]=\"a.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{a.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.axes[names.indexOf(a.name)]| typeValue: a.dataType | async}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef>{{'Value'|translate}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.value | currency : CURRENCY_CODE }} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button><mat-icon>more_horiz</mat-icon></button>\r\n <button mat-icon-button (click)=\"remove(element, $event)\"><mat-icon>delete</mat-icon></button>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns;\" (click)=\"edit(element)\"></tr>\r\n</table>\r\n<ng-template #editTmpl>\r\n <form [formGroup]=\"form\">\r\n <mat-form-field *ngFor=\"let a of axes\">\r\n <bizdoc-select [placeholder]=\"a.title\" [type]=\"a.dataType\" [formControlName]=\"a.name\" required></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput type=\"number\" formControlName=\"value\" autocomplete=\"off\" required [placeholder]=\"'Value'|translate\" />\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n", styles: ["form{padding:8px 4px 8px 8px;flex-flow:row wrap;box-sizing:border-box;display:flex}form>*{flex:1 1 auto;box-sizing:border-box;width:50%;padding:0 5px 0 0}table{width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.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: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i11.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-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: "component", type: i14.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i15.TypeValuePipe, name: "typeValue" }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }] }); }
143
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: ManageCubeIndexUtility, deps: [{ token: i1.Directionality }, { token: UtilityRef }, { token: i2.SessionService }, { token: i0.ViewContainerRef }, { token: i3.PromptService }, { token: i4.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
144
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: ManageCubeIndexUtility, selector: "ng-component", viewQueries: [{ propertyName: "editTmpl", first: true, predicate: ["editTmpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"add()\"><mat-icon>add</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table [dataSource]=\"dataSource\">\r\n <ng-container *ngFor=\"let a of axes; let i = index\" [matColumnDef]=\"a.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{a.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.axes[names.indexOf(a.name)]| typeValue: a.dataType | async}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef>{{'Value'|translate}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.value | currency : CURRENCY_CODE }} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button><mat-icon>more_horiz</mat-icon></button>\r\n <button mat-icon-button (click)=\"remove(element, $event)\"><mat-icon>delete</mat-icon></button>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns;\" (click)=\"edit(element)\"></tr>\r\n</table>\r\n<ng-template #editTmpl>\r\n <form [formGroup]=\"form\">\r\n <mat-form-field *ngFor=\"let a of axes\">\r\n <bizdoc-select [placeholder]=\"a.title\" [type]=\"a.dataType\" [formControlName]=\"a.name\" required></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput type=\"number\" formControlName=\"value\" autocomplete=\"off\" required [placeholder]=\"'Value'|translate\" />\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n", styles: ["form{padding:8px 4px 8px 8px;flex-flow:row wrap;box-sizing:border-box;display:flex}form>*{flex:1 1 auto;box-sizing:border-box;width:50%;padding:0 5px 0 0}table{width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.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: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i11.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-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: "component", type: i14.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i15.TypeValuePipe, name: "typeValue" }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }] }); }
145
145
  };
146
146
  ManageCubeIndexUtility = __decorate([
147
147
  BizDoc({ selector: 'manage-cube-index' })
148
148
  ], ManageCubeIndexUtility);
149
149
  export { ManageCubeIndexUtility };
150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ManageCubeIndexUtility, decorators: [{
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: ManageCubeIndexUtility, decorators: [{
151
151
  type: Component,
152
152
  args: [{ template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"add()\"><mat-icon>add</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table [dataSource]=\"dataSource\">\r\n <ng-container *ngFor=\"let a of axes; let i = index\" [matColumnDef]=\"a.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{a.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.axes[names.indexOf(a.name)]| typeValue: a.dataType | async}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef>{{'Value'|translate}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.value | currency : CURRENCY_CODE }} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button><mat-icon>more_horiz</mat-icon></button>\r\n <button mat-icon-button (click)=\"remove(element, $event)\"><mat-icon>delete</mat-icon></button>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns;\" (click)=\"edit(element)\"></tr>\r\n</table>\r\n<ng-template #editTmpl>\r\n <form [formGroup]=\"form\">\r\n <mat-form-field *ngFor=\"let a of axes\">\r\n <bizdoc-select [placeholder]=\"a.title\" [type]=\"a.dataType\" [formControlName]=\"a.name\" required></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput type=\"number\" formControlName=\"value\" autocomplete=\"off\" required [placeholder]=\"'Value'|translate\" />\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n", styles: ["form{padding:8px 4px 8px 8px;flex-flow:row wrap;box-sizing:border-box;display:flex}form>*{flex:1 1 auto;box-sizing:border-box;width:50%;padding:0 5px 0 0}table{width:100%}\n"] }]
153
153
  }], ctorParameters: () => [{ type: i1.Directionality }, { type: i17.UtilityRef, decorators: [{
@@ -157,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
157
157
  type: ViewChild,
158
158
  args: ['editTmpl', { static: true }]
159
159
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWN1YmUtaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9pbmRpY2VzL21hbmFnZS1jdWJlLWluZGV4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vaW5kaWNlcy9tYW5hZ2UtY3ViZS1pbmRleC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQTRDLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVzFDLElBQU0sc0JBQXNCLEdBQTVCLE1BQU0sc0JBQXNCO0lBZ0I1QixZQUFvQixJQUFvQixFQUNWLElBQXlELEVBQ3JGLE9BQXVCLEVBQVUsR0FBcUIsRUFDOUMsR0FBa0IsRUFDbEIsUUFBaUI7UUFKUCxTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNWLFNBQUksR0FBSixJQUFJLENBQXFEO1FBQ3BELFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBQzlD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QXNCO0lBRjdCLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0dBRWxDLHNCQUFzQixDQXdIN0I7OzJGQXhITyxzQkFBc0I7a0JBTjdCLFNBQVM7OzswQkF1QkwsTUFBTTsyQkFBQyxVQUFVO3VKQVBxQixRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgT25EZXN0cm95LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XHJcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXJcIjtcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gXCJAYW5ndWxhci9jZGsvYmlkaVwiO1xyXG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS9iYXNlXCI7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gXCIuLi8uLi9jb3JlL2RlY29yYXRvcnNcIjtcclxuaW1wb3J0IHsgVXRpbGl0eVJlZiB9IGZyb20gXCIuLi91dGlsaXR5LXJlZlwiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDdWJlQXhpcyB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0eWxlVXJsczogWycuL21hbmFnZS1jdWJlLWluZGV4LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hbmFnZS1jdWJlLWluZGV4LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdtYW5hZ2UtY3ViZS1pbmRleCcgfSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgTWFuYWdlQ3ViZUluZGV4VXRpbGl0eSBpbXBsZW1lbnRzIFV0aWxpdHlDb21wb25lbnQ8YW55LCBhbnk+LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcmVhZG9ubHkgQ1VSUkVOQ1lfQ09ERTogc3RyaW5nO1xyXG4gIGRpcnR5ID0gZmFsc2U7XHJcbiAgYXhlczogQ3ViZUF4aXNbXTtcclxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8SW5kZXg+O1xyXG4gIHJlYWRvbmx5IG5hbWVzOiBzdHJpbmdbXTtcclxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gWyd2YWx1ZScsICdvcHRpb25zJ107XHJcbiAgcmVhZG9ubHkgZm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICB2YWx1ZTogbmV3IEZvcm1Db250cm9sKDAsIFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgfSk7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdFRtcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBlZGl0VG1wbDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBsb2FkaW5nOiBQcm9ncmVzc0Jhck1vZGU7XHJcbiAgcHJpdmF0ZSBfZGF0YTogSW5kZXhbXTtcclxuICBwcml2YXRlIF9yb3c6IEluZGV4O1xyXG4gIHByaXZhdGUgX29SZWY6IE92ZXJsYXlSZWY7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcclxuICAgIEBJbmplY3QoVXRpbGl0eVJlZikgcHJpdmF0ZSBfcmVmOiBVdGlsaXR5UmVmPGJvb2xlYW4sIEluZGV4W10sIEluZGV4W10sIGFueSwgT3B0aW9ucz4sXHJcbiAgICBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSwgcHJpdmF0ZSBfdmM6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXkpIHtcclxuICAgIGNvbnN0IHsgY3ViZTogbmFtZSwgYXhlczogbmFtZXMgfSA9IF9yZWYub3B0aW9ucztcclxuICAgIGNvbnN0IGN1YmUgPSBuYW1lID8gc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IG5hbWUpIDogc2Vzc2lvbi5wcm9maWxlLmN1YmVzWzBdO1xyXG4gICAgdGhpcy5DVVJSRU5DWV9DT0RFID0gY3ViZS5jdXJyZW5jeUNvZGU7XHJcbiAgICB0aGlzLmF4ZXMgPSBjdWJlLmF4ZXMuZmlsdGVyKGEgPT4gbmFtZXMgPyBuYW1lcy5pbmRleE9mKGEubmFtZSkgPiAtMSA6IGEuc2VsZWN0aW9uTW9kZSAhPT0gJ05vbmUnKTtcclxuICAgIHRoaXMubmFtZXMgPSBjdWJlLmF4ZXMubWFwKGEgPT4gYS5uYW1lKTtcclxuICAgIHRoaXMuYXhlcy5mb3JFYWNoKChhLCBpKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5zcGxpY2UoaSwgMCwgYS5uYW1lKTtcclxuICAgICAgY29uc3QgY3RybCA9IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woYS5uYW1lLCBjdHJsKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBheGVzID0gW107XHJcbiAgICAgIHRoaXMuYXhlcy5mb3JFYWNoKGEgPT4gYXhlc1t0aGlzLm5hbWVzLmluZGV4T2YoYS5uYW1lKV0gPSB0aGlzLmZvcm0udmFsdWVbYS5uYW1lXSB8fCBudWxsKTtcclxuICAgICAgaWYgKHRoaXMuX3Jvdykge1xyXG4gICAgICAgIGlmIChheGVzLmpvaW4oKSA9PT0gdGhpcy5fcm93LmF4ZXMuam9pbigpKVxyXG4gICAgICAgICAgdGhpcy5fcm93LnZhbHVlID0gdi52YWx1ZTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX2ZpbmQoYXhlcyk7XHJcbiAgICAgICAgICBpZiAocm93KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdyA9IHJvdztcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWyd2YWx1ZSddLnNldFZhbHVlKHRoaXMuX3Jvdy52YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLl9yb3cuYXhlcyA9IGF4ZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHYudmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9yb3cgPSB7IHZhbHVlOiB2LnZhbHVlLCBheGVzIH07XHJcbiAgICAgICAgdGhpcy5fZGF0YS5wdXNoKHRoaXMuX3Jvdyk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlciA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBvUmVmID0gdGhpcy5fb1JlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSxcclxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIudmFsdWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBwYW5lbENsYXNzOiAnaG9tZS1wYW5lbCdcclxuICAgIH0pO1xyXG4gICAgbWVyZ2Uob1JlZi5iYWNrZHJvcENsaWNrKCksIG9SZWYua2V5ZG93bkV2ZW50cygpLnBpcGUoZmlsdGVyKGsgPT4gay5rZXkgPT09ICdFc2NhcGUnKSkpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4gb1JlZi5kZXRhY2goKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2ZpbmQoYXhlczogc3RyaW5nW10pOiBJbmRleCB7XHJcbiAgICBjb25zdCBuID0gdGhpcy5uYW1lcy5sZW5ndGg7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5maW5kKGluZGV4ID0+IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspXHJcbiAgICAgICAgaWYgKGF4ZXNbaV0gJiYgYXhlc1tpXSAhPT0gaW5kZXguYXhlc1tpXSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBhZGQoKSB7XHJcbiAgICB0aGlzLl9yb3cgPSBudWxsO1xyXG4gICAgY29uc3QgdmFsdWVzID0geyB2YWx1ZTogMCB9O1xyXG4gICAgdGhpcy5heGVzLmZvckVhY2goYSA9PiB2YWx1ZXNbYS5uYW1lXSA9IG51bGwpO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodmFsdWVzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5lZGl0VG1wbCwgdGhpcy5fdmMpO1xyXG4gICAgdGhpcy5fb1JlZi5hdHRhY2gocG9ydGFsKTtcclxuICB9XHJcbiAgZWRpdChpdGVtOiBJbmRleCkge1xyXG4gICAgdGhpcy5fcm93ID0gaXRlbTtcclxuICAgIGNvbnN0IHZhbHVlcyA9IHsgdmFsdWU6IGl0ZW0udmFsdWUgfTtcclxuICAgIHRoaXMuYXhlcy5mb3JFYWNoKGEgPT4gdmFsdWVzW2EubmFtZV0gPSBpdGVtLmF4ZXNbdGhpcy5uYW1lcy5pbmRleE9mKGEubmFtZSldKTtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHZhbHVlcywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZWRpdFRtcGwsIHRoaXMuX3ZjKTtcclxuICAgIHRoaXMuX29SZWYuYXR0YWNoKHBvcnRhbCk7XHJcbiAgfVxyXG4gIHJlbW92ZShpbmRleDogSW5kZXgsIGV2dDogRXZlbnQpIHtcclxuICAgIHRoaXMuX2RhdGEucmVtb3ZlKGluZGV4KTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSAnJztcclxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZmlsdGVyKGF4ZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCBuID0gYXhlcy5sZW5ndGg7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5maWx0ZXIoaW5kZXggPT4ge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKylcclxuICAgICAgICBpZiAodGhpcy5heGVzW2ldICYmIGF4ZXNbaV0gIT09IGluZGV4LmF4ZXNbaV0pIHJldHVybiBmYWxzZTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSAncXVlcnknO1xyXG4gICAgdGhpcy5fcmVmLnBvcHVsYXRlKCkuc3Vic2NyaWJlKG0gPT4ge1xyXG4gICAgICB0aGlzLl9kYXRhID0gbTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZShtKTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuICBzYXZlKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gJ2luZGV0ZXJtaW5hdGUnO1xyXG4gICAgdGhpcy5fcmVmLmV4ZWN1dGUodGhpcy5fZGF0YSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fc2IudG9hc3QoJ0NoYW5nZXNTYXZlZCcpO1xyXG4gICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IG51bGw7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICB9XHJcbn1cclxuaW50ZXJmYWNlIEluZGV4IHtcclxuICBpZD86IG51bWJlcjtcclxuICBheGVzOiBzdHJpbmdbXTtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgT3B0aW9ucyB7XHJcbiAgY3ViZT86IHN0cmluZztcclxuICBpbmRleD86IHN0cmluZztcclxuICBheGVzPzogc3RyaW5nW107XHJcbn1cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiFkaXJ0eVwiPnt7J1NhdmVDaGFuZ2VzJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiYWRkKClcIj48bWF0LWljb24+YWRkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPG1hdC1wcm9ncmVzcy1iYXIgW21vZGVdPVwibG9hZGluZ1wiIFtzdHlsZS52aXNpYmlsaXR5XT1cImxvYWRpbmcgPyAndmlzaWJsZSc6J2hpZGRlbidcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbjx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGEgb2YgYXhlczsgbGV0IGkgPSBpbmRleFwiIFttYXRDb2x1bW5EZWZdPVwiYS5uYW1lXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPnt7YS50aXRsZX19PC90aD5cclxuICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+IHt7ZWxlbWVudC5heGVzW25hbWVzLmluZGV4T2YoYS5uYW1lKV18IHR5cGVWYWx1ZTogYS5kYXRhVHlwZSB8IGFzeW5jfX0gPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInZhbHVlXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPnt7J1ZhbHVlJ3x0cmFuc2xhdGV9fTwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQudmFsdWUgfCBjdXJyZW5jeSA6IENVUlJFTkNZX0NPREUgfX0gPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm9wdGlvbnNcIj5cclxuICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+PC90aD5cclxuICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uPjxtYXQtaWNvbj5tb3JlX2hvcml6PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlbW92ZShlbGVtZW50LCAkZXZlbnQpXCI+PG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XHJcbiAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCBlbGVtZW50OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiIChjbGljayk9XCJlZGl0KGVsZW1lbnQpXCI+PC90cj5cclxuPC90YWJsZT5cclxuPG5nLXRlbXBsYXRlICNlZGl0VG1wbD5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdGb3I9XCJsZXQgYSBvZiBheGVzXCI+XHJcbiAgICAgIDxiaXpkb2Mtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCJhLnRpdGxlXCIgW3R5cGVdPVwiYS5kYXRhVHlwZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiYS5uYW1lXCIgcmVxdWlyZWQ+PC9iaXpkb2Mtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJudW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHJlcXVpcmVkIFtwbGFjZWhvbGRlcl09XCInVmFsdWUnfHRyYW5zbGF0ZVwiIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWN1YmUtaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9pbmRpY2VzL21hbmFnZS1jdWJlLWluZGV4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vaW5kaWNlcy9tYW5hZ2UtY3ViZS1pbmRleC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQTRDLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVzFDLElBQU0sc0JBQXNCLEdBQTVCLE1BQU0sc0JBQXNCO0lBZ0I1QixZQUFvQixJQUFvQixFQUNWLElBQXlELEVBQ3JGLE9BQXVCLEVBQVUsR0FBcUIsRUFDOUMsR0FBa0IsRUFDbEIsUUFBaUI7UUFKUCxTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNWLFNBQUksR0FBSixJQUFJLENBQXFEO1FBQ3BELFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBQzlD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O2tHQWpCZCxzQkFBc0Isd0tDdEI5QixrN0RBbUNBOztBRGJRLHNCQUFzQjtJQUY3QixNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztHQUVsQyxzQkFBc0IsQ0F3SDdCOzsyRkF4SE8sc0JBQXNCO2tCQU43QixTQUFTOzs7MEJBdUJMLE1BQU07MkJBQUMsVUFBVTt1SkFQcUIsUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIE9uRGVzdHJveSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYmxlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xyXG5pbXBvcnQgeyBQcm9ncmVzc0Jhck1vZGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyXCI7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2JpZGlcIjtcclxuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBVdGlsaXR5Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUvYmFzZVwiO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tIFwiLi4vLi4vY29yZS9kZWNvcmF0b3JzXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tIFwiLi4vdXRpbGl0eS1yZWZcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ3ViZUF4aXMgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdHlsZVVybHM6IFsnLi9tYW5hZ2UtY3ViZS1pbmRleC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYW5hZ2UtY3ViZS1pbmRleC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuQEJpekRvYyh7IHNlbGVjdG9yOiAnbWFuYWdlLWN1YmUtaW5kZXgnIH0pXHJcbmV4cG9ydFxyXG4gIGNsYXNzIE1hbmFnZUN1YmVJbmRleFV0aWxpdHkgaW1wbGVtZW50cyBVdGlsaXR5Q29tcG9uZW50PGFueSwgYW55PiwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHJlYWRvbmx5IENVUlJFTkNZX0NPREU6IHN0cmluZztcclxuICBkaXJ0eSA9IGZhbHNlO1xyXG4gIGF4ZXM6IEN1YmVBeGlzW107XHJcbiAgZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPEluZGV4PjtcclxuICByZWFkb25seSBuYW1lczogc3RyaW5nW107XHJcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1ucyA9IFsndmFsdWUnLCAnb3B0aW9ucyddO1xyXG4gIHJlYWRvbmx5IGZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgdmFsdWU6IG5ldyBGb3JtQ29udHJvbCgwLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gIH0pO1xyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRUbXBsJywgeyBzdGF0aWM6IHRydWUgfSkgZWRpdFRtcGw6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgbG9hZGluZzogUHJvZ3Jlc3NCYXJNb2RlO1xyXG4gIHByaXZhdGUgX2RhdGE6IEluZGV4W107XHJcbiAgcHJpdmF0ZSBfcm93OiBJbmRleDtcclxuICBwcml2YXRlIF9vUmVmOiBPdmVybGF5UmVmO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXHJcbiAgICBASW5qZWN0KFV0aWxpdHlSZWYpIHByaXZhdGUgX3JlZjogVXRpbGl0eVJlZjxib29sZWFuLCBJbmRleFtdLCBJbmRleFtdLCBhbnksIE9wdGlvbnM+LFxyXG4gICAgc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsIHByaXZhdGUgX3ZjOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5KSB7XHJcbiAgICBjb25zdCB7IGN1YmU6IG5hbWUsIGF4ZXM6IG5hbWVzIH0gPSBfcmVmLm9wdGlvbnM7XHJcbiAgICBjb25zdCBjdWJlID0gbmFtZSA/IHNlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSBuYW1lKSA6IHNlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgIHRoaXMuQ1VSUkVOQ1lfQ09ERSA9IGN1YmUuY3VycmVuY3lDb2RlO1xyXG4gICAgdGhpcy5heGVzID0gY3ViZS5heGVzLmZpbHRlcihhID0+IG5hbWVzID8gbmFtZXMuaW5kZXhPZihhLm5hbWUpID4gLTEgOiBhLnNlbGVjdGlvbk1vZGUgIT09ICdOb25lJyk7XHJcbiAgICB0aGlzLm5hbWVzID0gY3ViZS5heGVzLm1hcChhID0+IGEubmFtZSk7XHJcbiAgICB0aGlzLmF4ZXMuZm9yRWFjaCgoYSwgaSkgPT4ge1xyXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMuc3BsaWNlKGksIDAsIGEubmFtZSk7XHJcbiAgICAgIGNvbnN0IGN0cmwgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGEubmFtZSwgY3RybCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHJldHVybjtcclxuICAgICAgY29uc3QgYXhlcyA9IFtdO1xyXG4gICAgICB0aGlzLmF4ZXMuZm9yRWFjaChhID0+IGF4ZXNbdGhpcy5uYW1lcy5pbmRleE9mKGEubmFtZSldID0gdGhpcy5mb3JtLnZhbHVlW2EubmFtZV0gfHwgbnVsbCk7XHJcbiAgICAgIGlmICh0aGlzLl9yb3cpIHtcclxuICAgICAgICBpZiAoYXhlcy5qb2luKCkgPT09IHRoaXMuX3Jvdy5heGVzLmpvaW4oKSlcclxuICAgICAgICAgIHRoaXMuX3Jvdy52YWx1ZSA9IHYudmFsdWU7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCByb3cgPSB0aGlzLl9maW5kKGF4ZXMpO1xyXG4gICAgICAgICAgaWYgKHJvdykge1xyXG4gICAgICAgICAgICB0aGlzLl9yb3cgPSByb3c7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1sndmFsdWUnXS5zZXRWYWx1ZSh0aGlzLl9yb3cudmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5fcm93LmF4ZXMgPSBheGVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh2LnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fcm93ID0geyB2YWx1ZTogdi52YWx1ZSwgYXhlcyB9O1xyXG4gICAgICAgIHRoaXMuX2RhdGEucHVzaCh0aGlzLl9yb3cpO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSAnJztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgb1JlZiA9IHRoaXMuX29SZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5jZW50ZXJIb3Jpem9udGFsbHkoKS5jZW50ZXJWZXJ0aWNhbGx5KCksXHJcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXHJcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLnZhbHVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgcGFuZWxDbGFzczogJ2hvbWUtcGFuZWwnXHJcbiAgICB9KTtcclxuICAgIG1lcmdlKG9SZWYuYmFja2Ryb3BDbGljaygpLCBvUmVmLmtleWRvd25FdmVudHMoKS5waXBlKGZpbHRlcihrID0+IGsua2V5ID09PSAnRXNjYXBlJykpKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IG9SZWYuZGV0YWNoKCkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9maW5kKGF4ZXM6IHN0cmluZ1tdKTogSW5kZXgge1xyXG4gICAgY29uc3QgbiA9IHRoaXMubmFtZXMubGVuZ3RoO1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuZmluZChpbmRleCA9PiB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKVxyXG4gICAgICAgIGlmIChheGVzW2ldICYmIGF4ZXNbaV0gIT09IGluZGV4LmF4ZXNbaV0pIHJldHVybiBmYWxzZTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgYWRkKCkge1xyXG4gICAgdGhpcy5fcm93ID0gbnVsbDtcclxuICAgIGNvbnN0IHZhbHVlcyA9IHsgdmFsdWU6IDAgfTtcclxuICAgIHRoaXMuYXhlcy5mb3JFYWNoKGEgPT4gdmFsdWVzW2EubmFtZV0gPSBudWxsKTtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHZhbHVlcywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZWRpdFRtcGwsIHRoaXMuX3ZjKTtcclxuICAgIHRoaXMuX29SZWYuYXR0YWNoKHBvcnRhbCk7XHJcbiAgfVxyXG4gIGVkaXQoaXRlbTogSW5kZXgpIHtcclxuICAgIHRoaXMuX3JvdyA9IGl0ZW07XHJcbiAgICBjb25zdCB2YWx1ZXMgPSB7IHZhbHVlOiBpdGVtLnZhbHVlIH07XHJcbiAgICB0aGlzLmF4ZXMuZm9yRWFjaChhID0+IHZhbHVlc1thLm5hbWVdID0gaXRlbS5heGVzW3RoaXMubmFtZXMuaW5kZXhPZihhLm5hbWUpXSk7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh2YWx1ZXMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmVkaXRUbXBsLCB0aGlzLl92Yyk7XHJcbiAgICB0aGlzLl9vUmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gIH1cclxuICByZW1vdmUoaW5kZXg6IEluZGV4LCBldnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLl9kYXRhLnJlbW92ZShpbmRleCk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gJyc7XHJcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2ZpbHRlcihheGVzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgbiA9IGF4ZXMubGVuZ3RoO1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuZmlsdGVyKGluZGV4ID0+IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspXHJcbiAgICAgICAgaWYgKHRoaXMuYXhlc1tpXSAmJiBheGVzW2ldICE9PSBpbmRleC5heGVzW2ldKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gJ3F1ZXJ5JztcclxuICAgIHRoaXMuX3JlZi5wb3B1bGF0ZSgpLnN1YnNjcmliZShtID0+IHtcclxuICAgICAgdGhpcy5fZGF0YSA9IG07XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UobSk7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IG51bGw7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2F2ZSgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9ICdpbmRldGVybWluYXRlJztcclxuICAgIHRoaXMuX3JlZi5leGVjdXRlKHRoaXMuX2RhdGEpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX3NiLnRvYXN0KCdDaGFuZ2VzU2F2ZWQnKTtcclxuICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBJbmRleCB7XHJcbiAgaWQ/OiBudW1iZXI7XHJcbiAgYXhlczogc3RyaW5nW107XHJcbiAgdmFsdWU6IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIE9wdGlvbnMge1xyXG4gIGN1YmU/OiBzdHJpbmc7XHJcbiAgaW5kZXg/OiBzdHJpbmc7XHJcbiAgYXhlcz86IHN0cmluZ1tdO1xyXG59XHJcbiIsIjxtYXQtdG9vbGJhcj5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInNhdmUoKVwiIFtkaXNhYmxlZF09XCIhZGlydHlcIj57eydTYXZlQ2hhbmdlcyd8dHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImFkZCgpXCI+PG1hdC1pY29uPmFkZDwvbWF0LWljb24+PC9idXR0b24+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjxtYXQtcHJvZ3Jlc3MtYmFyIFttb2RlXT1cImxvYWRpbmdcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJsb2FkaW5nID8gJ3Zpc2libGUnOidoaWRkZW4nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG48dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhIG9mIGF4ZXM7IGxldCBpID0gaW5kZXhcIiBbbWF0Q29sdW1uRGVmXT1cImEubmFtZVwiPlxyXG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj57e2EudGl0bGV9fTwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQuYXhlc1tuYW1lcy5pbmRleE9mKGEubmFtZSldfCB0eXBlVmFsdWU6IGEuZGF0YVR5cGUgfCBhc3luY319IDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ2YWx1ZVwiPlxyXG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj57eydWYWx1ZSd8dHJhbnNsYXRlfX08L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LnZhbHVlIHwgY3VycmVuY3kgOiBDVVJSRU5DWV9DT0RFIH19IDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJvcHRpb25zXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbj48bWF0LWljb24+bW9yZV9ob3JpejwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZW1vdmUoZWxlbWVudCwgJGV2ZW50KVwiPjxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxyXG4gIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgZWxlbWVudDsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIiAoY2xpY2spPVwiZWRpdChlbGVtZW50KVwiPjwvdHI+XHJcbjwvdGFibGU+XHJcbjxuZy10ZW1wbGF0ZSAjZWRpdFRtcGw+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nRm9yPVwibGV0IGEgb2YgYXhlc1wiPlxyXG4gICAgICA8Yml6ZG9jLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwiYS50aXRsZVwiIFt0eXBlXT1cImEuZGF0YVR5cGVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImEubmFtZVwiIHJlcXVpcmVkPjwvYml6ZG9jLXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwibnVtYmVyXCIgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiByZXF1aXJlZCBbcGxhY2Vob2xkZXJdPVwiJ1ZhbHVlJ3x0cmFuc2xhdGVcIiAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Zvcm0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==