@koobiq/components 17.0.0-rc.8 → 17.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 (651) hide show
  1. package/README.md +1 -2
  2. package/alert/_alert-theme.scss +0 -1
  3. package/alert/alert.component.d.ts +3 -1
  4. package/alert/alert.component.scss +14 -14
  5. package/alert/public-api.d.ts +1 -1
  6. package/autocomplete/_autocomplete-theme.scss +0 -1
  7. package/autocomplete/autocomplete.scss +3 -6
  8. package/autocomplete/public-api.d.ts +2 -2
  9. package/badge/_badge-theme.scss +1 -2
  10. package/badge/badge.component.scss +0 -1
  11. package/badge/public-api.d.ts +1 -1
  12. package/button/_button-base.scss +0 -1
  13. package/button/_button-theme.scss +5 -3
  14. package/button/button.component.d.ts +2 -2
  15. package/button/button.scss +0 -1
  16. package/button/public-api.d.ts +1 -1
  17. package/button-toggle/_button-toggle-theme.scss +2 -3
  18. package/button-toggle/button-toggle.scss +2 -9
  19. package/button-toggle/public-api.d.ts +1 -1
  20. package/card/_card-theme.scss +0 -1
  21. package/card/card.component.d.ts +1 -1
  22. package/card/card.component.scss +1 -2
  23. package/card/public-api.d.ts +1 -1
  24. package/checkbox/_checkbox-theme.scss +10 -11
  25. package/checkbox/checkbox.scss +13 -19
  26. package/code-block/README.md +17 -14
  27. package/code-block/_code-block-theme.scss +23 -16
  28. package/code-block/actionbar.component.scss +4 -7
  29. package/code-block/code-block.component.d.ts +2 -2
  30. package/code-block/code-block.scss +8 -14
  31. package/code-block/public-api.d.ts +1 -1
  32. package/core/animation/index.d.ts +1 -1
  33. package/core/common-behaviors/index.d.ts +3 -3
  34. package/core/datetime/index.d.ts +1 -1
  35. package/core/formatters/index.d.ts +1 -1
  36. package/core/forms/_forms-theme.scss +0 -1
  37. package/core/forms/_forms.scss +0 -1
  38. package/core/forms/index.d.ts +1 -1
  39. package/core/locales/index.d.ts +1 -1
  40. package/core/option/_optgroup-theme.scss +0 -1
  41. package/core/option/_option-action-theme.scss +0 -1
  42. package/core/option/_option-theme.scss +0 -1
  43. package/core/option/action.scss +4 -2
  44. package/core/option/index.d.ts +2 -2
  45. package/core/option/optgroup.scss +2 -3
  46. package/core/option/option.scss +0 -1
  47. package/core/pop-up/_pop-up.scss +0 -1
  48. package/core/pop-up/pop-up-trigger.d.ts +3 -3
  49. package/core/public-api.d.ts +3 -3
  50. package/core/select/constants.d.ts +1 -1
  51. package/core/select/index.d.ts +3 -3
  52. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +1 -2
  53. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +0 -1
  54. package/core/services/theme.service.d.ts +3 -2
  55. package/core/styles/_core.scss +0 -1
  56. package/core/styles/_koobiq-theme.scss +5 -3
  57. package/core/styles/common/_animation.scss +11 -10
  58. package/core/styles/common/_button.scss +0 -2
  59. package/core/styles/common/_clearfix.scss +1 -1
  60. package/core/styles/common/_groups.scss +0 -4
  61. package/core/styles/common/_list.scss +23 -61
  62. package/core/styles/common/_overlay.scss +4 -3
  63. package/core/styles/common/_popup.scss +0 -1
  64. package/core/styles/common/_rtl.scss +4 -4
  65. package/core/styles/common/_select.scss +37 -26
  66. package/core/styles/common/_tokens.scss +0 -2
  67. package/core/styles/functions/_number.scss +14 -19
  68. package/core/styles/functions/_string.scss +18 -19
  69. package/core/styles/functions/_timing.scss +24 -24
  70. package/core/styles/theming/_components-theming.scss +1120 -1208
  71. package/core/styles/theming/_scrollbar-theme.scss +8 -5
  72. package/core/styles/theming/_theming.scss +22 -20
  73. package/core/styles/typography/_typography-utils.scss +9 -3
  74. package/core/styles/typography/_typography.scss +114 -94
  75. package/core/styles/visual/_body.scss +0 -2
  76. package/core/styles/visual/_layout.scss +30 -22
  77. package/core/utils/data-size/index.d.ts +1 -1
  78. package/core/utils/public-api.d.ts +1 -1
  79. package/datepicker/_datepicker-theme.scss +21 -8
  80. package/datepicker/calendar-body.scss +0 -3
  81. package/datepicker/calendar-header.scss +0 -1
  82. package/datepicker/calendar.scss +1 -2
  83. package/datepicker/datepicker-content.scss +1 -3
  84. package/datepicker/datepicker-input.directive.d.ts +1 -0
  85. package/datepicker/datepicker-input.scss +0 -1
  86. package/datepicker/datepicker-toggle.scss +0 -1
  87. package/datepicker/datepicker.component.d.ts +2 -2
  88. package/datepicker/public-api.d.ts +4 -4
  89. package/divider/_divider-theme.scss +0 -1
  90. package/divider/divider.scss +0 -1
  91. package/dl/_dl-theme.scss +0 -2
  92. package/dl/dl.scss +0 -1
  93. package/dl/public-api.d.ts +1 -1
  94. package/dropdown/_dropdown-theme.scss +4 -2
  95. package/dropdown/dropdown-content.directive.d.ts +1 -1
  96. package/dropdown/dropdown-item.component.d.ts +1 -1
  97. package/dropdown/dropdown-item.scss +9 -7
  98. package/dropdown/dropdown.component.d.ts +1 -1
  99. package/dropdown/dropdown.scss +0 -1
  100. package/dropdown/public-api.d.ts +5 -5
  101. package/ellipsis-center/ellipsis-center.directive.d.ts +1 -1
  102. package/empty-state/README.md +0 -0
  103. package/empty-state/_empty-state-theme.scss +56 -0
  104. package/empty-state/empty-state.component.d.ts +31 -0
  105. package/empty-state/empty-state.module.d.ts +10 -0
  106. package/empty-state/empty-state.scss +81 -0
  107. package/empty-state/index.d.ts +1 -0
  108. package/empty-state/public-api.d.ts +2 -0
  109. package/esm2022/alert/alert.component.mjs +7 -3
  110. package/esm2022/alert/alert.module.mjs +1 -1
  111. package/esm2022/alert/public-api.mjs +2 -2
  112. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +1 -1
  113. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +25 -42
  114. package/esm2022/autocomplete/autocomplete.component.mjs +14 -9
  115. package/esm2022/autocomplete/autocomplete.module.mjs +3 -3
  116. package/esm2022/autocomplete/public-api.mjs +3 -3
  117. package/esm2022/badge/badge.component.mjs +8 -6
  118. package/esm2022/badge/badge.module.mjs +1 -1
  119. package/esm2022/badge/public-api.mjs +2 -2
  120. package/esm2022/button/button.component.mjs +12 -9
  121. package/esm2022/button/button.module.mjs +1 -1
  122. package/esm2022/button/public-api.mjs +2 -2
  123. package/esm2022/button-toggle/button-toggle.component.mjs +26 -20
  124. package/esm2022/button-toggle/button-toggle.module.mjs +1 -1
  125. package/esm2022/button-toggle/public-api.mjs +2 -2
  126. package/esm2022/card/card.component.mjs +4 -5
  127. package/esm2022/card/card.module.mjs +1 -1
  128. package/esm2022/card/public-api.mjs +2 -2
  129. package/esm2022/checkbox/checkbox-config.mjs +1 -1
  130. package/esm2022/checkbox/checkbox-module.mjs +1 -1
  131. package/esm2022/checkbox/checkbox-required-validator.mjs +1 -1
  132. package/esm2022/checkbox/checkbox.mjs +6 -8
  133. package/esm2022/checkbox/public-api.mjs +1 -1
  134. package/esm2022/code-block/actionbar.component.mjs +4 -6
  135. package/esm2022/code-block/code-block.component.mjs +17 -19
  136. package/esm2022/code-block/code-block.module.mjs +9 -5
  137. package/esm2022/code-block/public-api.mjs +2 -2
  138. package/esm2022/core/animation/fade-animations.mjs +1 -1
  139. package/esm2022/core/animation/index.mjs +2 -2
  140. package/esm2022/core/animation/select-animations.mjs +2 -2
  141. package/esm2022/core/common-behaviors/color.mjs +4 -2
  142. package/esm2022/core/common-behaviors/common-module.mjs +2 -5
  143. package/esm2022/core/common-behaviors/constructor.mjs +1 -1
  144. package/esm2022/core/common-behaviors/disabled.mjs +2 -2
  145. package/esm2022/core/common-behaviors/error-state.mjs +1 -1
  146. package/esm2022/core/common-behaviors/index.mjs +4 -4
  147. package/esm2022/core/common-behaviors/tabindex.mjs +1 -1
  148. package/esm2022/core/datetime/date-adapter.mjs +1 -2
  149. package/esm2022/core/datetime/date-formats.mjs +1 -1
  150. package/esm2022/core/datetime/index.mjs +2 -2
  151. package/esm2022/core/error/error-options.mjs +1 -1
  152. package/esm2022/core/form-field/form-field-ref.mjs +1 -1
  153. package/esm2022/core/formatters/date/formatter.mjs +1 -1
  154. package/esm2022/core/formatters/date/formatter.pipe.mjs +1 -1
  155. package/esm2022/core/formatters/index.mjs +2 -2
  156. package/esm2022/core/formatters/number/formatter.mjs +19 -24
  157. package/esm2022/core/forms/forms-module.mjs +1 -1
  158. package/esm2022/core/forms/forms.directive.mjs +1 -1
  159. package/esm2022/core/forms/index.mjs +2 -2
  160. package/esm2022/core/highlight/highlight.pipe.mjs +1 -1
  161. package/esm2022/core/highlight/index.mjs +1 -1
  162. package/esm2022/core/label/label-options.mjs +1 -1
  163. package/esm2022/core/line/line.mjs +2 -2
  164. package/esm2022/core/locales/en-US.mjs +1 -1
  165. package/esm2022/core/locales/es-LA.mjs +1 -1
  166. package/esm2022/core/locales/fa-IR.mjs +1 -1
  167. package/esm2022/core/locales/formatters.mjs +1 -3
  168. package/esm2022/core/locales/index.mjs +2 -2
  169. package/esm2022/core/locales/locale-service.mjs +8 -5
  170. package/esm2022/core/locales/locale-service.module.mjs +1 -1
  171. package/esm2022/core/locales/pt-BR.mjs +1 -1
  172. package/esm2022/core/locales/ru-RU.mjs +3 -3
  173. package/esm2022/core/locales/zh-CN.mjs +1 -1
  174. package/esm2022/core/option/action.mjs +22 -14
  175. package/esm2022/core/option/index.mjs +3 -3
  176. package/esm2022/core/option/optgroup.mjs +4 -5
  177. package/esm2022/core/option/option-module.mjs +1 -1
  178. package/esm2022/core/option/option.mjs +13 -10
  179. package/esm2022/core/overlay/overlay-position-map.mjs +1 -1
  180. package/esm2022/core/pop-up/pop-up-trigger.mjs +14 -24
  181. package/esm2022/core/pop-up/pop-up.mjs +1 -2
  182. package/esm2022/core/public-api.mjs +4 -4
  183. package/esm2022/core/select/common.mjs +2 -5
  184. package/esm2022/core/select/constants.mjs +1 -2
  185. package/esm2022/core/select/index.mjs +4 -4
  186. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  187. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +1 -1
  188. package/esm2022/core/services/measure-scrollbar.service.mjs +1 -2
  189. package/esm2022/core/services/theme.service.mjs +5 -4
  190. package/esm2022/core/title/title-text-ref.mjs +1 -1
  191. package/esm2022/core/utils/data-size/config.mjs +1 -1
  192. package/esm2022/core/utils/data-size/data-size.pipe.mjs +2 -3
  193. package/esm2022/core/utils/data-size/index.mjs +2 -2
  194. package/esm2022/core/utils/data-size/size.mjs +3 -6
  195. package/esm2022/core/utils/public-api.mjs +2 -2
  196. package/esm2022/core/utils/utils.mjs +4 -2
  197. package/esm2022/core/validation/validation.mjs +4 -2
  198. package/esm2022/core/version.mjs +2 -2
  199. package/esm2022/datepicker/calendar-body.component.mjs +3 -5
  200. package/esm2022/datepicker/calendar-header.component.mjs +8 -8
  201. package/esm2022/datepicker/calendar.component.mjs +6 -6
  202. package/esm2022/datepicker/datepicker-animations.mjs +1 -1
  203. package/esm2022/datepicker/datepicker-errors.mjs +1 -1
  204. package/esm2022/datepicker/datepicker-input.directive.mjs +47 -49
  205. package/esm2022/datepicker/datepicker-intl.mjs +1 -1
  206. package/esm2022/datepicker/datepicker-module.mjs +2 -2
  207. package/esm2022/datepicker/datepicker-toggle.component.mjs +11 -10
  208. package/esm2022/datepicker/datepicker.component.mjs +15 -18
  209. package/esm2022/datepicker/month-view.component.mjs +14 -14
  210. package/esm2022/datepicker/public-api.mjs +5 -5
  211. package/esm2022/divider/divider.component.mjs +1 -1
  212. package/esm2022/divider/divider.module.mjs +1 -1
  213. package/esm2022/dl/dl.component.mjs +7 -7
  214. package/esm2022/dl/dl.module.mjs +2 -2
  215. package/esm2022/dl/public-api.mjs +2 -2
  216. package/esm2022/dropdown/dropdown-animations.mjs +2 -2
  217. package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
  218. package/esm2022/dropdown/dropdown-item.component.mjs +5 -8
  219. package/esm2022/dropdown/dropdown-trigger.directive.mjs +24 -33
  220. package/esm2022/dropdown/dropdown.component.mjs +10 -19
  221. package/esm2022/dropdown/dropdown.module.mjs +1 -1
  222. package/esm2022/dropdown/dropdown.types.mjs +1 -2
  223. package/esm2022/dropdown/public-api.mjs +6 -6
  224. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +6 -5
  225. package/esm2022/empty-state/empty-state.component.mjs +104 -0
  226. package/esm2022/empty-state/empty-state.module.mjs +50 -0
  227. package/esm2022/empty-state/index.mjs +2 -0
  228. package/esm2022/empty-state/koobiq-components-empty-state.mjs +5 -0
  229. package/esm2022/empty-state/public-api.mjs +3 -0
  230. package/esm2022/file-upload/file-drop.mjs +3 -2
  231. package/esm2022/file-upload/file-upload.mjs +1 -1
  232. package/esm2022/file-upload/file-upload.module.mjs +2 -2
  233. package/esm2022/file-upload/index.mjs +1 -1
  234. package/esm2022/file-upload/multiple-file-upload.component.mjs +16 -14
  235. package/esm2022/file-upload/public-api.mjs +2 -2
  236. package/esm2022/file-upload/single-file-upload.component.mjs +14 -12
  237. package/esm2022/form-field/cleaner.mjs +13 -3
  238. package/esm2022/form-field/form-field-control.mjs +1 -2
  239. package/esm2022/form-field/form-field-errors.mjs +1 -1
  240. package/esm2022/form-field/form-field.mjs +8 -15
  241. package/esm2022/form-field/form-field.module.mjs +1 -1
  242. package/esm2022/form-field/hint.mjs +6 -6
  243. package/esm2022/form-field/password-hint.mjs +15 -15
  244. package/esm2022/form-field/password-toggle.mjs +4 -7
  245. package/esm2022/form-field/prefix.mjs +1 -1
  246. package/esm2022/form-field/public-api.mjs +4 -4
  247. package/esm2022/form-field/stepper.mjs +33 -29
  248. package/esm2022/form-field/suffix.mjs +1 -1
  249. package/esm2022/form-field/validate.directive.mjs +6 -7
  250. package/esm2022/icon/icon-button.component.mjs +4 -4
  251. package/esm2022/icon/icon-item.component.mjs +3 -3
  252. package/esm2022/icon/icon.component.mjs +5 -6
  253. package/esm2022/icon/icon.module.mjs +1 -1
  254. package/esm2022/icon/public-api.mjs +3 -3
  255. package/esm2022/input/input-number-validators.mjs +1 -1
  256. package/esm2022/input/input-number.mjs +29 -41
  257. package/esm2022/input/input-password.mjs +13 -8
  258. package/esm2022/input/input-value-accessor.mjs +1 -1
  259. package/esm2022/input/input.mjs +13 -10
  260. package/esm2022/input/input.module.mjs +1 -1
  261. package/esm2022/input/public-api.mjs +3 -3
  262. package/esm2022/link/link.component.mjs +2 -2
  263. package/esm2022/link/link.module.mjs +1 -1
  264. package/esm2022/link/public-api.mjs +2 -2
  265. package/esm2022/list/list-selection.component.mjs +36 -41
  266. package/esm2022/list/list.component.mjs +5 -6
  267. package/esm2022/list/list.module.mjs +2 -2
  268. package/esm2022/list/public-api.mjs +3 -3
  269. package/esm2022/loader-overlay/loader-overlay.component.mjs +3 -3
  270. package/esm2022/loader-overlay/loader-overlay.module.mjs +1 -1
  271. package/esm2022/loader-overlay/public-api.mjs +2 -2
  272. package/esm2022/markdown/markdown.component.mjs +20 -6
  273. package/esm2022/markdown/markdown.module.mjs +1 -1
  274. package/esm2022/markdown/markdown.service.mjs +1 -1
  275. package/esm2022/modal/css-unit.pipe.mjs +1 -1
  276. package/esm2022/modal/modal-control.service.mjs +6 -2
  277. package/esm2022/modal/modal-ref.class.mjs +1 -2
  278. package/esm2022/modal/modal-util.mjs +1 -1
  279. package/esm2022/modal/modal.component.mjs +60 -33
  280. package/esm2022/modal/modal.directive.mjs +27 -11
  281. package/esm2022/modal/modal.module.mjs +2 -2
  282. package/esm2022/modal/modal.service.mjs +3 -6
  283. package/esm2022/modal/modal.type.mjs +1 -1
  284. package/esm2022/modal/public-api.mjs +3 -3
  285. package/esm2022/navbar/index.mjs +1 -1
  286. package/esm2022/navbar/navbar-item.component.mjs +41 -33
  287. package/esm2022/navbar/navbar.component.mjs +19 -29
  288. package/esm2022/navbar/navbar.module.mjs +2 -2
  289. package/esm2022/navbar/public-api.mjs +3 -3
  290. package/esm2022/navbar/vertical-navbar.component.mjs +21 -23
  291. package/esm2022/popover/popover-animations.mjs +1 -1
  292. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  293. package/esm2022/popover/popover.component.mjs +5 -5
  294. package/esm2022/popover/popover.module.mjs +1 -1
  295. package/esm2022/popover/public-api.mjs +3 -3
  296. package/esm2022/progress-bar/progress-bar.component.mjs +4 -4
  297. package/esm2022/progress-bar/progress-bar.module.mjs +2 -2
  298. package/esm2022/progress-bar/public-api.mjs +2 -2
  299. package/esm2022/progress-spinner/progress-spinner.component.mjs +4 -4
  300. package/esm2022/progress-spinner/progress-spinner.module.mjs +1 -1
  301. package/esm2022/progress-spinner/public-api.mjs +2 -2
  302. package/esm2022/radio/public-api.mjs +2 -2
  303. package/esm2022/radio/radio.component.mjs +9 -14
  304. package/esm2022/radio/radio.module.mjs +1 -1
  305. package/esm2022/risk-level/public-api.mjs +2 -2
  306. package/esm2022/risk-level/risk-level.component.mjs +3 -3
  307. package/esm2022/risk-level/risk-level.module.mjs +1 -1
  308. package/esm2022/scrollbar/public-api.mjs +2 -2
  309. package/esm2022/scrollbar/scrollbar.component.mjs +19 -21
  310. package/esm2022/scrollbar/scrollbar.directive.mjs +4 -5
  311. package/esm2022/scrollbar/scrollbar.module.mjs +2 -2
  312. package/esm2022/scrollbar/scrollbar.types.mjs +3 -2
  313. package/esm2022/select/public-api.mjs +3 -3
  314. package/esm2022/select/select-option.directive.mjs +8 -5
  315. package/esm2022/select/select.component.mjs +45 -71
  316. package/esm2022/select/select.module.mjs +1 -1
  317. package/esm2022/sidebar/public-api.mjs +2 -2
  318. package/esm2022/sidebar/sidebar-animations.mjs +1 -1
  319. package/esm2022/sidebar/sidebar.component.mjs +5 -7
  320. package/esm2022/sidebar/sidebar.module.mjs +1 -1
  321. package/esm2022/sidepanel/public-api.mjs +4 -4
  322. package/esm2022/sidepanel/sidepanel-animations.mjs +7 -4
  323. package/esm2022/sidepanel/sidepanel-config.mjs +1 -1
  324. package/esm2022/sidepanel/sidepanel-container.component.mjs +4 -4
  325. package/esm2022/sidepanel/sidepanel-directives.mjs +33 -20
  326. package/esm2022/sidepanel/sidepanel-ref.mjs +10 -5
  327. package/esm2022/sidepanel/sidepanel.module.mjs +1 -1
  328. package/esm2022/sidepanel/sidepanel.service.mjs +11 -15
  329. package/esm2022/splitter/public-api.mjs +2 -2
  330. package/esm2022/splitter/splitter.component.mjs +13 -24
  331. package/esm2022/splitter/splitter.module.mjs +1 -1
  332. package/esm2022/table/public-api.mjs +2 -2
  333. package/esm2022/table/table.component.mjs +3 -3
  334. package/esm2022/table/table.module.mjs +1 -1
  335. package/esm2022/tabs/paginated-tab-header.mjs +9 -14
  336. package/esm2022/tabs/public-api.mjs +6 -6
  337. package/esm2022/tabs/tab-body.component.mjs +10 -11
  338. package/esm2022/tabs/tab-content.directive.mjs +1 -1
  339. package/esm2022/tabs/tab-group.component.mjs +11 -13
  340. package/esm2022/tabs/tab-header.component.mjs +4 -4
  341. package/esm2022/tabs/tab-label-wrapper.directive.mjs +1 -1
  342. package/esm2022/tabs/tab-label.directive.mjs +1 -1
  343. package/esm2022/tabs/tab-nav-bar/index.mjs +1 -1
  344. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +46 -49
  345. package/esm2022/tabs/tab.component.mjs +7 -10
  346. package/esm2022/tabs/tabs-animations.mjs +1 -1
  347. package/esm2022/tabs/tabs.module.mjs +2 -2
  348. package/esm2022/tags/public-api.mjs +5 -5
  349. package/esm2022/tags/tag-default-options.mjs +1 -1
  350. package/esm2022/tags/tag-input.mjs +12 -16
  351. package/esm2022/tags/tag-list.component.mjs +15 -27
  352. package/esm2022/tags/tag-text-control.mjs +1 -1
  353. package/esm2022/tags/tag.component.mjs +5 -8
  354. package/esm2022/tags/tag.module.mjs +9 -7
  355. package/esm2022/textarea/index.mjs +1 -1
  356. package/esm2022/textarea/textarea.component.mjs +4 -7
  357. package/esm2022/textarea/textarea.module.mjs +1 -1
  358. package/esm2022/timepicker/public-api.mjs +2 -2
  359. package/esm2022/timepicker/timepicker.constants.mjs +6 -2
  360. package/esm2022/timepicker/timepicker.directive.mjs +62 -31
  361. package/esm2022/timepicker/timepicker.module.mjs +1 -1
  362. package/esm2022/timezone/cities-by-filter.pipe.mjs +1 -1
  363. package/esm2022/timezone/timezone-option.component.mjs +12 -11
  364. package/esm2022/timezone/timezone-option.directive.mjs +3 -3
  365. package/esm2022/timezone/timezone-select.component.mjs +5 -5
  366. package/esm2022/timezone/timezone.models.mjs +1 -2
  367. package/esm2022/timezone/timezone.module.mjs +1 -1
  368. package/esm2022/timezone/timezone.utils.mjs +5 -9
  369. package/esm2022/timezone/utc-offset.pipe.mjs +1 -1
  370. package/esm2022/title/public-api.mjs +2 -2
  371. package/esm2022/title/title.directive.mjs +9 -5
  372. package/esm2022/title/title.module.mjs +1 -1
  373. package/esm2022/toast/public-api.mjs +4 -4
  374. package/esm2022/toast/toast-animations.mjs +2 -2
  375. package/esm2022/toast/toast-container.component.mjs +5 -6
  376. package/esm2022/toast/toast.component.mjs +6 -6
  377. package/esm2022/toast/toast.module.mjs +1 -1
  378. package/esm2022/toast/toast.service.mjs +18 -30
  379. package/esm2022/toast/toast.type.mjs +1 -1
  380. package/esm2022/toggle/public-api.mjs +2 -2
  381. package/esm2022/toggle/toggle.component.mjs +17 -11
  382. package/esm2022/toggle/toggle.module.mjs +1 -1
  383. package/esm2022/tooltip/public-api.mjs +2 -2
  384. package/esm2022/tooltip/tooltip.animations.mjs +1 -1
  385. package/esm2022/tooltip/tooltip.component.mjs +7 -7
  386. package/esm2022/tooltip/tooltip.module.mjs +2 -2
  387. package/esm2022/tree/control/base-tree-control.mjs +1 -2
  388. package/esm2022/tree/control/flat-tree-control.filters.mjs +4 -7
  389. package/esm2022/tree/control/flat-tree-control.mjs +4 -7
  390. package/esm2022/tree/control/nested-tree-control.mjs +1 -2
  391. package/esm2022/tree/control/tree-control.mjs +1 -1
  392. package/esm2022/tree/data-source/flat-data-source.mjs +3 -8
  393. package/esm2022/tree/data-source/nested-data-source.mjs +2 -4
  394. package/esm2022/tree/node.mjs +1 -1
  395. package/esm2022/tree/outlet.mjs +1 -1
  396. package/esm2022/tree/padding.directive.mjs +4 -5
  397. package/esm2022/tree/public-api.mjs +11 -11
  398. package/esm2022/tree/toggle.mjs +8 -5
  399. package/esm2022/tree/tree-base.mjs +3 -7
  400. package/esm2022/tree/tree-errors.mjs +1 -1
  401. package/esm2022/tree/tree-option.component.mjs +9 -13
  402. package/esm2022/tree/tree-selection.component.mjs +20 -36
  403. package/esm2022/tree/tree.mjs +7 -3
  404. package/esm2022/tree/tree.module.mjs +2 -3
  405. package/esm2022/tree-select/public-api.mjs +2 -2
  406. package/esm2022/tree-select/tree-select.component.mjs +59 -72
  407. package/esm2022/tree-select/tree-select.module.mjs +1 -1
  408. package/fesm2022/koobiq-components-alert.mjs +10 -6
  409. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  410. package/fesm2022/koobiq-components-autocomplete.mjs +60 -72
  411. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  412. package/fesm2022/koobiq-components-badge.mjs +10 -8
  413. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  414. package/fesm2022/koobiq-components-button-toggle.mjs +30 -24
  415. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  416. package/fesm2022/koobiq-components-button.mjs +14 -11
  417. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  418. package/fesm2022/koobiq-components-card.mjs +4 -5
  419. package/fesm2022/koobiq-components-card.mjs.map +1 -1
  420. package/fesm2022/koobiq-components-checkbox.mjs +3 -5
  421. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  422. package/fesm2022/koobiq-components-code-block.mjs +34 -34
  423. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  424. package/fesm2022/koobiq-components-core.mjs +325 -336
  425. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  426. package/fesm2022/koobiq-components-datepicker.mjs +105 -111
  427. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  428. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  429. package/fesm2022/koobiq-components-dl.mjs +9 -9
  430. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  431. package/fesm2022/koobiq-components-dropdown.mjs +125 -147
  432. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  433. package/fesm2022/koobiq-components-ellipsis-center.mjs +3 -2
  434. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  435. package/fesm2022/koobiq-components-empty-state.mjs +157 -0
  436. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -0
  437. package/fesm2022/koobiq-components-file-upload.mjs +46 -41
  438. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  439. package/fesm2022/koobiq-components-form-field.mjs +75 -73
  440. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  441. package/fesm2022/koobiq-components-icon.mjs +9 -10
  442. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  443. package/fesm2022/koobiq-components-input.mjs +56 -60
  444. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  445. package/fesm2022/koobiq-components-link.mjs +1 -1
  446. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  447. package/fesm2022/koobiq-components-list.mjs +43 -49
  448. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  449. package/fesm2022/koobiq-components-loader-overlay.mjs +6 -6
  450. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  451. package/fesm2022/koobiq-components-markdown.mjs +18 -4
  452. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  453. package/fesm2022/koobiq-components-modal.mjs +96 -54
  454. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  455. package/fesm2022/koobiq-components-navbar.mjs +82 -86
  456. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  457. package/fesm2022/koobiq-components-popover.mjs +12 -12
  458. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  459. package/fesm2022/koobiq-components-progress-bar.mjs +5 -5
  460. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  461. package/fesm2022/koobiq-components-progress-spinner.mjs +5 -5
  462. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  463. package/fesm2022/koobiq-components-radio.mjs +11 -16
  464. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  465. package/fesm2022/koobiq-components-risk-level.mjs +4 -4
  466. package/fesm2022/koobiq-components-risk-level.mjs.map +1 -1
  467. package/fesm2022/koobiq-components-scrollbar.mjs +22 -24
  468. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  469. package/fesm2022/koobiq-components-select.mjs +55 -78
  470. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  471. package/fesm2022/koobiq-components-sidebar.mjs +5 -7
  472. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  473. package/fesm2022/koobiq-components-sidepanel.mjs +110 -93
  474. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  475. package/fesm2022/koobiq-components-splitter.mjs +15 -26
  476. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  477. package/fesm2022/koobiq-components-table.mjs +5 -5
  478. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  479. package/fesm2022/koobiq-components-tabs.mjs +85 -98
  480. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  481. package/fesm2022/koobiq-components-tags.mjs +39 -56
  482. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  483. package/fesm2022/koobiq-components-textarea.mjs +2 -5
  484. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  485. package/fesm2022/koobiq-components-timepicker.mjs +69 -34
  486. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  487. package/fesm2022/koobiq-components-timezone.mjs +16 -21
  488. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  489. package/fesm2022/koobiq-components-title.mjs +11 -7
  490. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  491. package/fesm2022/koobiq-components-toast.mjs +74 -87
  492. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  493. package/fesm2022/koobiq-components-toggle.mjs +17 -11
  494. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  495. package/fesm2022/koobiq-components-tooltip.mjs +10 -10
  496. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  497. package/fesm2022/koobiq-components-tree-select.mjs +67 -80
  498. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  499. package/fesm2022/koobiq-components-tree.mjs +509 -541
  500. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  501. package/file-upload/_file-upload-theme.scss +28 -18
  502. package/file-upload/file-upload.scss +0 -1
  503. package/file-upload/multiple-file-upload.component.d.ts +2 -2
  504. package/file-upload/multiple-file-upload.component.scss +17 -27
  505. package/file-upload/public-api.d.ts +1 -1
  506. package/file-upload/single-file-upload.component.d.ts +2 -2
  507. package/file-upload/single-file-upload.component.scss +1 -7
  508. package/form-field/_form-field-theme.scss +24 -12
  509. package/form-field/_hint-theme.scss +0 -2
  510. package/form-field/cleaner.scss +0 -1
  511. package/form-field/form-field.scss +12 -14
  512. package/form-field/hint.scss +0 -1
  513. package/form-field/password-toggle.scss +0 -1
  514. package/form-field/public-api.d.ts +3 -3
  515. package/form-field/stepper.scss +0 -1
  516. package/icon/_icon-button-theme.scss +18 -7
  517. package/icon/_icon-theme.scss +0 -1
  518. package/icon/icon-button.scss +2 -5
  519. package/icon/icon-item.scss +2 -5
  520. package/icon/icon.scss +0 -1
  521. package/icon/public-api.d.ts +2 -2
  522. package/input/_input-theme.scss +0 -1
  523. package/input/input.scss +9 -9
  524. package/input/public-api.d.ts +2 -2
  525. package/link/_link-theme.scss +12 -18
  526. package/link/link.component.d.ts +1 -1
  527. package/link/public-api.d.ts +1 -1
  528. package/list/_list-theme.scss +0 -1
  529. package/list/list-selection.component.d.ts +3 -3
  530. package/list/list.scss +1 -3
  531. package/list/public-api.d.ts +2 -2
  532. package/loader-overlay/_loader-overlay-theme.scss +6 -4
  533. package/loader-overlay/loader-overlay.scss +0 -1
  534. package/loader-overlay/public-api.d.ts +1 -1
  535. package/markdown/_markdown-theme.scss +11 -8
  536. package/markdown/markdown.scss +3 -3
  537. package/modal/README.md +4 -3
  538. package/modal/_modal-animation.scss +0 -1
  539. package/modal/_modal-confirm.scss +0 -1
  540. package/modal/_modal-theme.scss +8 -9
  541. package/modal/modal.directive.d.ts +3 -3
  542. package/modal/modal.scss +9 -15
  543. package/modal/modal.type.d.ts +2 -2
  544. package/modal/public-api.d.ts +2 -2
  545. package/navbar/README.md +21 -20
  546. package/navbar/_navbar-item_horizontal.scss +31 -24
  547. package/navbar/_navbar-item_vertical.scss +0 -3
  548. package/navbar/_navbar-theme.scss +3 -6
  549. package/navbar/navbar-brand.scss +0 -1
  550. package/navbar/navbar-divider.scss +0 -1
  551. package/navbar/navbar-item.component.d.ts +1 -1
  552. package/navbar/navbar-item.scss +9 -2
  553. package/navbar/navbar.scss +0 -1
  554. package/navbar/public-api.d.ts +2 -2
  555. package/navbar/vertical-navbar.scss +0 -1
  556. package/package.json +12 -6
  557. package/popover/README.md +17 -14
  558. package/popover/_popover-theme.scss +0 -1
  559. package/popover/popover.component.d.ts +1 -1
  560. package/popover/popover.scss +5 -13
  561. package/popover/public-api.d.ts +2 -2
  562. package/prebuilt-themes/dark-theme.css +1 -1
  563. package/prebuilt-themes/light-theme.css +1 -1
  564. package/progress-bar/_progress-bar-theme.scss +0 -1
  565. package/progress-bar/progress-bar.scss +0 -1
  566. package/progress-bar/public-api.d.ts +1 -1
  567. package/progress-spinner/_progress-spinner-theme.scss +0 -1
  568. package/progress-spinner/progress-spinner.scss +0 -1
  569. package/progress-spinner/public-api.d.ts +1 -1
  570. package/radio/_radio-theme.scss +13 -5
  571. package/radio/public-api.d.ts +1 -1
  572. package/radio/radio.scss +20 -6
  573. package/risk-level/_risk-level-theme.scss +0 -1
  574. package/risk-level/public-api.d.ts +1 -1
  575. package/risk-level/risk-level.component.scss +1 -4
  576. package/schematics/ng-add/index.js +4 -4
  577. package/scrollbar/_scrollbar-component-theme.scss +2 -3
  578. package/scrollbar/public-api.d.ts +1 -1
  579. package/scrollbar/scrollbar.component.scss +56 -44
  580. package/scrollbar/scrollbar.directive.d.ts +1 -1
  581. package/scrollbar/scrollbar.types.d.ts +1 -1
  582. package/select/_select-theme.scss +0 -1
  583. package/select/public-api.d.ts +2 -2
  584. package/select/select.component.d.ts +4 -1
  585. package/select/select.scss +0 -1
  586. package/sidebar/public-api.d.ts +1 -1
  587. package/sidepanel/_sidepanel-theme.scss +0 -1
  588. package/sidepanel/public-api.d.ts +3 -3
  589. package/sidepanel/sidepanel.scss +6 -12
  590. package/splitter/_splitter-theme.scss +0 -1
  591. package/splitter/public-api.d.ts +1 -1
  592. package/splitter/splitter.component.d.ts +2 -2
  593. package/splitter/splitter.scss +0 -1
  594. package/table/_table-theme.scss +7 -7
  595. package/table/public-api.d.ts +1 -1
  596. package/table/table.scss +2 -2
  597. package/tabs/_tabs-common.scss +10 -8
  598. package/tabs/_tabs-theme.scss +0 -1
  599. package/tabs/paginated-tab-header.d.ts +1 -1
  600. package/tabs/public-api.d.ts +5 -5
  601. package/tabs/tab-body.component.d.ts +3 -3
  602. package/tabs/tab-group.component.d.ts +1 -1
  603. package/tabs/tab-group.scss +0 -1
  604. package/tabs/tab-header.scss +0 -6
  605. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +17 -17
  606. package/tabs/tab-nav-bar/tab-nav-bar.scss +0 -1
  607. package/tags/_tag-theme.scss +0 -2
  608. package/tags/public-api.d.ts +4 -4
  609. package/tags/tag-input.d.ts +1 -1
  610. package/tags/tag-list.scss +9 -7
  611. package/tags/tag.component.d.ts +2 -2
  612. package/tags/tag.scss +1 -4
  613. package/textarea/_textarea-theme.scss +0 -1
  614. package/textarea/textarea.component.d.ts +1 -1
  615. package/textarea/textarea.scss +1 -4
  616. package/timepicker/public-api.d.ts +1 -1
  617. package/timepicker/timepicker.constants.d.ts +2 -0
  618. package/timepicker/timepicker.directive.d.ts +10 -3
  619. package/timepicker/timepicker.scss +0 -1
  620. package/timezone/_timezone-option-theme.scss +0 -1
  621. package/timezone/timezone-option.component.scss +0 -1
  622. package/timezone/timezone-option.directive.d.ts +1 -1
  623. package/timezone/timezone-select.component.scss +0 -1
  624. package/timezone/timezone.utils.d.ts +1 -1
  625. package/title/public-api.d.ts +1 -1
  626. package/title/title.directive.d.ts +2 -2
  627. package/toast/_toast-theme.scss +0 -2
  628. package/toast/public-api.d.ts +3 -3
  629. package/toast/toast-container.component.scss +0 -1
  630. package/toast/toast.component.scss +4 -2
  631. package/toast/toast.service.d.ts +2 -2
  632. package/toast/toast.type.d.ts +1 -1
  633. package/toggle/_toggle-theme.scss +10 -9
  634. package/toggle/public-api.d.ts +1 -1
  635. package/toggle/toggle.component.d.ts +2 -2
  636. package/toggle/toggle.scss +0 -1
  637. package/tooltip/_tooltip-theme.scss +0 -1
  638. package/tooltip/public-api.d.ts +1 -1
  639. package/tooltip/tooltip.component.d.ts +2 -2
  640. package/tooltip/tooltip.scss +1 -5
  641. package/tree/_tree-theme.scss +2 -3
  642. package/tree/public-api.d.ts +10 -10
  643. package/tree/toggle.scss +0 -1
  644. package/tree/tree-base.d.ts +1 -1
  645. package/tree/tree-option.component.d.ts +1 -1
  646. package/tree/tree-option.scss +12 -8
  647. package/tree/tree-selection.component.d.ts +3 -2
  648. package/tree-select/_tree-select-theme.scss +0 -1
  649. package/tree-select/public-api.d.ts +1 -1
  650. package/tree-select/tree-select.component.d.ts +9 -4
  651. package/tree-select/tree-select.scss +0 -1
@@ -1,5 +1,5 @@
1
1
  import { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Input, Optional, ViewEncapsulation } from '@angular/core';
2
- import { mixinColor, KbqComponentColors, KBQ_FORM_FIELD_REF } from '@koobiq/components/core';
2
+ import { KBQ_FORM_FIELD_REF, KbqComponentColors, mixinColor } from '@koobiq/components/core';
3
3
  import * as i0 from "@angular/core";
4
4
  /** @docs-private */
5
5
  export class KbqIconBase {
@@ -41,18 +41,17 @@ export class KbqIcon extends KbqIconMixinBase {
41
41
  }
42
42
  ngAfterContentInit() {
43
43
  if (this.autoColor) {
44
- this.formField.control?.stateChanges
45
- .subscribe(this.updateState);
44
+ this.formField.control?.stateChanges.subscribe(this.updateState);
46
45
  this.updateState();
47
46
  }
48
47
  this.updateMaxHeight();
49
48
  }
50
49
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqIcon, deps: [{ token: i0.ElementRef }, { token: 'kbq-icon', attribute: true }, { token: KBQ_FORM_FIELD_REF, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
51
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqIcon, selector: "[kbq-icon]", inputs: { color: "color", small: "small", autoColor: "autoColor" }, host: { properties: { "class.kbq-error": "color === \"error\" || hasError" }, classAttribute: "mc kbq-icon" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".kbq-icon-rotate_90{transform:rotate(90deg)}.kbq-icon-rotate_180{transform:rotate(180deg)}.kbq-icon-rotate_270{transform:rotate(270deg)}.kbq-icon-flip-h{transform:scaleY(-1)}.kbq-icon-flip-v{transform:scaleX(-1)}.kbq-icon-flip-vh{transform:scale(-1)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
50
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqIcon, selector: "[kbq-icon]", inputs: { color: "color", small: "small", autoColor: "autoColor" }, host: { properties: { "class.kbq-error": "color === \"error\" || hasError" }, classAttribute: "mc kbq-icon" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true, styles: [".kbq-icon-rotate_90{transform:rotate(90deg)}.kbq-icon-rotate_180{transform:rotate(180deg)}.kbq-icon-rotate_270{transform:rotate(270deg)}.kbq-icon-flip-h{transform:scaleY(-1)}.kbq-icon-flip-v{transform:scaleX(-1)}.kbq-icon-flip-vh{transform:scale(-1)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
52
51
  }
53
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqIcon, decorators: [{
54
53
  type: Component,
55
- args: [{ selector: '[kbq-icon]', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, inputs: ['color'], host: {
54
+ args: [{ selector: '[kbq-icon]', template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, inputs: ['color'], host: {
56
55
  class: 'mc kbq-icon',
57
56
  '[class.kbq-error]': 'color === "error" || hasError'
58
57
  }, styles: [".kbq-icon-rotate_90{transform:rotate(90deg)}.kbq-icon-rotate_180{transform:rotate(180deg)}.kbq-icon-rotate_270{transform:rotate(270deg)}.kbq-icon-flip-h{transform:scaleY(-1)}.kbq-icon-flip-v{transform:scaleX(-1)}.kbq-icon-flip-vh{transform:scale(-1)}\n"] }]
@@ -69,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
69
68
  }], autoColor: [{
70
69
  type: Input
71
70
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ljb24vaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCx1QkFBdUIsRUFBRSxpQkFBaUIsRUFDMUMsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdILFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBRXJCLE1BQU0seUJBQXlCLENBQUM7O0FBR2pDLG9CQUFvQjtBQUNwQixNQUFNLE9BQU8sV0FBVztJQUNwQixZQUFtQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztDQUNoRDtBQUVELG9CQUFvQjtBQUNwQixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FDekIsVUFBVSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQWU3RCxNQUFNLE9BQU8sT0FBUSxTQUFRLGdCQUFnQjtJQVF6QyxZQUNJLFVBQXNCLEVBQ1csUUFBZ0IsRUFDQyxTQUEwQixFQUNsRSxpQkFBb0M7UUFFOUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBSmUsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNDLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQ2xFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFYekMsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFM0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVoQixTQUFJLEdBQUcsU0FBUyxDQUFBO1FBd0NsQixnQkFBVyxHQUFHLEdBQUcsRUFBRTtZQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXhELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQyxDQUFDLENBQUE7UUFsQ0csSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUV4QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVwRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQztRQUN4RCxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFlBQVk7aUJBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFakMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztpSUE1Q1EsT0FBTyw0Q0FVRCxVQUFVLDhCQUNELGtCQUFrQjtxSEFYakMsT0FBTyw0UEFWTiwyQkFBMkI7OzJGQVU1QixPQUFPO2tCQVpuQixTQUFTOytCQUNJLFlBQVksWUFDWiwyQkFBMkIsbUJBRXBCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksVUFDN0IsQ0FBQyxPQUFPLENBQUMsUUFDWDt3QkFDRixLQUFLLEVBQUUsYUFBYTt3QkFDcEIsbUJBQW1CLEVBQUUsK0JBQStCO3FCQUN2RDs7MEJBWUksU0FBUzsyQkFBQyxVQUFVOzswQkFDcEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0I7eUVBVmpDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDYW5Db2xvcixcbiAgICBDYW5Db2xvckN0b3IsXG4gICAgbWl4aW5Db2xvcixcbiAgICBLYnFDb21wb25lbnRDb2xvcnMsXG4gICAgS0JRX0ZPUk1fRklFTERfUkVGLFxuICAgIEticUZvcm1GaWVsZFJlZlxufSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjbGFzcyBLYnFJY29uQmFzZSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY29uc3QgS2JxSWNvbk1peGluQmFzZTogQ2FuQ29sb3JDdG9yICYgdHlwZW9mIEticUljb25CYXNlID1cbiAgICBtaXhpbkNvbG9yKEticUljb25CYXNlLCBLYnFDb21wb25lbnRDb2xvcnMuQ29udHJhc3RGYWRlKTtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1trYnEtaWNvbl0nLFxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gICAgc3R5bGVVcmxzOiBbJ2ljb24uc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW5wdXRzOiBbJ2NvbG9yJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21jIGticS1pY29uJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtZXJyb3JdJzogJ2NvbG9yID09PSBcImVycm9yXCIgfHwgaGFzRXJyb3InXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFJY29uIGV4dGVuZHMgS2JxSWNvbk1peGluQmFzZSBpbXBsZW1lbnRzIENhbkNvbG9yLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASW5wdXQoKSBzbWFsbCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGF1dG9Db2xvciA9IGZhbHNlO1xuXG4gICAgaGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBuYW1lID0gJ0ticUljb24nXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQEF0dHJpYnV0ZSgna2JxLWljb24nKSBwcm90ZWN0ZWQgaWNvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfRk9STV9GSUVMRF9SRUYpIHByb3RlY3RlZCBmb3JtRmllbGQ6IEticUZvcm1GaWVsZFJlZixcbiAgICAgICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmKTtcblxuICAgICAgICBpZiAoaWNvbk5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5jbGFzc0xpc3QuYWRkKGljb25OYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEhvc3RFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgdXBkYXRlTWF4SGVpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5uYW1lICE9PSAnS2JxSWNvbicpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgY29uc3Qgc2l6ZSA9IHBhcnNlSW50KHRoaXMuaWNvbk5hbWU/LnNwbGl0KCdfJylbMV0pO1xuXG4gICAgICAgIGlmIChzaXplKSB7XG4gICAgICAgICAgICB0aGlzLmdldEhvc3RFbGVtZW50KCkuc3R5bGUubWF4SGVpZ2h0ID0gYCR7c2l6ZX1weGA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9Db2xvcikge1xuICAgICAgICAgICAgdGhpcy5mb3JtRmllbGQuY29udHJvbD8uc3RhdGVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLnVwZGF0ZVN0YXRlKTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVNYXhIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVN0YXRlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmhhc0Vycm9yID0gdGhpcy5mb3JtRmllbGQuc2hvdWxkRm9yd2FyZCgnaW52YWxpZCcpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ljb24vaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHSCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBRWxCLFVBQVUsRUFDYixNQUFNLHlCQUF5QixDQUFDOztBQUVqQyxvQkFBb0I7QUFDcEIsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7Q0FDaEQ7QUFFRCxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXNDLFVBQVUsQ0FDekUsV0FBVyxFQUNYLGtCQUFrQixDQUFDLFlBQVksQ0FDbEMsQ0FBQztBQWNGLE1BQU0sT0FBTyxPQUFRLFNBQVEsZ0JBQWdCO0lBUXpDLFlBQ0ksVUFBc0IsRUFDVyxRQUFnQixFQUNDLFNBQTBCLEVBQ2xFLGlCQUFvQztRQUU5QyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFKZSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ0MsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDbEUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVh6QyxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRWhCLFNBQUksR0FBRyxTQUFTLENBQUM7UUF5Q25CLGdCQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQztRQW5DRSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBELElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQ3hELENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFakUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztpSUE3Q1EsT0FBTyw0Q0FVRCxVQUFVLDhCQUNELGtCQUFrQjtxSEFYakMsT0FBTyw0UEFWTixnQkFBZ0I7OzJGQVVqQixPQUFPO2tCQVpuQixTQUFTOytCQUNJLFlBQVksWUFDWixnQkFBZ0IsbUJBRVQsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxVQUM3QixDQUFDLE9BQU8sQ0FBQyxRQUNYO3dCQUNGLEtBQUssRUFBRSxhQUFhO3dCQUNwQixtQkFBbUIsRUFBRSwrQkFBK0I7cUJBQ3ZEOzswQkFZSSxTQUFTOzJCQUFDLFVBQVU7OzBCQUNwQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjt5RUFWakMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2FuQ29sb3IsXG4gICAgQ2FuQ29sb3JDdG9yLFxuICAgIEtCUV9GT1JNX0ZJRUxEX1JFRixcbiAgICBLYnFDb21wb25lbnRDb2xvcnMsXG4gICAgS2JxRm9ybUZpZWxkUmVmLFxuICAgIG1peGluQ29sb3Jcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNsYXNzIEticUljb25CYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBLYnFJY29uTWl4aW5CYXNlOiBDYW5Db2xvckN0b3IgJiB0eXBlb2YgS2JxSWNvbkJhc2UgPSBtaXhpbkNvbG9yKFxuICAgIEticUljb25CYXNlLFxuICAgIEticUNvbXBvbmVudENvbG9ycy5Db250cmFzdEZhZGVcbik7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW2ticS1pY29uXScsXG4gICAgdGVtcGxhdGU6ICc8bmctY29udGVudCAvPicsXG4gICAgc3R5bGVVcmxzOiBbJ2ljb24uc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW5wdXRzOiBbJ2NvbG9yJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21jIGticS1pY29uJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtZXJyb3JdJzogJ2NvbG9yID09PSBcImVycm9yXCIgfHwgaGFzRXJyb3InXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFJY29uIGV4dGVuZHMgS2JxSWNvbk1peGluQmFzZSBpbXBsZW1lbnRzIENhbkNvbG9yLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASW5wdXQoKSBzbWFsbCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGF1dG9Db2xvciA9IGZhbHNlO1xuXG4gICAgaGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBuYW1lID0gJ0ticUljb24nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2ticS1pY29uJykgcHJvdGVjdGVkIGljb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0ZPUk1fRklFTERfUkVGKSBwcm90ZWN0ZWQgZm9ybUZpZWxkOiBLYnFGb3JtRmllbGRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZik7XG5cbiAgICAgICAgaWYgKGljb25OYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmdldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LmFkZChpY29uTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRIb3N0RWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHVwZGF0ZU1heEhlaWdodCgpIHtcbiAgICAgICAgaWYgKHRoaXMubmFtZSAhPT0gJ0ticUljb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzaXplID0gcGFyc2VJbnQodGhpcy5pY29uTmFtZT8uc3BsaXQoJ18nKVsxXSk7XG5cbiAgICAgICAgaWYgKHNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5zdHlsZS5tYXhIZWlnaHQgPSBgJHtzaXplfXB4YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b0NvbG9yKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1GaWVsZC5jb250cm9sPy5zdGF0ZUNoYW5nZXMuc3Vic2NyaWJlKHRoaXMudXBkYXRlU3RhdGUpO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZU1heEhlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU3RhdGUgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0aGlzLmZvcm1GaWVsZC5zaG91bGRGb3J3YXJkKCdpbnZhbGlkJyk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9O1xufVxuIl19
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
39
39
  ]
40
40
  }]
41
41
  }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ljb24vaWNvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFvQjNDLE1BQU0sT0FBTyxhQUFhO2lJQUFiLGFBQWE7a0lBQWIsYUFBYSxpQkFMbEIsT0FBTztZQUNQLGFBQWE7WUFDYixXQUFXLGFBWlgsWUFBWTtZQUNaLFVBQVU7WUFDVixjQUFjLGFBR2QsT0FBTztZQUNQLGFBQWE7WUFDYixXQUFXO2tJQVFOLGFBQWEsWUFmbEIsWUFBWTtZQUNaLFVBQVU7WUFDVixjQUFjOzsyRkFhVCxhQUFhO2tCQWpCekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGNBQWM7cUJBQ2pCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsV0FBVztxQkFDZDtvQkFDRCxZQUFZLEVBQUU7d0JBQ1YsT0FBTzt3QkFDUCxhQUFhO3dCQUNiLFdBQVc7cUJBQ2Q7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgUGxhdGZvcm1Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEticUljb25CdXR0b24gfSBmcm9tICcuL2ljb24tYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLYnFJY29uSXRlbSB9IGZyb20gJy4vaWNvbi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLYnFJY29uIH0gZnJvbSAnLi9pY29uLmNvbXBvbmVudCc7XG5cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQTExeU1vZHVsZSxcbiAgICAgICAgUGxhdGZvcm1Nb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgS2JxSWNvbixcbiAgICAgICAgS2JxSWNvbkJ1dHRvbixcbiAgICAgICAgS2JxSWNvbkl0ZW1cbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBLYnFJY29uLFxuICAgICAgICBLYnFJY29uQnV0dG9uLFxuICAgICAgICBLYnFJY29uSXRlbVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgS2JxSWNvbk1vZHVsZSB7fVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ljb24vaWNvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFtQjNDLE1BQU0sT0FBTyxhQUFhO2lJQUFiLGFBQWE7a0lBQWIsYUFBYSxpQkFMbEIsT0FBTztZQUNQLGFBQWE7WUFDYixXQUFXLGFBWlgsWUFBWTtZQUNaLFVBQVU7WUFDVixjQUFjLGFBR2QsT0FBTztZQUNQLGFBQWE7WUFDYixXQUFXO2tJQVFOLGFBQWEsWUFmbEIsWUFBWTtZQUNaLFVBQVU7WUFDVixjQUFjOzsyRkFhVCxhQUFhO2tCQWpCekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGNBQWM7cUJBQ2pCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsV0FBVztxQkFDZDtvQkFDRCxZQUFZLEVBQUU7d0JBQ1YsT0FBTzt3QkFDUCxhQUFhO3dCQUNiLFdBQVc7cUJBQ2Q7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgUGxhdGZvcm1Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLYnFJY29uQnV0dG9uIH0gZnJvbSAnLi9pY29uLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2JxSWNvbkl0ZW0gfSBmcm9tICcuL2ljb24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2JxSWNvbiB9IGZyb20gJy4vaWNvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBMTF5TW9kdWxlLFxuICAgICAgICBQbGF0Zm9ybU1vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBLYnFJY29uLFxuICAgICAgICBLYnFJY29uQnV0dG9uLFxuICAgICAgICBLYnFJY29uSXRlbVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEticUljb24sXG4gICAgICAgIEticUljb25CdXR0b24sXG4gICAgICAgIEticUljb25JdGVtXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBLYnFJY29uTW9kdWxlIHt9XG4iXX0=
@@ -1,5 +1,5 @@
1
- export * from './icon.module';
2
- export * from './icon.component';
3
1
  export * from './icon-button.component';
4
2
  export * from './icon-item.component';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvaWNvbi9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pY29uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1pdGVtLmNvbXBvbmVudCc7XG4iXX0=
3
+ export * from './icon.component';
4
+ export * from './icon.module';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvaWNvbi9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pY29uLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pY29uLWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pY29uLm1vZHVsZSc7XG4iXX0=
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
85
85
  }], propDecorators: { max: [{
86
86
  type: Input
87
87
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLXZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2lucHV0L2lucHV0LW51bWJlci12YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBc0MsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFtQixhQUFhLEVBQTRDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUd0SCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWE7SUFDbkMsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7SUFDM0MsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUY7OztHQUdHO0FBUUgsTUFBTSxPQUFPLFlBQVk7SUFNckIsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUV2QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFBQyxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLENBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQseUJBQXlCLENBQUMsRUFBYztRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sZUFBZTtRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztpSUF4QlEsWUFBWTtxSEFBWixZQUFZLHFLQUxWLENBQUMsYUFBYSxDQUFDOzsyRkFLakIsWUFBWTtrQkFQeEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMERBQTBEO29CQUNwRSxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQzFCLElBQUksRUFBRTt3QkFDRixZQUFZLEVBQUUsa0JBQWtCO3FCQUNuQztpQkFDSjs4QkFHWSxHQUFHO3NCQUFYLEtBQUs7O0FBMEJWLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBYTtJQUNuQyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztJQUMzQyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRjs7O0dBR0c7QUFRSCxNQUFNLE9BQU8sWUFBWTtJQU9yQixXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXZCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxFQUFjO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO2lJQXpCUSxZQUFZO3FIQUFaLFlBQVkscUtBTFYsQ0FBQyxhQUFhLENBQUM7OzJGQUtqQixZQUFZO2tCQVB4QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwREFBMEQ7b0JBQ3BFLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDMUIsSUFBSSxFQUFFO3dCQUNGLFlBQVksRUFBRSxrQkFBa0I7cUJBQ25DO2lCQUNKOzhCQUlZLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgUHJvdmlkZXIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUywgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuXG5leHBvcnQgY29uc3QgTUlOX1ZBTElEQVRPUjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNaW5WYWxpZGF0b3IpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHdoaWNoIGluc3RhbGxzIHRoZSBNaW5WYWxpZGF0b3IgZm9yIGFueSBgZm9ybUNvbnRyb2xOYW1lYCxcbiAqIGBmb3JtQ29udHJvbGAsIG9yIGNvbnRyb2wgd2l0aCBgbmdNb2RlbGAgdGhhdCBhbHNvIGhhcyBhIGBtaW5gIGF0dHJpYnV0ZS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbWluXVtmb3JtQ29udHJvbE5hbWVdLFttaW5dW2Zvcm1Db250cm9sXSxbbWluXVtuZ01vZGVsXScsXG4gICAgcHJvdmlkZXJzOiBbTUlOX1ZBTElEQVRPUl0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIubWluXSc6ICdtaW4gPyBtaW4gOiBudWxsJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWluVmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yLCBPbkNoYW5nZXMge1xuXG4gICAgQElucHV0KCkgbWluOiBudW1iZXI7XG4gICAgcHJpdmF0ZSB2YWxpZGF0b3I6IFZhbGlkYXRvckZuO1xuICAgIHByaXZhdGUgb25DaGFuZ2U6ICgpID0+IHZvaWQ7XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnbWluJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVZhbGlkYXRvcigpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5vbkNoYW5nZSkgeyB0aGlzLm9uQ2hhbmdlKCk7IH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yKGMpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVmFsaWRhdG9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRvciA9IFZhbGlkYXRvcnMubWluKHBhcnNlSW50KHRoaXMubWluIGFzIHVua25vd24gYXMgc3RyaW5nLCAxMCkpO1xuICAgIH1cbn1cblxuXG5leHBvcnQgY29uc3QgTUFYX1ZBTElEQVRPUjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXhWYWxpZGF0b3IpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHdoaWNoIGluc3RhbGxzIHRoZSBNYXhWYWxpZGF0b3IgZm9yIGFueSBgZm9ybUNvbnRyb2xOYW1lYCxcbiAqIGBmb3JtQ29udHJvbGAsIG9yIGNvbnRyb2wgd2l0aCBgbmdNb2RlbGAgdGhhdCBhbHNvIGhhcyBhIGBtaW5gIGF0dHJpYnV0ZS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbWF4XVtmb3JtQ29udHJvbE5hbWVdLFttYXhdW2Zvcm1Db250cm9sXSxbbWF4XVtuZ01vZGVsXScsXG4gICAgcHJvdmlkZXJzOiBbTUFYX1ZBTElEQVRPUl0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIubWF4XSc6ICdtYXggPyBtYXggOiBudWxsJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWF4VmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yLFxuICAgIE9uQ2hhbmdlcyB7XG5cbiAgICBASW5wdXQoKSBtYXg6IG51bWJlciB8IHN0cmluZztcbiAgICBwcml2YXRlIHZhbGlkYXRvcjogVmFsaWRhdG9yRm47XG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogKCkgPT4gdm9pZDtcblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCdtYXgnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVmFsaWRhdG9yKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7IHRoaXMub25DaGFuZ2UoKTsgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IoYyk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVWYWxpZGF0b3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsaWRhdG9yID0gVmFsaWRhdG9ycy5tYXgocGFyc2VJbnQodGhpcy5tYXggYXMgdW5rbm93biBhcyBzdHJpbmcsIDEwKSk7XG4gICAgfVxufVxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLXZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2lucHV0L2lucHV0LW51bWJlci12YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBc0MsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFtQixhQUFhLEVBQTRDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUV0SCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWE7SUFDbkMsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7SUFDM0MsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUY7OztHQUdHO0FBUUgsTUFBTSxPQUFPLFlBQVk7SUFLckIsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUV2QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELHlCQUF5QixDQUFDLEVBQWM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLGVBQWU7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBd0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7aUlBekJRLFlBQVk7cUhBQVosWUFBWSxxS0FMVixDQUFDLGFBQWEsQ0FBQzs7MkZBS2pCLFlBQVk7a0JBUHhCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBEQUEwRDtvQkFDcEUsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUMxQixJQUFJLEVBQUU7d0JBQ0YsWUFBWSxFQUFFLGtCQUFrQjtxQkFDbkM7aUJBQ0o7OEJBRVksR0FBRztzQkFBWCxLQUFLOztBQTJCVixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWE7SUFDbkMsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7SUFDM0MsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUY7OztHQUdHO0FBUUgsTUFBTSxPQUFPLFlBQVk7SUFLckIsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUV2QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELHlCQUF5QixDQUFDLEVBQWM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLGVBQWU7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBd0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7aUlBekJRLFlBQVk7cUhBQVosWUFBWSxxS0FMVixDQUFDLGFBQWEsQ0FBQzs7MkZBS2pCLFlBQVk7a0JBUHhCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBEQUEwRDtvQkFDcEUsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUMxQixJQUFJLEVBQUU7d0JBQ0YsWUFBWSxFQUFFLGtCQUFrQjtxQkFDbkM7aUJBQ0o7OEJBRVksR0FBRztzQkFBWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBQcm92aWRlciwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOR19WQUxJREFUT1JTLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3IsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY29uc3QgTUlOX1ZBTElEQVRPUjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNaW5WYWxpZGF0b3IpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHdoaWNoIGluc3RhbGxzIHRoZSBNaW5WYWxpZGF0b3IgZm9yIGFueSBgZm9ybUNvbnRyb2xOYW1lYCxcbiAqIGBmb3JtQ29udHJvbGAsIG9yIGNvbnRyb2wgd2l0aCBgbmdNb2RlbGAgdGhhdCBhbHNvIGhhcyBhIGBtaW5gIGF0dHJpYnV0ZS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbWluXVtmb3JtQ29udHJvbE5hbWVdLFttaW5dW2Zvcm1Db250cm9sXSxbbWluXVtuZ01vZGVsXScsXG4gICAgcHJvdmlkZXJzOiBbTUlOX1ZBTElEQVRPUl0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIubWluXSc6ICdtaW4gPyBtaW4gOiBudWxsJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWluVmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yLCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIG1pbjogbnVtYmVyO1xuICAgIHByaXZhdGUgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbjtcbiAgICBwcml2YXRlIG9uQ2hhbmdlOiAoKSA9PiB2b2lkO1xuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ21pbicgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVWYWxpZGF0b3IoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRvcihjKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVZhbGlkYXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0b3IgPSBWYWxpZGF0b3JzLm1pbihwYXJzZUludCh0aGlzLm1pbiBhcyB1bmtub3duIGFzIHN0cmluZywgMTApKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBNQVhfVkFMSURBVE9SOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1heFZhbGlkYXRvciksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgd2hpY2ggaW5zdGFsbHMgdGhlIE1heFZhbGlkYXRvciBmb3IgYW55IGBmb3JtQ29udHJvbE5hbWVgLFxuICogYGZvcm1Db250cm9sYCwgb3IgY29udHJvbCB3aXRoIGBuZ01vZGVsYCB0aGF0IGFsc28gaGFzIGEgYG1pbmAgYXR0cmlidXRlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttYXhdW2Zvcm1Db250cm9sTmFtZV0sW21heF1bZm9ybUNvbnRyb2xdLFttYXhdW25nTW9kZWxdJyxcbiAgICBwcm92aWRlcnM6IFtNQVhfVkFMSURBVE9SXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5tYXhdJzogJ21heCA/IG1heCA6IG51bGwnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBNYXhWYWxpZGF0b3IgaW1wbGVtZW50cyBWYWxpZGF0b3IsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgbWF4OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgcHJpdmF0ZSB2YWxpZGF0b3I6IFZhbGlkYXRvckZuO1xuICAgIHByaXZhdGUgb25DaGFuZ2U6ICgpID0+IHZvaWQ7XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnbWF4JyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVZhbGlkYXRvcigpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yKGMpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVmFsaWRhdG9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRvciA9IFZhbGlkYXRvcnMubWF4KHBhcnNlSW50KHRoaXMubWF4IGFzIHVua25vd24gYXMgc3RyaW5nLCAxMCkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
2
  import { Attribute, Directive, ElementRef, EventEmitter, forwardRef, Inject, Input, Optional, Renderer2 } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { END, C, V, X, A, Z, DELETE, BACKSPACE, TAB, ENTER, ESCAPE, NUMPAD_MINUS, DASH, FF_MINUS, LEFT_ARROW, RIGHT_ARROW, HOME, UP_ARROW, DOWN_ARROW, isFunctionKey, isNumberKey, isNumpadKey } from '@koobiq/cdk/keycodes';
4
+ import { A, BACKSPACE, C, DASH, DELETE, DOWN_ARROW, END, ENTER, ESCAPE, FF_MINUS, HOME, isFunctionKey, isNumberKey, isNumpadKey, LEFT_ARROW, NUMPAD_MINUS, RIGHT_ARROW, TAB, UP_ARROW, V, X, Z } from '@koobiq/cdk/keycodes';
5
5
  import { KBQ_LOCALE_SERVICE, KbqLocaleService } from '@koobiq/components/core';
6
6
  import { Subject, Subscription } from 'rxjs';
7
7
  import * as i0 from "@angular/core";
@@ -22,10 +22,7 @@ export function isDigit(value) {
22
22
  }
23
23
  export function getPrecision(value) {
24
24
  const arr = value.toString().split('.');
25
- return arr.length === 1
26
- ? 1
27
- // tslint:disable-next-line:no-magic-numbers
28
- : Math.pow(10, arr[1].length);
25
+ return arr.length === 1 ? 1 : Math.pow(10, arr[1].length);
29
26
  }
30
27
  export function add(value1, value2) {
31
28
  const precision = Math.max(getPrecision(value1), getPrecision(value2));
@@ -88,9 +85,7 @@ export class KbqNumberInput {
88
85
  this._disabled = false;
89
86
  this.focused = false;
90
87
  this.localeSubscription = Subscription.EMPTY;
91
- // tslint:disable-next-line:no-empty
92
88
  this.onTouched = () => { };
93
- // tslint:disable-next-line:no-empty
94
89
  this.cvaOnChange = () => { };
95
90
  this.updateLocaleParams = (id) => {
96
91
  this.numberLocaleConfig = this.localeService.locales[id].input.number;
@@ -102,19 +97,16 @@ export class KbqNumberInput {
102
97
  this.max = isDigit(max) ? parseFloat(max) : Infinity;
103
98
  if ('valueAsNumber' in this.nativeElement) {
104
99
  Object.defineProperty(Object.getPrototypeOf(this.nativeElement), 'valueAsNumber', {
105
- // tslint:disable-next-line:no-reserved-keywords
106
100
  get() {
107
101
  const res = parseFloat(normalizeSplitter(this.value));
108
102
  return isNaN(res) ? null : res;
109
103
  }
110
104
  });
111
105
  }
112
- this.allNumberLocaleConfigs = this.localeService?.locales.items
113
- .map((localeItem) => {
106
+ this.allNumberLocaleConfigs = this.localeService?.locales.items.map((localeItem) => {
114
107
  return { id: localeItem.id, config: this.localeService.locales[localeItem.id].input.number };
115
108
  });
116
- this.localeSubscription = this.localeService?.changes
117
- .subscribe(this.updateLocaleParams);
109
+ this.localeSubscription = this.localeService?.changes.subscribe(this.updateLocaleParams);
118
110
  }
119
111
  ngAfterContentInit() {
120
112
  this.renderer.setProperty(this.nativeElement, 'type', 'text');
@@ -153,21 +145,19 @@ export class KbqNumberInput {
153
145
  }
154
146
  }
155
147
  onKeyDown(event) {
156
- // tslint:disable-next-line:deprecation
157
148
  const keyCode = event.keyCode;
158
149
  const isCtrlA = (e) => e.keyCode === A && (e.ctrlKey || e.metaKey);
159
150
  const isCtrlC = (e) => e.keyCode === C && (e.ctrlKey || e.metaKey);
160
151
  const isCtrlV = (e) => e.keyCode === V && (e.ctrlKey || e.metaKey);
161
152
  const isCtrlX = (e) => e.keyCode === X && (e.ctrlKey || e.metaKey);
162
153
  const isCtrlZ = (e) => e.keyCode === Z && (e.ctrlKey || e.metaKey);
163
- const isPeriod = (e) => this.numberLocaleConfig.groupSeparator.includes(e.key)
164
- || [this.numberLocaleConfig.fractionSeparator, '.'].includes(e.key);
154
+ const isPeriod = (e) => this.numberLocaleConfig.groupSeparator.includes(e.key) ||
155
+ [this.numberLocaleConfig.fractionSeparator, '.'].includes(e.key);
165
156
  const minuses = [NUMPAD_MINUS, DASH, FF_MINUS];
166
157
  const serviceKeys = [DELETE, BACKSPACE, TAB, ESCAPE, ENTER];
167
158
  const arrows = [LEFT_ARROW, RIGHT_ARROW];
168
159
  const allowedKeys = [HOME, END].concat(arrows).concat(serviceKeys).concat(minuses);
169
- if (minuses.includes(keyCode) &&
170
- (this.viewValue.includes(event.key) || this.min >= 0)) {
160
+ if (minuses.includes(keyCode) && (this.viewValue.includes(event.key) || this.min >= 0)) {
171
161
  event.preventDefault();
172
162
  return;
173
163
  }
@@ -178,21 +168,20 @@ export class KbqNumberInput {
178
168
  return;
179
169
  }
180
170
  }
181
- if (allowedKeys.indexOf(keyCode) !== -1 ||
182
- [
183
- isCtrlA,
184
- isCtrlC,
185
- isCtrlV,
186
- isCtrlX,
187
- isCtrlZ,
188
- isFunctionKey,
189
- isPeriod
190
- ].some((fn) => fn(event))) {
171
+ if (allowedKeys.indexOf(keyCode) !== -1 || [
172
+ isCtrlA,
173
+ isCtrlC,
174
+ isCtrlV,
175
+ isCtrlX,
176
+ isCtrlZ,
177
+ isFunctionKey,
178
+ isPeriod
179
+ ].some((fn) => fn(event))) {
191
180
  // let it happen, don't do anything
192
181
  return;
193
182
  }
194
183
  // Ensure that it is not a number and stop the keypress
195
- if (event.shiftKey || !isNumberKey(event) && !isNumpadKey(event)) {
184
+ if (event.shiftKey || (!isNumberKey(event) && !isNumpadKey(event))) {
196
185
  event.preventDefault();
197
186
  // process steps
198
187
  const step = event.shiftKey ? this.bigStep : this.step;
@@ -218,7 +207,8 @@ export class KbqNumberInput {
218
207
  const offsetWhenSeparatorAdded = 2;
219
208
  Promise.resolve().then(() => {
220
209
  if (Math.abs(this.viewValue.length - currentValueLength) === offsetWhenSeparatorAdded) {
221
- const cursorPosition = Math.max(0, (this.nativeElement.selectionStart || 0) + Math.sign(this.viewValue.length - currentValueLength));
210
+ const cursorPosition = Math.max(0, (this.nativeElement.selectionStart || 0) +
211
+ Math.sign(this.viewValue.length - currentValueLength));
222
212
  this.renderer.setProperty(this.nativeElement, 'selectionStart', cursorPosition);
223
213
  this.renderer.setProperty(this.nativeElement, 'selectionEnd', cursorPosition);
224
214
  }
@@ -271,11 +261,11 @@ export class KbqNumberInput {
271
261
  if (this.viewValue === null || this.viewValue === '' || Number.isNaN(+this.normalizeNumber(this.viewValue))) {
272
262
  return null;
273
263
  }
274
- const separator = this.numberLocaleConfig.groupSeparator.includes(' ')
275
- && this.numberLocaleConfig.fractionSeparator === ','
264
+ const separator = this.numberLocaleConfig.groupSeparator.includes(' ') && this.numberLocaleConfig.fractionSeparator === ','
276
265
  ? /[,.]/
277
266
  : this.numberLocaleConfig.fractionSeparator;
278
- const [intPart, fractionPart] = this.viewValue.split(separator)
267
+ const [intPart, fractionPart] = this.viewValue
268
+ .split(separator)
279
269
  .map((valuePart) => this.normalizeNumber(valuePart));
280
270
  return this.createLocalizedNumberFromParts(+intPart, fractionPart);
281
271
  }
@@ -292,14 +282,14 @@ export class KbqNumberInput {
292
282
  maximumFractionDigits: 20
293
283
  };
294
284
  if (this.withThousandSeparator && this.numberLocaleConfig.startFormattingFrom) {
295
- formatOptions.useGrouping = intPart >= Math.pow(
296
- // tslint:disable-next-line:no-magic-numbers
297
- 10, this.numberLocaleConfig.startFormattingFrom);
285
+ formatOptions.useGrouping = intPart >= Math.pow(10, this.numberLocaleConfig.startFormattingFrom);
298
286
  }
299
287
  const localeId = this.localeService.id === 'es-LA' ? 'ru-RU' : this.localeService.id;
300
288
  const formatter = new Intl.NumberFormat(localeId, formatOptions);
301
- const formattedFractionPart = fractionPart?.split('')
302
- .map((numChar) => formatter.format(+numChar)).join('');
289
+ const formattedFractionPart = fractionPart
290
+ ?.split('')
291
+ .map((numChar) => formatter.format(+numChar))
292
+ .join('');
303
293
  return formattedFractionPart === undefined
304
294
  ? formatter.format(intPart)
305
295
  : `${formatter.format(intPart)}${this.numberLocaleConfig.fractionSeparator}${formattedFractionPart}`;
@@ -314,9 +304,7 @@ export class KbqNumberInput {
314
304
  const { groupSeparator, fractionSeparator } = customConfig || this.numberLocaleConfig;
315
305
  const groupSeparatorRegexp = new RegExp(`[${groupSeparator.join('')}]`, 'g');
316
306
  const fractionSeparatorRegexp = new RegExp(`\\${fractionSeparator}`, 'g');
317
- return value.toString()
318
- .replace(groupSeparatorRegexp, '')
319
- .replace(fractionSeparatorRegexp, '.');
307
+ return value.toString().replace(groupSeparatorRegexp, '').replace(fractionSeparatorRegexp, '.');
320
308
  }
321
309
  checkAndNormalizeLocalizedNumber(num) {
322
310
  if (num === null || num === undefined) {
@@ -384,4 +372,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
384
372
  }], disabled: [{
385
373
  type: Input
386
374
  }] } });
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9pbnB1dC9pbnB1dC1udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUVILFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUMsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQ0gsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUNqRCxNQUFNLEVBQUUsWUFBWSxFQUFFLElBQUksRUFDMUIsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUM1RSxXQUFXLEVBQUUsV0FBVyxFQUMzQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHN0MsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBRTVCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFhO0lBQzNDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxH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USxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWtCO1FBQzNCLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDTCxDQUFDO0lBS0QsU0FBUyxDQUFDLEtBQW9CO1FBQzFCLHVDQUF1QztRQUN2QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTlCLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5FLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2VBQ3ZFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVELE1BQU0sTUFBTSxHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sV0FBVyxHQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBGLElBQ0ksT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDekIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFDdkQsQ0FBQztZQUNDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV2QixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEIsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUI7Z0JBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFFdkIsT0FBTztZQUNYLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQztnQkFDSSxPQUFPO2dCQUNQLE9BQU87Z0JBQ1AsT0FBTztnQkFDUCxPQUFPO2dCQUNQLE9BQU87Z0JBQ1AsYUFBYTtnQkFDYixRQUFRO2FBQ1gsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUMzQixDQUFDO1lBQ0MsbUNBQW1DO1lBQ25DLE9BQU87UUFDWCxDQUFDO1FBQ0QsdURBQXVEO1FBQ3ZELElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9ELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV2QixnQkFBZ0I7WUFDaEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUV2RCxJQUFJLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBRUQsSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQWlCO1FBQ3JCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUV0RSxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsS0FBSyxpQkFBaUIsQ0FBQztZQUN4RCxJQUFJLGNBQTZCLENBQUM7WUFDbEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDWixjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDNUQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLHdFQUF3RTtnQkFDeEUsY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFFeEMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUM7Z0JBRW5DLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUN4QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUMsS0FBSyx3QkFBd0IsRUFBRSxDQUFDO3dCQUNwRixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUMzQixDQUFDLEVBQ0QsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsQ0FDN0MsQ0FDSixDQUFDO3dCQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUM7d0JBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUNsRixDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFxQjtRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2xHLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFZO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVoRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFLTyxZQUFZLENBQUMsS0FBb0IsRUFBRSxlQUF3QixLQUFLO1FBQ3BFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO1FBRXpELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlELElBQUksWUFBWSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCLENBQUMsUUFBdUI7UUFDN0MsTUFBTSxlQUFlLEdBQUcsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkYsSUFBSSxlQUFlLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDO1lBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sZUFBZTtRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUcsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztlQUNuRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEtBQUssR0FBRztZQUNoRCxDQUFDLENBQUMsTUFBTTtZQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7UUFFaEQsTUFBTSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDMUQsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFekQsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFnQztRQUNqRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQUMsT0FBTyxJQUFJLENBQUM7UUFBQyxDQUFDO1FBRTNELE1BQU0sQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1RCxPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU8sOEJBQThCLENBQUMsT0FBZSxFQUFFLFlBQXFCO1FBQ3pFLE1BQU0sYUFBYSxHQUFHO1lBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMscUJBQXFCO1lBQ3ZDLHFCQUFxQixFQUFFLEVBQUU7U0FDNUIsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzVFLGFBQWEsQ0FBQyxXQUFXLEdBQUcsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHO1lBQzNDLDRDQUE0QztZQUM1QyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUNsRCxDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUVyRixNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0scUJBQXFCLEdBQUcsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDaEQsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0QsT0FBTyxxQkFBcUIsS0FBSyxTQUFTO1lBQ3RDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUMzQixDQUFDLENBQUMsR0FBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBRSxHQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBa0IsR0FBSSxxQkFBc0IsRUFBRSxDQUFDO0lBQ25ILENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWUsQ0FBQyxLQUFnQyxFQUFFLFlBQWlDO1FBQ3ZGLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFBQyxPQUFPLEVBQUUsQ0FBQztRQUFDLENBQUM7UUFFekQsTUFBTSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLFlBQVksSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDdEYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM3RSxNQUFNLHVCQUF1QixHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssaUJBQWlCLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUxRSxPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUU7YUFDbEIsT0FBTyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQzthQUNqQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQVFPLGdDQUFnQyxDQUFDLEdBQThCO1FBQ25FLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFBQyxPQUFPLElBQUksQ0FBQztRQUFDLENBQUM7UUFFdkQsdUdBQXVHO1FBQ3ZHLElBQUksWUFBWSxHQUFrQixJQUFJLENBQUM7UUFDdkMsS0FBSyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUM1QixZQUFZLEdBQUcsVUFBVSxDQUFDO2dCQUMxQixNQUFNO1lBQ1YsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO2lJQTdhUSxjQUFjLHFFQWdIUixNQUFNLDhCQUNOLFVBQVUsOEJBQ1YsS0FBSyw4QkFDTCxLQUFLLDhCQUNJLGtCQUFrQjtxSEFwSGpDLGNBQWMsa2JBVFosQ0FBQywrQkFBK0IsQ0FBQzs7MkZBU25DLGNBQWM7a0JBWjFCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsU0FBUyxFQUFFLENBQUMsK0JBQStCLENBQUM7b0JBQzVDLElBQUksRUFBRTt3QkFDRixRQUFRLEVBQUUscUJBQXFCO3dCQUMvQixTQUFTLEVBQUUsb0JBQW9CO3dCQUMvQixTQUFTLEVBQUUsaUJBQWlCO3dCQUM1QixXQUFXLEVBQUUsbUJBQW1CO3dCQUNoQyxTQUFTLEVBQUUsaUJBQWlCO3FCQUMvQjtpQkFDSjs7MEJBaUhRLFNBQVM7MkJBQUMsTUFBTTs7MEJBQ2hCLFNBQVM7MkJBQUMsVUFBVTs7MEJBQ3BCLFNBQVM7MkJBQUMsS0FBSzs7MEJBQ2YsU0FBUzsyQkFBQyxLQUFLOzswQkFDZixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjt5Q0E5RjFDLE9BQU87c0JBRE4sS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBT04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUlGLEtBQUs7c0JBRFIsS0FBSztnQkFtQkYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBdHRyaWJ1dGUsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgRU5ELCBDLCBWLCBYLCBBLCBaLCBERUxFVEUsIEJBQ0tTUEFDRSwgVEFCLCBFTlRFUixcbiAgICBFU0NBUEUsIE5VTVBBRF9NSU5VUywgREFTSCxcbiAgICBGRl9NSU5VUywgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIEhPTUUsIFVQX0FSUk9XLCBET1dOX0FSUk9XLCBpc0Z1bmN0aW9uS2V5LFxuICAgIGlzTnVtYmVyS2V5LCBpc051bXBhZEtleVxufSBmcm9tICdAa29vYmlxL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBLQlFfTE9DQUxFX1NFUlZJQ0UsIEticUxvY2FsZVNlcnZpY2UgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLYnFGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cblxuZXhwb3J0IGNvbnN0IEJJR19TVEVQID0gMTA7XG5leHBvcnQgY29uc3QgU01BTExfU1RFUCA9IDE7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTcGxpdHRlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZS5yZXBsYWNlKC8sL2csICcuJykgOiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmxvYXQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXi0/XFxkK1xcLlxcZCskLy50ZXN0KHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW50KHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL14tP1xcZCskLy50ZXN0KHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlnaXQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0Zsb2F0KHZhbHVlKSB8fCBpc0ludCh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcmVjaXNpb24odmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgYXJyID0gdmFsdWUudG9TdHJpbmcoKS5zcGxpdCgnLicpO1xuXG4gICAgcmV0dXJuIGFyci5sZW5ndGggPT09IDFcbiAgICAgICAgPyAxXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1tYWdpYy1udW1iZXJzXG4gICAgICAgIDogIE1hdGgucG93KDEwLCBhcnJbMV0ubGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZCh2YWx1ZTE6IG51bWJlciwgdmFsdWUyOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHByZWNpc2lvbiA9IE1hdGgubWF4KGdldFByZWNpc2lvbih2YWx1ZTEpLCBnZXRQcmVjaXNpb24odmFsdWUyKSk7XG5cbiAgICByZXR1cm4gKHZhbHVlMSAqIHByZWNpc2lvbiArIHZhbHVlMiAqIHByZWNpc2lvbikgLyBwcmVjaXNpb247XG59XG5cbmV4cG9ydCBjb25zdCBLQlFfTlVNQkVSX0lOUFVUX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gS2JxTnVtYmVySW5wdXQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5pbnRlcmZhY2UgTnVtYmVyTG9jYWxlQ29uZmlnIHtcbiAgICBncm91cFNlcGFyYXRvcjogc3RyaW5nW107XG4gICAgZnJhY3Rpb25TZXBhcmF0b3I6IHN0cmluZztcbiAgICBzdGFydEZvcm1hdHRpbmdGcm9tPzogbnVtYmVyO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYGlucHV0W2ticUlucHV0XVt0eXBlPVwibnVtYmVyXCJdYCxcbiAgICBleHBvcnRBczogJ2ticU51bWVyaWNhbElucHV0JyxcbiAgICBwcm92aWRlcnM6IFtLQlFfTlVNQkVSX0lOUFVUX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoYmx1ciknOiAnZm9jdXNDaGFuZ2VkKGZhbHNlKScsXG4gICAgICAgICcoZm9jdXMpJzogJ2ZvY3VzQ2hhbmdlZCh0cnVlKScsXG4gICAgICAgICcocGFzdGUpJzogJ29uUGFzdGUoJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93biknOiAnb25LZXlEb3duKCRldmVudCknLFxuICAgICAgICAnKGlucHV0KSc6ICdvbklucHV0KCRldmVudCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFOdW1iZXJJbnB1dCBpbXBsZW1lbnRzIEticUZvcm1GaWVsZENvbnRyb2w8YW55PiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIEVtaXRzIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMgKGVpdGhlciBkdWUgdG8gdXNlciBpbnB1dCBvciBwcm9ncmFtbWF0aWMgY2hhbmdlKS4gKi9cbiAgICB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyIHwgbnVsbD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSBkaXNhYmxlZCBzdGF0ZSBoYXMgY2hhbmdlZCAqL1xuICAgIGRpc2FibGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgZW1wdHk6IGJvb2xlYW47XG5cbiAgICByZXF1aXJlZDogYm9vbGVhbjtcblxuICAgIGVycm9yU3RhdGU6IGJvb2xlYW47XG5cbiAgICBjb250cm9sVHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpXG4gICAgYmlnU3RlcDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBzdGVwOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIG1pbjogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBtYXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgd2l0aFRob3VzYW5kU2VwYXJhdG9yOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEluY2x1ZGUgdGhvdXNhbmQgc2VwYXJhdG9yIGZyb20gY3VzdG9tIGluZGV4LiBGb3IgZXhhbXBsZSwgaXQgd2lsbCBiZSB1c2VmdWwgaW4gdGFibGVzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhcnRGb3JtYXR0aW5nRnJvbT86IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHZhbHVlKCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAob2xkVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSh0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSkpO1xuXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmFsdWU6IG51bWJlciB8IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRDaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBuZWVkIHRvIG51bGwgY2hlY2sgdGhlIGBibHVyYCBtZXRob2QsIGJlY2F1c2UgaXQncyB1bmRlZmluZWQgZHVyaW5nIFNTUi5cbiAgICAgICAgaWYgKG5ld1ZhbHVlICYmIGVsZW1lbnQuYmx1cikge1xuICAgICAgICAgICAgLy8gTm9ybWFsbHksIG5hdGl2ZSBpbnB1dCBlbGVtZW50cyBhdXRvbWF0aWNhbGx5IGJsdXIgaWYgdGhleSB0dXJuIGRpc2FibGVkLiBUaGlzIGJlaGF2aW9yXG4gICAgICAgICAgICAvLyBpcyBwcm9ibGVtYXRpYywgYmVjYXVzZSBpdCB3b3VsZCBtZWFuIHRoYXQgaXQgdHJpZ2dlcnMgYW5vdGhlciBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLFxuICAgICAgICAgICAgLy8gd2hpY2ggdGhlbiBjYXVzZXMgYSBjaGFuZ2VkIGFmdGVyIGNoZWNrZWQgZXJyb3IgaWYgdGhlIGlucHV0IGVsZW1lbnQgd2FzIGZvY3VzZWQgYmVmb3JlLlxuICAgICAgICAgICAgZWxlbWVudC5ibHVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgdmlld1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IG5nQ29udHJvbCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxOdW1iZXJMb2NhbGVDb25maWdzOiB7IGlkOiBzdHJpbmc7IGNvbmZpZzogTnVtYmVyTG9jYWxlQ29uZmlnIH1bXTtcblxuICAgIHByaXZhdGUgbnVtYmVyTG9jYWxlQ29uZmlnOiBOdW1iZXJMb2NhbGVDb25maWc7XG5cbiAgICBwcml2YXRlIHZhbHVlRnJvbVBhc3RlOiBudW1iZXIgfCBudWxsO1xuXG4gICAgcHJpdmF0ZSBsb2NhbGVTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3N0ZXAnKSBzdGVwOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2JpZy1zdGVwJykgYmlnU3RlcDogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdtaW4nKSBtaW46IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnbWF4JykgbWF4OiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IEticUxvY2FsZVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5zdGVwID0gaXNEaWdpdChzdGVwKSA/IHBhcnNlRmxvYXQoc3RlcCkgOiBTTUFMTF9TVEVQO1xuICAgICAgICB0aGlzLmJpZ1N0ZXAgPSBpc0RpZ2l0KGJpZ1N0ZXApID8gcGFyc2VGbG9hdChiaWdTdGVwKSA6IEJJR19TVEVQO1xuICAgICAgICB0aGlzLm1pbiA9IGlzRGlnaXQobWluKSA/IHBhcnNlRmxvYXQobWluKSA6IC1JbmZpbml0eTtcbiAgICAgICAgdGhpcy5tYXggPSBpc0RpZ2l0KG1heCkgPyBwYXJzZUZsb2F0KG1heCkgOiBJbmZpbml0eTtcblxuICAgICAgICBpZiAoJ3ZhbHVlQXNOdW1iZXInIGluIHRoaXMubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLm5hdGl2ZUVsZW1lbnQpLCAndmFsdWVBc051bWJlcicsIHtcbiAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tcmVzZXJ2ZWQta2V5d29yZHNcbiAgICAgICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IHBhcnNlRmxvYXQobm9ybWFsaXplU3BsaXR0ZXIodGhpcy52YWx1ZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc05hTihyZXMpID8gbnVsbCA6IHJlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWxsTnVtYmVyTG9jYWxlQ29uZmlncyA9IHRoaXMubG9jYWxlU2VydmljZT8ubG9jYWxlcy5pdGVtc1xuICAgICAgICAgICAgLm1hcCgobG9jYWxlSXRlbTogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGlkOiBsb2NhbGVJdGVtLmlkLCBjb25maWc6IHRoaXMubG9jYWxlU2VydmljZS5sb2NhbGVzW2xvY2FsZUl0ZW0uaWRdLmlucHV0Lm51bWJlciB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5sb2NhbGVTdWJzY3JpcHRpb24gPSB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXNcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbGVQYXJhbXMpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUVsZW1lbnQsICd0eXBlJywgJ3RleHQnKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NhbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmRpc2FibGVkQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgb25Db250YWluZXJDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdmFPbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBmb2N1c0NoYW5nZWQoaXNGb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0ZvY3VzZWQgIT09IHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gaXNGb2N1c2VkO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5XG4gICAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRlcHJlY2F0aW9uXG4gICAgICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuXG4gICAgICAgIGNvbnN0IGlzQ3RybEEgPSAoZSkgPT4gZS5rZXlDb2RlID09PSBBICYmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KTtcbiAgICAgICAgY29uc3QgaXNDdHJsQyA9IChlKSA9PiBlLmtleUNvZGUgPT09IEMgJiYgKGUuY3RybEtleSB8fCBlLm1ldGFLZXkpO1xuICAgICAgICBjb25zdCBpc0N0cmxWID0gKGUpID0+IGUua2V5Q29kZSA9PT0gViAmJiAoZS5jdHJsS2V5IHx8IGUubWV0YUtleSk7XG4gICAgICAgIGNvbnN0IGlzQ3RybFggPSAoZSkgPT4gZS5rZXlDb2RlID09PSBYICYmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KTtcbiAgICAgICAgY29uc3QgaXNDdHJsWiA9IChlKSA9PiBlLmtleUNvZGUgPT09IFogJiYgKGUuY3RybEtleSB8fCBlLm1ldGFLZXkpO1xuXG4gICAgICAgIGNvbnN0IGlzUGVyaW9kID0gKGUpID0+IHRoaXMubnVtYmVyTG9jYWxlQ29uZmlnLmdyb3VwU2VwYXJhdG9yLmluY2x1ZGVzKGUua2V5KVxuICAgICAgICAgICAgfHwgW3RoaXMubnVtYmVyTG9jYWxlQ29uZmlnLmZyYWN0aW9uU2VwYXJhdG9yLCAnLiddLmluY2x1ZGVzKGUua2V5KTtcblxuICAgICAgICBjb25zdCBtaW51c2VzID0gW05VTVBBRF9NSU5VUywgREFTSCwgRkZfTUlOVVNdO1xuICAgICAgICBjb25zdCBzZXJ2aWNlS2V5cyA9IFtERUxFVEUsIEJBQ0tTUEFDRSwgVEFCLCBFU0NBUEUsIEVOVEVSXTtcbiAgICAgICAgY29uc3QgYXJyb3dzID0gW0xFRlRfQVJST1csIFJJR0hUX0FSUk9XXTtcbiAgICAgICAgY29uc3QgYWxsb3dlZEtleXMgPSAgW0hPTUUsIEVORF0uY29uY2F0KGFycm93cykuY29uY2F0KHNlcnZpY2VLZXlzKS5jb25jYXQobWludXNlcyk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgbWludXNlcy5pbmNsdWRlcyhrZXlDb2RlKSAmJlxuICAgICAgICAgICAgKHRoaXMudmlld1ZhbHVlLmluY2x1ZGVzKGV2ZW50LmtleSkgfHwgdGhpcy5taW4gPj0gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNQZXJpb2QoZXZlbnQpKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSB0aGlzLm51bWJlckxvY2FsZUNvbmZpZy5mcmFjdGlvblNlcGFyYXRvciAmJlxuICAgICAgICAgICAgICAgIHRoaXMudmlld1ZhbHVlLmluZGV4T2YodGhpcy5udW1iZXJMb2NhbGVDb25maWcuZnJhY3Rpb25TZXBhcmF0b3IpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsb3dlZEtleXMuaW5kZXhPZihrZXlDb2RlKSAhPT0gLTEgfHxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBpc0N0cmxBLFxuICAgICAgICAgICAgICAgIGlzQ3RybEMsXG4gICAgICAgICAgICAgICAgaXNDdHJsVixcbiAgICAgICAgICAgICAgICBpc0N0cmxYLFxuICAgICAgICAgICAgICAgIGlzQ3RybFosXG4gICAgICAgICAgICAgICAgaXNGdW5jdGlvbktleSxcbiAgICAgICAgICAgICAgICBpc1BlcmlvZFxuICAgICAgICAgICAgXS5zb21lKChmbikgPT4gZm4oZXZlbnQpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIGxldCBpdCBoYXBwZW4sIGRvbid0IGRvIGFueXRoaW5nXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5zdXJlIHRoYXQgaXQgaXMgbm90IGEgbnVtYmVyIGFuZCBzdG9wIHRoZSBrZXlwcmVzc1xuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgfHwgIWlzTnVtYmVyS2V5KGV2ZW50KSAmJiAhaXNOdW1wYWRLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAvLyBwcm9jZXNzIHN0ZXBzXG4gICAgICAgICAgICBjb25zdCBzdGVwID0gZXZlbnQuc2hpZnRLZXkgPyB0aGlzLmJpZ1N0ZXAgOiB0aGlzLnN0ZXA7XG5cbiAgICAgICAgICAgIGlmIChrZXlDb2RlID09PSBVUF9BUlJPVykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcFVwKHN0ZXApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoa2V5Q29kZSA9PT0gRE9XTl9BUlJPVykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcERvd24oc3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0KGV2ZW50OiBJbnB1dEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZUxlbmd0aCA9IHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpPy5sZW5ndGggfHwgMDtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyb21QYXN0ZSA9IGV2ZW50LmlucHV0VHlwZSA9PT0gJ2luc2VydEZyb21QYXN0ZSc7XG4gICAgICAgICAgICBsZXQgZm9ybWF0dGVkVmFsdWU6IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBpZiAoZnJvbVBhc3RlKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih0aGlzLnZhbHVlRnJvbVBhc3RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLyp0aGlzLnZpZXdWYWx1ZSBpcyByYXcgYW5kIHNob3VsZCBiZSByZWZvcm1hdHRlZCB0byBsb2NhbGl6ZWQgbnVtYmVyICovXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdFZpZXdWYWx1ZSgpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0V2hlblNlcGFyYXRvckFkZGVkID0gMjtcblxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnModGhpcy52aWV3VmFsdWUubGVuZ3RoIC0gY3VycmVudFZhbHVlTGVuZ3RoKSA9PT0gb2Zmc2V0V2hlblNlcGFyYXRvckFkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCB8fCAwKSArIE1hdGguc2lnbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3VmFsdWUubGVuZ3RoIC0gY3VycmVudFZhbHVlTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdzZWxlY3Rpb25TdGFydCcsIGN1cnNvclBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5uYXRpdmVFbGVtZW50LCAnc2VsZWN0aW9uRW5kJywgY3Vyc29yUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZShmb3JtYXR0ZWRWYWx1ZSwgIWZyb21QYXN0ZSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdUb01vZGVsVXBkYXRlKGZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy52YWx1ZUZyb21QYXN0ZSA9IHRoaXMuY2hlY2tBbmROb3JtYWxpemVMb2NhbGl6ZWROdW1iZXIoZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpKTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVGcm9tUGFzdGUgPT09IG51bGwpIHsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgfVxuICAgIH1cblxuICAgIHN0ZXBVcChzdGVwOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gTWF0aC5tYXgoTWF0aC5taW4oYWRkKHRoaXMudmFsdWUgfHwgMCwgc3RlcCksIHRoaXMubWF4KSwgdGhpcy5taW4pO1xuXG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHRoaXMuZm9ybWF0TnVtYmVyKHJlcykpO1xuXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gcmVzO1xuICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlKHJlcyk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChyZXMpO1xuICAgIH1cblxuICAgIHN0ZXBEb3duKHN0ZXA6IG51bWJlcikge1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgICAgICBjb25zdCByZXMgPSBNYXRoLm1pbihNYXRoLm1heChhZGQodGhpcy52YWx1ZSB8fCAwLCAtc3RlcCksIHRoaXMubWluKSwgdGhpcy5tYXgpO1xuXG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHRoaXMuZm9ybWF0TnVtYmVyKHJlcykpO1xuXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gcmVzO1xuICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlKHJlcyk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChyZXMpO1xuICAgIH1cblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1lbXB0eVxuICAgIHByaXZhdGUgY3ZhT25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBwcml2YXRlIHNldFZpZXdWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCwgc2F2ZVBvc2l0aW9uOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSB0aGlzLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHZhbHVlKTtcblxuICAgICAgICBpZiAoc2F2ZVBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMubmF0aXZlRWxlbWVudCwgJ3NlbGVjdGlvblN0YXJ0JywgY3Vyc29yUG9zaXRpb24pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdzZWxlY3Rpb25FbmQnLCBjdXJzb3JQb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZpZXdUb01vZGVsVXBkYXRlKG5ld1ZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IG5ld1ZhbHVlID09PSBudWxsID8gbnVsbCA6ICt0aGlzLm5vcm1hbGl6ZU51bWJlcihuZXdWYWx1ZSk7XG5cbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG4gICAgICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobm9ybWFsaXplZFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubmdDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdFZpZXdWYWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMudmlld1ZhbHVlID09PSBudWxsIHx8IHRoaXMudmlld1ZhbHVlID09PSAnJyB8fCBOdW1iZXIuaXNOYU4oK3RoaXMubm9ybWFsaXplTnVtYmVyKHRoaXMudmlld1ZhbHVlKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy5udW1iZXJMb2NhbGVDb25maWcuZ3JvdXBTZXBhcmF0b3IuaW5jbHVkZXMoJyAnKVxuICAgICAgICAmJiB0aGlzLm51bWJlckxvY2FsZUNvbmZpZy5mcmFjdGlvblNlcGFyYXRvciA9PT0gJywnXG4gICAgICAgICAgICA/IC9bLC5dL1xuICAgICAgICAgICAgOiB0aGlzLm51bWJlckxvY2FsZUNvbmZpZy5mcmFjdGlvblNlcGFyYXRvcjtcblxuICAgICAgICBjb25zdCBbaW50UGFydCwgZnJhY3Rpb25QYXJ0XSA9IHRoaXMudmlld1ZhbHVlLnNwbGl0KHNlcGFyYXRvcilcbiAgICAgICAgICAgIC5tYXAoKHZhbHVlUGFydCkgPT4gdGhpcy5ub3JtYWxpemVOdW1iZXIodmFsdWVQYXJ0KSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTG9jYWxpemVkTnVtYmVyRnJvbVBhcnRzKCtpbnRQYXJ0LCBmcmFjdGlvblBhcnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBudWxsOyB9XG5cbiAgICAgICAgY29uc3QgW2ludFBhcnQsIGZyYWN0aW9uUGFydF0gPSB2YWx1ZS50b1N0cmluZygpLnNwbGl0KCcuJyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTG9jYWxpemVkTnVtYmVyRnJvbVBhcnRzKCtpbnRQYXJ0LCBmcmFjdGlvblBhcnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTG9jYWxpemVkTnVtYmVyRnJvbVBhcnRzKGludFBhcnQ6IG51bWJlciwgZnJhY3Rpb25QYXJ0Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHVzZUdyb3VwaW5nOiB0aGlzLndpdGhUaG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMjBcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy53aXRoVGhvdXNhbmRTZXBhcmF0b3IgJiYgdGhpcy5udW1iZXJMb2NhbGVDb25maWcuc3RhcnRGb3JtYXR0aW5nRnJvbSkge1xuICAgICAgICAgICAgZm9ybWF0T3B0aW9ucy51c2VHcm91cGluZyA9IGludFBhcnQgPj0gTWF0aC5wb3coXG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW1hZ2ljLW51bWJlcnNcbiAgICAgICAgICAgICAgICAxMCwgdGhpcy5udW1iZXJMb2NhbGVDb25maWcuc3RhcnRGb3JtYXR0aW5nRnJvbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxvY2FsZUlkID0gdGhpcy5sb2NhbGVTZXJ2aWNlLmlkID09PSAnZXMtTEEnID8gJ3J1LVJVJyA6IHRoaXMubG9jYWxlU2VydmljZS5pZDtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlSWQsIGZvcm1hdE9wdGlvbnMpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRGcmFjdGlvblBhcnQgPSBmcmFjdGlvblBhcnQ/LnNwbGl0KCcnKVxuICAgICAgICAgICAgLm1hcCgobnVtQ2hhcikgPT4gZm9ybWF0dGVyLmZvcm1hdCgrbnVtQ2hhcikpLmpvaW4oJycpO1xuXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRGcmFjdGlvblBhcnQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBmb3JtYXR0ZXIuZm9ybWF0KGludFBhcnQpXG4gICAgICAgICAgICA6IGAkeyBmb3JtYXR0ZXIuZm9ybWF0KGludFBhcnQpIH0keyB0aGlzLm51bWJlckxvY2FsZUNvbmZpZy5mcmFjdGlvblNlcGFyYXRvciB9JHsgZm9ybWF0dGVkRnJhY3Rpb25QYXJ0IH1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBudW1iZXIgd2l0aG91dCBsb2NhbGl6ZWQgc2VwYXJhdG9yc1xuICAgICAqL1xuICAgIHByaXZhdGUgbm9ybWFsaXplTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBjdXN0b21Db25maWc/OiBOdW1iZXJMb2NhbGVDb25maWcpOiBzdHJpbmcge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gJyc7IH1cblxuICAgICAgICBjb25zdCB7IGdyb3VwU2VwYXJhdG9yLCBmcmFjdGlvblNlcGFyYXRvciB9ID0gY3VzdG9tQ29uZmlnIHx8IHRoaXMubnVtYmVyTG9jYWxlQ29uZmlnO1xuICAgICAgICBjb25zdCBncm91cFNlcGFyYXRvclJlZ2V4cCA9IG5ldyBSZWdFeHAoYFske2dyb3VwU2VwYXJhdG9yLmpvaW4oJycpfV1gLCAnZycpO1xuICAgICAgICBjb25zdCBmcmFjdGlvblNlcGFyYXRvclJlZ2V4cCA9IG5ldyBSZWdFeHAoYFxcXFwke2ZyYWN0aW9uU2VwYXJhdG9yfWAsICdnJyk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKClcbiAgICAgICAgICAgIC5yZXBsYWNlKGdyb3VwU2VwYXJhdG9yUmVnZXhwLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKGZyYWN0aW9uU2VwYXJhdG9yUmVnZXhwLCAnLicpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9jYWxlUGFyYW1zID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5udW1iZXJMb2NhbGVDb25maWcgPSB0aGlzLmxvY2FsZVNlcnZpY2UubG9jYWxlc1tpZF0uaW5wdXQubnVtYmVyO1xuXG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrQW5kTm9ybWFsaXplTG9jYWxpemVkTnVtYmVyKG51bTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICBpZiAobnVtID09PSBudWxsIHx8IG51bSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBudWxsOyB9XG5cbiAgICAgICAgLyogaWYgc29tZSBsb2NhbGUgaW5wdXQgY29uZmlnIHNhdGlzZmllcyBwYXN0ZWQgbnVtYmVyLCB0cnkgdG8gbm9ybWFsaXplIHdpdGggc2VsZWN0ZWQgbG9jYWxlIGNvbmZpZyAqL1xuICAgICAgICBsZXQgbnVtYmVyT3V0cHV0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCB7IGNvbmZpZyB9IG9mIHRoaXMuYWxsTnVtYmVyTG9jYWxlQ29uZmlncykge1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9ICt0aGlzLm5vcm1hbGl6ZU51bWJlcihudW0sIGNvbmZpZyk7XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTihub3JtYWxpemVkKSkge1xuICAgICAgICAgICAgICAgIG51bWJlck91dHB1dCA9IG5vcm1hbGl6ZWQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVtYmVyT3V0cHV0O1xuICAgIH1cbn1cbiJdfQ==
375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9pbnB1dC9pbnB1dC1udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUVILFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUMsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQ0gsQ0FBQyxFQUNELFNBQVMsRUFDVCxDQUFDLEVBQ0QsSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLEVBQ1YsR0FBRyxFQUNILEtBQUssRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLElBQUksRUFDSixhQUFhLEVBQ2IsV0FBVyxFQUNYLFdBQVcsRUFDWCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxHQUFHLEVBQ0gsUUFBUSxFQUNSLENBQUMsRUFDRCxDQUFDLEVBQ0QsQ0FBQyxFQUNKLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUU3QyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQzNCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFFNUIsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWE7SUFDM0MsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcs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RUQsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztpSUE1YVEsY0FBYyxxRUFnSFIsTUFBTSw4QkFDTixVQUFVLDhCQUNWLEtBQUssOEJBQ0wsS0FBSyw4QkFDSSxrQkFBa0I7cUhBcEhqQyxjQUFjLGtiQVRaLENBQUMsK0JBQStCLENBQUM7OzJGQVNuQyxjQUFjO2tCQVoxQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUM1QyxJQUFJLEVBQUU7d0JBQ0YsUUFBUSxFQUFFLHFCQUFxQjt3QkFDL0IsU0FBUyxFQUFFLG9CQUFvQjt3QkFDL0IsU0FBUyxFQUFFLGlCQUFpQjt3QkFDNUIsV0FBVyxFQUFFLG1CQUFtQjt3QkFDaEMsU0FBUyxFQUFFLGlCQUFpQjtxQkFDL0I7aUJBQ0o7OzBCQWlIUSxTQUFTOzJCQUFDLE1BQU07OzBCQUNoQixTQUFTOzJCQUFDLFVBQVU7OzBCQUNwQixTQUFTOzJCQUFDLEtBQUs7OzBCQUNmLFNBQVM7MkJBQUMsS0FBSzs7MEJBQ2YsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0I7eUNBOUYxQyxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4scUJBQXFCO3NCQURwQixLQUFLO2dCQU9OLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJRixLQUFLO3NCQURSLEtBQUs7Z0JBbUJGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEEsXG4gICAgQkFDS1NQQUNFLFxuICAgIEMsXG4gICAgREFTSCxcbiAgICBERUxFVEUsXG4gICAgRE9XTl9BUlJPVyxcbiAgICBFTkQsXG4gICAgRU5URVIsXG4gICAgRVNDQVBFLFxuICAgIEZGX01JTlVTLFxuICAgIEhPTUUsXG4gICAgaXNGdW5jdGlvbktleSxcbiAgICBpc051bWJlcktleSxcbiAgICBpc051bXBhZEtleSxcbiAgICBMRUZUX0FSUk9XLFxuICAgIE5VTVBBRF9NSU5VUyxcbiAgICBSSUdIVF9BUlJPVyxcbiAgICBUQUIsXG4gICAgVVBfQVJST1csXG4gICAgVixcbiAgICBYLFxuICAgIFpcbn0gZnJvbSAnQGtvb2JpcS9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgS0JRX0xPQ0FMRV9TRVJWSUNFLCBLYnFMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgQklHX1NURVAgPSAxMDtcbmV4cG9ydCBjb25zdCBTTUFMTF9TVEVQID0gMTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNwbGl0dGVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLnJlcGxhY2UoLywvZywgJy4nKSA6IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGbG9hdCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eLT9cXGQrXFwuXFxkKyQvLnRlc3QodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXi0/XFxkKyQvLnRlc3QodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaWdpdCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzRmxvYXQodmFsdWUpIHx8IGlzSW50KHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByZWNpc2lvbih2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBhcnIgPSB2YWx1ZS50b1N0cmluZygpLnNwbGl0KCcuJyk7XG5cbiAgICByZXR1cm4gYXJyLmxlbmd0aCA9PT0gMSA/IDEgOiBNYXRoLnBvdygxMCwgYXJyWzFdLmxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQodmFsdWUxOiBudW1iZXIsIHZhbHVlMjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBwcmVjaXNpb24gPSBNYXRoLm1heChnZXRQcmVjaXNpb24odmFsdWUxKSwgZ2V0UHJlY2lzaW9uKHZhbHVlMikpO1xuXG4gICAgcmV0dXJuICh2YWx1ZTEgKiBwcmVjaXNpb24gKyB2YWx1ZTIgKiBwcmVjaXNpb24pIC8gcHJlY2lzaW9uO1xufVxuXG5leHBvcnQgY29uc3QgS0JRX05VTUJFUl9JTlBVVF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEticU51bWJlcklucHV0KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuaW50ZXJmYWNlIE51bWJlckxvY2FsZUNvbmZpZyB7XG4gICAgZ3JvdXBTZXBhcmF0b3I6IHN0cmluZ1tdO1xuICAgIGZyYWN0aW9uU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgc3RhcnRGb3JtYXR0aW5nRnJvbT86IG51bWJlcjtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IGBpbnB1dFtrYnFJbnB1dF1bdHlwZT1cIm51bWJlclwiXWAsXG4gICAgZXhwb3J0QXM6ICdrYnFOdW1lcmljYWxJbnB1dCcsXG4gICAgcHJvdmlkZXJzOiBbS0JRX05VTUJFUl9JTlBVVF9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgaG9zdDoge1xuICAgICAgICAnKGJsdXIpJzogJ2ZvY3VzQ2hhbmdlZChmYWxzZSknLFxuICAgICAgICAnKGZvY3VzKSc6ICdmb2N1c0NoYW5nZWQodHJ1ZSknLFxuICAgICAgICAnKHBhc3RlKSc6ICdvblBhc3RlKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5RG93bigkZXZlbnQpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnb25JbnB1dCgkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxTnVtYmVySW5wdXQgaW1wbGVtZW50cyBLYnFGb3JtRmllbGRDb250cm9sPGFueT4sIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzIChlaXRoZXIgZHVlIHRvIHVzZXIgaW5wdXQgb3IgcHJvZ3JhbW1hdGljIGNoYW5nZSkuICovXG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IG51bGw+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgZGlzYWJsZWQgc3RhdGUgaGFzIGNoYW5nZWQgKi9cbiAgICBkaXNhYmxlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHJlYWRvbmx5IHN0YXRlQ2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBpZDogc3RyaW5nO1xuXG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIGVtcHR5OiBib29sZWFuO1xuXG4gICAgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBlcnJvclN0YXRlOiBib29sZWFuO1xuXG4gICAgY29udHJvbFR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGJpZ1N0ZXA6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgc3RlcDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBtaW46IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHdpdGhUaG91c2FuZFNlcGFyYXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJbmNsdWRlIHRob3VzYW5kIHNlcGFyYXRvciBmcm9tIGN1c3RvbSBpbmRleC4gRm9yIGV4YW1wbGUsIGl0IHdpbGwgYmUgdXNlZnVsIGluIHRhYmxlcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YXJ0Rm9ybWF0dGluZ0Zyb20/OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCB2YWx1ZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKG9sZFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRWaWV3VmFsdWUodGhpcy5mb3JtYXROdW1iZXIodmFsdWUpKTtcblxuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbHVlOiBudW1iZXIgfCBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBudWxsIGNoZWNrIHRoZSBgYmx1cmAgbWV0aG9kLCBiZWNhdXNlIGl0J3MgdW5kZWZpbmVkIGR1cmluZyBTU1IuXG4gICAgICAgIGlmIChuZXdWYWx1ZSAmJiBlbGVtZW50LmJsdXIpIHtcbiAgICAgICAgICAgIC8vIE5vcm1hbGx5LCBuYXRpdmUgaW5wdXQgZWxlbWVudHMgYXV0b21hdGljYWxseSBibHVyIGlmIHRoZXkgdHVybiBkaXNhYmxlZC4gVGhpcyBiZWhhdmlvclxuICAgICAgICAgICAgLy8gaXMgcHJvYmxlbWF0aWMsIGJlY2F1c2UgaXQgd291bGQgbWVhbiB0aGF0IGl0IHRyaWdnZXJzIGFub3RoZXIgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSxcbiAgICAgICAgICAgIC8vIHdoaWNoIHRoZW4gY2F1c2VzIGEgY2hhbmdlZCBhZnRlciBjaGVja2VkIGVycm9yIGlmIHRoZSBpbnB1dCBlbGVtZW50IHdhcyBmb2N1c2VkIGJlZm9yZS5cbiAgICAgICAgICAgIGVsZW1lbnQuYmx1cigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IHZpZXdWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgIH1cblxuICAgIGdldCBuZ0NvbnRyb2woKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsTnVtYmVyTG9jYWxlQ29uZmlnczogeyBpZDogc3RyaW5nOyBjb25maWc6IE51bWJlckxvY2FsZUNvbmZpZyB9W107XG5cbiAgICBwcml2YXRlIG51bWJlckxvY2FsZUNvbmZpZzogTnVtYmVyTG9jYWxlQ29uZmlnO1xuXG4gICAgcHJpdmF0ZSB2YWx1ZUZyb21QYXN0ZTogbnVtYmVyIHwgbnVsbDtcblxuICAgIHByaXZhdGUgbG9jYWxlU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBAQXR0cmlidXRlKCdzdGVwJykgc3RlcDogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdiaWctc3RlcCcpIGJpZ1N0ZXA6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnbWluJykgbWluOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ21heCcpIG1heDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSkgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlOiBLYnFMb2NhbGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuc3RlcCA9IGlzRGlnaXQoc3RlcCkgPyBwYXJzZUZsb2F0KHN0ZXApIDogU01BTExfU1RFUDtcbiAgICAgICAgdGhpcy5iaWdTdGVwID0gaXNEaWdpdChiaWdTdGVwKSA/IHBhcnNlRmxvYXQoYmlnU3RlcCkgOiBCSUdfU1RFUDtcbiAgICAgICAgdGhpcy5taW4gPSBpc0RpZ2l0KG1pbikgPyBwYXJzZUZsb2F0KG1pbikgOiAtSW5maW5pdHk7XG4gICAgICAgIHRoaXMubWF4ID0gaXNEaWdpdChtYXgpID8gcGFyc2VGbG9hdChtYXgpIDogSW5maW5pdHk7XG5cbiAgICAgICAgaWYgKCd2YWx1ZUFzTnVtYmVyJyBpbiB0aGlzLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5uYXRpdmVFbGVtZW50KSwgJ3ZhbHVlQXNOdW1iZXInLCB7XG4gICAgICAgICAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBwYXJzZUZsb2F0KG5vcm1hbGl6ZVNwbGl0dGVyKHRoaXMudmFsdWUpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNOYU4ocmVzKSA/IG51bGwgOiByZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFsbE51bWJlckxvY2FsZUNvbmZpZ3MgPSB0aGlzLmxvY2FsZVNlcnZpY2U/LmxvY2FsZXMuaXRlbXMubWFwKFxuICAgICAgICAgICAgKGxvY2FsZUl0ZW06IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpZDogbG9jYWxlSXRlbS5pZCwgY29uZmlnOiB0aGlzLmxvY2FsZVNlcnZpY2UubG9jYWxlc1tsb2NhbGVJdGVtLmlkXS5pbnB1dC5udW1iZXIgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmxvY2FsZVN1YnNjcmlwdGlvbiA9IHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlcy5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbGVQYXJhbXMpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUVsZW1lbnQsICd0eXBlJywgJ3RleHQnKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NhbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmRpc2FibGVkQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgb25Db250YWluZXJDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdmFPbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBmb2N1c0NoYW5nZWQoaXNGb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0ZvY3VzZWQgIT09IHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gaXNGb2N1c2VkO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG5cbiAgICAgICAgY29uc3QgaXNDdHJsQSA9IChlKSA9PiBlLmtleUNvZGUgPT09IEEgJiYgKGUuY3RybEtleSB8fCBlLm1ldGFLZXkpO1xuICAgICAgICBjb25zdCBpc0N0cmxDID0gKGUpID0+IGUua2V5Q29kZSA9PT0gQyAmJiAoZS5jdHJsS2V5IHx8IGUubWV0YUtleSk7XG4gICAgICAgIGNvbnN0IGlzQ3RybFYgPSAoZSkgPT4gZS5rZXlDb2RlID09PSBWICYmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KTtcbiAgICAgICAgY29uc3QgaXNDdHJsWCA9IChlKSA9PiBlLmtleUNvZGUgPT09IFggJiYgKGUuY3RybEtleSB8fCBlLm1ldGFLZXkpO1xuICAgICAgICBjb25zdCBpc0N0cmxaID0gKGUpID0+IGUua2V5Q29kZSA9PT0gWiAmJiAoZS5jdHJsS2V5IHx8IGUubWV0YUtleSk7XG5cbiAgICAgICAgY29uc3QgaXNQZXJpb2QgPSAoZSkgPT5cbiAgICAgICAgICAgIHRoaXMubnVtYmVyTG9jYWxlQ29uZmlnLmdyb3VwU2VwYXJhdG9yLmluY2x1ZGVzKGUua2V5KSB8fFxuICAgICAgICAgICAgW3RoaXMubnVtYmVyTG9jYWxlQ29uZmlnLmZyYWN0aW9uU2VwYXJhdG9yLCAnLiddLmluY2x1ZGVzKGUua2V5KTtcblxuICAgICAgICBjb25zdCBtaW51c2VzID0gW05VTVBBRF9NSU5VUywgREFTSCwgRkZfTUlOVVNdO1xuICAgICAgICBjb25zdCBzZXJ2aWNlS2V5cyA9IFtERUxFVEUsIEJBQ0tTUEFDRSwgVEFCLCBFU0NBUEUsIEVOVEVSXTtcbiAgICAgICAgY29uc3QgYXJyb3dzID0gW0xFRlRfQVJST1csIFJJR0hUX0FSUk9XXTtcbiAgICAgICAgY29uc3QgYWxsb3dlZEtleXMgPSBbSE9NRSwgRU5EXS5jb25jYXQoYXJyb3dzKS5jb25jYXQoc2VydmljZUtleXMpLmNvbmNhdChtaW51c2VzKTtcblxuICAgICAgICBpZiAobWludXNlcy5pbmNsdWRlcyhrZXlDb2RlKSAmJiAodGhpcy52aWV3VmFsdWUuaW5jbHVkZXMoZXZlbnQua2V5KSB8fCB0aGlzLm1pbiA+PSAwKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzUGVyaW9kKGV2ZW50KSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGV2ZW50LmtleSA9PT0gdGhpcy5udW1iZXJMb2NhbGVDb25maWcuZnJhY3Rpb25TZXBhcmF0b3IgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdWYWx1ZS5pbmRleE9mKHRoaXMubnVtYmVyTG9jYWxlQ29uZmlnLmZyYWN0aW9uU2VwYXJhdG9yKSAhPT0gLTFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsb3dlZEtleXMuaW5kZXhPZihrZXlDb2RlKSAhPT0gLTEgfHwgW1xuICAgICAgICAgICAgICAgIGlzQ3RybEEsXG4gICAgICAgICAgICAgICAgaXNDdHJsQyxcbiAgICAgICAgICAgICAgICBpc0N0cmxWLFxuICAgICAgICAgICAgICAgIGlzQ3RybFgsXG4gICAgICAgICAgICAgICAgaXNDdHJsWixcbiAgICAgICAgICAgICAgICBpc0Z1bmN0aW9uS2V5LFxuICAgICAgICAgICAgICAgIGlzUGVyaW9kXG4gICAgICAgICAgICBdLnNvbWUoKGZuKSA9PiBmbihldmVudCkpKSB7XG4gICAgICAgICAgICAvLyBsZXQgaXQgaGFwcGVuLCBkb24ndCBkbyBhbnl0aGluZ1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEVuc3VyZSB0aGF0IGl0IGlzIG5vdCBhIG51bWJlciBhbmQgc3RvcCB0aGUga2V5cHJlc3NcbiAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8ICghaXNOdW1iZXJLZXkoZXZlbnQpICYmICFpc051bXBhZEtleShldmVudCkpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAvLyBwcm9jZXNzIHN0ZXBzXG4gICAgICAgICAgICBjb25zdCBzdGVwID0gZXZlbnQuc2hpZnRLZXkgPyB0aGlzLmJpZ1N0ZXAgOiB0aGlzLnN0ZXA7XG5cbiAgICAgICAgICAgIGlmIChrZXlDb2RlID09PSBVUF9BUlJPVykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcFVwKHN0ZXApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoa2V5Q29kZSA9PT0gRE9XTl9BUlJPVykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcERvd24oc3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0KGV2ZW50OiBJbnB1dEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZUxlbmd0aCA9IHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpPy5sZW5ndGggfHwgMDtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyb21QYXN0ZSA9IGV2ZW50LmlucHV0VHlwZSA9PT0gJ2luc2VydEZyb21QYXN0ZSc7XG4gICAgICAgICAgICBsZXQgZm9ybWF0dGVkVmFsdWU6IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBpZiAoZnJvbVBhc3RlKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih0aGlzLnZhbHVlRnJvbVBhc3RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLyp0aGlzLnZpZXdWYWx1ZSBpcyByYXcgYW5kIHNob3VsZCBiZSByZWZvcm1hdHRlZCB0byBsb2NhbGl6ZWQgbnVtYmVyICovXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdFZpZXdWYWx1ZSgpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0V2hlblNlcGFyYXRvckFkZGVkID0gMjtcblxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnModGhpcy52aWV3VmFsdWUubGVuZ3RoIC0gY3VycmVudFZhbHVlTGVuZ3RoKSA9PT0gb2Zmc2V0V2hlblNlcGFyYXRvckFkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCB8fCAwKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguc2lnbih0aGlzLnZpZXdWYWx1ZS5sZW5ndGggLSBjdXJyZW50VmFsdWVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMubmF0aXZlRWxlbWVudCwgJ3NlbGVjdGlvblN0YXJ0JywgY3Vyc29yUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdzZWxlY3Rpb25FbmQnLCBjdXJzb3JQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKGZvcm1hdHRlZFZhbHVlLCAhZnJvbVBhc3RlKTtcbiAgICAgICAgICAgIHRoaXMudmlld1RvTW9kZWxVcGRhdGUoZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLnZhbHVlRnJvbVBhc3RlID0gdGhpcy5jaGVja0FuZE5vcm1hbGl6ZUxvY2FsaXplZE51bWJlcihldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0JykpO1xuICAgICAgICBpZiAodGhpcy52YWx1ZUZyb21QYXN0ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0ZXBVcChzdGVwOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gTWF0aC5tYXgoTWF0aC5taW4oYWRkKHRoaXMudmFsdWUgfHwgMCwgc3RlcCksIHRoaXMubWF4KSwgdGhpcy5taW4pO1xuXG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHRoaXMuZm9ybWF0TnVtYmVyKHJlcykpO1xuXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gcmVzO1xuICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlKHJlcyk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChyZXMpO1xuICAgIH1cblxuICAgIHN0ZXBEb3duKHN0ZXA6IG51bWJlcikge1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgICAgICBjb25zdCByZXMgPSBNYXRoLm1pbihNYXRoLm1heChhZGQodGhpcy52YWx1ZSB8fCAwLCAtc3RlcCksIHRoaXMubWluKSwgdGhpcy5tYXgpO1xuXG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHRoaXMuZm9ybWF0TnVtYmVyKHJlcykpO1xuXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gcmVzO1xuICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlKHJlcyk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChyZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3ZhT25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBwcml2YXRlIHNldFZpZXdWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCwgc2F2ZVBvc2l0aW9uOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSB0aGlzLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHZhbHVlKTtcblxuICAgICAgICBpZiAoc2F2ZVBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMubmF0aXZlRWxlbWVudCwgJ3NlbGVjdGlvblN0YXJ0JywgY3Vyc29yUG9zaXRpb24pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdzZWxlY3Rpb25FbmQnLCBjdXJzb3JQb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZpZXdUb01vZGVsVXBkYXRlKG5ld1ZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IG5ld1ZhbHVlID09PSBudWxsID8gbnVsbCA6ICt0aGlzLm5vcm1hbGl6ZU51bWJlcihuZXdWYWx1ZSk7XG5cbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG4gICAgICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobm9ybWFsaXplZFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubmdDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdFZpZXdWYWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMudmlld1ZhbHVlID09PSBudWxsIHx8IHRoaXMudmlld1ZhbHVlID09PSAnJyB8fCBOdW1iZXIuaXNOYU4oK3RoaXMubm9ybWFsaXplTnVtYmVyKHRoaXMudmlld1ZhbHVlKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID1cbiAgICAgICAgICAgIHRoaXMubnVtYmVyTG9jYWxlQ29uZmlnLmdyb3VwU2VwYXJhdG9yLmluY2x1ZGVzKCcgJykgJiYgdGhpcy5udW1iZXJMb2NhbGVDb25maWcuZnJhY3Rpb25TZXBhcmF0b3IgPT09ICcsJ1xuICAgICAgICAgICAgICAgID8gL1ssLl0vXG4gICAgICAgICAgICAgICAgOiB0aGlzLm51bWJlckxvY2FsZUNvbmZpZy5mcmFjdGlvblNlcGFyYXRvcjtcblxuICAgICAgICBjb25zdCBbaW50UGFydCwgZnJhY3Rpb25QYXJ0XSA9IHRoaXMudmlld1ZhbHVlXG4gICAgICAgICAgICAuc3BsaXQoc2VwYXJhdG9yKVxuICAgICAgICAgICAgLm1hcCgodmFsdWVQYXJ0KSA9PiB0aGlzLm5vcm1hbGl6ZU51bWJlcih2YWx1ZVBhcnQpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVMb2NhbGl6ZWROdW1iZXJGcm9tUGFydHMoK2ludFBhcnQsIGZyYWN0aW9uUGFydCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2ludFBhcnQsIGZyYWN0aW9uUGFydF0gPSB2YWx1ZS50b1N0cmluZygpLnNwbGl0KCcuJyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTG9jYWxpemVkTnVtYmVyRnJvbVBhcnRzKCtpbnRQYXJ0LCBmcmFjdGlvblBhcnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTG9jYWxpemVkTnVtYmVyRnJvbVBhcnRzKGludFBhcnQ6IG51bWJlciwgZnJhY3Rpb25QYXJ0Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHVzZUdyb3VwaW5nOiB0aGlzLndpdGhUaG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMjBcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy53aXRoVGhvdXNhbmRTZXBhcmF0b3IgJiYgdGhpcy5udW1iZXJMb2NhbGVDb25maWcuc3RhcnRGb3JtYXR0aW5nRnJvbSkge1xuICAgICAgICAgICAgZm9ybWF0T3B0aW9ucy51c2VHcm91cGluZyA9IGludFBhcnQgPj0gTWF0aC5wb3coMTAsIHRoaXMubnVtYmVyTG9jYWxlQ29uZmlnLnN0YXJ0Rm9ybWF0dGluZ0Zyb20pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9jYWxlSWQgPSB0aGlzLmxvY2FsZVNlcnZpY2UuaWQgPT09ICdlcy1MQScgPyAncnUtUlUnIDogdGhpcy5sb2NhbGVTZXJ2aWNlLmlkO1xuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGVJZCwgZm9ybWF0T3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZEZyYWN0aW9uUGFydCA9IGZyYWN0aW9uUGFydFxuICAgICAgICAgICAgPy5zcGxpdCgnJylcbiAgICAgICAgICAgIC5tYXAoKG51bUNoYXIpID0+IGZvcm1hdHRlci5mb3JtYXQoK251bUNoYXIpKVxuICAgICAgICAgICAgLmpvaW4oJycpO1xuXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRGcmFjdGlvblBhcnQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBmb3JtYXR0ZXIuZm9ybWF0KGludFBhcnQpXG4gICAgICAgICAgICA6IGAke2Zvcm1hdHRlci5mb3JtYXQoaW50UGFydCl9JHt0aGlzLm51bWJlckxvY2FsZUNvbmZpZy5mcmFjdGlvblNlcGFyYXRvcn0ke2Zvcm1hdHRlZEZyYWN0aW9uUGFydH1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBudW1iZXIgd2l0aG91dCBsb2NhbGl6ZWQgc2VwYXJhdG9yc1xuICAgICAqL1xuICAgIHByaXZhdGUgbm9ybWFsaXplTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBjdXN0b21Db25maWc/OiBOdW1iZXJMb2NhbGVDb25maWcpOiBzdHJpbmcge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBncm91cFNlcGFyYXRvciwgZnJhY3Rpb25TZXBhcmF0b3IgfSA9IGN1c3RvbUNvbmZpZyB8fCB0aGlzLm51bWJlckxvY2FsZUNvbmZpZztcbiAgICAgICAgY29uc3QgZ3JvdXBTZXBhcmF0b3JSZWdleHAgPSBuZXcgUmVnRXhwKGBbJHtncm91cFNlcGFyYXRvci5qb2luKCcnKX1dYCwgJ2cnKTtcbiAgICAgICAgY29uc3QgZnJhY3Rpb25TZXBhcmF0b3JSZWdleHAgPSBuZXcgUmVnRXhwKGBcXFxcJHtmcmFjdGlvblNlcGFyYXRvcn1gLCAnZycpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoZ3JvdXBTZXBhcmF0b3JSZWdleHAsICcnKS5yZXBsYWNlKGZyYWN0aW9uU2VwYXJhdG9yUmVnZXhwLCAnLicpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9jYWxlUGFyYW1zID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5udW1iZXJMb2NhbGVDb25maWcgPSB0aGlzLmxvY2FsZVNlcnZpY2UubG9jYWxlc1tpZF0uaW5wdXQubnVtYmVyO1xuXG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBjaGVja0FuZE5vcm1hbGl6ZUxvY2FsaXplZE51bWJlcihudW06IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgaWYgKG51bSA9PT0gbnVsbCB8fCBudW0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBpZiBzb21lIGxvY2FsZSBpbnB1dCBjb25maWcgc2F0aXNmaWVzIHBhc3RlZCBudW1iZXIsIHRyeSB0byBub3JtYWxpemUgd2l0aCBzZWxlY3RlZCBsb2NhbGUgY29uZmlnICovXG4gICAgICAgIGxldCBudW1iZXJPdXRwdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IHsgY29uZmlnIH0gb2YgdGhpcy5hbGxOdW1iZXJMb2NhbGVDb25maWdzKSB7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gK3RoaXMubm9ybWFsaXplTnVtYmVyKG51bSwgY29uZmlnKTtcbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG5vcm1hbGl6ZWQpKSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyT3V0cHV0ID0gbm9ybWFsaXplZDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudW1iZXJPdXRwdXQ7XG4gICAgfVxufVxuIl19