@bizdoc/core 1.9.13 → 1.10.0-next.3

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 (481) hide show
  1. package/assets/dayjs/locale/af.js +1 -0
  2. package/assets/dayjs/locale/am.js +1 -0
  3. package/assets/dayjs/locale/ar-dz.js +1 -0
  4. package/assets/dayjs/locale/ar-iq.js +1 -0
  5. package/assets/dayjs/locale/ar-kw.js +1 -0
  6. package/assets/dayjs/locale/ar-ly.js +1 -0
  7. package/assets/dayjs/locale/ar-ma.js +1 -0
  8. package/assets/dayjs/locale/ar-sa.js +1 -0
  9. package/assets/dayjs/locale/ar-tn.js +1 -0
  10. package/assets/dayjs/locale/ar.js +1 -0
  11. package/assets/dayjs/locale/az.js +1 -0
  12. package/assets/dayjs/locale/be.js +1 -0
  13. package/assets/dayjs/locale/bg.js +1 -0
  14. package/assets/dayjs/locale/bi.js +1 -0
  15. package/assets/dayjs/locale/bm.js +1 -0
  16. package/assets/dayjs/locale/bn.js +1 -0
  17. package/assets/dayjs/locale/bo.js +1 -0
  18. package/assets/dayjs/locale/br.js +1 -0
  19. package/assets/dayjs/locale/bs.js +1 -0
  20. package/assets/dayjs/locale/ca.js +1 -0
  21. package/assets/dayjs/locale/cs.js +1 -0
  22. package/assets/dayjs/locale/cv.js +1 -0
  23. package/assets/dayjs/locale/cy.js +1 -0
  24. package/assets/dayjs/locale/da.js +1 -0
  25. package/assets/dayjs/locale/de-at.js +1 -0
  26. package/assets/dayjs/locale/de-ch.js +1 -0
  27. package/assets/dayjs/locale/de.js +1 -0
  28. package/assets/dayjs/locale/dv.js +1 -0
  29. package/assets/dayjs/locale/el.js +1 -0
  30. package/assets/dayjs/locale/en-au.js +1 -0
  31. package/assets/dayjs/locale/en-ca.js +1 -0
  32. package/assets/dayjs/locale/en-gb.js +1 -0
  33. package/assets/dayjs/locale/en-ie.js +1 -0
  34. package/assets/dayjs/locale/en-il.js +1 -0
  35. package/assets/dayjs/locale/en-in.js +1 -0
  36. package/assets/dayjs/locale/en-nz.js +1 -0
  37. package/assets/dayjs/locale/en-sg.js +1 -0
  38. package/assets/dayjs/locale/en-tt.js +1 -0
  39. package/assets/dayjs/locale/en.js +1 -0
  40. package/assets/dayjs/locale/eo.js +1 -0
  41. package/assets/dayjs/locale/es-do.js +1 -0
  42. package/assets/dayjs/locale/es-mx.js +1 -0
  43. package/assets/dayjs/locale/es-pr.js +1 -0
  44. package/assets/dayjs/locale/es-us.js +1 -0
  45. package/assets/dayjs/locale/es.js +1 -0
  46. package/assets/dayjs/locale/et.js +1 -0
  47. package/assets/dayjs/locale/eu.js +1 -0
  48. package/assets/dayjs/locale/fa.js +1 -0
  49. package/assets/dayjs/locale/fi.js +1 -0
  50. package/assets/dayjs/locale/fo.js +1 -0
  51. package/assets/dayjs/locale/fr-ca.js +1 -0
  52. package/assets/dayjs/locale/fr-ch.js +1 -0
  53. package/assets/dayjs/locale/fr.js +1 -0
  54. package/assets/dayjs/locale/fy.js +1 -0
  55. package/assets/dayjs/locale/ga.js +1 -0
  56. package/assets/dayjs/locale/gd.js +1 -0
  57. package/assets/dayjs/locale/gl.js +1 -0
  58. package/assets/dayjs/locale/gom-latn.js +1 -0
  59. package/assets/dayjs/locale/gu.js +1 -0
  60. package/assets/dayjs/locale/he.js +1 -0
  61. package/assets/dayjs/locale/hi.js +1 -0
  62. package/assets/dayjs/locale/hr.js +1 -0
  63. package/assets/dayjs/locale/ht.js +1 -0
  64. package/assets/dayjs/locale/hu.js +1 -0
  65. package/assets/dayjs/locale/hy-am.js +1 -0
  66. package/assets/dayjs/locale/id.js +1 -0
  67. package/assets/dayjs/locale/index.d.ts +11 -0
  68. package/assets/dayjs/locale/is.js +1 -0
  69. package/assets/dayjs/locale/it-ch.js +1 -0
  70. package/assets/dayjs/locale/it.js +1 -0
  71. package/assets/dayjs/locale/ja.js +1 -0
  72. package/assets/dayjs/locale/jv.js +1 -0
  73. package/assets/dayjs/locale/ka.js +1 -0
  74. package/assets/dayjs/locale/kk.js +1 -0
  75. package/assets/dayjs/locale/km.js +1 -0
  76. package/assets/dayjs/locale/kn.js +1 -0
  77. package/assets/dayjs/locale/ko.js +1 -0
  78. package/assets/dayjs/locale/ku.js +1 -0
  79. package/assets/dayjs/locale/ky.js +1 -0
  80. package/assets/dayjs/locale/lb.js +1 -0
  81. package/assets/dayjs/locale/lo.js +1 -0
  82. package/assets/dayjs/locale/lt.js +1 -0
  83. package/assets/dayjs/locale/lv.js +1 -0
  84. package/assets/dayjs/locale/me.js +1 -0
  85. package/assets/dayjs/locale/mi.js +1 -0
  86. package/assets/dayjs/locale/mk.js +1 -0
  87. package/assets/dayjs/locale/ml.js +1 -0
  88. package/assets/dayjs/locale/mn.js +1 -0
  89. package/assets/dayjs/locale/mr.js +1 -0
  90. package/assets/dayjs/locale/ms-my.js +1 -0
  91. package/assets/dayjs/locale/ms.js +1 -0
  92. package/assets/dayjs/locale/mt.js +1 -0
  93. package/assets/dayjs/locale/my.js +1 -0
  94. package/assets/dayjs/locale/nb.js +1 -0
  95. package/assets/dayjs/locale/ne.js +1 -0
  96. package/assets/dayjs/locale/nl-be.js +1 -0
  97. package/assets/dayjs/locale/nl.js +1 -0
  98. package/assets/dayjs/locale/nn.js +1 -0
  99. package/assets/dayjs/locale/oc-lnc.js +1 -0
  100. package/assets/dayjs/locale/pa-in.js +1 -0
  101. package/assets/dayjs/locale/pl.js +1 -0
  102. package/assets/dayjs/locale/pt-br.js +1 -0
  103. package/assets/dayjs/locale/pt.js +1 -0
  104. package/assets/dayjs/locale/ro.js +1 -0
  105. package/assets/dayjs/locale/ru.js +1 -0
  106. package/assets/dayjs/locale/rw.js +1 -0
  107. package/assets/dayjs/locale/sd.js +1 -0
  108. package/assets/dayjs/locale/se.js +1 -0
  109. package/assets/dayjs/locale/si.js +1 -0
  110. package/assets/dayjs/locale/sk.js +1 -0
  111. package/assets/dayjs/locale/sl.js +1 -0
  112. package/assets/dayjs/locale/sq.js +1 -0
  113. package/assets/dayjs/locale/sr-cyrl.js +1 -0
  114. package/assets/dayjs/locale/sr.js +1 -0
  115. package/assets/dayjs/locale/ss.js +1 -0
  116. package/assets/dayjs/locale/sv-fi.js +1 -0
  117. package/assets/dayjs/locale/sv.js +1 -0
  118. package/assets/dayjs/locale/sw.js +1 -0
  119. package/assets/dayjs/locale/ta.js +1 -0
  120. package/assets/dayjs/locale/te.js +1 -0
  121. package/assets/dayjs/locale/tet.js +1 -0
  122. package/assets/dayjs/locale/tg.js +1 -0
  123. package/assets/dayjs/locale/th.js +1 -0
  124. package/assets/dayjs/locale/tk.js +1 -0
  125. package/assets/dayjs/locale/tl-ph.js +1 -0
  126. package/assets/dayjs/locale/tlh.js +1 -0
  127. package/assets/dayjs/locale/tr.js +1 -0
  128. package/assets/dayjs/locale/types.d.ts +33 -0
  129. package/assets/dayjs/locale/tzl.js +1 -0
  130. package/assets/dayjs/locale/tzm-latn.js +1 -0
  131. package/assets/dayjs/locale/tzm.js +1 -0
  132. package/assets/dayjs/locale/ug-cn.js +1 -0
  133. package/assets/dayjs/locale/uk.js +1 -0
  134. package/assets/dayjs/locale/ur.js +1 -0
  135. package/assets/dayjs/locale/uz-latn.js +1 -0
  136. package/assets/dayjs/locale/uz.js +1 -0
  137. package/assets/dayjs/locale/vi.js +1 -0
  138. package/assets/dayjs/locale/x-pseudo.js +1 -0
  139. package/assets/dayjs/locale/yo.js +1 -0
  140. package/assets/dayjs/locale/zh-cn.js +1 -0
  141. package/assets/dayjs/locale/zh-hk.js +1 -0
  142. package/assets/dayjs/locale/zh-tw.js +1 -0
  143. package/assets/dayjs/locale/zh.js +1 -0
  144. package/assets/themes/brown.min.css +1 -1
  145. package/assets/themes/dark.min.css +1 -1
  146. package/assets/themes/deep-purple-light-blue.min.css +3 -3
  147. package/assets/themes/default.min.css +1 -1
  148. package/assets/themes/green.min.css +1 -1
  149. package/assets/themes/indigo.min.css +1 -1
  150. package/esm2020/lib/admin/admin-dismiss.service.mjs +3 -3
  151. package/esm2020/lib/admin/admin-menu.component.mjs +3 -3
  152. package/esm2020/lib/admin/core/ace.input.mjs +3 -3
  153. package/esm2020/lib/admin/core/color-picker.input.mjs +3 -3
  154. package/esm2020/lib/admin/core/search.input.mjs +3 -3
  155. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +5 -5
  156. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +9 -10
  157. package/esm2020/lib/admin/document-trace/reassign.dialog.mjs +3 -3
  158. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +4 -4
  159. package/esm2020/lib/admin/form/form.resolve.service.mjs +3 -3
  160. package/esm2020/lib/admin/form/form.service.mjs +3 -3
  161. package/esm2020/lib/admin/form/workflow/node.component.mjs +3 -3
  162. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +3 -3
  163. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +6 -5
  164. package/esm2020/lib/admin/indices/manage-cube-index.component.mjs +3 -3
  165. package/esm2020/lib/admin/patterns/patterns.component.mjs +3 -3
  166. package/esm2020/lib/admin/permissions/permissions.component.mjs +3 -3
  167. package/esm2020/lib/admin/positions/positions-popup.component.mjs +3 -3
  168. package/esm2020/lib/admin/positions/positions.component.mjs +3 -3
  169. package/esm2020/lib/admin/profiler/profiler.component.mjs +10 -10
  170. package/esm2020/lib/admin/utility-wrapper.component.mjs +3 -3
  171. package/esm2020/lib/admin/utility.pane.component.mjs +3 -3
  172. package/esm2020/lib/app.component.mjs +6 -6
  173. package/esm2020/lib/bizdoc.module.mjs +8 -20
  174. package/esm2020/lib/browse/browse-items.component.mjs +13 -8
  175. package/esm2020/lib/browse/browse.mobile.component.mjs +3 -3
  176. package/esm2020/lib/browse/browse.pane.component.mjs +6 -4
  177. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +12 -12
  178. package/esm2020/lib/browse/filter/filter.component.mjs +3 -3
  179. package/esm2020/lib/browse/folders-menu.component.mjs +3 -3
  180. package/esm2020/lib/chat/chat-info.mjs +3 -3
  181. package/esm2020/lib/chat/chat.mobile.component.mjs +3 -3
  182. package/esm2020/lib/chat/chat.service.mjs +3 -3
  183. package/esm2020/lib/chat/contacts.component.mjs +9 -8
  184. package/esm2020/lib/chat/contacts.pane.component.mjs +3 -3
  185. package/esm2020/lib/chat/conversation.component.mjs +8 -6
  186. package/esm2020/lib/chat/conversation.pane.component.mjs +3 -3
  187. package/esm2020/lib/compose/action/action-picker.component.mjs +3 -3
  188. package/esm2020/lib/compose/action/action.dialog.mjs +3 -3
  189. package/esm2020/lib/compose/action/action.pane.dialog.mjs +3 -3
  190. package/esm2020/lib/compose/action/assign-action.component.mjs +3 -3
  191. package/esm2020/lib/compose/action/return-action.component.mjs +3 -3
  192. package/esm2020/lib/compose/attachments/attachments.component.mjs +4 -4
  193. package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +3 -3
  194. package/esm2020/lib/compose/attachments/progress-button.directive.mjs +3 -3
  195. package/esm2020/lib/compose/can-deactivate-changes.service.mjs +3 -3
  196. package/esm2020/lib/compose/comments/Comments.pane.component.mjs +3 -3
  197. package/esm2020/lib/compose/comments/comment.component.mjs +6 -5
  198. package/esm2020/lib/compose/comments/comments.component.mjs +3 -3
  199. package/esm2020/lib/compose/comments/edit-comment.component.mjs +3 -3
  200. package/esm2020/lib/compose/comments/edits.component.mjs +4 -4
  201. package/esm2020/lib/compose/comments/quick-comment.component.exp.mjs +3 -3
  202. package/esm2020/lib/compose/comments/votes.component.mjs +6 -5
  203. package/esm2020/lib/compose/compose-resolve.service.mjs +6 -6
  204. package/esm2020/lib/compose/compose.mobile.component.mjs +3 -3
  205. package/esm2020/lib/compose/compose.pane.component.mjs +6 -4
  206. package/esm2020/lib/compose/copy/copy.dialog.mjs +3 -3
  207. package/esm2020/lib/compose/dismiss.service.mjs +3 -3
  208. package/esm2020/lib/compose/document-resolver.service.mjs +3 -3
  209. package/esm2020/lib/compose/document.component.mjs +3 -3
  210. package/esm2020/lib/compose/document.mobile.component.mjs +3 -3
  211. package/esm2020/lib/compose/document.pane.component.mjs +3 -3
  212. package/esm2020/lib/compose/events/events.component.mjs +4 -4
  213. package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  214. package/esm2020/lib/compose/form.component.mjs +3 -3
  215. package/esm2020/lib/compose/new-menu.component.mjs +3 -3
  216. package/esm2020/lib/compose/privilage.directive.mjs +6 -6
  217. package/esm2020/lib/compose/recipient-resolver.service.mjs +3 -3
  218. package/esm2020/lib/compose/save-changes.dialog.mjs +3 -3
  219. package/esm2020/lib/compose/state.component.mjs +3 -3
  220. package/esm2020/lib/compose/tag/tags.component.mjs +3 -3
  221. package/esm2020/lib/compose/trace/flow.component.mjs +39 -31
  222. package/esm2020/lib/compose/trace/people.component.mjs +3 -3
  223. package/esm2020/lib/compose/trace/trace.base.mjs +6 -7
  224. package/esm2020/lib/compose/trace/trace.component.mjs +10 -10
  225. package/esm2020/lib/compose/trace/trace.pane.component.mjs +3 -3
  226. package/esm2020/lib/compose/version-compare/version-compare.component.mjs +3 -3
  227. package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +9 -9
  228. package/esm2020/lib/compose/version-compare/version.pane.component.mjs +5 -5
  229. package/esm2020/lib/core/NgComponentOutlet.mjs +3 -3
  230. package/esm2020/lib/core/account.service.mjs +3 -3
  231. package/esm2020/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  232. package/esm2020/lib/core/avatar/avatar.component.mjs +3 -3
  233. package/esm2020/lib/core/component-factory-resolver.mjs +3 -3
  234. package/esm2020/lib/core/controls/address.input.mjs +3 -3
  235. package/esm2020/lib/core/controls/auto-complete.input.mjs +3 -3
  236. package/esm2020/lib/core/controls/combination-picker-body.mjs +3 -3
  237. package/esm2020/lib/core/controls/combination-picker.mjs +3 -3
  238. package/esm2020/lib/core/controls/combination-pool.mjs +3 -3
  239. package/esm2020/lib/core/controls/select.input.mjs +3 -3
  240. package/esm2020/lib/core/controls/time-picker.mjs +3 -3
  241. package/esm2020/lib/core/controls/timespan.input.mjs +3 -3
  242. package/esm2020/lib/core/datasource.service.mjs +3 -3
  243. package/esm2020/lib/core/guide/guide.component.mjs +3 -3
  244. package/esm2020/lib/core/guide/guide.service.mjs +3 -3
  245. package/esm2020/lib/core/http.interceptor.mjs +3 -3
  246. package/esm2020/lib/core/hub.service.mjs +3 -3
  247. package/esm2020/lib/core/identity/identity.component.mjs +3 -3
  248. package/esm2020/lib/core/info/attachment-info.service.mjs +3 -3
  249. package/esm2020/lib/core/info/document-info.service.mjs +3 -3
  250. package/esm2020/lib/core/info/location-info.component.mjs +3 -3
  251. package/esm2020/lib/core/info/map-info.mjs +3 -3
  252. package/esm2020/lib/core/layout/autocomplete.field.mjs +3 -3
  253. package/esm2020/lib/core/layout/checkbox.field.mjs +3 -3
  254. package/esm2020/lib/core/layout/checkbox.mjs +3 -3
  255. package/esm2020/lib/core/layout/date-range.field.mjs +3 -3
  256. package/esm2020/lib/core/layout/date.field.mjs +3 -3
  257. package/esm2020/lib/core/layout/expression.field.mjs +3 -3
  258. package/esm2020/lib/core/layout/html.field.mjs +3 -3
  259. package/esm2020/lib/core/layout/input.base.mjs +3 -3
  260. package/esm2020/lib/core/layout/input.field.mjs +3 -3
  261. package/esm2020/lib/core/layout/layout.component.mjs +3 -3
  262. package/esm2020/lib/core/layout/numeric.field.mjs +3 -3
  263. package/esm2020/lib/core/layout/select.field.mjs +3 -3
  264. package/esm2020/lib/core/layout/switch.field.mjs +3 -3
  265. package/esm2020/lib/core/layout/textarea.field.mjs +3 -3
  266. package/esm2020/lib/core/layout/timespan.field.mjs +3 -3
  267. package/esm2020/lib/core/lottie-animation.mjs +3 -3
  268. package/esm2020/lib/core/mailbox.service.mjs +3 -3
  269. package/esm2020/lib/core/none.component.mjs +3 -3
  270. package/esm2020/lib/core/pipes/action.pipe.mjs +3 -3
  271. package/esm2020/lib/core/pipes/calendar.pipe.mjs +72 -0
  272. package/esm2020/lib/core/pipes/date-format.pipe.mjs +19 -0
  273. package/esm2020/lib/core/pipes/daterange.pipe.mjs +13 -14
  274. package/esm2020/lib/core/pipes/difference.pipe.mjs +15 -0
  275. package/esm2020/lib/core/pipes/duration-format.pipe.mjs +48 -0
  276. package/esm2020/lib/core/pipes/duration.pipe.mjs +13 -42
  277. package/esm2020/lib/core/pipes/form.pipe.mjs +3 -3
  278. package/esm2020/lib/core/pipes/join.pipe.mjs +3 -3
  279. package/esm2020/lib/core/pipes/role.pipe.mjs +3 -3
  280. package/esm2020/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  281. package/esm2020/lib/core/pipes/sort.pipe.mjs +6 -6
  282. package/esm2020/lib/core/pipes/state.pipe.mjs +3 -3
  283. package/esm2020/lib/core/pipes/time-ago.pipe.mjs +66 -0
  284. package/esm2020/lib/core/pipes/translate.pipe.mjs +3 -3
  285. package/esm2020/lib/core/pipes/type-value.pipe.mjs +3 -3
  286. package/esm2020/lib/core/pipes/user-name.pipe.mjs +3 -3
  287. package/esm2020/lib/core/popup/popup.component.mjs +3 -3
  288. package/esm2020/lib/core/popup/popup.service.mjs +3 -3
  289. package/esm2020/lib/core/popup/tooltip.directive.mjs +6 -6
  290. package/esm2020/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  291. package/esm2020/lib/core/prompt/mask/mask.component.mjs +3 -3
  292. package/esm2020/lib/core/prompt.service.mjs +3 -3
  293. package/esm2020/lib/core/router.mjs +6 -6
  294. package/esm2020/lib/core/session.service.mjs +9 -9
  295. package/esm2020/lib/core/slots/router.directive.mjs +3 -3
  296. package/esm2020/lib/core/slots/router.service.mjs +3 -3
  297. package/esm2020/lib/core/slots/slots.component.mjs +12 -11
  298. package/esm2020/lib/core/tagging/documents.component.mjs +3 -3
  299. package/esm2020/lib/core/tagging/edit-input.component.mjs +9 -8
  300. package/esm2020/lib/core/tagging/emoji.component.mjs +3 -3
  301. package/esm2020/lib/core/tagging/tagging-item.directive.mjs +3 -3
  302. package/esm2020/lib/core/tagging/tagging.component-base.mjs +3 -3
  303. package/esm2020/lib/core/tagging/tagging.directive.mjs +3 -3
  304. package/esm2020/lib/core/tagging/tagging.pipe.mjs +3 -3
  305. package/esm2020/lib/core/tagging/users.component.mjs +3 -3
  306. package/esm2020/lib/core/translate.service.mjs +28 -103
  307. package/esm2020/lib/core/translations.mjs +4 -4
  308. package/esm2020/lib/core/window-title.service.mjs +3 -3
  309. package/esm2020/lib/cube/accum/accum.component.mjs +10 -6
  310. package/esm2020/lib/cube/chart/chart.component.mjs +14 -6
  311. package/esm2020/lib/cube/cube-info.service.mjs +3 -3
  312. package/esm2020/lib/cube/cube-menu.component.mjs +3 -3
  313. package/esm2020/lib/cube/cube-view.component.mjs +24 -18
  314. package/esm2020/lib/cube/cube.service.mjs +5 -5
  315. package/esm2020/lib/cube/declarations.mjs +1 -1
  316. package/esm2020/lib/cube/explore/document-item.component.mjs +3 -3
  317. package/esm2020/lib/cube/explore/explore-item.component.mjs +3 -3
  318. package/esm2020/lib/cube/explore/explore-items.component.mjs +4 -4
  319. package/esm2020/lib/cube/explore/explore.pane.component.mjs +3 -3
  320. package/esm2020/lib/cube/explore/item-resolver.service.mjs +6 -6
  321. package/esm2020/lib/cube/explore/item.pane.component.mjs +3 -3
  322. package/esm2020/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
  323. package/esm2020/lib/cube/filter/filter.component.mjs +3 -3
  324. package/esm2020/lib/cube/grid/grid.component.mjs +6 -7
  325. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +15 -16
  326. package/esm2020/lib/cube/matrix/matrix.base.mjs +3 -3
  327. package/esm2020/lib/cube/matrix/matrix.component.mjs +3 -3
  328. package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  329. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +3 -3
  330. package/esm2020/lib/cube/matrix/table.component.mjs +17 -18
  331. package/esm2020/lib/cube/parallel/item.mjs +2 -1
  332. package/esm2020/lib/cube/parallel/parallel.component.mjs +3 -3
  333. package/esm2020/lib/cube/pivot/pivot.component.mjs +19 -14
  334. package/esm2020/lib/cube/sum/sum.component.mjs +5 -5
  335. package/esm2020/lib/cube/view-base.mjs +4 -4
  336. package/esm2020/lib/cube/view.mobile.component.mjs +3 -3
  337. package/esm2020/lib/cube/view.pane.component.mjs +10 -7
  338. package/esm2020/lib/dashboard/actions/actions.widget.mjs +3 -3
  339. package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +3 -3
  340. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +3 -3
  341. package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +3 -3
  342. package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +5 -4
  343. package/esm2020/lib/dashboard/cube/documents.widget.mjs +3 -3
  344. package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +3 -3
  345. package/esm2020/lib/dashboard/dashboard.component.mjs +3 -3
  346. package/esm2020/lib/dashboard/dashboard.pane.component.mjs +3 -3
  347. package/esm2020/lib/dashboard/recents/recents.widget.mjs +3 -3
  348. package/esm2020/lib/dashboard/score/activity.widget.mjs +6 -7
  349. package/esm2020/lib/dashboard/score/compare-departments.widget.mjs +7 -8
  350. package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +7 -8
  351. package/esm2020/lib/dashboard/score/pending-results.widget.mjs +7 -8
  352. package/esm2020/lib/dashboard/score/personal-score.widget.mjs +5 -5
  353. package/esm2020/lib/dashboard/widget-item.component.mjs +3 -3
  354. package/esm2020/lib/desktop.module.mjs +5 -9
  355. package/esm2020/lib/home/about/about.dialog.mjs +8 -9
  356. package/esm2020/lib/home/home-base.component.mjs +3 -3
  357. package/esm2020/lib/home/home.desktop.component.mjs +3 -3
  358. package/esm2020/lib/home/home.mobile.component.mjs +3 -3
  359. package/esm2020/lib/home/notifications/notifications.component.mjs +7 -6
  360. package/esm2020/lib/home/options/options.component.mjs +3 -3
  361. package/esm2020/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  362. package/esm2020/lib/home/search.service.mjs +11 -8
  363. package/esm2020/lib/home/sign/sign.component.mjs +3 -3
  364. package/esm2020/lib/home/tools.component.mjs +3 -3
  365. package/esm2020/lib/impersonate/impersonate.component.mjs +3 -3
  366. package/esm2020/lib/mobile.module.mjs +5 -9
  367. package/esm2020/lib/modules/chart.module.mjs +9 -9
  368. package/esm2020/lib/modules/circular-gauge.module.mjs +4 -4
  369. package/esm2020/lib/modules/date.adapter.mjs +30 -0
  370. package/esm2020/lib/modules/datepicker.intl.mjs +39 -0
  371. package/esm2020/lib/modules/diagram.module.mjs +4 -4
  372. package/esm2020/lib/modules/gantt.module.mjs +17 -0
  373. package/esm2020/lib/modules/grid.module.mjs +4 -4
  374. package/esm2020/lib/modules/material.module.mjs +15 -9
  375. package/esm2020/lib/modules/paginator.intl.mjs +21 -0
  376. package/esm2020/lib/modules/pivot.module.mjs +4 -4
  377. package/esm2020/lib/modules/schedule.module.mjs +4 -4
  378. package/esm2020/lib/modules/spreadsheet.module.mjs +4 -4
  379. package/esm2020/lib/modules/stepper.intl.mjs +17 -0
  380. package/esm2020/lib/modules/texteditor.module.mjs +27 -0
  381. package/esm2020/lib/notifications/filter.component.mjs +3 -3
  382. package/esm2020/lib/notifications/notifications-table.component.mjs +6 -5
  383. package/esm2020/lib/notifications/notifications.mobile.component.mjs +3 -3
  384. package/esm2020/lib/notifications/notifications.pane.component.mjs +3 -3
  385. package/esm2020/lib/notifications/notifications.service.mjs +3 -3
  386. package/esm2020/lib/notifications/types/commented.notification.mjs +3 -3
  387. package/esm2020/lib/notifications/types/cube-anomaly.notification.mjs +3 -3
  388. package/esm2020/lib/notifications/types/escalated.notification.mjs +3 -3
  389. package/esm2020/lib/notifications/types/liked.notification.mjs +3 -3
  390. package/esm2020/lib/notifications/types/long-running-task.notification.mjs +3 -3
  391. package/esm2020/lib/notifications/types/notification-base.mjs +3 -3
  392. package/esm2020/lib/notifications/types/nudge.notification.mjs +6 -7
  393. package/esm2020/lib/notifications/types/state-changed.notification.mjs +3 -3
  394. package/esm2020/lib/notifications/types/tagged.notification.mjs +3 -3
  395. package/esm2020/lib/notifications/types/text.notification.mjs +3 -3
  396. package/esm2020/lib/notifications/types/upcoming-event.notification.mjs +7 -8
  397. package/esm2020/lib/options/options.component.mjs +3 -3
  398. package/esm2020/lib/options/options.service.mjs +3 -3
  399. package/esm2020/lib/reports/arguments-component.mjs +3 -3
  400. package/esm2020/lib/reports/cube/grid-documents.component.mjs +4 -4
  401. package/esm2020/lib/reports/cube/table-documents.component.mjs +3 -3
  402. package/esm2020/lib/reports/cube/usage-args.component.mjs +3 -3
  403. package/esm2020/lib/reports/cube/usage-base.mjs +3 -3
  404. package/esm2020/lib/reports/cube/usage-chart.component.mjs +3 -3
  405. package/esm2020/lib/reports/cube/usage-pivot.component.mjs +3 -3
  406. package/esm2020/lib/reports/report-viewer.component.mjs +3 -3
  407. package/esm2020/lib/reports/report.mobile.component.mjs +3 -3
  408. package/esm2020/lib/reports/report.pane.component.mjs +3 -3
  409. package/esm2020/lib/reports/reports-menu.component.mjs +3 -3
  410. package/esm2020/lib/reports/substitution/substitution.component.mjs +4 -4
  411. package/esm2020/lib/reports/table/table-view.component.mjs +3 -3
  412. package/esm2020/lib/reports/tasks/tasks.component.mjs +3 -3
  413. package/esm2020/lib/routes.mobile.mjs +1 -1
  414. package/esm2020/lib/scheduler/schedule.component.mjs +8 -9
  415. package/esm2020/lib/scheduler/scheduler.mobile.component.mjs +7 -8
  416. package/esm2020/lib/scheduler/scheduler.pane.component.mjs +7 -8
  417. package/esm2020/lib/shared.module.mjs +38 -28
  418. package/esm2020/lib/system.module.mjs +5 -9
  419. package/esm2020/lib/views/cube/chart.component.mjs +3 -3
  420. package/esm2020/lib/views/cube/cube-base.mjs +3 -3
  421. package/esm2020/lib/views/cube/explore.component.mjs +3 -3
  422. package/esm2020/lib/views/cube/matrix.component.mjs +5 -5
  423. package/esm2020/lib/views/cube/parallel.component.mjs +5 -5
  424. package/esm2020/lib/views/cube/pivot.component.mjs +3 -3
  425. package/esm2020/lib/views/cube/sum.component.mjs +5 -5
  426. package/esm2020/lib/views/cube/view.component.mjs +3 -3
  427. package/esm2020/lib/views/timeline/timeline.component.exp.mjs +6 -7
  428. package/esm2020/lib/views/view-item.component.mjs +3 -3
  429. package/esm2020/lib/views/views.component.mjs +3 -3
  430. package/esm2020/lib/views/views.mobile.component.mjs +3 -3
  431. package/esm2020/lib/views/views.pane.component.mjs +3 -3
  432. package/esm2020/public-api.mjs +7 -2
  433. package/fesm2015/bizdoc-core.mjs +1444 -1200
  434. package/fesm2015/bizdoc-core.mjs.map +1 -1
  435. package/fesm2020/bizdoc-core.mjs +1444 -1198
  436. package/fesm2020/bizdoc-core.mjs.map +1 -1
  437. package/lib/admin/diff/configuration-diff.component.d.ts +1 -1
  438. package/lib/bizdoc.module.d.ts +6 -7
  439. package/lib/browse/browse-items.component.d.ts +1 -1
  440. package/lib/chat/conversation.component.d.ts +1 -1
  441. package/lib/compose/trace/flow.component.d.ts +1 -1
  442. package/lib/compose/trace/trace.component.d.ts +1 -1
  443. package/lib/compose/version-compare/version.pane.component.d.ts +1 -1
  444. package/lib/core/pipes/calendar.pipe.d.ts +27 -0
  445. package/lib/core/pipes/date-format.pipe.d.ts +8 -0
  446. package/lib/core/pipes/daterange.pipe.d.ts +1 -1
  447. package/lib/core/pipes/difference.pipe.d.ts +7 -0
  448. package/lib/core/pipes/duration-format.pipe.d.ts +11 -0
  449. package/lib/core/pipes/duration.pipe.d.ts +5 -8
  450. package/lib/core/pipes/time-ago.pipe.d.ts +16 -0
  451. package/lib/core/session.service.d.ts +2 -1
  452. package/lib/core/translate.service.d.ts +2 -56
  453. package/lib/cube/accum/accum.component.d.ts +1 -0
  454. package/lib/cube/chart/chart.component.d.ts +4 -2
  455. package/lib/cube/cube-view.component.d.ts +4 -5
  456. package/lib/cube/declarations.d.ts +1 -0
  457. package/lib/cube/grid/grid.component.d.ts +2 -3
  458. package/lib/cube/grid/spreadsheet.component.d.ts +1 -0
  459. package/lib/cube/matrix/table.component.d.ts +2 -2
  460. package/lib/cube/parallel/item.d.ts +2 -2
  461. package/lib/cube/pivot/pivot.component.d.ts +3 -5
  462. package/lib/cube/sum/sum.component.d.ts +1 -1
  463. package/lib/dashboard/score/peers-performance.widget.d.ts +1 -1
  464. package/lib/dashboard/score/personal-score.widget.d.ts +1 -1
  465. package/lib/desktop.module.d.ts +2 -3
  466. package/lib/home/about/about.dialog.d.ts +2 -1
  467. package/lib/mobile.module.d.ts +2 -3
  468. package/lib/modules/chart.module.d.ts +1 -1
  469. package/lib/modules/date.adapter.d.ts +13 -0
  470. package/lib/modules/datepicker.intl.d.ts +30 -0
  471. package/lib/modules/gantt.module.d.ts +7 -0
  472. package/lib/modules/paginator.intl.d.ts +14 -0
  473. package/lib/modules/stepper.intl.d.ts +10 -0
  474. package/lib/modules/texteditor.module.d.ts +8 -0
  475. package/lib/notifications/types/nudge.notification.d.ts +2 -1
  476. package/lib/notifications/types/upcoming-event.notification.d.ts +2 -1
  477. package/lib/shared.module.d.ts +175 -172
  478. package/lib/system.module.d.ts +4 -5
  479. package/lib/views/cube/matrix.component.d.ts +2 -2
  480. package/package.json +3 -6
  481. package/public-api.d.ts +6 -1
@@ -59,9 +59,9 @@ export class PositionsPopup {
59
59
  this._destroy.complete();
60
60
  }
61
61
  }
62
- PositionsPopup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: PositionsPopup, deps: [{ token: POPUP_DATA }, { token: i0.ChangeDetectorRef }, { token: i1.AccountService }], target: i0.ɵɵFactoryTarget.Component });
63
- PositionsPopup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: PositionsPopup, selector: "ng-component", viewQueries: [{ propertyName: "nameInput", first: true, predicate: ["nameInput"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<mat-form-field>\r\n <mat-chip-list #chipList [attr.aria-label]=\"data.title\">\r\n <mat-chip *ngFor=\"let u of data.positions\"\r\n [selectable]=\"true\"\r\n [removable]=\"true\"\r\n (removed)=\"removed(u)\">\r\n <bizdoc-identity-name [identity]=u></bizdoc-identity-name>\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"data.title\"\r\n [formControl]=control\r\n #nameInput\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected(nameInput, $event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: [":host{padding:8px}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i4.IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i3.MatChipRemove, selector: "[matChipRemove]" }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i3.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i8.AsyncPipe } });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: PositionsPopup, decorators: [{
62
+ PositionsPopup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PositionsPopup, deps: [{ token: POPUP_DATA }, { token: i0.ChangeDetectorRef }, { token: i1.AccountService }], target: i0.ɵɵFactoryTarget.Component });
63
+ PositionsPopup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PositionsPopup, selector: "ng-component", viewQueries: [{ propertyName: "nameInput", first: true, predicate: ["nameInput"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<mat-form-field>\r\n <mat-chip-list #chipList [attr.aria-label]=\"data.title\">\r\n <mat-chip *ngFor=\"let u of data.positions\"\r\n [selectable]=\"true\"\r\n [removable]=\"true\"\r\n (removed)=\"removed(u)\">\r\n <bizdoc-identity-name [identity]=u></bizdoc-identity-name>\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"data.title\"\r\n [formControl]=control\r\n #nameInput\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected(nameInput, $event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: [":host{padding:8px}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i4.IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i3.MatChipRemove, selector: "[matChipRemove]" }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i3.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i8.AsyncPipe } });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PositionsPopup, decorators: [{
65
65
  type: Component,
66
66
  args: [{ styles: [`:host {padding: 8px}`], template: "<mat-form-field>\r\n <mat-chip-list #chipList [attr.aria-label]=\"data.title\">\r\n <mat-chip *ngFor=\"let u of data.positions\"\r\n [selectable]=\"true\"\r\n [removable]=\"true\"\r\n (removed)=\"removed(u)\">\r\n <bizdoc-identity-name [identity]=u></bizdoc-identity-name>\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"data.title\"\r\n [formControl]=control\r\n #nameInput\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected(nameInput, $event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n" }]
67
67
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -341,14 +341,14 @@ let PositionsComponent = class PositionsComponent {
341
341
  this._destroy.complete();
342
342
  }
343
343
  };
344
- PositionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: PositionsComponent, deps: [{ token: i1.SessionService }, { token: UtilityRef }, { token: i2.DatasourceService }, { token: i3.PromptService }, { token: i4.AccountService }, { token: i5.WindowTitleService }, { token: i6.TranslateService }, { token: i7.Popup }, { token: i8.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
345
- PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: PositionsComponent, selector: "ng-component", viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-button [matMenuTriggerFor]=\"typeMenu\">{{type?.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #typeMenu>\r\n <button mat-menu-item *ngFor=\"let t of types\" (click)=\"change(t.name)\">{{t.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</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 matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\">\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </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 [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n</table>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>\r\n", styles: ["table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"], components: [{ type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i11.SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i13.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i14.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i15.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i16.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i17.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i15.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i15.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i18.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i19.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i20.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i21.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i22.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i16.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i15.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i15.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i15.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i15.MatCellDef, selector: "[matCellDef]" }, { type: i15.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i21.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i21.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i21.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i21.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i15.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i15.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i8.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i8.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i23.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i23.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i24.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i23.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i25.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i23.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i23.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i23.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i23.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i8.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i18.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i19.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": i26.TranslatePipe, "sanitizeHtml": i27.SanitizeHtmlPipe } });
344
+ PositionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PositionsComponent, deps: [{ token: i1.SessionService }, { token: UtilityRef }, { token: i2.DatasourceService }, { token: i3.PromptService }, { token: i4.AccountService }, { token: i5.WindowTitleService }, { token: i6.TranslateService }, { token: i7.Popup }, { token: i8.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
345
+ PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PositionsComponent, selector: "ng-component", viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-button [matMenuTriggerFor]=\"typeMenu\">{{type?.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #typeMenu>\r\n <button mat-menu-item *ngFor=\"let t of types\" (click)=\"change(t.name)\">{{t.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</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 matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\">\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </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 [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n</table>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>\r\n", styles: ["table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"], components: [{ type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i11.SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i13.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i14.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i15.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i16.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i17.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i15.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i15.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i18.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i19.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i20.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i21.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i22.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i16.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i15.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i15.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i15.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i15.MatCellDef, selector: "[matCellDef]" }, { type: i15.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i21.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i21.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i21.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i21.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i15.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i15.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i8.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i8.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i23.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i23.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i24.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i23.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i25.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i23.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i23.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i23.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i23.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i8.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i18.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i19.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": i26.TranslatePipe, "sanitizeHtml": i27.SanitizeHtmlPipe } });
346
346
  PositionsComponent = __decorate([
347
347
  BizDoc({ selector: 'bizdoc-positions' })
348
348
  /** positions component*/
349
349
  ], PositionsComponent);
350
350
  export { PositionsComponent };
351
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: PositionsComponent, decorators: [{
351
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PositionsComponent, decorators: [{
352
352
  type: Component,
353
353
  args: [{ template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-button [matMenuTriggerFor]=\"typeMenu\">{{type?.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #typeMenu>\r\n <button mat-menu-item *ngFor=\"let t of types\" (click)=\"change(t.name)\">{{t.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</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 matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\">\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </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 [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n</table>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>\r\n", styles: ["table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"] }]
354
354
  }], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i28.UtilityRef, decorators: [{
@@ -3,7 +3,7 @@ import { Component, ViewChild, ElementRef, HostListener } from '@angular/core';
3
3
  import { Validators } from '@angular/forms';
4
4
  import { Subject } from 'rxjs';
5
5
  import { takeUntil, debounceTime, switchMap, filter, map } from 'rxjs/operators';
6
- import * as moment_ from 'moment';
6
+ import dayjs from 'dayjs';
7
7
  import { isObject } from '../../core/functions';
8
8
  import { BizDoc } from '../../core/decorators';
9
9
  import { FONT_FAMILY } from '../../core/colors';
@@ -37,9 +37,9 @@ import * as i25 from "@angular/common";
37
37
  import * as i26 from "../../core/popup/tooltip.directive";
38
38
  import * as i27 from "@angular/flex-layout/flex";
39
39
  import * as i28 from "../../core/pipes/translate.pipe";
40
- import * as i29 from "ngx-moment";
41
- import * as i30 from "../../core/pipes/role.pipe";
42
- const moment = moment_.default;
40
+ import * as i29 from "../../core/pipes/duration.pipe";
41
+ import * as i30 from "../../core/pipes/difference.pipe";
42
+ import * as i31 from "../../core/pipes/role.pipe";
43
43
  let ProfilerComponent = class ProfilerComponent {
44
44
  /** ctor */
45
45
  constructor(_sb, _utilityRef, _session, _dialog, _documentInfo, media, _chat, _guide, _router, _slot, _translate, _accounts, _fb) {
@@ -106,7 +106,7 @@ let ProfilerComponent = class ProfilerComponent {
106
106
  });
107
107
  }
108
108
  ngOnInit() {
109
- this._slot.queryParamsChange.pipe(takeUntil(this._destroy)).subscribe(p => {
109
+ this._slot.queryParamsChange.subscribe(p => {
110
110
  const { id } = p;
111
111
  id && this._open(id);
112
112
  });
@@ -222,21 +222,21 @@ let ProfilerComponent = class ProfilerComponent {
222
222
  }, () => this._sb.error());
223
223
  }
224
224
  tooltipRender(e) {
225
- e.text = `${moment.duration(e.point.y, 's').humanize()}`;
225
+ e.text = `${dayjs.duration(e.point.y, 's').humanize()}`;
226
226
  }
227
227
  ngOnDestroy() {
228
228
  this._destroy.next();
229
229
  this._destroy.complete();
230
230
  }
231
231
  };
232
- ProfilerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ProfilerComponent, deps: [{ token: i1.PromptService }, { token: i2.UtilityRef }, { token: i3.SessionService }, { token: i4.MatDialog }, { token: i5.DocumentInfo }, { token: i6.MediaObserver }, { token: i7.ChatInfo }, { token: i8.GuideService }, { token: i9.PanesRouter }, { token: i10.PaneRef }, { token: i11.TranslateService }, { token: i12.AccountService }, { token: i13.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
233
- ProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ProfilerComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)", "window:resize": "resize()" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["activity"], descendants: true }, { propertyName: "chartElement", first: true, predicate: ["activity"], descendants: true, read: ElementRef }, { propertyName: "assign", first: true, predicate: ["assign"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <div>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-grid-list [cols]=\"cols\" [style.display]=\"data ? '': 'none'\">\r\n <mat-grid-tile>\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data?.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <button mat-icon-button (click)=\"chat(data.info.id)\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data?.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let r of data?.pending\" class=\"mat-row\">\r\n <td class=\"mat-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data?.positions.length; else none\">\r\n <tr *ngFor=\"let p of data?.positions\" class=\"mat-row\">\r\n <td class=\"mat-cell\">{{p.value }}</td>\r\n <td class=\"mat-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n</mat-grid-list>\r\n<!-- dialog -->\r\n<ng-template #assign>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-card{width:calc(100% - 50px);height:calc(100% - 50px);overflow:hidden}.mat-card .mat-card-content{height:inherit}.mat-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-table{width:100%}\n"], components: [{ type: i14.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i15.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i16.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i17.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i18.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i19.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { type: i19.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { type: i20.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i20.MatCardHeader, selector: "mat-card-header" }, { type: i21.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { type: i22.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i23.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }], directives: [{ type: i24.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i16.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i13.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i25.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i26.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i20.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i20.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i21.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { type: i25.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i13.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i13.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i27.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i13.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "async": i25.AsyncPipe, "translate": i28.TranslatePipe, "amDuration": i29.DurationPipe, "amDifference": i29.DifferencePipe, "role": i30.RolePipe } });
232
+ ProfilerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ProfilerComponent, deps: [{ token: i1.PromptService }, { token: i2.UtilityRef }, { token: i3.SessionService }, { token: i4.MatDialog }, { token: i5.DocumentInfo }, { token: i6.MediaObserver }, { token: i7.ChatInfo }, { token: i8.GuideService }, { token: i9.PanesRouter }, { token: i10.PaneRef }, { token: i11.TranslateService }, { token: i12.AccountService }, { token: i13.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
233
+ ProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ProfilerComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)", "window:resize": "resize()" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["activity"], descendants: true }, { propertyName: "chartElement", first: true, predicate: ["activity"], descendants: true, read: ElementRef }, { propertyName: "assign", first: true, predicate: ["assign"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <div>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-grid-list [cols]=\"cols\" [style.display]=\"data ? '': 'none'\">\r\n <mat-grid-tile>\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data?.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <button mat-icon-button (click)=\"chat(data.info.id)\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data?.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let r of data?.pending\" class=\"mat-row\">\r\n <td class=\"mat-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data?.positions.length; else none\">\r\n <tr *ngFor=\"let p of data?.positions\" class=\"mat-row\">\r\n <td class=\"mat-cell\">{{p.value }}</td>\r\n <td class=\"mat-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n</mat-grid-list>\r\n<!-- dialog -->\r\n<ng-template #assign>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-card{width:calc(100% - 50px);height:calc(100% - 50px);overflow:hidden}.mat-card .mat-card-content{height:inherit}.mat-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-table{width:100%}\n"], components: [{ type: i14.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i15.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i16.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i17.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i18.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i19.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { type: i19.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { type: i20.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i20.MatCardHeader, selector: "mat-card-header" }, { type: i21.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { type: i22.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i23.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }], directives: [{ type: i24.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i16.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i13.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i25.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i26.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i20.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i20.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i21.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { type: i25.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i13.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i13.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i27.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i13.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "async": i25.AsyncPipe, "translate": i28.TranslatePipe, "amDuration": i29.DurationPipe, "amDifference": i30.DifferencePipe, "role": i31.RolePipe } });
234
234
  ProfilerComponent = __decorate([
235
235
  BizDoc({ selector: 'bizdoc-user-profiler' })
236
236
  /** component*/
237
237
  ], ProfilerComponent);
238
238
  export { ProfilerComponent };
239
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ProfilerComponent, decorators: [{
239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ProfilerComponent, decorators: [{
240
240
  type: Component,
241
241
  args: [{ host: {
242
242
  class: 'pane'
@@ -257,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
257
257
  type: HostListener,
258
258
  args: ['window:resize']
259
259
  }] } });
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wcm9maWxlci9wcm9maWxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3Byb2ZpbGVyL3Byb2ZpbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBMEMsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLekQsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFTL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSWhELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFmbkIsTUFBTSxNQUFNLEdBQUksT0FBZSxDQUFDLE9BQU8sQ0FBQztJQTBCOUQsaUJBQWlCLFNBQWpCLGlCQUFpQjtJQW1ENUIsV0FBVztJQUNYLFlBQW9CLEdBQWtCLEVBQzVCLFdBQW9FLEVBQ3BFLFFBQXdCLEVBQ3hCLE9BQWtCLEVBQ2xCLGFBQTJCLEVBQ25DLEtBQW9CLEVBQ1osS0FB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MEU3QyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE9uRGVzdHJveSwgSW5qZWN0LCBUZW1wbGF0ZVJlZiwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWVkaWFPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcclxuaW1wb3J0IHsgQXhpc01vZGVsLCBCb3JkZXJNb2RlbCwgQ2hhcnRDb21wb25lbnQsIElQb2ludEV2ZW50QXJncywgSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MsIExlZ2VuZFNlcmllc01vZGVsLCBNYXJrZXJPcHRpb25zTW9kZWwsIFNlcmllc01vZGVsLCBUb29sdGlwU2V0dGluZ3NNb2RlbCwgWm9vbVNldHRpbmdzTW9kZWwgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1jaGFydHMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgZGVib3VuY2VUaW1lLCBzd2l0Y2hNYXAsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7IGNvbnN0IG1vbWVudCA9IChtb21lbnRfIGFzIGFueSkuZGVmYXVsdDtcclxuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IEd1aWRlU3RlcCwgVXNlckluZm8gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tICcuLi91dGlsaXR5LXJlZic7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IERvY3VtZW50SW5mbyB9IGZyb20gJy4uLy4uL2NvcmUvaW5mby9kb2N1bWVudC1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR3VpZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9ndWlkZS9ndWlkZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGT05UX0ZBTUlMWSB9IGZyb20gJy4uLy4uL2NvcmUvY29sb3JzJztcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhdEluZm8gfSBmcm9tICcuLi8uLi9jaGF0L2NoYXQtaW5mbyc7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3BhbmUtcmVmJztcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZmlsZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Byb2ZpbGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdwYW5lJ1xyXG4gIH1cclxufSlcclxuQEJpekRvYyh7IHNlbGVjdG9yOiAnYml6ZG9jLXVzZXItcHJvZmlsZXInIH0pXHJcbi8qKiBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgUHJvZmlsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcmVhZG9ubHkgc2VhcmNoID0gdGhpcy5fZmIuY29udHJvbChudWxsKTtcclxuICBAVmlld0NoaWxkKCdhY3Rpdml0eScpIGNoYXJ0OiBDaGFydENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhY3Rpdml0eScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjaGFydEVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYXNzaWduJykgYXNzaWduOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHJlYWRvbmx5IHdobyA9IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgcmVhZG9ubHkgcHJpbWFyeVhBeGlzID0ge1xyXG4gICAgdmFsdWVUeXBlOiAnRGF0ZVRpbWUnLFxyXG4gICAgbGFiZWxGb3JtYXQ6ICdNTU0gZGQnLFxyXG4gICAgbGFiZWxTdHlsZToge1xyXG4gICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgfVxyXG4gIH0gYXMgQXhpc01vZGVsO1xyXG4gIHJlYWRvbmx5IHByaW1hcnlZQXhpcyA9IHtcclxuICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgc2l6ZTogJzBweCdcclxuICAgIH0sXHJcbiAgfSBhcyBBeGlzTW9kZWw7XHJcbiAgcmVhZG9ubHkgem9vbVNldHRpbmdzOiBab29tU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiB0cnVlLFxyXG4gICAgZW5hYmxlUGluY2hab29taW5nOiB0cnVlLFxyXG4gICAgdG9vbGJhckl0ZW1zOiBbXSxcclxuICAgIGVuYWJsZVNlbGVjdGlvblpvb21pbmc6IGZhbHNlLFxyXG4gICAgZW5hYmxlU2Nyb2xsYmFyOiB0cnVlXHJcbiAgfTtcclxuICByZWFkb25seSB0b29sdGlwOiBUb29sdGlwU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIGVuYWJsZTogdHJ1ZSxcclxuICAgIHNoYXJlZDogdHJ1ZSxcclxuICAgIHRleHRTdHlsZToge1xyXG4gICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgfVxyXG4gIH07XHJcbiAgcmVhZG9ubHkgbGVnZW5kOiBMZWdlbmRTZXJpZXNNb2RlbCA9IHtcclxuICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfTtcclxuICByZWFkb25seSBib3JkZXIgPSB7IHdpZHRoOiAwIH0gYXMgQm9yZGVyTW9kZWw7XHJcbiAgcmVhZG9ubHkgbWFya2VyOiBNYXJrZXJPcHRpb25zTW9kZWwgPSB7XHJcbiAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgd2lkdGg6IDEwLFxyXG4gICAgaGVpZ2h0OiAxMFxyXG4gIH1cclxuICB1c2VycyQ6IE9ic2VydmFibGU8VXNlckluZm9bXT47XHJcbiAgYXNzaWduYWJsZSQ6IE9ic2VydmFibGU8VXNlckluZm9bXT47XHJcbiAgcGFsZXR0ZXM6IHN0cmluZ1tdID0gdGhpcy5fc2Vzc2lvbi5hY2NlbnRQYWxldHRlO1xyXG4gIHRoZW1lOiAnTWF0ZXJpYWwnIHwgJ01hdGVyaWFsRGFyaycgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgZGF0YTogUHJvZmlsZUluZm87XHJcbiAgY29scyA9IDI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgLyoqIGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3V0aWxpdHlSZWY6IFV0aWxpdHlSZWY8Ym9vbGVhbiwgUmVhc3NpZ25Nb2RlbCwgUHJvZmlsZUluZm8sIHN0cmluZz4sXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRJbmZvOiBEb2N1bWVudEluZm8sXHJcbiAgICBtZWRpYTogTWVkaWFPYnNlcnZlcixcclxuICAgIHByaXZhdGUgX2NoYXQ6IENoYXRJbmZvLFxyXG4gICAgcHJpdmF0ZSBfZ3VpZGU6IEd1aWRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUGFuZXNSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9zbG90OiBQYW5lUmVmPFByb2ZpbGVyQ29tcG9uZW50PixcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcikge1xyXG4gICAgbWVkaWEubWVkaWEkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUobSA9PiB0aGlzLmNvbHMgPSBtLm1xQWxpYXMgPT09ICdzbScgfHwgbS5tcUFsaWFzID09PSAneG0nID8gMSA6IDIpO1xyXG4gICAgX3Nlc3Npb24udGhlbWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgdGhpcy50aGVtZSA9IHQuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICAgICAgdGhpcy5wYWxldHRlcyA9IF9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zbG90LnF1ZXJ5UGFyYW1zQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUocCA9PiB7XHJcbiAgICAgIGNvbnN0IHsgaWQgfSA9IHA7XHJcbiAgICAgIGlkICYmIHRoaXMuX29wZW4oaWQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9zbG90LnJlc2l6ZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHRoaXMucmVzaXplLmJpbmQodGhpcykpO1xyXG4gICAgdGhpcy51c2VycyQgPSB0aGlzLnNlYXJjaC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgyNTApLFxyXG4gICAgICBmaWx0ZXIodiA9PiAhaXNPYmplY3QodikpLFxyXG4gICAgICBzd2l0Y2hNYXAodiA9PiB0aGlzLl9hY2NvdW50cy5maW5kQWxsKHYpKSk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLmYxJywgWyckZXZlbnQnXSlcclxuICBndWlkZShldnQ/OiBFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHN0ZXBzOiBHdWlkZVN0ZXBbXSA9IFt7XHJcbiAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1zZWFyY2hdJyxcclxuICAgICAgcG9zaXRpb246ICdCZWxvdycsXHJcbiAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1Byb2ZpbGVyU2VhcmNoSGVscCcpXHJcbiAgICB9XTtcclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXJlYXNzaWduXScsXHJcbiAgICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnUmVhc3NpZ25IZWxwJylcclxuICAgICAgfSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZGF0YS5hY3Rpdml0eSkubGVuZ3RoICYmXHJcbiAgICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9YWN0aXZpdHldJyxcclxuICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGl2aXR5SGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGF0YS5wZW5kaW5nLmxlbmd0aCAmJlxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXBlbmRpbmddJyxcclxuICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1BlbmRpbmdIZWxwJylcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRhLnBvc2l0aW9ucy5sZW5ndGggJiZcclxuICAgICAgICBzdGVwcy5wdXNoKHtcclxuICAgICAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1wb3NpdGlvbnNdJyxcclxuICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1Bvc2l0aW9uc0hlbHAnKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZ3VpZGUuc3RhcnQoe1xyXG4gICAgICBuYW1lOiAncHJvZmlsZXInLFxyXG4gICAgICBzdGVwc1xyXG4gICAgfSk7XHJcbiAgICBldnQgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIGNoYW5nZShldnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpIHtcclxuICAgIGNvbnN0IHsgaWQgfSA9IGV2dC5vcHRpb24udmFsdWU7XHJcbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW10sIHsgcXVlcnlQYXJhbXM6IHsgaWQgfSB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHVzZXJJZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX29wZW4odXNlcklkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYucG9wdWxhdGUodXNlcklkKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IGU7XHJcbiAgICAgIHdoaWxlICh0aGlzLmNoYXJ0LnNlcmllcy5sZW5ndGgpIHRoaXMuY2hhcnQucmVtb3ZlU2VyaWVzKDApO1xyXG4gICAgICB0aGlzLmNoYXJ0LmFkZFNlcmllcyh0aGlzLl9zZXJpZXMoKSk7XHJcbiAgICB9LCAoKSA9PiB0aGlzLl9zYi5lcnJvcigpKTtcclxuICB9XHJcbiAgLyoqICovXHJcbiAgcHJpdmF0ZSBfc2VyaWVzKCk6IFNlcmllc01vZGVsW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZGF0YS5hY3Rpdml0eSkubWFwKGEgPT4ge1xyXG4gICAgICBjb25zdCBsb2cgPSB0aGlzLmRhdGEuYWN0aXZpdHlbYV07XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogJ1NjYXR0ZXInLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuX2FjdGlvbk5hbWUoYSksXHJcbiAgICAgICAgeE5hbWU6ICd0aW1lJyxcclxuICAgICAgICB5TmFtZTogJ2R1cmF0aW9uJyxcclxuICAgICAgICBkYXRhU291cmNlOiBsb2cubWFwKGwgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGwuaWQsXHJcbiAgICAgICAgICAgIHRpbWU6IG5ldyBEYXRlKGwudGltZSksXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiBsLmR1cmF0aW9uXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FjdGlvbk5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgcmV0dXJuIGFjdGlvbiA/IGFjdGlvbi5wYXN0IHx8IGFjdGlvbi50aXRsZSA6IG5hbWU7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxyXG4gIHJlc2l6ZSgpIHtcclxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNoYXJ0RWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQpO1xyXG4gICAgdGhpcy5jaGFydC53aWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5jaGFydC5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgfVxyXG4gIHBvaW50Q2xpY2soZXZ0OiBJUG9pbnRFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IHsgaWQgfSA9IGV2dC5zZXJpZXMuZGF0YVNvdXJjZVtldnQucG9pbnRJbmRleF07XHJcbiAgICB0aGlzLl9kb2N1bWVudEluZm8ub3BlbihpZCk7XHJcbiAgfVxyXG4gIGRpc3BsYXkoaXRlbTogVXNlckluZm8pIHtcclxuICAgIHJldHVybiBpdGVtID8gaXRlbS5uYW1lIDogbnVsbDtcclxuICB9XHJcbiAgdHJhY2UoaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnYWRtaW4nLCAndXRpbGl0aWVzJywgJ2RvY3VtZW50LXRyYWNlJ10sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgaWQgfSxcclxuICAgICAgcG9saWN5OiBPcGVuUG9saWN5LkRlZmVyIHwgT3BlblBvbGljeS5QaW5uYWJsZVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNoYXQodXNlcklkKSB7XHJcbiAgICB0aGlzLl9jaGF0Lm9wZW4odXNlcklkKTtcclxuICB9XHJcbiAgcmVhc3NpZ24ocG9zaXRpb24/OiBQb3NpdGlvbkluZm8pIHtcclxuICAgIHRoaXMuYXNzaWduYWJsZSQgPSB0aGlzLl9hY2NvdW50cy5maW5kQWxsKCkucGlwZShtYXAodSA9PiB1LmZpbHRlcih1ID0+IHUuaWQgIT09IHRoaXMuZGF0YS5pbmZvLmlkKSkpO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4odGhpcy5hc3NpZ24sIHt9KS5hZnRlckNsb3NlZCgpLlxyXG4gICAgICBzdWJzY3JpYmUodSA9PlxyXG4gICAgICAgIHUgJiYgdGhpcy5fcmVhc3NpZ24odSwgcG9zaXRpb24pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgX3JlYXNzaWduKHdobzogc3RyaW5nLCBwb3NpdGlvbj86IFBvc2l0aW9uSW5mbykge1xyXG4gICAgdGhpcy5fdXRpbGl0eVJlZi5leGVjdXRlKHsgd2hvLCAuLi5wb3NpdGlvbiwgdXNlcklkOiB0aGlzLmRhdGEuaW5mby5pZCB9KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9zYi50b2FzdCgnQXNzaWduZWQnKTtcclxuICAgICAgaWYgKHBvc2l0aW9uKVxyXG4gICAgICAgIHRoaXMuZGF0YS5wb3NpdGlvbnMucmVtb3ZlKHBvc2l0aW9uKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuZGF0YS5wb3NpdGlvbnMgPSBbXTtcclxuICAgIH0sICgpID0+XHJcbiAgICAgIHRoaXMuX3NiLmVycm9yKCkpO1xyXG4gIH1cclxuICB0b29sdGlwUmVuZGVyKGU6IElUb29sdGlwUmVuZGVyRXZlbnRBcmdzKSB7XHJcbiAgICBlLnRleHQgPSBgJHttb21lbnQuZHVyYXRpb24oZS5wb2ludC55LCAncycpLmh1bWFuaXplKCl9YDtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBQcm9maWxlSW5mbyB7XHJcbiAgcG9zaXRpb25zOiBQb3NpdGlvbkluZm9bXTtcclxuICBhY3Rpdml0eToge1xyXG4gICAgW2FjdGlvbjogc3RyaW5nXToge1xyXG4gICAgICBpZDogbnVtYmVyO1xyXG4gICAgICAvKiogc2Vjb25kcyAqL1xyXG4gICAgICBkdXJhdGlvbjogbnVtYmVyO1xyXG4gICAgICBudW1iZXI6IHN0cmluZztcclxuICAgICAgdGltZTogRGF0ZTtcclxuICAgIH1bXVxyXG4gIH07XHJcbiAgcGVuZGluZzoge1xyXG4gICAgaWQ6IG51bWJlcjtcclxuICAgIHJlY2VpdmVkOiBEYXRlO1xyXG4gICAgbnVtYmVyOiBzdHJpbmc7XHJcbiAgfVtdO1xyXG4gIGluZm86IFVzZXJJbmZvO1xyXG59XHJcbmludGVyZmFjZSBQb3NpdGlvbkluZm8ge1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nO1xyXG4gIHJvbGU6IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgUmVhc3NpZ25Nb2RlbCB7XHJcbiAgdXNlcklkOiBzdHJpbmc7XHJcbiAgd2hvOiBzdHJpbmc7XHJcbiAgcm9sZT86IHN0cmluZztcclxuICBrZXk/OiBhbnk7XHJcbn1cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxtYXQtaWNvbiAoY2xpY2spPVwibnVsbFwiIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgPGRpdj5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwic2VhcmNoXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaFwiIGRhdGEtaGVscD1cInNlYXJjaFwiIHdpZHRoPVwiMjBcIiAvPlxyXG4gICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiY2hhbmdlKCRldmVudClcIj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgdXNlcnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwidVwiPlxyXG4gICAgICAgIDxzcGFuPnt7dS5uYW1lfX08L3NwYW4+XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICA8L2Rpdj5cclxuICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlYXNzaWduKClcIiBbYml6ZG9jVG9vbHRpcF09XCInUmVhc3NpZ25BbGwnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIiFkYXRhIHx8ICFkYXRhLnBvc2l0aW9ucy5sZW5ndGhcIiBkYXRhLWhlbHA9XCJyZWFzc2lnblwiPjxtYXQtaWNvbj5zd2FwX2hvcml6PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZ3VpZGUoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5oZWxwX291dGxpbmU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG48L21hdC10b29sYmFyPlxyXG48bWF0LWdyaWQtbGlzdCBbY29sc109XCJjb2xzXCIgW3N0eWxlLmRpc3BsYXldPVwiZGF0YSA/ICcnOiAnbm9uZSdcIj5cclxuICA8bWF0LWdyaWQtdGlsZT5cclxuICAgIDxtYXQtY2FyZD5cclxuICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICA8c3Bhbj57e2RhdGE/LmluZm8ubmFtZX19PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2hhdChkYXRhLmluZm8uaWQpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NoYXQnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIiFkYXRhXCI+PG1hdC1pY29uPmNoYXQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gIDwvbWF0LWdyaWQtdGlsZT5cclxuICA8bWF0LWdyaWQtdGlsZT5cclxuICAgIDxtYXQtY2FyZCBkYXRhLWhlbHA9XCJhY3Rpdml0eVwiPlxyXG4gICAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgIHt7J0FjdGl2aXR5JyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDxlanMtY2hhcnQgI2FjdGl2aXR5IFtwcmltYXJ5WEF4aXNdPVwicHJpbWFyeVhBeGlzXCIgW3ByaW1hcnlZQXhpc109XCJwcmltYXJ5WUF4aXNcIiBbem9vbVNldHRpbmdzXT1cInpvb21TZXR0aW5nc1wiIFt0b29sdGlwXT0ndG9vbHRpcCcgKHRvb2x0aXBSZW5kZXIpPVwidG9vbHRpcFJlbmRlcigkZXZlbnQpXCIgW3BhbGV0dGVzXT1cInBhbGV0dGVzXCIgYmFja2dyb3VuZD1cInRyYW5zcGFyZW50XCIgW3RoZW1lXT0ndGhlbWUnIFtib3JkZXJdPVwiYm9yZGVyXCIgKHBvaW50Q2xpY2spPVwicG9pbnRDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8ZS1zZXJpZXMtY29sbGVjdGlvbj5cclxuICAgICAgICAgIDwvZS1zZXJpZXMtY29sbGVjdGlvbj5cclxuICAgICAgICA8L2Vqcy1jaGFydD5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICA8L21hdC1ncmlkLXRpbGU+XHJcbiAgPG1hdC1ncmlkLXRpbGU+XHJcbiAgICA8bWF0LWNhcmQgZGF0YS1oZWxwPVwicGVuZGluZ1wiPlxyXG4gICAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgIHt7J1BlbmRpbmcnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwibWF0LXRhYmxlXCIgKm5nSWY9XCJkYXRhPy5wZW5kaW5nLmxlbmd0aDsgZWxzZSBub25lXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cIm1hdC1yb3dcIj5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj48L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiPjwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHIgb2YgZGF0YT8ucGVuZGluZ1wiIGNsYXNzPVwibWF0LXJvd1wiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1jZWxsXCI+PGEgKGNsaWNrKT1cInRyYWNlKHIuaWQpXCI+e3tyLm51bWJlcn19PC9hPjwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibWF0LWNlbGxcIj57eyByLnJlY2VpdmVkIHwgYW1EaWZmZXJlbmNlIDogbnVsbCA6ICdzJyB8IGFtRHVyYXRpb24gOiAncyd9fTwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgPC9tYXQtZ3JpZC10aWxlPlxyXG4gIDxtYXQtZ3JpZC10aWxlPlxyXG4gICAgPG1hdC1jYXJkIGRhdGEtaGVscD1cInBvc2l0aW9uc1wiPlxyXG4gICAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgIHt7J1Bvc2l0aW9ucycgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJtYXQtdGFibGVcIiAqbmdJZj1cImRhdGE/LnBvc2l0aW9ucy5sZW5ndGg7IGVsc2Ugbm9uZVwiPlxyXG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwIG9mIGRhdGE/LnBvc2l0aW9uc1wiIGNsYXNzPVwibWF0LXJvd1wiPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiPnt7cC52YWx1ZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1jZWxsXCI+e3twLnJvbGUgfCByb2xlfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZWFzc2lnbihwKVwiIFtiaXpkb2NUb29sdGlwXT1cIidSZWFzc2lnbicgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+c3dhcF9ob3JpejwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgPC9tYXQtZ3JpZC10aWxlPlxyXG48L21hdC1ncmlkLWxpc3Q+XHJcbjwhLS0gZGlhbG9nIC0tPlxyXG48bmctdGVtcGxhdGUgI2Fzc2lnbj5cclxuICA8aDIgbWF0LWRpYWxvZy10aXRsZT57eydSZWFzc2lnbicgfCB0cmFuc2xhdGUgfX08L2gyPlxyXG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJ7eydXaG8nIHwgdHJhbnNsYXRlfX1cIiBbZm9ybUNvbnRyb2xdPVwid2hvXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdSBvZiBhc3NpZ25hYmxlJCB8IGFzeW5jXCIgW3ZhbHVlXT1cInUuaWRcIj57e3UubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZm9ybT5cclxuICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cIndoby52YWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhd2hvLnZhbGlkXCI+e3snT0snIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlPnt7J0NhbmNlbCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI25vbmU+XHJcbiAgPHNwYW4gY2xhc3M9XCJtYXQtYm9keS0yXCI+e3snTm9uZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wcm9maWxlci9wcm9maWxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3Byb2ZpbGVyL3Byb2ZpbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBMEMsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLekQsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUloRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQVd6QyxpQkFBaUIsU0FBakIsaUJBQWlCO0lBbUQ1QixXQUFXO0lBQ1gsWUFBb0IsR0FBa0IsRUFDNUIsV0FBb0UsRUFDcEUsUUFBd0IsRUFDeEIsT0FBa0IsRUFDbEIsYUFBMkIsRUFDbkMsS0FBb0IsRUFDWixLQUFlLEVBQ2YsTUFBb0IsRUFDcEIsT0FBb0IsRUFDcEIsS0FBaUMsRUFDakMsVUFBNEIsRUFDNUIsU0FBeUIsRUFDekIsR0FBZ0I7UUFaTixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUF5RDtRQUNwRSxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQ2xCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBRTNCLFVBQUssR0FBTCxLQUFLLENBQVU7UUFDZixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsVUFBSyxHQUFMLEtBQUssQ0FBNEI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFDekIsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQS9EakIsV0FBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBSWhDLFFBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELGlCQUFZLEdBQUc7WUFDdEIsU0FBUyxFQUFFLFVBQVU7WUFDckIsV0FBVyxFQUFFLFFBQVE7WUFDckIsVUFBVSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxXQUFXO2FBQ3hCO1NBQ1csQ0FBQztRQUNOLGlCQUFZLEdBQUc7WUFDdEIsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxLQUFLO2FBQ1o7U0FDVyxDQUFDO1FBQ04saUJBQVksR0FBc0I7WUFDekMsdUJBQXVCLEVBQUUsSUFBSTtZQUM3QixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLHNCQUFzQixFQUFFLEtBQUs7WUFDN0IsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQztRQUNPLFlBQU8sR0FBeUI7WUFDdkMsTUFBTSxFQUFFLElBQUk7WUFDWixNQUFNLEVBQUUsSUFBSTtZQUNaLFNBQVMsRUFBRTtnQkFDVCxVQUFVLEVBQUUsV0FBVzthQUN4QjtTQUNGLENBQUM7UUFDTyxXQUFNLEdBQXNCO1lBQ25DLE9BQU8sRUFBRSxLQUFLO1lBQ2QsU0FBUyxFQUFFO2dCQUNULFVBQVUsRUFBRSxXQUFXO2FBQ3hCO1NBQ0YsQ0FBQztRQUNPLFdBQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQWlCLENBQUM7UUFDckMsV0FBTSxHQUF1QjtZQUNwQyxPQUFPLEVBQUUsSUFBSTtZQUNiLEtBQUssRUFBRSxFQUFFO1lBQ1QsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFBO1FBR0QsYUFBUSxHQUFhLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQ2pELFVBQUssR0FBZ0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUU1RixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ1EsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFlOUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekgsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNqQixFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDbEUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN6QixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUEyQjtRQUMvQixNQUFNLEtBQUssR0FBZ0IsQ0FBQztnQkFDMUIsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQzthQUNuRCxDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7YUFDN0MsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU07Z0JBQ3BDLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQztpQkFDN0MsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtnQkFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO2lCQUM1QyxDQUFDLENBQUM7WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO2dCQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUM7aUJBQzlDLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDaEIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSztTQUNOLENBQUMsQ0FBQztRQUNILEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFpQztRQUN0QyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRDs7O09BR0c7SUFDSyxLQUFLLENBQUMsTUFBYztRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsTUFBTTtJQUNFLE9BQU87UUFDYixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsT0FBTztnQkFDTCxJQUFJLEVBQUUsU0FBUztnQkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUssRUFBRSxVQUFVO2dCQUNqQixVQUFVLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDdEIsT0FBTzt3QkFDTCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7d0JBQ1IsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQ3RCLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtxQkFDckIsQ0FBQztnQkFDSixDQUFDLENBQUM7YUFDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sV0FBVyxDQUFDLElBQVk7UUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDeEUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFDRCxVQUFVLENBQUMsR0FBb0I7UUFDN0IsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsT0FBTyxDQUFDLElBQWM7UUFDcEIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBQ0QsS0FBSyxDQUFDLEVBQVU7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtZQUM5RCxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDbkIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLFFBQVE7U0FDL0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELElBQUksQ0FBQyxNQUFNO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUNELFFBQVEsQ0FBQyxRQUF1QjtRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUM5QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDWixDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQ2pDLENBQUM7SUFDTixDQUFDO0lBQ0QsTUFBTTtJQUNFLFNBQVMsQ0FBQyxHQUFXLEVBQUUsUUFBdUI7UUFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN2RixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzQixJQUFJLFFBQVE7Z0JBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztnQkFFckMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQzdCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FDTixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUNELGFBQWEsQ0FBQyxDQUEwQjtRQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRixDQUFBOzhHQTFNWSxpQkFBaUI7a0dBQWpCLGlCQUFpQixpVkFHRyxVQUFVLGdIQ3JDM0Msb3hKQTZHQTtBRDNFYSxpQkFBaUI7SUFGN0IsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDN0MsZUFBZTtHQUNGLGlCQUFpQixDQTBNN0I7U0ExTVksaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBVDdCLFNBQVM7MkJBR0Y7d0JBQ0osS0FBSyxFQUFFLE1BQU07cUJBQ2Q7cWFBTXNCLEtBQUs7c0JBQTNCLFNBQVM7dUJBQUMsVUFBVTtnQkFDd0IsWUFBWTtzQkFBeEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUN0QixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBK0VuQixLQUFLO3NCQURKLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMEU3QyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE9uRGVzdHJveSwgSW5qZWN0LCBUZW1wbGF0ZVJlZiwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWVkaWFPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcclxuaW1wb3J0IHsgQXhpc01vZGVsLCBCb3JkZXJNb2RlbCwgQ2hhcnRDb21wb25lbnQsIElQb2ludEV2ZW50QXJncywgSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MsIExlZ2VuZFNlcmllc01vZGVsLCBNYXJrZXJPcHRpb25zTW9kZWwsIFNlcmllc01vZGVsLCBUb29sdGlwU2V0dGluZ3NNb2RlbCwgWm9vbVNldHRpbmdzTW9kZWwgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1jaGFydHMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgZGVib3VuY2VUaW1lLCBzd2l0Y2hNYXAsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgR3VpZGVTdGVwLCBVc2VySW5mbyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgVXRpbGl0eVJlZiB9IGZyb20gJy4uL3V0aWxpdHktcmVmJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG9jdW1lbnRJbmZvIH0gZnJvbSAnLi4vLi4vY29yZS9pbmZvL2RvY3VtZW50LWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHdWlkZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2d1aWRlL2d1aWRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEZPTlRfRkFNSUxZIH0gZnJvbSAnLi4vLi4vY29yZS9jb2xvcnMnO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gJy4uLy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaGF0SW5mbyB9IGZyb20gJy4uLy4uL2NoYXQvY2hhdC1pbmZvJztcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gJy4uLy4uL2NvcmUvc2xvdHMvcGFuZS1yZWYnO1xyXG5pbXBvcnQgeyBPcGVuUG9saWN5IH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZmlsZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ3BhbmUnXHJcbiAgfVxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtdXNlci1wcm9maWxlcicgfSlcclxuLyoqIGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBQcm9maWxlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICByZWFkb25seSBzZWFyY2ggPSB0aGlzLl9mYi5jb250cm9sKG51bGwpO1xyXG4gIEBWaWV3Q2hpbGQoJ2FjdGl2aXR5JykgY2hhcnQ6IENoYXJ0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2FjdGl2aXR5JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNoYXJ0RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhc3NpZ24nKSBhc3NpZ246IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgcmVhZG9ubHkgd2hvID0gdGhpcy5fZmIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICByZWFkb25seSBwcmltYXJ5WEF4aXMgPSB7XHJcbiAgICB2YWx1ZVR5cGU6ICdEYXRlVGltZScsXHJcbiAgICBsYWJlbEZvcm1hdDogJ01NTSBkZCcsXHJcbiAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfSBhcyBBeGlzTW9kZWw7XHJcbiAgcmVhZG9ubHkgcHJpbWFyeVlBeGlzID0ge1xyXG4gICAgbGFiZWxTdHlsZToge1xyXG4gICAgICBzaXplOiAnMHB4J1xyXG4gICAgfSxcclxuICB9IGFzIEF4aXNNb2RlbDtcclxuICByZWFkb25seSB6b29tU2V0dGluZ3M6IFpvb21TZXR0aW5nc01vZGVsID0ge1xyXG4gICAgZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IHRydWUsXHJcbiAgICBlbmFibGVQaW5jaFpvb21pbmc6IHRydWUsXHJcbiAgICB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsXHJcbiAgICBlbmFibGVTY3JvbGxiYXI6IHRydWVcclxuICB9O1xyXG4gIHJlYWRvbmx5IHRvb2x0aXA6IFRvb2x0aXBTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gICAgc2hhcmVkOiB0cnVlLFxyXG4gICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfTtcclxuICByZWFkb25seSBsZWdlbmQ6IExlZ2VuZFNlcmllc01vZGVsID0ge1xyXG4gICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgIH1cclxuICB9O1xyXG4gIHJlYWRvbmx5IGJvcmRlciA9IHsgd2lkdGg6IDAgfSBhcyBCb3JkZXJNb2RlbDtcclxuICByZWFkb25seSBtYXJrZXI6IE1hcmtlck9wdGlvbnNNb2RlbCA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICB3aWR0aDogMTAsXHJcbiAgICBoZWlnaHQ6IDEwXHJcbiAgfVxyXG4gIHVzZXJzJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICBhc3NpZ25hYmxlJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICBwYWxldHRlczogc3RyaW5nW10gPSB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgdGhlbWU6ICdNYXRlcmlhbCcgfCAnTWF0ZXJpYWxEYXJrJyA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICBkYXRhOiBQcm9maWxlSW5mbztcclxuICBjb2xzID0gMjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAvKiogY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdXRpbGl0eVJlZjogVXRpbGl0eVJlZjxib29sZWFuLCBSZWFzc2lnbk1vZGVsLCBQcm9maWxlSW5mbywgc3RyaW5nPixcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudEluZm86IERvY3VtZW50SW5mbyxcclxuICAgIG1lZGlhOiBNZWRpYU9ic2VydmVyLFxyXG4gICAgcHJpdmF0ZSBfY2hhdDogQ2hhdEluZm8sXHJcbiAgICBwcml2YXRlIF9ndWlkZTogR3VpZGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBQYW5lc1JvdXRlcixcclxuICAgIHByaXZhdGUgX3Nsb3Q6IFBhbmVSZWY8UHJvZmlsZXJDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICBtZWRpYS5tZWRpYSQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShtID0+IHRoaXMuY29scyA9IG0ubXFBbGlhcyA9PT0gJ3NtJyB8fCBtLm1xQWxpYXMgPT09ICd4bScgPyAxIDogMik7XHJcbiAgICBfc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICB0aGlzLnRoZW1lID0gdC5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnO1xyXG4gICAgICB0aGlzLnBhbGV0dGVzID0gX3Nlc3Npb24uYWNjZW50UGFsZXR0ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Nsb3QucXVlcnlQYXJhbXNDaGFuZ2Uuc3Vic2NyaWJlKHAgPT4ge1xyXG4gICAgICBjb25zdCB7IGlkIH0gPSBwO1xyXG4gICAgICBpZCAmJiB0aGlzLl9vcGVuKGlkKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fc2xvdC5yZXNpemUucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSh0aGlzLnJlc2l6ZS5iaW5kKHRoaXMpKTtcclxuICAgIHRoaXMudXNlcnMkID0gdGhpcy5zZWFyY2gudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcclxuICAgICAgZmlsdGVyKHYgPT4gIWlzT2JqZWN0KHYpKSxcclxuICAgICAgc3dpdGNoTWFwKHYgPT4gdGhpcy5fYWNjb3VudHMuZmluZEFsbCh2KSkpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi5mMScsIFsnJGV2ZW50J10pXHJcbiAgZ3VpZGUoZXZ0PzogRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBzdGVwczogR3VpZGVTdGVwW10gPSBbe1xyXG4gICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9c2VhcmNoXScsXHJcbiAgICAgIHBvc2l0aW9uOiAnQmVsb3cnLFxyXG4gICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQcm9maWxlclNlYXJjaEhlbHAnKVxyXG4gICAgfV07XHJcbiAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1yZWFzc2lnbl0nLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1JlYXNzaWduSGVscCcpXHJcbiAgICAgIH0pO1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmRhdGEuYWN0aXZpdHkpLmxlbmd0aCAmJlxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPWFjdGl2aXR5XScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpdml0eUhlbHAnKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGEucGVuZGluZy5sZW5ndGggJiZcclxuICAgICAgICBzdGVwcy5wdXNoKHtcclxuICAgICAgICAgIHNlbGVjdG9yOiAnW2RhdGEtaGVscD1wZW5kaW5nXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQZW5kaW5nSGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGF0YS5wb3NpdGlvbnMubGVuZ3RoICYmXHJcbiAgICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9cG9zaXRpb25zXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQb3NpdGlvbnNIZWxwJylcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuX2d1aWRlLnN0YXJ0KHtcclxuICAgICAgbmFtZTogJ3Byb2ZpbGVyJyxcclxuICAgICAgc3RlcHNcclxuICAgIH0pO1xyXG4gICAgZXZ0ICYmIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuICBjaGFuZ2UoZXZ0OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XHJcbiAgICBjb25zdCB7IGlkIH0gPSBldnQub3B0aW9uLnZhbHVlO1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkIH0gfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB1c2VySWRcclxuICAgKi9cclxuICBwcml2YXRlIF9vcGVuKHVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl91dGlsaXR5UmVmLnBvcHVsYXRlKHVzZXJJZCkuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICB0aGlzLmRhdGEgPSBlO1xyXG4gICAgICB3aGlsZSAodGhpcy5jaGFydC5zZXJpZXMubGVuZ3RoKSB0aGlzLmNoYXJ0LnJlbW92ZVNlcmllcygwKTtcclxuICAgICAgdGhpcy5jaGFydC5hZGRTZXJpZXModGhpcy5fc2VyaWVzKCkpO1xyXG4gICAgfSwgKCkgPT4gdGhpcy5fc2IuZXJyb3IoKSk7XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgX3NlcmllcygpOiBTZXJpZXNNb2RlbFtdIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmRhdGEuYWN0aXZpdHkpLm1hcChhID0+IHtcclxuICAgICAgY29uc3QgbG9nID0gdGhpcy5kYXRhLmFjdGl2aXR5W2FdO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6ICdTY2F0dGVyJyxcclxuICAgICAgICBuYW1lOiB0aGlzLl9hY3Rpb25OYW1lKGEpLFxyXG4gICAgICAgIHhOYW1lOiAndGltZScsXHJcbiAgICAgICAgeU5hbWU6ICdkdXJhdGlvbicsXHJcbiAgICAgICAgZGF0YVNvdXJjZTogbG9nLm1hcChsID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBsLmlkLFxyXG4gICAgICAgICAgICB0aW1lOiBuZXcgRGF0ZShsLnRpbWUpLFxyXG4gICAgICAgICAgICBkdXJhdGlvbjogbC5kdXJhdGlvblxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hY3Rpb25OYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIHJldHVybiBhY3Rpb24gPyBhY3Rpb24ucGFzdCB8fCBhY3Rpb24udGl0bGUgOiBuYW1lO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcclxuICByZXNpemUoKSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5jaGFydEVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KTtcclxuICAgIHRoaXMuY2hhcnQud2lkdGggPSB3aWR0aDtcclxuICAgIHRoaXMuY2hhcnQuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gIH1cclxuICBwb2ludENsaWNrKGV2dDogSVBvaW50RXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCB7IGlkIH0gPSBldnQuc2VyaWVzLmRhdGFTb3VyY2VbZXZ0LnBvaW50SW5kZXhdO1xyXG4gICAgdGhpcy5fZG9jdW1lbnRJbmZvLm9wZW4oaWQpO1xyXG4gIH1cclxuICBkaXNwbGF5KGl0ZW06IFVzZXJJbmZvKSB7XHJcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0ubmFtZSA6IG51bGw7XHJcbiAgfVxyXG4gIHRyYWNlKGlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ2FkbWluJywgJ3V0aWxpdGllcycsICdkb2N1bWVudC10cmFjZSddLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IGlkIH0sXHJcbiAgICAgIHBvbGljeTogT3BlblBvbGljeS5EZWZlciB8IE9wZW5Qb2xpY3kuUGlubmFibGVcclxuICAgIH0pO1xyXG4gIH1cclxuICBjaGF0KHVzZXJJZCkge1xyXG4gICAgdGhpcy5fY2hhdC5vcGVuKHVzZXJJZCk7XHJcbiAgfVxyXG4gIHJlYXNzaWduKHBvc2l0aW9uPzogUG9zaXRpb25JbmZvKSB7XHJcbiAgICB0aGlzLmFzc2lnbmFibGUkID0gdGhpcy5fYWNjb3VudHMuZmluZEFsbCgpLnBpcGUobWFwKHUgPT4gdS5maWx0ZXIodSA9PiB1LmlkICE9PSB0aGlzLmRhdGEuaW5mby5pZCkpKTtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKHRoaXMuYXNzaWduLCB7fSkuYWZ0ZXJDbG9zZWQoKS5cclxuICAgICAgc3Vic2NyaWJlKHUgPT5cclxuICAgICAgICB1ICYmIHRoaXMuX3JlYXNzaWduKHUsIHBvc2l0aW9uKVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKiogKi9cclxuICBwcml2YXRlIF9yZWFzc2lnbih3aG86IHN0cmluZywgcG9zaXRpb24/OiBQb3NpdGlvbkluZm8pIHtcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYuZXhlY3V0ZSh7IHdobywgLi4ucG9zaXRpb24sIHVzZXJJZDogdGhpcy5kYXRhLmluZm8uaWQgfSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fc2IudG9hc3QoJ0Fzc2lnbmVkJyk7XHJcbiAgICAgIGlmIChwb3NpdGlvbilcclxuICAgICAgICB0aGlzLmRhdGEucG9zaXRpb25zLnJlbW92ZShwb3NpdGlvbik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLmRhdGEucG9zaXRpb25zID0gW107XHJcbiAgICB9LCAoKSA9PlxyXG4gICAgICB0aGlzLl9zYi5lcnJvcigpKTtcclxuICB9XHJcbiAgdG9vbHRpcFJlbmRlcihlOiBJVG9vbHRpcFJlbmRlckV2ZW50QXJncykge1xyXG4gICAgZS50ZXh0ID0gYCR7ZGF5anMuZHVyYXRpb24oZS5wb2ludC55IGFzIG51bWJlciwgJ3MnKS5odW1hbml6ZSgpfWA7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgUHJvZmlsZUluZm8ge1xyXG4gIHBvc2l0aW9uczogUG9zaXRpb25JbmZvW107XHJcbiAgYWN0aXZpdHk6IHtcclxuICAgIFthY3Rpb246IHN0cmluZ106IHtcclxuICAgICAgaWQ6IG51bWJlcjtcclxuICAgICAgLyoqIHNlY29uZHMgKi9cclxuICAgICAgZHVyYXRpb246IG51bWJlcjtcclxuICAgICAgbnVtYmVyOiBzdHJpbmc7XHJcbiAgICAgIHRpbWU6IERhdGU7XHJcbiAgICB9W11cclxuICB9O1xyXG4gIHBlbmRpbmc6IHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICByZWNlaXZlZDogRGF0ZTtcclxuICAgIG51bWJlcjogc3RyaW5nO1xyXG4gIH1bXTtcclxuICBpbmZvOiBVc2VySW5mbztcclxufVxyXG5pbnRlcmZhY2UgUG9zaXRpb25JbmZvIHtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICByb2xlOiBzdHJpbmc7XHJcbn1cclxuaW50ZXJmYWNlIFJlYXNzaWduTW9kZWwge1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIHdobzogc3RyaW5nO1xyXG4gIHJvbGU/OiBzdHJpbmc7XHJcbiAga2V5PzogYW55O1xyXG59XHJcbiIsIjxtYXQtdG9vbGJhcj5cclxuICA8bWF0LWljb24gKGNsaWNrKT1cIm51bGxcIiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5zZWFyY2g8L21hdC1pY29uPlxyXG4gIDxkaXY+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInNlYXJjaFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hcIiBkYXRhLWhlbHA9XCJzZWFyY2hcIiB3aWR0aD1cIjIwXCIgLz5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cImNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1IG9mIHVzZXJzJCB8IGFzeW5jXCIgW3ZhbHVlXT1cInVcIj5cclxuICAgICAgICA8c3Bhbj57e3UubmFtZX19PC9zcGFuPlxyXG4gICAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgPC9kaXY+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZWFzc2lnbigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1JlYXNzaWduQWxsJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGF0YSB8fCAhZGF0YS5wb3NpdGlvbnMubGVuZ3RoXCIgZGF0YS1oZWxwPVwicmVhc3NpZ25cIj48bWF0LWljb24+c3dhcF9ob3JpejwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImd1aWRlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInSGVscCcgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+aGVscF9vdXRsaW5lPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPG1hdC1ncmlkLWxpc3QgW2NvbHNdPVwiY29sc1wiIFtzdHlsZS5kaXNwbGF5XT1cImRhdGEgPyAnJzogJ25vbmUnXCI+XHJcbiAgPG1hdC1ncmlkLXRpbGU+XHJcbiAgICA8bWF0LWNhcmQ+XHJcbiAgICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgPHNwYW4+e3tkYXRhPy5pbmZvLm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNoYXQoZGF0YS5pbmZvLmlkKVwiIFtiaXpkb2NUb29sdGlwXT1cIidDaGF0JyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGF0YVwiPjxtYXQtaWNvbj5jaGF0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICA8L21hdC1ncmlkLXRpbGU+XHJcbiAgPG1hdC1ncmlkLXRpbGU+XHJcbiAgICA8bWF0LWNhcmQgZGF0YS1oZWxwPVwiYWN0aXZpdHlcIj5cclxuICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICB7eydBY3Rpdml0eScgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8ZWpzLWNoYXJ0ICNhY3Rpdml0eSBbcHJpbWFyeVhBeGlzXT1cInByaW1hcnlYQXhpc1wiIFtwcmltYXJ5WUF4aXNdPVwicHJpbWFyeVlBeGlzXCIgW3pvb21TZXR0aW5nc109XCJ6b29tU2V0dGluZ3NcIiBbdG9vbHRpcF09J3Rvb2x0aXAnICh0b29sdGlwUmVuZGVyKT1cInRvb2x0aXBSZW5kZXIoJGV2ZW50KVwiIFtwYWxldHRlc109XCJwYWxldHRlc1wiIGJhY2tncm91bmQ9XCJ0cmFuc3BhcmVudFwiIFt0aGVtZV09J3RoZW1lJyBbYm9yZGVyXT1cImJvcmRlclwiIChwb2ludENsaWNrKT1cInBvaW50Q2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPGUtc2VyaWVzLWNvbGxlY3Rpb24+XHJcbiAgICAgICAgICA8L2Utc2VyaWVzLWNvbGxlY3Rpb24+XHJcbiAgICAgICAgPC9lanMtY2hhcnQ+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgPC9tYXQtZ3JpZC10aWxlPlxyXG4gIDxtYXQtZ3JpZC10aWxlPlxyXG4gICAgPG1hdC1jYXJkIGRhdGEtaGVscD1cInBlbmRpbmdcIj5cclxuICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICB7eydQZW5kaW5nJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cIm1hdC10YWJsZVwiICpuZ0lmPVwiZGF0YT8ucGVuZGluZy5sZW5ndGg7IGVsc2Ugbm9uZVwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJtYXQtcm93XCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCI+PC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj48L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByIG9mIGRhdGE/LnBlbmRpbmdcIiBjbGFzcz1cIm1hdC1yb3dcIj5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiPjxhIChjbGljayk9XCJ0cmFjZShyLmlkKVwiPnt7ci5udW1iZXJ9fTwvYT48L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1jZWxsXCI+e3sgci5yZWNlaXZlZCB8IGFtRGlmZmVyZW5jZSA6IG51bGwgOiAncycgfCBhbUR1cmF0aW9uIDogJ3MnfX08L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gIDwvbWF0LWdyaWQtdGlsZT5cclxuICA8bWF0LWdyaWQtdGlsZT5cclxuICAgIDxtYXQtY2FyZCBkYXRhLWhlbHA9XCJwb3NpdGlvbnNcIj5cclxuICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICB7eydQb3NpdGlvbnMnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwibWF0LXRhYmxlXCIgKm5nSWY9XCJkYXRhPy5wb3NpdGlvbnMubGVuZ3RoOyBlbHNlIG5vbmVcIj5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcCBvZiBkYXRhPy5wb3NpdGlvbnNcIiBjbGFzcz1cIm1hdC1yb3dcIj5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibWF0LWNlbGxcIj57e3AudmFsdWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiPnt7cC5yb2xlIHwgcm9sZX19PC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibWF0LWNlbGxcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVhc3NpZ24ocClcIiBbYml6ZG9jVG9vbHRpcF09XCInUmVhc3NpZ24nIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPnN3YXBfaG9yaXo8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gIDwvbWF0LWdyaWQtdGlsZT5cclxuPC9tYXQtZ3JpZC1saXN0PlxyXG48IS0tIGRpYWxvZyAtLT5cclxuPG5nLXRlbXBsYXRlICNhc3NpZ24+XHJcbiAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3snUmVhc3NpZ24nIHwgdHJhbnNsYXRlIH19PC9oMj5cclxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gICAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwie3snV2hvJyB8IHRyYW5zbGF0ZX19XCIgW2Zvcm1Db250cm9sXT1cIndob1wiIHJlcXVpcmVkPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgYXNzaWduYWJsZSQgfCBhc3luY1wiIFt2YWx1ZV09XCJ1LmlkXCI+e3t1Lm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJ3aG8udmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIXdoby52YWxpZFwiPnt7J09LJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT57eydDYW5jZWwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNub25lPlxyXG4gIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktMlwiPnt7J05vbmUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -40,9 +40,9 @@ export class UtilityWrapperComponent {
40
40
  this._routing.unsubscribe();
41
41
  }
42
42
  }
43
- UtilityWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: UtilityWrapperComponent, deps: [{ token: i1.SessionService }, { token: i2.ActivatedRoute }, { token: i3.WindowTitleService }, { token: i4.HttpClient }, { token: i5.PromptService }, { token: i6.HubService }, { token: i0.ViewContainerRef }, { token: i7.BizDocComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
44
- UtilityWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: UtilityWrapperComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: UtilityWrapperComponent, decorators: [{
43
+ UtilityWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UtilityWrapperComponent, deps: [{ token: i1.SessionService }, { token: i2.ActivatedRoute }, { token: i3.WindowTitleService }, { token: i4.HttpClient }, { token: i5.PromptService }, { token: i6.HubService }, { token: i0.ViewContainerRef }, { token: i7.BizDocComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
44
+ UtilityWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: UtilityWrapperComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UtilityWrapperComponent, decorators: [{
46
46
  type: Component,
47
47
  args: [{
48
48
  template: ''
@@ -34,9 +34,9 @@ export class UtilityPaneComponent {
34
34
  });
35
35
  }
36
36
  }
37
- UtilityPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: UtilityPaneComponent, deps: [{ token: i1.SessionService }, { token: i2.PaneRef }, { token: i3.HttpClient }, { token: i4.PromptService }, { token: i5.HubService }, { token: i6.BizDocComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
38
- UtilityPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: UtilityPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, viewQueries: [{ propertyName: "vc", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: '<ng-container #container></ng-container>', isInline: true });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: UtilityPaneComponent, decorators: [{
37
+ UtilityPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UtilityPaneComponent, deps: [{ token: i1.SessionService }, { token: i2.PaneRef }, { token: i3.HttpClient }, { token: i4.PromptService }, { token: i5.HubService }, { token: i6.BizDocComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
38
+ UtilityPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: UtilityPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, viewQueries: [{ propertyName: "vc", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: '<ng-container #container></ng-container>', isInline: true });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UtilityPaneComponent, decorators: [{
40
40
  type: Component,
41
41
  args: [{
42
42
  template: '<ng-container #container></ng-container>',
@@ -12,9 +12,9 @@ import * as i2 from "./core/hub.service";
12
12
  const REVISIT_TAB_REFRESH = 10000;
13
13
  export class BrokenPage {
14
14
  }
15
- BrokenPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: BrokenPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
- BrokenPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: BrokenPage, selector: "ng-component", ngImport: i0, template: '', isInline: true });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: BrokenPage, decorators: [{
15
+ BrokenPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BrokenPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ BrokenPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: BrokenPage, selector: "ng-component", ngImport: i0, template: '', isInline: true });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BrokenPage, decorators: [{
18
18
  type: Component,
19
19
  args: [{
20
20
  template: ''
@@ -71,9 +71,9 @@ export class BizDocApp {
71
71
  }
72
72
  }
73
73
  }
74
- BizDocApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: BizDocApp, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: i1.SessionService }, { token: i2.HubService }], target: i0.ɵɵFactoryTarget.Component });
75
- BizDocApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: BizDocApp, selector: "bizdoc", ngImport: i0, template: '', isInline: true });
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: BizDocApp, decorators: [{
74
+ BizDocApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BizDocApp, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: i1.SessionService }, { token: i2.HubService }], target: i0.ɵɵFactoryTarget.Component });
75
+ BizDocApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: BizDocApp, selector: "bizdoc", ngImport: i0, template: '', isInline: true });
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BizDocApp, decorators: [{
77
77
  type: Component,
78
78
  args: [{
79
79
  selector: 'bizdoc',