slick-components 5.0.28 → 17.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/{esm2020 → esm2022}/public-api.mjs +44 -44
  2. package/{esm2020 → esm2022}/slick-accordion/slick-accordion-item-header.component.mjs +14 -14
  3. package/esm2022/slick-accordion/slick-accordion-item.component.mjs +92 -0
  4. package/{esm2020 → esm2022}/slick-accordion/slick-accordion.component.mjs +80 -80
  5. package/{esm2020 → esm2022}/slick-accordion/slick-accordion.module.mjs +23 -23
  6. package/{esm2020 → esm2022}/slick-auto-complete/slick-auto-complete-list-item-template.directive.mjs +22 -22
  7. package/esm2022/slick-auto-complete/slick-auto-complete.component.mjs +388 -0
  8. package/{esm2020 → esm2022}/slick-auto-complete/slick-auto-complete.module.mjs +25 -25
  9. package/esm2022/slick-button-spinner/slick-button-spinner.component.mjs +175 -0
  10. package/{esm2020 → esm2022}/slick-button-spinner/slick-button-spinner.module.mjs +19 -19
  11. package/esm2022/slick-calendar/slick-calendar.component.mjs +271 -0
  12. package/{esm2020 → esm2022}/slick-calendar/slick-calendar.module.mjs +19 -19
  13. package/{esm2020 → esm2022}/slick-card/slick-card-header.component.mjs +14 -14
  14. package/esm2022/slick-card/slick-card.component.mjs +42 -0
  15. package/{esm2020 → esm2022}/slick-card/slick-card.module.mjs +20 -20
  16. package/{esm2020 → esm2022}/slick-components.mjs +4 -4
  17. package/{esm2020 → esm2022}/slick-confirm-dialog/slick-confirm-dialog.component.mjs +65 -65
  18. package/{esm2020 → esm2022}/slick-confirm-dialog/slick-confirm-dialog.module.mjs +20 -20
  19. package/{esm2020 → esm2022}/slick-container/slick-container-body.component.mjs +24 -24
  20. package/{esm2020 → esm2022}/slick-container/slick-container-footer.component.mjs +20 -20
  21. package/{esm2020 → esm2022}/slick-container/slick-container-header.component.mjs +20 -20
  22. package/{esm2020 → esm2022}/slick-container/slick-container.component.mjs +21 -21
  23. package/{esm2020 → esm2022}/slick-container/slick-container.module.mjs +25 -25
  24. package/{esm2020 → esm2022}/slick-context-menu/slick-context-menu-item.component.mjs +14 -14
  25. package/esm2022/slick-context-menu/slick-context-menu.component.mjs +48 -0
  26. package/{esm2020 → esm2022}/slick-context-menu/slick-context-menu.module.mjs +20 -20
  27. package/{esm2020 → esm2022}/slick-currency-mask/slick-currency-mask-options.model.mjs +11 -11
  28. package/esm2022/slick-currency-mask/slick-currency-mask.directive.mjs +233 -0
  29. package/{esm2020 → esm2022}/slick-currency-mask/slick-currency-mask.module.mjs +19 -19
  30. package/esm2022/slick-date-picker/slick-date-picker.component.mjs +278 -0
  31. package/{esm2020 → esm2022}/slick-date-picker/slick-date-picker.module.mjs +21 -21
  32. package/{esm2020 → esm2022}/slick-dialog/slick-dialog-footer.component.mjs +24 -24
  33. package/esm2022/slick-dialog/slick-dialog.component.mjs +294 -0
  34. package/{esm2020 → esm2022}/slick-dialog/slick-dialog.module.mjs +23 -23
  35. package/esm2022/slick-dialog/slick-dialog.service.mjs +68 -0
  36. package/{esm2020 → esm2022}/slick-drag-drop/slick-drag-drop.directive.mjs +13 -13
  37. package/{esm2020 → esm2022}/slick-drag-drop/slick-drag-drop.module.mjs +21 -21
  38. package/{esm2020 → esm2022}/slick-drag-drop/slick-draggable.directive.mjs +13 -13
  39. package/{esm2020 → esm2022}/slick-drop-down/slick-drop-down-button.model.mjs +7 -7
  40. package/esm2022/slick-drop-down/slick-drop-down.component.mjs +447 -0
  41. package/{esm2020 → esm2022}/slick-drop-down/slick-drop-down.module.mjs +24 -24
  42. package/esm2022/slick-drop-down/slick-drop-down.service.mjs +55 -0
  43. package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list-grab.directive.mjs +18 -18
  44. package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list-item.directive.mjs +18 -18
  45. package/esm2022/slick-drop-list/slick-drop-list.directive.mjs +215 -0
  46. package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list.module.mjs +23 -23
  47. package/{esm2020 → esm2022}/slick-email-viewer/slick-email-viewer-dialog.component.mjs +62 -62
  48. package/esm2022/slick-email-viewer/slick-email-viewer.component.mjs +42 -0
  49. package/{esm2020 → esm2022}/slick-email-viewer/slick-email-viewer.module.mjs +26 -26
  50. package/{esm2020 → esm2022}/slick-emailer/slick-emailer-address.model.mjs +2 -2
  51. package/esm2022/slick-emailer/slick-emailer-dialog.component.mjs +153 -0
  52. package/esm2022/slick-emailer/slick-emailer.component.mjs +235 -0
  53. package/{esm2020 → esm2022}/slick-emailer/slick-emailer.model.mjs +2 -2
  54. package/{esm2020 → esm2022}/slick-emailer/slick-emailer.module.mjs +29 -29
  55. package/esm2022/slick-file-drop/slick-file-drop.component.mjs +156 -0
  56. package/{esm2020 → esm2022}/slick-file-drop/slick-file-drop.module.mjs +20 -20
  57. package/esm2022/slick-file-list/slick-file-list-item.component.mjs +190 -0
  58. package/esm2022/slick-file-list/slick-file-list.component.mjs +130 -0
  59. package/{esm2020 → esm2022}/slick-file-list/slick-file-list.module.mjs +23 -23
  60. package/{esm2020 → esm2022}/slick-file-model/slick-file.model.mjs +2 -2
  61. package/esm2022/slick-google-address-search/slick-google-address-search.directive.mjs +78 -0
  62. package/{esm2020 → esm2022}/slick-google-address-search/slick-google-address-search.module.mjs +19 -19
  63. package/esm2022/slick-google-map/slick-google-map-dialog.component.mjs +50 -0
  64. package/esm2022/slick-google-map/slick-google-map.component.mjs +48 -0
  65. package/{esm2020 → esm2022}/slick-google-map/slick-google-map.module.mjs +22 -22
  66. package/{esm2020 → esm2022}/slick-grid/slick-grid-column-template.directive.mjs +19 -19
  67. package/{esm2020 → esm2022}/slick-grid/slick-grid-column.model.mjs +66 -66
  68. package/{esm2020 → esm2022}/slick-grid/slick-grid-favorite.model.mjs +2 -2
  69. package/{esm2020 → esm2022}/slick-grid/slick-grid-request.model.mjs +2 -2
  70. package/{esm2020 → esm2022}/slick-grid/slick-grid-response.model.mjs +2 -2
  71. package/{esm2020 → esm2022}/slick-grid/slick-grid-sanitize.pipe.mjs +20 -20
  72. package/esm2022/slick-grid/slick-grid.component.mjs +793 -0
  73. package/{esm2020 → esm2022}/slick-grid/slick-grid.module.mjs +43 -43
  74. package/{esm2020 → esm2022}/slick-grid/slick-grid.options.mjs +11 -11
  75. package/esm2022/slick-grid/slick-grid.service.mjs +66 -0
  76. package/esm2022/slick-multi-select/slick-multi-select.component.mjs +415 -0
  77. package/{esm2020 → esm2022}/slick-multi-select/slick-multi-select.module.mjs +20 -20
  78. package/esm2022/slick-multi-select/slick-multi-select.service.mjs +78 -0
  79. package/esm2022/slick-ordered-list/slick-ordered-list.component.mjs +200 -0
  80. package/{esm2020 → esm2022}/slick-ordered-list/slick-ordered-list.module.mjs +20 -20
  81. package/esm2022/slick-paging/slick-paging.component.mjs +185 -0
  82. package/{esm2020 → esm2022}/slick-paging/slick-paging.module.mjs +19 -19
  83. package/esm2022/slick-photo-gallery/slick-photo-gallery.component.mjs +98 -0
  84. package/{esm2020 → esm2022}/slick-photo-gallery/slick-photo-gallery.model.mjs +2 -2
  85. package/{esm2020 → esm2022}/slick-photo-gallery/slick-photo-gallery.module.mjs +21 -21
  86. package/{esm2020 → esm2022}/slick-pick-list/slick-pick-list.component.mjs +84 -84
  87. package/{esm2020 → esm2022}/slick-pick-list/slick-pick-list.module.mjs +20 -20
  88. package/esm2022/slick-popover/slick-popover.component.mjs +204 -0
  89. package/{esm2020 → esm2022}/slick-popover/slick-popover.module.mjs +19 -19
  90. package/esm2022/slick-profile-picture/slick-profile-picture.component.mjs +267 -0
  91. package/{esm2020 → esm2022}/slick-profile-picture/slick-profile-picture.module.mjs +20 -20
  92. package/{esm2020 → esm2022}/slick-progress-bar/slick-progress-bar.module.mjs +18 -18
  93. package/esm2022/slick-progress-bar/slick-progress-bar.service.mjs +53 -0
  94. package/{esm2020 → esm2022}/slick-screen-blocker/slick-screen-blocker.module.mjs +18 -18
  95. package/esm2022/slick-screen-blocker/slick-screen-blocker.service.mjs +83 -0
  96. package/esm2022/slick-search-bar/slick-search-bar.component.mjs +130 -0
  97. package/{esm2020 → esm2022}/slick-search-bar/slick-search-bar.module.mjs +20 -20
  98. package/{esm2020 → esm2022}/slick-slider/slick-slider-tick.model.mjs +2 -2
  99. package/esm2022/slick-slider/slick-slider.component.mjs +90 -0
  100. package/{esm2020 → esm2022}/slick-slider/slick-slider.module.mjs +20 -20
  101. package/{esm2020 → esm2022}/slick-split-screen/slick-screen-split-left-content.component.mjs +15 -15
  102. package/{esm2020 → esm2022}/slick-split-screen/slick-screen-split-right-content.component.mjs +15 -15
  103. package/esm2022/slick-split-screen/slick-split-screen.component.mjs +159 -0
  104. package/{esm2020 → esm2022}/slick-split-screen/slick-split-screen.module.mjs +21 -21
  105. package/esm2022/slick-star-rating/slick-star-rating.component.mjs +91 -0
  106. package/{esm2020 → esm2022}/slick-star-rating/slick-star-rating.module.mjs +21 -21
  107. package/{esm2020 → esm2022}/slick-tabs/slick-tab-header.component.mjs +28 -28
  108. package/esm2022/slick-tabs/slick-tab.component.mjs +63 -0
  109. package/{esm2020 → esm2022}/slick-tabs/slick-tab.model.mjs +2 -2
  110. package/esm2022/slick-tabs/slick-tabs.component.mjs +107 -0
  111. package/{esm2020 → esm2022}/slick-tabs/slick-tabs.module.mjs +23 -23
  112. package/{esm2020 → esm2022}/slick-toast/slick-toast.module.mjs +18 -18
  113. package/esm2022/slick-toast/slick-toast.service.mjs +88 -0
  114. package/esm2022/slick-tree-view/slick-tree-node.model.mjs +18 -0
  115. package/esm2022/slick-tree-view/slick-tree-view.component.mjs +293 -0
  116. package/{esm2020 → esm2022}/slick-tree-view/slick-tree-view.module.mjs +22 -22
  117. package/esm2022/slick-type-ahead/slick-type-ahead.directive.mjs +164 -0
  118. package/{esm2020 → esm2022}/slick-type-ahead/slick-type-ahead.module.mjs +18 -18
  119. package/esm2022/slick-validation-indicator/slick-validation-indicator.directive.mjs +66 -0
  120. package/{esm2020 → esm2022}/slick-validation-indicator/slick-validation-indicator.module.mjs +19 -19
  121. package/esm2022/utils/slick-function-lock.service.mjs +55 -0
  122. package/esm2022/utils/slick-init.service.mjs +49 -0
  123. package/{esm2020 → esm2022}/utils/slick-log.service.mjs +23 -23
  124. package/{esm2020 → esm2022}/utils/slick-sleep.service.mjs +14 -14
  125. package/esm2022/utils/slick-utils.service.mjs +247 -0
  126. package/{fesm2020 → fesm2022}/slick-components.mjs +8495 -8495
  127. package/fesm2022/slick-components.mjs.map +1 -0
  128. package/index.d.ts +5 -5
  129. package/package.json +11 -17
  130. package/public-api.d.ts +41 -41
  131. package/slick-accordion/slick-accordion-item-header.component.d.ts +5 -5
  132. package/slick-accordion/slick-accordion-item.component.d.ts +24 -24
  133. package/slick-accordion/slick-accordion.component.d.ts +22 -22
  134. package/slick-accordion/slick-accordion.module.d.ts +16 -16
  135. package/slick-auto-complete/slick-auto-complete-list-item-template.directive.d.ts +10 -10
  136. package/slick-auto-complete/slick-auto-complete.component.d.ts +60 -60
  137. package/slick-auto-complete/slick-auto-complete.module.d.ts +15 -15
  138. package/slick-button-spinner/slick-button-spinner.component.d.ts +28 -28
  139. package/slick-button-spinner/slick-button-spinner.module.d.ts +10 -10
  140. package/slick-calendar/slick-calendar.component.d.ts +53 -53
  141. package/slick-calendar/slick-calendar.module.d.ts +10 -10
  142. package/slick-card/slick-card-header.component.d.ts +5 -5
  143. package/slick-card/slick-card.component.d.ts +13 -13
  144. package/slick-card/slick-card.module.d.ts +12 -12
  145. package/slick-confirm-dialog/slick-confirm-dialog.component.d.ts +26 -26
  146. package/slick-confirm-dialog/slick-confirm-dialog.module.d.ts +11 -11
  147. package/slick-container/slick-container-body.component.d.ts +7 -7
  148. package/slick-container/slick-container-footer.component.d.ts +6 -6
  149. package/slick-container/slick-container-header.component.d.ts +6 -6
  150. package/slick-container/slick-container.component.d.ts +8 -8
  151. package/slick-container/slick-container.module.d.ts +19 -19
  152. package/slick-context-menu/slick-context-menu-item.component.d.ts +5 -5
  153. package/slick-context-menu/slick-context-menu.component.d.ts +13 -13
  154. package/slick-context-menu/slick-context-menu.module.d.ts +12 -12
  155. package/slick-currency-mask/slick-currency-mask-options.model.d.ts +10 -10
  156. package/slick-currency-mask/slick-currency-mask.directive.d.ts +29 -29
  157. package/slick-currency-mask/slick-currency-mask.module.d.ts +10 -10
  158. package/slick-date-picker/slick-date-picker.component.d.ts +45 -45
  159. package/slick-date-picker/slick-date-picker.module.d.ts +12 -12
  160. package/slick-dialog/slick-dialog-footer.component.d.ts +7 -7
  161. package/slick-dialog/slick-dialog.component.d.ts +56 -56
  162. package/slick-dialog/slick-dialog.module.d.ts +13 -13
  163. package/slick-dialog/slick-dialog.service.d.ts +17 -17
  164. package/slick-drag-drop/slick-drag-drop.directive.d.ts +5 -5
  165. package/slick-drag-drop/slick-drag-drop.module.d.ts +13 -13
  166. package/slick-drag-drop/slick-draggable.directive.d.ts +5 -5
  167. package/slick-drop-down/slick-drop-down-button.model.d.ts +13 -13
  168. package/slick-drop-down/slick-drop-down.component.d.ts +78 -78
  169. package/slick-drop-down/slick-drop-down.module.d.ts +14 -14
  170. package/slick-drop-down/slick-drop-down.service.d.ts +12 -12
  171. package/slick-drop-list/slick-drop-list-grab.directive.d.ts +7 -7
  172. package/slick-drop-list/slick-drop-list-item.directive.d.ts +7 -7
  173. package/slick-drop-list/slick-drop-list.directive.d.ts +33 -33
  174. package/slick-drop-list/slick-drop-list.module.d.ts +16 -16
  175. package/slick-email-viewer/slick-email-viewer-dialog.component.d.ts +19 -19
  176. package/slick-email-viewer/slick-email-viewer.component.d.ts +13 -13
  177. package/slick-email-viewer/slick-email-viewer.module.d.ts +18 -18
  178. package/slick-emailer/slick-emailer-address.model.d.ts +10 -10
  179. package/slick-emailer/slick-emailer-dialog.component.d.ts +33 -33
  180. package/slick-emailer/slick-emailer.component.d.ts +50 -50
  181. package/slick-emailer/slick-emailer.model.d.ts +16 -16
  182. package/slick-emailer/slick-emailer.module.d.ts +21 -21
  183. package/slick-file-drop/slick-file-drop.component.d.ts +25 -25
  184. package/slick-file-drop/slick-file-drop.module.d.ts +11 -11
  185. package/slick-file-list/slick-file-list-item.component.d.ts +37 -37
  186. package/slick-file-list/slick-file-list.component.d.ts +31 -31
  187. package/slick-file-list/slick-file-list.module.d.ts +14 -14
  188. package/slick-file-model/slick-file.model.d.ts +28 -28
  189. package/slick-google-address-search/slick-google-address-search.directive.d.ts +16 -17
  190. package/slick-google-address-search/slick-google-address-search.module.d.ts +10 -10
  191. package/slick-google-map/slick-google-map-dialog.component.d.ts +15 -16
  192. package/slick-google-map/slick-google-map.component.d.ts +17 -18
  193. package/slick-google-map/slick-google-map.module.d.ts +14 -14
  194. package/slick-grid/slick-grid-column-template.directive.d.ts +9 -9
  195. package/slick-grid/slick-grid-column.model.d.ts +64 -64
  196. package/slick-grid/slick-grid-favorite.model.d.ts +9 -9
  197. package/slick-grid/slick-grid-request.model.d.ts +33 -33
  198. package/slick-grid/slick-grid-response.model.d.ts +8 -8
  199. package/slick-grid/slick-grid-sanitize.pipe.d.ts +10 -10
  200. package/slick-grid/slick-grid.component.d.ts +119 -119
  201. package/slick-grid/slick-grid.module.d.ts +32 -32
  202. package/slick-grid/slick-grid.options.d.ts +35 -35
  203. package/slick-grid/slick-grid.service.d.ts +12 -12
  204. package/slick-multi-select/slick-multi-select.component.d.ts +69 -69
  205. package/slick-multi-select/slick-multi-select.module.d.ts +11 -11
  206. package/slick-multi-select/slick-multi-select.service.d.ts +9 -9
  207. package/slick-ordered-list/slick-ordered-list.component.d.ts +28 -28
  208. package/slick-ordered-list/slick-ordered-list.module.d.ts +11 -11
  209. package/slick-paging/slick-paging.component.d.ts +31 -31
  210. package/slick-paging/slick-paging.module.d.ts +10 -10
  211. package/slick-photo-gallery/slick-photo-gallery.component.d.ts +26 -26
  212. package/slick-photo-gallery/slick-photo-gallery.model.d.ts +8 -8
  213. package/slick-photo-gallery/slick-photo-gallery.module.d.ts +12 -12
  214. package/slick-pick-list/slick-pick-list.component.d.ts +24 -24
  215. package/slick-pick-list/slick-pick-list.module.d.ts +11 -11
  216. package/slick-popover/slick-popover.component.d.ts +39 -39
  217. package/slick-popover/slick-popover.module.d.ts +10 -10
  218. package/slick-profile-picture/slick-profile-picture.component.d.ts +29 -29
  219. package/slick-profile-picture/slick-profile-picture.module.d.ts +11 -11
  220. package/slick-progress-bar/slick-progress-bar.module.d.ts +9 -9
  221. package/slick-progress-bar/slick-progress-bar.service.d.ts +12 -12
  222. package/slick-screen-blocker/slick-screen-blocker.module.d.ts +9 -9
  223. package/slick-screen-blocker/slick-screen-blocker.service.d.ts +16 -16
  224. package/slick-search-bar/slick-search-bar.component.d.ts +37 -37
  225. package/slick-search-bar/slick-search-bar.module.d.ts +11 -11
  226. package/slick-slider/slick-slider-tick.model.d.ts +10 -10
  227. package/slick-slider/slick-slider.component.d.ts +29 -29
  228. package/slick-slider/slick-slider.module.d.ts +11 -11
  229. package/slick-split-screen/slick-screen-split-left-content.component.d.ts +6 -6
  230. package/slick-split-screen/slick-screen-split-right-content.component.d.ts +6 -6
  231. package/slick-split-screen/slick-split-screen.component.d.ts +40 -40
  232. package/slick-split-screen/slick-split-screen.module.d.ts +14 -14
  233. package/slick-star-rating/slick-star-rating.component.d.ts +28 -28
  234. package/slick-star-rating/slick-star-rating.module.d.ts +12 -12
  235. package/slick-tabs/slick-tab-header.component.d.ts +12 -12
  236. package/slick-tabs/slick-tab.component.d.ts +22 -22
  237. package/slick-tabs/slick-tab.model.d.ts +10 -10
  238. package/slick-tabs/slick-tabs.component.d.ts +25 -25
  239. package/slick-tabs/slick-tabs.module.d.ts +16 -16
  240. package/slick-toast/slick-toast.module.d.ts +9 -9
  241. package/slick-toast/slick-toast.service.d.ts +16 -16
  242. package/slick-tree-view/slick-tree-node.model.d.ts +30 -30
  243. package/slick-tree-view/slick-tree-view.component.d.ts +62 -62
  244. package/slick-tree-view/slick-tree-view.module.d.ts +13 -13
  245. package/slick-type-ahead/slick-type-ahead.directive.d.ts +25 -25
  246. package/slick-type-ahead/slick-type-ahead.module.d.ts +9 -9
  247. package/slick-validation-indicator/slick-validation-indicator.directive.d.ts +22 -22
  248. package/slick-validation-indicator/slick-validation-indicator.module.d.ts +10 -10
  249. package/utils/slick-function-lock.service.d.ts +9 -9
  250. package/utils/slick-init.service.d.ts +21 -21
  251. package/utils/slick-log.service.d.ts +9 -9
  252. package/utils/slick-sleep.service.d.ts +6 -6
  253. package/utils/slick-utils.service.d.ts +24 -24
  254. package/esm2020/slick-accordion/slick-accordion-item.component.mjs +0 -92
  255. package/esm2020/slick-auto-complete/slick-auto-complete.component.mjs +0 -388
  256. package/esm2020/slick-button-spinner/slick-button-spinner.component.mjs +0 -175
  257. package/esm2020/slick-calendar/slick-calendar.component.mjs +0 -271
  258. package/esm2020/slick-card/slick-card.component.mjs +0 -42
  259. package/esm2020/slick-context-menu/slick-context-menu.component.mjs +0 -48
  260. package/esm2020/slick-currency-mask/slick-currency-mask.directive.mjs +0 -233
  261. package/esm2020/slick-date-picker/slick-date-picker.component.mjs +0 -278
  262. package/esm2020/slick-dialog/slick-dialog.component.mjs +0 -294
  263. package/esm2020/slick-dialog/slick-dialog.service.mjs +0 -68
  264. package/esm2020/slick-drop-down/slick-drop-down.component.mjs +0 -447
  265. package/esm2020/slick-drop-down/slick-drop-down.service.mjs +0 -55
  266. package/esm2020/slick-drop-list/slick-drop-list.directive.mjs +0 -215
  267. package/esm2020/slick-email-viewer/slick-email-viewer.component.mjs +0 -42
  268. package/esm2020/slick-emailer/slick-emailer-dialog.component.mjs +0 -153
  269. package/esm2020/slick-emailer/slick-emailer.component.mjs +0 -235
  270. package/esm2020/slick-file-drop/slick-file-drop.component.mjs +0 -156
  271. package/esm2020/slick-file-list/slick-file-list-item.component.mjs +0 -190
  272. package/esm2020/slick-file-list/slick-file-list.component.mjs +0 -130
  273. package/esm2020/slick-google-address-search/slick-google-address-search.directive.mjs +0 -78
  274. package/esm2020/slick-google-map/slick-google-map-dialog.component.mjs +0 -50
  275. package/esm2020/slick-google-map/slick-google-map.component.mjs +0 -48
  276. package/esm2020/slick-grid/slick-grid.component.mjs +0 -793
  277. package/esm2020/slick-grid/slick-grid.service.mjs +0 -66
  278. package/esm2020/slick-multi-select/slick-multi-select.component.mjs +0 -415
  279. package/esm2020/slick-multi-select/slick-multi-select.service.mjs +0 -78
  280. package/esm2020/slick-ordered-list/slick-ordered-list.component.mjs +0 -200
  281. package/esm2020/slick-paging/slick-paging.component.mjs +0 -185
  282. package/esm2020/slick-photo-gallery/slick-photo-gallery.component.mjs +0 -98
  283. package/esm2020/slick-popover/slick-popover.component.mjs +0 -204
  284. package/esm2020/slick-profile-picture/slick-profile-picture.component.mjs +0 -267
  285. package/esm2020/slick-progress-bar/slick-progress-bar.service.mjs +0 -53
  286. package/esm2020/slick-screen-blocker/slick-screen-blocker.service.mjs +0 -83
  287. package/esm2020/slick-search-bar/slick-search-bar.component.mjs +0 -130
  288. package/esm2020/slick-slider/slick-slider.component.mjs +0 -90
  289. package/esm2020/slick-split-screen/slick-split-screen.component.mjs +0 -159
  290. package/esm2020/slick-star-rating/slick-star-rating.component.mjs +0 -91
  291. package/esm2020/slick-tabs/slick-tab.component.mjs +0 -63
  292. package/esm2020/slick-tabs/slick-tabs.component.mjs +0 -107
  293. package/esm2020/slick-toast/slick-toast.service.mjs +0 -88
  294. package/esm2020/slick-tree-view/slick-tree-node.model.mjs +0 -18
  295. package/esm2020/slick-tree-view/slick-tree-view.component.mjs +0 -293
  296. package/esm2020/slick-type-ahead/slick-type-ahead.directive.mjs +0 -164
  297. package/esm2020/slick-validation-indicator/slick-validation-indicator.directive.mjs +0 -66
  298. package/esm2020/utils/slick-function-lock.service.mjs +0 -55
  299. package/esm2020/utils/slick-init.service.mjs +0 -49
  300. package/esm2020/utils/slick-utils.service.mjs +0 -247
  301. package/fesm2015/slick-components.mjs +0 -9084
  302. package/fesm2015/slick-components.mjs.map +0 -1
  303. package/fesm2020/slick-components.mjs.map +0 -1
@@ -1,92 +0,0 @@
1
- import { Component, Input, ViewChild } from "@angular/core";
2
- import { SlickSleepService } from "../utils/slick-sleep.service";
3
- import { SlickUtilsService } from "../utils/slick-utils.service";
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- export class SlickAccordionItemComponent {
7
- constructor() {
8
- this.noExpand = false;
9
- this.PIXELS_PER_TICK = 15;
10
- this.isExpanded = false;
11
- }
12
- ngOnChanges() {
13
- this.noExpand = (this.noExpand.toString().toLowerCase() === 'true') ? true : false;
14
- }
15
- async onHeaderClicked() {
16
- if (this.noExpand) {
17
- if (this.onChangeCallback)
18
- this.onChangeCallback(this.index);
19
- }
20
- else {
21
- if (this.isExpanded === false)
22
- this.expand();
23
- else
24
- this.collapse();
25
- }
26
- }
27
- async expand() {
28
- if (this.noExpand)
29
- return;
30
- if (this.isExpanded === true)
31
- return;
32
- if (this.onChangeCallback)
33
- this.onChangeCallback(this.index);
34
- this.isExpanded = true;
35
- await SlickUtilsService.waitForElementRef(this.slickAccordionItemRef);
36
- // Give the collapses a chance to collapse down before we expand
37
- await SlickSleepService.sleep(100);
38
- const maxHeight = this.slickAccordionBodyRef.nativeElement.offsetHeight;
39
- this.slickAccordionBouncePaddingRef.nativeElement.style.display = "block";
40
- this.slickAccordionBodyWrapperRef.nativeElement.style.maxHeight = (maxHeight + 30) + "px";
41
- await SlickSleepService.sleep(125);
42
- this.slickAccordionBodyWrapperRef.nativeElement.style.maxHeight = maxHeight + "px";
43
- await SlickSleepService.sleep(100);
44
- this.slickAccordionBouncePaddingRef.nativeElement.style.display = "none";
45
- this.slickAccordionBodyWrapperRef.nativeElement.style.maxHeight = "none";
46
- }
47
- async collapse(ignoreOnChangeCallback = false) {
48
- if (this.isExpanded === false)
49
- return;
50
- this.isExpanded = false;
51
- // The animations requires a number for maxHeight. Just set it to the current height, then to 0
52
- const maxHeight = this.slickAccordionBodyRef.nativeElement.offsetHeight;
53
- this.slickAccordionBodyWrapperRef.nativeElement.style.maxHeight = maxHeight + "px";
54
- await SlickSleepService.sleep();
55
- this.slickAccordionBodyWrapperRef.nativeElement.style.maxHeight = "0";
56
- if (this.onChangeCallback && ignoreOnChangeCallback === false)
57
- this.onChangeCallback(this.index);
58
- }
59
- getKey() {
60
- return this.key || null;
61
- }
62
- }
63
- /** @nocollapse */ SlickAccordionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickAccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
64
- /** @nocollapse */ SlickAccordionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SlickAccordionItemComponent, selector: "slick-accordion-item", inputs: { header: "header", headerIcon: "headerIcon", key: "key", noExpand: "noExpand" }, viewQueries: [{ propertyName: "slickAccordionItemRef", first: true, predicate: ["slickAccordionItemRef"], descendants: true }, { propertyName: "slickAccordionBodyWrapperRef", first: true, predicate: ["slickAccordionBodyWrapperRef"], descendants: true }, { propertyName: "slickAccordionBodyRef", first: true, predicate: ["slickAccordionBodyRef"], descendants: true }, { propertyName: "slickAccordionBouncePaddingRef", first: true, predicate: ["slickAccordionBouncePaddingRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #slickAccordionItemRef class=\"slick-accordion-item\">\r\n\t<div *ngIf=\"header\" class=\"slick-accordion-header card-header\" [ngClass]=\"{'badge-primary' : isExpanded }\" (click)=\"onHeaderClicked()\"><i *ngIf=\"headerIcon\" class=\"far\" [ngClass]=\"headerIcon\"></i> {{header}}</div>\r\n\t<div *ngIf=\"!header\" class=\"slick-accordion-header card-header\" [ngClass]=\"{'badge-primary' : isExpanded }\" (click)=\"onHeaderClicked()\"><ng-content select=\"slick-accordion-item-header\"></ng-content></div>\r\n\t<div #slickAccordionBodyWrapperRef class=\"slick-accordion-body-wrapper\">\r\n\t\t<div #slickAccordionBodyRef class=\"card-body slick-accordion-body\"><ng-content></ng-content></div>\r\n\t\t<div #slickAccordionBouncePaddingRef style=\"display: none; min-height: 30px;\"></div>\r\n\t</div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickAccordionItemComponent, decorators: [{
66
- type: Component,
67
- args: [{ selector: "slick-accordion-item", template: "<div #slickAccordionItemRef class=\"slick-accordion-item\">\r\n\t<div *ngIf=\"header\" class=\"slick-accordion-header card-header\" [ngClass]=\"{'badge-primary' : isExpanded }\" (click)=\"onHeaderClicked()\"><i *ngIf=\"headerIcon\" class=\"far\" [ngClass]=\"headerIcon\"></i> {{header}}</div>\r\n\t<div *ngIf=\"!header\" class=\"slick-accordion-header card-header\" [ngClass]=\"{'badge-primary' : isExpanded }\" (click)=\"onHeaderClicked()\"><ng-content select=\"slick-accordion-item-header\"></ng-content></div>\r\n\t<div #slickAccordionBodyWrapperRef class=\"slick-accordion-body-wrapper\">\r\n\t\t<div #slickAccordionBodyRef class=\"card-body slick-accordion-body\"><ng-content></ng-content></div>\r\n\t\t<div #slickAccordionBouncePaddingRef style=\"display: none; min-height: 30px;\"></div>\r\n\t</div>\r\n</div>\r\n" }]
68
- }], ctorParameters: function () { return []; }, propDecorators: { header: [{
69
- type: Input,
70
- args: ["header"]
71
- }], headerIcon: [{
72
- type: Input,
73
- args: ["headerIcon"]
74
- }], key: [{
75
- type: Input,
76
- args: ["key"]
77
- }], noExpand: [{
78
- type: Input
79
- }], slickAccordionItemRef: [{
80
- type: ViewChild,
81
- args: ["slickAccordionItemRef"]
82
- }], slickAccordionBodyWrapperRef: [{
83
- type: ViewChild,
84
- args: ["slickAccordionBodyWrapperRef"]
85
- }], slickAccordionBodyRef: [{
86
- type: ViewChild,
87
- args: ["slickAccordionBodyRef"]
88
- }], slickAccordionBouncePaddingRef: [{
89
- type: ViewChild,
90
- args: ["slickAccordionBouncePaddingRef"]
91
- }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stYWNjb3JkaW9uL3NsaWNrLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLWFjY29yZGlvbi9zbGljay1hY2NvcmRpb24taXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFNakUsTUFBTSxPQUFPLDJCQUEyQjtJQWtCdkM7UUFkUyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBTzFCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTlCLGVBQVUsR0FBWSxLQUFLLENBQUM7SUFLWixDQUFDO0lBRWpCLFdBQVc7UUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEYsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkM7YUFDSTtZQUNKLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLO2dCQUM1QixJ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QjtnQkFDTCxxQkFBcUI7c0JBQXhELFNBQVM7dUJBQUMsdUJBQXVCO2dCQUNXLDhCQUE4QjtzQkFBMUUsU0FBUzt1QkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFNsaWNrU2xlZXBTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXNsZWVwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stdXRpbHMuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6IFwic2xpY2stYWNjb3JkaW9uLWl0ZW1cIixcclxuXHR0ZW1wbGF0ZVVybDogXCJzbGljay1hY2NvcmRpb24taXRlbS5jb21wb25lbnQuaHRtbFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja0FjY29yZGlvbkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cdEBJbnB1dChcImhlYWRlclwiKSBoZWFkZXI6IHN0cmluZztcclxuXHRASW5wdXQoXCJoZWFkZXJJY29uXCIpIGhlYWRlckljb246IHN0cmluZztcclxuXHRASW5wdXQoXCJrZXlcIikga2V5OiBzdHJpbmc7XHJcblx0QElucHV0KCkgbm9FeHBhbmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0QFZpZXdDaGlsZChcInNsaWNrQWNjb3JkaW9uSXRlbVJlZlwiKSBzbGlja0FjY29yZGlvbkl0ZW1SZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcInNsaWNrQWNjb3JkaW9uQm9keVdyYXBwZXJSZWZcIikgc2xpY2tBY2NvcmRpb25Cb2R5V3JhcHBlclJlZjogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwic2xpY2tBY2NvcmRpb25Cb2R5UmVmXCIpIHNsaWNrQWNjb3JkaW9uQm9keVJlZjogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwic2xpY2tBY2NvcmRpb25Cb3VuY2VQYWRkaW5nUmVmXCIpIHNsaWNrQWNjb3JkaW9uQm91bmNlUGFkZGluZ1JlZjogRWxlbWVudFJlZjtcclxuXHJcblx0cmVhZG9ubHkgUElYRUxTX1BFUl9USUNLID0gMTU7XHJcblxyXG5cdGlzRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRpbmRleDogbnVtYmVyO1xyXG5cdC8vIFRoaXMgd2lsbCBiZSBzZXQgaW4gdGhlIHNsaWNrLWFjY29yZGlvbi5jb21wb25lbnQgYXMgYSBjYWxsYmFja1xyXG5cdG9uQ2hhbmdlQ2FsbGJhY2s6IGFueTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7IH1cclxuXHJcblx0bmdPbkNoYW5nZXMoKSB7XHJcblx0XHR0aGlzLm5vRXhwYW5kID0gKHRoaXMubm9FeHBhbmQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgb25IZWFkZXJDbGlja2VkKCkge1xyXG5cdFx0aWYgKHRoaXMubm9FeHBhbmQpIHtcclxuXHRcdFx0aWYgKHRoaXMub25DaGFuZ2VDYWxsYmFjaylcclxuXHRcdFx0XHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5pbmRleCk7XHJcblx0XHR9XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMuaXNFeHBhbmRlZCA9PT0gZmFsc2UpXHJcblx0XHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdFx0ZWxzZVxyXG5cdFx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHRhc3luYyBleHBhbmQoKSB7XHJcblx0XHRpZiAodGhpcy5ub0V4cGFuZClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGlmICh0aGlzLmlzRXhwYW5kZWQgPT09IHRydWUpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHRpZiAodGhpcy5vbkNoYW5nZUNhbGxiYWNrKVxyXG5cdFx0XHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5pbmRleCk7XHJcblxyXG5cdFx0dGhpcy5pc0V4cGFuZGVkID0gdHJ1ZTtcclxuXHJcblx0XHRhd2FpdCBTbGlja1V0aWxzU2VydmljZS53YWl0Rm9yRWxlbWVudFJlZih0aGlzLnNsaWNrQWNjb3JkaW9uSXRlbVJlZik7XHJcblxyXG5cdFx0Ly8gR2l2ZSB0aGUgY29sbGFwc2VzIGEgY2hhbmNlIHRvIGNvbGxhcHNlIGRvd24gYmVmb3JlIHdlIGV4cGFuZFxyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoMTAwKTtcclxuXHRcdGNvbnN0IG1heEhlaWdodCA9ICg8SFRNTERpdkVsZW1lbnQ+dGhpcy5zbGlja0FjY29yZGlvbkJvZHlSZWYubmF0aXZlRWxlbWVudCkub2Zmc2V0SGVpZ2h0O1xyXG5cdFx0KDxIVE1MRGl2RWxlbWVudD50aGlzLnNsaWNrQWNjb3JkaW9uQm91bmNlUGFkZGluZ1JlZi5uYXRpdmVFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xyXG5cdFx0KDxIVE1MRGl2RWxlbWVudD50aGlzLnNsaWNrQWNjb3JkaW9uQm9keVdyYXBwZXJSZWYubmF0aXZlRWxlbWVudCkuc3R5bGUubWF4SGVpZ2h0ID0gKG1heEhlaWdodCArIDMwKSArIFwicHhcIjtcclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKDEyNSk7XHJcblx0XHQoPEhUTUxEaXZFbGVtZW50PnRoaXMuc2xpY2tBY2NvcmRpb25Cb2R5V3JhcHBlclJlZi5uYXRpdmVFbGVtZW50KS5zdHlsZS5tYXhIZWlnaHQgPSBtYXhIZWlnaHQgKyBcInB4XCI7XHJcblx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgxMDApO1xyXG5cdFx0KDxIVE1MRGl2RWxlbWVudD50aGlzLnNsaWNrQWNjb3JkaW9uQm91bmNlUGFkZGluZ1JlZi5uYXRpdmVFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcblx0XHQoPEhUTUxEaXZFbGVtZW50PnRoaXMuc2xpY2tBY2NvcmRpb25Cb2R5V3JhcHBlclJlZi5uYXRpdmVFbGVtZW50KS5zdHlsZS5tYXhIZWlnaHQgPSBcIm5vbmVcIjtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGNvbGxhcHNlKGlnbm9yZU9uQ2hhbmdlQ2FsbGJhY2s6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG5cdFx0aWYgKHRoaXMuaXNFeHBhbmRlZCA9PT0gZmFsc2UpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHR0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcclxuXHJcblx0XHQvLyBUaGUgYW5pbWF0aW9ucyByZXF1aXJlcyBhIG51bWJlciBmb3IgbWF4SGVpZ2h0LiAgSnVzdCBzZXQgaXQgdG8gdGhlIGN1cnJlbnQgaGVpZ2h0LCB0aGVuIHRvIDBcclxuXHRcdGNvbnN0IG1heEhlaWdodCA9ICg8SFRNTERpdkVsZW1lbnQ+dGhpcy5zbGlja0FjY29yZGlvbkJvZHlSZWYubmF0aXZlRWxlbWVudCkub2Zmc2V0SGVpZ2h0O1xyXG5cdFx0KDxIVE1MRGl2RWxlbWVudD50aGlzLnNsaWNrQWNjb3JkaW9uQm9keVdyYXBwZXJSZWYubmF0aXZlRWxlbWVudCkuc3R5bGUubWF4SGVpZ2h0ID0gbWF4SGVpZ2h0ICsgXCJweFwiO1xyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdCg8SFRNTERpdkVsZW1lbnQ+dGhpcy5zbGlja0FjY29yZGlvbkJvZHlXcmFwcGVyUmVmLm5hdGl2ZUVsZW1lbnQpLnN0eWxlLm1heEhlaWdodCA9IFwiMFwiO1xyXG5cclxuXHRcdGlmICh0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgJiYgaWdub3JlT25DaGFuZ2VDYWxsYmFjayA9PT0gZmFsc2UpXHJcblx0XHRcdHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmluZGV4KTtcclxuXHR9XHJcblxyXG5cdGdldEtleSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMua2V5IHx8IG51bGw7XHJcblx0fVxyXG59IiwiPGRpdiAjc2xpY2tBY2NvcmRpb25JdGVtUmVmIGNsYXNzPVwic2xpY2stYWNjb3JkaW9uLWl0ZW1cIj5cclxuXHQ8ZGl2ICpuZ0lmPVwiaGVhZGVyXCIgY2xhc3M9XCJzbGljay1hY2NvcmRpb24taGVhZGVyIGNhcmQtaGVhZGVyXCIgW25nQ2xhc3NdPVwieydiYWRnZS1wcmltYXJ5JyA6IGlzRXhwYW5kZWQgfVwiIChjbGljayk9XCJvbkhlYWRlckNsaWNrZWQoKVwiPjxpICpuZ0lmPVwiaGVhZGVySWNvblwiIGNsYXNzPVwiZmFyXCIgW25nQ2xhc3NdPVwiaGVhZGVySWNvblwiPjwvaT4ge3toZWFkZXJ9fTwvZGl2PlxyXG5cdDxkaXYgKm5nSWY9XCIhaGVhZGVyXCIgY2xhc3M9XCJzbGljay1hY2NvcmRpb24taGVhZGVyIGNhcmQtaGVhZGVyXCIgW25nQ2xhc3NdPVwieydiYWRnZS1wcmltYXJ5JyA6IGlzRXhwYW5kZWQgfVwiIChjbGljayk9XCJvbkhlYWRlckNsaWNrZWQoKVwiPjxuZy1jb250ZW50IHNlbGVjdD1cInNsaWNrLWFjY29yZGlvbi1pdGVtLWhlYWRlclwiPjwvbmctY29udGVudD48L2Rpdj5cclxuXHQ8ZGl2ICNzbGlja0FjY29yZGlvbkJvZHlXcmFwcGVyUmVmIGNsYXNzPVwic2xpY2stYWNjb3JkaW9uLWJvZHktd3JhcHBlclwiPlxyXG5cdFx0PGRpdiAjc2xpY2tBY2NvcmRpb25Cb2R5UmVmIGNsYXNzPVwiY2FyZC1ib2R5IHNsaWNrLWFjY29yZGlvbi1ib2R5XCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxyXG5cdFx0PGRpdiAjc2xpY2tBY2NvcmRpb25Cb3VuY2VQYWRkaW5nUmVmIHN0eWxlPVwiZGlzcGxheTogbm9uZTsgbWluLWhlaWdodDogMzBweDtcIj48L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,388 +0,0 @@
1
- import { Component, ViewChild, ContentChild, Input, Output, EventEmitter, forwardRef } from "@angular/core";
2
- import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
- import { SlickAutoCompleteListItemTemplateDirective } from "./slick-auto-complete-list-item-template.directive";
4
- import { SlickUtilsService } from "../utils/slick-utils.service";
5
- import { SlickSleepService } from "../utils/slick-sleep.service";
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../utils/slick-function-lock.service";
8
- import * as i2 from "@angular/common";
9
- export class SlickAutoCompleteComponent {
10
- constructor(slickFunctionLockService) {
11
- this.slickFunctionLockService = slickFunctionLockService;
12
- this.delay = 300;
13
- this.selectFirst = true;
14
- this.offset = 0;
15
- this.listHeight = "300px";
16
- this.listWidth = '100%';
17
- this.allowFreeformText = true;
18
- this.showNoItemsFoundDisplay = true;
19
- this.onRefresh = new EventEmitter();
20
- this.onSelect = new EventEmitter();
21
- this.onFreeformTextSelect = new EventEmitter();
22
- this.fnDocumentClick = (e) => this.documentClick(e);
23
- this.fnKeyDown = (e) => this.keyDown(e);
24
- this.lastInputValue = "";
25
- this.forcedCollapse = false;
26
- // This is necessary so that the scroll and resize events can add and remove the event properly,
27
- // as well as getting the correct ES6 function
28
- this.fnReposition = () => this.reposition();
29
- this.selectedIndex = -1;
30
- this.showAutoComplete = false;
31
- this.autoCompleteVisiblity = false;
32
- this.expanded = true;
33
- this.loading = false;
34
- this.propagateChange = (_) => { };
35
- this.uuid = SlickUtilsService.newGuid();
36
- }
37
- async ngOnInit() {
38
- await SlickSleepService.sleep();
39
- if (this.searchBarRef)
40
- this.inputRef = this.searchBarRef.slickSearchTextBoxRef.nativeElement;
41
- // Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom
42
- // of a div when it expands beyond the bottom.
43
- this.autoCompleteRef.nativeElement.remove(this.autoCompleteRef);
44
- document.body.appendChild(this.autoCompleteRef.nativeElement);
45
- this.inputRef.addEventListener("keydown", this.fnKeyDown);
46
- }
47
- ngOnDestroy() {
48
- // Since angular has no way to use the third parameter, I'm doing this in raw js
49
- document.removeEventListener("click", this.fnDocumentClick, true);
50
- this.inputRef.removeEventListener("keydown", this.fnKeyDown);
51
- clearTimeout(this.delayTimeout);
52
- this.delayTimeout = null;
53
- this.collapse();
54
- // Is okay if this fails. It just means it was already removed.
55
- try {
56
- document.body.removeChild(this.autoCompleteRef.nativeElement);
57
- }
58
- catch { }
59
- }
60
- ngOnChanges(changes) {
61
- if (changes.allowFreeformText)
62
- this.allowFreeformText = (this.allowFreeformText.toString().toLowerCase() === 'false') ? false : true;
63
- if (changes.showNoItemsFoundDisplay)
64
- this.showNoItemsFoundDisplay = (this.showNoItemsFoundDisplay.toString().toLowerCase() === 'false') ? false : true;
65
- if (changes.items) {
66
- if (this.items && this.items.length === 0 && this.showNoItemsFoundDisplay === false)
67
- this.collapse();
68
- }
69
- if (isNaN(this.offset))
70
- this.offset = parseInt(this.offset.toString());
71
- }
72
- documentClick(e) {
73
- if (!this.expanded || !e.target)
74
- return;
75
- if (e.target === this.inputRef)
76
- return;
77
- if (SlickUtilsService.checkParentIdExists(e.target, "slick-auto-complete_" + this.uuid) === false) {
78
- clearInterval(this.waitForItemsInterval);
79
- this.slickFunctionLockService.release("AUTO_COMPLETE_WAIT_FOR_ITEMS");
80
- this.collapse();
81
- if (this.allowFreeformText && this.onFreeformTextSelect)
82
- this.onFreeformTextSelect.emit(this.inputRef.value);
83
- }
84
- }
85
- onItemClick(index) {
86
- this.selectItem(index);
87
- this.collapse();
88
- }
89
- async keyDown(event) {
90
- // alt
91
- if (event.keyCode === 18)
92
- return;
93
- clearInterval(this.waitForItemsInterval);
94
- this.slickFunctionLockService.release("AUTO_COMPLETE_WAIT_FOR_ITEMS");
95
- // If we're just tabbing through, don't even do anything
96
- if (!this.lastInputValue && (event.keyCode === 9 || event.keyCode === 13))
97
- return;
98
- await SlickSleepService.sleep();
99
- if (this.lastInputValue !== this.inputRef.value) {
100
- this.lastInputValue = this.inputRef.value;
101
- this.forcedCollapse = false;
102
- if (!this.lastInputValue) {
103
- this.propagateChange(null);
104
- this.collapse();
105
- }
106
- clearTimeout(this.delayTimeout);
107
- this.delayTimeout = null;
108
- if (this.inputRef.value === '') {
109
- this.items = null;
110
- this.collapse();
111
- return true;
112
- }
113
- else {
114
- this.delayTimeout = setTimeout(async () => {
115
- (this.selectFirst === true) ? this.selectedIndex = 0 : this.selectedIndex = -1;
116
- this.delayTimeout = null;
117
- this.items = null;
118
- this.expand();
119
- await this.refreshItems(true);
120
- }, this.delay);
121
- }
122
- }
123
- if (event.keyCode === 9 || event.keyCode === 13) {
124
- if (this.delayTimeout && this.selectFirst) {
125
- clearTimeout(this.delayTimeout);
126
- this.delayTimeout = null;
127
- this.items = null;
128
- this.collapse();
129
- if (this.selectFirst === true && !this.forcedCollapse) {
130
- await this.refreshItems(false);
131
- this.selectedIndex = -1;
132
- if (!this.items && !this.inputRef.value && this.onSelect) {
133
- this.onSelect.emit(null);
134
- }
135
- else if (this.items && this.items.length > 0) {
136
- this.selectedIndex = 0;
137
- this.selectItem(this.selectedIndex);
138
- }
139
- else {
140
- if (this.allowFreeformText && this.onFreeformTextSelect)
141
- this.onFreeformTextSelect.emit(this.inputRef.value);
142
- }
143
- }
144
- else {
145
- if (this.allowFreeformText && this.onFreeformTextSelect)
146
- this.onFreeformTextSelect.emit(this.inputRef.value);
147
- }
148
- }
149
- else {
150
- clearTimeout(this.delayTimeout);
151
- if (!this.items && !this.inputRef.value && this.onSelect) {
152
- this.onSelect.emit(null);
153
- }
154
- else if (this.items && this.items.length > 0 && this.expanded && !this.forcedCollapse) {
155
- this.selectItem(this.selectedIndex);
156
- }
157
- else {
158
- if (this.allowFreeformText && this.onFreeformTextSelect) {
159
- this.onFreeformTextSelect.emit(this.inputRef.value);
160
- }
161
- }
162
- this.collapse();
163
- }
164
- }
165
- // Esc
166
- if (event.which === 27) {
167
- this.forcedCollapse = true;
168
- this.collapse();
169
- return false;
170
- }
171
- // Arrowup
172
- if (event.which === 38) {
173
- if (this.selectedIndex === null || this.selectedIndex === undefined)
174
- this.selectedIndex = 0;
175
- if (this.selectedIndex > 0)
176
- this.selectedIndex--;
177
- return false;
178
- }
179
- // Arrowdown
180
- if (event.which === 40) {
181
- event.stopPropagation();
182
- if (this.selectedIndex === null || this.selectedIndex === undefined)
183
- this.selectedIndex = -1;
184
- if (!this.expanded) {
185
- this.expand();
186
- return false;
187
- }
188
- if (this.selectedIndex < this.items.length - 1)
189
- this.selectedIndex++;
190
- return false;
191
- }
192
- }
193
- // this is the initial value set to the component
194
- writeValue(obj) {
195
- if (obj) {
196
- }
197
- }
198
- // registers 'fn' that will be fired when changes are made
199
- // this is how we emit the changes back to the form
200
- registerOnChange(fn) {
201
- this.propagateChange = fn;
202
- }
203
- // not used, used for touch input
204
- registerOnTouched() { }
205
- async selectItem(index) {
206
- if (index < 0 || !this.items || this.items.length === 0) {
207
- this.selectedItem = null;
208
- }
209
- else {
210
- this.selectedItem = this.items[index];
211
- if (this.displayTextFieldName) {
212
- const text = SlickUtilsService.getDeepObject(this.selectedItem, this.displayTextFieldName);
213
- if (text) {
214
- this.inputRef.value = text;
215
- this.lastInputValue = this.inputRef.value;
216
- }
217
- }
218
- }
219
- this.propagateChange(this.selectedItem);
220
- if (this.onSelect)
221
- this.onSelect.emit(this.selectedItem);
222
- // Call to update the model for the textbox
223
- await SlickSleepService.sleep();
224
- let evt = document.createEvent('Event');
225
- evt.initEvent('input', true, false);
226
- this.inputRef.dispatchEvent(evt);
227
- }
228
- async expand() {
229
- this.reposition();
230
- // If the flag to show items is false, don't display "Loading..."
231
- if (this.showNoItemsFoundDisplay === false && (!this.items || this.items.length === 0)) {
232
- this.showAutoComplete = false;
233
- this.autoCompleteVisiblity = false;
234
- this.expanded = false;
235
- return;
236
- }
237
- this.showAutoComplete = true;
238
- this.autoCompleteRef.nativeElement.style.display = "inline-block";
239
- await SlickSleepService.sleep();
240
- this.autoCompleteVisiblity = true;
241
- this.expanded = true;
242
- this.inputRef.classList.add("slick-auto-complete_remove-bottom-left-border-radius");
243
- this.inputRef.classList.add("slick-auto-complete_remove-bottom-right-border-radius");
244
- // This is necessary, otherwise `this` in the reposition function will be window
245
- // and not the component.
246
- // Since angular has no way to use the third parameter, I'm doing this in raw js
247
- document.addEventListener("click", this.fnDocumentClick, true);
248
- }
249
- collapse() {
250
- let inputGroupPrepend = SlickUtilsService.getClosestSibling(this.inputRef, "input-group-prepend");
251
- if (inputGroupPrepend)
252
- inputGroupPrepend.classList.remove("slick-auto-complete_remove-bottom-left-border-radius");
253
- this.inputRef.classList.remove("slick-auto-complete_remove-bottom-left-border-radius");
254
- this.inputRef.classList.remove("slick-auto-complete_remove-bottom-right-border-radius");
255
- this.autoCompleteVisiblity = false;
256
- this.expanded = false;
257
- this.autoCompleteRef.nativeElement.style.display = "none";
258
- // Since angular has no way to use the third parameter, I'm doing this in raw js
259
- document.removeEventListener("click", this.fnDocumentClick, true);
260
- }
261
- reposition() {
262
- let rect = this.inputRef.getBoundingClientRect();
263
- let inputLeft = rect.left;
264
- let inputTop = rect.top;
265
- let inputHeight = this.inputRef.offsetHeight;
266
- let inputWidth = this.inputRef.offsetWidth;
267
- let inputGroupPrepend = SlickUtilsService.getClosestSibling(this.inputRef, "input-group-prepend");
268
- if (inputGroupPrepend) {
269
- inputLeft = inputGroupPrepend.getBoundingClientRect().left;
270
- inputWidth = inputWidth += inputGroupPrepend.offsetWidth;
271
- inputGroupPrepend.classList.add("slick-auto-complete_remove-bottom-left-border-radius");
272
- }
273
- this.left = (inputLeft + this.offset) + "px";
274
- this.top = (inputTop + inputHeight + 1) + "px";
275
- if (this.listWidth === '100%')
276
- this.width = inputWidth + "px";
277
- else if (this.listWidth === 'auto')
278
- this.width = "auto";
279
- else
280
- this.width = this.listWidth;
281
- }
282
- async refreshItems(expand) {
283
- return new Promise(async (resolve) => {
284
- await this.slickFunctionLockService.lock("AUTO_COMPLETE_WAIT_FOR_ITEMS");
285
- clearInterval(this.waitForItemsInterval);
286
- this.items = null;
287
- if (!this.onRefresh || !this.inputRef.value) {
288
- this.items = [];
289
- this.slickFunctionLockService.release("AUTO_COMPLETE_WAIT_FOR_ITEMS");
290
- resolve();
291
- }
292
- else {
293
- this.loading = true;
294
- if (this.showNoItemsFoundDisplay === false)
295
- this.collapse();
296
- // Call the users refresh method to get a fresh list of items
297
- this.onRefresh.emit(this.inputRef.value);
298
- // Wait for the list to refresh
299
- let timeoutCheck = 1000;
300
- this.waitForItemsInterval = setInterval(() => {
301
- // If we've timedout, got a response or they started typing something else, stop the interval
302
- if (timeoutCheck <= 0 || this.items) {
303
- clearInterval(this.waitForItemsInterval);
304
- if (timeoutCheck <= 0) {
305
- console.error("Timed out waiting for list in auto complete");
306
- this.items = [];
307
- if (this.showNoItemsFoundDisplay === false)
308
- this.collapse();
309
- }
310
- this.loading = false;
311
- if (expand)
312
- this.expand();
313
- this.slickFunctionLockService.release("AUTO_COMPLETE_WAIT_FOR_ITEMS");
314
- resolve();
315
- }
316
- timeoutCheck--;
317
- }, 100);
318
- }
319
- });
320
- }
321
- }
322
- /** @nocollapse */ SlickAutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickAutoCompleteComponent, deps: [{ token: i1.SlickFunctionLockService }], target: i0.ɵɵFactoryTarget.Component });
323
- /** @nocollapse */ SlickAutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SlickAutoCompleteComponent, selector: "slick-auto-complete", inputs: { inputRef: "inputRef", searchBarRef: "searchBarRef", items: "items", delay: "delay", selectFirst: "selectFirst", displayTextFieldName: "displayTextFieldName", offset: "offset", listHeight: "listHeight", listWidth: "listWidth", allowFreeformText: "allowFreeformText", showNoItemsFoundDisplay: "showNoItemsFoundDisplay" }, outputs: { onRefresh: "onRefresh", onSelect: "onSelect", onFreeformTextSelect: "onFreeformTextSelect" }, providers: [
324
- {
325
- provide: NG_VALUE_ACCESSOR,
326
- useExisting: forwardRef((() => SlickAutoCompleteComponent)),
327
- multi: true
328
- }
329
- ], queries: [{ propertyName: "listItemTemplateRef", first: true, predicate: SlickAutoCompleteListItemTemplateDirective, descendants: true, static: true }], viewQueries: [{ propertyName: "autoCompleteRef", first: true, predicate: ["autoCompleteRef"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div #autoCompleteRef id=\"slick-auto-complete_{{uuid}}\" class='slick-auto-complete dropdown-menu' [style.width]=\"width\" [style.minWidth]=\"width\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"listHeight\" [style.left]=\"left\" [style.top]=\"top\">\r\n\t<div *ngIf=\"loading\" style=\"font-size: .8rem\" class=\"ms-3 py-2\">Loading...</div>\r\n\t<div *ngIf=\"!loading && items?.length === 0\" style=\"font-size: .8rem\" class=\"ms-3\">\r\n\t\tNo items found\r\n\t</div>\r\n\t<div *ngIf=\"!loading && items?.length > 0\">\r\n\t\t<div *ngFor=\"let item of items; let index = index;\" (click)=\"onItemClick(index)\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"listItemTemplateRef.template, context: { $implicit: item, index: index }\">\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickAutoCompleteComponent, decorators: [{
331
- type: Component,
332
- args: [{ selector: 'slick-auto-complete', providers: [
333
- {
334
- provide: NG_VALUE_ACCESSOR,
335
- useExisting: forwardRef((() => SlickAutoCompleteComponent)),
336
- multi: true
337
- }
338
- ], template: "<div #autoCompleteRef id=\"slick-auto-complete_{{uuid}}\" class='slick-auto-complete dropdown-menu' [style.width]=\"width\" [style.minWidth]=\"width\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"listHeight\" [style.left]=\"left\" [style.top]=\"top\">\r\n\t<div *ngIf=\"loading\" style=\"font-size: .8rem\" class=\"ms-3 py-2\">Loading...</div>\r\n\t<div *ngIf=\"!loading && items?.length === 0\" style=\"font-size: .8rem\" class=\"ms-3\">\r\n\t\tNo items found\r\n\t</div>\r\n\t<div *ngIf=\"!loading && items?.length > 0\">\r\n\t\t<div *ngFor=\"let item of items; let index = index;\" (click)=\"onItemClick(index)\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"listItemTemplateRef.template, context: { $implicit: item, index: index }\">\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n" }]
339
- }], ctorParameters: function () { return [{ type: i1.SlickFunctionLockService }]; }, propDecorators: { inputRef: [{
340
- type: Input,
341
- args: ["inputRef"]
342
- }], searchBarRef: [{
343
- type: Input,
344
- args: ["searchBarRef"]
345
- }], items: [{
346
- type: Input,
347
- args: ["items"]
348
- }], delay: [{
349
- type: Input,
350
- args: ["delay"]
351
- }], selectFirst: [{
352
- type: Input,
353
- args: ["selectFirst"]
354
- }], displayTextFieldName: [{
355
- type: Input,
356
- args: ["displayTextFieldName"]
357
- }], offset: [{
358
- type: Input,
359
- args: ["offset"]
360
- }], listHeight: [{
361
- type: Input,
362
- args: ["listHeight"]
363
- }], listWidth: [{
364
- type: Input,
365
- args: ["listWidth"]
366
- }], allowFreeformText: [{
367
- type: Input,
368
- args: ["allowFreeformText"]
369
- }], showNoItemsFoundDisplay: [{
370
- type: Input,
371
- args: ["showNoItemsFoundDisplay"]
372
- }], onRefresh: [{
373
- type: Output,
374
- args: ["onRefresh"]
375
- }], onSelect: [{
376
- type: Output,
377
- args: ["onSelect"]
378
- }], onFreeformTextSelect: [{
379
- type: Output,
380
- args: ["onFreeformTextSelect"]
381
- }], autoCompleteRef: [{
382
- type: ViewChild,
383
- args: ["autoCompleteRef", { static: true }]
384
- }], listItemTemplateRef: [{
385
- type: ContentChild,
386
- args: [SlickAutoCompleteListItemTemplateDirective, { static: true }]
387
- }] } });
388
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1hdXRvLWNvbXBsZXRlL3NsaWNrLWF1dG8tY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stYXV0by1jb21wbGV0ZS9zbGljay1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUEyQyxNQUFNLGVBQWUsQ0FBQztBQUNwTCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDaEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFZakUsTUFBTSxPQUFPLDBCQUEwQjtJQTBDdEMsWUFBb0Isd0JBQWtEO1FBQWxELDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUF0Q3RELFVBQUssR0FBVyxHQUFHLENBQUM7UUFDZCxnQkFBVyxHQUFZLElBQUksQ0FBQztRQUVqQyxXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ2YsZUFBVSxHQUFHLE9BQU8sQ0FBQztRQUN0QixjQUFTLEdBQVcsTUFBTSxDQUFDO1FBQ25CLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUNuQiw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFDNUMsY0FBUyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlELGFBQVEsR0FBc0IsSUFBSSxZQUFZ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SSxFQUFFO2dCQUM4QixtQkFBbUI7c0JBQTlGLFlBQVk7dUJBQUMsMENBQTBDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBDb250ZW50Q2hpbGQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFNsaWNrQXV0b0NvbXBsZXRlTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gXCIuL3NsaWNrLWF1dG8tY29tcGxldGUtbGlzdC1pdGVtLXRlbXBsYXRlLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBTbGlja1V0aWxzU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay11dGlscy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrU2VhcmNoQmFyQ29tcG9uZW50IH0gZnJvbSBcIi4uL3NsaWNrLXNlYXJjaC1iYXIvc2xpY2stc2VhcmNoLWJhci5tb2R1bGVcIjtcclxuaW1wb3J0IHsgU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWZ1bmN0aW9uLWxvY2suc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja1NsZWVwU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1zbGVlcC5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLWF1dG8tY29tcGxldGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnc2xpY2stYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXHJcblx0cHJvdmlkZXJzOiBbXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlja0F1dG9Db21wbGV0ZUNvbXBvbmVudCksXHJcblx0XHRcdG11bHRpOiB0cnVlXHJcblx0XHR9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2tBdXRvQ29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblx0QElucHV0KFwiaW5wdXRSZWZcIikgaW5wdXRSZWY6IEhUTUxJbnB1dEVsZW1lbnQ7XHJcblx0QElucHV0KFwic2VhcmNoQmFyUmVmXCIpIHNlYXJjaEJhclJlZjogU2xpY2tTZWFyY2hCYXJDb21wb25lbnQ7XHJcblx0QElucHV0KFwiaXRlbXNcIikgaXRlbXM6IGFueVtdO1xyXG5cdEBJbnB1dChcImRlbGF5XCIpIGRlbGF5OiBudW1iZXIgPSAzMDA7XHJcblx0QElucHV0KFwic2VsZWN0Rmlyc3RcIikgc2VsZWN0Rmlyc3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdEBJbnB1dChcImRpc3BsYXlUZXh0RmllbGROYW1lXCIpIGRpc3BsYXlUZXh0RmllbGROYW1lOiBzdHJpbmc7XHJcblx0QElucHV0KFwib2Zmc2V0XCIpIG9mZnNldDogbnVtYmVyID0gMDtcclxuXHRASW5wdXQoXCJsaXN0SGVpZ2h0XCIpIGxpc3RIZWlnaHQgPSBcIjMwMHB4XCI7XHJcblx0QElucHV0KFwibGlzdFdpZHRoXCIpIGxpc3RXaWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG5cdEBJbnB1dChcImFsbG93RnJlZWZvcm1UZXh0XCIpIGFsbG93RnJlZWZvcm1UZXh0ID0gdHJ1ZTtcclxuXHRASW5wdXQoXCJzaG93Tm9JdGVtc0ZvdW5kRGlzcGxheVwiKSBzaG93Tm9JdGVtc0ZvdW5kRGlzcGxheSA9IHRydWU7XHJcblx0QE91dHB1dChcIm9uUmVmcmVzaFwiKSBvblJlZnJlc2g6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblx0QE91dHB1dChcIm9uU2VsZWN0XCIpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoXCJvbkZyZWVmb3JtVGV4dFNlbGVjdFwiKSBvbkZyZWVmb3JtVGV4dFNlbGVjdDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcblx0QFZpZXdDaGlsZChcImF1dG9Db21wbGV0ZVJlZlwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBhdXRvQ29tcGxldGVSZWY6IEVsZW1lbnRSZWY7XHJcblx0QENvbnRlbnRDaGlsZChTbGlja0F1dG9Db21wbGV0ZUxpc3RJdGVtVGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGxpc3RJdGVtVGVtcGxhdGVSZWY6IFNsaWNrQXV0b0NvbXBsZXRlTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZTtcclxuXHJcblx0Zm5Eb2N1bWVudENsaWNrID0gKGUpID0+IHRoaXMuZG9jdW1lbnRDbGljayhlKTtcclxuXHRmbktleURvd24gPSAoZSkgPT4gdGhpcy5rZXlEb3duKGUpO1xyXG5cclxuXHRwcml2YXRlIHNlbGVjdGVkSXRlbTogYW55O1xyXG5cdHByaXZhdGUgZGVsYXlUaW1lb3V0OiBOb2RlSlMuVGltZXI7XHJcblx0cHJpdmF0ZSB3YWl0Rm9ySXRlbXNJbnRlcnZhbDogTm9kZUpTLlRpbWVyO1xyXG5cdHByaXZhdGUgbGFzdElucHV0VmFsdWU6IHN0cmluZyA9IFwiXCI7XHJcblx0cHJpdmF0ZSBmb3JjZWRDb2xsYXBzZSA9IGZhbHNlO1xyXG5cclxuXHQvLyBUaGlzIGlzIG5lY2Vzc2FyeSBzbyB0aGF0IHRoZSBzY3JvbGwgYW5kIHJlc2l6ZSBldmVudHMgY2FuIGFkZCBhbmQgcmVtb3ZlIHRoZSBldmVudCBwcm9wZXJseSxcclxuXHQvLyBhcyB3ZWxsIGFzIGdldHRpbmcgdGhlIGNvcnJlY3QgRVM2IGZ1bmN0aW9uXHJcblx0cHJpdmF0ZSBmblJlcG9zaXRpb24gPSAoKSA9PiB0aGlzLnJlcG9zaXRpb24oKTtcclxuXHJcblx0dXVpZDogc3RyaW5nO1xyXG5cdGxlZnQ6IHN0cmluZztcclxuXHR0b3A6IHN0cmluZztcclxuXHR3aWR0aDogc3RyaW5nO1xyXG5cdHNlbGVjdGVkSW5kZXg6IG51bWJlciA9IC0xO1xyXG5cdHNob3dBdXRvQ29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRhdXRvQ29tcGxldGVWaXNpYmxpdHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRleHBhbmRlZDogYm9vbGVhbiA9IHRydWU7XHJcblx0bG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZTogU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlKSB7XHJcblx0XHR0aGlzLnV1aWQgPSBTbGlja1V0aWxzU2VydmljZS5uZXdHdWlkKCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBuZ09uSW5pdCgpIHtcclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRpZiAodGhpcy5zZWFyY2hCYXJSZWYpIFxyXG5cdFx0XHR0aGlzLmlucHV0UmVmID0gKDxFbGVtZW50UmVmPnRoaXMuc2VhcmNoQmFyUmVmLnNsaWNrU2VhcmNoVGV4dEJveFJlZikubmF0aXZlRWxlbWVudDtcclxuXHRcdFxyXG5cdFx0Ly8gUmVtb3ZlIHRoaXMgZnJvbSB0aGUgaW5saW5lIHZlcnNpb24gYW5kIHB1dCBpdCBvbiB0aGUgYm9keSBzbyB0aGF0IGl0IGRvZXNuJ3QgaGlkZSBiZWhpbmQgdGhlIGJvdHRvbVxyXG5cdFx0Ly8gb2YgYSBkaXYgd2hlbiBpdCBleHBhbmRzIGJleW9uZCB0aGUgYm90dG9tLlxyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVSZWYubmF0aXZlRWxlbWVudC5yZW1vdmUodGhpcy5hdXRvQ29tcGxldGVSZWYpO1xyXG5cdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmF1dG9Db21wbGV0ZVJlZi5uYXRpdmVFbGVtZW50KTtcclxuXHJcblx0XHR0aGlzLmlucHV0UmVmLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMuZm5LZXlEb3duKTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0Ly8gU2luY2UgYW5ndWxhciBoYXMgbm8gd2F5IHRvIHVzZSB0aGUgdGhpcmQgcGFyYW1ldGVyLCBJJ20gZG9pbmcgdGhpcyBpbiByYXcganNcclxuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmZuRG9jdW1lbnRDbGljaywgdHJ1ZSk7XHJcblx0XHR0aGlzLmlucHV0UmVmLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMuZm5LZXlEb3duKTtcclxuXHJcblx0XHRjbGVhclRpbWVvdXQodGhpcy5kZWxheVRpbWVvdXQpO1xyXG5cdFx0dGhpcy5kZWxheVRpbWVvdXQgPSBudWxsO1xyXG5cclxuXHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHJcblx0XHQvLyBJcyBva2F5IGlmIHRoaXMgZmFpbHMuICBJdCBqdXN0IG1lYW5zIGl0IHdhcyBhbHJlYWR5IHJlbW92ZWQuXHJcblx0XHR0cnkge1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuYXV0b0NvbXBsZXRlUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG5cdFx0fVxyXG5cdFx0Y2F0Y2ggeyB9XHJcblx0fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHRcdFxyXG5cdFx0aWYgKGNoYW5nZXMuYWxsb3dGcmVlZm9ybVRleHQpIFxyXG5cdFx0XHR0aGlzLmFsbG93RnJlZWZvcm1UZXh0ID0gKHRoaXMuYWxsb3dGcmVlZm9ybVRleHQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnZmFsc2UnKSA/IGZhbHNlIDogdHJ1ZTtcdFx0XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuc2hvd05vSXRlbXNGb3VuZERpc3BsYXkpXHJcblx0XHRcdHRoaXMuc2hvd05vSXRlbXNGb3VuZERpc3BsYXkgPSAodGhpcy5zaG93Tm9JdGVtc0ZvdW5kRGlzcGxheS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdmYWxzZScpID8gZmFsc2UgOiB0cnVlO1x0XHRcclxuXHJcblx0XHRpZiAoY2hhbmdlcy5pdGVtcykge1xyXG5cdFx0XHRpZiAodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCAmJiB0aGlzLnNob3dOb0l0ZW1zRm91bmREaXNwbGF5ID09PSBmYWxzZSlcclxuXHRcdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGlzTmFOKHRoaXMub2Zmc2V0KSlcclxuXHRcdFx0dGhpcy5vZmZzZXQgPSBwYXJzZUludCh0aGlzLm9mZnNldC50b1N0cmluZygpKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZG9jdW1lbnRDbGljayhlOiBNb3VzZUV2ZW50KSB7XHJcblx0XHRpZiAoIXRoaXMuZXhwYW5kZWQgfHwgIWUudGFyZ2V0KVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0aWYgKGUudGFyZ2V0ID09PSB0aGlzLmlucHV0UmVmKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0aWYgKFNsaWNrVXRpbHNTZXJ2aWNlLmNoZWNrUGFyZW50SWRFeGlzdHMoPEhUTUxFbGVtZW50PmUudGFyZ2V0LCBcInNsaWNrLWF1dG8tY29tcGxldGVfXCIgKyB0aGlzLnV1aWQpID09PSBmYWxzZSkge1xyXG5cdFx0XHRjbGVhckludGVydmFsKHRoaXMud2FpdEZvckl0ZW1zSW50ZXJ2YWwpO1xyXG5cdFx0XHR0aGlzLnNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZS5yZWxlYXNlKFwiQVVUT19DT01QTEVURV9XQUlUX0ZPUl9JVEVNU1wiKTtcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuYWxsb3dGcmVlZm9ybVRleHQgJiYgdGhpcy5vbkZyZWVmb3JtVGV4dFNlbGVjdClcclxuXHRcdFx0XHR0aGlzLm9uRnJlZWZvcm1UZXh0U2VsZWN0LmVtaXQodGhpcy5pbnB1dFJlZi52YWx1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbkl0ZW1DbGljayhpbmRleCkge1xyXG5cdFx0dGhpcy5zZWxlY3RJdGVtKGluZGV4KTtcclxuXHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYXN5bmMga2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0Ly8gYWx0XHJcblx0XHRpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTgpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHRjbGVhckludGVydmFsKHRoaXMud2FpdEZvckl0ZW1zSW50ZXJ2YWwpO1xyXG5cdFx0dGhpcy5zbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UucmVsZWFzZShcIkFVVE9fQ09NUExFVEVfV0FJVF9GT1JfSVRFTVNcIik7XHJcblxyXG5cdFx0Ly8gSWYgd2UncmUganVzdCB0YWJiaW5nIHRocm91Z2gsIGRvbid0IGV2ZW4gZG8gYW55dGhpbmdcclxuXHRcdGlmICghdGhpcy5sYXN0SW5wdXRWYWx1ZSAmJiAoZXZlbnQua2V5Q29kZSA9PT0gOSB8fCBldmVudC5rZXlDb2RlID09PSAxMykpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cclxuXHRcdGlmICh0aGlzLmxhc3RJbnB1dFZhbHVlICE9PSB0aGlzLmlucHV0UmVmLnZhbHVlKSB7XHJcblx0XHRcdHRoaXMubGFzdElucHV0VmFsdWUgPSB0aGlzLmlucHV0UmVmLnZhbHVlO1xyXG5cdFx0XHR0aGlzLmZvcmNlZENvbGxhcHNlID0gZmFsc2U7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMubGFzdElucHV0VmFsdWUpIHtcclxuXHRcdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcclxuXHRcdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLmRlbGF5VGltZW91dCk7XHJcblx0XHRcdHRoaXMuZGVsYXlUaW1lb3V0ID0gbnVsbDtcclxuXHRcdFx0aWYgKHRoaXMuaW5wdXRSZWYudmFsdWUgPT09ICcnKSB7XHJcblx0XHRcdFx0dGhpcy5pdGVtcyA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuZGVsYXlUaW1lb3V0ID0gc2V0VGltZW91dChhc3luYyAoKSA9PiB7XHJcblx0XHRcdFx0XHQodGhpcy5zZWxlY3RGaXJzdCA9PT0gdHJ1ZSkgPyB0aGlzLnNlbGVjdGVkSW5kZXggPSAwIDogdGhpcy5zZWxlY3RlZEluZGV4ID0gLTE7XHJcblx0XHRcdFx0XHR0aGlzLmRlbGF5VGltZW91dCA9IG51bGw7XHJcblx0XHRcdFx0XHR0aGlzLml0ZW1zID0gbnVsbDtcclxuXHRcdFx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnJlZnJlc2hJdGVtcyh0cnVlKTtcclxuXHRcdFx0XHR9LCB0aGlzLmRlbGF5KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChldmVudC5rZXlDb2RlID09PSA5IHx8IGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XHJcblx0XHRcdGlmICh0aGlzLmRlbGF5VGltZW91dCAmJiB0aGlzLnNlbGVjdEZpcnN0KSB7XHJcblx0XHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMuZGVsYXlUaW1lb3V0KTtcclxuXHRcdFx0XHR0aGlzLmRlbGF5VGltZW91dCA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy5pdGVtcyA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cclxuXHRcdFx0XHRpZiAodGhpcy5zZWxlY3RGaXJzdCA9PT0gdHJ1ZSAmJiAhdGhpcy5mb3JjZWRDb2xsYXBzZSkge1xyXG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5yZWZyZXNoSXRlbXMoZmFsc2UpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gLTE7XHJcblxyXG5cdFx0XHRcdFx0aWYgKCF0aGlzLml0ZW1zICYmICF0aGlzLmlucHV0UmVmLnZhbHVlICYmIHRoaXMub25TZWxlY3QpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5vblNlbGVjdC5lbWl0KG51bGwpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0ZWxzZSBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJbmRleCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYWxsb3dGcmVlZm9ybVRleHQgJiYgdGhpcy5vbkZyZWVmb3JtVGV4dFNlbGVjdCkgXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5vbkZyZWVmb3JtVGV4dFNlbGVjdC5lbWl0KHRoaXMuaW5wdXRSZWYudmFsdWUpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmFsbG93RnJlZWZvcm1UZXh0ICYmIHRoaXMub25GcmVlZm9ybVRleHRTZWxlY3QpIFxyXG5cdFx0XHRcdFx0XHR0aGlzLm9uRnJlZWZvcm1UZXh0U2VsZWN0LmVtaXQodGhpcy5pbnB1dFJlZi52YWx1ZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdGNsZWFyVGltZW91dCh0aGlzLmRlbGF5VGltZW91dCk7XHJcblx0XHRcdFx0aWYgKCF0aGlzLml0ZW1zICYmICF0aGlzLmlucHV0UmVmLnZhbHVlICYmIHRoaXMub25TZWxlY3QpIHtcclxuXHRcdFx0XHRcdHRoaXMub25TZWxlY3QuZW1pdChudWxsKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgJiYgdGhpcy5leHBhbmRlZCAmJiAhdGhpcy5mb3JjZWRDb2xsYXBzZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJbmRleCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuYWxsb3dGcmVlZm9ybVRleHQgJiYgdGhpcy5vbkZyZWVmb3JtVGV4dFNlbGVjdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLm9uRnJlZWZvcm1UZXh0U2VsZWN0LmVtaXQodGhpcy5pbnB1dFJlZi52YWx1ZSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEVzY1xyXG5cdFx0aWYgKGV2ZW50LndoaWNoID09PSAyNykge1xyXG5cdFx0XHR0aGlzLmZvcmNlZENvbGxhcHNlID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFycm93dXBcclxuXHRcdGlmIChldmVudC53aGljaCA9PT0gMzgpIHtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gbnVsbCB8fCB0aGlzLnNlbGVjdGVkSW5kZXggPT09IHVuZGVmaW5lZClcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+IDApXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4LS07XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQXJyb3dkb3duXHJcblx0XHRpZiAoZXZlbnQud2hpY2ggPT09IDQwKSB7XHJcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09PSBudWxsIHx8IHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG5cclxuXHRcdFx0aWYgKCF0aGlzLmV4cGFuZGVkKSB7XHJcblx0XHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPCB0aGlzLml0ZW1zLmxlbmd0aCAtIDEpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4Kys7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcblxyXG5cdC8vIHRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUgc2V0IHRvIHRoZSBjb21wb25lbnRcclxuXHR3cml0ZVZhbHVlKG9iajogYW55KSB7XHJcblx0XHRpZiAob2JqKSB7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyByZWdpc3RlcnMgJ2ZuJyB0aGF0IHdpbGwgYmUgZmlyZWQgd2hlbiBjaGFuZ2VzIGFyZSBtYWRlXHJcblx0Ly8gdGhpcyBpcyBob3cgd2UgZW1pdCB0aGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtXHJcblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG5cdH1cclxuXHJcblx0Ly8gbm90IHVzZWQsIHVzZWQgZm9yIHRvdWNoIGlucHV0XHJcblx0cmVnaXN0ZXJPblRvdWNoZWQoKSB7IH1cclxuXHJcblx0YXN5bmMgc2VsZWN0SXRlbShpbmRleDogbnVtYmVyKSB7XHJcblx0XHRpZiAoaW5kZXggPCAwIHx8ICF0aGlzLml0ZW1zIHx8IHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtID0gbnVsbDtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuaXRlbXNbaW5kZXhdO1xyXG5cdFx0XHRpZiAodGhpcy5kaXNwbGF5VGV4dEZpZWxkTmFtZSkge1xyXG5cdFx0XHRcdGNvbnN0IHRleHQgPSBTbGlja1V0aWxzU2VydmljZS5nZXREZWVwT2JqZWN0KHRoaXMuc2VsZWN0ZWRJdGVtLCB0aGlzLmRpc3BsYXlUZXh0RmllbGROYW1lKTtcclxuXHRcdFx0XHRpZiAodGV4dCkge1xyXG5cdFx0XHRcdFx0dGhpcy5pbnB1dFJlZi52YWx1ZSA9IHRleHQ7XHJcblx0XHRcdFx0XHR0aGlzLmxhc3RJbnB1dFZhbHVlID0gdGhpcy5pbnB1dFJlZi52YWx1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkSXRlbSk7XHJcblx0XHRpZiAodGhpcy5vblNlbGVjdClcclxuXHRcdFx0dGhpcy5vblNlbGVjdC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcclxuXHRcdC8vIENhbGwgdG8gdXBkYXRlIHRoZSBtb2RlbCBmb3IgdGhlIHRleHRib3hcclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRsZXQgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XHJcblx0XHRldnQuaW5pdEV2ZW50KCdpbnB1dCcsIHRydWUsIGZhbHNlKTtcclxuXHRcdHRoaXMuaW5wdXRSZWYuZGlzcGF0Y2hFdmVudChldnQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBleHBhbmQoKSB7XHJcblx0XHR0aGlzLnJlcG9zaXRpb24oKTtcclxuXHJcblx0XHQvLyBJZiB0aGUgZmxhZyB0byBzaG93IGl0ZW1zIGlzIGZhbHNlLCBkb24ndCBkaXNwbGF5IFwiTG9hZGluZy4uLlwiXHJcblx0XHRpZiAodGhpcy5zaG93Tm9JdGVtc0ZvdW5kRGlzcGxheSA9PT0gZmFsc2UgJiYgKCF0aGlzLml0ZW1zIHx8IHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSkge1xyXG5cdFx0XHR0aGlzLnNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcclxuXHRcdFx0dGhpcy5hdXRvQ29tcGxldGVWaXNpYmxpdHkgPSBmYWxzZTtcclxuXHRcdFx0dGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5zaG93QXV0b0NvbXBsZXRlID0gdHJ1ZTtcclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XHJcblx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVWaXNpYmxpdHkgPSB0cnVlO1xyXG5cdFx0dGhpcy5leHBhbmRlZCA9IHRydWU7XHJcblxyXG5cdFx0dGhpcy5pbnB1dFJlZi5jbGFzc0xpc3QuYWRkKFwic2xpY2stYXV0by1jb21wbGV0ZV9yZW1vdmUtYm90dG9tLWxlZnQtYm9yZGVyLXJhZGl1c1wiKTtcclxuXHRcdHRoaXMuaW5wdXRSZWYuY2xhc3NMaXN0LmFkZChcInNsaWNrLWF1dG8tY29tcGxldGVfcmVtb3ZlLWJvdHRvbS1yaWdodC1ib3JkZXItcmFkaXVzXCIpO1xyXG5cclxuXHRcdC8vIFRoaXMgaXMgbmVjZXNzYXJ5LCBvdGhlcndpc2UgYHRoaXNgIGluIHRoZSByZXBvc2l0aW9uIGZ1bmN0aW9uIHdpbGwgYmUgd2luZG93XHJcblx0XHQvLyBhbmQgbm90IHRoZSBjb21wb25lbnQuXHJcblx0XHQvLyBTaW5jZSBhbmd1bGFyIGhhcyBubyB3YXkgdG8gdXNlIHRoZSB0aGlyZCBwYXJhbWV0ZXIsIEknbSBkb2luZyB0aGlzIGluIHJhdyBqc1xyXG5cdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY29sbGFwc2UoKSB7XHJcblx0XHRsZXQgaW5wdXRHcm91cFByZXBlbmQgPSBTbGlja1V0aWxzU2VydmljZS5nZXRDbG9zZXN0U2libGluZyh0aGlzLmlucHV0UmVmLCBcImlucHV0LWdyb3VwLXByZXBlbmRcIik7XHJcblx0XHRpZiAoaW5wdXRHcm91cFByZXBlbmQpXHJcblx0XHRcdGlucHV0R3JvdXBQcmVwZW5kLmNsYXNzTGlzdC5yZW1vdmUoXCJzbGljay1hdXRvLWNvbXBsZXRlX3JlbW92ZS1ib3R0b20tbGVmdC1ib3JkZXItcmFkaXVzXCIpO1xyXG5cclxuXHRcdHRoaXMuaW5wdXRSZWYuY2xhc3NMaXN0LnJlbW92ZShcInNsaWNrLWF1dG8tY29tcGxldGVfcmVtb3ZlLWJvdHRvbS1sZWZ0LWJvcmRlci1yYWRpdXNcIik7XHJcblx0XHR0aGlzLmlucHV0UmVmLmNsYXNzTGlzdC5yZW1vdmUoXCJzbGljay1hdXRvLWNvbXBsZXRlX3JlbW92ZS1ib3R0b20tcmlnaHQtYm9yZGVyLXJhZGl1c1wiKTtcclxuXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZVZpc2libGl0eSA9IGZhbHNlO1xyXG5cdFx0dGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcblxyXG5cdFx0Ly8gU2luY2UgYW5ndWxhciBoYXMgbm8gd2F5IHRvIHVzZSB0aGUgdGhpcmQgcGFyYW1ldGVyLCBJJ20gZG9pbmcgdGhpcyBpbiByYXcganNcclxuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmZuRG9jdW1lbnRDbGljaywgdHJ1ZSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHJlcG9zaXRpb24oKSB7XHJcblx0XHRsZXQgcmVjdCA9IHRoaXMuaW5wdXRSZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRsZXQgaW5wdXRMZWZ0ID0gcmVjdC5sZWZ0O1xyXG5cdFx0bGV0IGlucHV0VG9wID0gcmVjdC50b3A7XHJcblx0XHRsZXQgaW5wdXRIZWlnaHQgPSB0aGlzLmlucHV0UmVmLm9mZnNldEhlaWdodDtcclxuXHRcdGxldCBpbnB1dFdpZHRoID0gdGhpcy5pbnB1dFJlZi5vZmZzZXRXaWR0aDtcclxuXHJcblx0XHRsZXQgaW5wdXRHcm91cFByZXBlbmQgPSBTbGlja1V0aWxzU2VydmljZS5nZXRDbG9zZXN0U2libGluZyh0aGlzLmlucHV0UmVmLCBcImlucHV0LWdyb3VwLXByZXBlbmRcIik7XHJcblx0XHRpZiAoaW5wdXRHcm91cFByZXBlbmQpIHtcclxuXHRcdFx0aW5wdXRMZWZ0ID0gaW5wdXRHcm91cFByZXBlbmQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuXHRcdFx0aW5wdXRXaWR0aCA9IGlucHV0V2lkdGggKz0gaW5wdXRHcm91cFByZXBlbmQub2Zmc2V0V2lkdGg7XHJcblx0XHRcdGlucHV0R3JvdXBQcmVwZW5kLmNsYXNzTGlzdC5hZGQoXCJzbGljay1hdXRvLWNvbXBsZXRlX3JlbW92ZS1ib3R0b20tbGVmdC1ib3JkZXItcmFkaXVzXCIpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMubGVmdCA9IChpbnB1dExlZnQgKyB0aGlzLm9mZnNldCkgKyBcInB4XCI7XHJcblx0XHR0aGlzLnRvcCA9IChpbnB1dFRvcCArIGlucHV0SGVpZ2h0ICsgMSkgKyBcInB4XCI7XHJcblx0XHRpZiAodGhpcy5saXN0V2lkdGggPT09ICcxMDAlJylcclxuXHRcdFx0dGhpcy53aWR0aCA9IGlucHV0V2lkdGggKyBcInB4XCI7XHJcblx0XHRlbHNlIGlmICh0aGlzLmxpc3RXaWR0aCA9PT0gJ2F1dG8nKVxyXG5cdFx0XHR0aGlzLndpZHRoID0gXCJhdXRvXCI7XHJcblx0XHRlbHNlXHJcblx0XHRcdHRoaXMud2lkdGggPSB0aGlzLmxpc3RXaWR0aDtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYXN5bmMgcmVmcmVzaEl0ZW1zKGV4cGFuZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XHJcblx0XHRcdGF3YWl0IHRoaXMuc2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLmxvY2soXCJBVVRPX0NPTVBMRVRFX1dBSVRfRk9SX0lURU1TXCIpO1xyXG5cdFx0XHRjbGVhckludGVydmFsKHRoaXMud2FpdEZvckl0ZW1zSW50ZXJ2YWwpO1xyXG5cdFx0XHR0aGlzLml0ZW1zID0gbnVsbDtcclxuXHJcblx0XHRcdGlmICghdGhpcy5vblJlZnJlc2ggfHwgIXRoaXMuaW5wdXRSZWYudmFsdWUpIHtcclxuXHRcdFx0XHR0aGlzLml0ZW1zID0gW107XHJcblx0XHRcdFx0dGhpcy5zbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UucmVsZWFzZShcIkFVVE9fQ09NUExFVEVfV0FJVF9GT1JfSVRFTVNcIik7XHJcblx0XHRcdFx0cmVzb2x2ZSgpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMubG9hZGluZyA9IHRydWU7XHJcblx0XHRcdFx0aWYgKHRoaXMuc2hvd05vSXRlbXNGb3VuZERpc3BsYXkgPT09IGZhbHNlKVxyXG5cdFx0XHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0XHRcdC8vIENhbGwgdGhlIHVzZXJzIHJlZnJlc2ggbWV0aG9kIHRvIGdldCBhIGZyZXNoIGxpc3Qgb2YgaXRlbXNcclxuXHRcdFx0XHR0aGlzLm9uUmVmcmVzaC5lbWl0KHRoaXMuaW5wdXRSZWYudmFsdWUpO1xyXG5cclxuXHRcdFx0XHQvLyBXYWl0IGZvciB0aGUgbGlzdCB0byByZWZyZXNoXHJcblx0XHRcdFx0bGV0IHRpbWVvdXRDaGVjayA9IDEwMDA7XHJcblx0XHRcdFx0dGhpcy53YWl0Rm9ySXRlbXNJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuXHRcdFx0XHRcdC8vIElmIHdlJ3ZlIHRpbWVkb3V0LCBnb3QgYSByZXNwb25zZSBvciB0aGV5IHN0YXJ0ZWQgdHlwaW5nIHNvbWV0aGluZyBlbHNlLCBzdG9wIHRoZSBpbnRlcnZhbFxyXG5cdFx0XHRcdFx0aWYgKHRpbWVvdXRDaGVjayA8PSAwIHx8IHRoaXMuaXRlbXMpIHtcclxuXHRcdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLndhaXRGb3JJdGVtc0ludGVydmFsKTtcclxuXHRcdFx0XHRcdFx0aWYgKHRpbWVvdXRDaGVjayA8PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIlRpbWVkIG91dCB3YWl0aW5nIGZvciBsaXN0IGluIGF1dG8gY29tcGxldGVcIik7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5pdGVtcyA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLnNob3dOb0l0ZW1zRm91bmREaXNwbGF5ID09PSBmYWxzZSlcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKGV4cGFuZClcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZS5yZWxlYXNlKFwiQVVUT19DT01QTEVURV9XQUlUX0ZPUl9JVEVNU1wiKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdHRpbWVvdXRDaGVjay0tO1xyXG5cdFx0XHRcdH0sIDEwMCk7XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cclxufSIsIjxkaXYgI2F1dG9Db21wbGV0ZVJlZiBpZD1cInNsaWNrLWF1dG8tY29tcGxldGVfe3t1dWlkfX1cIiBjbGFzcz0nc2xpY2stYXV0by1jb21wbGV0ZSBkcm9wZG93bi1tZW51JyBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiBbc3R5bGUubWluV2lkdGhdPVwid2lkdGhcIiBbc3R5bGUudmlzaWJpbGl0eV09XCIoZXhwYW5kZWQgPT09IHRydWUpID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIiBbc3R5bGUub3BhY2l0eV09XCIoZXhwYW5kZWQgPT09IHRydWUpID8gJzEnIDogJzAnXCIgW3N0eWxlLm1heC1oZWlnaHRdPVwibGlzdEhlaWdodFwiIFtzdHlsZS5sZWZ0XT1cImxlZnRcIiBbc3R5bGUudG9wXT1cInRvcFwiPlxyXG5cdDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgc3R5bGU9XCJmb250LXNpemU6IC44cmVtXCIgY2xhc3M9XCJtcy0zIHB5LTJcIj5Mb2FkaW5nLi4uPC9kaXY+XHJcblx0PGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmIGl0ZW1zPy5sZW5ndGggPT09IDBcIiBzdHlsZT1cImZvbnQtc2l6ZTogLjhyZW1cIiBjbGFzcz1cIm1zLTNcIj5cclxuXHRcdE5vIGl0ZW1zIGZvdW5kXHJcblx0PC9kaXY+XHJcblx0PGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmIGl0ZW1zPy5sZW5ndGggPiAwXCI+XHJcblx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaW5kZXggPSBpbmRleDtcIiAoY2xpY2spPVwib25JdGVtQ2xpY2soaW5kZXgpXCIgW2NsYXNzLmNhcmQtaGVhZGVyXT1cInNlbGVjdGVkSW5kZXggPT09IGluZGV4XCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XHJcblx0XHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0SXRlbVRlbXBsYXRlUmVmLnRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGluZGV4IH1cIj5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==