@ng-nest/ui 18.0.6 → 18.0.8

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 (575) hide show
  1. package/core/config/config.d.ts +6 -0
  2. package/esm2022/affix/affix.component.mjs +4 -4
  3. package/esm2022/affix/affix.module.mjs +4 -4
  4. package/esm2022/affix/affix.property.mjs +3 -3
  5. package/esm2022/alert/alert.component.mjs +5 -5
  6. package/esm2022/alert/alert.module.mjs +4 -4
  7. package/esm2022/alert/alert.property.mjs +3 -3
  8. package/esm2022/anchor/anchor-inner.component.mjs +3 -3
  9. package/esm2022/anchor/anchor.component.mjs +5 -5
  10. package/esm2022/anchor/anchor.module.mjs +4 -4
  11. package/esm2022/anchor/anchor.property.mjs +6 -6
  12. package/esm2022/api/api.component.mjs +4 -4
  13. package/esm2022/api/api.module.mjs +4 -4
  14. package/esm2022/auto-complete/auto-complete-portal.component.mjs +3 -3
  15. package/esm2022/auto-complete/auto-complete.component.mjs +5 -5
  16. package/esm2022/auto-complete/auto-complete.module.mjs +4 -4
  17. package/esm2022/auto-complete/auto-complete.property.mjs +3 -3
  18. package/esm2022/avatar/avatar-group.component.mjs +3 -3
  19. package/esm2022/avatar/avatar.component.mjs +5 -5
  20. package/esm2022/avatar/avatar.module.mjs +4 -4
  21. package/esm2022/avatar/avatar.property.mjs +6 -6
  22. package/esm2022/back-top/back-top.component.mjs +5 -5
  23. package/esm2022/back-top/back-top.module.mjs +4 -4
  24. package/esm2022/back-top/back-top.property.mjs +3 -3
  25. package/esm2022/badge/badge.component.mjs +5 -5
  26. package/esm2022/badge/badge.module.mjs +4 -4
  27. package/esm2022/badge/badge.property.mjs +3 -3
  28. package/esm2022/base-form/base-form.module.mjs +4 -4
  29. package/esm2022/base-form/base-form.property.mjs +6 -6
  30. package/esm2022/button/button.component.mjs +5 -5
  31. package/esm2022/button/button.module.mjs +4 -4
  32. package/esm2022/button/button.property.mjs +6 -6
  33. package/esm2022/button/buttons.component.mjs +4 -4
  34. package/esm2022/calendar/calendar.component.mjs +5 -5
  35. package/esm2022/calendar/calendar.module.mjs +4 -4
  36. package/esm2022/calendar/calendar.property.mjs +3 -3
  37. package/esm2022/card/card.component.mjs +5 -5
  38. package/esm2022/card/card.module.mjs +4 -4
  39. package/esm2022/card/card.property.mjs +3 -3
  40. package/esm2022/carousel/carousel-panel.component.mjs +5 -5
  41. package/esm2022/carousel/carousel.component.mjs +5 -5
  42. package/esm2022/carousel/carousel.module.mjs +4 -4
  43. package/esm2022/carousel/carousel.property.mjs +6 -6
  44. package/esm2022/cascade/cascade-portal.component.mjs +3 -3
  45. package/esm2022/cascade/cascade.component.mjs +5 -5
  46. package/esm2022/cascade/cascade.module.mjs +4 -4
  47. package/esm2022/cascade/cascade.property.mjs +3 -3
  48. package/esm2022/checkbox/checkbox.component.mjs +5 -5
  49. package/esm2022/checkbox/checkbox.module.mjs +4 -4
  50. package/esm2022/checkbox/checkbox.property.mjs +3 -3
  51. package/esm2022/collapse/collapse-panel.component.mjs +5 -5
  52. package/esm2022/collapse/collapse.component.mjs +4 -4
  53. package/esm2022/collapse/collapse.module.mjs +4 -4
  54. package/esm2022/collapse/collapse.property.mjs +6 -6
  55. package/esm2022/color/color.component.mjs +4 -4
  56. package/esm2022/color/color.module.mjs +4 -4
  57. package/esm2022/color/color.property.mjs +3 -3
  58. package/esm2022/color-picker/color-picker-portal.component.mjs +4 -4
  59. package/esm2022/color-picker/color-picker.component.mjs +5 -5
  60. package/esm2022/color-picker/color-picker.module.mjs +4 -4
  61. package/esm2022/color-picker/color-picker.property.mjs +3 -3
  62. package/esm2022/comment/comment-reply.component.mjs +3 -3
  63. package/esm2022/comment/comment.component.mjs +5 -5
  64. package/esm2022/comment/comment.module.mjs +4 -4
  65. package/esm2022/comment/comment.property.mjs +6 -6
  66. package/esm2022/container/aside.component.mjs +4 -4
  67. package/esm2022/container/container.component.mjs +4 -4
  68. package/esm2022/container/container.module.mjs +4 -4
  69. package/esm2022/container/container.property.mjs +12 -12
  70. package/esm2022/container/footer.component.mjs +4 -4
  71. package/esm2022/container/header.component.mjs +4 -4
  72. package/esm2022/container/main.component.mjs +4 -4
  73. package/esm2022/core/config/config.mjs +1 -1
  74. package/esm2022/core/config/config.service.mjs +3 -3
  75. package/esm2022/core/services/http.service.mjs +3 -3
  76. package/esm2022/core/services/preloading-strategy.service.mjs +3 -3
  77. package/esm2022/core/services/storage.service.mjs +3 -3
  78. package/esm2022/core/theme/theme.service.mjs +3 -3
  79. package/esm2022/crumb/crumb.component.mjs +5 -5
  80. package/esm2022/crumb/crumb.module.mjs +4 -4
  81. package/esm2022/crumb/crumb.property.mjs +3 -3
  82. package/esm2022/date-picker/date-picker-portal.component.mjs +3 -3
  83. package/esm2022/date-picker/date-picker.component.mjs +5 -5
  84. package/esm2022/date-picker/date-picker.module.mjs +4 -4
  85. package/esm2022/date-picker/date-picker.property.mjs +18 -18
  86. package/esm2022/date-picker/date-quarter.pipe.mjs +3 -3
  87. package/esm2022/date-picker/date-range-portal.component.mjs +3 -3
  88. package/esm2022/date-picker/date-range.component.mjs +5 -5
  89. package/esm2022/date-picker/picker-date.component.mjs +3 -3
  90. package/esm2022/date-picker/picker-month.component.mjs +3 -3
  91. package/esm2022/date-picker/picker-quarter.component.mjs +3 -3
  92. package/esm2022/date-picker/picker-year.component.mjs +3 -3
  93. package/esm2022/description/description-item.component.mjs +3 -3
  94. package/esm2022/description/description.component.mjs +3 -3
  95. package/esm2022/description/description.module.mjs +4 -4
  96. package/esm2022/description/description.property.mjs +6 -6
  97. package/esm2022/dialog/dialog-container.component.mjs +5 -5
  98. package/esm2022/dialog/dialog-portal.component.mjs +5 -5
  99. package/esm2022/dialog/dialog-portal.directives.mjs +18 -18
  100. package/esm2022/dialog/dialog.component.mjs +5 -5
  101. package/esm2022/dialog/dialog.module.mjs +4 -4
  102. package/esm2022/dialog/dialog.property.mjs +6 -6
  103. package/esm2022/dialog/dialog.service.mjs +3 -3
  104. package/esm2022/doc/doc.component.mjs +4 -4
  105. package/esm2022/doc/doc.module.mjs +4 -4
  106. package/esm2022/drag/drag.directive.mjs +3 -3
  107. package/esm2022/drag/drag.module.mjs +4 -4
  108. package/esm2022/drag/drag.property.mjs +3 -3
  109. package/esm2022/drawer/drawer-container.component.mjs +5 -5
  110. package/esm2022/drawer/drawer-portal.component.mjs +5 -5
  111. package/esm2022/drawer/drawer-portal.directives.mjs +9 -9
  112. package/esm2022/drawer/drawer.component.mjs +5 -5
  113. package/esm2022/drawer/drawer.module.mjs +4 -4
  114. package/esm2022/drawer/drawer.property.mjs +6 -6
  115. package/esm2022/drawer/drawer.service.mjs +3 -3
  116. package/esm2022/dropdown/dropdown-portal.component.mjs +3 -3
  117. package/esm2022/dropdown/dropdown.component.mjs +4 -4
  118. package/esm2022/dropdown/dropdown.module.mjs +4 -4
  119. package/esm2022/dropdown/dropdown.property.mjs +3 -3
  120. package/esm2022/empty/empty.component.mjs +5 -5
  121. package/esm2022/empty/empty.module.mjs +4 -4
  122. package/esm2022/empty/empty.property.mjs +3 -3
  123. package/esm2022/examples/examples.component.mjs +4 -4
  124. package/esm2022/examples/examples.module.mjs +4 -4
  125. package/esm2022/find/find.component.mjs +5 -5
  126. package/esm2022/find/find.module.mjs +4 -4
  127. package/esm2022/find/find.property.mjs +3 -3
  128. package/esm2022/form/control.component.mjs +3 -3
  129. package/esm2022/form/form.component.mjs +5 -5
  130. package/esm2022/form/form.module.mjs +4 -4
  131. package/esm2022/form/form.property.mjs +6 -6
  132. package/esm2022/highlight/highlight.component.mjs +5 -5
  133. package/esm2022/highlight/highlight.module.mjs +4 -4
  134. package/esm2022/highlight/highlight.property.mjs +3 -3
  135. package/esm2022/highlight/highlight.service.mjs +3 -3
  136. package/esm2022/i18n/i18n.directive.mjs +3 -3
  137. package/esm2022/i18n/i18n.module.mjs +4 -4
  138. package/esm2022/i18n/i18n.pipe.mjs +3 -3
  139. package/esm2022/i18n/i18n.property.mjs +1 -1
  140. package/esm2022/i18n/i18n.service.mjs +3 -3
  141. package/esm2022/i18n/languages/ar_EG.mjs +8 -2
  142. package/esm2022/i18n/languages/bg_BG.mjs +8 -2
  143. package/esm2022/i18n/languages/ca_ES.mjs +8 -2
  144. package/esm2022/i18n/languages/cs_CZ.mjs +8 -2
  145. package/esm2022/i18n/languages/da_DK.mjs +8 -2
  146. package/esm2022/i18n/languages/de_DE.mjs +8 -2
  147. package/esm2022/i18n/languages/el_GR.mjs +8 -2
  148. package/esm2022/i18n/languages/en_GB.mjs +8 -2
  149. package/esm2022/i18n/languages/en_US.mjs +8 -2
  150. package/esm2022/i18n/languages/es_ES.mjs +8 -2
  151. package/esm2022/i18n/languages/et_EE.mjs +8 -2
  152. package/esm2022/i18n/languages/fa_IR.mjs +8 -2
  153. package/esm2022/i18n/languages/fi_FI.mjs +8 -2
  154. package/esm2022/i18n/languages/fr_BE.mjs +8 -2
  155. package/esm2022/i18n/languages/fr_FR.mjs +8 -2
  156. package/esm2022/i18n/languages/he_IL.mjs +8 -2
  157. package/esm2022/i18n/languages/hi_IN.mjs +8 -2
  158. package/esm2022/i18n/languages/hr_HR.mjs +8 -2
  159. package/esm2022/i18n/languages/hu_HU.mjs +8 -2
  160. package/esm2022/i18n/languages/hy_AM.mjs +8 -2
  161. package/esm2022/i18n/languages/id_ID.mjs +8 -2
  162. package/esm2022/i18n/languages/is_IS.mjs +8 -2
  163. package/esm2022/i18n/languages/it_IT.mjs +8 -2
  164. package/esm2022/i18n/languages/ja_JP.mjs +8 -2
  165. package/esm2022/i18n/languages/ka_GE.mjs +8 -2
  166. package/esm2022/i18n/languages/kn_IN.mjs +8 -2
  167. package/esm2022/i18n/languages/ko_KR.mjs +8 -2
  168. package/esm2022/i18n/languages/ku_IQ.mjs +8 -2
  169. package/esm2022/i18n/languages/lv_LV.mjs +8 -2
  170. package/esm2022/i18n/languages/mn_MN.mjs +8 -2
  171. package/esm2022/i18n/languages/ms_MY.mjs +8 -2
  172. package/esm2022/i18n/languages/nb_NO.mjs +8 -2
  173. package/esm2022/i18n/languages/ne_NP.mjs +8 -2
  174. package/esm2022/i18n/languages/nl_BE.mjs +8 -2
  175. package/esm2022/i18n/languages/nl_NL.mjs +8 -2
  176. package/esm2022/i18n/languages/pl_PL.mjs +8 -2
  177. package/esm2022/i18n/languages/pt_BR.mjs +8 -2
  178. package/esm2022/i18n/languages/pt_PT.mjs +8 -2
  179. package/esm2022/i18n/languages/ro_RO.mjs +8 -2
  180. package/esm2022/i18n/languages/ru_RU.mjs +8 -2
  181. package/esm2022/i18n/languages/sk_SK.mjs +8 -2
  182. package/esm2022/i18n/languages/sl_SI.mjs +8 -2
  183. package/esm2022/i18n/languages/sr_RS.mjs +8 -2
  184. package/esm2022/i18n/languages/sv_SE.mjs +8 -2
  185. package/esm2022/i18n/languages/ta_IN.mjs +8 -2
  186. package/esm2022/i18n/languages/th_TH.mjs +8 -2
  187. package/esm2022/i18n/languages/tr_TR.mjs +8 -2
  188. package/esm2022/i18n/languages/uk_UA.mjs +8 -2
  189. package/esm2022/i18n/languages/vi_VN.mjs +8 -2
  190. package/esm2022/i18n/languages/zh_CN.mjs +8 -2
  191. package/esm2022/i18n/languages/zh_TW.mjs +8 -2
  192. package/esm2022/icon/icon.component.mjs +4 -4
  193. package/esm2022/icon/icon.module.mjs +4 -4
  194. package/esm2022/icon/icon.property.mjs +3 -3
  195. package/esm2022/icon/icon.service.mjs +3 -3
  196. package/esm2022/image/image-group.component.mjs +3 -3
  197. package/esm2022/image/image-preview.component.mjs +5 -5
  198. package/esm2022/image/image.component.mjs +5 -5
  199. package/esm2022/image/image.module.mjs +4 -4
  200. package/esm2022/image/image.property.mjs +6 -6
  201. package/esm2022/inner/inner.component.mjs +4 -4
  202. package/esm2022/inner/inner.module.mjs +4 -4
  203. package/esm2022/inner/inner.property.mjs +3 -3
  204. package/esm2022/input/input-group.component.mjs +3 -3
  205. package/esm2022/input/input.component.mjs +5 -5
  206. package/esm2022/input/input.module.mjs +4 -4
  207. package/esm2022/input/input.property.mjs +6 -6
  208. package/esm2022/input-number/input-number.component.mjs +5 -5
  209. package/esm2022/input-number/input-number.module.mjs +4 -4
  210. package/esm2022/input-number/input-number.property.mjs +3 -3
  211. package/esm2022/keyword/keyword.directive.mjs +3 -3
  212. package/esm2022/keyword/keyword.module.mjs +4 -4
  213. package/esm2022/keyword/keyword.property.mjs +3 -3
  214. package/esm2022/layout/col.component.mjs +3 -3
  215. package/esm2022/layout/layout.module.mjs +4 -4
  216. package/esm2022/layout/layout.property.mjs +6 -6
  217. package/esm2022/layout/row.component.mjs +3 -3
  218. package/esm2022/link/link.component.mjs +5 -5
  219. package/esm2022/link/link.module.mjs +4 -4
  220. package/esm2022/link/link.property.mjs +3 -3
  221. package/esm2022/list/list-drop-group.directive.mjs +3 -3
  222. package/esm2022/list/list-option.component.mjs +3 -3
  223. package/esm2022/list/list.component.mjs +11 -11
  224. package/esm2022/list/list.module.mjs +4 -4
  225. package/esm2022/list/list.property.mjs +6 -6
  226. package/esm2022/loading/loading.component.mjs +5 -5
  227. package/esm2022/loading/loading.module.mjs +4 -4
  228. package/esm2022/loading/loading.property.mjs +3 -3
  229. package/esm2022/menu/menu-node.component.mjs +3 -3
  230. package/esm2022/menu/menu.component.mjs +3 -3
  231. package/esm2022/menu/menu.module.mjs +4 -4
  232. package/esm2022/menu/menu.property.mjs +6 -6
  233. package/esm2022/message/message.component.mjs +3 -3
  234. package/esm2022/message/message.module.mjs +4 -4
  235. package/esm2022/message/message.service.mjs +3 -3
  236. package/esm2022/message-box/message-box.component.mjs +3 -3
  237. package/esm2022/message-box/message-box.module.mjs +4 -4
  238. package/esm2022/message-box/message-box.service.mjs +3 -3
  239. package/esm2022/notification/notification.component.mjs +3 -3
  240. package/esm2022/notification/notification.module.mjs +4 -4
  241. package/esm2022/notification/notification.service.mjs +3 -3
  242. package/esm2022/outlet/outlet.directive.mjs +3 -3
  243. package/esm2022/outlet/outlet.module.mjs +4 -4
  244. package/esm2022/page-header/page-header.component.mjs +5 -5
  245. package/esm2022/page-header/page-header.module.mjs +4 -4
  246. package/esm2022/page-header/page-header.property.mjs +3 -3
  247. package/esm2022/pagination/pagination.component.mjs +96 -30
  248. package/esm2022/pagination/pagination.module.mjs +4 -4
  249. package/esm2022/pagination/pagination.property.mjs +23 -8
  250. package/esm2022/pattern/pattern.component.mjs +4 -4
  251. package/esm2022/pattern/pattern.module.mjs +4 -4
  252. package/esm2022/popconfirm/popconfirm.component.mjs +5 -5
  253. package/esm2022/popconfirm/popconfirm.module.mjs +4 -4
  254. package/esm2022/popconfirm/popconfirm.property.mjs +3 -3
  255. package/esm2022/popover/popover-portal.component.mjs +5 -5
  256. package/esm2022/popover/popover.directive.mjs +3 -3
  257. package/esm2022/popover/popover.module.mjs +4 -4
  258. package/esm2022/popover/popover.property.mjs +3 -3
  259. package/esm2022/portal/portal.module.mjs +4 -4
  260. package/esm2022/portal/portal.service.mjs +3 -3
  261. package/esm2022/progress/progress.component.mjs +5 -5
  262. package/esm2022/progress/progress.module.mjs +4 -4
  263. package/esm2022/progress/progress.property.mjs +3 -3
  264. package/esm2022/radio/radio.component.mjs +5 -5
  265. package/esm2022/radio/radio.module.mjs +4 -4
  266. package/esm2022/radio/radio.property.mjs +3 -3
  267. package/esm2022/rate/rate.component.mjs +5 -5
  268. package/esm2022/rate/rate.module.mjs +4 -4
  269. package/esm2022/rate/rate.property.mjs +3 -3
  270. package/esm2022/resizable/resizable.directive.mjs +3 -3
  271. package/esm2022/resizable/resizable.module.mjs +4 -4
  272. package/esm2022/resizable/resizable.property.mjs +3 -3
  273. package/esm2022/result/result.component.mjs +5 -5
  274. package/esm2022/result/result.module.mjs +4 -4
  275. package/esm2022/result/result.property.mjs +3 -3
  276. package/esm2022/ripple/ripple.directive.mjs +3 -3
  277. package/esm2022/ripple/ripple.module.mjs +4 -4
  278. package/esm2022/ripple/ripple.property.mjs +3 -3
  279. package/esm2022/select/select-portal.component.mjs +3 -3
  280. package/esm2022/select/select.component.mjs +5 -5
  281. package/esm2022/select/select.module.mjs +4 -4
  282. package/esm2022/select/select.property.mjs +3 -3
  283. package/esm2022/skeleton/skeleton.component.mjs +3 -3
  284. package/esm2022/skeleton/skeleton.module.mjs +4 -4
  285. package/esm2022/skeleton/skeleton.property.mjs +3 -3
  286. package/esm2022/slider/slider.component.mjs +5 -5
  287. package/esm2022/slider/slider.module.mjs +4 -4
  288. package/esm2022/slider/slider.property.mjs +3 -3
  289. package/esm2022/slider-select/slider-select.component.mjs +5 -5
  290. package/esm2022/slider-select/slider-select.module.mjs +4 -4
  291. package/esm2022/slider-select/slider-select.property.mjs +3 -3
  292. package/esm2022/statistic/countdown.component.mjs +3 -3
  293. package/esm2022/statistic/statistic.component.mjs +3 -3
  294. package/esm2022/statistic/statistic.module.mjs +4 -4
  295. package/esm2022/statistic/statistic.property.mjs +6 -6
  296. package/esm2022/steps/steps.component.mjs +5 -5
  297. package/esm2022/steps/steps.module.mjs +4 -4
  298. package/esm2022/steps/steps.property.mjs +3 -3
  299. package/esm2022/switch/switch.component.mjs +5 -5
  300. package/esm2022/switch/switch.module.mjs +4 -4
  301. package/esm2022/switch/switch.property.mjs +3 -3
  302. package/esm2022/table/table-body.component.mjs +3 -3
  303. package/esm2022/table/table-foot.component.mjs +3 -3
  304. package/esm2022/table/table-head.component.mjs +4 -4
  305. package/esm2022/table/table.component.mjs +5 -5
  306. package/esm2022/table/table.module.mjs +4 -4
  307. package/esm2022/table/table.property.mjs +28 -13
  308. package/esm2022/tabs/tab-content.component.mjs +3 -3
  309. package/esm2022/tabs/tab-link.directive.mjs +6 -6
  310. package/esm2022/tabs/tab.component.mjs +3 -3
  311. package/esm2022/tabs/tabs.component.mjs +5 -5
  312. package/esm2022/tabs/tabs.module.mjs +4 -4
  313. package/esm2022/tabs/tabs.property.mjs +6 -6
  314. package/esm2022/tag/tag.component.mjs +5 -5
  315. package/esm2022/tag/tag.module.mjs +4 -4
  316. package/esm2022/tag/tag.property.mjs +3 -3
  317. package/esm2022/text-retract/text-retract.component.mjs +5 -5
  318. package/esm2022/text-retract/text-retract.module.mjs +4 -4
  319. package/esm2022/text-retract/text-retract.property.mjs +3 -3
  320. package/esm2022/textarea/textarea.component.mjs +5 -5
  321. package/esm2022/textarea/textarea.module.mjs +4 -4
  322. package/esm2022/textarea/textarea.property.mjs +3 -3
  323. package/esm2022/theme/theme.component.mjs +5 -5
  324. package/esm2022/theme/theme.module.mjs +4 -4
  325. package/esm2022/theme/theme.property.mjs +3 -3
  326. package/esm2022/time-ago/time-ago.module.mjs +4 -4
  327. package/esm2022/time-ago/time-ago.pipe.mjs +3 -3
  328. package/esm2022/time-picker/time-picker-frame.component.mjs +5 -5
  329. package/esm2022/time-picker/time-picker-portal.component.mjs +3 -3
  330. package/esm2022/time-picker/time-picker.component.mjs +5 -5
  331. package/esm2022/time-picker/time-picker.module.mjs +4 -4
  332. package/esm2022/time-picker/time-picker.property.mjs +3 -3
  333. package/esm2022/time-range/time-range.module.mjs +4 -4
  334. package/esm2022/time-range/time-range.pipe.mjs +3 -3
  335. package/esm2022/timeline/timeline.component.mjs +5 -5
  336. package/esm2022/timeline/timeline.module.mjs +4 -4
  337. package/esm2022/timeline/timeline.property.mjs +3 -3
  338. package/esm2022/tooltip/tooltip-portal.component.mjs +5 -5
  339. package/esm2022/tooltip/tooltip.directive.mjs +3 -3
  340. package/esm2022/tooltip/tooltip.module.mjs +4 -4
  341. package/esm2022/tooltip/tooltip.property.mjs +3 -3
  342. package/esm2022/transfer/transfer.component.mjs +5 -5
  343. package/esm2022/transfer/transfer.module.mjs +4 -4
  344. package/esm2022/transfer/transfer.property.mjs +3 -3
  345. package/esm2022/tree/tree-node.component.mjs +5 -5
  346. package/esm2022/tree/tree.component.mjs +4 -4
  347. package/esm2022/tree/tree.module.mjs +4 -4
  348. package/esm2022/tree/tree.property.mjs +6 -6
  349. package/esm2022/tree/tree.service.mjs +3 -3
  350. package/esm2022/tree-file/tree-file.component.mjs +5 -5
  351. package/esm2022/tree-file/tree-file.module.mjs +4 -4
  352. package/esm2022/tree-file/tree-file.property.mjs +3 -3
  353. package/esm2022/tree-select/tree-select-portal.component.mjs +3 -3
  354. package/esm2022/tree-select/tree-select.component.mjs +5 -5
  355. package/esm2022/tree-select/tree-select.module.mjs +4 -4
  356. package/esm2022/tree-select/tree-select.property.mjs +3 -3
  357. package/esm2022/typography/typography.component.mjs +4 -4
  358. package/esm2022/typography/typography.module.mjs +4 -4
  359. package/esm2022/typography/typography.property.mjs +3 -3
  360. package/esm2022/upload/upload-portal.component.mjs +5 -5
  361. package/esm2022/upload/upload.component.mjs +5 -5
  362. package/esm2022/upload/upload.module.mjs +4 -4
  363. package/esm2022/upload/upload.property.mjs +3 -3
  364. package/fesm2022/ng-nest-ui-affix.mjs +11 -11
  365. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  366. package/fesm2022/ng-nest-ui-alert.mjs +11 -11
  367. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  368. package/fesm2022/ng-nest-ui-anchor.mjs +17 -17
  369. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  370. package/fesm2022/ng-nest-ui-api.mjs +8 -8
  371. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  372. package/fesm2022/ng-nest-ui-auto-complete.mjs +14 -14
  373. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  374. package/fesm2022/ng-nest-ui-avatar.mjs +17 -17
  375. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  376. package/fesm2022/ng-nest-ui-back-top.mjs +11 -11
  377. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  378. package/fesm2022/ng-nest-ui-badge.mjs +11 -11
  379. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  380. package/fesm2022/ng-nest-ui-base-form.mjs +10 -10
  381. package/fesm2022/ng-nest-ui-button.mjs +18 -18
  382. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  383. package/fesm2022/ng-nest-ui-calendar.mjs +11 -11
  384. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  385. package/fesm2022/ng-nest-ui-card.mjs +11 -11
  386. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  387. package/fesm2022/ng-nest-ui-carousel.mjs +18 -18
  388. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  389. package/fesm2022/ng-nest-ui-cascade.mjs +14 -14
  390. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  391. package/fesm2022/ng-nest-ui-checkbox.mjs +11 -11
  392. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  393. package/fesm2022/ng-nest-ui-collapse.mjs +18 -18
  394. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  395. package/fesm2022/ng-nest-ui-color-picker.mjs +14 -14
  396. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  397. package/fesm2022/ng-nest-ui-color.mjs +11 -11
  398. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  399. package/fesm2022/ng-nest-ui-comment.mjs +17 -17
  400. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  401. package/fesm2022/ng-nest-ui-container.mjs +36 -36
  402. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  403. package/fesm2022/ng-nest-ui-core.mjs +15 -15
  404. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  405. package/fesm2022/ng-nest-ui-crumb.mjs +11 -11
  406. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  407. package/fesm2022/ng-nest-ui-date-picker.mjs +51 -51
  408. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  409. package/fesm2022/ng-nest-ui-description.mjs +16 -16
  410. package/fesm2022/ng-nest-ui-dialog.mjs +44 -44
  411. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  412. package/fesm2022/ng-nest-ui-doc.mjs +8 -8
  413. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  414. package/fesm2022/ng-nest-ui-drag.mjs +10 -10
  415. package/fesm2022/ng-nest-ui-drawer.mjs +35 -35
  416. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  417. package/fesm2022/ng-nest-ui-dropdown.mjs +14 -14
  418. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  419. package/fesm2022/ng-nest-ui-empty.mjs +11 -11
  420. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  421. package/fesm2022/ng-nest-ui-examples.mjs +8 -8
  422. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  423. package/fesm2022/ng-nest-ui-find.mjs +11 -11
  424. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  425. package/fesm2022/ng-nest-ui-form.mjs +17 -17
  426. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  427. package/fesm2022/ng-nest-ui-highlight.mjs +14 -14
  428. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  429. package/fesm2022/ng-nest-ui-i18n.mjs +370 -64
  430. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  431. package/fesm2022/ng-nest-ui-icon.mjs +14 -14
  432. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  433. package/fesm2022/ng-nest-ui-image.mjs +21 -21
  434. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  435. package/fesm2022/ng-nest-ui-inner.mjs +11 -11
  436. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  437. package/fesm2022/ng-nest-ui-input-number.mjs +11 -11
  438. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  439. package/fesm2022/ng-nest-ui-input.mjs +17 -17
  440. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  441. package/fesm2022/ng-nest-ui-keyword.mjs +10 -10
  442. package/fesm2022/ng-nest-ui-layout.mjs +16 -16
  443. package/fesm2022/ng-nest-ui-link.mjs +11 -11
  444. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  445. package/fesm2022/ng-nest-ui-list.mjs +26 -26
  446. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  447. package/fesm2022/ng-nest-ui-loading.mjs +11 -11
  448. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  449. package/fesm2022/ng-nest-ui-menu.mjs +16 -16
  450. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  451. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  452. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  453. package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
  454. package/fesm2022/ng-nest-ui-page-header.mjs +11 -11
  455. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  456. package/fesm2022/ng-nest-ui-pagination.mjs +121 -40
  457. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  458. package/fesm2022/ng-nest-ui-pattern.mjs +8 -8
  459. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  460. package/fesm2022/ng-nest-ui-popconfirm.mjs +11 -11
  461. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  462. package/fesm2022/ng-nest-ui-popover.mjs +14 -14
  463. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  464. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  465. package/fesm2022/ng-nest-ui-progress.mjs +11 -11
  466. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  467. package/fesm2022/ng-nest-ui-radio.mjs +11 -11
  468. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  469. package/fesm2022/ng-nest-ui-rate.mjs +11 -11
  470. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  471. package/fesm2022/ng-nest-ui-resizable.mjs +10 -10
  472. package/fesm2022/ng-nest-ui-result.mjs +11 -11
  473. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  474. package/fesm2022/ng-nest-ui-ripple.mjs +10 -10
  475. package/fesm2022/ng-nest-ui-select.mjs +14 -14
  476. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  477. package/fesm2022/ng-nest-ui-skeleton.mjs +10 -10
  478. package/fesm2022/ng-nest-ui-slider-select.mjs +11 -11
  479. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  480. package/fesm2022/ng-nest-ui-slider.mjs +11 -11
  481. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  482. package/fesm2022/ng-nest-ui-statistic.mjs +16 -16
  483. package/fesm2022/ng-nest-ui-steps.mjs +11 -11
  484. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  485. package/fesm2022/ng-nest-ui-switch.mjs +11 -11
  486. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  487. package/fesm2022/ng-nest-ui-table.mjs +44 -29
  488. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  489. package/fesm2022/ng-nest-ui-tabs.mjs +26 -26
  490. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  491. package/fesm2022/ng-nest-ui-tag.mjs +11 -11
  492. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  493. package/fesm2022/ng-nest-ui-text-retract.mjs +11 -11
  494. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  495. package/fesm2022/ng-nest-ui-textarea.mjs +11 -11
  496. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  497. package/fesm2022/ng-nest-ui-theme.mjs +11 -11
  498. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  499. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  500. package/fesm2022/ng-nest-ui-time-picker.mjs +18 -18
  501. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  502. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  503. package/fesm2022/ng-nest-ui-timeline.mjs +11 -11
  504. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  505. package/fesm2022/ng-nest-ui-tooltip.mjs +14 -14
  506. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  507. package/fesm2022/ng-nest-ui-transfer.mjs +11 -11
  508. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  509. package/fesm2022/ng-nest-ui-tree-file.mjs +11 -11
  510. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  511. package/fesm2022/ng-nest-ui-tree-select.mjs +14 -14
  512. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  513. package/fesm2022/ng-nest-ui-tree.mjs +20 -20
  514. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  515. package/fesm2022/ng-nest-ui-typography.mjs +11 -11
  516. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  517. package/fesm2022/ng-nest-ui-upload.mjs +15 -15
  518. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  519. package/i18n/i18n.property.d.ts +6 -0
  520. package/i18n/languages/ar_EG.d.ts +6 -0
  521. package/i18n/languages/bg_BG.d.ts +6 -0
  522. package/i18n/languages/ca_ES.d.ts +6 -0
  523. package/i18n/languages/cs_CZ.d.ts +6 -0
  524. package/i18n/languages/da_DK.d.ts +6 -0
  525. package/i18n/languages/de_DE.d.ts +6 -0
  526. package/i18n/languages/el_GR.d.ts +6 -0
  527. package/i18n/languages/en_GB.d.ts +6 -0
  528. package/i18n/languages/en_US.d.ts +6 -0
  529. package/i18n/languages/es_ES.d.ts +6 -0
  530. package/i18n/languages/et_EE.d.ts +6 -0
  531. package/i18n/languages/fa_IR.d.ts +6 -0
  532. package/i18n/languages/fi_FI.d.ts +6 -0
  533. package/i18n/languages/fr_BE.d.ts +6 -0
  534. package/i18n/languages/fr_FR.d.ts +6 -0
  535. package/i18n/languages/he_IL.d.ts +6 -0
  536. package/i18n/languages/hi_IN.d.ts +6 -0
  537. package/i18n/languages/hr_HR.d.ts +6 -0
  538. package/i18n/languages/hu_HU.d.ts +6 -0
  539. package/i18n/languages/hy_AM.d.ts +6 -0
  540. package/i18n/languages/id_ID.d.ts +6 -0
  541. package/i18n/languages/is_IS.d.ts +6 -0
  542. package/i18n/languages/it_IT.d.ts +6 -0
  543. package/i18n/languages/ja_JP.d.ts +6 -0
  544. package/i18n/languages/ka_GE.d.ts +6 -0
  545. package/i18n/languages/kn_IN.d.ts +6 -0
  546. package/i18n/languages/ko_KR.d.ts +6 -0
  547. package/i18n/languages/ku_IQ.d.ts +6 -0
  548. package/i18n/languages/lv_LV.d.ts +6 -0
  549. package/i18n/languages/mn_MN.d.ts +6 -0
  550. package/i18n/languages/ms_MY.d.ts +6 -0
  551. package/i18n/languages/nb_NO.d.ts +6 -0
  552. package/i18n/languages/ne_NP.d.ts +6 -0
  553. package/i18n/languages/nl_BE.d.ts +6 -0
  554. package/i18n/languages/nl_NL.d.ts +6 -0
  555. package/i18n/languages/pl_PL.d.ts +6 -0
  556. package/i18n/languages/pt_BR.d.ts +6 -0
  557. package/i18n/languages/pt_PT.d.ts +6 -0
  558. package/i18n/languages/ro_RO.d.ts +6 -0
  559. package/i18n/languages/ru_RU.d.ts +6 -0
  560. package/i18n/languages/sk_SK.d.ts +6 -0
  561. package/i18n/languages/sl_SI.d.ts +6 -0
  562. package/i18n/languages/sr_RS.d.ts +6 -0
  563. package/i18n/languages/sv_SE.d.ts +6 -0
  564. package/i18n/languages/ta_IN.d.ts +6 -0
  565. package/i18n/languages/th_TH.d.ts +6 -0
  566. package/i18n/languages/tr_TR.d.ts +6 -0
  567. package/i18n/languages/uk_UA.d.ts +6 -0
  568. package/i18n/languages/vi_VN.d.ts +6 -0
  569. package/i18n/languages/zh_CN.d.ts +6 -0
  570. package/i18n/languages/zh_TW.d.ts +6 -0
  571. package/package.json +142 -142
  572. package/pagination/pagination.component.d.ts +26 -1
  573. package/pagination/pagination.property.d.ts +31 -5
  574. package/style/mixins/reset.scss +4 -2
  575. package/table/table.property.d.ts +17 -1
@@ -567,11 +567,11 @@ export class XTreeComponent extends XTreeProperty {
567
567
  trackByItem(_index, item) {
568
568
  return item;
569
569
  }
570
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XTreeService }], target: i0.ɵɵFactoryTarget.Component }); }
571
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: XTreeComponent, isStandalone: true, selector: "x-tree", viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "virtualBody", first: true, predicate: ["virtualBody"], descendants: true, read: CdkVirtualScrollViewport, isSignal: true }, { propertyName: "dropList", first: true, predicate: ["dropList"], descendants: true, read: CdkDropList, isSignal: true }, { propertyName: "nodeComponents", predicate: XTreeNodeComponent, descendants: true, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf()\">\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"virtualScrollHeightSignal()\"\r\n >\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes(); templateCacheSize: 0; trackBy: trackByItem\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [(disabled)]=\"node.disabled!\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf!\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems!\"\r\n [(loading)]=\"node.loading!\"\r\n [(level)]=\"node.level!\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked!\"\r\n [(indeterminate)]=\"node.indeterminate!\"\r\n [(label)]=\"node.label!\"\r\n [(nowrap)]=\"node.nowrap!\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes(); track node.id + '' + $index) {\r\n <x-tree-node\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [(disabled)]=\"node.disabled\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems\"\r\n [(loading)]=\"node.loading\"\r\n [(level)]=\"node.level\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked\"\r\n [(indeterminate)]=\"node.indeterminate\"\r\n [(label)]=\"node.label\"\r\n [(nowrap)]=\"node.nowrap\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n@if (lazy()) {\r\n <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n", styles: [".x-tree{margin:0;padding:0}.x-tree-only-leaf .x-tree-node-sub{color:var(--x-text-300)}.x-tree-content.cdk-drop-list-dragging x-tree-node .x-tree-node-content:not(.x-disabled):not(.x-activated):hover{background-color:transparent}.x-tree-content.cdk-drop-list-dragging x-tree-node.cdk-drag-placeholder .x-tree-node-content{color:var(--x-primary);background-color:var(--x-background-a200);opacity:.8}.x-tree-content.cdk-drop-list-dragging x-tree-node:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", outputs: ["nodeMouseenter"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
570
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XTreeService }], target: i0.ɵɵFactoryTarget.Component }); }
571
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: XTreeComponent, isStandalone: true, selector: "x-tree", viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "virtualBody", first: true, predicate: ["virtualBody"], descendants: true, read: CdkVirtualScrollViewport, isSignal: true }, { propertyName: "dropList", first: true, predicate: ["dropList"], descendants: true, read: CdkDropList, isSignal: true }, { propertyName: "nodeComponents", predicate: XTreeNodeComponent, descendants: true, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf()\">\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"virtualScrollHeightSignal()\"\r\n >\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes(); templateCacheSize: 0; trackBy: trackByItem\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [(disabled)]=\"node.disabled!\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf!\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems!\"\r\n [(loading)]=\"node.loading!\"\r\n [(level)]=\"node.level!\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked!\"\r\n [(indeterminate)]=\"node.indeterminate!\"\r\n [(label)]=\"node.label!\"\r\n [(nowrap)]=\"node.nowrap!\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes(); track node.id + '' + $index) {\r\n <x-tree-node\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [(disabled)]=\"node.disabled\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems\"\r\n [(loading)]=\"node.loading\"\r\n [(level)]=\"node.level\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked\"\r\n [(indeterminate)]=\"node.indeterminate\"\r\n [(label)]=\"node.label\"\r\n [(nowrap)]=\"node.nowrap\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n@if (lazy()) {\r\n <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n", styles: [".x-tree{margin:0;padding:0}.x-tree-only-leaf .x-tree-node-sub{color:var(--x-text-300)}.x-tree-content.cdk-drop-list-dragging x-tree-node .x-tree-node-content:not(.x-disabled):not(.x-activated):hover{background-color:transparent}.x-tree-content.cdk-drop-list-dragging x-tree-node.cdk-drag-placeholder .x-tree-node-content{color:var(--x-primary);background-color:var(--x-background-a200);opacity:.8}.x-tree-content.cdk-drop-list-dragging x-tree-node:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", outputs: ["nodeMouseenter"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
572
572
  }
573
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeComponent, decorators: [{
573
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeComponent, decorators: [{
574
574
  type: Component,
575
575
  args: [{ selector: `${XTreePrefix}`, standalone: true, imports: [DragDropModule, ScrollingModule, XTreeNodeComponent, XIconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf()\">\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"virtualScrollHeightSignal()\"\r\n >\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes(); templateCacheSize: 0; trackBy: trackByItem\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [(disabled)]=\"node.disabled!\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf!\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems!\"\r\n [(loading)]=\"node.loading!\"\r\n [(level)]=\"node.level!\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked!\"\r\n [(indeterminate)]=\"node.indeterminate!\"\r\n [(label)]=\"node.label!\"\r\n [(nowrap)]=\"node.nowrap!\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes(); track node.id + '' + $index) {\r\n <x-tree-node\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [(disabled)]=\"node.disabled\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems\"\r\n [(loading)]=\"node.loading\"\r\n [(level)]=\"node.level\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked\"\r\n [(indeterminate)]=\"node.indeterminate\"\r\n [(label)]=\"node.label\"\r\n [(nowrap)]=\"node.nowrap\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n@if (lazy()) {\r\n <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n", styles: [".x-tree{margin:0;padding:0}.x-tree-only-leaf .x-tree-node-sub{color:var(--x-text-300)}.x-tree-content.cdk-drop-list-dragging x-tree-node .x-tree-node-content:not(.x-disabled):not(.x-activated):hover{background-color:transparent}.x-tree-content.cdk-drop-list-dragging x-tree-node.cdk-drag-placeholder .x-tree-node-content{color:var(--x-primary);background-color:var(--x-background-a200);opacity:.8}.x-tree-content.cdk-drop-list-dragging x-tree-node:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"] }]
576
576
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XTreeService }] });
577
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBRWpCLFVBQVUsRUFFVix1QkFBdUIsRUFHdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBYSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxZQUFZLEVBQ1osU0FBUyxFQUNULFFBQVEsRUFDUixPQUFPLEVBQ1AsT0FBTyxFQUVQLGNBQWMsRUFDZCxRQUFRLEVBQ1QsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBa0QsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBVzNDLE1BQU0sT0FBTyxjQUFlLFNBQVEsYUFBYTtJQTJCL0MsWUFDUyxRQUFtQixFQUNuQixVQUFtQyxFQUNuQyxHQUFzQixFQUN0QixX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QUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsQ0FBQyxpQkFHL0QsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIHZpZXdDaGlsZCxcclxuICB2aWV3Q2hpbGRyZW4sXHJcbiAgc2lnbmFsLFxyXG4gIGNvbXB1dGVkLFxyXG4gIGluamVjdCxcclxuICBlZmZlY3RcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRyZWVQcmVmaXgsIFhUcmVlTm9kZSwgWFRyZWVQcm9wZXJ0eSB9IGZyb20gJy4vdHJlZS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgWElzRW1wdHksXHJcbiAgWElzRnVuY3Rpb24sXHJcbiAgWElzVW5kZWZpbmVkLFxyXG4gIFhJc0NoYW5nZSxcclxuICBYU2V0RGF0YSxcclxuICBYUmVzaXplLFxyXG4gIFhSZW1vdmUsXHJcbiAgWFJlc2l6ZU9ic2VydmVyLFxyXG4gIFhDb21wdXRlZFN0eWxlLFxyXG4gIFhUb0Nzc1B4XHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IFhUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ub2RlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdFbmQsIENka0RyYWdNb3ZlLCBDZGtEcmFnU3RhcnQsIENka0Ryb3BMaXN0LCBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBYVHJlZVNlcnZpY2UgfSBmcm9tICcuL3RyZWUuc2VydmljZSc7XHJcbmltcG9ydCB7IFhJY29uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaWNvbic7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVHJlZVByZWZpeH1gLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0RyYWdEcm9wTW9kdWxlLCBTY3JvbGxpbmdNb2R1bGUsIFhUcmVlTm9kZUNvbXBvbmVudCwgWEljb25Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVDb21wb25lbnQgZXh0ZW5kcyBYVHJlZVByb3BlcnR5IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICB0cmVlID0gdmlld0NoaWxkKCd0cmVlJywgeyByZWFkOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB9KTtcclxuICB2aXJ0dWFsQm9keSA9IHZpZXdDaGlsZCgndmlydHVhbEJvZHknLCB7IHJlYWQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9KTtcclxuICBkcm9wTGlzdCA9IHZpZXdDaGlsZCgnZHJvcExpc3QnLCB7IHJlYWQ6IENka0Ryb3BMaXN0PEhUTUxFbGVtZW50PiB9KTtcclxuICBub2RlQ29tcG9uZW50cyA9IHZpZXdDaGlsZHJlbihYVHJlZU5vZGVDb21wb25lbnQpO1xyXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG4gIHByaXZhdGUgZm9udFNpemUgPSBjb21wdXRlZCgoKSA9PiBwYXJzZUZsb2F0KFhDb21wdXRlZFN0eWxlKHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnZm9udC1zaXplJykpKTtcclxuXHJcbiAgbm9kZXMgPSBzaWduYWw8WFRyZWVOb2RlW10+KFtdKTtcclxuXHJcbiAgdmlydHVhbE5vZGVzID0gc2lnbmFsPFhUcmVlTm9kZVtdPihbXSk7XHJcbiAgYWN0aXZhdGVkTm9kZSA9IHNpZ25hbDxYVHJlZU5vZGUgfCBudWxsPihudWxsKTtcclxuICBkYXRhSXNGdW5jID0gc2lnbmFsKGZhbHNlKTtcclxuICBnZXR0aW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICB0cmVlRGF0YSA9IHNpZ25hbDxYVHJlZU5vZGVbXT4oW10pO1xyXG5cclxuICBkcmFnZ2luZyA9IHNpZ25hbChmYWxzZSk7XHJcbiAgZHJhZ1Bvc2l0aW9uID0gc2lnbmFsPC0xIHwgMT4oLTEpO1xyXG4gIGhvdmVyVHJlZU5vZGUgPSBzaWduYWw8WFRyZWVOb2RlIHwgbnVsbD4obnVsbCk7XHJcbiAgaG92ZXJUcmVlRWxlITogRWxlbWVudFJlZjtcclxuICBkcmFnZ2luZ1RyZWVOb2RlID0gc2lnbmFsPFhUcmVlTm9kZSB8IG51bGw+KG51bGwpO1xyXG4gIGhhc0NoZWNrZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gWElzRW1wdHkodGhpcy5ub2RlcygpKSk7XHJcblxyXG4gIHByaXZhdGUgdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyITogWFJlc2l6ZU9ic2VydmVyO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyB0cmVlU2VydmljZTogWFRyZWVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZpcnR1YWxCb2R5ID0gdGhpcy52aXJ0dWFsQm9keSgpO1xyXG4gICAgICBpZiAodmlydHVhbEJvZHkpIHtcclxuICAgICAgICB2aXJ0dWFsQm9keVsnX3Njcm9sbFN0cmF0ZWd5J11bJ19taW5CdWZmZXJQeCddID0gdGhpcy5taW5CdWZmZXJQeFNpZ25hbCgpO1xyXG4gICAgICAgIHZpcnR1YWxCb2R5Wydfc2Nyb2xsU3RyYXRlZ3knXVsnX21heEJ1ZmZlclB4J10gPSB0aGlzLm1heEJ1ZmZlclB4U2lnbmFsKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGVpZ2h0QWRhcHRpb25TaWduYWwgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuXHJcbiAgaXNWaXJ0dWFsU2Nyb2xsQWRhcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gISEodGhpcy52aXJ0dWFsU2Nyb2xsKCkgJiYgdGhpcy5oZWlnaHRBZGFwdGlvbigpKTtcclxuICB9KTtcclxuXHJcbiAgdmlydHVhbFNjcm9sbEhlaWdodFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLmlzVmlydHVhbFNjcm9sbEFkYXB0aW9uKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGVpZ2h0QWRhcHRpb25TaWduYWwoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBYVG9Dc3NQeCh0aGlzLnZpcnR1YWxTY3JvbGxIZWlnaHQoKSwgdGhpcy5mb250U2l6ZSgpKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgbWluQnVmZmVyUHhTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5pc1ZpcnR1YWxTY3JvbGxBZGFwdGlvbigpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnZpcnR1YWxTY3JvbGxIZWlnaHRTaWduYWwoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1pbkJ1ZmZlclB4KCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIG1heEJ1ZmZlclB4U2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuaXNWaXJ0dWFsU2Nyb2xsQWRhcHRpb24oKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy52aXJ0dWFsU2Nyb2xsSGVpZ2h0U2lnbmFsKCkgKiAxLjI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXhCdWZmZXJQeCgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGV4cGFuZGVkQWxsLCBkYXRhLCBjaGVja2VkLCBtYW51YWwgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2UoZGF0YSkgJiYgdGhpcy5zZXREYXRhKCk7XHJcbiAgICBYSXNDaGFuZ2UoZXhwYW5kZWRBbGwpICYmIHRoaXMuc2V0RXhwYW5kZWRBbGwoKTtcclxuICAgIFhJc0NoYW5nZShjaGVja2VkKSAmJiB0aGlzLnNldENoZWNrZWRLZXlzKHRoaXMuY2hlY2tlZCgpKTtcclxuICAgIFhJc0NoYW5nZShtYW51YWwpICYmIHRoaXMuc2V0TWFudWFsKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5pc1ZpcnR1YWxTY3JvbGxBZGFwdGlvbigpKSB7XHJcbiAgICAgIHRoaXMuaGVpZ2h0QWRhcHRpb25TaWduYWwuc2V0KHRoaXMuaGVpZ2h0QWRhcHRpb24oKSEuY2xpZW50SGVpZ2h0ISk7XHJcbiAgICAgIFhSZXNpemUodGhpcy5oZWlnaHRBZGFwdGlvbigpISlcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgzMCksXHJcbiAgICAgICAgICBtYXAoKHsgcmVzaXplT2JzZXJ2ZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXI7XHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0QWRhcHRpb25TaWduYWwuc2V0KHRoaXMuaGVpZ2h0QWRhcHRpb24oKSEuY2xpZW50SGVpZ2h0ISk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEFjdGl2YXRlZE5vZGUodGhpcy50cmVlRGF0YSgpKTtcclxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMudW5TdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhKCkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEoKSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcclxuICAgIHRoaXMuZGF0YUlzRnVuYy5zZXQoZmFsc2UpO1xyXG4gICAgaWYgKFhJc0Z1bmN0aW9uKHRoaXMuZGF0YSgpKSkge1xyXG4gICAgICB0aGlzLmRhdGFJc0Z1bmMuc2V0KHRydWUpO1xyXG4gICAgICB0aGlzLmdldERhdGFCeUZ1bmMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIFhTZXREYXRhPFhUcmVlTm9kZT4odGhpcy5kYXRhKCksIHRoaXMudW5TdWJqZWN0KS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLnNldERhdGFDaGFuZ2UoeCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2RrRHJhZ1N0YXJ0ZWQoZXZlbnQ6IENka0RyYWdTdGFydCkge1xyXG4gICAgdGhpcy5kcmFnZ2luZy5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLmRyYWdnaW5nVHJlZU5vZGUuc2V0KGV2ZW50LnNvdXJjZS5kYXRhKTtcclxuICAgIGlmIChldmVudC5zb3VyY2UuZGF0YS5vcGVuKSB7XHJcbiAgICAgIHRoaXMub25Ub2dnbGUoZXZlbnQuZXZlbnQsIGV2ZW50LnNvdXJjZS5kYXRhKTtcclxuICAgIH1cclxuICAgIHRoaXMubm9kZURyYWdTdGFydGVkLmVtaXQoeyBldmVudCwgZnJvbTogdGhpcy5kcmFnZ2luZ1RyZWVOb2RlKCkhIH0pO1xyXG4gIH1cclxuXHJcbiAgY2RrRHJhZ0VuZGVkKGV2ZW50OiBDZGtEcmFnRW5kKSB7XHJcbiAgICB0aGlzLmRyYWdnaW5nLnNldChmYWxzZSk7XHJcbiAgICBjb25zdCBob3ZlclRyZWVOb2RlID0gdGhpcy5ob3ZlclRyZWVOb2RlKCk7XHJcbiAgICBpZiAoaG92ZXJUcmVlTm9kZSkge1xyXG4gICAgICBpZiAoaG92ZXJUcmVlTm9kZS5pZCAhPT0gZXZlbnQuc291cmNlLmRhdGEuaWQpIHtcclxuICAgICAgICB0aGlzLmluc2VydE5vZGUoZXZlbnQuc291cmNlLmRhdGEsIGhvdmVyVHJlZU5vZGUsIHRoaXMuZHJhZ1Bvc2l0aW9uKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIGhvdmVyVHJlZU5vZGUuY2hhbmdlKCk7XHJcbiAgICAgIHRoaXMubm9kZURyYWdFbmRlZC5lbWl0KHtcclxuICAgICAgICBldmVudCxcclxuICAgICAgICBmcm9tOiBldmVudC5zb3VyY2UuZGF0YSxcclxuICAgICAgICB0bzogaG92ZXJUcmVlTm9kZSxcclxuICAgICAgICBwb3NpdGlvbjogdGhpcy5kcmFnUG9zaXRpb24oKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluc2VydE5vZGUoZHJhZ05vZGU6IFhUcmVlTm9kZSwgaG92ZXJOb2RlOiBYVHJlZU5vZGUsIGRyYWdQb3NpdGlvbjogLTEgfCAxKSB7XHJcbiAgICBsZXQgcGFyZW50ID0gdGhpcy5ub2RlcygpLmZpbmQoKHgpID0+IHguaWQgPT09IGRyYWdOb2RlLnBpZCk7XHJcbiAgICB0aGlzLnRyZWVTZXJ2aWNlLm1vdmVOb2RlKHRoaXMudHJlZURhdGEoKSwgZHJhZ05vZGUsIGhvdmVyTm9kZSwgZHJhZ1Bvc2l0aW9uKTtcclxuICAgIHRoaXMuc2V0RGF0YUNoYW5nZSh0aGlzLnRyZWVEYXRhKCksIHRydWUsIGZhbHNlLCB0cnVlLCBwYXJlbnQpO1xyXG4gIH1cclxuXHJcbiAgY2RrRHJhZ01vdmVkKGV2ZW50OiBDZGtEcmFnTW92ZTxYVHJlZU5vZGU+KSB7XHJcbiAgICBjb25zdCBob3ZlclRyZWVOb2RlID0gdGhpcy5ob3ZlclRyZWVOb2RlKCk7XHJcbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcoKSB8fCAhaG92ZXJUcmVlTm9kZSkgcmV0dXJuO1xyXG4gICAgY29uc3QgeSA9IGV2ZW50LnBvaW50ZXJQb3NpdGlvbi55O1xyXG4gICAgaWYgKGV2ZW50LnNvdXJjZS5kYXRhLmlkID09PSBob3ZlclRyZWVOb2RlLmlkKSByZXR1cm47XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmhvdmVyVHJlZUVsZS5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgeyB0b3AsIGhlaWdodCB9ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgZGVzID0gTWF0aC5tYXgoaGVpZ2h0ICogMC41LCAyKTtcclxuICAgIGlmICh5ID4gdG9wICYmIHkgPCB0b3AgKyBkZXMpIHtcclxuICAgICAgdGhpcy5kcmFnUG9zaXRpb24uc2V0KC0xKTtcclxuICAgIH0gZWxzZSBpZiAoeSA+IHRvcCArIGRlcyAmJiB5IDwgdG9wICsgaGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuZHJhZ1Bvc2l0aW9uLnNldCgxKTtcclxuICAgIH1cclxuICAgIGhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIGhvdmVyVHJlZU5vZGUuY2hhbmdlKCk7XHJcbiAgICB0aGlzLm5vZGVEcmFnTW92ZWQuZW1pdCh7XHJcbiAgICAgIGV2ZW50LFxyXG4gICAgICBmcm9tOiB0aGlzLmRyYWdnaW5nVHJlZU5vZGUoKSEsXHJcbiAgICAgIHRvOiBob3ZlclRyZWVOb2RlLFxyXG4gICAgICBwb3NpdGlvbjogdGhpcy5kcmFnUG9zaXRpb24oKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcmVkaWNhdGUoX2RyYWc6IENka0RyYWc8WFRyZWVOb2RlPiwgX2Ryb3A6IENka0Ryb3BMaXN0PFhUcmVlTm9kZT4pIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRNYW51YWwoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhSXNGdW5jKCkpIHRoaXMuZ2V0RGF0YUJ5RnVuYygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhQnlGdW5jKCkge1xyXG4gICAgaWYgKCF0aGlzLm1hbnVhbCgpKSByZXR1cm47XHJcbiAgICBYU2V0RGF0YTxYVHJlZU5vZGU+KCh0aGlzLmRhdGEoKSBhcyBGdW5jdGlvbikoKSwgdGhpcy51blN1YmplY3QpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnNldERhdGFDaGFuZ2UoeCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0YUNoYW5nZShcclxuICAgIHZhbHVlOiBYVHJlZU5vZGVbXSxcclxuICAgIHJlZ2V0Q2hpbGRyZW4gPSBmYWxzZSxcclxuICAgIGluaXQgPSB0cnVlLFxyXG4gICAgcGFyZW50T3BlbiA9IHRydWUsXHJcbiAgICBsYXp5UGFyYW50PzogWFRyZWVOb2RlXHJcbiAgKSB7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy5jaGVja2VkKCkpIHx8ICF0aGlzLmhhc0NoZWNrZWQoKSkgdGhpcy5jaGVja2VkLnNldChbXSk7XHJcbiAgICBjb25zdCBnZXRDaGlsZHJlbiA9IChub2RlOiBYVHJlZU5vZGUsIGxldmVsOiBudW1iZXIpID0+IHtcclxuICAgICAgaWYgKGluaXQpIHtcclxuICAgICAgICBub2RlLmxldmVsID0gbGV2ZWw7XHJcbiAgICAgICAgbm9kZS5vcGVuID1cclxuICAgICAgICAgIHRoaXMuZXhwYW5kZWRBbGwoKSB8fCBsZXZlbCA8PSB0aGlzLmV4cGFuZGVkTGV2ZWwoKSB8fCB0aGlzLmV4cGFuZGVkKCkuaW5jbHVkZXMobm9kZS5pZCkgfHwgbm9kZS5vcGVuO1xyXG4gICAgICAgIG5vZGUuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZCgpLmluY2x1ZGVzKG5vZGUuaWQpIHx8IG5vZGUuY2hlY2tlZDtcclxuICAgICAgICBub2RlLmNoaWxkcmVuTG9hZGVkID0gbm9kZS5vcGVuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChYSXNVbmRlZmluZWQobm9kZS5jaGlsZHJlbikgfHwgcmVnZXRDaGlsZHJlbikge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4gPSB2YWx1ZS5maWx0ZXIoKHkpID0+IHkucGlkID09PSBub2RlLmlkKTtcclxuICAgICAgICBpZiAodGhpcy5sZXZlbENoZWNrKCkgJiYgbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoZWNrZWQpIHtcclxuICAgICAgICAgIGZvciAobGV0IG5kIG9mIG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgbmQuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgICAgICB4LnB1c2gobmQuaWQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoKCF0aGlzLmxhenkoKSAmJiAoWElzVW5kZWZpbmVkKG5vZGUubGVhZikgfHwgcmVnZXRDaGlsZHJlbikpIHx8IG5vZGUuaWQgPT09IGxhenlQYXJhbnQ/LmlkKSB7XHJcbiAgICAgICAgbm9kZS5sZWFmID0gKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCBhcyBudW1iZXIpID09PSAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghbm9kZS5sZWFmKSBub2RlLmNoaWxkcmVuPy5tYXAoKHkpID0+IGdldENoaWxkcmVuKHksIGxldmVsICsgMSkpO1xyXG4gICAgICByZXR1cm4gbm9kZTtcclxuICAgIH07XHJcbiAgICB0aGlzLnRyZWVEYXRhLnNldCh2YWx1ZSk7XHJcbiAgICB0aGlzLm5vZGVzLnNldCh2YWx1ZS5maWx0ZXIoKHgpID0+IFhJc0VtcHR5KHgucGlkKSkubWFwKCh4KSA9PiBnZXRDaGlsZHJlbih4LCAwKSkpO1xyXG4gICAgaWYgKHBhcmVudE9wZW4pIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xyXG4gICAgICAgIGlmICghaXRlbS5sZWFmICYmIGl0ZW0ub3Blbikge1xyXG4gICAgICAgICAgdGhpcy5zZXRQYXJlbnRPcGVuKHZhbHVlLCBpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2V0RXhwYW5kZWQoKTtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgbm9kZU1vdXNlZW50ZXIoJGV2ZW50OiB7IGV2ZW50OiBNb3VzZUV2ZW50OyBub2RlOiBYVHJlZU5vZGU7IGVsZTogRWxlbWVudFJlZiB9KSB7XHJcbiAgICBjb25zdCB7IG5vZGUsIGVsZSB9ID0gJGV2ZW50O1xyXG4gICAgaWYgKCF0aGlzLmRyYWdnaW5nKCkpIHJldHVybjtcclxuICAgIGxldCBiZWZvcmUgPSB0aGlzLmhvdmVyVHJlZU5vZGUoKTtcclxuICAgIHRoaXMuaG92ZXJUcmVlTm9kZS5zZXQobm9kZSk7XHJcbiAgICB0aGlzLmhvdmVyVHJlZUVsZSA9IGVsZTtcclxuICAgIGNvbnN0IGhvdmVyVHJlZU5vZGUgPSB0aGlzLmhvdmVyVHJlZU5vZGUoKTtcclxuICAgIGlmIChob3ZlclRyZWVOb2RlKSB7XHJcbiAgICAgIGhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIGhvdmVyVHJlZU5vZGUuY2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoYmVmb3JlKSB7XHJcbiAgICAgIGJlZm9yZS5jaGFuZ2UgJiYgYmVmb3JlLmNoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghbm9kZS5sZWFmICYmICFub2RlLm9wZW4pIHtcclxuICAgICAgbGV0IGZyb20gPSB0aGlzLm5vZGVzKCkuaW5kZXhPZih0aGlzLmRyYWdnaW5nVHJlZU5vZGUoKSEpO1xyXG4gICAgICBsZXQgdG8gPSB0aGlzLm5vZGVzKCkuaW5kZXhPZihub2RlKTtcclxuICAgICAgaWYgKHRvIC0gZnJvbSAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLm9uVG9nZ2xlKG51bGwhLCBub2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2Nyb2xsVG9wKCkge1xyXG4gICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMuc2Nyb2xsRWxlbWVudCgpO1xyXG4gICAgaWYgKCFzY3JvbGxFbGVtZW50IHx8ICF0aGlzLmFjdGl2YXRlZE5vZGUoKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgaW54ID0gdGhpcy5ub2RlcygpLmluZGV4T2YodGhpcy5hY3RpdmF0ZWROb2RlKCkhKTtcclxuICAgIGxldCBjb20gPSB0aGlzLm5vZGVDb21wb25lbnRzKCkuZmluZCgoXywgaW5kZXgpID0+IGluZGV4ID09PSBpbngpO1xyXG4gICAgaWYgKCFjb20pIHJldHVybjtcclxuICAgIGxldCBlbGUgPSBjb20uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgbGV0IHNjcm9sbEVsZSA9IHNjcm9sbEVsZW1lbnQ7XHJcbiAgICBsZXQgbWluID0gc2Nyb2xsRWxlLnNjcm9sbFRvcDtcclxuICAgIGxldCBtYXggPSBzY3JvbGxFbGUuc2Nyb2xsVG9wICsgc2Nyb2xsRWxlLmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGUub2Zmc2V0VG9wICsgZWxlLmNsaWVudEhlaWdodCA+IG1heCkge1xyXG4gICAgICBsZXQgc2Nyb2xsVG9wID0gZWxlLm9mZnNldFRvcCArIGVsZS5jbGllbnRIZWlnaHQgLSBzY3JvbGxFbGUuY2xpZW50SGVpZ2h0O1xyXG4gICAgICBzY3JvbGxFbGUuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsZS5vZmZzZXRUb3AgPCBtaW4pIHtcclxuICAgICAgc2Nyb2xsRWxlLnNjcm9sbFRvcCA9IGVsZS5vZmZzZXRUb3A7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2VkTm9kZXMoKTogWFRyZWVOb2RlW10ge1xyXG4gICAgbGV0IHJlc3VsdDogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICBpZiAoeC5jaGVja2VkICYmICFyZXN1bHQuaW5jbHVkZXMoeCkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IFsuLi5yZXN1bHQsIHhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRDaGlsZHJlbih4LmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgZ2V0Q2hpbGRyZW4odGhpcy5ub2RlcygpKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2VkS2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLmdldENoZWNrZWROb2RlcygpLm1hcCgoeCkgPT4geC5pZCk7XHJcbiAgfVxyXG5cclxuICBzZXRDaGVja2VkS2V5cyhrZXlzOiBhbnlbXSA9IFtdKSB7XHJcbiAgICBpZiAoIVhJc0VtcHR5KGtleXMpKSB0aGlzLmhhc0NoZWNrZWQuc2V0KHRydWUpO1xyXG4gICAgY29uc3Qgc2V0Q2hpbGRyZW4gPSAobm9kZXM6IFhUcmVlTm9kZVtdLCBjbGVhciA9IGZhbHNlKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShub2RlcykpIHJldHVybjtcclxuICAgICAgbm9kZXMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgIHguY2hlY2tlZCA9ICFjbGVhciAmJiBrZXlzLmluY2x1ZGVzKHguaWQpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKHRydWUpO1xyXG4gICAgICAgIHNldENoaWxkcmVuKHguY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10sIGNsZWFyKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgc2V0Q2hpbGRyZW4odGhpcy5ub2RlcygpLCBYSXNFbXB0eShrZXlzKSk7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHNldEV4cGFuZGVkQWxsKCkge1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRBbGwoKSAmJiB0aGlzLnRyZWVEYXRhKCkubGVuZ3RoID09PSB0aGlzLm5vZGVzKCkubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCBzZXRDaGlsZHJlbiA9IChub2RlczogWFRyZWVOb2RlW10pID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KG5vZGVzKSkgcmV0dXJuO1xyXG4gICAgICBub2Rlcy5mb3JFYWNoKCh4KSA9PiB7XHJcbiAgICAgICAgeC5vcGVuID0gdGhpcy5leHBhbmRlZEFsbCgpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZXMoKSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRBbGwoKSA9PT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5ub2Rlcy5zZXQodGhpcy50cmVlRGF0YSgpLmZpbHRlcigoeCkgPT4gWElzRW1wdHkoeC5waWQpKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy52aXJ0dWFsTm9kZXMoKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLnZpcnR1YWxOb2Rlcy5zZXQoWy4uLnRoaXMubm9kZXMoKV0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubm9kZXMuc2V0KHRoaXMudmlydHVhbE5vZGVzKCkpO1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMudmlydHVhbE5vZGVzKCkpIHtcclxuICAgICAgICB0aGlzLnNldFZpcnR1YWxFeHBhbmRlZEFsbChpdGVtLCB0aGlzLmV4cGFuZGVkQWxsKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnZpcnR1YWxCb2R5KCk/LmNoZWNrVmlld3BvcnRTaXplKCk7XHJcbiAgfVxyXG5cclxuICBzZXRFeHBhbmRlZCgpIHtcclxuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5ub2RlcygpKSB7XHJcbiAgICAgIGlmIChpdGVtLm9wZW4gJiYgaXRlbS5jaGlsZHJlbikge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMubm9kZXMoKS5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMubm9kZXMudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgICB4LnNwbGljZShpbmRleCArIDEsIDAsIC4uLihpdGVtLmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKSk7XHJcbiAgICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW0uY2hhbmdlICYmIGl0ZW0uY2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWaXJ0dWFsRXhwYW5kZWRBbGwoaXRlbTogWFRyZWVOb2RlLCBleHBhbmRlZEFsbDogYm9vbGVhbikge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5ub2RlcygpLmluZGV4T2YoaXRlbSk7XHJcbiAgICBpZiAoZXhwYW5kZWRBbGwpIHtcclxuICAgICAgbGV0IGFkZE5vZGVzOiBYVHJlZU5vZGVbXSA9IFtdO1xyXG4gICAgICBjb25zdCBnZXROb2RlcyA9IChuZDogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgbmQuY2hpbGRyZW4hKSB7XHJcbiAgICAgICAgICBhZGROb2Rlcy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgIGdldE5vZGVzKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIGdldE5vZGVzKGl0ZW0pO1xyXG4gICAgICB0aGlzLm5vZGVzLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIHguc3BsaWNlKGluZGV4ICsgMSwgMCwgLi4uYWRkTm9kZXMpO1xyXG4gICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmlydHVhbFRvZ2dsZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMubm9kZXMoKS5pbmRleE9mKG5vZGUpO1xyXG4gICAgaWYgKG5vZGUub3Blbikge1xyXG4gICAgICBsZXQgYWRkTm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgICAgIGNvbnN0IGdldE5vZGVzID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgICBpZiAoWElzRW1wdHkobmQuY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgbmQuY2hpbGRyZW4hKSB7XHJcbiAgICAgICAgICBhZGROb2Rlcy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgIGNoaWxkLm9wZW4gJiYgZ2V0Tm9kZXMoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgZ2V0Tm9kZXMobm9kZSk7XHJcbiAgICAgIHRoaXMubm9kZXMudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgeC5zcGxpY2UoaW5kZXggKyAxLCAwLCAuLi5hZGROb2Rlcyk7XHJcbiAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZGVsQ291bnQgPSAwO1xyXG4gICAgICBjb25zdCBnZXRDb3VudCA9IChuZDogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKFhJc0VtcHR5KG5kLmNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICAgIGRlbENvdW50ICs9IG5kLmNoaWxkcmVuIS5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgbmQuY2hpbGRyZW4hKSB7XHJcbiAgICAgICAgICBjaGlsZC5vcGVuICYmIGdldENvdW50KGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIGdldENvdW50KG5vZGUpO1xyXG4gICAgICB0aGlzLm5vZGVzLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIHguc3BsaWNlKGluZGV4ICsgMSwgZGVsQ291bnQpO1xyXG4gICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWRkT3JSZW1vdmVFeHBhbmRlZChub2RlKTtcclxuICAgIHRoaXMudmlydHVhbEJvZHkoKT8uY2hlY2tWaWV3cG9ydFNpemUoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGFkZE9yUmVtb3ZlRXhwYW5kZWQobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAobm9kZS5vcGVuKSB7XHJcbiAgICAgIGlmICghdGhpcy5leHBhbmRlZCgpLmluY2x1ZGVzKG5vZGUuaWQpKSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgIHgucHVzaChub2RlLmlkKTtcclxuICAgICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkKCkuaW5jbHVkZXMobm9kZS5pZCkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgeC5zcGxpY2UoeC5pbmRleE9mKG5vZGUuaWQpLCAxKTtcclxuICAgICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEFjdGl2YXRlZE5vZGUobm9kZXM6IFhUcmVlTm9kZVtdLCBwYXJlbnRPcGVuID0gdHJ1ZSwgZGF0YUNoYW5nZSA9IHRydWUpIHtcclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLmFjdGl2YXRlZElkKCkpICYmIHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZElkLnNldChbXSk7XHJcbiAgICB9XHJcbiAgICBsZXQgYmVmb3JlID0gdGhpcy5hY3RpdmF0ZWROb2RlKCk7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XHJcbiAgICAgIGlmICh0aGlzLmFjdGl2YXRlZElkKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCBpZHMgPSB0aGlzLm9iamVjdEFycmF5KCkgPyB0aGlzLmFjdGl2YXRlZElkKCkubWFwKCh4OiBYVHJlZU5vZGUpID0+IHguaWQpIDogdGhpcy5hY3RpdmF0ZWRJZCgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgbm9kZSA9IG5vZGVzLmZpbmQoKHgpID0+IHguaWQgPT09IGlkc1tpXSkgYXMgWFRyZWVOb2RlO1xyXG4gICAgICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICAgICAgcGFyZW50T3BlbiAmJiB0aGlzLnNldFBhcmVudE9wZW4obm9kZXMsIG5vZGUpO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gaWRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlZE5vZGUuc2V0KG5vZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmF0ZWROb2RlKCkhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGFjdGl2YXRlZElkID0gdGhpcy5hY3RpdmF0ZWRJZCgpO1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZE5vZGUuc2V0KG5vZGVzLmZpbmQoKHgpID0+IHguaWQgPT09IGFjdGl2YXRlZElkKSBhcyBYVHJlZU5vZGUpO1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmF0ZWROb2RlKCkpIHtcclxuICAgICAgICBwYXJlbnRPcGVuICYmIHRoaXMuc2V0UGFyZW50T3Blbihub2RlcywgdGhpcy5hY3RpdmF0ZWROb2RlKCkhKTtcclxuICAgICAgICB0aGlzLmFjdGl2YXRlZENoYW5nZS5lbWl0KHRoaXMuYWN0aXZhdGVkTm9kZSgpISk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChiZWZvcmUpIHtcclxuICAgICAgYmVmb3JlLmNoYW5nZSAmJiBiZWZvcmUuY2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIVhJc0VtcHR5KG5vZGVzKSAmJiBkYXRhQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YUNoYW5nZShub2RlcywgZmFsc2UsIHRydWUsIHBhcmVudE9wZW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UGFyZW50T3Blbihub2RlczogWFRyZWVOb2RlW10sIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgY29uc3QgZ2V0UGFyZW50ID0gKGNoaWxkOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkLnBpZCkpIHJldHVybjtcclxuICAgICAgY29uc3QgcGFyZW50ID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PT0gY2hpbGQucGlkKSBhcyBYVHJlZU5vZGU7XHJcbiAgICAgIGlmICghWElzRW1wdHkocGFyZW50KSkge1xyXG4gICAgICAgIGlmICghdGhpcy5leHBhbmRlZCgpLmluY2x1ZGVzKHBhcmVudC5pZCkpIHtcclxuICAgICAgICAgIHRoaXMuZXhwYW5kZWQudXBkYXRlKCh4KSA9PiBbLi4ueCwgcGFyZW50LmlkXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmVudC5vcGVuID0gdHJ1ZTtcclxuICAgICAgICBwYXJlbnQuY2hhbmdlICYmIHBhcmVudC5jaGFuZ2UoKTtcclxuICAgICAgICBnZXRQYXJlbnQocGFyZW50KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGdldFBhcmVudChub2RlKTtcclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlKGV2ZW50OiBFdmVudCB8IG51bGwsIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgbm9kZS5vcGVuID0gIW5vZGUub3BlbjtcclxuICAgIGlmICh0aGlzLmxhenkoKSAmJiAhbm9kZS5jaGlsZHJlbkxvYWRlZCkge1xyXG4gICAgICB0aGlzLmdldExhenlEYXRhKG5vZGUsICgpID0+IHRoaXMudmlydHVhbFRvZ2dsZShub2RlKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZpcnR1YWxUb2dnbGUobm9kZSk7XHJcbiAgICB9XHJcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIGdldExhenlEYXRhKG5vZGU6IFhUcmVlTm9kZSwgY2FsbEJhY2s/OiAoKSA9PiB2b2lkKSB7XHJcbiAgICBub2RlLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICAgICh0aGlzLmRhdGEoKSBhcyAocGlkPzogYW55KSA9PiBPYnNlcnZhYmxlPFhUcmVlTm9kZVtdPikobm9kZS5pZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh4KSA9PlxyXG4gICAgICAgICAgeC5tYXAoKHkpID0+IHtcclxuICAgICAgICAgICAgeS5sZXZlbCA9IChub2RlLmxldmVsIGFzIG51bWJlcikgKyAxO1xyXG4gICAgICAgICAgICB5LmNoZWNrZWQgPSBub2RlLmNoZWNrZWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB5O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4gPSB4O1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW5Mb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIG5vZGUubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudHJlZURhdGEuc2V0KFsuLi50aGlzLnRyZWVEYXRhKCksIC4uLnhdKTtcclxuICAgICAgICBpZiAoY2FsbEJhY2spIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGROb2RlKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudHJlZURhdGEoKS5maW5kKCh4KSA9PiB4LmlkID09PSBub2RlLnBpZCkhO1xyXG4gICAgY29uc3QgX2FkZE5vZGUgPSAoKSA9PiB7XHJcbiAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICBub2RlLmxldmVsID0gcGFyZW50LmxldmVsISArIDE7XHJcbiAgICAgICAgbm9kZS5waWQgPSBwYXJlbnQuaWQ7XHJcbiAgICAgICAgbm9kZS5sZWFmID0gdHJ1ZTtcclxuICAgICAgICBwYXJlbnQubGVhZiA9IGZhbHNlO1xyXG4gICAgICAgIHBhcmVudC5vcGVuID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRyZWVEYXRhLnNldChbLi4udGhpcy50cmVlRGF0YSgpLCBub2RlXSk7XHJcbiAgICAgICAgdGhpcy5zZXRQYXJlbnRPcGVuKHRoaXMudHJlZURhdGEoKSwgbm9kZSk7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhQ2hhbmdlKHRoaXMudHJlZURhdGEoKSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZElkKG5vZGUpO1xyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh0aGlzLm5vZGVzKCksIHRydWUsIGZhbHNlKTtcclxuICAgICAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKFhJc0VtcHR5KG5vZGUucGlkKSkge1xyXG4gICAgICAgIG5vZGUubGV2ZWwgPSAwO1xyXG4gICAgICAgIG5vZGUubGVhZiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50cmVlRGF0YS5zZXQoWy4uLnRoaXMudHJlZURhdGEoKSwgbm9kZV0pO1xyXG4gICAgICAgIHRoaXMubm9kZXMuc2V0KFsuLi50aGlzLm5vZGVzKCksIG5vZGVdKTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZElkKG5vZGUpO1xyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh0aGlzLm5vZGVzKCksIHRydWUsIGZhbHNlKTtcclxuICAgICAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMubGF6eSgpICYmIHBhcmVudCAmJiAhcGFyZW50LmNoaWxkcmVuTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuZ2V0TGF6eURhdGEocGFyZW50LCAoKSA9PiB7XHJcbiAgICAgICAgX2FkZE5vZGUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfYWRkTm9kZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZhdGVkSWQobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XHJcbiAgICAgIGlmICh0aGlzLm9iamVjdEFycmF5KCkpIHtcclxuICAgICAgICB0aGlzLmFjdGl2YXRlZElkLnNldChbbm9kZV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkSWQuc2V0KFtub2RlLmlkXSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVkSWQuc2V0KG5vZGUuaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTm9kZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWVEYXRhKCkuZmluZCgoeCkgPT4geC5pZCA9PT0gbm9kZS5waWQpITtcclxuICAgIGNvbnN0IHJlbW92ZUNoaWxkcmVuID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgWFJlbW92ZSh0aGlzLnRyZWVEYXRhKCksICh4KSA9PiB4LmlkID09PSBuZC5pZCk7XHJcbiAgICAgIGlmIChuZC5jaGlsZHJlbikge1xyXG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbmQuY2hpbGRyZW4pIHtcclxuICAgICAgICAgIHJlbW92ZUNoaWxkcmVuKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJlbW92ZUNoaWxkcmVuKG5vZGUpO1xyXG5cclxuICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgaWYgKCFwYXJlbnQuY2hpbGRyZW4pIHBhcmVudC5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICBjb25zdCBjaGlsZEluZGV4ID0gcGFyZW50LmNoaWxkcmVuLmZpbmRJbmRleCgoeCkgPT4geC5pZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgIGlmIChjaGlsZEluZGV4ID4gLTEpIHtcclxuICAgICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGNoaWxkSW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmVudC5sZWFmID0gcGFyZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMDtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0RGF0YUNoYW5nZSh0aGlzLnRyZWVEYXRhKCksIHRydWUsIGZhbHNlLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVOb2RlKG5vZGU6IFhUcmVlTm9kZSwgbm93Tm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBPYmplY3QuYXNzaWduKG5vZGUsIG5vd05vZGUpO1xyXG4gICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJdGVtKF9pbmRleDogbnVtYmVyLCBpdGVtOiBYVHJlZU5vZGUpIHtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICN0cmVlIGNsYXNzPVwieC10cmVlXCIgW2NsYXNzLngtdHJlZS1vbmx5LWxlYWZdPVwib25seUxlYWYoKVwiPlxyXG4gIEBpZiAodmlydHVhbFNjcm9sbCgpKSB7XHJcbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICN2aXJ0dWFsQm9keVxyXG4gICAgICBbaXRlbVNpemVdPVwiaXRlbVNpemUoKVwiXHJcbiAgICAgIFttaW5CdWZmZXJQeF09XCJtaW5CdWZmZXJQeFNpZ25hbCgpXCJcclxuICAgICAgW21heEJ1ZmZlclB4XT1cIm1heEJ1ZmZlclB4U2lnbmFsKClcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInZpcnR1YWxTY3JvbGxIZWlnaHRTaWduYWwoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIngtdHJlZS1jb250ZW50XCJcclxuICAgICAgICAjZHJvcExpc3RcclxuICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFkcmFnKClcIlxyXG4gICAgICAgIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbaGlkZGVuXT1cImlzRW1wdHkoKVwiXHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJub2RlcygpXCJcclxuICAgICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJwcmVkaWNhdGVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHgtdHJlZS1ub2RlXHJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBub2RlIG9mIG5vZGVzKCk7IHRlbXBsYXRlQ2FjaGVTaXplOiAwOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cImNka0RyYWdTdGFydGVkKCRldmVudClcIlxyXG4gICAgICAgICAgKGNka0RyYWdFbmRlZCk9XCJjZGtEcmFnRW5kZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2RrRHJhZ01vdmVkKT1cImNka0RyYWdNb3ZlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJub2RlXCJcclxuICAgICAgICAgIChub2RlTW91c2VlbnRlcik9XCJub2RlTW91c2VlbnRlcigkZXZlbnQpXCJcclxuICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICAgICAgW25vZGVIZWlnaHRdPVwibm9kZUhlaWdodCgpXCJcclxuICAgICAgICAgIFtub2RlTm93cmFwXT1cIm5vZGVOb3dyYXAoKVwiXHJcbiAgICAgICAgICBbbm9kZUFsaWduSXRlbXNdPVwibm9kZUFsaWduSXRlbXMoKVwiXHJcbiAgICAgICAgICBbKGRpc2FibGVkKV09XCJub2RlLmRpc2FibGVkIVwiXHJcbiAgICAgICAgICBbKGlkKV09XCJub2RlLmlkXCJcclxuICAgICAgICAgIFsocGlkKV09XCJub2RlLnBpZFwiXHJcbiAgICAgICAgICBbKGxlYWYpXT1cIm5vZGUubGVhZiFcIlxyXG4gICAgICAgICAgWyhoZWlnaHQpXT1cIm5vZGUuaGVpZ2h0IVwiXHJcbiAgICAgICAgICBbKGFsaWduSXRlbXMpXT1cIm5vZGUuYWxpZ25JdGVtcyFcIlxyXG4gICAgICAgICAgWyhsb2FkaW5nKV09XCJub2RlLmxvYWRpbmchXCJcclxuICAgICAgICAgIFsobGV2ZWwpXT1cIm5vZGUubGV2ZWwhXCJcclxuICAgICAgICAgIFsob3BlbildPVwibm9kZS5vcGVuXCJcclxuICAgICAgICAgIFsoY2hlY2tlZCldPVwibm9kZS5jaGVja2VkIVwiXHJcbiAgICAgICAgICBbKGluZGV0ZXJtaW5hdGUpXT1cIm5vZGUuaW5kZXRlcm1pbmF0ZSFcIlxyXG4gICAgICAgICAgWyhsYWJlbCldPVwibm9kZS5sYWJlbCFcIlxyXG4gICAgICAgICAgWyhub3dyYXApXT1cIm5vZGUubm93cmFwIVwiXHJcbiAgICAgICAgICAodG9nZ2xlKT1cIm9uVG9nZ2xlKG51bGwsICRldmVudClcIlxyXG4gICAgICAgID48L3gtdHJlZS1ub2RlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gIH0gQGVsc2Uge1xyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIngtdHJlZS1jb250ZW50XCJcclxuICAgICAgI2Ryb3BMaXN0XHJcbiAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFkcmFnKClcIlxyXG4gICAgICBbY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgIFtoaWRkZW5dPVwiaXNFbXB0eSgpXCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJub2RlcygpXCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwicHJlZGljYXRlXCJcclxuICAgID5cclxuICAgICAgQGZvciAobm9kZSBvZiBub2RlcygpOyB0cmFjayBub2RlLmlkICsgJycgKyAkaW5kZXgpIHtcclxuICAgICAgICA8eC10cmVlLW5vZGVcclxuICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiY2RrRHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2RrRHJhZ0VuZGVkKT1cImNka0RyYWdFbmRlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIChjZGtEcmFnTW92ZWQpPVwiY2RrRHJhZ01vdmVkKCRldmVudClcIlxyXG4gICAgICAgICAgW2Nka0RyYWdEYXRhXT1cIm5vZGVcIlxyXG4gICAgICAgICAgKG5vZGVNb3VzZWVudGVyKT1cIm5vZGVNb3VzZWVudGVyKCRldmVudClcIlxyXG4gICAgICAgICAgW25vZGVdPVwibm9kZVwiXHJcbiAgICAgICAgICBbbm9kZUhlaWdodF09XCJub2RlSGVpZ2h0KClcIlxyXG4gICAgICAgICAgW25vZGVOb3dyYXBdPVwibm9kZU5vd3JhcCgpXCJcclxuICAgICAgICAgIFtub2RlQWxpZ25JdGVtc109XCJub2RlQWxpZ25JdGVtcygpXCJcclxuICAgICAgICAgIFsoZGlzYWJsZWQpXT1cIm5vZGUuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgWyhpZCldPVwibm9kZS5pZFwiXHJcbiAgICAgICAgICBbKHBpZCldPVwibm9kZS5waWRcIlxyXG4gICAgICAgICAgWyhsZWFmKV09XCJub2RlLmxlYWZcIlxyXG4gICAgICAgICAgWyhoZWlnaHQpXT1cIm5vZGUuaGVpZ2h0IVwiXHJcbiAgICAgICAgICBbKGFsaWduSXRlbXMpXT1cIm5vZGUuYWxpZ25JdGVtc1wiXHJcbiAgICAgICAgICBbKGxvYWRpbmcpXT1cIm5vZGUubG9hZGluZ1wiXHJcbiAgICAgICAgICBbKGxldmVsKV09XCJub2RlLmxldmVsXCJcclxuICAgICAgICAgIFsob3BlbildPVwibm9kZS5vcGVuXCJcclxuICAgICAgICAgIFsoY2hlY2tlZCldPVwibm9kZS5jaGVja2VkXCJcclxuICAgICAgICAgIFsoaW5kZXRlcm1pbmF0ZSldPVwibm9kZS5pbmRldGVybWluYXRlXCJcclxuICAgICAgICAgIFsobGFiZWwpXT1cIm5vZGUubGFiZWxcIlxyXG4gICAgICAgICAgWyhub3dyYXApXT1cIm5vZGUubm93cmFwXCJcclxuICAgICAgICAgICh0b2dnbGUpPVwib25Ub2dnbGUobnVsbCwgJGV2ZW50KVwiXHJcbiAgICAgICAgPjwveC10cmVlLW5vZGU+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcblxyXG48IS0tIOaPkOWJjeWKoOi9vWxvYWRpbmfnmoTlm77moIctLT5cclxuQGlmIChsYXp5KCkpIHtcclxuICA8eC1pY29uIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiIHR5cGU9XCJmdG8tbG9hZGVyXCI+PC94LWljb24+XHJcbn1cclxuIl19
577
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBRWpCLFVBQVUsRUFFVix1QkFBdUIsRUFHdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBYSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxZQUFZLEVBQ1osU0FBUyxFQUNULFFBQVEsRUFDUixPQUFPLEVBQ1AsT0FBTyxFQUVQLGNBQWMsRUFDZCxRQUFRLEVBQ1QsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBa0QsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBVzNDLE1BQU0sT0FBTyxjQUFlLFNBQVEsYUFBYTtJQTJCL0MsWUFDUyxRQUFtQixFQUNuQixVQUFtQyxFQUNuQyxHQUFzQixFQUN0QixX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QUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsQ0FBQyxpQkFHL0QsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIHZpZXdDaGlsZCxcclxuICB2aWV3Q2hpbGRyZW4sXHJcbiAgc2lnbmFsLFxyXG4gIGNvbXB1dGVkLFxyXG4gIGluamVjdCxcclxuICBlZmZlY3RcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRyZWVQcmVmaXgsIFhUcmVlTm9kZSwgWFRyZWVQcm9wZXJ0eSB9IGZyb20gJy4vdHJlZS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgWElzRW1wdHksXHJcbiAgWElzRnVuY3Rpb24sXHJcbiAgWElzVW5kZWZpbmVkLFxyXG4gIFhJc0NoYW5nZSxcclxuICBYU2V0RGF0YSxcclxuICBYUmVzaXplLFxyXG4gIFhSZW1vdmUsXHJcbiAgWFJlc2l6ZU9ic2VydmVyLFxyXG4gIFhDb21wdXRlZFN0eWxlLFxyXG4gIFhUb0Nzc1B4XHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IFhUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ub2RlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdFbmQsIENka0RyYWdNb3ZlLCBDZGtEcmFnU3RhcnQsIENka0Ryb3BMaXN0LCBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBYVHJlZVNlcnZpY2UgfSBmcm9tICcuL3RyZWUuc2VydmljZSc7XHJcbmltcG9ydCB7IFhJY29uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaWNvbic7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVHJlZVByZWZpeH1gLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0RyYWdEcm9wTW9kdWxlLCBTY3JvbGxpbmdNb2R1bGUsIFhUcmVlTm9kZUNvbXBvbmVudCwgWEljb25Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVDb21wb25lbnQgZXh0ZW5kcyBYVHJlZVByb3BlcnR5IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICB0cmVlID0gdmlld0NoaWxkKCd0cmVlJywgeyByZWFkOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB9KTtcclxuICB2aXJ0dWFsQm9keSA9IHZpZXdDaGlsZCgndmlydHVhbEJvZHknLCB7IHJlYWQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9KTtcclxuICBkcm9wTGlzdCA9IHZpZXdDaGlsZCgnZHJvcExpc3QnLCB7IHJlYWQ6IENka0Ryb3BMaXN0PEhUTUxFbGVtZW50PiB9KTtcclxuICBub2RlQ29tcG9uZW50cyA9IHZpZXdDaGlsZHJlbihYVHJlZU5vZGVDb21wb25lbnQpO1xyXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG4gIHByaXZhdGUgZm9udFNpemUgPSBjb21wdXRlZCgoKSA9PiBwYXJzZUZsb2F0KFhDb21wdXRlZFN0eWxlKHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnZm9udC1zaXplJykpKTtcclxuXHJcbiAgbm9kZXMgPSBzaWduYWw8WFRyZWVOb2RlW10+KFtdKTtcclxuXHJcbiAgdmlydHVhbE5vZGVzID0gc2lnbmFsPFhUcmVlTm9kZVtdPihbXSk7XHJcbiAgYWN0aXZhdGVkTm9kZSA9IHNpZ25hbDxYVHJlZU5vZGUgfCBudWxsPihudWxsKTtcclxuICBkYXRhSXNGdW5jID0gc2lnbmFsKGZhbHNlKTtcclxuICBnZXR0aW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICB0cmVlRGF0YSA9IHNpZ25hbDxYVHJlZU5vZGVbXT4oW10pO1xyXG5cclxuICBkcmFnZ2luZyA9IHNpZ25hbChmYWxzZSk7XHJcbiAgZHJhZ1Bvc2l0aW9uID0gc2lnbmFsPC0xIHwgMT4oLTEpO1xyXG4gIGhvdmVyVHJlZU5vZGUgPSBzaWduYWw8WFRyZWVOb2RlIHwgbnVsbD4obnVsbCk7XHJcbiAgaG92ZXJUcmVlRWxlITogRWxlbWVudFJlZjtcclxuICBkcmFnZ2luZ1RyZWVOb2RlID0gc2lnbmFsPFhUcmVlTm9kZSB8IG51bGw+KG51bGwpO1xyXG4gIGhhc0NoZWNrZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gWElzRW1wdHkodGhpcy5ub2RlcygpKSk7XHJcblxyXG4gIHByaXZhdGUgdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyITogWFJlc2l6ZU9ic2VydmVyO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyB0cmVlU2VydmljZTogWFRyZWVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZpcnR1YWxCb2R5ID0gdGhpcy52aXJ0dWFsQm9keSgpO1xyXG4gICAgICBpZiAodmlydHVhbEJvZHkpIHtcclxuICAgICAgICB2aXJ0dWFsQm9keVsnX3Njcm9sbFN0cmF0ZWd5J11bJ19taW5CdWZmZXJQeCddID0gdGhpcy5taW5CdWZmZXJQeFNpZ25hbCgpO1xyXG4gICAgICAgIHZpcnR1YWxCb2R5Wydfc2Nyb2xsU3RyYXRlZ3knXVsnX21heEJ1ZmZlclB4J10gPSB0aGlzLm1heEJ1ZmZlclB4U2lnbmFsKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGVpZ2h0QWRhcHRpb25TaWduYWwgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuXHJcbiAgaXNWaXJ0dWFsU2Nyb2xsQWRhcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gISEodGhpcy52aXJ0dWFsU2Nyb2xsKCkgJiYgdGhpcy5oZWlnaHRBZGFwdGlvbigpKTtcclxuICB9KTtcclxuXHJcbiAgdmlydHVhbFNjcm9sbEhlaWdodFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLmlzVmlydHVhbFNjcm9sbEFkYXB0aW9uKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGVpZ2h0QWRhcHRpb25TaWduYWwoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBYVG9Dc3NQeCh0aGlzLnZpcnR1YWxTY3JvbGxIZWlnaHQoKSwgdGhpcy5mb250U2l6ZSgpKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgbWluQnVmZmVyUHhTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5pc1ZpcnR1YWxTY3JvbGxBZGFwdGlvbigpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnZpcnR1YWxTY3JvbGxIZWlnaHRTaWduYWwoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1pbkJ1ZmZlclB4KCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIG1heEJ1ZmZlclB4U2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuaXNWaXJ0dWFsU2Nyb2xsQWRhcHRpb24oKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy52aXJ0dWFsU2Nyb2xsSGVpZ2h0U2lnbmFsKCkgKiAxLjI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXhCdWZmZXJQeCgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGV4cGFuZGVkQWxsLCBkYXRhLCBjaGVja2VkLCBtYW51YWwgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2UoZGF0YSkgJiYgdGhpcy5zZXREYXRhKCk7XHJcbiAgICBYSXNDaGFuZ2UoZXhwYW5kZWRBbGwpICYmIHRoaXMuc2V0RXhwYW5kZWRBbGwoKTtcclxuICAgIFhJc0NoYW5nZShjaGVja2VkKSAmJiB0aGlzLnNldENoZWNrZWRLZXlzKHRoaXMuY2hlY2tlZCgpKTtcclxuICAgIFhJc0NoYW5nZShtYW51YWwpICYmIHRoaXMuc2V0TWFudWFsKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5pc1ZpcnR1YWxTY3JvbGxBZGFwdGlvbigpKSB7XHJcbiAgICAgIHRoaXMuaGVpZ2h0QWRhcHRpb25TaWduYWwuc2V0KHRoaXMuaGVpZ2h0QWRhcHRpb24oKSEuY2xpZW50SGVpZ2h0ISk7XHJcbiAgICAgIFhSZXNpemUodGhpcy5oZWlnaHRBZGFwdGlvbigpISlcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgzMCksXHJcbiAgICAgICAgICBtYXAoKHsgcmVzaXplT2JzZXJ2ZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXI7XHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0QWRhcHRpb25TaWduYWwuc2V0KHRoaXMuaGVpZ2h0QWRhcHRpb24oKSEuY2xpZW50SGVpZ2h0ISk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEFjdGl2YXRlZE5vZGUodGhpcy50cmVlRGF0YSgpKTtcclxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMudW5TdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhKCkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEoKSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcclxuICAgIHRoaXMuZGF0YUlzRnVuYy5zZXQoZmFsc2UpO1xyXG4gICAgaWYgKFhJc0Z1bmN0aW9uKHRoaXMuZGF0YSgpKSkge1xyXG4gICAgICB0aGlzLmRhdGFJc0Z1bmMuc2V0KHRydWUpO1xyXG4gICAgICB0aGlzLmdldERhdGFCeUZ1bmMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIFhTZXREYXRhPFhUcmVlTm9kZT4odGhpcy5kYXRhKCksIHRoaXMudW5TdWJqZWN0KS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLnNldERhdGFDaGFuZ2UoeCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2RrRHJhZ1N0YXJ0ZWQoZXZlbnQ6IENka0RyYWdTdGFydCkge1xyXG4gICAgdGhpcy5kcmFnZ2luZy5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLmRyYWdnaW5nVHJlZU5vZGUuc2V0KGV2ZW50LnNvdXJjZS5kYXRhKTtcclxuICAgIGlmIChldmVudC5zb3VyY2UuZGF0YS5vcGVuKSB7XHJcbiAgICAgIHRoaXMub25Ub2dnbGUoZXZlbnQuZXZlbnQsIGV2ZW50LnNvdXJjZS5kYXRhKTtcclxuICAgIH1cclxuICAgIHRoaXMubm9kZURyYWdTdGFydGVkLmVtaXQoeyBldmVudCwgZnJvbTogdGhpcy5kcmFnZ2luZ1RyZWVOb2RlKCkhIH0pO1xyXG4gIH1cclxuXHJcbiAgY2RrRHJhZ0VuZGVkKGV2ZW50OiBDZGtEcmFnRW5kKSB7XHJcbiAgICB0aGlzLmRyYWdnaW5nLnNldChmYWxzZSk7XHJcbiAgICBjb25zdCBob3ZlclRyZWVOb2RlID0gdGhpcy5ob3ZlclRyZWVOb2RlKCk7XHJcbiAgICBpZiAoaG92ZXJUcmVlTm9kZSkge1xyXG4gICAgICBpZiAoaG92ZXJUcmVlTm9kZS5pZCAhPT0gZXZlbnQuc291cmNlLmRhdGEuaWQpIHtcclxuICAgICAgICB0aGlzLmluc2VydE5vZGUoZXZlbnQuc291cmNlLmRhdGEsIGhvdmVyVHJlZU5vZGUsIHRoaXMuZHJhZ1Bvc2l0aW9uKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIGhvdmVyVHJlZU5vZGUuY2hhbmdlKCk7XHJcbiAgICAgIHRoaXMubm9kZURyYWdFbmRlZC5lbWl0KHtcclxuICAgICAgICBldmVudCxcclxuICAgICAgICBmcm9tOiBldmVudC5zb3VyY2UuZGF0YSxcclxuICAgICAgICB0bzogaG92ZXJUcmVlTm9kZSxcclxuICAgICAgICBwb3NpdGlvbjogdGhpcy5kcmFnUG9zaXRpb24oKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluc2VydE5vZGUoZHJhZ05vZGU6IFhUcmVlTm9kZSwgaG92ZXJOb2RlOiBYVHJlZU5vZGUsIGRyYWdQb3NpdGlvbjogLTEgfCAxKSB7XHJcbiAgICBsZXQgcGFyZW50ID0gdGhpcy5ub2RlcygpLmZpbmQoKHgpID0+IHguaWQgPT09IGRyYWdOb2RlLnBpZCk7XHJcbiAgICB0aGlzLnRyZWVTZXJ2aWNlLm1vdmVOb2RlKHRoaXMudHJlZURhdGEoKSwgZHJhZ05vZGUsIGhvdmVyTm9kZSwgZHJhZ1Bvc2l0aW9uKTtcclxuICAgIHRoaXMuc2V0RGF0YUNoYW5nZSh0aGlzLnRyZWVEYXRhKCksIHRydWUsIGZhbHNlLCB0cnVlLCBwYXJlbnQpO1xyXG4gIH1cclxuXHJcbiAgY2RrRHJhZ01vdmVkKGV2ZW50OiBDZGtEcmFnTW92ZTxYVHJlZU5vZGU+KSB7XHJcbiAgICBjb25zdCBob3ZlclRyZWVOb2RlID0gdGhpcy5ob3ZlclRyZWVOb2RlKCk7XHJcbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcoKSB8fCAhaG92ZXJUcmVlTm9kZSkgcmV0dXJuO1xyXG4gICAgY29uc3QgeSA9IGV2ZW50LnBvaW50ZXJQb3NpdGlvbi55O1xyXG4gICAgaWYgKGV2ZW50LnNvdXJjZS5kYXRhLmlkID09PSBob3ZlclRyZWVOb2RlLmlkKSByZXR1cm47XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmhvdmVyVHJlZUVsZS5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgeyB0b3AsIGhlaWdodCB9ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgZGVzID0gTWF0aC5tYXgoaGVpZ2h0ICogMC41LCAyKTtcclxuICAgIGlmICh5ID4gdG9wICYmIHkgPCB0b3AgKyBkZXMpIHtcclxuICAgICAgdGhpcy5kcmFnUG9zaXRpb24uc2V0KC0xKTtcclxuICAgIH0gZWxzZSBpZiAoeSA+IHRvcCArIGRlcyAmJiB5IDwgdG9wICsgaGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuZHJhZ1Bvc2l0aW9uLnNldCgxKTtcclxuICAgIH1cclxuICAgIGhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIGhvdmVyVHJlZU5vZGUuY2hhbmdlKCk7XHJcbiAgICB0aGlzLm5vZGVEcmFnTW92ZWQuZW1pdCh7XHJcbiAgICAgIGV2ZW50LFxyXG4gICAgICBmcm9tOiB0aGlzLmRyYWdnaW5nVHJlZU5vZGUoKSEsXHJcbiAgICAgIHRvOiBob3ZlclRyZWVOb2RlLFxyXG4gICAgICBwb3NpdGlvbjogdGhpcy5kcmFnUG9zaXRpb24oKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcmVkaWNhdGUoX2RyYWc6IENka0RyYWc8WFRyZWVOb2RlPiwgX2Ryb3A6IENka0Ryb3BMaXN0PFhUcmVlTm9kZT4pIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRNYW51YWwoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhSXNGdW5jKCkpIHRoaXMuZ2V0RGF0YUJ5RnVuYygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhQnlGdW5jKCkge1xyXG4gICAgaWYgKCF0aGlzLm1hbnVhbCgpKSByZXR1cm47XHJcbiAgICBYU2V0RGF0YTxYVHJlZU5vZGU+KCh0aGlzLmRhdGEoKSBhcyBGdW5jdGlvbikoKSwgdGhpcy51blN1YmplY3QpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnNldERhdGFDaGFuZ2UoeCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0YUNoYW5nZShcclxuICAgIHZhbHVlOiBYVHJlZU5vZGVbXSxcclxuICAgIHJlZ2V0Q2hpbGRyZW4gPSBmYWxzZSxcclxuICAgIGluaXQgPSB0cnVlLFxyXG4gICAgcGFyZW50T3BlbiA9IHRydWUsXHJcbiAgICBsYXp5UGFyYW50PzogWFRyZWVOb2RlXHJcbiAgKSB7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy5jaGVja2VkKCkpIHx8ICF0aGlzLmhhc0NoZWNrZWQoKSkgdGhpcy5jaGVja2VkLnNldChbXSk7XHJcbiAgICBjb25zdCBnZXRDaGlsZHJlbiA9IChub2RlOiBYVHJlZU5vZGUsIGxldmVsOiBudW1iZXIpID0+IHtcclxuICAgICAgaWYgKGluaXQpIHtcclxuICAgICAgICBub2RlLmxldmVsID0gbGV2ZWw7XHJcbiAgICAgICAgbm9kZS5vcGVuID1cclxuICAgICAgICAgIHRoaXMuZXhwYW5kZWRBbGwoKSB8fCBsZXZlbCA8PSB0aGlzLmV4cGFuZGVkTGV2ZWwoKSB8fCB0aGlzLmV4cGFuZGVkKCkuaW5jbHVkZXMobm9kZS5pZCkgfHwgbm9kZS5vcGVuO1xyXG4gICAgICAgIG5vZGUuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZCgpLmluY2x1ZGVzKG5vZGUuaWQpIHx8IG5vZGUuY2hlY2tlZDtcclxuICAgICAgICBub2RlLmNoaWxkcmVuTG9hZGVkID0gbm9kZS5vcGVuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChYSXNVbmRlZmluZWQobm9kZS5jaGlsZHJlbikgfHwgcmVnZXRDaGlsZHJlbikge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4gPSB2YWx1ZS5maWx0ZXIoKHkpID0+IHkucGlkID09PSBub2RlLmlkKTtcclxuICAgICAgICBpZiAodGhpcy5sZXZlbENoZWNrKCkgJiYgbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoZWNrZWQpIHtcclxuICAgICAgICAgIGZvciAobGV0IG5kIG9mIG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgbmQuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgICAgICB4LnB1c2gobmQuaWQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoKCF0aGlzLmxhenkoKSAmJiAoWElzVW5kZWZpbmVkKG5vZGUubGVhZikgfHwgcmVnZXRDaGlsZHJlbikpIHx8IG5vZGUuaWQgPT09IGxhenlQYXJhbnQ/LmlkKSB7XHJcbiAgICAgICAgbm9kZS5sZWFmID0gKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCBhcyBudW1iZXIpID09PSAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghbm9kZS5sZWFmKSBub2RlLmNoaWxkcmVuPy5tYXAoKHkpID0+IGdldENoaWxkcmVuKHksIGxldmVsICsgMSkpO1xyXG4gICAgICByZXR1cm4gbm9kZTtcclxuICAgIH07XHJcbiAgICB0aGlzLnRyZWVEYXRhLnNldCh2YWx1ZSk7XHJcbiAgICB0aGlzLm5vZGVzLnNldCh2YWx1ZS5maWx0ZXIoKHgpID0+IFhJc0VtcHR5KHgucGlkKSkubWFwKCh4KSA9PiBnZXRDaGlsZHJlbih4LCAwKSkpO1xyXG4gICAgaWYgKHBhcmVudE9wZW4pIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xyXG4gICAgICAgIGlmICghaXRlbS5sZWFmICYmIGl0ZW0ub3Blbikge1xyXG4gICAgICAgICAgdGhpcy5zZXRQYXJlbnRPcGVuKHZhbHVlLCBpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2V0RXhwYW5kZWQoKTtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgbm9kZU1vdXNlZW50ZXIoJGV2ZW50OiB7IGV2ZW50OiBNb3VzZUV2ZW50OyBub2RlOiBYVHJlZU5vZGU7IGVsZTogRWxlbWVudFJlZiB9KSB7XHJcbiAgICBjb25zdCB7IG5vZGUsIGVsZSB9ID0gJGV2ZW50O1xyXG4gICAgaWYgKCF0aGlzLmRyYWdnaW5nKCkpIHJldHVybjtcclxuICAgIGxldCBiZWZvcmUgPSB0aGlzLmhvdmVyVHJlZU5vZGUoKTtcclxuICAgIHRoaXMuaG92ZXJUcmVlTm9kZS5zZXQobm9kZSk7XHJcbiAgICB0aGlzLmhvdmVyVHJlZUVsZSA9IGVsZTtcclxuICAgIGNvbnN0IGhvdmVyVHJlZU5vZGUgPSB0aGlzLmhvdmVyVHJlZU5vZGUoKTtcclxuICAgIGlmIChob3ZlclRyZWVOb2RlKSB7XHJcbiAgICAgIGhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIGhvdmVyVHJlZU5vZGUuY2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoYmVmb3JlKSB7XHJcbiAgICAgIGJlZm9yZS5jaGFuZ2UgJiYgYmVmb3JlLmNoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghbm9kZS5sZWFmICYmICFub2RlLm9wZW4pIHtcclxuICAgICAgbGV0IGZyb20gPSB0aGlzLm5vZGVzKCkuaW5kZXhPZih0aGlzLmRyYWdnaW5nVHJlZU5vZGUoKSEpO1xyXG4gICAgICBsZXQgdG8gPSB0aGlzLm5vZGVzKCkuaW5kZXhPZihub2RlKTtcclxuICAgICAgaWYgKHRvIC0gZnJvbSAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLm9uVG9nZ2xlKG51bGwhLCBub2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2Nyb2xsVG9wKCkge1xyXG4gICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMuc2Nyb2xsRWxlbWVudCgpO1xyXG4gICAgaWYgKCFzY3JvbGxFbGVtZW50IHx8ICF0aGlzLmFjdGl2YXRlZE5vZGUoKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgaW54ID0gdGhpcy5ub2RlcygpLmluZGV4T2YodGhpcy5hY3RpdmF0ZWROb2RlKCkhKTtcclxuICAgIGxldCBjb20gPSB0aGlzLm5vZGVDb21wb25lbnRzKCkuZmluZCgoXywgaW5kZXgpID0+IGluZGV4ID09PSBpbngpO1xyXG4gICAgaWYgKCFjb20pIHJldHVybjtcclxuICAgIGxldCBlbGUgPSBjb20uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgbGV0IHNjcm9sbEVsZSA9IHNjcm9sbEVsZW1lbnQ7XHJcbiAgICBsZXQgbWluID0gc2Nyb2xsRWxlLnNjcm9sbFRvcDtcclxuICAgIGxldCBtYXggPSBzY3JvbGxFbGUuc2Nyb2xsVG9wICsgc2Nyb2xsRWxlLmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGUub2Zmc2V0VG9wICsgZWxlLmNsaWVudEhlaWdodCA+IG1heCkge1xyXG4gICAgICBsZXQgc2Nyb2xsVG9wID0gZWxlLm9mZnNldFRvcCArIGVsZS5jbGllbnRIZWlnaHQgLSBzY3JvbGxFbGUuY2xpZW50SGVpZ2h0O1xyXG4gICAgICBzY3JvbGxFbGUuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsZS5vZmZzZXRUb3AgPCBtaW4pIHtcclxuICAgICAgc2Nyb2xsRWxlLnNjcm9sbFRvcCA9IGVsZS5vZmZzZXRUb3A7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2VkTm9kZXMoKTogWFRyZWVOb2RlW10ge1xyXG4gICAgbGV0IHJlc3VsdDogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICBpZiAoeC5jaGVja2VkICYmICFyZXN1bHQuaW5jbHVkZXMoeCkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IFsuLi5yZXN1bHQsIHhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRDaGlsZHJlbih4LmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgZ2V0Q2hpbGRyZW4odGhpcy5ub2RlcygpKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2VkS2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLmdldENoZWNrZWROb2RlcygpLm1hcCgoeCkgPT4geC5pZCk7XHJcbiAgfVxyXG5cclxuICBzZXRDaGVja2VkS2V5cyhrZXlzOiBhbnlbXSA9IFtdKSB7XHJcbiAgICBpZiAoIVhJc0VtcHR5KGtleXMpKSB0aGlzLmhhc0NoZWNrZWQuc2V0KHRydWUpO1xyXG4gICAgY29uc3Qgc2V0Q2hpbGRyZW4gPSAobm9kZXM6IFhUcmVlTm9kZVtdLCBjbGVhciA9IGZhbHNlKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShub2RlcykpIHJldHVybjtcclxuICAgICAgbm9kZXMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgIHguY2hlY2tlZCA9ICFjbGVhciAmJiBrZXlzLmluY2x1ZGVzKHguaWQpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKHRydWUpO1xyXG4gICAgICAgIHNldENoaWxkcmVuKHguY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10sIGNsZWFyKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgc2V0Q2hpbGRyZW4odGhpcy5ub2RlcygpLCBYSXNFbXB0eShrZXlzKSk7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHNldEV4cGFuZGVkQWxsKCkge1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRBbGwoKSAmJiB0aGlzLnRyZWVEYXRhKCkubGVuZ3RoID09PSB0aGlzLm5vZGVzKCkubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCBzZXRDaGlsZHJlbiA9IChub2RlczogWFRyZWVOb2RlW10pID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KG5vZGVzKSkgcmV0dXJuO1xyXG4gICAgICBub2Rlcy5mb3JFYWNoKCh4KSA9PiB7XHJcbiAgICAgICAgeC5vcGVuID0gdGhpcy5leHBhbmRlZEFsbCgpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZXMoKSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRBbGwoKSA9PT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5ub2Rlcy5zZXQodGhpcy50cmVlRGF0YSgpLmZpbHRlcigoeCkgPT4gWElzRW1wdHkoeC5waWQpKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy52aXJ0dWFsTm9kZXMoKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLnZpcnR1YWxOb2Rlcy5zZXQoWy4uLnRoaXMubm9kZXMoKV0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubm9kZXMuc2V0KHRoaXMudmlydHVhbE5vZGVzKCkpO1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMudmlydHVhbE5vZGVzKCkpIHtcclxuICAgICAgICB0aGlzLnNldFZpcnR1YWxFeHBhbmRlZEFsbChpdGVtLCB0aGlzLmV4cGFuZGVkQWxsKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnZpcnR1YWxCb2R5KCk/LmNoZWNrVmlld3BvcnRTaXplKCk7XHJcbiAgfVxyXG5cclxuICBzZXRFeHBhbmRlZCgpIHtcclxuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5ub2RlcygpKSB7XHJcbiAgICAgIGlmIChpdGVtLm9wZW4gJiYgaXRlbS5jaGlsZHJlbikge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMubm9kZXMoKS5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMubm9kZXMudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgICB4LnNwbGljZShpbmRleCArIDEsIDAsIC4uLihpdGVtLmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKSk7XHJcbiAgICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW0uY2hhbmdlICYmIGl0ZW0uY2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWaXJ0dWFsRXhwYW5kZWRBbGwoaXRlbTogWFRyZWVOb2RlLCBleHBhbmRlZEFsbDogYm9vbGVhbikge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5ub2RlcygpLmluZGV4T2YoaXRlbSk7XHJcbiAgICBpZiAoZXhwYW5kZWRBbGwpIHtcclxuICAgICAgbGV0IGFkZE5vZGVzOiBYVHJlZU5vZGVbXSA9IFtdO1xyXG4gICAgICBjb25zdCBnZXROb2RlcyA9IChuZDogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgbmQuY2hpbGRyZW4hKSB7XHJcbiAgICAgICAgICBhZGROb2Rlcy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgIGdldE5vZGVzKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIGdldE5vZGVzKGl0ZW0pO1xyXG4gICAgICB0aGlzLm5vZGVzLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIHguc3BsaWNlKGluZGV4ICsgMSwgMCwgLi4uYWRkTm9kZXMpO1xyXG4gICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmlydHVhbFRvZ2dsZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMubm9kZXMoKS5pbmRleE9mKG5vZGUpO1xyXG4gICAgaWYgKG5vZGUub3Blbikge1xyXG4gICAgICBsZXQgYWRkTm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgICAgIGNvbnN0IGdldE5vZGVzID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgICBpZiAoWElzRW1wdHkobmQuY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgbmQuY2hpbGRyZW4hKSB7XHJcbiAgICAgICAgICBhZGROb2Rlcy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgIGNoaWxkLm9wZW4gJiYgZ2V0Tm9kZXMoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgZ2V0Tm9kZXMobm9kZSk7XHJcbiAgICAgIHRoaXMubm9kZXMudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgeC5zcGxpY2UoaW5kZXggKyAxLCAwLCAuLi5hZGROb2Rlcyk7XHJcbiAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZGVsQ291bnQgPSAwO1xyXG4gICAgICBjb25zdCBnZXRDb3VudCA9IChuZDogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKFhJc0VtcHR5KG5kLmNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICAgIGRlbENvdW50ICs9IG5kLmNoaWxkcmVuIS5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgbmQuY2hpbGRyZW4hKSB7XHJcbiAgICAgICAgICBjaGlsZC5vcGVuICYmIGdldENvdW50KGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIGdldENvdW50KG5vZGUpO1xyXG4gICAgICB0aGlzLm5vZGVzLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIHguc3BsaWNlKGluZGV4ICsgMSwgZGVsQ291bnQpO1xyXG4gICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWRkT3JSZW1vdmVFeHBhbmRlZChub2RlKTtcclxuICAgIHRoaXMudmlydHVhbEJvZHkoKT8uY2hlY2tWaWV3cG9ydFNpemUoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGFkZE9yUmVtb3ZlRXhwYW5kZWQobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAobm9kZS5vcGVuKSB7XHJcbiAgICAgIGlmICghdGhpcy5leHBhbmRlZCgpLmluY2x1ZGVzKG5vZGUuaWQpKSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgIHgucHVzaChub2RlLmlkKTtcclxuICAgICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkKCkuaW5jbHVkZXMobm9kZS5pZCkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgeC5zcGxpY2UoeC5pbmRleE9mKG5vZGUuaWQpLCAxKTtcclxuICAgICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEFjdGl2YXRlZE5vZGUobm9kZXM6IFhUcmVlTm9kZVtdLCBwYXJlbnRPcGVuID0gdHJ1ZSwgZGF0YUNoYW5nZSA9IHRydWUpIHtcclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLmFjdGl2YXRlZElkKCkpICYmIHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZElkLnNldChbXSk7XHJcbiAgICB9XHJcbiAgICBsZXQgYmVmb3JlID0gdGhpcy5hY3RpdmF0ZWROb2RlKCk7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XHJcbiAgICAgIGlmICh0aGlzLmFjdGl2YXRlZElkKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCBpZHMgPSB0aGlzLm9iamVjdEFycmF5KCkgPyB0aGlzLmFjdGl2YXRlZElkKCkubWFwKCh4OiBYVHJlZU5vZGUpID0+IHguaWQpIDogdGhpcy5hY3RpdmF0ZWRJZCgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgbm9kZSA9IG5vZGVzLmZpbmQoKHgpID0+IHguaWQgPT09IGlkc1tpXSkgYXMgWFRyZWVOb2RlO1xyXG4gICAgICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICAgICAgcGFyZW50T3BlbiAmJiB0aGlzLnNldFBhcmVudE9wZW4obm9kZXMsIG5vZGUpO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gaWRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlZE5vZGUuc2V0KG5vZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmF0ZWROb2RlKCkhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGFjdGl2YXRlZElkID0gdGhpcy5hY3RpdmF0ZWRJZCgpO1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZE5vZGUuc2V0KG5vZGVzLmZpbmQoKHgpID0+IHguaWQgPT09IGFjdGl2YXRlZElkKSBhcyBYVHJlZU5vZGUpO1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmF0ZWROb2RlKCkpIHtcclxuICAgICAgICBwYXJlbnRPcGVuICYmIHRoaXMuc2V0UGFyZW50T3Blbihub2RlcywgdGhpcy5hY3RpdmF0ZWROb2RlKCkhKTtcclxuICAgICAgICB0aGlzLmFjdGl2YXRlZENoYW5nZS5lbWl0KHRoaXMuYWN0aXZhdGVkTm9kZSgpISk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChiZWZvcmUpIHtcclxuICAgICAgYmVmb3JlLmNoYW5nZSAmJiBiZWZvcmUuY2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIVhJc0VtcHR5KG5vZGVzKSAmJiBkYXRhQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YUNoYW5nZShub2RlcywgZmFsc2UsIHRydWUsIHBhcmVudE9wZW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UGFyZW50T3Blbihub2RlczogWFRyZWVOb2RlW10sIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgY29uc3QgZ2V0UGFyZW50ID0gKGNoaWxkOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkLnBpZCkpIHJldHVybjtcclxuICAgICAgY29uc3QgcGFyZW50ID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PT0gY2hpbGQucGlkKSBhcyBYVHJlZU5vZGU7XHJcbiAgICAgIGlmICghWElzRW1wdHkocGFyZW50KSkge1xyXG4gICAgICAgIGlmICghdGhpcy5leHBhbmRlZCgpLmluY2x1ZGVzKHBhcmVudC5pZCkpIHtcclxuICAgICAgICAgIHRoaXMuZXhwYW5kZWQudXBkYXRlKCh4KSA9PiBbLi4ueCwgcGFyZW50LmlkXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmVudC5vcGVuID0gdHJ1ZTtcclxuICAgICAgICBwYXJlbnQuY2hhbmdlICYmIHBhcmVudC5jaGFuZ2UoKTtcclxuICAgICAgICBnZXRQYXJlbnQocGFyZW50KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGdldFBhcmVudChub2RlKTtcclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlKGV2ZW50OiBFdmVudCB8IG51bGwsIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgbm9kZS5vcGVuID0gIW5vZGUub3BlbjtcclxuICAgIGlmICh0aGlzLmxhenkoKSAmJiAhbm9kZS5jaGlsZHJlbkxvYWRlZCkge1xyXG4gICAgICB0aGlzLmdldExhenlEYXRhKG5vZGUsICgpID0+IHRoaXMudmlydHVhbFRvZ2dsZShub2RlKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZpcnR1YWxUb2dnbGUobm9kZSk7XHJcbiAgICB9XHJcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIGdldExhenlEYXRhKG5vZGU6IFhUcmVlTm9kZSwgY2FsbEJhY2s/OiAoKSA9PiB2b2lkKSB7XHJcbiAgICBub2RlLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICAgICh0aGlzLmRhdGEoKSBhcyAocGlkPzogYW55KSA9PiBPYnNlcnZhYmxlPFhUcmVlTm9kZVtdPikobm9kZS5pZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh4KSA9PlxyXG4gICAgICAgICAgeC5tYXAoKHkpID0+IHtcclxuICAgICAgICAgICAgeS5sZXZlbCA9IChub2RlLmxldmVsIGFzIG51bWJlcikgKyAxO1xyXG4gICAgICAgICAgICB5LmNoZWNrZWQgPSBub2RlLmNoZWNrZWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB5O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4gPSB4O1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW5Mb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIG5vZGUubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudHJlZURhdGEuc2V0KFsuLi50aGlzLnRyZWVEYXRhKCksIC4uLnhdKTtcclxuICAgICAgICBpZiAoY2FsbEJhY2spIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGROb2RlKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudHJlZURhdGEoKS5maW5kKCh4KSA9PiB4LmlkID09PSBub2RlLnBpZCkhO1xyXG4gICAgY29uc3QgX2FkZE5vZGUgPSAoKSA9PiB7XHJcbiAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICBub2RlLmxldmVsID0gcGFyZW50LmxldmVsISArIDE7XHJcbiAgICAgICAgbm9kZS5waWQgPSBwYXJlbnQuaWQ7XHJcbiAgICAgICAgbm9kZS5sZWFmID0gdHJ1ZTtcclxuICAgICAgICBwYXJlbnQubGVhZiA9IGZhbHNlO1xyXG4gICAgICAgIHBhcmVudC5vcGVuID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRyZWVEYXRhLnNldChbLi4udGhpcy50cmVlRGF0YSgpLCBub2RlXSk7XHJcbiAgICAgICAgdGhpcy5zZXRQYXJlbnRPcGVuKHRoaXMudHJlZURhdGEoKSwgbm9kZSk7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhQ2hhbmdlKHRoaXMudHJlZURhdGEoKSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZElkKG5vZGUpO1xyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh0aGlzLm5vZGVzKCksIHRydWUsIGZhbHNlKTtcclxuICAgICAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKFhJc0VtcHR5KG5vZGUucGlkKSkge1xyXG4gICAgICAgIG5vZGUubGV2ZWwgPSAwO1xyXG4gICAgICAgIG5vZGUubGVhZiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50cmVlRGF0YS5zZXQoWy4uLnRoaXMudHJlZURhdGEoKSwgbm9kZV0pO1xyXG4gICAgICAgIHRoaXMubm9kZXMuc2V0KFsuLi50aGlzLm5vZGVzKCksIG5vZGVdKTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZElkKG5vZGUpO1xyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh0aGlzLm5vZGVzKCksIHRydWUsIGZhbHNlKTtcclxuICAgICAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMubGF6eSgpICYmIHBhcmVudCAmJiAhcGFyZW50LmNoaWxkcmVuTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuZ2V0TGF6eURhdGEocGFyZW50LCAoKSA9PiB7XHJcbiAgICAgICAgX2FkZE5vZGUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfYWRkTm9kZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZhdGVkSWQobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XHJcbiAgICAgIGlmICh0aGlzLm9iamVjdEFycmF5KCkpIHtcclxuICAgICAgICB0aGlzLmFjdGl2YXRlZElkLnNldChbbm9kZV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkSWQuc2V0KFtub2RlLmlkXSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVkSWQuc2V0KG5vZGUuaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTm9kZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWVEYXRhKCkuZmluZCgoeCkgPT4geC5pZCA9PT0gbm9kZS5waWQpITtcclxuICAgIGNvbnN0IHJlbW92ZUNoaWxkcmVuID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgWFJlbW92ZSh0aGlzLnRyZWVEYXRhKCksICh4KSA9PiB4LmlkID09PSBuZC5pZCk7XHJcbiAgICAgIGlmIChuZC5jaGlsZHJlbikge1xyXG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbmQuY2hpbGRyZW4pIHtcclxuICAgICAgICAgIHJlbW92ZUNoaWxkcmVuKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJlbW92ZUNoaWxkcmVuKG5vZGUpO1xyXG5cclxuICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgaWYgKCFwYXJlbnQuY2hpbGRyZW4pIHBhcmVudC5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICBjb25zdCBjaGlsZEluZGV4ID0gcGFyZW50LmNoaWxkcmVuLmZpbmRJbmRleCgoeCkgPT4geC5pZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgIGlmIChjaGlsZEluZGV4ID4gLTEpIHtcclxuICAgICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGNoaWxkSW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmVudC5sZWFmID0gcGFyZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMDtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0RGF0YUNoYW5nZSh0aGlzLnRyZWVEYXRhKCksIHRydWUsIGZhbHNlLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVOb2RlKG5vZGU6IFhUcmVlTm9kZSwgbm93Tm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBPYmplY3QuYXNzaWduKG5vZGUsIG5vd05vZGUpO1xyXG4gICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJdGVtKF9pbmRleDogbnVtYmVyLCBpdGVtOiBYVHJlZU5vZGUpIHtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICN0cmVlIGNsYXNzPVwieC10cmVlXCIgW2NsYXNzLngtdHJlZS1vbmx5LWxlYWZdPVwib25seUxlYWYoKVwiPlxyXG4gIEBpZiAodmlydHVhbFNjcm9sbCgpKSB7XHJcbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICN2aXJ0dWFsQm9keVxyXG4gICAgICBbaXRlbVNpemVdPVwiaXRlbVNpemUoKVwiXHJcbiAgICAgIFttaW5CdWZmZXJQeF09XCJtaW5CdWZmZXJQeFNpZ25hbCgpXCJcclxuICAgICAgW21heEJ1ZmZlclB4XT1cIm1heEJ1ZmZlclB4U2lnbmFsKClcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInZpcnR1YWxTY3JvbGxIZWlnaHRTaWduYWwoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIngtdHJlZS1jb250ZW50XCJcclxuICAgICAgICAjZHJvcExpc3RcclxuICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFkcmFnKClcIlxyXG4gICAgICAgIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbaGlkZGVuXT1cImlzRW1wdHkoKVwiXHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJub2RlcygpXCJcclxuICAgICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJwcmVkaWNhdGVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHgtdHJlZS1ub2RlXHJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBub2RlIG9mIG5vZGVzKCk7IHRlbXBsYXRlQ2FjaGVTaXplOiAwOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cImNka0RyYWdTdGFydGVkKCRldmVudClcIlxyXG4gICAgICAgICAgKGNka0RyYWdFbmRlZCk9XCJjZGtEcmFnRW5kZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2RrRHJhZ01vdmVkKT1cImNka0RyYWdNb3ZlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJub2RlXCJcclxuICAgICAgICAgIChub2RlTW91c2VlbnRlcik9XCJub2RlTW91c2VlbnRlcigkZXZlbnQpXCJcclxuICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICAgICAgW25vZGVIZWlnaHRdPVwibm9kZUhlaWdodCgpXCJcclxuICAgICAgICAgIFtub2RlTm93cmFwXT1cIm5vZGVOb3dyYXAoKVwiXHJcbiAgICAgICAgICBbbm9kZUFsaWduSXRlbXNdPVwibm9kZUFsaWduSXRlbXMoKVwiXHJcbiAgICAgICAgICBbKGRpc2FibGVkKV09XCJub2RlLmRpc2FibGVkIVwiXHJcbiAgICAgICAgICBbKGlkKV09XCJub2RlLmlkXCJcclxuICAgICAgICAgIFsocGlkKV09XCJub2RlLnBpZFwiXHJcbiAgICAgICAgICBbKGxlYWYpXT1cIm5vZGUubGVhZiFcIlxyXG4gICAgICAgICAgWyhoZWlnaHQpXT1cIm5vZGUuaGVpZ2h0IVwiXHJcbiAgICAgICAgICBbKGFsaWduSXRlbXMpXT1cIm5vZGUuYWxpZ25JdGVtcyFcIlxyXG4gICAgICAgICAgWyhsb2FkaW5nKV09XCJub2RlLmxvYWRpbmchXCJcclxuICAgICAgICAgIFsobGV2ZWwpXT1cIm5vZGUubGV2ZWwhXCJcclxuICAgICAgICAgIFsob3BlbildPVwibm9kZS5vcGVuXCJcclxuICAgICAgICAgIFsoY2hlY2tlZCldPVwibm9kZS5jaGVja2VkIVwiXHJcbiAgICAgICAgICBbKGluZGV0ZXJtaW5hdGUpXT1cIm5vZGUuaW5kZXRlcm1pbmF0ZSFcIlxyXG4gICAgICAgICAgWyhsYWJlbCldPVwibm9kZS5sYWJlbCFcIlxyXG4gICAgICAgICAgWyhub3dyYXApXT1cIm5vZGUubm93cmFwIVwiXHJcbiAgICAgICAgICAodG9nZ2xlKT1cIm9uVG9nZ2xlKG51bGwsICRldmVudClcIlxyXG4gICAgICAgID48L3gtdHJlZS1ub2RlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gIH0gQGVsc2Uge1xyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIngtdHJlZS1jb250ZW50XCJcclxuICAgICAgI2Ryb3BMaXN0XHJcbiAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFkcmFnKClcIlxyXG4gICAgICBbY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgIFtoaWRkZW5dPVwiaXNFbXB0eSgpXCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJub2RlcygpXCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwicHJlZGljYXRlXCJcclxuICAgID5cclxuICAgICAgQGZvciAobm9kZSBvZiBub2RlcygpOyB0cmFjayBub2RlLmlkICsgJycgKyAkaW5kZXgpIHtcclxuICAgICAgICA8eC10cmVlLW5vZGVcclxuICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiY2RrRHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2RrRHJhZ0VuZGVkKT1cImNka0RyYWdFbmRlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIChjZGtEcmFnTW92ZWQpPVwiY2RrRHJhZ01vdmVkKCRldmVudClcIlxyXG4gICAgICAgICAgW2Nka0RyYWdEYXRhXT1cIm5vZGVcIlxyXG4gICAgICAgICAgKG5vZGVNb3VzZWVudGVyKT1cIm5vZGVNb3VzZWVudGVyKCRldmVudClcIlxyXG4gICAgICAgICAgW25vZGVdPVwibm9kZVwiXHJcbiAgICAgICAgICBbbm9kZUhlaWdodF09XCJub2RlSGVpZ2h0KClcIlxyXG4gICAgICAgICAgW25vZGVOb3dyYXBdPVwibm9kZU5vd3JhcCgpXCJcclxuICAgICAgICAgIFtub2RlQWxpZ25JdGVtc109XCJub2RlQWxpZ25JdGVtcygpXCJcclxuICAgICAgICAgIFsoZGlzYWJsZWQpXT1cIm5vZGUuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgWyhpZCldPVwibm9kZS5pZFwiXHJcbiAgICAgICAgICBbKHBpZCldPVwibm9kZS5waWRcIlxyXG4gICAgICAgICAgWyhsZWFmKV09XCJub2RlLmxlYWZcIlxyXG4gICAgICAgICAgWyhoZWlnaHQpXT1cIm5vZGUuaGVpZ2h0IVwiXHJcbiAgICAgICAgICBbKGFsaWduSXRlbXMpXT1cIm5vZGUuYWxpZ25JdGVtc1wiXHJcbiAgICAgICAgICBbKGxvYWRpbmcpXT1cIm5vZGUubG9hZGluZ1wiXHJcbiAgICAgICAgICBbKGxldmVsKV09XCJub2RlLmxldmVsXCJcclxuICAgICAgICAgIFsob3BlbildPVwibm9kZS5vcGVuXCJcclxuICAgICAgICAgIFsoY2hlY2tlZCldPVwibm9kZS5jaGVja2VkXCJcclxuICAgICAgICAgIFsoaW5kZXRlcm1pbmF0ZSldPVwibm9kZS5pbmRldGVybWluYXRlXCJcclxuICAgICAgICAgIFsobGFiZWwpXT1cIm5vZGUubGFiZWxcIlxyXG4gICAgICAgICAgWyhub3dyYXApXT1cIm5vZGUubm93cmFwXCJcclxuICAgICAgICAgICh0b2dnbGUpPVwib25Ub2dnbGUobnVsbCwgJGV2ZW50KVwiXHJcbiAgICAgICAgPjwveC10cmVlLW5vZGU+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcblxyXG48IS0tIOaPkOWJjeWKoOi9vWxvYWRpbmfnmoTlm77moIctLT5cclxuQGlmIChsYXp5KCkpIHtcclxuICA8eC1pY29uIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiIHR5cGU9XCJmdG8tbG9hZGVyXCI+PC94LWljb24+XHJcbn1cclxuIl19
@@ -3,11 +3,11 @@ import { XTreeComponent } from './tree.component';
3
3
  import { XTreeNodeComponent } from './tree-node.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export class XTreeModule {
6
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: XTreeModule, imports: [XTreeComponent, XTreeNodeComponent], exports: [XTreeComponent, XTreeNodeComponent] }); }
8
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeModule, imports: [XTreeComponent, XTreeNodeComponent] }); }
6
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: XTreeModule, imports: [XTreeComponent, XTreeNodeComponent], exports: [XTreeComponent, XTreeNodeComponent] }); }
8
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeModule, imports: [XTreeComponent, XTreeNodeComponent] }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeModule, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  exports: [XTreeComponent, XTreeNodeComponent],
@@ -212,10 +212,10 @@ export class XTreeProperty extends XPropertyFunction(X_TREE_CONFIG_NAME) {
212
212
  */
213
213
  this.nodeDragMoved = output();
214
214
  }
215
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
216
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", type: XTreeProperty, selector: "x-tree-property", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, checkbox: { classPropertyName: "checkbox", publicName: "checkbox", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, activatedId: { classPropertyName: "activatedId", publicName: "activatedId", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, expandedAll: { classPropertyName: "expandedAll", publicName: "expandedAll", isSignal: true, isRequired: false, transformFunction: null }, expandedLevel: { classPropertyName: "expandedLevel", publicName: "expandedLevel", isSignal: true, isRequired: false, transformFunction: null }, nodeOpen: { classPropertyName: "nodeOpen", publicName: "nodeOpen", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, labelTpl: { classPropertyName: "labelTpl", publicName: "labelTpl", isSignal: true, isRequired: false, transformFunction: null }, nodeHeight: { classPropertyName: "nodeHeight", publicName: "nodeHeight", isSignal: true, isRequired: false, transformFunction: null }, allowManyActivated: { classPropertyName: "allowManyActivated", publicName: "allowManyActivated", isSignal: true, isRequired: false, transformFunction: null }, drag: { classPropertyName: "drag", publicName: "drag", isSignal: true, isRequired: false, transformFunction: null }, manual: { classPropertyName: "manual", publicName: "manual", isSignal: true, isRequired: false, transformFunction: null }, levelCheck: { classPropertyName: "levelCheck", publicName: "levelCheck", isSignal: true, isRequired: false, transformFunction: null }, nodeNowrap: { classPropertyName: "nodeNowrap", publicName: "nodeNowrap", isSignal: true, isRequired: false, transformFunction: null }, nodeAlignItems: { classPropertyName: "nodeAlignItems", publicName: "nodeAlignItems", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, scrollElement: { classPropertyName: "scrollElement", publicName: "scrollElement", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollHeight: { classPropertyName: "virtualScrollHeight", publicName: "virtualScrollHeight", isSignal: true, isRequired: false, transformFunction: null }, heightAdaption: { classPropertyName: "heightAdaption", publicName: "heightAdaption", isSignal: true, isRequired: false, transformFunction: null }, itemSize: { classPropertyName: "itemSize", publicName: "itemSize", isSignal: true, isRequired: false, transformFunction: null }, minBufferPx: { classPropertyName: "minBufferPx", publicName: "minBufferPx", isSignal: true, isRequired: false, transformFunction: null }, maxBufferPx: { classPropertyName: "maxBufferPx", publicName: "maxBufferPx", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, objectArray: { classPropertyName: "objectArray", publicName: "objectArray", isSignal: true, isRequired: false, transformFunction: null }, keywordText: { classPropertyName: "keywordText", publicName: "keywordText", isSignal: true, isRequired: false, transformFunction: null }, caseSensitive: { classPropertyName: "caseSensitive", publicName: "caseSensitive", isSignal: true, isRequired: false, transformFunction: null }, onlyLeaf: { classPropertyName: "onlyLeaf", publicName: "onlyLeaf", isSignal: true, isRequired: false, transformFunction: null }, expandedIcon: { classPropertyName: "expandedIcon", publicName: "expandedIcon", isSignal: true, isRequired: false, transformFunction: null }, showLine: { classPropertyName: "showLine", publicName: "showLine", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activatedId: "activatedIdChange", expanded: "expandedChange", checked: "checkedChange", activatedChange: "activatedChange", checkboxChange: "checkboxChange", manual: "manualChange", nodeClick: "nodeClick", nodeDragStarted: "nodeDragStarted", nodeDragEnded: "nodeDragEnded", nodeDragMoved: "nodeDragMoved" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
215
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
216
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.2", type: XTreeProperty, selector: "x-tree-property", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, checkbox: { classPropertyName: "checkbox", publicName: "checkbox", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, activatedId: { classPropertyName: "activatedId", publicName: "activatedId", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, expandedAll: { classPropertyName: "expandedAll", publicName: "expandedAll", isSignal: true, isRequired: false, transformFunction: null }, expandedLevel: { classPropertyName: "expandedLevel", publicName: "expandedLevel", isSignal: true, isRequired: false, transformFunction: null }, nodeOpen: { classPropertyName: "nodeOpen", publicName: "nodeOpen", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, labelTpl: { classPropertyName: "labelTpl", publicName: "labelTpl", isSignal: true, isRequired: false, transformFunction: null }, nodeHeight: { classPropertyName: "nodeHeight", publicName: "nodeHeight", isSignal: true, isRequired: false, transformFunction: null }, allowManyActivated: { classPropertyName: "allowManyActivated", publicName: "allowManyActivated", isSignal: true, isRequired: false, transformFunction: null }, drag: { classPropertyName: "drag", publicName: "drag", isSignal: true, isRequired: false, transformFunction: null }, manual: { classPropertyName: "manual", publicName: "manual", isSignal: true, isRequired: false, transformFunction: null }, levelCheck: { classPropertyName: "levelCheck", publicName: "levelCheck", isSignal: true, isRequired: false, transformFunction: null }, nodeNowrap: { classPropertyName: "nodeNowrap", publicName: "nodeNowrap", isSignal: true, isRequired: false, transformFunction: null }, nodeAlignItems: { classPropertyName: "nodeAlignItems", publicName: "nodeAlignItems", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, scrollElement: { classPropertyName: "scrollElement", publicName: "scrollElement", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollHeight: { classPropertyName: "virtualScrollHeight", publicName: "virtualScrollHeight", isSignal: true, isRequired: false, transformFunction: null }, heightAdaption: { classPropertyName: "heightAdaption", publicName: "heightAdaption", isSignal: true, isRequired: false, transformFunction: null }, itemSize: { classPropertyName: "itemSize", publicName: "itemSize", isSignal: true, isRequired: false, transformFunction: null }, minBufferPx: { classPropertyName: "minBufferPx", publicName: "minBufferPx", isSignal: true, isRequired: false, transformFunction: null }, maxBufferPx: { classPropertyName: "maxBufferPx", publicName: "maxBufferPx", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, objectArray: { classPropertyName: "objectArray", publicName: "objectArray", isSignal: true, isRequired: false, transformFunction: null }, keywordText: { classPropertyName: "keywordText", publicName: "keywordText", isSignal: true, isRequired: false, transformFunction: null }, caseSensitive: { classPropertyName: "caseSensitive", publicName: "caseSensitive", isSignal: true, isRequired: false, transformFunction: null }, onlyLeaf: { classPropertyName: "onlyLeaf", publicName: "onlyLeaf", isSignal: true, isRequired: false, transformFunction: null }, expandedIcon: { classPropertyName: "expandedIcon", publicName: "expandedIcon", isSignal: true, isRequired: false, transformFunction: null }, showLine: { classPropertyName: "showLine", publicName: "showLine", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activatedId: "activatedIdChange", expanded: "expandedChange", checked: "checkedChange", activatedChange: "activatedChange", checkboxChange: "checkboxChange", manual: "manualChange", nodeClick: "nodeClick", nodeDragStarted: "nodeDragStarted", nodeDragEnded: "nodeDragEnded", nodeDragMoved: "nodeDragMoved" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
217
217
  }
218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeProperty, decorators: [{
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeProperty, decorators: [{
219
219
  type: Component,
220
220
  args: [{ selector: `${XTreePrefix}-property`, template: '' }]
221
221
  }] });
@@ -327,10 +327,10 @@ export class XTreeNodeProperty extends XProperty {
327
327
  */
328
328
  this.toggle = output();
329
329
  }
330
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeNodeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
331
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", type: XTreeNodeProperty, selector: "x-tree-node-property", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, nodeHeight: { classPropertyName: "nodeHeight", publicName: "nodeHeight", isSignal: true, isRequired: false, transformFunction: null }, nodeNowrap: { classPropertyName: "nodeNowrap", publicName: "nodeNowrap", isSignal: true, isRequired: false, transformFunction: null }, nodeAlignItems: { classPropertyName: "nodeAlignItems", publicName: "nodeAlignItems", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, pid: { classPropertyName: "pid", publicName: "pid", isSignal: true, isRequired: false, transformFunction: null }, leaf: { classPropertyName: "leaf", publicName: "leaf", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, alignItems: { classPropertyName: "alignItems", publicName: "alignItems", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, nowrap: { classPropertyName: "nowrap", publicName: "nowrap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { level: "levelChange", nodeHeight: "nodeHeightChange", nodeNowrap: "nodeNowrapChange", nodeAlignItems: "nodeAlignItemsChange", virtualScroll: "virtualScrollChange", disabled: "disabledChange", id: "idChange", pid: "pidChange", leaf: "leafChange", height: "heightChange", alignItems: "alignItemsChange", loading: "loadingChange", open: "openChange", checked: "checkedChange", indeterminate: "indeterminateChange", label: "labelChange", nowrap: "nowrapChange", toggle: "toggle" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
330
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeNodeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
331
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.2", type: XTreeNodeProperty, selector: "x-tree-node-property", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, nodeHeight: { classPropertyName: "nodeHeight", publicName: "nodeHeight", isSignal: true, isRequired: false, transformFunction: null }, nodeNowrap: { classPropertyName: "nodeNowrap", publicName: "nodeNowrap", isSignal: true, isRequired: false, transformFunction: null }, nodeAlignItems: { classPropertyName: "nodeAlignItems", publicName: "nodeAlignItems", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, pid: { classPropertyName: "pid", publicName: "pid", isSignal: true, isRequired: false, transformFunction: null }, leaf: { classPropertyName: "leaf", publicName: "leaf", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, alignItems: { classPropertyName: "alignItems", publicName: "alignItems", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, nowrap: { classPropertyName: "nowrap", publicName: "nowrap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { level: "levelChange", nodeHeight: "nodeHeightChange", nodeNowrap: "nodeNowrapChange", nodeAlignItems: "nodeAlignItemsChange", virtualScroll: "virtualScrollChange", disabled: "disabledChange", id: "idChange", pid: "pidChange", leaf: "leafChange", height: "heightChange", alignItems: "alignItemsChange", loading: "loadingChange", open: "openChange", checked: "checkedChange", indeterminate: "indeterminateChange", label: "labelChange", nowrap: "nowrapChange", toggle: "toggle" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
332
332
  }
333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeNodeProperty, decorators: [{
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeNodeProperty, decorators: [{
334
334
  type: Component,
335
335
  args: [{ selector: `${XTreeNodePrefix}-property`, template: '' }]
336
336
  }] });
@@ -68,10 +68,10 @@ export class XTreeService {
68
68
  data.splice(pos === -1 ? index : index + 1, 0, from);
69
69
  }
70
70
  }
71
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
72
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeService, providedIn: 'root' }); }
71
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
72
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeService, providedIn: 'root' }); }
73
73
  }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeService, decorators: [{
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeService, decorators: [{
75
75
  type: Injectable,
76
76
  args: [{ providedIn: 'root' }]
77
77
  }] });