ngx-tethys 17.0.9 → 17.0.11

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 (352) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/action/action.component.d.ts +3 -3
  3. package/alert/alert.component.d.ts +1 -1
  4. package/anchor/anchor.component.d.ts +3 -1
  5. package/autocomplete/autocomplete.component.d.ts +1 -1
  6. package/autocomplete/autocomplete.trigger.directive.d.ts +1 -1
  7. package/avatar/avatar.component.d.ts +4 -4
  8. package/badge/badge.component.d.ts +3 -3
  9. package/button/button-icon.component.d.ts +2 -2
  10. package/button/button.component.d.ts +2 -2
  11. package/card/card.component.d.ts +3 -3
  12. package/card/content.component.d.ts +1 -1
  13. package/carousel/carousel.component.d.ts +4 -4
  14. package/cascader/cascader-li.component.d.ts +5 -5
  15. package/cascader/cascader-search-option.component.d.ts +3 -3
  16. package/cascader/cascader.component.d.ts +8 -8
  17. package/checkbox/checkbox.component.d.ts +1 -1
  18. package/collapse/collapse-item.component.d.ts +2 -2
  19. package/collapse/collapse.component.d.ts +1 -1
  20. package/color-picker/color-picker-panel.component.d.ts +1 -1
  21. package/color-picker/color-picker.component.d.ts +3 -3
  22. package/copy/copy.directive.d.ts +1 -1
  23. package/core/behaviors/decorators.d.ts +1 -1
  24. package/date-picker/abstract-picker.component.d.ts +7 -7
  25. package/date-picker/abstract-picker.directive.d.ts +3 -3
  26. package/date-picker/base-picker.component.d.ts +2 -2
  27. package/date-picker/lib/calendar/calendar-footer.component.d.ts +1 -1
  28. package/date-picker/lib/popups/inner-popup.component.d.ts +1 -1
  29. package/date-picker/picker.component.d.ts +1 -1
  30. package/date-range/date-range.component.d.ts +8 -2
  31. package/dialog/body/dialog-body.component.d.ts +1 -1
  32. package/dialog/footer/dialog-footer.component.d.ts +1 -1
  33. package/dialog/header/dialog-header.component.d.ts +1 -1
  34. package/divider/divider.component.d.ts +2 -2
  35. package/drag-drop/drag-handle.directive.d.ts +1 -1
  36. package/drag-drop/drag.directive.d.ts +1 -1
  37. package/drag-drop/drop-container.directive.d.ts +1 -1
  38. package/dropdown/dropdown-menu-item.directive.d.ts +2 -2
  39. package/dropdown/dropdown-menu.component.d.ts +1 -1
  40. package/dropdown/dropdown.directive.d.ts +1 -1
  41. package/empty/empty.component.d.ts +1 -1
  42. package/esm2022/action/action.component.mjs +7 -6
  43. package/esm2022/alert/alert.component.mjs +5 -5
  44. package/esm2022/anchor/anchor.component.mjs +5 -5
  45. package/esm2022/autocomplete/autocomplete.component.mjs +5 -4
  46. package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +5 -5
  47. package/esm2022/avatar/avatar.component.mjs +8 -8
  48. package/esm2022/badge/badge.component.mjs +7 -6
  49. package/esm2022/button/button-icon.component.mjs +6 -5
  50. package/esm2022/button/button.component.mjs +6 -6
  51. package/esm2022/card/card.component.mjs +7 -6
  52. package/esm2022/card/content.component.mjs +5 -4
  53. package/esm2022/carousel/carousel.component.mjs +8 -7
  54. package/esm2022/cascader/cascader-li.component.mjs +9 -8
  55. package/esm2022/cascader/cascader-search-option.component.mjs +7 -6
  56. package/esm2022/cascader/cascader.component.mjs +12 -12
  57. package/esm2022/checkbox/checkbox.component.mjs +5 -4
  58. package/esm2022/collapse/collapse-item.component.mjs +6 -6
  59. package/esm2022/collapse/collapse.component.mjs +5 -4
  60. package/esm2022/color-picker/color-picker-panel.component.mjs +5 -4
  61. package/esm2022/color-picker/color-picker.component.mjs +7 -6
  62. package/esm2022/copy/copy.directive.mjs +5 -4
  63. package/esm2022/core/behaviors/decorators.mjs +2 -2
  64. package/esm2022/date-picker/abstract-picker.component.mjs +11 -10
  65. package/esm2022/date-picker/abstract-picker.directive.mjs +6 -6
  66. package/esm2022/date-picker/base-picker.component.mjs +5 -5
  67. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -5
  68. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +5 -5
  69. package/esm2022/date-picker/picker.component.mjs +5 -5
  70. package/esm2022/date-range/date-range.component.mjs +6 -5
  71. package/esm2022/dialog/body/dialog-body.component.mjs +5 -4
  72. package/esm2022/dialog/footer/dialog-footer.component.mjs +5 -4
  73. package/esm2022/dialog/header/dialog-header.component.mjs +5 -4
  74. package/esm2022/divider/divider.component.mjs +6 -5
  75. package/esm2022/drag-drop/drag-handle.directive.mjs +5 -4
  76. package/esm2022/drag-drop/drag.directive.mjs +5 -4
  77. package/esm2022/drag-drop/drop-container.directive.mjs +5 -4
  78. package/esm2022/dropdown/dropdown-menu-item.directive.mjs +7 -6
  79. package/esm2022/dropdown/dropdown-menu.component.mjs +5 -4
  80. package/esm2022/dropdown/dropdown.directive.mjs +5 -5
  81. package/esm2022/empty/empty.component.mjs +5 -4
  82. package/esm2022/form/form-group-error/form-group-error.component.mjs +5 -4
  83. package/esm2022/form/form-group-label.directive.mjs +5 -4
  84. package/esm2022/form/form-group.component.mjs +7 -6
  85. package/esm2022/icon/icon.component.mjs +6 -5
  86. package/esm2022/image/image.directive.mjs +6 -5
  87. package/esm2022/input/input-search.component.mjs +5 -4
  88. package/esm2022/input/input.component.mjs +6 -5
  89. package/esm2022/input-number/input-number.component.mjs +6 -6
  90. package/esm2022/layout/header.component.mjs +7 -6
  91. package/esm2022/layout/sidebar-header.component.mjs +5 -4
  92. package/esm2022/layout/sidebar.component.mjs +12 -11
  93. package/esm2022/list/list.component.mjs +5 -4
  94. package/esm2022/list/selection/selection-list.mjs +7 -7
  95. package/esm2022/loading/loading.component.mjs +6 -5
  96. package/esm2022/mention/mention.directive.mjs +3 -3
  97. package/esm2022/menu/group/menu-group.component.mjs +10 -9
  98. package/esm2022/menu/item/action/menu-item-action.component.mjs +5 -4
  99. package/esm2022/menu/item/name/menu-item-name.component.mjs +5 -4
  100. package/esm2022/menu/menu.component.mjs +5 -4
  101. package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +5 -4
  102. package/esm2022/nav/nav-ink-bar.directive.mjs +6 -5
  103. package/esm2022/nav/nav-item.directive.mjs +7 -6
  104. package/esm2022/nav/nav.component.mjs +8 -7
  105. package/esm2022/pagination/pagination.component.mjs +9 -9
  106. package/esm2022/popover/popover.directive.mjs +6 -5
  107. package/esm2022/property/property-item.component.mjs +5 -4
  108. package/esm2022/property-operation/property-operation.component.mjs +9 -9
  109. package/esm2022/radio/group/radio-group.component.mjs +5 -4
  110. package/esm2022/rate/rate-item.component.mjs +5 -4
  111. package/esm2022/rate/rate.component.mjs +7 -7
  112. package/esm2022/resizable/resizable.directive.mjs +7 -6
  113. package/esm2022/resizable/resize-handle.component.mjs +5 -4
  114. package/esm2022/resizable/resize-handles.component.mjs +5 -4
  115. package/esm2022/segment/segment-item.component.mjs +5 -5
  116. package/esm2022/segment/segment.component.mjs +5 -4
  117. package/esm2022/select/custom-select/custom-select.component.mjs +14 -14
  118. package/esm2022/select/native-select/native-select.component.mjs +5 -5
  119. package/esm2022/shared/base-form-check.component.mjs +6 -5
  120. package/esm2022/shared/directives/thy-autofocus.directive.mjs +6 -5
  121. package/esm2022/shared/directives/thy-scroll.directive.mjs +5 -4
  122. package/esm2022/shared/directives/thy-show.mjs +5 -4
  123. package/esm2022/shared/option/group/option-group.component.mjs +5 -4
  124. package/esm2022/shared/option/list-option/list-option.component.mjs +5 -4
  125. package/esm2022/shared/option/option.component.mjs +5 -5
  126. package/esm2022/shared/select/select-control/select-control.component.mjs +10 -10
  127. package/esm2022/skeleton/skeleton-circle.component.mjs +5 -5
  128. package/esm2022/skeleton/skeleton-rectangle.component.mjs +5 -5
  129. package/esm2022/skeleton/skeleton.component.mjs +5 -4
  130. package/esm2022/skeleton/stylized/bullet-list.component.mjs +5 -4
  131. package/esm2022/skeleton/stylized/list.component.mjs +5 -4
  132. package/esm2022/skeleton/stylized/paragraph.component.mjs +5 -4
  133. package/esm2022/slide/slide-body/slide-body-section.component.mjs +5 -4
  134. package/esm2022/slider/slider.component.mjs +6 -6
  135. package/esm2022/space/space.component.mjs +5 -4
  136. package/esm2022/stepper/step-header.component.mjs +6 -5
  137. package/esm2022/stepper/stepper.component.mjs +5 -4
  138. package/esm2022/switch/switch.component.mjs +6 -5
  139. package/esm2022/table/table-column.component.mjs +9 -9
  140. package/esm2022/table/table-skeleton.component.mjs +6 -5
  141. package/esm2022/table/table.component.mjs +14 -14
  142. package/esm2022/tabs/tab.component.mjs +5 -4
  143. package/esm2022/tabs/tabs.component.mjs +6 -6
  144. package/esm2022/tag/tag.component.mjs +5 -5
  145. package/esm2022/time-picker/time-picker-panel.component.mjs +6 -6
  146. package/esm2022/time-picker/time-picker.component.mjs +9 -9
  147. package/esm2022/timeline/timeline.component.mjs +5 -4
  148. package/esm2022/tooltip/tooltip.directive.mjs +6 -6
  149. package/esm2022/tree/tree-node.component.mjs +9 -8
  150. package/esm2022/tree/tree.component.mjs +10 -10
  151. package/esm2022/tree-select/tree-select.component.mjs +11 -11
  152. package/esm2022/upload/file-select.component.mjs +6 -5
  153. package/esm2022/version.mjs +2 -2
  154. package/esm2022/vote/vote.component.mjs +7 -6
  155. package/esm2022/watermark/watermark.directive.mjs +5 -4
  156. package/fesm2022/ngx-tethys-action.mjs +6 -5
  157. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  158. package/fesm2022/ngx-tethys-alert.mjs +4 -4
  159. package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
  160. package/fesm2022/ngx-tethys-anchor.mjs +4 -4
  161. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  162. package/fesm2022/ngx-tethys-autocomplete.mjs +6 -6
  163. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  164. package/fesm2022/ngx-tethys-avatar.mjs +7 -7
  165. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  166. package/fesm2022/ngx-tethys-badge.mjs +6 -5
  167. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  168. package/fesm2022/ngx-tethys-button.mjs +8 -8
  169. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  170. package/fesm2022/ngx-tethys-card.mjs +8 -7
  171. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  172. package/fesm2022/ngx-tethys-carousel.mjs +7 -6
  173. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  174. package/fesm2022/ngx-tethys-cascader.mjs +21 -21
  175. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  176. package/fesm2022/ngx-tethys-checkbox.mjs +4 -3
  177. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  178. package/fesm2022/ngx-tethys-collapse.mjs +7 -7
  179. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  180. package/fesm2022/ngx-tethys-color-picker.mjs +8 -7
  181. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  182. package/fesm2022/ngx-tethys-copy.mjs +4 -3
  183. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  184. package/fesm2022/ngx-tethys-core.mjs +1 -1
  185. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  186. package/fesm2022/ngx-tethys-date-picker.mjs +26 -26
  187. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  188. package/fesm2022/ngx-tethys-date-range.mjs +5 -4
  189. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  190. package/fesm2022/ngx-tethys-dialog.mjs +8 -7
  191. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  192. package/fesm2022/ngx-tethys-divider.mjs +5 -4
  193. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  194. package/fesm2022/ngx-tethys-drag-drop.mjs +8 -8
  195. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  196. package/fesm2022/ngx-tethys-dropdown.mjs +10 -10
  197. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  198. package/fesm2022/ngx-tethys-empty.mjs +4 -3
  199. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  200. package/fesm2022/ngx-tethys-form.mjs +10 -10
  201. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  202. package/fesm2022/ngx-tethys-icon.mjs +5 -5
  203. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  204. package/fesm2022/ngx-tethys-image.mjs +5 -5
  205. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  206. package/fesm2022/ngx-tethys-input-number.mjs +5 -5
  207. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  208. package/fesm2022/ngx-tethys-input.mjs +7 -6
  209. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  210. package/fesm2022/ngx-tethys-layout.mjs +17 -16
  211. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  212. package/fesm2022/ngx-tethys-list.mjs +8 -8
  213. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  214. package/fesm2022/ngx-tethys-loading.mjs +5 -4
  215. package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
  216. package/fesm2022/ngx-tethys-mention.mjs +2 -2
  217. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  218. package/fesm2022/ngx-tethys-menu.mjs +15 -14
  219. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  220. package/fesm2022/ngx-tethys-nav.mjs +16 -16
  221. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  222. package/fesm2022/ngx-tethys-pagination.mjs +8 -8
  223. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  224. package/fesm2022/ngx-tethys-popover.mjs +5 -5
  225. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  226. package/fesm2022/ngx-tethys-property-operation.mjs +8 -8
  227. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  228. package/fesm2022/ngx-tethys-property.mjs +4 -3
  229. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  230. package/fesm2022/ngx-tethys-radio.mjs +7 -6
  231. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  232. package/fesm2022/ngx-tethys-rate.mjs +8 -8
  233. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  234. package/fesm2022/ngx-tethys-resizable.mjs +10 -10
  235. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  236. package/fesm2022/ngx-tethys-segment.mjs +6 -6
  237. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  238. package/fesm2022/ngx-tethys-select.mjs +15 -15
  239. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  240. package/fesm2022/ngx-tethys-shared.mjs +25 -25
  241. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  242. package/fesm2022/ngx-tethys-skeleton.mjs +14 -14
  243. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  244. package/fesm2022/ngx-tethys-slide.mjs +4 -4
  245. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  246. package/fesm2022/ngx-tethys-slider.mjs +5 -5
  247. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  248. package/fesm2022/ngx-tethys-space.mjs +4 -3
  249. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  250. package/fesm2022/ngx-tethys-stepper.mjs +7 -6
  251. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  252. package/fesm2022/ngx-tethys-switch.mjs +5 -4
  253. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  254. package/fesm2022/ngx-tethys-table.mjs +22 -22
  255. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  256. package/fesm2022/ngx-tethys-tabs.mjs +7 -7
  257. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  258. package/fesm2022/ngx-tethys-tag.mjs +4 -4
  259. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  260. package/fesm2022/ngx-tethys-time-picker.mjs +11 -11
  261. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  262. package/fesm2022/ngx-tethys-timeline.mjs +4 -3
  263. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  264. package/fesm2022/ngx-tethys-tooltip.mjs +5 -5
  265. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  266. package/fesm2022/ngx-tethys-tree-select.mjs +10 -10
  267. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  268. package/fesm2022/ngx-tethys-tree.mjs +15 -15
  269. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  270. package/fesm2022/ngx-tethys-upload.mjs +5 -5
  271. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  272. package/fesm2022/ngx-tethys-vote.mjs +6 -5
  273. package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
  274. package/fesm2022/ngx-tethys-watermark.mjs +4 -3
  275. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  276. package/fesm2022/ngx-tethys.mjs +1 -1
  277. package/fesm2022/ngx-tethys.mjs.map +1 -1
  278. package/form/form-group-error/form-group-error.component.d.ts +1 -1
  279. package/form/form-group-label.directive.d.ts +1 -1
  280. package/form/form-group.component.d.ts +3 -3
  281. package/icon/icon.component.d.ts +2 -2
  282. package/image/image.directive.d.ts +2 -2
  283. package/input/input-search.component.d.ts +1 -1
  284. package/input/input.component.d.ts +2 -2
  285. package/input-number/input-number.component.d.ts +2 -2
  286. package/layout/header.component.d.ts +3 -3
  287. package/layout/sidebar-header.component.d.ts +1 -1
  288. package/layout/sidebar.component.d.ts +7 -7
  289. package/list/list.component.d.ts +1 -1
  290. package/list/selection/selection-list.d.ts +3 -3
  291. package/loading/loading.component.d.ts +2 -2
  292. package/menu/group/menu-group.component.d.ts +6 -6
  293. package/menu/item/action/menu-item-action.component.d.ts +1 -1
  294. package/menu/item/name/menu-item-name.component.d.ts +1 -1
  295. package/menu/menu.component.d.ts +1 -1
  296. package/nav/icon-nav/icon-nav-link.directive.d.ts +1 -1
  297. package/nav/nav-ink-bar.directive.d.ts +2 -2
  298. package/nav/nav-item.directive.d.ts +3 -3
  299. package/nav/nav.component.d.ts +4 -4
  300. package/package.json +1 -1
  301. package/pagination/pagination.component.d.ts +5 -5
  302. package/popover/popover.directive.d.ts +2 -2
  303. package/property/property-item.component.d.ts +4 -1
  304. package/property-operation/property-operation.component.d.ts +5 -5
  305. package/radio/group/radio-group.component.d.ts +1 -1
  306. package/rate/rate-item.component.d.ts +1 -1
  307. package/rate/rate.component.d.ts +3 -3
  308. package/resizable/resizable.directive.d.ts +3 -3
  309. package/resizable/resize-handle.component.d.ts +1 -1
  310. package/resizable/resize-handles.component.d.ts +1 -1
  311. package/schematics/version.d.ts +1 -1
  312. package/schematics/version.js +1 -1
  313. package/segment/segment-item.component.d.ts +1 -1
  314. package/segment/segment.component.d.ts +5 -1
  315. package/select/custom-select/custom-select.component.d.ts +10 -10
  316. package/select/native-select/native-select.component.d.ts +1 -1
  317. package/shared/base-form-check.component.d.ts +2 -2
  318. package/shared/directives/thy-autofocus.directive.d.ts +2 -2
  319. package/shared/directives/thy-scroll.directive.d.ts +1 -1
  320. package/shared/directives/thy-show.d.ts +1 -1
  321. package/shared/option/group/option-group.component.d.ts +1 -1
  322. package/shared/option/list-option/list-option.component.d.ts +1 -1
  323. package/shared/option/option.component.d.ts +1 -1
  324. package/shared/select/select-control/select-control.component.d.ts +6 -6
  325. package/skeleton/skeleton-circle.component.d.ts +1 -1
  326. package/skeleton/skeleton-rectangle.component.d.ts +1 -1
  327. package/skeleton/skeleton.component.d.ts +1 -1
  328. package/skeleton/stylized/bullet-list.component.d.ts +1 -1
  329. package/skeleton/stylized/list.component.d.ts +1 -1
  330. package/skeleton/stylized/paragraph.component.d.ts +1 -1
  331. package/slide/slide-body/slide-body-section.component.d.ts +1 -1
  332. package/slider/slider.component.d.ts +2 -2
  333. package/space/space.component.d.ts +1 -1
  334. package/stepper/step-header.component.d.ts +2 -2
  335. package/stepper/stepper.component.d.ts +1 -1
  336. package/switch/switch.component.d.ts +2 -2
  337. package/table/table-column.component.d.ts +5 -5
  338. package/table/table-skeleton.component.d.ts +2 -2
  339. package/table/table.component.d.ts +10 -10
  340. package/tabs/tab.component.d.ts +1 -1
  341. package/tabs/tabs.component.d.ts +2 -2
  342. package/tag/tag.component.d.ts +1 -1
  343. package/time-picker/time-picker-panel.component.d.ts +2 -2
  344. package/time-picker/time-picker.component.d.ts +5 -5
  345. package/timeline/timeline.component.d.ts +1 -1
  346. package/tooltip/tooltip.directive.d.ts +10 -2
  347. package/tree/tree-node.component.d.ts +20 -5
  348. package/tree/tree.component.d.ts +6 -6
  349. package/tree-select/tree-select.component.d.ts +7 -7
  350. package/upload/file-select.component.d.ts +2 -2
  351. package/vote/vote.component.d.ts +3 -3
  352. package/watermark/watermark.directive.d.ts +1 -1
@@ -3,7 +3,7 @@ import { merge, Observable, of } from 'rxjs';
3
3
  import { debounceTime, take, tap } from 'rxjs/operators';
4
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
5
  import { useHostRenderer } from '@tethys/cdk/dom';
6
- import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, DestroyRef, ElementRef, HostBinding, inject, Input, NgZone, QueryList, TemplateRef, ViewChild } from '@angular/core';
6
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, DestroyRef, ElementRef, HostBinding, inject, Input, NgZone, QueryList, TemplateRef, ViewChild } from '@angular/core';
7
7
  import { RouterLinkActive } from '@angular/router';
8
8
  import { ThyNavInkBarDirective } from './nav-ink-bar.directive';
9
9
  import { ThyNavItemDirective } from './nav-item.directive';
@@ -11,6 +11,7 @@ import { BypassSecurityTrustHtmlPipe } from './nav.pipe';
11
11
  import { ThyDropdownMenuComponent, ThyDropdownMenuItemDirective, ThyDropdownMenuItemActiveDirective } from 'ngx-tethys/dropdown';
12
12
  import { ThyIcon } from 'ngx-tethys/icon';
13
13
  import { NgClass, NgTemplateOutlet, NgIf, NgFor } from '@angular/common';
14
+ import { coerceBooleanProperty } from 'ngx-tethys/util';
14
15
  import * as i0 from "@angular/core";
15
16
  import * as i1 from "ngx-tethys/popover";
16
17
  const navTypeClassesMap = {
@@ -300,7 +301,7 @@ export class ThyNav {
300
301
  }
301
302
  }
302
303
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyNav, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.ThyPopover }], target: i0.ɵɵFactoryTarget.Component }); }
303
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyNav, isStandalone: true, selector: "thy-nav", inputs: { thyType: "thyType", thySize: "thySize", thyHorizontal: "thyHorizontal", thyVertical: ["thyVertical", "thyVertical", booleanAttribute], thyFill: ["thyFill", "thyFill", booleanAttribute], thyResponsive: ["thyResponsive", "thyResponsive", booleanAttribute], thyInsideClosable: ["thyInsideClosable", "thyInsideClosable", booleanAttribute], thyExtra: "thyExtra" }, host: { properties: { "class.thy-nav--vertical": "this.thyVertical", "class.thy-nav--fill": "this.thyFill" }, classAttribute: "thy-nav" }, queries: [{ propertyName: "moreOperation", first: true, predicate: ["more"], descendants: true }, { propertyName: "morePopover", first: true, predicate: ["morePopover"], descendants: true }, { propertyName: "extra", first: true, predicate: ["extra"], descendants: true }, { propertyName: "links", predicate: ThyNavItemDirective, descendants: true }, { propertyName: "routers", predicate: RouterLinkActive, descendants: true }], viewQueries: [{ propertyName: "defaultMoreOperation", first: true, predicate: ["moreOperationContainer"], descendants: true }, { propertyName: "inkBar", first: true, predicate: ThyNavInkBarDirective, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"thy-nav-list\" [ngClass]=\"horizontal ? 'justify-content-' + horizontal : ''\" #navList>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <a\n *ngIf=\"thyResponsive\"\n href=\"javascript:;\"\n class=\"thy-nav-more-container\"\n [class.d-none]=\"!showMore\"\n [class.invisible]=\"!initialized\"\n #moreOperationContainer\n thyNavLink\n [thyNavLinkActive]=\"moreActive\"\n (click)=\"openMore($event, navListPopover)\"\n >\n <ng-container *ngIf=\"moreOperation; else defaultMoreOperation\" [ngTemplateOutlet]=\"moreOperation\"></ng-container>\n <ng-template #defaultMoreOperation>\n \u66F4\u591A\n <thy-icon thyIconName=\"angle-down\" class=\"thy-nav-more-icon\"></thy-icon>\n </ng-template>\n </a>\n <thy-nav-ink-bar [showInkBar]=\"showInkBar\" [isVertical]=\"thyVertical\"></thy-nav-ink-bar>\n</div>\n\n<ng-template #navListPopover>\n <ng-container\n *ngIf=\"morePopover; else default\"\n [ngTemplateOutlet]=\"morePopover\"\n [ngTemplateOutletContext]=\"{ $implicit: hiddenItems }\"\n ></ng-container>\n <ng-template #default>\n <thy-dropdown-menu thyImmediateRender>\n <ng-container *ngFor=\"let item of hiddenItems\">\n <span\n class=\"thy-nav-item-more\"\n thyDropdownMenuItem\n [thyDropdownMenuItemActive]=\"item.isActive\"\n (click)=\"navItemClick(item)\"\n [innerHTML]=\"item.elementRef.nativeElement.innerHTML | bypassSecurityTrustHtml\"\n ></span>\n </ng-container>\n </thy-dropdown-menu>\n </ng-template>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<div *ngIf=\"thyExtra || extra\" class=\"thy-nav-extra\">\n <ng-container [ngTemplateOutlet]=\"thyExtra || extra\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ThyNavItemDirective, selector: "[thyNavLink],[thyNavItem]", inputs: ["thyNavItemActive", "thyNavLinkActive", "thyNavItemDisabled"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyNavInkBarDirective, selector: "thy-nav-ink-bar, [thyNavInkBar]", inputs: ["isVertical", "showInkBar"] }, { kind: "component", type: ThyDropdownMenuComponent, selector: "thy-dropdown-menu", inputs: ["thyWidth", "thyImmediateRender"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "directive", type: ThyDropdownMenuItemActiveDirective, selector: "[thyDropdownMenuItemActive]", inputs: ["thyDropdownMenuItemActive"] }, { kind: "pipe", type: BypassSecurityTrustHtmlPipe, name: "bypassSecurityTrustHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
304
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyNav, isStandalone: true, selector: "thy-nav", inputs: { thyType: "thyType", thySize: "thySize", thyHorizontal: "thyHorizontal", thyVertical: ["thyVertical", "thyVertical", coerceBooleanProperty], thyFill: ["thyFill", "thyFill", coerceBooleanProperty], thyResponsive: ["thyResponsive", "thyResponsive", coerceBooleanProperty], thyInsideClosable: ["thyInsideClosable", "thyInsideClosable", coerceBooleanProperty], thyExtra: "thyExtra" }, host: { properties: { "class.thy-nav--vertical": "this.thyVertical", "class.thy-nav--fill": "this.thyFill" }, classAttribute: "thy-nav" }, queries: [{ propertyName: "moreOperation", first: true, predicate: ["more"], descendants: true }, { propertyName: "morePopover", first: true, predicate: ["morePopover"], descendants: true }, { propertyName: "extra", first: true, predicate: ["extra"], descendants: true }, { propertyName: "links", predicate: ThyNavItemDirective, descendants: true }, { propertyName: "routers", predicate: RouterLinkActive, descendants: true }], viewQueries: [{ propertyName: "defaultMoreOperation", first: true, predicate: ["moreOperationContainer"], descendants: true }, { propertyName: "inkBar", first: true, predicate: ThyNavInkBarDirective, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"thy-nav-list\" [ngClass]=\"horizontal ? 'justify-content-' + horizontal : ''\" #navList>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <a\n *ngIf=\"thyResponsive\"\n href=\"javascript:;\"\n class=\"thy-nav-more-container\"\n [class.d-none]=\"!showMore\"\n [class.invisible]=\"!initialized\"\n #moreOperationContainer\n thyNavLink\n [thyNavLinkActive]=\"moreActive\"\n (click)=\"openMore($event, navListPopover)\"\n >\n <ng-container *ngIf=\"moreOperation; else defaultMoreOperation\" [ngTemplateOutlet]=\"moreOperation\"></ng-container>\n <ng-template #defaultMoreOperation>\n \u66F4\u591A\n <thy-icon thyIconName=\"angle-down\" class=\"thy-nav-more-icon\"></thy-icon>\n </ng-template>\n </a>\n <thy-nav-ink-bar [showInkBar]=\"showInkBar\" [isVertical]=\"thyVertical\"></thy-nav-ink-bar>\n</div>\n\n<ng-template #navListPopover>\n <ng-container\n *ngIf=\"morePopover; else default\"\n [ngTemplateOutlet]=\"morePopover\"\n [ngTemplateOutletContext]=\"{ $implicit: hiddenItems }\"\n ></ng-container>\n <ng-template #default>\n <thy-dropdown-menu thyImmediateRender>\n <ng-container *ngFor=\"let item of hiddenItems\">\n <span\n class=\"thy-nav-item-more\"\n thyDropdownMenuItem\n [thyDropdownMenuItemActive]=\"item.isActive\"\n (click)=\"navItemClick(item)\"\n [innerHTML]=\"item.elementRef.nativeElement.innerHTML | bypassSecurityTrustHtml\"\n ></span>\n </ng-container>\n </thy-dropdown-menu>\n </ng-template>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<div *ngIf=\"thyExtra || extra\" class=\"thy-nav-extra\">\n <ng-container [ngTemplateOutlet]=\"thyExtra || extra\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ThyNavItemDirective, selector: "[thyNavLink],[thyNavItem]", inputs: ["thyNavItemActive", "thyNavLinkActive", "thyNavItemDisabled"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyNavInkBarDirective, selector: "thy-nav-ink-bar, [thyNavInkBar]", inputs: ["isVertical", "showInkBar"] }, { kind: "component", type: ThyDropdownMenuComponent, selector: "thy-dropdown-menu", inputs: ["thyWidth", "thyImmediateRender"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "directive", type: ThyDropdownMenuItemActiveDirective, selector: "[thyDropdownMenuItemActive]", inputs: ["thyDropdownMenuItemActive"] }, { kind: "pipe", type: BypassSecurityTrustHtmlPipe, name: "bypassSecurityTrustHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
304
305
  }
305
306
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyNav, decorators: [{
306
307
  type: Component,
@@ -330,19 +331,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
330
331
  args: ['class.thy-nav--vertical']
331
332
  }, {
332
333
  type: Input,
333
- args: [{ transform: booleanAttribute }]
334
+ args: [{ transform: coerceBooleanProperty }]
334
335
  }], thyFill: [{
335
336
  type: HostBinding,
336
337
  args: ['class.thy-nav--fill']
337
338
  }, {
338
339
  type: Input,
339
- args: [{ transform: booleanAttribute }]
340
+ args: [{ transform: coerceBooleanProperty }]
340
341
  }], thyResponsive: [{
341
342
  type: Input,
342
- args: [{ transform: booleanAttribute }]
343
+ args: [{ transform: coerceBooleanProperty }]
343
344
  }], thyInsideClosable: [{
344
345
  type: Input,
345
- args: [{ transform: booleanAttribute }]
346
+ args: [{ transform: coerceBooleanProperty }]
346
347
  }], thyExtra: [{
347
348
  type: Input
348
349
  }], links: [{
@@ -367,4 +368,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
367
368
  type: ViewChild,
368
369
  args: [ThyNavInkBarDirective, { static: true }]
369
370
  }] } });
370
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYXYvbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9uYXYvbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFJSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDRCQUE0QixFQUFFLGtDQUFrQyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixD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LEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU83QixRQUFRO3NCQUFoQixLQUFLO2dCQU1GLEtBQUs7c0JBRFIsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBWUQsT0FBTztzQkFBaEUsZUFBZTt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBTWxDLGFBQWE7c0JBQWxDLFlBQVk7dUJBQUMsTUFBTTtnQkFNUyxXQUFXO3NCQUF2QyxZQUFZO3VCQUFDLGFBQWE7Z0JBT0osS0FBSztzQkFBM0IsWUFBWTt1QkFBQyxPQUFPO2dCQUVnQixvQkFBb0I7c0JBQXhELFNBQVM7dUJBQUMsd0JBQXdCO2dCQUVpQixNQUFNO3NCQUF6RCxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoeVBvcG92ZXIgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHVzZUhvc3RSZW5kZXJlciB9IGZyb20gJ0B0ZXRoeXMvY2RrL2RvbSc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudENoZWNrZWQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJvdXRlckxpbmtBY3RpdmUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVGh5TmF2SW5rQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi9uYXYtaW5rLWJhci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGh5TmF2SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vbmF2LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sUGlwZSB9IGZyb20gJy4vbmF2LnBpcGUnO1xuaW1wb3J0IHsgVGh5RHJvcGRvd25NZW51Q29tcG9uZW50LCBUaHlEcm9wZG93bk1lbnVJdGVtRGlyZWN0aXZlLCBUaHlEcm9wZG93bk1lbnVJdGVtQWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9kcm9wZG93bic7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIE5nSWYsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IHR5cGUgVGh5TmF2VHlwZSA9ICdwdWxsZWQnIHwgJ3RhYnMnIHwgJ3BpbGxzJyB8ICdsaXRlJyB8ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ3RoaXJkbHknIHwgJ3NlY29uZGFyeS1kaXZpZGVyJztcbmV4cG9ydCB0eXBlIFRoeU5hdlNpemUgPSAnbGcnIHwgJ21kJyB8ICdzbSc7XG5leHBvcnQgdHlwZSBUaHlOYXZIb3Jpem9udGFsID0gJycgfCAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJztcblxuY29uc3QgbmF2VHlwZUNsYXNzZXNNYXAgPSB7XG4gICAgcHVsbGVkOiBbJ3RoeS1uYXYtcHVsbGVkJ10sXG4gICAgdGFiczogWyd0aHktbmF2LXRhYnMnXSxcbiAgICBwaWxsczogWyd0aHktbmF2LXBpbGxzJ10sXG4gICAgbGl0ZTogWyd0aHktbmF2LWxpdGUnXSxcbiAgICAvL+WmguS4i+exu+Wei+W3sue7j+W6n+W8g1xuICAgIHByaW1hcnk6IFsndGh5LW5hdi1wcmltYXJ5J10sXG4gICAgc2Vjb25kYXJ5OiBbJ3RoeS1uYXYtc2Vjb25kYXJ5J10sXG4gICAgdGhpcmRseTogWyd0aHktbmF2LXRoaXJkbHknXSxcbiAgICAnc2Vjb25kYXJ5LWRpdmlkZXInOiBbJ3RoeS1uYXYtc2Vjb25kYXJ5LWRpdmlkZXInXVxufTtcblxuY29uc3QgbmF2U2l6ZUNsYXNzZXNNYXAgPSB7XG4gICAgbGc6ICd0aHktbmF2LWxnJyxcbiAgICBtZDogJ3RoeS1uYXYtbWQnLFxuICAgIHNtOiAndGh5LW5hdi1zbSdcbn07XG5cbmNvbnN0IHRhYkl0ZW1SaWdodCA9IDIwO1xuXG4vKipcbiAqIOWvvOiIque7hOS7tlxuICogQG5hbWUgdGh5LW5hdlxuICogQG9yZGVyIDEwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LW5hdicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25hdi5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS1uYXYnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTmdJZixcbiAgICAgICAgVGh5TmF2SXRlbURpcmVjdGl2ZSxcbiAgICAgICAgVGh5SWNvbixcbiAgICAgICAgVGh5TmF2SW5rQmFyRGlyZWN0aXZlLFxuICAgICAgICBUaHlEcm9wZG93bk1lbnVDb21wb25lbnQsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBUaHlEcm9wZG93bk1lbnVJdGVtRGlyZWN0aXZlLFxuICAgICAgICBUaHlEcm9wZG93bk1lbnVJdGVtQWN0aXZlRGlyZWN0aXZlLFxuICAgICAgICBCeXBhc3NTZWN1cml0eVRydXN0SHRtbFBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoeU5hdiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBwcml2YXRlIHR5cGU6IFRoeU5hdlR5cGUgPSAncHVsbGVkJztcbiAgICBwcml2YXRlIHNpemU6IFRoeU5hdlNpemUgPSAnbWQnO1xuICAgIHB1YmxpYyBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGhvcml6b250YWw6IFRoeU5hdkhvcml6b250YWw7XG4gICAgcHVibGljIHdyYXBwZXJPZmZzZXQ6IHsgaGVpZ2h0OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGxlZnQ6IG51bWJlcjsgdG9wOiBudW1iZXIgfSA9IHtcbiAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgdG9wOiAwXG4gICAgfTtcblxuICAgIHB1YmxpYyBoaWRkZW5JdGVtczogVGh5TmF2SXRlbURpcmVjdGl2ZVtdID0gW107XG5cbiAgICBwdWJsaWMgbW9yZUFjdGl2ZTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBzaG93TW9yZSA9IHRydWU7XG5cbiAgICBwcml2YXRlIG1vcmVCdG5PZmZzZXQ6IHsgaGVpZ2h0OiBudW1iZXI7IHdpZHRoOiBudW1iZXIgfSA9IHsgaGVpZ2h0OiAwLCB3aWR0aDogMCB9O1xuXG4gICAgcHJpdmF0ZSBob3N0UmVuZGVyZXIgPSB1c2VIb3N0UmVuZGVyZXIoKTtcblxuICAgIHByaXZhdGUgaW5uZXJMaW5rczogUXVlcnlMaXN0PFRoeU5hdkl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICog5a+86Iiq57G75Z6LXG4gICAgICogQHR5cGUgcHVsbGVkIHwgdGFicyB8IHBpbGxzIHwgbGl0ZSB8IHByaW1hcnkgfCBzZWNvbmRhcnkgfCB0aGlyZGx5IHwgc2Vjb25kYXJ5LWRpdmlkZXJcbiAgICAgKiBAZGVmYXVsdCBwdWxsZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlUeXBlKHR5cGU6IFRoeU5hdlR5cGUpIHtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZSB8fCAncHVsbGVkJztcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2xhc3NlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5a+86Iiq5aSn5bCPXG4gICAgICogQHR5cGUgbGcgfCBtZCB8IHNtXG4gICAgICogQGRlZmF1bHQgbWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlTaXplKHNpemU6IFRoeU5hdlNpemUpIHtcbiAgICAgICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2xhc3NlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5rC05bmz5o6S5YiXXG4gICAgICogQHR5cGUgJycgfCAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJ1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5SG9yaXpvbnRhbChob3Jpem9udGFsOiBUaHlOYXZIb3Jpem9udGFsKSB7XG4gICAgICAgIHRoaXMuaG9yaXpvbnRhbCA9IChob3Jpem9udGFsIGFzIHN0cmluZykgPT09ICdyaWdodCcgPyAnZW5kJyA6IGhvcml6b250YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5Z6C55u05o6S5YiXXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1uYXYtLXZlcnRpY2FsJylcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICB0aHlWZXJ0aWNhbDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYr+Whq+WFheaooeW8j1xuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LW5hdi0tZmlsbCcpXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgdGh5RmlsbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5ZON5bqU5byP77yM6Ieq5Yqo6K6h566X5a695bqm5a2Y5pS+IHRoeU5hdkl0ZW3vvIzlubbmt7vliqDmm7TlpJrlvLnmoYZcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHRoeVJlc3BvbnNpdmU6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDmm7TlpJrmk43kvZznmoToj5zljZXngrnlh7vlhoXpg6jmmK/lkKblj6/lhbPpl61cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICB0aHlJbnNpZGVDbG9zYWJsZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDlj7Pkvqfpop3lpJbljLrln5/mqKHmnb9cbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUV4dHJhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihUaHlOYXZJdGVtRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc2V0IGxpbmtzKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaW5uZXJMaW5rcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVJbmRleCA9IE5hTjtcbiAgICB9XG4gICAgZ2V0IGxpbmtzKCk6IFF1ZXJ5TGlzdDxUaHlOYXZJdGVtRGlyZWN0aXZlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyTGlua3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFJvdXRlckxpbmtBY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcm91dGVyczogUXVlcnlMaXN0PFJvdXRlckxpbmtBY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICog5ZON5bqU5byP5qih5byP5LiL5pu05aSa5pON5L2c5qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtb3JlJykgbW9yZU9wZXJhdGlvbjogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgICAvKipcbiAgICAgKiDlk43lupTlvI/mqKHlvI/kuIvmm7TlpJrlvLnmoYbmqKHmnb9cbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vcmVQb3BvdmVyJykgbW9yZVBvcG92ZXI6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgLyoqXG4gICAgICog5Y+z5L6n6aKd5aSW5Yy65Z+f5qih5p2/77yM5pSv5oyBIHRoeUV4dHJhIOS8oOWPguWSjCA8bmctdGVtcGxhdGUgI2V4dHJhPjwvbmctdGVtcGxhdGU+IOaooeadv1xuICAgICAqIEBuYW1lIGV4dHJhXG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdleHRyYScpIGV4dHJhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIEBWaWV3Q2hpbGQoJ21vcmVPcGVyYXRpb25Db250YWluZXInKSBkZWZhdWx0TW9yZU9wZXJhdGlvbjogRWxlbWVudFJlZjxIVE1MQW5jaG9yRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKFRoeU5hdklua0JhckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgaW5rQmFyITogVGh5TmF2SW5rQmFyRGlyZWN0aXZlO1xuXG4gICAgZ2V0IHNob3dJbmtCYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHNob3dUeXBlczogVGh5TmF2VHlwZVtdID0gWydwdWxsZWQnLCAndGFicyddO1xuICAgICAgICByZXR1cm4gc2hvd1R5cGVzLmluY2x1ZGVzKHRoaXMudHlwZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDbGFzc2VzKCkge1xuICAgICAgICBsZXQgY2xhc3NOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKG5hdlR5cGVDbGFzc2VzTWFwW3RoaXMudHlwZV0pIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBbLi4ubmF2VHlwZUNsYXNzZXNNYXBbdGhpcy50eXBlXV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hdlNpemVDbGFzc2VzTWFwW3RoaXMuc2l6ZV0pIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaChuYXZTaXplQ2xhc3Nlc01hcFt0aGlzLnNpemVdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhvc3RSZW5kZXJlci51cGRhdGVDbGFzcyhjbGFzc05hbWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGN1ckFjdGl2ZUluZGV4OiBudW1iZXI7XG5cbiAgICBwcml2YXRlIHByZXZBY3RpdmVJbmRleDogbnVtYmVyID0gTmFOO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcG9wb3ZlcjogVGh5UG9wb3ZlclxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMudGh5UmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzZXMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeVJlc3BvbnNpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0TW9yZUJ0bk9mZnNldCgpO1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGlua3MudG9BcnJheSgpLmZvckVhY2gobGluayA9PiBsaW5rLnNldE9mZnNldCgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEhpZGRlbkl0ZW1zKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBtZXJnZShcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmtzLmNoYW5nZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVSZXNpemVPYnNlcnZlcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkucGlwZShkZWJvdW5jZVRpbWUoMTAwKSksXG4gICAgICAgICAgICAgICAgLi4udGhpcy5saW5rcy5tYXAoaXRlbSA9PiB0aGlzLmNyZWF0ZVJlc2l6ZU9ic2VydmVyKGl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5waXBlKGRlYm91bmNlVGltZSgxMDApKSksXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMucm91dGVycyB8fCBbXSkubWFwKHJvdXRlciA9PiByb3V0ZXI/LmlzQWN0aXZlQ2hhbmdlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRoeVJlc3BvbnNpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2l6ZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEhpZGRlbkl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVNb3JlSXNBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGh5UmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRTaXplcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlTW9yZUlzQWN0aXZlKCk7XG5cbiAgICAgICAgdGhpcy5jdXJBY3RpdmVJbmRleCA9IHRoaXMubGlua3MgJiYgdGhpcy5saW5rcy5sZW5ndGggPyB0aGlzLmxpbmtzLnRvQXJyYXkoKS5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmxpbmtJc0FjdGl2ZSgpKSA6IC0xO1xuICAgICAgICBpZiAodGhpcy5jdXJBY3RpdmVJbmRleCA8IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW5rQmFyLmhpZGUoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1ckFjdGl2ZUluZGV4ICE9PSB0aGlzLnByZXZBY3RpdmVJbmRleCkge1xuICAgICAgICAgICAgdGhpcy5hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TW9yZUJ0bk9mZnNldCgpIHtcbiAgICAgICAgdGhpcy5tb3JlQnRuT2Zmc2V0ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmRlZmF1bHRNb3JlT3BlcmF0aW9uPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5kZWZhdWx0TW9yZU9wZXJhdGlvbj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjcmVhdGVSZXNpemVPYnNlcnZlcihlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgPyBvZihudWxsKVxuICAgICAgICAgICAgOiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXNpemUgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChlbnRyaWVzKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgcmVzaXplLm9ic2VydmUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZS5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1vcmVJc0FjdGl2ZSgpIHtcbiAgICAgICAgdGhpcy5tb3JlQWN0aXZlID0gdGhpcy5oaWRkZW5JdGVtcy5zb21lKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubGlua0lzQWN0aXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEhpZGRlbkl0ZW1zKCkge1xuICAgICAgICB0aGlzLm1vcmVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgdGFicyA9IHRoaXMubGlua3MudG9BcnJheSgpO1xuICAgICAgICBpZiAoIXRhYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGRlbkl0ZW1zID0gW107XG4gICAgICAgICAgICB0aGlzLnNob3dNb3JlID0gdGhpcy5oaWRkZW5JdGVtcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSB0aGlzLnRoeVZlcnRpY2FsID8gdGhpcy5nZXRTaG93SXRlbXNFbmRJbmRleFdoZW5WZXJ0aWNhbCh0YWJzKSA6IHRoaXMuZ2V0U2hvd0l0ZW1zRW5kSW5kZXhXaGVuSG9yaXpvbnRhbCh0YWJzKTtcblxuICAgICAgICBjb25zdCBzaG93SXRlbXMgPSB0YWJzLnNsaWNlKDAsIGVuZEluZGV4ICsgMSk7XG4gICAgICAgIChzaG93SXRlbXMgfHwgW10pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnNldE5hdkxpbmtIaWRkZW4oZmFsc2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmhpZGRlbkl0ZW1zID0gZW5kSW5kZXggPT09IHRhYnMubGVuZ3RoIC0gMSA/IFtdIDogdGFicy5zbGljZShlbmRJbmRleCArIDEpO1xuICAgICAgICAodGhpcy5oaWRkZW5JdGVtcyB8fCBbXSkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0uc2V0TmF2TGlua0hpZGRlbih0cnVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zaG93TW9yZSA9IHRoaXMuaGlkZGVuSXRlbXMubGVuZ3RoID4gMDtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTaG93SXRlbXNFbmRJbmRleFdoZW5Ib3Jpem9udGFsKHRhYnM6IFRoeU5hdkl0ZW1EaXJlY3RpdmVbXSkge1xuICAgICAgICBjb25zdCB0YWJzTGVuZ3RoID0gdGFicy5sZW5ndGg7XG4gICAgICAgIGxldCBlbmRJbmRleCA9IHRhYnNMZW5ndGg7XG4gICAgICAgIGxldCB0b3RhbFdpZHRoID0gMDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYnNMZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgX3RvdGFsV2lkdGggPSBpID09PSB0YWJzTGVuZ3RoIC0gMSA/IHRvdGFsV2lkdGggKyB0YWJzW2ldLm9mZnNldC53aWR0aCA6IHRvdGFsV2lkdGggKyB0YWJzW2ldLm9mZnNldC53aWR0aCArIHRhYkl0ZW1SaWdodDtcbiAgICAgICAgICAgIGlmIChfdG90YWxXaWR0aCA+IHRoaXMud3JhcHBlck9mZnNldC53aWR0aCkge1xuICAgICAgICAgICAgICAgIGxldCBtb3JlT3BlcmF0aW9uV2lkdGggPSB0aGlzLm1vcmVCdG5PZmZzZXQud2lkdGg7XG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsV2lkdGggKyBtb3JlT3BlcmF0aW9uV2lkdGggPD0gdGhpcy53cmFwcGVyT2Zmc2V0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gaSAtIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpIC0gMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsV2lkdGggPSBfdG90YWxXaWR0aDtcbiAgICAgICAgICAgICAgICBlbmRJbmRleCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVuZEluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2hvd0l0ZW1zRW5kSW5kZXhXaGVuVmVydGljYWwodGFiczogVGh5TmF2SXRlbURpcmVjdGl2ZVtdKSB7XG4gICAgICAgIGNvbnN0IHRhYnNMZW5ndGggPSB0YWJzLmxlbmd0aDtcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gdGFic0xlbmd0aDtcbiAgICAgICAgbGV0IHRvdGFsSGVpZ2h0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJzTGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IF90b3RhbEhlaWdodCA9IHRvdGFsSGVpZ2h0ICsgdGFic1tpXS5vZmZzZXQuaGVpZ2h0O1xuICAgICAgICAgICAgaWYgKF90b3RhbEhlaWdodCA+IHRoaXMud3JhcHBlck9mZnNldC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBsZXQgbW9yZU9wZXJhdGlvbkhlaWdodCA9IHRoaXMubW9yZUJ0bk9mZnNldC5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsSGVpZ2h0ICsgbW9yZU9wZXJhdGlvbkhlaWdodCA8PSB0aGlzLndyYXBwZXJPZmZzZXQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gaSAtIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpIC0gMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsSGVpZ2h0ID0gX3RvdGFsSGVpZ2h0O1xuICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW5kSW5kZXg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFNpemVzKCkge1xuICAgICAgICB0aGlzLndyYXBwZXJPZmZzZXQgPSB7XG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCB8fCAwLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIHx8IDAsXG4gICAgICAgICAgICBsZWZ0OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IHx8IDAsXG4gICAgICAgICAgICB0b3A6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCB8fCAwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb3Blbk1vcmUoZXZlbnQ6IEV2ZW50LCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLnBvcG92ZXIub3Blbih0ZW1wbGF0ZSwge1xuICAgICAgICAgICAgb3JpZ2luOiBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IHRoaXMudGh5SW5zaWRlQ2xvc2FibGUsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RoeS1uYXYtbGlzdC1wb3BvdmVyJyxcbiAgICAgICAgICAgIG9yaWdpbkFjdGl2ZUNsYXNzOiAndGh5LW5hdi1vcmlnaW4tYWN0aXZlJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuYXZJdGVtQ2xpY2soaXRlbTogVGh5TmF2SXRlbURpcmVjdGl2ZSkge1xuICAgICAgICBpdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2hvd0lua0Jhcikge1xuICAgICAgICAgICAgdGhpcy5pbmtCYXIuaGlkZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYnMgPSB0aGlzLmxpbmtzPy50b0FycmF5KCkgPz8gW107XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRhYnMuZmluZChpdGVtID0+IGl0ZW0ubGlua0lzQWN0aXZlKCkpO1xuICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtRWxlbWVudDogSFRNTEVsZW1lbnQgPSBzZWxlY3RlZEl0ZW0gJiYgc2VsZWN0ZWRJdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtICYmIHRoaXMubW9yZUFjdGl2ZSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtRWxlbWVudCA9IHRoaXMuZGVmYXVsdE1vcmVPcGVyYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2QWN0aXZlSW5kZXggPSB0aGlzLmN1ckFjdGl2ZUluZGV4O1xuICAgICAgICAgICAgdGhpcy5pbmtCYXIuYWxpZ25Ub0VsZW1lbnQoc2VsZWN0ZWRJdGVtRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgdGh5VmVydGljYWwsIHRoeVR5cGUgfSA9IGNoYW5nZXM7XG5cbiAgICAgICAgaWYgKHRoeVR5cGU/LmN1cnJlbnRWYWx1ZSAhPT0gdGh5VHlwZT8ucHJldmlvdXNWYWx1ZSB8fCB0aHlWZXJ0aWNhbD8uY3VycmVudFZhbHVlICE9PSB0aHlWZXJ0aWNhbD8ucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0aHktbmF2LWxpc3RcIiBbbmdDbGFzc109XCJob3Jpem9udGFsID8gJ2p1c3RpZnktY29udGVudC0nICsgaG9yaXpvbnRhbCA6ICcnXCIgI25hdkxpc3Q+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICA8YVxuICAgICpuZ0lmPVwidGh5UmVzcG9uc2l2ZVwiXG4gICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgY2xhc3M9XCJ0aHktbmF2LW1vcmUtY29udGFpbmVyXCJcbiAgICBbY2xhc3MuZC1ub25lXT1cIiFzaG93TW9yZVwiXG4gICAgW2NsYXNzLmludmlzaWJsZV09XCIhaW5pdGlhbGl6ZWRcIlxuICAgICNtb3JlT3BlcmF0aW9uQ29udGFpbmVyXG4gICAgdGh5TmF2TGlua1xuICAgIFt0aHlOYXZMaW5rQWN0aXZlXT1cIm1vcmVBY3RpdmVcIlxuICAgIChjbGljayk9XCJvcGVuTW9yZSgkZXZlbnQsIG5hdkxpc3RQb3BvdmVyKVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9yZU9wZXJhdGlvbjsgZWxzZSBkZWZhdWx0TW9yZU9wZXJhdGlvblwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vcmVPcGVyYXRpb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNb3JlT3BlcmF0aW9uPlxuICAgICAg5pu05aSaXG4gICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1kb3duXCIgY2xhc3M9XCJ0aHktbmF2LW1vcmUtaWNvblwiPjwvdGh5LWljb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9hPlxuICA8dGh5LW5hdi1pbmstYmFyIFtzaG93SW5rQmFyXT1cInNob3dJbmtCYXJcIiBbaXNWZXJ0aWNhbF09XCJ0aHlWZXJ0aWNhbFwiPjwvdGh5LW5hdi1pbmstYmFyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbmF2TGlzdFBvcG92ZXI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIm1vcmVQb3BvdmVyOyBlbHNlIGRlZmF1bHRcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vcmVQb3BvdmVyXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGhpZGRlbkl0ZW1zIH1cIlxuICA+PC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICA8dGh5LWRyb3Bkb3duLW1lbnUgdGh5SW1tZWRpYXRlUmVuZGVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBoaWRkZW5JdGVtc1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidGh5LW5hdi1pdGVtLW1vcmVcIlxuICAgICAgICAgIHRoeURyb3Bkb3duTWVudUl0ZW1cbiAgICAgICAgICBbdGh5RHJvcGRvd25NZW51SXRlbUFjdGl2ZV09XCJpdGVtLmlzQWN0aXZlXCJcbiAgICAgICAgICAoY2xpY2spPVwibmF2SXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCB8IGJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGh5LWRyb3Bkb3duLW1lbnU+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgKm5nSWY9XCJ0aHlFeHRyYSB8fCBleHRyYVwiIGNsYXNzPVwidGh5LW5hdi1leHRyYVwiPlxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRoeUV4dHJhIHx8IGV4dHJhXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
371
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYXYvbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9uYXYvbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFJSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsNEJBQTRCLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FB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O2dCQU8zQyxpQkFBaUI7c0JBRGhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBT2xDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUYsS0FBSztzQkFEUixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFZRCxPQUFPO3NCQUFoRSxlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFNbEMsYUFBYTtzQkFBbEMsWUFBWTt1QkFBQyxNQUFNO2dCQU1TLFdBQVc7c0JBQXZDLFlBQVk7dUJBQUMsYUFBYTtnQkFPSixLQUFLO3NCQUEzQixZQUFZO3VCQUFDLE9BQU87Z0JBRWdCLG9CQUFvQjtzQkFBeEQsU0FBUzt1QkFBQyx3QkFBd0I7Z0JBRWlCLE1BQU07c0JBQXpELFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGh5UG9wb3ZlciB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgdXNlSG9zdFJlbmRlcmVyIH0gZnJvbSAnQHRldGh5cy9jZGsvZG9tJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJvdXRlckxpbmtBY3RpdmUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVGh5TmF2SW5rQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi9uYXYtaW5rLWJhci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGh5TmF2SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vbmF2LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sUGlwZSB9IGZyb20gJy4vbmF2LnBpcGUnO1xuaW1wb3J0IHsgVGh5RHJvcGRvd25NZW51Q29tcG9uZW50LCBUaHlEcm9wZG93bk1lbnVJdGVtRGlyZWN0aXZlLCBUaHlEcm9wZG93bk1lbnVJdGVtQWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9kcm9wZG93bic7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIE5nSWYsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbmV4cG9ydCB0eXBlIFRoeU5hdlR5cGUgPSAncHVsbGVkJyB8ICd0YWJzJyB8ICdwaWxscycgfCAnbGl0ZScgfCAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICd0aGlyZGx5JyB8ICdzZWNvbmRhcnktZGl2aWRlcic7XG5leHBvcnQgdHlwZSBUaHlOYXZTaXplID0gJ2xnJyB8ICdtZCcgfCAnc20nO1xuZXhwb3J0IHR5cGUgVGh5TmF2SG9yaXpvbnRhbCA9ICcnIHwgJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG5cbmNvbnN0IG5hdlR5cGVDbGFzc2VzTWFwID0ge1xuICAgIHB1bGxlZDogWyd0aHktbmF2LXB1bGxlZCddLFxuICAgIHRhYnM6IFsndGh5LW5hdi10YWJzJ10sXG4gICAgcGlsbHM6IFsndGh5LW5hdi1waWxscyddLFxuICAgIGxpdGU6IFsndGh5LW5hdi1saXRlJ10sXG4gICAgLy/lpoLkuIvnsbvlnovlt7Lnu4/lup/lvINcbiAgICBwcmltYXJ5OiBbJ3RoeS1uYXYtcHJpbWFyeSddLFxuICAgIHNlY29uZGFyeTogWyd0aHktbmF2LXNlY29uZGFyeSddLFxuICAgIHRoaXJkbHk6IFsndGh5LW5hdi10aGlyZGx5J10sXG4gICAgJ3NlY29uZGFyeS1kaXZpZGVyJzogWyd0aHktbmF2LXNlY29uZGFyeS1kaXZpZGVyJ11cbn07XG5cbmNvbnN0IG5hdlNpemVDbGFzc2VzTWFwID0ge1xuICAgIGxnOiAndGh5LW5hdi1sZycsXG4gICAgbWQ6ICd0aHktbmF2LW1kJyxcbiAgICBzbTogJ3RoeS1uYXYtc20nXG59O1xuXG5jb25zdCB0YWJJdGVtUmlnaHQgPSAyMDtcblxuLyoqXG4gKiDlr7zoiKrnu4Tku7ZcbiAqIEBuYW1lIHRoeS1uYXZcbiAqIEBvcmRlciAxMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1uYXYnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uYXYuY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktbmF2J1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFRoeU5hdkl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIFRoeUljb24sXG4gICAgICAgIFRoeU5hdklua0JhckRpcmVjdGl2ZSxcbiAgICAgICAgVGh5RHJvcGRvd25NZW51Q29tcG9uZW50LFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgVGh5RHJvcGRvd25NZW51SXRlbURpcmVjdGl2ZSxcbiAgICAgICAgVGh5RHJvcGRvd25NZW51SXRlbUFjdGl2ZURpcmVjdGl2ZSxcbiAgICAgICAgQnlwYXNzU2VjdXJpdHlUcnVzdEh0bWxQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlOYXYgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgcHJpdmF0ZSB0eXBlOiBUaHlOYXZUeXBlID0gJ3B1bGxlZCc7XG4gICAgcHJpdmF0ZSBzaXplOiBUaHlOYXZTaXplID0gJ21kJztcbiAgICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBob3Jpem9udGFsOiBUaHlOYXZIb3Jpem9udGFsO1xuICAgIHB1YmxpYyB3cmFwcGVyT2Zmc2V0OiB7IGhlaWdodDogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0gPSB7XG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIHRvcDogMFxuICAgIH07XG5cbiAgICBwdWJsaWMgaGlkZGVuSXRlbXM6IFRoeU5hdkl0ZW1EaXJlY3RpdmVbXSA9IFtdO1xuXG4gICAgcHVibGljIG1vcmVBY3RpdmU6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgc2hvd01vcmUgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBtb3JlQnRuT2Zmc2V0OiB7IGhlaWdodDogbnVtYmVyOyB3aWR0aDogbnVtYmVyIH0gPSB7IGhlaWdodDogMCwgd2lkdGg6IDAgfTtcblxuICAgIHByaXZhdGUgaG9zdFJlbmRlcmVyID0gdXNlSG9zdFJlbmRlcmVyKCk7XG5cbiAgICBwcml2YXRlIGlubmVyTGlua3M6IFF1ZXJ5TGlzdDxUaHlOYXZJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKlxuICAgICAqIOWvvOiIquexu+Wei1xuICAgICAqIEB0eXBlIHB1bGxlZCB8IHRhYnMgfCBwaWxscyB8IGxpdGUgfCBwcmltYXJ5IHwgc2Vjb25kYXJ5IHwgdGhpcmRseSB8IHNlY29uZGFyeS1kaXZpZGVyXG4gICAgICogQGRlZmF1bHQgcHVsbGVkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5VHlwZSh0eXBlOiBUaHlOYXZUeXBlKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGUgfHwgJ3B1bGxlZCc7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWvvOiIquWkp+Wwj1xuICAgICAqIEB0eXBlIGxnIHwgbWQgfCBzbVxuICAgICAqIEBkZWZhdWx0IG1kXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5U2l6ZShzaXplOiBUaHlOYXZTaXplKSB7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOawtOW5s+aOkuWIl1xuICAgICAqIEB0eXBlICcnIHwgJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUhvcml6b250YWwoaG9yaXpvbnRhbDogVGh5TmF2SG9yaXpvbnRhbCkge1xuICAgICAgICB0aGlzLmhvcml6b250YWwgPSAoaG9yaXpvbnRhbCBhcyBzdHJpbmcpID09PSAncmlnaHQnID8gJ2VuZCcgOiBob3Jpem9udGFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWeguebtOaOkuWIl1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktbmF2LS12ZXJ0aWNhbCcpXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICB0aHlWZXJ0aWNhbDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYr+Whq+WFheaooeW8j1xuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LW5hdi0tZmlsbCcpXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICB0aHlGaWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblk43lupTlvI/vvIzoh6rliqjorqHnrpflrr3luqblrZjmlL4gdGh5TmF2SXRlbe+8jOW5tua3u+WKoOabtOWkmuW8ueahhlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICB0aHlSZXNwb25zaXZlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5pu05aSa5pON5L2c55qE6I+c5Y2V54K55Ye75YaF6YOo5piv5ZCm5Y+v5YWz6ZetXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICB0aHlJbnNpZGVDbG9zYWJsZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDlj7Pkvqfpop3lpJbljLrln5/mqKHmnb9cbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUV4dHJhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihUaHlOYXZJdGVtRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc2V0IGxpbmtzKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaW5uZXJMaW5rcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVJbmRleCA9IE5hTjtcbiAgICB9XG4gICAgZ2V0IGxpbmtzKCk6IFF1ZXJ5TGlzdDxUaHlOYXZJdGVtRGlyZWN0aXZlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyTGlua3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFJvdXRlckxpbmtBY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcm91dGVyczogUXVlcnlMaXN0PFJvdXRlckxpbmtBY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICog5ZON5bqU5byP5qih5byP5LiL5pu05aSa5pON5L2c5qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtb3JlJykgbW9yZU9wZXJhdGlvbjogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgICAvKipcbiAgICAgKiDlk43lupTlvI/mqKHlvI/kuIvmm7TlpJrlvLnmoYbmqKHmnb9cbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vcmVQb3BvdmVyJykgbW9yZVBvcG92ZXI6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgLyoqXG4gICAgICog5Y+z5L6n6aKd5aSW5Yy65Z+f5qih5p2/77yM5pSv5oyBIHRoeUV4dHJhIOS8oOWPguWSjCA8bmctdGVtcGxhdGUgI2V4dHJhPjwvbmctdGVtcGxhdGU+IOaooeadv1xuICAgICAqIEBuYW1lIGV4dHJhXG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdleHRyYScpIGV4dHJhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIEBWaWV3Q2hpbGQoJ21vcmVPcGVyYXRpb25Db250YWluZXInKSBkZWZhdWx0TW9yZU9wZXJhdGlvbjogRWxlbWVudFJlZjxIVE1MQW5jaG9yRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKFRoeU5hdklua0JhckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgaW5rQmFyITogVGh5TmF2SW5rQmFyRGlyZWN0aXZlO1xuXG4gICAgZ2V0IHNob3dJbmtCYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHNob3dUeXBlczogVGh5TmF2VHlwZVtdID0gWydwdWxsZWQnLCAndGFicyddO1xuICAgICAgICByZXR1cm4gc2hvd1R5cGVzLmluY2x1ZGVzKHRoaXMudHlwZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDbGFzc2VzKCkge1xuICAgICAgICBsZXQgY2xhc3NOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKG5hdlR5cGVDbGFzc2VzTWFwW3RoaXMudHlwZV0pIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBbLi4ubmF2VHlwZUNsYXNzZXNNYXBbdGhpcy50eXBlXV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hdlNpemVDbGFzc2VzTWFwW3RoaXMuc2l6ZV0pIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaChuYXZTaXplQ2xhc3Nlc01hcFt0aGlzLnNpemVdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhvc3RSZW5kZXJlci51cGRhdGVDbGFzcyhjbGFzc05hbWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGN1ckFjdGl2ZUluZGV4OiBudW1iZXI7XG5cbiAgICBwcml2YXRlIHByZXZBY3RpdmVJbmRleDogbnVtYmVyID0gTmFOO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcG9wb3ZlcjogVGh5UG9wb3ZlclxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMudGh5UmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzZXMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeVJlc3BvbnNpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0TW9yZUJ0bk9mZnNldCgpO1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGlua3MudG9BcnJheSgpLmZvckVhY2gobGluayA9PiBsaW5rLnNldE9mZnNldCgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEhpZGRlbkl0ZW1zKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBtZXJnZShcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmtzLmNoYW5nZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVSZXNpemVPYnNlcnZlcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkucGlwZShkZWJvdW5jZVRpbWUoMTAwKSksXG4gICAgICAgICAgICAgICAgLi4udGhpcy5saW5rcy5tYXAoaXRlbSA9PiB0aGlzLmNyZWF0ZVJlc2l6ZU9ic2VydmVyKGl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5waXBlKGRlYm91bmNlVGltZSgxMDApKSksXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMucm91dGVycyB8fCBbXSkubWFwKHJvdXRlciA9PiByb3V0ZXI/LmlzQWN0aXZlQ2hhbmdlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRoeVJlc3BvbnNpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2l6ZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEhpZGRlbkl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVNb3JlSXNBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGh5UmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRTaXplcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlTW9yZUlzQWN0aXZlKCk7XG5cbiAgICAgICAgdGhpcy5jdXJBY3RpdmVJbmRleCA9IHRoaXMubGlua3MgJiYgdGhpcy5saW5rcy5sZW5ndGggPyB0aGlzLmxpbmtzLnRvQXJyYXkoKS5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmxpbmtJc0FjdGl2ZSgpKSA6IC0xO1xuICAgICAgICBpZiAodGhpcy5jdXJBY3RpdmVJbmRleCA8IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW5rQmFyLmhpZGUoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1ckFjdGl2ZUluZGV4ICE9PSB0aGlzLnByZXZBY3RpdmVJbmRleCkge1xuICAgICAgICAgICAgdGhpcy5hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TW9yZUJ0bk9mZnNldCgpIHtcbiAgICAgICAgdGhpcy5tb3JlQnRuT2Zmc2V0ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmRlZmF1bHRNb3JlT3BlcmF0aW9uPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5kZWZhdWx0TW9yZU9wZXJhdGlvbj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjcmVhdGVSZXNpemVPYnNlcnZlcihlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgPyBvZihudWxsKVxuICAgICAgICAgICAgOiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXNpemUgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChlbnRyaWVzKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgcmVzaXplLm9ic2VydmUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZS5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1vcmVJc0FjdGl2ZSgpIHtcbiAgICAgICAgdGhpcy5tb3JlQWN0aXZlID0gdGhpcy5oaWRkZW5JdGVtcy5zb21lKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubGlua0lzQWN0aXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEhpZGRlbkl0ZW1zKCkge1xuICAgICAgICB0aGlzLm1vcmVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgdGFicyA9IHRoaXMubGlua3MudG9BcnJheSgpO1xuICAgICAgICBpZiAoIXRhYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGRlbkl0ZW1zID0gW107XG4gICAgICAgICAgICB0aGlzLnNob3dNb3JlID0gdGhpcy5oaWRkZW5JdGVtcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSB0aGlzLnRoeVZlcnRpY2FsID8gdGhpcy5nZXRTaG93SXRlbXNFbmRJbmRleFdoZW5WZXJ0aWNhbCh0YWJzKSA6IHRoaXMuZ2V0U2hvd0l0ZW1zRW5kSW5kZXhXaGVuSG9yaXpvbnRhbCh0YWJzKTtcblxuICAgICAgICBjb25zdCBzaG93SXRlbXMgPSB0YWJzLnNsaWNlKDAsIGVuZEluZGV4ICsgMSk7XG4gICAgICAgIChzaG93SXRlbXMgfHwgW10pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnNldE5hdkxpbmtIaWRkZW4oZmFsc2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmhpZGRlbkl0ZW1zID0gZW5kSW5kZXggPT09IHRhYnMubGVuZ3RoIC0gMSA/IFtdIDogdGFicy5zbGljZShlbmRJbmRleCArIDEpO1xuICAgICAgICAodGhpcy5oaWRkZW5JdGVtcyB8fCBbXSkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0uc2V0TmF2TGlua0hpZGRlbih0cnVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zaG93TW9yZSA9IHRoaXMuaGlkZGVuSXRlbXMubGVuZ3RoID4gMDtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTaG93SXRlbXNFbmRJbmRleFdoZW5Ib3Jpem9udGFsKHRhYnM6IFRoeU5hdkl0ZW1EaXJlY3RpdmVbXSkge1xuICAgICAgICBjb25zdCB0YWJzTGVuZ3RoID0gdGFicy5sZW5ndGg7XG4gICAgICAgIGxldCBlbmRJbmRleCA9IHRhYnNMZW5ndGg7XG4gICAgICAgIGxldCB0b3RhbFdpZHRoID0gMDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYnNMZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgX3RvdGFsV2lkdGggPSBpID09PSB0YWJzTGVuZ3RoIC0gMSA/IHRvdGFsV2lkdGggKyB0YWJzW2ldLm9mZnNldC53aWR0aCA6IHRvdGFsV2lkdGggKyB0YWJzW2ldLm9mZnNldC53aWR0aCArIHRhYkl0ZW1SaWdodDtcbiAgICAgICAgICAgIGlmIChfdG90YWxXaWR0aCA+IHRoaXMud3JhcHBlck9mZnNldC53aWR0aCkge1xuICAgICAgICAgICAgICAgIGxldCBtb3JlT3BlcmF0aW9uV2lkdGggPSB0aGlzLm1vcmVCdG5PZmZzZXQud2lkdGg7XG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsV2lkdGggKyBtb3JlT3BlcmF0aW9uV2lkdGggPD0gdGhpcy53cmFwcGVyT2Zmc2V0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gaSAtIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpIC0gMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsV2lkdGggPSBfdG90YWxXaWR0aDtcbiAgICAgICAgICAgICAgICBlbmRJbmRleCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVuZEluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2hvd0l0ZW1zRW5kSW5kZXhXaGVuVmVydGljYWwodGFiczogVGh5TmF2SXRlbURpcmVjdGl2ZVtdKSB7XG4gICAgICAgIGNvbnN0IHRhYnNMZW5ndGggPSB0YWJzLmxlbmd0aDtcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gdGFic0xlbmd0aDtcbiAgICAgICAgbGV0IHRvdGFsSGVpZ2h0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJzTGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IF90b3RhbEhlaWdodCA9IHRvdGFsSGVpZ2h0ICsgdGFic1tpXS5vZmZzZXQuaGVpZ2h0O1xuICAgICAgICAgICAgaWYgKF90b3RhbEhlaWdodCA+IHRoaXMud3JhcHBlck9mZnNldC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBsZXQgbW9yZU9wZXJhdGlvbkhlaWdodCA9IHRoaXMubW9yZUJ0bk9mZnNldC5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsSGVpZ2h0ICsgbW9yZU9wZXJhdGlvbkhlaWdodCA8PSB0aGlzLndyYXBwZXJPZmZzZXQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gaSAtIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpIC0gMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsSGVpZ2h0ID0gX3RvdGFsSGVpZ2h0O1xuICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW5kSW5kZXg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFNpemVzKCkge1xuICAgICAgICB0aGlzLndyYXBwZXJPZmZzZXQgPSB7XG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCB8fCAwLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIHx8IDAsXG4gICAgICAgICAgICBsZWZ0OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IHx8IDAsXG4gICAgICAgICAgICB0b3A6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCB8fCAwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb3Blbk1vcmUoZXZlbnQ6IEV2ZW50LCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLnBvcG92ZXIub3Blbih0ZW1wbGF0ZSwge1xuICAgICAgICAgICAgb3JpZ2luOiBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IHRoaXMudGh5SW5zaWRlQ2xvc2FibGUsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RoeS1uYXYtbGlzdC1wb3BvdmVyJyxcbiAgICAgICAgICAgIG9yaWdpbkFjdGl2ZUNsYXNzOiAndGh5LW5hdi1vcmlnaW4tYWN0aXZlJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuYXZJdGVtQ2xpY2soaXRlbTogVGh5TmF2SXRlbURpcmVjdGl2ZSkge1xuICAgICAgICBpdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2hvd0lua0Jhcikge1xuICAgICAgICAgICAgdGhpcy5pbmtCYXIuaGlkZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYnMgPSB0aGlzLmxpbmtzPy50b0FycmF5KCkgPz8gW107XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRhYnMuZmluZChpdGVtID0+IGl0ZW0ubGlua0lzQWN0aXZlKCkpO1xuICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtRWxlbWVudDogSFRNTEVsZW1lbnQgPSBzZWxlY3RlZEl0ZW0gJiYgc2VsZWN0ZWRJdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtICYmIHRoaXMubW9yZUFjdGl2ZSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtRWxlbWVudCA9IHRoaXMuZGVmYXVsdE1vcmVPcGVyYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2QWN0aXZlSW5kZXggPSB0aGlzLmN1ckFjdGl2ZUluZGV4O1xuICAgICAgICAgICAgdGhpcy5pbmtCYXIuYWxpZ25Ub0VsZW1lbnQoc2VsZWN0ZWRJdGVtRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgdGh5VmVydGljYWwsIHRoeVR5cGUgfSA9IGNoYW5nZXM7XG5cbiAgICAgICAgaWYgKHRoeVR5cGU/LmN1cnJlbnRWYWx1ZSAhPT0gdGh5VHlwZT8ucHJldmlvdXNWYWx1ZSB8fCB0aHlWZXJ0aWNhbD8uY3VycmVudFZhbHVlICE9PSB0aHlWZXJ0aWNhbD8ucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0aHktbmF2LWxpc3RcIiBbbmdDbGFzc109XCJob3Jpem9udGFsID8gJ2p1c3RpZnktY29udGVudC0nICsgaG9yaXpvbnRhbCA6ICcnXCIgI25hdkxpc3Q+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICA8YVxuICAgICpuZ0lmPVwidGh5UmVzcG9uc2l2ZVwiXG4gICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgY2xhc3M9XCJ0aHktbmF2LW1vcmUtY29udGFpbmVyXCJcbiAgICBbY2xhc3MuZC1ub25lXT1cIiFzaG93TW9yZVwiXG4gICAgW2NsYXNzLmludmlzaWJsZV09XCIhaW5pdGlhbGl6ZWRcIlxuICAgICNtb3JlT3BlcmF0aW9uQ29udGFpbmVyXG4gICAgdGh5TmF2TGlua1xuICAgIFt0aHlOYXZMaW5rQWN0aXZlXT1cIm1vcmVBY3RpdmVcIlxuICAgIChjbGljayk9XCJvcGVuTW9yZSgkZXZlbnQsIG5hdkxpc3RQb3BvdmVyKVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9yZU9wZXJhdGlvbjsgZWxzZSBkZWZhdWx0TW9yZU9wZXJhdGlvblwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vcmVPcGVyYXRpb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNb3JlT3BlcmF0aW9uPlxuICAgICAg5pu05aSaXG4gICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1kb3duXCIgY2xhc3M9XCJ0aHktbmF2LW1vcmUtaWNvblwiPjwvdGh5LWljb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9hPlxuICA8dGh5LW5hdi1pbmstYmFyIFtzaG93SW5rQmFyXT1cInNob3dJbmtCYXJcIiBbaXNWZXJ0aWNhbF09XCJ0aHlWZXJ0aWNhbFwiPjwvdGh5LW5hdi1pbmstYmFyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbmF2TGlzdFBvcG92ZXI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIm1vcmVQb3BvdmVyOyBlbHNlIGRlZmF1bHRcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vcmVQb3BvdmVyXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGhpZGRlbkl0ZW1zIH1cIlxuICA+PC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICA8dGh5LWRyb3Bkb3duLW1lbnUgdGh5SW1tZWRpYXRlUmVuZGVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBoaWRkZW5JdGVtc1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidGh5LW5hdi1pdGVtLW1vcmVcIlxuICAgICAgICAgIHRoeURyb3Bkb3duTWVudUl0ZW1cbiAgICAgICAgICBbdGh5RHJvcGRvd25NZW51SXRlbUFjdGl2ZV09XCJpdGVtLmlzQWN0aXZlXCJcbiAgICAgICAgICAoY2xpY2spPVwibmF2SXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCB8IGJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGh5LWRyb3Bkb3duLW1lbnU+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgKm5nSWY9XCJ0aHlFeHRyYSB8fCBleHRyYVwiIGNsYXNzPVwidGh5LW5hdi1leHRyYVwiPlxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRoeUV4dHJhIHx8IGV4dHJhXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
@@ -1,7 +1,7 @@
1
- import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter, ChangeDetectorRef, HostBinding, Optional, Inject, booleanAttribute, numberAttribute } from '@angular/core';
1
+ import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter, ChangeDetectorRef, HostBinding, Optional, Inject, numberAttribute } from '@angular/core';
2
2
  import { PaginationDefaultConfig, DEFAULT_RANGE_COUNT, THY_PAGINATION_CONFIG } from './pagination.config';
3
3
  import { useHostRenderer } from '@tethys/cdk/dom';
4
- import { isTemplateRef } from 'ngx-tethys/util';
4
+ import { coerceBooleanProperty, isTemplateRef } from 'ngx-tethys/util';
5
5
  import { PaginationTotalCountFormat } from './pagination.pipe';
6
6
  import { ThyIcon } from 'ngx-tethys/icon';
7
7
  import { ThyOption, ThyEnterDirective } from 'ngx-tethys/shared';
@@ -278,7 +278,7 @@ export class ThyPagination {
278
278
  this.pageSizeChanged.emit(event);
279
279
  }
280
280
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyPagination, deps: [{ token: THY_PAGINATION_CONFIG, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
281
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyPagination, isStandalone: true, selector: "thy-pagination", inputs: { thyPageIndex: ["thyPageIndex", "thyPageIndex", numberAttribute], thyPageSize: ["thyPageSize", "thyPageSize", numberAttribute], thyTotal: ["thyTotal", "thyTotal", numberAttribute], thyCustomPages: "thyCustomPages", disabled: ["thyDisabled", "disabled", booleanAttribute], showQuickJumper: ["thyShowQuickJumper", "showQuickJumper", booleanAttribute], showTotalPageCount: ["thyShowTotalPageCount", "showTotalPageCount", booleanAttribute], size: ["thySize", "size"], maxCount: ["thyMaxCount", "maxCount", numberAttribute], marginalCount: ["thyMarginalCount", "marginalCount", numberAttribute], thyRangeCount: ["thyRangeCount", "thyRangeCount", numberAttribute], showSizeChanger: ["thyShowSizeChanger", "showSizeChanger", booleanAttribute], pageSizeOptions: ["thyPageSizeOptions", "pageSizeOptions"], hideOnSinglePage: ["thyHideOnSinglePage", "hideOnSinglePage", booleanAttribute], unit: ["thyUnit", "unit"], showTotal: ["thyShowTotal", "showTotal"] }, outputs: { pageIndexChange: "thyPageIndexChange", pageChanged: "thyPageChanged", pageSizeChanged: "thyPageSizeChanged" }, host: { properties: { "class.thy-pagination": "this.isPaginationClass", "class.thy-pagination-has-total": "this.showTotal" } }, ngImport: i0, template: "<ng-container *ngIf=\"(hideOnSinglePage && total > pageSize) || !hideOnSinglePage\">\n <div class=\"thy-pagination-total\" *ngIf=\"showTotal\">\n <ng-container *ngIf=\"!isTemplateRef(showTotal); else totalTemplate\">\n <ng-container *ngIf=\"total > 0\">\n <div class=\"mr-3\">\n \u7B2C<span class=\"number\"> {{ range.from }}-{{ range.to }} </span>{{ config.unit }}\n </div>\n <div>\n \u5171<span class=\"number\"> {{ total }} </span>{{ config.unit }}\n </div>\n </ng-container>\n </ng-container>\n <ng-template #totalTemplate>\n <ng-template [ngTemplateOutlet]=\"showTotal\" [ngTemplateOutletContext]=\"{ $implicit: total, range: range }\"></ng-template>\n </ng-template>\n </div>\n <div class=\"thy-pagination-content\">\n <div class=\"thy-pagination-size\" *ngIf=\"config.showSizeChanger\">\n <thy-select [(ngModel)]=\"selectPageSize\" [thySize]=\"selectSize\" [thyDisabled]=\"disabled\" (ngModelChange)=\"onPageSizeChange($event)\">\n <thy-option\n class=\"page-size-option\"\n *ngFor=\"let option of config.pageSizeOptions\"\n [thyValue]=\"option\"\n [thyLabelText]=\"option + ' ' + config.unit + '/\u9875'\"></thy-option>\n </thy-select>\n </div>\n <ul class=\"thy-pagination-pages\">\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(firstIndex)\">\n <a class=\"thy-page-link thy-page-link-first\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.firstText\">{{ config.firstText }}</ng-container>\n <ng-container *ngIf=\"config.firstIcon\">\n <thy-icon [thyIconName]=\"config.firstIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex - 1)\">\n <a class=\"thy-page-link page-link-pre\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.previousText\">{{ config.previousText }}</ng-container>\n <ng-container *ngIf=\"config.previousIcon\">\n <thy-icon [thyIconName]=\"config.previousIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item thy-page-number\"\n [class.active]=\"page.active\"\n [class.disabled]=\"disabled\"\n (click)=\"selectPage(page.index)\"\n *ngFor=\"let page of pages\">\n <a class=\"thy-page-link\" href=\"javascript:;\">{{ page.text }}</a>\n </li>\n <li\n class=\"thy-page-item page-item-next\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex + 1)\">\n <a class=\"thy-page-link thy-page-link-next\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.nextText\">{{ config.nextText }}</ng-container>\n <ng-container *ngIf=\"config.nextIcon\">\n <thy-icon [thyIconName]=\"config.nextIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(pageCount)\">\n <a class=\"thy-page-link thy-page-link-last\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.lastText\">{{ config.lastText }}</ng-container>\n <ng-container *ngIf=\"config.lastIcon\">\n <thy-icon [thyIconName]=\"config.lastIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n </ul>\n <ng-container *ngIf=\"config.showTotalPageCount && config.totalPagesFormat\">\n <div class=\"thy-pagination-count\" [innerHTML]=\"pageCount | paginationTotalPagesFormat : config.totalPagesFormat\"></div>\n </ng-container>\n <ng-container *ngIf=\"config.showQuickJumper\">\n <div class=\"thy-pagination-jumper\">\n <div class=\"thy-pagination-jumper-input\">\n \u8DF3\u81F3\n <input type=\"text\" [disabled]=\"disabled\" #jumperInput (thyEnter)=\"jumpPage(jumperInput)\" (blur)=\"jumpPage(jumperInput)\" />\n \u9875\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThySelect, selector: "thy-select,thy-custom-select", inputs: ["thyDropdownWidthMode", "thyShowSearch", "thyPlaceHolder", "thyServerSearch", "thyLoadState", "thyAutoActiveFirstItem", "thyMode", "thySize", "thyEmptyStateText", "thyEmptySearchMessageText", "thyEnableScrollLoad", "thyAllowClear", "thyDisabled", "thySortComparator", "thyFooterTemplate", "thyPlacement", "thyOrigin", "thyFooterClass", "thyAutoExpand", "thyHasBackdrop", "thyMaxTagCount", "thyBorderless", "thyOptions", "thyPreset"], outputs: ["thyOnSearch", "thyOnScrollToBottom", "thyOnExpandStatusChange"], exportAs: ["thySelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyOption, selector: "thy-option", inputs: ["thyValue", "thyRawValue", "thyLabelText", "thyShowOptionCustom", "thySearchKey", "thyDisabled"], outputs: ["selectionChange", "visibleChange"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyEnterDirective, selector: "[thyEnter]", outputs: ["thyEnter"] }, { kind: "pipe", type: PaginationTotalCountFormat, name: "paginationTotalPagesFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
281
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyPagination, isStandalone: true, selector: "thy-pagination", inputs: { thyPageIndex: ["thyPageIndex", "thyPageIndex", numberAttribute], thyPageSize: ["thyPageSize", "thyPageSize", numberAttribute], thyTotal: ["thyTotal", "thyTotal", numberAttribute], thyCustomPages: "thyCustomPages", disabled: ["thyDisabled", "disabled", coerceBooleanProperty], showQuickJumper: ["thyShowQuickJumper", "showQuickJumper", coerceBooleanProperty], showTotalPageCount: ["thyShowTotalPageCount", "showTotalPageCount", coerceBooleanProperty], size: ["thySize", "size"], maxCount: ["thyMaxCount", "maxCount", numberAttribute], marginalCount: ["thyMarginalCount", "marginalCount", numberAttribute], thyRangeCount: ["thyRangeCount", "thyRangeCount", numberAttribute], showSizeChanger: ["thyShowSizeChanger", "showSizeChanger", coerceBooleanProperty], pageSizeOptions: ["thyPageSizeOptions", "pageSizeOptions"], hideOnSinglePage: ["thyHideOnSinglePage", "hideOnSinglePage", coerceBooleanProperty], unit: ["thyUnit", "unit"], showTotal: ["thyShowTotal", "showTotal"] }, outputs: { pageIndexChange: "thyPageIndexChange", pageChanged: "thyPageChanged", pageSizeChanged: "thyPageSizeChanged" }, host: { properties: { "class.thy-pagination": "this.isPaginationClass", "class.thy-pagination-has-total": "this.showTotal" } }, ngImport: i0, template: "<ng-container *ngIf=\"(hideOnSinglePage && total > pageSize) || !hideOnSinglePage\">\n <div class=\"thy-pagination-total\" *ngIf=\"showTotal\">\n <ng-container *ngIf=\"!isTemplateRef(showTotal); else totalTemplate\">\n <ng-container *ngIf=\"total > 0\">\n <div class=\"mr-3\">\n \u7B2C<span class=\"number\"> {{ range.from }}-{{ range.to }} </span>{{ config.unit }}\n </div>\n <div>\n \u5171<span class=\"number\"> {{ total }} </span>{{ config.unit }}\n </div>\n </ng-container>\n </ng-container>\n <ng-template #totalTemplate>\n <ng-template [ngTemplateOutlet]=\"showTotal\" [ngTemplateOutletContext]=\"{ $implicit: total, range: range }\"></ng-template>\n </ng-template>\n </div>\n <div class=\"thy-pagination-content\">\n <div class=\"thy-pagination-size\" *ngIf=\"config.showSizeChanger\">\n <thy-select [(ngModel)]=\"selectPageSize\" [thySize]=\"selectSize\" [thyDisabled]=\"disabled\" (ngModelChange)=\"onPageSizeChange($event)\">\n <thy-option\n class=\"page-size-option\"\n *ngFor=\"let option of config.pageSizeOptions\"\n [thyValue]=\"option\"\n [thyLabelText]=\"option + ' ' + config.unit + '/\u9875'\"></thy-option>\n </thy-select>\n </div>\n <ul class=\"thy-pagination-pages\">\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(firstIndex)\">\n <a class=\"thy-page-link thy-page-link-first\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.firstText\">{{ config.firstText }}</ng-container>\n <ng-container *ngIf=\"config.firstIcon\">\n <thy-icon [thyIconName]=\"config.firstIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex - 1)\">\n <a class=\"thy-page-link page-link-pre\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.previousText\">{{ config.previousText }}</ng-container>\n <ng-container *ngIf=\"config.previousIcon\">\n <thy-icon [thyIconName]=\"config.previousIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item thy-page-number\"\n [class.active]=\"page.active\"\n [class.disabled]=\"disabled\"\n (click)=\"selectPage(page.index)\"\n *ngFor=\"let page of pages\">\n <a class=\"thy-page-link\" href=\"javascript:;\">{{ page.text }}</a>\n </li>\n <li\n class=\"thy-page-item page-item-next\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex + 1)\">\n <a class=\"thy-page-link thy-page-link-next\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.nextText\">{{ config.nextText }}</ng-container>\n <ng-container *ngIf=\"config.nextIcon\">\n <thy-icon [thyIconName]=\"config.nextIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(pageCount)\">\n <a class=\"thy-page-link thy-page-link-last\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.lastText\">{{ config.lastText }}</ng-container>\n <ng-container *ngIf=\"config.lastIcon\">\n <thy-icon [thyIconName]=\"config.lastIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n </ul>\n <ng-container *ngIf=\"config.showTotalPageCount && config.totalPagesFormat\">\n <div class=\"thy-pagination-count\" [innerHTML]=\"pageCount | paginationTotalPagesFormat : config.totalPagesFormat\"></div>\n </ng-container>\n <ng-container *ngIf=\"config.showQuickJumper\">\n <div class=\"thy-pagination-jumper\">\n <div class=\"thy-pagination-jumper-input\">\n \u8DF3\u81F3\n <input type=\"text\" [disabled]=\"disabled\" #jumperInput (thyEnter)=\"jumpPage(jumperInput)\" (blur)=\"jumpPage(jumperInput)\" />\n \u9875\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThySelect, selector: "thy-select,thy-custom-select", inputs: ["thyDropdownWidthMode", "thyShowSearch", "thyPlaceHolder", "thyServerSearch", "thyLoadState", "thyAutoActiveFirstItem", "thyMode", "thySize", "thyEmptyStateText", "thyEmptySearchMessageText", "thyEnableScrollLoad", "thyAllowClear", "thyDisabled", "thySortComparator", "thyFooterTemplate", "thyPlacement", "thyOrigin", "thyFooterClass", "thyAutoExpand", "thyHasBackdrop", "thyMaxTagCount", "thyBorderless", "thyOptions", "thyPreset"], outputs: ["thyOnSearch", "thyOnScrollToBottom", "thyOnExpandStatusChange"], exportAs: ["thySelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyOption, selector: "thy-option", inputs: ["thyValue", "thyRawValue", "thyLabelText", "thyShowOptionCustom", "thySearchKey", "thyDisabled"], outputs: ["selectionChange", "visibleChange"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyEnterDirective, selector: "[thyEnter]", outputs: ["thyEnter"] }, { kind: "pipe", type: PaginationTotalCountFormat, name: "paginationTotalPagesFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
282
282
  }
283
283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyPagination, decorators: [{
284
284
  type: Component,
@@ -301,13 +301,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
301
301
  type: Input
302
302
  }], disabled: [{
303
303
  type: Input,
304
- args: [{ alias: 'thyDisabled', transform: booleanAttribute }]
304
+ args: [{ alias: 'thyDisabled', transform: coerceBooleanProperty }]
305
305
  }], showQuickJumper: [{
306
306
  type: Input,
307
- args: [{ alias: 'thyShowQuickJumper', transform: booleanAttribute }]
307
+ args: [{ alias: 'thyShowQuickJumper', transform: coerceBooleanProperty }]
308
308
  }], showTotalPageCount: [{
309
309
  type: Input,
310
- args: [{ alias: 'thyShowTotalPageCount', transform: booleanAttribute }]
310
+ args: [{ alias: 'thyShowTotalPageCount', transform: coerceBooleanProperty }]
311
311
  }], size: [{
312
312
  type: Input,
313
313
  args: ['thySize']
@@ -322,13 +322,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
322
322
  args: [{ transform: numberAttribute }]
323
323
  }], showSizeChanger: [{
324
324
  type: Input,
325
- args: [{ alias: 'thyShowSizeChanger', transform: booleanAttribute }]
325
+ args: [{ alias: 'thyShowSizeChanger', transform: coerceBooleanProperty }]
326
326
  }], pageSizeOptions: [{
327
327
  type: Input,
328
328
  args: ['thyPageSizeOptions']
329
329
  }], hideOnSinglePage: [{
330
330
  type: Input,
331
- args: [{ alias: 'thyHideOnSinglePage', transform: booleanAttribute }]
331
+ args: [{ alias: 'thyHideOnSinglePage', transform: coerceBooleanProperty }]
332
332
  }], unit: [{
333
333
  type: Input,
334
334
  args: ['thyUnit']
@@ -351,4 +351,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
351
351
  type: Input,
352
352
  args: ['thyShowTotal']
353
353
  }] } });
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxRQUFRLEVBQ1IsTUFBTSxFQUVOLGdCQUFnQixFQUNoQixlQUFlLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSxxQkFBcUIsQ0FBQztBQUMvSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFaEU7Ozs7R0FJRztBQVFILE1BQU0sT0FBTyxhQUFhO0lBSXRCOzs7T0FHRztJQUNILElBQ0ksWUFBWSxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxTQUFT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QkFFTSxlQUFlO3NCQUE1QyxNQUFNO3VCQUFDLG9CQUFvQjtnQkE0QlMsaUJBQWlCO3NCQUFyRCxXQUFXO3VCQUFDLHNCQUFzQjtnQkFRbkMsU0FBUztzQkFGUixXQUFXO3VCQUFDLGdDQUFnQzs7c0JBQzVDLEtBQUs7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIE9wdGlvbmFsLFxuICAgIEluamVjdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIG51bWJlckF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBhZ2luYXRpb25Db25maWdNb2RlbCB9IGZyb20gJy4vcGFnaW5hdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uRGVmYXVsdENvbmZpZywgREVGQVVMVF9SQU5HRV9DT1VOVCwgVEhZX1BBR0lOQVRJT05fQ09ORklHLCBUaHlQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9wYWdpbmF0aW9uLmNvbmZpZyc7XG5pbXBvcnQgeyB1c2VIb3N0UmVuZGVyZXIgfSBmcm9tICdAdGV0aHlzL2Nkay9kb20nO1xuaW1wb3J0IHsgaXNUZW1wbGF0ZVJlZiB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uVG90YWxDb3VudEZvcm1hdCB9IGZyb20gJy4vcGFnaW5hdGlvbi5waXBlJztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5T3B0aW9uLCBUaHlFbnRlckRpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5U2VsZWN0IH0gZnJvbSAnbmd4LXRldGh5cy9zZWxlY3QnO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIOWIhumhtee7hOS7tu+8jOW9k+aVsOaNrumHj+i/h+WkmuaXtu+8jOS9v+eUqOWIhumhteWIhuino+aVsOaNruOAglxuICogQG5hbWUgdGh5LXBhZ2luYXRpb25cbiAqIEBvcmRlciAxMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1wYWdpbmF0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgVGh5U2VsZWN0LCBGb3Jtc01vZHVsZSwgTmdGb3IsIFRoeU9wdGlvbiwgVGh5SWNvbiwgVGh5RW50ZXJEaXJlY3RpdmUsIFBhZ2luYXRpb25Ub3RhbENvdW50Rm9ybWF0XVxufSlcbmV4cG9ydCBjbGFzcyBUaHlQYWdpbmF0aW9uIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBpc1RlbXBsYXRlUmVmID0gaXNUZW1wbGF0ZVJlZjtcbiAgICBwdWJsaWMgY29uZmlnOiBUaHlQYWdpbmF0aW9uQ29uZmlnTW9kZWwgPSBPYmplY3QuYXNzaWduKHt9LCBQYWdpbmF0aW9uRGVmYXVsdENvbmZpZywgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLm1haW4pO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5b2T5YmN6aG177yM5pSv5oyB5Y+M5ZCR57uR5a6aXG4gICAgICogQGRlZmF1bHQgMVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeVBhZ2VJbmRleChwYWdlSW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleDtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHBhZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmr4/pobXmnaHnm67mlbDph49cbiAgICAgKiBAZGVmYXVsdCAyMFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeVBhZ2VTaXplKHBhZ2VTaXplOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICB0aGlzLnNlbGVjdFBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2VDb3VudCgpO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplUGFnZXModGhpcy5wYWdlSW5kZXgsIHRoaXMucGFnZUNvdW50KTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5oC76aG15pWwIOS4jiB0b3RhbFBhZ2VzIOS6jOmAieS4gOS8oOWFpVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeVRvdGFsKHRvdGFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy50b3RhbCA9IHRvdGFsO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHRoaXMucGFnZUluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ5YiG6aG16aG156CB77yM6K6+572u6Ieq5a6a5LmJ5YiG6aG16aG156CB5ZCO5bCG5LiN5qC55o2uIFRvdGFsIOWSjCBQYWdlU2l6ZSDmnaXoh6rliqjorqHnrpfpobXnoIHvvIzlrozlhajku6XkvKDlhaXnmoTpobXnoIHkuLrlh4ZcbiAgICAgKiBAdHlwZSBudW1iZXJbXVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUN1c3RvbVBhZ2VzKHBhZ2VzOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLmN1c3RvbVBhZ2VzID0gcGFnZXM7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dUb3RhbFBhZ2VDb3VudCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2VzKHRoaXMucGFnZUluZGV4LCB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqFxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAndGh5RGlzYWJsZWQnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuW/q+mAn+i3s+i9rFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlTaG93UXVpY2tKdW1wZXInLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzZXQgc2hvd1F1aWNrSnVtcGVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dRdWlja0p1bXBlciA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruaYr+WQpuaYvuekuuaAu+mhteaVsOS/oeaBr1xuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeVNob3dUb3RhbFBhZ2VDb3VudCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHNldCBzaG93VG90YWxQYWdlQ291bnQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1RvdGFsUGFnZUNvdW50ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5YiG6aG157uE5Lu255qE5aSn5bCPXG4gICAgICogQHR5cGUgc20gfCBtZCB8IGxnXG4gICAgICogQGRlZmF1bHQgbWRcbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeVNpemUnKVxuICAgIHNldCBzaXplKHNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJykge1xuICAgICAgICB0aGlzLnNlbGVjdFNpemUgPSBzaXplO1xuICAgICAgICB0aGlzLmhvc3RSZW5kZXJlci5hZGRDbGFzcyhgdGh5LXBhZ2luYXRpb24tJHtzaXplfWApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruacgOWkp+aYvuekuuaVsOmHj++8jOi2heWHuuacgOWkp+aYvuekuuaVsOWQjuS8muiHquWKqOi/m+ihjOWIhuWJsuaYvuekulxuICAgICAqIEBkZWZhdWx0IDlcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeU1heENvdW50JywgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcbiAgICBzZXQgbWF4Q291bnQodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNvbmZpZy5tYXhDb3VudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9rui+uee8mOaYvuekuuaVsOmHj1xuICAgICAqIEBkZWZhdWx0IDJcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeU1hcmdpbmFsQ291bnQnLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBtYXJnaW5hbENvdW50OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7kuK3pl7TljLrln5/mmL7npLrmlbDph49cbiAgICAgKiBAZGVmYXVsdCA3XG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcbiAgICBzZXQgdGh5UmFuZ2VDb3VudCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5jb25maWcucmFuZ2VDb3VudCA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1hcmdpbmFsQ291bnQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlTaG93U2l6ZUNoYW5nZXInLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzZXQgc2hvd1NpemVDaGFuZ2VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dTaXplQ2hhbmdlciA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEB0eXBlIG51bWJlcltdXG4gICAgICovXG4gICAgQElucHV0KCd0aHlQYWdlU2l6ZU9wdGlvbnMnKVxuICAgIHNldCBwYWdlU2l6ZU9wdGlvbnModmFsdWU6IG51bWJlcltdKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnBhZ2VTaXplT3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWPquacieS4gOmhteaXtuaYr+WQpumakOiXj+WIhumhteWZqFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlIaWRlT25TaW5nbGVQYWdlJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhpZGVPblNpbmdsZVBhZ2U6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDliIbpobXlmajljZXkvY1cbiAgICAgKiBAZGVmYXVsdCDmnaFcbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeVVuaXQnKVxuICAgIHNldCB1bml0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy51bml0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDpobXnoIHmlLnlj5jnmoTlm57osINcbiAgICAgKi9cbiAgICBAT3V0cHV0KCd0aHlQYWdlSW5kZXhDaGFuZ2UnKSBwYWdlSW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIOS4jkJvb3RzdHJhcCBwYWdpbmF0aW9uIOWFvOWuue+8jOWQjue7reeJiOacrOS8mui/m+ihjOWIoOmZpO+8jOWPguaVsOS/neaMgeS4jiBib290c3RyYXAg5LiA6Ie0XG4gICAgICovXG4gICAgQE91dHB1dCgndGh5UGFnZUNoYW5nZWQnKSBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwYWdlOiBudW1iZXIgfT4oKTtcblxuICAgIEBPdXRwdXQoJ3RoeVBhZ2VTaXplQ2hhbmdlZCcpIHBhZ2VTaXplQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgcHVibGljIHBhZ2VzOiB7IGluZGV4PzogbnVtYmVyOyB0ZXh0Pzogc3RyaW5nOyBhY3RpdmU/OiBib29sZWFuIH1bXSA9IFtdO1xuXG4gICAgcHVibGljIHBhZ2VJbmRleCA9IDE7XG5cbiAgICBwdWJsaWMgcGFnZVNpemU6IG51bWJlcjtcblxuICAgIHB1YmxpYyBwYWdlQ291bnQ6IG51bWJlcjtcblxuICAgIHB1YmxpYyBjdXN0b21QYWdlczogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgdG90YWw6IG51bWJlcjtcblxuICAgIHB1YmxpYyByYW5nZSA9IHsgZnJvbTogMCwgdG86IDAgfTtcblxuICAgIHB1YmxpYyBmaXJzdEluZGV4ID0gMTtcblxuICAgIHB1YmxpYyBpc0hpZGVPblNpbmdsZVBhZ2UgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgaG9zdFJlbmRlcmVyID0gdXNlSG9zdFJlbmRlcmVyKCk7XG5cbiAgICBwdWJsaWMgc2VsZWN0U2l6ZSA9ICdtZCc7XG5cbiAgICBwdWJsaWMgc2VsZWN0UGFnZVNpemU6IE51bWJlciA9IDIwO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktcGFnaW5hdGlvbicpIGlzUGFnaW5hdGlvbkNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuiMg+WbtOWSjHRvdGFsXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1wYWdpbmF0aW9uLWhhcy10b3RhbCcpXG4gICAgQElucHV0KCd0aHlTaG93VG90YWwnKVxuICAgIHNob3dUb3RhbDogYm9vbGVhbiB8IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBudW1iZXI7IHJhbmdlOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IH0+ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUSFlfUEFHSU5BVElPTl9DT05GSUcpXG4gICAgICAgIHByaXZhdGUgcGFnaW5hdGlvbkNvbmZpZzogVGh5UGFnaW5hdGlvbkNvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2V0TWFyZ2luYWxDb3VudCh0aGlzLmNvbmZpZy5yYW5nZUNvdW50KTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgdGhpcy5zZXRQYWdlSW5kZXgodGhpcy5wYWdlSW5kZXgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE1hcmdpbmFsQ291bnQocmFuZ2U6IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXMubWFyZ2luYWxDb3VudCkge1xuICAgICAgICAgICAgdGhpcy5tYXJnaW5hbENvdW50ID0gcmFuZ2UgPD0gREVGQVVMVF9SQU5HRV9DT1VOVCA/IDEgOiAyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQYWdlSW5kZXgocGFnZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdlSW5kZXggPSBwYWdlSW5kZXggPiB0aGlzLnBhZ2VDb3VudCA/IHRoaXMucGFnZUNvdW50IDogcGFnZUluZGV4IHx8IDE7XG4gICAgICAgIGNvbnN0IHRvUGFnZVNpemUgPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMucGFnZVNpemU7XG4gICAgICAgIHRoaXMucmFuZ2UgPSB7XG4gICAgICAgICAgICBmcm9tOiAodGhpcy5wYWdlSW5kZXggLSAxKSAqIHRoaXMucGFnZVNpemUgKyAxLFxuICAgICAgICAgICAgdG86IHRvUGFnZVNpemUgPiB0aGlzLnRvdGFsID8gdGhpcy50b3RhbCA6IHRvUGFnZVNpemVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUGFnZXModGhpcy5wYWdlSW5kZXgsIHRoaXMucGFnZUNvdW50KTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVQYWdlQ291bnQoKSB7XG4gICAgICAgIGxldCBwYWdlQ291bnQgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5jdXN0b21QYWdlcyAmJiB0aGlzLmN1c3RvbVBhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhZ2VDb3VudCA9IHRoaXMuY3VzdG9tUGFnZXNbdGhpcy5jdXN0b21QYWdlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhZ2VDb3VudCA9IHRoaXMucGFnZVNpemUgPCAxID8gMSA6IE1hdGguY2VpbCh0aGlzLnRvdGFsIC8gdGhpcy5wYWdlU2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYWdlQ291bnQgPSBNYXRoLm1heChwYWdlQ291bnQgfHwgMCwgMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYWtlUGFnZShpbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGFjdGl2ZTogYm9vbGVhbik6IHsgaW5kZXg6IG51bWJlcjsgdGV4dDogc3RyaW5nOyBhY3RpdmU6IGJvb2xlYW4gfSB7XG4gICAgICAgIHJldHVybiB7IGluZGV4LCB0ZXh0LCBhY3RpdmUgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVQYWdlcyhwYWdlSW5kZXg6IG51bWJlciwgcGFnZUNvdW50OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tUGFnZXMgJiYgdGhpcy5jdXN0b21QYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VzID0gdGhpcy5jdXN0b21QYWdlcy5tYXAocGFnZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IHBhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHBhZ2UudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBwYWdlID09PSArcGFnZUluZGV4XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhZ2VzID0gW107XG4gICAgICAgIGNvbnN0IG1hcmdpbmFsQ291bnQgPSB0aGlzLm1hcmdpbmFsQ291bnQ7XG4gICAgICAgIGNvbnN0IHJhbmdlQ291bnQgPSB0aGlzLmNvbmZpZy5yYW5nZUNvdW50O1xuICAgICAgICBjb25zdCBtYXhDb3VudCA9IHRoaXMuY29uZmlnLm1heENvdW50O1xuICAgICAgICBjb25zdCBpc01heFNpemVkID0gcGFnZUNvdW50ID4gbWF4Q291bnQ7XG4gICAgICAgIGlmIChpc01heFNpemVkKSB7XG4gICAgICAgICAgICBjb25zdCBiZWZvcmVQYWdlcyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgYWZ0ZXJQYWdlcyA9IFtdO1xuXG4gICAgICAgICAgICAvLyBiZWZvcmVQYWdlc1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbWFyZ2luYWxDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlUGFnZXMucHVzaCh0aGlzLm1ha2VQYWdlKGksIGkudG9TdHJpbmcoKSwgaSA9PT0gcGFnZUluZGV4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFnZUluZGV4IC0gTWF0aC5jZWlsKHJhbmdlQ291bnQgLyAyKSA+IHRoaXMuZmlyc3RJbmRleCkge1xuICAgICAgICAgICAgICAgIGJlZm9yZVBhZ2VzLnB1c2godGhpcy5tYWtlUGFnZShwYWdlSW5kZXggLSByYW5nZUNvdW50LCAnwrfCt8K3JywgbnVsbCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBhZnRlclBhZ2VzXG4gICAgICAgICAgICBpZiAocGFnZUluZGV4ICsgTWF0aC5jZWlsKHJhbmdlQ291bnQgLyAyKSA8IHBhZ2VDb3VudCkge1xuICAgICAgICAgICAgICAgIGFmdGVyUGFnZXMucHVzaCh0aGlzLm1ha2VQYWdlKHBhZ2VJbmRleCArIHJhbmdlQ291bnQsICfCt8K3wrcnLCBudWxsKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gcGFnZUNvdW50IC0gbWFyZ2luYWxDb3VudCArIDE7IGkgPD0gcGFnZUNvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgICBhZnRlclBhZ2VzLnB1c2godGhpcy5tYWtlUGFnZShpLCBpLnRvU3RyaW5nKCksIGkgPT09IHBhZ2VJbmRleCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBtYWluUGFnZXNcbiAgICAgICAgICAgIGxldCBzdGFydCA9IE1hdGgubWF4KG1hcmdpbmFsQ291bnQgKyAxLCBwYWdlSW5kZXggLSAocmFuZ2VDb3VudCAtIDEpIC8gMik7XG4gICAgICAgICAgICBsZXQgZW5kID0gTWF0aC5taW4ocGFnZUluZGV4ICsgKHJhbmdlQ291bnQgLSAxKSAvIDIsIHBhZ2VDb3VudCAtIG1hcmdpbmFsQ291bnQpO1xuICAgICAgICAgICAgaWYgKHBhZ2VJbmRleCAtIDEgPD0gbWFyZ2luYWxDb3VudCkge1xuICAgICAgICAgICAgICAgIGVuZCA9IHJhbmdlQ291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFnZUNvdW50IC0gcGFnZUluZGV4IDw9IG1hcmdpbmFsQ291bnQpIHtcbiAgICAgICAgICAgICAgICBzdGFydCA9IHBhZ2VDb3VudCAtIHJhbmdlQ291bnQgKyAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBpID09PSArcGFnZUluZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYWdlcyA9IFsuLi5iZWZvcmVQYWdlcywgLi4ucGFnZXMsIC4uLmFmdGVyUGFnZXNdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gcGFnZUNvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgICBwYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBpID09PSArcGFnZUluZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYWdlcyA9IHBhZ2VzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFnZUNoYW5nZShwYWdlSW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2VJbmRleENoYW5nZS5lbWl0KHBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdCh7IHBhZ2U6IHBhZ2VJbmRleCB9KTtcbiAgICB9XG5cbiAgICBzZWxlY3RQYWdlKHBhZ2VJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHBhZ2VJbmRleCA9PT0gdGhpcy5maXJzdEluZGV4IC0gMSB8fCBwYWdlSW5kZXggPT09IHRoaXMucGFnZUNvdW50ICsgMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZSh0aGlzLnBhZ2VJbmRleCk7XG4gICAgfVxuXG4gICAganVtcFBhZ2UoaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgcGFnZUluZGV4ID0gK2lucHV0LnZhbHVlO1xuICAgICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihwYWdlSW5kZXgpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFBhZ2UocGFnZUluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIG9uUGFnZVNpemVDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2VTaXplID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUGFnZUNvdW50KCk7XG4gICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHRoaXMucGFnZUluZGV4KTtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZUNoYW5nZWQuZW1pdChldmVudCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIihoaWRlT25TaW5nbGVQYWdlICYmIHRvdGFsID4gcGFnZVNpemUpIHx8ICFoaWRlT25TaW5nbGVQYWdlXCI+XG4gIDxkaXYgY2xhc3M9XCJ0aHktcGFnaW5hdGlvbi10b3RhbFwiICpuZ0lmPVwic2hvd1RvdGFsXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlUmVmKHNob3dUb3RhbCk7IGVsc2UgdG90YWxUZW1wbGF0ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvdGFsID4gMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXItM1wiPlxuICAgICAgICAgIOesrDxzcGFuIGNsYXNzPVwibnVtYmVyXCI+IHt7IHJhbmdlLmZyb20gfX0te3sgcmFuZ2UudG8gfX0gPC9zcGFuPnt7IGNvbmZpZy51bml0IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIOWFsTxzcGFuIGNsYXNzPVwibnVtYmVyXCI+IHt7IHRvdGFsIH19IDwvc3Bhbj57eyBjb25maWcudW5pdCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjdG90YWxUZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzaG93VG90YWxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRvdGFsLCByYW5nZTogcmFuZ2UgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0aHktcGFnaW5hdGlvbi1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLXNpemVcIiAqbmdJZj1cImNvbmZpZy5zaG93U2l6ZUNoYW5nZXJcIj5cbiAgICAgIDx0aHktc2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0UGFnZVNpemVcIiBbdGh5U2l6ZV09XCJzZWxlY3RTaXplXCIgW3RoeURpc2FibGVkXT1cImRpc2FibGVkXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDx0aHktb3B0aW9uXG4gICAgICAgICAgY2xhc3M9XCJwYWdlLXNpemUtb3B0aW9uXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNvbmZpZy5wYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgICAgIFt0aHlWYWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgIFt0aHlMYWJlbFRleHRdPVwib3B0aW9uICsgJyAnICsgY29uZmlnLnVuaXQgKyAnL+mhtSdcIj48L3RoeS1vcHRpb24+XG4gICAgICA8L3RoeS1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gICAgPHVsIGNsYXNzPVwidGh5LXBhZ2luYXRpb24tcGFnZXNcIj5cbiAgICAgIDxsaVxuICAgICAgICBjbGFzcz1cInRoeS1wYWdlLWl0ZW1cIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcGFnZUluZGV4ID09PSBmaXJzdEluZGV4XCJcbiAgICAgICAgKm5nSWY9XCJjb25maWcuYm91bmRhcnlMaW5rc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKGZpcnN0SW5kZXgpXCI+XG4gICAgICAgIDxhIGNsYXNzPVwidGh5LXBhZ2UtbGluayB0aHktcGFnZS1saW5rLWZpcnN0XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuZmlyc3RUZXh0XCI+e3sgY29uZmlnLmZpcnN0VGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuZmlyc3RJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5maXJzdEljb25cIj48L3RoeS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IGZpcnN0SW5kZXhcIlxuICAgICAgICAqbmdJZj1cImNvbmZpZy5kaXJlY3Rpb25MaW5rc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2VJbmRleCAtIDEpXCI+XG4gICAgICAgIDxhIGNsYXNzPVwidGh5LXBhZ2UtbGluayBwYWdlLWxpbmstcHJlXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcucHJldmlvdXNUZXh0XCI+e3sgY29uZmlnLnByZXZpb3VzVGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcucHJldmlvdXNJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5wcmV2aW91c0ljb25cIj48L3RoeS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbSB0aHktcGFnZS1udW1iZXJcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInBhZ2UuYWN0aXZlXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZS5pbmRleClcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgcGFnZSBvZiBwYWdlc1wiPlxuICAgICAgICA8YSBjbGFzcz1cInRoeS1wYWdlLWxpbmtcIiBocmVmPVwiamF2YXNjcmlwdDo7XCI+e3sgcGFnZS50ZXh0IH19PC9hPlxuICAgICAgPC9saT5cbiAgICAgIDxsaVxuICAgICAgICBjbGFzcz1cInRoeS1wYWdlLWl0ZW0gcGFnZS1pdGVtLW5leHRcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcGFnZUluZGV4ID09PSBwYWdlQ291bnRcIlxuICAgICAgICAqbmdJZj1cImNvbmZpZy5kaXJlY3Rpb25MaW5rc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2VJbmRleCArIDEpXCI+XG4gICAgICAgIDxhIGNsYXNzPVwidGh5LXBhZ2UtbGluayB0aHktcGFnZS1saW5rLW5leHRcIiBocmVmPVwiamF2YXNjcmlwdDo7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5uZXh0VGV4dFwiPnt7IGNvbmZpZy5uZXh0VGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcubmV4dEljb25cIj5cbiAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiY29uZmlnLm5leHRJY29uXCI+PC90aHktaWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICAgIDxsaVxuICAgICAgICBjbGFzcz1cInRoeS1wYWdlLWl0ZW1cIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcGFnZUluZGV4ID09PSBwYWdlQ291bnRcIlxuICAgICAgICAqbmdJZj1cImNvbmZpZy5ib3VuZGFyeUxpbmtzXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZUNvdW50KVwiPlxuICAgICAgICA8YSBjbGFzcz1cInRoeS1wYWdlLWxpbmsgdGh5LXBhZ2UtbGluay1sYXN0XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcubGFzdFRleHRcIj57eyBjb25maWcubGFzdFRleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmxhc3RJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5sYXN0SWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnNob3dUb3RhbFBhZ2VDb3VudCAmJiBjb25maWcudG90YWxQYWdlc0Zvcm1hdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLWNvdW50XCIgW2lubmVySFRNTF09XCJwYWdlQ291bnQgfCBwYWdpbmF0aW9uVG90YWxQYWdlc0Zvcm1hdCA6IGNvbmZpZy50b3RhbFBhZ2VzRm9ybWF0XCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5zaG93UXVpY2tKdW1wZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aHktcGFnaW5hdGlvbi1qdW1wZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLWp1bXBlci1pbnB1dFwiPlxuICAgICAgICAgIOi3s+iHs1xuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiICNqdW1wZXJJbnB1dCAodGh5RW50ZXIpPVwianVtcFBhZ2UoanVtcGVySW5wdXQpXCIgKGJsdXIpPVwianVtcFBhZ2UoanVtcGVySW5wdXQpXCIgLz5cbiAgICAgICAgICDpobVcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxRQUFRLEVBQ1IsTUFBTSxFQUVOLGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUF1QixNQUFNLHFCQUFxQixDQUFDO0FBQy9ILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUVoRTs7OztHQUlHO0FBUUgsTUFBTSxPQUFPLGFBQWE7SUFJdEI7OztPQUdHO0lBQ0gsSUFDSSxZQUFZLENBQUMsU0FBaUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMs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Z0JBRU0sZUFBZTtzQkFBNUMsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBNEJTLGlCQUFpQjtzQkFBckQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBUW5DLFNBQVM7c0JBRlIsV0FBVzt1QkFBQyxnQ0FBZ0M7O3NCQUM1QyxLQUFLO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBPcHRpb25hbCxcbiAgICBJbmplY3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgbnVtYmVyQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UGFnaW5hdGlvbkNvbmZpZ01vZGVsIH0gZnJvbSAnLi9wYWdpbmF0aW9uLmNsYXNzJztcbmltcG9ydCB7IFBhZ2luYXRpb25EZWZhdWx0Q29uZmlnLCBERUZBVUxUX1JBTkdFX0NPVU5ULCBUSFlfUEFHSU5BVElPTl9DT05GSUcsIFRoeVBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuL3BhZ2luYXRpb24uY29uZmlnJztcbmltcG9ydCB7IHVzZUhvc3RSZW5kZXJlciB9IGZyb20gJ0B0ZXRoeXMvY2RrL2RvbSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGlzVGVtcGxhdGVSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgUGFnaW5hdGlvblRvdGFsQ291bnRGb3JtYXQgfSBmcm9tICcuL3BhZ2luYXRpb24ucGlwZSc7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IFRoeU9wdGlvbiwgVGh5RW50ZXJEaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRoeVNlbGVjdCB9IGZyb20gJ25neC10ZXRoeXMvc2VsZWN0JztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiDliIbpobXnu4Tku7bvvIzlvZPmlbDmja7ph4/ov4flpJrml7bvvIzkvb/nlKjliIbpobXliIbop6PmlbDmja7jgIJcbiAqIEBuYW1lIHRoeS1wYWdpbmF0aW9uXG4gKiBAb3JkZXIgMTBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktcGFnaW5hdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIFRoeVNlbGVjdCwgRm9ybXNNb2R1bGUsIE5nRm9yLCBUaHlPcHRpb24sIFRoeUljb24sIFRoeUVudGVyRGlyZWN0aXZlLCBQYWdpbmF0aW9uVG90YWxDb3VudEZvcm1hdF1cbn0pXG5leHBvcnQgY2xhc3MgVGh5UGFnaW5hdGlvbiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgaXNUZW1wbGF0ZVJlZiA9IGlzVGVtcGxhdGVSZWY7XG4gICAgcHVibGljIGNvbmZpZzogVGh5UGFnaW5hdGlvbkNvbmZpZ01vZGVsID0gT2JqZWN0LmFzc2lnbih7fSwgUGFnaW5hdGlvbkRlZmF1bHRDb25maWcsIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5tYWluKTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruW9k+WJjemhte+8jOaUr+aMgeWPjOWQkee7keWumlxuICAgICAqIEBkZWZhdWx0IDFcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlQYWdlSW5kZXgocGFnZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdlSW5kZXggPSBwYWdlSW5kZXg7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLnNldFBhZ2VJbmRleChwYWdlSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5q+P6aG15p2h55uu5pWw6YePXG4gICAgICogQGRlZmF1bHQgMjBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlQYWdlU2l6ZShwYWdlU2l6ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RQYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2VzKHRoaXMucGFnZUluZGV4LCB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaAu+mhteaVsCDkuI4gdG90YWxQYWdlcyDkuozpgInkuIDkvKDlhaVcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlUb3RhbCh0b3RhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMudG90YWwgPSB0b3RhbDtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUGFnZUNvdW50KCk7XG4gICAgICAgICAgICB0aGlzLnNldFBhZ2VJbmRleCh0aGlzLnBhZ2VJbmRleCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5ieWIhumhtemhteegge+8jOiuvue9ruiHquWumuS5ieWIhumhtemhteeggeWQjuWwhuS4jeagueaNriBUb3RhbCDlkowgUGFnZVNpemUg5p2l6Ieq5Yqo6K6h566X6aG156CB77yM5a6M5YWo5Lul5Lyg5YWl55qE6aG156CB5Li65YeGXG4gICAgICogQHR5cGUgbnVtYmVyW11cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlDdXN0b21QYWdlcyhwYWdlczogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5jdXN0b21QYWdlcyA9IHBhZ2VzO1xuICAgICAgICB0aGlzLmNvbmZpZy5zaG93VG90YWxQYWdlQ291bnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUGFnZUNvdW50KCk7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVQYWdlcyh0aGlzLnBhZ2VJbmRleCwgdGhpcy5wYWdlQ291bnQpO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbnpoHnlKhcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeURpc2FibGVkJywgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuW/q+mAn+i3s+i9rFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlTaG93UXVpY2tKdW1wZXInLCB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCBzaG93UXVpY2tKdW1wZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1F1aWNrSnVtcGVyID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm5pi+56S65oC76aG15pWw5L+h5oGvXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAndGh5U2hvd1RvdGFsUGFnZUNvdW50JywgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICBzZXQgc2hvd1RvdGFsUGFnZUNvdW50KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dUb3RhbFBhZ2VDb3VudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWIhumhtee7hOS7tueahOWkp+Wwj1xuICAgICAqIEB0eXBlIHNtIHwgbWQgfCBsZ1xuICAgICAqIEBkZWZhdWx0IG1kXG4gICAgICovXG4gICAgQElucHV0KCd0aHlTaXplJylcbiAgICBzZXQgc2l6ZShzaXplOiAnc20nIHwgJ21kJyB8ICdsZycpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RTaXplID0gc2l6ZTtcbiAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIuYWRkQ2xhc3MoYHRoeS1wYWdpbmF0aW9uLSR7c2l6ZX1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mnIDlpKfmmL7npLrmlbDph4/vvIzotoXlh7rmnIDlpKfmmL7npLrmlbDlkI7kvJroh6rliqjov5vooYzliIblibLmmL7npLpcbiAgICAgKiBAZGVmYXVsdCA5XG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlNYXhDb3VudCcsIHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IG1heENvdW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5jb25maWcubWF4Q291bnQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7ovrnnvJjmmL7npLrmlbDph49cbiAgICAgKiBAZGVmYXVsdCAyXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlNYXJnaW5hbENvdW50JywgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWFyZ2luYWxDb3VudDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5Lit6Ze05Yy65Z+f5pi+56S65pWw6YePXG4gICAgICogQGRlZmF1bHQgN1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeVJhbmdlQ291bnQodmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnJhbmdlQ291bnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNYXJnaW5hbENvdW50KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCh7IGFsaWFzOiAndGh5U2hvd1NpemVDaGFuZ2VyJywgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICBzZXQgc2hvd1NpemVDaGFuZ2VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dTaXplQ2hhbmdlciA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEB0eXBlIG51bWJlcltdXG4gICAgICovXG4gICAgQElucHV0KCd0aHlQYWdlU2l6ZU9wdGlvbnMnKVxuICAgIHNldCBwYWdlU2l6ZU9wdGlvbnModmFsdWU6IG51bWJlcltdKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnBhZ2VTaXplT3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWPquacieS4gOmhteaXtuaYr+WQpumakOiXj+WIhumhteWZqFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlIaWRlT25TaW5nbGVQYWdlJywgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgaGlkZU9uU2luZ2xlUGFnZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOWIhumhteWZqOWNleS9jVxuICAgICAqIEBkZWZhdWx0IOadoVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5VW5pdCcpXG4gICAgc2V0IHVuaXQodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnVuaXQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOmhteeggeaUueWPmOeahOWbnuiwg1xuICAgICAqL1xuICAgIEBPdXRwdXQoJ3RoeVBhZ2VJbmRleENoYW5nZScpIHBhZ2VJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICog5LiOQm9vdHN0cmFwIHBhZ2luYXRpb24g5YW85a6577yM5ZCO57ut54mI5pys5Lya6L+b6KGM5Yig6Zmk77yM5Y+C5pWw5L+d5oyB5LiOIGJvb3RzdHJhcCDkuIDoh7RcbiAgICAgKi9cbiAgICBAT3V0cHV0KCd0aHlQYWdlQ2hhbmdlZCcpIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IHBhZ2U6IG51bWJlciB9PigpO1xuXG4gICAgQE91dHB1dCgndGh5UGFnZVNpemVDaGFuZ2VkJykgcGFnZVNpemVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBwdWJsaWMgcGFnZXM6IHsgaW5kZXg/OiBudW1iZXI7IHRleHQ/OiBzdHJpbmc7IGFjdGl2ZT86IGJvb2xlYW4gfVtdID0gW107XG5cbiAgICBwdWJsaWMgcGFnZUluZGV4ID0gMTtcblxuICAgIHB1YmxpYyBwYWdlU2l6ZTogbnVtYmVyO1xuXG4gICAgcHVibGljIHBhZ2VDb3VudDogbnVtYmVyO1xuXG4gICAgcHVibGljIGN1c3RvbVBhZ2VzOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyB0b3RhbDogbnVtYmVyO1xuXG4gICAgcHVibGljIHJhbmdlID0geyBmcm9tOiAwLCB0bzogMCB9O1xuXG4gICAgcHVibGljIGZpcnN0SW5kZXggPSAxO1xuXG4gICAgcHVibGljIGlzSGlkZU9uU2luZ2xlUGFnZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBob3N0UmVuZGVyZXIgPSB1c2VIb3N0UmVuZGVyZXIoKTtcblxuICAgIHB1YmxpYyBzZWxlY3RTaXplID0gJ21kJztcblxuICAgIHB1YmxpYyBzZWxlY3RQYWdlU2l6ZTogTnVtYmVyID0gMjA7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1wYWdpbmF0aW9uJykgaXNQYWdpbmF0aW9uQ2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5pi+56S66IyD5Zu05ZKMdG90YWxcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXBhZ2luYXRpb24taGFzLXRvdGFsJylcbiAgICBASW5wdXQoJ3RoeVNob3dUb3RhbCcpXG4gICAgc2hvd1RvdGFsOiBib29sZWFuIHwgVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IG51bWJlcjsgcmFuZ2U6IHsgZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyIH0gfT4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRIWV9QQUdJTkFUSU9OX0NPTkZJRylcbiAgICAgICAgcHJpdmF0ZSBwYWdpbmF0aW9uQ29uZmlnOiBUaHlQYWdpbmF0aW9uQ29uZmlnLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZXRNYXJnaW5hbENvdW50KHRoaXMuY29uZmlnLnJhbmdlQ291bnQpO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2VDb3VudCgpO1xuICAgICAgICB0aGlzLnNldFBhZ2VJbmRleCh0aGlzLnBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TWFyZ2luYWxDb3VudChyYW5nZTogbnVtYmVyKSB7XG4gICAgICAgIGlmICghdGhpcy5tYXJnaW5hbENvdW50KSB7XG4gICAgICAgICAgICB0aGlzLm1hcmdpbmFsQ291bnQgPSByYW5nZSA8PSBERUZBVUxUX1JBTkdFX0NPVU5UID8gMSA6IDI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFBhZ2VJbmRleChwYWdlSW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleCA+IHRoaXMucGFnZUNvdW50ID8gdGhpcy5wYWdlQ291bnQgOiBwYWdlSW5kZXggfHwgMTtcbiAgICAgICAgY29uc3QgdG9QYWdlU2l6ZSA9IHRoaXMucGFnZUluZGV4ICogdGhpcy5wYWdlU2l6ZTtcbiAgICAgICAgdGhpcy5yYW5nZSA9IHtcbiAgICAgICAgICAgIGZyb206ICh0aGlzLnBhZ2VJbmRleCAtIDEpICogdGhpcy5wYWdlU2l6ZSArIDEsXG4gICAgICAgICAgICB0bzogdG9QYWdlU2l6ZSA+IHRoaXMudG90YWwgPyB0aGlzLnRvdGFsIDogdG9QYWdlU2l6ZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmluaXRpYWxpemVQYWdlcyh0aGlzLnBhZ2VJbmRleCwgdGhpcy5wYWdlQ291bnQpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBhZ2VDb3VudCgpIHtcbiAgICAgICAgbGV0IHBhZ2VDb3VudCA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVBhZ2VzICYmIHRoaXMuY3VzdG9tUGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcGFnZUNvdW50ID0gdGhpcy5jdXN0b21QYWdlc1t0aGlzLmN1c3RvbVBhZ2VzLmxlbmd0aCAtIDFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFnZUNvdW50ID0gdGhpcy5wYWdlU2l6ZSA8IDEgPyAxIDogTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnBhZ2VTaXplKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhZ2VDb3VudCA9IE1hdGgubWF4KHBhZ2VDb3VudCB8fCAwLCAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VQYWdlKGluZGV4OiBudW1iZXIsIHRleHQ6IHN0cmluZywgYWN0aXZlOiBib29sZWFuKTogeyBpbmRleDogbnVtYmVyOyB0ZXh0OiBzdHJpbmc7IGFjdGl2ZTogYm9vbGVhbiB9IHtcbiAgICAgICAgcmV0dXJuIHsgaW5kZXgsIHRleHQsIGFjdGl2ZSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVBhZ2VzKHBhZ2VJbmRleDogbnVtYmVyLCBwYWdlQ291bnQ6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5jdXN0b21QYWdlcyAmJiB0aGlzLmN1c3RvbVBhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucGFnZXMgPSB0aGlzLmN1c3RvbVBhZ2VzLm1hcChwYWdlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogcGFnZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogcGFnZS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHBhZ2UgPT09ICtwYWdlSW5kZXhcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFnZXMgPSBbXTtcbiAgICAgICAgY29uc3QgbWFyZ2luYWxDb3VudCA9IHRoaXMubWFyZ2luYWxDb3VudDtcbiAgICAgICAgY29uc3QgcmFuZ2VDb3VudCA9IHRoaXMuY29uZmlnLnJhbmdlQ291bnQ7XG4gICAgICAgIGNvbnN0IG1heENvdW50ID0gdGhpcy5jb25maWcubWF4Q291bnQ7XG4gICAgICAgIGNvbnN0IGlzTWF4U2l6ZWQgPSBwYWdlQ291bnQgPiBtYXhDb3VudDtcbiAgICAgICAgaWYgKGlzTWF4U2l6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZVBhZ2VzID0gW107XG4gICAgICAgICAgICBjb25zdCBhZnRlclBhZ2VzID0gW107XG5cbiAgICAgICAgICAgIC8vIGJlZm9yZVBhZ2VzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBtYXJnaW5hbENvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgICBiZWZvcmVQYWdlcy5wdXNoKHRoaXMubWFrZVBhZ2UoaSwgaS50b1N0cmluZygpLCBpID09PSBwYWdlSW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYWdlSW5kZXggLSBNYXRoLmNlaWwocmFuZ2VDb3VudCAvIDIpID4gdGhpcy5maXJzdEluZGV4KSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlUGFnZXMucHVzaCh0aGlzLm1ha2VQYWdlKHBhZ2VJbmRleCAtIHJhbmdlQ291bnQsICfCt8K3wrcnLCBudWxsKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGFmdGVyUGFnZXNcbiAgICAgICAgICAgIGlmIChwYWdlSW5kZXggKyBNYXRoLmNlaWwocmFuZ2VDb3VudCAvIDIpIDwgcGFnZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgYWZ0ZXJQYWdlcy5wdXNoKHRoaXMubWFrZVBhZ2UocGFnZUluZGV4ICsgcmFuZ2VDb3VudCwgJ8K3wrfCtycsIG51bGwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBwYWdlQ291bnQgLSBtYXJnaW5hbENvdW50ICsgMTsgaSA8PSBwYWdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGFmdGVyUGFnZXMucHVzaCh0aGlzLm1ha2VQYWdlKGksIGkudG9TdHJpbmcoKSwgaSA9PT0gcGFnZUluZGV4KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG1haW5QYWdlc1xuICAgICAgICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgobWFyZ2luYWxDb3VudCArIDEsIHBhZ2VJbmRleCAtIChyYW5nZUNvdW50IC0gMSkgLyAyKTtcbiAgICAgICAgICAgIGxldCBlbmQgPSBNYXRoLm1pbihwYWdlSW5kZXggKyAocmFuZ2VDb3VudCAtIDEpIC8gMiwgcGFnZUNvdW50IC0gbWFyZ2luYWxDb3VudCk7XG4gICAgICAgICAgICBpZiAocGFnZUluZGV4IC0gMSA8PSBtYXJnaW5hbENvdW50KSB7XG4gICAgICAgICAgICAgICAgZW5kID0gcmFuZ2VDb3VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYWdlQ291bnQgLSBwYWdlSW5kZXggPD0gbWFyZ2luYWxDb3VudCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gcGFnZUNvdW50IC0gcmFuZ2VDb3VudCArIDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHBhZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGkgPT09ICtwYWdlSW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhZ2VzID0gWy4uLmJlZm9yZVBhZ2VzLCAuLi5wYWdlcywgLi4uYWZ0ZXJQYWdlc107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBwYWdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHBhZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGkgPT09ICtwYWdlSW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhZ2VzID0gcGFnZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYWdlQ2hhbmdlKHBhZ2VJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZUluZGV4Q2hhbmdlLmVtaXQocGFnZUluZGV4KTtcbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHsgcGFnZTogcGFnZUluZGV4IH0pO1xuICAgIH1cblxuICAgIHNlbGVjdFBhZ2UocGFnZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgcGFnZUluZGV4ID09PSB0aGlzLmZpcnN0SW5kZXggLSAxIHx8IHBhZ2VJbmRleCA9PT0gdGhpcy5wYWdlQ291bnQgKyAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRQYWdlSW5kZXgocGFnZUluZGV4KTtcbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlKHRoaXMucGFnZUluZGV4KTtcbiAgICB9XG5cbiAgICBqdW1wUGFnZShpbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgICBjb25zdCBwYWdlSW5kZXggPSAraW5wdXQudmFsdWU7XG4gICAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHBhZ2VJbmRleCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UGFnZShwYWdlSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgb25QYWdlU2l6ZUNoYW5nZShldmVudDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBldmVudDtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgdGhpcy5zZXRQYWdlSW5kZXgodGhpcy5wYWdlSW5kZXgpO1xuICAgICAgICB0aGlzLnBhZ2VTaXplQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiKGhpZGVPblNpbmdsZVBhZ2UgJiYgdG90YWwgPiBwYWdlU2l6ZSkgfHwgIWhpZGVPblNpbmdsZVBhZ2VcIj5cbiAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLXRvdGFsXCIgKm5nSWY9XCJzaG93VG90YWxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGVSZWYoc2hvd1RvdGFsKTsgZWxzZSB0b3RhbFRlbXBsYXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG90YWwgPiAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtci0zXCI+XG4gICAgICAgICAg56ysPHNwYW4gY2xhc3M9XCJudW1iZXJcIj4ge3sgcmFuZ2UuZnJvbSB9fS17eyByYW5nZS50byB9fSA8L3NwYW4+e3sgY29uZmlnLnVuaXQgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAg5YWxPHNwYW4gY2xhc3M9XCJudW1iZXJcIj4ge3sgdG90YWwgfX0gPC9zcGFuPnt7IGNvbmZpZy51bml0IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICN0b3RhbFRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNob3dUb3RhbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogdG90YWwsIHJhbmdlOiByYW5nZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tc2l6ZVwiICpuZ0lmPVwiY29uZmlnLnNob3dTaXplQ2hhbmdlclwiPlxuICAgICAgPHRoeS1zZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RQYWdlU2l6ZVwiIFt0aHlTaXplXT1cInNlbGVjdFNpemVcIiBbdGh5RGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAobmdNb2RlbENoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPHRoeS1vcHRpb25cbiAgICAgICAgICBjbGFzcz1cInBhZ2Utc2l6ZS1vcHRpb25cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29uZmlnLnBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgW3RoeVZhbHVlXT1cIm9wdGlvblwiXG4gICAgICAgICAgW3RoeUxhYmVsVGV4dF09XCJvcHRpb24gKyAnICcgKyBjb25maWcudW5pdCArICcv6aG1J1wiPjwvdGh5LW9wdGlvbj5cbiAgICAgIDwvdGh5LXNlbGVjdD5cbiAgICA8L2Rpdj5cbiAgICA8dWwgY2xhc3M9XCJ0aHktcGFnaW5hdGlvbi1wYWdlc1wiPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IGZpcnN0SW5kZXhcIlxuICAgICAgICAqbmdJZj1cImNvbmZpZy5ib3VuZGFyeUxpbmtzXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UoZmlyc3RJbmRleClcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ0aHktcGFnZS1saW5rIHRoeS1wYWdlLWxpbmstZmlyc3RcIiBocmVmPVwiamF2YXNjcmlwdDo7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5maXJzdFRleHRcIj57eyBjb25maWcuZmlyc3RUZXh0IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5maXJzdEljb25cIj5cbiAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiY29uZmlnLmZpcnN0SWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJ0aHktcGFnZS1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IHBhZ2VJbmRleCA9PT0gZmlyc3RJbmRleFwiXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmRpcmVjdGlvbkxpbmtzXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZUluZGV4IC0gMSlcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ0aHktcGFnZS1saW5rIHBhZ2UtbGluay1wcmVcIiBocmVmPVwiamF2YXNjcmlwdDo7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5wcmV2aW91c1RleHRcIj57eyBjb25maWcucHJldmlvdXNUZXh0IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5wcmV2aW91c0ljb25cIj5cbiAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiY29uZmlnLnByZXZpb3VzSWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJ0aHktcGFnZS1pdGVtIHRoeS1wYWdlLW51bWJlclwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicGFnZS5hY3RpdmVcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGFnZShwYWdlLmluZGV4KVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzXCI+XG4gICAgICAgIDxhIGNsYXNzPVwidGh5LXBhZ2UtbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIj57eyBwYWdlLnRleHQgfX08L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbSBwYWdlLWl0ZW0tbmV4dFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IHBhZ2VDb3VudFwiXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmRpcmVjdGlvbkxpbmtzXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZUluZGV4ICsgMSlcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ0aHktcGFnZS1saW5rIHRoeS1wYWdlLWxpbmstbmV4dFwiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLm5leHRUZXh0XCI+e3sgY29uZmlnLm5leHRUZXh0IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5uZXh0SWNvblwiPlxuICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJjb25maWcubmV4dEljb25cIj48L3RoeS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IHBhZ2VDb3VudFwiXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmJvdW5kYXJ5TGlua3NcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGFnZShwYWdlQ291bnQpXCI+XG4gICAgICAgIDxhIGNsYXNzPVwidGh5LXBhZ2UtbGluayB0aHktcGFnZS1saW5rLWxhc3RcIiBocmVmPVwiamF2YXNjcmlwdDo7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5sYXN0VGV4dFwiPnt7IGNvbmZpZy5sYXN0VGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcubGFzdEljb25cIj5cbiAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiY29uZmlnLmxhc3RJY29uXCI+PC90aHktaWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuc2hvd1RvdGFsUGFnZUNvdW50ICYmIGNvbmZpZy50b3RhbFBhZ2VzRm9ybWF0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tY291bnRcIiBbaW5uZXJIVE1MXT1cInBhZ2VDb3VudCB8IHBhZ2luYXRpb25Ub3RhbFBhZ2VzRm9ybWF0IDogY29uZmlnLnRvdGFsUGFnZXNGb3JtYXRcIj48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnNob3dRdWlja0p1bXBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLWp1bXBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tanVtcGVyLWlucHV0XCI+XG4gICAgICAgICAg6Lez6IezXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgI2p1bXBlcklucHV0ICh0aHlFbnRlcik9XCJqdW1wUGFnZShqdW1wZXJJbnB1dClcIiAoYmx1cik9XCJqdW1wUGFnZShqdW1wZXJJbnB1dClcIiAvPlxuICAgICAgICAgIOmhtVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19