@qius.solutions/parallel-ui-angular 1.0.0

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 (1830) hide show
  1. package/LICENSE +88 -0
  2. package/README.md +254 -0
  3. package/accordion/accordion.d.ts +77 -0
  4. package/accordion/index.d.ts +5 -0
  5. package/accordion/public_api.d.ts +1 -0
  6. package/animate/animate.d.ts +27 -0
  7. package/animate/index.d.ts +5 -0
  8. package/animate/public_api.d.ts +1 -0
  9. package/api/blockableui.d.ts +3 -0
  10. package/api/confirmaeventtype.d.ts +5 -0
  11. package/api/confirmation.d.ts +24 -0
  12. package/api/confirmationservice.d.ts +13 -0
  13. package/api/contextmenuservice.d.ts +10 -0
  14. package/api/filtermatchmode.d.ts +22 -0
  15. package/api/filtermetadata.d.ts +5 -0
  16. package/api/filteroperator.d.ts +4 -0
  17. package/api/filterservice.d.ts +29 -0
  18. package/api/index.d.ts +5 -0
  19. package/api/lazyloadevent.d.ts +15 -0
  20. package/api/megamenuitem.d.ts +36 -0
  21. package/api/menuitem.d.ts +55 -0
  22. package/api/message.d.ts +15 -0
  23. package/api/messageservice.d.ts +13 -0
  24. package/api/overlayoptions.d.ts +50 -0
  25. package/api/overlayservice.d.ts +9 -0
  26. package/api/parallel-ui-angular-config.d.ts +20 -0
  27. package/api/parallel-ui-icons.d.ts +260 -0
  28. package/api/public_api.d.ts +29 -0
  29. package/api/selectitem.d.ts +8 -0
  30. package/api/selectitemgroup.d.ts +6 -0
  31. package/api/shared.d.ts +25 -0
  32. package/api/sortevent.d.ts +8 -0
  33. package/api/sortmeta.d.ts +4 -0
  34. package/api/tablestate.d.ts +20 -0
  35. package/api/translation.d.ts +47 -0
  36. package/api/translationkeys.d.ts +42 -0
  37. package/api/treedragdropservice.d.ts +12 -0
  38. package/api/treenode.d.ts +19 -0
  39. package/api/treenodedragevent.d.ts +8 -0
  40. package/autocomplete/autocomplete.d.ts +183 -0
  41. package/autocomplete/index.d.ts +5 -0
  42. package/autocomplete/public_api.d.ts +1 -0
  43. package/autofocus/autofocus.d.ts +17 -0
  44. package/autofocus/index.d.ts +5 -0
  45. package/autofocus/public_api.d.ts +1 -0
  46. package/avatar/avatar.d.ts +28 -0
  47. package/avatar/index.d.ts +5 -0
  48. package/avatar/public_api.d.ts +1 -0
  49. package/avatargroup/avatargroup.d.ts +13 -0
  50. package/avatargroup/index.d.ts +5 -0
  51. package/avatargroup/public_api.d.ts +1 -0
  52. package/badge/badge.d.ts +56 -0
  53. package/badge/index.d.ts +5 -0
  54. package/badge/public_api.d.ts +1 -0
  55. package/baseicon/baseicon.d.ts +14 -0
  56. package/baseicon/index.d.ts +5 -0
  57. package/baseicon/public_api.d.ts +1 -0
  58. package/blockui/blockui.d.ts +37 -0
  59. package/blockui/index.d.ts +5 -0
  60. package/blockui/public_api.d.ts +1 -0
  61. package/breadcrumb/breadcrumb.d.ts +29 -0
  62. package/breadcrumb/index.d.ts +5 -0
  63. package/breadcrumb/public_api.d.ts +1 -0
  64. package/button/button.d.ts +87 -0
  65. package/button/index.d.ts +5 -0
  66. package/button/public_api.d.ts +1 -0
  67. package/calendar/calendar.d.ts +353 -0
  68. package/calendar/index.d.ts +5 -0
  69. package/calendar/public_api.d.ts +1 -0
  70. package/card/card.d.ts +30 -0
  71. package/card/index.d.ts +5 -0
  72. package/card/public_api.d.ts +1 -0
  73. package/carousel/carousel.d.ts +112 -0
  74. package/carousel/index.d.ts +5 -0
  75. package/carousel/public_api.d.ts +1 -0
  76. package/cascadeselect/cascadeselect.d.ts +156 -0
  77. package/cascadeselect/index.d.ts +5 -0
  78. package/cascadeselect/public_api.d.ts +1 -0
  79. package/chart/chart.d.ts +39 -0
  80. package/chart/index.d.ts +5 -0
  81. package/chart/public_api.d.ts +1 -0
  82. package/checkbox/checkbox.d.ts +56 -0
  83. package/checkbox/index.d.ts +5 -0
  84. package/checkbox/public_api.d.ts +1 -0
  85. package/chip/chip.d.ts +33 -0
  86. package/chip/index.d.ts +5 -0
  87. package/chip/public_api.d.ts +1 -0
  88. package/chips/chips.d.ts +73 -0
  89. package/chips/index.d.ts +5 -0
  90. package/chips/public_api.d.ts +1 -0
  91. package/colorpicker/colorpicker.d.ts +141 -0
  92. package/colorpicker/index.d.ts +5 -0
  93. package/colorpicker/public_api.d.ts +1 -0
  94. package/confirmdialog/confirmdialog.d.ts +116 -0
  95. package/confirmdialog/index.d.ts +5 -0
  96. package/confirmdialog/public_api.d.ts +1 -0
  97. package/confirmpopup/confirmpopup.d.ts +71 -0
  98. package/confirmpopup/index.d.ts +5 -0
  99. package/confirmpopup/public_api.d.ts +1 -0
  100. package/contextmenu/contextmenu.d.ts +92 -0
  101. package/contextmenu/index.d.ts +5 -0
  102. package/contextmenu/public_api.d.ts +1 -0
  103. package/dataview/dataview.d.ts +104 -0
  104. package/dataview/index.d.ts +5 -0
  105. package/dataview/public_api.d.ts +1 -0
  106. package/defer/defer.d.ts +29 -0
  107. package/defer/index.d.ts +5 -0
  108. package/defer/public_api.d.ts +1 -0
  109. package/dialog/dialog.d.ts +155 -0
  110. package/dialog/index.d.ts +5 -0
  111. package/dialog/public_api.d.ts +1 -0
  112. package/divider/divider.d.ts +29 -0
  113. package/divider/index.d.ts +5 -0
  114. package/divider/public_api.d.ts +1 -0
  115. package/dock/dock.d.ts +43 -0
  116. package/dock/index.d.ts +5 -0
  117. package/dock/public_api.d.ts +1 -0
  118. package/dom/connectedoverlayscrollhandler.d.ts +9 -0
  119. package/dom/domhandler.d.ts +82 -0
  120. package/dom/index.d.ts +5 -0
  121. package/dom/public_api.d.ts +2 -0
  122. package/dragdrop/dragdrop.d.ts +65 -0
  123. package/dragdrop/index.d.ts +5 -0
  124. package/dragdrop/public_api.d.ts +1 -0
  125. package/dropdown/dropdown.d.ts +225 -0
  126. package/dropdown/index.d.ts +5 -0
  127. package/dropdown/public_api.d.ts +1 -0
  128. package/dynamicdialog/dialogservice.d.ts +18 -0
  129. package/dynamicdialog/dynamicdialog-config.d.ts +29 -0
  130. package/dynamicdialog/dynamicdialog-injector.d.ts +8 -0
  131. package/dynamicdialog/dynamicdialog-ref.d.ts +25 -0
  132. package/dynamicdialog/dynamicdialog.d.ts +101 -0
  133. package/dynamicdialog/dynamicdialogcontent.d.ts +8 -0
  134. package/dynamicdialog/index.d.ts +5 -0
  135. package/dynamicdialog/public_api.d.ts +6 -0
  136. package/editor/editor.d.ts +50 -0
  137. package/editor/index.d.ts +5 -0
  138. package/editor/public_api.d.ts +1 -0
  139. package/esm2020/accordion/accordion.mjs +396 -0
  140. package/esm2020/accordion/public_api.mjs +2 -0
  141. package/esm2020/accordion/qius.solutions-parallel-ui-angular-accordion.mjs +5 -0
  142. package/esm2020/animate/animate.mjs +79 -0
  143. package/esm2020/animate/public_api.mjs +2 -0
  144. package/esm2020/animate/qius.solutions-parallel-ui-angular-animate.mjs +5 -0
  145. package/esm2020/api/blockableui.mjs +2 -0
  146. package/esm2020/api/confirmaeventtype.mjs +7 -0
  147. package/esm2020/api/confirmation.mjs +2 -0
  148. package/esm2020/api/confirmationservice.mjs +28 -0
  149. package/esm2020/api/contextmenuservice.mjs +23 -0
  150. package/esm2020/api/filtermatchmode.mjs +23 -0
  151. package/esm2020/api/filtermetadata.mjs +2 -0
  152. package/esm2020/api/filteroperator.mjs +5 -0
  153. package/esm2020/api/filterservice.mjs +221 -0
  154. package/esm2020/api/lazyloadevent.mjs +2 -0
  155. package/esm2020/api/megamenuitem.mjs +2 -0
  156. package/esm2020/api/menuitem.mjs +2 -0
  157. package/esm2020/api/message.mjs +2 -0
  158. package/esm2020/api/messageservice.mjs +30 -0
  159. package/esm2020/api/overlayoptions.mjs +2 -0
  160. package/esm2020/api/overlayservice.mjs +21 -0
  161. package/esm2020/api/parallel-ui-angular-config.mjs +84 -0
  162. package/esm2020/api/parallel-ui-icons.mjs +261 -0
  163. package/esm2020/api/public_api.mjs +30 -0
  164. package/esm2020/api/qius.solutions-parallel-ui-angular-api.mjs +5 -0
  165. package/esm2020/api/selectitem.mjs +2 -0
  166. package/esm2020/api/selectitemgroup.mjs +2 -0
  167. package/esm2020/api/shared.mjs +62 -0
  168. package/esm2020/api/sortevent.mjs +2 -0
  169. package/esm2020/api/sortmeta.mjs +2 -0
  170. package/esm2020/api/tablestate.mjs +2 -0
  171. package/esm2020/api/translation.mjs +2 -0
  172. package/esm2020/api/translationkeys.mjs +43 -0
  173. package/esm2020/api/treedragdropservice.mjs +23 -0
  174. package/esm2020/api/treenode.mjs +2 -0
  175. package/esm2020/api/treenodedragevent.mjs +2 -0
  176. package/esm2020/autocomplete/autocomplete.mjs +1144 -0
  177. package/esm2020/autocomplete/public_api.mjs +2 -0
  178. package/esm2020/autocomplete/qius.solutions-parallel-ui-angular-autocomplete.mjs +5 -0
  179. package/esm2020/autofocus/autofocus.mjs +51 -0
  180. package/esm2020/autofocus/public_api.mjs +2 -0
  181. package/esm2020/autofocus/qius.solutions-parallel-ui-angular-autofocus.mjs +5 -0
  182. package/esm2020/avatar/avatar.mjs +75 -0
  183. package/esm2020/avatar/public_api.mjs +2 -0
  184. package/esm2020/avatar/qius.solutions-parallel-ui-angular-avatar.mjs +5 -0
  185. package/esm2020/avatargroup/avatargroup.mjs +40 -0
  186. package/esm2020/avatargroup/public_api.mjs +2 -0
  187. package/esm2020/avatargroup/qius.solutions-parallel-ui-angular-avatargroup.mjs +5 -0
  188. package/esm2020/badge/badge.mjs +182 -0
  189. package/esm2020/badge/public_api.mjs +2 -0
  190. package/esm2020/badge/qius.solutions-parallel-ui-angular-badge.mjs +5 -0
  191. package/esm2020/baseicon/baseicon.mjs +41 -0
  192. package/esm2020/baseicon/public_api.mjs +2 -0
  193. package/esm2020/baseicon/qius.solutions-parallel-ui-angular-baseicon.mjs +5 -0
  194. package/esm2020/blockui/blockui.mjs +140 -0
  195. package/esm2020/blockui/public_api.mjs +2 -0
  196. package/esm2020/blockui/qius.solutions-parallel-ui-angular-blockui.mjs +5 -0
  197. package/esm2020/breadcrumb/breadcrumb.mjs +296 -0
  198. package/esm2020/breadcrumb/public_api.mjs +2 -0
  199. package/esm2020/breadcrumb/qius.solutions-parallel-ui-angular-breadcrumb.mjs +5 -0
  200. package/esm2020/button/button.mjs +362 -0
  201. package/esm2020/button/public_api.mjs +2 -0
  202. package/esm2020/button/qius.solutions-parallel-ui-angular-button.mjs +5 -0
  203. package/esm2020/calendar/calendar.mjs +3123 -0
  204. package/esm2020/calendar/public_api.mjs +2 -0
  205. package/esm2020/calendar/qius.solutions-parallel-ui-angular-calendar.mjs +5 -0
  206. package/esm2020/card/card.mjs +126 -0
  207. package/esm2020/card/public_api.mjs +2 -0
  208. package/esm2020/card/qius.solutions-parallel-ui-angular-card.mjs +5 -0
  209. package/esm2020/carousel/carousel.mjs +696 -0
  210. package/esm2020/carousel/public_api.mjs +2 -0
  211. package/esm2020/carousel/qius.solutions-parallel-ui-angular-carousel.mjs +5 -0
  212. package/esm2020/cascadeselect/cascadeselect.mjs +766 -0
  213. package/esm2020/cascadeselect/public_api.mjs +2 -0
  214. package/esm2020/cascadeselect/qius.solutions-parallel-ui-angular-cascadeselect.mjs +5 -0
  215. package/esm2020/chart/chart.mjs +142 -0
  216. package/esm2020/chart/public_api.mjs +2 -0
  217. package/esm2020/chart/qius.solutions-parallel-ui-angular-chart.mjs +5 -0
  218. package/esm2020/checkbox/checkbox.mjs +247 -0
  219. package/esm2020/checkbox/public_api.mjs +2 -0
  220. package/esm2020/checkbox/qius.solutions-parallel-ui-angular-checkbox.mjs +5 -0
  221. package/esm2020/chip/chip.mjs +113 -0
  222. package/esm2020/chip/public_api.mjs +2 -0
  223. package/esm2020/chip/qius.solutions-parallel-ui-angular-chip.mjs +5 -0
  224. package/esm2020/chips/chips.mjs +375 -0
  225. package/esm2020/chips/public_api.mjs +2 -0
  226. package/esm2020/chips/qius.solutions-parallel-ui-angular-chips.mjs +5 -0
  227. package/esm2020/colorpicker/colorpicker.mjs +685 -0
  228. package/esm2020/colorpicker/public_api.mjs +2 -0
  229. package/esm2020/colorpicker/qius.solutions-parallel-ui-angular-colorpicker.mjs +5 -0
  230. package/esm2020/confirmdialog/confirmdialog.mjs +606 -0
  231. package/esm2020/confirmdialog/public_api.mjs +2 -0
  232. package/esm2020/confirmdialog/qius.solutions-parallel-ui-angular-confirmdialog.mjs +5 -0
  233. package/esm2020/confirmpopup/confirmpopup.mjs +394 -0
  234. package/esm2020/confirmpopup/public_api.mjs +2 -0
  235. package/esm2020/confirmpopup/qius.solutions-parallel-ui-angular-confirmpopup.mjs +5 -0
  236. package/esm2020/contextmenu/contextmenu.mjs +691 -0
  237. package/esm2020/contextmenu/public_api.mjs +2 -0
  238. package/esm2020/contextmenu/qius.solutions-parallel-ui-angular-contextmenu.mjs +5 -0
  239. package/esm2020/dataview/dataview.mjs +512 -0
  240. package/esm2020/dataview/public_api.mjs +2 -0
  241. package/esm2020/dataview/qius.solutions-parallel-ui-angular-dataview.mjs +5 -0
  242. package/esm2020/defer/defer.mjs +92 -0
  243. package/esm2020/defer/public_api.mjs +2 -0
  244. package/esm2020/defer/qius.solutions-parallel-ui-angular-defer.mjs +5 -0
  245. package/esm2020/dialog/dialog.mjs +833 -0
  246. package/esm2020/dialog/public_api.mjs +2 -0
  247. package/esm2020/dialog/qius.solutions-parallel-ui-angular-dialog.mjs +5 -0
  248. package/esm2020/divider/divider.mjs +69 -0
  249. package/esm2020/divider/public_api.mjs +2 -0
  250. package/esm2020/divider/qius.solutions-parallel-ui-angular-divider.mjs +5 -0
  251. package/esm2020/dock/dock.mjs +210 -0
  252. package/esm2020/dock/public_api.mjs +2 -0
  253. package/esm2020/dock/qius.solutions-parallel-ui-angular-dock.mjs +5 -0
  254. package/esm2020/dom/connectedoverlayscrollhandler.mjs +27 -0
  255. package/esm2020/dom/domhandler.mjs +600 -0
  256. package/esm2020/dom/public_api.mjs +3 -0
  257. package/esm2020/dom/qius.solutions-parallel-ui-angular-dom.mjs +5 -0
  258. package/esm2020/dragdrop/dragdrop.mjs +251 -0
  259. package/esm2020/dragdrop/public_api.mjs +2 -0
  260. package/esm2020/dragdrop/qius.solutions-parallel-ui-angular-dragdrop.mjs +5 -0
  261. package/esm2020/dropdown/dropdown.mjs +1372 -0
  262. package/esm2020/dropdown/public_api.mjs +2 -0
  263. package/esm2020/dropdown/qius.solutions-parallel-ui-angular-dropdown.mjs +5 -0
  264. package/esm2020/dynamicdialog/dialogservice.mjs +60 -0
  265. package/esm2020/dynamicdialog/dynamicdialog-config.mjs +3 -0
  266. package/esm2020/dynamicdialog/dynamicdialog-injector.mjs +13 -0
  267. package/esm2020/dynamicdialog/dynamicdialog-ref.mjs +41 -0
  268. package/esm2020/dynamicdialog/dynamicdialog.mjs +562 -0
  269. package/esm2020/dynamicdialog/dynamicdialogcontent.mjs +19 -0
  270. package/esm2020/dynamicdialog/public_api.mjs +7 -0
  271. package/esm2020/dynamicdialog/qius.solutions-parallel-ui-angular-dynamicdialog.mjs +5 -0
  272. package/esm2020/editor/editor.mjs +309 -0
  273. package/esm2020/editor/public_api.mjs +2 -0
  274. package/esm2020/editor/qius.solutions-parallel-ui-angular-editor.mjs +5 -0
  275. package/esm2020/fieldset/fieldset.mjs +214 -0
  276. package/esm2020/fieldset/public_api.mjs +2 -0
  277. package/esm2020/fieldset/qius.solutions-parallel-ui-angular-fieldset.mjs +5 -0
  278. package/esm2020/fileupload/fileupload.mjs +754 -0
  279. package/esm2020/fileupload/public_api.mjs +2 -0
  280. package/esm2020/fileupload/qius.solutions-parallel-ui-angular-fileupload.mjs +5 -0
  281. package/esm2020/focustrap/focustrap.mjs +52 -0
  282. package/esm2020/focustrap/public_api.mjs +2 -0
  283. package/esm2020/focustrap/qius.solutions-parallel-ui-angular-focustrap.mjs +5 -0
  284. package/esm2020/galleria/galleria.mjs +1187 -0
  285. package/esm2020/galleria/public_api.mjs +2 -0
  286. package/esm2020/galleria/qius.solutions-parallel-ui-angular-galleria.mjs +5 -0
  287. package/esm2020/icons/angledoubledown/angledoubledown.mjs +35 -0
  288. package/esm2020/icons/angledoubledown/public_api.mjs +2 -0
  289. package/esm2020/icons/angledoubledown/qius.solutions-parallel-ui-angular-icons-angledoubledown.mjs +5 -0
  290. package/esm2020/icons/angledoubleleft/angledoubleleft.mjs +35 -0
  291. package/esm2020/icons/angledoubleleft/public_api.mjs +2 -0
  292. package/esm2020/icons/angledoubleleft/qius.solutions-parallel-ui-angular-icons-angledoubleleft.mjs +5 -0
  293. package/esm2020/icons/angledoubleright/angledoubleright.mjs +35 -0
  294. package/esm2020/icons/angledoubleright/public_api.mjs +2 -0
  295. package/esm2020/icons/angledoubleright/qius.solutions-parallel-ui-angular-icons-angledoubleright.mjs +5 -0
  296. package/esm2020/icons/angledoubleup/angledoubleup.mjs +35 -0
  297. package/esm2020/icons/angledoubleup/public_api.mjs +2 -0
  298. package/esm2020/icons/angledoubleup/qius.solutions-parallel-ui-angular-icons-angledoubleup.mjs +5 -0
  299. package/esm2020/icons/angledown/angledown.mjs +31 -0
  300. package/esm2020/icons/angledown/public_api.mjs +2 -0
  301. package/esm2020/icons/angledown/qius.solutions-parallel-ui-angular-icons-angledown.mjs +5 -0
  302. package/esm2020/icons/angleleft/angleleft.mjs +31 -0
  303. package/esm2020/icons/angleleft/public_api.mjs +2 -0
  304. package/esm2020/icons/angleleft/qius.solutions-parallel-ui-angular-icons-angleleft.mjs +5 -0
  305. package/esm2020/icons/angleright/angleright.mjs +31 -0
  306. package/esm2020/icons/angleright/public_api.mjs +2 -0
  307. package/esm2020/icons/angleright/qius.solutions-parallel-ui-angular-icons-angleright.mjs +5 -0
  308. package/esm2020/icons/angleup/angleup.mjs +31 -0
  309. package/esm2020/icons/angleup/public_api.mjs +2 -0
  310. package/esm2020/icons/angleup/qius.solutions-parallel-ui-angular-icons-angleup.mjs +5 -0
  311. package/esm2020/icons/arrowdown/arrowdown.mjs +49 -0
  312. package/esm2020/icons/arrowdown/public_api.mjs +2 -0
  313. package/esm2020/icons/arrowdown/qius.solutions-parallel-ui-angular-icons-arrowdown.mjs +5 -0
  314. package/esm2020/icons/arrowdownleft/arrowdownleft.mjs +31 -0
  315. package/esm2020/icons/arrowdownleft/public_api.mjs +2 -0
  316. package/esm2020/icons/arrowdownleft/qius.solutions-parallel-ui-angular-icons-arrowdownleft.mjs +5 -0
  317. package/esm2020/icons/arrowdownright/arrowdownright.mjs +31 -0
  318. package/esm2020/icons/arrowdownright/public_api.mjs +2 -0
  319. package/esm2020/icons/arrowdownright/qius.solutions-parallel-ui-angular-icons-arrowdownright.mjs +5 -0
  320. package/esm2020/icons/arrowleft/arrowleft.mjs +49 -0
  321. package/esm2020/icons/arrowleft/public_api.mjs +2 -0
  322. package/esm2020/icons/arrowleft/qius.solutions-parallel-ui-angular-icons-arrowleft.mjs +5 -0
  323. package/esm2020/icons/arrowright/arrowright.mjs +35 -0
  324. package/esm2020/icons/arrowright/public_api.mjs +2 -0
  325. package/esm2020/icons/arrowright/qius.solutions-parallel-ui-angular-icons-arrowright.mjs +5 -0
  326. package/esm2020/icons/arrowup/arrowup.mjs +49 -0
  327. package/esm2020/icons/arrowup/public_api.mjs +2 -0
  328. package/esm2020/icons/arrowup/qius.solutions-parallel-ui-angular-icons-arrowup.mjs +5 -0
  329. package/esm2020/icons/ban/ban.mjs +45 -0
  330. package/esm2020/icons/ban/public_api.mjs +2 -0
  331. package/esm2020/icons/ban/qius.solutions-parallel-ui-angular-icons-ban.mjs +5 -0
  332. package/esm2020/icons/bars/bars.mjs +35 -0
  333. package/esm2020/icons/bars/public_api.mjs +2 -0
  334. package/esm2020/icons/bars/qius.solutions-parallel-ui-angular-icons-bars.mjs +5 -0
  335. package/esm2020/icons/calendar/calendar.mjs +31 -0
  336. package/esm2020/icons/calendar/public_api.mjs +2 -0
  337. package/esm2020/icons/calendar/qius.solutions-parallel-ui-angular-icons-calendar.mjs +5 -0
  338. package/esm2020/icons/caretleft/caretleft.mjs +31 -0
  339. package/esm2020/icons/caretleft/public_api.mjs +2 -0
  340. package/esm2020/icons/caretleft/qius.solutions-parallel-ui-angular-icons-caretleft.mjs +5 -0
  341. package/esm2020/icons/caretright/caretright.mjs +31 -0
  342. package/esm2020/icons/caretright/public_api.mjs +2 -0
  343. package/esm2020/icons/caretright/qius.solutions-parallel-ui-angular-icons-caretright.mjs +5 -0
  344. package/esm2020/icons/check/check.mjs +31 -0
  345. package/esm2020/icons/check/public_api.mjs +2 -0
  346. package/esm2020/icons/check/qius.solutions-parallel-ui-angular-icons-check.mjs +5 -0
  347. package/esm2020/icons/chevrondown/chevrondown.mjs +31 -0
  348. package/esm2020/icons/chevrondown/public_api.mjs +2 -0
  349. package/esm2020/icons/chevrondown/qius.solutions-parallel-ui-angular-icons-chevrondown.mjs +5 -0
  350. package/esm2020/icons/chevronleft/chevronleft.mjs +31 -0
  351. package/esm2020/icons/chevronleft/public_api.mjs +2 -0
  352. package/esm2020/icons/chevronleft/qius.solutions-parallel-ui-angular-icons-chevronleft.mjs +5 -0
  353. package/esm2020/icons/chevronright/chevronright.mjs +31 -0
  354. package/esm2020/icons/chevronright/public_api.mjs +2 -0
  355. package/esm2020/icons/chevronright/qius.solutions-parallel-ui-angular-icons-chevronright.mjs +5 -0
  356. package/esm2020/icons/chevronup/chevronup.mjs +31 -0
  357. package/esm2020/icons/chevronup/public_api.mjs +2 -0
  358. package/esm2020/icons/chevronup/qius.solutions-parallel-ui-angular-icons-chevronup.mjs +5 -0
  359. package/esm2020/icons/exclamationtriangle/exclamationtriangle.mjs +61 -0
  360. package/esm2020/icons/exclamationtriangle/public_api.mjs +2 -0
  361. package/esm2020/icons/exclamationtriangle/qius.solutions-parallel-ui-angular-icons-exclamationtriangle.mjs +5 -0
  362. package/esm2020/icons/eye/eye.mjs +35 -0
  363. package/esm2020/icons/eye/public_api.mjs +2 -0
  364. package/esm2020/icons/eye/qius.solutions-parallel-ui-angular-icons-eye.mjs +5 -0
  365. package/esm2020/icons/eyeslash/eyeslash.mjs +49 -0
  366. package/esm2020/icons/eyeslash/public_api.mjs +2 -0
  367. package/esm2020/icons/eyeslash/qius.solutions-parallel-ui-angular-icons-eyeslash.mjs +5 -0
  368. package/esm2020/icons/filter/filter.mjs +45 -0
  369. package/esm2020/icons/filter/public_api.mjs +2 -0
  370. package/esm2020/icons/filter/qius.solutions-parallel-ui-angular-icons-filter.mjs +5 -0
  371. package/esm2020/icons/filterslash/filterslash.mjs +49 -0
  372. package/esm2020/icons/filterslash/public_api.mjs +2 -0
  373. package/esm2020/icons/filterslash/qius.solutions-parallel-ui-angular-icons-filterslash.mjs +5 -0
  374. package/esm2020/icons/home/home.mjs +49 -0
  375. package/esm2020/icons/home/public_api.mjs +2 -0
  376. package/esm2020/icons/home/qius.solutions-parallel-ui-angular-icons-home.mjs +5 -0
  377. package/esm2020/icons/infocircle/infocircle.mjs +49 -0
  378. package/esm2020/icons/infocircle/public_api.mjs +2 -0
  379. package/esm2020/icons/infocircle/qius.solutions-parallel-ui-angular-icons-infocircle.mjs +5 -0
  380. package/esm2020/icons/minus/minus.mjs +32 -0
  381. package/esm2020/icons/minus/public_api.mjs +2 -0
  382. package/esm2020/icons/minus/qius.solutions-parallel-ui-angular-icons-minus.mjs +5 -0
  383. package/esm2020/icons/pencil/pencil.mjs +45 -0
  384. package/esm2020/icons/pencil/public_api.mjs +2 -0
  385. package/esm2020/icons/pencil/qius.solutions-parallel-ui-angular-icons-pencil.mjs +5 -0
  386. package/esm2020/icons/plus/plus.mjs +45 -0
  387. package/esm2020/icons/plus/public_api.mjs +2 -0
  388. package/esm2020/icons/plus/qius.solutions-parallel-ui-angular-icons-plus.mjs +5 -0
  389. package/esm2020/icons/refresh/public_api.mjs +2 -0
  390. package/esm2020/icons/refresh/qius.solutions-parallel-ui-angular-icons-refresh.mjs +5 -0
  391. package/esm2020/icons/refresh/refresh.mjs +49 -0
  392. package/esm2020/icons/search/public_api.mjs +2 -0
  393. package/esm2020/icons/search/qius.solutions-parallel-ui-angular-icons-search.mjs +5 -0
  394. package/esm2020/icons/search/search.mjs +49 -0
  395. package/esm2020/icons/searchminus/public_api.mjs +2 -0
  396. package/esm2020/icons/searchminus/qius.solutions-parallel-ui-angular-icons-searchminus.mjs +5 -0
  397. package/esm2020/icons/searchminus/searchminus.mjs +49 -0
  398. package/esm2020/icons/searchplus/public_api.mjs +2 -0
  399. package/esm2020/icons/searchplus/qius.solutions-parallel-ui-angular-icons-searchplus.mjs +5 -0
  400. package/esm2020/icons/searchplus/searchplus.mjs +49 -0
  401. package/esm2020/icons/sortalt/public_api.mjs +2 -0
  402. package/esm2020/icons/sortalt/qius.solutions-parallel-ui-angular-icons-sortalt.mjs +5 -0
  403. package/esm2020/icons/sortalt/sortalt.mjs +57 -0
  404. package/esm2020/icons/sortamountdown/public_api.mjs +2 -0
  405. package/esm2020/icons/sortamountdown/qius.solutions-parallel-ui-angular-icons-sortamountdown.mjs +5 -0
  406. package/esm2020/icons/sortamountdown/sortamountdown.mjs +85 -0
  407. package/esm2020/icons/sortamountupalt/public_api.mjs +2 -0
  408. package/esm2020/icons/sortamountupalt/qius.solutions-parallel-ui-angular-icons-sortamountupalt.mjs +5 -0
  409. package/esm2020/icons/sortamountupalt/sortamountupalt.mjs +85 -0
  410. package/esm2020/icons/spinner/public_api.mjs +2 -0
  411. package/esm2020/icons/spinner/qius.solutions-parallel-ui-angular-icons-spinner.mjs +5 -0
  412. package/esm2020/icons/spinner/spinner.mjs +45 -0
  413. package/esm2020/icons/star/public_api.mjs +2 -0
  414. package/esm2020/icons/star/qius.solutions-parallel-ui-angular-icons-star.mjs +5 -0
  415. package/esm2020/icons/star/star.mjs +45 -0
  416. package/esm2020/icons/starfill/public_api.mjs +2 -0
  417. package/esm2020/icons/starfill/qius.solutions-parallel-ui-angular-icons-starfill.mjs +5 -0
  418. package/esm2020/icons/starfill/starfill.mjs +45 -0
  419. package/esm2020/icons/thlarge/public_api.mjs +2 -0
  420. package/esm2020/icons/thlarge/qius.solutions-parallel-ui-angular-icons-thlarge.mjs +5 -0
  421. package/esm2020/icons/thlarge/thlarge.mjs +49 -0
  422. package/esm2020/icons/times/public_api.mjs +2 -0
  423. package/esm2020/icons/times/qius.solutions-parallel-ui-angular-icons-times.mjs +5 -0
  424. package/esm2020/icons/times/times.mjs +31 -0
  425. package/esm2020/icons/timescircle/public_api.mjs +2 -0
  426. package/esm2020/icons/timescircle/qius.solutions-parallel-ui-angular-icons-timescircle.mjs +5 -0
  427. package/esm2020/icons/timescircle/timescircle.mjs +49 -0
  428. package/esm2020/icons/trash/public_api.mjs +2 -0
  429. package/esm2020/icons/trash/qius.solutions-parallel-ui-angular-icons-trash.mjs +5 -0
  430. package/esm2020/icons/trash/trash.mjs +49 -0
  431. package/esm2020/icons/undo/public_api.mjs +2 -0
  432. package/esm2020/icons/undo/qius.solutions-parallel-ui-angular-icons-undo.mjs +5 -0
  433. package/esm2020/icons/undo/undo.mjs +49 -0
  434. package/esm2020/icons/upload/public_api.mjs +2 -0
  435. package/esm2020/icons/upload/qius.solutions-parallel-ui-angular-icons-upload.mjs +5 -0
  436. package/esm2020/icons/upload/upload.mjs +49 -0
  437. package/esm2020/icons/windowmaximize/public_api.mjs +2 -0
  438. package/esm2020/icons/windowmaximize/qius.solutions-parallel-ui-angular-icons-windowmaximize.mjs +5 -0
  439. package/esm2020/icons/windowmaximize/windowmaximize.mjs +49 -0
  440. package/esm2020/icons/windowminimize/public_api.mjs +2 -0
  441. package/esm2020/icons/windowminimize/qius.solutions-parallel-ui-angular-icons-windowminimize.mjs +5 -0
  442. package/esm2020/icons/windowminimize/windowminimize.mjs +49 -0
  443. package/esm2020/image/image.mjs +321 -0
  444. package/esm2020/image/public_api.mjs +2 -0
  445. package/esm2020/image/qius.solutions-parallel-ui-angular-image.mjs +5 -0
  446. package/esm2020/inplace/inplace.mjs +168 -0
  447. package/esm2020/inplace/public_api.mjs +2 -0
  448. package/esm2020/inplace/qius.solutions-parallel-ui-angular-inplace.mjs +5 -0
  449. package/esm2020/inputmask/inputmask.mjs +697 -0
  450. package/esm2020/inputmask/public_api.mjs +2 -0
  451. package/esm2020/inputmask/qius.solutions-parallel-ui-angular-inputmask.mjs +5 -0
  452. package/esm2020/inputnumber/inputnumber.mjs +1189 -0
  453. package/esm2020/inputnumber/public_api.mjs +2 -0
  454. package/esm2020/inputnumber/qius.solutions-parallel-ui-angular-inputnumber.mjs +5 -0
  455. package/esm2020/inputswitch/inputswitch.mjs +160 -0
  456. package/esm2020/inputswitch/public_api.mjs +2 -0
  457. package/esm2020/inputswitch/qius.solutions-parallel-ui-angular-inputswitch.mjs +5 -0
  458. package/esm2020/inputtext/inputtext.mjs +55 -0
  459. package/esm2020/inputtext/public_api.mjs +2 -0
  460. package/esm2020/inputtext/qius.solutions-parallel-ui-angular-inputtext.mjs +5 -0
  461. package/esm2020/inputtextarea/inputtextarea.mjs +117 -0
  462. package/esm2020/inputtextarea/public_api.mjs +2 -0
  463. package/esm2020/inputtextarea/qius.solutions-parallel-ui-angular-inputtextarea.mjs +5 -0
  464. package/esm2020/keyfilter/keyfilter.mjs +214 -0
  465. package/esm2020/keyfilter/public_api.mjs +2 -0
  466. package/esm2020/keyfilter/qius.solutions-parallel-ui-angular-keyfilter.mjs +5 -0
  467. package/esm2020/knob/knob.mjs +283 -0
  468. package/esm2020/knob/public_api.mjs +2 -0
  469. package/esm2020/knob/qius.solutions-parallel-ui-angular-knob.mjs +5 -0
  470. package/esm2020/listbox/listbox.mjs +800 -0
  471. package/esm2020/listbox/public_api.mjs +2 -0
  472. package/esm2020/listbox/qius.solutions-parallel-ui-angular-listbox.mjs +5 -0
  473. package/esm2020/megamenu/megamenu.mjs +464 -0
  474. package/esm2020/megamenu/public_api.mjs +2 -0
  475. package/esm2020/megamenu/qius.solutions-parallel-ui-angular-megamenu.mjs +5 -0
  476. package/esm2020/menu/menu.mjs +548 -0
  477. package/esm2020/menu/public_api.mjs +2 -0
  478. package/esm2020/menu/qius.solutions-parallel-ui-angular-menu.mjs +5 -0
  479. package/esm2020/menubar/menubar.mjs +515 -0
  480. package/esm2020/menubar/public_api.mjs +2 -0
  481. package/esm2020/menubar/qius.solutions-parallel-ui-angular-menubar.mjs +5 -0
  482. package/esm2020/message/message.mjs +103 -0
  483. package/esm2020/message/public_api.mjs +2 -0
  484. package/esm2020/message/qius.solutions-parallel-ui-angular-message.mjs +5 -0
  485. package/esm2020/messages/messages.mjs +272 -0
  486. package/esm2020/messages/public_api.mjs +2 -0
  487. package/esm2020/messages/qius.solutions-parallel-ui-angular-messages.mjs +5 -0
  488. package/esm2020/multiselect/multiselect.mjs +1411 -0
  489. package/esm2020/multiselect/public_api.mjs +2 -0
  490. package/esm2020/multiselect/qius.solutions-parallel-ui-angular-multiselect.mjs +5 -0
  491. package/esm2020/orderlist/orderlist.mjs +621 -0
  492. package/esm2020/orderlist/public_api.mjs +2 -0
  493. package/esm2020/orderlist/qius.solutions-parallel-ui-angular-orderlist.mjs +5 -0
  494. package/esm2020/organizationchart/organizationchart.mjs +319 -0
  495. package/esm2020/organizationchart/public_api.mjs +2 -0
  496. package/esm2020/organizationchart/qius.solutions-parallel-ui-angular-organizationchart.mjs +5 -0
  497. package/esm2020/overlay/overlay.mjs +520 -0
  498. package/esm2020/overlay/public_api.mjs +2 -0
  499. package/esm2020/overlay/qius.solutions-parallel-ui-angular-overlay.mjs +5 -0
  500. package/esm2020/overlaypanel/overlaypanel.mjs +410 -0
  501. package/esm2020/overlaypanel/public_api.mjs +2 -0
  502. package/esm2020/overlaypanel/qius.solutions-parallel-ui-angular-overlaypanel.mjs +5 -0
  503. package/esm2020/paginator/paginator.mjs +405 -0
  504. package/esm2020/paginator/public_api.mjs +2 -0
  505. package/esm2020/paginator/qius.solutions-parallel-ui-angular-paginator.mjs +5 -0
  506. package/esm2020/panel/panel.mjs +296 -0
  507. package/esm2020/panel/public_api.mjs +2 -0
  508. package/esm2020/panel/qius.solutions-parallel-ui-angular-panel.mjs +5 -0
  509. package/esm2020/panelmenu/panelmenu.mjs +518 -0
  510. package/esm2020/panelmenu/public_api.mjs +2 -0
  511. package/esm2020/panelmenu/qius.solutions-parallel-ui-angular-panelmenu.mjs +5 -0
  512. package/esm2020/password/password.mjs +782 -0
  513. package/esm2020/password/public_api.mjs +2 -0
  514. package/esm2020/password/qius.solutions-parallel-ui-angular-password.mjs +5 -0
  515. package/esm2020/picklist/picklist.mjs +1268 -0
  516. package/esm2020/picklist/public_api.mjs +2 -0
  517. package/esm2020/picklist/qius.solutions-parallel-ui-angular-picklist.mjs +5 -0
  518. package/esm2020/progressbar/progressbar.mjs +81 -0
  519. package/esm2020/progressbar/public_api.mjs +2 -0
  520. package/esm2020/progressbar/qius.solutions-parallel-ui-angular-progressbar.mjs +5 -0
  521. package/esm2020/progressspinner/progressspinner.mjs +55 -0
  522. package/esm2020/progressspinner/public_api.mjs +2 -0
  523. package/esm2020/progressspinner/qius.solutions-parallel-ui-angular-progressspinner.mjs +5 -0
  524. package/esm2020/public_api.mjs +2 -0
  525. package/esm2020/qius.solutions-parallel-ui-angular.mjs +5 -0
  526. package/esm2020/radiobutton/public_api.mjs +2 -0
  527. package/esm2020/radiobutton/qius.solutions-parallel-ui-angular-radiobutton.mjs +5 -0
  528. package/esm2020/radiobutton/radiobutton.mjs +254 -0
  529. package/esm2020/rating/public_api.mjs +2 -0
  530. package/esm2020/rating/qius.solutions-parallel-ui-angular-rating.mjs +5 -0
  531. package/esm2020/rating/rating.mjs +199 -0
  532. package/esm2020/ripple/public_api.mjs +2 -0
  533. package/esm2020/ripple/qius.solutions-parallel-ui-angular-ripple.mjs +5 -0
  534. package/esm2020/ripple/ripple.mjs +126 -0
  535. package/esm2020/scroller/public_api.mjs +2 -0
  536. package/esm2020/scroller/qius.solutions-parallel-ui-angular-scroller.mjs +5 -0
  537. package/esm2020/scroller/scroller.mjs +928 -0
  538. package/esm2020/scrollpanel/public_api.mjs +2 -0
  539. package/esm2020/scrollpanel/qius.solutions-parallel-ui-angular-scrollpanel.mjs +5 -0
  540. package/esm2020/scrollpanel/scrollpanel.mjs +272 -0
  541. package/esm2020/scrolltop/public_api.mjs +2 -0
  542. package/esm2020/scrolltop/qius.solutions-parallel-ui-angular-scrolltop.mjs +5 -0
  543. package/esm2020/scrolltop/scrolltop.mjs +221 -0
  544. package/esm2020/selectbutton/public_api.mjs +2 -0
  545. package/esm2020/selectbutton/qius.solutions-parallel-ui-angular-selectbutton.mjs +5 -0
  546. package/esm2020/selectbutton/selectbutton.mjs +209 -0
  547. package/esm2020/sidebar/public_api.mjs +2 -0
  548. package/esm2020/sidebar/qius.solutions-parallel-ui-angular-sidebar.mjs +5 -0
  549. package/esm2020/sidebar/sidebar.mjs +369 -0
  550. package/esm2020/skeleton/public_api.mjs +2 -0
  551. package/esm2020/skeleton/qius.solutions-parallel-ui-angular-skeleton.mjs +5 -0
  552. package/esm2020/skeleton/skeleton.mjs +65 -0
  553. package/esm2020/slidemenu/public_api.mjs +2 -0
  554. package/esm2020/slidemenu/qius.solutions-parallel-ui-angular-slidemenu.mjs +5 -0
  555. package/esm2020/slidemenu/slidemenu.mjs +616 -0
  556. package/esm2020/slider/public_api.mjs +2 -0
  557. package/esm2020/slider/qius.solutions-parallel-ui-angular-slider.mjs +5 -0
  558. package/esm2020/slider/slider.mjs +588 -0
  559. package/esm2020/speeddial/public_api.mjs +2 -0
  560. package/esm2020/speeddial/qius.solutions-parallel-ui-angular-speeddial.mjs +5 -0
  561. package/esm2020/speeddial/speeddial.mjs +402 -0
  562. package/esm2020/spinner/public_api.mjs +2 -0
  563. package/esm2020/spinner/qius.solutions-parallel-ui-angular-spinner.mjs +5 -0
  564. package/esm2020/spinner/spinner.mjs +407 -0
  565. package/esm2020/splitbutton/public_api.mjs +2 -0
  566. package/esm2020/splitbutton/qius.solutions-parallel-ui-angular-splitbutton.mjs +5 -0
  567. package/esm2020/splitbutton/splitbutton.mjs +141 -0
  568. package/esm2020/splitter/public_api.mjs +2 -0
  569. package/esm2020/splitter/qius.solutions-parallel-ui-angular-splitter.mjs +5 -0
  570. package/esm2020/splitter/splitter.mjs +355 -0
  571. package/esm2020/steps/public_api.mjs +2 -0
  572. package/esm2020/steps/qius.solutions-parallel-ui-angular-steps.mjs +5 -0
  573. package/esm2020/steps/steps.mjs +205 -0
  574. package/esm2020/styleclass/public_api.mjs +2 -0
  575. package/esm2020/styleclass/qius.solutions-parallel-ui-angular-styleclass.mjs +5 -0
  576. package/esm2020/styleclass/styleclass.mjs +220 -0
  577. package/esm2020/table/public_api.mjs +2 -0
  578. package/esm2020/table/qius.solutions-parallel-ui-angular-table.mjs +5 -0
  579. package/esm2020/table/table.mjs +5314 -0
  580. package/esm2020/tabmenu/public_api.mjs +2 -0
  581. package/esm2020/tabmenu/qius.solutions-parallel-ui-angular-tabmenu.mjs +5 -0
  582. package/esm2020/tabmenu/tabmenu.mjs +374 -0
  583. package/esm2020/tabview/public_api.mjs +2 -0
  584. package/esm2020/tabview/qius.solutions-parallel-ui-angular-tabview.mjs +5 -0
  585. package/esm2020/tabview/tabview.mjs +527 -0
  586. package/esm2020/tag/public_api.mjs +2 -0
  587. package/esm2020/tag/qius.solutions-parallel-ui-angular-tag.mjs +5 -0
  588. package/esm2020/tag/tag.mjs +86 -0
  589. package/esm2020/terminal/public_api.mjs +3 -0
  590. package/esm2020/terminal/qius.solutions-parallel-ui-angular-terminal.mjs +5 -0
  591. package/esm2020/terminal/terminal.mjs +112 -0
  592. package/esm2020/terminal/terminalservice.mjs +27 -0
  593. package/esm2020/tieredmenu/public_api.mjs +2 -0
  594. package/esm2020/tieredmenu/qius.solutions-parallel-ui-angular-tieredmenu.mjs +5 -0
  595. package/esm2020/tieredmenu/tieredmenu.mjs +663 -0
  596. package/esm2020/timeline/public_api.mjs +2 -0
  597. package/esm2020/timeline/qius.solutions-parallel-ui-angular-timeline.mjs +5 -0
  598. package/esm2020/timeline/timeline.mjs +131 -0
  599. package/esm2020/toast/public_api.mjs +2 -0
  600. package/esm2020/toast/qius.solutions-parallel-ui-angular-toast.mjs +5 -0
  601. package/esm2020/toast/toast.mjs +443 -0
  602. package/esm2020/togglebutton/public_api.mjs +2 -0
  603. package/esm2020/togglebutton/qius.solutions-parallel-ui-angular-togglebutton.mjs +5 -0
  604. package/esm2020/togglebutton/togglebutton.mjs +133 -0
  605. package/esm2020/toolbar/public_api.mjs +2 -0
  606. package/esm2020/toolbar/qius.solutions-parallel-ui-angular-toolbar.mjs +5 -0
  607. package/esm2020/toolbar/toolbar.mjs +83 -0
  608. package/esm2020/tooltip/public_api.mjs +2 -0
  609. package/esm2020/tooltip/qius.solutions-parallel-ui-angular-tooltip.mjs +5 -0
  610. package/esm2020/tooltip/tooltip.mjs +546 -0
  611. package/esm2020/tree/public_api.mjs +2 -0
  612. package/esm2020/tree/qius.solutions-parallel-ui-angular-tree.mjs +5 -0
  613. package/esm2020/tree/tree.mjs +1584 -0
  614. package/esm2020/treeselect/public_api.mjs +2 -0
  615. package/esm2020/treeselect/qius.solutions-parallel-ui-angular-treeselect.mjs +5 -0
  616. package/esm2020/treeselect/treeselect.mjs +778 -0
  617. package/esm2020/treetable/public_api.mjs +2 -0
  618. package/esm2020/treetable/qius.solutions-parallel-ui-angular-treetable.mjs +5 -0
  619. package/esm2020/treetable/treetable.mjs +3217 -0
  620. package/esm2020/tristatecheckbox/public_api.mjs +2 -0
  621. package/esm2020/tristatecheckbox/qius.solutions-parallel-ui-angular-tristatecheckbox.mjs +5 -0
  622. package/esm2020/tristatecheckbox/tristatecheckbox.mjs +223 -0
  623. package/esm2020/utils/objectutils.mjs +198 -0
  624. package/esm2020/utils/public_api.mjs +5 -0
  625. package/esm2020/utils/qius.solutions-parallel-ui-angular-utils.mjs +5 -0
  626. package/esm2020/utils/uniquecomponentid.mjs +7 -0
  627. package/esm2020/utils/zindexutils.mjs +35 -0
  628. package/esm2020/virtualscroller/public_api.mjs +2 -0
  629. package/esm2020/virtualscroller/qius.solutions-parallel-ui-angular-virtualscroller.mjs +5 -0
  630. package/esm2020/virtualscroller/virtualscroller.mjs +153 -0
  631. package/fesm2015/qius.solutions-parallel-ui-angular-accordion.mjs +405 -0
  632. package/fesm2015/qius.solutions-parallel-ui-angular-accordion.mjs.map +1 -0
  633. package/fesm2015/qius.solutions-parallel-ui-angular-animate.mjs +86 -0
  634. package/fesm2015/qius.solutions-parallel-ui-angular-animate.mjs.map +1 -0
  635. package/fesm2015/qius.solutions-parallel-ui-angular-api.mjs +817 -0
  636. package/fesm2015/qius.solutions-parallel-ui-angular-api.mjs.map +1 -0
  637. package/fesm2015/qius.solutions-parallel-ui-angular-autocomplete.mjs +1154 -0
  638. package/fesm2015/qius.solutions-parallel-ui-angular-autocomplete.mjs.map +1 -0
  639. package/fesm2015/qius.solutions-parallel-ui-angular-autofocus.mjs +58 -0
  640. package/fesm2015/qius.solutions-parallel-ui-angular-autofocus.mjs.map +1 -0
  641. package/fesm2015/qius.solutions-parallel-ui-angular-avatar.mjs +82 -0
  642. package/fesm2015/qius.solutions-parallel-ui-angular-avatar.mjs.map +1 -0
  643. package/fesm2015/qius.solutions-parallel-ui-angular-avatargroup.mjs +47 -0
  644. package/fesm2015/qius.solutions-parallel-ui-angular-avatargroup.mjs.map +1 -0
  645. package/fesm2015/qius.solutions-parallel-ui-angular-badge.mjs +191 -0
  646. package/fesm2015/qius.solutions-parallel-ui-angular-badge.mjs.map +1 -0
  647. package/fesm2015/qius.solutions-parallel-ui-angular-baseicon.mjs +48 -0
  648. package/fesm2015/qius.solutions-parallel-ui-angular-baseicon.mjs.map +1 -0
  649. package/fesm2015/qius.solutions-parallel-ui-angular-blockui.mjs +149 -0
  650. package/fesm2015/qius.solutions-parallel-ui-angular-blockui.mjs.map +1 -0
  651. package/fesm2015/qius.solutions-parallel-ui-angular-breadcrumb.mjs +303 -0
  652. package/fesm2015/qius.solutions-parallel-ui-angular-breadcrumb.mjs.map +1 -0
  653. package/fesm2015/qius.solutions-parallel-ui-angular-button.mjs +371 -0
  654. package/fesm2015/qius.solutions-parallel-ui-angular-button.mjs.map +1 -0
  655. package/fesm2015/qius.solutions-parallel-ui-angular-calendar.mjs +3133 -0
  656. package/fesm2015/qius.solutions-parallel-ui-angular-calendar.mjs.map +1 -0
  657. package/fesm2015/qius.solutions-parallel-ui-angular-card.mjs +133 -0
  658. package/fesm2015/qius.solutions-parallel-ui-angular-card.mjs.map +1 -0
  659. package/fesm2015/qius.solutions-parallel-ui-angular-carousel.mjs +706 -0
  660. package/fesm2015/qius.solutions-parallel-ui-angular-carousel.mjs.map +1 -0
  661. package/fesm2015/qius.solutions-parallel-ui-angular-cascadeselect.mjs +776 -0
  662. package/fesm2015/qius.solutions-parallel-ui-angular-cascadeselect.mjs.map +1 -0
  663. package/fesm2015/qius.solutions-parallel-ui-angular-chart.mjs +151 -0
  664. package/fesm2015/qius.solutions-parallel-ui-angular-chart.mjs.map +1 -0
  665. package/fesm2015/qius.solutions-parallel-ui-angular-checkbox.mjs +254 -0
  666. package/fesm2015/qius.solutions-parallel-ui-angular-checkbox.mjs.map +1 -0
  667. package/fesm2015/qius.solutions-parallel-ui-angular-chip.mjs +120 -0
  668. package/fesm2015/qius.solutions-parallel-ui-angular-chip.mjs.map +1 -0
  669. package/fesm2015/qius.solutions-parallel-ui-angular-chips.mjs +384 -0
  670. package/fesm2015/qius.solutions-parallel-ui-angular-chips.mjs.map +1 -0
  671. package/fesm2015/qius.solutions-parallel-ui-angular-colorpicker.mjs +694 -0
  672. package/fesm2015/qius.solutions-parallel-ui-angular-colorpicker.mjs.map +1 -0
  673. package/fesm2015/qius.solutions-parallel-ui-angular-confirmdialog.mjs +615 -0
  674. package/fesm2015/qius.solutions-parallel-ui-angular-confirmdialog.mjs.map +1 -0
  675. package/fesm2015/qius.solutions-parallel-ui-angular-confirmpopup.mjs +403 -0
  676. package/fesm2015/qius.solutions-parallel-ui-angular-confirmpopup.mjs.map +1 -0
  677. package/fesm2015/qius.solutions-parallel-ui-angular-contextmenu.mjs +702 -0
  678. package/fesm2015/qius.solutions-parallel-ui-angular-contextmenu.mjs.map +1 -0
  679. package/fesm2015/qius.solutions-parallel-ui-angular-dataview.mjs +519 -0
  680. package/fesm2015/qius.solutions-parallel-ui-angular-dataview.mjs.map +1 -0
  681. package/fesm2015/qius.solutions-parallel-ui-angular-defer.mjs +101 -0
  682. package/fesm2015/qius.solutions-parallel-ui-angular-defer.mjs.map +1 -0
  683. package/fesm2015/qius.solutions-parallel-ui-angular-dialog.mjs +842 -0
  684. package/fesm2015/qius.solutions-parallel-ui-angular-dialog.mjs.map +1 -0
  685. package/fesm2015/qius.solutions-parallel-ui-angular-divider.mjs +76 -0
  686. package/fesm2015/qius.solutions-parallel-ui-angular-divider.mjs.map +1 -0
  687. package/fesm2015/qius.solutions-parallel-ui-angular-dock.mjs +217 -0
  688. package/fesm2015/qius.solutions-parallel-ui-angular-dock.mjs.map +1 -0
  689. package/fesm2015/qius.solutions-parallel-ui-angular-dom.mjs +632 -0
  690. package/fesm2015/qius.solutions-parallel-ui-angular-dom.mjs.map +1 -0
  691. package/fesm2015/qius.solutions-parallel-ui-angular-dragdrop.mjs +258 -0
  692. package/fesm2015/qius.solutions-parallel-ui-angular-dragdrop.mjs.map +1 -0
  693. package/fesm2015/qius.solutions-parallel-ui-angular-dropdown.mjs +1379 -0
  694. package/fesm2015/qius.solutions-parallel-ui-angular-dropdown.mjs.map +1 -0
  695. package/fesm2015/qius.solutions-parallel-ui-angular-dynamicdialog.mjs +698 -0
  696. package/fesm2015/qius.solutions-parallel-ui-angular-dynamicdialog.mjs.map +1 -0
  697. package/fesm2015/qius.solutions-parallel-ui-angular-editor.mjs +317 -0
  698. package/fesm2015/qius.solutions-parallel-ui-angular-editor.mjs.map +1 -0
  699. package/fesm2015/qius.solutions-parallel-ui-angular-fieldset.mjs +221 -0
  700. package/fesm2015/qius.solutions-parallel-ui-angular-fieldset.mjs.map +1 -0
  701. package/fesm2015/qius.solutions-parallel-ui-angular-fileupload.mjs +764 -0
  702. package/fesm2015/qius.solutions-parallel-ui-angular-fileupload.mjs.map +1 -0
  703. package/fesm2015/qius.solutions-parallel-ui-angular-focustrap.mjs +60 -0
  704. package/fesm2015/qius.solutions-parallel-ui-angular-focustrap.mjs.map +1 -0
  705. package/fesm2015/qius.solutions-parallel-ui-angular-galleria.mjs +1199 -0
  706. package/fesm2015/qius.solutions-parallel-ui-angular-galleria.mjs.map +1 -0
  707. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubledown.mjs +42 -0
  708. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubledown.mjs.map +1 -0
  709. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleleft.mjs +42 -0
  710. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleleft.mjs.map +1 -0
  711. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleright.mjs +42 -0
  712. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleright.mjs.map +1 -0
  713. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleup.mjs +42 -0
  714. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleup.mjs.map +1 -0
  715. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledown.mjs +38 -0
  716. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledown.mjs.map +1 -0
  717. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleleft.mjs +38 -0
  718. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleleft.mjs.map +1 -0
  719. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleright.mjs +38 -0
  720. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleright.mjs.map +1 -0
  721. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleup.mjs +38 -0
  722. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleup.mjs.map +1 -0
  723. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdown.mjs +56 -0
  724. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdown.mjs.map +1 -0
  725. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdownleft.mjs +38 -0
  726. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdownleft.mjs.map +1 -0
  727. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdownright.mjs +38 -0
  728. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdownright.mjs.map +1 -0
  729. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowleft.mjs +56 -0
  730. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowleft.mjs.map +1 -0
  731. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowright.mjs +42 -0
  732. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowright.mjs.map +1 -0
  733. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowup.mjs +56 -0
  734. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowup.mjs.map +1 -0
  735. package/fesm2015/qius.solutions-parallel-ui-angular-icons-ban.mjs +52 -0
  736. package/fesm2015/qius.solutions-parallel-ui-angular-icons-ban.mjs.map +1 -0
  737. package/fesm2015/qius.solutions-parallel-ui-angular-icons-bars.mjs +42 -0
  738. package/fesm2015/qius.solutions-parallel-ui-angular-icons-bars.mjs.map +1 -0
  739. package/fesm2015/qius.solutions-parallel-ui-angular-icons-calendar.mjs +38 -0
  740. package/fesm2015/qius.solutions-parallel-ui-angular-icons-calendar.mjs.map +1 -0
  741. package/fesm2015/qius.solutions-parallel-ui-angular-icons-caretleft.mjs +38 -0
  742. package/fesm2015/qius.solutions-parallel-ui-angular-icons-caretleft.mjs.map +1 -0
  743. package/fesm2015/qius.solutions-parallel-ui-angular-icons-caretright.mjs +38 -0
  744. package/fesm2015/qius.solutions-parallel-ui-angular-icons-caretright.mjs.map +1 -0
  745. package/fesm2015/qius.solutions-parallel-ui-angular-icons-check.mjs +38 -0
  746. package/fesm2015/qius.solutions-parallel-ui-angular-icons-check.mjs.map +1 -0
  747. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevrondown.mjs +38 -0
  748. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevrondown.mjs.map +1 -0
  749. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronleft.mjs +38 -0
  750. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronleft.mjs.map +1 -0
  751. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronright.mjs +38 -0
  752. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronright.mjs.map +1 -0
  753. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronup.mjs +38 -0
  754. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronup.mjs.map +1 -0
  755. package/fesm2015/qius.solutions-parallel-ui-angular-icons-exclamationtriangle.mjs +68 -0
  756. package/fesm2015/qius.solutions-parallel-ui-angular-icons-exclamationtriangle.mjs.map +1 -0
  757. package/fesm2015/qius.solutions-parallel-ui-angular-icons-eye.mjs +42 -0
  758. package/fesm2015/qius.solutions-parallel-ui-angular-icons-eye.mjs.map +1 -0
  759. package/fesm2015/qius.solutions-parallel-ui-angular-icons-eyeslash.mjs +56 -0
  760. package/fesm2015/qius.solutions-parallel-ui-angular-icons-eyeslash.mjs.map +1 -0
  761. package/fesm2015/qius.solutions-parallel-ui-angular-icons-filter.mjs +52 -0
  762. package/fesm2015/qius.solutions-parallel-ui-angular-icons-filter.mjs.map +1 -0
  763. package/fesm2015/qius.solutions-parallel-ui-angular-icons-filterslash.mjs +56 -0
  764. package/fesm2015/qius.solutions-parallel-ui-angular-icons-filterslash.mjs.map +1 -0
  765. package/fesm2015/qius.solutions-parallel-ui-angular-icons-home.mjs +56 -0
  766. package/fesm2015/qius.solutions-parallel-ui-angular-icons-home.mjs.map +1 -0
  767. package/fesm2015/qius.solutions-parallel-ui-angular-icons-infocircle.mjs +56 -0
  768. package/fesm2015/qius.solutions-parallel-ui-angular-icons-infocircle.mjs.map +1 -0
  769. package/fesm2015/qius.solutions-parallel-ui-angular-icons-minus.mjs +39 -0
  770. package/fesm2015/qius.solutions-parallel-ui-angular-icons-minus.mjs.map +1 -0
  771. package/fesm2015/qius.solutions-parallel-ui-angular-icons-pencil.mjs +52 -0
  772. package/fesm2015/qius.solutions-parallel-ui-angular-icons-pencil.mjs.map +1 -0
  773. package/fesm2015/qius.solutions-parallel-ui-angular-icons-plus.mjs +52 -0
  774. package/fesm2015/qius.solutions-parallel-ui-angular-icons-plus.mjs.map +1 -0
  775. package/fesm2015/qius.solutions-parallel-ui-angular-icons-refresh.mjs +56 -0
  776. package/fesm2015/qius.solutions-parallel-ui-angular-icons-refresh.mjs.map +1 -0
  777. package/fesm2015/qius.solutions-parallel-ui-angular-icons-search.mjs +56 -0
  778. package/fesm2015/qius.solutions-parallel-ui-angular-icons-search.mjs.map +1 -0
  779. package/fesm2015/qius.solutions-parallel-ui-angular-icons-searchminus.mjs +56 -0
  780. package/fesm2015/qius.solutions-parallel-ui-angular-icons-searchminus.mjs.map +1 -0
  781. package/fesm2015/qius.solutions-parallel-ui-angular-icons-searchplus.mjs +56 -0
  782. package/fesm2015/qius.solutions-parallel-ui-angular-icons-searchplus.mjs.map +1 -0
  783. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortalt.mjs +64 -0
  784. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortalt.mjs.map +1 -0
  785. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortamountdown.mjs +92 -0
  786. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortamountdown.mjs.map +1 -0
  787. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortamountupalt.mjs +92 -0
  788. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortamountupalt.mjs.map +1 -0
  789. package/fesm2015/qius.solutions-parallel-ui-angular-icons-spinner.mjs +52 -0
  790. package/fesm2015/qius.solutions-parallel-ui-angular-icons-spinner.mjs.map +1 -0
  791. package/fesm2015/qius.solutions-parallel-ui-angular-icons-star.mjs +52 -0
  792. package/fesm2015/qius.solutions-parallel-ui-angular-icons-star.mjs.map +1 -0
  793. package/fesm2015/qius.solutions-parallel-ui-angular-icons-starfill.mjs +52 -0
  794. package/fesm2015/qius.solutions-parallel-ui-angular-icons-starfill.mjs.map +1 -0
  795. package/fesm2015/qius.solutions-parallel-ui-angular-icons-thlarge.mjs +56 -0
  796. package/fesm2015/qius.solutions-parallel-ui-angular-icons-thlarge.mjs.map +1 -0
  797. package/fesm2015/qius.solutions-parallel-ui-angular-icons-times.mjs +38 -0
  798. package/fesm2015/qius.solutions-parallel-ui-angular-icons-times.mjs.map +1 -0
  799. package/fesm2015/qius.solutions-parallel-ui-angular-icons-timescircle.mjs +56 -0
  800. package/fesm2015/qius.solutions-parallel-ui-angular-icons-timescircle.mjs.map +1 -0
  801. package/fesm2015/qius.solutions-parallel-ui-angular-icons-trash.mjs +56 -0
  802. package/fesm2015/qius.solutions-parallel-ui-angular-icons-trash.mjs.map +1 -0
  803. package/fesm2015/qius.solutions-parallel-ui-angular-icons-undo.mjs +56 -0
  804. package/fesm2015/qius.solutions-parallel-ui-angular-icons-undo.mjs.map +1 -0
  805. package/fesm2015/qius.solutions-parallel-ui-angular-icons-upload.mjs +56 -0
  806. package/fesm2015/qius.solutions-parallel-ui-angular-icons-upload.mjs.map +1 -0
  807. package/fesm2015/qius.solutions-parallel-ui-angular-icons-windowmaximize.mjs +56 -0
  808. package/fesm2015/qius.solutions-parallel-ui-angular-icons-windowmaximize.mjs.map +1 -0
  809. package/fesm2015/qius.solutions-parallel-ui-angular-icons-windowminimize.mjs +56 -0
  810. package/fesm2015/qius.solutions-parallel-ui-angular-icons-windowminimize.mjs.map +1 -0
  811. package/fesm2015/qius.solutions-parallel-ui-angular-image.mjs +330 -0
  812. package/fesm2015/qius.solutions-parallel-ui-angular-image.mjs.map +1 -0
  813. package/fesm2015/qius.solutions-parallel-ui-angular-inplace.mjs +175 -0
  814. package/fesm2015/qius.solutions-parallel-ui-angular-inplace.mjs.map +1 -0
  815. package/fesm2015/qius.solutions-parallel-ui-angular-inputmask.mjs +706 -0
  816. package/fesm2015/qius.solutions-parallel-ui-angular-inputmask.mjs.map +1 -0
  817. package/fesm2015/qius.solutions-parallel-ui-angular-inputnumber.mjs +1198 -0
  818. package/fesm2015/qius.solutions-parallel-ui-angular-inputnumber.mjs.map +1 -0
  819. package/fesm2015/qius.solutions-parallel-ui-angular-inputswitch.mjs +167 -0
  820. package/fesm2015/qius.solutions-parallel-ui-angular-inputswitch.mjs.map +1 -0
  821. package/fesm2015/qius.solutions-parallel-ui-angular-inputtext.mjs +64 -0
  822. package/fesm2015/qius.solutions-parallel-ui-angular-inputtext.mjs.map +1 -0
  823. package/fesm2015/qius.solutions-parallel-ui-angular-inputtextarea.mjs +126 -0
  824. package/fesm2015/qius.solutions-parallel-ui-angular-inputtextarea.mjs.map +1 -0
  825. package/fesm2015/qius.solutions-parallel-ui-angular-keyfilter.mjs +223 -0
  826. package/fesm2015/qius.solutions-parallel-ui-angular-keyfilter.mjs.map +1 -0
  827. package/fesm2015/qius.solutions-parallel-ui-angular-knob.mjs +292 -0
  828. package/fesm2015/qius.solutions-parallel-ui-angular-knob.mjs.map +1 -0
  829. package/fesm2015/qius.solutions-parallel-ui-angular-listbox.mjs +807 -0
  830. package/fesm2015/qius.solutions-parallel-ui-angular-listbox.mjs.map +1 -0
  831. package/fesm2015/qius.solutions-parallel-ui-angular-megamenu.mjs +473 -0
  832. package/fesm2015/qius.solutions-parallel-ui-angular-megamenu.mjs.map +1 -0
  833. package/fesm2015/qius.solutions-parallel-ui-angular-menu.mjs +559 -0
  834. package/fesm2015/qius.solutions-parallel-ui-angular-menu.mjs.map +1 -0
  835. package/fesm2015/qius.solutions-parallel-ui-angular-menubar.mjs +526 -0
  836. package/fesm2015/qius.solutions-parallel-ui-angular-menubar.mjs.map +1 -0
  837. package/fesm2015/qius.solutions-parallel-ui-angular-message.mjs +110 -0
  838. package/fesm2015/qius.solutions-parallel-ui-angular-message.mjs.map +1 -0
  839. package/fesm2015/qius.solutions-parallel-ui-angular-messages.mjs +283 -0
  840. package/fesm2015/qius.solutions-parallel-ui-angular-messages.mjs.map +1 -0
  841. package/fesm2015/qius.solutions-parallel-ui-angular-multiselect.mjs +1421 -0
  842. package/fesm2015/qius.solutions-parallel-ui-angular-multiselect.mjs.map +1 -0
  843. package/fesm2015/qius.solutions-parallel-ui-angular-orderlist.mjs +630 -0
  844. package/fesm2015/qius.solutions-parallel-ui-angular-orderlist.mjs.map +1 -0
  845. package/fesm2015/qius.solutions-parallel-ui-angular-organizationchart.mjs +327 -0
  846. package/fesm2015/qius.solutions-parallel-ui-angular-organizationchart.mjs.map +1 -0
  847. package/fesm2015/qius.solutions-parallel-ui-angular-overlay.mjs +554 -0
  848. package/fesm2015/qius.solutions-parallel-ui-angular-overlay.mjs.map +1 -0
  849. package/fesm2015/qius.solutions-parallel-ui-angular-overlaypanel.mjs +419 -0
  850. package/fesm2015/qius.solutions-parallel-ui-angular-overlaypanel.mjs.map +1 -0
  851. package/fesm2015/qius.solutions-parallel-ui-angular-paginator.mjs +411 -0
  852. package/fesm2015/qius.solutions-parallel-ui-angular-paginator.mjs.map +1 -0
  853. package/fesm2015/qius.solutions-parallel-ui-angular-panel.mjs +303 -0
  854. package/fesm2015/qius.solutions-parallel-ui-angular-panel.mjs.map +1 -0
  855. package/fesm2015/qius.solutions-parallel-ui-angular-panelmenu.mjs +525 -0
  856. package/fesm2015/qius.solutions-parallel-ui-angular-panelmenu.mjs.map +1 -0
  857. package/fesm2015/qius.solutions-parallel-ui-angular-password.mjs +793 -0
  858. package/fesm2015/qius.solutions-parallel-ui-angular-password.mjs.map +1 -0
  859. package/fesm2015/qius.solutions-parallel-ui-angular-picklist.mjs +1277 -0
  860. package/fesm2015/qius.solutions-parallel-ui-angular-picklist.mjs.map +1 -0
  861. package/fesm2015/qius.solutions-parallel-ui-angular-progressbar.mjs +88 -0
  862. package/fesm2015/qius.solutions-parallel-ui-angular-progressbar.mjs.map +1 -0
  863. package/fesm2015/qius.solutions-parallel-ui-angular-progressspinner.mjs +62 -0
  864. package/fesm2015/qius.solutions-parallel-ui-angular-progressspinner.mjs.map +1 -0
  865. package/fesm2015/qius.solutions-parallel-ui-angular-radiobutton.mjs +261 -0
  866. package/fesm2015/qius.solutions-parallel-ui-angular-radiobutton.mjs.map +1 -0
  867. package/fesm2015/qius.solutions-parallel-ui-angular-rating.mjs +206 -0
  868. package/fesm2015/qius.solutions-parallel-ui-angular-rating.mjs.map +1 -0
  869. package/fesm2015/qius.solutions-parallel-ui-angular-ripple.mjs +135 -0
  870. package/fesm2015/qius.solutions-parallel-ui-angular-ripple.mjs.map +1 -0
  871. package/fesm2015/qius.solutions-parallel-ui-angular-scroller.mjs +938 -0
  872. package/fesm2015/qius.solutions-parallel-ui-angular-scroller.mjs.map +1 -0
  873. package/fesm2015/qius.solutions-parallel-ui-angular-scrollpanel.mjs +281 -0
  874. package/fesm2015/qius.solutions-parallel-ui-angular-scrollpanel.mjs.map +1 -0
  875. package/fesm2015/qius.solutions-parallel-ui-angular-scrolltop.mjs +230 -0
  876. package/fesm2015/qius.solutions-parallel-ui-angular-scrolltop.mjs.map +1 -0
  877. package/fesm2015/qius.solutions-parallel-ui-angular-selectbutton.mjs +216 -0
  878. package/fesm2015/qius.solutions-parallel-ui-angular-selectbutton.mjs.map +1 -0
  879. package/fesm2015/qius.solutions-parallel-ui-angular-sidebar.mjs +378 -0
  880. package/fesm2015/qius.solutions-parallel-ui-angular-sidebar.mjs.map +1 -0
  881. package/fesm2015/qius.solutions-parallel-ui-angular-skeleton.mjs +72 -0
  882. package/fesm2015/qius.solutions-parallel-ui-angular-skeleton.mjs.map +1 -0
  883. package/fesm2015/qius.solutions-parallel-ui-angular-slidemenu.mjs +627 -0
  884. package/fesm2015/qius.solutions-parallel-ui-angular-slidemenu.mjs.map +1 -0
  885. package/fesm2015/qius.solutions-parallel-ui-angular-slider.mjs +597 -0
  886. package/fesm2015/qius.solutions-parallel-ui-angular-slider.mjs.map +1 -0
  887. package/fesm2015/qius.solutions-parallel-ui-angular-speeddial.mjs +408 -0
  888. package/fesm2015/qius.solutions-parallel-ui-angular-speeddial.mjs.map +1 -0
  889. package/fesm2015/qius.solutions-parallel-ui-angular-spinner.mjs +414 -0
  890. package/fesm2015/qius.solutions-parallel-ui-angular-spinner.mjs.map +1 -0
  891. package/fesm2015/qius.solutions-parallel-ui-angular-splitbutton.mjs +148 -0
  892. package/fesm2015/qius.solutions-parallel-ui-angular-splitbutton.mjs.map +1 -0
  893. package/fesm2015/qius.solutions-parallel-ui-angular-splitter.mjs +364 -0
  894. package/fesm2015/qius.solutions-parallel-ui-angular-splitter.mjs.map +1 -0
  895. package/fesm2015/qius.solutions-parallel-ui-angular-steps.mjs +212 -0
  896. package/fesm2015/qius.solutions-parallel-ui-angular-steps.mjs.map +1 -0
  897. package/fesm2015/qius.solutions-parallel-ui-angular-styleclass.mjs +227 -0
  898. package/fesm2015/qius.solutions-parallel-ui-angular-styleclass.mjs.map +1 -0
  899. package/fesm2015/qius.solutions-parallel-ui-angular-table.mjs +5329 -0
  900. package/fesm2015/qius.solutions-parallel-ui-angular-table.mjs.map +1 -0
  901. package/fesm2015/qius.solutions-parallel-ui-angular-tabmenu.mjs +385 -0
  902. package/fesm2015/qius.solutions-parallel-ui-angular-tabmenu.mjs.map +1 -0
  903. package/fesm2015/qius.solutions-parallel-ui-angular-tabview.mjs +539 -0
  904. package/fesm2015/qius.solutions-parallel-ui-angular-tabview.mjs.map +1 -0
  905. package/fesm2015/qius.solutions-parallel-ui-angular-tag.mjs +92 -0
  906. package/fesm2015/qius.solutions-parallel-ui-angular-tag.mjs.map +1 -0
  907. package/fesm2015/qius.solutions-parallel-ui-angular-terminal.mjs +143 -0
  908. package/fesm2015/qius.solutions-parallel-ui-angular-terminal.mjs.map +1 -0
  909. package/fesm2015/qius.solutions-parallel-ui-angular-tieredmenu.mjs +674 -0
  910. package/fesm2015/qius.solutions-parallel-ui-angular-tieredmenu.mjs.map +1 -0
  911. package/fesm2015/qius.solutions-parallel-ui-angular-timeline.mjs +138 -0
  912. package/fesm2015/qius.solutions-parallel-ui-angular-timeline.mjs.map +1 -0
  913. package/fesm2015/qius.solutions-parallel-ui-angular-toast.mjs +451 -0
  914. package/fesm2015/qius.solutions-parallel-ui-angular-toast.mjs.map +1 -0
  915. package/fesm2015/qius.solutions-parallel-ui-angular-togglebutton.mjs +140 -0
  916. package/fesm2015/qius.solutions-parallel-ui-angular-togglebutton.mjs.map +1 -0
  917. package/fesm2015/qius.solutions-parallel-ui-angular-toolbar.mjs +90 -0
  918. package/fesm2015/qius.solutions-parallel-ui-angular-toolbar.mjs.map +1 -0
  919. package/fesm2015/qius.solutions-parallel-ui-angular-tooltip.mjs +556 -0
  920. package/fesm2015/qius.solutions-parallel-ui-angular-tooltip.mjs.map +1 -0
  921. package/fesm2015/qius.solutions-parallel-ui-angular-tree.mjs +1596 -0
  922. package/fesm2015/qius.solutions-parallel-ui-angular-tree.mjs.map +1 -0
  923. package/fesm2015/qius.solutions-parallel-ui-angular-treeselect.mjs +791 -0
  924. package/fesm2015/qius.solutions-parallel-ui-angular-treeselect.mjs.map +1 -0
  925. package/fesm2015/qius.solutions-parallel-ui-angular-treetable.mjs +3228 -0
  926. package/fesm2015/qius.solutions-parallel-ui-angular-treetable.mjs.map +1 -0
  927. package/fesm2015/qius.solutions-parallel-ui-angular-tristatecheckbox.mjs +230 -0
  928. package/fesm2015/qius.solutions-parallel-ui-angular-tristatecheckbox.mjs.map +1 -0
  929. package/fesm2015/qius.solutions-parallel-ui-angular-utils.mjs +246 -0
  930. package/fesm2015/qius.solutions-parallel-ui-angular-utils.mjs.map +1 -0
  931. package/fesm2015/qius.solutions-parallel-ui-angular-virtualscroller.mjs +157 -0
  932. package/fesm2015/qius.solutions-parallel-ui-angular-virtualscroller.mjs.map +1 -0
  933. package/fesm2015/qius.solutions-parallel-ui-angular.mjs +6 -0
  934. package/fesm2015/qius.solutions-parallel-ui-angular.mjs.map +1 -0
  935. package/fesm2020/qius.solutions-parallel-ui-angular-accordion.mjs +403 -0
  936. package/fesm2020/qius.solutions-parallel-ui-angular-accordion.mjs.map +1 -0
  937. package/fesm2020/qius.solutions-parallel-ui-angular-animate.mjs +86 -0
  938. package/fesm2020/qius.solutions-parallel-ui-angular-animate.mjs.map +1 -0
  939. package/fesm2020/qius.solutions-parallel-ui-angular-api.mjs +817 -0
  940. package/fesm2020/qius.solutions-parallel-ui-angular-api.mjs.map +1 -0
  941. package/fesm2020/qius.solutions-parallel-ui-angular-autocomplete.mjs +1151 -0
  942. package/fesm2020/qius.solutions-parallel-ui-angular-autocomplete.mjs.map +1 -0
  943. package/fesm2020/qius.solutions-parallel-ui-angular-autofocus.mjs +58 -0
  944. package/fesm2020/qius.solutions-parallel-ui-angular-autofocus.mjs.map +1 -0
  945. package/fesm2020/qius.solutions-parallel-ui-angular-avatar.mjs +82 -0
  946. package/fesm2020/qius.solutions-parallel-ui-angular-avatar.mjs.map +1 -0
  947. package/fesm2020/qius.solutions-parallel-ui-angular-avatargroup.mjs +47 -0
  948. package/fesm2020/qius.solutions-parallel-ui-angular-avatargroup.mjs.map +1 -0
  949. package/fesm2020/qius.solutions-parallel-ui-angular-badge.mjs +189 -0
  950. package/fesm2020/qius.solutions-parallel-ui-angular-badge.mjs.map +1 -0
  951. package/fesm2020/qius.solutions-parallel-ui-angular-baseicon.mjs +48 -0
  952. package/fesm2020/qius.solutions-parallel-ui-angular-baseicon.mjs.map +1 -0
  953. package/fesm2020/qius.solutions-parallel-ui-angular-blockui.mjs +147 -0
  954. package/fesm2020/qius.solutions-parallel-ui-angular-blockui.mjs.map +1 -0
  955. package/fesm2020/qius.solutions-parallel-ui-angular-breadcrumb.mjs +303 -0
  956. package/fesm2020/qius.solutions-parallel-ui-angular-breadcrumb.mjs.map +1 -0
  957. package/fesm2020/qius.solutions-parallel-ui-angular-button.mjs +369 -0
  958. package/fesm2020/qius.solutions-parallel-ui-angular-button.mjs.map +1 -0
  959. package/fesm2020/qius.solutions-parallel-ui-angular-calendar.mjs +3130 -0
  960. package/fesm2020/qius.solutions-parallel-ui-angular-calendar.mjs.map +1 -0
  961. package/fesm2020/qius.solutions-parallel-ui-angular-card.mjs +133 -0
  962. package/fesm2020/qius.solutions-parallel-ui-angular-card.mjs.map +1 -0
  963. package/fesm2020/qius.solutions-parallel-ui-angular-carousel.mjs +703 -0
  964. package/fesm2020/qius.solutions-parallel-ui-angular-carousel.mjs.map +1 -0
  965. package/fesm2020/qius.solutions-parallel-ui-angular-cascadeselect.mjs +773 -0
  966. package/fesm2020/qius.solutions-parallel-ui-angular-cascadeselect.mjs.map +1 -0
  967. package/fesm2020/qius.solutions-parallel-ui-angular-chart.mjs +149 -0
  968. package/fesm2020/qius.solutions-parallel-ui-angular-chart.mjs.map +1 -0
  969. package/fesm2020/qius.solutions-parallel-ui-angular-checkbox.mjs +254 -0
  970. package/fesm2020/qius.solutions-parallel-ui-angular-checkbox.mjs.map +1 -0
  971. package/fesm2020/qius.solutions-parallel-ui-angular-chip.mjs +120 -0
  972. package/fesm2020/qius.solutions-parallel-ui-angular-chip.mjs.map +1 -0
  973. package/fesm2020/qius.solutions-parallel-ui-angular-chips.mjs +382 -0
  974. package/fesm2020/qius.solutions-parallel-ui-angular-chips.mjs.map +1 -0
  975. package/fesm2020/qius.solutions-parallel-ui-angular-colorpicker.mjs +692 -0
  976. package/fesm2020/qius.solutions-parallel-ui-angular-colorpicker.mjs.map +1 -0
  977. package/fesm2020/qius.solutions-parallel-ui-angular-confirmdialog.mjs +613 -0
  978. package/fesm2020/qius.solutions-parallel-ui-angular-confirmdialog.mjs.map +1 -0
  979. package/fesm2020/qius.solutions-parallel-ui-angular-confirmpopup.mjs +401 -0
  980. package/fesm2020/qius.solutions-parallel-ui-angular-confirmpopup.mjs.map +1 -0
  981. package/fesm2020/qius.solutions-parallel-ui-angular-contextmenu.mjs +698 -0
  982. package/fesm2020/qius.solutions-parallel-ui-angular-contextmenu.mjs.map +1 -0
  983. package/fesm2020/qius.solutions-parallel-ui-angular-dataview.mjs +519 -0
  984. package/fesm2020/qius.solutions-parallel-ui-angular-dataview.mjs.map +1 -0
  985. package/fesm2020/qius.solutions-parallel-ui-angular-defer.mjs +99 -0
  986. package/fesm2020/qius.solutions-parallel-ui-angular-defer.mjs.map +1 -0
  987. package/fesm2020/qius.solutions-parallel-ui-angular-dialog.mjs +840 -0
  988. package/fesm2020/qius.solutions-parallel-ui-angular-dialog.mjs.map +1 -0
  989. package/fesm2020/qius.solutions-parallel-ui-angular-divider.mjs +76 -0
  990. package/fesm2020/qius.solutions-parallel-ui-angular-divider.mjs.map +1 -0
  991. package/fesm2020/qius.solutions-parallel-ui-angular-dock.mjs +217 -0
  992. package/fesm2020/qius.solutions-parallel-ui-angular-dock.mjs.map +1 -0
  993. package/fesm2020/qius.solutions-parallel-ui-angular-dom.mjs +632 -0
  994. package/fesm2020/qius.solutions-parallel-ui-angular-dom.mjs.map +1 -0
  995. package/fesm2020/qius.solutions-parallel-ui-angular-dragdrop.mjs +258 -0
  996. package/fesm2020/qius.solutions-parallel-ui-angular-dragdrop.mjs.map +1 -0
  997. package/fesm2020/qius.solutions-parallel-ui-angular-dropdown.mjs +1379 -0
  998. package/fesm2020/qius.solutions-parallel-ui-angular-dropdown.mjs.map +1 -0
  999. package/fesm2020/qius.solutions-parallel-ui-angular-dynamicdialog.mjs +693 -0
  1000. package/fesm2020/qius.solutions-parallel-ui-angular-dynamicdialog.mjs.map +1 -0
  1001. package/fesm2020/qius.solutions-parallel-ui-angular-editor.mjs +316 -0
  1002. package/fesm2020/qius.solutions-parallel-ui-angular-editor.mjs.map +1 -0
  1003. package/fesm2020/qius.solutions-parallel-ui-angular-fieldset.mjs +221 -0
  1004. package/fesm2020/qius.solutions-parallel-ui-angular-fieldset.mjs.map +1 -0
  1005. package/fesm2020/qius.solutions-parallel-ui-angular-fileupload.mjs +761 -0
  1006. package/fesm2020/qius.solutions-parallel-ui-angular-fileupload.mjs.map +1 -0
  1007. package/fesm2020/qius.solutions-parallel-ui-angular-focustrap.mjs +59 -0
  1008. package/fesm2020/qius.solutions-parallel-ui-angular-focustrap.mjs.map +1 -0
  1009. package/fesm2020/qius.solutions-parallel-ui-angular-galleria.mjs +1194 -0
  1010. package/fesm2020/qius.solutions-parallel-ui-angular-galleria.mjs.map +1 -0
  1011. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubledown.mjs +42 -0
  1012. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubledown.mjs.map +1 -0
  1013. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleleft.mjs +42 -0
  1014. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleleft.mjs.map +1 -0
  1015. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleright.mjs +42 -0
  1016. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleright.mjs.map +1 -0
  1017. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleup.mjs +42 -0
  1018. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleup.mjs.map +1 -0
  1019. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledown.mjs +38 -0
  1020. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledown.mjs.map +1 -0
  1021. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleleft.mjs +38 -0
  1022. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleleft.mjs.map +1 -0
  1023. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleright.mjs +38 -0
  1024. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleright.mjs.map +1 -0
  1025. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleup.mjs +38 -0
  1026. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleup.mjs.map +1 -0
  1027. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdown.mjs +56 -0
  1028. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdown.mjs.map +1 -0
  1029. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdownleft.mjs +38 -0
  1030. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdownleft.mjs.map +1 -0
  1031. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdownright.mjs +38 -0
  1032. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdownright.mjs.map +1 -0
  1033. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowleft.mjs +56 -0
  1034. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowleft.mjs.map +1 -0
  1035. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowright.mjs +42 -0
  1036. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowright.mjs.map +1 -0
  1037. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowup.mjs +56 -0
  1038. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowup.mjs.map +1 -0
  1039. package/fesm2020/qius.solutions-parallel-ui-angular-icons-ban.mjs +52 -0
  1040. package/fesm2020/qius.solutions-parallel-ui-angular-icons-ban.mjs.map +1 -0
  1041. package/fesm2020/qius.solutions-parallel-ui-angular-icons-bars.mjs +42 -0
  1042. package/fesm2020/qius.solutions-parallel-ui-angular-icons-bars.mjs.map +1 -0
  1043. package/fesm2020/qius.solutions-parallel-ui-angular-icons-calendar.mjs +38 -0
  1044. package/fesm2020/qius.solutions-parallel-ui-angular-icons-calendar.mjs.map +1 -0
  1045. package/fesm2020/qius.solutions-parallel-ui-angular-icons-caretleft.mjs +38 -0
  1046. package/fesm2020/qius.solutions-parallel-ui-angular-icons-caretleft.mjs.map +1 -0
  1047. package/fesm2020/qius.solutions-parallel-ui-angular-icons-caretright.mjs +38 -0
  1048. package/fesm2020/qius.solutions-parallel-ui-angular-icons-caretright.mjs.map +1 -0
  1049. package/fesm2020/qius.solutions-parallel-ui-angular-icons-check.mjs +38 -0
  1050. package/fesm2020/qius.solutions-parallel-ui-angular-icons-check.mjs.map +1 -0
  1051. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevrondown.mjs +38 -0
  1052. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevrondown.mjs.map +1 -0
  1053. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronleft.mjs +38 -0
  1054. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronleft.mjs.map +1 -0
  1055. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronright.mjs +38 -0
  1056. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronright.mjs.map +1 -0
  1057. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronup.mjs +38 -0
  1058. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronup.mjs.map +1 -0
  1059. package/fesm2020/qius.solutions-parallel-ui-angular-icons-exclamationtriangle.mjs +68 -0
  1060. package/fesm2020/qius.solutions-parallel-ui-angular-icons-exclamationtriangle.mjs.map +1 -0
  1061. package/fesm2020/qius.solutions-parallel-ui-angular-icons-eye.mjs +42 -0
  1062. package/fesm2020/qius.solutions-parallel-ui-angular-icons-eye.mjs.map +1 -0
  1063. package/fesm2020/qius.solutions-parallel-ui-angular-icons-eyeslash.mjs +56 -0
  1064. package/fesm2020/qius.solutions-parallel-ui-angular-icons-eyeslash.mjs.map +1 -0
  1065. package/fesm2020/qius.solutions-parallel-ui-angular-icons-filter.mjs +52 -0
  1066. package/fesm2020/qius.solutions-parallel-ui-angular-icons-filter.mjs.map +1 -0
  1067. package/fesm2020/qius.solutions-parallel-ui-angular-icons-filterslash.mjs +56 -0
  1068. package/fesm2020/qius.solutions-parallel-ui-angular-icons-filterslash.mjs.map +1 -0
  1069. package/fesm2020/qius.solutions-parallel-ui-angular-icons-home.mjs +56 -0
  1070. package/fesm2020/qius.solutions-parallel-ui-angular-icons-home.mjs.map +1 -0
  1071. package/fesm2020/qius.solutions-parallel-ui-angular-icons-infocircle.mjs +56 -0
  1072. package/fesm2020/qius.solutions-parallel-ui-angular-icons-infocircle.mjs.map +1 -0
  1073. package/fesm2020/qius.solutions-parallel-ui-angular-icons-minus.mjs +39 -0
  1074. package/fesm2020/qius.solutions-parallel-ui-angular-icons-minus.mjs.map +1 -0
  1075. package/fesm2020/qius.solutions-parallel-ui-angular-icons-pencil.mjs +52 -0
  1076. package/fesm2020/qius.solutions-parallel-ui-angular-icons-pencil.mjs.map +1 -0
  1077. package/fesm2020/qius.solutions-parallel-ui-angular-icons-plus.mjs +52 -0
  1078. package/fesm2020/qius.solutions-parallel-ui-angular-icons-plus.mjs.map +1 -0
  1079. package/fesm2020/qius.solutions-parallel-ui-angular-icons-refresh.mjs +56 -0
  1080. package/fesm2020/qius.solutions-parallel-ui-angular-icons-refresh.mjs.map +1 -0
  1081. package/fesm2020/qius.solutions-parallel-ui-angular-icons-search.mjs +56 -0
  1082. package/fesm2020/qius.solutions-parallel-ui-angular-icons-search.mjs.map +1 -0
  1083. package/fesm2020/qius.solutions-parallel-ui-angular-icons-searchminus.mjs +56 -0
  1084. package/fesm2020/qius.solutions-parallel-ui-angular-icons-searchminus.mjs.map +1 -0
  1085. package/fesm2020/qius.solutions-parallel-ui-angular-icons-searchplus.mjs +56 -0
  1086. package/fesm2020/qius.solutions-parallel-ui-angular-icons-searchplus.mjs.map +1 -0
  1087. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortalt.mjs +64 -0
  1088. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortalt.mjs.map +1 -0
  1089. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortamountdown.mjs +92 -0
  1090. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortamountdown.mjs.map +1 -0
  1091. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortamountupalt.mjs +92 -0
  1092. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortamountupalt.mjs.map +1 -0
  1093. package/fesm2020/qius.solutions-parallel-ui-angular-icons-spinner.mjs +52 -0
  1094. package/fesm2020/qius.solutions-parallel-ui-angular-icons-spinner.mjs.map +1 -0
  1095. package/fesm2020/qius.solutions-parallel-ui-angular-icons-star.mjs +52 -0
  1096. package/fesm2020/qius.solutions-parallel-ui-angular-icons-star.mjs.map +1 -0
  1097. package/fesm2020/qius.solutions-parallel-ui-angular-icons-starfill.mjs +52 -0
  1098. package/fesm2020/qius.solutions-parallel-ui-angular-icons-starfill.mjs.map +1 -0
  1099. package/fesm2020/qius.solutions-parallel-ui-angular-icons-thlarge.mjs +56 -0
  1100. package/fesm2020/qius.solutions-parallel-ui-angular-icons-thlarge.mjs.map +1 -0
  1101. package/fesm2020/qius.solutions-parallel-ui-angular-icons-times.mjs +38 -0
  1102. package/fesm2020/qius.solutions-parallel-ui-angular-icons-times.mjs.map +1 -0
  1103. package/fesm2020/qius.solutions-parallel-ui-angular-icons-timescircle.mjs +56 -0
  1104. package/fesm2020/qius.solutions-parallel-ui-angular-icons-timescircle.mjs.map +1 -0
  1105. package/fesm2020/qius.solutions-parallel-ui-angular-icons-trash.mjs +56 -0
  1106. package/fesm2020/qius.solutions-parallel-ui-angular-icons-trash.mjs.map +1 -0
  1107. package/fesm2020/qius.solutions-parallel-ui-angular-icons-undo.mjs +56 -0
  1108. package/fesm2020/qius.solutions-parallel-ui-angular-icons-undo.mjs.map +1 -0
  1109. package/fesm2020/qius.solutions-parallel-ui-angular-icons-upload.mjs +56 -0
  1110. package/fesm2020/qius.solutions-parallel-ui-angular-icons-upload.mjs.map +1 -0
  1111. package/fesm2020/qius.solutions-parallel-ui-angular-icons-windowmaximize.mjs +56 -0
  1112. package/fesm2020/qius.solutions-parallel-ui-angular-icons-windowmaximize.mjs.map +1 -0
  1113. package/fesm2020/qius.solutions-parallel-ui-angular-icons-windowminimize.mjs +56 -0
  1114. package/fesm2020/qius.solutions-parallel-ui-angular-icons-windowminimize.mjs.map +1 -0
  1115. package/fesm2020/qius.solutions-parallel-ui-angular-image.mjs +328 -0
  1116. package/fesm2020/qius.solutions-parallel-ui-angular-image.mjs.map +1 -0
  1117. package/fesm2020/qius.solutions-parallel-ui-angular-inplace.mjs +175 -0
  1118. package/fesm2020/qius.solutions-parallel-ui-angular-inplace.mjs.map +1 -0
  1119. package/fesm2020/qius.solutions-parallel-ui-angular-inputmask.mjs +704 -0
  1120. package/fesm2020/qius.solutions-parallel-ui-angular-inputmask.mjs.map +1 -0
  1121. package/fesm2020/qius.solutions-parallel-ui-angular-inputnumber.mjs +1196 -0
  1122. package/fesm2020/qius.solutions-parallel-ui-angular-inputnumber.mjs.map +1 -0
  1123. package/fesm2020/qius.solutions-parallel-ui-angular-inputswitch.mjs +167 -0
  1124. package/fesm2020/qius.solutions-parallel-ui-angular-inputswitch.mjs.map +1 -0
  1125. package/fesm2020/qius.solutions-parallel-ui-angular-inputtext.mjs +62 -0
  1126. package/fesm2020/qius.solutions-parallel-ui-angular-inputtext.mjs.map +1 -0
  1127. package/fesm2020/qius.solutions-parallel-ui-angular-inputtextarea.mjs +124 -0
  1128. package/fesm2020/qius.solutions-parallel-ui-angular-inputtextarea.mjs.map +1 -0
  1129. package/fesm2020/qius.solutions-parallel-ui-angular-keyfilter.mjs +221 -0
  1130. package/fesm2020/qius.solutions-parallel-ui-angular-keyfilter.mjs.map +1 -0
  1131. package/fesm2020/qius.solutions-parallel-ui-angular-knob.mjs +290 -0
  1132. package/fesm2020/qius.solutions-parallel-ui-angular-knob.mjs.map +1 -0
  1133. package/fesm2020/qius.solutions-parallel-ui-angular-listbox.mjs +807 -0
  1134. package/fesm2020/qius.solutions-parallel-ui-angular-listbox.mjs.map +1 -0
  1135. package/fesm2020/qius.solutions-parallel-ui-angular-megamenu.mjs +471 -0
  1136. package/fesm2020/qius.solutions-parallel-ui-angular-megamenu.mjs.map +1 -0
  1137. package/fesm2020/qius.solutions-parallel-ui-angular-menu.mjs +555 -0
  1138. package/fesm2020/qius.solutions-parallel-ui-angular-menu.mjs.map +1 -0
  1139. package/fesm2020/qius.solutions-parallel-ui-angular-menubar.mjs +522 -0
  1140. package/fesm2020/qius.solutions-parallel-ui-angular-menubar.mjs.map +1 -0
  1141. package/fesm2020/qius.solutions-parallel-ui-angular-message.mjs +110 -0
  1142. package/fesm2020/qius.solutions-parallel-ui-angular-message.mjs.map +1 -0
  1143. package/fesm2020/qius.solutions-parallel-ui-angular-messages.mjs +279 -0
  1144. package/fesm2020/qius.solutions-parallel-ui-angular-messages.mjs.map +1 -0
  1145. package/fesm2020/qius.solutions-parallel-ui-angular-multiselect.mjs +1418 -0
  1146. package/fesm2020/qius.solutions-parallel-ui-angular-multiselect.mjs.map +1 -0
  1147. package/fesm2020/qius.solutions-parallel-ui-angular-orderlist.mjs +628 -0
  1148. package/fesm2020/qius.solutions-parallel-ui-angular-orderlist.mjs.map +1 -0
  1149. package/fesm2020/qius.solutions-parallel-ui-angular-organizationchart.mjs +325 -0
  1150. package/fesm2020/qius.solutions-parallel-ui-angular-organizationchart.mjs.map +1 -0
  1151. package/fesm2020/qius.solutions-parallel-ui-angular-overlay.mjs +527 -0
  1152. package/fesm2020/qius.solutions-parallel-ui-angular-overlay.mjs.map +1 -0
  1153. package/fesm2020/qius.solutions-parallel-ui-angular-overlaypanel.mjs +417 -0
  1154. package/fesm2020/qius.solutions-parallel-ui-angular-overlaypanel.mjs.map +1 -0
  1155. package/fesm2020/qius.solutions-parallel-ui-angular-paginator.mjs +411 -0
  1156. package/fesm2020/qius.solutions-parallel-ui-angular-paginator.mjs.map +1 -0
  1157. package/fesm2020/qius.solutions-parallel-ui-angular-panel.mjs +303 -0
  1158. package/fesm2020/qius.solutions-parallel-ui-angular-panel.mjs.map +1 -0
  1159. package/fesm2020/qius.solutions-parallel-ui-angular-panelmenu.mjs +525 -0
  1160. package/fesm2020/qius.solutions-parallel-ui-angular-panelmenu.mjs.map +1 -0
  1161. package/fesm2020/qius.solutions-parallel-ui-angular-password.mjs +789 -0
  1162. package/fesm2020/qius.solutions-parallel-ui-angular-password.mjs.map +1 -0
  1163. package/fesm2020/qius.solutions-parallel-ui-angular-picklist.mjs +1275 -0
  1164. package/fesm2020/qius.solutions-parallel-ui-angular-picklist.mjs.map +1 -0
  1165. package/fesm2020/qius.solutions-parallel-ui-angular-progressbar.mjs +88 -0
  1166. package/fesm2020/qius.solutions-parallel-ui-angular-progressbar.mjs.map +1 -0
  1167. package/fesm2020/qius.solutions-parallel-ui-angular-progressspinner.mjs +62 -0
  1168. package/fesm2020/qius.solutions-parallel-ui-angular-progressspinner.mjs.map +1 -0
  1169. package/fesm2020/qius.solutions-parallel-ui-angular-radiobutton.mjs +261 -0
  1170. package/fesm2020/qius.solutions-parallel-ui-angular-radiobutton.mjs.map +1 -0
  1171. package/fesm2020/qius.solutions-parallel-ui-angular-rating.mjs +206 -0
  1172. package/fesm2020/qius.solutions-parallel-ui-angular-rating.mjs.map +1 -0
  1173. package/fesm2020/qius.solutions-parallel-ui-angular-ripple.mjs +133 -0
  1174. package/fesm2020/qius.solutions-parallel-ui-angular-ripple.mjs.map +1 -0
  1175. package/fesm2020/qius.solutions-parallel-ui-angular-scroller.mjs +935 -0
  1176. package/fesm2020/qius.solutions-parallel-ui-angular-scroller.mjs.map +1 -0
  1177. package/fesm2020/qius.solutions-parallel-ui-angular-scrollpanel.mjs +279 -0
  1178. package/fesm2020/qius.solutions-parallel-ui-angular-scrollpanel.mjs.map +1 -0
  1179. package/fesm2020/qius.solutions-parallel-ui-angular-scrolltop.mjs +228 -0
  1180. package/fesm2020/qius.solutions-parallel-ui-angular-scrolltop.mjs.map +1 -0
  1181. package/fesm2020/qius.solutions-parallel-ui-angular-selectbutton.mjs +216 -0
  1182. package/fesm2020/qius.solutions-parallel-ui-angular-selectbutton.mjs.map +1 -0
  1183. package/fesm2020/qius.solutions-parallel-ui-angular-sidebar.mjs +376 -0
  1184. package/fesm2020/qius.solutions-parallel-ui-angular-sidebar.mjs.map +1 -0
  1185. package/fesm2020/qius.solutions-parallel-ui-angular-skeleton.mjs +72 -0
  1186. package/fesm2020/qius.solutions-parallel-ui-angular-skeleton.mjs.map +1 -0
  1187. package/fesm2020/qius.solutions-parallel-ui-angular-slidemenu.mjs +623 -0
  1188. package/fesm2020/qius.solutions-parallel-ui-angular-slidemenu.mjs.map +1 -0
  1189. package/fesm2020/qius.solutions-parallel-ui-angular-slider.mjs +595 -0
  1190. package/fesm2020/qius.solutions-parallel-ui-angular-slider.mjs.map +1 -0
  1191. package/fesm2020/qius.solutions-parallel-ui-angular-speeddial.mjs +409 -0
  1192. package/fesm2020/qius.solutions-parallel-ui-angular-speeddial.mjs.map +1 -0
  1193. package/fesm2020/qius.solutions-parallel-ui-angular-spinner.mjs +414 -0
  1194. package/fesm2020/qius.solutions-parallel-ui-angular-spinner.mjs.map +1 -0
  1195. package/fesm2020/qius.solutions-parallel-ui-angular-splitbutton.mjs +148 -0
  1196. package/fesm2020/qius.solutions-parallel-ui-angular-splitbutton.mjs.map +1 -0
  1197. package/fesm2020/qius.solutions-parallel-ui-angular-splitter.mjs +362 -0
  1198. package/fesm2020/qius.solutions-parallel-ui-angular-splitter.mjs.map +1 -0
  1199. package/fesm2020/qius.solutions-parallel-ui-angular-steps.mjs +212 -0
  1200. package/fesm2020/qius.solutions-parallel-ui-angular-steps.mjs.map +1 -0
  1201. package/fesm2020/qius.solutions-parallel-ui-angular-styleclass.mjs +227 -0
  1202. package/fesm2020/qius.solutions-parallel-ui-angular-styleclass.mjs.map +1 -0
  1203. package/fesm2020/qius.solutions-parallel-ui-angular-table.mjs +5321 -0
  1204. package/fesm2020/qius.solutions-parallel-ui-angular-table.mjs.map +1 -0
  1205. package/fesm2020/qius.solutions-parallel-ui-angular-tabmenu.mjs +381 -0
  1206. package/fesm2020/qius.solutions-parallel-ui-angular-tabmenu.mjs.map +1 -0
  1207. package/fesm2020/qius.solutions-parallel-ui-angular-tabview.mjs +534 -0
  1208. package/fesm2020/qius.solutions-parallel-ui-angular-tabview.mjs.map +1 -0
  1209. package/fesm2020/qius.solutions-parallel-ui-angular-tag.mjs +92 -0
  1210. package/fesm2020/qius.solutions-parallel-ui-angular-tag.mjs.map +1 -0
  1211. package/fesm2020/qius.solutions-parallel-ui-angular-terminal.mjs +143 -0
  1212. package/fesm2020/qius.solutions-parallel-ui-angular-terminal.mjs.map +1 -0
  1213. package/fesm2020/qius.solutions-parallel-ui-angular-tieredmenu.mjs +670 -0
  1214. package/fesm2020/qius.solutions-parallel-ui-angular-tieredmenu.mjs.map +1 -0
  1215. package/fesm2020/qius.solutions-parallel-ui-angular-timeline.mjs +138 -0
  1216. package/fesm2020/qius.solutions-parallel-ui-angular-timeline.mjs.map +1 -0
  1217. package/fesm2020/qius.solutions-parallel-ui-angular-toast.mjs +449 -0
  1218. package/fesm2020/qius.solutions-parallel-ui-angular-toast.mjs.map +1 -0
  1219. package/fesm2020/qius.solutions-parallel-ui-angular-togglebutton.mjs +140 -0
  1220. package/fesm2020/qius.solutions-parallel-ui-angular-togglebutton.mjs.map +1 -0
  1221. package/fesm2020/qius.solutions-parallel-ui-angular-toolbar.mjs +90 -0
  1222. package/fesm2020/qius.solutions-parallel-ui-angular-toolbar.mjs.map +1 -0
  1223. package/fesm2020/qius.solutions-parallel-ui-angular-tooltip.mjs +553 -0
  1224. package/fesm2020/qius.solutions-parallel-ui-angular-tooltip.mjs.map +1 -0
  1225. package/fesm2020/qius.solutions-parallel-ui-angular-tree.mjs +1591 -0
  1226. package/fesm2020/qius.solutions-parallel-ui-angular-tree.mjs.map +1 -0
  1227. package/fesm2020/qius.solutions-parallel-ui-angular-treeselect.mjs +785 -0
  1228. package/fesm2020/qius.solutions-parallel-ui-angular-treeselect.mjs.map +1 -0
  1229. package/fesm2020/qius.solutions-parallel-ui-angular-treetable.mjs +3224 -0
  1230. package/fesm2020/qius.solutions-parallel-ui-angular-treetable.mjs.map +1 -0
  1231. package/fesm2020/qius.solutions-parallel-ui-angular-tristatecheckbox.mjs +230 -0
  1232. package/fesm2020/qius.solutions-parallel-ui-angular-tristatecheckbox.mjs.map +1 -0
  1233. package/fesm2020/qius.solutions-parallel-ui-angular-utils.mjs +246 -0
  1234. package/fesm2020/qius.solutions-parallel-ui-angular-utils.mjs.map +1 -0
  1235. package/fesm2020/qius.solutions-parallel-ui-angular-virtualscroller.mjs +160 -0
  1236. package/fesm2020/qius.solutions-parallel-ui-angular-virtualscroller.mjs.map +1 -0
  1237. package/fesm2020/qius.solutions-parallel-ui-angular.mjs +6 -0
  1238. package/fesm2020/qius.solutions-parallel-ui-angular.mjs.map +1 -0
  1239. package/fieldset/fieldset.d.ts +41 -0
  1240. package/fieldset/index.d.ts +5 -0
  1241. package/fieldset/public_api.d.ts +1 -0
  1242. package/fileupload/fileupload.d.ts +139 -0
  1243. package/fileupload/index.d.ts +5 -0
  1244. package/fileupload/public_api.d.ts +1 -0
  1245. package/focustrap/focustrap.d.ts +16 -0
  1246. package/focustrap/index.d.ts +5 -0
  1247. package/focustrap/public_api.d.ts +1 -0
  1248. package/galleria/galleria.d.ts +218 -0
  1249. package/galleria/index.d.ts +5 -0
  1250. package/galleria/public_api.d.ts +1 -0
  1251. package/icons/angledoubledown/angledoubledown.d.ts +6 -0
  1252. package/icons/angledoubledown/index.d.ts +5 -0
  1253. package/icons/angledoubledown/public_api.d.ts +1 -0
  1254. package/icons/angledoubleleft/angledoubleleft.d.ts +6 -0
  1255. package/icons/angledoubleleft/index.d.ts +5 -0
  1256. package/icons/angledoubleleft/public_api.d.ts +1 -0
  1257. package/icons/angledoubleright/angledoubleright.d.ts +6 -0
  1258. package/icons/angledoubleright/index.d.ts +5 -0
  1259. package/icons/angledoubleright/public_api.d.ts +1 -0
  1260. package/icons/angledoubleup/angledoubleup.d.ts +6 -0
  1261. package/icons/angledoubleup/index.d.ts +5 -0
  1262. package/icons/angledoubleup/public_api.d.ts +1 -0
  1263. package/icons/angledown/angledown.d.ts +6 -0
  1264. package/icons/angledown/index.d.ts +5 -0
  1265. package/icons/angledown/public_api.d.ts +1 -0
  1266. package/icons/angleleft/angleleft.d.ts +6 -0
  1267. package/icons/angleleft/index.d.ts +5 -0
  1268. package/icons/angleleft/public_api.d.ts +1 -0
  1269. package/icons/angleright/angleright.d.ts +6 -0
  1270. package/icons/angleright/index.d.ts +5 -0
  1271. package/icons/angleright/public_api.d.ts +1 -0
  1272. package/icons/angleup/angleup.d.ts +6 -0
  1273. package/icons/angleup/index.d.ts +5 -0
  1274. package/icons/angleup/public_api.d.ts +1 -0
  1275. package/icons/arrowdown/arrowdown.d.ts +6 -0
  1276. package/icons/arrowdown/index.d.ts +5 -0
  1277. package/icons/arrowdown/public_api.d.ts +1 -0
  1278. package/icons/arrowdownleft/arrowdownleft.d.ts +6 -0
  1279. package/icons/arrowdownleft/index.d.ts +5 -0
  1280. package/icons/arrowdownleft/public_api.d.ts +1 -0
  1281. package/icons/arrowdownright/arrowdownright.d.ts +6 -0
  1282. package/icons/arrowdownright/index.d.ts +5 -0
  1283. package/icons/arrowdownright/public_api.d.ts +1 -0
  1284. package/icons/arrowleft/arrowleft.d.ts +6 -0
  1285. package/icons/arrowleft/index.d.ts +5 -0
  1286. package/icons/arrowleft/public_api.d.ts +1 -0
  1287. package/icons/arrowright/arrowright.d.ts +6 -0
  1288. package/icons/arrowright/index.d.ts +5 -0
  1289. package/icons/arrowright/public_api.d.ts +1 -0
  1290. package/icons/arrowup/arrowup.d.ts +6 -0
  1291. package/icons/arrowup/index.d.ts +5 -0
  1292. package/icons/arrowup/public_api.d.ts +1 -0
  1293. package/icons/ban/ban.d.ts +6 -0
  1294. package/icons/ban/index.d.ts +5 -0
  1295. package/icons/ban/public_api.d.ts +1 -0
  1296. package/icons/bars/bars.d.ts +6 -0
  1297. package/icons/bars/index.d.ts +5 -0
  1298. package/icons/bars/public_api.d.ts +1 -0
  1299. package/icons/calendar/calendar.d.ts +6 -0
  1300. package/icons/calendar/index.d.ts +5 -0
  1301. package/icons/calendar/public_api.d.ts +1 -0
  1302. package/icons/caretleft/caretleft.d.ts +6 -0
  1303. package/icons/caretleft/index.d.ts +5 -0
  1304. package/icons/caretleft/public_api.d.ts +1 -0
  1305. package/icons/caretright/caretright.d.ts +6 -0
  1306. package/icons/caretright/index.d.ts +5 -0
  1307. package/icons/caretright/public_api.d.ts +1 -0
  1308. package/icons/check/check.d.ts +6 -0
  1309. package/icons/check/index.d.ts +5 -0
  1310. package/icons/check/public_api.d.ts +1 -0
  1311. package/icons/chevrondown/chevrondown.d.ts +6 -0
  1312. package/icons/chevrondown/index.d.ts +5 -0
  1313. package/icons/chevrondown/public_api.d.ts +1 -0
  1314. package/icons/chevronleft/chevronleft.d.ts +6 -0
  1315. package/icons/chevronleft/index.d.ts +5 -0
  1316. package/icons/chevronleft/public_api.d.ts +1 -0
  1317. package/icons/chevronright/chevronright.d.ts +6 -0
  1318. package/icons/chevronright/index.d.ts +5 -0
  1319. package/icons/chevronright/public_api.d.ts +1 -0
  1320. package/icons/chevronup/chevronup.d.ts +6 -0
  1321. package/icons/chevronup/index.d.ts +5 -0
  1322. package/icons/chevronup/public_api.d.ts +1 -0
  1323. package/icons/exclamationtriangle/exclamationtriangle.d.ts +6 -0
  1324. package/icons/exclamationtriangle/index.d.ts +5 -0
  1325. package/icons/exclamationtriangle/public_api.d.ts +1 -0
  1326. package/icons/eye/eye.d.ts +6 -0
  1327. package/icons/eye/index.d.ts +5 -0
  1328. package/icons/eye/public_api.d.ts +1 -0
  1329. package/icons/eyeslash/eyeslash.d.ts +6 -0
  1330. package/icons/eyeslash/index.d.ts +5 -0
  1331. package/icons/eyeslash/public_api.d.ts +1 -0
  1332. package/icons/filter/filter.d.ts +6 -0
  1333. package/icons/filter/index.d.ts +5 -0
  1334. package/icons/filter/public_api.d.ts +1 -0
  1335. package/icons/filterslash/filterslash.d.ts +6 -0
  1336. package/icons/filterslash/index.d.ts +5 -0
  1337. package/icons/filterslash/public_api.d.ts +1 -0
  1338. package/icons/home/home.d.ts +6 -0
  1339. package/icons/home/index.d.ts +5 -0
  1340. package/icons/home/public_api.d.ts +1 -0
  1341. package/icons/infocircle/index.d.ts +5 -0
  1342. package/icons/infocircle/infocircle.d.ts +6 -0
  1343. package/icons/infocircle/public_api.d.ts +1 -0
  1344. package/icons/minus/index.d.ts +5 -0
  1345. package/icons/minus/minus.d.ts +6 -0
  1346. package/icons/minus/public_api.d.ts +1 -0
  1347. package/icons/pencil/index.d.ts +5 -0
  1348. package/icons/pencil/pencil.d.ts +6 -0
  1349. package/icons/pencil/public_api.d.ts +1 -0
  1350. package/icons/plus/index.d.ts +5 -0
  1351. package/icons/plus/plus.d.ts +6 -0
  1352. package/icons/plus/public_api.d.ts +1 -0
  1353. package/icons/refresh/index.d.ts +5 -0
  1354. package/icons/refresh/public_api.d.ts +1 -0
  1355. package/icons/refresh/refresh.d.ts +6 -0
  1356. package/icons/search/index.d.ts +5 -0
  1357. package/icons/search/public_api.d.ts +1 -0
  1358. package/icons/search/search.d.ts +6 -0
  1359. package/icons/searchminus/index.d.ts +5 -0
  1360. package/icons/searchminus/public_api.d.ts +1 -0
  1361. package/icons/searchminus/searchminus.d.ts +6 -0
  1362. package/icons/searchplus/index.d.ts +5 -0
  1363. package/icons/searchplus/public_api.d.ts +1 -0
  1364. package/icons/searchplus/searchplus.d.ts +6 -0
  1365. package/icons/sortalt/index.d.ts +5 -0
  1366. package/icons/sortalt/public_api.d.ts +1 -0
  1367. package/icons/sortalt/sortalt.d.ts +6 -0
  1368. package/icons/sortamountdown/index.d.ts +5 -0
  1369. package/icons/sortamountdown/public_api.d.ts +1 -0
  1370. package/icons/sortamountdown/sortamountdown.d.ts +6 -0
  1371. package/icons/sortamountupalt/index.d.ts +5 -0
  1372. package/icons/sortamountupalt/public_api.d.ts +1 -0
  1373. package/icons/sortamountupalt/sortamountupalt.d.ts +6 -0
  1374. package/icons/spinner/index.d.ts +5 -0
  1375. package/icons/spinner/public_api.d.ts +1 -0
  1376. package/icons/spinner/spinner.d.ts +6 -0
  1377. package/icons/star/index.d.ts +5 -0
  1378. package/icons/star/public_api.d.ts +1 -0
  1379. package/icons/star/star.d.ts +6 -0
  1380. package/icons/starfill/index.d.ts +5 -0
  1381. package/icons/starfill/public_api.d.ts +1 -0
  1382. package/icons/starfill/starfill.d.ts +6 -0
  1383. package/icons/thlarge/index.d.ts +5 -0
  1384. package/icons/thlarge/public_api.d.ts +1 -0
  1385. package/icons/thlarge/thlarge.d.ts +6 -0
  1386. package/icons/times/index.d.ts +5 -0
  1387. package/icons/times/public_api.d.ts +1 -0
  1388. package/icons/times/times.d.ts +6 -0
  1389. package/icons/timescircle/index.d.ts +5 -0
  1390. package/icons/timescircle/public_api.d.ts +1 -0
  1391. package/icons/timescircle/timescircle.d.ts +6 -0
  1392. package/icons/trash/index.d.ts +5 -0
  1393. package/icons/trash/public_api.d.ts +1 -0
  1394. package/icons/trash/trash.d.ts +6 -0
  1395. package/icons/undo/index.d.ts +5 -0
  1396. package/icons/undo/public_api.d.ts +1 -0
  1397. package/icons/undo/undo.d.ts +6 -0
  1398. package/icons/upload/index.d.ts +5 -0
  1399. package/icons/upload/public_api.d.ts +1 -0
  1400. package/icons/upload/upload.d.ts +6 -0
  1401. package/icons/windowmaximize/index.d.ts +5 -0
  1402. package/icons/windowmaximize/public_api.d.ts +1 -0
  1403. package/icons/windowmaximize/windowmaximize.d.ts +6 -0
  1404. package/icons/windowminimize/index.d.ts +5 -0
  1405. package/icons/windowminimize/public_api.d.ts +1 -0
  1406. package/icons/windowminimize/windowminimize.d.ts +6 -0
  1407. package/image/image.d.ts +81 -0
  1408. package/image/index.d.ts +5 -0
  1409. package/image/public_api.d.ts +1 -0
  1410. package/index.d.ts +5 -0
  1411. package/inplace/index.d.ts +5 -0
  1412. package/inplace/inplace.d.ts +45 -0
  1413. package/inplace/public_api.d.ts +1 -0
  1414. package/inputmask/index.d.ts +5 -0
  1415. package/inputmask/inputmask.d.ts +108 -0
  1416. package/inputmask/public_api.d.ts +1 -0
  1417. package/inputnumber/index.d.ts +5 -0
  1418. package/inputnumber/inputnumber.d.ts +177 -0
  1419. package/inputnumber/public_api.d.ts +1 -0
  1420. package/inputswitch/index.d.ts +5 -0
  1421. package/inputswitch/inputswitch.d.ts +47 -0
  1422. package/inputswitch/public_api.d.ts +1 -0
  1423. package/inputtext/index.d.ts +5 -0
  1424. package/inputtext/inputtext.d.ts +22 -0
  1425. package/inputtext/public_api.d.ts +1 -0
  1426. package/inputtextarea/index.d.ts +5 -0
  1427. package/inputtextarea/inputtextarea.d.ts +34 -0
  1428. package/inputtextarea/public_api.d.ts +1 -0
  1429. package/keyfilter/index.d.ts +5 -0
  1430. package/keyfilter/keyfilter.d.ts +39 -0
  1431. package/keyfilter/public_api.d.ts +1 -0
  1432. package/knob/index.d.ts +5 -0
  1433. package/knob/knob.d.ts +81 -0
  1434. package/knob/public_api.d.ts +1 -0
  1435. package/listbox/index.d.ts +5 -0
  1436. package/listbox/listbox.d.ts +125 -0
  1437. package/listbox/public_api.d.ts +1 -0
  1438. package/megamenu/index.d.ts +5 -0
  1439. package/megamenu/megamenu.d.ts +42 -0
  1440. package/megamenu/public_api.d.ts +1 -0
  1441. package/menu/index.d.ts +5 -0
  1442. package/menu/menu.d.ts +77 -0
  1443. package/menu/public_api.d.ts +1 -0
  1444. package/menubar/index.d.ts +5 -0
  1445. package/menubar/menubar.d.ts +97 -0
  1446. package/menubar/public_api.d.ts +1 -0
  1447. package/message/index.d.ts +5 -0
  1448. package/message/message.d.ts +21 -0
  1449. package/message/public_api.d.ts +1 -0
  1450. package/messages/index.d.ts +5 -0
  1451. package/messages/messages.d.ts +49 -0
  1452. package/messages/public_api.d.ts +1 -0
  1453. package/multiselect/index.d.ts +5 -0
  1454. package/multiselect/multiselect.d.ts +232 -0
  1455. package/multiselect/public_api.d.ts +1 -0
  1456. package/orderlist/index.d.ts +5 -0
  1457. package/orderlist/orderlist.d.ts +105 -0
  1458. package/orderlist/public_api.d.ts +1 -0
  1459. package/organizationchart/index.d.ts +5 -0
  1460. package/organizationchart/organizationchart.d.ts +63 -0
  1461. package/organizationchart/public_api.d.ts +1 -0
  1462. package/overlay/index.d.ts +5 -0
  1463. package/overlay/overlay.d.ts +118 -0
  1464. package/overlay/public_api.d.ts +1 -0
  1465. package/overlaypanel/index.d.ts +5 -0
  1466. package/overlaypanel/overlaypanel.d.ts +80 -0
  1467. package/overlaypanel/public_api.d.ts +1 -0
  1468. package/package.json +1267 -0
  1469. package/paginator/index.d.ts +5 -0
  1470. package/paginator/paginator.d.ts +79 -0
  1471. package/paginator/public_api.d.ts +1 -0
  1472. package/panel/index.d.ts +5 -0
  1473. package/panel/panel.d.ts +52 -0
  1474. package/panel/public_api.d.ts +1 -0
  1475. package/panelmenu/index.d.ts +5 -0
  1476. package/panelmenu/panelmenu.d.ts +66 -0
  1477. package/panelmenu/public_api.d.ts +1 -0
  1478. package/password/index.d.ts +5 -0
  1479. package/password/password.d.ts +168 -0
  1480. package/password/public_api.d.ts +1 -0
  1481. package/picklist/index.d.ts +5 -0
  1482. package/picklist/picklist.d.ts +183 -0
  1483. package/picklist/public_api.d.ts +1 -0
  1484. package/progressbar/index.d.ts +5 -0
  1485. package/progressbar/progressbar.d.ts +18 -0
  1486. package/progressbar/public_api.d.ts +1 -0
  1487. package/progressspinner/index.d.ts +5 -0
  1488. package/progressspinner/progressspinner.d.ts +16 -0
  1489. package/progressspinner/public_api.d.ts +1 -0
  1490. package/public_api.d.ts +2 -0
  1491. package/radiobutton/index.d.ts +5 -0
  1492. package/radiobutton/public_api.d.ts +1 -0
  1493. package/radiobutton/radiobutton.d.ts +62 -0
  1494. package/rating/index.d.ts +5 -0
  1495. package/rating/public_api.d.ts +1 -0
  1496. package/rating/rating.d.ts +52 -0
  1497. package/resources/components/accordion/accordion.css +33 -0
  1498. package/resources/components/autocomplete/autocomplete.css +100 -0
  1499. package/resources/components/avatar/avatar.css +26 -0
  1500. package/resources/components/avatargroup/avatargroup.css +8 -0
  1501. package/resources/components/badge/badge.css +32 -0
  1502. package/resources/components/blockui/blockui.css +24 -0
  1503. package/resources/components/breadcrumb/breadcrumb.css +25 -0
  1504. package/resources/components/button/button.css +69 -0
  1505. package/resources/components/calendar/calendar.css +171 -0
  1506. package/resources/components/card/card.css +3 -0
  1507. package/resources/components/carousel/carousel.css +69 -0
  1508. package/resources/components/cascadeselect/cascadeselect.css +96 -0
  1509. package/resources/components/checkbox/checkbox.css +28 -0
  1510. package/resources/components/chip/chip.css +24 -0
  1511. package/resources/components/chips/chips.css +66 -0
  1512. package/resources/components/colorpicker/colorpicker-images.css +7 -0
  1513. package/resources/components/colorpicker/colorpicker.css +81 -0
  1514. package/resources/components/colorpicker/images/color.png +0 -0
  1515. package/resources/components/colorpicker/images/hue.png +0 -0
  1516. package/resources/components/common/common.css +167 -0
  1517. package/resources/components/confirmpopup/confirmpopup.css +49 -0
  1518. package/resources/components/contextmenu/contextmenu.css +46 -0
  1519. package/resources/components/dataview/dataview.css +11 -0
  1520. package/resources/components/dialog/dialog.css +138 -0
  1521. package/resources/components/divider/divider.css +84 -0
  1522. package/resources/components/dock/dock.css +105 -0
  1523. package/resources/components/dropdown/dropdown.css +78 -0
  1524. package/resources/components/editor/editor.css +4 -0
  1525. package/resources/components/fieldset/fieldset.css +25 -0
  1526. package/resources/components/fileupload/fileupload.css +45 -0
  1527. package/resources/components/galleria/galleria.css +274 -0
  1528. package/resources/components/image/image.css +64 -0
  1529. package/resources/components/inplace/inplace.css +17 -0
  1530. package/resources/components/inputmask/inputmask.css +10 -0
  1531. package/resources/components/inputnumber/inputnumber.css +113 -0
  1532. package/resources/components/inputswitch/inputswitch.css +20 -0
  1533. package/resources/components/inputtext/inputtext.css +105 -0
  1534. package/resources/components/inputtextarea/inputtextarea.css +8 -0
  1535. package/resources/components/knob/knob.css +18 -0
  1536. package/resources/components/listbox/listbox.css +38 -0
  1537. package/resources/components/megamenu/megamenu.css +107 -0
  1538. package/resources/components/menu/menu.css +28 -0
  1539. package/resources/components/menubar/menubar.css +75 -0
  1540. package/resources/components/message/message.css +15 -0
  1541. package/resources/components/messages/messages.css +20 -0
  1542. package/resources/components/multiselect/multiselect.css +108 -0
  1543. package/resources/components/orderlist/orderlist.css +76 -0
  1544. package/resources/components/organizationchart/organizationchart.css +60 -0
  1545. package/resources/components/overlay/overlay.css +78 -0
  1546. package/resources/components/overlaypanel/overlaypanel.css +58 -0
  1547. package/resources/components/paginator/paginator.css +35 -0
  1548. package/resources/components/panel/panel.css +27 -0
  1549. package/resources/components/panelmenu/panelmenu.css +40 -0
  1550. package/resources/components/password/images/password-meter.png +0 -0
  1551. package/resources/components/password/password.css +44 -0
  1552. package/resources/components/picklist/picklist.css +58 -0
  1553. package/resources/components/progressbar/progressbar.css +96 -0
  1554. package/resources/components/progressspinner/progressspinner.css +72 -0
  1555. package/resources/components/radiobutton/radiobutton.css +36 -0
  1556. package/resources/components/rating/rating.css +11 -0
  1557. package/resources/components/ripple/ripple.css +27 -0
  1558. package/resources/components/scroller/scroller.css +56 -0
  1559. package/resources/components/scrollpanel/scrollpanel.css +48 -0
  1560. package/resources/components/scrolltop/scrolltop.css +16 -0
  1561. package/resources/components/sidebar/sidebar.css +104 -0
  1562. package/resources/components/skeleton/skeleton.css +33 -0
  1563. package/resources/components/slidemenu/slidemenu.css +99 -0
  1564. package/resources/components/slider/slider.css +39 -0
  1565. package/resources/components/speeddial/speeddial.css +110 -0
  1566. package/resources/components/spinner/spinner.css +61 -0
  1567. package/resources/components/splitbutton/splitbutton.css +31 -0
  1568. package/resources/components/splitter/splitter.css +62 -0
  1569. package/resources/components/steps/steps.css +47 -0
  1570. package/resources/components/table/table.css +242 -0
  1571. package/resources/components/tabmenu/tabmenu.css +78 -0
  1572. package/resources/components/tabview/tabview.css +73 -0
  1573. package/resources/components/tag/tag.css +15 -0
  1574. package/resources/components/terminal/terminal.css +22 -0
  1575. package/resources/components/tieredmenu/tieredmenu.css +49 -0
  1576. package/resources/components/timeline/timeline.css +110 -0
  1577. package/resources/components/toast/toast.css +68 -0
  1578. package/resources/components/toolbar/toolbar.css +17 -0
  1579. package/resources/components/tooltip/tooltip.css +61 -0
  1580. package/resources/components/tree/images/line.gif +0 -0
  1581. package/resources/components/tree/tree.css +156 -0
  1582. package/resources/components/treeselect/treeselect.css +95 -0
  1583. package/resources/components/treetable/treetable.css +203 -0
  1584. package/resources/images/color.png +0 -0
  1585. package/resources/images/hue.png +0 -0
  1586. package/resources/images/line.gif +0 -0
  1587. package/resources/images/password-meter.png +0 -0
  1588. package/resources/parallel-ui-angular.css +588 -0
  1589. package/resources/parallel-ui-angular.min.css +1 -0
  1590. package/resources/themes/arya-blue/theme.css +7757 -0
  1591. package/resources/themes/arya-green/theme.css +7757 -0
  1592. package/resources/themes/arya-orange/theme.css +7757 -0
  1593. package/resources/themes/arya-purple/theme.css +7757 -0
  1594. package/resources/themes/bootstrap4-dark-blue/theme.css +7763 -0
  1595. package/resources/themes/bootstrap4-dark-purple/theme.css +7763 -0
  1596. package/resources/themes/bootstrap4-light-blue/theme.css +7763 -0
  1597. package/resources/themes/bootstrap4-light-purple/theme.css +7763 -0
  1598. package/resources/themes/fluent-light/theme.css +7905 -0
  1599. package/resources/themes/lara-dark-blue/theme.css +7737 -0
  1600. package/resources/themes/lara-dark-indigo/theme.css +7737 -0
  1601. package/resources/themes/lara-dark-purple/theme.css +7737 -0
  1602. package/resources/themes/lara-dark-teal/theme.css +7737 -0
  1603. package/resources/themes/lara-light-blue/theme.css +7737 -0
  1604. package/resources/themes/lara-light-indigo/theme.css +7737 -0
  1605. package/resources/themes/lara-light-purple/theme.css +7737 -0
  1606. package/resources/themes/lara-light-teal/theme.css +7737 -0
  1607. package/resources/themes/luna-amber/theme.css +7686 -0
  1608. package/resources/themes/luna-blue/theme.css +7686 -0
  1609. package/resources/themes/luna-green/theme.css +7686 -0
  1610. package/resources/themes/luna-pink/theme.css +7686 -0
  1611. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1612. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1613. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1614. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1615. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1616. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1617. package/resources/themes/md-dark-deeppurple/theme.css +9765 -0
  1618. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1619. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1620. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1621. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1622. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1623. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1624. package/resources/themes/md-dark-indigo/theme.css +9765 -0
  1625. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1626. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1627. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1628. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1629. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1630. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1631. package/resources/themes/md-light-deeppurple/theme.css +9765 -0
  1632. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1633. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1634. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1635. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1636. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1637. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1638. package/resources/themes/md-light-indigo/theme.css +9765 -0
  1639. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1640. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1641. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1642. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1643. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1644. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1645. package/resources/themes/mdc-dark-deeppurple/theme.css +9765 -0
  1646. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1647. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1648. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1649. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1650. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1651. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1652. package/resources/themes/mdc-dark-indigo/theme.css +9765 -0
  1653. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1654. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1655. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1656. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1657. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1658. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1659. package/resources/themes/mdc-light-deeppurple/theme.css +9765 -0
  1660. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1661. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1662. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1663. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1664. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1665. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1666. package/resources/themes/mdc-light-indigo/theme.css +9765 -0
  1667. package/resources/themes/mira/fonts/Inter-Bold.woff +0 -0
  1668. package/resources/themes/mira/fonts/Inter-Bold.woff2 +0 -0
  1669. package/resources/themes/mira/fonts/Inter-Medium.woff +0 -0
  1670. package/resources/themes/mira/fonts/Inter-Medium.woff2 +0 -0
  1671. package/resources/themes/mira/fonts/Inter-Regular.woff +0 -0
  1672. package/resources/themes/mira/fonts/Inter-Regular.woff2 +0 -0
  1673. package/resources/themes/mira/fonts/Inter-SemiBold.woff +0 -0
  1674. package/resources/themes/mira/fonts/Inter-SemiBold.woff2 +0 -0
  1675. package/resources/themes/mira/theme.css +7990 -0
  1676. package/resources/themes/nano/theme.css +7736 -0
  1677. package/resources/themes/nova/theme.css +7702 -0
  1678. package/resources/themes/nova-accent/theme.css +7714 -0
  1679. package/resources/themes/nova-alt/theme.css +7714 -0
  1680. package/resources/themes/rhea/theme.css +7690 -0
  1681. package/resources/themes/saga-blue/theme.css +7753 -0
  1682. package/resources/themes/saga-green/theme.css +7753 -0
  1683. package/resources/themes/saga-orange/theme.css +7753 -0
  1684. package/resources/themes/saga-purple/theme.css +7753 -0
  1685. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-300.woff +0 -0
  1686. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-300.woff2 +0 -0
  1687. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-700.woff +0 -0
  1688. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-700.woff2 +0 -0
  1689. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-regular.woff +0 -0
  1690. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-regular.woff2 +0 -0
  1691. package/resources/themes/soho-dark/theme.css +7719 -0
  1692. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-300.woff +0 -0
  1693. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-300.woff2 +0 -0
  1694. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-700.woff +0 -0
  1695. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-700.woff2 +0 -0
  1696. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-regular.woff +0 -0
  1697. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-regular.woff2 +0 -0
  1698. package/resources/themes/soho-light/theme.css +7785 -0
  1699. package/resources/themes/tailwind-light/fonts/Inter-Bold.woff +0 -0
  1700. package/resources/themes/tailwind-light/fonts/Inter-Bold.woff2 +0 -0
  1701. package/resources/themes/tailwind-light/fonts/Inter-Light.woff +0 -0
  1702. package/resources/themes/tailwind-light/fonts/Inter-Light.woff2 +0 -0
  1703. package/resources/themes/tailwind-light/fonts/Inter-Medium.woff +0 -0
  1704. package/resources/themes/tailwind-light/fonts/Inter-Medium.woff2 +0 -0
  1705. package/resources/themes/tailwind-light/fonts/Inter-Regular.woff +0 -0
  1706. package/resources/themes/tailwind-light/fonts/Inter-Regular.woff2 +0 -0
  1707. package/resources/themes/tailwind-light/fonts/Inter-SemiBold.woff +0 -0
  1708. package/resources/themes/tailwind-light/fonts/Inter-SemiBold.woff2 +0 -0
  1709. package/resources/themes/tailwind-light/theme.css +7867 -0
  1710. package/resources/themes/vela-blue/theme.css +7757 -0
  1711. package/resources/themes/vela-green/theme.css +7757 -0
  1712. package/resources/themes/vela-orange/theme.css +7757 -0
  1713. package/resources/themes/vela-purple/theme.css +7757 -0
  1714. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-300.woff +0 -0
  1715. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-300.woff2 +0 -0
  1716. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-600.woff +0 -0
  1717. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-600.woff2 +0 -0
  1718. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-700.woff +0 -0
  1719. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-700.woff2 +0 -0
  1720. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-regular.woff +0 -0
  1721. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-regular.woff2 +0 -0
  1722. package/resources/themes/viva-dark/theme.css +7910 -0
  1723. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-300.woff +0 -0
  1724. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-300.woff2 +0 -0
  1725. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-600.woff +0 -0
  1726. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-600.woff2 +0 -0
  1727. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-700.woff +0 -0
  1728. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-700.woff2 +0 -0
  1729. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-regular.woff +0 -0
  1730. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-regular.woff2 +0 -0
  1731. package/resources/themes/viva-light/theme.css +7910 -0
  1732. package/ripple/index.d.ts +5 -0
  1733. package/ripple/public_api.d.ts +1 -0
  1734. package/ripple/ripple.d.ts +31 -0
  1735. package/scroller/index.d.ts +5 -0
  1736. package/scroller/public_api.d.ts +1 -0
  1737. package/scroller/scroller.d.ts +251 -0
  1738. package/scrollpanel/index.d.ts +5 -0
  1739. package/scrollpanel/public_api.d.ts +1 -0
  1740. package/scrollpanel/scrollpanel.d.ts +59 -0
  1741. package/scrolltop/index.d.ts +5 -0
  1742. package/scrolltop/public_api.d.ts +1 -0
  1743. package/scrolltop/scrolltop.d.ts +53 -0
  1744. package/selectbutton/index.d.ts +5 -0
  1745. package/selectbutton/public_api.d.ts +1 -0
  1746. package/selectbutton/selectbutton.d.ts +45 -0
  1747. package/sidebar/index.d.ts +5 -0
  1748. package/sidebar/public_api.d.ts +1 -0
  1749. package/sidebar/sidebar.d.ts +75 -0
  1750. package/skeleton/index.d.ts +5 -0
  1751. package/skeleton/public_api.d.ts +1 -0
  1752. package/skeleton/skeleton.d.ts +25 -0
  1753. package/slidemenu/index.d.ts +5 -0
  1754. package/slidemenu/public_api.d.ts +1 -0
  1755. package/slidemenu/slidemenu.d.ts +112 -0
  1756. package/slider/index.d.ts +5 -0
  1757. package/slider/public_api.d.ts +1 -0
  1758. package/slider/slider.d.ts +92 -0
  1759. package/speeddial/index.d.ts +5 -0
  1760. package/speeddial/public_api.d.ts +1 -0
  1761. package/speeddial/speeddial.d.ts +137 -0
  1762. package/spinner/index.d.ts +5 -0
  1763. package/spinner/public_api.d.ts +1 -0
  1764. package/spinner/spinner.d.ts +80 -0
  1765. package/splitbutton/index.d.ts +5 -0
  1766. package/splitbutton/public_api.d.ts +1 -0
  1767. package/splitbutton/splitbutton.d.ts +45 -0
  1768. package/splitter/index.d.ts +5 -0
  1769. package/splitter/public_api.d.ts +1 -0
  1770. package/splitter/splitter.d.ts +88 -0
  1771. package/steps/index.d.ts +5 -0
  1772. package/steps/public_api.d.ts +1 -0
  1773. package/steps/steps.d.ts +33 -0
  1774. package/styleclass/index.d.ts +5 -0
  1775. package/styleclass/public_api.d.ts +1 -0
  1776. package/styleclass/styleclass.d.ts +45 -0
  1777. package/table/index.d.ts +5 -0
  1778. package/table/public_api.d.ts +1 -0
  1779. package/table/table.d.ts +890 -0
  1780. package/tabmenu/index.d.ts +5 -0
  1781. package/tabmenu/public_api.d.ts +1 -0
  1782. package/tabmenu/tabmenu.d.ts +61 -0
  1783. package/tabview/index.d.ts +5 -0
  1784. package/tabview/public_api.d.ts +1 -0
  1785. package/tabview/tabview.d.ts +110 -0
  1786. package/tag/index.d.ts +5 -0
  1787. package/tag/public_api.d.ts +1 -0
  1788. package/tag/tag.d.ts +30 -0
  1789. package/terminal/index.d.ts +5 -0
  1790. package/terminal/public_api.d.ts +2 -0
  1791. package/terminal/terminal.d.ts +34 -0
  1792. package/terminal/terminalservice.d.ts +11 -0
  1793. package/tieredmenu/index.d.ts +5 -0
  1794. package/tieredmenu/public_api.d.ts +1 -0
  1795. package/tieredmenu/tieredmenu.d.ts +109 -0
  1796. package/timeline/index.d.ts +5 -0
  1797. package/timeline/public_api.d.ts +1 -0
  1798. package/timeline/timeline.d.ts +27 -0
  1799. package/toast/index.d.ts +5 -0
  1800. package/toast/public_api.d.ts +1 -0
  1801. package/toast/toast.d.ts +87 -0
  1802. package/togglebutton/index.d.ts +5 -0
  1803. package/togglebutton/public_api.d.ts +1 -0
  1804. package/togglebutton/togglebutton.d.ts +40 -0
  1805. package/toolbar/index.d.ts +5 -0
  1806. package/toolbar/public_api.d.ts +1 -0
  1807. package/toolbar/toolbar.d.ts +23 -0
  1808. package/tooltip/index.d.ts +5 -0
  1809. package/tooltip/public_api.d.ts +1 -0
  1810. package/tooltip/tooltip.d.ts +115 -0
  1811. package/tree/index.d.ts +5 -0
  1812. package/tree/public_api.d.ts +1 -0
  1813. package/tree/tree.d.ts +207 -0
  1814. package/treeselect/index.d.ts +5 -0
  1815. package/treeselect/public_api.d.ts +1 -0
  1816. package/treeselect/treeselect.d.ts +149 -0
  1817. package/treetable/index.d.ts +5 -0
  1818. package/treetable/public_api.d.ts +1 -0
  1819. package/treetable/treetable.d.ts +542 -0
  1820. package/tristatecheckbox/index.d.ts +5 -0
  1821. package/tristatecheckbox/public_api.d.ts +1 -0
  1822. package/tristatecheckbox/tristatecheckbox.d.ts +49 -0
  1823. package/utils/index.d.ts +5 -0
  1824. package/utils/objectutils.d.ts +17 -0
  1825. package/utils/public_api.d.ts +4 -0
  1826. package/utils/uniquecomponentid.d.ts +2 -0
  1827. package/utils/zindexutils.d.ts +7 -0
  1828. package/virtualscroller/index.d.ts +5 -0
  1829. package/virtualscroller/public_api.d.ts +1 -0
  1830. package/virtualscroller/virtualscroller.d.ts +41 -0
@@ -0,0 +1,1584 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, forwardRef, Inject, Input, NgModule, Optional, Output, ViewChild, ViewEncapsulation } from '@angular/core';
3
+ import { QiusTemplate, SharedModule, TranslationKeys } from '@qius.solutions/parallel-ui-angular/api';
4
+ import { DomHandler } from '@qius.solutions/parallel-ui-angular/dom';
5
+ import { RippleModule } from '@qius.solutions/parallel-ui-angular/ripple';
6
+ import { ScrollerModule } from '@qius.solutions/parallel-ui-angular/scroller';
7
+ import { ObjectUtils } from '@qius.solutions/parallel-ui-angular/utils';
8
+ import { CheckIcon } from '@qius.solutions/parallel-ui-angular/icons/check';
9
+ import { ChevronDownIcon } from '@qius.solutions/parallel-ui-angular/icons/chevrondown';
10
+ import { ChevronRightIcon } from '@qius.solutions/parallel-ui-angular/icons/chevronright';
11
+ import { MinusIcon } from '@qius.solutions/parallel-ui-angular/icons/minus';
12
+ import { SearchIcon } from '@qius.solutions/parallel-ui-angular/icons/search';
13
+ import { SpinnerIcon } from '@qius.solutions/parallel-ui-angular/icons/spinner';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "@angular/common";
16
+ import * as i2 from "@qius.solutions/parallel-ui-angular/ripple";
17
+ import * as i3 from "@qius.solutions/parallel-ui-angular/api";
18
+ import * as i4 from "@qius.solutions/parallel-ui-angular/scroller";
19
+ export class UITreeNode {
20
+ constructor(tree) {
21
+ this.tree = tree;
22
+ }
23
+ ngOnInit() {
24
+ this.node.parent = this.parentNode;
25
+ if (this.parentNode) {
26
+ this.tree.syncNodeOption(this.node, this.tree.value, 'parent', this.tree.getNodeWithKey(this.parentNode.key, this.tree.value));
27
+ }
28
+ }
29
+ getIcon() {
30
+ let icon;
31
+ if (this.node.icon)
32
+ icon = this.node.icon;
33
+ else
34
+ icon = this.node.expanded && this.node.children && this.node.children.length ? this.node.expandedIcon : this.node.collapsedIcon;
35
+ return UITreeNode.ICON_CLASS + ' ' + icon;
36
+ }
37
+ isLeaf() {
38
+ return this.tree.isNodeLeaf(this.node);
39
+ }
40
+ toggle(event) {
41
+ if (this.node.expanded)
42
+ this.collapse(event);
43
+ else
44
+ this.expand(event);
45
+ event.stopPropagation();
46
+ }
47
+ expand(event) {
48
+ this.node.expanded = true;
49
+ if (this.tree.virtualScroll) {
50
+ this.tree.updateSerializedValue();
51
+ this.focusVirtualNode();
52
+ }
53
+ this.tree.onNodeExpand.emit({ originalEvent: event, node: this.node });
54
+ }
55
+ collapse(event) {
56
+ this.node.expanded = false;
57
+ if (this.tree.virtualScroll) {
58
+ this.tree.updateSerializedValue();
59
+ this.focusVirtualNode();
60
+ }
61
+ this.tree.onNodeCollapse.emit({ originalEvent: event, node: this.node });
62
+ }
63
+ onNodeClick(event) {
64
+ this.tree.onNodeClick(event, this.node);
65
+ }
66
+ onNodeKeydown(event) {
67
+ if (event.which === 13) {
68
+ this.tree.onNodeClick(event, this.node);
69
+ }
70
+ }
71
+ onNodeTouchEnd() {
72
+ this.tree.onNodeTouchEnd();
73
+ }
74
+ onNodeRightClick(event) {
75
+ this.tree.onNodeRightClick(event, this.node);
76
+ }
77
+ isSelected() {
78
+ return this.tree.isSelected(this.node);
79
+ }
80
+ onDropPoint(event, position) {
81
+ event.preventDefault();
82
+ let dragNode = this.tree.dragNode;
83
+ let dragNodeIndex = this.tree.dragNodeIndex;
84
+ let dragNodeScope = this.tree.dragNodeScope;
85
+ let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? position === 1 || dragNodeIndex !== this.index - 1 : true;
86
+ if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {
87
+ let dropParams = { ...this.createDropPointEventMetadata(position) };
88
+ if (this.tree.validateDrop) {
89
+ this.tree.onNodeDrop.emit({
90
+ originalEvent: event,
91
+ dragNode: dragNode,
92
+ dropNode: this.node,
93
+ index: this.index,
94
+ accept: () => {
95
+ this.processPointDrop(dropParams);
96
+ }
97
+ });
98
+ }
99
+ else {
100
+ this.processPointDrop(dropParams);
101
+ this.tree.onNodeDrop.emit({
102
+ originalEvent: event,
103
+ dragNode: dragNode,
104
+ dropNode: this.node,
105
+ index: this.index
106
+ });
107
+ }
108
+ }
109
+ this.draghoverPrev = false;
110
+ this.draghoverNext = false;
111
+ }
112
+ processPointDrop(event) {
113
+ let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;
114
+ event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);
115
+ let dropIndex = this.index;
116
+ if (event.position < 0) {
117
+ dropIndex = event.dragNodeSubNodes === newNodeList ? (event.dragNodeIndex > event.index ? event.index : event.index - 1) : event.index;
118
+ newNodeList.splice(dropIndex, 0, event.dragNode);
119
+ }
120
+ else {
121
+ dropIndex = newNodeList.length;
122
+ newNodeList.push(event.dragNode);
123
+ }
124
+ this.tree.dragDropService.stopDrag({
125
+ node: event.dragNode,
126
+ subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,
127
+ index: event.dragNodeIndex
128
+ });
129
+ }
130
+ createDropPointEventMetadata(position) {
131
+ return {
132
+ dragNode: this.tree.dragNode,
133
+ dragNodeIndex: this.tree.dragNodeIndex,
134
+ dragNodeSubNodes: this.tree.dragNodeSubNodes,
135
+ dropNode: this.node,
136
+ index: this.index,
137
+ position: position
138
+ };
139
+ }
140
+ onDropPointDragOver(event) {
141
+ event.dataTransfer.dropEffect = 'move';
142
+ event.preventDefault();
143
+ }
144
+ onDropPointDragEnter(event, position) {
145
+ if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {
146
+ if (position < 0)
147
+ this.draghoverPrev = true;
148
+ else
149
+ this.draghoverNext = true;
150
+ }
151
+ }
152
+ onDropPointDragLeave(event) {
153
+ this.draghoverPrev = false;
154
+ this.draghoverNext = false;
155
+ }
156
+ onDragStart(event) {
157
+ if (this.tree.draggableNodes && this.node.draggable !== false) {
158
+ event.dataTransfer.setData('text', 'data');
159
+ this.tree.dragDropService.startDrag({
160
+ tree: this,
161
+ node: this.node,
162
+ subNodes: this.node.parent ? this.node.parent.children : this.tree.value,
163
+ index: this.index,
164
+ scope: this.tree.draggableScope
165
+ });
166
+ }
167
+ else {
168
+ event.preventDefault();
169
+ }
170
+ }
171
+ onDragStop(event) {
172
+ this.tree.dragDropService.stopDrag({
173
+ node: this.node,
174
+ subNodes: this.node.parent ? this.node.parent.children : this.tree.value,
175
+ index: this.index
176
+ });
177
+ }
178
+ onDropNodeDragOver(event) {
179
+ event.dataTransfer.dropEffect = 'move';
180
+ if (this.tree.droppableNodes) {
181
+ event.preventDefault();
182
+ event.stopPropagation();
183
+ }
184
+ }
185
+ onDropNode(event) {
186
+ if (this.tree.droppableNodes && this.node.droppable !== false) {
187
+ let dragNode = this.tree.dragNode;
188
+ if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {
189
+ let dropParams = { ...this.createDropNodeEventMetadata() };
190
+ if (this.tree.validateDrop) {
191
+ this.tree.onNodeDrop.emit({
192
+ originalEvent: event,
193
+ dragNode: dragNode,
194
+ dropNode: this.node,
195
+ index: this.index,
196
+ accept: () => {
197
+ this.processNodeDrop(dropParams);
198
+ }
199
+ });
200
+ }
201
+ else {
202
+ this.processNodeDrop(dropParams);
203
+ this.tree.onNodeDrop.emit({
204
+ originalEvent: event,
205
+ dragNode: dragNode,
206
+ dropNode: this.node,
207
+ index: this.index
208
+ });
209
+ }
210
+ }
211
+ }
212
+ event.preventDefault();
213
+ event.stopPropagation();
214
+ this.draghoverNode = false;
215
+ }
216
+ createDropNodeEventMetadata() {
217
+ return {
218
+ dragNode: this.tree.dragNode,
219
+ dragNodeIndex: this.tree.dragNodeIndex,
220
+ dragNodeSubNodes: this.tree.dragNodeSubNodes,
221
+ dropNode: this.node
222
+ };
223
+ }
224
+ processNodeDrop(event) {
225
+ let dragNodeIndex = event.dragNodeIndex;
226
+ event.dragNodeSubNodes.splice(dragNodeIndex, 1);
227
+ if (event.dropNode.children)
228
+ event.dropNode.children.push(event.dragNode);
229
+ else
230
+ event.dropNode.children = [event.dragNode];
231
+ this.tree.dragDropService.stopDrag({
232
+ node: event.dragNode,
233
+ subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,
234
+ index: dragNodeIndex
235
+ });
236
+ }
237
+ onDropNodeDragEnter(event) {
238
+ if (this.tree.droppableNodes && this.node.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {
239
+ this.draghoverNode = true;
240
+ }
241
+ }
242
+ onDropNodeDragLeave(event) {
243
+ if (this.tree.droppableNodes) {
244
+ let rect = event.currentTarget.getBoundingClientRect();
245
+ if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {
246
+ this.draghoverNode = false;
247
+ }
248
+ }
249
+ }
250
+ onKeyDown(event) {
251
+ const nodeElement = event.target.parentElement.parentElement;
252
+ if (nodeElement.nodeName !== 'P-TREENODE' || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild.nativeElement.style.display === 'block')) {
253
+ return;
254
+ }
255
+ switch (event.which) {
256
+ //down arrow
257
+ case 40:
258
+ const listElement = this.tree.droppableNodes ? nodeElement.children[1].children[1] : nodeElement.children[0].children[1];
259
+ if (listElement && listElement.children.length > 0) {
260
+ this.focusNode(listElement.children[0]);
261
+ }
262
+ else {
263
+ const nextNodeElement = nodeElement.nextElementSibling;
264
+ if (nextNodeElement) {
265
+ this.focusNode(nextNodeElement);
266
+ }
267
+ else {
268
+ let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);
269
+ if (nextSiblingAncestor) {
270
+ this.focusNode(nextSiblingAncestor);
271
+ }
272
+ }
273
+ }
274
+ event.preventDefault();
275
+ break;
276
+ //up arrow
277
+ case 38:
278
+ if (nodeElement.previousElementSibling) {
279
+ this.focusNode(this.findLastVisibleDescendant(nodeElement.previousElementSibling));
280
+ }
281
+ else {
282
+ let parentNodeElement = this.getParentNodeElement(nodeElement);
283
+ if (parentNodeElement) {
284
+ this.focusNode(parentNodeElement);
285
+ }
286
+ }
287
+ event.preventDefault();
288
+ break;
289
+ //right arrow
290
+ case 39:
291
+ if (!this.node.expanded && !this.tree.isNodeLeaf(this.node)) {
292
+ this.expand(event);
293
+ }
294
+ event.preventDefault();
295
+ break;
296
+ //left arrow
297
+ case 37:
298
+ if (this.node.expanded) {
299
+ this.collapse(event);
300
+ }
301
+ else {
302
+ let parentNodeElement = this.getParentNodeElement(nodeElement);
303
+ if (parentNodeElement) {
304
+ this.focusNode(parentNodeElement);
305
+ }
306
+ }
307
+ event.preventDefault();
308
+ break;
309
+ //enter
310
+ case 13:
311
+ this.tree.onNodeClick(event, this.node);
312
+ event.preventDefault();
313
+ break;
314
+ default:
315
+ //no op
316
+ break;
317
+ }
318
+ }
319
+ findNextSiblingOfAncestor(nodeElement) {
320
+ let parentNodeElement = this.getParentNodeElement(nodeElement);
321
+ if (parentNodeElement) {
322
+ if (parentNodeElement.nextElementSibling)
323
+ return parentNodeElement.nextElementSibling;
324
+ else
325
+ return this.findNextSiblingOfAncestor(parentNodeElement);
326
+ }
327
+ else {
328
+ return null;
329
+ }
330
+ }
331
+ findLastVisibleDescendant(nodeElement) {
332
+ const listElement = Array.from(nodeElement.children).find((el) => DomHandler.hasClass(el, 'p-treenode'));
333
+ const childrenListElement = listElement.children[1];
334
+ if (childrenListElement && childrenListElement.children.length > 0) {
335
+ const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];
336
+ return this.findLastVisibleDescendant(lastChildElement);
337
+ }
338
+ else {
339
+ return nodeElement;
340
+ }
341
+ }
342
+ getParentNodeElement(nodeElement) {
343
+ const parentNodeElement = nodeElement.parentElement.parentElement.parentElement;
344
+ return parentNodeElement.tagName === 'P-TREENODE' ? parentNodeElement : null;
345
+ }
346
+ focusNode(element) {
347
+ if (this.tree.droppableNodes)
348
+ element.children[1].children[0].focus();
349
+ else
350
+ element.children[0].children[0].focus();
351
+ }
352
+ focusVirtualNode() {
353
+ this.timeout = setTimeout(() => {
354
+ let node = DomHandler.findSingle(document.body, `[data-id="${this.node.key ?? this.node.data}"]`);
355
+ DomHandler.focus(node);
356
+ }, 1);
357
+ }
358
+ }
359
+ UITreeNode.ICON_CLASS = 'p-treenode-icon ';
360
+ UITreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UITreeNode, deps: [{ token: forwardRef(() => Tree) }], target: i0.ɵɵFactoryTarget.Component });
361
+ UITreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UITreeNode, selector: "p-treeNode", inputs: { rowNode: "rowNode", node: "node", parentNode: "parentNode", root: "root", index: "index", firstChild: "firstChild", lastChild: "lastChild", level: "level", indentation: "indentation", itemSize: "itemSize" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
362
+ <ng-template [ngIf]="node">
363
+ <li
364
+ *ngIf="tree.droppableNodes"
365
+ class="p-treenode-droppoint"
366
+ [ngClass]="{ 'p-treenode-droppoint-active': draghoverPrev }"
367
+ (drop)="onDropPoint($event, -1)"
368
+ (dragover)="onDropPointDragOver($event)"
369
+ (dragenter)="onDropPointDragEnter($event, -1)"
370
+ (dragleave)="onDropPointDragLeave($event)"
371
+ ></li>
372
+ <li *ngIf="!tree.horizontal" [ngClass]="['p-treenode', node.styleClass || '', isLeaf() ? 'p-treenode-leaf' : '']" [ngStyle]="{ height: itemSize + 'px' }" [style]="node.style">
373
+ <div
374
+ class="p-treenode-content"
375
+ [style.paddingLeft]="level * indentation + 'rem'"
376
+ (click)="onNodeClick($event)"
377
+ (contextmenu)="onNodeRightClick($event)"
378
+ (touchend)="onNodeTouchEnd()"
379
+ (drop)="onDropNode($event)"
380
+ (dragover)="onDropNodeDragOver($event)"
381
+ (dragenter)="onDropNodeDragEnter($event)"
382
+ (dragleave)="onDropNodeDragLeave($event)"
383
+ [draggable]="tree.draggableNodes"
384
+ (dragstart)="onDragStart($event)"
385
+ (dragend)="onDragStop($event)"
386
+ [attr.tabindex]="0"
387
+ [ngClass]="{ 'p-treenode-selectable': tree.selectionMode && node.selectable !== false, 'p-treenode-dragover': draghoverNode, 'p-highlight': isSelected() }"
388
+ role="treeitem"
389
+ (keydown)="onKeyDown($event)"
390
+ [attr.aria-posinset]="this.index + 1"
391
+ [attr.aria-expanded]="this.node.expanded"
392
+ [attr.aria-selected]="isSelected()"
393
+ [attr.aria-label]="node.label"
394
+ [attr.data-id]="node.key"
395
+ >
396
+ <button type="button" [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler p-link" (click)="toggle($event)" pRipple tabindex="-1">
397
+ <ng-container *ngIf="!tree.togglerIconTemplate">
398
+ <ChevronRightIcon *ngIf="!node.expanded" [styleClass]="'p-tree-toggler-icon'"/>
399
+ <ChevronDownIcon *ngIf="node.expanded" [styleClass]="'p-tree-toggler-icon'"/>
400
+ </ng-container>
401
+ <span *ngIf="tree.togglerIconTemplate" class="p-tree-toggler-icon">
402
+ <ng-template *ngTemplateOutlet="tree.togglerIconTemplate; context: { $implicit: node.expanded }"></ng-template>
403
+ </span>
404
+ </button>
405
+ <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-disabled': node.selectable === false }" *ngIf="tree.selectionMode == 'checkbox'" [attr.aria-checked]="isSelected()">
406
+ <div class="p-checkbox-box" [ngClass]="{ 'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected }">
407
+ <ng-container *ngIf="!tree.checkboxIconTemplate">
408
+ <CheckIcon *ngIf="isSelected()" [styleClass]="'p-checkbox-icon'"/>
409
+ <MinusIcon *ngIf="node.partialSelected" [styleClass]="'p-checkbox-icon'"/>
410
+ </ng-container>
411
+ <ng-template *ngTemplateOutlet="tree.checkboxIconTemplate; context: { $implicit: isSelected, partialSelected: node.partialSelected }"></ng-template>
412
+ </div>
413
+ </div>
414
+ <span [class]="getIcon()" *ngIf="node.icon || node.expandedIcon || node.collapsedIcon"></span>
415
+ <span class="p-treenode-label">
416
+ <span *ngIf="!tree.getTemplateForNode(node)">{{ node.label }}</span>
417
+ <span *ngIf="tree.getTemplateForNode(node)">
418
+ <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: { $implicit: node }"></ng-container>
419
+ </span>
420
+ </span>
421
+ </div>
422
+ <ul class="p-treenode-children" style="display: none;" *ngIf="!tree.virtualScroll && node.children && node.expanded" [style.display]="node.expanded ? 'block' : 'none'" role="group">
423
+ <p-treeNode
424
+ *ngFor="let childNode of node.children; let firstChild = first; let lastChild = last; let index = index; trackBy: tree.trackBy"
425
+ [node]="childNode"
426
+ [parentNode]="node"
427
+ [firstChild]="firstChild"
428
+ [lastChild]="lastChild"
429
+ [index]="index"
430
+ [itemSize]="itemSize"
431
+ [level]="level + 1"
432
+ ></p-treeNode>
433
+ </ul>
434
+ </li>
435
+ <li
436
+ *ngIf="tree.droppableNodes && lastChild"
437
+ class="p-treenode-droppoint"
438
+ [ngClass]="{ 'p-treenode-droppoint-active': draghoverNext }"
439
+ (drop)="onDropPoint($event, 1)"
440
+ (dragover)="onDropPointDragOver($event)"
441
+ (dragenter)="onDropPointDragEnter($event, 1)"
442
+ (dragleave)="onDropPointDragLeave($event)"
443
+ ></li>
444
+ <table *ngIf="tree.horizontal" [class]="node.styleClass">
445
+ <tbody>
446
+ <tr>
447
+ <td class="p-treenode-connector" *ngIf="!root">
448
+ <table class="p-treenode-connector-table">
449
+ <tbody>
450
+ <tr>
451
+ <td [ngClass]="{ 'p-treenode-connector-line': !firstChild }"></td>
452
+ </tr>
453
+ <tr>
454
+ <td [ngClass]="{ 'p-treenode-connector-line': !lastChild }"></td>
455
+ </tr>
456
+ </tbody>
457
+ </table>
458
+ </td>
459
+ <td class="p-treenode" [ngClass]="{ 'p-treenode-collapsed': !node.expanded }">
460
+ <div
461
+ class="p-treenode-content"
462
+ tabindex="0"
463
+ [ngClass]="{ 'p-treenode-selectable': tree.selectionMode, 'p-highlight': isSelected() }"
464
+ (click)="onNodeClick($event)"
465
+ (contextmenu)="onNodeRightClick($event)"
466
+ (touchend)="onNodeTouchEnd()"
467
+ (keydown)="onNodeKeydown($event)"
468
+ >
469
+ <span *ngIf="!isLeaf()" [ngClass]="'p-tree-toggler'" (click)="toggle($event)">
470
+ <ng-container *ngIf="!tree.togglerIconTemplate">
471
+ <PlusIcon *ngIf="!node.expanded" [styleClass]="'p-tree-toggler-icon'" [ariaLabel]="tree.togglerAriaLabel"/>
472
+ <MinusIcon *ngIf="node.expanded" [styleClass]="'p-tree-toggler-icon'" [ariaLabel]="tree.togglerAriaLabel"/>
473
+ </ng-container>
474
+ <span *ngIf="tree.togglerIconTemplate" class="p-tree-toggler-icon">
475
+ <ng-template *ngTemplateOutlet="tree.togglerIconTemplate; context: { $implicit: node.expanded }"></ng-template>
476
+ </span>
477
+ </span>
478
+ <span [class]="getIcon()" *ngIf="node.icon || node.expandedIcon || node.collapsedIcon"></span>
479
+ <span class="p-treenode-label">
480
+ <span *ngIf="!tree.getTemplateForNode(node)">{{ node.label }}</span>
481
+ <span *ngIf="tree.getTemplateForNode(node)">
482
+ <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: { $implicit: node }"></ng-container>
483
+ </span>
484
+ </span>
485
+ </div>
486
+ </td>
487
+ <td class="p-treenode-children-container" *ngIf="node.children && node.expanded" [style.display]="node.expanded ? 'table-cell' : 'none'">
488
+ <div class="p-treenode-children">
489
+ <p-treeNode *ngFor="let childNode of node.children; let firstChild = first; let lastChild = last; trackBy: tree.trackBy" [node]="childNode" [firstChild]="firstChild" [lastChild]="lastChild"></p-treeNode>
490
+ </div>
491
+ </td>
492
+ </tr>
493
+ </tbody>
494
+ </table>
495
+ </ng-template>
496
+ `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.Ripple; }), selector: "[pRipple]" }, { kind: "component", type: i0.forwardRef(function () { return CheckIcon; }), selector: "CheckIcon" }, { kind: "component", type: i0.forwardRef(function () { return ChevronDownIcon; }), selector: "ChevronDownIcon" }, { kind: "component", type: i0.forwardRef(function () { return ChevronRightIcon; }), selector: "ChevronRightIcon" }, { kind: "component", type: i0.forwardRef(function () { return MinusIcon; }), selector: "MinusIcon" }, { kind: "component", type: i0.forwardRef(function () { return UITreeNode; }), selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation", "itemSize"] }], encapsulation: i0.ViewEncapsulation.None });
497
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UITreeNode, decorators: [{
498
+ type: Component,
499
+ args: [{
500
+ selector: 'p-treeNode',
501
+ template: `
502
+ <ng-template [ngIf]="node">
503
+ <li
504
+ *ngIf="tree.droppableNodes"
505
+ class="p-treenode-droppoint"
506
+ [ngClass]="{ 'p-treenode-droppoint-active': draghoverPrev }"
507
+ (drop)="onDropPoint($event, -1)"
508
+ (dragover)="onDropPointDragOver($event)"
509
+ (dragenter)="onDropPointDragEnter($event, -1)"
510
+ (dragleave)="onDropPointDragLeave($event)"
511
+ ></li>
512
+ <li *ngIf="!tree.horizontal" [ngClass]="['p-treenode', node.styleClass || '', isLeaf() ? 'p-treenode-leaf' : '']" [ngStyle]="{ height: itemSize + 'px' }" [style]="node.style">
513
+ <div
514
+ class="p-treenode-content"
515
+ [style.paddingLeft]="level * indentation + 'rem'"
516
+ (click)="onNodeClick($event)"
517
+ (contextmenu)="onNodeRightClick($event)"
518
+ (touchend)="onNodeTouchEnd()"
519
+ (drop)="onDropNode($event)"
520
+ (dragover)="onDropNodeDragOver($event)"
521
+ (dragenter)="onDropNodeDragEnter($event)"
522
+ (dragleave)="onDropNodeDragLeave($event)"
523
+ [draggable]="tree.draggableNodes"
524
+ (dragstart)="onDragStart($event)"
525
+ (dragend)="onDragStop($event)"
526
+ [attr.tabindex]="0"
527
+ [ngClass]="{ 'p-treenode-selectable': tree.selectionMode && node.selectable !== false, 'p-treenode-dragover': draghoverNode, 'p-highlight': isSelected() }"
528
+ role="treeitem"
529
+ (keydown)="onKeyDown($event)"
530
+ [attr.aria-posinset]="this.index + 1"
531
+ [attr.aria-expanded]="this.node.expanded"
532
+ [attr.aria-selected]="isSelected()"
533
+ [attr.aria-label]="node.label"
534
+ [attr.data-id]="node.key"
535
+ >
536
+ <button type="button" [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler p-link" (click)="toggle($event)" pRipple tabindex="-1">
537
+ <ng-container *ngIf="!tree.togglerIconTemplate">
538
+ <ChevronRightIcon *ngIf="!node.expanded" [styleClass]="'p-tree-toggler-icon'"/>
539
+ <ChevronDownIcon *ngIf="node.expanded" [styleClass]="'p-tree-toggler-icon'"/>
540
+ </ng-container>
541
+ <span *ngIf="tree.togglerIconTemplate" class="p-tree-toggler-icon">
542
+ <ng-template *ngTemplateOutlet="tree.togglerIconTemplate; context: { $implicit: node.expanded }"></ng-template>
543
+ </span>
544
+ </button>
545
+ <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-disabled': node.selectable === false }" *ngIf="tree.selectionMode == 'checkbox'" [attr.aria-checked]="isSelected()">
546
+ <div class="p-checkbox-box" [ngClass]="{ 'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected }">
547
+ <ng-container *ngIf="!tree.checkboxIconTemplate">
548
+ <CheckIcon *ngIf="isSelected()" [styleClass]="'p-checkbox-icon'"/>
549
+ <MinusIcon *ngIf="node.partialSelected" [styleClass]="'p-checkbox-icon'"/>
550
+ </ng-container>
551
+ <ng-template *ngTemplateOutlet="tree.checkboxIconTemplate; context: { $implicit: isSelected, partialSelected: node.partialSelected }"></ng-template>
552
+ </div>
553
+ </div>
554
+ <span [class]="getIcon()" *ngIf="node.icon || node.expandedIcon || node.collapsedIcon"></span>
555
+ <span class="p-treenode-label">
556
+ <span *ngIf="!tree.getTemplateForNode(node)">{{ node.label }}</span>
557
+ <span *ngIf="tree.getTemplateForNode(node)">
558
+ <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: { $implicit: node }"></ng-container>
559
+ </span>
560
+ </span>
561
+ </div>
562
+ <ul class="p-treenode-children" style="display: none;" *ngIf="!tree.virtualScroll && node.children && node.expanded" [style.display]="node.expanded ? 'block' : 'none'" role="group">
563
+ <p-treeNode
564
+ *ngFor="let childNode of node.children; let firstChild = first; let lastChild = last; let index = index; trackBy: tree.trackBy"
565
+ [node]="childNode"
566
+ [parentNode]="node"
567
+ [firstChild]="firstChild"
568
+ [lastChild]="lastChild"
569
+ [index]="index"
570
+ [itemSize]="itemSize"
571
+ [level]="level + 1"
572
+ ></p-treeNode>
573
+ </ul>
574
+ </li>
575
+ <li
576
+ *ngIf="tree.droppableNodes && lastChild"
577
+ class="p-treenode-droppoint"
578
+ [ngClass]="{ 'p-treenode-droppoint-active': draghoverNext }"
579
+ (drop)="onDropPoint($event, 1)"
580
+ (dragover)="onDropPointDragOver($event)"
581
+ (dragenter)="onDropPointDragEnter($event, 1)"
582
+ (dragleave)="onDropPointDragLeave($event)"
583
+ ></li>
584
+ <table *ngIf="tree.horizontal" [class]="node.styleClass">
585
+ <tbody>
586
+ <tr>
587
+ <td class="p-treenode-connector" *ngIf="!root">
588
+ <table class="p-treenode-connector-table">
589
+ <tbody>
590
+ <tr>
591
+ <td [ngClass]="{ 'p-treenode-connector-line': !firstChild }"></td>
592
+ </tr>
593
+ <tr>
594
+ <td [ngClass]="{ 'p-treenode-connector-line': !lastChild }"></td>
595
+ </tr>
596
+ </tbody>
597
+ </table>
598
+ </td>
599
+ <td class="p-treenode" [ngClass]="{ 'p-treenode-collapsed': !node.expanded }">
600
+ <div
601
+ class="p-treenode-content"
602
+ tabindex="0"
603
+ [ngClass]="{ 'p-treenode-selectable': tree.selectionMode, 'p-highlight': isSelected() }"
604
+ (click)="onNodeClick($event)"
605
+ (contextmenu)="onNodeRightClick($event)"
606
+ (touchend)="onNodeTouchEnd()"
607
+ (keydown)="onNodeKeydown($event)"
608
+ >
609
+ <span *ngIf="!isLeaf()" [ngClass]="'p-tree-toggler'" (click)="toggle($event)">
610
+ <ng-container *ngIf="!tree.togglerIconTemplate">
611
+ <PlusIcon *ngIf="!node.expanded" [styleClass]="'p-tree-toggler-icon'" [ariaLabel]="tree.togglerAriaLabel"/>
612
+ <MinusIcon *ngIf="node.expanded" [styleClass]="'p-tree-toggler-icon'" [ariaLabel]="tree.togglerAriaLabel"/>
613
+ </ng-container>
614
+ <span *ngIf="tree.togglerIconTemplate" class="p-tree-toggler-icon">
615
+ <ng-template *ngTemplateOutlet="tree.togglerIconTemplate; context: { $implicit: node.expanded }"></ng-template>
616
+ </span>
617
+ </span>
618
+ <span [class]="getIcon()" *ngIf="node.icon || node.expandedIcon || node.collapsedIcon"></span>
619
+ <span class="p-treenode-label">
620
+ <span *ngIf="!tree.getTemplateForNode(node)">{{ node.label }}</span>
621
+ <span *ngIf="tree.getTemplateForNode(node)">
622
+ <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: { $implicit: node }"></ng-container>
623
+ </span>
624
+ </span>
625
+ </div>
626
+ </td>
627
+ <td class="p-treenode-children-container" *ngIf="node.children && node.expanded" [style.display]="node.expanded ? 'table-cell' : 'none'">
628
+ <div class="p-treenode-children">
629
+ <p-treeNode *ngFor="let childNode of node.children; let firstChild = first; let lastChild = last; trackBy: tree.trackBy" [node]="childNode" [firstChild]="firstChild" [lastChild]="lastChild"></p-treeNode>
630
+ </div>
631
+ </td>
632
+ </tr>
633
+ </tbody>
634
+ </table>
635
+ </ng-template>
636
+ `,
637
+ encapsulation: ViewEncapsulation.None,
638
+ host: {
639
+ class: 'p-element'
640
+ }
641
+ }]
642
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
643
+ type: Inject,
644
+ args: [forwardRef(() => Tree)]
645
+ }] }]; }, propDecorators: { rowNode: [{
646
+ type: Input
647
+ }], node: [{
648
+ type: Input
649
+ }], parentNode: [{
650
+ type: Input
651
+ }], root: [{
652
+ type: Input
653
+ }], index: [{
654
+ type: Input
655
+ }], firstChild: [{
656
+ type: Input
657
+ }], lastChild: [{
658
+ type: Input
659
+ }], level: [{
660
+ type: Input
661
+ }], indentation: [{
662
+ type: Input
663
+ }], itemSize: [{
664
+ type: Input
665
+ }] } });
666
+ export class Tree {
667
+ constructor(el, dragDropService, config, cd) {
668
+ this.el = el;
669
+ this.dragDropService = dragDropService;
670
+ this.config = config;
671
+ this.cd = cd;
672
+ this.layout = 'vertical';
673
+ this.metaKeySelection = true;
674
+ this.propagateSelectionUp = true;
675
+ this.propagateSelectionDown = true;
676
+ this.emptyMessage = '';
677
+ this.filterBy = 'label';
678
+ this.filterMode = 'lenient';
679
+ this.lazy = false;
680
+ this.indentation = 1.5;
681
+ this.trackBy = (index, item) => item;
682
+ this.selectionChange = new EventEmitter();
683
+ this.onNodeSelect = new EventEmitter();
684
+ this.onNodeUnselect = new EventEmitter();
685
+ this.onNodeExpand = new EventEmitter();
686
+ this.onNodeCollapse = new EventEmitter();
687
+ this.onNodeContextMenuSelect = new EventEmitter();
688
+ this.onNodeDrop = new EventEmitter();
689
+ this.onLazyLoad = new EventEmitter();
690
+ this.onScroll = new EventEmitter();
691
+ this.onScrollIndexChange = new EventEmitter();
692
+ this.onFilter = new EventEmitter();
693
+ }
694
+ get virtualNodeHeight() {
695
+ return this._virtualNodeHeight;
696
+ }
697
+ set virtualNodeHeight(val) {
698
+ this._virtualNodeHeight = val;
699
+ console.warn('The virtualNodeHeight property is deprecated, use virtualScrollItemSize property instead.');
700
+ }
701
+ ngOnInit() {
702
+ if (this.droppableNodes) {
703
+ this.dragStartSubscription = this.dragDropService.dragStart$.subscribe((event) => {
704
+ this.dragNodeTree = event.tree;
705
+ this.dragNode = event.node;
706
+ this.dragNodeSubNodes = event.subNodes;
707
+ this.dragNodeIndex = event.index;
708
+ this.dragNodeScope = event.scope;
709
+ });
710
+ this.dragStopSubscription = this.dragDropService.dragStop$.subscribe((event) => {
711
+ this.dragNodeTree = null;
712
+ this.dragNode = null;
713
+ this.dragNodeSubNodes = null;
714
+ this.dragNodeIndex = null;
715
+ this.dragNodeScope = null;
716
+ this.dragHover = false;
717
+ });
718
+ }
719
+ }
720
+ ngOnChanges(simpleChange) {
721
+ if (simpleChange.value) {
722
+ this.updateSerializedValue();
723
+ }
724
+ }
725
+ get horizontal() {
726
+ return this.layout == 'horizontal';
727
+ }
728
+ get emptyMessageLabel() {
729
+ return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
730
+ }
731
+ ngAfterContentInit() {
732
+ if (this.templates.length) {
733
+ this._templateMap = {};
734
+ }
735
+ this.templates.forEach((item) => {
736
+ switch (item.getType()) {
737
+ case 'header':
738
+ this.headerTemplate = item.template;
739
+ break;
740
+ case 'empty':
741
+ this.emptyMessageTemplate = item.template;
742
+ break;
743
+ case 'footer':
744
+ this.footerTemplate = item.template;
745
+ break;
746
+ case 'loader':
747
+ this.loaderTemplate = item.template;
748
+ break;
749
+ case 'togglericon':
750
+ this.togglerIconTemplate = item.template;
751
+ break;
752
+ case 'checkboxicon':
753
+ this.checkboxIconTemplate = item.template;
754
+ break;
755
+ case 'loadingicon':
756
+ this.loadingIconTemplate = item.template;
757
+ break;
758
+ case 'filtericon':
759
+ this.filterIconTemplate = item.template;
760
+ break;
761
+ default:
762
+ this._templateMap[item.name] = item.template;
763
+ break;
764
+ }
765
+ });
766
+ }
767
+ updateSerializedValue() {
768
+ this.serializedValue = [];
769
+ this.serializeNodes(null, this.getRootNode(), 0, true);
770
+ }
771
+ serializeNodes(parent, nodes, level, visible) {
772
+ if (nodes && nodes.length) {
773
+ for (let node of nodes) {
774
+ node.parent = parent;
775
+ const rowNode = {
776
+ node: node,
777
+ parent: parent,
778
+ level: level,
779
+ visible: visible && (parent ? parent.expanded : true)
780
+ };
781
+ this.serializedValue.push(rowNode);
782
+ if (rowNode.visible && node.expanded) {
783
+ this.serializeNodes(node, node.children, level + 1, rowNode.visible);
784
+ }
785
+ }
786
+ }
787
+ }
788
+ onNodeClick(event, node) {
789
+ let eventTarget = event.target;
790
+ if (DomHandler.hasClass(eventTarget, 'p-tree-toggler') || DomHandler.hasClass(eventTarget, 'p-tree-toggler-icon')) {
791
+ return;
792
+ }
793
+ else if (this.selectionMode) {
794
+ if (node.selectable === false) {
795
+ return;
796
+ }
797
+ if (this.hasFilteredNodes()) {
798
+ node = this.getNodeWithKey(node.key, this.value);
799
+ if (!node) {
800
+ return;
801
+ }
802
+ }
803
+ let index = this.findIndexInSelection(node);
804
+ let selected = index >= 0;
805
+ if (this.isCheckboxSelectionMode()) {
806
+ if (selected) {
807
+ if (this.propagateSelectionDown)
808
+ this.propagateDown(node, false);
809
+ else
810
+ this.selection = this.selection.filter((val, i) => i != index);
811
+ if (this.propagateSelectionUp && node.parent) {
812
+ this.propagateUp(node.parent, false);
813
+ }
814
+ this.selectionChange.emit(this.selection);
815
+ this.onNodeUnselect.emit({ originalEvent: event, node: node });
816
+ }
817
+ else {
818
+ if (this.propagateSelectionDown)
819
+ this.propagateDown(node, true);
820
+ else
821
+ this.selection = [...(this.selection || []), node];
822
+ if (this.propagateSelectionUp && node.parent) {
823
+ this.propagateUp(node.parent, true);
824
+ }
825
+ this.selectionChange.emit(this.selection);
826
+ this.onNodeSelect.emit({ originalEvent: event, node: node });
827
+ }
828
+ }
829
+ else {
830
+ let metaSelection = this.nodeTouched ? false : this.metaKeySelection;
831
+ if (metaSelection) {
832
+ let metaKey = event.metaKey || event.ctrlKey;
833
+ if (selected && metaKey) {
834
+ if (this.isSingleSelectionMode()) {
835
+ this.selectionChange.emit(null);
836
+ }
837
+ else {
838
+ this.selection = this.selection.filter((val, i) => i != index);
839
+ this.selectionChange.emit(this.selection);
840
+ }
841
+ this.onNodeUnselect.emit({ originalEvent: event, node: node });
842
+ }
843
+ else {
844
+ if (this.isSingleSelectionMode()) {
845
+ this.selectionChange.emit(node);
846
+ }
847
+ else if (this.isMultipleSelectionMode()) {
848
+ this.selection = !metaKey ? [] : this.selection || [];
849
+ this.selection = [...this.selection, node];
850
+ this.selectionChange.emit(this.selection);
851
+ }
852
+ this.onNodeSelect.emit({ originalEvent: event, node: node });
853
+ }
854
+ }
855
+ else {
856
+ if (this.isSingleSelectionMode()) {
857
+ if (selected) {
858
+ this.selection = null;
859
+ this.onNodeUnselect.emit({ originalEvent: event, node: node });
860
+ }
861
+ else {
862
+ this.selection = node;
863
+ this.onNodeSelect.emit({ originalEvent: event, node: node });
864
+ }
865
+ }
866
+ else {
867
+ if (selected) {
868
+ this.selection = this.selection.filter((val, i) => i != index);
869
+ this.onNodeUnselect.emit({ originalEvent: event, node: node });
870
+ }
871
+ else {
872
+ this.selection = [...(this.selection || []), node];
873
+ this.onNodeSelect.emit({ originalEvent: event, node: node });
874
+ }
875
+ }
876
+ this.selectionChange.emit(this.selection);
877
+ }
878
+ }
879
+ }
880
+ this.nodeTouched = false;
881
+ }
882
+ onNodeTouchEnd() {
883
+ this.nodeTouched = true;
884
+ }
885
+ onNodeRightClick(event, node) {
886
+ if (this.contextMenu) {
887
+ let eventTarget = event.target;
888
+ if (eventTarget.className && eventTarget.className.indexOf('p-tree-toggler') === 0) {
889
+ return;
890
+ }
891
+ else {
892
+ let index = this.findIndexInSelection(node);
893
+ let selected = index >= 0;
894
+ if (!selected) {
895
+ if (this.isSingleSelectionMode())
896
+ this.selectionChange.emit(node);
897
+ else
898
+ this.selectionChange.emit([node]);
899
+ }
900
+ this.contextMenu.show(event);
901
+ this.onNodeContextMenuSelect.emit({ originalEvent: event, node: node });
902
+ }
903
+ }
904
+ }
905
+ findIndexInSelection(node) {
906
+ let index = -1;
907
+ if (this.selectionMode && this.selection) {
908
+ if (this.isSingleSelectionMode()) {
909
+ let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;
910
+ index = areNodesEqual ? 0 : -1;
911
+ }
912
+ else {
913
+ for (let i = 0; i < this.selection.length; i++) {
914
+ let selectedNode = this.selection[i];
915
+ let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;
916
+ if (areNodesEqual) {
917
+ index = i;
918
+ break;
919
+ }
920
+ }
921
+ }
922
+ }
923
+ return index;
924
+ }
925
+ syncNodeOption(node, parentNodes, option, value) {
926
+ // to synchronize the node option between the filtered nodes and the original nodes(this.value)
927
+ const _node = this.hasFilteredNodes() ? this.getNodeWithKey(node.key, parentNodes) : null;
928
+ if (_node) {
929
+ _node[option] = value || node[option];
930
+ }
931
+ }
932
+ hasFilteredNodes() {
933
+ return this.filter && this.filteredNodes && this.filteredNodes.length;
934
+ }
935
+ getNodeWithKey(key, nodes) {
936
+ for (let node of nodes) {
937
+ if (node.key === key) {
938
+ return node;
939
+ }
940
+ if (node.children) {
941
+ let matchedNode = this.getNodeWithKey(key, node.children);
942
+ if (matchedNode) {
943
+ return matchedNode;
944
+ }
945
+ }
946
+ }
947
+ }
948
+ propagateUp(node, select) {
949
+ if (node.children && node.children.length) {
950
+ let selectedCount = 0;
951
+ let childPartialSelected = false;
952
+ for (let child of node.children) {
953
+ if (this.isSelected(child)) {
954
+ selectedCount++;
955
+ }
956
+ else if (child.partialSelected) {
957
+ childPartialSelected = true;
958
+ }
959
+ }
960
+ if (select && selectedCount == node.children.length) {
961
+ this.selection = [...(this.selection || []), node];
962
+ node.partialSelected = false;
963
+ }
964
+ else {
965
+ if (!select) {
966
+ let index = this.findIndexInSelection(node);
967
+ if (index >= 0) {
968
+ this.selection = this.selection.filter((val, i) => i != index);
969
+ }
970
+ }
971
+ if (childPartialSelected || (selectedCount > 0 && selectedCount != node.children.length))
972
+ node.partialSelected = true;
973
+ else
974
+ node.partialSelected = false;
975
+ }
976
+ this.syncNodeOption(node, this.filteredNodes, 'partialSelected');
977
+ }
978
+ let parent = node.parent;
979
+ if (parent) {
980
+ this.propagateUp(parent, select);
981
+ }
982
+ }
983
+ propagateDown(node, select) {
984
+ let index = this.findIndexInSelection(node);
985
+ if (select && index == -1) {
986
+ this.selection = [...(this.selection || []), node];
987
+ }
988
+ else if (!select && index > -1) {
989
+ this.selection = this.selection.filter((val, i) => i != index);
990
+ }
991
+ node.partialSelected = false;
992
+ this.syncNodeOption(node, this.filteredNodes, 'partialSelected');
993
+ if (node.children && node.children.length) {
994
+ for (let child of node.children) {
995
+ this.propagateDown(child, select);
996
+ }
997
+ }
998
+ }
999
+ isSelected(node) {
1000
+ return this.findIndexInSelection(node) != -1;
1001
+ }
1002
+ isSingleSelectionMode() {
1003
+ return this.selectionMode && this.selectionMode == 'single';
1004
+ }
1005
+ isMultipleSelectionMode() {
1006
+ return this.selectionMode && this.selectionMode == 'multiple';
1007
+ }
1008
+ isCheckboxSelectionMode() {
1009
+ return this.selectionMode && this.selectionMode == 'checkbox';
1010
+ }
1011
+ isNodeLeaf(node) {
1012
+ return node.leaf == false ? false : !(node.children && node.children.length);
1013
+ }
1014
+ getRootNode() {
1015
+ return this.filteredNodes ? this.filteredNodes : this.value;
1016
+ }
1017
+ getTemplateForNode(node) {
1018
+ if (this._templateMap)
1019
+ return node.type ? this._templateMap[node.type] : this._templateMap['default'];
1020
+ else
1021
+ return null;
1022
+ }
1023
+ onDragOver(event) {
1024
+ if (this.droppableNodes && (!this.value || this.value.length === 0)) {
1025
+ event.dataTransfer.dropEffect = 'move';
1026
+ event.preventDefault();
1027
+ }
1028
+ }
1029
+ onDrop(event) {
1030
+ if (this.droppableNodes && (!this.value || this.value.length === 0)) {
1031
+ event.preventDefault();
1032
+ let dragNode = this.dragNode;
1033
+ if (this.allowDrop(dragNode, null, this.dragNodeScope)) {
1034
+ let dragNodeIndex = this.dragNodeIndex;
1035
+ this.value = this.value || [];
1036
+ if (this.validateDrop) {
1037
+ this.onNodeDrop.emit({
1038
+ originalEvent: event,
1039
+ dragNode: dragNode,
1040
+ dropNode: null,
1041
+ index: dragNodeIndex,
1042
+ accept: () => {
1043
+ this.processTreeDrop(dragNode, dragNodeIndex);
1044
+ }
1045
+ });
1046
+ }
1047
+ else {
1048
+ this.onNodeDrop.emit({
1049
+ originalEvent: event,
1050
+ dragNode: dragNode,
1051
+ dropNode: null,
1052
+ index: dragNodeIndex
1053
+ });
1054
+ this.processTreeDrop(dragNode, dragNodeIndex);
1055
+ }
1056
+ }
1057
+ }
1058
+ }
1059
+ processTreeDrop(dragNode, dragNodeIndex) {
1060
+ this.dragNodeSubNodes.splice(dragNodeIndex, 1);
1061
+ this.value.push(dragNode);
1062
+ this.dragDropService.stopDrag({
1063
+ node: dragNode
1064
+ });
1065
+ }
1066
+ onDragEnter() {
1067
+ if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {
1068
+ this.dragHover = true;
1069
+ }
1070
+ }
1071
+ onDragLeave(event) {
1072
+ if (this.droppableNodes) {
1073
+ let rect = event.currentTarget.getBoundingClientRect();
1074
+ if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {
1075
+ this.dragHover = false;
1076
+ }
1077
+ }
1078
+ }
1079
+ allowDrop(dragNode, dropNode, dragNodeScope) {
1080
+ if (!dragNode) {
1081
+ //prevent random html elements to be dragged
1082
+ return false;
1083
+ }
1084
+ else if (this.isValidDragScope(dragNodeScope)) {
1085
+ let allow = true;
1086
+ if (dropNode) {
1087
+ if (dragNode === dropNode) {
1088
+ allow = false;
1089
+ }
1090
+ else {
1091
+ let parent = dropNode.parent;
1092
+ while (parent != null) {
1093
+ if (parent === dragNode) {
1094
+ allow = false;
1095
+ break;
1096
+ }
1097
+ parent = parent.parent;
1098
+ }
1099
+ }
1100
+ }
1101
+ return allow;
1102
+ }
1103
+ else {
1104
+ return false;
1105
+ }
1106
+ }
1107
+ isValidDragScope(dragScope) {
1108
+ let dropScope = this.droppableScope;
1109
+ if (dropScope) {
1110
+ if (typeof dropScope === 'string') {
1111
+ if (typeof dragScope === 'string')
1112
+ return dropScope === dragScope;
1113
+ else if (Array.isArray(dragScope))
1114
+ return dragScope.indexOf(dropScope) != -1;
1115
+ }
1116
+ else if (Array.isArray(dropScope)) {
1117
+ if (typeof dragScope === 'string') {
1118
+ return dropScope.indexOf(dragScope) != -1;
1119
+ }
1120
+ else if (Array.isArray(dragScope)) {
1121
+ for (let s of dropScope) {
1122
+ for (let ds of dragScope) {
1123
+ if (s === ds) {
1124
+ return true;
1125
+ }
1126
+ }
1127
+ }
1128
+ }
1129
+ }
1130
+ return false;
1131
+ }
1132
+ else {
1133
+ return true;
1134
+ }
1135
+ }
1136
+ _filter(value) {
1137
+ let filterValue = value;
1138
+ if (filterValue === '') {
1139
+ this.filteredNodes = null;
1140
+ }
1141
+ else {
1142
+ this.filteredNodes = [];
1143
+ const searchFields = this.filterBy.split(',');
1144
+ const filterText = ObjectUtils.removeAccents(filterValue).toLocaleLowerCase(this.filterLocale);
1145
+ const isStrictMode = this.filterMode === 'strict';
1146
+ for (let node of this.value) {
1147
+ let copyNode = { ...node };
1148
+ let paramsWithoutNode = { searchFields, filterText, isStrictMode };
1149
+ if ((isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||
1150
+ (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {
1151
+ this.filteredNodes.push(copyNode);
1152
+ }
1153
+ }
1154
+ }
1155
+ this.updateSerializedValue();
1156
+ this.onFilter.emit({
1157
+ filter: filterValue,
1158
+ filteredValue: this.filteredNodes
1159
+ });
1160
+ }
1161
+ resetFilter() {
1162
+ this.filteredNodes = null;
1163
+ if (this.filterViewChild && this.filterViewChild.nativeElement) {
1164
+ this.filterViewChild.nativeElement.value = '';
1165
+ }
1166
+ }
1167
+ scrollToVirtualIndex(index) {
1168
+ this.virtualScroll && this.scroller.scrollToIndex(index);
1169
+ }
1170
+ scrollTo(options) {
1171
+ if (this.virtualScroll) {
1172
+ this.scroller.scrollTo(options);
1173
+ }
1174
+ else if (this.wrapperViewChild && this.wrapperViewChild.nativeElement) {
1175
+ if (this.wrapperViewChild.nativeElement.scrollTo) {
1176
+ this.wrapperViewChild.nativeElement.scrollTo(options);
1177
+ }
1178
+ else {
1179
+ this.wrapperViewChild.nativeElement.scrollLeft = options.left;
1180
+ this.wrapperViewChild.nativeElement.scrollTop = options.top;
1181
+ }
1182
+ }
1183
+ }
1184
+ findFilteredNodes(node, paramsWithoutNode) {
1185
+ if (node) {
1186
+ let matched = false;
1187
+ if (node.children) {
1188
+ let childNodes = [...node.children];
1189
+ node.children = [];
1190
+ for (let childNode of childNodes) {
1191
+ let copyChildNode = { ...childNode };
1192
+ if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {
1193
+ matched = true;
1194
+ node.children.push(copyChildNode);
1195
+ }
1196
+ }
1197
+ }
1198
+ if (matched) {
1199
+ node.expanded = true;
1200
+ return true;
1201
+ }
1202
+ }
1203
+ }
1204
+ isFilterMatched(node, { searchFields, filterText, isStrictMode }) {
1205
+ let matched = false;
1206
+ for (let field of searchFields) {
1207
+ let fieldValue = ObjectUtils.removeAccents(String(ObjectUtils.resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale);
1208
+ if (fieldValue.indexOf(filterText) > -1) {
1209
+ matched = true;
1210
+ }
1211
+ }
1212
+ if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {
1213
+ matched = this.findFilteredNodes(node, { searchFields, filterText, isStrictMode }) || matched;
1214
+ }
1215
+ return matched;
1216
+ }
1217
+ getIndex(options, index) {
1218
+ const getItemOptions = options['getItemOptions'];
1219
+ return getItemOptions ? getItemOptions(index).index : index;
1220
+ }
1221
+ getBlockableElement() {
1222
+ return this.el.nativeElement.children[0];
1223
+ }
1224
+ ngOnDestroy() {
1225
+ if (this.dragStartSubscription) {
1226
+ this.dragStartSubscription.unsubscribe();
1227
+ }
1228
+ if (this.dragStopSubscription) {
1229
+ this.dragStopSubscription.unsubscribe();
1230
+ }
1231
+ }
1232
+ }
1233
+ Tree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Tree, deps: [{ token: i0.ElementRef }, { token: i3.TreeDragDropService, optional: true }, { token: i3.ParallelUIAngularConfig }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1234
+ Tree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: Tree, selector: "p-tree", inputs: { value: "value", selectionMode: "selectionMode", selection: "selection", style: "style", styleClass: "styleClass", contextMenu: "contextMenu", layout: "layout", draggableScope: "draggableScope", droppableScope: "droppableScope", draggableNodes: "draggableNodes", droppableNodes: "droppableNodes", metaKeySelection: "metaKeySelection", propagateSelectionUp: "propagateSelectionUp", propagateSelectionDown: "propagateSelectionDown", loading: "loading", loadingIcon: "loadingIcon", emptyMessage: "emptyMessage", ariaLabel: "ariaLabel", togglerAriaLabel: "togglerAriaLabel", ariaLabelledBy: "ariaLabelledBy", validateDrop: "validateDrop", filter: "filter", filterBy: "filterBy", filterMode: "filterMode", filterPlaceholder: "filterPlaceholder", filteredNodes: "filteredNodes", filterLocale: "filterLocale", scrollHeight: "scrollHeight", lazy: "lazy", virtualScroll: "virtualScroll", virtualScrollItemSize: "virtualScrollItemSize", virtualScrollOptions: "virtualScrollOptions", indentation: "indentation", _templateMap: "_templateMap", trackBy: "trackBy", virtualNodeHeight: "virtualNodeHeight" }, outputs: { selectionChange: "selectionChange", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onNodeContextMenuSelect: "onNodeContextMenuSelect", onNodeDrop: "onNodeDrop", onLazyLoad: "onLazyLoad", onScroll: "onScroll", onScrollIndexChange: "onScrollIndexChange", onFilter: "onFilter" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: QiusTemplate }], viewQueries: [{ propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "wrapperViewChild", first: true, predicate: ["wrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
1235
+ <div
1236
+ [ngClass]="{ 'p-tree p-component': true, 'p-tree-selectable': selectionMode, 'p-treenode-dragover': dragHover, 'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex' }"
1237
+ [ngStyle]="style"
1238
+ [class]="styleClass"
1239
+ *ngIf="!horizontal"
1240
+ (drop)="onDrop($event)"
1241
+ (dragover)="onDragOver($event)"
1242
+ (dragenter)="onDragEnter()"
1243
+ (dragleave)="onDragLeave($event)"
1244
+ >
1245
+ <div class="p-tree-loading-overlay p-component-overlay" *ngIf="loading">
1246
+ <i *ngIf="loadingIcon" [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
1247
+ <ng-container *ngIf="!loadingIcon">
1248
+ <SpinnerIcon *ngIf="!loadingIconTemplate" [spin]="true" [styleClass]="'p-tree-loading-icon'"/>
1249
+ <span *ngIf="loadingIconTemplate" class="p-tree-loading-icon">
1250
+ <ng-template *ngTemplateOutlet="loadingIconTemplate"></ng-template>
1251
+ </span>
1252
+ </ng-container>
1253
+ </div>
1254
+ <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
1255
+ <div *ngIf="filter" class="p-tree-filter-container">
1256
+ <input #filter type="text" autocomplete="off" class="p-tree-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder" (keydown.enter)="$event.preventDefault()" (input)="_filter($event.target.value)" />
1257
+ <SearchIcon *ngIf="!filterIconTemplate" [styleClass]="'p-tree-filter-icon'"/>
1258
+ <span *ngIf="filterIconTemplate" class="p-tree-filter-icon">
1259
+ <ng-template *ngTemplateOutlet="filterIconTemplate"></ng-template>
1260
+ </span>
1261
+ </div>
1262
+
1263
+ <p-scroller
1264
+ #scroller
1265
+ *ngIf="virtualScroll"
1266
+ [items]="serializedValue"
1267
+ [tabindex]="-1"
1268
+ styleClass="p-tree-wrapper"
1269
+ [style]="{ height: scrollHeight !== 'flex' ? scrollHeight : undefined }"
1270
+ [scrollHeight]="scrollHeight !== 'flex' ? undefined : '100%'"
1271
+ [itemSize]="virtualScrollItemSize || _virtualNodeHeight"
1272
+ [lazy]="lazy"
1273
+ (onScroll)="onScroll.emit($event)"
1274
+ (onScrollIndexChange)="onScrollIndexChange.emit($event)"
1275
+ (onLazyLoad)="onLazyLoad.emit($event)"
1276
+ [options]="virtualScrollOptions"
1277
+ >
1278
+ <ng-template pTemplate="content" let-items let-scrollerOptions="options">
1279
+ <ul *ngIf="items" class="p-tree-container" [ngClass]="scrollerOptions.contentStyleClass" [style]="scrollerOptions.contentStyle" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
1280
+ <p-treeNode
1281
+ #treeNode
1282
+ *ngFor="let rowNode of items; let firstChild = first; let lastChild = last; let index = index; trackBy: trackBy"
1283
+ [level]="rowNode.level"
1284
+ [rowNode]="rowNode"
1285
+ [node]="rowNode.node"
1286
+ [firstChild]="firstChild"
1287
+ [lastChild]="lastChild"
1288
+ [index]="getIndex(scrollerOptions, index)"
1289
+ [itemSize]="scrollerOptions.itemSize"
1290
+ [indentation]="indentation"
1291
+ ></p-treeNode>
1292
+ </ul>
1293
+ </ng-template>
1294
+ <ng-container *ngIf="loaderTemplate">
1295
+ <ng-template pTemplate="loader" let-scrollerOptions="options">
1296
+ <ng-container *ngTemplateOutlet="loaderTemplate; context: { options: scrollerOptions }"></ng-container>
1297
+ </ng-template>
1298
+ </ng-container>
1299
+ </p-scroller>
1300
+ <ng-container *ngIf="!virtualScroll">
1301
+ <div #wrapper class="p-tree-wrapper" [style.max-height]="scrollHeight">
1302
+ <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
1303
+ <p-treeNode
1304
+ *ngFor="let node of getRootNode(); let firstChild = first; let lastChild = last; let index = index; trackBy: trackBy"
1305
+ [node]="node"
1306
+ [firstChild]="firstChild"
1307
+ [lastChild]="lastChild"
1308
+ [index]="index"
1309
+ [level]="0"
1310
+ ></p-treeNode>
1311
+ </ul>
1312
+ </div>
1313
+ </ng-container>
1314
+
1315
+ <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
1316
+ <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
1317
+ {{ emptyMessageLabel }}
1318
+ </ng-container>
1319
+ <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
1320
+ </div>
1321
+ <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
1322
+ </div>
1323
+ <div [ngClass]="{ 'p-tree p-tree-horizontal p-component': true, 'p-tree-selectable': selectionMode }" [ngStyle]="style" [class]="styleClass" *ngIf="horizontal">
1324
+ <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
1325
+ <div class="p-tree-loading-mask p-component-overlay" *ngIf="loading">
1326
+ <i *ngIf="loadingIcon" [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
1327
+ <ng-container *ngIf="!loadingIcon">
1328
+ <SpinnerIcon *ngIf="!loadingIconTemplate" [spin]="true" [styleClass]="'p-tree-loading-icon'"/>
1329
+ <span *ngIf="loadingIconTemplate" class="p-tree-loading-icon">
1330
+ <ng-template *ngTemplateOutlet="loadingIconTemplate"></ng-template>
1331
+ </span>
1332
+ </ng-container>
1333
+ </div>
1334
+ <table *ngIf="value && value[0]">
1335
+ <p-treeNode [node]="value[0]" [root]="true"></p-treeNode>
1336
+ </table>
1337
+ <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
1338
+ <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
1339
+ {{ emptyMessageLabel }}
1340
+ </ng-container>
1341
+ <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
1342
+ </div>
1343
+ <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
1344
+ </div>
1345
+ `, isInline: true, styles: [".p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}.p-treenode-children{margin:0;padding:0;list-style-type:none}.p-tree-wrapper{overflow:auto}.p-treenode-selectable{cursor:pointer;-webkit-user-select:none;user-select:none}.p-tree-toggler{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative;flex-shrink:0}.p-treenode-leaf>.p-treenode-content .p-tree-toggler{visibility:hidden}.p-treenode-content{display:flex;align-items:center}.p-tree-filter{width:100%}.p-tree-filter-container{position:relative;display:block;width:100%}.p-tree-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-tree-loading{position:relative;min-height:4rem}.p-tree .p-tree-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-tree-flex-scrollable{display:flex;flex:1;height:100%;flex-direction:column}.p-tree-flex-scrollable .p-tree-wrapper{flex:1}.p-tree .p-treenode-droppoint{height:4px;list-style-type:none}.p-tree .p-treenode-droppoint-active{border:0 none}.p-tree-horizontal{width:auto;padding-left:0;padding-right:0;overflow:auto}.p-tree.p-tree-horizontal table,.p-tree.p-tree-horizontal tr,.p-tree.p-tree-horizontal td{border-collapse:collapse;margin:0;padding:0;vertical-align:middle}.p-tree-horizontal .p-treenode-content{font-weight:400;padding:.4em 1em .4em .2em;display:flex;align-items:center}.p-tree-horizontal .p-treenode-parent .p-treenode-content{font-weight:400;white-space:nowrap}.p-tree.p-tree-horizontal .p-treenode{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-x scroll center center transparent;padding:.25rem 2.5rem}.p-tree.p-tree-horizontal .p-treenode.p-treenode-leaf,.p-tree.p-tree-horizontal .p-treenode.p-treenode-collapsed{padding-right:0}.p-tree.p-tree-horizontal .p-treenode-children{padding:0;margin:0}.p-tree.p-tree-horizontal .p-treenode-connector{width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-table{height:100%;width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-line{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-y scroll 0 0 transparent;width:1px}.p-tree.p-tree-horizontal table{height:0}.p-scroller .p-tree-container{overflow:visible}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.QiusTemplate; }), selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i0.forwardRef(function () { return i4.Scroller; }), selector: "p-scroller", inputs: ["id", "style", "styleClass", "tabindex", "items", "itemSize", "scrollHeight", "scrollWidth", "orientation", "step", "delay", "resizeDelay", "appendOnly", "inline", "lazy", "disabled", "loaderDisabled", "columns", "showSpacer", "showLoader", "numToleratedItems", "loading", "autoSize", "trackBy", "options"], outputs: ["onLazyLoad", "onScroll", "onScrollIndexChange"] }, { kind: "component", type: i0.forwardRef(function () { return SearchIcon; }), selector: "SearchIcon" }, { kind: "component", type: i0.forwardRef(function () { return SpinnerIcon; }), selector: "SpinnerIcon" }, { kind: "component", type: i0.forwardRef(function () { return UITreeNode; }), selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation", "itemSize"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
1346
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Tree, decorators: [{
1347
+ type: Component,
1348
+ args: [{ selector: 'p-tree', template: `
1349
+ <div
1350
+ [ngClass]="{ 'p-tree p-component': true, 'p-tree-selectable': selectionMode, 'p-treenode-dragover': dragHover, 'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex' }"
1351
+ [ngStyle]="style"
1352
+ [class]="styleClass"
1353
+ *ngIf="!horizontal"
1354
+ (drop)="onDrop($event)"
1355
+ (dragover)="onDragOver($event)"
1356
+ (dragenter)="onDragEnter()"
1357
+ (dragleave)="onDragLeave($event)"
1358
+ >
1359
+ <div class="p-tree-loading-overlay p-component-overlay" *ngIf="loading">
1360
+ <i *ngIf="loadingIcon" [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
1361
+ <ng-container *ngIf="!loadingIcon">
1362
+ <SpinnerIcon *ngIf="!loadingIconTemplate" [spin]="true" [styleClass]="'p-tree-loading-icon'"/>
1363
+ <span *ngIf="loadingIconTemplate" class="p-tree-loading-icon">
1364
+ <ng-template *ngTemplateOutlet="loadingIconTemplate"></ng-template>
1365
+ </span>
1366
+ </ng-container>
1367
+ </div>
1368
+ <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
1369
+ <div *ngIf="filter" class="p-tree-filter-container">
1370
+ <input #filter type="text" autocomplete="off" class="p-tree-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder" (keydown.enter)="$event.preventDefault()" (input)="_filter($event.target.value)" />
1371
+ <SearchIcon *ngIf="!filterIconTemplate" [styleClass]="'p-tree-filter-icon'"/>
1372
+ <span *ngIf="filterIconTemplate" class="p-tree-filter-icon">
1373
+ <ng-template *ngTemplateOutlet="filterIconTemplate"></ng-template>
1374
+ </span>
1375
+ </div>
1376
+
1377
+ <p-scroller
1378
+ #scroller
1379
+ *ngIf="virtualScroll"
1380
+ [items]="serializedValue"
1381
+ [tabindex]="-1"
1382
+ styleClass="p-tree-wrapper"
1383
+ [style]="{ height: scrollHeight !== 'flex' ? scrollHeight : undefined }"
1384
+ [scrollHeight]="scrollHeight !== 'flex' ? undefined : '100%'"
1385
+ [itemSize]="virtualScrollItemSize || _virtualNodeHeight"
1386
+ [lazy]="lazy"
1387
+ (onScroll)="onScroll.emit($event)"
1388
+ (onScrollIndexChange)="onScrollIndexChange.emit($event)"
1389
+ (onLazyLoad)="onLazyLoad.emit($event)"
1390
+ [options]="virtualScrollOptions"
1391
+ >
1392
+ <ng-template pTemplate="content" let-items let-scrollerOptions="options">
1393
+ <ul *ngIf="items" class="p-tree-container" [ngClass]="scrollerOptions.contentStyleClass" [style]="scrollerOptions.contentStyle" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
1394
+ <p-treeNode
1395
+ #treeNode
1396
+ *ngFor="let rowNode of items; let firstChild = first; let lastChild = last; let index = index; trackBy: trackBy"
1397
+ [level]="rowNode.level"
1398
+ [rowNode]="rowNode"
1399
+ [node]="rowNode.node"
1400
+ [firstChild]="firstChild"
1401
+ [lastChild]="lastChild"
1402
+ [index]="getIndex(scrollerOptions, index)"
1403
+ [itemSize]="scrollerOptions.itemSize"
1404
+ [indentation]="indentation"
1405
+ ></p-treeNode>
1406
+ </ul>
1407
+ </ng-template>
1408
+ <ng-container *ngIf="loaderTemplate">
1409
+ <ng-template pTemplate="loader" let-scrollerOptions="options">
1410
+ <ng-container *ngTemplateOutlet="loaderTemplate; context: { options: scrollerOptions }"></ng-container>
1411
+ </ng-template>
1412
+ </ng-container>
1413
+ </p-scroller>
1414
+ <ng-container *ngIf="!virtualScroll">
1415
+ <div #wrapper class="p-tree-wrapper" [style.max-height]="scrollHeight">
1416
+ <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
1417
+ <p-treeNode
1418
+ *ngFor="let node of getRootNode(); let firstChild = first; let lastChild = last; let index = index; trackBy: trackBy"
1419
+ [node]="node"
1420
+ [firstChild]="firstChild"
1421
+ [lastChild]="lastChild"
1422
+ [index]="index"
1423
+ [level]="0"
1424
+ ></p-treeNode>
1425
+ </ul>
1426
+ </div>
1427
+ </ng-container>
1428
+
1429
+ <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
1430
+ <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
1431
+ {{ emptyMessageLabel }}
1432
+ </ng-container>
1433
+ <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
1434
+ </div>
1435
+ <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
1436
+ </div>
1437
+ <div [ngClass]="{ 'p-tree p-tree-horizontal p-component': true, 'p-tree-selectable': selectionMode }" [ngStyle]="style" [class]="styleClass" *ngIf="horizontal">
1438
+ <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
1439
+ <div class="p-tree-loading-mask p-component-overlay" *ngIf="loading">
1440
+ <i *ngIf="loadingIcon" [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
1441
+ <ng-container *ngIf="!loadingIcon">
1442
+ <SpinnerIcon *ngIf="!loadingIconTemplate" [spin]="true" [styleClass]="'p-tree-loading-icon'"/>
1443
+ <span *ngIf="loadingIconTemplate" class="p-tree-loading-icon">
1444
+ <ng-template *ngTemplateOutlet="loadingIconTemplate"></ng-template>
1445
+ </span>
1446
+ </ng-container>
1447
+ </div>
1448
+ <table *ngIf="value && value[0]">
1449
+ <p-treeNode [node]="value[0]" [root]="true"></p-treeNode>
1450
+ </table>
1451
+ <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
1452
+ <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
1453
+ {{ emptyMessageLabel }}
1454
+ </ng-container>
1455
+ <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
1456
+ </div>
1457
+ <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
1458
+ </div>
1459
+ `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
1460
+ class: 'p-element'
1461
+ }, styles: [".p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}.p-treenode-children{margin:0;padding:0;list-style-type:none}.p-tree-wrapper{overflow:auto}.p-treenode-selectable{cursor:pointer;-webkit-user-select:none;user-select:none}.p-tree-toggler{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative;flex-shrink:0}.p-treenode-leaf>.p-treenode-content .p-tree-toggler{visibility:hidden}.p-treenode-content{display:flex;align-items:center}.p-tree-filter{width:100%}.p-tree-filter-container{position:relative;display:block;width:100%}.p-tree-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-tree-loading{position:relative;min-height:4rem}.p-tree .p-tree-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-tree-flex-scrollable{display:flex;flex:1;height:100%;flex-direction:column}.p-tree-flex-scrollable .p-tree-wrapper{flex:1}.p-tree .p-treenode-droppoint{height:4px;list-style-type:none}.p-tree .p-treenode-droppoint-active{border:0 none}.p-tree-horizontal{width:auto;padding-left:0;padding-right:0;overflow:auto}.p-tree.p-tree-horizontal table,.p-tree.p-tree-horizontal tr,.p-tree.p-tree-horizontal td{border-collapse:collapse;margin:0;padding:0;vertical-align:middle}.p-tree-horizontal .p-treenode-content{font-weight:400;padding:.4em 1em .4em .2em;display:flex;align-items:center}.p-tree-horizontal .p-treenode-parent .p-treenode-content{font-weight:400;white-space:nowrap}.p-tree.p-tree-horizontal .p-treenode{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-x scroll center center transparent;padding:.25rem 2.5rem}.p-tree.p-tree-horizontal .p-treenode.p-treenode-leaf,.p-tree.p-tree-horizontal .p-treenode.p-treenode-collapsed{padding-right:0}.p-tree.p-tree-horizontal .p-treenode-children{padding:0;margin:0}.p-tree.p-tree-horizontal .p-treenode-connector{width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-table{height:100%;width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-line{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-y scroll 0 0 transparent;width:1px}.p-tree.p-tree-horizontal table{height:0}.p-scroller .p-tree-container{overflow:visible}\n"] }]
1462
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i3.TreeDragDropService, decorators: [{
1463
+ type: Optional
1464
+ }] }, { type: i3.ParallelUIAngularConfig }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
1465
+ type: Input
1466
+ }], selectionMode: [{
1467
+ type: Input
1468
+ }], selection: [{
1469
+ type: Input
1470
+ }], style: [{
1471
+ type: Input
1472
+ }], styleClass: [{
1473
+ type: Input
1474
+ }], contextMenu: [{
1475
+ type: Input
1476
+ }], layout: [{
1477
+ type: Input
1478
+ }], draggableScope: [{
1479
+ type: Input
1480
+ }], droppableScope: [{
1481
+ type: Input
1482
+ }], draggableNodes: [{
1483
+ type: Input
1484
+ }], droppableNodes: [{
1485
+ type: Input
1486
+ }], metaKeySelection: [{
1487
+ type: Input
1488
+ }], propagateSelectionUp: [{
1489
+ type: Input
1490
+ }], propagateSelectionDown: [{
1491
+ type: Input
1492
+ }], loading: [{
1493
+ type: Input
1494
+ }], loadingIcon: [{
1495
+ type: Input
1496
+ }], emptyMessage: [{
1497
+ type: Input
1498
+ }], ariaLabel: [{
1499
+ type: Input
1500
+ }], togglerAriaLabel: [{
1501
+ type: Input
1502
+ }], ariaLabelledBy: [{
1503
+ type: Input
1504
+ }], validateDrop: [{
1505
+ type: Input
1506
+ }], filter: [{
1507
+ type: Input
1508
+ }], filterBy: [{
1509
+ type: Input
1510
+ }], filterMode: [{
1511
+ type: Input
1512
+ }], filterPlaceholder: [{
1513
+ type: Input
1514
+ }], filteredNodes: [{
1515
+ type: Input
1516
+ }], filterLocale: [{
1517
+ type: Input
1518
+ }], scrollHeight: [{
1519
+ type: Input
1520
+ }], lazy: [{
1521
+ type: Input
1522
+ }], virtualScroll: [{
1523
+ type: Input
1524
+ }], virtualScrollItemSize: [{
1525
+ type: Input
1526
+ }], virtualScrollOptions: [{
1527
+ type: Input
1528
+ }], indentation: [{
1529
+ type: Input
1530
+ }], _templateMap: [{
1531
+ type: Input
1532
+ }], trackBy: [{
1533
+ type: Input
1534
+ }], selectionChange: [{
1535
+ type: Output
1536
+ }], onNodeSelect: [{
1537
+ type: Output
1538
+ }], onNodeUnselect: [{
1539
+ type: Output
1540
+ }], onNodeExpand: [{
1541
+ type: Output
1542
+ }], onNodeCollapse: [{
1543
+ type: Output
1544
+ }], onNodeContextMenuSelect: [{
1545
+ type: Output
1546
+ }], onNodeDrop: [{
1547
+ type: Output
1548
+ }], onLazyLoad: [{
1549
+ type: Output
1550
+ }], onScroll: [{
1551
+ type: Output
1552
+ }], onScrollIndexChange: [{
1553
+ type: Output
1554
+ }], onFilter: [{
1555
+ type: Output
1556
+ }], templates: [{
1557
+ type: ContentChildren,
1558
+ args: [QiusTemplate]
1559
+ }], filterViewChild: [{
1560
+ type: ViewChild,
1561
+ args: ['filter']
1562
+ }], scroller: [{
1563
+ type: ViewChild,
1564
+ args: ['scroller']
1565
+ }], wrapperViewChild: [{
1566
+ type: ViewChild,
1567
+ args: ['wrapper']
1568
+ }], virtualNodeHeight: [{
1569
+ type: Input
1570
+ }] } });
1571
+ export class TreeModule {
1572
+ }
1573
+ TreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1574
+ TreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TreeModule, declarations: [Tree, UITreeNode], imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, CheckIcon, ChevronDownIcon, ChevronRightIcon, MinusIcon, SearchIcon, SpinnerIcon], exports: [Tree, SharedModule, ScrollerModule] });
1575
+ TreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TreeModule, imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, CheckIcon, ChevronDownIcon, ChevronRightIcon, MinusIcon, SearchIcon, SpinnerIcon, SharedModule, ScrollerModule] });
1576
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TreeModule, decorators: [{
1577
+ type: NgModule,
1578
+ args: [{
1579
+ imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, CheckIcon, ChevronDownIcon, ChevronRightIcon, MinusIcon, SearchIcon, SpinnerIcon],
1580
+ exports: [Tree, SharedModule, ScrollerModule],
1581
+ declarations: [Tree, UITreeNode]
1582
+ }]
1583
+ }] });
1584
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90cmVlL3RyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUlSLFFBQVEsRUFDUixNQUFNLEVBSU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdDLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFpQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzNLLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUUsT0FBTyxFQUFZLGNBQWMsRUFBbUIsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7Ozs7O0FBaUpoRixNQUFNLE9BQU8sVUFBVTtJQTJCbkIsWUFBNEMsSUFBSTtRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQVksQ0FB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LEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQ3BJLFlBQVksRUFBRSxjQUFjOzRGQUduQyxVQUFVO2tCQUx0QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDO29CQUNySixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLGNBQWMsQ0FBQztvQkFDN0MsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJsb2NrYWJsZVVJLCBQYXJhbGxlbFVJQW5ndWxhckNvbmZpZywgUWl1c1RlbXBsYXRlLCBTaGFyZWRNb2R1bGUsIFRyYW5zbGF0aW9uS2V5cywgVHJlZURyYWdEcm9wU2VydmljZSwgVHJlZU5vZGUgfSBmcm9tICdAcWl1cy5zb2x1dGlvbnMvcGFyYWxsZWwtdWktYW5ndWxhci9hcGknO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ0BxaXVzLnNvbHV0aW9ucy9wYXJhbGxlbC11aS1hbmd1bGFyL2RvbSc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdAcWl1cy5zb2x1dGlvbnMvcGFyYWxsZWwtdWktYW5ndWxhci9yaXBwbGUnO1xuaW1wb3J0IHsgU2Nyb2xsZXIsIFNjcm9sbGVyTW9kdWxlLCBTY3JvbGxlck9wdGlvbnMgfSBmcm9tICdAcWl1cy5zb2x1dGlvbnMvcGFyYWxsZWwtdWktYW5ndWxhci9zY3JvbGxlcic7XG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJ0BxaXVzLnNvbHV0aW9ucy9wYXJhbGxlbC11aS1hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hlY2tJY29uIH0gZnJvbSAnQHFpdXMuc29sdXRpb25zL3BhcmFsbGVsLXVpLWFuZ3VsYXIvaWNvbnMvY2hlY2snO1xuaW1wb3J0IHsgQ2hldnJvbkRvd25JY29uIH0gZnJvbSAnQHFpdXMuc29sdXRpb25zL3BhcmFsbGVsLXVpLWFuZ3VsYXIvaWNvbnMvY2hldnJvbmRvd24nO1xuaW1wb3J0IHsgQ2hldnJvblJpZ2h0SWNvbiB9IGZyb20gJ0BxaXVzLnNvbHV0aW9ucy9wYXJhbGxlbC11aS1hbmd1bGFyL2ljb25zL2NoZXZyb25yaWdodCc7XG5pbXBvcnQgeyBNaW51c0ljb24gfSBmcm9tICdAcWl1cy5zb2x1dGlvbnMvcGFyYWxsZWwtdWktYW5ndWxhci9pY29ucy9taW51cyc7XG5pbXBvcnQgeyBTZWFyY2hJY29uIH0gZnJvbSAnQHFpdXMuc29sdXRpb25zL3BhcmFsbGVsLXVpLWFuZ3VsYXIvaWNvbnMvc2VhcmNoJztcbmltcG9ydCB7IFNwaW5uZXJJY29uIH0gZnJvbSAnQHFpdXMuc29sdXRpb25zL3BhcmFsbGVsLXVpLWFuZ3VsYXIvaWNvbnMvc3Bpbm5lcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10cmVlTm9kZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0lmPVwidHJlZS5kcm9wcGFibGVOb2Rlc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLXRyZWVub2RlLWRyb3Bwb2ludFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC10cmVlbm9kZS1kcm9wcG9pbnQtYWN0aXZlJzogZHJhZ2hvdmVyUHJldiB9XCJcbiAgICAgICAgICAgICAgICAoZHJvcCk9XCJvbkRyb3BQb2ludCgkZXZlbnQsIC0xKVwiXG4gICAgICAgICAgICAgICAgKGRyYWdvdmVyKT1cIm9uRHJvcFBvaW50RHJhZ092ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGRyYWdlbnRlcik9XCJvbkRyb3BQb2ludERyYWdFbnRlcigkZXZlbnQsIC0xKVwiXG4gICAgICAgICAgICAgICAgKGRyYWdsZWF2ZSk9XCJvbkRyb3BQb2ludERyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2xpPlxuICAgICAgICAgICAgPGxpICpuZ0lmPVwiIXRyZWUuaG9yaXpvbnRhbFwiIFtuZ0NsYXNzXT1cIlsncC10cmVlbm9kZScsIG5vZGUuc3R5bGVDbGFzcyB8fCAnJywgaXNMZWFmKCkgPyAncC10cmVlbm9kZS1sZWFmJyA6ICcnXVwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBpdGVtU2l6ZSArICdweCcgfVwiIFtzdHlsZV09XCJub2RlLnN0eWxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtdHJlZW5vZGUtY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nTGVmdF09XCJsZXZlbCAqIGluZGVudGF0aW9uICsgJ3JlbSdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ob2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvbk5vZGVSaWdodENsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAodG91Y2hlbmQpPVwib25Ob2RlVG91Y2hFbmQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChkcm9wKT1cIm9uRHJvcE5vZGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChkcmFnb3Zlcik9XCJvbkRyb3BOb2RlRHJhZ092ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChkcmFnZW50ZXIpPVwib25Ecm9wTm9kZURyYWdFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGRyYWdsZWF2ZSk9XCJvbkRyb3BOb2RlRHJhZ0xlYXZlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cInRyZWUuZHJhZ2dhYmxlTm9kZXNcIlxuICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZHJhZ2VuZCk9XCJvbkRyYWdTdG9wKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC10cmVlbm9kZS1zZWxlY3RhYmxlJzogdHJlZS5zZWxlY3Rpb25Nb2RlICYmIG5vZGUuc2VsZWN0YWJsZSAhPT0gZmFsc2UsICdwLXRyZWVub2RlLWRyYWdvdmVyJzogZHJhZ2hvdmVyTm9kZSwgJ3AtaGlnaGxpZ2h0JzogaXNTZWxlY3RlZCgpIH1cIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwidHJlZWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcG9zaW5zZXRdPVwidGhpcy5pbmRleCArIDFcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInRoaXMubm9kZS5leHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJub2RlLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1pZF09XCJub2RlLmtleVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInRyZWUudG9nZ2xlckFyaWFMYWJlbFwiIGNsYXNzPVwicC10cmVlLXRvZ2dsZXIgcC1saW5rXCIgKGNsaWNrKT1cInRvZ2dsZSgkZXZlbnQpXCIgcFJpcHBsZSB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRyZWUudG9nZ2xlckljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHRJY29uICpuZ0lmPVwiIW5vZGUuZXhwYW5kZWRcIiBbc3R5bGVDbGFzc109XCIncC10cmVlLXRvZ2dsZXItaWNvbidcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duSWNvbiAqbmdJZj1cIm5vZGUuZXhwYW5kZWRcIiBbc3R5bGVDbGFzc109XCIncC10cmVlLXRvZ2dsZXItaWNvbidcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidHJlZS50b2dnbGVySWNvblRlbXBsYXRlXCIgY2xhc3M9XCJwLXRyZWUtdG9nZ2xlci1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZS50b2dnbGVySWNvblRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZS5leHBhbmRlZCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNoZWNrYm94IHAtY29tcG9uZW50XCIgW25nQ2xhc3NdPVwieyAncC1jaGVja2JveC1kaXNhYmxlZCc6IG5vZGUuc2VsZWN0YWJsZSA9PT0gZmFsc2UgfVwiICpuZ0lmPVwidHJlZS5zZWxlY3Rpb25Nb2RlID09ICdjaGVja2JveCdcIiBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiaXNTZWxlY3RlZCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jaGVja2JveC1ib3hcIiBbbmdDbGFzc109XCJ7ICdwLWhpZ2hsaWdodCc6IGlzU2VsZWN0ZWQoKSwgJ3AtaW5kZXRlcm1pbmF0ZSc6IG5vZGUucGFydGlhbFNlbGVjdGVkIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRyZWUuY2hlY2tib3hJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrSWNvbiAqbmdJZj1cImlzU2VsZWN0ZWQoKVwiIFtzdHlsZUNsYXNzXT1cIidwLWNoZWNrYm94LWljb24nXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWludXNJY29uICpuZ0lmPVwibm9kZS5wYXJ0aWFsU2VsZWN0ZWRcIiBbc3R5bGVDbGFzc109XCIncC1jaGVja2JveC1pY29uJ1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlLmNoZWNrYm94SWNvblRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXNTZWxlY3RlZCwgcGFydGlhbFNlbGVjdGVkOiBub2RlLnBhcnRpYWxTZWxlY3RlZCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cImdldEljb24oKVwiICpuZ0lmPVwibm9kZS5pY29uIHx8IG5vZGUuZXhwYW5kZWRJY29uIHx8IG5vZGUuY29sbGFwc2VkSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXRyZWVub2RlLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0cmVlLmdldFRlbXBsYXRlRm9yTm9kZShub2RlKVwiPnt7IG5vZGUubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRyZWUuZ2V0VGVtcGxhdGVGb3JOb2RlKG5vZGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWUuZ2V0VGVtcGxhdGVGb3JOb2RlKG5vZGUpOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJwLXRyZWVub2RlLWNoaWxkcmVuXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiICpuZ0lmPVwiIXRyZWUudmlydHVhbFNjcm9sbCAmJiBub2RlLmNoaWxkcmVuICYmIG5vZGUuZXhwYW5kZWRcIiBbc3R5bGUuZGlzcGxheV09XCJub2RlLmV4cGFuZGVkID8gJ2Jsb2NrJyA6ICdub25lJ1wiIHJvbGU9XCJncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8cC10cmVlTm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkTm9kZSBvZiBub2RlLmNoaWxkcmVuOyBsZXQgZmlyc3RDaGlsZCA9IGZpcnN0OyBsZXQgbGFzdENoaWxkID0gbGFzdDsgbGV0IGluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyZWUudHJhY2tCeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbm9kZV09XCJjaGlsZE5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BhcmVudE5vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmlyc3RDaGlsZF09XCJmaXJzdENoaWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYXN0Q2hpbGRdPVwibGFzdENoaWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXRlbVNpemVdPVwiaXRlbVNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xldmVsXT1cImxldmVsICsgMVwiXG4gICAgICAgICAgICAgICAgICAgID48L3AtdHJlZU5vZGU+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRyZWUuZHJvcHBhYmxlTm9kZXMgJiYgbGFzdENoaWxkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtdHJlZW5vZGUtZHJvcHBvaW50XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLXRyZWVub2RlLWRyb3Bwb2ludC1hY3RpdmUnOiBkcmFnaG92ZXJOZXh0IH1cIlxuICAgICAgICAgICAgICAgIChkcm9wKT1cIm9uRHJvcFBvaW50KCRldmVudCwgMSlcIlxuICAgICAgICAgICAgICAgIChkcmFnb3Zlcik9XCJvbkRyb3BQb2ludERyYWdPdmVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChkcmFnZW50ZXIpPVwib25Ecm9wUG9pbnREcmFnRW50ZXIoJGV2ZW50LCAxKVwiXG4gICAgICAgICAgICAgICAgKGRyYWdsZWF2ZSk9XCJvbkRyb3BQb2ludERyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2xpPlxuICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwidHJlZS5ob3Jpem9udGFsXCIgW2NsYXNzXT1cIm5vZGUuc3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicC10cmVlbm9kZS1jb25uZWN0b3JcIiAqbmdJZj1cIiFyb290XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwicC10cmVlbm9kZS1jb25uZWN0b3ItdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7ICdwLXRyZWVub2RlLWNvbm5lY3Rvci1saW5lJzogIWZpcnN0Q2hpbGQgfVwiPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7ICdwLXRyZWVub2RlLWNvbm5lY3Rvci1saW5lJzogIWxhc3RDaGlsZCB9XCI+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwLXRyZWVub2RlXCIgW25nQ2xhc3NdPVwieyAncC10cmVlbm9kZS1jb2xsYXBzZWQnOiAhbm9kZS5leHBhbmRlZCB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtdHJlZW5vZGUtY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtdHJlZW5vZGUtc2VsZWN0YWJsZSc6IHRyZWUuc2VsZWN0aW9uTW9kZSwgJ3AtaGlnaGxpZ2h0JzogaXNTZWxlY3RlZCgpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ob2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvbk5vZGVSaWdodENsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG91Y2hlbmQpPVwib25Ob2RlVG91Y2hFbmQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uTm9kZUtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc0xlYWYoKVwiIFtuZ0NsYXNzXT1cIidwLXRyZWUtdG9nZ2xlcidcIiAoY2xpY2spPVwidG9nZ2xlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdHJlZS50b2dnbGVySWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNJY29uICpuZ0lmPVwiIW5vZGUuZXhwYW5kZWRcIiBbc3R5bGVDbGFzc109XCIncC10cmVlLXRvZ2dsZXItaWNvbidcIiBbYXJpYUxhYmVsXT1cInRyZWUudG9nZ2xlckFyaWFMYWJlbFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWludXNJY29uICpuZ0lmPVwibm9kZS5leHBhbmRlZFwiIFtzdHlsZUNsYXNzXT1cIidwLXRyZWUtdG9nZ2xlci1pY29uJ1wiIFthcmlhTGFiZWxdPVwidHJlZS50b2dnbGVyQXJpYUxhYmVsXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRyZWUudG9nZ2xlckljb25UZW1wbGF0ZVwiIGNsYXNzPVwicC10cmVlLXRvZ2dsZXItaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWUudG9nZ2xlckljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUuZXhwYW5kZWQgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cImdldEljb24oKVwiICpuZ0lmPVwibm9kZS5pY29uIHx8IG5vZGUuZXhwYW5kZWRJY29uIHx8IG5vZGUuY29sbGFwc2VkSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXRyZWVub2RlLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0cmVlLmdldFRlbXBsYXRlRm9yTm9kZShub2RlKVwiPnt7IG5vZGUubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRyZWUuZ2V0VGVtcGxhdGVGb3JOb2RlKG5vZGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWUuZ2V0VGVtcGxhdGVGb3JOb2RlKG5vZGUpOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwLXRyZWVub2RlLWNoaWxkcmVuLWNvbnRhaW5lclwiICpuZ0lmPVwibm9kZS5jaGlsZHJlbiAmJiBub2RlLmV4cGFuZGVkXCIgW3N0eWxlLmRpc3BsYXldPVwibm9kZS5leHBhbmRlZCA/ICd0YWJsZS1jZWxsJyA6ICdub25lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRyZWVub2RlLWNoaWxkcmVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVOb2RlICpuZ0Zvcj1cImxldCBjaGlsZE5vZGUgb2Ygbm9kZS5jaGlsZHJlbjsgbGV0IGZpcnN0Q2hpbGQgPSBmaXJzdDsgbGV0IGxhc3RDaGlsZCA9IGxhc3Q7IHRyYWNrQnk6IHRyZWUudHJhY2tCeVwiIFtub2RlXT1cImNoaWxkTm9kZVwiIFtmaXJzdENoaWxkXT1cImZpcnN0Q2hpbGRcIiBbbGFzdENoaWxkXT1cImxhc3RDaGlsZFwiPjwvcC10cmVlTm9kZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgYCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBVSVRyZWVOb2RlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBzdGF0aWMgSUNPTl9DTEFTUzogc3RyaW5nID0gJ3AtdHJlZW5vZGUtaWNvbiAnO1xuXG4gICAgQElucHV0KCkgcm93Tm9kZTogYW55O1xuXG4gICAgQElucHV0KCkgbm9kZTogVHJlZU5vZGU7XG5cbiAgICBASW5wdXQoKSBwYXJlbnROb2RlOiBUcmVlTm9kZTtcblxuICAgIEBJbnB1dCgpIHJvb3Q6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgZmlyc3RDaGlsZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGxhc3RDaGlsZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGxldmVsOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBpbmRlbnRhdGlvbjogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaXRlbVNpemU6IG51bWJlcjtcblxuICAgIHRyZWU6IFRyZWU7XG5cbiAgICB0aW1lb3V0OiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gVHJlZSkpIHRyZWUpIHtcbiAgICAgICAgdGhpcy50cmVlID0gdHJlZSBhcyBUcmVlO1xuICAgIH1cblxuICAgIGRyYWdob3ZlclByZXY6IGJvb2xlYW47XG5cbiAgICBkcmFnaG92ZXJOZXh0OiBib29sZWFuO1xuXG4gICAgZHJhZ2hvdmVyTm9kZTogYm9vbGVhbjtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm5vZGUucGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuICAgICAgICBpZiAodGhpcy5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWUuc3luY05vZGVPcHRpb24odGhpcy5ub2RlLCB0aGlzLnRyZWUudmFsdWUsICdwYXJlbnQnLCB0aGlzLnRyZWUuZ2V0Tm9kZVdpdGhLZXkodGhpcy5wYXJlbnROb2RlLmtleSwgdGhpcy50cmVlLnZhbHVlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJY29uKCkge1xuICAgICAgICBsZXQgaWNvbjogc3RyaW5nO1xuXG4gICAgICAgIGlmICh0aGlzLm5vZGUuaWNvbikgaWNvbiA9IHRoaXMubm9kZS5pY29uO1xuICAgICAgICBlbHNlIGljb24gPSB0aGlzLm5vZGUuZXhwYW5kZWQgJiYgdGhpcy5ub2RlLmNoaWxkcmVuICYmIHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGggPyB0aGlzLm5vZGUuZXhwYW5kZWRJY29uIDogdGhpcy5ub2RlLmNvbGxhcHNlZEljb247XG5cbiAgICAgICAgcmV0dXJuIFVJVHJlZU5vZGUuSUNPTl9DTEFTUyArICcgJyArIGljb247XG4gICAgfVxuXG4gICAgaXNMZWFmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmVlLmlzTm9kZUxlYWYodGhpcy5ub2RlKTtcbiAgICB9XG5cbiAgICB0b2dnbGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLm5vZGUuZXhwYW5kZWQpIHRoaXMuY29sbGFwc2UoZXZlbnQpO1xuICAgICAgICBlbHNlIHRoaXMuZXhwYW5kKGV2ZW50KTtcblxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBleHBhbmQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMubm9kZS5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnRyZWUudmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy50cmVlLnVwZGF0ZVNlcmlhbGl6ZWRWYWx1ZSgpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c1ZpcnR1YWxOb2RlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50cmVlLm9uTm9kZUV4cGFuZC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIG5vZGU6IHRoaXMubm9kZSB9KTtcbiAgICB9XG5cbiAgICBjb2xsYXBzZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5ub2RlLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnRyZWUudmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy50cmVlLnVwZGF0ZVNlcmlhbGl6ZWRWYWx1ZSgpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c1ZpcnR1YWxOb2RlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50cmVlLm9uTm9kZUNvbGxhcHNlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgbm9kZTogdGhpcy5ub2RlIH0pO1xuICAgIH1cblxuICAgIG9uTm9kZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudHJlZS5vbk5vZGVDbGljayhldmVudCwgdGhpcy5ub2RlKTtcbiAgICB9XG5cbiAgICBvbk5vZGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC53aGljaCA9PT0gMTMpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZS5vbk5vZGVDbGljayhldmVudCwgdGhpcy5ub2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTm9kZVRvdWNoRW5kKCkge1xuICAgICAgICB0aGlzLnRyZWUub25Ob2RlVG91Y2hFbmQoKTtcbiAgICB9XG5cbiAgICBvbk5vZGVSaWdodENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudHJlZS5vbk5vZGVSaWdodENsaWNrKGV2ZW50LCB0aGlzLm5vZGUpO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyZWUuaXNTZWxlY3RlZCh0aGlzLm5vZGUpO1xuICAgIH1cblxuICAgIG9uRHJvcFBvaW50KGV2ZW50OiBFdmVudCwgcG9zaXRpb246IG51bWJlcikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBsZXQgZHJhZ05vZGUgPSB0aGlzLnRyZWUuZHJhZ05vZGU7XG4gICAgICAgIGxldCBkcmFnTm9kZUluZGV4ID0gdGhpcy50cmVlLmRyYWdOb2RlSW5kZXg7XG4gICAgICAgIGxldCBkcmFnTm9kZVNjb3BlID0gdGhpcy50cmVlLmRyYWdOb2RlU2NvcGU7XG4gICAgICAgIGxldCBpc1ZhbGlkRHJvcFBvaW50SW5kZXggPSB0aGlzLnRyZWUuZHJhZ05vZGVUcmVlID09PSB0aGlzLnRyZWUgPyBwb3NpdGlvbiA9PT0gMSB8fCBkcmFnTm9kZUluZGV4ICE9PSB0aGlzLmluZGV4IC0gMSA6IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMudHJlZS5hbGxvd0Ryb3AoZHJhZ05vZGUsIHRoaXMubm9kZSwgZHJhZ05vZGVTY29wZSkgJiYgaXNWYWxpZERyb3BQb2ludEluZGV4KSB7XG4gICAgICAgICAgICBsZXQgZHJvcFBhcmFtcyA9IHsgLi4udGhpcy5jcmVhdGVEcm9wUG9pbnRFdmVudE1ldGFkYXRhKHBvc2l0aW9uKSB9O1xuXG4gICAgICAgICAgICBpZiAodGhpcy50cmVlLnZhbGlkYXRlRHJvcCkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJlZS5vbk5vZGVEcm9wLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgZHJhZ05vZGU6IGRyYWdOb2RlLFxuICAgICAgICAgICAgICAgICAgICBkcm9wTm9kZTogdGhpcy5ub2RlLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NQb2ludERyb3AoZHJvcFBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzUG9pbnREcm9wKGRyb3BQYXJhbXMpO1xuICAgICAgICAgICAgICAgIHRoaXMudHJlZS5vbk5vZGVEcm9wLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgZHJhZ05vZGU6IGRyYWdOb2RlLFxuICAgICAgICAgICAgICAgICAgICBkcm9wTm9kZTogdGhpcy5ub2RlLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5pbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcmFnaG92ZXJQcmV2ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZHJhZ2hvdmVyTmV4dCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByb2Nlc3NQb2ludERyb3AoZXZlbnQpIHtcbiAgICAgICAgbGV0IG5ld05vZGVMaXN0ID0gZXZlbnQuZHJvcE5vZGUucGFyZW50ID8gZXZlbnQuZHJvcE5vZGUucGFyZW50LmNoaWxkcmVuIDogdGhpcy50cmVlLnZhbHVlO1xuICAgICAgICBldmVudC5kcmFnTm9kZVN1Yk5vZGVzLnNwbGljZShldmVudC5kcmFnTm9kZUluZGV4LCAxKTtcbiAgICAgICAgbGV0IGRyb3BJbmRleCA9IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgaWYgKGV2ZW50LnBvc2l0aW9uIDwgMCkge1xuICAgICAgICAgICAgZHJvcEluZGV4ID0gZXZlbnQuZHJhZ05vZGVTdWJOb2RlcyA9PT0gbmV3Tm9kZUxpc3QgPyAoZXZlbnQuZHJhZ05vZGVJbmRleCA+IGV2ZW50LmluZGV4ID8gZXZlbnQuaW5kZXggOiBldmVudC5pbmRleCAtIDEpIDogZXZlbnQuaW5kZXg7XG4gICAgICAgICAgICBuZXdOb2RlTGlzdC5zcGxpY2UoZHJvcEluZGV4LCAwLCBldmVudC5kcmFnTm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkcm9wSW5kZXggPSBuZXdOb2RlTGlzdC5sZW5ndGg7XG4gICAgICAgICAgICBuZXdOb2RlTGlzdC5wdXNoKGV2ZW50LmRyYWdOb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHJlZS5kcmFnRHJvcFNlcnZpY2Uuc3RvcERyYWcoe1xuICAgICAgICAgICAgbm9kZTogZXZlbnQuZHJhZ05vZGUsXG4gICAgICAgICAgICBzdWJOb2RlczogZXZlbnQuZHJvcE5vZGUucGFyZW50ID8gZXZlbnQuZHJvcE5vZGUucGFyZW50LmNoaWxkcmVuIDogdGhpcy50cmVlLnZhbHVlLFxuICAgICAgICAgICAgaW5kZXg6IGV2ZW50LmRyYWdOb2RlSW5kZXhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlRHJvcFBvaW50RXZlbnRNZXRhZGF0YShwb3NpdGlvbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZHJhZ05vZGU6IHRoaXMudHJlZS5kcmFnTm9kZSxcbiAgICAgICAgICAgIGRyYWdOb2RlSW5kZXg6IHRoaXMudHJlZS5kcmFnTm9kZUluZGV4LFxuICAgICAgICAgICAgZHJhZ05vZGVTdWJOb2RlczogdGhpcy50cmVlLmRyYWdOb2RlU3ViTm9kZXMsXG4gICAgICAgICAgICBkcm9wTm9kZTogdGhpcy5ub2RlLFxuICAgICAgICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICAgICAgICBwb3NpdGlvbjogcG9zaXRpb25cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvbkRyb3BQb2ludERyYWdPdmVyKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ21vdmUnO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uRHJvcFBvaW50RHJhZ0VudGVyKGV2ZW50OiBFdmVudCwgcG9zaXRpb246IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy50cmVlLmFsbG93RHJvcCh0aGlzLnRyZWUuZHJhZ05vZGUsIHRoaXMubm9kZSwgdGhpcy50cmVlLmRyYWdOb2RlU2NvcGUpKSB7XG4gICAgICAgICAgICBpZiAocG9zaXRpb24gPCAwKSB0aGlzLmRyYWdob3ZlclByZXYgPSB0cnVlO1xuICAgICAgICAgICAgZWxzZSB0aGlzLmRyYWdob3Zlck5leHQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ecm9wUG9pbnREcmFnTGVhdmUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZHJhZ2hvdmVyUHJldiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRyYWdob3Zlck5leHQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkRyYWdTdGFydChldmVudCkge1xuICAgICAgICBpZiAodGhpcy50cmVlLmRyYWdnYWJsZU5vZGVzICYmIHRoaXMubm9kZS5kcmFnZ2FibGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dCcsICdkYXRhJyk7XG5cbiAgICAgICAgICAgIHRoaXMudHJlZS5kcmFnRHJvcFNlcnZpY2Uuc3RhcnREcmFnKHtcbiAgICAgICAgICAgICAgICB0cmVlOiB0aGlzLFxuICAgICAgICAgICAgICAgIG5vZGU6IHRoaXMubm9kZSxcbiAgICAgICAgICAgICAgICBzdWJOb2RlczogdGhpcy5ub2RlLnBhcmVudCA/IHRoaXMubm9kZS5wYXJlbnQuY2hpbGRyZW4gOiB0aGlzLnRyZWUudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICAgICAgICAgICAgc2NvcGU6IHRoaXMudHJlZS5kcmFnZ2FibGVTY29wZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EcmFnU3RvcChldmVudCkge1xuICAgICAgICB0aGlzLnRyZWUuZHJhZ0Ryb3BTZXJ2aWNlLnN0b3BEcmFnKHtcbiAgICAgICAgICAgIG5vZGU6IHRoaXMubm9kZSxcbiAgICAgICAgICAgIHN1Yk5vZGVzOiB0aGlzLm5vZGUucGFyZW50ID8gdGhpcy5ub2RlLnBhcmVudC5jaGlsZHJlbiA6IHRoaXMudHJlZS52YWx1ZSxcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLmluZGV4XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRHJvcE5vZGVEcmFnT3ZlcihldmVudCkge1xuICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdtb3ZlJztcbiAgICAgICAgaWYgKHRoaXMudHJlZS5kcm9wcGFibGVOb2Rlcykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ecm9wTm9kZShldmVudCkge1xuICAgICAgICBpZiAodGhpcy50cmVlLmRyb3BwYWJsZU5vZGVzICYmIHRoaXMubm9kZS5kcm9wcGFibGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBsZXQgZHJhZ05vZGUgPSB0aGlzLnRyZWUuZHJhZ05vZGU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWUuYWxsb3dEcm9wKGRyYWdOb2RlLCB0aGlzLm5vZGUsIHRoaXMudHJlZS5kcmFnTm9kZVNjb3BlKSkge1xuICAgICAgICAgICAgICAgIGxldCBkcm9wUGFyYW1zID0geyAuLi50aGlzLmNyZWF0ZURyb3BOb2RlRXZlbnRNZXRhZGF0YSgpIH07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlLnZhbGlkYXRlRHJvcCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWUub25Ob2RlRHJvcC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ05vZGU6IGRyYWdOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJvcE5vZGU6IHRoaXMubm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTm9kZURyb3AoZHJvcFBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc05vZGVEcm9wKGRyb3BQYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWUub25Ob2RlRHJvcC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ05vZGU6IGRyYWdOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJvcE5vZGU6IHRoaXMubm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmluZGV4XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmRyYWdob3Zlck5vZGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjcmVhdGVEcm9wTm9kZUV2ZW50TWV0YWRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkcmFnTm9kZTogdGhpcy50cmVlLmRyYWdOb2RlLFxuICAgICAgICAgICAgZHJhZ05vZGVJbmRleDogdGhpcy50cmVlLmRyYWdOb2RlSW5kZXgsXG4gICAgICAgICAgICBkcmFnTm9kZVN1Yk5vZGVzOiB0aGlzLnRyZWUuZHJhZ05vZGVTdWJOb2RlcyxcbiAgICAgICAgICAgIGRyb3BOb2RlOiB0aGlzLm5vZGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9jZXNzTm9kZURyb3AoZXZlbnQpIHtcbiAgICAgICAgbGV0IGRyYWdOb2RlSW5kZXggPSBldmVudC5kcmFnTm9kZUluZGV4O1xuICAgICAgICBldmVudC5kcmFnTm9kZVN1Yk5vZGVzLnNwbGljZShkcmFnTm9kZUluZGV4LCAxKTtcblxuICAgICAgICBpZiAoZXZlbnQuZHJvcE5vZGUuY2hpbGRyZW4pIGV2ZW50LmRyb3BOb2RlLmNoaWxkcmVuLnB1c2goZXZlbnQuZHJhZ05vZGUpO1xuICAgICAgICBlbHNlIGV2ZW50LmRyb3BOb2RlLmNoaWxkcmVuID0gW2V2ZW50LmRyYWdOb2RlXTtcblxuICAgICAgICB0aGlzLnRyZWUuZHJhZ0Ryb3BTZXJ2aWNlLnN0b3BEcmFnKHtcbiAgICAgICAgICAgIG5vZGU6IGV2ZW50LmRyYWdOb2RlLFxuICAgICAgICAgICAgc3ViTm9kZXM6IGV2ZW50LmRyb3BOb2RlLnBhcmVudCA/IGV2ZW50LmRyb3BOb2RlLnBhcmVudC5jaGlsZHJlbiA6IHRoaXMudHJlZS52YWx1ZSxcbiAgICAgICAgICAgIGluZGV4OiBkcmFnTm9kZUluZGV4XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRHJvcE5vZGVEcmFnRW50ZXIoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudHJlZS5kcm9wcGFibGVOb2RlcyAmJiB0aGlzLm5vZGUuZHJvcHBhYmxlICE9PSBmYWxzZSAmJiB0aGlzLnRyZWUuYWxsb3dEcm9wKHRoaXMudHJlZS5kcmFnTm9kZSwgdGhpcy5ub2RlLCB0aGlzLnRyZWUuZHJhZ05vZGVTY29wZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2hvdmVyTm9kZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRyb3BOb2RlRHJhZ0xlYXZlKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnRyZWUuZHJvcHBhYmxlTm9kZXMpIHtcbiAgICAgICAgICAgIGxldCByZWN0ID0gZXZlbnQuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGlmIChldmVudC54ID4gcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCB8fCBldmVudC54IDwgcmVjdC5sZWZ0IHx8IGV2ZW50LnkgPj0gTWF0aC5mbG9vcihyZWN0LnRvcCArIHJlY3QuaGVpZ2h0KSB8fCBldmVudC55IDwgcmVjdC50b3ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdob3Zlck5vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBub2RlRWxlbWVudCA9ICg8SFRNTERpdkVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKG5vZGVFbGVtZW50Lm5vZGVOYW1lICE9PSAnUC1UUkVFTk9ERScgfHwgKHRoaXMudHJlZS5jb250ZXh0TWVudSAmJiB0aGlzLnRyZWUuY29udGV4dE1lbnUuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9PT0gJ2Jsb2NrJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQud2hpY2gpIHtcbiAgICAgICAgICAgIC8vZG93biBhcnJvd1xuICAgICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0RWxlbWVudCA9IHRoaXMudHJlZS5kcm9wcGFibGVOb2RlcyA/IG5vZGVFbGVtZW50LmNoaWxkcmVuWzFdLmNoaWxkcmVuWzFdIDogbm9kZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV07XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RFbGVtZW50ICYmIGxpc3RFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c05vZGUobGlzdEVsZW1lbnQuY2hpbGRyZW5bMF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHROb2RlRWxlbWVudCA9IG5vZGVFbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHROb2RlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c05vZGUobmV4dE5vZGVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXh0U2libGluZ0FuY2VzdG9yID0gdGhpcy5maW5kTmV4dFNpYmxpbmdPZkFuY2VzdG9yKG5vZGVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0U2libGluZ0FuY2VzdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c05vZGUobmV4dFNpYmxpbmdBbmNlc3Rvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy91cCBhcnJvd1xuICAgICAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICAgICAgICBpZiAobm9kZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTm9kZSh0aGlzLmZpbmRMYXN0VmlzaWJsZURlc2NlbmRhbnQobm9kZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZykpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnROb2RlRWxlbWVudCA9IHRoaXMuZ2V0UGFyZW50Tm9kZUVsZW1lbnQobm9kZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNOb2RlKHBhcmVudE5vZGVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vcmlnaHQgYXJyb3dcbiAgICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm5vZGUuZXhwYW5kZWQgJiYgIXRoaXMudHJlZS5pc05vZGVMZWFmKHRoaXMubm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2xlZnQgYXJyb3dcbiAgICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbGxhcHNlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyZW50Tm9kZUVsZW1lbnQgPSB0aGlzLmdldFBhcmVudE5vZGVFbGVtZW50KG5vZGVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudE5vZGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTm9kZShwYXJlbnROb2RlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2VudGVyXG4gICAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgICAgIHRoaXMudHJlZS5vbk5vZGVDbGljayhldmVudCwgdGhpcy5ub2RlKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIC8vbm8gb3BcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmROZXh0U2libGluZ09mQW5jZXN0b3Iobm9kZUVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHBhcmVudE5vZGVFbGVtZW50ID0gdGhpcy5nZXRQYXJlbnROb2RlRWxlbWVudChub2RlRWxlbWVudCk7XG4gICAgICAgIGlmIChwYXJlbnROb2RlRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHBhcmVudE5vZGVFbGVtZW50Lm5leHRFbGVtZW50U2libGluZykgcmV0dXJuIHBhcmVudE5vZGVFbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIHRoaXMuZmluZE5leHRTaWJsaW5nT2ZBbmNlc3RvcihwYXJlbnROb2RlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmRMYXN0VmlzaWJsZURlc2NlbmRhbnQobm9kZUVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgbGlzdEVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+QXJyYXkuZnJvbShub2RlRWxlbWVudC5jaGlsZHJlbikuZmluZCgoZWwpID0+IERvbUhhbmRsZXIuaGFzQ2xhc3MoZWwsICdwLXRyZWVub2RlJykpO1xuICAgICAgICBjb25zdCBjaGlsZHJlbkxpc3RFbGVtZW50ID0gbGlzdEVsZW1lbnQuY2hpbGRyZW5bMV07XG4gICAgICAgIGlmIChjaGlsZHJlbkxpc3RFbGVtZW50ICYmIGNoaWxkcmVuTGlzdEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbGFzdENoaWxkRWxlbWVudCA9IGNoaWxkcmVuTGlzdEVsZW1lbnQuY2hpbGRyZW5bY2hpbGRyZW5MaXN0RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxXTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZExhc3RWaXNpYmxlRGVzY2VuZGFudChsYXN0Q2hpbGRFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlRWxlbWVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBhcmVudE5vZGVFbGVtZW50KG5vZGVFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGVFbGVtZW50ID0gbm9kZUVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgcmV0dXJuIHBhcmVudE5vZGVFbGVtZW50LnRhZ05hbWUgPT09ICdQLVRSRUVOT0RFJyA/IHBhcmVudE5vZGVFbGVtZW50IDogbnVsbDtcbiAgICB9XG5cbiAgICBmb2N1c05vZGUoZWxlbWVudCkge1xuICAgICAgICBpZiAodGhpcy50cmVlLmRyb3BwYWJsZU5vZGVzKSBlbGVtZW50LmNoaWxkcmVuWzFdLmNoaWxkcmVuWzBdLmZvY3VzKCk7XG4gICAgICAgIGVsc2UgZWxlbWVudC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5mb2N1cygpO1xuICAgIH1cblxuICAgIGZvY3VzVmlydHVhbE5vZGUoKSB7XG4gICAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IG5vZGUgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUoZG9jdW1lbnQuYm9keSwgYFtkYXRhLWlkPVwiJHt0aGlzLm5vZGUua2V5ID8/IHRoaXMubm9kZS5kYXRhfVwiXWApO1xuICAgICAgICAgICAgRG9tSGFuZGxlci5mb2N1cyhub2RlKTtcbiAgICAgICAgfSwgMSk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtdHJlZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC10cmVlIHAtY29tcG9uZW50JzogdHJ1ZSwgJ3AtdHJlZS1zZWxlY3RhYmxlJzogc2VsZWN0aW9uTW9kZSwgJ3AtdHJlZW5vZGUtZHJhZ292ZXInOiBkcmFnSG92ZXIsICdwLXRyZWUtbG9hZGluZyc6IGxvYWRpbmcsICdwLXRyZWUtZmxleC1zY3JvbGxhYmxlJzogc2Nyb2xsSGVpZ2h0ID09PSAnZmxleCcgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJzdHlsZVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwic3R5bGVDbGFzc1wiXG4gICAgICAgICAgICAqbmdJZj1cIiFob3Jpem9udGFsXCJcbiAgICAgICAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAgICAgICAgKGRyYWdlbnRlcik9XCJvbkRyYWdFbnRlcigpXCJcbiAgICAgICAgICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRyZWUtbG9hZGluZy1vdmVybGF5IHAtY29tcG9uZW50LW92ZXJsYXlcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImxvYWRpbmdJY29uXCIgW2NsYXNzXT1cIidwLXRyZWUtbG9hZGluZy1pY29uIHBpLXNwaW4gJyArIGxvYWRpbmdJY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZ0ljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPFNwaW5uZXJJY29uICpuZ0lmPVwiIWxvYWRpbmdJY29uVGVtcGxhdGVcIiBbc3Bpbl09XCJ0cnVlXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtdHJlZS1sb2FkaW5nLWljb24nXCIvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvYWRpbmdJY29uVGVtcGxhdGVcIiBjbGFzcz1cInAtdHJlZS1sb2FkaW5nLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlclwiIGNsYXNzPVwicC10cmVlLWZpbHRlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgI2ZpbHRlciB0eXBlPVwidGV4dFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwicC10cmVlLWZpbHRlciBwLWlucHV0dGV4dCBwLWNvbXBvbmVudFwiIFthdHRyLnBsYWNlaG9sZGVyXT1cImZpbHRlclBsYWNlaG9sZGVyXCIgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiAoaW5wdXQpPVwiX2ZpbHRlcigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb24gKm5nSWY9XCIhZmlsdGVySWNvblRlbXBsYXRlXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtdHJlZS1maWx0ZXItaWNvbidcIi8+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWx0ZXJJY29uVGVtcGxhdGVcIiBjbGFzcz1cInAtdHJlZS1maWx0ZXItaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8cC1zY3JvbGxlclxuICAgICAgICAgICAgICAgICNzY3JvbGxlclxuICAgICAgICAgICAgICAgICpuZ0lmPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICAgICAgICAgICAgW2l0ZW1zXT1cInNlcmlhbGl6ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC10cmVlLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7IGhlaWdodDogc2Nyb2xsSGVpZ2h0ICE9PSAnZmxleCcgPyBzY3JvbGxIZWlnaHQgOiB1bmRlZmluZWQgfVwiXG4gICAgICAgICAgICAgICAgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHQgIT09ICdmbGV4JyA/IHVuZGVmaW5lZCA6ICcxMDAlJ1wiXG4gICAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZSB8fCBfdmlydHVhbE5vZGVIZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtsYXp5XT1cImxhenlcIlxuICAgICAgICAgICAgICAgIChvblNjcm9sbCk9XCJvblNjcm9sbC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChvblNjcm9sbEluZGV4Q2hhbmdlKT1cIm9uU2Nyb2xsSW5kZXhDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAob25MYXp5TG9hZCk9XCJvbkxhenlMb2FkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwidmlydHVhbFNjcm9sbE9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCIgbGV0LWl0ZW1zIGxldC1zY3JvbGxlck9wdGlvbnM9XCJvcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bCAqbmdJZj1cIml0ZW1zXCIgY2xhc3M9XCJwLXRyZWUtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwic2Nyb2xsZXJPcHRpb25zLmNvbnRlbnRTdHlsZUNsYXNzXCIgW3N0eWxlXT1cInNjcm9sbGVyT3B0aW9ucy5jb250ZW50U3R5bGVcIiByb2xlPVwidHJlZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlTm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0cmVlTm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByb3dOb2RlIG9mIGl0ZW1zOyBsZXQgZmlyc3RDaGlsZCA9IGZpcnN0OyBsZXQgbGFzdENoaWxkID0gbGFzdDsgbGV0IGluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsZXZlbF09XCJyb3dOb2RlLmxldmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93Tm9kZV09XCJyb3dOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbm9kZV09XCJyb3dOb2RlLm5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaXJzdENoaWxkXT1cImZpcnN0Q2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYXN0Q2hpbGRdPVwibGFzdENoaWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiZ2V0SW5kZXgoc2Nyb2xsZXJPcHRpb25zLCBpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtU2l6ZV09XCJzY3JvbGxlck9wdGlvbnMuaXRlbVNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRlbnRhdGlvbl09XCJpbmRlbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9wLXRyZWVOb2RlPlxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsb2FkZXJcIiBsZXQtc2Nyb2xsZXJPcHRpb25zPVwib3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbnM6IHNjcm9sbGVyT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3Atc2Nyb2xsZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZpcnR1YWxTY3JvbGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICN3cmFwcGVyIGNsYXNzPVwicC10cmVlLXdyYXBwZXJcIiBbc3R5bGUubWF4LWhlaWdodF09XCJzY3JvbGxIZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwicC10cmVlLWNvbnRhaW5lclwiICpuZ0lmPVwiZ2V0Um9vdE5vZGUoKVwiIHJvbGU9XCJ0cmVlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVOb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2YgZ2V0Um9vdE5vZGUoKTsgbGV0IGZpcnN0Q2hpbGQgPSBmaXJzdDsgbGV0IGxhc3RDaGlsZCA9IGxhc3Q7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbm9kZV09XCJub2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlyc3RDaGlsZF09XCJmaXJzdENoaWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFzdENoaWxkXT1cImxhc3RDaGlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGV2ZWxdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9wLXRyZWVOb2RlPlxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRyZWUtZW1wdHktbWVzc2FnZVwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgKGdldFJvb3ROb2RlKCkgPT0gbnVsbCB8fCBnZXRSb290Tm9kZSgpLmxlbmd0aCA9PT0gMClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVtcHR5TWVzc2FnZVRlbXBsYXRlOyBlbHNlIGVtcHR5RmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGVtcHR5TWVzc2FnZUxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjZW1wdHlGaWx0ZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eU1lc3NhZ2VUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAncC10cmVlIHAtdHJlZS1ob3Jpem9udGFsIHAtY29tcG9uZW50JzogdHJ1ZSwgJ3AtdHJlZS1zZWxlY3RhYmxlJzogc2VsZWN0aW9uTW9kZSB9XCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiICpuZ0lmPVwiaG9yaXpvbnRhbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10cmVlLWxvYWRpbmctbWFzayBwLWNvbXBvbmVudC1vdmVybGF5XCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJsb2FkaW5nSWNvblwiIFtjbGFzc109XCIncC10cmVlLWxvYWRpbmctaWNvbiBwaS1zcGluICcgKyBsb2FkaW5nSWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmdJY29uXCI+XG4gICAgICAgICAgICAgICAgPFNwaW5uZXJJY29uICpuZ0lmPVwiIWxvYWRpbmdJY29uVGVtcGxhdGVcIiBbc3Bpbl09XCJ0cnVlXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtdHJlZS1sb2FkaW5nLWljb24nXCIvPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9hZGluZ0ljb25UZW1wbGF0ZVwiIGNsYXNzPVwicC10cmVlLWxvYWRpbmctaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwidmFsdWUgJiYgdmFsdWVbMF1cIj5cbiAgICAgICAgICAgICAgICA8cC10cmVlTm9kZSBbbm9kZV09XCJ2YWx1ZVswXVwiIFtyb290XT1cInRydWVcIj48L3AtdHJlZU5vZGU+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdHJlZS1lbXB0eS1tZXNzYWdlXCIgKm5nSWY9XCIhbG9hZGluZyAmJiAoZ2V0Um9vdE5vZGUoKSA9PSBudWxsIHx8IGdldFJvb3ROb2RlKCkubGVuZ3RoID09PSAwKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZW1wdHlNZXNzYWdlVGVtcGxhdGU7IGVsc2UgZW1wdHlGaWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZW1wdHlNZXNzYWdlTGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICNlbXB0eUZpbHRlciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5TWVzc2FnZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3RyZWUuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRyZWUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBCbG9ja2FibGVVSSB7XG4gICAgQElucHV0KCkgdmFsdWU6IFRyZWVOb2RlW107XG5cbiAgICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzZWxlY3Rpb246IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBjb250ZXh0TWVudTogYW55O1xuXG4gICAgQElucHV0KCkgbGF5b3V0OiBzdHJpbmcgPSAndmVydGljYWwnO1xuXG4gICAgQElucHV0KCkgZHJhZ2dhYmxlU2NvcGU6IGFueTtcblxuICAgIEBJbnB1dCgpIGRyb3BwYWJsZVNjb3BlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBkcmFnZ2FibGVOb2RlczogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGRyb3BwYWJsZU5vZGVzOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgbWV0YUtleVNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBwcm9wYWdhdGVTZWxlY3Rpb25VcDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBwcm9wYWdhdGVTZWxlY3Rpb25Eb3duOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBsb2FkaW5nSWNvbjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZW1wdHlNZXNzYWdlOiBzdHJpbmcgPSAnJztcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdG9nZ2xlckFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHZhbGlkYXRlRHJvcDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZpbHRlcjogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZpbHRlckJ5OiBzdHJpbmcgPSAnbGFiZWwnO1xuXG4gICAgQElucHV0KCkgZmlsdGVyTW9kZTogc3RyaW5nID0gJ2xlbmllbnQnO1xuXG4gICAgQElucHV0KCkgZmlsdGVyUGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGZpbHRlcmVkTm9kZXM6IFRyZWVOb2RlW107XG5cbiAgICBASW5wdXQoKSBmaWx0ZXJMb2NhbGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHNjcm9sbEhlaWdodDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGF6eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgdmlydHVhbFNjcm9sbDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGxJdGVtU2l6ZTogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgdmlydHVhbFNjcm9sbE9wdGlvbnM6IFNjcm9sbGVyT3B0aW9ucztcblxuICAgIEBJbnB1dCgpIGluZGVudGF0aW9uOiBudW1iZXIgPSAxLjU7XG5cbiAgICBASW5wdXQoKSBfdGVtcGxhdGVNYXA6IGFueTtcblxuICAgIEBJbnB1dCgpIHRyYWNrQnk6IEZ1bmN0aW9uID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcblxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTm9kZVNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Ob2RlVW5zZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTm9kZUV4cGFuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Ob2RlQ29sbGFwc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTm9kZUNvbnRleHRNZW51U2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk5vZGVEcm9wOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkxhenlMb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvblNjcm9sbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25TY3JvbGxJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25GaWx0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihRaXVzVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdmaWx0ZXInKSBmaWx0ZXJWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdzY3JvbGxlcicpIHNjcm9sbGVyOiBTY3JvbGxlcjtcblxuICAgIEBWaWV3Q2hpbGQoJ3dyYXBwZXInKSB3cmFwcGVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgLyogQGRlcHJlY2F0ZWQgKi9cbiAgICBfdmlydHVhbE5vZGVIZWlnaHQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBnZXQgdmlydHVhbE5vZGVIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZpcnR1YWxOb2RlSGVpZ2h0O1xuICAgIH1cbiAgICBzZXQgdmlydHVhbE5vZGVIZWlnaHQodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fdmlydHVhbE5vZGVIZWlnaHQgPSB2YWw7XG4gICAgICAgIGNvbnNvbGUud2FybignVGhlIHZpcnR1YWxOb2RlSGVpZ2h0IHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQsIHVzZSB2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgcHJvcGVydHkgaW5zdGVhZC4nKTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemVkVmFsdWU6IGFueVtdO1xuXG4gICAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGxvYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZW1wdHlNZXNzYWdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICB0b2dnbGVySWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY2hlY2tib3hJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBsb2FkaW5nSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZmlsdGVySWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIG5vZGVUb3VjaGVkOiBib29sZWFuO1xuXG4gICAgcHVibGljIGRyYWdOb2RlVHJlZTogVHJlZTtcblxuICAgIHB1YmxpYyBkcmFnTm9kZTogVHJlZU5vZGU7XG5cbiAgICBwdWJsaWMgZHJhZ05vZGVTdWJOb2RlczogVHJlZU5vZGVbXTtcblxuICAgIHB1YmxpYyBkcmFnTm9kZUluZGV4OiBudW1iZXI7XG5cbiAgICBwdWJsaWMgZHJhZ05vZGVTY29wZTogYW55O1xuXG4gICAgcHVibGljIGRyYWdIb3ZlcjogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBkcmFnU3RhcnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHB1YmxpYyBkcmFnU3RvcFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBAT3B0aW9uYWwoKSBwdWJsaWMgZHJhZ0Ryb3BTZXJ2aWNlOiBUcmVlRHJhZ0Ryb3BTZXJ2aWNlLCBwdWJsaWMgY29uZmlnOiBQYXJhbGxlbFVJQW5ndWxhckNvbmZpZywgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcHBhYmxlTm9kZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ1N0YXJ0U3Vic2NyaXB0aW9uID0gdGhpcy5kcmFnRHJvcFNlcnZpY2UuZHJhZ1N0YXJ0JC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnTm9kZVRyZWUgPSBldmVudC50cmVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGUgPSBldmVudC5ub2RlO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGVTdWJOb2RlcyA9IGV2ZW50LnN1Yk5vZGVzO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGVJbmRleCA9IGV2ZW50LmluZGV4O1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGVTY29wZSA9IGV2ZW50LnNjb3BlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZHJhZ1N0b3BTdWJzY3JpcHRpb24gPSB0aGlzLmRyYWdEcm9wU2VydmljZS5kcmFnU3RvcCQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGVUcmVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdOb2RlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdOb2RlU3ViTm9kZXMgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGVJbmRleCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnTm9kZVNjb3BlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdIb3ZlciA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2U6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZXJpYWxpemVkVmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBob3Jpem9udGFsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXQgPT0gJ2hvcml6b250YWwnO1xuICAgIH1cblxuICAgIGdldCBlbXB0eU1lc3NhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5lbXB0eU1lc3NhZ2UgfHwgdGhpcy5jb25maWcuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkVNUFRZX01FU1NBR0UpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGVtcGxhdGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGVNYXAgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlNZXNzYWdlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2xvYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3RvZ2dsZXJpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVySWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2JveGljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrYm94SWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdsb2FkaW5naWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ0ljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZmlsdGVyaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90ZW1wbGF0ZU1hcFtpdGVtLm5hbWVdID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZVNlcmlhbGl6ZWRWYWx1ZSgpIHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVkVmFsdWUgPSBbXTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVOb2RlcyhudWxsLCB0aGlzLmdldFJvb3ROb2RlKCksIDAsIHRydWUpO1xuICAgIH1cblxuICAgIHNlcmlhbGl6ZU5vZGVzKHBhcmVudCwgbm9kZXMsIGxldmVsLCB2aXNpYmxlKSB7XG4gICAgICAgIGlmIChub2RlcyAmJiBub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICAgICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dOb2RlID0ge1xuICAgICAgICAgICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IHBhcmVudCxcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiB2aXNpYmxlICYmIChwYXJlbnQgPyBwYXJlbnQuZXhwYW5kZWQgOiB0cnVlKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJpYWxpemVkVmFsdWUucHVzaChyb3dOb2RlKTtcblxuICAgICAgICAgICAgICAgIGlmIChyb3dOb2RlLnZpc2libGUgJiYgbm9kZS5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcmlhbGl6ZU5vZGVzKG5vZGUsIG5vZGUuY2hpbGRyZW4sIGxldmVsICsgMSwgcm93Tm9kZS52aXNpYmxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5vZGVDbGljayhldmVudCwgbm9kZTogVHJlZU5vZGUpIHtcbiAgICAgICAgbGV0IGV2ZW50VGFyZ2V0ID0gPEVsZW1lbnQ+ZXZlbnQudGFyZ2V0O1xuICAgICAgICBpZiAoRG9tSGFuZGxlci5oYXNDbGFzcyhldmVudFRhcmdldCwgJ3AtdHJlZS10b2dnbGVyJykgfHwgRG9tSGFuZGxlci5oYXNDbGFzcyhldmVudFRhcmdldCwgJ3AtdHJlZS10b2dnbGVyLWljb24nKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSkge1xuICAgICAgICAgICAgaWYgKG5vZGUuc2VsZWN0YWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0ZpbHRlcmVkTm9kZXMoKSkge1xuICAgICAgICAgICAgICAgIG5vZGUgPSB0aGlzLmdldE5vZGVXaXRoS2V5KG5vZGUua2V5LCB0aGlzLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmZpbmRJbmRleEluU2VsZWN0aW9uKG5vZGUpO1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkID0gaW5kZXggPj0gMDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNDaGVja2JveFNlbGVjdGlvbk1vZGUoKSkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wYWdhdGVTZWxlY3Rpb25Eb3duKSB0aGlzLnByb3BhZ2F0ZURvd24obm9kZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMuc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsIGkpID0+IGkgIT0gaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BhZ2F0ZVNlbGVjdGlvblVwICYmIG5vZGUucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVVwKG5vZGUucGFyZW50LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5vZGVVbnNlbGVjdC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIG5vZGU6IG5vZGUgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcGFnYXRlU2VsZWN0aW9uRG93bikgdGhpcy5wcm9wYWdhdGVEb3duKG5vZGUsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMuc2VsZWN0aW9uID0gWy4uLih0aGlzLnNlbGVjdGlvbiB8fCBbXSksIG5vZGVdO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BhZ2F0ZVNlbGVjdGlvblVwICYmIG5vZGUucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVVwKG5vZGUucGFyZW50LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVNlbGVjdC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIG5vZGU6IG5vZGUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgbWV0YVNlbGVjdGlvbiA9IHRoaXMubm9kZVRvdWNoZWQgPyBmYWxzZSA6IHRoaXMubWV0YUtleVNlbGVjdGlvbjtcblxuICAgICAgICAgICAgICAgIGlmIChtZXRhU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtZXRhS2V5ID0gZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZCAmJiBtZXRhS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsIGkpID0+IGkgIT0gaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVVuc2VsZWN0LmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgbm9kZTogbm9kZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2luZ2xlU2VsZWN0aW9uTW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0aW9uTW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSAhbWV0YUtleSA/IFtdIDogdGhpcy5zZWxlY3Rpb24gfHwgW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBbLi4udGhpcy5zZWxlY3Rpb24sIG5vZGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVNlbGVjdC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIG5vZGU6IG5vZGUgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Ob2RlVW5zZWxlY3QuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBub2RlOiBub2RlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5vZGVTZWxlY3QuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBub2RlOiBub2RlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbi5maWx0ZXIoKHZhbCwgaSkgPT4gaSAhPSBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5vZGVVbnNlbGVjdC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIG5vZGU6IG5vZGUgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gWy4uLih0aGlzLnNlbGVjdGlvbiB8fCBbXSksIG5vZGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Ob2RlU2VsZWN0LmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgbm9kZTogbm9kZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubm9kZVRvdWNoZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbk5vZGVUb3VjaEVuZCgpIHtcbiAgICAgICAgdGhpcy5ub2RlVG91Y2hlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25Ob2RlUmlnaHRDbGljayhldmVudDogTW91c2VFdmVudCwgbm9kZTogVHJlZU5vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dE1lbnUpIHtcbiAgICAgICAgICAgIGxldCBldmVudFRhcmdldCA9IDxFbGVtZW50PmV2ZW50LnRhcmdldDtcblxuICAgICAgICAgICAgaWYgKGV2ZW50VGFyZ2V0LmNsYXNzTmFtZSAmJiBldmVudFRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigncC10cmVlLXRvZ2dsZXInKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihub2RlKTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSBpbmRleCA+PSAwO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSkgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KFtub2RlXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0TWVudS5zaG93KGV2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZUNvbnRleHRNZW51U2VsZWN0LmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgbm9kZTogbm9kZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmRJbmRleEluU2VsZWN0aW9uKG5vZGU6IFRyZWVOb2RlKSB7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gLTE7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAmJiB0aGlzLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVTZWxlY3Rpb25Nb2RlKCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgYXJlTm9kZXNFcXVhbCA9ICh0aGlzLnNlbGVjdGlvbi5rZXkgJiYgdGhpcy5zZWxlY3Rpb24ua2V5ID09PSBub2RlLmtleSkgfHwgdGhpcy5zZWxlY3Rpb24gPT0gbm9kZTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGFyZU5vZGVzRXF1YWwgPyAwIDogLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3Rpb24ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkTm9kZSA9IHRoaXMuc2VsZWN0aW9uW2ldO1xuICAgICAgICAgICAgICAgICAgICBsZXQgYXJlTm9kZXNFcXVhbCA9IChzZWxlY3RlZE5vZGUua2V5ICYmIHNlbGVjdGVkTm9kZS5rZXkgPT09IG5vZGUua2V5KSB8fCBzZWxlY3RlZE5vZGUgPT0gbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyZU5vZGVzRXF1YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHN5bmNOb2RlT3B0aW9uKG5vZGUsIHBhcmVudE5vZGVzLCBvcHRpb24sIHZhbHVlPzogYW55KSB7XG4gICAgICAgIC8vIHRvIHN5bmNocm9uaXplIHRoZSBub2RlIG9wdGlvbiBiZXR3ZWVuIHRoZSBmaWx0ZXJlZCBub2RlcyBhbmQgdGhlIG9yaWdpbmFsIG5vZGVzKHRoaXMudmFsdWUpXG4gICAgICAgIGNvbnN0IF9ub2RlID0gdGhpcy5oYXNGaWx0ZXJlZE5vZGVzKCkgPyB0aGlzLmdldE5vZGVXaXRoS2V5KG5vZGUua2V5LCBwYXJlbnROb2RlcykgOiBudWxsO1xuICAgICAgICBpZiAoX25vZGUpIHtcbiAgICAgICAgICAgIF9ub2RlW29wdGlvbl0gPSB2YWx1ZSB8fCBub2RlW29wdGlvbl07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNGaWx0ZXJlZE5vZGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIgJiYgdGhpcy5maWx0ZXJlZE5vZGVzICYmIHRoaXMuZmlsdGVyZWROb2Rlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgZ2V0Tm9kZVdpdGhLZXkoa2V5OiBzdHJpbmcsIG5vZGVzOiBUcmVlTm9kZVtdKSB7XG4gICAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICAgIGlmIChub2RlLmtleSA9PT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1hdGNoZWROb2RlID0gdGhpcy5nZXROb2RlV2l0aEtleShrZXksIG5vZGUuY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZE5vZGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvcGFnYXRlVXAobm9kZTogVHJlZU5vZGUsIHNlbGVjdDogYm9vbGVhbikge1xuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkQ291bnQ6IG51bWJlciA9IDA7XG4gICAgICAgICAgICBsZXQgY2hpbGRQYXJ0aWFsU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50Kys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5wYXJ0aWFsU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRQYXJ0aWFsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVjdCAmJiBzZWxlY3RlZENvdW50ID09IG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBbLi4uKHRoaXMuc2VsZWN0aW9uIHx8IFtdKSwgbm9kZV07XG4gICAgICAgICAgICAgICAgbm9kZS5wYXJ0aWFsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsIGkpID0+IGkgIT0gaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkUGFydGlhbFNlbGVjdGVkIHx8IChzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSkgbm9kZS5wYXJ0aWFsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGVsc2Ugbm9kZS5wYXJ0aWFsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zeW5jTm9kZU9wdGlvbihub2RlLCB0aGlzLmZpbHRlcmVkTm9kZXMsICdwYXJ0aWFsU2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXJlbnQgPSBub2RlLnBhcmVudDtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVVcChwYXJlbnQsIHNlbGVjdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9wYWdhdGVEb3duKG5vZGU6IFRyZWVOb2RlLCBzZWxlY3Q6IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihub2RlKTtcblxuICAgICAgICBpZiAoc2VsZWN0ICYmIGluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IFsuLi4odGhpcy5zZWxlY3Rpb24gfHwgW10pLCBub2RlXTtcbiAgICAgICAgfSBlbHNlIGlmICghc2VsZWN0ICYmIGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsIGkpID0+IGkgIT0gaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5wYXJ0aWFsU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnN5bmNOb2RlT3B0aW9uKG5vZGUsIHRoaXMuZmlsdGVyZWROb2RlcywgJ3BhcnRpYWxTZWxlY3RlZCcpO1xuXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVEb3duKGNoaWxkLCBzZWxlY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChub2RlOiBUcmVlTm9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihub2RlKSAhPSAtMTtcbiAgICB9XG5cbiAgICBpc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlID09ICdzaW5nbGUnO1xuICAgIH1cblxuICAgIGlzTXVsdGlwbGVTZWxlY3Rpb25Nb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSA9PSAnbXVsdGlwbGUnO1xuICAgIH1cblxuICAgIGlzQ2hlY2tib3hTZWxlY3Rpb25Nb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSA9PSAnY2hlY2tib3gnO1xuICAgIH1cblxuICAgIGlzTm9kZUxlYWYobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5sZWFmID09IGZhbHNlID8gZmFsc2UgOiAhKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGgpO1xuICAgIH1cblxuICAgIGdldFJvb3ROb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZE5vZGVzID8gdGhpcy5maWx0ZXJlZE5vZGVzIDogdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBnZXRUZW1wbGF0ZUZvck5vZGUobm9kZTogVHJlZU5vZGUpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlTWFwKSByZXR1cm4gbm9kZS50eXBlID8gdGhpcy5fdGVtcGxhdGVNYXBbbm9kZS50eXBlXSA6IHRoaXMuX3RlbXBsYXRlTWFwWydkZWZhdWx0J107XG4gICAgICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgb25EcmFnT3ZlcihldmVudCkge1xuICAgICAgICBpZiAodGhpcy5kcm9wcGFibGVOb2RlcyAmJiAoIXRoaXMudmFsdWUgfHwgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdtb3ZlJztcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcHBhYmxlTm9kZXMgJiYgKCF0aGlzLnZhbHVlIHx8IHRoaXMudmFsdWUubGVuZ3RoID09PSAwKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGxldCBkcmFnTm9kZSA9IHRoaXMuZHJhZ05vZGU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmFsbG93RHJvcChkcmFnTm9kZSwgbnVsbCwgdGhpcy5kcmFnTm9kZVNjb3BlKSkge1xuICAgICAgICAgICAgICAgIGxldCBkcmFnTm9kZUluZGV4ID0gdGhpcy5kcmFnTm9kZUluZGV4O1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlIHx8IFtdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVEcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Ob2RlRHJvcC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ05vZGU6IGRyYWdOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJvcE5vZGU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogZHJhZ05vZGVJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc1RyZWVEcm9wKGRyYWdOb2RlLCBkcmFnTm9kZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5vZGVEcm9wLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBkcmFnTm9kZTogZHJhZ05vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkcm9wTm9kZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBkcmFnTm9kZUluZGV4XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc1RyZWVEcm9wKGRyYWdOb2RlLCBkcmFnTm9kZUluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9jZXNzVHJlZURyb3AoZHJhZ05vZGUsIGRyYWdOb2RlSW5kZXgpIHtcbiAgICAgICAgdGhpcy5kcmFnTm9kZVN1Yk5vZGVzLnNwbGljZShkcmFnTm9kZUluZGV4LCAxKTtcbiAgICAgICAgdGhpcy52YWx1ZS5wdXNoKGRyYWdOb2RlKTtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2Uuc3RvcERyYWcoe1xuICAgICAgICAgICAgbm9kZTogZHJhZ05vZGVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25EcmFnRW50ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BwYWJsZU5vZGVzICYmIHRoaXMuYWxsb3dEcm9wKHRoaXMuZHJhZ05vZGUsIG51bGwsIHRoaXMuZHJhZ05vZGVTY29wZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0hvdmVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRHJhZ0xlYXZlKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BwYWJsZU5vZGVzKSB7XG4gICAgICAgICAgICBsZXQgcmVjdCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBpZiAoZXZlbnQueCA+IHJlY3QubGVmdCArIHJlY3Qud2lkdGggfHwgZXZlbnQueCA8IHJlY3QubGVmdCB8fCBldmVudC55ID4gcmVjdC50b3AgKyByZWN0LmhlaWdodCB8fCBldmVudC55IDwgcmVjdC50b3ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdIb3ZlciA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWxsb3dEcm9wKGRyYWdOb2RlOiBUcmVlTm9kZSwgZHJvcE5vZGU6IFRyZWVOb2RlLCBkcmFnTm9kZVNjb3BlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFkcmFnTm9kZSkge1xuICAgICAgICAgICAgLy9wcmV2ZW50IHJhbmRvbSBodG1sIGVsZW1lbnRzIHRvIGJlIGRyYWdnZWRcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzVmFsaWREcmFnU2NvcGUoZHJhZ05vZGVTY29wZSkpIHtcbiAgICAgICAgICAgIGxldCBhbGxvdzogYm9vbGVhbiA9IHRydWU7XG4gICAgICAgICAgICBpZiAoZHJvcE5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZHJhZ05vZGUgPT09IGRyb3BOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFsbG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IGRyb3BOb2RlLnBhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBhcmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50ID09PSBkcmFnTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYWxsb3c7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1ZhbGlkRHJhZ1Njb3BlKGRyYWdTY29wZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBkcm9wU2NvcGUgPSB0aGlzLmRyb3BwYWJsZVNjb3BlO1xuXG4gICAgICAgIGlmIChkcm9wU2NvcGUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZHJvcFNjb3BlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZHJhZ1Njb3BlID09PSAnc3RyaW5nJykgcmV0dXJuIGRyb3BTY29wZSA9PT0gZHJhZ1Njb3BlO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZHJhZ1Njb3BlKSkgcmV0dXJuICg8QXJyYXk8YW55Pj5kcmFnU2NvcGUpLmluZGV4T2YoZHJvcFNjb3BlKSAhPSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkcm9wU2NvcGUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkcmFnU2NvcGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoPEFycmF5PGFueT4+ZHJvcFNjb3BlKS5pbmRleE9mKGRyYWdTY29wZSkgIT0gLTE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRyYWdTY29wZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcyBvZiBkcm9wU2NvcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGRzIG9mIGRyYWdTY29wZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID09PSBkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBfZmlsdGVyKHZhbHVlKSB7XG4gICAgICAgIGxldCBmaWx0ZXJWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAoZmlsdGVyVmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkTm9kZXMgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE5vZGVzID0gW107XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hGaWVsZHM6IHN0cmluZ1tdID0gdGhpcy5maWx0ZXJCeS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyVGV4dCA9IE9iamVjdFV0aWxzLnJlbW92ZUFjY2VudHMoZmlsdGVyVmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKHRoaXMuZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGlzU3RyaWN0TW9kZSA9IHRoaXMuZmlsdGVyTW9kZSA9PT0gJ3N0cmljdCc7XG4gICAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgY29weU5vZGUgPSB7IC4uLm5vZGUgfTtcbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1zV2l0aG91dE5vZGUgPSB7IHNlYXJjaEZpZWxkcywgZmlsdGVyVGV4dCwgaXNTdHJpY3RNb2RlIH07XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAoaXNTdHJpY3RNb2RlICYmICh0aGlzLmZpbmRGaWx0ZXJlZE5vZGVzKGNvcHlOb2RlLCBwYXJhbXNXaXRob3V0Tm9kZSkgfHwgdGhpcy5pc0ZpbHRlck1hdGNoZWQoY29weU5vZGUsIHBhcmFtc1dpdGhvdXROb2RlKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICghaXNTdHJpY3RNb2RlICYmICh0aGlzLmlzRmlsdGVyTWF0Y2hlZChjb3B5Tm9kZSwgcGFyYW1zV2l0aG91dE5vZGUpIHx8IHRoaXMuZmluZEZpbHRlcmVkTm9kZXMoY29weU5vZGUsIHBhcmFtc1dpdGhvdXROb2RlKSkpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWROb2Rlcy5wdXNoKGNvcHlOb2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVNlcmlhbGl6ZWRWYWx1ZSgpO1xuICAgICAgICB0aGlzLm9uRmlsdGVyLmVtaXQoe1xuICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgIGZpbHRlcmVkVmFsdWU6IHRoaXMuZmlsdGVyZWROb2Rlc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRGaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWROb2RlcyA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmlld0NoaWxkICYmIHRoaXMuZmlsdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzY3JvbGxUb1ZpcnR1YWxJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLnNjcm9sbGVyLnNjcm9sbFRvSW5kZXgoaW5kZXgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzY3JvbGxUbyhvcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsZXIuc2Nyb2xsVG8ob3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy53cmFwcGVyVmlld0NoaWxkICYmIHRoaXMud3JhcHBlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy53cmFwcGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zY3JvbGxUbyhvcHRpb25zKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IG9wdGlvbnMubGVmdDtcbiAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSBvcHRpb25zLnRvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmRGaWx0ZXJlZE5vZGVzKG5vZGUsIHBhcmFtc1dpdGhvdXROb2RlKSB7XG4gICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICBsZXQgbWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBsZXQgY2hpbGROb2RlcyA9IFsuLi5ub2RlLmNoaWxkcmVuXTtcbiAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGROb2RlIG9mIGNoaWxkTm9kZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvcHlDaGlsZE5vZGUgPSB7IC4uLmNoaWxkTm9kZSB9O1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0ZpbHRlck1hdGNoZWQoY29weUNoaWxkTm9kZSwgcGFyYW1zV2l0aG91dE5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4ucHVzaChjb3B5Q2hpbGROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzRmlsdGVyTWF0Y2hlZChub2RlLCB7IHNlYXJjaEZpZWxkcywgZmlsdGVyVGV4dCwgaXNTdHJpY3RNb2RlIH0pIHtcbiAgICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgZmllbGQgb2Ygc2VhcmNoRmllbGRzKSB7XG4gICAgICAgICAgICBsZXQgZmllbGRWYWx1ZSA9IE9iamVjdFV0aWxzLnJlbW92ZUFjY2VudHMoU3RyaW5nKE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEobm9kZSwgZmllbGQpKSkudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICAgICAgaWYgKGZpZWxkVmFsdWUuaW5kZXhPZihmaWx0ZXJUZXh0KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1hdGNoZWQgfHwgKGlzU3RyaWN0TW9kZSAmJiAhdGhpcy5pc05vZGVMZWFmKG5vZGUpKSkge1xuICAgICAgICAgICAgbWF0Y2hlZCA9IHRoaXMuZmluZEZpbHRlcmVkTm9kZXMobm9kZSwgeyBzZWFyY2hGaWVsZHMsIGZpbHRlclRleHQsIGlzU3RyaWN0TW9kZSB9KSB8fCBtYXRjaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWQ7XG4gICAgfVxuXG4gICAgZ2V0SW5kZXgob3B0aW9ucywgaW5kZXgpIHtcbiAgICAgICAgY29uc3QgZ2V0SXRlbU9wdGlvbnMgPSBvcHRpb25zWydnZXRJdGVtT3B0aW9ucyddO1xuICAgICAgICByZXR1cm4gZ2V0SXRlbU9wdGlvbnMgPyBnZXRJdGVtT3B0aW9ucyhpbmRleCkuaW5kZXggOiBpbmRleDtcbiAgICB9XG5cbiAgICBnZXRCbG9ja2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ1N0YXJ0U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdTdGFydFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ1N0b3BTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ1N0b3BTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hhcmVkTW9kdWxlLCBSaXBwbGVNb2R1bGUsIFNjcm9sbGVyTW9kdWxlLCBDaGVja0ljb24sIENoZXZyb25Eb3duSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgTWludXNJY29uLCBTZWFyY2hJY29uLCBTcGlubmVySWNvbl0sXG4gICAgZXhwb3J0czogW1RyZWUsIFNoYXJlZE1vZHVsZSwgU2Nyb2xsZXJNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW1RyZWUsIFVJVHJlZU5vZGVdXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVNb2R1bGUge31cbiJdfQ==