@ng-nest/ui 13.1.9 → 14.0.2

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 (995) hide show
  1. package/README.md +1 -1
  2. package/affix/affix.component.d.ts +1 -1
  3. package/affix/affix.property.d.ts +1 -1
  4. package/affix/{ng-nest-ui-affix.d.ts → index.d.ts} +0 -0
  5. package/alert/alert.component.d.ts +1 -1
  6. package/alert/alert.property.d.ts +1 -1
  7. package/alert/{ng-nest-ui-alert.d.ts → index.d.ts} +0 -0
  8. package/anchor/anchor.component.d.ts +1 -1
  9. package/anchor/anchor.property.d.ts +1 -1
  10. package/anchor/{ng-nest-ui-anchor.d.ts → index.d.ts} +0 -0
  11. package/api/api.component.d.ts +1 -1
  12. package/api/{ng-nest-ui-api.d.ts → index.d.ts} +0 -0
  13. package/auto-complete/auto-complete-portal.component.d.ts +1 -1
  14. package/auto-complete/auto-complete.component.d.ts +2 -2
  15. package/auto-complete/auto-complete.property.d.ts +1 -1
  16. package/auto-complete/{ng-nest-ui-auto-complete.d.ts → index.d.ts} +0 -0
  17. package/avatar/avatar.component.d.ts +1 -1
  18. package/avatar/avatar.property.d.ts +1 -1
  19. package/avatar/{ng-nest-ui-avatar.d.ts → index.d.ts} +0 -0
  20. package/back-top/back-top.component.d.ts +1 -1
  21. package/back-top/back-top.property.d.ts +1 -1
  22. package/back-top/{ng-nest-ui-back-top.d.ts → index.d.ts} +0 -0
  23. package/badge/badge.component.d.ts +1 -1
  24. package/badge/badge.property.d.ts +1 -1
  25. package/badge/{ng-nest-ui-badge.d.ts → index.d.ts} +0 -0
  26. package/base-form/base-form.component.d.ts +1 -1
  27. package/base-form/base-form.property.d.ts +1 -1
  28. package/base-form/{ng-nest-ui-base-form.d.ts → index.d.ts} +0 -0
  29. package/border/border.component.d.ts +1 -1
  30. package/border/{ng-nest-ui-border.d.ts → index.d.ts} +0 -0
  31. package/button/button.component.d.ts +1 -1
  32. package/button/button.property.d.ts +2 -2
  33. package/button/buttons.component.d.ts +1 -1
  34. package/button/{ng-nest-ui-button.d.ts → index.d.ts} +0 -0
  35. package/calendar/calendar.component.d.ts +1 -1
  36. package/calendar/calendar.property.d.ts +1 -1
  37. package/calendar/{ng-nest-ui-calendar.d.ts → index.d.ts} +0 -0
  38. package/card/card.component.d.ts +1 -1
  39. package/card/card.property.d.ts +1 -1
  40. package/card/{ng-nest-ui-card.d.ts → index.d.ts} +0 -0
  41. package/carousel/carousel-panel.component.d.ts +1 -1
  42. package/carousel/carousel.component.d.ts +1 -1
  43. package/carousel/carousel.property.d.ts +2 -2
  44. package/carousel/{ng-nest-ui-carousel.d.ts → index.d.ts} +0 -0
  45. package/cascade/cascade-portal.component.d.ts +1 -1
  46. package/cascade/cascade.component.d.ts +2 -3
  47. package/cascade/cascade.property.d.ts +1 -1
  48. package/cascade/{ng-nest-ui-cascade.d.ts → index.d.ts} +0 -0
  49. package/checkbox/checkbox.component.d.ts +1 -1
  50. package/checkbox/checkbox.property.d.ts +1 -1
  51. package/checkbox/{ng-nest-ui-checkbox.d.ts → index.d.ts} +0 -0
  52. package/collapse/collapse-panel.component.d.ts +1 -1
  53. package/collapse/collapse.component.d.ts +1 -1
  54. package/collapse/collapse.property.d.ts +2 -2
  55. package/collapse/{ng-nest-ui-collapse.d.ts → index.d.ts} +0 -0
  56. package/color/color.component.d.ts +1 -1
  57. package/color/color.property.d.ts +1 -1
  58. package/color/{ng-nest-ui-color.d.ts → index.d.ts} +0 -0
  59. package/color-picker/color-picker-portal.component.d.ts +1 -1
  60. package/color-picker/color-picker.component.d.ts +1 -1
  61. package/color-picker/color-picker.property.d.ts +1 -1
  62. package/color-picker/{ng-nest-ui-color-picker.d.ts → index.d.ts} +0 -0
  63. package/comment/comment-reply.component.d.ts +1 -1
  64. package/comment/comment.component.d.ts +1 -1
  65. package/comment/comment.property.d.ts +2 -2
  66. package/comment/{ng-nest-ui-comment.d.ts → index.d.ts} +0 -0
  67. package/container/aside.component.d.ts +1 -1
  68. package/container/container.component.d.ts +1 -1
  69. package/container/container.property.d.ts +4 -4
  70. package/container/footer.component.d.ts +1 -1
  71. package/container/header.component.d.ts +1 -1
  72. package/container/{ng-nest-ui-container.d.ts → index.d.ts} +0 -0
  73. package/container/main.component.d.ts +1 -1
  74. package/core/config/config.d.ts +3 -0
  75. package/core/config/config.service.d.ts +1 -1
  76. package/core/{ng-nest-ui-core.d.ts → index.d.ts} +0 -0
  77. package/crumb/crumb.component.d.ts +1 -1
  78. package/crumb/crumb.property.d.ts +1 -1
  79. package/crumb/{ng-nest-ui-crumb.d.ts → index.d.ts} +0 -0
  80. package/date-picker/date-picker-portal.component.d.ts +1 -1
  81. package/date-picker/date-picker.component.d.ts +1 -1
  82. package/date-picker/date-picker.property.d.ts +5 -5
  83. package/date-picker/date-range-portal.component.d.ts +1 -1
  84. package/date-picker/date-range.component.d.ts +1 -1
  85. package/date-picker/{ng-nest-ui-date-picker.d.ts → index.d.ts} +0 -0
  86. package/date-picker/picker-date.component.d.ts +1 -1
  87. package/date-picker/picker-month.component.d.ts +1 -1
  88. package/date-picker/picker-year.component.d.ts +1 -1
  89. package/description/description-item.component.d.ts +1 -1
  90. package/description/description.component.d.ts +1 -1
  91. package/description/description.property.d.ts +2 -2
  92. package/description/{ng-nest-ui-description.d.ts → index.d.ts} +0 -0
  93. package/dialog/dialog-container.component.d.ts +1 -1
  94. package/dialog/dialog-portal.component.d.ts +1 -1
  95. package/dialog/dialog-portal.directives.d.ts +6 -6
  96. package/dialog/dialog.component.d.ts +1 -1
  97. package/dialog/dialog.property.d.ts +2 -2
  98. package/dialog/{ng-nest-ui-dialog.d.ts → index.d.ts} +0 -0
  99. package/doc/doc.component.d.ts +1 -1
  100. package/doc/{ng-nest-ui-doc.d.ts → index.d.ts} +0 -0
  101. package/drawer/drawer-container.component.d.ts +1 -1
  102. package/drawer/drawer-portal.component.d.ts +1 -1
  103. package/drawer/drawer-portal.directives.d.ts +3 -3
  104. package/drawer/drawer.component.d.ts +1 -1
  105. package/drawer/drawer.property.d.ts +2 -2
  106. package/drawer/{ng-nest-ui-drawer.d.ts → index.d.ts} +0 -0
  107. package/dropdown/dropdown-portal.component.d.ts +1 -1
  108. package/dropdown/dropdown.component.d.ts +1 -1
  109. package/dropdown/dropdown.property.d.ts +1 -1
  110. package/dropdown/{ng-nest-ui-dropdown.d.ts → index.d.ts} +0 -0
  111. package/empty/empty.component.d.ts +1 -1
  112. package/empty/empty.property.d.ts +1 -1
  113. package/empty/{ng-nest-ui-empty.d.ts → index.d.ts} +0 -0
  114. package/esm2020/affix/affix.component.mjs +4 -4
  115. package/esm2020/affix/affix.module.mjs +5 -5
  116. package/esm2020/affix/affix.property.mjs +4 -4
  117. package/esm2020/alert/alert.component.mjs +10 -10
  118. package/esm2020/alert/alert.module.mjs +5 -5
  119. package/esm2020/alert/alert.property.mjs +4 -4
  120. package/esm2020/anchor/anchor.component.mjs +7 -7
  121. package/esm2020/anchor/anchor.module.mjs +5 -5
  122. package/esm2020/anchor/anchor.property.mjs +4 -4
  123. package/esm2020/api/api.component.mjs +4 -4
  124. package/esm2020/api/api.module.mjs +5 -5
  125. package/esm2020/auto-complete/auto-complete-portal.component.mjs +4 -4
  126. package/esm2020/auto-complete/auto-complete.component.mjs +11 -9
  127. package/esm2020/auto-complete/auto-complete.module.mjs +5 -5
  128. package/esm2020/auto-complete/auto-complete.property.mjs +4 -4
  129. package/esm2020/avatar/avatar.component.mjs +7 -7
  130. package/esm2020/avatar/avatar.module.mjs +5 -5
  131. package/esm2020/avatar/avatar.property.mjs +4 -4
  132. package/esm2020/back-top/back-top.component.mjs +6 -6
  133. package/esm2020/back-top/back-top.module.mjs +5 -5
  134. package/esm2020/back-top/back-top.property.mjs +4 -4
  135. package/esm2020/badge/badge.component.mjs +4 -4
  136. package/esm2020/badge/badge.module.mjs +5 -5
  137. package/esm2020/badge/badge.property.mjs +4 -4
  138. package/esm2020/base-form/base-form.component.mjs +4 -4
  139. package/esm2020/base-form/base-form.module.mjs +5 -5
  140. package/esm2020/base-form/base-form.property.mjs +4 -4
  141. package/esm2020/border/border.component.mjs +4 -4
  142. package/esm2020/border/border.module.mjs +5 -5
  143. package/esm2020/button/button.component.mjs +7 -7
  144. package/esm2020/button/button.module.mjs +5 -5
  145. package/esm2020/button/button.property.mjs +7 -7
  146. package/esm2020/button/buttons.component.mjs +4 -4
  147. package/esm2020/calendar/calendar.component.mjs +10 -10
  148. package/esm2020/calendar/calendar.module.mjs +5 -5
  149. package/esm2020/calendar/calendar.property.mjs +4 -4
  150. package/esm2020/card/card.component.mjs +4 -4
  151. package/esm2020/card/card.module.mjs +5 -5
  152. package/esm2020/card/card.property.mjs +4 -4
  153. package/esm2020/carousel/carousel-panel.component.mjs +4 -4
  154. package/esm2020/carousel/carousel.component.mjs +7 -7
  155. package/esm2020/carousel/carousel.module.mjs +5 -5
  156. package/esm2020/carousel/carousel.property.mjs +7 -7
  157. package/esm2020/cascade/cascade-portal.component.mjs +7 -7
  158. package/esm2020/cascade/cascade.component.mjs +10 -12
  159. package/esm2020/cascade/cascade.module.mjs +5 -5
  160. package/esm2020/cascade/cascade.property.mjs +4 -4
  161. package/esm2020/checkbox/checkbox.component.mjs +6 -6
  162. package/esm2020/checkbox/checkbox.module.mjs +5 -5
  163. package/esm2020/checkbox/checkbox.property.mjs +4 -4
  164. package/esm2020/collapse/collapse-panel.component.mjs +7 -7
  165. package/esm2020/collapse/collapse.component.mjs +4 -4
  166. package/esm2020/collapse/collapse.module.mjs +5 -5
  167. package/esm2020/collapse/collapse.property.mjs +7 -7
  168. package/esm2020/color/color.component.mjs +4 -4
  169. package/esm2020/color/color.module.mjs +5 -5
  170. package/esm2020/color/color.property.mjs +4 -4
  171. package/esm2020/color-picker/color-picker-portal.component.mjs +9 -9
  172. package/esm2020/color-picker/color-picker.component.mjs +7 -7
  173. package/esm2020/color-picker/color-picker.module.mjs +13 -15
  174. package/esm2020/color-picker/color-picker.property.mjs +4 -4
  175. package/esm2020/comment/comment-reply.component.mjs +7 -7
  176. package/esm2020/comment/comment.component.mjs +8 -8
  177. package/esm2020/comment/comment.module.mjs +13 -15
  178. package/esm2020/comment/comment.property.mjs +7 -7
  179. package/esm2020/container/aside.component.mjs +4 -4
  180. package/esm2020/container/container.component.mjs +4 -4
  181. package/esm2020/container/container.module.mjs +5 -5
  182. package/esm2020/container/container.property.mjs +13 -13
  183. package/esm2020/container/footer.component.mjs +4 -4
  184. package/esm2020/container/header.component.mjs +4 -4
  185. package/esm2020/container/main.component.mjs +4 -4
  186. package/esm2020/core/config/config.mjs +1 -1
  187. package/esm2020/core/config/config.service.mjs +4 -4
  188. package/esm2020/core/services/http.service.mjs +4 -4
  189. package/esm2020/core/services/preloading-strategy.service.mjs +4 -4
  190. package/esm2020/core/services/storage.service.mjs +4 -4
  191. package/esm2020/core/theme/theme.service.mjs +4 -4
  192. package/esm2020/crumb/crumb.component.mjs +6 -6
  193. package/esm2020/crumb/crumb.module.mjs +5 -5
  194. package/esm2020/crumb/crumb.property.mjs +4 -4
  195. package/esm2020/date-picker/date-picker-portal.component.mjs +8 -8
  196. package/esm2020/date-picker/date-picker.component.mjs +7 -7
  197. package/esm2020/date-picker/date-picker.module.mjs +14 -16
  198. package/esm2020/date-picker/date-picker.property.mjs +16 -16
  199. package/esm2020/date-picker/date-range-portal.component.mjs +6 -6
  200. package/esm2020/date-picker/date-range.component.mjs +7 -7
  201. package/esm2020/date-picker/picker-date.component.mjs +4 -4
  202. package/esm2020/date-picker/picker-month.component.mjs +4 -4
  203. package/esm2020/date-picker/picker-year.component.mjs +4 -4
  204. package/esm2020/description/description-item.component.mjs +4 -4
  205. package/esm2020/description/description.component.mjs +4 -4
  206. package/esm2020/description/description.module.mjs +5 -5
  207. package/esm2020/description/description.property.mjs +7 -7
  208. package/esm2020/dialog/dialog-container.component.mjs +4 -4
  209. package/esm2020/dialog/dialog-portal.component.mjs +6 -6
  210. package/esm2020/dialog/dialog-portal.directives.mjs +19 -19
  211. package/esm2020/dialog/dialog.component.mjs +6 -6
  212. package/esm2020/dialog/dialog.module.mjs +15 -17
  213. package/esm2020/dialog/dialog.property.mjs +7 -7
  214. package/esm2020/dialog/dialog.service.mjs +4 -4
  215. package/esm2020/doc/doc.component.mjs +4 -4
  216. package/esm2020/doc/doc.module.mjs +5 -5
  217. package/esm2020/drawer/drawer-container.component.mjs +6 -6
  218. package/esm2020/drawer/drawer-portal.component.mjs +4 -4
  219. package/esm2020/drawer/drawer-portal.directives.mjs +10 -10
  220. package/esm2020/drawer/drawer.component.mjs +7 -7
  221. package/esm2020/drawer/drawer.module.mjs +5 -5
  222. package/esm2020/drawer/drawer.property.mjs +7 -7
  223. package/esm2020/drawer/drawer.service.mjs +4 -4
  224. package/esm2020/dropdown/dropdown-portal.component.mjs +4 -4
  225. package/esm2020/dropdown/dropdown.component.mjs +4 -4
  226. package/esm2020/dropdown/dropdown.module.mjs +5 -5
  227. package/esm2020/dropdown/dropdown.property.mjs +4 -4
  228. package/esm2020/empty/empty.component.mjs +7 -7
  229. package/esm2020/empty/empty.module.mjs +5 -5
  230. package/esm2020/empty/empty.property.mjs +4 -4
  231. package/esm2020/examples/examples.component.mjs +4 -4
  232. package/esm2020/examples/examples.module.mjs +5 -5
  233. package/esm2020/find/find.component.mjs +12 -12
  234. package/esm2020/find/find.module.mjs +16 -18
  235. package/esm2020/find/find.property.mjs +4 -4
  236. package/esm2020/form/control.component.mjs +25 -24
  237. package/esm2020/form/form.component.mjs +11 -10
  238. package/esm2020/form/form.module.mjs +5 -5
  239. package/esm2020/form/form.property.mjs +10 -10
  240. package/esm2020/highlight/highlight.component.mjs +4 -4
  241. package/esm2020/highlight/highlight.module.mjs +5 -5
  242. package/esm2020/highlight/highlight.property.mjs +4 -4
  243. package/esm2020/i18n/i18n.directive.mjs +4 -4
  244. package/esm2020/i18n/i18n.module.mjs +5 -5
  245. package/esm2020/i18n/i18n.pipe.mjs +4 -4
  246. package/esm2020/i18n/i18n.service.mjs +4 -4
  247. package/esm2020/icon/icon.component.mjs +9 -5
  248. package/esm2020/icon/icon.module.mjs +5 -5
  249. package/esm2020/icon/icon.property.mjs +4 -4
  250. package/esm2020/icon/icon.service.mjs +4 -4
  251. package/esm2020/inner/inner.component.mjs +4 -4
  252. package/esm2020/inner/inner.module.mjs +5 -5
  253. package/esm2020/inner/inner.property.mjs +4 -4
  254. package/esm2020/input/input-group.component.mjs +4 -4
  255. package/esm2020/input/input.component.mjs +11 -10
  256. package/esm2020/input/input.module.mjs +5 -5
  257. package/esm2020/input/input.property.mjs +14 -7
  258. package/esm2020/input-number/input-number.component.mjs +9 -9
  259. package/esm2020/input-number/input-number.module.mjs +5 -5
  260. package/esm2020/input-number/input-number.property.mjs +4 -4
  261. package/esm2020/layout/col.component.mjs +4 -4
  262. package/esm2020/layout/layout.module.mjs +5 -5
  263. package/esm2020/layout/layout.property.mjs +7 -7
  264. package/esm2020/layout/row.component.mjs +4 -4
  265. package/esm2020/link/link.component.mjs +6 -6
  266. package/esm2020/link/link.module.mjs +5 -5
  267. package/esm2020/link/link.property.mjs +4 -4
  268. package/esm2020/list/list-option.component.mjs +6 -6
  269. package/esm2020/list/list.component.mjs +11 -11
  270. package/esm2020/list/list.module.mjs +14 -16
  271. package/esm2020/list/list.property.mjs +7 -7
  272. package/esm2020/loading/loading.component.mjs +6 -6
  273. package/esm2020/loading/loading.module.mjs +5 -5
  274. package/esm2020/loading/loading.property.mjs +4 -4
  275. package/esm2020/menu/menu-node.component.mjs +7 -7
  276. package/esm2020/menu/menu.component.mjs +7 -7
  277. package/esm2020/menu/menu.module.mjs +5 -5
  278. package/esm2020/menu/menu.property.mjs +7 -7
  279. package/esm2020/message/message.component.mjs +6 -6
  280. package/esm2020/message/message.module.mjs +5 -5
  281. package/esm2020/message/message.service.mjs +4 -4
  282. package/esm2020/message-box/message-box.component.mjs +13 -13
  283. package/esm2020/message-box/message-box.module.mjs +13 -15
  284. package/esm2020/message-box/message-box.service.mjs +4 -4
  285. package/esm2020/notification/notification.component.mjs +6 -6
  286. package/esm2020/notification/notification.module.mjs +5 -5
  287. package/esm2020/notification/notification.service.mjs +4 -4
  288. package/esm2020/outlet/outlet.directive.mjs +4 -4
  289. package/esm2020/outlet/outlet.module.mjs +5 -5
  290. package/esm2020/page-header/page-header.component.mjs +6 -6
  291. package/esm2020/page-header/page-header.module.mjs +5 -5
  292. package/esm2020/page-header/page-header.property.mjs +4 -4
  293. package/esm2020/pagination/pagination.component.mjs +10 -10
  294. package/esm2020/pagination/pagination.module.mjs +5 -5
  295. package/esm2020/pagination/pagination.property.mjs +4 -4
  296. package/esm2020/pattern/pattern.component.mjs +4 -4
  297. package/esm2020/pattern/pattern.module.mjs +5 -5
  298. package/esm2020/popconfirm/popconfirm.component.mjs +9 -9
  299. package/esm2020/popconfirm/popconfirm.module.mjs +5 -5
  300. package/esm2020/popconfirm/popconfirm.property.mjs +4 -4
  301. package/esm2020/popover/popover-portal.component.mjs +4 -4
  302. package/esm2020/popover/popover.directive.mjs +4 -4
  303. package/esm2020/popover/popover.module.mjs +5 -5
  304. package/esm2020/popover/popover.property.mjs +4 -4
  305. package/esm2020/portal/portal.module.mjs +5 -5
  306. package/esm2020/portal/portal.service.mjs +4 -4
  307. package/esm2020/progress/progress.component.mjs +6 -6
  308. package/esm2020/progress/progress.module.mjs +5 -5
  309. package/esm2020/progress/progress.property.mjs +4 -4
  310. package/esm2020/radio/radio.component.mjs +6 -6
  311. package/esm2020/radio/radio.module.mjs +5 -5
  312. package/esm2020/radio/radio.property.mjs +4 -4
  313. package/esm2020/rate/rate.component.mjs +6 -6
  314. package/esm2020/rate/rate.module.mjs +5 -5
  315. package/esm2020/rate/rate.property.mjs +4 -4
  316. package/esm2020/resizable/resizable.directive.mjs +4 -4
  317. package/esm2020/resizable/resizable.module.mjs +5 -5
  318. package/esm2020/resizable/resizable.property.mjs +4 -4
  319. package/esm2020/result/result.component.mjs +6 -6
  320. package/esm2020/result/result.module.mjs +5 -5
  321. package/esm2020/result/result.property.mjs +4 -4
  322. package/esm2020/ripple/ripple.directive.mjs +4 -4
  323. package/esm2020/ripple/ripple.module.mjs +5 -5
  324. package/esm2020/ripple/ripple.property.mjs +4 -4
  325. package/esm2020/select/select-portal.component.mjs +14 -7
  326. package/esm2020/select/select.component.mjs +85 -24
  327. package/esm2020/select/select.module.mjs +5 -5
  328. package/esm2020/select/select.property.mjs +21 -4
  329. package/esm2020/skeleton/skeleton.component.mjs +6 -6
  330. package/esm2020/skeleton/skeleton.module.mjs +5 -5
  331. package/esm2020/skeleton/skeleton.property.mjs +4 -4
  332. package/esm2020/slider/slider.component.mjs +6 -6
  333. package/esm2020/slider/slider.module.mjs +5 -5
  334. package/esm2020/slider/slider.property.mjs +4 -4
  335. package/esm2020/slider-select/slider-select.component.mjs +5 -5
  336. package/esm2020/slider-select/slider-select.module.mjs +5 -5
  337. package/esm2020/slider-select/slider-select.property.mjs +4 -4
  338. package/esm2020/statistic/countdown.component.mjs +5 -5
  339. package/esm2020/statistic/statistic.component.mjs +6 -6
  340. package/esm2020/statistic/statistic.module.mjs +5 -5
  341. package/esm2020/statistic/statistic.property.mjs +7 -7
  342. package/esm2020/steps/steps.component.mjs +6 -6
  343. package/esm2020/steps/steps.module.mjs +5 -5
  344. package/esm2020/steps/steps.property.mjs +4 -4
  345. package/esm2020/switch/switch.component.mjs +4 -4
  346. package/esm2020/switch/switch.module.mjs +5 -5
  347. package/esm2020/switch/switch.property.mjs +4 -4
  348. package/esm2020/table/drag.directive.mjs +4 -4
  349. package/esm2020/table/table-body.component.mjs +16 -12
  350. package/esm2020/table/table-foot.component.mjs +9 -5
  351. package/esm2020/table/table-head.component.mjs +30 -14
  352. package/esm2020/table/table.component.mjs +41 -12
  353. package/esm2020/table/table.module.mjs +14 -16
  354. package/esm2020/table/table.property.mjs +22 -14
  355. package/esm2020/tabs/tab-content.component.mjs +4 -4
  356. package/esm2020/tabs/tab.component.mjs +4 -4
  357. package/esm2020/tabs/tabs.component.mjs +7 -7
  358. package/esm2020/tabs/tabs.module.mjs +5 -5
  359. package/esm2020/tabs/tabs.property.mjs +7 -7
  360. package/esm2020/tag/tag.component.mjs +6 -6
  361. package/esm2020/tag/tag.module.mjs +5 -5
  362. package/esm2020/tag/tag.property.mjs +4 -4
  363. package/esm2020/text-retract/text-retract.component.mjs +6 -6
  364. package/esm2020/text-retract/text-retract.module.mjs +5 -5
  365. package/esm2020/text-retract/text-retract.property.mjs +4 -4
  366. package/esm2020/textarea/textarea.component.mjs +8 -8
  367. package/esm2020/textarea/textarea.module.mjs +5 -5
  368. package/esm2020/textarea/textarea.property.mjs +4 -4
  369. package/esm2020/theme/theme.component.mjs +12 -12
  370. package/esm2020/theme/theme.module.mjs +13 -15
  371. package/esm2020/theme/theme.property.mjs +4 -4
  372. package/esm2020/time-ago/time-ago.module.mjs +5 -5
  373. package/esm2020/time-ago/time-ago.pipe.mjs +4 -4
  374. package/esm2020/time-picker/time-picker-frame.component.mjs +6 -6
  375. package/esm2020/time-picker/time-picker-portal.component.mjs +4 -4
  376. package/esm2020/time-picker/time-picker.component.mjs +7 -7
  377. package/esm2020/time-picker/time-picker.module.mjs +13 -15
  378. package/esm2020/time-picker/time-picker.property.mjs +4 -4
  379. package/esm2020/time-range/time-range.module.mjs +5 -5
  380. package/esm2020/time-range/time-range.pipe.mjs +4 -4
  381. package/esm2020/timeline/timeline.component.mjs +7 -7
  382. package/esm2020/timeline/timeline.module.mjs +5 -5
  383. package/esm2020/timeline/timeline.property.mjs +4 -4
  384. package/esm2020/tooltip/tooltip-portal.component.mjs +4 -4
  385. package/esm2020/tooltip/tooltip.directive.mjs +4 -4
  386. package/esm2020/tooltip/tooltip.module.mjs +5 -5
  387. package/esm2020/tooltip/tooltip.property.mjs +4 -4
  388. package/esm2020/transfer/transfer.component.mjs +9 -9
  389. package/esm2020/transfer/transfer.module.mjs +5 -5
  390. package/esm2020/transfer/transfer.property.mjs +4 -4
  391. package/esm2020/tree/tree-node.component.mjs +12 -78
  392. package/esm2020/tree/tree.component.mjs +130 -30
  393. package/esm2020/tree/tree.module.mjs +5 -5
  394. package/esm2020/tree/tree.property.mjs +7 -7
  395. package/esm2020/tree-file/tree-file.component.mjs +8 -8
  396. package/esm2020/tree-file/tree-file.module.mjs +5 -5
  397. package/esm2020/tree-file/tree-file.property.mjs +4 -4
  398. package/esm2020/typography/typography.component.mjs +4 -4
  399. package/esm2020/typography/typography.module.mjs +5 -5
  400. package/esm2020/typography/typography.property.mjs +4 -4
  401. package/esm2020/upload/upload-portal.component.mjs +5 -5
  402. package/esm2020/upload/upload.component.mjs +8 -8
  403. package/esm2020/upload/upload.module.mjs +14 -16
  404. package/esm2020/upload/upload.property.mjs +4 -4
  405. package/examples/examples.component.d.ts +1 -1
  406. package/examples/{ng-nest-ui-examples.d.ts → index.d.ts} +0 -0
  407. package/fesm2015/ng-nest-ui-affix.mjs +10 -10
  408. package/fesm2015/ng-nest-ui-affix.mjs.map +1 -1
  409. package/fesm2015/ng-nest-ui-alert.mjs +19 -19
  410. package/fesm2015/ng-nest-ui-alert.mjs.map +1 -1
  411. package/fesm2015/ng-nest-ui-anchor.mjs +13 -13
  412. package/fesm2015/ng-nest-ui-anchor.mjs.map +1 -1
  413. package/fesm2015/ng-nest-ui-api.mjs +7 -7
  414. package/fesm2015/ng-nest-ui-api.mjs.map +1 -1
  415. package/fesm2015/ng-nest-ui-auto-complete.mjs +21 -19
  416. package/fesm2015/ng-nest-ui-auto-complete.mjs.map +1 -1
  417. package/fesm2015/ng-nest-ui-avatar.mjs +14 -14
  418. package/fesm2015/ng-nest-ui-avatar.mjs.map +1 -1
  419. package/fesm2015/ng-nest-ui-back-top.mjs +12 -12
  420. package/fesm2015/ng-nest-ui-back-top.mjs.map +1 -1
  421. package/fesm2015/ng-nest-ui-badge.mjs +10 -10
  422. package/fesm2015/ng-nest-ui-badge.mjs.map +1 -1
  423. package/fesm2015/ng-nest-ui-base-form.mjs +10 -10
  424. package/fesm2015/ng-nest-ui-base-form.mjs.map +1 -1
  425. package/fesm2015/ng-nest-ui-border.mjs +7 -7
  426. package/fesm2015/ng-nest-ui-border.mjs.map +1 -1
  427. package/fesm2015/ng-nest-ui-button.mjs +20 -20
  428. package/fesm2015/ng-nest-ui-button.mjs.map +1 -1
  429. package/fesm2015/ng-nest-ui-calendar.mjs +20 -20
  430. package/fesm2015/ng-nest-ui-calendar.mjs.map +1 -1
  431. package/fesm2015/ng-nest-ui-card.mjs +10 -10
  432. package/fesm2015/ng-nest-ui-card.mjs.map +1 -1
  433. package/fesm2015/ng-nest-ui-carousel.mjs +20 -20
  434. package/fesm2015/ng-nest-ui-carousel.mjs.map +1 -1
  435. package/fesm2015/ng-nest-ui-cascade.mjs +22 -24
  436. package/fesm2015/ng-nest-ui-cascade.mjs.map +1 -1
  437. package/fesm2015/ng-nest-ui-checkbox.mjs +13 -13
  438. package/fesm2015/ng-nest-ui-checkbox.mjs.map +1 -1
  439. package/fesm2015/ng-nest-ui-collapse.mjs +20 -20
  440. package/fesm2015/ng-nest-ui-collapse.mjs.map +1 -1
  441. package/fesm2015/ng-nest-ui-color-picker.mjs +31 -33
  442. package/fesm2015/ng-nest-ui-color-picker.mjs.map +1 -1
  443. package/fesm2015/ng-nest-ui-color.mjs +10 -10
  444. package/fesm2015/ng-nest-ui-color.mjs.map +1 -1
  445. package/fesm2015/ng-nest-ui-comment.mjs +34 -36
  446. package/fesm2015/ng-nest-ui-comment.mjs.map +1 -1
  447. package/fesm2015/ng-nest-ui-container.mjs +31 -31
  448. package/fesm2015/ng-nest-ui-container.mjs.map +1 -1
  449. package/fesm2015/ng-nest-ui-core.mjs +15 -15
  450. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  451. package/fesm2015/ng-nest-ui-crumb.mjs +13 -13
  452. package/fesm2015/ng-nest-ui-crumb.mjs.map +1 -1
  453. package/fesm2015/ng-nest-ui-date-picker.mjs +56 -58
  454. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  455. package/fesm2015/ng-nest-ui-description.mjs +16 -16
  456. package/fesm2015/ng-nest-ui-description.mjs.map +1 -1
  457. package/fesm2015/ng-nest-ui-dialog.mjs +55 -57
  458. package/fesm2015/ng-nest-ui-dialog.mjs.map +1 -1
  459. package/fesm2015/ng-nest-ui-doc.mjs +7 -7
  460. package/fesm2015/ng-nest-ui-doc.mjs.map +1 -1
  461. package/fesm2015/ng-nest-ui-drawer.mjs +37 -37
  462. package/fesm2015/ng-nest-ui-drawer.mjs.map +1 -1
  463. package/fesm2015/ng-nest-ui-dropdown.mjs +13 -13
  464. package/fesm2015/ng-nest-ui-dropdown.mjs.map +1 -1
  465. package/fesm2015/ng-nest-ui-empty.mjs +14 -14
  466. package/fesm2015/ng-nest-ui-empty.mjs.map +1 -1
  467. package/fesm2015/ng-nest-ui-examples.mjs +7 -7
  468. package/fesm2015/ng-nest-ui-examples.mjs.map +1 -1
  469. package/fesm2015/ng-nest-ui-find.mjs +35 -37
  470. package/fesm2015/ng-nest-ui-find.mjs.map +1 -1
  471. package/fesm2015/ng-nest-ui-form.mjs +47 -45
  472. package/fesm2015/ng-nest-ui-form.mjs.map +1 -1
  473. package/fesm2015/ng-nest-ui-highlight.mjs +10 -10
  474. package/fesm2015/ng-nest-ui-highlight.mjs.map +1 -1
  475. package/fesm2015/ng-nest-ui-i18n.mjs +13 -13
  476. package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
  477. package/fesm2015/ng-nest-ui-icon.mjs +18 -14
  478. package/fesm2015/ng-nest-ui-icon.mjs.map +1 -1
  479. package/fesm2015/ng-nest-ui-inner.mjs +10 -10
  480. package/fesm2015/ng-nest-ui-inner.mjs.map +1 -1
  481. package/fesm2015/ng-nest-ui-input-number.mjs +18 -18
  482. package/fesm2015/ng-nest-ui-input-number.mjs.map +1 -1
  483. package/fesm2015/ng-nest-ui-input.mjs +32 -24
  484. package/fesm2015/ng-nest-ui-input.mjs.map +1 -1
  485. package/fesm2015/ng-nest-ui-layout.mjs +16 -16
  486. package/fesm2015/ng-nest-ui-layout.mjs.map +1 -1
  487. package/fesm2015/ng-nest-ui-link.mjs +13 -13
  488. package/fesm2015/ng-nest-ui-link.mjs.map +1 -1
  489. package/fesm2015/ng-nest-ui-list.mjs +33 -35
  490. package/fesm2015/ng-nest-ui-list.mjs.map +1 -1
  491. package/fesm2015/ng-nest-ui-loading.mjs +13 -13
  492. package/fesm2015/ng-nest-ui-loading.mjs.map +1 -1
  493. package/fesm2015/ng-nest-ui-menu.mjs +23 -23
  494. package/fesm2015/ng-nest-ui-menu.mjs.map +1 -1
  495. package/fesm2015/ng-nest-ui-message-box.mjs +29 -31
  496. package/fesm2015/ng-nest-ui-message-box.mjs.map +1 -1
  497. package/fesm2015/ng-nest-ui-message.mjs +13 -13
  498. package/fesm2015/ng-nest-ui-message.mjs.map +1 -1
  499. package/fesm2015/ng-nest-ui-notification.mjs +13 -13
  500. package/fesm2015/ng-nest-ui-notification.mjs.map +1 -1
  501. package/fesm2015/ng-nest-ui-outlet.mjs +7 -7
  502. package/fesm2015/ng-nest-ui-outlet.mjs.map +1 -1
  503. package/fesm2015/ng-nest-ui-page-header.mjs +13 -13
  504. package/fesm2015/ng-nest-ui-page-header.mjs.map +1 -1
  505. package/fesm2015/ng-nest-ui-pagination.mjs +19 -19
  506. package/fesm2015/ng-nest-ui-pagination.mjs.map +1 -1
  507. package/fesm2015/ng-nest-ui-pattern.mjs +7 -7
  508. package/fesm2015/ng-nest-ui-pattern.mjs.map +1 -1
  509. package/fesm2015/ng-nest-ui-popconfirm.mjs +18 -18
  510. package/fesm2015/ng-nest-ui-popconfirm.mjs.map +1 -1
  511. package/fesm2015/ng-nest-ui-popover.mjs +13 -13
  512. package/fesm2015/ng-nest-ui-popover.mjs.map +1 -1
  513. package/fesm2015/ng-nest-ui-portal.mjs +7 -7
  514. package/fesm2015/ng-nest-ui-portal.mjs.map +1 -1
  515. package/fesm2015/ng-nest-ui-progress.mjs +13 -13
  516. package/fesm2015/ng-nest-ui-progress.mjs.map +1 -1
  517. package/fesm2015/ng-nest-ui-radio.mjs +13 -13
  518. package/fesm2015/ng-nest-ui-radio.mjs.map +1 -1
  519. package/fesm2015/ng-nest-ui-rate.mjs +13 -13
  520. package/fesm2015/ng-nest-ui-rate.mjs.map +1 -1
  521. package/fesm2015/ng-nest-ui-resizable.mjs +10 -10
  522. package/fesm2015/ng-nest-ui-resizable.mjs.map +1 -1
  523. package/fesm2015/ng-nest-ui-result.mjs +13 -13
  524. package/fesm2015/ng-nest-ui-result.mjs.map +1 -1
  525. package/fesm2015/ng-nest-ui-ripple.mjs +10 -10
  526. package/fesm2015/ng-nest-ui-ripple.mjs.map +1 -1
  527. package/fesm2015/ng-nest-ui-select.mjs +123 -38
  528. package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
  529. package/fesm2015/ng-nest-ui-skeleton.mjs +13 -13
  530. package/fesm2015/ng-nest-ui-skeleton.mjs.map +1 -1
  531. package/fesm2015/ng-nest-ui-slider-select.mjs +11 -11
  532. package/fesm2015/ng-nest-ui-slider-select.mjs.map +1 -1
  533. package/fesm2015/ng-nest-ui-slider.mjs +13 -13
  534. package/fesm2015/ng-nest-ui-slider.mjs.map +1 -1
  535. package/fesm2015/ng-nest-ui-statistic.mjs +20 -20
  536. package/fesm2015/ng-nest-ui-statistic.mjs.map +1 -1
  537. package/fesm2015/ng-nest-ui-steps.mjs +13 -13
  538. package/fesm2015/ng-nest-ui-steps.mjs.map +1 -1
  539. package/fesm2015/ng-nest-ui-switch.mjs +10 -10
  540. package/fesm2015/ng-nest-ui-switch.mjs.map +1 -1
  541. package/fesm2015/ng-nest-ui-table.mjs +127 -70
  542. package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
  543. package/fesm2015/ng-nest-ui-tabs.mjs +21 -21
  544. package/fesm2015/ng-nest-ui-tabs.mjs.map +1 -1
  545. package/fesm2015/ng-nest-ui-tag.mjs +13 -13
  546. package/fesm2015/ng-nest-ui-tag.mjs.map +1 -1
  547. package/fesm2015/ng-nest-ui-text-retract.mjs +13 -13
  548. package/fesm2015/ng-nest-ui-text-retract.mjs.map +1 -1
  549. package/fesm2015/ng-nest-ui-textarea.mjs +15 -15
  550. package/fesm2015/ng-nest-ui-textarea.mjs.map +1 -1
  551. package/fesm2015/ng-nest-ui-theme.mjs +28 -30
  552. package/fesm2015/ng-nest-ui-theme.mjs.map +1 -1
  553. package/fesm2015/ng-nest-ui-time-ago.mjs +7 -7
  554. package/fesm2015/ng-nest-ui-time-ago.mjs.map +1 -1
  555. package/fesm2015/ng-nest-ui-time-picker.mjs +32 -34
  556. package/fesm2015/ng-nest-ui-time-picker.mjs.map +1 -1
  557. package/fesm2015/ng-nest-ui-time-range.mjs +7 -7
  558. package/fesm2015/ng-nest-ui-time-range.mjs.map +1 -1
  559. package/fesm2015/ng-nest-ui-timeline.mjs +14 -14
  560. package/fesm2015/ng-nest-ui-timeline.mjs.map +1 -1
  561. package/fesm2015/ng-nest-ui-tooltip.mjs +13 -13
  562. package/fesm2015/ng-nest-ui-tooltip.mjs.map +1 -1
  563. package/fesm2015/ng-nest-ui-transfer.mjs +17 -17
  564. package/fesm2015/ng-nest-ui-transfer.mjs.map +1 -1
  565. package/fesm2015/ng-nest-ui-tree-file.mjs +16 -16
  566. package/fesm2015/ng-nest-ui-tree-file.mjs.map +1 -1
  567. package/fesm2015/ng-nest-ui-tree.mjs +151 -117
  568. package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
  569. package/fesm2015/ng-nest-ui-typography.mjs +10 -10
  570. package/fesm2015/ng-nest-ui-typography.mjs.map +1 -1
  571. package/fesm2015/ng-nest-ui-upload.mjs +27 -29
  572. package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
  573. package/fesm2020/ng-nest-ui-affix.mjs +10 -10
  574. package/fesm2020/ng-nest-ui-affix.mjs.map +1 -1
  575. package/fesm2020/ng-nest-ui-alert.mjs +19 -19
  576. package/fesm2020/ng-nest-ui-alert.mjs.map +1 -1
  577. package/fesm2020/ng-nest-ui-anchor.mjs +13 -13
  578. package/fesm2020/ng-nest-ui-anchor.mjs.map +1 -1
  579. package/fesm2020/ng-nest-ui-api.mjs +7 -7
  580. package/fesm2020/ng-nest-ui-api.mjs.map +1 -1
  581. package/fesm2020/ng-nest-ui-auto-complete.mjs +21 -19
  582. package/fesm2020/ng-nest-ui-auto-complete.mjs.map +1 -1
  583. package/fesm2020/ng-nest-ui-avatar.mjs +14 -14
  584. package/fesm2020/ng-nest-ui-avatar.mjs.map +1 -1
  585. package/fesm2020/ng-nest-ui-back-top.mjs +12 -12
  586. package/fesm2020/ng-nest-ui-back-top.mjs.map +1 -1
  587. package/fesm2020/ng-nest-ui-badge.mjs +10 -10
  588. package/fesm2020/ng-nest-ui-badge.mjs.map +1 -1
  589. package/fesm2020/ng-nest-ui-base-form.mjs +10 -10
  590. package/fesm2020/ng-nest-ui-base-form.mjs.map +1 -1
  591. package/fesm2020/ng-nest-ui-border.mjs +7 -7
  592. package/fesm2020/ng-nest-ui-border.mjs.map +1 -1
  593. package/fesm2020/ng-nest-ui-button.mjs +20 -20
  594. package/fesm2020/ng-nest-ui-button.mjs.map +1 -1
  595. package/fesm2020/ng-nest-ui-calendar.mjs +20 -20
  596. package/fesm2020/ng-nest-ui-calendar.mjs.map +1 -1
  597. package/fesm2020/ng-nest-ui-card.mjs +10 -10
  598. package/fesm2020/ng-nest-ui-card.mjs.map +1 -1
  599. package/fesm2020/ng-nest-ui-carousel.mjs +20 -20
  600. package/fesm2020/ng-nest-ui-carousel.mjs.map +1 -1
  601. package/fesm2020/ng-nest-ui-cascade.mjs +22 -24
  602. package/fesm2020/ng-nest-ui-cascade.mjs.map +1 -1
  603. package/fesm2020/ng-nest-ui-checkbox.mjs +13 -13
  604. package/fesm2020/ng-nest-ui-checkbox.mjs.map +1 -1
  605. package/fesm2020/ng-nest-ui-collapse.mjs +20 -20
  606. package/fesm2020/ng-nest-ui-collapse.mjs.map +1 -1
  607. package/fesm2020/ng-nest-ui-color-picker.mjs +31 -33
  608. package/fesm2020/ng-nest-ui-color-picker.mjs.map +1 -1
  609. package/fesm2020/ng-nest-ui-color.mjs +10 -10
  610. package/fesm2020/ng-nest-ui-color.mjs.map +1 -1
  611. package/fesm2020/ng-nest-ui-comment.mjs +34 -36
  612. package/fesm2020/ng-nest-ui-comment.mjs.map +1 -1
  613. package/fesm2020/ng-nest-ui-container.mjs +31 -31
  614. package/fesm2020/ng-nest-ui-container.mjs.map +1 -1
  615. package/fesm2020/ng-nest-ui-core.mjs +15 -15
  616. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  617. package/fesm2020/ng-nest-ui-crumb.mjs +13 -13
  618. package/fesm2020/ng-nest-ui-crumb.mjs.map +1 -1
  619. package/fesm2020/ng-nest-ui-date-picker.mjs +56 -58
  620. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  621. package/fesm2020/ng-nest-ui-description.mjs +16 -16
  622. package/fesm2020/ng-nest-ui-description.mjs.map +1 -1
  623. package/fesm2020/ng-nest-ui-dialog.mjs +55 -57
  624. package/fesm2020/ng-nest-ui-dialog.mjs.map +1 -1
  625. package/fesm2020/ng-nest-ui-doc.mjs +7 -7
  626. package/fesm2020/ng-nest-ui-doc.mjs.map +1 -1
  627. package/fesm2020/ng-nest-ui-drawer.mjs +37 -37
  628. package/fesm2020/ng-nest-ui-drawer.mjs.map +1 -1
  629. package/fesm2020/ng-nest-ui-dropdown.mjs +13 -13
  630. package/fesm2020/ng-nest-ui-dropdown.mjs.map +1 -1
  631. package/fesm2020/ng-nest-ui-empty.mjs +14 -14
  632. package/fesm2020/ng-nest-ui-empty.mjs.map +1 -1
  633. package/fesm2020/ng-nest-ui-examples.mjs +7 -7
  634. package/fesm2020/ng-nest-ui-examples.mjs.map +1 -1
  635. package/fesm2020/ng-nest-ui-find.mjs +35 -37
  636. package/fesm2020/ng-nest-ui-find.mjs.map +1 -1
  637. package/fesm2020/ng-nest-ui-form.mjs +47 -45
  638. package/fesm2020/ng-nest-ui-form.mjs.map +1 -1
  639. package/fesm2020/ng-nest-ui-highlight.mjs +10 -10
  640. package/fesm2020/ng-nest-ui-highlight.mjs.map +1 -1
  641. package/fesm2020/ng-nest-ui-i18n.mjs +13 -13
  642. package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
  643. package/fesm2020/ng-nest-ui-icon.mjs +18 -14
  644. package/fesm2020/ng-nest-ui-icon.mjs.map +1 -1
  645. package/fesm2020/ng-nest-ui-inner.mjs +10 -10
  646. package/fesm2020/ng-nest-ui-inner.mjs.map +1 -1
  647. package/fesm2020/ng-nest-ui-input-number.mjs +18 -18
  648. package/fesm2020/ng-nest-ui-input-number.mjs.map +1 -1
  649. package/fesm2020/ng-nest-ui-input.mjs +32 -24
  650. package/fesm2020/ng-nest-ui-input.mjs.map +1 -1
  651. package/fesm2020/ng-nest-ui-layout.mjs +16 -16
  652. package/fesm2020/ng-nest-ui-layout.mjs.map +1 -1
  653. package/fesm2020/ng-nest-ui-link.mjs +13 -13
  654. package/fesm2020/ng-nest-ui-link.mjs.map +1 -1
  655. package/fesm2020/ng-nest-ui-list.mjs +33 -35
  656. package/fesm2020/ng-nest-ui-list.mjs.map +1 -1
  657. package/fesm2020/ng-nest-ui-loading.mjs +13 -13
  658. package/fesm2020/ng-nest-ui-loading.mjs.map +1 -1
  659. package/fesm2020/ng-nest-ui-menu.mjs +23 -23
  660. package/fesm2020/ng-nest-ui-menu.mjs.map +1 -1
  661. package/fesm2020/ng-nest-ui-message-box.mjs +29 -31
  662. package/fesm2020/ng-nest-ui-message-box.mjs.map +1 -1
  663. package/fesm2020/ng-nest-ui-message.mjs +13 -13
  664. package/fesm2020/ng-nest-ui-message.mjs.map +1 -1
  665. package/fesm2020/ng-nest-ui-notification.mjs +13 -13
  666. package/fesm2020/ng-nest-ui-notification.mjs.map +1 -1
  667. package/fesm2020/ng-nest-ui-outlet.mjs +7 -7
  668. package/fesm2020/ng-nest-ui-outlet.mjs.map +1 -1
  669. package/fesm2020/ng-nest-ui-page-header.mjs +13 -13
  670. package/fesm2020/ng-nest-ui-page-header.mjs.map +1 -1
  671. package/fesm2020/ng-nest-ui-pagination.mjs +19 -19
  672. package/fesm2020/ng-nest-ui-pagination.mjs.map +1 -1
  673. package/fesm2020/ng-nest-ui-pattern.mjs +7 -7
  674. package/fesm2020/ng-nest-ui-pattern.mjs.map +1 -1
  675. package/fesm2020/ng-nest-ui-popconfirm.mjs +18 -18
  676. package/fesm2020/ng-nest-ui-popconfirm.mjs.map +1 -1
  677. package/fesm2020/ng-nest-ui-popover.mjs +13 -13
  678. package/fesm2020/ng-nest-ui-popover.mjs.map +1 -1
  679. package/fesm2020/ng-nest-ui-portal.mjs +7 -7
  680. package/fesm2020/ng-nest-ui-portal.mjs.map +1 -1
  681. package/fesm2020/ng-nest-ui-progress.mjs +13 -13
  682. package/fesm2020/ng-nest-ui-progress.mjs.map +1 -1
  683. package/fesm2020/ng-nest-ui-radio.mjs +13 -13
  684. package/fesm2020/ng-nest-ui-radio.mjs.map +1 -1
  685. package/fesm2020/ng-nest-ui-rate.mjs +13 -13
  686. package/fesm2020/ng-nest-ui-rate.mjs.map +1 -1
  687. package/fesm2020/ng-nest-ui-resizable.mjs +10 -10
  688. package/fesm2020/ng-nest-ui-resizable.mjs.map +1 -1
  689. package/fesm2020/ng-nest-ui-result.mjs +13 -13
  690. package/fesm2020/ng-nest-ui-result.mjs.map +1 -1
  691. package/fesm2020/ng-nest-ui-ripple.mjs +10 -10
  692. package/fesm2020/ng-nest-ui-ripple.mjs.map +1 -1
  693. package/fesm2020/ng-nest-ui-select.mjs +123 -38
  694. package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
  695. package/fesm2020/ng-nest-ui-skeleton.mjs +13 -13
  696. package/fesm2020/ng-nest-ui-skeleton.mjs.map +1 -1
  697. package/fesm2020/ng-nest-ui-slider-select.mjs +11 -11
  698. package/fesm2020/ng-nest-ui-slider-select.mjs.map +1 -1
  699. package/fesm2020/ng-nest-ui-slider.mjs +13 -13
  700. package/fesm2020/ng-nest-ui-slider.mjs.map +1 -1
  701. package/fesm2020/ng-nest-ui-statistic.mjs +20 -20
  702. package/fesm2020/ng-nest-ui-statistic.mjs.map +1 -1
  703. package/fesm2020/ng-nest-ui-steps.mjs +13 -13
  704. package/fesm2020/ng-nest-ui-steps.mjs.map +1 -1
  705. package/fesm2020/ng-nest-ui-switch.mjs +10 -10
  706. package/fesm2020/ng-nest-ui-switch.mjs.map +1 -1
  707. package/fesm2020/ng-nest-ui-table.mjs +123 -66
  708. package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
  709. package/fesm2020/ng-nest-ui-tabs.mjs +21 -21
  710. package/fesm2020/ng-nest-ui-tabs.mjs.map +1 -1
  711. package/fesm2020/ng-nest-ui-tag.mjs +13 -13
  712. package/fesm2020/ng-nest-ui-tag.mjs.map +1 -1
  713. package/fesm2020/ng-nest-ui-text-retract.mjs +13 -13
  714. package/fesm2020/ng-nest-ui-text-retract.mjs.map +1 -1
  715. package/fesm2020/ng-nest-ui-textarea.mjs +15 -15
  716. package/fesm2020/ng-nest-ui-textarea.mjs.map +1 -1
  717. package/fesm2020/ng-nest-ui-theme.mjs +28 -30
  718. package/fesm2020/ng-nest-ui-theme.mjs.map +1 -1
  719. package/fesm2020/ng-nest-ui-time-ago.mjs +7 -7
  720. package/fesm2020/ng-nest-ui-time-ago.mjs.map +1 -1
  721. package/fesm2020/ng-nest-ui-time-picker.mjs +32 -34
  722. package/fesm2020/ng-nest-ui-time-picker.mjs.map +1 -1
  723. package/fesm2020/ng-nest-ui-time-range.mjs +7 -7
  724. package/fesm2020/ng-nest-ui-time-range.mjs.map +1 -1
  725. package/fesm2020/ng-nest-ui-timeline.mjs +14 -14
  726. package/fesm2020/ng-nest-ui-timeline.mjs.map +1 -1
  727. package/fesm2020/ng-nest-ui-tooltip.mjs +13 -13
  728. package/fesm2020/ng-nest-ui-tooltip.mjs.map +1 -1
  729. package/fesm2020/ng-nest-ui-transfer.mjs +17 -17
  730. package/fesm2020/ng-nest-ui-transfer.mjs.map +1 -1
  731. package/fesm2020/ng-nest-ui-tree-file.mjs +16 -16
  732. package/fesm2020/ng-nest-ui-tree-file.mjs.map +1 -1
  733. package/fesm2020/ng-nest-ui-tree.mjs +151 -117
  734. package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
  735. package/fesm2020/ng-nest-ui-typography.mjs +10 -10
  736. package/fesm2020/ng-nest-ui-typography.mjs.map +1 -1
  737. package/fesm2020/ng-nest-ui-upload.mjs +27 -29
  738. package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
  739. package/find/find.component.d.ts +1 -1
  740. package/find/find.property.d.ts +1 -1
  741. package/find/{ng-nest-ui-find.d.ts → index.d.ts} +0 -0
  742. package/form/control.component.d.ts +1 -1
  743. package/form/form.component.d.ts +2 -1
  744. package/form/form.property.d.ts +5 -5
  745. package/form/{ng-nest-ui-form.d.ts → index.d.ts} +0 -0
  746. package/highlight/highlight.component.d.ts +1 -1
  747. package/highlight/highlight.property.d.ts +1 -1
  748. package/highlight/{ng-nest-ui-highlight.d.ts → index.d.ts} +0 -0
  749. package/i18n/i18n.directive.d.ts +1 -1
  750. package/i18n/i18n.pipe.d.ts +1 -1
  751. package/i18n/{ng-nest-ui-i18n.d.ts → index.d.ts} +0 -0
  752. package/icon/icon.component.d.ts +1 -1
  753. package/icon/icon.property.d.ts +1 -1
  754. package/icon/{ng-nest-ui-icon.d.ts → index.d.ts} +0 -0
  755. package/inner/{ng-nest-ui-inner.d.ts → index.d.ts} +0 -0
  756. package/inner/inner.component.d.ts +1 -1
  757. package/inner/inner.property.d.ts +1 -1
  758. package/input/{ng-nest-ui-input.d.ts → index.d.ts} +0 -0
  759. package/input/input-group.component.d.ts +1 -1
  760. package/input/input.component.d.ts +1 -1
  761. package/input/input.property.d.ts +7 -2
  762. package/input-number/{ng-nest-ui-input-number.d.ts → index.d.ts} +0 -0
  763. package/input-number/input-number.component.d.ts +1 -1
  764. package/input-number/input-number.property.d.ts +1 -1
  765. package/layout/col.component.d.ts +1 -1
  766. package/layout/{ng-nest-ui-layout.d.ts → index.d.ts} +0 -0
  767. package/layout/layout.property.d.ts +2 -2
  768. package/layout/row.component.d.ts +1 -1
  769. package/link/{ng-nest-ui-link.d.ts → index.d.ts} +0 -0
  770. package/link/link.component.d.ts +1 -1
  771. package/link/link.property.d.ts +1 -1
  772. package/list/{ng-nest-ui-list.d.ts → index.d.ts} +0 -0
  773. package/list/list-option.component.d.ts +1 -1
  774. package/list/list.component.d.ts +1 -1
  775. package/list/list.property.d.ts +2 -2
  776. package/loading/{ng-nest-ui-loading.d.ts → index.d.ts} +0 -0
  777. package/loading/loading.component.d.ts +1 -1
  778. package/loading/loading.property.d.ts +1 -1
  779. package/menu/{ng-nest-ui-menu.d.ts → index.d.ts} +0 -0
  780. package/menu/menu-node.component.d.ts +1 -1
  781. package/menu/menu.component.d.ts +1 -1
  782. package/menu/menu.property.d.ts +2 -2
  783. package/message/{ng-nest-ui-message.d.ts → index.d.ts} +0 -0
  784. package/message/message.component.d.ts +1 -1
  785. package/message-box/{ng-nest-ui-message-box.d.ts → index.d.ts} +0 -0
  786. package/message-box/message-box.component.d.ts +3 -3
  787. package/notification/{ng-nest-ui-notification.d.ts → index.d.ts} +0 -0
  788. package/notification/notification.component.d.ts +1 -1
  789. package/outlet/{ng-nest-ui-outlet.d.ts → index.d.ts} +0 -0
  790. package/outlet/outlet.directive.d.ts +1 -1
  791. package/package.json +91 -91
  792. package/page-header/{ng-nest-ui-page-header.d.ts → index.d.ts} +0 -0
  793. package/page-header/page-header.component.d.ts +1 -1
  794. package/page-header/page-header.property.d.ts +1 -1
  795. package/pagination/{ng-nest-ui-pagination.d.ts → index.d.ts} +0 -0
  796. package/pagination/pagination.component.d.ts +1 -1
  797. package/pagination/pagination.property.d.ts +1 -1
  798. package/pattern/{ng-nest-ui-pattern.d.ts → index.d.ts} +0 -0
  799. package/pattern/pattern.component.d.ts +1 -1
  800. package/popconfirm/{ng-nest-ui-popconfirm.d.ts → index.d.ts} +0 -0
  801. package/popconfirm/popconfirm.component.d.ts +1 -1
  802. package/popconfirm/popconfirm.property.d.ts +1 -1
  803. package/popover/{ng-nest-ui-popover.d.ts → index.d.ts} +0 -0
  804. package/popover/popover-portal.component.d.ts +1 -1
  805. package/popover/popover.directive.d.ts +1 -1
  806. package/popover/popover.property.d.ts +1 -1
  807. package/portal/{ng-nest-ui-portal.d.ts → index.d.ts} +0 -0
  808. package/progress/{ng-nest-ui-progress.d.ts → index.d.ts} +0 -0
  809. package/progress/progress.component.d.ts +1 -1
  810. package/progress/progress.property.d.ts +1 -1
  811. package/radio/{ng-nest-ui-radio.d.ts → index.d.ts} +0 -0
  812. package/radio/radio.component.d.ts +1 -1
  813. package/radio/radio.property.d.ts +1 -1
  814. package/rate/{ng-nest-ui-rate.d.ts → index.d.ts} +0 -0
  815. package/rate/rate.component.d.ts +1 -1
  816. package/rate/rate.property.d.ts +1 -1
  817. package/resizable/{ng-nest-ui-resizable.d.ts → index.d.ts} +0 -0
  818. package/resizable/resizable.directive.d.ts +1 -1
  819. package/resizable/resizable.property.d.ts +1 -1
  820. package/result/{ng-nest-ui-result.d.ts → index.d.ts} +0 -0
  821. package/result/result.component.d.ts +1 -1
  822. package/result/result.property.d.ts +1 -1
  823. package/ripple/{ng-nest-ui-ripple.d.ts → index.d.ts} +0 -0
  824. package/ripple/ripple.directive.d.ts +1 -1
  825. package/ripple/ripple.property.d.ts +1 -1
  826. package/select/examples/en_US/default/search/README.md +6 -0
  827. package/select/examples/zh_CN/default/search/README.md +6 -0
  828. package/select/{ng-nest-ui-select.d.ts → index.d.ts} +0 -0
  829. package/select/select-portal.component.d.ts +7 -2
  830. package/select/select.component.d.ts +9 -2
  831. package/select/select.property.d.ts +51 -1
  832. package/skeleton/{ng-nest-ui-skeleton.d.ts → index.d.ts} +0 -0
  833. package/skeleton/skeleton.component.d.ts +1 -1
  834. package/skeleton/skeleton.property.d.ts +1 -1
  835. package/slider/{ng-nest-ui-slider.d.ts → index.d.ts} +0 -0
  836. package/slider/slider.component.d.ts +1 -1
  837. package/slider/slider.property.d.ts +1 -1
  838. package/slider-select/{ng-nest-ui-slider-select.d.ts → index.d.ts} +0 -0
  839. package/slider-select/slider-select.component.d.ts +1 -1
  840. package/slider-select/slider-select.property.d.ts +1 -1
  841. package/statistic/countdown.component.d.ts +1 -1
  842. package/statistic/{ng-nest-ui-statistic.d.ts → index.d.ts} +0 -0
  843. package/statistic/statistic.component.d.ts +1 -1
  844. package/statistic/statistic.property.d.ts +2 -2
  845. package/steps/{ng-nest-ui-steps.d.ts → index.d.ts} +0 -0
  846. package/steps/steps.component.d.ts +1 -1
  847. package/steps/steps.property.d.ts +1 -1
  848. package/switch/{ng-nest-ui-switch.d.ts → index.d.ts} +0 -0
  849. package/switch/switch.component.d.ts +1 -1
  850. package/switch/switch.property.d.ts +1 -1
  851. package/table/drag.directive.d.ts +1 -1
  852. package/table/examples/en_US/default/fix/README.md +6 -0
  853. package/table/examples/en_US/default/header/README.md +6 -0
  854. package/table/examples/zh_CN/default/fix/README.md +6 -0
  855. package/table/examples/zh_CN/default/header/README.md +6 -0
  856. package/table/{ng-nest-ui-table.d.ts → index.d.ts} +0 -0
  857. package/table/table-body.component.d.ts +1 -1
  858. package/table/table-foot.component.d.ts +2 -1
  859. package/table/table-head.component.d.ts +3 -2
  860. package/table/table.component.d.ts +11 -2
  861. package/table/table.property.d.ts +34 -4
  862. package/tabs/{ng-nest-ui-tabs.d.ts → index.d.ts} +0 -0
  863. package/tabs/tab-content.component.d.ts +1 -1
  864. package/tabs/tab.component.d.ts +1 -1
  865. package/tabs/tabs.component.d.ts +1 -1
  866. package/tabs/tabs.property.d.ts +2 -2
  867. package/tag/{ng-nest-ui-tag.d.ts → index.d.ts} +0 -0
  868. package/tag/tag.component.d.ts +1 -1
  869. package/tag/tag.property.d.ts +1 -1
  870. package/text-retract/{ng-nest-ui-text-retract.d.ts → index.d.ts} +0 -0
  871. package/text-retract/text-retract.component.d.ts +1 -1
  872. package/text-retract/text-retract.property.d.ts +1 -1
  873. package/textarea/{ng-nest-ui-textarea.d.ts → index.d.ts} +0 -0
  874. package/textarea/textarea.component.d.ts +1 -1
  875. package/textarea/textarea.property.d.ts +1 -1
  876. package/theme/{ng-nest-ui-theme.d.ts → index.d.ts} +0 -0
  877. package/theme/theme.component.d.ts +3 -3
  878. package/theme/theme.property.d.ts +1 -1
  879. package/time-ago/{ng-nest-ui-time-ago.d.ts → index.d.ts} +0 -0
  880. package/time-ago/time-ago.pipe.d.ts +1 -1
  881. package/time-picker/{ng-nest-ui-time-picker.d.ts → index.d.ts} +0 -0
  882. package/time-picker/time-picker-frame.component.d.ts +1 -1
  883. package/time-picker/time-picker-portal.component.d.ts +1 -1
  884. package/time-picker/time-picker.component.d.ts +1 -1
  885. package/time-picker/time-picker.property.d.ts +1 -1
  886. package/time-range/{ng-nest-ui-time-range.d.ts → index.d.ts} +0 -0
  887. package/time-range/time-range.pipe.d.ts +1 -1
  888. package/timeline/{ng-nest-ui-timeline.d.ts → index.d.ts} +0 -0
  889. package/timeline/timeline.component.d.ts +1 -1
  890. package/timeline/timeline.property.d.ts +1 -1
  891. package/tooltip/{ng-nest-ui-tooltip.d.ts → index.d.ts} +0 -0
  892. package/tooltip/tooltip-portal.component.d.ts +1 -1
  893. package/tooltip/tooltip.directive.d.ts +1 -1
  894. package/tooltip/tooltip.property.d.ts +1 -1
  895. package/transfer/{ng-nest-ui-transfer.d.ts → index.d.ts} +0 -0
  896. package/transfer/transfer.component.d.ts +1 -1
  897. package/transfer/transfer.property.d.ts +1 -1
  898. package/tree/{ng-nest-ui-tree.d.ts → index.d.ts} +0 -0
  899. package/tree/tree-node.component.d.ts +1 -4
  900. package/tree/tree.component.d.ts +4 -1
  901. package/tree/tree.property.d.ts +7 -2
  902. package/tree-file/{ng-nest-ui-tree-file.d.ts → index.d.ts} +0 -0
  903. package/tree-file/tree-file.component.d.ts +1 -1
  904. package/tree-file/tree-file.property.d.ts +1 -1
  905. package/typography/{ng-nest-ui-typography.d.ts → index.d.ts} +0 -0
  906. package/typography/typography.component.d.ts +1 -1
  907. package/typography/typography.property.d.ts +1 -1
  908. package/upload/{ng-nest-ui-upload.d.ts → index.d.ts} +0 -0
  909. package/upload/upload-portal.component.d.ts +1 -1
  910. package/upload/upload.component.d.ts +1 -1
  911. package/upload/upload.property.d.ts +1 -1
  912. package/affix/package.json +0 -10
  913. package/alert/package.json +0 -10
  914. package/anchor/package.json +0 -10
  915. package/api/package.json +0 -10
  916. package/auto-complete/package.json +0 -10
  917. package/avatar/package.json +0 -10
  918. package/back-top/package.json +0 -10
  919. package/badge/package.json +0 -10
  920. package/base-form/package.json +0 -10
  921. package/border/package.json +0 -10
  922. package/button/package.json +0 -10
  923. package/calendar/package.json +0 -10
  924. package/card/package.json +0 -10
  925. package/carousel/package.json +0 -10
  926. package/cascade/package.json +0 -10
  927. package/checkbox/package.json +0 -10
  928. package/collapse/package.json +0 -10
  929. package/color/package.json +0 -10
  930. package/color-picker/package.json +0 -10
  931. package/comment/package.json +0 -10
  932. package/container/package.json +0 -10
  933. package/core/package.json +0 -10
  934. package/crumb/package.json +0 -10
  935. package/date-picker/package.json +0 -10
  936. package/description/package.json +0 -10
  937. package/dialog/package.json +0 -10
  938. package/doc/package.json +0 -10
  939. package/drawer/package.json +0 -10
  940. package/dropdown/package.json +0 -10
  941. package/empty/package.json +0 -10
  942. package/examples/package.json +0 -10
  943. package/find/package.json +0 -10
  944. package/form/package.json +0 -10
  945. package/highlight/package.json +0 -10
  946. package/i18n/package.json +0 -10
  947. package/icon/package.json +0 -10
  948. package/inner/package.json +0 -10
  949. package/input/package.json +0 -10
  950. package/input-number/package.json +0 -10
  951. package/layout/package.json +0 -10
  952. package/link/package.json +0 -10
  953. package/list/package.json +0 -10
  954. package/loading/package.json +0 -10
  955. package/menu/package.json +0 -10
  956. package/message/package.json +0 -10
  957. package/message-box/package.json +0 -10
  958. package/ng-nest-ui.d.ts +0 -5
  959. package/notification/package.json +0 -10
  960. package/outlet/package.json +0 -10
  961. package/page-header/package.json +0 -10
  962. package/pagination/package.json +0 -10
  963. package/pattern/package.json +0 -10
  964. package/popconfirm/package.json +0 -10
  965. package/popover/package.json +0 -10
  966. package/portal/package.json +0 -10
  967. package/progress/package.json +0 -10
  968. package/radio/package.json +0 -10
  969. package/rate/package.json +0 -10
  970. package/resizable/package.json +0 -10
  971. package/result/package.json +0 -10
  972. package/ripple/package.json +0 -10
  973. package/select/package.json +0 -10
  974. package/skeleton/package.json +0 -10
  975. package/slider/package.json +0 -10
  976. package/slider-select/package.json +0 -10
  977. package/statistic/package.json +0 -10
  978. package/steps/package.json +0 -10
  979. package/switch/package.json +0 -10
  980. package/table/package.json +0 -10
  981. package/tabs/package.json +0 -10
  982. package/tag/package.json +0 -10
  983. package/text-retract/package.json +0 -10
  984. package/textarea/package.json +0 -10
  985. package/theme/package.json +0 -10
  986. package/time-ago/package.json +0 -10
  987. package/time-picker/package.json +0 -10
  988. package/time-range/package.json +0 -10
  989. package/timeline/package.json +0 -10
  990. package/tooltip/package.json +0 -10
  991. package/transfer/package.json +0 -10
  992. package/tree/package.json +0 -10
  993. package/tree-file/package.json +0 -10
  994. package/typography/package.json +0 -10
  995. package/upload/package.json +0 -10
@@ -1,13 +1,13 @@
1
1
  import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild } from '@angular/core';
2
2
  import { XTreePrefix, XTreeProperty } from './tree.property';
3
3
  import { XIsObservable, XIsEmpty, XIsFunction, XIsUndefined, XIsChange, XSetData } from '@ng-nest/ui/core';
4
- import { Subject } from 'rxjs';
4
+ import { map, Subject } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@ng-nest/ui/core";
7
- import * as i2 from "./tree-node.component";
8
- import * as i3 from "@angular/cdk/scrolling";
9
- import * as i4 from "@ng-nest/ui/icon";
10
- import * as i5 from "@angular/common";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "@ng-nest/ui/icon";
9
+ import * as i4 from "@angular/cdk/scrolling";
10
+ import * as i5 from "./tree-node.component";
11
11
  export class XTreeComponent extends XTreeProperty {
12
12
  constructor(renderer, elementRef, cdr, configService) {
13
13
  super();
@@ -148,6 +148,32 @@ export class XTreeComponent extends XTreeProperty {
148
148
  }
149
149
  this.nodes = [...this.nodes];
150
150
  }
151
+ virtualToggle(node) {
152
+ let index = this.nodes.indexOf(node);
153
+ if (node.open) {
154
+ let addNodes = [];
155
+ const getNodes = (nd) => {
156
+ for (let child of nd.children) {
157
+ addNodes.push(child);
158
+ child.open && getNodes(child);
159
+ }
160
+ };
161
+ getNodes(node);
162
+ this.nodes.splice(index + 1, 0, ...addNodes);
163
+ }
164
+ else {
165
+ let delCount = 0;
166
+ const getCount = (nd) => {
167
+ delCount += nd.children.length;
168
+ for (let child of nd.children) {
169
+ child.open && getCount(child);
170
+ }
171
+ };
172
+ getCount(node);
173
+ this.nodes.splice(index + 1, delCount);
174
+ }
175
+ this.nodes = [...this.nodes];
176
+ }
151
177
  setActivatedNode(nodes) {
152
178
  let before = this.activatedNode;
153
179
  this.activatedNode = nodes.find((x) => x.id == this.activatedId);
@@ -173,29 +199,84 @@ export class XTreeComponent extends XTreeProperty {
173
199
  };
174
200
  getParent(node);
175
201
  }
202
+ onToggle(event, node) {
203
+ node.open = !node.open;
204
+ if (this.virtualScroll) {
205
+ if (this.lazy && !node.childrenLoaded) {
206
+ this.getLazyData(node, () => this.virtualToggle(node));
207
+ }
208
+ else {
209
+ this.virtualToggle(node);
210
+ }
211
+ }
212
+ else if (node.open && !node.childrenLoaded) {
213
+ if (this.lazy) {
214
+ this.getLazyData(node);
215
+ }
216
+ else {
217
+ node.childrenLoaded = true;
218
+ }
219
+ }
220
+ event.preventDefault();
221
+ event.stopPropagation();
222
+ this.cdr.detectChanges();
223
+ }
224
+ getLazyData(node, callBack) {
225
+ node.loading = true;
226
+ node.change && node.change();
227
+ this.data(node.id)
228
+ .pipe(map((x) => x.map((y) => {
229
+ y.level = node.level + 1;
230
+ y.checked = node.checked;
231
+ return y;
232
+ })))
233
+ .subscribe((x) => {
234
+ node.children = x;
235
+ node.childrenLoaded = true;
236
+ node.loading = false;
237
+ if (callBack)
238
+ callBack();
239
+ node.change && node.change();
240
+ this.cdr.detectChanges();
241
+ });
242
+ }
176
243
  addNode(node) {
177
244
  let parent = this.treeData.find((x) => x.id === node.pid);
178
- if (parent) {
179
- if (!parent.children)
180
- parent.children = [];
181
- this.expanded = [...this.expanded, parent.id];
182
- this.activatedId = node.id;
183
- node.level = Number(parent.level) + 1;
184
- node.pid = parent.id;
185
- this.treeData.push(node);
186
- this.setActivatedNode(this.treeData);
187
- parent.open = true;
188
- parent.leaf = true;
189
- parent.children = [...parent.children, node];
190
- parent.change && parent.change();
245
+ const _addNode = () => {
246
+ if (parent) {
247
+ if (!parent.children)
248
+ parent.children = [];
249
+ this.expanded = [...this.expanded, parent.id];
250
+ this.activatedId = node.id;
251
+ node.level = Number(parent.level) + 1;
252
+ node.pid = parent.id;
253
+ this.treeData.push(node);
254
+ this.setActivatedNode(this.treeData);
255
+ parent.open = true;
256
+ parent.leaf = true;
257
+ parent.children = [...parent.children, node];
258
+ if (this.virtualScroll) {
259
+ this.virtualToggle(parent);
260
+ this.cdr.detectChanges();
261
+ }
262
+ parent.change && parent.change();
263
+ }
264
+ else if (XIsEmpty(node.pid)) {
265
+ this.activatedId = node.id;
266
+ node.level = 0;
267
+ this.treeData = [...this.treeData, node];
268
+ this.nodes = [...this.nodes, node];
269
+ this.setActivatedNode(this.treeData);
270
+ this.cdr.detectChanges();
271
+ }
272
+ };
273
+ if (this.lazy && parent && !parent.childrenLoaded) {
274
+ this.getLazyData(parent, () => {
275
+ _addNode();
276
+ });
191
277
  }
192
- else if (node.pid == null) {
193
- this.activatedId = node.id;
194
- node.level = 0;
195
- this.treeData = [...this.treeData, node];
196
- this.nodes = [...this.nodes, node];
197
- this.setActivatedNode(this.treeData);
198
- this.cdr.detectChanges();
278
+ else {
279
+ _addNode();
199
280
  }
200
281
  }
201
282
  removeNode(node) {
@@ -207,11 +288,30 @@ export class XTreeComponent extends XTreeProperty {
207
288
  parent.leaf = parent.children.length > 0;
208
289
  if (!parent.leaf)
209
290
  this.activatedId = parent.id;
291
+ if (this.virtualScroll) {
292
+ let index = this.nodes.indexOf(node);
293
+ let aindex = index - 1;
294
+ if (index === 0 && this.nodes.length > 1) {
295
+ aindex = 1;
296
+ }
297
+ let activatedNode = this.nodes[aindex];
298
+ this.activatedId = activatedNode.id;
299
+ this.setActivatedNode(this.nodes);
300
+ this.nodes.splice(index, 1);
301
+ this.nodes = [...this.nodes];
302
+ if (activatedNode) {
303
+ activatedNode.change && activatedNode.change();
304
+ }
305
+ this.cdr.detectChanges();
306
+ }
210
307
  parent.change && parent.change();
211
308
  }
212
- else if (node.pid == null) {
309
+ else if (XIsEmpty(node.pid)) {
213
310
  this.treeData.splice(this.treeData.indexOf(node), 1);
214
311
  this.nodes.splice(this.nodes.indexOf(node), 1);
312
+ if (this.virtualScroll) {
313
+ this.nodes = [...this.nodes];
314
+ }
215
315
  this.cdr.detectChanges();
216
316
  }
217
317
  }
@@ -223,13 +323,13 @@ export class XTreeComponent extends XTreeProperty {
223
323
  return item.id;
224
324
  }
225
325
  }
226
- /** @nocollapse */ /** @nocollapse */ XTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: XTreeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
227
- /** @nocollapse */ /** @nocollapse */ XTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: XTreeComponent, selector: "x-tree", viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #tree class=\"x-tree\">\r\n <ul *ngIf=\"!virtualScroll; else virtualScrollTpl\">\r\n <li\r\n x-tree-node\r\n *ngFor=\"let node of nodes; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></li>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"itemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"virtualScrollHeight\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes; templateCacheSize: 0; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n [virtualScroll]=\"virtualScroll\"\r\n ></x-tree-node>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n<x-icon *ngIf=\"lazy\" [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n", styles: [".x-tree{margin:0;padding:0}\n"], components: [{ type: i2.XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: ["parent", "tree"] }, { type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i4.XIconComponent, selector: "x-icon" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
228
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: XTreeComponent, decorators: [{
326
+ /** @nocollapse */ XTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
327
+ /** @nocollapse */ XTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeComponent, selector: "x-tree", viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #tree class=\"x-tree\">\r\n <ul *ngIf=\"!virtualScroll; else virtualScrollTpl\">\r\n <li\r\n x-tree-node\r\n *ngFor=\"let node of nodes; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></li>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"itemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"virtualScrollHeight\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes; templateCacheSize: 0; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n [virtualScroll]=\"virtualScroll\"\r\n ></x-tree-node>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n<x-icon *ngIf=\"lazy\" [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n", styles: [".x-tree{margin:0;padding:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.XIconComponent, selector: "x-icon" }, { kind: "directive", type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i5.XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: ["parent", "tree"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
328
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeComponent, decorators: [{
229
329
  type: Component,
230
330
  args: [{ selector: `${XTreePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #tree class=\"x-tree\">\r\n <ul *ngIf=\"!virtualScroll; else virtualScrollTpl\">\r\n <li\r\n x-tree-node\r\n *ngFor=\"let node of nodes; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></li>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"itemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"virtualScrollHeight\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes; templateCacheSize: 0; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n [virtualScroll]=\"virtualScroll\"\r\n ></x-tree-node>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n<x-icon *ngIf=\"lazy\" [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n", styles: [".x-tree{margin:0;padding:0}\n"] }]
231
331
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { tree: [{
232
332
  type: ViewChild,
233
333
  args: ['tree', { static: true }]
234
334
  }] } });
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBSWpCLHVCQUF1QixFQUN2QixTQUFTLEVBR1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBYSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWtCLE1BQU0sa0JBQWtCLENBQUM7QUFDM0gsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVMvQixNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQWE7SUFTL0MsWUFDUyxRQUFtQixFQUNuQixVQUFzQixFQUN0QixHQUFzQixFQUN0QixhQUE2QjtRQUVwQyxLQUFLLEVBQUUsQ0FBQztRQUxELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFYdEMsVUFBSyxHQUFnQixFQUFFLENBQUM7UUFDeEIsaUJBQVksR0FBZ0IsRUFBRSxDQUFDO1FBRS9CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixhQUFRLEdBQWdCLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQVF6QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0sRUFB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QUF1QixDQUFDLE1BQU07c0xBR1YsSUFBSTtzQkFBeEMsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgUmVuZGVyZXIyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgVmlld0NoaWxkLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25DaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUcmVlUHJlZml4LCBYVHJlZU5vZGUsIFhUcmVlUHJvcGVydHkgfSBmcm9tICcuL3RyZWUucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYSXNPYnNlcnZhYmxlLCBYSXNFbXB0eSwgWElzRnVuY3Rpb24sIFhJc1VuZGVmaW5lZCwgWElzQ2hhbmdlLCBYU2V0RGF0YSwgWENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hUcmVlUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVHJlZUNvbXBvbmVudCBleHRlbmRzIFhUcmVlUHJvcGVydHkgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBWaWV3Q2hpbGQoJ3RyZWUnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0cmVlITogRWxlbWVudFJlZjtcclxuICBub2RlczogWFRyZWVOb2RlW10gPSBbXTtcclxuICB2aXJ0dWFsTm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgYWN0aXZhdGVkTm9kZSE6IFhUcmVlTm9kZTtcclxuICBkYXRhSXNGdW5jID0gZmFsc2U7XHJcbiAgZ2V0dGluZyA9IGZhbHNlO1xyXG4gIHRyZWVEYXRhOiBYVHJlZU5vZGVbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGV4cGFuZGVkQWxsLCBkYXRhLCBhY3RpdmF0ZWRJZCwgY2hlY2tlZCwgbWFudWFsIH0gPSBjaGFuZ2VzO1xyXG4gICAgWElzQ2hhbmdlKGRhdGEpICYmIHRoaXMuc2V0RGF0YSgpO1xyXG4gICAgWElzQ2hhbmdlKGV4cGFuZGVkQWxsKSAmJiB0aGlzLnNldEV4cGFuZGVkQWxsKCk7XHJcbiAgICBYSXNDaGFuZ2UoYWN0aXZhdGVkSWQpICYmIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh0aGlzLnRyZWVEYXRhKTtcclxuICAgIFhJc0NoYW5nZShjaGVja2VkKSAmJiB0aGlzLnNldENoZWNrZWRLZXlzKHRoaXMuY2hlY2tlZCk7XHJcbiAgICBYSXNDaGFuZ2UobWFudWFsKSAmJiB0aGlzLnNldE1hbnVhbCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhKCkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XHJcbiAgICB0aGlzLmRhdGFJc0Z1bmMgPSBmYWxzZTtcclxuICAgIGlmIChYSXNPYnNlcnZhYmxlKHRoaXMuZGF0YSkpIHtcclxuICAgICAgWFNldERhdGE8WFRyZWVOb2RlPih0aGlzLmRhdGEsIHRoaXMuX3VuU3ViamVjdCkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhQ2hhbmdlKHgpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoWElzRnVuY3Rpb24odGhpcy5kYXRhKSkge1xyXG4gICAgICB0aGlzLmRhdGFJc0Z1bmMgPSB0cnVlO1xyXG4gICAgICB0aGlzLmdldERhdGFCeUZ1bmMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YUNoYW5nZSh0aGlzLmRhdGEgYXMgWFRyZWVOb2RlW10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRNYW51YWwoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhSXNGdW5jKSB0aGlzLmdldERhdGFCeUZ1bmMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YUJ5RnVuYygpIHtcclxuICAgIGlmICghdGhpcy5tYW51YWwpIHJldHVybjtcclxuICAgIFhTZXREYXRhPFhUcmVlTm9kZT4oKHRoaXMuZGF0YSBhcyBGdW5jdGlvbikoKSwgdGhpcy5fdW5TdWJqZWN0KS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy5zZXREYXRhQ2hhbmdlKHgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERhdGFDaGFuZ2UodmFsdWU6IFhUcmVlTm9kZVtdKSB7XHJcbiAgICAhWElzRW1wdHkodGhpcy5hY3RpdmF0ZWRJZCkgJiYgdGhpcy5zZXRBY3RpdmF0ZWROb2RlKHZhbHVlKTtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKG5vZGU6IFhUcmVlTm9kZSwgbGV2ZWw6IG51bWJlcikgPT4ge1xyXG4gICAgICBub2RlLmxldmVsID0gbGV2ZWw7XHJcbiAgICAgIG5vZGUub3BlbiA9IEJvb2xlYW4odGhpcy5leHBhbmRlZEFsbCkgfHwgbGV2ZWwgPD0gdGhpcy5leHBhbmRlZExldmVsIHx8IHRoaXMuZXhwYW5kZWQuaW5kZXhPZihub2RlLmlkKSA+PSAwO1xyXG4gICAgICBub2RlLmNoZWNrZWQgPSB0aGlzLmNoZWNrZWQuaW5kZXhPZihub2RlLmlkKSA+PSAwO1xyXG4gICAgICBub2RlLmNoaWxkcmVuTG9hZGVkID0gbm9kZS5vcGVuO1xyXG4gICAgICBpZiAoWElzVW5kZWZpbmVkKG5vZGUuY2hpbGRyZW4pKSBub2RlLmNoaWxkcmVuID0gdmFsdWUuZmlsdGVyKCh5KSA9PiB5LnBpZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgIGlmIChYSXNVbmRlZmluZWQobm9kZS5sZWFmKSkgbm9kZS5sZWFmID0gKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCBhcyBudW1iZXIpID4gMDtcclxuICAgICAgaWYgKG5vZGUubGVhZikgbm9kZS5jaGlsZHJlbj8ubWFwKCh5KSA9PiBnZXRDaGlsZHJlbih5LCBsZXZlbCArIDEpKTtcclxuICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9O1xyXG4gICAgdGhpcy50cmVlRGF0YSA9IHZhbHVlO1xyXG4gICAgdGhpcy5ub2RlcyA9IHZhbHVlLmZpbHRlcigoeCkgPT4gWElzRW1wdHkoeC5waWQpKS5tYXAoKHgpID0+IGdldENoaWxkcmVuKHgsIDApKTtcclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2VkTm9kZXMoKTogWFRyZWVOb2RlW10ge1xyXG4gICAgbGV0IHJlc3VsdDogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICBpZiAoeC5jaGVja2VkICYmICFyZXN1bHQuaW5jbHVkZXMoeCkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IFsuLi5yZXN1bHQsIHhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRDaGlsZHJlbih4LmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgZ2V0Q2hpbGRyZW4odGhpcy5ub2Rlcyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tlZEtleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja2VkTm9kZXMoKS5tYXAoKHgpID0+IHguaWQpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2hlY2tlZEtleXMoa2V5czogYW55W10gPSBbXSkge1xyXG4gICAgY29uc3Qgc2V0Q2hpbGRyZW4gPSAobm9kZXM6IFhUcmVlTm9kZVtdLCBjbGVhciA9IGZhbHNlKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShub2RlcykpIHJldHVybjtcclxuICAgICAgbm9kZXMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgIHguY2hlY2tlZCA9ICFjbGVhciAmJiBrZXlzLmluZGV4T2YoeC5pZCkgPj0gMDtcclxuICAgICAgICB4LmNoYW5nZSAmJiB4LmNoYW5nZSh0cnVlKTtcclxuICAgICAgICBzZXRDaGlsZHJlbih4LmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdLCBjbGVhcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZXMsIGtleXMubGVuZ3RoID09PSAwKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldEV4cGFuZGVkQWxsKCkge1xyXG4gICAgY29uc3Qgc2V0Q2hpbGRyZW4gPSAobm9kZXM6IFhUcmVlTm9kZVtdKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShub2RlcykpIHJldHVybjtcclxuICAgICAgbm9kZXMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgIHgub3BlbiA9IEJvb2xlYW4odGhpcy5leHBhbmRlZEFsbCk7XHJcbiAgICAgICAgeC5jaGFuZ2UgJiYgeC5jaGFuZ2UoKTtcclxuICAgICAgICBzZXRDaGlsZHJlbih4LmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgc2V0Q2hpbGRyZW4odGhpcy5ub2Rlcyk7XHJcblxyXG4gICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCkge1xyXG4gICAgICBpZiAodGhpcy52aXJ0dWFsTm9kZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy52aXJ0dWFsTm9kZXMgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLnZpcnR1YWxOb2Rlc107XHJcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy52aXJ0dWFsTm9kZXMpIHtcclxuICAgICAgICB0aGlzLnNldFZpcnR1YWxFeHBhbmRlZEFsbChpdGVtLCB0aGlzLmV4cGFuZGVkQWxsIGFzIGJvb2xlYW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWaXJ0dWFsRXhwYW5kZWRBbGwoaXRlbTogWFRyZWVOb2RlLCBleHBhbmRlZEFsbDogYm9vbGVhbikge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5ub2Rlcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgaWYgKGV4cGFuZGVkQWxsKSB7XHJcbiAgICAgIGxldCBhZGROb2RlczogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgICAgY29uc3QgZ2V0Tm9kZXMgPSAobmQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5kLmNoaWxkcmVuISkge1xyXG4gICAgICAgICAgYWRkTm9kZXMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICBnZXROb2RlcyhjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBnZXROb2RlcyhpdGVtKTtcclxuICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXggKyAxLCAwLCAuLi5hZGROb2Rlcyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZhdGVkTm9kZShub2RlczogWFRyZWVOb2RlW10pIHtcclxuICAgIGxldCBiZWZvcmUgPSB0aGlzLmFjdGl2YXRlZE5vZGU7XHJcbiAgICB0aGlzLmFjdGl2YXRlZE5vZGUgPSBub2Rlcy5maW5kKCh4KSA9PiB4LmlkID09IHRoaXMuYWN0aXZhdGVkSWQpIGFzIFhUcmVlTm9kZTtcclxuICAgIGlmICh0aGlzLmFjdGl2YXRlZE5vZGUpIHtcclxuICAgICAgdGhpcy5zZXRQYXJlbnRPcGVuKG5vZGVzLCB0aGlzLmFjdGl2YXRlZE5vZGUpO1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZENoYW5nZS5lbWl0KHRoaXMuYWN0aXZhdGVkTm9kZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoYmVmb3JlKSB7XHJcbiAgICAgIGJlZm9yZS5jaGFuZ2UgJiYgYmVmb3JlLmNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UGFyZW50T3Blbihub2RlczogWFRyZWVOb2RlW10sIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgY29uc3QgZ2V0UGFyZW50ID0gKGNoaWxkOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkLnBpZCkpIHJldHVybjtcclxuICAgICAgY29uc3QgcGFyZW50ID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PT0gY2hpbGQucGlkKSBhcyBYVHJlZU5vZGU7XHJcbiAgICAgIGlmICghWElzRW1wdHkocGFyZW50KSkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBbLi4udGhpcy5leHBhbmRlZCwgcGFyZW50LmlkXTtcclxuICAgICAgICBwYXJlbnQub3BlbiA9IHRydWU7XHJcbiAgICAgICAgcGFyZW50LmNoYW5nZSAmJiBwYXJlbnQuY2hhbmdlKCk7XHJcbiAgICAgICAgZ2V0UGFyZW50KHBhcmVudCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBnZXRQYXJlbnQobm9kZSk7XHJcbiAgfVxyXG5cclxuICBhZGROb2RlKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudHJlZURhdGEuZmluZCgoeCkgPT4geC5pZCA9PT0gbm9kZS5waWQpO1xyXG4gICAgaWYgKHBhcmVudCkge1xyXG4gICAgICBpZiAoIXBhcmVudC5jaGlsZHJlbikgcGFyZW50LmNoaWxkcmVuID0gW107XHJcbiAgICAgIHRoaXMuZXhwYW5kZWQgPSBbLi4udGhpcy5leHBhbmRlZCwgcGFyZW50LmlkXTtcclxuICAgICAgdGhpcy5hY3RpdmF0ZWRJZCA9IG5vZGUuaWQ7XHJcbiAgICAgIG5vZGUubGV2ZWwgPSBOdW1iZXIocGFyZW50LmxldmVsKSArIDE7XHJcbiAgICAgIG5vZGUucGlkID0gcGFyZW50LmlkO1xyXG4gICAgICB0aGlzLnRyZWVEYXRhLnB1c2gobm9kZSk7XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh0aGlzLnRyZWVEYXRhKTtcclxuICAgICAgcGFyZW50Lm9wZW4gPSB0cnVlO1xyXG4gICAgICBwYXJlbnQubGVhZiA9IHRydWU7XHJcbiAgICAgIHBhcmVudC5jaGlsZHJlbiA9IFsuLi5wYXJlbnQuY2hpbGRyZW4sIG5vZGVdO1xyXG4gICAgICBwYXJlbnQuY2hhbmdlICYmIHBhcmVudC5jaGFuZ2UoKTtcclxuICAgIH0gZWxzZSBpZiAobm9kZS5waWQgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZElkID0gbm9kZS5pZDtcclxuICAgICAgbm9kZS5sZXZlbCA9IDA7XHJcbiAgICAgIHRoaXMudHJlZURhdGEgPSBbLi4udGhpcy50cmVlRGF0YSwgbm9kZV07XHJcbiAgICAgIHRoaXMubm9kZXMgPSBbLi4udGhpcy5ub2Rlcywgbm9kZV07XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh0aGlzLnRyZWVEYXRhKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTm9kZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWVEYXRhLmZpbmQoKHgpID0+IHguaWQgPT09IG5vZGUucGlkKTtcclxuICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgaWYgKCFwYXJlbnQuY2hpbGRyZW4pIHBhcmVudC5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKG5vZGUpLCAxKTtcclxuICAgICAgcGFyZW50LmxlYWYgPSBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoID4gMDtcclxuICAgICAgaWYgKCFwYXJlbnQubGVhZikgdGhpcy5hY3RpdmF0ZWRJZCA9IHBhcmVudC5pZDtcclxuICAgICAgcGFyZW50LmNoYW5nZSAmJiBwYXJlbnQuY2hhbmdlKCk7XHJcbiAgICB9IGVsc2UgaWYgKG5vZGUucGlkID09IG51bGwpIHtcclxuICAgICAgdGhpcy50cmVlRGF0YS5zcGxpY2UodGhpcy50cmVlRGF0YS5pbmRleE9mKG5vZGUpLCAxKTtcclxuICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UodGhpcy5ub2Rlcy5pbmRleE9mKG5vZGUpLCAxKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTm9kZShub2RlOiBYVHJlZU5vZGUsIG5vd05vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgT2JqZWN0LmFzc2lnbihub2RlLCBub3dOb2RlKTtcclxuICAgIG5vZGUuY2hhbmdlICYmIG5vZGUuY2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShfaW5kZXg6IG51bWJlciwgaXRlbTogWFRyZWVOb2RlKSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjdHJlZSBjbGFzcz1cIngtdHJlZVwiPlxyXG4gIDx1bCAqbmdJZj1cIiF2aXJ0dWFsU2Nyb2xsOyBlbHNlIHZpcnR1YWxTY3JvbGxUcGxcIj5cclxuICAgIDxsaVxyXG4gICAgICB4LXRyZWUtbm9kZVxyXG4gICAgICAqbmdGb3I9XCJsZXQgbm9kZSBvZiBub2RlczsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIlxyXG4gICAgICBbbm9kZV09XCJub2RlXCJcclxuICAgICAgW2xhenldPVwibGF6eVwiXHJcbiAgICAgIFtsYXp5RGF0YV09XCJkYXRhXCJcclxuICAgICAgW25vZGVIZWlnaHRdPVwibm9kZUhlaWdodFwiXHJcbiAgICAgIFtub2RlTm93cmFwXT1cIm5vZGVOb3dyYXBcIlxyXG4gICAgICBbbm9kZUFsaWduSXRlbXNdPVwibm9kZUFsaWduSXRlbXNcIlxyXG4gICAgICBbdHJlZV09XCJ0aGlzXCJcclxuICAgID48L2xpPlxyXG4gIDwvdWw+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICN2aXJ0dWFsU2Nyb2xsVHBsPlxyXG4gIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXHJcbiAgICBbbWluQnVmZmVyUHhdPVwibWluQnVmZmVyUHhcIlxyXG4gICAgW21heEJ1ZmZlclB4XT1cIm1heEJ1ZmZlclB4XCJcclxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwidmlydHVhbFNjcm9sbEhlaWdodFwiXHJcbiAgPlxyXG4gICAgPHgtdHJlZS1ub2RlXHJcbiAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG5vZGUgb2Ygbm9kZXM7IHRlbXBsYXRlQ2FjaGVTaXplOiAwOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICBbbGF6eV09XCJsYXp5XCJcclxuICAgICAgW2xhenlEYXRhXT1cImRhdGFcIlxyXG4gICAgICBbbm9kZUhlaWdodF09XCJub2RlSGVpZ2h0XCJcclxuICAgICAgW25vZGVOb3dyYXBdPVwibm9kZU5vd3JhcFwiXHJcbiAgICAgIFtub2RlQWxpZ25JdGVtc109XCJub2RlQWxpZ25JdGVtc1wiXHJcbiAgICAgIFt0cmVlXT1cInRoaXNcIlxyXG4gICAgICBbdmlydHVhbFNjcm9sbF09XCJ2aXJ0dWFsU2Nyb2xsXCJcclxuICAgID48L3gtdHJlZS1ub2RlPlxyXG4gIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSDmj5DliY3liqDovb1sb2FkaW5n55qE5Zu+5qCHLS0+XHJcbjx4LWljb24gKm5nSWY9XCJsYXp5XCIgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCIgdHlwZT1cImZ0by1sb2FkZXJcIj48L3gtaWNvbj5cclxuIl19
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBSWpCLHVCQUF1QixFQUN2QixTQUFTLEVBR1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBYSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWtCLE1BQU0sa0JBQWtCLENBQUM7QUFDM0gsT0FBTyxFQUFFLEdBQUcsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFTaEQsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBUy9DLFlBQ1MsUUFBbUIsRUFDbkIsVUFBc0IsRUFDdEIsR0FBc0IsRUFDdEIsYUFBNkI7UUFFcEMsS0FBSyxFQUFFLENBQUM7UUFMRCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBWHRDLFVBQUssR0FBZ0IsRUFBRSxDQUFDO1FBQ3hCLGlCQUFZLEdBQWdCLEVBQUUsQ0FBQztRQUUvQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFnQixFQUFFLENBQUM7UUFDbkIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFRekMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNo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QUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUI7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFlLEVBQUUsT0FBa0I7UUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjLEVBQUUsSUFBZTtRQUN6QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7OEhBL1RVLGNBQWM7a0hBQWQsY0FBYyxzTUN0QjNCLDZ2Q0F1Q0E7MkZEakJhLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0UsR0FBRyxXQUFXLEVBQUUsaUJBR1gsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTtzTEFHVixJQUFJO3NCQUF4QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBSZW5kZXJlcjIsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBWaWV3Q2hpbGQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRyZWVQcmVmaXgsIFhUcmVlTm9kZSwgWFRyZWVQcm9wZXJ0eSB9IGZyb20gJy4vdHJlZS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJc09ic2VydmFibGUsIFhJc0VtcHR5LCBYSXNGdW5jdGlvbiwgWElzVW5kZWZpbmVkLCBYSXNDaGFuZ2UsIFhTZXREYXRhLCBYQ29uZmlnU2VydmljZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVHJlZVByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVDb21wb25lbnQgZXh0ZW5kcyBYVHJlZVByb3BlcnR5IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKCd0cmVlJywgeyBzdGF0aWM6IHRydWUgfSkgdHJlZSE6IEVsZW1lbnRSZWY7XHJcbiAgbm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgdmlydHVhbE5vZGVzOiBYVHJlZU5vZGVbXSA9IFtdO1xyXG4gIGFjdGl2YXRlZE5vZGUhOiBYVHJlZU5vZGU7XHJcbiAgZGF0YUlzRnVuYyA9IGZhbHNlO1xyXG4gIGdldHRpbmcgPSBmYWxzZTtcclxuICB0cmVlRGF0YTogWFRyZWVOb2RlW10gPSBbXTtcclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBleHBhbmRlZEFsbCwgZGF0YSwgYWN0aXZhdGVkSWQsIGNoZWNrZWQsIG1hbnVhbCB9ID0gY2hhbmdlcztcclxuICAgIFhJc0NoYW5nZShkYXRhKSAmJiB0aGlzLnNldERhdGEoKTtcclxuICAgIFhJc0NoYW5nZShleHBhbmRlZEFsbCkgJiYgdGhpcy5zZXRFeHBhbmRlZEFsbCgpO1xyXG4gICAgWElzQ2hhbmdlKGFjdGl2YXRlZElkKSAmJiB0aGlzLnNldEFjdGl2YXRlZE5vZGUodGhpcy50cmVlRGF0YSk7XHJcbiAgICBYSXNDaGFuZ2UoY2hlY2tlZCkgJiYgdGhpcy5zZXRDaGVja2VkS2V5cyh0aGlzLmNoZWNrZWQpO1xyXG4gICAgWElzQ2hhbmdlKG1hbnVhbCkgJiYgdGhpcy5zZXRNYW51YWwoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0YSgpIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5kYXRhID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xyXG4gICAgdGhpcy5kYXRhSXNGdW5jID0gZmFsc2U7XHJcbiAgICBpZiAoWElzT2JzZXJ2YWJsZSh0aGlzLmRhdGEpKSB7XHJcbiAgICAgIFhTZXREYXRhPFhUcmVlTm9kZT4odGhpcy5kYXRhLCB0aGlzLl91blN1YmplY3QpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RGF0YUNoYW5nZSh4KTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKFhJc0Z1bmN0aW9uKHRoaXMuZGF0YSkpIHtcclxuICAgICAgdGhpcy5kYXRhSXNGdW5jID0gdHJ1ZTtcclxuICAgICAgdGhpcy5nZXREYXRhQnlGdW5jKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldERhdGFDaGFuZ2UodGhpcy5kYXRhIGFzIFhUcmVlTm9kZVtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TWFudWFsKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YUlzRnVuYykgdGhpcy5nZXREYXRhQnlGdW5jKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERhdGFCeUZ1bmMoKSB7XHJcbiAgICBpZiAoIXRoaXMubWFudWFsKSByZXR1cm47XHJcbiAgICBYU2V0RGF0YTxYVHJlZU5vZGU+KCh0aGlzLmRhdGEgYXMgRnVuY3Rpb24pKCksIHRoaXMuX3VuU3ViamVjdCkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YUNoYW5nZSh4KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREYXRhQ2hhbmdlKHZhbHVlOiBYVHJlZU5vZGVbXSkge1xyXG4gICAgIVhJc0VtcHR5KHRoaXMuYWN0aXZhdGVkSWQpICYmIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh2YWx1ZSk7XHJcbiAgICBjb25zdCBnZXRDaGlsZHJlbiA9IChub2RlOiBYVHJlZU5vZGUsIGxldmVsOiBudW1iZXIpID0+IHtcclxuICAgICAgbm9kZS5sZXZlbCA9IGxldmVsO1xyXG4gICAgICBub2RlLm9wZW4gPSBCb29sZWFuKHRoaXMuZXhwYW5kZWRBbGwpIHx8IGxldmVsIDw9IHRoaXMuZXhwYW5kZWRMZXZlbCB8fCB0aGlzLmV4cGFuZGVkLmluZGV4T2Yobm9kZS5pZCkgPj0gMDtcclxuICAgICAgbm9kZS5jaGVja2VkID0gdGhpcy5jaGVja2VkLmluZGV4T2Yobm9kZS5pZCkgPj0gMDtcclxuICAgICAgbm9kZS5jaGlsZHJlbkxvYWRlZCA9IG5vZGUub3BlbjtcclxuICAgICAgaWYgKFhJc1VuZGVmaW5lZChub2RlLmNoaWxkcmVuKSkgbm9kZS5jaGlsZHJlbiA9IHZhbHVlLmZpbHRlcigoeSkgPT4geS5waWQgPT09IG5vZGUuaWQpO1xyXG4gICAgICBpZiAoWElzVW5kZWZpbmVkKG5vZGUubGVhZikpIG5vZGUubGVhZiA9IChub2RlLmNoaWxkcmVuPy5sZW5ndGggYXMgbnVtYmVyKSA+IDA7XHJcbiAgICAgIGlmIChub2RlLmxlYWYpIG5vZGUuY2hpbGRyZW4/Lm1hcCgoeSkgPT4gZ2V0Q2hpbGRyZW4oeSwgbGV2ZWwgKyAxKSk7XHJcbiAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfTtcclxuICAgIHRoaXMudHJlZURhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMubm9kZXMgPSB2YWx1ZS5maWx0ZXIoKHgpID0+IFhJc0VtcHR5KHgucGlkKSkubWFwKCh4KSA9PiBnZXRDaGlsZHJlbih4LCAwKSk7XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tlZE5vZGVzKCk6IFhUcmVlTm9kZVtdIHtcclxuICAgIGxldCByZXN1bHQ6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgICBjb25zdCBnZXRDaGlsZHJlbiA9IChub2RlczogWFRyZWVOb2RlW10pID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KG5vZGVzKSkgcmV0dXJuO1xyXG4gICAgICBub2Rlcy5mb3JFYWNoKCh4KSA9PiB7XHJcbiAgICAgICAgaWYgKHguY2hlY2tlZCAmJiAhcmVzdWx0LmluY2x1ZGVzKHgpKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSBbLi4ucmVzdWx0LCB4XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIGdldENoaWxkcmVuKHRoaXMubm9kZXMpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGdldENoZWNrZWRLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tlZE5vZGVzKCkubWFwKCh4KSA9PiB4LmlkKTtcclxuICB9XHJcblxyXG4gIHNldENoZWNrZWRLZXlzKGtleXM6IGFueVtdID0gW10pIHtcclxuICAgIGNvbnN0IHNldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSwgY2xlYXIgPSBmYWxzZSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICB4LmNoZWNrZWQgPSAhY2xlYXIgJiYga2V5cy5pbmRleE9mKHguaWQpID49IDA7XHJcbiAgICAgICAgeC5jaGFuZ2UgJiYgeC5jaGFuZ2UodHJ1ZSk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSwgY2xlYXIpO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICBzZXRDaGlsZHJlbih0aGlzLm5vZGVzLCBrZXlzLmxlbmd0aCA9PT0gMCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRFeHBhbmRlZEFsbCgpIHtcclxuICAgIGNvbnN0IHNldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICB4Lm9wZW4gPSBCb29sZWFuKHRoaXMuZXhwYW5kZWRBbGwpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZXMpO1xyXG5cclxuICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwpIHtcclxuICAgICAgaWYgKHRoaXMudmlydHVhbE5vZGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMudmlydHVhbE5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubm9kZXMgPSBbLi4udGhpcy52aXJ0dWFsTm9kZXNdO1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMudmlydHVhbE5vZGVzKSB7XHJcbiAgICAgICAgdGhpcy5zZXRWaXJ0dWFsRXhwYW5kZWRBbGwoaXRlbSwgdGhpcy5leHBhbmRlZEFsbCBhcyBib29sZWFuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VmlydHVhbEV4cGFuZGVkQWxsKGl0ZW06IFhUcmVlTm9kZSwgZXhwYW5kZWRBbGw6IGJvb2xlYW4pIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMubm9kZXMuaW5kZXhPZihpdGVtKTtcclxuICAgIGlmIChleHBhbmRlZEFsbCkge1xyXG4gICAgICBsZXQgYWRkTm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgICAgIGNvbnN0IGdldE5vZGVzID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBuZC5jaGlsZHJlbiEpIHtcclxuICAgICAgICAgIGFkZE5vZGVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgZ2V0Tm9kZXMoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgZ2V0Tm9kZXMoaXRlbSk7XHJcbiAgICAgIHRoaXMubm9kZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgLi4uYWRkTm9kZXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLm5vZGVzXTtcclxuICB9XHJcblxyXG4gIHZpcnR1YWxUb2dnbGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmluZGV4T2Yobm9kZSk7XHJcbiAgICBpZiAobm9kZS5vcGVuKSB7XHJcbiAgICAgIGxldCBhZGROb2RlczogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgICAgY29uc3QgZ2V0Tm9kZXMgPSAobmQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5kLmNoaWxkcmVuISkge1xyXG4gICAgICAgICAgYWRkTm9kZXMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICBjaGlsZC5vcGVuICYmIGdldE5vZGVzKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIGdldE5vZGVzKG5vZGUpO1xyXG4gICAgICB0aGlzLm5vZGVzLnNwbGljZShpbmRleCArIDEsIDAsIC4uLmFkZE5vZGVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBkZWxDb3VudCA9IDA7XHJcbiAgICAgIGNvbnN0IGdldENvdW50ID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgICBkZWxDb3VudCArPSBuZC5jaGlsZHJlbiEubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5kLmNoaWxkcmVuISkge1xyXG4gICAgICAgICAgY2hpbGQub3BlbiAmJiBnZXRDb3VudChjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBnZXRDb3VudChub2RlKTtcclxuICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXggKyAxLCBkZWxDb3VudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZhdGVkTm9kZShub2RlczogWFRyZWVOb2RlW10pIHtcclxuICAgIGxldCBiZWZvcmUgPSB0aGlzLmFjdGl2YXRlZE5vZGU7XHJcbiAgICB0aGlzLmFjdGl2YXRlZE5vZGUgPSBub2Rlcy5maW5kKCh4KSA9PiB4LmlkID09IHRoaXMuYWN0aXZhdGVkSWQpIGFzIFhUcmVlTm9kZTtcclxuICAgIGlmICh0aGlzLmFjdGl2YXRlZE5vZGUpIHtcclxuICAgICAgdGhpcy5zZXRQYXJlbnRPcGVuKG5vZGVzLCB0aGlzLmFjdGl2YXRlZE5vZGUpO1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZENoYW5nZS5lbWl0KHRoaXMuYWN0aXZhdGVkTm9kZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoYmVmb3JlKSB7XHJcbiAgICAgIGJlZm9yZS5jaGFuZ2UgJiYgYmVmb3JlLmNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UGFyZW50T3Blbihub2RlczogWFRyZWVOb2RlW10sIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgY29uc3QgZ2V0UGFyZW50ID0gKGNoaWxkOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkLnBpZCkpIHJldHVybjtcclxuICAgICAgY29uc3QgcGFyZW50ID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PT0gY2hpbGQucGlkKSBhcyBYVHJlZU5vZGU7XHJcbiAgICAgIGlmICghWElzRW1wdHkocGFyZW50KSkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBbLi4udGhpcy5leHBhbmRlZCwgcGFyZW50LmlkXTtcclxuICAgICAgICBwYXJlbnQub3BlbiA9IHRydWU7XHJcbiAgICAgICAgcGFyZW50LmNoYW5nZSAmJiBwYXJlbnQuY2hhbmdlKCk7XHJcbiAgICAgICAgZ2V0UGFyZW50KHBhcmVudCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBnZXRQYXJlbnQobm9kZSk7XHJcbiAgfVxyXG5cclxuICBvblRvZ2dsZShldmVudDogRXZlbnQsIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgbm9kZS5vcGVuID0gIW5vZGUub3BlbjtcclxuICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwpIHtcclxuICAgICAgaWYgKHRoaXMubGF6eSAmJiAhbm9kZS5jaGlsZHJlbkxvYWRlZCkge1xyXG4gICAgICAgIHRoaXMuZ2V0TGF6eURhdGEobm9kZSwgKCkgPT4gdGhpcy52aXJ0dWFsVG9nZ2xlKG5vZGUpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZpcnR1YWxUb2dnbGUobm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAobm9kZS5vcGVuICYmICFub2RlLmNoaWxkcmVuTG9hZGVkKSB7XHJcbiAgICAgIGlmICh0aGlzLmxhenkpIHtcclxuICAgICAgICB0aGlzLmdldExhenlEYXRhKG5vZGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW5Mb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRMYXp5RGF0YShub2RlOiBYVHJlZU5vZGUsIGNhbGxCYWNrPzogKCkgPT4gdm9pZCkge1xyXG4gICAgbm9kZS5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIG5vZGUuY2hhbmdlICYmIG5vZGUuY2hhbmdlKCk7XHJcbiAgICAodGhpcy5kYXRhIGFzIChwaWQ/OiBhbnkpID0+IE9ic2VydmFibGU8WFRyZWVOb2RlW10+KShub2RlLmlkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+XHJcbiAgICAgICAgICB4Lm1hcCgoeSkgPT4ge1xyXG4gICAgICAgICAgICB5LmxldmVsID0gKG5vZGUubGV2ZWwgYXMgbnVtYmVyKSArIDE7XHJcbiAgICAgICAgICAgIHkuY2hlY2tlZCA9IG5vZGUuY2hlY2tlZDtcclxuICAgICAgICAgICAgcmV0dXJuIHk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbiA9IHg7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbkxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgbm9kZS5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGNhbGxCYWNrKSBjYWxsQmFjaygpO1xyXG4gICAgICAgIG5vZGUuY2hhbmdlICYmIG5vZGUuY2hhbmdlKCk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGFkZE5vZGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBsZXQgcGFyZW50ID0gdGhpcy50cmVlRGF0YS5maW5kKCh4KSA9PiB4LmlkID09PSBub2RlLnBpZCk7XHJcbiAgICBjb25zdCBfYWRkTm9kZSA9ICgpID0+IHtcclxuICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgIGlmICghcGFyZW50LmNoaWxkcmVuKSBwYXJlbnQuY2hpbGRyZW4gPSBbXTtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkID0gWy4uLnRoaXMuZXhwYW5kZWQsIHBhcmVudC5pZF07XHJcbiAgICAgICAgdGhpcy5hY3RpdmF0ZWRJZCA9IG5vZGUuaWQ7XHJcbiAgICAgICAgbm9kZS5sZXZlbCA9IE51bWJlcihwYXJlbnQubGV2ZWwpICsgMTtcclxuICAgICAgICBub2RlLnBpZCA9IHBhcmVudC5pZDtcclxuICAgICAgICB0aGlzLnRyZWVEYXRhLnB1c2gobm9kZSk7XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmF0ZWROb2RlKHRoaXMudHJlZURhdGEpO1xyXG4gICAgICAgIHBhcmVudC5vcGVuID0gdHJ1ZTtcclxuICAgICAgICBwYXJlbnQubGVhZiA9IHRydWU7XHJcbiAgICAgICAgcGFyZW50LmNoaWxkcmVuID0gWy4uLnBhcmVudC5jaGlsZHJlbiwgbm9kZV07XHJcbiAgICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCkge1xyXG4gICAgICAgICAgdGhpcy52aXJ0dWFsVG9nZ2xlKHBhcmVudCk7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmVudC5jaGFuZ2UgJiYgcGFyZW50LmNoYW5nZSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKFhJc0VtcHR5KG5vZGUucGlkKSkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkSWQgPSBub2RlLmlkO1xyXG4gICAgICAgIG5vZGUubGV2ZWwgPSAwO1xyXG4gICAgICAgIHRoaXMudHJlZURhdGEgPSBbLi4udGhpcy50cmVlRGF0YSwgbm9kZV07XHJcbiAgICAgICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLm5vZGVzLCBub2RlXTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZE5vZGUodGhpcy50cmVlRGF0YSk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMubGF6eSAmJiBwYXJlbnQgJiYgIXBhcmVudC5jaGlsZHJlbkxvYWRlZCkge1xyXG4gICAgICB0aGlzLmdldExhenlEYXRhKHBhcmVudCwgKCkgPT4ge1xyXG4gICAgICAgIF9hZGROb2RlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgX2FkZE5vZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZU5vZGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBsZXQgcGFyZW50ID0gdGhpcy50cmVlRGF0YS5maW5kKCh4KSA9PiB4LmlkID09PSBub2RlLnBpZCk7XHJcbiAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgIGlmICghcGFyZW50LmNoaWxkcmVuKSBwYXJlbnQuY2hpbGRyZW4gPSBbXTtcclxuICAgICAgcGFyZW50LmNoaWxkcmVuLnNwbGljZShwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihub2RlKSwgMSk7XHJcbiAgICAgIHBhcmVudC5sZWFmID0gcGFyZW50LmNoaWxkcmVuLmxlbmd0aCA+IDA7XHJcbiAgICAgIGlmICghcGFyZW50LmxlYWYpIHRoaXMuYWN0aXZhdGVkSWQgPSBwYXJlbnQuaWQ7XHJcbiAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmluZGV4T2Yobm9kZSk7XHJcbiAgICAgICAgbGV0IGFpbmRleCA9IGluZGV4IC0gMTtcclxuICAgICAgICBpZiAoaW5kZXggPT09IDAgJiYgdGhpcy5ub2Rlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICBhaW5kZXggPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYWN0aXZhdGVkTm9kZSA9IHRoaXMubm9kZXNbYWluZGV4XTtcclxuICAgICAgICB0aGlzLmFjdGl2YXRlZElkID0gYWN0aXZhdGVkTm9kZS5pZDtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZE5vZGUodGhpcy5ub2Rlcyk7XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMubm9kZXMgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgICAgICAgaWYgKGFjdGl2YXRlZE5vZGUpIHtcclxuICAgICAgICAgIGFjdGl2YXRlZE5vZGUuY2hhbmdlICYmIGFjdGl2YXRlZE5vZGUuY2hhbmdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICBwYXJlbnQuY2hhbmdlICYmIHBhcmVudC5jaGFuZ2UoKTtcclxuICAgIH0gZWxzZSBpZiAoWElzRW1wdHkobm9kZS5waWQpKSB7XHJcbiAgICAgIHRoaXMudHJlZURhdGEuc3BsaWNlKHRoaXMudHJlZURhdGEuaW5kZXhPZihub2RlKSwgMSk7XHJcbiAgICAgIHRoaXMubm9kZXMuc3BsaWNlKHRoaXMubm9kZXMuaW5kZXhPZihub2RlKSwgMSk7XHJcbiAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwpIHtcclxuICAgICAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZU5vZGUobm9kZTogWFRyZWVOb2RlLCBub3dOb2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIE9iamVjdC5hc3NpZ24obm9kZSwgbm93Tm9kZSk7XHJcbiAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oX2luZGV4OiBudW1iZXIsIGl0ZW06IFhUcmVlTm9kZSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI3RyZWUgY2xhc3M9XCJ4LXRyZWVcIj5cclxuICA8dWwgKm5nSWY9XCIhdmlydHVhbFNjcm9sbDsgZWxzZSB2aXJ0dWFsU2Nyb2xsVHBsXCI+XHJcbiAgICA8bGlcclxuICAgICAgeC10cmVlLW5vZGVcclxuICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZXM7IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCJcclxuICAgICAgW25vZGVdPVwibm9kZVwiXHJcbiAgICAgIFtsYXp5XT1cImxhenlcIlxyXG4gICAgICBbbGF6eURhdGFdPVwiZGF0YVwiXHJcbiAgICAgIFtub2RlSGVpZ2h0XT1cIm5vZGVIZWlnaHRcIlxyXG4gICAgICBbbm9kZU5vd3JhcF09XCJub2RlTm93cmFwXCJcclxuICAgICAgW25vZGVBbGlnbkl0ZW1zXT1cIm5vZGVBbGlnbkl0ZW1zXCJcclxuICAgICAgW3RyZWVdPVwidGhpc1wiXHJcbiAgICA+PC9saT5cclxuICA8L3VsPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdmlydHVhbFNjcm9sbFRwbD5cclxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICBbaXRlbVNpemVdPVwiaXRlbVNpemVcIlxyXG4gICAgW21pbkJ1ZmZlclB4XT1cIm1pbkJ1ZmZlclB4XCJcclxuICAgIFttYXhCdWZmZXJQeF09XCJtYXhCdWZmZXJQeFwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInZpcnR1YWxTY3JvbGxIZWlnaHRcIlxyXG4gID5cclxuICAgIDx4LXRyZWUtbm9kZVxyXG4gICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBub2RlIG9mIG5vZGVzOyB0ZW1wbGF0ZUNhY2hlU2l6ZTogMDsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIlxyXG4gICAgICBbbm9kZV09XCJub2RlXCJcclxuICAgICAgW2xhenldPVwibGF6eVwiXHJcbiAgICAgIFtsYXp5RGF0YV09XCJkYXRhXCJcclxuICAgICAgW25vZGVIZWlnaHRdPVwibm9kZUhlaWdodFwiXHJcbiAgICAgIFtub2RlTm93cmFwXT1cIm5vZGVOb3dyYXBcIlxyXG4gICAgICBbbm9kZUFsaWduSXRlbXNdPVwibm9kZUFsaWduSXRlbXNcIlxyXG4gICAgICBbdHJlZV09XCJ0aGlzXCJcclxuICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwidmlydHVhbFNjcm9sbFwiXHJcbiAgICA+PC94LXRyZWUtbm9kZT5cclxuICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0g5o+Q5YmN5Yqg6L29bG9hZGluZ+eahOWbvuaghy0tPlxyXG48eC1pY29uICpuZ0lmPVwibGF6eVwiIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiIHR5cGU9XCJmdG8tbG9hZGVyXCI+PC94LWljb24+XHJcbiJdfQ==
@@ -12,10 +12,10 @@ import { ScrollingModule } from '@angular/cdk/scrolling';
12
12
  import * as i0 from "@angular/core";
13
13
  export class XTreeModule {
14
14
  }
15
- /** @nocollapse */ /** @nocollapse */ XTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: XTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
- /** @nocollapse */ /** @nocollapse */ XTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: XTreeModule, declarations: [XTreeComponent, XTreeNodeComponent, XTreeProperty, XTreeNodeProperty], imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule], exports: [XTreeComponent, XTreeNodeComponent] });
17
- /** @nocollapse */ /** @nocollapse */ XTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: XTreeModule, imports: [[CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule]] });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: XTreeModule, decorators: [{
15
+ /** @nocollapse */ XTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
+ /** @nocollapse */ XTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: XTreeModule, declarations: [XTreeComponent, XTreeNodeComponent, XTreeProperty, XTreeNodeProperty], imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule], exports: [XTreeComponent, XTreeNodeComponent] });
17
+ /** @nocollapse */ XTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeModule, imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeModule, decorators: [{
19
19
  type: NgModule,
20
20
  args: [{
21
21
  declarations: [XTreeComponent, XTreeNodeComponent, XTreeProperty, XTreeNodeProperty],
@@ -23,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23
23
  imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule]
24
24
  }]
25
25
  }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlL3RyZWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBT3pELE1BQU0sT0FBTyxXQUFXOzsrSUFBWCxXQUFXO2dKQUFYLFdBQVcsaUJBSlAsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsYUFFekUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxhQURwRyxjQUFjLEVBQUUsa0JBQWtCO2dKQUdqQyxXQUFXLFlBRmIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUM7NEZBRXBHLFdBQVc7a0JBTHZCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQztvQkFDcEYsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDO29CQUM3QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUM7aUJBQ2hIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFhUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ub2RlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhJY29uTW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvaWNvbic7XHJcbmltcG9ydCB7IFhDaGVja2JveE1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NoZWNrYm94JztcclxuaW1wb3J0IHsgWE91dGxldE1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL291dGxldCc7XHJcbmltcG9ydCB7IFhMaW5rTW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvbGluayc7XHJcbmltcG9ydCB7IFhUcmVlUHJvcGVydHksIFhUcmVlTm9kZVByb3BlcnR5IH0gZnJvbSAnLi90cmVlLnByb3BlcnR5JztcclxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1hUcmVlQ29tcG9uZW50LCBYVHJlZU5vZGVDb21wb25lbnQsIFhUcmVlUHJvcGVydHksIFhUcmVlTm9kZVByb3BlcnR5XSxcclxuICBleHBvcnRzOiBbWFRyZWVDb21wb25lbnQsIFhUcmVlTm9kZUNvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFhJY29uTW9kdWxlLCBYQ2hlY2tib3hNb2R1bGUsIFhPdXRsZXRNb2R1bGUsIFhMaW5rTW9kdWxlLCBTY3JvbGxpbmdNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVHJlZU1vZHVsZSB7fVxyXG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlL3RyZWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBT3pELE1BQU0sT0FBTyxXQUFXOzsySEFBWCxXQUFXOzRIQUFYLFdBQVcsaUJBSlAsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsYUFFekUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxhQURwRyxjQUFjLEVBQUUsa0JBQWtCOzRIQUdqQyxXQUFXLFlBRlosWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZTsyRkFFbkcsV0FBVztrQkFMdkIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixDQUFDO29CQUNwRixPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUM7b0JBQzdDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQztpQkFDaEgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgWFRyZWVDb21wb25lbnQgfSBmcm9tICcuL3RyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWFRyZWVOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLW5vZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWEljb25Nb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS9pY29uJztcclxuaW1wb3J0IHsgWENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBYT3V0bGV0TW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvb3V0bGV0JztcclxuaW1wb3J0IHsgWExpbmtNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS9saW5rJztcclxuaW1wb3J0IHsgWFRyZWVQcm9wZXJ0eSwgWFRyZWVOb2RlUHJvcGVydHkgfSBmcm9tICcuL3RyZWUucHJvcGVydHknO1xyXG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbWFRyZWVDb21wb25lbnQsIFhUcmVlTm9kZUNvbXBvbmVudCwgWFRyZWVQcm9wZXJ0eSwgWFRyZWVOb2RlUHJvcGVydHldLFxyXG4gIGV4cG9ydHM6IFtYVHJlZUNvbXBvbmVudCwgWFRyZWVOb2RlQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgWEljb25Nb2R1bGUsIFhDaGVja2JveE1vZHVsZSwgWE91dGxldE1vZHVsZSwgWExpbmtNb2R1bGUsIFNjcm9sbGluZ01vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhUcmVlTW9kdWxlIHt9XHJcbiJdfQ==
@@ -82,8 +82,8 @@ export class XTreeProperty extends XProperty {
82
82
  this.manualChange = new EventEmitter();
83
83
  }
84
84
  }
85
- /** @nocollapse */ /** @nocollapse */ XTreeProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: XTreeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
86
- /** @nocollapse */ /** @nocollapse */ XTreeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: XTreeProperty, selector: "ng-component", inputs: { data: "data", checkbox: "checkbox", lazy: "lazy", activatedId: "activatedId", expanded: "expanded", checked: "checked", expandedAll: "expandedAll", expandedLevel: "expandedLevel", nodeOpen: "nodeOpen", spacing: "spacing", labelTpl: "labelTpl", nodeHeight: "nodeHeight", allowManyActivated: "allowManyActivated", manual: "manual", levelCheck: "levelCheck", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", actions: "actions", virtualScroll: "virtualScroll", virtualScrollHeight: "virtualScrollHeight", itemSize: "itemSize", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx" }, outputs: { activatedChange: "activatedChange", checkboxChange: "checkboxChange", manualChange: "manualChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
85
+ /** @nocollapse */ XTreeProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
86
+ /** @nocollapse */ XTreeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeProperty, selector: "ng-component", inputs: { data: "data", checkbox: "checkbox", lazy: "lazy", activatedId: "activatedId", expanded: "expanded", checked: "checked", expandedAll: "expandedAll", expandedLevel: "expandedLevel", nodeOpen: "nodeOpen", spacing: "spacing", labelTpl: "labelTpl", nodeHeight: "nodeHeight", allowManyActivated: "allowManyActivated", manual: "manual", levelCheck: "levelCheck", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", actions: "actions", virtualScroll: "virtualScroll", virtualScrollHeight: "virtualScrollHeight", itemSize: "itemSize", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx" }, outputs: { activatedChange: "activatedChange", checkboxChange: "checkboxChange", manualChange: "manualChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
87
87
  __decorate([
88
88
  XDataConvert()
89
89
  ], XTreeProperty.prototype, "data", void 0);
@@ -137,7 +137,7 @@ __decorate([
137
137
  XWithConfig(X_CONFIG_NAME, 26),
138
138
  XInputNumber()
139
139
  ], XTreeProperty.prototype, "itemSize", void 0);
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: XTreeProperty, decorators: [{
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeProperty, decorators: [{
141
141
  type: Component,
142
142
  args: [{ template: '' }]
143
143
  }], propDecorators: { data: [{
@@ -222,8 +222,8 @@ export class XTreeNodeProperty extends XProperty {
222
222
  this.nodeAlignItems = 'center';
223
223
  }
224
224
  }
225
- /** @nocollapse */ /** @nocollapse */ XTreeNodeProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: XTreeNodeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
226
- /** @nocollapse */ /** @nocollapse */ XTreeNodeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: XTreeNodeProperty, selector: "ng-component", inputs: { node: "node", level: "level", lazy: "lazy", nodeHeight: "nodeHeight", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", lazyData: "lazyData", virtualScroll: "virtualScroll" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
225
+ /** @nocollapse */ XTreeNodeProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeNodeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
226
+ /** @nocollapse */ XTreeNodeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeNodeProperty, selector: "ng-component", inputs: { node: "node", level: "level", lazy: "lazy", nodeHeight: "nodeHeight", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", lazyData: "lazyData", virtualScroll: "virtualScroll" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
227
227
  __decorate([
228
228
  XInputBoolean()
229
229
  ], XTreeNodeProperty.prototype, "lazy", void 0);
@@ -236,7 +236,7 @@ __decorate([
236
236
  __decorate([
237
237
  XInputBoolean()
238
238
  ], XTreeNodeProperty.prototype, "virtualScroll", void 0);
239
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: XTreeNodeProperty, decorators: [{
239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeNodeProperty, decorators: [{
240
240
  type: Component,
241
241
  args: [{ template: '' }]
242
242
  }], propDecorators: { node: [{
@@ -256,4 +256,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
256
256
  }], virtualScroll: [{
257
257
  type: Input
258
258
  }] } });
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5wcm9wZXJ0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixTQUFTLEVBRVQsYUFBYSxFQUliLFlBQVksRUFFWixXQUFXLEVBRVosTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFlLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVwRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUNwQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFFN0I7O0dBRUc7QUFFSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQVM7SUFENUM7O1FBRUU7OztXQUdHO1FBQ3NCLFNBQUksR0FBcUIsRUFBRSxDQUFDO1FBZ0JyRDs7O1dBR0c7UUFDTSxhQUFRLEdBQVUsRUFBRSxDQUFDO1FBQzlCOzs7V0FHRztRQUNNLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFNN0I7OztXQUdHO1FBQ3NCLGtCQUFhLEdBQVksQ0FBQyxDQUFDLENBQUM7UUEwQnJEOzs7V0FHRztRQUNPLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUMxRDs7O1dBR0c7UUFDTyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDekQ7OztXQUdHO1FBQ3VCLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDakQ7OztXQUdHO1FBQ3VCLGVBQVUsR0FBYSxJQUFJLENBQUM7UUFDdEQ7OztXQUdHO1FBQ3VCLGVBQVUsR0FBYSxJQUFJLENBQUM7UUFNdEQ7OztXQUdHO1FBQ00sWUFBTyxHQUFrQixFQUFFLENBQUM7UUFnQnJDOzs7V0FHRztRQUNNLGdCQUFXLEdBQVcsR0FBRyxDQUFDO1FBQ25DOzs7V0FH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YUFBYSxFQUFFO3dEQUEwQjs0RkF4Q3hDLGlCQUFpQjtrQkFEN0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7OEJBTWhCLElBQUk7c0JBQVosS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS29CLElBQUk7c0JBQTdCLEtBQUs7Z0JBS21CLFVBQVU7c0JBQWxDLEtBQUs7Z0JBS29CLFVBQVU7c0JBQW5DLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtvQixhQUFhO3NCQUF0QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBYRGF0YUNvbnZlcnQsXHJcbiAgWFByb3BlcnR5LFxyXG4gIFhEYXRhLFxyXG4gIFhJbnB1dEJvb2xlYW4sXHJcbiAgWFBhcmVudElkZW50aXR5UHJvcGVydHksXHJcbiAgWE51bWJlcixcclxuICBYQm9vbGVhbixcclxuICBYSW5wdXROdW1iZXIsXHJcbiAgWElkZW50aXR5UHJvcGVydHksXHJcbiAgWFdpdGhDb25maWcsXHJcbiAgWEFsaWduXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IElucHV0LCBUZW1wbGF0ZVJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIFRyZWVcclxuICogQHNlbGVjdG9yIHgtdHJlZVxyXG4gKiBAZGVjb3JhdG9yIGNvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFhUcmVlUHJlZml4ID0gJ3gtdHJlZSc7XHJcbmNvbnN0IFhfQ09ORklHX05BTUUgPSAndHJlZSc7XHJcblxyXG4vKipcclxuICogVHJlZSBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJyB9KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVQcm9wZXJ0eSBleHRlbmRzIFhQcm9wZXJ0eSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueaVsOaNrlxyXG4gICAqIEBlbl9VUyBOb2RlIGRhdGFcclxuICAgKi9cclxuICBASW5wdXQoKSBAWERhdGFDb252ZXJ0KCkgZGF0YTogWERhdGE8WFRyZWVOb2RlPiA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrlpJrpgInmoYZcclxuICAgKiBAZW5fVVMgU2hvdyBjaGVja2JveFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgY2hlY2tib3g/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5byA5ZCv5oeS5Yqg6L296IqC54K577yMZGF0YSDlv4Xpobvorr7nva7miJDlh73mlbDnsbvlnotcclxuICAgKiBAZW5fVVMgT3BlbiBsYXp5IGxvYWRpbmcgbm9kZSwgZGF0YSBtdXN0IGJlIHNldCB0byBmdW5jdGlvbiB0eXBlXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBsYXp5PzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WJjea/gOa0u+eahOiKgueCuSBJZFxyXG4gICAqIEBlbl9VUyBDdXJyZW50bHkgYWN0aXZlIG5vZGUgSWRcclxuICAgKi9cclxuICBASW5wdXQoKSBhY3RpdmF0ZWRJZDogYW55O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsZXlvIDnmoToioLngrlcclxuICAgKiBAZW5fVVMgRXhwYW5kZWQgbm9kZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGV4cGFuZGVkOiBhbnlbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDpgInkuK3nmoToioLngrlcclxuICAgKiBAZW5fVVMgQ2hlY2tib3ggc2VsZWN0ZWQgbm9kZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNoZWNrZWQ6IGFueVtdID0gW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWxleW8gOaJgOacieiKgueCuVxyXG4gICAqIEBlbl9VUyBFeHBhbmQgYWxsIG5vZGVzXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBleHBhbmRlZEFsbD86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpu5jorqTlsZXlvIDnmoTlsYLnuqdcclxuICAgKiBAZW5fVVMgRGVmYXVsdCBleHBhbmRlZCBsZXZlbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXROdW1iZXIoKSBleHBhbmRlZExldmVsOiBYTnVtYmVyID0gLTE7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOeCueWHu+iKgueCueWwseinpuWPkeWxleW8gC/mlLbotbfnmoTmk43kvZzvvIzor7fnoa7kv53oioLngrnkuIrmsqHmnInlhbblroPmk43kvZzvvIhjaGVja2JveOOAgeiHquWumuS5ieeahOaTjeS9nOaMiemSru+8iVxyXG4gICAqIEBlbl9VUyBDbGljayB0aGUgbm9kZSB0byB0cmlnZ2VyIHRoZSBleHBhbmQvY29sbGFwc2Ugb3BlcmF0aW9uLCBwbGVhc2UgbWFrZSBzdXJlIHRoYXQgdGhlcmUgYXJlIG5vIG90aGVyIG9wZXJhdGlvbnMgb24gdGhlIG5vZGUgKGNoZWNrYm94LCBjdXN0b20gb3BlcmF0aW9uIGJ1dHRvbilcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIG5vZGVPcGVuPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWNleS9jemXtOi3ne+8jOi/meS4quS4juWxgue6p+eahOS5mOenr+eul+WHuuiKgueCueeahOW3pui+uei3ne+8jOWNleS9jSByZW1cclxuICAgKiBAZW5fVVMgVW5pdCBzcGFjaW5nLCB0aGUgcHJvZHVjdCBvZiB0aGlzIGFuZCB0aGUgbGV2ZWwgY2FsY3VsYXRlcyB0aGUgbGVmdCBtYXJnaW4gb2YgdGhlIG5vZGUsIHRoZSB1bml0IGlzIHJlbVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYTnVtYmVyPihYX0NPTkZJR19OQU1FLCAwLjg3NSkgQFhJbnB1dE51bWJlcigpIHNwYWNpbmc/OiBYTnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoIfnrb7oh6rlrprkuYnmqKHmnb9cclxuICAgKiBAZW5fVVMgTGFiZWwgY3VzdG9tIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFiZWxUcGw/OiBUZW1wbGF0ZVJlZjx2b2lkPjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K555qE6auY5bqm77yM5Y2V5L2NIHJlbSwg6buY6K6kIDAg5piv6Ieq6YCC5bqU6auY5bqmXHJcbiAgICogQGVuX1VTIFRoZSBoZWlnaHQgb2YgdGhlIG5vZGUgaW4gcmVtXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhOdW1iZXI+KFhfQ09ORklHX05BTUUsIDApIEBYSW5wdXROdW1iZXIoKSBub2RlSGVpZ2h0ITogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5piv5ZCm5YWB6K645aSa5qyh54K55Ye75LiA5Liq6IqC54K56Kem5Y+R5aSa5qyh5LqL5Lu2XHJcbiAgICogQGVuX1VTIFdoZXRoZXIgdG8gYWxsb3cgbXVsdGlwbGUgY2xpY2tzIG9uIGEgbm9kZSB0byB0cmlnZ2VyIG11bHRpcGxlIGV2ZW50c1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgYWxsb3dNYW55QWN0aXZhdGVkPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WJjeeCueWHu+mAieS4reeahOiKgueCueWPmOWMlueahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBUaGUgZXZlbnQgb2YgdGhlIGN1cnJlbnRseSBjbGlja2VkIG5vZGUgY2hhbmdlXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGFjdGl2YXRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8WFRyZWVOb2RlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDkvb/nlKggY2hlY2tlZGJveCDpgInkuK3lj5jljJbnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgVXNlIGNoZWNrZWRib3ggdG8gc2VsZWN0IGNoYW5nZWQgZXZlbnRzXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGNoZWNrYm94Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxYVHJlZU5vZGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWmguaenCBkYXRhIOaYr+WHveaVsOexu+Wei++8jOWPr+S7pemAmui/h+atpOWPguaVsOaOp+WItuivt+axgu+8jOW4uOeUqOS6juW8ueahhuS4reeahOihqOagvO+8jOW8ueWHuuWQjuWGjeivt+axglxyXG4gICAqIEBlbl9VUyBJZiBkYXRhIGlzIGEgZnVuY3Rpb24gdHlwZSwgeW91IGNhbiB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gY29udHJvbCB0aGUgcmVxdWVzdCwgd2hpY2ggaXMgb2Z0ZW4gdXNlZCBpbiB0aGUgZm9ybSBpbiB0aGUgcG9wLXVwIGJveCwgYW5kIHRoZW4gcmVxdWVzdCBpdCBhZnRlciBpdCBwb3BzIHVwXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBtYW51YWw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDnirbmgIHmlLnlj5jop6blj5HlsYLnuqfmo4Dmn6VcclxuICAgKiBAZW5fVVMgQ2hlY2tib3ggc3RhdHVzIGNoYW5nZXMgdHJpZ2dlciBsZXZlbCBjaGVja3NcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIGxldmVsQ2hlY2s6IFhCb29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55YaF5a655LiN5o2i6KGM5pi+56S655yB55Wl5Y+3XHJcbiAgICogQGVuX1VTIFNob3cgZWxsaXBzaXMgd2l0aG91dCB3cmFwcGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgbm9kZU5vd3JhcDogWEJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnlnoLnm7Tlr7npvZDmlrnlvI9cclxuICAgKiBAZW5fVVMgU2hvdyBlbGxpcHNpcyB3aXRob3V0IHdyYXBwaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhBbGlnbj4oWF9DT05GSUdfTkFNRSwgJ2NlbnRlcicpIG5vZGVBbGlnbkl0ZW1zITogWEFsaWduO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoJHoioLngrnmk43kvZzmjInpkq5cclxuICAgKiBAZW5fVVMgVHJlZSBub2RlIG9wZXJhdGlvbiBidXR0b25zXHJcbiAgICovXHJcbiAgQElucHV0KCkgYWN0aW9uczogWFRyZWVBY3Rpb25bXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvIDlkK/omZrmi5/mu5rliqhcclxuICAgKiBAZW5fVVMgVHVybiBvbiB2aXJ0dWFsIHNjcm9sbGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSkgQFhJbnB1dEJvb2xlYW4oKSB2aXJ0dWFsU2Nyb2xsITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa7muWKqOWMuuWfn+mrmOW6pu+8jOW8gOWQr+iZmuaLn+a7muWKqOeahOaXtuWAmeeUn+aViFxyXG4gICAqIEBlbl9VUyBSb2xsaW5nIGFyZWEgaGVpZ2h0XHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPG51bWJlcj4oWF9DT05GSUdfTkFNRSwgNDAwKSBAWElucHV0TnVtYmVyKCkgdmlydHVhbFNjcm9sbEhlaWdodCE6IG51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04gaXRlbVNpemXvvIzlr7nlupQgY2RrIHNjcm9sbCDkuK3nmoTlj4LmlbDvvIzlvIDlkK/omZrmi5/mu5rliqjmiY3nlJ/mlYhcclxuICAgKiBAZW5fVVMgaXRlbVNpemXvvIxjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXJhbWV0ZXJzIGluIGNkayBzY3JvbGxcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8bnVtYmVyPihYX0NPTkZJR19OQU1FLCAyNikgQFhJbnB1dE51bWJlcigpIGl0ZW1TaXplITogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDotoXlh7rlj6/op4bnqpflj6PnvJPlhrLljLrnmoTmnIDlsI/lgLzvvIzlr7nlupQgY2RrIHNjcm9sbCDkuK3nmoTlj4LmlbDvvIzlvIDlkK/omZrmi5/mu5rliqjmiY3nlJ/mlYhcclxuICAgKiBAZW5fVVMgRXhjZWVkIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSB2aXNpYmxlIHdpbmRvdyBidWZmZXIsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhcmFtZXRlcnMgaW4gY2RrIHNjcm9sbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1pbkJ1ZmZlclB4OiBudW1iZXIgPSAxMDA7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa4suafk+aWsOaVsOaNrue8k+WGsuWMuueahOWDj+e0oO+8jOWvueW6lCBjZGsgc2Nyb2xsIOS4reeahOWPguaVsO+8jOW8gOWQr+iZmuaLn+a7muWKqOaJjeeUn+aViFxyXG4gICAqIEBlbl9VUyBSZW5kZXIgdGhlIHBpeGVscyBvZiB0aGUgbmV3IGRhdGEgYnVmZmVyLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXJhbWV0ZXJzIGluIGNkayBzY3JvbGxcclxuICAgKi9cclxuICBASW5wdXQoKSBtYXhCdWZmZXJQeDogbnVtYmVyID0gMjAwO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlj4LmlbDmjqfliLbor7fmsYLmlLnlj5jkuovku7ZcclxuICAgKiBAZW5fVVMgUGFyYW1ldGVyIGNvbnRyb2wgcmVxdWVzdCBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbWFudWFsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG59XHJcblxyXG4vKipcclxuICogQHpoX0NOIFRyZWUg5pWw5o2u5a+56LGhXHJcbiAqIEBlbl9VUyBUcmVlIGRhdGEgb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhUcmVlTm9kZSBleHRlbmRzIFhQYXJlbnRJZGVudGl0eVByb3BlcnR5PFhUcmVlTm9kZT4ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsZXlvIBcclxuICAgKiBAZW5fVVMgVW5mb2xkXHJcbiAgICovXHJcbiAgb3Blbj86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa/gOa0u+eahFxyXG4gICAqIEBlbl9VUyBhY3RpdmVcclxuICAgKi9cclxuICBhY3RpdmF0ZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmo4Dmn6Xmm7TmlrBcclxuICAgKiBAZW5fVVMgQ2hlY2sgZm9yIHVwZGF0ZXNcclxuICAgKi9cclxuICBjaGFuZ2U/OiBGdW5jdGlvbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5a2Q6IqC54K55bey5Yqg6L296L+HXHJcbiAgICogQGVuX1VTIENoaWxkIG5vZGUgaGFzIGJlZW4gbG9hZGVkXHJcbiAgICovXHJcbiAgY2hpbGRyZW5Mb2FkZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDmmK/lkKbpgInkuK1cclxuICAgKiBAZW5fVVMgd2hldGhlciBjaGVja2JveCBpcyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIGNoZWNrZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKhjaGVja2JveFxyXG4gICAqIEBlbl9VUyBEaXNhYmxlIGNoZWNrYm94XHJcbiAgICovXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDlrZDoioLngrnmmK/lkKbmnInpgInkuK3nmoTnirbmgIFcclxuICAgKiBAZW5fVVMgV2hldGhlciB0aGUgY2hpbGQgbm9kZSBvZiBjaGVja2JveCBpcyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnpq5jluqbvvIzkvJjlhYjnuqfpq5jkuo4gdHJlZSDlj4LmlbDvvIzljZXkvY0gcmVtXHJcbiAgICogQGVuX1VTIE5vZGUgaGVpZ2h0IGluIHJlbSwgaGlnaGVzdCBwcmlvcml0eVxyXG4gICAqL1xyXG4gIGhlaWdodD86IG51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55YaF5a655LiN5o2i6KGM5pi+56S655yB55Wl5Y+377yM5LyY5YWI57qn6auY5LqOIHRyZWUg5Y+C5pWwXHJcbiAgICogQGVuX1VTIFNob3cgZWxsaXBzaXMgd2l0aG91dCB3cmFwcGluZywgaGlnaGVzdCBwcmlvcml0eVxyXG4gICAqL1xyXG4gIG5vd3JhcD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueWeguebtOWvuem9kOaWueW8j++8jOS8mOWFiOe6p+mrmOS6jiB0cmVlIOWPguaVsFxyXG4gICAqIEBlbl9VUyBTaG93IGVsbGlwc2lzIHdpdGhvdXQgd3JhcHBpbmcsIGhpZ2hlc3QgcHJpb3JpdHlcclxuICAgKi9cclxuICBhbGlnbkl0ZW1zPzogWEFsaWduO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoh6rlrprkuYnlsZ7mgKdcclxuICAgKiBAZW5fVVMgQ3VzdG9tIGF0dHJpYnV0ZXNcclxuICAgKi9cclxuICBbcHJvcGVydHk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiBUcmVlIOiKgueCueaTjeS9nFxyXG4gKiBAZW5fVVMgVHJlZSBub2RlIG9wZXJhdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYVHJlZUFjdGlvbiBleHRlbmRzIFhJZGVudGl0eVByb3BlcnR5IHtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pON5L2cXHJcbiAgICogQGVuX1VTIE9wZXJhdGluZ1xyXG4gICAqL1xyXG4gIGhhbmRsZXI/OiBGdW5jdGlvbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5Zu+5qCHXHJcbiAgICogQGVuX1VTIEljb25cclxuICAgKi9cclxuICBpY29uPzogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogVHJlZU5vZGVcclxuICogQHNlbGVjdG9yIHgtdHJlZS1ub2RlXHJcbiAqIEBkZWNvcmF0b3IgZGlyZWN0aXZlXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWFRyZWVOb2RlUHJlZml4ID0gJ3gtdHJlZS1ub2RlJztcclxuXHJcbi8qKlxyXG4gKiBUcmVlTm9kZSBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJyB9KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVOb2RlUHJvcGVydHkgZXh0ZW5kcyBYUHJvcGVydHkge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnmlbDmja5cclxuICAgKiBAZW5fVVMgTm9kZSBkYXRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgbm9kZTogWFRyZWVOb2RlID0ge307XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWxgue6p1xyXG4gICAqIEBlbl9VUyBMZXZlbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxldmVsPzogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5oeS5Yqg6L295a2Q6IqC54K5XHJcbiAgICogQGVuX1VTIExhenkgbG9hZGluZyBvZiBjaGlsZCBub2Rlc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgbGF6eT86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnnmoTpq5jluqbvvIzljZXkvY0gcmVtXHJcbiAgICogQGVuX1VTIFRoZSBoZWlnaHQgb2YgdGhlIG5vZGUgaW4gcmVtXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dE51bWJlcigpIG5vZGVIZWlnaHQ6IFhOdW1iZXIgPSAwO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnlhoXlrrnkuI3mjaLooYzmmL7npLrnnIHnlaXlj7dcclxuICAgKiBAZW5fVVMgU2hvdyBlbGxpcHNpcyB3aXRob3V0IHdyYXBwaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBub2RlTm93cmFwPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueWeguebtOWvuem9kOaWueW8j1xyXG4gICAqIEBlbl9VUyBTaG93IGVsbGlwc2lzIHdpdGhvdXQgd3JhcHBpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSBub2RlQWxpZ25JdGVtczogWEFsaWduID0gJ2NlbnRlcic7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaHkuWKoOi9veWHveaVsFxyXG4gICAqIEBlbl9VUyBMYXp5IGxvYWRpbmcgZnVuY3Rpb25cclxuICAgKi9cclxuICBASW5wdXQoKSBsYXp5RGF0YSE6IFhEYXRhPFhUcmVlTm9kZVtdPjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5qCH6K6w5Li66Jma5ouf5rua5Yqo55qE6IqC54K5XHJcbiAgICogQGVuX1VTIE1hcmsgYXMgYSBub2RlIG9mIHZpcnR1YWwgcm9sbGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgdmlydHVhbFNjcm9sbD86IFhCb29sZWFuO1xyXG59XHJcbiJdfQ==
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5wcm9wZXJ0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixTQUFTLEVBRVQsYUFBYSxFQUliLFlBQVksRUFFWixXQUFXLEVBRVosTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFlLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVwRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUNwQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFFN0I7O0dBRUc7QUFFSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQVM7SUFENUM7O1FBRUU7OztXQUdHO1FBQ3NCLFNBQUksR0FBcUIsRUFBRSxDQUFDO1FBZ0JyRDs7O1dBR0c7UUFDTSxhQUFRLEdBQVUsRUFBRSxDQUFDO1FBQzlCOzs7V0FHRztRQUNNLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFNN0I7OztXQUdHO1FBQ3NCLGtCQUFhLEdBQVksQ0FBQyxDQUFDLENBQUM7UUEwQnJEOzs7V0FHRztRQUNPLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUMxRDs7O1dBR0c7UUFDTyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDekQ7OztXQUdHO1FBQ3VCLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDakQ7OztXQUdHO1FBQ3VCLGVBQVUsR0FBYSxJQUFJLENBQUM7UUFDdEQ7OztXQUdHO1FBQ3VCLGVBQVUsR0FBYSxJQUFJLENBQUM7UUFNdEQ7OztXQUdHO1FBQ00sWUFBTyxHQUFrQixFQUFFLENBQUM7UUFnQnJDOzs7V0FHRztRQUNNLGdCQUFXLEdBQVcsR0FBRyxDQUFDO1FBQ25DOzs7V0FH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YUFBYSxFQUFFO3dEQUEwQjsyRkF4Q3hDLGlCQUFpQjtrQkFEN0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7OEJBTWhCLElBQUk7c0JBQVosS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS29CLElBQUk7c0JBQTdCLEtBQUs7Z0JBS21CLFVBQVU7c0JBQWxDLEtBQUs7Z0JBS29CLFVBQVU7c0JBQW5DLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtvQixhQUFhO3NCQUF0QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBYRGF0YUNvbnZlcnQsXHJcbiAgWFByb3BlcnR5LFxyXG4gIFhEYXRhLFxyXG4gIFhJbnB1dEJvb2xlYW4sXHJcbiAgWFBhcmVudElkZW50aXR5UHJvcGVydHksXHJcbiAgWE51bWJlcixcclxuICBYQm9vbGVhbixcclxuICBYSW5wdXROdW1iZXIsXHJcbiAgWElkZW50aXR5UHJvcGVydHksXHJcbiAgWFdpdGhDb25maWcsXHJcbiAgWEFsaWduXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IElucHV0LCBUZW1wbGF0ZVJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIFRyZWVcclxuICogQHNlbGVjdG9yIHgtdHJlZVxyXG4gKiBAZGVjb3JhdG9yIGNvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFhUcmVlUHJlZml4ID0gJ3gtdHJlZSc7XHJcbmNvbnN0IFhfQ09ORklHX05BTUUgPSAndHJlZSc7XHJcblxyXG4vKipcclxuICogVHJlZSBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJyB9KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVQcm9wZXJ0eSBleHRlbmRzIFhQcm9wZXJ0eSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueaVsOaNrlxyXG4gICAqIEBlbl9VUyBOb2RlIGRhdGFcclxuICAgKi9cclxuICBASW5wdXQoKSBAWERhdGFDb252ZXJ0KCkgZGF0YTogWERhdGE8WFRyZWVOb2RlPiA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrlpJrpgInmoYZcclxuICAgKiBAZW5fVVMgU2hvdyBjaGVja2JveFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgY2hlY2tib3g/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5byA5ZCv5oeS5Yqg6L296IqC54K577yMZGF0YSDlv4Xpobvorr7nva7miJDlh73mlbDnsbvlnotcclxuICAgKiBAZW5fVVMgT3BlbiBsYXp5IGxvYWRpbmcgbm9kZSwgZGF0YSBtdXN0IGJlIHNldCB0byBmdW5jdGlvbiB0eXBlXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBsYXp5PzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WJjea/gOa0u+eahOiKgueCuSBJZFxyXG4gICAqIEBlbl9VUyBDdXJyZW50bHkgYWN0aXZlIG5vZGUgSWRcclxuICAgKi9cclxuICBASW5wdXQoKSBhY3RpdmF0ZWRJZDogYW55O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsZXlvIDnmoToioLngrlcclxuICAgKiBAZW5fVVMgRXhwYW5kZWQgbm9kZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGV4cGFuZGVkOiBhbnlbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDpgInkuK3nmoToioLngrlcclxuICAgKiBAZW5fVVMgQ2hlY2tib3ggc2VsZWN0ZWQgbm9kZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNoZWNrZWQ6IGFueVtdID0gW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWxleW8gOaJgOacieiKgueCuVxyXG4gICAqIEBlbl9VUyBFeHBhbmQgYWxsIG5vZGVzXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBleHBhbmRlZEFsbD86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpu5jorqTlsZXlvIDnmoTlsYLnuqdcclxuICAgKiBAZW5fVVMgRGVmYXVsdCBleHBhbmRlZCBsZXZlbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXROdW1iZXIoKSBleHBhbmRlZExldmVsOiBYTnVtYmVyID0gLTE7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOeCueWHu+iKgueCueWwseinpuWPkeWxleW8gC/mlLbotbfnmoTmk43kvZzvvIzor7fnoa7kv53oioLngrnkuIrmsqHmnInlhbblroPmk43kvZzvvIhjaGVja2JveOOAgeiHquWumuS5ieeahOaTjeS9nOaMiemSru+8iVxyXG4gICAqIEBlbl9VUyBDbGljayB0aGUgbm9kZSB0byB0cmlnZ2VyIHRoZSBleHBhbmQvY29sbGFwc2Ugb3BlcmF0aW9uLCBwbGVhc2UgbWFrZSBzdXJlIHRoYXQgdGhlcmUgYXJlIG5vIG90aGVyIG9wZXJhdGlvbnMgb24gdGhlIG5vZGUgKGNoZWNrYm94LCBjdXN0b20gb3BlcmF0aW9uIGJ1dHRvbilcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIG5vZGVPcGVuPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWNleS9jemXtOi3ne+8jOi/meS4quS4juWxgue6p+eahOS5mOenr+eul+WHuuiKgueCueeahOW3pui+uei3ne+8jOWNleS9jSByZW1cclxuICAgKiBAZW5fVVMgVW5pdCBzcGFjaW5nLCB0aGUgcHJvZHVjdCBvZiB0aGlzIGFuZCB0aGUgbGV2ZWwgY2FsY3VsYXRlcyB0aGUgbGVmdCBtYXJnaW4gb2YgdGhlIG5vZGUsIHRoZSB1bml0IGlzIHJlbVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYTnVtYmVyPihYX0NPTkZJR19OQU1FLCAwLjg3NSkgQFhJbnB1dE51bWJlcigpIHNwYWNpbmc/OiBYTnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoIfnrb7oh6rlrprkuYnmqKHmnb9cclxuICAgKiBAZW5fVVMgTGFiZWwgY3VzdG9tIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFiZWxUcGw/OiBUZW1wbGF0ZVJlZjx2b2lkPjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K555qE6auY5bqm77yM5Y2V5L2NIHJlbSwg6buY6K6kIDAg5piv6Ieq6YCC5bqU6auY5bqmXHJcbiAgICogQGVuX1VTIFRoZSBoZWlnaHQgb2YgdGhlIG5vZGUgaW4gcmVtXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhOdW1iZXI+KFhfQ09ORklHX05BTUUsIDApIEBYSW5wdXROdW1iZXIoKSBub2RlSGVpZ2h0ITogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5piv5ZCm5YWB6K645aSa5qyh54K55Ye75LiA5Liq6IqC54K56Kem5Y+R5aSa5qyh5LqL5Lu2XHJcbiAgICogQGVuX1VTIFdoZXRoZXIgdG8gYWxsb3cgbXVsdGlwbGUgY2xpY2tzIG9uIGEgbm9kZSB0byB0cmlnZ2VyIG11bHRpcGxlIGV2ZW50c1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgYWxsb3dNYW55QWN0aXZhdGVkPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WJjeeCueWHu+mAieS4reeahOiKgueCueWPmOWMlueahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBUaGUgZXZlbnQgb2YgdGhlIGN1cnJlbnRseSBjbGlja2VkIG5vZGUgY2hhbmdlXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGFjdGl2YXRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8WFRyZWVOb2RlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDkvb/nlKggY2hlY2tlZGJveCDpgInkuK3lj5jljJbnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgVXNlIGNoZWNrZWRib3ggdG8gc2VsZWN0IGNoYW5nZWQgZXZlbnRzXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGNoZWNrYm94Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxYVHJlZU5vZGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWmguaenCBkYXRhIOaYr+WHveaVsOexu+Wei++8jOWPr+S7pemAmui/h+atpOWPguaVsOaOp+WItuivt+axgu+8jOW4uOeUqOS6juW8ueahhuS4reeahOihqOagvO+8jOW8ueWHuuWQjuWGjeivt+axglxyXG4gICAqIEBlbl9VUyBJZiBkYXRhIGlzIGEgZnVuY3Rpb24gdHlwZSwgeW91IGNhbiB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gY29udHJvbCB0aGUgcmVxdWVzdCwgd2hpY2ggaXMgb2Z0ZW4gdXNlZCBpbiB0aGUgZm9ybSBpbiB0aGUgcG9wLXVwIGJveCwgYW5kIHRoZW4gcmVxdWVzdCBpdCBhZnRlciBpdCBwb3BzIHVwXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBtYW51YWw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDnirbmgIHmlLnlj5jop6blj5HlsYLnuqfmo4Dmn6VcclxuICAgKiBAZW5fVVMgQ2hlY2tib3ggc3RhdHVzIGNoYW5nZXMgdHJpZ2dlciBsZXZlbCBjaGVja3NcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIGxldmVsQ2hlY2s6IFhCb29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55YaF5a655LiN5o2i6KGM5pi+56S655yB55Wl5Y+3XHJcbiAgICogQGVuX1VTIFNob3cgZWxsaXBzaXMgd2l0aG91dCB3cmFwcGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgbm9kZU5vd3JhcDogWEJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnlnoLnm7Tlr7npvZDmlrnlvI9cclxuICAgKiBAZW5fVVMgU2hvdyBlbGxpcHNpcyB3aXRob3V0IHdyYXBwaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhBbGlnbj4oWF9DT05GSUdfTkFNRSwgJ2NlbnRlcicpIG5vZGVBbGlnbkl0ZW1zITogWEFsaWduO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoJHoioLngrnmk43kvZzmjInpkq5cclxuICAgKiBAZW5fVVMgVHJlZSBub2RlIG9wZXJhdGlvbiBidXR0b25zXHJcbiAgICovXHJcbiAgQElucHV0KCkgYWN0aW9uczogWFRyZWVBY3Rpb25bXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvIDlkK/omZrmi5/mu5rliqhcclxuICAgKiBAZW5fVVMgVHVybiBvbiB2aXJ0dWFsIHNjcm9sbGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSkgQFhJbnB1dEJvb2xlYW4oKSB2aXJ0dWFsU2Nyb2xsITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa7muWKqOWMuuWfn+mrmOW6pu+8jOW8gOWQr+iZmuaLn+a7muWKqOeahOaXtuWAmeeUn+aViFxyXG4gICAqIEBlbl9VUyBSb2xsaW5nIGFyZWEgaGVpZ2h0XHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPG51bWJlcj4oWF9DT05GSUdfTkFNRSwgNDAwKSBAWElucHV0TnVtYmVyKCkgdmlydHVhbFNjcm9sbEhlaWdodCE6IG51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04gaXRlbVNpemXvvIzlr7nlupQgY2RrIHNjcm9sbCDkuK3nmoTlj4LmlbDvvIzlvIDlkK/omZrmi5/mu5rliqjmiY3nlJ/mlYhcclxuICAgKiBAZW5fVVMgaXRlbVNpemXvvIxjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXJhbWV0ZXJzIGluIGNkayBzY3JvbGxcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8bnVtYmVyPihYX0NPTkZJR19OQU1FLCAyNikgQFhJbnB1dE51bWJlcigpIGl0ZW1TaXplITogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDotoXlh7rlj6/op4bnqpflj6PnvJPlhrLljLrnmoTmnIDlsI/lgLzvvIzlr7nlupQgY2RrIHNjcm9sbCDkuK3nmoTlj4LmlbDvvIzlvIDlkK/omZrmi5/mu5rliqjmiY3nlJ/mlYhcclxuICAgKiBAZW5fVVMgRXhjZWVkIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSB2aXNpYmxlIHdpbmRvdyBidWZmZXIsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhcmFtZXRlcnMgaW4gY2RrIHNjcm9sbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1pbkJ1ZmZlclB4OiBudW1iZXIgPSAxMDA7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa4suafk+aWsOaVsOaNrue8k+WGsuWMuueahOWDj+e0oO+8jOWvueW6lCBjZGsgc2Nyb2xsIOS4reeahOWPguaVsO+8jOW8gOWQr+iZmuaLn+a7muWKqOaJjeeUn+aViFxyXG4gICAqIEBlbl9VUyBSZW5kZXIgdGhlIHBpeGVscyBvZiB0aGUgbmV3IGRhdGEgYnVmZmVyLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXJhbWV0ZXJzIGluIGNkayBzY3JvbGxcclxuICAgKi9cclxuICBASW5wdXQoKSBtYXhCdWZmZXJQeDogbnVtYmVyID0gMjAwO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlj4LmlbDmjqfliLbor7fmsYLmlLnlj5jkuovku7ZcclxuICAgKiBAZW5fVVMgUGFyYW1ldGVyIGNvbnRyb2wgcmVxdWVzdCBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbWFudWFsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG59XHJcblxyXG4vKipcclxuICogQHpoX0NOIFRyZWUg5pWw5o2u5a+56LGhXHJcbiAqIEBlbl9VUyBUcmVlIGRhdGEgb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhUcmVlTm9kZSBleHRlbmRzIFhQYXJlbnRJZGVudGl0eVByb3BlcnR5PFhUcmVlTm9kZT4ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsZXlvIBcclxuICAgKiBAZW5fVVMgVW5mb2xkXHJcbiAgICovXHJcbiAgb3Blbj86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa/gOa0u+eahFxyXG4gICAqIEBlbl9VUyBhY3RpdmVcclxuICAgKi9cclxuICBhY3RpdmF0ZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmo4Dmn6Xmm7TmlrBcclxuICAgKiBAZW5fVVMgQ2hlY2sgZm9yIHVwZGF0ZXNcclxuICAgKi9cclxuICBjaGFuZ2U/OiBGdW5jdGlvbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5a2Q6IqC54K55bey5Yqg6L296L+HXHJcbiAgICogQGVuX1VTIENoaWxkIG5vZGUgaGFzIGJlZW4gbG9hZGVkXHJcbiAgICovXHJcbiAgY2hpbGRyZW5Mb2FkZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDmmK/lkKbpgInkuK1cclxuICAgKiBAZW5fVVMgd2hldGhlciBjaGVja2JveCBpcyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIGNoZWNrZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKhjaGVja2JveFxyXG4gICAqIEBlbl9VUyBEaXNhYmxlIGNoZWNrYm94XHJcbiAgICovXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDlrZDoioLngrnmmK/lkKbmnInpgInkuK3nmoTnirbmgIFcclxuICAgKiBAZW5fVVMgV2hldGhlciB0aGUgY2hpbGQgbm9kZSBvZiBjaGVja2JveCBpcyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnpq5jluqbvvIzkvJjlhYjnuqfpq5jkuo4gdHJlZSDlj4LmlbDvvIzljZXkvY0gcmVtXHJcbiAgICogQGVuX1VTIE5vZGUgaGVpZ2h0IGluIHJlbSwgaGlnaGVzdCBwcmlvcml0eVxyXG4gICAqL1xyXG4gIGhlaWdodD86IG51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55YaF5a655LiN5o2i6KGM5pi+56S655yB55Wl5Y+377yM5LyY5YWI57qn6auY5LqOIHRyZWUg5Y+C5pWwXHJcbiAgICogQGVuX1VTIFNob3cgZWxsaXBzaXMgd2l0aG91dCB3cmFwcGluZywgaGlnaGVzdCBwcmlvcml0eVxyXG4gICAqL1xyXG4gIG5vd3JhcD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueWeguebtOWvuem9kOaWueW8j++8jOS8mOWFiOe6p+mrmOS6jiB0cmVlIOWPguaVsFxyXG4gICAqIEBlbl9VUyBTaG93IGVsbGlwc2lzIHdpdGhvdXQgd3JhcHBpbmcsIGhpZ2hlc3QgcHJpb3JpdHlcclxuICAgKi9cclxuICBhbGlnbkl0ZW1zPzogWEFsaWduO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnmh5LliqDovb3kuK1cclxuICAgKiBAZW5fVVMgTm9kZSBsYXp5IGxvYWRpbmdcclxuICAgKi9cclxuICBsb2FkaW5nPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6Ieq5a6a5LmJ5bGe5oCnXHJcbiAgICogQGVuX1VTIEN1c3RvbSBhdHRyaWJ1dGVzXHJcbiAgICovXHJcbiAgW3Byb3BlcnR5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAemhfQ04gVHJlZSDoioLngrnmk43kvZxcclxuICogQGVuX1VTIFRyZWUgbm9kZSBvcGVyYXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRyZWVBY3Rpb24gZXh0ZW5kcyBYSWRlbnRpdHlQcm9wZXJ0eSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaTjeS9nFxyXG4gICAqIEBlbl9VUyBPcGVyYXRpbmdcclxuICAgKi9cclxuICBoYW5kbGVyPzogRnVuY3Rpb247XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWbvuagh1xyXG4gICAqIEBlbl9VUyBJY29uXHJcbiAgICovXHJcbiAgaWNvbj86IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFRyZWVOb2RlXHJcbiAqIEBzZWxlY3RvciB4LXRyZWUtbm9kZVxyXG4gKiBAZGVjb3JhdG9yIGRpcmVjdGl2ZVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFhUcmVlTm9kZVByZWZpeCA9ICd4LXRyZWUtbm9kZSc7XHJcblxyXG4vKipcclxuICogVHJlZU5vZGUgUHJvcGVydHlcclxuICovXHJcbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcclxuZXhwb3J0IGNsYXNzIFhUcmVlTm9kZVByb3BlcnR5IGV4dGVuZHMgWFByb3BlcnR5IHtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55pWw5o2uXHJcbiAgICogQGVuX1VTIE5vZGUgZGF0YVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG5vZGU6IFhUcmVlTm9kZSA9IHt9O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsYLnuqdcclxuICAgKiBAZW5fVVMgTGV2ZWxcclxuICAgKi9cclxuICBASW5wdXQoKSBsZXZlbD86IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaHkuWKoOi9veWtkOiKgueCuVxyXG4gICAqIEBlbl9VUyBMYXp5IGxvYWRpbmcgb2YgY2hpbGQgbm9kZXNcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIGxhenk/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K555qE6auY5bqm77yM5Y2V5L2NIHJlbVxyXG4gICAqIEBlbl9VUyBUaGUgaGVpZ2h0IG9mIHRoZSBub2RlIGluIHJlbVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXROdW1iZXIoKSBub2RlSGVpZ2h0OiBYTnVtYmVyID0gMDtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55YaF5a655LiN5o2i6KGM5pi+56S655yB55Wl5Y+3XHJcbiAgICogQGVuX1VTIFNob3cgZWxsaXBzaXMgd2l0aG91dCB3cmFwcGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgbm9kZU5vd3JhcD86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnlnoLnm7Tlr7npvZDmlrnlvI9cclxuICAgKiBAZW5fVVMgU2hvdyBlbGxpcHNpcyB3aXRob3V0IHdyYXBwaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgbm9kZUFsaWduSXRlbXM6IFhBbGlnbiA9ICdjZW50ZXInO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmh5LliqDovb3lh73mlbBcclxuICAgKiBAZW5fVVMgTGF6eSBsb2FkaW5nIGZ1bmN0aW9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgbGF6eURhdGEhOiBYRGF0YTxYVHJlZU5vZGVbXT47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagh+iusOS4uuiZmuaLn+a7muWKqOeahOiKgueCuVxyXG4gICAqIEBlbl9VUyBNYXJrIGFzIGEgbm9kZSBvZiB2aXJ0dWFsIHJvbGxpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIHZpcnR1YWxTY3JvbGw/OiBYQm9vbGVhbjtcclxufVxyXG4iXX0=