ngx-tethys 18.0.0 → 18.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (614) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/action/styles/action.scss +1 -1
  3. package/action/styles/mixin.scss +8 -3
  4. package/alert/styles/mixin.scss +3 -10
  5. package/back-top/examples/custom/custom.scss +3 -1
  6. package/badge/examples/basic/basic.component.scss +3 -1
  7. package/badge/examples/custom-color/custom-color.component.scss +3 -1
  8. package/badge/examples/overflow/overflow.component.scss +3 -1
  9. package/badge/examples/state-point/state-point.component.scss +3 -1
  10. package/badge/examples/type/type.component.scss +3 -1
  11. package/badge/styles/badge.scss +1 -1
  12. package/badge/styles/mixin.scss +2 -16
  13. package/button/styles/button.scss +8 -7
  14. package/button/styles/mixin.scss +22 -15
  15. package/carousel/styles/variables.scss +1 -1
  16. package/cascader/cascader.service.d.ts +1 -1
  17. package/cascader/styles/cascader.scss +3 -6
  18. package/collapse/examples/custom/custom.component.scss +3 -1
  19. package/color-picker/parts/inputs/inputs.component.d.ts +1 -0
  20. package/color-picker/styles/inputs.scss +8 -1
  21. package/color-picker/styles/saturation.scss +3 -3
  22. package/core/debounce-time.d.ts +8 -0
  23. package/core/index.d.ts +1 -0
  24. package/date-picker/styles/decade-panel.scss +1 -1
  25. package/date-picker/styles/mixin.scss +1 -1
  26. package/date-picker/styles/picker.scss +3 -0
  27. package/date-picker/styles/variables.scss +1 -4
  28. package/date-picker/styles/year-panel.scss +1 -1
  29. package/drag-drop/examples/tree-drag/tree-drag.component.scss +0 -1
  30. package/dropdown/styles/dropdown.scss +1 -1
  31. package/esm2022/action/action.component.mjs +4 -4
  32. package/esm2022/action/action.module.mjs +4 -4
  33. package/esm2022/action/actions.component.mjs +3 -3
  34. package/esm2022/affix/affix.component.mjs +4 -4
  35. package/esm2022/affix/affix.module.mjs +4 -4
  36. package/esm2022/alert/alert.component.mjs +3 -3
  37. package/esm2022/alert/alert.directive.mjs +3 -3
  38. package/esm2022/alert/alert.module.mjs +4 -4
  39. package/esm2022/anchor/anchor-link.component.mjs +4 -4
  40. package/esm2022/anchor/anchor.component.mjs +4 -4
  41. package/esm2022/anchor/anchor.module.mjs +4 -4
  42. package/esm2022/arrow-switcher/arrow-switcher.component.mjs +3 -3
  43. package/esm2022/arrow-switcher/module.mjs +4 -4
  44. package/esm2022/autocomplete/autocomplete.component.mjs +4 -4
  45. package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +3 -3
  46. package/esm2022/autocomplete/module.mjs +4 -4
  47. package/esm2022/autocomplete/overlay/autocomplete-container.component.mjs +3 -3
  48. package/esm2022/autocomplete/overlay/autocomplete.service.mjs +3 -3
  49. package/esm2022/avatar/avatar-list/avatar-list.component.mjs +3 -3
  50. package/esm2022/avatar/avatar.component.mjs +4 -4
  51. package/esm2022/avatar/avatar.module.mjs +4 -4
  52. package/esm2022/avatar/avatar.pipe.mjs +9 -9
  53. package/esm2022/avatar/avatar.service.mjs +3 -3
  54. package/esm2022/back-top/back-top.component.mjs +3 -3
  55. package/esm2022/back-top/back-top.module.mjs +4 -4
  56. package/esm2022/badge/badge.component.mjs +3 -3
  57. package/esm2022/badge/badge.module.mjs +4 -4
  58. package/esm2022/breadcrumb/breadcrumb-item.component.mjs +4 -4
  59. package/esm2022/breadcrumb/breadcrumb.component.mjs +3 -3
  60. package/esm2022/breadcrumb/module.mjs +4 -4
  61. package/esm2022/button/button-group.component.mjs +3 -3
  62. package/esm2022/button/button-icon.component.mjs +3 -3
  63. package/esm2022/button/button.component.mjs +4 -4
  64. package/esm2022/button/button.module.mjs +4 -4
  65. package/esm2022/calendar/calendar-cells.mjs +6 -6
  66. package/esm2022/calendar/calendar-header.component.mjs +3 -3
  67. package/esm2022/calendar/calendar.component.mjs +3 -3
  68. package/esm2022/calendar/module.mjs +4 -4
  69. package/esm2022/card/card.component.mjs +3 -3
  70. package/esm2022/card/card.module.mjs +4 -4
  71. package/esm2022/card/content.component.mjs +3 -3
  72. package/esm2022/card/header.component.mjs +3 -3
  73. package/esm2022/carousel/carousel-item.directive.mjs +4 -4
  74. package/esm2022/carousel/carousel.component.mjs +7 -7
  75. package/esm2022/carousel/carousel.service.mjs +4 -4
  76. package/esm2022/carousel/module.mjs +4 -4
  77. package/esm2022/cascader/cascader-li.component.mjs +3 -3
  78. package/esm2022/cascader/cascader-search-option.component.mjs +6 -6
  79. package/esm2022/cascader/cascader.component.mjs +7 -7
  80. package/esm2022/cascader/cascader.service.mjs +9 -21
  81. package/esm2022/cascader/module.mjs +4 -4
  82. package/esm2022/checkbox/checkbox.component.mjs +3 -3
  83. package/esm2022/checkbox/module.mjs +4 -4
  84. package/esm2022/collapse/collapse-item.component.mjs +4 -4
  85. package/esm2022/collapse/collapse.component.mjs +3 -3
  86. package/esm2022/collapse/module.mjs +4 -4
  87. package/esm2022/color-picker/color-picker-custom-panel.component.mjs +3 -3
  88. package/esm2022/color-picker/color-picker-panel.component.mjs +3 -3
  89. package/esm2022/color-picker/color-picker.component.mjs +4 -4
  90. package/esm2022/color-picker/coordinates.directive.mjs +3 -3
  91. package/esm2022/color-picker/helpers/rgba.class.mjs +1 -1
  92. package/esm2022/color-picker/module.mjs +4 -4
  93. package/esm2022/color-picker/parts/alpha/alpha.component.mjs +3 -3
  94. package/esm2022/color-picker/parts/hue/hue.component.mjs +3 -3
  95. package/esm2022/color-picker/parts/indicator/indicator.component.mjs +3 -3
  96. package/esm2022/color-picker/parts/inputs/inputs.component.mjs +20 -10
  97. package/esm2022/color-picker/parts/saturation/saturation.component.mjs +3 -3
  98. package/esm2022/comment/comment-actions.directive.mjs +3 -3
  99. package/esm2022/comment/comment-content.directive.mjs +3 -3
  100. package/esm2022/comment/comment.component.mjs +3 -3
  101. package/esm2022/comment/comment.module.mjs +4 -4
  102. package/esm2022/copy/copy.directive.mjs +3 -3
  103. package/esm2022/copy/module.mjs +4 -4
  104. package/esm2022/core/click-positioner.mjs +3 -3
  105. package/esm2022/core/debounce-time.mjs +11 -0
  106. package/esm2022/core/index.mjs +2 -1
  107. package/esm2022/core/overlay/abstract-overlay-container.mjs +1 -1
  108. package/esm2022/core/overlay/overlay.directive.mjs +1 -1
  109. package/esm2022/core/overlay/portal-directives.mjs +3 -3
  110. package/esm2022/core/scroll.mjs +4 -4
  111. package/esm2022/core/store/store.mjs +3 -3
  112. package/esm2022/core/translate.mjs +3 -3
  113. package/esm2022/core/update-host-class.service.mjs +3 -3
  114. package/esm2022/date-picker/abstract-picker.component.mjs +3 -3
  115. package/esm2022/date-picker/abstract-picker.directive.mjs +4 -4
  116. package/esm2022/date-picker/base-picker.component.mjs +4 -4
  117. package/esm2022/date-picker/date-helper.service.mjs +3 -3
  118. package/esm2022/date-picker/date-picker.component.mjs +3 -3
  119. package/esm2022/date-picker/date-picker.directive.mjs +3 -3
  120. package/esm2022/date-picker/date-picker.module.mjs +4 -4
  121. package/esm2022/date-picker/date-picker.service.mjs +3 -3
  122. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +3 -3
  123. package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +3 -3
  124. package/esm2022/date-picker/lib/calendar/calendar-table.component.mjs +3 -3
  125. package/esm2022/date-picker/lib/date/date-header.component.mjs +3 -3
  126. package/esm2022/date-picker/lib/date/date-table-cell.component.mjs +3 -3
  127. package/esm2022/date-picker/lib/date/date-table.component.mjs +4 -4
  128. package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +3 -3
  129. package/esm2022/date-picker/lib/decade/decade-header.component.mjs +3 -3
  130. package/esm2022/date-picker/lib/decade/decade-table.component.mjs +3 -3
  131. package/esm2022/date-picker/lib/lib-packer.module.mjs +4 -4
  132. package/esm2022/date-picker/lib/month/month-header.component.mjs +3 -3
  133. package/esm2022/date-picker/lib/month/month-table.component.mjs +3 -3
  134. package/esm2022/date-picker/lib/popups/date-popup.component.mjs +4 -4
  135. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +3 -3
  136. package/esm2022/date-picker/lib/quarter/quarter-table.component.mjs +3 -3
  137. package/esm2022/date-picker/lib/year/year-header.component.mjs +3 -3
  138. package/esm2022/date-picker/lib/year/year-table.component.mjs +3 -3
  139. package/esm2022/date-picker/month-picker.component.mjs +4 -4
  140. package/esm2022/date-picker/picker.component.mjs +5 -5
  141. package/esm2022/date-picker/picker.pipes.mjs +12 -12
  142. package/esm2022/date-picker/picker.validators.mjs +6 -6
  143. package/esm2022/date-picker/quarter-picker.component.mjs +4 -4
  144. package/esm2022/date-picker/range-picker.component.mjs +4 -4
  145. package/esm2022/date-picker/range-picker.directive.mjs +3 -3
  146. package/esm2022/date-picker/week-picker.component.mjs +4 -4
  147. package/esm2022/date-picker/year-picker.component.mjs +4 -4
  148. package/esm2022/date-range/date-range.component.mjs +4 -4
  149. package/esm2022/date-range/module.mjs +4 -4
  150. package/esm2022/date-range/optional-dates/optional-dates.component.mjs +3 -3
  151. package/esm2022/dialog/body/dialog-body.component.mjs +3 -3
  152. package/esm2022/dialog/confirm/confirm.component.mjs +3 -3
  153. package/esm2022/dialog/dialog-container.component.mjs +3 -3
  154. package/esm2022/dialog/dialog.module.mjs +4 -4
  155. package/esm2022/dialog/dialog.service.mjs +3 -3
  156. package/esm2022/dialog/footer/dialog-footer.component.mjs +3 -3
  157. package/esm2022/dialog/header/dialog-header.component.mjs +3 -3
  158. package/esm2022/divider/divider.component.mjs +3 -3
  159. package/esm2022/divider/divider.module.mjs +4 -4
  160. package/esm2022/dot/dot.component.mjs +4 -4
  161. package/esm2022/dot/dot.module.mjs +4 -4
  162. package/esm2022/drag-drop/drag-content.directive.mjs +4 -4
  163. package/esm2022/drag-drop/drag-drop.service.mjs +3 -3
  164. package/esm2022/drag-drop/drag-handle.directive.mjs +4 -4
  165. package/esm2022/drag-drop/drag.directive.mjs +3 -3
  166. package/esm2022/drag-drop/drop-container.directive.mjs +3 -3
  167. package/esm2022/drag-drop/module.mjs +4 -4
  168. package/esm2022/dropdown/dropdown-active.directive.mjs +4 -4
  169. package/esm2022/dropdown/dropdown-menu-item.directive.mjs +21 -21
  170. package/esm2022/dropdown/dropdown-menu.component.mjs +12 -12
  171. package/esm2022/dropdown/dropdown-submenu.component.mjs +4 -4
  172. package/esm2022/dropdown/dropdown.directive.mjs +3 -3
  173. package/esm2022/dropdown/module.mjs +4 -4
  174. package/esm2022/empty/empty.component.mjs +3 -3
  175. package/esm2022/empty/empty.config.mjs +3 -3
  176. package/esm2022/empty/empty.module.mjs +4 -4
  177. package/esm2022/flexible-text/flexible-text.component.mjs +3 -3
  178. package/esm2022/flexible-text/flexible-text.module.mjs +4 -4
  179. package/esm2022/form/form-group-error/form-group-error.component.mjs +3 -3
  180. package/esm2022/form/form-group-label.directive.mjs +3 -3
  181. package/esm2022/form/form-group.component.mjs +4 -4
  182. package/esm2022/form/form-submit.directive.mjs +3 -3
  183. package/esm2022/form/form-validator-loader.mjs +3 -3
  184. package/esm2022/form/form-validator.service.mjs +3 -3
  185. package/esm2022/form/form.directive.mjs +3 -3
  186. package/esm2022/form/from-group-footer/form-group-footer.component.mjs +4 -4
  187. package/esm2022/form/module.mjs +4 -4
  188. package/esm2022/form/validator/confirm-validator.directive.mjs +3 -3
  189. package/esm2022/form/validator/max-validator.directive.mjs +3 -3
  190. package/esm2022/form/validator/min-validator.directive.mjs +3 -3
  191. package/esm2022/form/validator/unique-validator.directive.mjs +4 -4
  192. package/esm2022/fullscreen/fullscreen-launch.directive.mjs +3 -3
  193. package/esm2022/fullscreen/fullscreen-ref.mjs +3 -2
  194. package/esm2022/fullscreen/fullscreen.component.mjs +4 -4
  195. package/esm2022/fullscreen/fullscreen.module.mjs +4 -4
  196. package/esm2022/fullscreen/fullscreen.service.mjs +4 -4
  197. package/esm2022/grid/flex.mjs +12 -12
  198. package/esm2022/grid/module.mjs +4 -4
  199. package/esm2022/grid/thy-col.directive.mjs +3 -3
  200. package/esm2022/grid/thy-grid-item.component.mjs +4 -4
  201. package/esm2022/grid/thy-grid.component.mjs +7 -7
  202. package/esm2022/grid/thy-row.directive.mjs +3 -3
  203. package/esm2022/guider/guider-hint/guider-hint.component.mjs +3 -3
  204. package/esm2022/guider/guider-manager.mjs +3 -3
  205. package/esm2022/guider/guider.directive.mjs +4 -4
  206. package/esm2022/guider/guider.module.mjs +4 -4
  207. package/esm2022/guider/guider.service.mjs +3 -3
  208. package/esm2022/icon/icon-registry.mjs +4 -4
  209. package/esm2022/icon/icon.component.mjs +4 -4
  210. package/esm2022/icon/icon.module.mjs +4 -4
  211. package/esm2022/image/image-group.component.mjs +4 -4
  212. package/esm2022/image/image.directive.mjs +4 -4
  213. package/esm2022/image/image.service.mjs +3 -3
  214. package/esm2022/image/module.mjs +4 -4
  215. package/esm2022/image/preview/image-preview.component.mjs +4 -4
  216. package/esm2022/input/input-count.component.mjs +4 -4
  217. package/esm2022/input/input-group.component.mjs +4 -4
  218. package/esm2022/input/input-search.component.mjs +4 -4
  219. package/esm2022/input/input.component.mjs +4 -4
  220. package/esm2022/input/input.directive.mjs +4 -4
  221. package/esm2022/input/module.mjs +4 -4
  222. package/esm2022/input-number/input-number.component.mjs +3 -3
  223. package/esm2022/input-number/module.mjs +4 -4
  224. package/esm2022/layout/content-main.component.mjs +6 -6
  225. package/esm2022/layout/content-section.component.mjs +6 -6
  226. package/esm2022/layout/content.component.mjs +6 -6
  227. package/esm2022/layout/header.component.mjs +6 -6
  228. package/esm2022/layout/layout.component.mjs +6 -6
  229. package/esm2022/layout/layout.module.mjs +4 -4
  230. package/esm2022/layout/sidebar-content.component.mjs +6 -6
  231. package/esm2022/layout/sidebar-footer.component.mjs +6 -6
  232. package/esm2022/layout/sidebar-header.component.mjs +6 -6
  233. package/esm2022/layout/sidebar.component.mjs +7 -7
  234. package/esm2022/list/list-item-meta.component.mjs +3 -3
  235. package/esm2022/list/list-item.component.mjs +3 -3
  236. package/esm2022/list/list.component.mjs +3 -3
  237. package/esm2022/list/list.module.mjs +4 -4
  238. package/esm2022/list/selection/selection-list.mjs +3 -3
  239. package/esm2022/loading/loading.component.mjs +3 -3
  240. package/esm2022/loading/loading.module.mjs +4 -4
  241. package/esm2022/mention/mention.directive.mjs +3 -3
  242. package/esm2022/mention/mention.module.mjs +4 -4
  243. package/esm2022/mention/suggestions/suggestions.component.mjs +4 -4
  244. package/esm2022/menu/divider/menu-divider.component.mjs +3 -3
  245. package/esm2022/menu/group/menu-group.component.mjs +3 -3
  246. package/esm2022/menu/item/action/menu-item-action.component.mjs +4 -4
  247. package/esm2022/menu/item/icon/menu-item-icon.component.mjs +3 -3
  248. package/esm2022/menu/item/menu-item.component.mjs +3 -3
  249. package/esm2022/menu/item/name/menu-item-name.component.mjs +3 -3
  250. package/esm2022/menu/menu.component.mjs +3 -3
  251. package/esm2022/menu/menu.module.mjs +4 -4
  252. package/esm2022/message/abstract/abstract-message-container.component.mjs +4 -4
  253. package/esm2022/message/abstract/abstract-message.component.mjs +4 -4
  254. package/esm2022/message/abstract/abstract-message.service.mjs +1 -1
  255. package/esm2022/message/message-container.component.mjs +3 -3
  256. package/esm2022/message/message-queue.service.mjs +3 -3
  257. package/esm2022/message/message.component.mjs +3 -3
  258. package/esm2022/message/message.service.mjs +3 -3
  259. package/esm2022/message/module.mjs +4 -4
  260. package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +3 -3
  261. package/esm2022/nav/icon-nav/icon-nav.component.mjs +3 -3
  262. package/esm2022/nav/nav-ink-bar.directive.mjs +3 -3
  263. package/esm2022/nav/nav-item.directive.mjs +4 -4
  264. package/esm2022/nav/nav.component.mjs +3 -3
  265. package/esm2022/nav/nav.module.mjs +4 -4
  266. package/esm2022/nav/nav.pipe.mjs +3 -3
  267. package/esm2022/notify/module.mjs +4 -4
  268. package/esm2022/notify/notify-container.component.mjs +3 -3
  269. package/esm2022/notify/notify-queue.service.mjs +3 -3
  270. package/esm2022/notify/notify.component.mjs +5 -5
  271. package/esm2022/notify/notify.service.mjs +3 -3
  272. package/esm2022/pagination/pagination.component.mjs +29 -29
  273. package/esm2022/pagination/pagination.module.mjs +4 -4
  274. package/esm2022/pagination/pagination.pipe.mjs +3 -3
  275. package/esm2022/popover/body/popover-body.component.mjs +3 -3
  276. package/esm2022/popover/header/popover-header.component.mjs +4 -4
  277. package/esm2022/popover/module.mjs +4 -4
  278. package/esm2022/popover/popover-container.component.mjs +3 -3
  279. package/esm2022/popover/popover.directive.mjs +3 -3
  280. package/esm2022/popover/popover.service.mjs +3 -3
  281. package/esm2022/progress/progress-circle.component.mjs +3 -3
  282. package/esm2022/progress/progress-strip.component.mjs +3 -3
  283. package/esm2022/progress/progress.component.mjs +3 -3
  284. package/esm2022/progress/progress.module.mjs +4 -4
  285. package/esm2022/property/module.mjs +4 -4
  286. package/esm2022/property/properties.component.mjs +3 -3
  287. package/esm2022/property/property-item.component.mjs +4 -4
  288. package/esm2022/property-operation/group/property-operation-group.component.mjs +3 -3
  289. package/esm2022/property-operation/module.mjs +4 -4
  290. package/esm2022/property-operation/property-operation.component.mjs +4 -4
  291. package/esm2022/radio/button/radio-button.component.mjs +3 -3
  292. package/esm2022/radio/group/radio-group.component.mjs +3 -3
  293. package/esm2022/radio/module.mjs +4 -4
  294. package/esm2022/radio/radio.component.mjs +3 -3
  295. package/esm2022/rate/module.mjs +4 -4
  296. package/esm2022/rate/rate-item.component.mjs +3 -3
  297. package/esm2022/rate/rate.component.mjs +3 -3
  298. package/esm2022/resizable/module.mjs +4 -4
  299. package/esm2022/resizable/resizable.directive.mjs +3 -3
  300. package/esm2022/resizable/resizable.service.mjs +4 -4
  301. package/esm2022/resizable/resize-handle.component.mjs +4 -4
  302. package/esm2022/resizable/resize-handles.component.mjs +3 -3
  303. package/esm2022/result/result.component.mjs +3 -3
  304. package/esm2022/result/result.module.mjs +4 -4
  305. package/esm2022/segment/segment-item.component.mjs +3 -3
  306. package/esm2022/segment/segment.component.mjs +4 -4
  307. package/esm2022/segment/segment.module.mjs +4 -4
  308. package/esm2022/select/custom-select/custom-select.component.mjs +3 -3
  309. package/esm2022/select/module.mjs +4 -4
  310. package/esm2022/select/native-select/native-select.component.mjs +3 -3
  311. package/esm2022/shared/base-form-check.component.mjs +4 -4
  312. package/esm2022/shared/directives/string-or-template-outlet.directive.mjs +4 -4
  313. package/esm2022/shared/directives/thy-autofocus.directive.mjs +4 -4
  314. package/esm2022/shared/directives/thy-contextmenu.directive.mjs +4 -4
  315. package/esm2022/shared/directives/thy-ctrl-enter.directive.mjs +4 -4
  316. package/esm2022/shared/directives/thy-drag-drop.directive.mjs +4 -4
  317. package/esm2022/shared/directives/thy-enter.directive.mjs +4 -4
  318. package/esm2022/shared/directives/thy-scroll.directive.mjs +4 -4
  319. package/esm2022/shared/directives/thy-show.mjs +4 -4
  320. package/esm2022/shared/directives/thy-stop-propagation.directive.mjs +3 -3
  321. package/esm2022/shared/directives/view-outlet.directive.mjs +4 -4
  322. package/esm2022/shared/ng-transclude.directive.mjs +3 -3
  323. package/esm2022/shared/option/group/option-group.component.mjs +4 -4
  324. package/esm2022/shared/option/list-option/list-option.component.mjs +3 -3
  325. package/esm2022/shared/option/module.mjs +4 -4
  326. package/esm2022/shared/option/option-group.component.mjs +3 -3
  327. package/esm2022/shared/option/option.component.mjs +4 -4
  328. package/esm2022/shared/option/options-container.component.mjs +3 -3
  329. package/esm2022/shared/select/module.mjs +4 -4
  330. package/esm2022/shared/select/select-control/select-control.component.mjs +3 -3
  331. package/esm2022/shared/shared.module.mjs +4 -4
  332. package/esm2022/skeleton/module.mjs +4 -4
  333. package/esm2022/skeleton/skeleton-circle.component.mjs +3 -3
  334. package/esm2022/skeleton/skeleton-rectangle.component.mjs +3 -3
  335. package/esm2022/skeleton/skeleton.component.mjs +3 -3
  336. package/esm2022/skeleton/stylized/bullet-list.component.mjs +3 -3
  337. package/esm2022/skeleton/stylized/list.component.mjs +3 -3
  338. package/esm2022/skeleton/stylized/paragraph.component.mjs +3 -3
  339. package/esm2022/slide/drawer/drawer-container.directive.mjs +3 -3
  340. package/esm2022/slide/slide-body/slide-body-section.component.mjs +3 -3
  341. package/esm2022/slide/slide-body/slide-body.component.mjs +3 -3
  342. package/esm2022/slide/slide-container.component.mjs +3 -3
  343. package/esm2022/slide/slide-footer/slide-footer.component.mjs +3 -3
  344. package/esm2022/slide/slide-header/slide-header.component.mjs +3 -3
  345. package/esm2022/slide/slide-layout/slide-layout.component.mjs +3 -3
  346. package/esm2022/slide/slide-ref.service.mjs +3 -3
  347. package/esm2022/slide/slide.module.mjs +4 -4
  348. package/esm2022/slide/slide.service.mjs +3 -3
  349. package/esm2022/slider/slider.component.mjs +4 -4
  350. package/esm2022/slider/slider.module.mjs +4 -4
  351. package/esm2022/space/space.component.mjs +6 -6
  352. package/esm2022/space/space.module.mjs +4 -4
  353. package/esm2022/statistic/statistic.component.mjs +3 -3
  354. package/esm2022/statistic/statistic.module.mjs +4 -4
  355. package/esm2022/stepper/step-header.component.mjs +3 -3
  356. package/esm2022/stepper/step.component.mjs +3 -3
  357. package/esm2022/stepper/stepper-button.directive.mjs +6 -6
  358. package/esm2022/stepper/stepper.component.mjs +3 -3
  359. package/esm2022/stepper/stepper.module.mjs +4 -4
  360. package/esm2022/strength/strength.component.mjs +3 -3
  361. package/esm2022/strength/strength.module.mjs +4 -4
  362. package/esm2022/switch/switch.component.mjs +3 -3
  363. package/esm2022/switch/switch.module.mjs +4 -4
  364. package/esm2022/table/pipes/drag.pipe.mjs +3 -3
  365. package/esm2022/table/pipes/table.pipe.mjs +3 -3
  366. package/esm2022/table/table-column.component.mjs +3 -3
  367. package/esm2022/table/table-skeleton.component.mjs +3 -3
  368. package/esm2022/table/table.component.mjs +5 -5
  369. package/esm2022/table/table.module.mjs +4 -4
  370. package/esm2022/tabs/tab-content.component.mjs +3 -3
  371. package/esm2022/tabs/tab.component.mjs +3 -3
  372. package/esm2022/tabs/tabs.component.mjs +4 -4
  373. package/esm2022/tabs/tabs.module.mjs +4 -4
  374. package/esm2022/tag/tag.component.mjs +3 -3
  375. package/esm2022/tag/tag.module.mjs +4 -4
  376. package/esm2022/tag/tags.component.mjs +3 -3
  377. package/esm2022/testing/data-transfer.mjs +1 -1
  378. package/esm2022/time-picker/inner/inner-time-picker.component.mjs +4 -4
  379. package/esm2022/time-picker/inner/inner-time-picker.config.mjs +3 -3
  380. package/esm2022/time-picker/inner/inner-time-picker.store.mjs +3 -3
  381. package/esm2022/time-picker/time-picker-panel.component.mjs +4 -4
  382. package/esm2022/time-picker/time-picker.component.mjs +4 -4
  383. package/esm2022/time-picker/time-picker.module.mjs +4 -4
  384. package/esm2022/timeline/timeline-item.component.mjs +4 -4
  385. package/esm2022/timeline/timeline.component.mjs +4 -4
  386. package/esm2022/timeline/timeline.module.mjs +4 -4
  387. package/esm2022/timeline/timeline.service.mjs +3 -3
  388. package/esm2022/tooltip/tooltip.component.mjs +3 -3
  389. package/esm2022/tooltip/tooltip.directive.mjs +3 -3
  390. package/esm2022/tooltip/tooltip.module.mjs +4 -4
  391. package/esm2022/tooltip/tooltip.service.mjs +3 -3
  392. package/esm2022/transfer/transfer-list.component.mjs +4 -4
  393. package/esm2022/transfer/transfer.component.mjs +3 -3
  394. package/esm2022/transfer/transfer.module.mjs +4 -4
  395. package/esm2022/tree/tree-node.component.mjs +4 -4
  396. package/esm2022/tree/tree.component.mjs +5 -5
  397. package/esm2022/tree/tree.module.mjs +4 -4
  398. package/esm2022/tree/tree.pipe.mjs +3 -3
  399. package/esm2022/tree/tree.service.mjs +3 -3
  400. package/esm2022/tree-select/module.mjs +4 -4
  401. package/esm2022/tree-select/tree-select.component.mjs +13 -12
  402. package/esm2022/typography/bg-color.directive.mjs +3 -3
  403. package/esm2022/typography/module.mjs +4 -4
  404. package/esm2022/typography/text/text.component.mjs +3 -3
  405. package/esm2022/typography/text-color.directive.mjs +3 -3
  406. package/esm2022/upload/file-drop.directive.mjs +7 -6
  407. package/esm2022/upload/file-select-base.mjs +3 -3
  408. package/esm2022/upload/file-select.component.mjs +4 -4
  409. package/esm2022/upload/module.mjs +4 -4
  410. package/esm2022/upload/upload.service.mjs +3 -3
  411. package/esm2022/util/logger/logger.mjs +1 -1
  412. package/esm2022/version.mjs +2 -2
  413. package/esm2022/vote/vote.component.mjs +3 -3
  414. package/esm2022/vote/vote.module.mjs +4 -4
  415. package/esm2022/watermark/watermark.directive.mjs +3 -3
  416. package/esm2022/watermark/watermark.module.mjs +4 -4
  417. package/fesm2022/ngx-tethys-action.mjs +10 -10
  418. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  419. package/fesm2022/ngx-tethys-affix.mjs +7 -7
  420. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  421. package/fesm2022/ngx-tethys-alert.mjs +10 -10
  422. package/fesm2022/ngx-tethys-anchor.mjs +10 -10
  423. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  424. package/fesm2022/ngx-tethys-arrow-switcher.mjs +7 -7
  425. package/fesm2022/ngx-tethys-autocomplete.mjs +16 -16
  426. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  427. package/fesm2022/ngx-tethys-avatar.mjs +22 -22
  428. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  429. package/fesm2022/ngx-tethys-back-top.mjs +7 -7
  430. package/fesm2022/ngx-tethys-badge.mjs +7 -7
  431. package/fesm2022/ngx-tethys-breadcrumb.mjs +10 -10
  432. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  433. package/fesm2022/ngx-tethys-button.mjs +13 -13
  434. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  435. package/fesm2022/ngx-tethys-calendar.mjs +16 -16
  436. package/fesm2022/ngx-tethys-card.mjs +13 -13
  437. package/fesm2022/ngx-tethys-carousel.mjs +16 -16
  438. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  439. package/fesm2022/ngx-tethys-cascader.mjs +25 -37
  440. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  441. package/fesm2022/ngx-tethys-checkbox.mjs +7 -7
  442. package/fesm2022/ngx-tethys-collapse.mjs +10 -10
  443. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  444. package/fesm2022/ngx-tethys-color-picker.mjs +47 -37
  445. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  446. package/fesm2022/ngx-tethys-comment.mjs +13 -13
  447. package/fesm2022/ngx-tethys-copy.mjs +7 -7
  448. package/fesm2022/ngx-tethys-core.mjs +30 -20
  449. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  450. package/fesm2022/ngx-tethys-date-picker.mjs +117 -117
  451. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  452. package/fesm2022/ngx-tethys-date-range.mjs +10 -10
  453. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  454. package/fesm2022/ngx-tethys-dialog.mjs +22 -22
  455. package/fesm2022/ngx-tethys-divider.mjs +7 -7
  456. package/fesm2022/ngx-tethys-dot.mjs +7 -7
  457. package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
  458. package/fesm2022/ngx-tethys-drag-drop.mjs +19 -19
  459. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  460. package/fesm2022/ngx-tethys-dropdown.mjs +46 -46
  461. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  462. package/fesm2022/ngx-tethys-empty.mjs +10 -10
  463. package/fesm2022/ngx-tethys-flexible-text.mjs +7 -7
  464. package/fesm2022/ngx-tethys-form.mjs +40 -40
  465. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  466. package/fesm2022/ngx-tethys-fullscreen.mjs +15 -14
  467. package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
  468. package/fesm2022/ngx-tethys-grid.mjs +31 -31
  469. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  470. package/fesm2022/ngx-tethys-guider.mjs +16 -16
  471. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  472. package/fesm2022/ngx-tethys-icon.mjs +10 -10
  473. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  474. package/fesm2022/ngx-tethys-image.mjs +16 -16
  475. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  476. package/fesm2022/ngx-tethys-input-number.mjs +7 -7
  477. package/fesm2022/ngx-tethys-input.mjs +19 -19
  478. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  479. package/fesm2022/ngx-tethys-layout.mjs +58 -58
  480. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  481. package/fesm2022/ngx-tethys-list.mjs +16 -16
  482. package/fesm2022/ngx-tethys-loading.mjs +7 -7
  483. package/fesm2022/ngx-tethys-mention.mjs +10 -10
  484. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  485. package/fesm2022/ngx-tethys-menu.mjs +25 -25
  486. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  487. package/fesm2022/ngx-tethys-message.mjs +22 -22
  488. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  489. package/fesm2022/ngx-tethys-nav.mjs +22 -22
  490. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  491. package/fesm2022/ngx-tethys-notify.mjs +17 -17
  492. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  493. package/fesm2022/ngx-tethys-pagination.mjs +34 -34
  494. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  495. package/fesm2022/ngx-tethys-popover.mjs +19 -19
  496. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  497. package/fesm2022/ngx-tethys-progress.mjs +13 -13
  498. package/fesm2022/ngx-tethys-property-operation.mjs +10 -10
  499. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  500. package/fesm2022/ngx-tethys-property.mjs +10 -10
  501. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  502. package/fesm2022/ngx-tethys-radio.mjs +13 -13
  503. package/fesm2022/ngx-tethys-rate.mjs +10 -10
  504. package/fesm2022/ngx-tethys-resizable.mjs +16 -16
  505. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  506. package/fesm2022/ngx-tethys-result.mjs +7 -7
  507. package/fesm2022/ngx-tethys-segment.mjs +10 -10
  508. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  509. package/fesm2022/ngx-tethys-select.mjs +10 -10
  510. package/fesm2022/ngx-tethys-shared.mjs +66 -66
  511. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  512. package/fesm2022/ngx-tethys-skeleton.mjs +22 -22
  513. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  514. package/fesm2022/ngx-tethys-slide.mjs +31 -31
  515. package/fesm2022/ngx-tethys-slider.mjs +7 -7
  516. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  517. package/fesm2022/ngx-tethys-space.mjs +10 -10
  518. package/fesm2022/ngx-tethys-statistic.mjs +7 -7
  519. package/fesm2022/ngx-tethys-stepper.mjs +19 -19
  520. package/fesm2022/ngx-tethys-strength.mjs +7 -7
  521. package/fesm2022/ngx-tethys-switch.mjs +7 -7
  522. package/fesm2022/ngx-tethys-table.mjs +20 -20
  523. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  524. package/fesm2022/ngx-tethys-tabs.mjs +13 -13
  525. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  526. package/fesm2022/ngx-tethys-tag.mjs +10 -10
  527. package/fesm2022/ngx-tethys-testing.mjs.map +1 -1
  528. package/fesm2022/ngx-tethys-time-picker.mjs +19 -19
  529. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  530. package/fesm2022/ngx-tethys-timeline.mjs +13 -13
  531. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  532. package/fesm2022/ngx-tethys-tooltip.mjs +13 -13
  533. package/fesm2022/ngx-tethys-transfer.mjs +10 -10
  534. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  535. package/fesm2022/ngx-tethys-tree-select.mjs +16 -15
  536. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  537. package/fesm2022/ngx-tethys-tree.mjs +17 -17
  538. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  539. package/fesm2022/ngx-tethys-typography.mjs +13 -13
  540. package/fesm2022/ngx-tethys-upload.mjs +18 -17
  541. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  542. package/fesm2022/ngx-tethys-util.mjs.map +1 -1
  543. package/fesm2022/ngx-tethys-vote.mjs +7 -7
  544. package/fesm2022/ngx-tethys-watermark.mjs +7 -7
  545. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  546. package/fesm2022/ngx-tethys.mjs +1 -1
  547. package/fesm2022/ngx-tethys.mjs.map +1 -1
  548. package/flexible-text/examples/placement/placement.component.scss +3 -1
  549. package/form/styles/form-check.scss +2 -3
  550. package/form/styles/mixin.scss +1 -1
  551. package/grid/examples/basic/basic.component.scss +5 -3
  552. package/grid/examples/flex/flex.component.scss +5 -3
  553. package/grid/examples/gap/gap.component.scss +5 -3
  554. package/grid/examples/offset/offset.component.scss +5 -3
  555. package/grid/examples/responsive/responsive.component.scss +6 -4
  556. package/grid/examples/row-col/row-col.component.scss +5 -3
  557. package/grid/examples/span/span.component.scss +5 -3
  558. package/guider/styles/guider-tip.scss +6 -6
  559. package/loading/styles/loading.scss +3 -3
  560. package/menu/examples/basic/basic.component.scss +3 -1
  561. package/menu/examples/divider/divider.component.scss +3 -1
  562. package/menu/examples/group/group.component.scss +3 -1
  563. package/menu/examples/theme/theme.component.scss +2 -2
  564. package/nav/examples/basic/basic.component.scss +3 -5
  565. package/nav/examples/extra/extra.component.scss +3 -1
  566. package/nav/examples/fill/fill.component.scss +3 -1
  567. package/nav/examples/lite/lite.component.scss +3 -1
  568. package/nav/examples/pills/pills.component.scss +3 -1
  569. package/nav/examples/responsive/responsive.component.scss +3 -1
  570. package/nav/examples/size/size.component.scss +3 -1
  571. package/nav/examples/tabs/tabs.component.scss +3 -1
  572. package/nav/examples/type/type.component.scss +3 -4
  573. package/nav/examples/vertical/vertical.component.scss +3 -1
  574. package/nav/nav.component.d.ts +1 -1
  575. package/nav/styles/mixin.scss +26 -10
  576. package/notify/styles/notify.scss +2 -2
  577. package/package.json +1 -1
  578. package/pagination/pagination.component.d.ts +3 -3
  579. package/pagination/styles/pagination.scss +1 -0
  580. package/progress/styles/progress-strip.scss +1 -1
  581. package/property-operation/styles/property-operation.scss +1 -15
  582. package/resizable/examples/layout/layout.style.scss +7 -5
  583. package/resizable/examples/table/table.style.scss +3 -1
  584. package/resizable/resize-handle.component.d.ts +4 -1
  585. package/schematics/version.d.ts +1 -1
  586. package/schematics/version.js +1 -1
  587. package/segment/styles/mixin.scss +8 -5
  588. package/segment/styles/segment.scss +1 -1
  589. package/shared/option/styles/option.mixin.scss +6 -6
  590. package/shared/option/styles/select-dropdown.scss +3 -1
  591. package/shared/select/select-control/select-control.scss +1 -1
  592. package/space/examples/align/align.component.scss +3 -2
  593. package/statistic/examples/prefix-suffix/prefix-suffix.component.scss +3 -1
  594. package/styles/bootstrap/_type.scss +8 -8
  595. package/styles/bootstrap/mixins/_transition.scss +3 -1
  596. package/styles/mixins/close.scss +4 -1
  597. package/styles/mixins/shadow.scss +3 -1
  598. package/styles/mixins/tables.scss +3 -166
  599. package/styles/modules/cdk/drag-drop.scss +1 -1
  600. package/styles/modules/link.scss +1 -1
  601. package/styles/modules/tables.scss +0 -1
  602. package/styles/variables.scss +73 -41
  603. package/switch/styles/mixin.scss +1 -1
  604. package/table/styles/table.scss +1 -1
  605. package/tabs/styles/tabs.scss +1 -0
  606. package/tag/styles/mixin.scss +10 -5
  607. package/tag/styles/tag.scss +4 -4
  608. package/tree/styles/tree.scss +0 -8
  609. package/tree-select/styles/tree-select.scss +4 -1
  610. package/tree-select/tree-select.component.d.ts +3 -3
  611. package/watermark/examples/basic/basic.component.scss +3 -1
  612. package/watermark/examples/custom/custom.component.scss +8 -0
  613. package/watermark/styles/watermark.scss +1 -2
  614. package/tabs/examples/basic/basic.component.scss +0 -5
@@ -86,10 +86,10 @@ export class ThyTooltip {
86
86
  this.updateClasses();
87
87
  // this.markForCheck();
88
88
  }
89
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTooltip, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
90
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: ThyTooltip, isStandalone: true, selector: "thy-tooltip", host: { listeners: { "@state.start": "animationStart()", "@state.done": "animationDone($event)" }, properties: { "@state": "visibility", "class.thy-tooltip": "this.addTooltipContainerClass" } }, ngImport: i0, template: "<div class=\"thy-tooltip-arrow\"></div>\n<div class=\"thy-tooltip-content\">\n <ng-container *ngIf=\"isTemplateRef; else text\">\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: data }\"></ng-container>\n </ng-container>\n <ng-template #text>\n {{ content }}\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [thyTooltipAnimations.tooltipState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTooltip, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
90
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: ThyTooltip, isStandalone: true, selector: "thy-tooltip", host: { listeners: { "@state.start": "animationStart()", "@state.done": "animationDone($event)" }, properties: { "@state": "visibility", "class.thy-tooltip": "this.addTooltipContainerClass" } }, ngImport: i0, template: "<div class=\"thy-tooltip-arrow\"></div>\n<div class=\"thy-tooltip-content\">\n <ng-container *ngIf=\"isTemplateRef; else text\">\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: data }\"></ng-container>\n </ng-container>\n <ng-template #text>\n {{ content }}\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [thyTooltipAnimations.tooltipState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
91
91
  }
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTooltip, decorators: [{
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTooltip, decorators: [{
93
93
  type: Component,
94
94
  args: [{ selector: 'thy-tooltip', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [thyTooltipAnimations.tooltipState], host: {
95
95
  '[@state]': 'visibility',
@@ -105,10 +105,10 @@ export class ThyTooltipDirective extends ThyOverlayDirectiveBase {
105
105
  ngOnDestroy() {
106
106
  this.tooltipRef?.dispose();
107
107
  }
108
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.Platform }, { token: i2.FocusMonitor }, { token: i0.ViewContainerRef }, { token: i3.ThyTooltipService }], target: i0.ɵɵFactoryTarget.Directive }); }
109
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.1.4", type: ThyTooltipDirective, isStandalone: true, selector: "[thyTooltip],[thy-tooltip]", inputs: { content: ["thyTooltip", "content"], placement: ["thyTooltipPlacement", "placement"], thyTooltipClass: "thyTooltipClass", showDelay: ["thyTooltipShowDelay", "showDelay", numberAttribute], hideDelay: ["thyTooltipHideDelay", "hideDelay", numberAttribute], thyTooltipTrigger: "thyTooltipTrigger", thyTooltipDisabled: ["thyTooltipDisabled", "thyTooltipDisabled", coerceBooleanProperty], data: ["thyTooltipTemplateContext", "data"], tooltipOffset: ["thyTooltipOffset", "tooltipOffset", numberAttribute], tooltipPin: ["thyTooltipPin", "tooltipPin", coerceBooleanProperty] }, exportAs: ["thyTooltip"], usesInheritance: true, ngImport: i0 }); }
108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.Platform }, { token: i2.FocusMonitor }, { token: i0.ViewContainerRef }, { token: i3.ThyTooltipService }], target: i0.ɵɵFactoryTarget.Directive }); }
109
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.0", type: ThyTooltipDirective, isStandalone: true, selector: "[thyTooltip],[thy-tooltip]", inputs: { content: ["thyTooltip", "content"], placement: ["thyTooltipPlacement", "placement"], thyTooltipClass: "thyTooltipClass", showDelay: ["thyTooltipShowDelay", "showDelay", numberAttribute], hideDelay: ["thyTooltipHideDelay", "hideDelay", numberAttribute], thyTooltipTrigger: "thyTooltipTrigger", thyTooltipDisabled: ["thyTooltipDisabled", "thyTooltipDisabled", coerceBooleanProperty], data: ["thyTooltipTemplateContext", "data"], tooltipOffset: ["thyTooltipOffset", "tooltipOffset", numberAttribute], tooltipPin: ["thyTooltipPin", "tooltipPin", coerceBooleanProperty] }, exportAs: ["thyTooltip"], usesInheritance: true, ngImport: i0 }); }
110
110
  }
111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTooltipDirective, decorators: [{
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTooltipDirective, decorators: [{
112
112
  type: Directive,
113
113
  args: [{
114
114
  selector: '[thyTooltip],[thy-tooltip]',
@@ -7,11 +7,11 @@ import { ThyTooltip } from './tooltip.component';
7
7
  import { THY_TOOLTIP_DEFAULT_CONFIG_PROVIDER } from './tooltip.config';
8
8
  import * as i0 from "@angular/core";
9
9
  export class ThyTooltipModule {
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.4", ngImport: i0, type: ThyTooltipModule, imports: [A11yModule, CommonModule, OverlayModule, ThyTooltipDirective, ThyTooltip], exports: [ThyTooltipDirective] }); }
12
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTooltipModule, providers: [THY_TOOLTIP_DEFAULT_CONFIG_PROVIDER], imports: [A11yModule, CommonModule, OverlayModule] }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: ThyTooltipModule, imports: [A11yModule, CommonModule, OverlayModule, ThyTooltipDirective, ThyTooltip], exports: [ThyTooltipDirective] }); }
12
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTooltipModule, providers: [THY_TOOLTIP_DEFAULT_CONFIG_PROVIDER], imports: [A11yModule, CommonModule, OverlayModule] }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTooltipModule, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTooltipModule, decorators: [{
15
15
  type: NgModule,
16
16
  args: [{
17
17
  imports: [A11yModule, CommonModule, OverlayModule, ThyTooltipDirective, ThyTooltip],
@@ -19,10 +19,10 @@ export class ThyTooltipService {
19
19
  const tooltipRef = new ThyTooltipRef(host, config, this.overlay, this.scrollDispatcher, this.ngZone);
20
20
  return tooltipRef;
21
21
  }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTooltipService, deps: [{ token: i1.Overlay }, { token: i1.ScrollDispatcher }, { token: i0.NgZone }, { token: THY_TOOLTIP_DEFAULT_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
23
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTooltipService, providedIn: 'root' }); }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTooltipService, deps: [{ token: i1.Overlay }, { token: i1.ScrollDispatcher }, { token: i0.NgZone }, { token: THY_TOOLTIP_DEFAULT_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
23
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTooltipService, providedIn: 'root' }); }
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTooltipService, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTooltipService, decorators: [{
26
26
  type: Injectable,
27
27
  args: [{ providedIn: 'root' }]
28
28
  }], ctorParameters: () => [{ type: i1.Overlay }, { type: i1.ScrollDispatcher }, { type: i0.NgZone }, { type: undefined, decorators: [{
@@ -114,10 +114,10 @@ export class ThyTransferList {
114
114
  listData: { lock: this.lockItems, unlock: this.unlockItems }
115
115
  });
116
116
  }
117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTransferList, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component }); }
118
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: ThyTransferList, isStandalone: true, selector: "thy-transfer-list", inputs: { title: "title", items: "items", draggable: "draggable", canLock: "canLock", maxLock: "maxLock", max: "max", disabled: "disabled", template: "template", contentRef: ["renderContentRef", "contentRef"] }, outputs: { draggableUpdate: "draggableUpdate", selectItem: "selectItem", unselectItem: "unselectItem" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title }} \u00B7 {{ items?.length }}<span *ngIf=\"max\"> (\u4E0A\u9650{{ max }}\u4E2A)</span></span\n >\n</div>\n<ng-container *ngIf=\"!contentRef; else renderContent\">\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable\">\n <ng-container *ngIf=\"canLock\">\n <div class=\"thy-transfer-list-group-name\">\u9501\u5B9A (\u4E0A\u9650{{ maxLock }}\u4E2A)</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\"\n >\n <div class=\"cdk-drop-list-empty\" *ngIf=\"lockItems.length === 0\"></div>\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n *ngFor=\"let item of lockItems\"\n [ngClass]=\"{ active: item.checked }\"\n >\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n </thy-list>\n\n <div class=\"thy-transfer-list-group-name\">\u672A\u9501\u5B9A</div>\n </ng-container>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\"\n >\n <div class=\"cdk-drop-list-empty\" *ngIf=\"unlockItems.length === 0\"></div>\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n *ngFor=\"let item of unlockItems\"\n [ngClass]=\"{ active: item.checked, disabled: disabled && item.direction === 'left' }\"\n >\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n </thy-list>\n </div>\n</ng-container>\n\n<ng-template #renderContent>\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n contentRef;\n context: {\n $implicit: items,\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"\n ></ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "component", type: ThyList, selector: "thy-list", inputs: ["thyDivided"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: ThyDragDropDirective, selector: "[thyDragDrop]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyListItem, selector: "thy-list-item,[thy-list-item]" }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTransferList, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component }); }
118
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: ThyTransferList, isStandalone: true, selector: "thy-transfer-list", inputs: { title: "title", items: "items", draggable: "draggable", canLock: "canLock", maxLock: "maxLock", max: "max", disabled: "disabled", template: "template", contentRef: ["renderContentRef", "contentRef"] }, outputs: { draggableUpdate: "draggableUpdate", selectItem: "selectItem", unselectItem: "unselectItem" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title }} \u00B7 {{ items?.length }}<span *ngIf=\"max\"> (\u4E0A\u9650{{ max }}\u4E2A)</span></span\n >\n</div>\n<ng-container *ngIf=\"!contentRef; else renderContent\">\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable\">\n <ng-container *ngIf=\"canLock\">\n <div class=\"thy-transfer-list-group-name\">\u9501\u5B9A (\u4E0A\u9650{{ maxLock }}\u4E2A)</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\"\n >\n <div class=\"cdk-drop-list-empty\" *ngIf=\"lockItems.length === 0\"></div>\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n *ngFor=\"let item of lockItems\"\n [ngClass]=\"{ active: item.checked }\"\n >\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n </thy-list>\n\n <div class=\"thy-transfer-list-group-name\">\u672A\u9501\u5B9A</div>\n </ng-container>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\"\n >\n <div class=\"cdk-drop-list-empty\" *ngIf=\"unlockItems.length === 0\"></div>\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n *ngFor=\"let item of unlockItems\"\n [ngClass]=\"{ active: item.checked, disabled: disabled && item.direction === 'left' }\"\n >\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n </thy-list>\n </div>\n</ng-container>\n\n<ng-template #renderContent>\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n contentRef;\n context: {\n $implicit: items,\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"\n ></ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "component", type: ThyList, selector: "thy-list", inputs: ["thyDivided"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: ThyDragDropDirective, selector: "[thyDragDrop]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyListItem, selector: "thy-list-item,[thy-list-item]" }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
119
119
  }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTransferList, decorators: [{
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTransferList, decorators: [{
121
121
  type: Component,
122
122
  args: [{ selector: 'thy-transfer-list', encapsulation: ViewEncapsulation.None, standalone: true, imports: [NgIf, CdkDropListGroup, ThyList, CdkDropList, ThyDragDropDirective, NgFor, ThyListItem, CdkDrag, NgClass, NgTemplateOutlet], template: "<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title }} \u00B7 {{ items?.length }}<span *ngIf=\"max\"> (\u4E0A\u9650{{ max }}\u4E2A)</span></span\n >\n</div>\n<ng-container *ngIf=\"!contentRef; else renderContent\">\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable\">\n <ng-container *ngIf=\"canLock\">\n <div class=\"thy-transfer-list-group-name\">\u9501\u5B9A (\u4E0A\u9650{{ maxLock }}\u4E2A)</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\"\n >\n <div class=\"cdk-drop-list-empty\" *ngIf=\"lockItems.length === 0\"></div>\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n *ngFor=\"let item of lockItems\"\n [ngClass]=\"{ active: item.checked }\"\n >\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n </thy-list>\n\n <div class=\"thy-transfer-list-group-name\">\u672A\u9501\u5B9A</div>\n </ng-container>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\"\n >\n <div class=\"cdk-drop-list-empty\" *ngIf=\"unlockItems.length === 0\"></div>\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n *ngFor=\"let item of unlockItems\"\n [ngClass]=\"{ active: item.checked, disabled: disabled && item.direction === 'left' }\"\n >\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n </thy-list>\n </div>\n</ng-container>\n\n<ng-template #renderContent>\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n contentRef;\n context: {\n $implicit: items,\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"\n ></ng-container>\n </div>\n</ng-template>\n" }]
123
123
  }], ctorParameters: () => [{ type: i0.IterableDiffers }], propDecorators: { title: [{
@@ -149,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
149
149
  type: HostBinding,
150
150
  args: ['class']
151
151
  }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJhbnNmZXIvdHJhbnNmZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvdHJhbnNmZXIvdHJhbnNmZXItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqSSxPQUFPLEVBQ0gsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUdMLGVBQWUsRUFFZixNQUFNLEVBQ04sV0FBVyxFQUNYLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUd6RDs7R0FFRztBQVFILE1BQU0sT0FBTyxlQUFlO0lBcUN4QixZQUFvQixPQUF3QjtRQUF4QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQXBDckMsY0FBUyxHQUFzQixFQUFFLENBQUM7UUFFbEMsZ0JBQVcsR0FBc0IsRUFBRSxDQUFDO1FBMEJqQyxvQkFBZSxHQUF5QyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUVuRyxlQUFVLEdBQXlDLElBQUksWUFBWSxFQUEwQixDQUFDO1FBRTlGLGlCQUFZLEdBQXlDLElBQUksWUFBWSxFQUEwQixDQUFDO1FBRXBGLGNBQVMsR0FBRyxtQkFBbUIsQ0FBQztRQWtFdEQsMkJBQXNCLEdBQUcsR0FBRyxFQUFFO1lBQzFCLE9B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T0FBTyw2RUFBRSxXQUFXLDhmQUFFLG9CQUFvQiwwREFBRSxLQUFLLG1IQUFFLFdBQVcsMEVBQUUsT0FBTyx3YkFBRSxPQUFPLG9GQUFFLGdCQUFnQjs7MkZBRTNILGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0ksbUJBQW1CLGlCQUVkLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDO29GQWE1SCxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVxQixVQUFVO3NCQUFwQyxLQUFLO3VCQUFDLGtCQUFrQjtnQkFFZixlQUFlO3NCQUF4QixNQUFNO2dCQUVHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFFZSxTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnRHJvcCwgQ2RrRHJvcExpc3QsIENka0Ryb3BMaXN0R3JvdXAsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERvQ2hlY2ssXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlQ2hhbmdlcyxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGh5TGlzdCwgVGh5TGlzdEl0ZW0gfSBmcm9tICduZ3gtdGV0aHlzL2xpc3QnO1xuaW1wb3J0IHsgVGh5RHJhZ0Ryb3BEaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBJbm5lclRyYW5zZmVyRHJhZ0V2ZW50LCBUaHlUcmFuc2ZlckRyYWdFdmVudCwgVGh5VHJhbnNmZXJJdGVtLCBUaHlUcmFuc2ZlclNlbGVjdEV2ZW50IH0gZnJvbSAnLi90cmFuc2Zlci5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXRyYW5zZmVyLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmFuc2Zlci1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIENka0Ryb3BMaXN0R3JvdXAsIFRoeUxpc3QsIENka0Ryb3BMaXN0LCBUaHlEcmFnRHJvcERpcmVjdGl2ZSwgTmdGb3IsIFRoeUxpc3RJdGVtLCBDZGtEcmFnLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmFuc2Zlckxpc3QgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICAgIHB1YmxpYyBsb2NrSXRlbXM6IFRoeVRyYW5zZmVySXRlbVtdID0gW107XG5cbiAgICBwdWJsaWMgdW5sb2NrSXRlbXM6IFRoeVRyYW5zZmVySXRlbVtdID0gW107XG5cbiAgICBwcml2YXRlIF9kaWZmOiBJdGVyYWJsZURpZmZlcjxUaHlUcmFuc2Zlckl0ZW0+O1xuXG4gICAgcHJpdmF0ZSBfbG9ja0RpZmY6IEl0ZXJhYmxlRGlmZmVyPFRoeVRyYW5zZmVySXRlbT47XG5cbiAgICBwcml2YXRlIF91bmxvY2tEaWZmOiBJdGVyYWJsZURpZmZlcjxUaHlUcmFuc2Zlckl0ZW0+O1xuXG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGl0ZW1zOiBUaHlUcmFuc2Zlckl0ZW1bXTtcblxuICAgIEBJbnB1dCgpIGRyYWdnYWJsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGNhbkxvY2s6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBtYXhMb2NrOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoJ3JlbmRlckNvbnRlbnRSZWYnKSBjb250ZW50UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQE91dHB1dCgpIGRyYWdnYWJsZVVwZGF0ZTogRXZlbnRFbWl0dGVyPElubmVyVHJhbnNmZXJEcmFnRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJbm5lclRyYW5zZmVyRHJhZ0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIHNlbGVjdEl0ZW06IEV2ZW50RW1pdHRlcjxUaHlUcmFuc2ZlclNlbGVjdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VHJhbnNmZXJTZWxlY3RFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSB1bnNlbGVjdEl0ZW06IEV2ZW50RW1pdHRlcjxUaHlUcmFuc2ZlclNlbGVjdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VHJhbnNmZXJTZWxlY3RFdmVudD4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBob3N0Q2xhc3MgPSAndGh5LXRyYW5zZmVyLWxpc3QnO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5fY29tYmluZVRyYW5zZmVyRGF0YSgpO1xuICAgICAgICBpZiAodGhpcy5jYW5Mb2NrKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2NrRGlmZiA9IHRoaXMuZGlmZmVycy5maW5kKHRoaXMubG9ja0l0ZW1zKS5jcmVhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX3VubG9ja0RpZmYgPSB0aGlzLmRpZmZlcnMuZmluZCh0aGlzLnVubG9ja0l0ZW1zKS5jcmVhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3VubG9ja0RpZmYgPSB0aGlzLmRpZmZlcnMuZmluZCh0aGlzLnVubG9ja0l0ZW1zKS5jcmVhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kaWZmID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5pdGVtcykuY3JlYXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29tYmluZVRyYW5zZmVyRGF0YSgpIHtcbiAgICAgICAgdGhpcy5sb2NrSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy51bmxvY2tJdGVtcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5jYW5Mb2NrKSB7XG4gICAgICAgICAgICAodGhpcy5pdGVtcyB8fCBbXSkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pc0xvY2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NrSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVubG9ja0l0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVubG9ja0l0ZW1zID0gdGhpcy5pdGVtcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2FmdGVyQ2hhbmdlSXRlbXMoY2hhbmdlczogSXRlcmFibGVDaGFuZ2VzPFRoeVRyYW5zZmVySXRlbT4sIGl0ZW1zOiBUaHlUcmFuc2Zlckl0ZW1bXSkge1xuICAgICAgICAvLyDmlbDmja7lj5HnlJ/lj5jljJbml7bvvIzmm7TmlLlvcmRlcuWAvFxuICAgICAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0ocmVjb3JkID0+IHtcbiAgICAgICAgICAgIHJlY29yZC5pdGVtLm9yZGVyID0gcmVjb3JkLmN1cnJlbnRJbmRleDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKCgpID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5vcmRlciA9IGluZGV4O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjaGFuZ2VzLmZvckVhY2hNb3ZlZEl0ZW0oKCkgPT4ge1xuICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLm9yZGVyID0gaW5kZXg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5fZGlmZi5kaWZmKHRoaXMuaXRlbXMpO1xuICAgICAgICBpZiAoY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fYWZ0ZXJDaGFuZ2VJdGVtcyhjaGFuZ2VzLCB0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbWJpbmVUcmFuc2ZlckRhdGEoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fbG9ja0RpZmYpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2tDaGFuZ2VzID0gdGhpcy5fbG9ja0RpZmYuZGlmZih0aGlzLmxvY2tJdGVtcyk7XG4gICAgICAgICAgICBpZiAobG9ja0NoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZnRlckNoYW5nZUl0ZW1zKGxvY2tDaGFuZ2VzLCB0aGlzLmxvY2tJdGVtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdW5sb2NrQ2hhbmdlcyA9IHRoaXMuX3VubG9ja0RpZmYuZGlmZih0aGlzLnVubG9ja0l0ZW1zKTtcbiAgICAgICAgaWYgKHVubG9ja0NoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2FmdGVyQ2hhbmdlSXRlbXModW5sb2NrQ2hhbmdlcywgdGhpcy51bmxvY2tJdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2NrTGlzdEVudGVyUHJlZGljYXRlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NrSXRlbXMubGVuZ3RoIDwgdGhpcy5tYXhMb2NrO1xuICAgIH07XG5cbiAgICB1bmxvY2tMaXN0RW50ZXJQcmVkaWNhdGUgPSAoZXZlbnQ6IENka0RyYWc8VGh5VHJhbnNmZXJJdGVtPikgPT4ge1xuICAgICAgICByZXR1cm4gIWV2ZW50LmRhdGEuaXNGaXhlZDtcbiAgICB9O1xuXG4gICAgb25TZWxlY3RJdGVtID0gKGl0ZW06IFRoeVRyYW5zZmVySXRlbSkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdEl0ZW0uZW1pdCh7IGl0ZW0gfSk7XG4gICAgfTtcblxuICAgIG9uVW5zZWxlY3RJdGVtID0gKGl0ZW06IFRoeVRyYW5zZmVySXRlbSkgPT4ge1xuICAgICAgICB0aGlzLnVuc2VsZWN0SXRlbS5lbWl0KHsgaXRlbSB9KTtcbiAgICB9O1xuXG4gICAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8VGh5VHJhbnNmZXJJdGVtW10+KSB7XG4gICAgICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIChldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhIHx8IFtdKS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNMb2NrID0gZXZlbnQucHJldmlvdXNDb250YWluZXIuaWQgPT09ICdsb2NrJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAoZXZlbnQuY29udGFpbmVyLmRhdGEgfHwgW10pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0xvY2sgPSBldmVudC5jb250YWluZXIuaWQgPT09ICdsb2NrJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRyYWdFdmVudDogVGh5VHJhbnNmZXJEcmFnRXZlbnQgPSB7XG4gICAgICAgICAgICBtb2RlbDogZXZlbnQuaXRlbS5kYXRhLFxuICAgICAgICAgICAgbW9kZWxzOiBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgIG9sZEluZGV4OiBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICAgICAgbmV3SW5kZXg6IGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRyYWdnYWJsZVVwZGF0ZS5lbWl0KHtcbiAgICAgICAgICAgIGRyYWdFdmVudDogZHJhZ0V2ZW50LFxuICAgICAgICAgICAgbGlzdERhdGE6IHsgbG9jazogdGhpcy5sb2NrSXRlbXMsIHVubG9jazogdGhpcy51bmxvY2tJdGVtcyB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0aHktdHJhbnNmZXItbGlzdC1oZWFkZXJcIj5cbiAgPHNwYW4gY2xhc3M9XCJ0aHktdHJhbnNmZXItbGlzdC1oZWFkZXItdGl0bGVcIlxuICAgID57eyB0aXRsZSB9fSDCtyB7eyBpdGVtcz8ubGVuZ3RoIH19PHNwYW4gKm5nSWY9XCJtYXhcIj4gKOS4iumZkHt7IG1heCB9feS4qik8L3NwYW4+PC9zcGFuXG4gID5cbjwvZGl2PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb250ZW50UmVmOyBlbHNlIHJlbmRlckNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cInRoeS10cmFuc2Zlci1saXN0LWJvZHlcIiBjZGtEcm9wTGlzdEdyb3VwIFtjZGtEcm9wTGlzdEdyb3VwRGlzYWJsZWRdPVwiIWRyYWdnYWJsZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5Mb2NrXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGh5LXRyYW5zZmVyLWxpc3QtZ3JvdXAtbmFtZVwiPumUgeWumiAo5LiK6ZmQe3sgbWF4TG9jayB9feS4qik8L2Rpdj5cbiAgICAgIDx0aHktbGlzdFxuICAgICAgICBjbGFzcz1cInRoeS10cmFuc2Zlci1saXN0LWNvbnRlbnRcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICB0aHlEcmFnRHJvcFxuICAgICAgICBpZD1cImxvY2tcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImxvY2tJdGVtc1wiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwibG9ja0xpc3RFbnRlclByZWRpY2F0ZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjZGstZHJvcC1saXN0LWVtcHR5XCIgKm5nSWY9XCJsb2NrSXRlbXMubGVuZ3RoID09PSAwXCI+PC9kaXY+XG4gICAgICAgIDx0aHktbGlzdC1pdGVtXG4gICAgICAgICAgY2xhc3M9XCJ0aHktdHJhbnNmZXItbGlzdC1jb250ZW50LWl0ZW0gdGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJpdGVtXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsb2NrSXRlbXNcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpdGVtLmNoZWNrZWQgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGh5LWxpc3QtaXRlbT5cbiAgICAgIDwvdGh5LWxpc3Q+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aHktdHJhbnNmZXItbGlzdC1ncm91cC1uYW1lXCI+5pyq6ZSB5a6aPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPHRoeS1saXN0XG4gICAgICBjbGFzcz1cInRoeS10cmFuc2Zlci1saXN0LWNvbnRlbnRcIlxuICAgICAgY2RrRHJvcExpc3RcbiAgICAgIHRoeURyYWdEcm9wXG4gICAgICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhZHJhZ2dhYmxlXCJcbiAgICAgIGlkPVwidW5sb2NrXCJcbiAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwidW5sb2NrSXRlbXNcIlxuICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwidW5sb2NrTGlzdEVudGVyUHJlZGljYXRlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2RrLWRyb3AtbGlzdC1lbXB0eVwiICpuZ0lmPVwidW5sb2NrSXRlbXMubGVuZ3RoID09PSAwXCI+PC9kaXY+XG4gICAgICA8dGh5LWxpc3QtaXRlbVxuICAgICAgICBjbGFzcz1cInRoeS10cmFuc2Zlci1saXN0LWNvbnRlbnQtaXRlbSB0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgY2RrRHJhZ1xuICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiaXRlbVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHVubG9ja0l0ZW1zXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGl0ZW0uY2hlY2tlZCwgZGlzYWJsZWQ6IGRpc2FibGVkICYmIGl0ZW0uZGlyZWN0aW9uID09PSAnbGVmdCcgfVwiXG4gICAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvdGh5LWxpc3QtaXRlbT5cbiAgICA8L3RoeS1saXN0PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3JlbmRlckNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJ0aHktdHJhbnNmZXItbGlzdC1ib2R5XCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgY29udGVudFJlZjtcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICRpbXBsaWNpdDogaXRlbXMsXG4gICAgICAgICAgb25TZWxlY3RJdGVtOiBvblNlbGVjdEl0ZW0sXG4gICAgICAgICAgb25VbnNlbGVjdEl0ZW06IG9uVW5zZWxlY3RJdGVtXG4gICAgICAgIH1cbiAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJhbnNmZXIvdHJhbnNmZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvdHJhbnNmZXIvdHJhbnNmZXItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqSSxPQUFPLEVBQ0gsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUdMLGVBQWUsRUFFZixNQUFNLEVBQ04sV0FBVyxFQUNYLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUd6RDs7R0FFRztBQVFILE1BQU0sT0FBTyxlQUFlO0lBcUN4QixZQUFvQixPQUF3QjtRQUF4QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQXBDckMsY0FBUyxHQUFzQixFQUFFLENBQUM7UUFFbEMsZ0JBQVcsR0FBc0IsRUFBRSxDQUFDO1FBMEJqQyxvQkFBZSxHQUF5QyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUVuRyxlQUFVLEdBQXlDLElBQUksWUFBWSxFQUEwQixDQUFDO1FBRTlGLGlCQUFZLEdBQXlDLElBQUksWUFBWSxFQUEwQixDQUFDO1FBRXBGLGNBQVMsR0FBRyxtQkFBbUIsQ0FBQztRQWtFdEQsMkJBQXNCLEdBQUcsR0FBRyxFQUFFO1lBQzFCLE9B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T0FBTyw2RUFBRSxXQUFXLDhmQUFFLG9CQUFvQiwwREFBRSxLQUFLLG1IQUFFLFdBQVcsMEVBQUUsT0FBTyx3Y0FBRSxPQUFPLG9GQUFFLGdCQUFnQjs7MkZBRTNILGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0ksbUJBQW1CLGlCQUVkLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDO29GQWE1SCxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVxQixVQUFVO3NCQUFwQyxLQUFLO3VCQUFDLGtCQUFrQjtnQkFFZixlQUFlO3NCQUF4QixNQUFNO2dCQUVHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFFZSxTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnRHJvcCwgQ2RrRHJvcExpc3QsIENka0Ryb3BMaXN0R3JvdXAsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERvQ2hlY2ssXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlQ2hhbmdlcyxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGh5TGlzdCwgVGh5TGlzdEl0ZW0gfSBmcm9tICduZ3gtdGV0aHlzL2xpc3QnO1xuaW1wb3J0IHsgVGh5RHJhZ0Ryb3BEaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBJbm5lclRyYW5zZmVyRHJhZ0V2ZW50LCBUaHlUcmFuc2ZlckRyYWdFdmVudCwgVGh5VHJhbnNmZXJJdGVtLCBUaHlUcmFuc2ZlclNlbGVjdEV2ZW50IH0gZnJvbSAnLi90cmFuc2Zlci5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXRyYW5zZmVyLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmFuc2Zlci1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIENka0Ryb3BMaXN0R3JvdXAsIFRoeUxpc3QsIENka0Ryb3BMaXN0LCBUaHlEcmFnRHJvcERpcmVjdGl2ZSwgTmdGb3IsIFRoeUxpc3RJdGVtLCBDZGtEcmFnLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmFuc2Zlckxpc3QgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICAgIHB1YmxpYyBsb2NrSXRlbXM6IFRoeVRyYW5zZmVySXRlbVtdID0gW107XG5cbiAgICBwdWJsaWMgdW5sb2NrSXRlbXM6IFRoeVRyYW5zZmVySXRlbVtdID0gW107XG5cbiAgICBwcml2YXRlIF9kaWZmOiBJdGVyYWJsZURpZmZlcjxUaHlUcmFuc2Zlckl0ZW0+O1xuXG4gICAgcHJpdmF0ZSBfbG9ja0RpZmY6IEl0ZXJhYmxlRGlmZmVyPFRoeVRyYW5zZmVySXRlbT47XG5cbiAgICBwcml2YXRlIF91bmxvY2tEaWZmOiBJdGVyYWJsZURpZmZlcjxUaHlUcmFuc2Zlckl0ZW0+O1xuXG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGl0ZW1zOiBUaHlUcmFuc2Zlckl0ZW1bXTtcblxuICAgIEBJbnB1dCgpIGRyYWdnYWJsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGNhbkxvY2s6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBtYXhMb2NrOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoJ3JlbmRlckNvbnRlbnRSZWYnKSBjb250ZW50UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQE91dHB1dCgpIGRyYWdnYWJsZVVwZGF0ZTogRXZlbnRFbWl0dGVyPElubmVyVHJhbnNmZXJEcmFnRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJbm5lclRyYW5zZmVyRHJhZ0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIHNlbGVjdEl0ZW06IEV2ZW50RW1pdHRlcjxUaHlUcmFuc2ZlclNlbGVjdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VHJhbnNmZXJTZWxlY3RFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSB1bnNlbGVjdEl0ZW06IEV2ZW50RW1pdHRlcjxUaHlUcmFuc2ZlclNlbGVjdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VHJhbnNmZXJTZWxlY3RFdmVudD4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBob3N0Q2xhc3MgPSAndGh5LXRyYW5zZmVyLWxpc3QnO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5fY29tYmluZVRyYW5zZmVyRGF0YSgpO1xuICAgICAgICBpZiAodGhpcy5jYW5Mb2NrKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2NrRGlmZiA9IHRoaXMuZGlmZmVycy5maW5kKHRoaXMubG9ja0l0ZW1zKS5jcmVhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX3VubG9ja0RpZmYgPSB0aGlzLmRpZmZlcnMuZmluZCh0aGlzLnVubG9ja0l0ZW1zKS5jcmVhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3VubG9ja0RpZmYgPSB0aGlzLmRpZmZlcnMuZmluZCh0aGlzLnVubG9ja0l0ZW1zKS5jcmVhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kaWZmID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5pdGVtcykuY3JlYXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29tYmluZVRyYW5zZmVyRGF0YSgpIHtcbiAgICAgICAgdGhpcy5sb2NrSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy51bmxvY2tJdGVtcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5jYW5Mb2NrKSB7XG4gICAgICAgICAgICAodGhpcy5pdGVtcyB8fCBbXSkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pc0xvY2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NrSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVubG9ja0l0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVubG9ja0l0ZW1zID0gdGhpcy5pdGVtcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2FmdGVyQ2hhbmdlSXRlbXMoY2hhbmdlczogSXRlcmFibGVDaGFuZ2VzPFRoeVRyYW5zZmVySXRlbT4sIGl0ZW1zOiBUaHlUcmFuc2Zlckl0ZW1bXSkge1xuICAgICAgICAvLyDmlbDmja7lj5HnlJ/lj5jljJbml7bvvIzmm7TmlLlvcmRlcuWAvFxuICAgICAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0ocmVjb3JkID0+IHtcbiAgICAgICAgICAgIHJlY29yZC5pdGVtLm9yZGVyID0gcmVjb3JkLmN1cnJlbnRJbmRleDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKCgpID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5vcmRlciA9IGluZGV4O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjaGFuZ2VzLmZvckVhY2hNb3ZlZEl0ZW0oKCkgPT4ge1xuICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLm9yZGVyID0gaW5kZXg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5fZGlmZi5kaWZmKHRoaXMuaXRlbXMpO1xuICAgICAgICBpZiAoY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fYWZ0ZXJDaGFuZ2VJdGVtcyhjaGFuZ2VzLCB0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbWJpbmVUcmFuc2ZlckRhdGEoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fbG9ja0RpZmYpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2tDaGFuZ2VzID0gdGhpcy5fbG9ja0RpZmYuZGlmZih0aGlzLmxvY2tJdGVtcyk7XG4gICAgICAgICAgICBpZiAobG9ja0NoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZnRlckNoYW5nZUl0ZW1zKGxvY2tDaGFuZ2VzLCB0aGlzLmxvY2tJdGVtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdW5sb2NrQ2hhbmdlcyA9IHRoaXMuX3VubG9ja0RpZmYuZGlmZih0aGlzLnVubG9ja0l0ZW1zKTtcbiAgICAgICAgaWYgKHVubG9ja0NoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2FmdGVyQ2hhbmdlSXRlbXModW5sb2NrQ2hhbmdlcywgdGhpcy51bmxvY2tJdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2NrTGlzdEVudGVyUHJlZGljYXRlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NrSXRlbXMubGVuZ3RoIDwgdGhpcy5tYXhMb2NrO1xuICAgIH07XG5cbiAgICB1bmxvY2tMaXN0RW50ZXJQcmVkaWNhdGUgPSAoZXZlbnQ6IENka0RyYWc8VGh5VHJhbnNmZXJJdGVtPikgPT4ge1xuICAgICAgICByZXR1cm4gIWV2ZW50LmRhdGEuaXNGaXhlZDtcbiAgICB9O1xuXG4gICAgb25TZWxlY3RJdGVtID0gKGl0ZW06IFRoeVRyYW5zZmVySXRlbSkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdEl0ZW0uZW1pdCh7IGl0ZW0gfSk7XG4gICAgfTtcblxuICAgIG9uVW5zZWxlY3RJdGVtID0gKGl0ZW06IFRoeVRyYW5zZmVySXRlbSkgPT4ge1xuICAgICAgICB0aGlzLnVuc2VsZWN0SXRlbS5lbWl0KHsgaXRlbSB9KTtcbiAgICB9O1xuXG4gICAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8VGh5VHJhbnNmZXJJdGVtW10+KSB7XG4gICAgICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIChldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhIHx8IFtdKS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNMb2NrID0gZXZlbnQucHJldmlvdXNDb250YWluZXIuaWQgPT09ICdsb2NrJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAoZXZlbnQuY29udGFpbmVyLmRhdGEgfHwgW10pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0xvY2sgPSBldmVudC5jb250YWluZXIuaWQgPT09ICdsb2NrJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRyYWdFdmVudDogVGh5VHJhbnNmZXJEcmFnRXZlbnQgPSB7XG4gICAgICAgICAgICBtb2RlbDogZXZlbnQuaXRlbS5kYXRhLFxuICAgICAgICAgICAgbW9kZWxzOiBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgIG9sZEluZGV4OiBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICAgICAgbmV3SW5kZXg6IGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRyYWdnYWJsZVVwZGF0ZS5lbWl0KHtcbiAgICAgICAgICAgIGRyYWdFdmVudDogZHJhZ0V2ZW50LFxuICAgICAgICAgICAgbGlzdERhdGE6IHsgbG9jazogdGhpcy5sb2NrSXRlbXMsIHVubG9jazogdGhpcy51bmxvY2tJdGVtcyB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0aHktdHJhbnNmZXItbGlzdC1oZWFkZXJcIj5cbiAgPHNwYW4gY2xhc3M9XCJ0aHktdHJhbnNmZXItbGlzdC1oZWFkZXItdGl0bGVcIlxuICAgID57eyB0aXRsZSB9fSDCtyB7eyBpdGVtcz8ubGVuZ3RoIH19PHNwYW4gKm5nSWY9XCJtYXhcIj4gKOS4iumZkHt7IG1heCB9feS4qik8L3NwYW4+PC9zcGFuXG4gID5cbjwvZGl2PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb250ZW50UmVmOyBlbHNlIHJlbmRlckNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cInRoeS10cmFuc2Zlci1saXN0LWJvZHlcIiBjZGtEcm9wTGlzdEdyb3VwIFtjZGtEcm9wTGlzdEdyb3VwRGlzYWJsZWRdPVwiIWRyYWdnYWJsZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5Mb2NrXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGh5LXRyYW5zZmVyLWxpc3QtZ3JvdXAtbmFtZVwiPumUgeWumiAo5LiK6ZmQe3sgbWF4TG9jayB9feS4qik8L2Rpdj5cbiAgICAgIDx0aHktbGlzdFxuICAgICAgICBjbGFzcz1cInRoeS10cmFuc2Zlci1saXN0LWNvbnRlbnRcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICB0aHlEcmFnRHJvcFxuICAgICAgICBpZD1cImxvY2tcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImxvY2tJdGVtc1wiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwibG9ja0xpc3RFbnRlclByZWRpY2F0ZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjZGstZHJvcC1saXN0LWVtcHR5XCIgKm5nSWY9XCJsb2NrSXRlbXMubGVuZ3RoID09PSAwXCI+PC9kaXY+XG4gICAgICAgIDx0aHktbGlzdC1pdGVtXG4gICAgICAgICAgY2xhc3M9XCJ0aHktdHJhbnNmZXItbGlzdC1jb250ZW50LWl0ZW0gdGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJpdGVtXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsb2NrSXRlbXNcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpdGVtLmNoZWNrZWQgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGh5LWxpc3QtaXRlbT5cbiAgICAgIDwvdGh5LWxpc3Q+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aHktdHJhbnNmZXItbGlzdC1ncm91cC1uYW1lXCI+5pyq6ZSB5a6aPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPHRoeS1saXN0XG4gICAgICBjbGFzcz1cInRoeS10cmFuc2Zlci1saXN0LWNvbnRlbnRcIlxuICAgICAgY2RrRHJvcExpc3RcbiAgICAgIHRoeURyYWdEcm9wXG4gICAgICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhZHJhZ2dhYmxlXCJcbiAgICAgIGlkPVwidW5sb2NrXCJcbiAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwidW5sb2NrSXRlbXNcIlxuICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwidW5sb2NrTGlzdEVudGVyUHJlZGljYXRlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2RrLWRyb3AtbGlzdC1lbXB0eVwiICpuZ0lmPVwidW5sb2NrSXRlbXMubGVuZ3RoID09PSAwXCI+PC9kaXY+XG4gICAgICA8dGh5LWxpc3QtaXRlbVxuICAgICAgICBjbGFzcz1cInRoeS10cmFuc2Zlci1saXN0LWNvbnRlbnQtaXRlbSB0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgY2RrRHJhZ1xuICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiaXRlbVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHVubG9ja0l0ZW1zXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGl0ZW0uY2hlY2tlZCwgZGlzYWJsZWQ6IGRpc2FibGVkICYmIGl0ZW0uZGlyZWN0aW9uID09PSAnbGVmdCcgfVwiXG4gICAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvdGh5LWxpc3QtaXRlbT5cbiAgICA8L3RoeS1saXN0PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3JlbmRlckNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJ0aHktdHJhbnNmZXItbGlzdC1ib2R5XCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgY29udGVudFJlZjtcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICRpbXBsaWNpdDogaXRlbXMsXG4gICAgICAgICAgb25TZWxlY3RJdGVtOiBvblNlbGVjdEl0ZW0sXG4gICAgICAgICAgb25VbnNlbGVjdEl0ZW06IG9uVW5zZWxlY3RJdGVtXG4gICAgICAgIH1cbiAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -134,10 +134,10 @@ export class ThyTransfer {
134
134
  ? [...event.listData.lock, ...event.listData.unlock]
135
135
  : [...otherListData.lock, ...otherListData.unlock];
136
136
  }
137
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTransfer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
138
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: ThyTransfer, isStandalone: true, selector: "thy-transfer", inputs: { thyData: "thyData", thyrenderLeftTemplateRef: "thyrenderLeftTemplateRef", thyrenderRightTemplateRef: "thyrenderRightTemplateRef", thyTitles: "thyTitles", thyRightCanLock: "thyRightCanLock", thyRightLockMax: "thyRightLockMax", thyRightMax: "thyRightMax", thyAutoMove: "thyAutoMove", thyLeftDraggable: "thyLeftDraggable", thyRightDraggable: "thyRightDraggable" }, outputs: { thyDraggableUpdate: "thyDraggableUpdate", thyChange: "thyChange" }, host: { properties: { "class": "this.hostClass" } }, queries: [{ propertyName: "templateRef", first: true, predicate: ["renderTemplate"], descendants: true }, { propertyName: "leftContentRef", first: true, predicate: ["renderLeftTemplate"], descendants: true }, { propertyName: "rightContentRef", first: true, predicate: ["renderRightTemplate"], descendants: true }], ngImport: i0, template: "<thy-transfer-list\n [items]=\"allDataSource\"\n [title]=\"leftTitle\"\n [draggable]=\"thyLeftDraggable\"\n [disabled]=\"thyRightMax <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n>\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n <ng-container *ngIf=\"thyLeftDraggable\">\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n </ng-container>\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n <thy-icon *ngIf=\"item.direction === 'right'\" class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle\"\n [draggable]=\"thyRightDraggable\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock\"\n [maxLock]=\"thyRightLockMax\"\n [max]=\"thyRightMax\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n>\n <ng-template #rightTemplateRef let-item>\n <ng-container *ngIf=\"thyRightDraggable\">\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n </ng-container>\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n <a class=\"link-secondary\" *ngIf=\"item.direction === 'right' && !item.isFixed\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n <ng-template *ngIf=\"templateRef\" [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n <ng-container *ngIf=\"!templateRef\">\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n </ng-container>\n</ng-template>\n", dependencies: [{ kind: "component", type: ThyTransferList, selector: "thy-transfer-list", inputs: ["title", "items", "draggable", "canLock", "maxLock", "max", "disabled", "template", "renderContentRef"], outputs: ["draggableUpdate", "selectItem", "unselectItem"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyFlexibleText, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }], encapsulation: i0.ViewEncapsulation.None }); }
137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTransfer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
138
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: ThyTransfer, isStandalone: true, selector: "thy-transfer", inputs: { thyData: "thyData", thyrenderLeftTemplateRef: "thyrenderLeftTemplateRef", thyrenderRightTemplateRef: "thyrenderRightTemplateRef", thyTitles: "thyTitles", thyRightCanLock: "thyRightCanLock", thyRightLockMax: "thyRightLockMax", thyRightMax: "thyRightMax", thyAutoMove: "thyAutoMove", thyLeftDraggable: "thyLeftDraggable", thyRightDraggable: "thyRightDraggable" }, outputs: { thyDraggableUpdate: "thyDraggableUpdate", thyChange: "thyChange" }, host: { properties: { "class": "this.hostClass" } }, queries: [{ propertyName: "templateRef", first: true, predicate: ["renderTemplate"], descendants: true }, { propertyName: "leftContentRef", first: true, predicate: ["renderLeftTemplate"], descendants: true }, { propertyName: "rightContentRef", first: true, predicate: ["renderRightTemplate"], descendants: true }], ngImport: i0, template: "<thy-transfer-list\n [items]=\"allDataSource\"\n [title]=\"leftTitle\"\n [draggable]=\"thyLeftDraggable\"\n [disabled]=\"thyRightMax <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n>\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n <ng-container *ngIf=\"thyLeftDraggable\">\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n </ng-container>\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n <thy-icon *ngIf=\"item.direction === 'right'\" class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle\"\n [draggable]=\"thyRightDraggable\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock\"\n [maxLock]=\"thyRightLockMax\"\n [max]=\"thyRightMax\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n>\n <ng-template #rightTemplateRef let-item>\n <ng-container *ngIf=\"thyRightDraggable\">\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n </ng-container>\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n <a class=\"link-secondary\" *ngIf=\"item.direction === 'right' && !item.isFixed\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n <ng-template *ngIf=\"templateRef\" [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n <ng-container *ngIf=\"!templateRef\">\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n </ng-container>\n</ng-template>\n", dependencies: [{ kind: "component", type: ThyTransferList, selector: "thy-transfer-list", inputs: ["title", "items", "draggable", "canLock", "maxLock", "max", "disabled", "template", "renderContentRef"], outputs: ["draggableUpdate", "selectItem", "unselectItem"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyFlexibleText, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }], encapsulation: i0.ViewEncapsulation.None }); }
139
139
  }
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTransfer, decorators: [{
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTransfer, decorators: [{
141
141
  type: Component,
142
142
  args: [{ selector: 'thy-transfer', encapsulation: ViewEncapsulation.None, standalone: true, imports: [ThyTransferList, NgIf, ThyIcon, NgClass, NgTemplateOutlet, ThyFlexibleText], template: "<thy-transfer-list\n [items]=\"allDataSource\"\n [title]=\"leftTitle\"\n [draggable]=\"thyLeftDraggable\"\n [disabled]=\"thyRightMax <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n>\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n <ng-container *ngIf=\"thyLeftDraggable\">\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n </ng-container>\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n <thy-icon *ngIf=\"item.direction === 'right'\" class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle\"\n [draggable]=\"thyRightDraggable\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock\"\n [maxLock]=\"thyRightLockMax\"\n [max]=\"thyRightMax\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n>\n <ng-template #rightTemplateRef let-item>\n <ng-container *ngIf=\"thyRightDraggable\">\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n </ng-container>\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n <a class=\"link-secondary\" *ngIf=\"item.direction === 'right' && !item.isFixed\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n <ng-template *ngIf=\"templateRef\" [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n <ng-container *ngIf=\"!templateRef\">\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n </ng-container>\n</ng-template>\n" }]
143
143
  }], propDecorators: { hostClass: [{
@@ -10,8 +10,8 @@ import { ThySharedModule } from 'ngx-tethys/shared';
10
10
  import { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';
11
11
  import * as i0 from "@angular/core";
12
12
  export class ThyTransferModule {
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTransferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.4", ngImport: i0, type: ThyTransferModule, imports: [CommonModule,
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTransferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: ThyTransferModule, imports: [CommonModule,
15
15
  ThyButtonModule,
16
16
  DragDropModule,
17
17
  ThyIconModule,
@@ -20,7 +20,7 @@ export class ThyTransferModule {
20
20
  ThyFlexibleTextModule,
21
21
  ThyTransfer,
22
22
  ThyTransferList], exports: [ThyTransfer] }); }
23
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTransferModule, imports: [CommonModule,
23
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTransferModule, imports: [CommonModule,
24
24
  ThyButtonModule,
25
25
  DragDropModule,
26
26
  ThyIconModule,
@@ -30,7 +30,7 @@ export class ThyTransferModule {
30
30
  ThyTransfer,
31
31
  ThyTransferList] }); }
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTransferModule, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTransferModule, decorators: [{
34
34
  type: NgModule,
35
35
  args: [{
36
36
  imports: [
@@ -154,10 +154,10 @@ export class ThyTreeNodeComponent {
154
154
  this.destroy$.next();
155
155
  this.destroy$.complete();
156
156
  }
157
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTreeNodeComponent, deps: [{ token: THY_TREE_ABSTRACT_TOKEN }, { token: i1.ThyTreeService }], target: i0.ɵɵFactoryTarget.Component }); }
158
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.1.4", type: ThyTreeNodeComponent, isStandalone: true, selector: "thy-tree-node", inputs: { node: "node", thyAsync: ["thyAsync", "thyAsync", coerceBooleanProperty], thyMultiple: ["thyMultiple", "thyMultiple", coerceBooleanProperty], thyDraggable: ["thyDraggable", "thyDraggable", coerceBooleanProperty], thyCheckable: ["thyCheckable", "thyCheckable", coerceBooleanProperty], thyClickBehavior: "thyClickBehavior", thyTitleTruncate: ["thyTitleTruncate", "thyTitleTruncate", coerceBooleanProperty], templateRef: "templateRef", emptyChildrenTemplateRef: "emptyChildrenTemplateRef", thyItemSize: ["thyItemSize", "thyItemSize", numberAttribute], thyIndent: ["thyIndent", "thyIndent", numberAttribute] }, outputs: { thyOnClick: "thyOnClick", thyDblClick: "thyDblClick", thyOnExpandChange: "thyOnExpandChange", thyOnCheckboxChange: "thyOnCheckboxChange" }, host: { properties: { "class.thy-tree-node": "this.thyTreeNodeClass", "class": "this.itemClass" } }, queries: [{ propertyName: "childrenTreeTemplateRef", first: true, predicate: ["childrenTree"], descendants: true }], viewQueries: [{ propertyName: "treeNodeWrapper", first: true, predicate: ["treeNodeWrapper"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #treeNodeWrapper\n class=\"thy-tree-node-wrapper\"\n [class.active]=\"root.isSelected(node)\"\n [class.disabled]=\"node.isDisabled\"\n [class.expand]=\"node.children.length\"\n [style.height]=\"thyItemSize + 'px'\"\n (click)=\"clickNode($event)\"\n>\n <span class=\"thy-tree-index\" [style.width.px]=\"node.level * thyIndent\"></span>\n <span class=\"thy-tree-drag-icon\">\n <thy-icon thyIconName=\"drag\"></thy-icon>\n </span>\n <span class=\"thy-tree-expand\" (click)=\"expandNode($event)\">\n <ng-container *ngIf=\"isShowExpand(node)\">\n <ng-container *ngIf=\"(node.children && node.children.length > 0) || thyAsync || emptyChildrenTemplateRef\">\n <thy-icon\n *ngIf=\"root.thyIcons?.expand && root.thyIcons?.collapse; else defaultIcon\"\n class=\"thy-tree-expand-icon\"\n [thyIconName]=\"node.isExpanded ? root.thyIcons.expand : root.thyIcons.collapse\"\n ></thy-icon>\n <ng-template #defaultIcon>\n <thy-icon class=\"thy-tree-expand-icon\" [class.collapse]=\"!node.isExpanded\" thyIconName=\"caret-right-down\"></thy-icon>\n </ng-template>\n </ng-container>\n </ng-container>\n </span>\n\n <span class=\"thy-tree-node-content\" (dblclick)=\"dbClickNode($event)\">\n <input\n *ngIf=\"thyCheckable\"\n type=\"checkbox\"\n class=\"thy-tree-node-check\"\n [class.form-check-indeterminate]=\"node.isChecked === checkState.indeterminate\"\n [class.form-unchecked]=\"node.isChecked === checkState.unchecked\"\n [checked]=\"node.isChecked === checkState.checked\"\n [disabled]=\"node.isDisabled\"\n (click)=\"clickNodeCheck($event)\"\n />\n <ng-container *ngIf=\"!templateRef\">\n <ng-container *ngIf=\"nodeIcon\">\n <span class=\"thy-tree-node-icon\"> <i [ngClass]=\"nodeIcon\" [ngStyle]=\"nodeIconStyle\"></i></span>\n </ng-container>\n <span [title]=\"node.title\" class=\"thy-tree-node-title\" [class.truncate]=\"thyTitleTruncate\"> {{ node.title }}</span>\n </ng-container>\n <ng-container *ngIf=\"templateRef\">\n <ng-template\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: node, node: node, origin: node?.origin }\"\n ></ng-template>\n </ng-container>\n </span>\n</div>\n<ng-container *ngIf=\"thyAsync\">\n <thy-loading *ngIf=\"node.isLoading\" [thyDone]=\"!node.isLoading\"></thy-loading>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyLoading, selector: "thy-loading", inputs: ["thyDone", "thyTip", "thyIsMask"] }], encapsulation: i0.ViewEncapsulation.None }); }
157
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTreeNodeComponent, deps: [{ token: THY_TREE_ABSTRACT_TOKEN }, { token: i1.ThyTreeService }], target: i0.ɵɵFactoryTarget.Component }); }
158
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0", type: ThyTreeNodeComponent, isStandalone: true, selector: "thy-tree-node", inputs: { node: "node", thyAsync: ["thyAsync", "thyAsync", coerceBooleanProperty], thyMultiple: ["thyMultiple", "thyMultiple", coerceBooleanProperty], thyDraggable: ["thyDraggable", "thyDraggable", coerceBooleanProperty], thyCheckable: ["thyCheckable", "thyCheckable", coerceBooleanProperty], thyClickBehavior: "thyClickBehavior", thyTitleTruncate: ["thyTitleTruncate", "thyTitleTruncate", coerceBooleanProperty], templateRef: "templateRef", emptyChildrenTemplateRef: "emptyChildrenTemplateRef", thyItemSize: ["thyItemSize", "thyItemSize", numberAttribute], thyIndent: ["thyIndent", "thyIndent", numberAttribute] }, outputs: { thyOnClick: "thyOnClick", thyDblClick: "thyDblClick", thyOnExpandChange: "thyOnExpandChange", thyOnCheckboxChange: "thyOnCheckboxChange" }, host: { properties: { "class.thy-tree-node": "this.thyTreeNodeClass", "class": "this.itemClass" } }, queries: [{ propertyName: "childrenTreeTemplateRef", first: true, predicate: ["childrenTree"], descendants: true }], viewQueries: [{ propertyName: "treeNodeWrapper", first: true, predicate: ["treeNodeWrapper"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #treeNodeWrapper\n class=\"thy-tree-node-wrapper\"\n [class.active]=\"root.isSelected(node)\"\n [class.disabled]=\"node.isDisabled\"\n [class.expand]=\"node.children.length\"\n [style.height]=\"thyItemSize + 'px'\"\n (click)=\"clickNode($event)\"\n>\n <span class=\"thy-tree-index\" [style.width.px]=\"node.level * thyIndent\"></span>\n <span class=\"thy-tree-drag-icon\">\n <thy-icon thyIconName=\"drag\"></thy-icon>\n </span>\n <span class=\"thy-tree-expand\" (click)=\"expandNode($event)\">\n <ng-container *ngIf=\"isShowExpand(node)\">\n <ng-container *ngIf=\"(node.children && node.children.length > 0) || thyAsync || emptyChildrenTemplateRef\">\n <thy-icon\n *ngIf=\"root.thyIcons?.expand && root.thyIcons?.collapse; else defaultIcon\"\n class=\"thy-tree-expand-icon\"\n [thyIconName]=\"node.isExpanded ? root.thyIcons.expand : root.thyIcons.collapse\"\n ></thy-icon>\n <ng-template #defaultIcon>\n <thy-icon class=\"thy-tree-expand-icon\" [class.collapse]=\"!node.isExpanded\" thyIconName=\"caret-right-down\"></thy-icon>\n </ng-template>\n </ng-container>\n </ng-container>\n </span>\n\n <span class=\"thy-tree-node-content\" (dblclick)=\"dbClickNode($event)\">\n <input\n *ngIf=\"thyCheckable\"\n type=\"checkbox\"\n class=\"thy-tree-node-check\"\n [class.form-check-indeterminate]=\"node.isChecked === checkState.indeterminate\"\n [class.form-unchecked]=\"node.isChecked === checkState.unchecked\"\n [checked]=\"node.isChecked === checkState.checked\"\n [disabled]=\"node.isDisabled\"\n (click)=\"clickNodeCheck($event)\"\n />\n <ng-container *ngIf=\"!templateRef\">\n <ng-container *ngIf=\"nodeIcon\">\n <span class=\"thy-tree-node-icon\"> <i [ngClass]=\"nodeIcon\" [ngStyle]=\"nodeIconStyle\"></i></span>\n </ng-container>\n <span [title]=\"node.title\" class=\"thy-tree-node-title\" [class.truncate]=\"thyTitleTruncate\"> {{ node.title }}</span>\n </ng-container>\n <ng-container *ngIf=\"templateRef\">\n <ng-template\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: node, node: node, origin: node?.origin }\"\n ></ng-template>\n </ng-container>\n </span>\n</div>\n<ng-container *ngIf=\"thyAsync\">\n <thy-loading *ngIf=\"node.isLoading\" [thyDone]=\"!node.isLoading\"></thy-loading>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyLoading, selector: "thy-loading", inputs: ["thyDone", "thyTip", "thyIsMask"] }], encapsulation: i0.ViewEncapsulation.None }); }
159
159
  }
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ThyTreeNodeComponent, decorators: [{
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTreeNodeComponent, decorators: [{
161
161
  type: Component,
162
162
  args: [{ selector: 'thy-tree-node', encapsulation: ViewEncapsulation.None, standalone: true, imports: [NgIf, ThyIcon, NgClass, NgStyle, NgTemplateOutlet, ThyLoading], template: "<div\n #treeNodeWrapper\n class=\"thy-tree-node-wrapper\"\n [class.active]=\"root.isSelected(node)\"\n [class.disabled]=\"node.isDisabled\"\n [class.expand]=\"node.children.length\"\n [style.height]=\"thyItemSize + 'px'\"\n (click)=\"clickNode($event)\"\n>\n <span class=\"thy-tree-index\" [style.width.px]=\"node.level * thyIndent\"></span>\n <span class=\"thy-tree-drag-icon\">\n <thy-icon thyIconName=\"drag\"></thy-icon>\n </span>\n <span class=\"thy-tree-expand\" (click)=\"expandNode($event)\">\n <ng-container *ngIf=\"isShowExpand(node)\">\n <ng-container *ngIf=\"(node.children && node.children.length > 0) || thyAsync || emptyChildrenTemplateRef\">\n <thy-icon\n *ngIf=\"root.thyIcons?.expand && root.thyIcons?.collapse; else defaultIcon\"\n class=\"thy-tree-expand-icon\"\n [thyIconName]=\"node.isExpanded ? root.thyIcons.expand : root.thyIcons.collapse\"\n ></thy-icon>\n <ng-template #defaultIcon>\n <thy-icon class=\"thy-tree-expand-icon\" [class.collapse]=\"!node.isExpanded\" thyIconName=\"caret-right-down\"></thy-icon>\n </ng-template>\n </ng-container>\n </ng-container>\n </span>\n\n <span class=\"thy-tree-node-content\" (dblclick)=\"dbClickNode($event)\">\n <input\n *ngIf=\"thyCheckable\"\n type=\"checkbox\"\n class=\"thy-tree-node-check\"\n [class.form-check-indeterminate]=\"node.isChecked === checkState.indeterminate\"\n [class.form-unchecked]=\"node.isChecked === checkState.unchecked\"\n [checked]=\"node.isChecked === checkState.checked\"\n [disabled]=\"node.isDisabled\"\n (click)=\"clickNodeCheck($event)\"\n />\n <ng-container *ngIf=\"!templateRef\">\n <ng-container *ngIf=\"nodeIcon\">\n <span class=\"thy-tree-node-icon\"> <i [ngClass]=\"nodeIcon\" [ngStyle]=\"nodeIconStyle\"></i></span>\n </ng-container>\n <span [title]=\"node.title\" class=\"thy-tree-node-title\" [class.truncate]=\"thyTitleTruncate\"> {{ node.title }}</span>\n </ng-container>\n <ng-container *ngIf=\"templateRef\">\n <ng-template\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: node, node: node, origin: node?.origin }\"\n ></ng-template>\n </ng-container>\n </span>\n</div>\n<ng-container *ngIf=\"thyAsync\">\n <thy-loading *ngIf=\"node.isLoading\" [thyDone]=\"!node.isLoading\"></thy-loading>\n</ng-container>\n" }]
163
163
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -213,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
213
213
  type: Input,
214
214
  args: [{ transform: numberAttribute }]
215
215
  }] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmVlL3RyZWUtbm9kZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvdHJlZS90cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixlQUFlLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBNEIsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFvQixxQkFBcUIsRUFBb0IsTUFBTSxjQUFjLENBQUM7QUFDekYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUV4RCxNQUFNLDJCQUEyQixHQUE0QiwrQkFBK0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBRWhIOzs7O0dBSUc7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dUJBQUMsT0FBTztnQkFLbUIsV0FBVztzQkFBakQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBS0UsU0FBUztzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBub3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIG51bWJlckF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVEhZX1RSRUVfQUJTVFJBQ1RfVE9LRU4sIFRoeVRyZWVBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1hYnN0cmFjdCc7XG5pbXBvcnQgeyBUaHlUcmVlTm9kZSB9IGZyb20gJy4vdHJlZS1ub2RlLmNsYXNzJztcbmltcG9ydCB7IFRoeVRyZWVFbWl0RXZlbnQsIFRoeVRyZWVOb2RlQ2hlY2tTdGF0ZSwgVGh5Q2xpY2tCZWhhdmlvciB9IGZyb20gJy4vdHJlZS5jbGFzcyc7XG5pbXBvcnQgeyBUaHlUcmVlU2VydmljZSB9IGZyb20gJy4vdHJlZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRoeUxvYWRpbmcgfSBmcm9tICduZ3gtdGV0aHlzL2xvYWRpbmcnO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbmNvbnN0IHBhc3NpdmVFdmVudExpc3RlbmVyT3B0aW9ucyA9IDxBZGRFdmVudExpc3RlbmVyT3B0aW9ucz5ub3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zKHsgcGFzc2l2ZTogdHJ1ZSB9KTtcblxuLyoqXG4gKiDmoJHlvaLmjqfku7bnmoToioLngrnnu4Tku7ZcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSB0aHktdHJlZS1ub2RlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXRyZWUtbm9kZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtbm9kZS5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBUaHlJY29uLCBOZ0NsYXNzLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUaHlMb2FkaW5nXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmVlTm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIG5vZGUg6IqC54K55bGV546w5omA6ZyA55qE5pWw5o2uXG4gICAgICovXG4gICAgQElucHV0KCkgbm9kZTogVGh5VHJlZU5vZGU7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva4gVHJlZU5vZGUg5piv5ZCm5pSv5oyB5byC5q2l5Yqg6L29XG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5QXN5bmMgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9riBUcmVlTm9kZSDmmK/lkKbmlK/mjIHlpJrpgInoioLngrlcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlNdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog6K6+572uIFRyZWVOb2RlIOaYr+WQpuaUr+aMgeaLluaLveaOkuW6j1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeURyYWdnYWJsZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog6K6+572uIFRyZWVOb2RlIOaYr+WQpuaUr+aMgSBDaGVja2JveCDpgInmi6lcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlDaGVja2FibGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOeCueWHu+iKgueCueeahOihjOS4uu+8jGBkZWZhdWx0YCDkuLrpgInkuK3lvZPliY3oioLngrnvvIxgc2VsZWN0Q2hlY2tib3hgIOS4uumAieS4reiKgueCueeahCBDaGVja2JveO+8jCBgdGh5Q2hlY2thYmxlYCDkuLogdHJ1ZSDml7bnlJ/mlYjjgIJcbiAgICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAgICovXG4gICAgQElucHV0KCkgdGh5Q2xpY2tCZWhhdmlvcjogVGh5Q2xpY2tCZWhhdmlvcjtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruiKgueCueWQjeensOaYr+WQpuaUr+aMgei2heWHuuaIquWPllxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5VGl0bGVUcnVuY2F0ZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOiuvue9riBUcmVlTm9kZSDnmoTmuLLmn5PmqKHmnb9cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWtkOeahOepuuaVsOaNrua4suafk+aooeadv1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGVtcHR5Q2hpbGRyZW5UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIOiuvue9riBub2RlIOeCueWHu+S6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlPbkNsaWNrOiBFdmVudEVtaXR0ZXI8VGh5VHJlZUVtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlj4zlh7sgbm9kZSDkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5RGJsQ2xpY2s6IEV2ZW50RW1pdHRlcjxUaHlUcmVlRW1pdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VHJlZUVtaXRFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIOeCueWHu+WxleW8gOinpuWPkeS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlPbkV4cGFuZENoYW5nZTogRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlUcmVlRW1pdEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog6K6+572uIGNoZWNrIOmAieaLqeS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlPbkNoZWNrYm94Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VGh5VHJlZUVtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva4gY2hpbGRyZW5UcmVlIOeahOa4suafk+aooeadv1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2NoaWxkcmVuVHJlZScpIGNoaWxkcmVuVHJlZVRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIFRoZSBuYXRpdmUgYDxkaXYgY2xhc3M9XCJ0aHktdHJlZS1ub2RlLXdyYXBwZXIgdGh5LXNvcnRhYmxlLWl0ZW1cIj48L2Rpdj5gIGVsZW1lbnQuICovXG4gICAgQFZpZXdDaGlsZCgndHJlZU5vZGVXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSkgdHJlZU5vZGVXcmFwcGVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXRyZWUtbm9kZScpIHRoeVRyZWVOb2RlQ2xhc3MgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGl0ZW1DbGFzczogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog5byA5ZCv6Jma5ouf5rua5Yqo5pe277yM5Y2V6KGM6IqC54K555qE6auY5bqm77yM5b2TYHRoeVNpemVg5Li6YGRlZmF1bHRg5pe277yM6K+l5Y+C5pWw5omN55Sf5pWIXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGh5SXRlbVNpemUgPSA0NDtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruiKgueCuee8qei/m+i3neemu++8jOe8qei/m+i3neemuyA9IHRoeUluZGVudCAqIG5vZGUubGV2ZWxcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0aHlJbmRlbnQgPSAyNTtcblxuICAgIHB1YmxpYyBnZXQgbm9kZUljb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUub3JpZ2luLmljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBub2RlSWNvblN0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2RlLm9yaWdpbi5pY29uU3R5bGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjaGVja1N0YXRlID0gVGh5VHJlZU5vZGVDaGVja1N0YXRlO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChUSFlfVFJFRV9BQlNUUkFDVF9UT0tFTikgcHVibGljIHJvb3Q6IFRoeVRyZWVBYnN0cmFjdENvbXBvbmVudCwgcHVibGljIHRoeVRyZWVTZXJ2aWNlOiBUaHlUcmVlU2VydmljZSkge31cblxuICAgIHB1YmxpYyBjbGlja05vZGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLm5vZGUuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmROb2RlKGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoeUNoZWNrYWJsZSAmJiB0aGlzLnRoeUNsaWNrQmVoYXZpb3IgPT09ICdzZWxlY3RDaGVja2JveCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsaWNrTm9kZUNoZWNrKGV2ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucm9vdC50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb3QudG9nZ2xlVHJlZU5vZGUodGhpcy5ub2RlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb3Quc2VsZWN0VHJlZU5vZGUodGhpcy5ub2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aHlPbkNsaWNrLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnROYW1lOiAnY2xpY2snLFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgbm9kZTogdGhpcy5ub2RlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkYkNsaWNrTm9kZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy50aHlEYmxDbGljay5lbWl0KHtcbiAgICAgICAgICAgIGV2ZW50TmFtZTogJ2RiY2xpY2snLFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgbm9kZTogdGhpcy5ub2RlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja05vZGVDaGVjayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLm5vZGUuaXNDaGVja2VkID09PSBUaHlUcmVlTm9kZUNoZWNrU3RhdGUudW5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLm5vZGUuc2V0Q2hlY2tlZCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5vZGUuaXNDaGVja2VkID09PSBUaHlUcmVlTm9kZUNoZWNrU3RhdGUuY2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5ub2RlLnNldENoZWNrZWQoZmFsc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5pc0NoZWNrZWQgPT09IFRoeVRyZWVOb2RlQ2hlY2tTdGF0ZS5pbmRldGVybWluYXRlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ub2RlLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVDaGlsZHJlbiA9IHRoaXMubm9kZS5jaGlsZHJlbi5maWx0ZXIoaXRlbSA9PiAhaXRlbS5pc0Rpc2FibGVkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0FsbEFjdGl2ZUNoaWxkcmVuQ2hlY2tlZCA9IGFjdGl2ZUNoaWxkcmVuLmV2ZXJ5KGl0ZW0gPT4gaXRlbS5pc0NoZWNrZWQpO1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zZXRDaGVja2VkKCFpc0FsbEFjdGl2ZUNoaWxkcmVuQ2hlY2tlZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zZXRDaGVja2VkKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudGh5T25DaGVja2JveENoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIGV2ZW50TmFtZTogJ2NoZWNrYm94Q2hhbmdlJyxcbiAgICAgICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIG5vZGU6IHRoaXMubm9kZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhwYW5kTm9kZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMubm9kZS5zZXRFeHBhbmRlZCghdGhpcy5ub2RlLmlzRXhwYW5kZWQpO1xuICAgICAgICBpZiAodGhpcy5yb290LnRoeVNob3dFeHBhbmQpIHtcbiAgICAgICAgICAgIHRoaXMudGh5T25FeHBhbmRDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgZXZlbnROYW1lOiAnZXhwYW5kJyxcbiAgICAgICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgbm9kZTogdGhpcy5ub2RlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoeUFzeW5jICYmIHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc1Nob3dFeHBhbmQobm9kZTogVGh5VHJlZU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm9vdC5pc1Nob3dFeHBhbmQobm9kZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbUNsYXNzID0gdGhpcy5ub2RlPy5pdGVtQ2xhc3M/LmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLm5vZGUgJiYgIWNoYW5nZXMubm9kZS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbUNsYXNzID0gY2hhbmdlcz8ubm9kZT8uY3VycmVudFZhbHVlLml0ZW1DbGFzcz8uam9pbignICcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAjdHJlZU5vZGVXcmFwcGVyXG4gIGNsYXNzPVwidGh5LXRyZWUtbm9kZS13cmFwcGVyXCJcbiAgW2NsYXNzLmFjdGl2ZV09XCJyb290LmlzU2VsZWN0ZWQobm9kZSlcIlxuICBbY2xhc3MuZGlzYWJsZWRdPVwibm9kZS5pc0Rpc2FibGVkXCJcbiAgW2NsYXNzLmV4cGFuZF09XCJub2RlLmNoaWxkcmVuLmxlbmd0aFwiXG4gIFtzdHlsZS5oZWlnaHRdPVwidGh5SXRlbVNpemUgKyAncHgnXCJcbiAgKGNsaWNrKT1cImNsaWNrTm9kZSgkZXZlbnQpXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJ0aHktdHJlZS1pbmRleFwiIFtzdHlsZS53aWR0aC5weF09XCJub2RlLmxldmVsICogdGh5SW5kZW50XCI+PC9zcGFuPlxuICA8c3BhbiAgY2xhc3M9XCJ0aHktdHJlZS1kcmFnLWljb25cIj5cbiAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJkcmFnXCI+PC90aHktaWNvbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cInRoeS10cmVlLWV4cGFuZFwiIChjbGljayk9XCJleHBhbmROb2RlKCRldmVudClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTaG93RXhwYW5kKG5vZGUpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB8fCB0aHlBc3luYyB8fCBlbXB0eUNoaWxkcmVuVGVtcGxhdGVSZWZcIj5cbiAgICAgICAgPHRoeS1pY29uXG4gICAgICAgICAgKm5nSWY9XCJyb290LnRoeUljb25zPy5leHBhbmQgJiYgcm9vdC50aHlJY29ucz8uY29sbGFwc2U7IGVsc2UgZGVmYXVsdEljb25cIlxuICAgICAgICAgIGNsYXNzPVwidGh5LXRyZWUtZXhwYW5kLWljb25cIlxuICAgICAgICAgIFt0aHlJY29uTmFtZV09XCJub2RlLmlzRXhwYW5kZWQgPyByb290LnRoeUljb25zLmV4cGFuZCA6IHJvb3QudGh5SWNvbnMuY29sbGFwc2VcIlxuICAgICAgICA+PC90aHktaWNvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SWNvbj5cbiAgICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJ0aHktdHJlZS1leHBhbmQtaWNvblwiIFtjbGFzcy5jb2xsYXBzZV09XCIhbm9kZS5pc0V4cGFuZGVkXCIgdGh5SWNvbk5hbWU9XCJjYXJldC1yaWdodC1kb3duXCI+PC90aHktaWNvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG5cbiAgPHNwYW4gY2xhc3M9XCJ0aHktdHJlZS1ub2RlLWNvbnRlbnRcIiAoZGJsY2xpY2spPVwiZGJDbGlja05vZGUoJGV2ZW50KVwiPlxuICAgIDxpbnB1dFxuICAgICAgKm5nSWY9XCJ0aHlDaGVja2FibGVcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgIGNsYXNzPVwidGh5LXRyZWUtbm9kZS1jaGVja1wiXG4gICAgICBbY2xhc3MuZm9ybS1jaGVjay1pbmRldGVybWluYXRlXT1cIm5vZGUuaXNDaGVja2VkID09PSBjaGVja1N0YXRlLmluZGV0ZXJtaW5hdGVcIlxuICAgICAgW2NsYXNzLmZvcm0tdW5jaGVja2VkXT1cIm5vZGUuaXNDaGVja2VkID09PSBjaGVja1N0YXRlLnVuY2hlY2tlZFwiXG4gICAgICBbY2hlY2tlZF09XCJub2RlLmlzQ2hlY2tlZCA9PT0gY2hlY2tTdGF0ZS5jaGVja2VkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJub2RlLmlzRGlzYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrTm9kZUNoZWNrKCRldmVudClcIlxuICAgIC8+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0ZW1wbGF0ZVJlZlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVJY29uXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGh5LXRyZWUtbm9kZS1pY29uXCI+IDxpIFtuZ0NsYXNzXT1cIm5vZGVJY29uXCIgW25nU3R5bGVdPVwibm9kZUljb25TdHlsZVwiPjwvaT48L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzcGFuIFt0aXRsZV09XCJub2RlLnRpdGxlXCIgY2xhc3M9XCJ0aHktdHJlZS1ub2RlLXRpdGxlXCIgW2NsYXNzLnRydW5jYXRlXT1cInRoeVRpdGxlVHJ1bmNhdGVcIj4ge3sgbm9kZS50aXRsZSB9fTwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGVSZWZcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVJlZlwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSwgbm9kZTogbm9kZSwgb3JpZ2luOiBub2RlPy5vcmlnaW4gfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9zcGFuPlxuPC9kaXY+XG48bmctY29udGFpbmVyICpuZ0lmPVwidGh5QXN5bmNcIj5cbiAgPHRoeS1sb2FkaW5nICpuZ0lmPVwibm9kZS5pc0xvYWRpbmdcIiBbdGh5RG9uZV09XCIhbm9kZS5pc0xvYWRpbmdcIj48L3RoeS1sb2FkaW5nPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmVlL3RyZWUtbm9kZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvdHJlZS90cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixlQUFlLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBNEIsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFvQixxQkFBcUIsRUFBb0IsTUFBTSxjQUFjLENBQUM7QUFDekYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUV4RCxNQUFNLDJCQUEyQixHQUE0QiwrQkFBK0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBRWhIOzs7O0dBSUc7QUFRSCxNQUFNLE9BQU8sb0JBQW9CO0lBMEY3QixJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ3RDLENBQUM7SUFNRCxZQUM0QyxJQUE4QixFQUMvRCxjQUE4QjtRQURHLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQy9ELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWxHekM7O1dBRUc7UUFDMEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUU5RDs7V0FFRztRQUMwQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVqRTs7V0FFRztRQUMwQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVsRTs7V0FFRztRQUMwQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQXdCbEU7O1dBRUc7UUFDTyxlQUFVLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRTVGOztXQUVHO1FBQ08sZ0JBQVcsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFFN0Y7O1dBRUc7UUFDTyxzQkFBaUIsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFFbkc7O1dBRUc7UUFDTyx3QkFBbUIsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFVakUscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBSTVEOztXQUVHO1FBQ29DLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXhEOztXQUVHO1FBQ29DLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFVOUMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdkMsZUFBVSxHQUFHLHFCQUFxQixDQUFDO0lBS2hDLENBQUM7SUFFRyxTQUFTLENBQUMsS0FBWTtRQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7cUJBQU0sQ0FBQztvQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2pCLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2xCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBWTtRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNsQixTQUFTLEVBQUUsU0FBUztZQUNwQixLQUFLLEVBQUUsS0FBSztZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQVk7UUFDOUIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUsscUJBQXFCLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUsscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUsscUJBQXFCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzNFLE1BQU0sMEJBQTBCLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDaEYsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQ3RELENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDMUIsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixLQUFLLEVBQUUsS0FBSztZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQVk7UUFDMUIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQztnQkFDeEIsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLEtBQUssRUFBRSxLQUFLO2dCQUNaLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNsQixDQUFDLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFTSxZQUFZLENBQUMsSUFBaUI7UUFDakMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RSxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0E5TFEsb0JBQW9CLGtCQXVHakIsdUJBQXVCO2tHQXZHMUIsb0JBQW9CLDRHQVNULHFCQUFxQiwrQ0FLckIscUJBQXFCLGtEQUtyQixxQkFBcUIsa0RBS3JCLHFCQUFxQixvR0FZckIscUJBQXFCLGlJQStDckIsZUFBZSx5Q0FLZixlQUFlLHFpQkNwSXZDLDA1RUF3REEsNENEZGMsSUFBSSw2RkFBRSxPQUFPLHNNQUFFLE9BQU8sb0ZBQUUsT0FBTywyRUFBRSxnQkFBZ0Isb0pBQUUsVUFBVTs7MkZBRTlELG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDSSxlQUFlLGlCQUVWLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQzs7MEJBeUduRSxNQUFNOzJCQUFDLHVCQUF1QjtzRUFuRzFCLElBQUk7c0JBQVosS0FBSztnQkFLdUMsUUFBUTtzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFLRSxXQUFXO3NCQUF2RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQUtFLFlBQVk7c0JBQXhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBS0UsWUFBWTtzQkFBeEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFNbEMsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQU11QyxnQkFBZ0I7c0JBQTVELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBS2xDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUtJLFVBQVU7c0JBQW5CLE1BQU07Z0JBS0csV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBS0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUt1Qix1QkFBdUI7c0JBQXBELFlBQVk7dUJBQUMsY0FBYztnQkFHb0IsZUFBZTtzQkFBOUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRVYsZ0JBQWdCO3NCQUFuRCxXQUFXO3VCQUFDLHFCQUFxQjtnQkFFWixTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU87Z0JBS21CLFdBQVc7c0JBQWpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUtFLFNBQVM7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbm9ybWFsaXplUGFzc2l2ZUxpc3RlbmVyT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBudW1iZXJBdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRIWV9UUkVFX0FCU1RSQUNUX1RPS0VOLCBUaHlUcmVlQWJzdHJhY3RDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtYWJzdHJhY3QnO1xuaW1wb3J0IHsgVGh5VHJlZU5vZGUgfSBmcm9tICcuL3RyZWUtbm9kZS5jbGFzcyc7XG5pbXBvcnQgeyBUaHlUcmVlRW1pdEV2ZW50LCBUaHlUcmVlTm9kZUNoZWNrU3RhdGUsIFRoeUNsaWNrQmVoYXZpb3IgfSBmcm9tICcuL3RyZWUuY2xhc3MnO1xuaW1wb3J0IHsgVGh5VHJlZVNlcnZpY2UgfSBmcm9tICcuL3RyZWUuc2VydmljZSc7XG5pbXBvcnQgeyBUaHlMb2FkaW5nIH0gZnJvbSAnbmd4LXRldGh5cy9sb2FkaW5nJztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgTmdJZiwgTmdDbGFzcywgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuXG5jb25zdCBwYXNzaXZlRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSA8QWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM+bm9ybWFsaXplUGFzc2l2ZUxpc3RlbmVyT3B0aW9ucyh7IHBhc3NpdmU6IHRydWUgfSk7XG5cbi8qKlxuICog5qCR5b2i5o6n5Lu255qE6IqC54K557uE5Lu2XG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgdGh5LXRyZWUtbm9kZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS10cmVlLW5vZGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVGh5SWNvbiwgTmdDbGFzcywgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCwgVGh5TG9hZGluZ11cbn0pXG5leHBvcnQgY2xhc3MgVGh5VHJlZU5vZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICAvKipcbiAgICAgKiBub2RlIOiKgueCueWxleeOsOaJgOmcgOeahOaVsOaNrlxuICAgICAqL1xuICAgIEBJbnB1dCgpIG5vZGU6IFRoeVRyZWVOb2RlO1xuXG4gICAgLyoqXG4gICAgICog6K6+572uIFRyZWVOb2RlIOaYr+WQpuaUr+aMgeW8guatpeWKoOi9vVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUFzeW5jID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva4gVHJlZU5vZGUg5piv5ZCm5pSv5oyB5aSa6YCJ6IqC54K5XG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5TXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9riBUcmVlTm9kZSDmmK/lkKbmlK/mjIHmi5bmi73mjpLluo9cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlEcmFnZ2FibGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9riBUcmVlTm9kZSDmmK/lkKbmlK/mjIEgQ2hlY2tib3gg6YCJ5oupXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5Q2hlY2thYmxlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDngrnlh7voioLngrnnmoTooYzkuLrvvIxgZGVmYXVsdGAg5Li66YCJ5Lit5b2T5YmN6IqC54K577yMYHNlbGVjdENoZWNrYm94YCDkuLrpgInkuK3oioLngrnnmoQgQ2hlY2tib3jvvIwgYHRoeUNoZWNrYWJsZWAg5Li6IHRydWUg5pe255Sf5pWI44CCXG4gICAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUNsaWNrQmVoYXZpb3I6IFRoeUNsaWNrQmVoYXZpb3I7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7oioLngrnlkI3np7DmmK/lkKbmlK/mjIHotoXlh7rmiKrlj5ZcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVRpdGxlVHJ1bmNhdGU6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDorr7nva4gVHJlZU5vZGUg55qE5riy5p+T5qih5p2/XG4gICAgICovXG4gICAgQElucHV0KCkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7lrZDnmoTnqbrmlbDmja7muLLmn5PmqKHmnb9cbiAgICAgKi9cbiAgICBASW5wdXQoKSBlbXB0eUNoaWxkcmVuVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiDorr7nva4gbm9kZSDngrnlh7vkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25DbGljazogRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlUcmVlRW1pdEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog5Y+M5Ye7IG5vZGUg5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeURibENsaWNrOiBFdmVudEVtaXR0ZXI8VGh5VHJlZUVtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDngrnlh7vlsZXlvIDop6blj5Hkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25FeHBhbmRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUaHlUcmVlRW1pdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VHJlZUVtaXRFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9riBjaGVjayDpgInmi6nkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25DaGVja2JveENoYW5nZTogRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlUcmVlRW1pdEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog6K6+572uIGNoaWxkcmVuVHJlZSDnmoTmuLLmn5PmqKHmnb9cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdjaGlsZHJlblRyZWUnKSBjaGlsZHJlblRyZWVUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBUaGUgbmF0aXZlIGA8ZGl2IGNsYXNzPVwidGh5LXRyZWUtbm9kZS13cmFwcGVyIHRoeS1zb3J0YWJsZS1pdGVtXCI+PC9kaXY+YCBlbGVtZW50LiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3RyZWVOb2RlV3JhcHBlcicsIHsgc3RhdGljOiB0cnVlIH0pIHRyZWVOb2RlV3JhcHBlcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS10cmVlLW5vZGUnKSB0aHlUcmVlTm9kZUNsYXNzID0gdHJ1ZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBpdGVtQ2xhc3M6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIOW8gOWQr+iZmuaLn+a7muWKqOaXtu+8jOWNleihjOiKgueCueeahOmrmOW6pu+8jOW9k2B0aHlTaXplYOS4umBkZWZhdWx0YOaXtu+8jOivpeWPguaVsOaJjeeUn+aViFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHRoeUl0ZW1TaXplID0gNDQ7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7oioLngrnnvKnov5vot53nprvvvIznvKnov5vot53nprsgPSB0aHlJbmRlbnQgKiBub2RlLmxldmVsXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGh5SW5kZW50ID0gMjU7XG5cbiAgICBwdWJsaWMgZ2V0IG5vZGVJY29uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2RlLm9yaWdpbi5pY29uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbm9kZUljb25TdHlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5vcmlnaW4uaWNvblN0eWxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY2hlY2tTdGF0ZSA9IFRoeVRyZWVOb2RlQ2hlY2tTdGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRIWV9UUkVFX0FCU1RSQUNUX1RPS0VOKSBwdWJsaWMgcm9vdDogVGh5VHJlZUFic3RyYWN0Q29tcG9uZW50LFxuICAgICAgICBwdWJsaWMgdGh5VHJlZVNlcnZpY2U6IFRoeVRyZWVTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgcHVibGljIGNsaWNrTm9kZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMubm9kZS5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZE5vZGUoZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMudGh5Q2hlY2thYmxlICYmIHRoaXMudGh5Q2xpY2tCZWhhdmlvciA9PT0gJ3NlbGVjdENoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tOb2RlQ2hlY2soZXZlbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yb290LnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm9vdC50b2dnbGVUcmVlTm9kZSh0aGlzLm5vZGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm9vdC5zZWxlY3RUcmVlTm9kZSh0aGlzLm5vZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoeU9uQ2xpY2suZW1pdCh7XG4gICAgICAgICAgICBldmVudE5hbWU6ICdjbGljaycsXG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBub2RlOiB0aGlzLm5vZGVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRiQ2xpY2tOb2RlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLnRoeURibENsaWNrLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnROYW1lOiAnZGJjbGljaycsXG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBub2RlOiB0aGlzLm5vZGVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrTm9kZUNoZWNrKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKHRoaXMubm9kZS5pc0NoZWNrZWQgPT09IFRoeVRyZWVOb2RlQ2hlY2tTdGF0ZS51bmNoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMubm9kZS5zZXRDaGVja2VkKHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5pc0NoZWNrZWQgPT09IFRoeVRyZWVOb2RlQ2hlY2tTdGF0ZS5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLm5vZGUuc2V0Q2hlY2tlZChmYWxzZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLmlzQ2hlY2tlZCA9PT0gVGh5VHJlZU5vZGVDaGVja1N0YXRlLmluZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5vZGUuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUNoaWxkcmVuID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihpdGVtID0+ICFpdGVtLmlzRGlzYWJsZWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQWxsQWN0aXZlQ2hpbGRyZW5DaGVja2VkID0gYWN0aXZlQ2hpbGRyZW4uZXZlcnkoaXRlbSA9PiBpdGVtLmlzQ2hlY2tlZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnNldENoZWNrZWQoIWlzQWxsQWN0aXZlQ2hpbGRyZW5DaGVja2VkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnNldENoZWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aHlPbkNoZWNrYm94Q2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnROYW1lOiAnY2hlY2tib3hDaGFuZ2UnLFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgbm9kZTogdGhpcy5ub2RlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBleHBhbmROb2RlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5ub2RlLnNldEV4cGFuZGVkKCF0aGlzLm5vZGUuaXNFeHBhbmRlZCk7XG4gICAgICAgIGlmICh0aGlzLnJvb3QudGh5U2hvd0V4cGFuZCkge1xuICAgICAgICAgICAgdGhpcy50aHlPbkV4cGFuZENoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6ICdleHBhbmQnLFxuICAgICAgICAgICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBub2RlOiB0aGlzLm5vZGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHRoaXMudGh5QXN5bmMgJiYgdGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzU2hvd0V4cGFuZChub2RlOiBUaHlUcmVlTm9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb290LmlzU2hvd0V4cGFuZChub2RlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pdGVtQ2xhc3MgPSB0aGlzLm5vZGU/Lml0ZW1DbGFzcz8uam9pbignICcpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMubm9kZSAmJiAhY2hhbmdlcy5ub2RlLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5pdGVtQ2xhc3MgPSBjaGFuZ2VzPy5ub2RlPy5jdXJyZW50VmFsdWUuaXRlbUNsYXNzPy5qb2luKCcgJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICN0cmVlTm9kZVdyYXBwZXJcbiAgY2xhc3M9XCJ0aHktdHJlZS1ub2RlLXdyYXBwZXJcIlxuICBbY2xhc3MuYWN0aXZlXT1cInJvb3QuaXNTZWxlY3RlZChub2RlKVwiXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJub2RlLmlzRGlzYWJsZWRcIlxuICBbY2xhc3MuZXhwYW5kXT1cIm5vZGUuY2hpbGRyZW4ubGVuZ3RoXCJcbiAgW3N0eWxlLmhlaWdodF09XCJ0aHlJdGVtU2l6ZSArICdweCdcIlxuICAoY2xpY2spPVwiY2xpY2tOb2RlKCRldmVudClcIlxuPlxuICA8c3BhbiBjbGFzcz1cInRoeS10cmVlLWluZGV4XCIgW3N0eWxlLndpZHRoLnB4XT1cIm5vZGUubGV2ZWwgKiB0aHlJbmRlbnRcIj48L3NwYW4+XG4gIDxzcGFuICBjbGFzcz1cInRoeS10cmVlLWRyYWctaWNvblwiPlxuICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImRyYWdcIj48L3RoeS1pY29uPlxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwidGh5LXRyZWUtZXhwYW5kXCIgKGNsaWNrKT1cImV4cGFuZE5vZGUoJGV2ZW50KVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Nob3dFeHBhbmQobm9kZSlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHx8IHRoeUFzeW5jIHx8IGVtcHR5Q2hpbGRyZW5UZW1wbGF0ZVJlZlwiPlxuICAgICAgICA8dGh5LWljb25cbiAgICAgICAgICAqbmdJZj1cInJvb3QudGh5SWNvbnM/LmV4cGFuZCAmJiByb290LnRoeUljb25zPy5jb2xsYXBzZTsgZWxzZSBkZWZhdWx0SWNvblwiXG4gICAgICAgICAgY2xhc3M9XCJ0aHktdHJlZS1leHBhbmQtaWNvblwiXG4gICAgICAgICAgW3RoeUljb25OYW1lXT1cIm5vZGUuaXNFeHBhbmRlZCA/IHJvb3QudGh5SWNvbnMuZXhwYW5kIDogcm9vdC50aHlJY29ucy5jb2xsYXBzZVwiXG4gICAgICAgID48L3RoeS1pY29uPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJY29uPlxuICAgICAgICAgIDx0aHktaWNvbiBjbGFzcz1cInRoeS10cmVlLWV4cGFuZC1pY29uXCIgW2NsYXNzLmNvbGxhcHNlXT1cIiFub2RlLmlzRXhwYW5kZWRcIiB0aHlJY29uTmFtZT1cImNhcmV0LXJpZ2h0LWRvd25cIj48L3RoeS1pY29uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvc3Bhbj5cblxuICA8c3BhbiBjbGFzcz1cInRoeS10cmVlLW5vZGUtY29udGVudFwiIChkYmxjbGljayk9XCJkYkNsaWNrTm9kZSgkZXZlbnQpXCI+XG4gICAgPGlucHV0XG4gICAgICAqbmdJZj1cInRoeUNoZWNrYWJsZVwiXG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgY2xhc3M9XCJ0aHktdHJlZS1ub2RlLWNoZWNrXCJcbiAgICAgIFtjbGFzcy5mb3JtLWNoZWNrLWluZGV0ZXJtaW5hdGVdPVwibm9kZS5pc0NoZWNrZWQgPT09IGNoZWNrU3RhdGUuaW5kZXRlcm1pbmF0ZVwiXG4gICAgICBbY2xhc3MuZm9ybS11bmNoZWNrZWRdPVwibm9kZS5pc0NoZWNrZWQgPT09IGNoZWNrU3RhdGUudW5jaGVja2VkXCJcbiAgICAgIFtjaGVja2VkXT1cIm5vZGUuaXNDaGVja2VkID09PSBjaGVja1N0YXRlLmNoZWNrZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cIm5vZGUuaXNEaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwiY2xpY2tOb2RlQ2hlY2soJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRlbXBsYXRlUmVmXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZUljb25cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktdHJlZS1ub2RlLWljb25cIj4gPGkgW25nQ2xhc3NdPVwibm9kZUljb25cIiBbbmdTdHlsZV09XCJub2RlSWNvblN0eWxlXCI+PC9pPjwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHNwYW4gW3RpdGxlXT1cIm5vZGUudGl0bGVcIiBjbGFzcz1cInRoeS10cmVlLW5vZGUtdGl0bGVcIiBbY2xhc3MudHJ1bmNhdGVdPVwidGh5VGl0bGVUcnVuY2F0ZVwiPiB7eyBub2RlLnRpdGxlIH19PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW1wbGF0ZVJlZlwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlUmVmXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlLCBub2RlOiBub2RlLCBvcmlnaW46IG5vZGU/Lm9yaWdpbiB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ0aHlBc3luY1wiPlxuICA8dGh5LWxvYWRpbmcgKm5nSWY9XCJub2RlLmlzTG9hZGluZ1wiIFt0aHlEb25lXT1cIiFub2RlLmlzTG9hZGluZ1wiPjwvdGh5LWxvYWRpbmc+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==