@ng-nest/ui 17.0.12 → 18.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 (923) hide show
  1. package/README.md +1 -1
  2. package/affix/affix.component.d.ts +0 -2
  3. package/affix/affix.property.d.ts +12 -7
  4. package/alert/alert.component.d.ts +12 -11
  5. package/alert/alert.property.d.ts +36 -35
  6. package/anchor/anchor.component.d.ts +15 -18
  7. package/anchor/anchor.property.d.ts +17 -8
  8. package/api/api.component.d.ts +2 -7
  9. package/auto-complete/auto-complete-portal.component.d.ts +20 -25
  10. package/auto-complete/auto-complete.component.d.ts +17 -34
  11. package/auto-complete/auto-complete.property.d.ts +282 -20
  12. package/avatar/avatar.component.d.ts +29 -19
  13. package/avatar/avatar.property.d.ts +78 -12
  14. package/back-top/back-top.component.d.ts +12 -17
  15. package/back-top/back-top.property.d.ts +12 -8
  16. package/badge/badge.component.d.ts +9 -16
  17. package/badge/badge.property.d.ts +95 -13
  18. package/base-form/base-form.component.d.ts +53 -26
  19. package/base-form/base-form.module.d.ts +1 -2
  20. package/base-form/base-form.property.d.ts +173 -45
  21. package/button/button.component.d.ts +16 -14
  22. package/button/button.property.d.ts +242 -100
  23. package/button/buttons.component.d.ts +8 -10
  24. package/calendar/calendar.component.d.ts +41 -27
  25. package/calendar/calendar.property.d.ts +69 -10
  26. package/card/card.component.d.ts +4 -6
  27. package/card/card.property.d.ts +50 -9
  28. package/carousel/carousel-panel.component.d.ts +15 -14
  29. package/carousel/carousel.component.d.ts +18 -19
  30. package/carousel/carousel.property.d.ts +168 -28
  31. package/cascade/cascade-portal.component.d.ts +28 -28
  32. package/cascade/cascade.component.d.ts +24 -30
  33. package/cascade/cascade.property.d.ts +292 -20
  34. package/checkbox/checkbox.component.d.ts +17 -17
  35. package/checkbox/checkbox.property.d.ts +274 -35
  36. package/collapse/collapse-panel.component.d.ts +5 -2
  37. package/collapse/collapse.component.d.ts +3 -7
  38. package/collapse/collapse.property.d.ts +113 -20
  39. package/color/color.component.d.ts +4 -9
  40. package/color/color.property.d.ts +36 -8
  41. package/color-picker/color-picker-portal.component.d.ts +40 -52
  42. package/color-picker/color-picker.component.d.ts +19 -28
  43. package/color-picker/color-picker.property.d.ts +260 -10
  44. package/comment/comment-reply.component.d.ts +1 -8
  45. package/comment/comment.component.d.ts +4 -14
  46. package/comment/comment.property.d.ts +21 -15
  47. package/container/aside.component.d.ts +3 -8
  48. package/container/container.component.d.ts +5 -9
  49. package/container/container.property.d.ts +33 -19
  50. package/container/footer.component.d.ts +2 -5
  51. package/container/header.component.d.ts +2 -5
  52. package/container/main.component.d.ts +2 -7
  53. package/core/animation/badge.d.ts +8 -0
  54. package/core/animation/connect.d.ts +8 -1
  55. package/core/animation/consts.d.ts +4 -0
  56. package/core/animation/drop.d.ts +4 -0
  57. package/core/animation/fade.d.ts +4 -0
  58. package/core/animation/move.d.ts +4 -0
  59. package/core/animation/opacity.d.ts +4 -0
  60. package/core/animation/slide.d.ts +4 -1
  61. package/core/config/config.d.ts +174 -108
  62. package/core/config/config.service.d.ts +5 -5
  63. package/core/config/index.d.ts +1 -0
  64. package/core/functions/chunk.d.ts +12 -1
  65. package/core/functions/clone-deep.d.ts +16 -0
  66. package/core/functions/convert.d.ts +77 -4
  67. package/core/functions/csspx.d.ts +5 -0
  68. package/core/functions/date.d.ts +59 -3
  69. package/core/functions/drop.d.ts +13 -1
  70. package/core/functions/flex.d.ts +4 -0
  71. package/core/functions/group-by.d.ts +5 -1
  72. package/core/functions/guid.d.ts +2 -1
  73. package/core/functions/has-in.d.ts +4 -0
  74. package/core/functions/order-by.d.ts +5 -1
  75. package/core/functions/parent-path.d.ts +8 -0
  76. package/core/functions/property.d.ts +12 -6
  77. package/core/functions/public-api.d.ts +1 -0
  78. package/core/functions/remove.d.ts +5 -1
  79. package/core/functions/resize.d.ts +13 -1
  80. package/core/interfaces/data.type.d.ts +172 -3
  81. package/core/interfaces/identify.type.d.ts +60 -0
  82. package/core/interfaces/layout.type.d.ts +88 -37
  83. package/core/interfaces/result-list.type.d.ts +91 -3
  84. package/core/services/http.service.d.ts +0 -22
  85. package/core/services/repository.service.d.ts +1 -1
  86. package/core/services/reuse-strategy.service.d.ts +0 -22
  87. package/core/services/storage.service.d.ts +0 -21
  88. package/core/theme/theme.d.ts +45 -1
  89. package/core/theme/theme.service.d.ts +46 -11
  90. package/core/util/animation.d.ts +1 -1
  91. package/core/util/camel-to-kebab.d.ts +13 -0
  92. package/core/util/check.d.ts +10 -2
  93. package/core/util/computed-style.d.ts +8 -0
  94. package/core/util/host.d.ts +3 -2
  95. package/core/util/html.d.ts +3 -2
  96. package/core/util/kebab-to-camel.d.ts +13 -0
  97. package/core/util/log.d.ts +10 -2
  98. package/core/util/option.d.ts +3 -4
  99. package/core/util/public-api.d.ts +2 -0
  100. package/crumb/crumb.component.d.ts +1 -10
  101. package/crumb/crumb.property.d.ts +12 -8
  102. package/date-picker/date-picker-portal.component.d.ts +80 -33
  103. package/date-picker/date-picker.component.d.ts +74 -32
  104. package/date-picker/date-picker.property.d.ts +662 -214
  105. package/date-picker/date-range-portal.component.d.ts +102 -49
  106. package/date-picker/date-range.component.d.ts +87 -43
  107. package/date-picker/picker-date.component.d.ts +63 -17
  108. package/date-picker/picker-month.component.d.ts +59 -13
  109. package/date-picker/picker-quarter.component.d.ts +61 -15
  110. package/date-picker/picker-year.component.d.ts +8 -11
  111. package/description/description-item.component.d.ts +1 -1
  112. package/description/description.component.d.ts +6 -10
  113. package/description/description.property.d.ts +135 -16
  114. package/dialog/dialog-portal.component.d.ts +4 -4
  115. package/dialog/dialog-portal.directives.d.ts +1 -1
  116. package/dialog/dialog.component.d.ts +30 -23
  117. package/dialog/dialog.property.d.ts +77 -134
  118. package/doc/doc.component.d.ts +2 -5
  119. package/drag/drag.directive.d.ts +1 -1
  120. package/drag/drag.property.d.ts +4 -5
  121. package/drawer/drawer-container.component.d.ts +1 -1
  122. package/drawer/drawer-portal.component.d.ts +1 -1
  123. package/drawer/drawer.component.d.ts +15 -14
  124. package/drawer/drawer.property.d.ts +26 -18
  125. package/dropdown/dropdown-portal.component.d.ts +36 -45
  126. package/dropdown/dropdown.component.d.ts +17 -21
  127. package/dropdown/dropdown.property.d.ts +24 -21
  128. package/empty/empty.component.d.ts +0 -7
  129. package/empty/empty.property.d.ts +27 -4
  130. package/esm2022/affix/affix.component.mjs +6 -11
  131. package/esm2022/affix/affix.module.mjs +5 -5
  132. package/esm2022/affix/affix.property.mjs +22 -20
  133. package/esm2022/alert/alert.component.mjs +39 -44
  134. package/esm2022/alert/alert.module.mjs +5 -5
  135. package/esm2022/alert/alert.property.mjs +102 -107
  136. package/esm2022/anchor/anchor-inner.component.mjs +4 -4
  137. package/esm2022/anchor/anchor.component.mjs +73 -95
  138. package/esm2022/anchor/anchor.module.mjs +5 -5
  139. package/esm2022/anchor/anchor.property.mjs +45 -35
  140. package/esm2022/api/api.component.mjs +11 -14
  141. package/esm2022/api/api.module.mjs +5 -5
  142. package/esm2022/auto-complete/auto-complete-portal.component.mjs +36 -47
  143. package/esm2022/auto-complete/auto-complete.component.mjs +122 -162
  144. package/esm2022/auto-complete/auto-complete.module.mjs +5 -5
  145. package/esm2022/auto-complete/auto-complete.property.mjs +142 -55
  146. package/esm2022/avatar/avatar-group.component.mjs +4 -4
  147. package/esm2022/avatar/avatar.component.mjs +75 -81
  148. package/esm2022/avatar/avatar.module.mjs +5 -5
  149. package/esm2022/avatar/avatar.property.mjs +116 -45
  150. package/esm2022/back-top/back-top.component.mjs +57 -73
  151. package/esm2022/back-top/back-top.module.mjs +5 -5
  152. package/esm2022/back-top/back-top.property.mjs +37 -29
  153. package/esm2022/badge/badge.component.mjs +51 -59
  154. package/esm2022/badge/badge.module.mjs +5 -5
  155. package/esm2022/badge/badge.property.mjs +111 -38
  156. package/esm2022/base-form/base-form.component.mjs +89 -81
  157. package/esm2022/base-form/base-form.module.mjs +7 -8
  158. package/esm2022/base-form/base-form.property.mjs +200 -89
  159. package/esm2022/button/button.component.mjs +50 -59
  160. package/esm2022/button/button.module.mjs +5 -5
  161. package/esm2022/button/button.property.mjs +293 -98
  162. package/esm2022/button/buttons.component.mjs +35 -21
  163. package/esm2022/calendar/calendar.component.mjs +56 -84
  164. package/esm2022/calendar/calendar.module.mjs +5 -5
  165. package/esm2022/calendar/calendar.property.mjs +78 -24
  166. package/esm2022/card/card.component.mjs +10 -14
  167. package/esm2022/card/card.module.mjs +5 -5
  168. package/esm2022/card/card.property.mjs +57 -22
  169. package/esm2022/carousel/carousel-panel.component.mjs +98 -76
  170. package/esm2022/carousel/carousel.component.mjs +55 -65
  171. package/esm2022/carousel/carousel.module.mjs +5 -5
  172. package/esm2022/carousel/carousel.property.mjs +215 -85
  173. package/esm2022/cascade/cascade-portal.component.mjs +77 -69
  174. package/esm2022/cascade/cascade.component.mjs +107 -135
  175. package/esm2022/cascade/cascade.module.mjs +5 -5
  176. package/esm2022/cascade/cascade.property.mjs +137 -48
  177. package/esm2022/checkbox/checkbox.component.mjs +68 -83
  178. package/esm2022/checkbox/checkbox.module.mjs +5 -5
  179. package/esm2022/checkbox/checkbox.property.mjs +136 -73
  180. package/esm2022/collapse/collapse-panel.component.mjs +31 -21
  181. package/esm2022/collapse/collapse.component.mjs +16 -21
  182. package/esm2022/collapse/collapse.module.mjs +5 -5
  183. package/esm2022/collapse/collapse.property.mjs +156 -66
  184. package/esm2022/color/color.component.mjs +25 -26
  185. package/esm2022/color/color.module.mjs +5 -5
  186. package/esm2022/color/color.property.mjs +47 -27
  187. package/esm2022/color-picker/color-picker-portal.component.mjs +120 -130
  188. package/esm2022/color-picker/color-picker.component.mjs +76 -117
  189. package/esm2022/color-picker/color-picker.module.mjs +5 -5
  190. package/esm2022/color-picker/color-picker.property.mjs +123 -27
  191. package/esm2022/comment/comment-reply.component.mjs +9 -24
  192. package/esm2022/comment/comment.component.mjs +11 -40
  193. package/esm2022/comment/comment.module.mjs +5 -5
  194. package/esm2022/comment/comment.property.mjs +27 -50
  195. package/esm2022/container/aside.component.mjs +12 -15
  196. package/esm2022/container/container.component.mjs +21 -24
  197. package/esm2022/container/container.module.mjs +5 -5
  198. package/esm2022/container/container.property.mjs +55 -51
  199. package/esm2022/container/footer.component.mjs +14 -16
  200. package/esm2022/container/header.component.mjs +14 -16
  201. package/esm2022/container/main.component.mjs +10 -13
  202. package/esm2022/core/animation/badge.mjs +17 -3
  203. package/esm2022/core/animation/connect.mjs +17 -99
  204. package/esm2022/core/animation/consts.mjs +5 -1
  205. package/esm2022/core/animation/drop.mjs +5 -1
  206. package/esm2022/core/animation/fade.mjs +13 -3
  207. package/esm2022/core/animation/move.mjs +5 -1
  208. package/esm2022/core/animation/opacity.mjs +5 -1
  209. package/esm2022/core/animation/slide.mjs +5 -23
  210. package/esm2022/core/config/config.mjs +1 -1
  211. package/esm2022/core/config/config.service.mjs +11 -59
  212. package/esm2022/core/config/index.mjs +2 -0
  213. package/esm2022/core/functions/chunk.mjs +12 -1
  214. package/esm2022/core/functions/clone-deep.mjs +17 -1
  215. package/esm2022/core/functions/convert.mjs +110 -13
  216. package/esm2022/core/functions/csspx.mjs +17 -0
  217. package/esm2022/core/functions/date.mjs +80 -4
  218. package/esm2022/core/functions/drop.mjs +13 -1
  219. package/esm2022/core/functions/flex.mjs +5 -1
  220. package/esm2022/core/functions/group-by.mjs +5 -1
  221. package/esm2022/core/functions/guid.mjs +3 -2
  222. package/esm2022/core/functions/has-in.mjs +5 -1
  223. package/esm2022/core/functions/order-by.mjs +5 -1
  224. package/esm2022/core/functions/parent-path.mjs +9 -1
  225. package/esm2022/core/functions/property.mjs +16 -8
  226. package/esm2022/core/functions/public-api.mjs +2 -1
  227. package/esm2022/core/functions/remove.mjs +5 -1
  228. package/esm2022/core/functions/resize.mjs +7 -5
  229. package/esm2022/core/interfaces/data.type.mjs +97 -8
  230. package/esm2022/core/interfaces/identify.type.mjs +5 -2
  231. package/esm2022/core/interfaces/layout.type.mjs +1 -1
  232. package/esm2022/core/interfaces/result-list.type.mjs +1 -1
  233. package/esm2022/core/services/http.service.mjs +4 -33
  234. package/esm2022/core/services/preloading-strategy.service.mjs +4 -6
  235. package/esm2022/core/services/repository.service.mjs +1 -1
  236. package/esm2022/core/services/reuse-strategy.service.mjs +1 -26
  237. package/esm2022/core/services/storage.service.mjs +4 -26
  238. package/esm2022/core/theme/theme.mjs +55 -11
  239. package/esm2022/core/theme/theme.service.mjs +92 -20
  240. package/esm2022/core/util/animation.mjs +2 -23
  241. package/esm2022/core/util/camel-to-kebab.mjs +16 -0
  242. package/esm2022/core/util/check.mjs +11 -3
  243. package/esm2022/core/util/computed-style.mjs +9 -1
  244. package/esm2022/core/util/host.mjs +4 -3
  245. package/esm2022/core/util/html.mjs +5 -4
  246. package/esm2022/core/util/kebab-to-camel.mjs +16 -0
  247. package/esm2022/core/util/log.mjs +11 -3
  248. package/esm2022/core/util/option.mjs +4 -5
  249. package/esm2022/core/util/public-api.mjs +3 -1
  250. package/esm2022/crumb/crumb.component.mjs +6 -29
  251. package/esm2022/crumb/crumb.module.mjs +5 -5
  252. package/esm2022/crumb/crumb.property.mjs +21 -26
  253. package/esm2022/date-picker/date-picker-portal.component.mjs +86 -102
  254. package/esm2022/date-picker/date-picker.component.mjs +157 -191
  255. package/esm2022/date-picker/date-picker.module.mjs +5 -5
  256. package/esm2022/date-picker/date-picker.property.mjs +440 -462
  257. package/esm2022/date-picker/date-quarter.pipe.mjs +4 -4
  258. package/esm2022/date-picker/date-range-portal.component.mjs +172 -186
  259. package/esm2022/date-picker/date-range.component.mjs +224 -266
  260. package/esm2022/date-picker/picker-date.component.mjs +150 -150
  261. package/esm2022/date-picker/picker-month.component.mjs +115 -118
  262. package/esm2022/date-picker/picker-quarter.component.mjs +120 -119
  263. package/esm2022/date-picker/picker-year.component.mjs +121 -108
  264. package/esm2022/description/description-item.component.mjs +12 -11
  265. package/esm2022/description/description.component.mjs +33 -48
  266. package/esm2022/description/description.module.mjs +5 -5
  267. package/esm2022/description/description.property.mjs +175 -52
  268. package/esm2022/dialog/dialog-container.component.mjs +4 -4
  269. package/esm2022/dialog/dialog-portal.component.mjs +14 -20
  270. package/esm2022/dialog/dialog-portal.directives.mjs +20 -20
  271. package/esm2022/dialog/dialog-ref.mjs +1 -1
  272. package/esm2022/dialog/dialog.component.mjs +117 -131
  273. package/esm2022/dialog/dialog.module.mjs +5 -5
  274. package/esm2022/dialog/dialog.property.mjs +149 -139
  275. package/esm2022/dialog/dialog.service.mjs +7 -7
  276. package/esm2022/doc/doc.component.mjs +11 -12
  277. package/esm2022/doc/doc.module.mjs +5 -5
  278. package/esm2022/drag/drag.directive.mjs +8 -21
  279. package/esm2022/drag/drag.module.mjs +5 -5
  280. package/esm2022/drag/drag.property.mjs +10 -16
  281. package/esm2022/drawer/drawer-container.component.mjs +9 -9
  282. package/esm2022/drawer/drawer-portal.component.mjs +11 -13
  283. package/esm2022/drawer/drawer-portal.directives.mjs +10 -10
  284. package/esm2022/drawer/drawer.component.mjs +40 -59
  285. package/esm2022/drawer/drawer.module.mjs +5 -5
  286. package/esm2022/drawer/drawer.property.mjs +47 -54
  287. package/esm2022/drawer/drawer.service.mjs +6 -6
  288. package/esm2022/dropdown/dropdown-portal.component.mjs +90 -91
  289. package/esm2022/dropdown/dropdown.component.mjs +75 -91
  290. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  291. package/esm2022/dropdown/dropdown.property.mjs +62 -59
  292. package/esm2022/empty/empty.component.mjs +6 -26
  293. package/esm2022/empty/empty.module.mjs +5 -5
  294. package/esm2022/empty/empty.property.mjs +41 -20
  295. package/esm2022/examples/examples.component.mjs +11 -12
  296. package/esm2022/examples/examples.module.mjs +5 -5
  297. package/esm2022/find/find.component.mjs +188 -232
  298. package/esm2022/find/find.module.mjs +5 -5
  299. package/esm2022/find/find.property.mjs +234 -193
  300. package/esm2022/form/control.component.mjs +138 -116
  301. package/esm2022/form/form.component.mjs +28 -36
  302. package/esm2022/form/form.module.mjs +5 -5
  303. package/esm2022/form/form.property.mjs +57 -55
  304. package/esm2022/highlight/highlight.component.mjs +54 -59
  305. package/esm2022/highlight/highlight.module.mjs +5 -5
  306. package/esm2022/highlight/highlight.property.mjs +25 -21
  307. package/esm2022/highlight/highlight.service.mjs +17 -0
  308. package/esm2022/highlight/public-api.mjs +2 -1
  309. package/esm2022/i18n/i18n.directive.mjs +17 -31
  310. package/esm2022/i18n/i18n.module.mjs +5 -5
  311. package/esm2022/i18n/i18n.pipe.mjs +4 -4
  312. package/esm2022/i18n/i18n.property.mjs +2 -2
  313. package/esm2022/i18n/i18n.service.mjs +4 -4
  314. package/esm2022/i18n/languages/ar_EG.mjs +122 -77
  315. package/esm2022/i18n/languages/bg_BG.mjs +135 -87
  316. package/esm2022/i18n/languages/ca_ES.mjs +130 -82
  317. package/esm2022/i18n/languages/cs_CZ.mjs +127 -79
  318. package/esm2022/i18n/languages/da_DK.mjs +129 -81
  319. package/esm2022/i18n/languages/de_DE.mjs +125 -77
  320. package/esm2022/i18n/languages/el_GR.mjs +132 -84
  321. package/esm2022/i18n/languages/en_GB.mjs +5 -2
  322. package/esm2022/i18n/languages/en_US.mjs +5 -2
  323. package/esm2022/i18n/languages/es_ES.mjs +131 -83
  324. package/esm2022/i18n/languages/et_EE.mjs +130 -82
  325. package/esm2022/i18n/languages/fa_IR.mjs +109 -61
  326. package/esm2022/i18n/languages/fi_FI.mjs +134 -86
  327. package/esm2022/i18n/languages/fr_BE.mjs +128 -80
  328. package/esm2022/i18n/languages/fr_FR.mjs +127 -79
  329. package/esm2022/i18n/languages/he_IL.mjs +119 -74
  330. package/esm2022/i18n/languages/hi_IN.mjs +104 -56
  331. package/esm2022/i18n/languages/hr_HR.mjs +133 -85
  332. package/esm2022/i18n/languages/hu_HU.mjs +132 -84
  333. package/esm2022/i18n/languages/hy_AM.mjs +133 -85
  334. package/esm2022/i18n/languages/id_ID.mjs +119 -71
  335. package/esm2022/i18n/languages/is_IS.mjs +125 -77
  336. package/esm2022/i18n/languages/it_IT.mjs +127 -79
  337. package/esm2022/i18n/languages/ja_JP.mjs +95 -47
  338. package/esm2022/i18n/languages/ka_GE.mjs +106 -58
  339. package/esm2022/i18n/languages/kn_IN.mjs +110 -62
  340. package/esm2022/i18n/languages/ko_KR.mjs +126 -70
  341. package/esm2022/i18n/languages/ku_IQ.mjs +117 -85
  342. package/esm2022/i18n/languages/lv_LV.mjs +128 -72
  343. package/esm2022/i18n/languages/mn_MN.mjs +138 -82
  344. package/esm2022/i18n/languages/ms_MY.mjs +124 -68
  345. package/esm2022/i18n/languages/nb_NO.mjs +133 -77
  346. package/esm2022/i18n/languages/ne_NP.mjs +117 -61
  347. package/esm2022/i18n/languages/nl_BE.mjs +134 -78
  348. package/esm2022/i18n/languages/nl_NL.mjs +134 -78
  349. package/esm2022/i18n/languages/pl_PL.mjs +132 -76
  350. package/esm2022/i18n/languages/pt_BR.mjs +133 -77
  351. package/esm2022/i18n/languages/pt_PT.mjs +133 -77
  352. package/esm2022/i18n/languages/ro_RO.mjs +130 -74
  353. package/esm2022/i18n/languages/ru_RU.mjs +131 -75
  354. package/esm2022/i18n/languages/sk_SK.mjs +130 -83
  355. package/esm2022/i18n/languages/sl_SI.mjs +121 -73
  356. package/esm2022/i18n/languages/sr_RS.mjs +138 -90
  357. package/esm2022/i18n/languages/sv_SE.mjs +132 -84
  358. package/esm2022/i18n/languages/ta_IN.mjs +117 -61
  359. package/esm2022/i18n/languages/th_TH.mjs +99 -43
  360. package/esm2022/i18n/languages/tr_TR.mjs +126 -70
  361. package/esm2022/i18n/languages/uk_UA.mjs +124 -68
  362. package/esm2022/i18n/languages/vi_VN.mjs +133 -77
  363. package/esm2022/i18n/languages/zh_CN.mjs +5 -2
  364. package/esm2022/i18n/languages/zh_TW.mjs +5 -2
  365. package/esm2022/icon/icon.component.mjs +46 -77
  366. package/esm2022/icon/icon.module.mjs +5 -5
  367. package/esm2022/icon/icon.property.mjs +52 -30
  368. package/esm2022/icon/icon.service.mjs +15 -14
  369. package/esm2022/image/image-group.component.mjs +15 -15
  370. package/esm2022/image/image-preview.component.mjs +47 -46
  371. package/esm2022/image/image.component.mjs +34 -53
  372. package/esm2022/image/image.module.mjs +5 -5
  373. package/esm2022/image/image.property.mjs +152 -38
  374. package/esm2022/index.mjs +1 -3
  375. package/esm2022/inner/inner.component.mjs +15 -20
  376. package/esm2022/inner/inner.module.mjs +5 -5
  377. package/esm2022/inner/inner.property.mjs +17 -15
  378. package/esm2022/input/input-group.component.mjs +5 -7
  379. package/esm2022/input/input.component.mjs +130 -143
  380. package/esm2022/input/input.module.mjs +5 -5
  381. package/esm2022/input/input.property.mjs +205 -143
  382. package/esm2022/input-number/input-number.component.mjs +68 -86
  383. package/esm2022/input-number/input-number.module.mjs +5 -5
  384. package/esm2022/input-number/input-number.property.mjs +130 -60
  385. package/esm2022/keyword/keyword.directive.mjs +46 -54
  386. package/esm2022/keyword/keyword.module.mjs +5 -5
  387. package/esm2022/keyword/keyword.property.mjs +32 -28
  388. package/esm2022/layout/col.component.mjs +48 -51
  389. package/esm2022/layout/layout.module.mjs +5 -5
  390. package/esm2022/layout/layout.property.mjs +71 -63
  391. package/esm2022/layout/row.component.mjs +36 -27
  392. package/esm2022/link/link.component.mjs +18 -45
  393. package/esm2022/link/link.module.mjs +5 -5
  394. package/esm2022/link/link.property.mjs +101 -41
  395. package/esm2022/list/list-drop-group.directive.mjs +9 -18
  396. package/esm2022/list/list-option.component.mjs +16 -33
  397. package/esm2022/list/list.component.mjs +160 -164
  398. package/esm2022/list/list.module.mjs +5 -5
  399. package/esm2022/list/list.property.mjs +195 -188
  400. package/esm2022/loading/loading.component.mjs +44 -45
  401. package/esm2022/loading/loading.module.mjs +5 -5
  402. package/esm2022/loading/loading.property.mjs +50 -52
  403. package/esm2022/menu/menu-node.component.mjs +21 -21
  404. package/esm2022/menu/menu.component.mjs +57 -76
  405. package/esm2022/menu/menu.module.mjs +5 -5
  406. package/esm2022/menu/menu.property.mjs +56 -73
  407. package/esm2022/message/message.component.mjs +8 -8
  408. package/esm2022/message/message.module.mjs +5 -5
  409. package/esm2022/message/message.property.mjs +1 -1
  410. package/esm2022/message/message.service.mjs +7 -7
  411. package/esm2022/message-box/message-box.component.mjs +5 -5
  412. package/esm2022/message-box/message-box.module.mjs +5 -5
  413. package/esm2022/message-box/message-box.service.mjs +6 -6
  414. package/esm2022/notification/notification.component.mjs +8 -8
  415. package/esm2022/notification/notification.module.mjs +5 -5
  416. package/esm2022/notification/notification.property.mjs +1 -1
  417. package/esm2022/notification/notification.service.mjs +8 -8
  418. package/esm2022/outlet/outlet.directive.mjs +12 -14
  419. package/esm2022/outlet/outlet.module.mjs +5 -5
  420. package/esm2022/outlet/outlet.property.mjs +2 -2
  421. package/esm2022/page-header/page-header.component.mjs +12 -28
  422. package/esm2022/page-header/page-header.module.mjs +5 -5
  423. package/esm2022/page-header/page-header.property.mjs +31 -27
  424. package/esm2022/pagination/pagination.component.mjs +74 -100
  425. package/esm2022/pagination/pagination.module.mjs +5 -5
  426. package/esm2022/pagination/pagination.property.mjs +99 -136
  427. package/esm2022/pattern/pattern.component.mjs +12 -13
  428. package/esm2022/pattern/pattern.module.mjs +5 -5
  429. package/esm2022/pattern/pattern.property.mjs +2 -2
  430. package/esm2022/popconfirm/popconfirm.component.mjs +35 -47
  431. package/esm2022/popconfirm/popconfirm.module.mjs +5 -5
  432. package/esm2022/popconfirm/popconfirm.property.mjs +76 -62
  433. package/esm2022/popover/popover-portal.component.mjs +24 -75
  434. package/esm2022/popover/popover.directive.mjs +70 -86
  435. package/esm2022/popover/popover.module.mjs +5 -5
  436. package/esm2022/popover/popover.property.mjs +71 -58
  437. package/esm2022/portal/portal.module.mjs +5 -5
  438. package/esm2022/portal/portal.property.mjs +1 -1
  439. package/esm2022/portal/portal.service.mjs +4 -4
  440. package/esm2022/progress/progress.component.mjs +173 -167
  441. package/esm2022/progress/progress.module.mjs +5 -5
  442. package/esm2022/progress/progress.property.mjs +67 -71
  443. package/esm2022/radio/radio.component.mjs +45 -61
  444. package/esm2022/radio/radio.module.mjs +5 -5
  445. package/esm2022/radio/radio.property.mjs +139 -66
  446. package/esm2022/rate/rate.component.mjs +61 -79
  447. package/esm2022/rate/rate.module.mjs +5 -5
  448. package/esm2022/rate/rate.property.mjs +121 -29
  449. package/esm2022/resizable/resizable.directive.mjs +30 -45
  450. package/esm2022/resizable/resizable.module.mjs +5 -5
  451. package/esm2022/resizable/resizable.property.mjs +16 -46
  452. package/esm2022/result/result.component.mjs +13 -17
  453. package/esm2022/result/result.module.mjs +5 -5
  454. package/esm2022/result/result.property.mjs +25 -17
  455. package/esm2022/ripple/ripple.directive.mjs +38 -27
  456. package/esm2022/ripple/ripple.module.mjs +5 -5
  457. package/esm2022/ripple/ripple.property.mjs +27 -20
  458. package/esm2022/select/select-portal.component.mjs +52 -67
  459. package/esm2022/select/select.component.mjs +301 -289
  460. package/esm2022/select/select.module.mjs +5 -5
  461. package/esm2022/select/select.property.mjs +195 -102
  462. package/esm2022/skeleton/skeleton.component.mjs +12 -23
  463. package/esm2022/skeleton/skeleton.module.mjs +5 -5
  464. package/esm2022/skeleton/skeleton.property.mjs +31 -28
  465. package/esm2022/slider/slider.component.mjs +103 -149
  466. package/esm2022/slider/slider.module.mjs +5 -5
  467. package/esm2022/slider/slider.property.mjs +60 -79
  468. package/esm2022/slider-select/slider-select.component.mjs +201 -220
  469. package/esm2022/slider-select/slider-select.module.mjs +5 -5
  470. package/esm2022/slider-select/slider-select.property.mjs +143 -70
  471. package/esm2022/statistic/countdown.component.mjs +13 -16
  472. package/esm2022/statistic/statistic.component.mjs +23 -21
  473. package/esm2022/statistic/statistic.module.mjs +5 -5
  474. package/esm2022/statistic/statistic.property.mjs +68 -34
  475. package/esm2022/steps/steps.component.mjs +33 -63
  476. package/esm2022/steps/steps.module.mjs +5 -5
  477. package/esm2022/steps/steps.property.mjs +28 -39
  478. package/esm2022/switch/switch.component.mjs +22 -37
  479. package/esm2022/switch/switch.module.mjs +5 -5
  480. package/esm2022/switch/switch.property.mjs +122 -32
  481. package/esm2022/table/table-body.component.mjs +134 -139
  482. package/esm2022/table/table-foot.component.mjs +15 -18
  483. package/esm2022/table/table-head.component.mjs +60 -91
  484. package/esm2022/table/table.component.mjs +192 -222
  485. package/esm2022/table/table.module.mjs +5 -5
  486. package/esm2022/table/table.property.mjs +396 -341
  487. package/esm2022/tabs/tab-content.component.mjs +13 -16
  488. package/esm2022/tabs/tab-link.directive.mjs +7 -7
  489. package/esm2022/tabs/tab.component.mjs +9 -17
  490. package/esm2022/tabs/tabs.component.mjs +83 -135
  491. package/esm2022/tabs/tabs.module.mjs +5 -5
  492. package/esm2022/tabs/tabs.property.mjs +80 -91
  493. package/esm2022/tag/tag.component.mjs +19 -33
  494. package/esm2022/tag/tag.module.mjs +5 -5
  495. package/esm2022/tag/tag.property.mjs +44 -68
  496. package/esm2022/text-retract/text-retract.component.mjs +29 -46
  497. package/esm2022/text-retract/text-retract.module.mjs +5 -5
  498. package/esm2022/text-retract/text-retract.property.mjs +22 -18
  499. package/esm2022/textarea/textarea.component.mjs +49 -79
  500. package/esm2022/textarea/textarea.module.mjs +5 -5
  501. package/esm2022/textarea/textarea.property.mjs +124 -47
  502. package/esm2022/theme/theme.component.mjs +86 -81
  503. package/esm2022/theme/theme.module.mjs +5 -5
  504. package/esm2022/theme/theme.property.mjs +35 -46
  505. package/esm2022/time-ago/time-ago.module.mjs +5 -5
  506. package/esm2022/time-ago/time-ago.pipe.mjs +12 -11
  507. package/esm2022/time-ago/time-ago.property.mjs +2 -2
  508. package/esm2022/time-picker/time-picker-frame.component.mjs +173 -188
  509. package/esm2022/time-picker/time-picker-portal.component.mjs +35 -42
  510. package/esm2022/time-picker/time-picker.component.mjs +139 -170
  511. package/esm2022/time-picker/time-picker.module.mjs +5 -5
  512. package/esm2022/time-picker/time-picker.property.mjs +158 -70
  513. package/esm2022/time-range/time-range.module.mjs +5 -5
  514. package/esm2022/time-range/time-range.pipe.mjs +10 -10
  515. package/esm2022/time-range/time-range.property.mjs +2 -2
  516. package/esm2022/timeline/timeline.component.mjs +14 -38
  517. package/esm2022/timeline/timeline.module.mjs +5 -5
  518. package/esm2022/timeline/timeline.property.mjs +30 -30
  519. package/esm2022/tooltip/tooltip-portal.component.mjs +51 -65
  520. package/esm2022/tooltip/tooltip.directive.mjs +65 -62
  521. package/esm2022/tooltip/tooltip.module.mjs +5 -5
  522. package/esm2022/tooltip/tooltip.property.mjs +53 -47
  523. package/esm2022/transfer/transfer.component.mjs +225 -184
  524. package/esm2022/transfer/transfer.module.mjs +5 -5
  525. package/esm2022/transfer/transfer.property.mjs +84 -76
  526. package/esm2022/tree/tree-node.component.mjs +142 -132
  527. package/esm2022/tree/tree.component.mjs +236 -232
  528. package/esm2022/tree/tree.module.mjs +5 -5
  529. package/esm2022/tree/tree.property.mjs +228 -226
  530. package/esm2022/tree/tree.service.mjs +4 -4
  531. package/esm2022/tree-file/tree-file.component.mjs +34 -43
  532. package/esm2022/tree-file/tree-file.module.mjs +5 -5
  533. package/esm2022/tree-file/tree-file.property.mjs +45 -56
  534. package/esm2022/tree-select/tree-select-portal.component.mjs +45 -78
  535. package/esm2022/tree-select/tree-select.component.mjs +283 -296
  536. package/esm2022/tree-select/tree-select.module.mjs +5 -5
  537. package/esm2022/tree-select/tree-select.property.mjs +203 -125
  538. package/esm2022/typography/typography.component.mjs +13 -10
  539. package/esm2022/typography/typography.module.mjs +5 -5
  540. package/esm2022/typography/typography.property.mjs +12 -11
  541. package/esm2022/upload/upload-portal.component.mjs +54 -57
  542. package/esm2022/upload/upload.component.mjs +79 -98
  543. package/esm2022/upload/upload.module.mjs +5 -5
  544. package/esm2022/upload/upload.property.mjs +73 -68
  545. package/examples/examples.component.d.ts +2 -5
  546. package/fesm2022/ng-nest-ui-affix.mjs +30 -32
  547. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  548. package/fesm2022/ng-nest-ui-alert.mjs +142 -152
  549. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  550. package/fesm2022/ng-nest-ui-anchor.mjs +121 -133
  551. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  552. package/fesm2022/ng-nest-ui-api.mjs +14 -17
  553. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  554. package/fesm2022/ng-nest-ui-auto-complete.mjs +296 -260
  555. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  556. package/fesm2022/ng-nest-ui-avatar.mjs +195 -130
  557. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  558. package/fesm2022/ng-nest-ui-back-top.mjs +95 -103
  559. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  560. package/fesm2022/ng-nest-ui-badge.mjs +161 -96
  561. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  562. package/fesm2022/ng-nest-ui-base-form.mjs +286 -166
  563. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  564. package/fesm2022/ng-nest-ui-button.mjs +376 -175
  565. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  566. package/fesm2022/ng-nest-ui-calendar.mjs +134 -108
  567. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  568. package/fesm2022/ng-nest-ui-card.mjs +67 -36
  569. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  570. package/fesm2022/ng-nest-ui-carousel.mjs +365 -223
  571. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  572. package/fesm2022/ng-nest-ui-cascade.mjs +318 -249
  573. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  574. package/fesm2022/ng-nest-ui-checkbox.mjs +203 -155
  575. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  576. package/fesm2022/ng-nest-ui-collapse.mjs +202 -106
  577. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  578. package/fesm2022/ng-nest-ui-color-picker.mjs +316 -270
  579. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  580. package/fesm2022/ng-nest-ui-color.mjs +73 -54
  581. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  582. package/fesm2022/ng-nest-ui-comment.mjs +44 -108
  583. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  584. package/fesm2022/ng-nest-ui-container.mjs +119 -123
  585. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  586. package/fesm2022/ng-nest-ui-core.mjs +985 -664
  587. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  588. package/fesm2022/ng-nest-ui-crumb.mjs +28 -55
  589. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  590. package/fesm2022/ng-nest-ui-date-picker.mjs +1552 -1671
  591. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  592. package/fesm2022/ng-nest-ui-description.mjs +218 -109
  593. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  594. package/fesm2022/ng-nest-ui-dialog.mjs +307 -316
  595. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  596. package/fesm2022/ng-nest-ui-doc.mjs +14 -15
  597. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  598. package/fesm2022/ng-nest-ui-drag.mjs +20 -39
  599. package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
  600. package/fesm2022/ng-nest-ui-drawer.mjs +116 -145
  601. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  602. package/fesm2022/ng-nest-ui-dropdown.mjs +223 -238
  603. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  604. package/fesm2022/ng-nest-ui-empty.mjs +49 -46
  605. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  606. package/fesm2022/ng-nest-ui-examples.mjs +14 -15
  607. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  608. package/fesm2022/ng-nest-ui-find.mjs +422 -425
  609. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  610. package/fesm2022/ng-nest-ui-form.mjs +218 -203
  611. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  612. package/fesm2022/ng-nest-ui-highlight.mjs +93 -81
  613. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  614. package/fesm2022/ng-nest-ui-i18n.mjs +5892 -3516
  615. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  616. package/fesm2022/ng-nest-ui-icon.mjs +112 -120
  617. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  618. package/fesm2022/ng-nest-ui-image.mjs +244 -147
  619. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  620. package/fesm2022/ng-nest-ui-inner.mjs +33 -35
  621. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  622. package/fesm2022/ng-nest-ui-input-number.mjs +198 -146
  623. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  624. package/fesm2022/ng-nest-ui-input.mjs +340 -292
  625. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  626. package/fesm2022/ng-nest-ui-keyword.mjs +78 -82
  627. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  628. package/fesm2022/ng-nest-ui-layout.mjs +151 -140
  629. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  630. package/fesm2022/ng-nest-ui-link.mjs +119 -86
  631. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  632. package/fesm2022/ng-nest-ui-list.mjs +376 -400
  633. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  634. package/fesm2022/ng-nest-ui-loading.mjs +94 -97
  635. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  636. package/fesm2022/ng-nest-ui-menu.mjs +131 -167
  637. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  638. package/fesm2022/ng-nest-ui-message-box.mjs +13 -13
  639. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  640. package/fesm2022/ng-nest-ui-message.mjs +17 -17
  641. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  642. package/fesm2022/ng-nest-ui-notification.mjs +18 -18
  643. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  644. package/fesm2022/ng-nest-ui-outlet.mjs +16 -18
  645. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  646. package/fesm2022/ng-nest-ui-page-header.mjs +44 -55
  647. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  648. package/fesm2022/ng-nest-ui-pagination.mjs +173 -236
  649. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  650. package/fesm2022/ng-nest-ui-pattern.mjs +16 -17
  651. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  652. package/fesm2022/ng-nest-ui-popconfirm.mjs +110 -107
  653. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  654. package/fesm2022/ng-nest-ui-popover.mjs +163 -215
  655. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  656. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  657. package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
  658. package/fesm2022/ng-nest-ui-progress.mjs +240 -238
  659. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  660. package/fesm2022/ng-nest-ui-radio.mjs +184 -127
  661. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  662. package/fesm2022/ng-nest-ui-rate.mjs +182 -108
  663. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  664. package/fesm2022/ng-nest-ui-resizable.mjs +46 -91
  665. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  666. package/fesm2022/ng-nest-ui-result.mjs +38 -34
  667. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  668. package/fesm2022/ng-nest-ui-ripple.mjs +66 -48
  669. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  670. package/fesm2022/ng-nest-ui-select.mjs +547 -459
  671. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  672. package/fesm2022/ng-nest-ui-skeleton.mjs +44 -52
  673. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  674. package/fesm2022/ng-nest-ui-slider-select.mjs +344 -290
  675. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  676. package/fesm2022/ng-nest-ui-slider.mjs +163 -228
  677. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  678. package/fesm2022/ng-nest-ui-statistic.mjs +102 -68
  679. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  680. package/fesm2022/ng-nest-ui-steps.mjs +61 -102
  681. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  682. package/fesm2022/ng-nest-ui-switch.mjs +145 -69
  683. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  684. package/fesm2022/ng-nest-ui-table.mjs +784 -800
  685. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  686. package/fesm2022/ng-nest-ui-tabs.mjs +185 -259
  687. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  688. package/fesm2022/ng-nest-ui-tag.mjs +63 -101
  689. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  690. package/fesm2022/ng-nest-ui-text-retract.mjs +52 -64
  691. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  692. package/fesm2022/ng-nest-ui-textarea.mjs +173 -126
  693. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  694. package/fesm2022/ng-nest-ui-theme.mjs +123 -129
  695. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  696. package/fesm2022/ng-nest-ui-time-ago.mjs +16 -15
  697. package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
  698. package/fesm2022/ng-nest-ui-time-picker.mjs +498 -463
  699. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  700. package/fesm2022/ng-nest-ui-time-range.mjs +14 -14
  701. package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
  702. package/fesm2022/ng-nest-ui-timeline.mjs +44 -68
  703. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  704. package/fesm2022/ng-nest-ui-tooltip.mjs +168 -170
  705. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  706. package/fesm2022/ng-nest-ui-transfer.mjs +311 -262
  707. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  708. package/fesm2022/ng-nest-ui-tree-file.mjs +80 -99
  709. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  710. package/fesm2022/ng-nest-ui-tree-select.mjs +527 -495
  711. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  712. package/fesm2022/ng-nest-ui-tree.mjs +601 -587
  713. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  714. package/fesm2022/ng-nest-ui-typography.mjs +26 -22
  715. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  716. package/fesm2022/ng-nest-ui-upload.mjs +204 -220
  717. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  718. package/fesm2022/ng-nest-ui.mjs +0 -2
  719. package/fesm2022/ng-nest-ui.mjs.map +1 -1
  720. package/find/find.component.d.ts +30 -34
  721. package/find/find.property.d.ts +321 -108
  722. package/form/control.component.d.ts +37 -18
  723. package/form/form.component.d.ts +8 -10
  724. package/form/form.property.d.ts +111 -27
  725. package/highlight/highlight.component.d.ts +10 -17
  726. package/highlight/highlight.property.d.ts +40 -11
  727. package/highlight/highlight.service.d.ts +8 -0
  728. package/highlight/public-api.d.ts +1 -0
  729. package/i18n/i18n.directive.d.ts +6 -9
  730. package/i18n/i18n.property.d.ts +6 -2
  731. package/i18n/i18n.service.d.ts +2 -2
  732. package/i18n/languages/ar_EG.d.ts +56 -0
  733. package/i18n/languages/bg_BG.d.ts +56 -0
  734. package/i18n/languages/ca_ES.d.ts +56 -0
  735. package/i18n/languages/cs_CZ.d.ts +56 -0
  736. package/i18n/languages/da_DK.d.ts +56 -0
  737. package/i18n/languages/de_DE.d.ts +56 -0
  738. package/i18n/languages/el_GR.d.ts +56 -0
  739. package/i18n/languages/en_GB.d.ts +3 -0
  740. package/i18n/languages/en_US.d.ts +3 -0
  741. package/i18n/languages/es_ES.d.ts +56 -0
  742. package/i18n/languages/et_EE.d.ts +56 -0
  743. package/i18n/languages/fa_IR.d.ts +56 -0
  744. package/i18n/languages/fi_FI.d.ts +56 -0
  745. package/i18n/languages/fr_BE.d.ts +60 -4
  746. package/i18n/languages/fr_FR.d.ts +56 -0
  747. package/i18n/languages/he_IL.d.ts +56 -0
  748. package/i18n/languages/hi_IN.d.ts +56 -0
  749. package/i18n/languages/hr_HR.d.ts +56 -0
  750. package/i18n/languages/hu_HU.d.ts +56 -0
  751. package/i18n/languages/hy_AM.d.ts +56 -0
  752. package/i18n/languages/id_ID.d.ts +56 -0
  753. package/i18n/languages/is_IS.d.ts +56 -0
  754. package/i18n/languages/it_IT.d.ts +56 -0
  755. package/i18n/languages/ja_JP.d.ts +56 -0
  756. package/i18n/languages/ka_GE.d.ts +56 -0
  757. package/i18n/languages/kn_IN.d.ts +56 -0
  758. package/i18n/languages/ko_KR.d.ts +56 -0
  759. package/i18n/languages/ku_IQ.d.ts +32 -0
  760. package/i18n/languages/lv_LV.d.ts +56 -0
  761. package/i18n/languages/mn_MN.d.ts +56 -0
  762. package/i18n/languages/ms_MY.d.ts +56 -0
  763. package/i18n/languages/nb_NO.d.ts +56 -0
  764. package/i18n/languages/ne_NP.d.ts +56 -0
  765. package/i18n/languages/nl_BE.d.ts +56 -0
  766. package/i18n/languages/nl_NL.d.ts +56 -0
  767. package/i18n/languages/pl_PL.d.ts +56 -0
  768. package/i18n/languages/pt_BR.d.ts +56 -0
  769. package/i18n/languages/pt_PT.d.ts +56 -0
  770. package/i18n/languages/ro_RO.d.ts +56 -0
  771. package/i18n/languages/ru_RU.d.ts +56 -0
  772. package/i18n/languages/sk_SK.d.ts +56 -1
  773. package/i18n/languages/sl_SI.d.ts +56 -0
  774. package/i18n/languages/sr_RS.d.ts +56 -0
  775. package/i18n/languages/sv_SE.d.ts +56 -0
  776. package/i18n/languages/ta_IN.d.ts +56 -0
  777. package/i18n/languages/th_TH.d.ts +56 -0
  778. package/i18n/languages/tr_TR.d.ts +56 -0
  779. package/i18n/languages/uk_UA.d.ts +56 -0
  780. package/i18n/languages/vi_VN.d.ts +56 -0
  781. package/i18n/languages/zh_CN.d.ts +3 -0
  782. package/i18n/languages/zh_TW.d.ts +3 -0
  783. package/icon/icon.component.d.ts +8 -14
  784. package/icon/icon.property.d.ts +31 -13
  785. package/icon/icon.service.d.ts +1 -1
  786. package/image/image-group.component.d.ts +1 -3
  787. package/image/image-preview.component.d.ts +11 -13
  788. package/image/image.component.d.ts +10 -11
  789. package/image/image.property.d.ts +117 -16
  790. package/index.d.ts +0 -2
  791. package/inner/inner.component.d.ts +3 -10
  792. package/inner/inner.property.d.ts +8 -4
  793. package/input/input-group.component.d.ts +0 -2
  794. package/input/input.component.d.ts +32 -30
  795. package/input/input.property.d.ts +347 -65
  796. package/input-number/input-number.component.d.ts +14 -19
  797. package/input-number/input-number.property.d.ts +292 -26
  798. package/keyword/keyword.directive.d.ts +4 -12
  799. package/keyword/keyword.property.d.ts +11 -7
  800. package/layout/col.component.d.ts +8 -11
  801. package/layout/layout.property.d.ts +25 -18
  802. package/layout/row.component.d.ts +7 -8
  803. package/link/link.component.d.ts +7 -13
  804. package/link/link.property.d.ts +64 -11
  805. package/list/list-drop-group.directive.d.ts +3 -5
  806. package/list/list-option.component.d.ts +7 -9
  807. package/list/list.component.d.ts +35 -30
  808. package/list/list.property.d.ts +126 -61
  809. package/loading/loading.component.d.ts +12 -12
  810. package/loading/loading.property.d.ts +20 -11
  811. package/menu/menu-node.component.d.ts +11 -8
  812. package/menu/menu.component.d.ts +18 -19
  813. package/menu/menu.property.d.ts +23 -28
  814. package/message/message.property.d.ts +1 -1
  815. package/notification/notification.property.d.ts +1 -1
  816. package/outlet/outlet.directive.d.ts +4 -4
  817. package/outlet/outlet.property.d.ts +1 -1
  818. package/package.json +97 -103
  819. package/page-header/page-header.component.d.ts +4 -8
  820. package/page-header/page-header.property.d.ts +11 -8
  821. package/pagination/pagination.component.d.ts +15 -22
  822. package/pagination/pagination.property.d.ts +34 -66
  823. package/pattern/pattern.component.d.ts +2 -5
  824. package/pattern/pattern.property.d.ts +1 -1
  825. package/popconfirm/popconfirm.component.d.ts +12 -14
  826. package/popconfirm/popconfirm.property.d.ts +32 -19
  827. package/popover/popover-portal.component.d.ts +16 -33
  828. package/popover/popover.directive.d.ts +6 -12
  829. package/popover/popover.property.d.ts +31 -22
  830. package/portal/portal.property.d.ts +2 -2
  831. package/portal/portal.service.d.ts +2 -2
  832. package/progress/progress.component.d.ts +25 -30
  833. package/progress/progress.property.d.ts +29 -20
  834. package/radio/radio.component.d.ts +14 -15
  835. package/radio/radio.property.d.ts +271 -31
  836. package/rate/rate.component.d.ts +14 -17
  837. package/rate/rate.property.d.ts +259 -12
  838. package/resizable/resizable.directive.d.ts +5 -5
  839. package/resizable/resizable.property.d.ts +14 -14
  840. package/result/result.component.d.ts +5 -7
  841. package/result/result.property.d.ts +11 -7
  842. package/ripple/ripple.directive.d.ts +5 -4
  843. package/ripple/ripple.property.d.ts +14 -5
  844. package/select/select-portal.component.d.ts +39 -43
  845. package/select/select.component.d.ts +53 -56
  846. package/select/select.property.d.ts +317 -37
  847. package/skeleton/skeleton.component.d.ts +4 -8
  848. package/skeleton/skeleton.property.d.ts +17 -8
  849. package/slider/slider.component.d.ts +34 -31
  850. package/slider/slider.property.d.ts +26 -22
  851. package/slider-select/slider-select.component.d.ts +38 -38
  852. package/slider-select/slider-select.property.d.ts +302 -28
  853. package/statistic/countdown.component.d.ts +2 -5
  854. package/statistic/statistic.component.d.ts +3 -8
  855. package/statistic/statistic.property.d.ts +44 -13
  856. package/steps/steps.component.d.ts +6 -16
  857. package/steps/steps.property.d.ts +15 -10
  858. package/style/core/index.css +0 -38
  859. package/style/core/index.css.map +1 -1
  860. package/style/core/var.scss +0 -4
  861. package/style/mixins/compatibility.scss +0 -1
  862. package/style/mixins/form.scss +8 -2
  863. package/style/params/index.scss +0 -1
  864. package/style/params/primary.scss +7 -28
  865. package/switch/switch.component.d.ts +9 -10
  866. package/switch/switch.property.d.ts +265 -16
  867. package/table/table-body.component.d.ts +21 -20
  868. package/table/table-foot.component.d.ts +7 -5
  869. package/table/table-head.component.d.ts +17 -19
  870. package/table/table.component.d.ts +62 -50
  871. package/table/table.property.d.ts +180 -178
  872. package/tabs/tab-content.component.d.ts +6 -8
  873. package/tabs/tab.component.d.ts +3 -5
  874. package/tabs/tabs.component.d.ts +17 -24
  875. package/tabs/tabs.property.d.ts +28 -24
  876. package/tag/tag.component.d.ts +7 -8
  877. package/tag/tag.property.d.ts +19 -21
  878. package/text-retract/text-retract.component.d.ts +4 -14
  879. package/text-retract/text-retract.property.d.ts +9 -5
  880. package/textarea/textarea.component.d.ts +17 -20
  881. package/textarea/textarea.property.d.ts +266 -30
  882. package/theme/theme.component.d.ts +24 -13
  883. package/theme/theme.property.d.ts +67 -16
  884. package/time-ago/time-ago.pipe.d.ts +7 -3
  885. package/time-ago/time-ago.property.d.ts +1 -1
  886. package/time-picker/time-picker-frame.component.d.ts +52 -39
  887. package/time-picker/time-picker-portal.component.d.ts +29 -29
  888. package/time-picker/time-picker.component.d.ts +29 -30
  889. package/time-picker/time-picker.property.d.ts +314 -23
  890. package/time-range/time-range.property.d.ts +1 -1
  891. package/timeline/timeline.component.d.ts +5 -13
  892. package/timeline/timeline.property.d.ts +12 -8
  893. package/tooltip/tooltip-portal.component.d.ts +23 -29
  894. package/tooltip/tooltip.directive.d.ts +10 -9
  895. package/tooltip/tooltip.property.d.ts +18 -14
  896. package/transfer/transfer.component.d.ts +23 -20
  897. package/transfer/transfer.property.d.ts +81 -25
  898. package/tree/tree-node.component.d.ts +21 -21
  899. package/tree/tree.component.d.ts +29 -28
  900. package/tree/tree.property.d.ts +129 -79
  901. package/tree-file/tree-file.component.d.ts +7 -9
  902. package/tree-file/tree-file.property.d.ts +40 -16
  903. package/tree-select/tree-select-portal.component.d.ts +38 -49
  904. package/tree-select/tree-select.component.d.ts +50 -53
  905. package/tree-select/tree-select.property.d.ts +328 -39
  906. package/typography/typography.component.d.ts +1 -1
  907. package/typography/typography.property.d.ts +3 -3
  908. package/upload/upload-portal.component.d.ts +14 -14
  909. package/upload/upload.component.d.ts +18 -17
  910. package/upload/upload.property.d.ts +73 -24
  911. package/border/border.component.d.ts +0 -11
  912. package/border/border.module.d.ts +0 -7
  913. package/border/border.property.d.ts +0 -6
  914. package/border/index.d.ts +0 -5
  915. package/border/public-api.d.ts +0 -3
  916. package/esm2022/border/border.component.mjs +0 -21
  917. package/esm2022/border/border.module.mjs +0 -16
  918. package/esm2022/border/border.property.mjs +0 -7
  919. package/esm2022/border/ng-nest-ui-border.mjs +0 -5
  920. package/esm2022/border/public-api.mjs +0 -4
  921. package/fesm2022/ng-nest-ui-border.mjs +0 -47
  922. package/fesm2022/ng-nest-ui-border.mjs.map +0 -1
  923. package/style/params/colors.scss +0 -38
@@ -1,6 +1,6 @@
1
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject } from '@angular/core';
1
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, computed } from '@angular/core';
2
2
  import { XFormProperty, XFormPrefix } from './form.property';
3
- import { XIsChange, XConfigService } from '@ng-nest/ui/core';
3
+ import { XIsChange } from '@ng-nest/ui/core';
4
4
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
5
  import { XColComponent, XRowComponent } from '@ng-nest/ui/layout';
6
6
  import { NgClass, NgTemplateOutlet } from '@angular/common';
@@ -12,54 +12,46 @@ import * as i1 from "@angular/forms";
12
12
  export class XFormComponent extends XFormProperty {
13
13
  constructor() {
14
14
  super(...arguments);
15
+ this.controlsType = computed(() => {
16
+ const controls = this.controls();
17
+ return controls && controls.length > 0 && controls[0].controls ? 'rows' : 'controls';
18
+ });
15
19
  this.controlComponents = {};
16
20
  this.controlTypes = {};
17
21
  this.formId = Number(Math.random().toString().substring(2, 6) + Date.now()).toString(36);
18
- this.configService = inject(XConfigService);
22
+ this.classMap = computed(() => ({
23
+ [`${XFormPrefix}-${this.controlsType()}`]: true
24
+ }));
19
25
  }
20
26
  ngOnChanges(changes) {
21
27
  const { disabled } = changes;
22
28
  XIsChange(disabled) && this.setDisabled();
23
29
  }
24
- ngOnInit() {
25
- this.setControls();
26
- this.setClassMap();
27
- }
28
30
  ngAfterViewInit() {
29
31
  this.setDisabled();
30
32
  }
31
- setControls() {
32
- if (this.controls && this.controls.length > 0) {
33
- this.controlsType = this.controls[0].controls ? 'rows' : 'controls';
34
- }
35
- }
36
- setClassMap() {
37
- this.classMap[`${XFormPrefix}-${this.controlsType}`] = true;
38
- }
39
33
  setDisabled() {
40
34
  if (Object.keys(this.controlComponents).length === 0)
41
35
  return;
42
- if (this.disabled) {
36
+ if (this.disabled()) {
43
37
  for (let key in this.controlComponents) {
44
38
  let [control, type] = [this.controlComponents[key], this.controlTypes[key]];
45
- control.disabled = true;
46
- control.required = false;
47
- delete control.pattern;
39
+ control.disabledSignal.set(true);
40
+ control.requiredSignal.set(false);
41
+ control.patternSignal.set([]);
48
42
  type.setValidators && type.setValidators();
49
- control.formControlChanges();
50
43
  }
51
44
  }
52
45
  else {
53
46
  for (let key in this.controlComponents) {
54
47
  let [control, type] = [this.controlComponents[key], this.controlTypes[key]];
55
- control.disabled = type.disabled;
56
- control.required = type.required;
57
- control.pattern = type.pattern;
48
+ control.disabledSignal.set(type.disabled);
49
+ control.requiredSignal.set(type.required);
50
+ control.patternSignal.set(type.pattern);
58
51
  type.setValidators && type.setValidators();
59
- control.formControlChanges();
60
52
  }
61
53
  }
62
- this.formGroup.updateValueAndValidity();
54
+ this.formGroup().updateValueAndValidity();
63
55
  }
64
56
  setValidator() {
65
57
  for (let key in this.controlComponents) {
@@ -72,30 +64,30 @@ export class XFormComponent extends XFormProperty {
72
64
  resetValidator() {
73
65
  for (let key in this.controlComponents) {
74
66
  let [control] = [this.controlComponents[key]];
75
- control.validator = false;
67
+ control.validatorSignal.set(false);
76
68
  control.cdr.detectChanges();
77
69
  }
78
70
  }
79
71
  getValidatorMessages() {
80
72
  let result = [];
81
- if (this.formGroup.valid)
73
+ if (this.formGroup().valid)
82
74
  return result;
83
75
  else {
84
76
  const eachControls = (array) => {
85
77
  for (const ctr of array) {
86
- const formCtr = this.formGroup.controls[ctr.id];
78
+ const formCtr = this.formGroup().controls[ctr.id];
87
79
  if (formCtr && formCtr.invalid) {
88
80
  result = [...result, ...formCtr.messages];
89
81
  }
90
82
  }
91
83
  };
92
- if (this.controlsType === 'rows') {
93
- for (const row of this.controls) {
84
+ if (this.controlsType() === 'rows') {
85
+ for (const row of this.controls()) {
94
86
  eachControls(row.controls);
95
87
  }
96
88
  }
97
89
  else {
98
- eachControls(this.controls);
90
+ eachControls(this.controls());
99
91
  }
100
92
  }
101
93
  return result;
@@ -104,10 +96,10 @@ export class XFormComponent extends XFormProperty {
104
96
  this.setValidator();
105
97
  this.xSubmit.emit(event);
106
98
  }
107
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
108
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.10", type: XFormComponent, isStandalone: true, selector: "x-form", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup\"\r\n [style.width]=\"width\"\r\n [style.padding-bottom.rem]=\"controlsType === 'controls' ? this.space : 0\"\r\n [ngClass]=\"classMap\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @switch (controlsType) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row.id) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space\">\r\n @for (control of controls; track control.id) {\r\n <x-col [style.padding-top.rem]=\"space\" [span]=\"!control.span ? span : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\" [form]=\"this\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n", styles: [".x-form{margin:0;padding:0;display:inline-block;overflow:hidden}.x-form-title{display:inline-flex;align-items:center;font-size:var(--x-font-size-medium)}.x-form-title>x-icon{margin-right:.25rem}.x-form-category{width:100%;overflow:hidden}.x-form-rows>x-row[hidden]{display:none}.x-form-rows>x-row:not(:first-child){margin-top:1.5rem}.x-form x-col[hidden]{display:none}.x-form-has-content .x-form-content{margin-top:1.5rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: XRowComponent, selector: "x-row" }, { kind: "component", type: XColComponent, selector: "x-col" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XControlComponent, selector: "x-control", inputs: ["option", "form"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
99
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
100
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: XFormComponent, isStandalone: true, selector: "x-form", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup()\"\r\n [style.width]=\"width()\"\r\n [style.padding-bottom]=\"controlsType() === 'controls' ? this.space() : '0px'\"\r\n [ngClass]=\"classMap()\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @switch (controlsType()) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls() }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls() }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space()\">\r\n @for (control of controls; track control) {\r\n <x-col [style.padding-top]=\"space()\" [span]=\"!control.span ? span() : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl()[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n", styles: [".x-form{margin:0;padding:0;display:inline-block;overflow:hidden}.x-form-title{display:inline-flex;align-items:center;font-size:var(--x-font-size-medium)}.x-form-title>x-icon{margin-right:.25rem}.x-form-category{width:100%;overflow:hidden}.x-form-rows>x-row[hidden]{display:none}.x-form-rows>x-row:not(:first-child){margin-top:1.5rem}.x-form x-col[hidden]{display:none}.x-form-has-content .x-form-content{margin-top:1.5rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: XRowComponent, selector: "x-row" }, { kind: "component", type: XColComponent, selector: "x-col" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XControlComponent, selector: "x-control" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
109
101
  }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XFormComponent, decorators: [{
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XFormComponent, decorators: [{
111
103
  type: Component,
112
104
  args: [{ selector: `${XFormPrefix}`, standalone: true, imports: [
113
105
  NgClass,
@@ -119,6 +111,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
119
111
  XOutletDirective,
120
112
  XIconComponent,
121
113
  XControlComponent
122
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup\"\r\n [style.width]=\"width\"\r\n [style.padding-bottom.rem]=\"controlsType === 'controls' ? this.space : 0\"\r\n [ngClass]=\"classMap\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @switch (controlsType) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row.id) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space\">\r\n @for (control of controls; track control.id) {\r\n <x-col [style.padding-top.rem]=\"space\" [span]=\"!control.span ? span : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\" [form]=\"this\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n", styles: [".x-form{margin:0;padding:0;display:inline-block;overflow:hidden}.x-form-title{display:inline-flex;align-items:center;font-size:var(--x-font-size-medium)}.x-form-title>x-icon{margin-right:.25rem}.x-form-category{width:100%;overflow:hidden}.x-form-rows>x-row[hidden]{display:none}.x-form-rows>x-row:not(:first-child){margin-top:1.5rem}.x-form x-col[hidden]{display:none}.x-form-has-content .x-form-content{margin-top:1.5rem}\n"] }]
114
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup()\"\r\n [style.width]=\"width()\"\r\n [style.padding-bottom]=\"controlsType() === 'controls' ? this.space() : '0px'\"\r\n [ngClass]=\"classMap()\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @switch (controlsType()) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls() }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls() }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space()\">\r\n @for (control of controls; track control) {\r\n <x-col [style.padding-top]=\"space()\" [span]=\"!control.span ? span() : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl()[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n", styles: [".x-form{margin:0;padding:0;display:inline-block;overflow:hidden}.x-form-title{display:inline-flex;align-items:center;font-size:var(--x-font-size-medium)}.x-form-title>x-icon{margin-right:.25rem}.x-form-category{width:100%;overflow:hidden}.x-form-rows>x-row[hidden]{display:none}.x-form-rows>x-row:not(:first-child){margin-top:1.5rem}.x-form x-col[hidden]{display:none}.x-form-has-content .x-form-content{margin-top:1.5rem}\n"] }]
123
115
  }] });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUV2QixNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGFBQWEsRUFFYixXQUFXLEVBS1osTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsU0FBUyxFQUFZLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQXFCbEQsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBbkJqRDs7UUFxQkUsc0JBQWlCLEdBQWtELEVBQUUsQ0FBQztRQUN0RSxpQkFBWSxHQUE2QyxFQUFFLENBQUM7UUFDNUQsV0FBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFF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QztpQkFDNUI7YUFDRjtpQkFBTTtnQkFDTCxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQWdDLENBQUMsQ0FBQzthQUNyRDtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFrQjtRQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztrSUFsR1UsY0FBYztzSEFBZCxjQUFjLDhHQzlDM0IsODBEQWtEQSxrZURuQkksT0FBTyxvRkFDUCxnQkFBZ0IsbUpBQ2hCLFdBQVcsbVNBQ1gsbUJBQW1CLGdMQUNuQixhQUFhLGtEQUNiLGFBQWEsa0RBQ2IsZ0JBQWdCLDZGQUNoQixjQUFjLG1EQUNkLGlCQUFpQjs7NEZBT1IsY0FBYztrQkFuQjFCLFNBQVM7K0JBQ0UsR0FBRyxXQUFXLEVBQUUsY0FDZCxJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGlCQUFpQjtxQkFDbEIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIGluamVjdCxcclxuICBPbkNoYW5nZXMsXHJcbiAgQWZ0ZXJWaWV3SW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIFhGb3JtUHJvcGVydHksXHJcbiAgWEZvcm1Sb3csXHJcbiAgWEZvcm1QcmVmaXgsXHJcbiAgWEZvcm1Db250cm9sT3B0aW9uLFxyXG4gIFhGb3JtQ29udHJvbCxcclxuICBYRm9ybUNvbnRyb2xDb21wb25lbnQsXHJcbiAgWEZvcm1Db250cm9sVHlwZVxyXG59IGZyb20gJy4vZm9ybS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJc0NoYW5nZSwgWEJvb2xlYW4sIFhDb25maWdTZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBYQ29sQ29tcG9uZW50LCBYUm93Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvbGF5b3V0JztcclxuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFhPdXRsZXREaXJlY3RpdmUgfSBmcm9tICdAbmctbmVzdC91aS9vdXRsZXQnO1xyXG5pbXBvcnQgeyBYQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2ljb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hGb3JtUHJlZml4fWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFhSb3dDb21wb25lbnQsXHJcbiAgICBYQ29sQ29tcG9uZW50LFxyXG4gICAgWE91dGxldERpcmVjdGl2ZSxcclxuICAgIFhJY29uQ29tcG9uZW50LFxyXG4gICAgWENvbnRyb2xDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWEZvcm1Db21wb25lbnQgZXh0ZW5kcyBYRm9ybVByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIGNvbnRyb2xzVHlwZSE6ICdjb250cm9scycgfCAncm93cyc7XHJcbiAgY29udHJvbENvbXBvbmVudHM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBYRm9ybUNvbnRyb2xDb21wb25lbnQgfSA9IHt9O1xyXG4gIGNvbnRyb2xUeXBlczogeyBbcHJvcGVydHk6IHN0cmluZ106IFhGb3JtQ29udHJvbFR5cGUgfSA9IHt9O1xyXG4gIGZvcm1JZCA9IE51bWJlcihNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIsIDYpICsgRGF0ZS5ub3coKSkudG9TdHJpbmcoMzYpO1xyXG4gIGNvbmZpZ1NlcnZpY2UgPSBpbmplY3QoWENvbmZpZ1NlcnZpY2UpO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBjb25zdCB7IGRpc2FibGVkIH0gPSBjaGFuZ2VzO1xyXG4gICAgWElzQ2hhbmdlKGRpc2FibGVkKSAmJiB0aGlzLnNldERpc2FibGVkKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0Q29udHJvbHMoKTtcclxuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2V0RGlzYWJsZWQoKTtcclxuICB9XHJcblxyXG4gIHNldENvbnRyb2xzKCkge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbHMgJiYgdGhpcy5jb250cm9scy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbHNUeXBlID0gdGhpcy5jb250cm9sc1swXS5jb250cm9scyA/ICdyb3dzJyA6ICdjb250cm9scyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDbGFzc01hcCgpIHtcclxuICAgIHRoaXMuY2xhc3NNYXBbYCR7WEZvcm1QcmVmaXh9LSR7dGhpcy5jb250cm9sc1R5cGV9YF0gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWQoKSB7XHJcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5jb250cm9sQ29tcG9uZW50cykubGVuZ3RoID09PSAwKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5jb250cm9sQ29tcG9uZW50cykge1xyXG4gICAgICAgIGxldCBbY29udHJvbCwgdHlwZV0gPSBbdGhpcy5jb250cm9sQ29tcG9uZW50c1trZXldLCB0aGlzLmNvbnRyb2xUeXBlc1trZXldXTtcclxuICAgICAgICBjb250cm9sLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICBjb250cm9sLnJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgZGVsZXRlIChjb250cm9sIGFzIGFueSkucGF0dGVybjtcclxuICAgICAgICB0eXBlLnNldFZhbGlkYXRvcnMgJiYgdHlwZS5zZXRWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgY29udHJvbC5mb3JtQ29udHJvbENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuY29udHJvbENvbXBvbmVudHMpIHtcclxuICAgICAgICBsZXQgW2NvbnRyb2wsIHR5cGVdID0gW3RoaXMuY29udHJvbENvbXBvbmVudHNba2V5XSwgdGhpcy5jb250cm9sVHlwZXNba2V5XV07XHJcbiAgICAgICAgY29udHJvbC5kaXNhYmxlZCA9IHR5cGUuZGlzYWJsZWQgYXMgWEJvb2xlYW47XHJcbiAgICAgICAgY29udHJvbC5yZXF1aXJlZCA9IHR5cGUucmVxdWlyZWQgYXMgWEJvb2xlYW47XHJcbiAgICAgICAgY29udHJvbC5wYXR0ZXJuID0gdHlwZS5wYXR0ZXJuIGFzIFJlZ0V4cCB8IFJlZ0V4cFtdO1xyXG4gICAgICAgIHR5cGUuc2V0VmFsaWRhdG9ycyAmJiB0eXBlLnNldFZhbGlkYXRvcnMoKTtcclxuICAgICAgICBjb250cm9sLmZvcm1Db250cm9sQ2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBzZXRWYWxpZGF0b3IoKSB7XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5jb250cm9sQ29tcG9uZW50cykge1xyXG4gICAgICBsZXQgW2NvbnRyb2wsIHR5cGVdID0gW3RoaXMuY29udHJvbENvbXBvbmVudHNba2V5XSwgdGhpcy5jb250cm9sVHlwZXNba2V5XV07XHJcbiAgICAgIGNvbnRyb2wuZm9ybUNvbnRyb2xWYWxpZGF0b3IoKTtcclxuICAgICAgdHlwZS5zZXRWYWxpZGF0b3JzICYmIHR5cGUuc2V0VmFsaWRhdG9ycygpO1xyXG4gICAgICBjb250cm9sLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldFZhbGlkYXRvcigpIHtcclxuICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmNvbnRyb2xDb21wb25lbnRzKSB7XHJcbiAgICAgIGxldCBbY29udHJvbF0gPSBbdGhpcy5jb250cm9sQ29tcG9uZW50c1trZXldXTtcclxuICAgICAgY29udHJvbC52YWxpZGF0b3IgPSBmYWxzZTtcclxuICAgICAgY29udHJvbC5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VmFsaWRhdG9yTWVzc2FnZXMoKTogc3RyaW5nW10ge1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcclxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkgcmV0dXJuIHJlc3VsdDtcclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBlYWNoQ29udHJvbHMgPSAoYXJyYXk6IFhGb3JtQ29udHJvbE9wdGlvbltdKSA9PiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjdHIgb2YgYXJyYXkpIHtcclxuICAgICAgICAgIGNvbnN0IGZvcm1DdHIgPSB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1tjdHIuaWRdIGFzIFhGb3JtQ29udHJvbDtcclxuICAgICAgICAgIGlmIChmb3JtQ3RyICYmIGZvcm1DdHIuaW52YWxpZCkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBbLi4ucmVzdWx0LCAuLi4oZm9ybUN0ci5tZXNzYWdlcyBhcyBzdHJpbmdbXSldO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgaWYgKHRoaXMuY29udHJvbHNUeXBlID09PSAncm93cycpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiB0aGlzLmNvbnRyb2xzIGFzIFhGb3JtUm93W10pIHtcclxuICAgICAgICAgIGVhY2hDb250cm9scyhyb3cuY29udHJvbHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlYWNoQ29udHJvbHModGhpcy5jb250cm9scyBhcyBYRm9ybUNvbnRyb2xPcHRpb25bXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdChldmVudDogU3VibWl0RXZlbnQpIHtcclxuICAgIHRoaXMuc2V0VmFsaWRhdG9yKCk7XHJcbiAgICB0aGlzLnhTdWJtaXQuZW1pdChldmVudCk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtXHJcbiAgI2Zvcm1cclxuICBjbGFzcz1cIngtZm9ybVwiXHJcbiAgW2NsYXNzLngtZm9ybS1oYXMtY29udGVudF09XCJjb250ZW50LmlubmVySFRNTC50cmltKClcIlxyXG4gIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcclxuICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxyXG4gIFtzdHlsZS5wYWRkaW5nLWJvdHRvbS5yZW1dPVwiY29udHJvbHNUeXBlID09PSAnY29udHJvbHMnID8gdGhpcy5zcGFjZSA6IDBcIlxyXG4gIFtuZ0NsYXNzXT1cImNsYXNzTWFwXCJcclxuICAobmdTdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiXHJcbj5cclxuICBAc3dpdGNoIChjb250cm9sc1R5cGUpIHtcclxuICAgIEBjYXNlICgnY29udHJvbHMnKSB7XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sc1RlbXA7IGNvbnRleHQ6IHsgY29udHJvbHM6IGNvbnRyb2xzIH1cIj4gPC9uZy1jb250YWluZXI+XHJcbiAgICB9XHJcbiAgICBAY2FzZSAoJ3Jvd3MnKSB7XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3dzVGVtcDsgY29udGV4dDogeyByb3dzOiBjb250cm9scyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICB9XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJ4LWZvcm0tY29udGVudFwiICNjb250ZW50PjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cclxuPC9mb3JtPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyb3dzVGVtcCBsZXQtcm93cz1cInJvd3NcIj5cclxuICBAZm9yIChyb3cgb2Ygcm93czsgdHJhY2sgcm93LmlkKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1mb3JtLWNhdGVnb3J5XCIgW2hpZGRlbl09XCJyb3cuaGlkZGVuXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRlbXA7IGNvbnRleHQ6IHsgcm93OiByb3cgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udHJvbHNUZW1wOyBjb250ZXh0OiB7IGNvbnRyb2xzOiByb3cuY29udHJvbHMgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sc1RlbXAgbGV0LWNvbnRyb2xzPVwiY29udHJvbHNcIj5cclxuICA8eC1yb3cgW3NwYWNlXT1cInNwYWNlXCI+XHJcbiAgICBAZm9yIChjb250cm9sIG9mIGNvbnRyb2xzOyB0cmFjayBjb250cm9sLmlkKSB7XHJcbiAgICAgIDx4LWNvbCBbc3R5bGUucGFkZGluZy10b3AucmVtXT1cInNwYWNlXCIgW3NwYW5dPVwiIWNvbnRyb2wuc3BhbiA/IHNwYW4gOiBjb250cm9sLnNwYW5cIiBbaGlkZGVuXT1cImNvbnRyb2wuaGlkZGVuXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cImNvbnRyb2xUcGxbY29udHJvbC5pZF07IGNvbnRleHQ6IHsgJG9wdGlvbjogY29udHJvbCB9XCI+XHJcbiAgICAgICAgICA8eC1jb250cm9sIFtvcHRpb25dPVwiY29udHJvbFwiIFtmb3JtXT1cInRoaXNcIj48L3gtY29udHJvbD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC94LWNvbD5cclxuICAgIH1cclxuICA8L3gtcm93PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0aXRsZVRlbXAgbGV0LXJvdz1cInJvd1wiPlxyXG4gIDxsYWJlbCBjbGFzcz1cIngtZm9ybS10aXRsZVwiPlxyXG4gICAgQGlmIChyb3cuaWNvbikge1xyXG4gICAgICA8eC1pY29uIFt0eXBlXT1cInJvdy5pY29uXCI+PC94LWljb24+XHJcbiAgICB9XHJcbiAgICA8c3Bhbj57eyByb3cudGl0bGUgfX08L3NwYW4+XHJcbiAgPC9sYWJlbD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUl2QixRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGFBQWEsRUFFYixXQUFXLEVBS1osTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBcUJsRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQWE7SUFuQmpEOztRQW9CRSxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFLLFFBQVEsQ0FBQyxDQUFDLENBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FB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QU0sR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQWdCLEVBQUUsQ0FBQztvQkFDaEQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBMEIsQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFrQjtRQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztpSUF0RlUsY0FBYztxSEFBZCxjQUFjLDhHQzdDM0IsNDBEQWtEQSxrZURwQkksT0FBTyxvRkFDUCxnQkFBZ0IsbUpBQ2hCLFdBQVcsbVNBQ1gsbUJBQW1CLGdMQUNuQixhQUFhLGtEQUNiLGFBQWEsa0RBQ2IsZ0JBQWdCLDZGQUNoQixjQUFjLG1EQUNkLGlCQUFpQjs7MkZBT1IsY0FBYztrQkFuQjFCLFNBQVM7K0JBQ0UsR0FBRyxXQUFXLEVBQUUsY0FDZCxJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGlCQUFpQjtxQkFDbEIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgY29tcHV0ZWRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBYRm9ybVByb3BlcnR5LFxyXG4gIFhGb3JtUm93LFxyXG4gIFhGb3JtUHJlZml4LFxyXG4gIFhGb3JtQ29udHJvbE9wdGlvbixcclxuICBYRm9ybUNvbnRyb2wsXHJcbiAgWEZvcm1Db250cm9sQ29tcG9uZW50LFxyXG4gIFhDb250cm9sXHJcbn0gZnJvbSAnLi9mb3JtLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWElzQ2hhbmdlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBYQ29sQ29tcG9uZW50LCBYUm93Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvbGF5b3V0JztcclxuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFhPdXRsZXREaXJlY3RpdmUgfSBmcm9tICdAbmctbmVzdC91aS9vdXRsZXQnO1xyXG5pbXBvcnQgeyBYQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2ljb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hGb3JtUHJlZml4fWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFhSb3dDb21wb25lbnQsXHJcbiAgICBYQ29sQ29tcG9uZW50LFxyXG4gICAgWE91dGxldERpcmVjdGl2ZSxcclxuICAgIFhJY29uQ29tcG9uZW50LFxyXG4gICAgWENvbnRyb2xDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWEZvcm1Db21wb25lbnQgZXh0ZW5kcyBYRm9ybVByb3BlcnR5IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBjb250cm9sc1R5cGUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBjb250cm9scyA9IHRoaXMuY29udHJvbHMoKTtcclxuICAgIHJldHVybiBjb250cm9scyAmJiBjb250cm9scy5sZW5ndGggPiAwICYmIChjb250cm9sc1swXSBhcyBYRm9ybVJvdykuY29udHJvbHMgPyAncm93cycgOiAnY29udHJvbHMnO1xyXG4gIH0pO1xyXG4gIGNvbnRyb2xDb21wb25lbnRzOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogWEZvcm1Db250cm9sQ29tcG9uZW50IH0gPSB7fTtcclxuICBjb250cm9sVHlwZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBYQ29udHJvbCB9ID0ge307XHJcbiAgZm9ybUlkID0gTnVtYmVyKE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiwgNikgKyBEYXRlLm5vdygpKS50b1N0cmluZygzNik7XHJcbiAgY2xhc3NNYXAgPSBjb21wdXRlZCgoKSA9PiAoe1xyXG4gICAgW2Ake1hGb3JtUHJlZml4fS0ke3RoaXMuY29udHJvbHNUeXBlKCl9YF06IHRydWVcclxuICB9KSk7XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHsgZGlzYWJsZWQgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2UoZGlzYWJsZWQpICYmIHRoaXMuc2V0RGlzYWJsZWQoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2V0RGlzYWJsZWQoKTtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkKCkge1xyXG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuY29udHJvbENvbXBvbmVudHMpLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5jb250cm9sQ29tcG9uZW50cykge1xyXG4gICAgICAgIGxldCBbY29udHJvbCwgdHlwZV0gPSBbdGhpcy5jb250cm9sQ29tcG9uZW50c1trZXldLCB0aGlzLmNvbnRyb2xUeXBlc1trZXldXTtcclxuICAgICAgICBjb250cm9sLmRpc2FibGVkU2lnbmFsLnNldCh0cnVlKTtcclxuICAgICAgICBjb250cm9sLnJlcXVpcmVkU2lnbmFsLnNldChmYWxzZSk7XHJcbiAgICAgICAgY29udHJvbC5wYXR0ZXJuU2lnbmFsLnNldChbXSk7XHJcbiAgICAgICAgdHlwZS5zZXRWYWxpZGF0b3JzICYmIHR5cGUuc2V0VmFsaWRhdG9ycygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5jb250cm9sQ29tcG9uZW50cykge1xyXG4gICAgICAgIGxldCBbY29udHJvbCwgdHlwZV0gPSBbdGhpcy5jb250cm9sQ29tcG9uZW50c1trZXldLCB0aGlzLmNvbnRyb2xUeXBlc1trZXldXTtcclxuICAgICAgICBjb250cm9sLmRpc2FibGVkU2lnbmFsLnNldCh0eXBlLmRpc2FibGVkISk7XHJcbiAgICAgICAgY29udHJvbC5yZXF1aXJlZFNpZ25hbC5zZXQodHlwZS5yZXF1aXJlZCEpO1xyXG4gICAgICAgIGNvbnRyb2wucGF0dGVyblNpZ25hbC5zZXQodHlwZS5wYXR0ZXJuIGFzIFJlZ0V4cCB8IFJlZ0V4cFtdKTtcclxuICAgICAgICB0eXBlLnNldFZhbGlkYXRvcnMgJiYgdHlwZS5zZXRWYWxpZGF0b3JzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUdyb3VwKCkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsaWRhdG9yKCkge1xyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMuY29udHJvbENvbXBvbmVudHMpIHtcclxuICAgICAgbGV0IFtjb250cm9sLCB0eXBlXSA9IFt0aGlzLmNvbnRyb2xDb21wb25lbnRzW2tleV0sIHRoaXMuY29udHJvbFR5cGVzW2tleV1dO1xyXG4gICAgICBjb250cm9sLmZvcm1Db250cm9sVmFsaWRhdG9yKCk7XHJcbiAgICAgIHR5cGUuc2V0VmFsaWRhdG9ycyAmJiB0eXBlLnNldFZhbGlkYXRvcnMoKTtcclxuICAgICAgY29udHJvbC5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRWYWxpZGF0b3IoKSB7XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5jb250cm9sQ29tcG9uZW50cykge1xyXG4gICAgICBsZXQgW2NvbnRyb2xdID0gW3RoaXMuY29udHJvbENvbXBvbmVudHNba2V5XV07XHJcbiAgICAgIGNvbnRyb2wudmFsaWRhdG9yU2lnbmFsLnNldChmYWxzZSk7XHJcbiAgICAgIGNvbnRyb2wuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFZhbGlkYXRvck1lc3NhZ2VzKCk6IHN0cmluZ1tdIHtcclxuICAgIGxldCByZXN1bHQ6IHN0cmluZ1tdID0gW107XHJcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAoKS52YWxpZCkgcmV0dXJuIHJlc3VsdDtcclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBlYWNoQ29udHJvbHMgPSAoYXJyYXk6IFhGb3JtQ29udHJvbE9wdGlvbltdKSA9PiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjdHIgb2YgYXJyYXkpIHtcclxuICAgICAgICAgIGNvbnN0IGZvcm1DdHIgPSB0aGlzLmZvcm1Hcm91cCgpLmNvbnRyb2xzW2N0ci5pZF0gYXMgWEZvcm1Db250cm9sO1xyXG4gICAgICAgICAgaWYgKGZvcm1DdHIgJiYgZm9ybUN0ci5pbnZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IFsuLi5yZXN1bHQsIC4uLihmb3JtQ3RyLm1lc3NhZ2VzIGFzIHN0cmluZ1tdKV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAodGhpcy5jb250cm9sc1R5cGUoKSA9PT0gJ3Jvd3MnKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5jb250cm9scygpIGFzIFhGb3JtUm93W10pIHtcclxuICAgICAgICAgIGVhY2hDb250cm9scyhyb3cuY29udHJvbHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlYWNoQ29udHJvbHModGhpcy5jb250cm9scygpIGFzIFhGb3JtQ29udHJvbE9wdGlvbltdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KGV2ZW50OiBTdWJtaXRFdmVudCkge1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3IoKTtcclxuICAgIHRoaXMueFN1Ym1pdC5lbWl0KGV2ZW50KTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm1cclxuICAjZm9ybVxyXG4gIGNsYXNzPVwieC1mb3JtXCJcclxuICBbY2xhc3MueC1mb3JtLWhhcy1jb250ZW50XT1cImNvbnRlbnQuaW5uZXJIVE1MLnRyaW0oKVwiXHJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXAoKVwiXHJcbiAgW3N0eWxlLndpZHRoXT1cIndpZHRoKClcIlxyXG4gIFtzdHlsZS5wYWRkaW5nLWJvdHRvbV09XCJjb250cm9sc1R5cGUoKSA9PT0gJ2NvbnRyb2xzJyA/IHRoaXMuc3BhY2UoKSA6ICcwcHgnXCJcclxuICBbbmdDbGFzc109XCJjbGFzc01hcCgpXCJcclxuICAobmdTdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiXHJcbj5cclxuICBAc3dpdGNoIChjb250cm9sc1R5cGUoKSkge1xyXG4gICAgQGNhc2UgKCdjb250cm9scycpIHtcclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xzVGVtcDsgY29udGV4dDogeyBjb250cm9sczogY29udHJvbHMoKSB9XCI+IDwvbmctY29udGFpbmVyPlxyXG4gICAgfVxyXG4gICAgQGNhc2UgKCdyb3dzJykge1xyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicm93c1RlbXA7IGNvbnRleHQ6IHsgcm93czogY29udHJvbHMoKSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICB9XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJ4LWZvcm0tY29udGVudFwiICNjb250ZW50PjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cclxuPC9mb3JtPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyb3dzVGVtcCBsZXQtcm93cz1cInJvd3NcIj5cclxuICBAZm9yIChyb3cgb2Ygcm93czsgdHJhY2sgcm93KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1mb3JtLWNhdGVnb3J5XCIgW2hpZGRlbl09XCJyb3cuaGlkZGVuXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRlbXA7IGNvbnRleHQ6IHsgcm93OiByb3cgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udHJvbHNUZW1wOyBjb250ZXh0OiB7IGNvbnRyb2xzOiByb3cuY29udHJvbHMgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sc1RlbXAgbGV0LWNvbnRyb2xzPVwiY29udHJvbHNcIj5cclxuICA8eC1yb3cgW3NwYWNlXT1cInNwYWNlKClcIj5cclxuICAgIEBmb3IgKGNvbnRyb2wgb2YgY29udHJvbHM7IHRyYWNrIGNvbnRyb2wpIHtcclxuICAgICAgPHgtY29sIFtzdHlsZS5wYWRkaW5nLXRvcF09XCJzcGFjZSgpXCIgW3NwYW5dPVwiIWNvbnRyb2wuc3BhbiA/IHNwYW4oKSA6IGNvbnRyb2wuc3BhblwiIFtoaWRkZW5dPVwiY29udHJvbC5oaWRkZW5cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiY29udHJvbFRwbCgpW2NvbnRyb2wuaWRdOyBjb250ZXh0OiB7ICRvcHRpb246IGNvbnRyb2wgfVwiPlxyXG4gICAgICAgICAgPHgtY29udHJvbCBbb3B0aW9uXT1cImNvbnRyb2xcIj48L3gtY29udHJvbD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC94LWNvbD5cclxuICAgIH1cclxuICA8L3gtcm93PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0aXRsZVRlbXAgbGV0LXJvdz1cInJvd1wiPlxyXG4gIDxsYWJlbCBjbGFzcz1cIngtZm9ybS10aXRsZVwiPlxyXG4gICAgQGlmIChyb3cuaWNvbikge1xyXG4gICAgICA8eC1pY29uIFt0eXBlXT1cInJvdy5pY29uXCI+PC94LWljb24+XHJcbiAgICB9XHJcbiAgICA8c3Bhbj57eyByb3cudGl0bGUgfX08L3NwYW4+XHJcbiAgPC9sYWJlbD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -3,15 +3,15 @@ import { XFormComponent } from './form.component';
3
3
  import { XControlComponent } from './control.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export class XFormModule {
6
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.10", ngImport: i0, type: XFormModule, imports: [XFormComponent, XControlComponent], exports: [XFormComponent, XControlComponent] }); }
8
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XFormModule, imports: [XFormComponent, XControlComponent] }); }
6
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: XFormModule, imports: [XFormComponent, XControlComponent], exports: [XFormComponent, XControlComponent] }); }
8
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XFormModule, imports: [XFormComponent, XControlComponent] }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XFormModule, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XFormModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  exports: [XFormComponent, XControlComponent],
14
14
  imports: [XFormComponent, XControlComponent]
15
15
  }]
16
16
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9mb3JtL2Zvcm0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU14RCxNQUFNLE9BQU8sV0FBVztrSUFBWCxXQUFXO21JQUFYLFdBQVcsWUFGWixjQUFjLEVBQUUsaUJBQWlCLGFBRGpDLGNBQWMsRUFBRSxpQkFBaUI7bUlBR2hDLFdBQVcsWUFGWixjQUFjLEVBQUUsaUJBQWlCOzs0RkFFaEMsV0FBVztrQkFKdkIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUM7b0JBQzVDLE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQztpQkFDN0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbC5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBleHBvcnRzOiBbWEZvcm1Db21wb25lbnQsIFhDb250cm9sQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbWEZvcm1Db21wb25lbnQsIFhDb250cm9sQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWEZvcm1Nb2R1bGUge31cclxuIl19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9mb3JtL2Zvcm0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU14RCxNQUFNLE9BQU8sV0FBVztpSUFBWCxXQUFXO2tJQUFYLFdBQVcsWUFGWixjQUFjLEVBQUUsaUJBQWlCLGFBRGpDLGNBQWMsRUFBRSxpQkFBaUI7a0lBR2hDLFdBQVcsWUFGWixjQUFjLEVBQUUsaUJBQWlCOzsyRkFFaEMsV0FBVztrQkFKdkIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUM7b0JBQzVDLE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQztpQkFDN0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbC5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBleHBvcnRzOiBbWEZvcm1Db21wb25lbnQsIFhDb250cm9sQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbWEZvcm1Db21wb25lbnQsIFhDb250cm9sQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWEZvcm1Nb2R1bGUge31cclxuIl19
@@ -1,8 +1,7 @@
1
- import { __decorate } from "tslib";
2
- import { XIdentity, XIsEmpty, XInputNumber, XWithConfig } from '@ng-nest/ui/core';
3
- import { Input, Component, Output, EventEmitter } from '@angular/core';
1
+ import { XIdentity, XIsEmpty, XToCssPixelValue, XToNumber, XToBoolean } from '@ng-nest/ui/core';
2
+ import { Component, model, input, output } from '@angular/core';
4
3
  import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
5
- import { XFormProp } from '@ng-nest/ui/base-form';
4
+ import { XFormControlFunction } from '@ng-nest/ui/base-form';
6
5
  import * as i0 from "@angular/core";
7
6
  /**
8
7
  * Form
@@ -10,77 +9,72 @@ import * as i0 from "@angular/core";
10
9
  * @decorator component
11
10
  */
12
11
  export const XFormPrefix = 'x-form';
13
- const X_CONFIG_NAME = 'form';
12
+ const X_FORM_CONFIG_NAME = 'form';
14
13
  /**
15
14
  * Form Property
16
15
  */
17
- export class XFormProperty extends XFormProp {
16
+ export class XFormProperty extends XFormControlFunction(X_FORM_CONFIG_NAME) {
18
17
  constructor() {
19
18
  super(...arguments);
20
19
  /**
21
20
  * @zh_CN 表单 FormGroup
22
21
  * @en_US Form FormGroup
22
+ * @default new UntypedFormGroup({})
23
23
  */
24
- this.formGroup = new UntypedFormGroup({});
24
+ this.formGroup = input(new UntypedFormGroup({}));
25
+ /**
26
+ * @zh_CN 表单名称
27
+ * @en_US Form name
28
+ */
29
+ this.title = input('');
30
+ /**
31
+ * @zh_CN 控件间距
32
+ * @en_US Control spacing
33
+ */
34
+ this.space = input(this.config?.space ?? '1.75rem', { transform: XToCssPixelValue });
35
+ /**
36
+ * @zh_CN 控件宽度,24栅格
37
+ * @en_US Control width, 24 grid
38
+ */
39
+ this.span = input(null, { transform: XToNumber });
40
+ /**
41
+ * @zh_CN 标签后缀
42
+ * @en_US Label suffix
43
+ */
44
+ this.labelSuffix = input(this.config?.labelSuffix ?? '');
25
45
  /**
26
46
  * @zh_CN 表单控件
27
47
  * @en_US Form control
28
48
  */
29
- this.controls = [];
49
+ this.controls = input([]);
30
50
  /**
31
51
  * @zh_CN 表单宽度
32
52
  * @en_US Form width
33
53
  */
34
- this.width = '100%';
54
+ this.width = input(this.config?.width ?? '100%', { transform: XToCssPixelValue });
35
55
  /**
36
56
  * @zh_CN 自定义模板
37
57
  * @en_US Custom template
38
58
  */
39
- this.controlTpl = {};
59
+ this.controlTpl = input({});
60
+ /**
61
+ * @zh_CN 禁用
62
+ * @en_US Disabled
63
+ */
64
+ this.disabled = input(false, { transform: XToBoolean });
40
65
  /**
41
66
  * @zh_CN Submit
42
67
  * @en_US Submit
43
68
  */
44
- this.xSubmit = new EventEmitter();
45
- }
46
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XFormProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
47
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: XFormProperty, selector: "x-form-property", inputs: { formGroup: "formGroup", title: "title", space: "space", span: "span", labelSuffix: "labelSuffix", controls: "controls", width: "width", controlTpl: "controlTpl" }, outputs: { xSubmit: "xSubmit" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
48
- }
49
- __decorate([
50
- XWithConfig(X_CONFIG_NAME, 1),
51
- XInputNumber()
52
- ], XFormProperty.prototype, "space", void 0);
53
- __decorate([
54
- XInputNumber()
55
- ], XFormProperty.prototype, "span", void 0);
56
- __decorate([
57
- XWithConfig(X_CONFIG_NAME, '')
58
- ], XFormProperty.prototype, "labelSuffix", void 0);
59
- __decorate([
60
- XWithConfig(X_CONFIG_NAME, '100%')
61
- ], XFormProperty.prototype, "width", void 0);
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XFormProperty, decorators: [{
69
+ this.xSubmit = output();
70
+ }
71
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XFormProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
72
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: XFormProperty, selector: "x-form-property", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, space: { classPropertyName: "space", publicName: "space", isSignal: true, isRequired: false, transformFunction: null }, span: { classPropertyName: "span", publicName: "span", isSignal: true, isRequired: false, transformFunction: null }, labelSuffix: { classPropertyName: "labelSuffix", publicName: "labelSuffix", isSignal: true, isRequired: false, transformFunction: null }, controls: { classPropertyName: "controls", publicName: "controls", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, controlTpl: { classPropertyName: "controlTpl", publicName: "controlTpl", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { xSubmit: "xSubmit" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
73
+ }
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XFormProperty, decorators: [{
63
75
  type: Component,
64
76
  args: [{ selector: `${XFormPrefix}-property`, template: '' }]
65
- }], propDecorators: { formGroup: [{
66
- type: Input
67
- }], title: [{
68
- type: Input
69
- }], space: [{
70
- type: Input
71
- }], span: [{
72
- type: Input
73
- }], labelSuffix: [{
74
- type: Input
75
- }], controls: [{
76
- type: Input
77
- }], width: [{
78
- type: Input
79
- }], controlTpl: [{
80
- type: Input
81
- }], xSubmit: [{
82
- type: Output
83
- }] } });
77
+ }] });
84
78
  /**
85
79
  * @zh_CN 控件对象
86
80
  * @en_US Control object
@@ -103,15 +97,23 @@ export const XControlPrefix = 'x-control';
103
97
  * Control Property
104
98
  */
105
99
  export class XControlProperty {
106
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XControlProperty, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
107
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: XControlProperty, selector: "x-control-property", inputs: { option: "option" }, ngImport: i0, template: '', isInline: true }); }
100
+ constructor() {
101
+ /**
102
+ * @zh_CN 控件对象
103
+ * @en_US Control object
104
+ */
105
+ this.option = model.required({});
106
+ }
107
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XControlProperty, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: XControlProperty, selector: "x-control-property", inputs: { option: { classPropertyName: "option", publicName: "option", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { option: "optionChange" }, ngImport: i0, template: '', isInline: true }); }
108
109
  }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XControlProperty, decorators: [{
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XControlProperty, decorators: [{
110
111
  type: Component,
111
112
  args: [{ selector: `${XControlPrefix}-property`, template: '' }]
112
- }], propDecorators: { option: [{
113
- type: Input
114
- }] } });
113
+ }] });
114
+ /**
115
+ * Form control
116
+ */
115
117
  export class XFormControl extends UntypedFormControl {
116
118
  constructor() {
117
119
  super(...arguments);
@@ -197,4 +199,4 @@ export class XAutoCompleteControl extends XControl {
197
199
  super(option);
198
200
  }
199
201
  }
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5wcm9wZXJ0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2Zvcm0vZm9ybS5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBK0IsUUFBUSxFQUFXLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4SCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBZSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBZXRFLE9BQU8sRUFBZSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0Q7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUM7QUFDcEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDO0FBTzdCOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUFTO0lBRDVDOztRQUVFOzs7V0FHRztRQUNNLGNBQVMsR0FBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQXFCaEU7OztXQUdHO1FBQ00sYUFBUSxHQUFzQyxFQUFFLENBQUM7UUFDMUQ7OztXQUdHO1FBQ2tELFVBQUssR0FBVyxNQUFNLENBQUM7UUFDNUU7OztXQUdHO1FBQ00sZUFBVSxHQUFrQixFQUFFLENBQUM7UUFDeEM7OztXQUdHO1FBQ08sWUFBTyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7S0FDckQ7a0lBOUNZLGFBQWE7c0hBQWIsYUFBYSw2UkFEa0MsRUFBRTs7QUFnQks7SUFBdkQsV0FBVyxDQUFVLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFBRSxZQUFZLEVBQUU7NENBQWlCO0FBS3hEO0lBQWYsWUFBWSxFQUFFOzJDQUFnQjtBQUtVO0lBQXhDLFdBQVcs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S0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQU1ELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxRQUFRO0lBQ2hELFlBQVksU0FBcUMsRUFBRTtRQUNqRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBTUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxRQUFRO0lBQzFDLFlBQVksU0FBK0IsRUFBRTtRQUMzQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBTUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFFBQVE7SUFDOUMsWUFBWSxTQUFtQyxFQUFFO1FBQy9DLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFNRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsUUFBUTtJQUM1QyxZQUFZLFNBQWlDLEVBQUU7UUFDN0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQU1ELE1BQU0sT0FBTyxZQUFhLFNBQVEsUUFBUTtJQUN4QyxZQUFZLFNBQTZCLEVBQUU7UUFDekMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQU1ELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxRQUFRO0lBQ2hELFlBQVksU0FBcUMsRUFBRTtRQUNqRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWElkZW50aXR5LCBYSWRlbnRpdHlQcm9wZXJ0eSwgWEJvb2xlYW4sIFhJc0VtcHR5LCBYTnVtYmVyLCBYSW5wdXROdW1iZXIsIFhXaXRoQ29uZmlnIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IElucHV0LCBDb21wb25lbnQsIFRlbXBsYXRlUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFhJbnB1dE9wdGlvbiwgWElucHV0Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaW5wdXQnO1xyXG5pbXBvcnQgeyBYU2VsZWN0T3B0aW9uLCBYU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvc2VsZWN0JztcclxuaW1wb3J0IHsgWENhc2NhZGVPcHRpb24sIFhDYXNjYWRlQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvY2FzY2FkZSc7XHJcbmltcG9ydCB7IFhDaGVja2JveE9wdGlvbiwgWENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBYQ29sb3JQaWNrZXJPcHRpb24sIFhDb2xvclBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvbG9yLXBpY2tlcic7XHJcbmltcG9ydCB7IFhEYXRlUGlja2VyT3B0aW9uLCBYRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2RhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgWElucHV0TnVtYmVyT3B0aW9uLCBYSW5wdXROdW1iZXJDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9pbnB1dC1udW1iZXInO1xyXG5pbXBvcnQgeyBYUmFkaW9PcHRpb24sIFhSYWRpb0NvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3JhZGlvJztcclxuaW1wb3J0IHsgWFJhdGVPcHRpb24sIFhSYXRlQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvcmF0ZSc7XHJcbmltcG9ydCB7IFhTbGlkZXJTZWxlY3RPcHRpb24sIFhTbGlkZXJTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9zbGlkZXItc2VsZWN0JztcclxuaW1wb3J0IHsgWFN3aXRjaE9wdGlvbiwgWFN3aXRjaENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3N3aXRjaCc7XHJcbmltcG9ydCB7IFhUaW1lUGlja2VyT3B0aW9uLCBYVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3RpbWUtcGlja2VyJztcclxuaW1wb3J0IHsgWFRleHRhcmVhT3B0aW9uLCBYVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS90ZXh0YXJlYSc7XHJcbmltcG9ydCB7IFhGaW5kT3B0aW9uLCBYRmluZENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2ZpbmQnO1xyXG5pbXBvcnQgeyBYRm9ybU9wdGlvbiwgWEZvcm1Qcm9wIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuaW1wb3J0IHsgWEF1dG9Db21wbGV0ZU9wdGlvbiwgWEF1dG9Db21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2F1dG8tY29tcGxldGUnO1xyXG5cclxuLyoqXHJcbiAqIEZvcm1cclxuICogQHNlbGVjdG9yIHgtZm9ybVxyXG4gKiBAZGVjb3JhdG9yIGNvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFhGb3JtUHJlZml4ID0gJ3gtZm9ybSc7XHJcbmNvbnN0IFhfQ09ORklHX05BTUUgPSAnZm9ybSc7XHJcblxyXG4vKipcclxuICogQHpoX0NOIOaooeadv1xyXG4gKiBAZW5fVVMgVGVtcGxhdGVcclxuICovXHJcbmV4cG9ydCB0eXBlIFhGb3JtVGVtcGxhdGUgPSB7IFtwcm9wZXJ0eTogc3RyaW5nXTogVGVtcGxhdGVSZWY8YW55PiB9O1xyXG4vKipcclxuICogRm9ybSBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHNlbGVjdG9yOiBgJHtYRm9ybVByZWZpeH0tcHJvcGVydHlgLCB0ZW1wbGF0ZTogJycgfSlcclxuZXhwb3J0IGNsYXNzIFhGb3JtUHJvcGVydHkgZXh0ZW5kcyBYRm9ybVByb3Age1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDooajljZUgRm9ybUdyb3VwXHJcbiAgICogQGVuX1VTIEZvcm0gRm9ybUdyb3VwXHJcbiAgICovXHJcbiAgQElucHV0KCkgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDooajljZXlkI3np7BcclxuICAgKiBAZW5fVVMgRm9ybSBuYW1lXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaOp+S7tumXtOi3ne+8jOWNleS9jXJlbVxyXG4gICAqIEBlbl9VUyBDb250cm9sIHNwYWNpbmcsIHVuaXQgcmVtXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhOdW1iZXI+KFhfQ09ORklHX05BTUUsIDEpIEBYSW5wdXROdW1iZXIoKSBzcGFjZT86IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaOp+S7tuWuveW6pu+8jDI05qCF5qC8XHJcbiAgICogQGVuX1VTIENvbnRyb2wgd2lkdGgsIDI0IGdyaWRcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0TnVtYmVyKCkgc3Bhbj86IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagh+etvuWQjue8gFxyXG4gICAqIEBlbl9VUyBMYWJlbCBzdWZmaXhcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WE51bWJlcj4oWF9DT05GSUdfTkFNRSwgJycpIGxhYmVsU3VmZml4Pzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDooajljZXmjqfku7ZcclxuICAgKiBAZW5fVVMgRm9ybSBjb250cm9sXHJcbiAgICovXHJcbiAgQElucHV0KCkgY29udHJvbHM6IFhGb3JtQ29udHJvbE9wdGlvbltdIHwgWEZvcm1Sb3dbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDooajljZXlrr3luqZcclxuICAgKiBAZW5fVVMgRm9ybSB3aWR0aFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxzdHJpbmc+KFhfQ09ORklHX05BTUUsICcxMDAlJykgd2lkdGg6IHN0cmluZyA9ICcxMDAlJztcclxuICAvKipcclxuICAgKiBAemhfQ04g6Ieq5a6a5LmJ5qih5p2/XHJcbiAgICogQGVuX1VTIEN1c3RvbSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNvbnRyb2xUcGw6IFhGb3JtVGVtcGxhdGUgPSB7fTtcclxuICAvKipcclxuICAgKiBAemhfQ04gU3VibWl0XHJcbiAgICogQGVuX1VTIFN1Ym1pdFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSB4U3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxTdWJtaXRFdmVudD4oKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiDmjqfku7blr7nosaFcclxuICogQGVuX1VTIENvbnRyb2wgb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhDb250cm9sT3B0aW9uIGV4dGVuZHMgWElkZW50aXR5UHJvcGVydHkge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlgLxcclxuICAgKiBAZW5fVVMgVmFsdWVcclxuICAgKi9cclxuICB2YWx1ZT86IGFueTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5Yid5aeL6buY6K6k5YC8XHJcbiAgICogQGVuX1VTIERlZmF1bHQgdmFsdWVcclxuICAgKi9cclxuICBkZWZhdWx0VmFsdWU/OiBhbnk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaOp+S7tuexu+Wei1xyXG4gICAqIEBlbl9VUyBDb250cm9sIHR5cGVcclxuICAgKi9cclxuICBjb250cm9sPzogWENvbnRyb2xUeXBlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKhcclxuICAgKiBAZW5fVVMgRGlzYWJsZWRcclxuICAgKi9cclxuICBkaXNhYmxlZD86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlj6ror7tcclxuICAgKiBAZW5fVVMgUmVhZCBvbmx5XHJcbiAgICovXHJcbiAgcmVhZG9ubHk/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5b+F5aGrXHJcbiAgICogQGVuX1VTIFJlcXVpcmVkXHJcbiAgICovXHJcbiAgcmVxdWlyZWQ/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6ZqQ6JePXHJcbiAgICogQGVuX1VTIEhpZGVcclxuICAgKi9cclxuICBoaWRkZW4/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5YiX5a69XHJcbiAgICogQGVuX1VTIENvbHVtbiB3aWR0aFxyXG4gICAqL1xyXG4gIHNwYW4/OiBudW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOato+WImemqjOivgeinhOWImVxyXG4gICAqIEBlbl9VUyBSZWd1bGFyIHZhbGlkYXRpb24gcnVsZXNcclxuICAgKi9cclxuICBwYXR0ZXJuPzogUmVnRXhwIHwgUmVnRXhwW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmqjOivgeS4jemAmui/h+aPkOekuuaWh+Wtl1xyXG4gICAqIEBlbl9VUyBWZXJpZmljYXRpb24gZmFpbGVkIHByb21wdCB0ZXh0XHJcbiAgICovXHJcbiAgbWVzc2FnZT86IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDovpPlhaXmoYbnmoTpqozor4Hlh73mlbBcclxuICAgKiBAZW5fVVMgVmFsaWRhdGlvbiBmdW5jdGlvbiBvZiBpbnB1dCBib3hcclxuICAgKi9cclxuICBpbnB1dFZhbGlkYXRvcj86ICh2YWx1ZTogYW55KSA9PiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlpJbpg6jmlLnlj5jkuovku7ZcclxuICAgKiBAZW5fVVMgRXh0ZXJuYWwgY2hhbmdlIGV2ZW50XHJcbiAgICovXHJcbiAgY2hhbmdlPzogKCkgPT4gdm9pZDtcclxuICAvKipcclxuICAgKiBAemhfQ04g6Ieq5a6a5LmJ5bGe5oCnXHJcbiAgICogQGVuX1VTIEN1c3RvbSBhdHRyaWJ1dGVzXHJcbiAgICovXHJcbiAgW3Byb3BlcnR5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g5o6n5Lu25a+56LGhXHJcbiAqIEBlbl9VUyBDb250cm9sIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFhDb250cm9sIGV4dGVuZHMgWElkZW50aXR5IGltcGxlbWVudHMgWENvbnRyb2xPcHRpb24ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlgLxcclxuICAgKiBAZW5fVVMgVmFsdWVcclxuICAgKi9cclxuICB2YWx1ZT86IGFueTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5byA5ZCv6L+Z5Liq77yM5omn6KGMIHJlc2V0IOeahOaXtuWAmeWIneWni+S4uuiuvue9rueahCB2YWx1Ze+8jOm7mOiupOS4uiBudWxsXHJcbiAgICogQGVuX1VTIEVuYWJsZSB0aGlzLiBXaGVuIHBlcmZvcm1pbmcgYSByZXNldCwgdGhlIGluaXRpYWwgdmFsdWUgaXMgdGhlIHNldCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gbnVsbFxyXG4gICAqL1xyXG4gIG5vbk51bGxhYmxlPzogYW55O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmjqfku7bnsbvlnotcclxuICAgKiBAZW5fVVMgQ29udHJvbCB0eXBlXHJcbiAgICovXHJcbiAgY29udHJvbD86IFhDb250cm9sVHlwZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g56aB55SoXHJcbiAgICogQGVuX1VTIERpc2FibGVkXHJcbiAgICovXHJcbiAgZGlzYWJsZWQ/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5Y+q6K+7XHJcbiAgICogQGVuX1VTIFJlYWQgb25seVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5PzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW/heWhq1xyXG4gICAqIEBlbl9VUyBSZXF1aXJlZFxyXG4gICAqL1xyXG4gIHJlcXVpcmVkPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmakOiXj1xyXG4gICAqIEBlbl9VUyBIaWRlXHJcbiAgICovXHJcbiAgaGlkZGVuPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWIl+WuvVxyXG4gICAqIEBlbl9VUyBDb2x1bW4gd2lkdGhcclxuICAgKi9cclxuICBzcGFuPzogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmraPliJnpqozor4Hop4TliJlcclxuICAgKiBAZW5fVVMgUmVndWxhciB2YWxpZGF0aW9uIHJ1bGVzXHJcbiAgICovXHJcbiAgcGF0dGVybj86IFJlZ0V4cCB8IFJlZ0V4cFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpqozor4HkuI3pgJrov4fmj5DnpLrmloflrZdcclxuICAgKiBAZW5fVVMgVmVyaWZpY2F0aW9uIGZhaWxlZCBwcm9tcHQgdGV4dFxyXG4gICAqL1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6L6T5YWl5qGG55qE6aqM6K+B5Ye95pWwXHJcbiAgICogQGVuX1VTIFZhbGlkYXRpb24gZnVuY3Rpb24gb2YgaW5wdXQgYm94XHJcbiAgICovXHJcbiAgaW5wdXRWYWxpZGF0b3I/OiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5aSW6YOo5pS55Y+Y5LqL5Lu2XHJcbiAgICogQGVuX1VTIEV4dGVybmFsIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIGNoYW5nZT86ICgpID0+IHZvaWQ7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiuvue9rumqjOivgVxyXG4gICAqIEBlbl9VUyBTZXQgdmVyaWZpY2F0aW9uXHJcbiAgICovXHJcbiAgc2V0VmFsaWRhdG9ycz86ICgpID0+IHZvaWQ7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiHquWumuS5ieWxnuaAp1xyXG4gICAqIEBlbl9VUyBDdXN0b20gYXR0cmlidXRlc1xyXG4gICAqL1xyXG4gIFtwcm9wZXJ0eTogc3RyaW5nXTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy52YWx1ZSkpIHRoaXMudmFsdWUgPSAnJztcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgb3B0aW9uKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g6KGo5Y2V6KGM5a+56LGhXHJcbiAqIEBlbl9VUyBGb3JtIHJvdyBvYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEZvcm1Sb3cge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDooYzmoIfpophcclxuICAgKiBAZW5fVVMgUm93IGhlYWRlclxyXG4gICAqL1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDooYzlm77moIdcclxuICAgKiBAZW5fVVMgUm93IGljb25cclxuICAgKi9cclxuICBpY29uPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDooYzkuK3nmoTmjqfku7ZcclxuICAgKiBAZW5fVVMgQ29udHJvbCBpbiByb3dcclxuICAgKi9cclxuICBjb250cm9sczogWEZvcm1Db250cm9sT3B0aW9uW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmakOiXj1xyXG4gICAqIEBlbl9VUyBIaWRkZW5cclxuICAgKi9cclxuICBoaWRkZW4/OiBYQm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnRyb2xcclxuICogQHNlbGVjdG9yIHgtY29udHJvbFxyXG4gKiBAZGVjb3JhdG9yIGNvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFhDb250cm9sUHJlZml4ID0gJ3gtY29udHJvbCc7XHJcblxyXG4vKipcclxuICogQ29udHJvbCBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHNlbGVjdG9yOiBgJHtYQ29udHJvbFByZWZpeH0tcHJvcGVydHlgLCB0ZW1wbGF0ZTogJycgfSlcclxuZXhwb3J0IGNsYXNzIFhDb250cm9sUHJvcGVydHkge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmjqfku7blr7nosaFcclxuICAgKiBAZW5fVVMgQ29udHJvbCBvYmplY3RcclxuICAgKi9cclxuICBASW5wdXQoKSBvcHRpb24/OiBYQ29udHJvbE9wdGlvbjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFhGb3JtQ29udHJvbCBleHRlbmRzIFVudHlwZWRGb3JtQ29udHJvbCB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaPkOekuuS/oeaBr1xyXG4gICAqIEBlbl9VUyBQcm9tcHQgaW5mb3JtYXRpb25cclxuICAgKi9cclxuICBtZXNzYWdlcz86IHN0cmluZ1tdID0gW107XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFhGb3JtQ29udHJvbE9wdGlvbiA9XHJcbiAgfCBYSW5wdXRDb250cm9sT3B0aW9uXHJcbiAgfCBYU2VsZWN0Q29udHJvbE9wdGlvblxyXG4gIHwgWENhc2NhZGVDb250cm9sT3B0aW9uXHJcbiAgfCBYQ2hlY2tib3hDb250cm9sT3B0aW9uXHJcbiAgfCBYQ29sb3JQaWNrZXJDb250cm9sT3B0aW9uXHJcbiAgfCBYRGF0ZVBpY2tlckNvbnRyb2xPcHRpb25cclxuICB8IFhJbnB1dE51bWJlckNvbnRyb2xPcHRpb25cclxuICB8IFhSYWRpb0NvbnRyb2xPcHRpb25cclxuICB8IFhSYXRlQ29udHJvbE9wdGlvblxyXG4gIHwgWFNsaWRlclNlbGVjdENvbnRyb2xPcHRpb25cclxuICB8IFhTd2l0Y2hDb250cm9sT3B0aW9uXHJcbiAgfCBYVGltZVBpY2tlckNvbnRyb2xPcHRpb25cclxuICB8IFhGaW5kQ29udHJvbE9wdGlvblxyXG4gIHwgWFRlbXBsYXRlQ29udHJvbE9wdGlvbjtcclxuXHJcbmV4cG9ydCB0eXBlIFhGb3JtQ29udHJvbENvbXBvbmVudCA9XHJcbiAgfCBYSW5wdXRDb21wb25lbnRcclxuICB8IFhTZWxlY3RDb21wb25lbnRcclxuICB8IFhDYXNjYWRlQ29tcG9uZW50XHJcbiAgfCBYQ2hlY2tib3hDb21wb25lbnRcclxuICB8IFhDb2xvclBpY2tlckNvbXBvbmVudFxyXG4gIHwgWERhdGVQaWNrZXJDb21wb25lbnRcclxuICB8IFhJbnB1dE51bWJlckNvbXBvbmVudFxyXG4gIHwgWFJhZGlvQ29tcG9uZW50XHJcbiAgfCBYUmF0ZUNvbXBvbmVudFxyXG4gIHwgWFNsaWRlclNlbGVjdENvbXBvbmVudFxyXG4gIHwgWFN3aXRjaENvbXBvbmVudFxyXG4gIHwgWFRpbWVQaWNrZXJDb21wb25lbnRcclxuICB8IFhUZXh0YXJlYUNvbXBvbmVudFxyXG4gIHwgWEZpbmRDb21wb25lbnRcclxuICB8IFhBdXRvQ29tcGxldGVDb21wb25lbnQ7XHJcblxyXG5leHBvcnQgdHlwZSBYRm9ybUNvbnRyb2xUeXBlID1cclxuICB8IFhJbnB1dENvbnRyb2xcclxuICB8IFhTZWxlY3RDb250cm9sXHJcbiAgfCBYQ2FzY2FkZUNvbnRyb2xcclxuICB8IFhDaGVja2JveENvbnRyb2xcclxuICB8IFhDb2xvclBpY2tlckNvbnRyb2xcclxuICB8IFhEYXRlUGlja2VyQ29udHJvbFxyXG4gIHwgWElucHV0TnVtYmVyQ29udHJvbFxyXG4gIHwgWFJhZGlvQ29udHJvbFxyXG4gIHwgWFJhdGVDb250cm9sXHJcbiAgfCBYU2xpZGVyU2VsZWN0Q29udHJvbFxyXG4gIHwgWFN3aXRjaENvbnRyb2xcclxuICB8IFhUaW1lUGlja2VyQ29udHJvbFxyXG4gIHwgWFRleHRhcmVhQ29udHJvbFxyXG4gIHwgWEZpbmRDb250cm9sXHJcbiAgfCBYQXV0b0NvbXBsZXRlQ29udHJvbDtcclxuXHJcbmV4cG9ydCB0eXBlIFhDb250cm9sVHlwZSA9XHJcbiAgfCAnaW5wdXQnXHJcbiAgfCAnc2VsZWN0J1xyXG4gIHwgJ2Nhc2NhZGUnXHJcbiAgfCAnY2hlY2tib3gnXHJcbiAgfCAnY29sb3ItcGlja2VyJ1xyXG4gIHwgJ2RhdGUtcGlja2VyJ1xyXG4gIHwgJ2lucHV0LW51bWJlcidcclxuICB8ICdyYWRpbydcclxuICB8ICdyYXRlJ1xyXG4gIHwgJ3NsaWRlci1zZWxlY3QnXHJcbiAgfCAnc3dpdGNoJ1xyXG4gIHwgJ3RpbWUtcGlja2VyJ1xyXG4gIHwgJ3RleHRhcmVhJ1xyXG4gIHwgJ2ZpbmQnXHJcbiAgfCAnYXV0by1jb21wbGV0ZSdcclxuICB8ICd0ZW1wbGF0ZSc7XHJcblxyXG4vKipcclxuICogSW5wdXQgQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYSW5wdXRDb250cm9sT3B0aW9uIGV4dGVuZHMgWENvbnRyb2xPcHRpb24sIFhJbnB1dE9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWElucHV0Q29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhJbnB1dENvbnRyb2xPcHRpb24gPSB7fSkge1xyXG4gICAgc3VwZXIob3B0aW9uKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZWxlY3QgQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYU2VsZWN0Q29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYU2VsZWN0T3B0aW9uIHt9XHJcbmV4cG9ydCBjbGFzcyBYU2VsZWN0Q29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhTZWxlY3RDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQ2FzY2FkZSBDb250cm9sXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhDYXNjYWRlQ29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYQ2FzY2FkZU9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWENhc2NhZGVDb250cm9sIGV4dGVuZHMgWENvbnRyb2wge1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbjogWENhc2NhZGVDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tib3ggQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYQ2hlY2tib3hDb250cm9sT3B0aW9uIGV4dGVuZHMgWENvbnRyb2xPcHRpb24sIFhDaGVja2JveE9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWENoZWNrYm94Q29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhDaGVja2JveENvbnRyb2xPcHRpb24gPSB7fSkge1xyXG4gICAgc3VwZXIob3B0aW9uKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xvclBpY2tlciBDb250cm9sXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhDb2xvclBpY2tlckNvbnRyb2xPcHRpb24gZXh0ZW5kcyBYQ29udHJvbE9wdGlvbiwgWENvbG9yUGlja2VyT3B0aW9uIHt9XHJcbmV4cG9ydCBjbGFzcyBYQ29sb3JQaWNrZXJDb250cm9sIGV4dGVuZHMgWENvbnRyb2wge1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbjogWENvbG9yUGlja2VyQ29udHJvbE9wdGlvbiA9IHt9KSB7XHJcbiAgICBzdXBlcihvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIERhdGVQaWNrZXIgQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYRGF0ZVBpY2tlckNvbnRyb2xPcHRpb24gZXh0ZW5kcyBYQ29udHJvbE9wdGlvbiwgWERhdGVQaWNrZXJPcHRpb24ge31cclxuZXhwb3J0IGNsYXNzIFhEYXRlUGlja2VyQ29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhEYXRlUGlja2VyQ29udHJvbE9wdGlvbiA9IHt9KSB7XHJcbiAgICBzdXBlcihvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIElucHV0TnVtYmVyIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWElucHV0TnVtYmVyQ29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYSW5wdXROdW1iZXJPcHRpb24ge31cclxuZXhwb3J0IGNsYXNzIFhJbnB1dE51bWJlckNvbnRyb2wgZXh0ZW5kcyBYQ29udHJvbCB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBYSW5wdXROdW1iZXJDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogUmFkaW8gQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYUmFkaW9Db250cm9sT3B0aW9uIGV4dGVuZHMgWENvbnRyb2xPcHRpb24sIFhSYWRpb09wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWFJhZGlvQ29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhSYWRpb0NvbnRyb2xPcHRpb24gPSB7fSkge1xyXG4gICAgc3VwZXIob3B0aW9uKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSYXRlIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFJhdGVDb250cm9sT3B0aW9uIGV4dGVuZHMgWENvbnRyb2xPcHRpb24sIFhSYXRlT3B0aW9uIHt9XHJcbmV4cG9ydCBjbGFzcyBYUmF0ZUNvbnRyb2wgZXh0ZW5kcyBYQ29udHJvbCB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBYUmF0ZUNvbnRyb2xPcHRpb24gPSB7fSkge1xyXG4gICAgc3VwZXIob3B0aW9uKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTbGlkZXJTZWxlY3QgQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYU2xpZGVyU2VsZWN0Q29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYU2xpZGVyU2VsZWN0T3B0aW9uIHt9XHJcbmV4cG9ydCBjbGFzcyBYU2xpZGVyU2VsZWN0Q29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhTbGlkZXJTZWxlY3RDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogU3dpdGNoIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFN3aXRjaENvbnRyb2xPcHRpb24gZXh0ZW5kcyBYQ29udHJvbE9wdGlvbiwgWFN3aXRjaE9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWFN3aXRjaENvbnRyb2wgZXh0ZW5kcyBYQ29udHJvbCB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBYU3dpdGNoQ29udHJvbE9wdGlvbiA9IHt9KSB7XHJcbiAgICBzdXBlcihvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFRpbWVQaWNrZXIgQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYVGltZVBpY2tlckNvbnRyb2xPcHRpb24gZXh0ZW5kcyBYQ29udHJvbE9wdGlvbiwgWFRpbWVQaWNrZXJPcHRpb24ge31cclxuZXhwb3J0IGNsYXNzIFhUaW1lUGlja2VyQ29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhUaW1lUGlja2VyQ29udHJvbE9wdGlvbiA9IHt9KSB7XHJcbiAgICBzdXBlcihvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFRleHRhcmVhIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRleHRhcmVhQ29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYVGV4dGFyZWFPcHRpb24ge31cclxuZXhwb3J0IGNsYXNzIFhUZXh0YXJlYUNvbnRyb2wgZXh0ZW5kcyBYQ29udHJvbCB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBYVGV4dGFyZWFDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogRmluZCBDb250cm9sXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhGaW5kQ29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYRmluZE9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWEZpbmRDb250cm9sIGV4dGVuZHMgWENvbnRyb2wge1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbjogWEZpbmRDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQXV0b0NvbXBsZXRlIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEF1dG9Db21wbGV0ZUNvbnRyb2xPcHRpb24gZXh0ZW5kcyBYQ29udHJvbE9wdGlvbiwgWEF1dG9Db21wbGV0ZU9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWEF1dG9Db21wbGV0ZUNvbnRyb2wgZXh0ZW5kcyBYQ29udHJvbCB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBYQXV0b0NvbXBsZXRlQ29udHJvbE9wdGlvbiA9IHt9KSB7XHJcbiAgICBzdXBlcihvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFRlbXBsYXRlIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRlbXBsYXRlQ29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYRm9ybU9wdGlvbiB7fVxyXG4iXX0=
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5wcm9wZXJ0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2Zvcm0vZm9ybS5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFFBQVEsRUFFUixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDWCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxTQUFTLEVBQWUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFldEUsT0FBTyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7O0FBRzFFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDO0FBQ3BDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBT2xDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWMsU0FBUSxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQztJQUQzRTs7UUFFRTs7OztXQUlHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBbUIsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFOzs7V0FHRztRQUNNLFVBQUssR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDbkM7OztXQUdHO1FBQ00sVUFBSyxHQUFHLEtBQUssQ0FBa0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLElBQUksU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMxRzs7O1dBR0c7UUFDTSxTQUFJLEdBQUcsS0FBSyxDQUF5QixJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUM5RTs7O1dBR0c7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cG9ydCB7XHJcbiAgWElkZW50aXR5LFxyXG4gIFhCb29sZWFuLFxyXG4gIFhJc0VtcHR5LFxyXG4gIFhOdW1iZXIsXHJcbiAgWFRvQ3NzUGl4ZWxWYWx1ZSxcclxuICBYVG9OdW1iZXIsXHJcbiAgWFRvQm9vbGVhblxyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIFRlbXBsYXRlUmVmLCBtb2RlbCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFhJbnB1dE9wdGlvbiwgWElucHV0Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaW5wdXQnO1xyXG5pbXBvcnQgeyBYU2VsZWN0T3B0aW9uLCBYU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvc2VsZWN0JztcclxuaW1wb3J0IHsgWENhc2NhZGVPcHRpb24sIFhDYXNjYWRlQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvY2FzY2FkZSc7XHJcbmltcG9ydCB7IFhDaGVja2JveE9wdGlvbiwgWENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBYQ29sb3JQaWNrZXJPcHRpb24sIFhDb2xvclBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvbG9yLXBpY2tlcic7XHJcbmltcG9ydCB7IFhEYXRlUGlja2VyT3B0aW9uLCBYRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2RhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgWElucHV0TnVtYmVyT3B0aW9uLCBYSW5wdXROdW1iZXJDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9pbnB1dC1udW1iZXInO1xyXG5pbXBvcnQgeyBYUmFkaW9PcHRpb24sIFhSYWRpb0NvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3JhZGlvJztcclxuaW1wb3J0IHsgWFJhdGVPcHRpb24sIFhSYXRlQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvcmF0ZSc7XHJcbmltcG9ydCB7IFhTbGlkZXJTZWxlY3RPcHRpb24sIFhTbGlkZXJTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9zbGlkZXItc2VsZWN0JztcclxuaW1wb3J0IHsgWFN3aXRjaE9wdGlvbiwgWFN3aXRjaENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3N3aXRjaCc7XHJcbmltcG9ydCB7IFhUaW1lUGlja2VyT3B0aW9uLCBYVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3RpbWUtcGlja2VyJztcclxuaW1wb3J0IHsgWFRleHRhcmVhT3B0aW9uLCBYVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS90ZXh0YXJlYSc7XHJcbmltcG9ydCB7IFhGaW5kT3B0aW9uLCBYRmluZENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2ZpbmQnO1xyXG5pbXBvcnQgeyBYRm9ybUNvbnRyb2xGdW5jdGlvbiwgWEZvcm1PcHRpb24gfSBmcm9tICdAbmctbmVzdC91aS9iYXNlLWZvcm0nO1xyXG5pbXBvcnQgeyBYQXV0b0NvbXBsZXRlT3B0aW9uLCBYQXV0b0NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvYXV0by1jb21wbGV0ZSc7XHJcblxyXG4vKipcclxuICogRm9ybVxyXG4gKiBAc2VsZWN0b3IgeC1mb3JtXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWEZvcm1QcmVmaXggPSAneC1mb3JtJztcclxuY29uc3QgWF9GT1JNX0NPTkZJR19OQU1FID0gJ2Zvcm0nO1xyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiDmqKHmnb9cclxuICogQGVuX1VTIFRlbXBsYXRlXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBYRm9ybVRlbXBsYXRlID0geyBbcHJvcGVydHk6IHN0cmluZ106IFRlbXBsYXRlUmVmPGFueT4gfTtcclxuLyoqXHJcbiAqIEZvcm0gUHJvcGVydHlcclxuICovXHJcbkBDb21wb25lbnQoeyBzZWxlY3RvcjogYCR7WEZvcm1QcmVmaXh9LXByb3BlcnR5YCwgdGVtcGxhdGU6ICcnIH0pXHJcbmV4cG9ydCBjbGFzcyBYRm9ybVByb3BlcnR5IGV4dGVuZHMgWEZvcm1Db250cm9sRnVuY3Rpb24oWF9GT1JNX0NPTkZJR19OQU1FKSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOihqOWNlSBGb3JtR3JvdXBcclxuICAgKiBAZW5fVVMgRm9ybSBGb3JtR3JvdXBcclxuICAgKiBAZGVmYXVsdCBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSlcclxuICAgKi9cclxuICByZWFkb25seSBmb3JtR3JvdXAgPSBpbnB1dDxVbnR5cGVkRm9ybUdyb3VwPihuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSkpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDooajljZXlkI3np7BcclxuICAgKiBAZW5fVVMgRm9ybSBuYW1lXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5o6n5Lu26Ze06LedXHJcbiAgICogQGVuX1VTIENvbnRyb2wgc3BhY2luZ1xyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHNwYWNlID0gaW5wdXQ8c3RyaW5nLCBYTnVtYmVyPih0aGlzLmNvbmZpZz8uc3BhY2UgPz8gJzEuNzVyZW0nLCB7IHRyYW5zZm9ybTogWFRvQ3NzUGl4ZWxWYWx1ZSB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5o6n5Lu25a695bqm77yMMjTmoIXmoLxcclxuICAgKiBAZW5fVVMgQ29udHJvbCB3aWR0aCwgMjQgZ3JpZFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHNwYW4gPSBpbnB1dDxudW1iZXIgfCBudWxsLCBYTnVtYmVyPihudWxsLCB7IHRyYW5zZm9ybTogWFRvTnVtYmVyIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoIfnrb7lkI7nvIBcclxuICAgKiBAZW5fVVMgTGFiZWwgc3VmZml4XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgbGFiZWxTdWZmaXggPSBpbnB1dDxzdHJpbmc+KHRoaXMuY29uZmlnPy5sYWJlbFN1ZmZpeCA/PyAnJyk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOihqOWNleaOp+S7tlxyXG4gICAqIEBlbl9VUyBGb3JtIGNvbnRyb2xcclxuICAgKi9cclxuICByZWFkb25seSBjb250cm9scyA9IGlucHV0PFhGb3JtQ29udHJvbE9wdGlvbltdIHwgWEZvcm1Sb3dbXT4oW10pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDooajljZXlrr3luqZcclxuICAgKiBAZW5fVVMgRm9ybSB3aWR0aFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHdpZHRoID0gaW5wdXQ8c3RyaW5nLCBYTnVtYmVyPih0aGlzLmNvbmZpZz8ud2lkdGggPz8gJzEwMCUnLCB7IHRyYW5zZm9ybTogWFRvQ3NzUGl4ZWxWYWx1ZSB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6Ieq5a6a5LmJ5qih5p2/XHJcbiAgICogQGVuX1VTIEN1c3RvbSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGNvbnRyb2xUcGwgPSBpbnB1dDxYRm9ybVRlbXBsYXRlPih7fSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqFxyXG4gICAqIEBlbl9VUyBEaXNhYmxlZFxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgWEJvb2xlYW4+KGZhbHNlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04gU3VibWl0XHJcbiAgICogQGVuX1VTIFN1Ym1pdFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHhTdWJtaXQgPSBvdXRwdXQ8U3VibWl0RXZlbnQ+KCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g5o6n5Lu25a+56LGhXHJcbiAqIEBlbl9VUyBDb250cm9sIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYQ29udHJvbE9wdGlvbiAge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDliJcgSWRcclxuICAgKiBAZW5fVVMgVGhlIGNvbHVtbiBJZFxyXG4gICAqL1xyXG4gIGlkPzogYW55O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlgLxcclxuICAgKiBAZW5fVVMgVmFsdWVcclxuICAgKi9cclxuICB2YWx1ZT86IGFueTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5Yid5aeL6buY6K6k5YC8XHJcbiAgICogQGVuX1VTIERlZmF1bHQgdmFsdWVcclxuICAgKi9cclxuICBkZWZhdWx0VmFsdWU/OiBhbnk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaOp+S7tuexu+Wei1xyXG4gICAqIEBlbl9VUyBDb250cm9sIHR5cGVcclxuICAgKi9cclxuICBjb250cm9sPzogWENvbnRyb2xUeXBlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKhcclxuICAgKiBAZW5fVVMgRGlzYWJsZWRcclxuICAgKi9cclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWPquivu1xyXG4gICAqIEBlbl9VUyBSZWFkIG9ubHlcclxuICAgKi9cclxuICByZWFkb25seT86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW/heWhq1xyXG4gICAqIEBlbl9VUyBSZXF1aXJlZFxyXG4gICAqL1xyXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6ZqQ6JePXHJcbiAgICogQGVuX1VTIEhpZGVcclxuICAgKi9cclxuICBoaWRkZW4/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDliJflrr1cclxuICAgKiBAZW5fVVMgQ29sdW1uIHdpZHRoXHJcbiAgICovXHJcbiAgc3Bhbj86IG51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5q2j5YiZ6aqM6K+B6KeE5YiZXHJcbiAgICogQGVuX1VTIFJlZ3VsYXIgdmFsaWRhdGlvbiBydWxlc1xyXG4gICAqL1xyXG4gIHBhdHRlcm4/OiBSZWdFeHAgfCBSZWdFeHBbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6aqM6K+B5LiN6YCa6L+H5o+Q56S65paH5a2XXHJcbiAgICogQGVuX1VTIFZlcmlmaWNhdGlvbiBmYWlsZWQgcHJvbXB0IHRleHRcclxuICAgKi9cclxuICBtZXNzYWdlPzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOi+k+WFpeahhueahOmqjOivgeWHveaVsFxyXG4gICAqIEBlbl9VUyBWYWxpZGF0aW9uIGZ1bmN0aW9uIG9mIGlucHV0IGJveFxyXG4gICAqL1xyXG4gIGlucHV0VmFsaWRhdG9yPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWklumDqOaUueWPmOS6i+S7tlxyXG4gICAqIEBlbl9VUyBFeHRlcm5hbCBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICBjaGFuZ2U/OiAoKSA9PiB2b2lkO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoh6rlrprkuYnlsZ7mgKdcclxuICAgKiBAZW5fVVMgQ3VzdG9tIGF0dHJpYnV0ZXNcclxuICAgKi9cclxuICBbcHJvcGVydHk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiDmjqfku7blr7nosaFcclxuICogQGVuX1VTIENvbnRyb2wgb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgWENvbnRyb2wgZXh0ZW5kcyBYSWRlbnRpdHkgaW1wbGVtZW50cyBYQ29udHJvbE9wdGlvbiB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWAvFxyXG4gICAqIEBlbl9VUyBWYWx1ZVxyXG4gICAqL1xyXG4gIHZhbHVlPzogYW55O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvIDlkK/ov5nkuKrvvIzmiafooYwgcmVzZXQg55qE5pe25YCZ5Yid5aeL5Li66K6+572u55qEIHZhbHVl77yM6buY6K6k5Li6IG51bGxcclxuICAgKiBAZW5fVVMgRW5hYmxlIHRoaXMuIFdoZW4gcGVyZm9ybWluZyBhIHJlc2V0LCB0aGUgaW5pdGlhbCB2YWx1ZSBpcyB0aGUgc2V0IHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBudWxsXHJcbiAgICovXHJcbiAgbm9uTnVsbGFibGU/OiBhbnk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaOp+S7tuexu+Wei1xyXG4gICAqIEBlbl9VUyBDb250cm9sIHR5cGVcclxuICAgKi9cclxuICBjb250cm9sPzogWENvbnRyb2xUeXBlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKhcclxuICAgKiBAZW5fVVMgRGlzYWJsZWRcclxuICAgKi9cclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWPquivu1xyXG4gICAqIEBlbl9VUyBSZWFkIG9ubHlcclxuICAgKi9cclxuICByZWFkb25seT86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW/heWhq1xyXG4gICAqIEBlbl9VUyBSZXF1aXJlZFxyXG4gICAqL1xyXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6ZqQ6JePXHJcbiAgICogQGVuX1VTIEhpZGVcclxuICAgKi9cclxuICBoaWRkZW4/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDliJflrr1cclxuICAgKiBAZW5fVVMgQ29sdW1uIHdpZHRoXHJcbiAgICovXHJcbiAgc3Bhbj86IG51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5q2j5YiZ6aqM6K+B6KeE5YiZXHJcbiAgICogQGVuX1VTIFJlZ3VsYXIgdmFsaWRhdGlvbiBydWxlc1xyXG4gICAqL1xyXG4gIHBhdHRlcm4/OiBSZWdFeHAgfCBSZWdFeHBbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6aqM6K+B5LiN6YCa6L+H5o+Q56S65paH5a2XXHJcbiAgICogQGVuX1VTIFZlcmlmaWNhdGlvbiBmYWlsZWQgcHJvbXB0IHRleHRcclxuICAgKi9cclxuICBtZXNzYWdlPzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOi+k+WFpeahhueahOmqjOivgeWHveaVsFxyXG4gICAqIEBlbl9VUyBWYWxpZGF0aW9uIGZ1bmN0aW9uIG9mIGlucHV0IGJveFxyXG4gICAqL1xyXG4gIGlucHV0VmFsaWRhdG9yPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWklumDqOaUueWPmOS6i+S7tlxyXG4gICAqIEBlbl9VUyBFeHRlcm5hbCBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICBjaGFuZ2U/OiAoKSA9PiB2b2lkO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDorr7nva7pqozor4FcclxuICAgKiBAZW5fVVMgU2V0IHZlcmlmaWNhdGlvblxyXG4gICAqL1xyXG4gIHNldFZhbGlkYXRvcnM/OiAoKSA9PiB2b2lkO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoh6rlrprkuYnlsZ7mgKdcclxuICAgKiBAZW5fVVMgQ3VzdG9tIGF0dHJpYnV0ZXNcclxuICAgKi9cclxuICBbcHJvcGVydHk6IHN0cmluZ106IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBYQ29udHJvbE9wdGlvbiA9IHt9KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMudmFsdWUpKSB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQHpoX0NOIOihqOWNleihjOWvueixoVxyXG4gKiBAZW5fVVMgRm9ybSByb3cgb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhGb3JtUm93IHtcclxuICAvKipcclxuICAgKiBAemhfQ04g6KGM5qCH6aKYXHJcbiAgICogQGVuX1VTIFJvdyBoZWFkZXJcclxuICAgKi9cclxuICB0aXRsZT86IHN0cmluZztcclxuICAvKipcclxuICAgKiBAemhfQ04g6KGM5Zu+5qCHXHJcbiAgICogQGVuX1VTIFJvdyBpY29uXHJcbiAgICovXHJcbiAgaWNvbj86IHN0cmluZztcclxuICAvKipcclxuICAgKiBAemhfQ04g6KGM5Lit55qE5o6n5Lu2XHJcbiAgICogQGVuX1VTIENvbnRyb2wgaW4gcm93XHJcbiAgICovXHJcbiAgY29udHJvbHM6IFhGb3JtQ29udHJvbE9wdGlvbltdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpmpDol49cclxuICAgKiBAZW5fVVMgSGlkZGVuXHJcbiAgICovXHJcbiAgaGlkZGVuPzogWEJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb250cm9sXHJcbiAqIEBzZWxlY3RvciB4LWNvbnRyb2xcclxuICogQGRlY29yYXRvciBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBYQ29udHJvbFByZWZpeCA9ICd4LWNvbnRyb2wnO1xyXG5cclxuLyoqXHJcbiAqIENvbnRyb2wgUHJvcGVydHlcclxuICovXHJcbkBDb21wb25lbnQoeyBzZWxlY3RvcjogYCR7WENvbnRyb2xQcmVmaXh9LXByb3BlcnR5YCwgdGVtcGxhdGU6ICcnIH0pXHJcbmV4cG9ydCBjbGFzcyBYQ29udHJvbFByb3BlcnR5IHtcclxuICAvKipcclxuICAgKiBAemhfQ04g5o6n5Lu25a+56LGhXHJcbiAgICogQGVuX1VTIENvbnRyb2wgb2JqZWN0XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgb3B0aW9uID0gbW9kZWwucmVxdWlyZWQ8WENvbnRyb2w+KHt9KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm0gY29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFhGb3JtQ29udHJvbCBleHRlbmRzIFVudHlwZWRGb3JtQ29udHJvbCB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaPkOekuuS/oeaBr1xyXG4gICAqIEBlbl9VUyBQcm9tcHQgaW5mb3JtYXRpb25cclxuICAgKi9cclxuICBtZXNzYWdlcz86IHN0cmluZ1tdID0gW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g6KGo5Y2V5o6n5Lu25Y+C5pWwXHJcbiAqIEBlbl9VUyBGb3JtIGNvbnRyb2wgb3B0aW9uXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBYRm9ybUNvbnRyb2xPcHRpb24gPVxyXG4gIHwgWElucHV0Q29udHJvbE9wdGlvblxyXG4gIHwgWFNlbGVjdENvbnRyb2xPcHRpb25cclxuICB8IFhDYXNjYWRlQ29udHJvbE9wdGlvblxyXG4gIHwgWENoZWNrYm94Q29udHJvbE9wdGlvblxyXG4gIHwgWENvbG9yUGlja2VyQ29udHJvbE9wdGlvblxyXG4gIHwgWERhdGVQaWNrZXJDb250cm9sT3B0aW9uXHJcbiAgfCBYSW5wdXROdW1iZXJDb250cm9sT3B0aW9uXHJcbiAgfCBYUmFkaW9Db250cm9sT3B0aW9uXHJcbiAgfCBYUmF0ZUNvbnRyb2xPcHRpb25cclxuICB8IFhTbGlkZXJTZWxlY3RDb250cm9sT3B0aW9uXHJcbiAgfCBYU3dpdGNoQ29udHJvbE9wdGlvblxyXG4gIHwgWFRpbWVQaWNrZXJDb250cm9sT3B0aW9uXHJcbiAgfCBYRmluZENvbnRyb2xPcHRpb25cclxuICB8IFhUZW1wbGF0ZUNvbnRyb2xPcHRpb247XHJcblxyXG4vKipcclxuICogQHpoX0NOIOihqOWNleaOp+S7tue7hOS7tlxyXG4gKiBAZW5fVVMgRm9ybSBjb250cm9sIGNvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IHR5cGUgWEZvcm1Db250cm9sQ29tcG9uZW50ID1cclxuICB8IFhJbnB1dENvbXBvbmVudFxyXG4gIHwgWFNlbGVjdENvbXBvbmVudFxyXG4gIHwgWENhc2NhZGVDb21wb25lbnRcclxuICB8IFhDaGVja2JveENvbXBvbmVudFxyXG4gIHwgWENvbG9yUGlja2VyQ29tcG9uZW50XHJcbiAgfCBYRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gIHwgWElucHV0TnVtYmVyQ29tcG9uZW50XHJcbiAgfCBYUmFkaW9Db21wb25lbnRcclxuICB8IFhSYXRlQ29tcG9uZW50XHJcbiAgfCBYU2xpZGVyU2VsZWN0Q29tcG9uZW50XHJcbiAgfCBYU3dpdGNoQ29tcG9uZW50XHJcbiAgfCBYVGltZVBpY2tlckNvbXBvbmVudFxyXG4gIHwgWFRleHRhcmVhQ29tcG9uZW50XHJcbiAgfCBYRmluZENvbXBvbmVudFxyXG4gIHwgWEF1dG9Db21wbGV0ZUNvbXBvbmVudDtcclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g6KGo5Y2V5o6n5Lu257G75Z6LXHJcbiAqIEBlbl9VUyBGb3JtIGNvbnRyb2wgdHlwZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgWEZvcm1Db250cm9sVHlwZSA9XHJcbiAgfCBYSW5wdXRDb250cm9sXHJcbiAgfCBYU2VsZWN0Q29udHJvbFxyXG4gIHwgWENhc2NhZGVDb250cm9sXHJcbiAgfCBYQ2hlY2tib3hDb250cm9sXHJcbiAgfCBYQ29sb3JQaWNrZXJDb250cm9sXHJcbiAgfCBYRGF0ZVBpY2tlckNvbnRyb2xcclxuICB8IFhJbnB1dE51bWJlckNvbnRyb2xcclxuICB8IFhSYWRpb0NvbnRyb2xcclxuICB8IFhSYXRlQ29udHJvbFxyXG4gIHwgWFNsaWRlclNlbGVjdENvbnRyb2xcclxuICB8IFhTd2l0Y2hDb250cm9sXHJcbiAgfCBYVGltZVBpY2tlckNvbnRyb2xcclxuICB8IFhUZXh0YXJlYUNvbnRyb2xcclxuICB8IFhGaW5kQ29udHJvbFxyXG4gIHwgWEF1dG9Db21wbGV0ZUNvbnRyb2w7XHJcblxyXG4vKipcclxuICogQHpoX0NOIOihqOWNleaOp+S7tuexu+Wei1xyXG4gKiBAZW5fVVMgRm9ybSBjb250cm9sIHR5cGVcclxuICovXHJcbmV4cG9ydCB0eXBlIFhDb250cm9sVHlwZSA9XHJcbiAgfCAnaW5wdXQnXHJcbiAgfCAnc2VsZWN0J1xyXG4gIHwgJ2Nhc2NhZGUnXHJcbiAgfCAnY2hlY2tib3gnXHJcbiAgfCAnY29sb3ItcGlja2VyJ1xyXG4gIHwgJ2RhdGUtcGlja2VyJ1xyXG4gIHwgJ2lucHV0LW51bWJlcidcclxuICB8ICdyYWRpbydcclxuICB8ICdyYXRlJ1xyXG4gIHwgJ3NsaWRlci1zZWxlY3QnXHJcbiAgfCAnc3dpdGNoJ1xyXG4gIHwgJ3RpbWUtcGlja2VyJ1xyXG4gIHwgJ3RleHRhcmVhJ1xyXG4gIHwgJ2ZpbmQnXHJcbiAgfCAnYXV0by1jb21wbGV0ZSdcclxuICB8ICd0ZW1wbGF0ZSc7XHJcblxyXG4vKipcclxuICogSW5wdXQgQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYSW5wdXRDb250cm9sT3B0aW9uIGV4dGVuZHMgWENvbnRyb2xPcHRpb24sIFhJbnB1dE9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWElucHV0Q29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhJbnB1dENvbnRyb2xPcHRpb24gPSB7fSkge1xyXG4gICAgc3VwZXIob3B0aW9uKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZWxlY3QgQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYU2VsZWN0Q29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYU2VsZWN0T3B0aW9uIHt9XHJcbmV4cG9ydCBjbGFzcyBYU2VsZWN0Q29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhTZWxlY3RDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQ2FzY2FkZSBDb250cm9sXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhDYXNjYWRlQ29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYQ2FzY2FkZU9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWENhc2NhZGVDb250cm9sIGV4dGVuZHMgWENvbnRyb2wge1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbjogWENhc2NhZGVDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tib3ggQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYQ2hlY2tib3hDb250cm9sT3B0aW9uIGV4dGVuZHMgWENvbnRyb2xPcHRpb24sIFhDaGVja2JveE9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWENoZWNrYm94Q29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhDaGVja2JveENvbnRyb2xPcHRpb24gPSB7fSkge1xyXG4gICAgc3VwZXIob3B0aW9uKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xvclBpY2tlciBDb250cm9sXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhDb2xvclBpY2tlckNvbnRyb2xPcHRpb24gZXh0ZW5kcyBYQ29udHJvbE9wdGlvbiwgWENvbG9yUGlja2VyT3B0aW9uIHt9XHJcbmV4cG9ydCBjbGFzcyBYQ29sb3JQaWNrZXJDb250cm9sIGV4dGVuZHMgWENvbnRyb2wge1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbjogWENvbG9yUGlja2VyQ29udHJvbE9wdGlvbiA9IHt9KSB7XHJcbiAgICBzdXBlcihvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIERhdGVQaWNrZXIgQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYRGF0ZVBpY2tlckNvbnRyb2xPcHRpb24gZXh0ZW5kcyBYQ29udHJvbE9wdGlvbiwgWERhdGVQaWNrZXJPcHRpb24ge31cclxuZXhwb3J0IGNsYXNzIFhEYXRlUGlja2VyQ29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhEYXRlUGlja2VyQ29udHJvbE9wdGlvbiA9IHt9KSB7XHJcbiAgICBzdXBlcihvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIElucHV0TnVtYmVyIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWElucHV0TnVtYmVyQ29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYSW5wdXROdW1iZXJPcHRpb24ge31cclxuZXhwb3J0IGNsYXNzIFhJbnB1dE51bWJlckNvbnRyb2wgZXh0ZW5kcyBYQ29udHJvbCB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBYSW5wdXROdW1iZXJDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogUmFkaW8gQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYUmFkaW9Db250cm9sT3B0aW9uIGV4dGVuZHMgWENvbnRyb2xPcHRpb24sIFhSYWRpb09wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWFJhZGlvQ29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhSYWRpb0NvbnRyb2xPcHRpb24gPSB7fSkge1xyXG4gICAgc3VwZXIob3B0aW9uKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSYXRlIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFJhdGVDb250cm9sT3B0aW9uIGV4dGVuZHMgWENvbnRyb2xPcHRpb24sIFhSYXRlT3B0aW9uIHt9XHJcbmV4cG9ydCBjbGFzcyBYUmF0ZUNvbnRyb2wgZXh0ZW5kcyBYQ29udHJvbCB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBYUmF0ZUNvbnRyb2xPcHRpb24gPSB7fSkge1xyXG4gICAgc3VwZXIob3B0aW9uKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTbGlkZXJTZWxlY3QgQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYU2xpZGVyU2VsZWN0Q29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYU2xpZGVyU2VsZWN0T3B0aW9uIHt9XHJcbmV4cG9ydCBjbGFzcyBYU2xpZGVyU2VsZWN0Q29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhTbGlkZXJTZWxlY3RDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogU3dpdGNoIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFN3aXRjaENvbnRyb2xPcHRpb24gZXh0ZW5kcyBYQ29udHJvbE9wdGlvbiwgWFN3aXRjaE9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWFN3aXRjaENvbnRyb2wgZXh0ZW5kcyBYQ29udHJvbCB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBYU3dpdGNoQ29udHJvbE9wdGlvbiA9IHt9KSB7XHJcbiAgICBzdXBlcihvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFRpbWVQaWNrZXIgQ29udHJvbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYVGltZVBpY2tlckNvbnRyb2xPcHRpb24gZXh0ZW5kcyBYQ29udHJvbE9wdGlvbiwgWFRpbWVQaWNrZXJPcHRpb24ge31cclxuZXhwb3J0IGNsYXNzIFhUaW1lUGlja2VyQ29udHJvbCBleHRlbmRzIFhDb250cm9sIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb246IFhUaW1lUGlja2VyQ29udHJvbE9wdGlvbiA9IHt9KSB7XHJcbiAgICBzdXBlcihvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFRleHRhcmVhIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRleHRhcmVhQ29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYVGV4dGFyZWFPcHRpb24ge31cclxuZXhwb3J0IGNsYXNzIFhUZXh0YXJlYUNvbnRyb2wgZXh0ZW5kcyBYQ29udHJvbCB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBYVGV4dGFyZWFDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogRmluZCBDb250cm9sXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhGaW5kQ29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYRmluZE9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWEZpbmRDb250cm9sIGV4dGVuZHMgWENvbnRyb2wge1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbjogWEZpbmRDb250cm9sT3B0aW9uID0ge30pIHtcclxuICAgIHN1cGVyKG9wdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQXV0b0NvbXBsZXRlIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWEF1dG9Db21wbGV0ZUNvbnRyb2xPcHRpb24gZXh0ZW5kcyBYQ29udHJvbE9wdGlvbiwgWEF1dG9Db21wbGV0ZU9wdGlvbiB7fVxyXG5leHBvcnQgY2xhc3MgWEF1dG9Db21wbGV0ZUNvbnRyb2wgZXh0ZW5kcyBYQ29udHJvbCB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBYQXV0b0NvbXBsZXRlQ29udHJvbE9wdGlvbiA9IHt9KSB7XHJcbiAgICBzdXBlcihvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFRlbXBsYXRlIENvbnRyb2xcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRlbXBsYXRlQ29udHJvbE9wdGlvbiBleHRlbmRzIFhDb250cm9sT3B0aW9uLCBYRm9ybU9wdGlvbiB7fVxyXG4iXX0=