@seniorsistemas/angular-components 19.3.1 → 19.3.3

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 (260) hide show
  1. package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.d.ts +1 -2
  2. package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +0 -1
  3. package/chips/lib/chips/chips/chips.component.d.ts +1 -2
  4. package/code-editor/lib/code-editor/code-editor.component.d.ts +0 -2
  5. package/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.d.ts +1 -3
  6. package/common/lib/svg-factory/svg-factory.directive.d.ts +1 -2
  7. package/content-generator/lib/content-generator/content-generator.component.d.ts +1 -6
  8. package/content-generator/lib/services/IAssist/iassist.service.d.ts +0 -3
  9. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +0 -3
  10. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.d.ts +0 -2
  11. package/currency/lib/currency.service.d.ts +0 -2
  12. package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +3 -7
  13. package/custom-fields/lib/custom-fields/custom-fields.service.d.ts +0 -2
  14. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +2 -4
  15. package/dynamic-form/dynamic-form/components/lookup/types/lookup-models.d.ts +4 -0
  16. package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +2 -1
  17. package/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.d.ts +1 -2
  18. package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts +1 -3
  19. package/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.d.ts +1 -2
  20. package/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.d.ts +1 -3
  21. package/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.d.ts +1 -2
  22. package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +1 -3
  23. package/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.d.ts +1 -2
  24. package/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.d.ts +1 -3
  25. package/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.d.ts +1 -2
  26. package/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.d.ts +1 -2
  27. package/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.d.ts +1 -2
  28. package/dynamic-form/public-api.d.ts +1 -0
  29. package/empty-state/lib/empty-state/go-back/go-back.component.d.ts +0 -2
  30. package/esm2022/badge/lib/badge/badge.component.mjs +3 -3
  31. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +10 -13
  32. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +7 -11
  33. package/esm2022/chips/lib/chips/chips/chips.component.mjs +5 -8
  34. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +6 -9
  35. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.mjs +8 -13
  36. package/esm2022/common/lib/svg-factory/svg-factory.directive.mjs +6 -10
  37. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +24 -30
  38. package/esm2022/content-generator/lib/services/IAssist/iassist.service.mjs +9 -12
  39. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +15 -23
  40. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +6 -9
  41. package/esm2022/currency/lib/currency.service.mjs +6 -9
  42. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +17 -25
  43. package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +6 -9
  44. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +26 -35
  45. package/esm2022/dynamic-form/dynamic-form/components/lookup/types/lookup-models.mjs +2 -0
  46. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
  47. package/esm2022/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +6 -10
  48. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +12 -17
  49. package/esm2022/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +5 -8
  50. package/esm2022/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.mjs +12 -17
  51. package/esm2022/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +5 -8
  52. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +13 -19
  53. package/esm2022/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.mjs +6 -10
  54. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +14 -19
  55. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +5 -8
  56. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +5 -8
  57. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +5 -8
  58. package/esm2022/dynamic-form/public-api.mjs +1 -1
  59. package/esm2022/empty-state/lib/empty-state/go-back/go-back.component.mjs +8 -11
  60. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +17 -21
  61. package/esm2022/gantt/lib/gantt/components/gantt/gantt.mjs +6 -2
  62. package/esm2022/gantt/lib/gantt/gantt.component.mjs +8 -4
  63. package/esm2022/global-search/lib/global-search/global-search.component.mjs +5 -8
  64. package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +7 -12
  65. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +5 -8
  66. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +6 -10
  67. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.mjs +9 -12
  68. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +14 -17
  69. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +12 -15
  70. package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +15 -19
  71. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +5 -8
  72. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +10 -13
  73. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +10 -13
  74. package/esm2022/kanban/lib/kanban/kanban.component.mjs +23 -17
  75. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +10 -16
  76. package/esm2022/locale/lib/locale/locale.service.mjs +8 -12
  77. package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +6 -9
  78. package/esm2022/locale/lib/locale/pipes/localized-currency.pipe.mjs +6 -9
  79. package/esm2022/locale/lib/locale/pipes/localized-date.pipe.mjs +6 -9
  80. package/esm2022/locale/lib/locale/pipes/localized-number.pipe.mjs +6 -9
  81. package/esm2022/locale/lib/locale/pipes/localized-time.pipe.mjs +6 -9
  82. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +6 -9
  83. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +5 -8
  84. package/esm2022/numeric/lib/numeric.pipe.mjs +8 -12
  85. package/esm2022/numeric/lib/numeric.service.mjs +6 -9
  86. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +8 -11
  87. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +10 -16
  88. package/esm2022/picklist/lib/picklist/picklist.component.mjs +5 -8
  89. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +15 -19
  90. package/esm2022/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.mjs +8 -11
  91. package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +5 -4
  92. package/esm2022/select-button/lib/select-button/select-button.component.mjs +3 -3
  93. package/esm2022/shared/lib/accessibility/paginator-accessibility.directive.mjs +8 -13
  94. package/esm2022/shared/lib/accessibility/table-checkbox-accessibility.directive.mjs +5 -8
  95. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +9 -12
  96. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +12 -16
  97. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.service.mjs +12 -16
  98. package/esm2022/speech-recognition/lib/speech-recognition/text-to-speech.service.mjs +8 -10
  99. package/esm2022/split-button/lib/split-button/split-button.component.mjs +5 -8
  100. package/esm2022/table/lib/table/row-toggler/row-toggler.directive.mjs +7 -7
  101. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +19 -28
  102. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +9 -16
  103. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +11 -13
  104. package/esm2022/text-area/lib/text-area/text-area.component.mjs +5 -8
  105. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +8 -11
  106. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +16 -24
  107. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +8 -11
  108. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +12 -16
  109. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +13 -25
  110. package/esm2022/toast/lib/toast/toast.service.mjs +7 -12
  111. package/esm2022/tree/lib/tree/components/tree-node-item/tree-node-item.component.mjs +10 -14
  112. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +6 -10
  113. package/fesm2022/seniorsistemas-angular-components-badge.mjs +2 -2
  114. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  115. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +10 -12
  116. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  117. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +6 -10
  118. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  119. package/fesm2022/seniorsistemas-angular-components-chips.mjs +4 -7
  120. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  121. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +10 -18
  122. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  123. package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -9
  124. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  125. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +29 -40
  126. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  127. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +16 -28
  128. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  129. package/fesm2022/seniorsistemas-angular-components-currency.mjs +5 -8
  130. package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
  131. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +45 -59
  132. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  133. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +111 -163
  134. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  135. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +4 -8
  136. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  137. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +17 -22
  138. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  139. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +12 -4
  140. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  141. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +4 -7
  142. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  143. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +6 -11
  144. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  145. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +4 -7
  146. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  147. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +5 -9
  148. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  149. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +29 -38
  150. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  151. package/fesm2022/seniorsistemas-angular-components-insights.mjs +17 -22
  152. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  153. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +4 -7
  154. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  155. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +30 -30
  156. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  157. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +7 -15
  158. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  159. package/fesm2022/seniorsistemas-angular-components-locale.mjs +22 -41
  160. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  161. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +5 -8
  162. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  163. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +4 -7
  164. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  165. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +9 -16
  166. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  167. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +13 -24
  168. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  169. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +4 -7
  170. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  171. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +14 -21
  172. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  173. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +11 -14
  174. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  175. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +2 -2
  176. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  177. package/fesm2022/seniorsistemas-angular-components-shared.mjs +10 -18
  178. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  179. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +7 -10
  180. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  181. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +23 -34
  182. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  183. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +4 -7
  184. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  185. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +10 -12
  186. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  187. package/fesm2022/seniorsistemas-angular-components-table.mjs +29 -46
  188. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  189. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +4 -7
  190. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  191. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +6 -9
  192. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  193. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +30 -55
  194. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  195. package/fesm2022/seniorsistemas-angular-components-toast.mjs +6 -11
  196. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  197. package/fesm2022/seniorsistemas-angular-components-tree.mjs +9 -14
  198. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  199. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +5 -9
  200. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  201. package/file-picker/lib/file-picker/file-picker.component.d.ts +0 -4
  202. package/file-upload/README.md +9 -37
  203. package/gantt/lib/gantt/gantt.component.d.ts +1 -0
  204. package/global-search/lib/global-search/global-search.component.d.ts +1 -2
  205. package/ia-insight/README.md +17 -0
  206. package/image-cropper/lib/image-cropper/image-cropper.service.d.ts +1 -2
  207. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +1 -2
  208. package/info-sign/lib/info-sign/info-sign.directive.d.ts +1 -2
  209. package/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.d.ts +1 -2
  210. package/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +0 -2
  211. package/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +0 -2
  212. package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +0 -4
  213. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +1 -2
  214. package/kanban/lib/kanban/components/kanban-column/kanban-column.component.d.ts +0 -2
  215. package/kanban/lib/kanban/components/kanban-item/kanban-item.component.d.ts +0 -2
  216. package/kanban/lib/kanban/kanban.component.d.ts +2 -2
  217. package/loading-state/lib/loading-state/loading-state.directive.d.ts +1 -2
  218. package/locale/lib/locale/locale.service.d.ts +0 -3
  219. package/locale/lib/locale/pipes/localized-bignumber.pipe.d.ts +0 -2
  220. package/locale/lib/locale/pipes/localized-currency.pipe.d.ts +0 -2
  221. package/locale/lib/locale/pipes/localized-date.pipe.d.ts +0 -2
  222. package/locale/lib/locale/pipes/localized-number.pipe.d.ts +0 -2
  223. package/locale/lib/locale/pipes/localized-time.pipe.d.ts +0 -2
  224. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +0 -2
  225. package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +1 -2
  226. package/numeric/lib/numeric.pipe.d.ts +0 -3
  227. package/numeric/lib/numeric.service.d.ts +0 -2
  228. package/package.json +1 -1
  229. package/password-strength/lib/password-strength/password-strength.component.d.ts +0 -2
  230. package/password-strength/lib/password-strength/password-strength.directive.d.ts +1 -2
  231. package/picklist/lib/picklist/picklist.component.d.ts +1 -2
  232. package/product-header/README.md +17 -0
  233. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +0 -4
  234. package/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.d.ts +0 -2
  235. package/progressbar/lib/progressbar/progressbar.module.d.ts +2 -1
  236. package/shared/lib/accessibility/paginator-accessibility.directive.d.ts +1 -3
  237. package/shared/lib/accessibility/table-checkbox-accessibility.directive.d.ts +1 -2
  238. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +0 -2
  239. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +0 -4
  240. package/speech-recognition/lib/speech-recognition/speech-recognition.service.d.ts +1 -5
  241. package/speech-recognition/lib/speech-recognition/text-to-speech.service.d.ts +1 -3
  242. package/split-button/lib/split-button/split-button.component.d.ts +1 -2
  243. package/table/lib/table/row-toggler/row-toggler.directive.d.ts +1 -1
  244. package/table/lib/table/table-column/table-columns.component.d.ts +2 -6
  245. package/table/lib/table/table-paging/table-paging.component.d.ts +0 -3
  246. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -1
  247. package/text-area/lib/text-area/text-area.component.d.ts +1 -2
  248. package/text-area-ia/README.md +17 -0
  249. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +0 -2
  250. package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +1 -3
  251. package/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +0 -2
  252. package/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +0 -2
  253. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +1 -5
  254. package/toast/lib/toast/toast.service.d.ts +0 -2
  255. package/tree/lib/tree/components/tree-node-item/tree-node-item.component.d.ts +1 -3
  256. package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +1 -2
  257. package/confirm-dialog/README.md +0 -226
  258. package/numeric-mask/README.md +0 -395
  259. package/pin-code-field/README.md +0 -366
  260. package/spotlight/README.md +0 -311
@@ -1,16 +1,16 @@
1
- import { Component, HostListener } from '@angular/core';
1
+ import { Component, HostListener, inject } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
+ import { TieredMenuEventService } from '../../services/tiered-menu.event.service';
4
+ import { TieredMenuService } from '../../services/tiered-menu.service';
3
5
  import { takeUntil } from 'rxjs/operators';
4
6
  import { disableScroll, enableScroll } from '@seniorsistemas/angular-components/utils';
5
7
  import * as i0 from "@angular/core";
6
- import * as i1 from "../../services/tiered-menu.service";
7
- import * as i2 from "../../services/tiered-menu.event.service";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "../tiered-menu-item/tiered-menu-item.component";
10
- import * as i5 from "../tiered-menu-divider/tiered-menu-divider.component";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "../tiered-menu-item/tiered-menu-item.component";
10
+ import * as i3 from "../tiered-menu-divider/tiered-menu-divider.component";
11
11
  export class TieredMenuNestedComponent {
12
- tieredMenuService;
13
- _tieredMenuEventService;
12
+ tieredMenuService = inject(TieredMenuService);
13
+ _tieredMenuEventService = inject(TieredMenuEventService);
14
14
  items;
15
15
  top = 0;
16
16
  left = 0;
@@ -53,10 +53,6 @@ export class TieredMenuNestedComponent {
53
53
  break;
54
54
  }
55
55
  }
56
- constructor(tieredMenuService, _tieredMenuEventService) {
57
- this.tieredMenuService = tieredMenuService;
58
- this._tieredMenuEventService = _tieredMenuEventService;
59
- }
60
56
  ngOnInit() {
61
57
  this.tieredMenuService.currentItems = this.items;
62
58
  this._subscribeEvents();
@@ -160,13 +156,13 @@ export class TieredMenuNestedComponent {
160
156
  }
161
157
  });
162
158
  }
163
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TieredMenuNestedComponent, deps: [{ token: i1.TieredMenuService }, { token: i2.TieredMenuEventService }], target: i0.ɵɵFactoryTarget.Component });
164
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TieredMenuNestedComponent, selector: "ng-component", host: { listeners: { "window:resize": "onResize()", "document:click": "onDocumentClick($event)", "document:keydown": "onKeydownHandler($event)" } }, ngImport: i0, template: "<div\n class=\"menu menu--nested\"\n [ngStyle]=\"{\n top: top + 'px',\n left: left + 'px',\n }\"\n>\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: items }\"\n ></ng-container>\n</div>\n\n<ng-template\n #itemsTemplate\n let-items\n>\n @for (item of items; track item.id) {\n <div>\n @if (item.visible && !item.divider) {\n <s-tiered-menu-item\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [closeOnClick]=\"true\"\n >\n </s-tiered-menu-item>\n }\n @if (item.divider) {\n <s-tiered-menu-divider></s-tiered-menu-divider>\n }\n @if (item.submenu && item.isOpen) {\n <div>\n <div class=\"submenu\">\n <ng-container\n *ngTemplateOutlet=\"\n itemsTemplate;\n context: { $implicit: item.submenu }\n \"\n ></ng-container>\n </div>\n </div>\n }\n </div>\n }\n</ng-template>\n", styles: [".menu{background-color:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 12px #0000001a;display:inline-flex;flex-direction:column;min-width:176px;padding:4px 0;position:absolute;z-index:9999;overflow:auto;width:calc(100vw - 8px)}.menu .submenu{margin-left:24px}\n"], dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.TieredMenuItemComponent, selector: "s-tiered-menu-item", inputs: ["item", "focused", "highlight", "triggerEvent", "closeOnClick"] }, { kind: "component", type: i5.TieredMenuDividerComponent, selector: "s-tiered-menu-divider" }] });
159
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TieredMenuNestedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
160
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TieredMenuNestedComponent, selector: "ng-component", host: { listeners: { "window:resize": "onResize()", "document:click": "onDocumentClick($event)", "document:keydown": "onKeydownHandler($event)" } }, ngImport: i0, template: "<div\n class=\"menu menu--nested\"\n [ngStyle]=\"{\n top: top + 'px',\n left: left + 'px',\n }\"\n>\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: items }\"\n ></ng-container>\n</div>\n\n<ng-template\n #itemsTemplate\n let-items\n>\n @for (item of items; track item.id) {\n <div>\n @if (item.visible && !item.divider) {\n <s-tiered-menu-item\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [closeOnClick]=\"true\"\n >\n </s-tiered-menu-item>\n }\n @if (item.divider) {\n <s-tiered-menu-divider></s-tiered-menu-divider>\n }\n @if (item.submenu && item.isOpen) {\n <div>\n <div class=\"submenu\">\n <ng-container\n *ngTemplateOutlet=\"\n itemsTemplate;\n context: { $implicit: item.submenu }\n \"\n ></ng-container>\n </div>\n </div>\n }\n </div>\n }\n</ng-template>\n", styles: [".menu{background-color:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 12px #0000001a;display:inline-flex;flex-direction:column;min-width:176px;padding:4px 0;position:absolute;z-index:9999;overflow:auto;width:calc(100vw - 8px)}.menu .submenu{margin-left:24px}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.TieredMenuItemComponent, selector: "s-tiered-menu-item", inputs: ["item", "focused", "highlight", "triggerEvent", "closeOnClick"] }, { kind: "component", type: i3.TieredMenuDividerComponent, selector: "s-tiered-menu-divider" }] });
165
161
  }
166
162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TieredMenuNestedComponent, decorators: [{
167
163
  type: Component,
168
164
  args: [{ template: "<div\n class=\"menu menu--nested\"\n [ngStyle]=\"{\n top: top + 'px',\n left: left + 'px',\n }\"\n>\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: items }\"\n ></ng-container>\n</div>\n\n<ng-template\n #itemsTemplate\n let-items\n>\n @for (item of items; track item.id) {\n <div>\n @if (item.visible && !item.divider) {\n <s-tiered-menu-item\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [closeOnClick]=\"true\"\n >\n </s-tiered-menu-item>\n }\n @if (item.divider) {\n <s-tiered-menu-divider></s-tiered-menu-divider>\n }\n @if (item.submenu && item.isOpen) {\n <div>\n <div class=\"submenu\">\n <ng-container\n *ngTemplateOutlet=\"\n itemsTemplate;\n context: { $implicit: item.submenu }\n \"\n ></ng-container>\n </div>\n </div>\n }\n </div>\n }\n</ng-template>\n", styles: [".menu{background-color:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 12px #0000001a;display:inline-flex;flex-direction:column;min-width:176px;padding:4px 0;position:absolute;z-index:9999;overflow:auto;width:calc(100vw - 8px)}.menu .submenu{margin-left:24px}\n"] }]
169
- }], ctorParameters: () => [{ type: i1.TieredMenuService }, { type: i2.TieredMenuEventService }], propDecorators: { onResize: [{
165
+ }], propDecorators: { onResize: [{
170
166
  type: HostListener,
171
167
  args: ['window:resize']
172
168
  }], onDocumentClick: [{
@@ -176,4 +172,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
176
172
  type: HostListener,
177
173
  args: ['document:keydown', ['$event']]
178
174
  }] } });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGllcmVkLW1lbnUtbmVzdGVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90aWVyZWQtbWVudS9zcmMvbGliL3RpZXJlZC1tZW51L2NvbXBvbmVudHMvdGllcmVkLW1lbnUtbmVzdGVkL3RpZXJlZC1tZW51LW5lc3RlZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdGllcmVkLW1lbnUvc3JjL2xpYi90aWVyZWQtbWVudS9jb21wb25lbnRzL3RpZXJlZC1tZW51LW5lc3RlZC90aWVyZWQtbWVudS1uZXN0ZWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7QUFNdkYsTUFBTSxPQUFPLHlCQUF5QjtJQW9EZDtJQUNDO0lBcERkLEtBQUssQ0FBZ0M7SUFDckMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNSLElBQUksR0FBRyxDQUFDLENBQUM7SUFDaEIsd0JBQXdCO0lBRXhCLGtFQUFrRTtJQUMxRCxhQUFhLENBQThCO0lBQzNDLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBR3JDLFFBQVE7UUFDWCxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUdNLGVBQWUsQ0FBQyxLQUFpQjtRQUNwQyxxQ0FBcUM7UUFDckMsTUFBTSxNQUFNLEdB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Z0JBQ3JGLENBQUM7Z0JBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQjthQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsQ0FBQyxJQUF1QyxFQUFFLEVBQUU7WUFDbkQsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7d0dBcExRLHlCQUF5Qjs0RkFBekIseUJBQXlCLHlNQ2R0QyxreENBNENBOzs0RkQ5QmEseUJBQXlCO2tCQUpyQyxTQUFTOzsySEFlQyxRQUFRO3NCQURkLFlBQVk7dUJBQUMsZUFBZTtnQkFNdEIsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXbkMsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVGllcmVkTWVudUl0ZW1JbnRlcm5hbERhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGllcmVkLW1lbnUtaXRlbS1pbnRlcm5hbC1kYXRhJztcbmltcG9ydCB7IFRpZXJlZE1lbnVFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aWVyZWQtbWVudS5ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFRpZXJlZE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGllcmVkLW1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBkaXNhYmxlU2Nyb2xsLCBlbmFibGVTY3JvbGwgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpZXJlZC1tZW51LW5lc3RlZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGllcmVkLW1lbnUtbmVzdGVkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRpZXJlZE1lbnVOZXN0ZWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIGl0ZW1zITogVGllcmVkTWVudUl0ZW1JbnRlcm5hbERhdGFbXTtcbiAgICBwdWJsaWMgdG9wID0gMDtcbiAgICBwdWJsaWMgbGVmdCA9IDA7XG4gICAgLy8gcHVibGljIG1heEhlaWdodCA9IDA7XG5cbiAgICAvLyBTYXZlcyB0aGUgbGFzdCBvcGVuZWQgaXRlbSB0byBjbG9zZSBpdCB3aGVuIGEgbmV3IG9uZSBpcyBvcGVuZWRcbiAgICBwcml2YXRlIF9sYXN0T3Blbkl0ZW0/OiBUaWVyZWRNZW51SXRlbUludGVybmFsRGF0YTtcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgcHVibGljIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLmNsb3NlQWxsTWVudXNFdmVudC5lbWl0KCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gQ2xvc2luZyBtZW51IHdoZW4gY2xpY2tlZCBvdXRzaWRlLlxuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgRWxlbWVudDtcbiAgICAgICAgY29uc3QgY2xpY2tlZEluc2lkZSA9IHRhcmdldC5jbG9zZXN0KCdzLXRpZXJlZC1tZW51LWl0ZW0nKSB8fCB0YXJnZXQuY2xvc2VzdCgncy10aWVyZWQtbWVudS1kaXZpZGVyJyk7XG4gICAgICAgIGlmICghY2xpY2tlZEluc2lkZSkge1xuICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5jbG9zZUFsbE1lbnVzRXZlbnQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5jbG9zZUFsbE1lbnVzRXZlbnQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5zZWxlY3RJdGVtRXZlbnQuZW1pdCh0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICAgICAgLy8gV2hlbiBuZXN0ZWQgSSBuZWVkIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGl0ZW0ncyBwYXJlbnQgaXRlbSwgb3RoZXJ3aXNlIGp1c3QgdGhlIGN1cnJlbnQgaXRlbS5cbiAgICAgICAgICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLmNsb3NlSXRlbU1lbnVFdmVudC5lbWl0KHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0/LnBhcmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLm9wZW5JdGVtTWVudUV2ZW50LmVtaXQodGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLmRlY3JlbWVudEN1cnJlbnRJdGVtRXZlbnQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLmluY3JlbWVudEN1cnJlbnRJdGVtRXZlbnQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSB0aWVyZWRNZW51U2VydmljZTogVGllcmVkTWVudVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3RpZXJlZE1lbnVFdmVudFNlcnZpY2U6IFRpZXJlZE1lbnVFdmVudFNlcnZpY2UsXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZUV2ZW50cygpO1xuICAgICAgICBkaXNhYmxlU2Nyb2xsKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICAgICAgZW5hYmxlU2Nyb2xsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5jcmVtZW50Q3VySXRlbSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtID0gdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbXNbMF07XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJJbmRleCA9IHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW1zLmluZGV4T2YodGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSkgKyAxO1xuXG4gICAgICAgIGlmIChjdXJJbmRleCA8IHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSA9IHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW1zW2N1ckluZGV4XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0gPSB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtc1swXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtLmRpdmlkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudEN1ckl0ZW0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2RlY3JlbWVudEN1ckl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSkge1xuICAgICAgICAgICAgdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSA9IHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW1zWzBdO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VySW5kZXggPSB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtcy5pbmRleE9mKHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0pIC0gMTtcblxuICAgICAgICBpZiAoY3VySW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSA9IHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW1zW2N1ckluZGV4XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0gPVxuICAgICAgICAgICAgICAgIHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW1zW3RoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0uZGl2aWRlcikge1xuICAgICAgICAgICAgdGhpcy5fZGVjcmVtZW50Q3VySXRlbSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2xvc2VJdGVtKGl0ZW06IFRpZXJlZE1lbnVJdGVtSW50ZXJuYWxEYXRhKTogdm9pZCB7XG4gICAgICAgIGxldCBpdGVtQXV4ID0gdGhpcy5fbGFzdE9wZW5JdGVtO1xuXG4gICAgICAgIHdoaWxlIChpdGVtQXV4ICYmIGl0ZW1BdXggIT0gaXRlbSkge1xuICAgICAgICAgICAgaXRlbUF1eC5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGl0ZW1BdXggPSBpdGVtQXV4LnBhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSA9IGl0ZW1BdXggPz8gdGhpcy50aWVyZWRNZW51U2VydmljZS5pdGVtc1swXTtcbiAgICAgICAgdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbXMgPSBpdGVtQXV4Py5wYXJlbnQ/LnN1Ym1lbnUgfHwgdGhpcy50aWVyZWRNZW51U2VydmljZS5pdGVtcztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9vcGVuSXRlbShpdGVtOiBUaWVyZWRNZW51SXRlbUludGVybmFsRGF0YSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbT8uc3VibWVudSkge1xuICAgICAgICAgICAgaXRlbS5pc09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbXMgPSBpdGVtLnN1Ym1lbnU7XG5cbiAgICAgICAgICAgIC8vIE9ubHkgaGFzIGZvY3VzIGlmIHRoZXJlIGhhcyBhbHJlYWR5IGJlZW4gaW50ZXJhY3Rpb24uXG4gICAgICAgICAgICBpZiAodGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0gPSBpdGVtLnN1Ym1lbnVbMF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2xhc3RPcGVuSXRlbSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpZXJlZE1lbnVFdmVudFNlcnZpY2UuaW5jcmVtZW50Q3VycmVudEl0ZW1FdmVudC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50Q3VySXRlbSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLmRlY3JlbWVudEN1cnJlbnRJdGVtRXZlbnQucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RlY3JlbWVudEN1ckl0ZW0oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5zZWxlY3RJdGVtRXZlbnRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoaXRlbTogVGllcmVkTWVudUl0ZW1JbnRlcm5hbERhdGEgfCBudWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5jb21tYW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY29tbWFuZCgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBDbG9zZSBhbGwgbWVudXMgYWZ0ZXIgdGhlIGl0ZW0gd2FzIHNlbGVjdGVkLlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLmNsb3NlQWxsTWVudXNFdmVudC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5vcGVuSXRlbU1lbnVFdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBUaWVyZWRNZW51SXRlbUludGVybmFsRGF0YSB8IG51bGwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW1zLmluY2x1ZGVzKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUF1eCA9IHRoaXMuX2xhc3RPcGVuSXRlbTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGl0ZW1BdXg/LnBhcmVudD8ucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUF1eCA9IGl0ZW1BdXgucGFyZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLmNsb3NlSXRlbU1lbnVFdmVudC5lbWl0KGl0ZW1BdXg/LnBhcmVudCA/PyBpdGVtQXV4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RPcGVuSXRlbSA9IGl0ZW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZW5JdGVtKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3RpZXJlZE1lbnVFdmVudFNlcnZpY2UuY2xvc2VJdGVtTWVudUV2ZW50XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IFRpZXJlZE1lbnVJdGVtSW50ZXJuYWxEYXRhIHwgbnVsbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nsb3NlSXRlbShpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJtZW51IG1lbnUtLW5lc3RlZFwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgICB0b3A6IHRvcCArICdweCcsXG4gICAgICAgIGxlZnQ6IGxlZnQgKyAncHgnLFxuICAgIH1cIlxuPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtc1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbXMgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAgICNpdGVtc1RlbXBsYXRlXG4gICAgbGV0LWl0ZW1zXG4+XG4gICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgQGlmIChpdGVtLnZpc2libGUgJiYgIWl0ZW0uZGl2aWRlcikge1xuICAgICAgICAgICAgICAgIDxzLXRpZXJlZC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb2N1c2VkXT1cIml0ZW0gPT09IHRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW2Nsb3NlT25DbGlja109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9zLXRpZXJlZC1tZW51LWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGl0ZW0uZGl2aWRlcikge1xuICAgICAgICAgICAgICAgIDxzLXRpZXJlZC1tZW51LWRpdmlkZXI+PC9zLXRpZXJlZC1tZW51LWRpdmlkZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGl0ZW0uc3VibWVudSAmJiBpdGVtLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJtZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0uc3VibWVudSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGllcmVkLW1lbnUtbmVzdGVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90aWVyZWQtbWVudS9zcmMvbGliL3RpZXJlZC1tZW51L2NvbXBvbmVudHMvdGllcmVkLW1lbnUtbmVzdGVkL3RpZXJlZC1tZW51LW5lc3RlZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdGllcmVkLW1lbnUvc3JjL2xpYi90aWVyZWQtbWVudS9jb21wb25lbnRzL3RpZXJlZC1tZW51LW5lc3RlZC90aWVyZWQtbWVudS1uZXN0ZWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9CLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7OztBQU12RixNQUFNLE9BQU8seUJBQXlCO0lBQ3pCLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRW5FLEtBQUssQ0FBZ0M7SUFDckMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNSLElBQUksR0FBRyxDQUFDLENBQUM7SUFDaEIsd0JBQXdCO0lBRXhCLGtFQUFrRTtJQUMx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Qyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQztnQkFDckYsQ0FBQztnQkFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFUCxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCO2FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxDQUFDLElBQXVDLEVBQUUsRUFBRTtZQUNuRCxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzt3R0FsTFEseUJBQXlCOzRGQUF6Qix5QkFBeUIseU1DZHRDLGt4Q0E0Q0E7OzRGRDlCYSx5QkFBeUI7a0JBSnJDLFNBQVM7OzhCQWtCQyxRQUFRO3NCQURkLFlBQVk7dUJBQUMsZUFBZTtnQkFNdEIsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXbkMsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUaWVyZWRNZW51SXRlbUludGVybmFsRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy90aWVyZWQtbWVudS1pdGVtLWludGVybmFsLWRhdGEnO1xuaW1wb3J0IHsgVGllcmVkTWVudUV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpZXJlZC1tZW51LmV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGllcmVkTWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aWVyZWQtbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGRpc2FibGVTY3JvbGwsIGVuYWJsZVNjcm9sbCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGllcmVkLW1lbnUtbmVzdGVkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90aWVyZWQtbWVudS1uZXN0ZWQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGllcmVkTWVudU5lc3RlZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICByZWFkb25seSB0aWVyZWRNZW51U2VydmljZSA9IGluamVjdChUaWVyZWRNZW51U2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGllcmVkTWVudUV2ZW50U2VydmljZSA9IGluamVjdChUaWVyZWRNZW51RXZlbnRTZXJ2aWNlKTtcblxuICAgIHB1YmxpYyBpdGVtcyE6IFRpZXJlZE1lbnVJdGVtSW50ZXJuYWxEYXRhW107XG4gICAgcHVibGljIHRvcCA9IDA7XG4gICAgcHVibGljIGxlZnQgPSAwO1xuICAgIC8vIHB1YmxpYyBtYXhIZWlnaHQgPSAwO1xuXG4gICAgLy8gU2F2ZXMgdGhlIGxhc3Qgb3BlbmVkIGl0ZW0gdG8gY2xvc2UgaXQgd2hlbiBhIG5ldyBvbmUgaXMgb3BlbmVkXG4gICAgcHJpdmF0ZSBfbGFzdE9wZW5JdGVtPzogVGllcmVkTWVudUl0ZW1JbnRlcm5hbERhdGE7XG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIHB1YmxpYyBvblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5jbG9zZUFsbE1lbnVzRXZlbnQuZW1pdCgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIENsb3NpbmcgbWVudSB3aGVuIGNsaWNrZWQgb3V0c2lkZS5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSB0YXJnZXQuY2xvc2VzdCgncy10aWVyZWQtbWVudS1pdGVtJykgfHwgdGFyZ2V0LmNsb3Nlc3QoJ3MtdGllcmVkLW1lbnUtZGl2aWRlcicpO1xuICAgICAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpZXJlZE1lbnVFdmVudFNlcnZpY2UuY2xvc2VBbGxNZW51c0V2ZW50LmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuX3RpZXJlZE1lbnVFdmVudFNlcnZpY2UuY2xvc2VBbGxNZW51c0V2ZW50LmVtaXQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuX3RpZXJlZE1lbnVFdmVudFNlcnZpY2Uuc2VsZWN0SXRlbUV2ZW50LmVtaXQodGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIC8vIFdoZW4gbmVzdGVkIEkgbmVlZCBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBpdGVtJ3MgcGFyZW50IGl0ZW0sIG90aGVyd2lzZSBqdXN0IHRoZSBjdXJyZW50IGl0ZW0uXG4gICAgICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5jbG9zZUl0ZW1NZW51RXZlbnQuZW1pdCh0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtPy5wYXJlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5vcGVuSXRlbU1lbnVFdmVudC5lbWl0KHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5kZWNyZW1lbnRDdXJyZW50SXRlbUV2ZW50LmVtaXQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5pbmNyZW1lbnRDdXJyZW50SXRlbUV2ZW50LmVtaXQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbXMgPSB0aGlzLml0ZW1zO1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVFdmVudHMoKTtcbiAgICAgICAgZGlzYWJsZVNjcm9sbCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgICAgIGVuYWJsZVNjcm9sbCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2luY3JlbWVudEN1ckl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSkge1xuICAgICAgICAgICAgdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSA9IHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW1zWzBdO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VySW5kZXggPSB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtcy5pbmRleE9mKHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0pICsgMTtcblxuICAgICAgICBpZiAoY3VySW5kZXggPCB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0gPSB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtc1tjdXJJbmRleF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtID0gdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbS5kaXZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmNyZW1lbnRDdXJJdGVtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9kZWNyZW1lbnRDdXJJdGVtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0gPSB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtc1swXTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1ckluZGV4ID0gdGhpcy50aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbXMuaW5kZXhPZih0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtKSAtIDE7XG5cbiAgICAgICAgaWYgKGN1ckluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0gPSB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtc1tjdXJJbmRleF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtID1cbiAgICAgICAgICAgICAgICB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtc1t0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtLmRpdmlkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RlY3JlbWVudEN1ckl0ZW0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2Nsb3NlSXRlbShpdGVtOiBUaWVyZWRNZW51SXRlbUludGVybmFsRGF0YSk6IHZvaWQge1xuICAgICAgICBsZXQgaXRlbUF1eCA9IHRoaXMuX2xhc3RPcGVuSXRlbTtcblxuICAgICAgICB3aGlsZSAoaXRlbUF1eCAmJiBpdGVtQXV4ICE9IGl0ZW0pIHtcbiAgICAgICAgICAgIGl0ZW1BdXguaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVtQXV4ID0gaXRlbUF1eC5wYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLmlzT3BlbiA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0gPSBpdGVtQXV4ID8/IHRoaXMudGllcmVkTWVudVNlcnZpY2UuaXRlbXNbMF07XG4gICAgICAgIHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW1zID0gaXRlbUF1eD8ucGFyZW50Py5zdWJtZW51IHx8IHRoaXMudGllcmVkTWVudVNlcnZpY2UuaXRlbXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb3Blbkl0ZW0oaXRlbTogVGllcmVkTWVudUl0ZW1JbnRlcm5hbERhdGEpOiB2b2lkIHtcbiAgICAgICAgaWYgKGl0ZW0/LnN1Ym1lbnUpIHtcbiAgICAgICAgICAgIGl0ZW0uaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW1zID0gaXRlbS5zdWJtZW51O1xuXG4gICAgICAgICAgICAvLyBPbmx5IGhhcyBmb2N1cyBpZiB0aGVyZSBoYXMgYWxyZWFkeSBiZWVuIGludGVyYWN0aW9uLlxuICAgICAgICAgICAgaWYgKHRoaXMudGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtID0gaXRlbS5zdWJtZW51WzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9sYXN0T3Blbkl0ZW0gPSBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlRXZlbnRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLmluY3JlbWVudEN1cnJlbnRJdGVtRXZlbnQucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudEN1ckl0ZW0oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5kZWNyZW1lbnRDdXJyZW50SXRlbUV2ZW50LnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kZWNyZW1lbnRDdXJJdGVtKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3RpZXJlZE1lbnVFdmVudFNlcnZpY2Uuc2VsZWN0SXRlbUV2ZW50XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IFRpZXJlZE1lbnVJdGVtSW50ZXJuYWxEYXRhIHwgbnVsbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0uY29tbWFuZCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2xvc2UgYWxsIG1lbnVzIGFmdGVyIHRoZSBpdGVtIHdhcyBzZWxlY3RlZC5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5jbG9zZUFsbE1lbnVzRXZlbnQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3RpZXJlZE1lbnVFdmVudFNlcnZpY2Uub3Blbkl0ZW1NZW51RXZlbnRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoaXRlbTogVGllcmVkTWVudUl0ZW1JbnRlcm5hbERhdGEgfCBudWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtcy5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1BdXggPSB0aGlzLl9sYXN0T3Blbkl0ZW07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpdGVtQXV4Py5wYXJlbnQ/LnBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1BdXggPSBpdGVtQXV4LnBhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5jbG9zZUl0ZW1NZW51RXZlbnQuZW1pdChpdGVtQXV4Py5wYXJlbnQgPz8gaXRlbUF1eCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYXN0T3Blbkl0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVuSXRlbShpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLmNsb3NlSXRlbU1lbnVFdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBUaWVyZWRNZW51SXRlbUludGVybmFsRGF0YSB8IG51bGwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jbG9zZUl0ZW0oaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwibWVudSBtZW51LS1uZXN0ZWRcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgdG9wOiB0b3AgKyAncHgnLFxuICAgICAgICBsZWZ0OiBsZWZ0ICsgJ3B4JyxcbiAgICB9XCJcbj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbXNUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW1zIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgICAjaXRlbXNUZW1wbGF0ZVxuICAgIGxldC1pdGVtc1xuPlxuICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXM7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIEBpZiAoaXRlbS52aXNpYmxlICYmICFpdGVtLmRpdmlkZXIpIHtcbiAgICAgICAgICAgICAgICA8cy10aWVyZWQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbZm9jdXNlZF09XCJpdGVtID09PSB0aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uQ2xpY2tdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcy10aWVyZWQtbWVudS1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChpdGVtLmRpdmlkZXIpIHtcbiAgICAgICAgICAgICAgICA8cy10aWVyZWQtbWVudS1kaXZpZGVyPjwvcy10aWVyZWQtbWVudS1kaXZpZGVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChpdGVtLnN1Ym1lbnUgJiYgaXRlbS5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VibWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtLnN1Ym1lbnUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,15 +1,13 @@
1
- import { Directive, EventEmitter, HostListener, Input, Output, } from '@angular/core';
1
+ import { ApplicationRef, ChangeDetectorRef, ComponentFactoryResolver, Directive, ElementRef, EventEmitter, HostListener, Injector, Input, Output, inject } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import { takeUntil } from 'rxjs/operators';
4
4
  import { TieredMenuNestedComponent } from './components/tiered-menu-nested/tiered-menu-nested.component';
5
5
  import { TieredMenuComponent } from './components/tiered-menu/tiered-menu.component';
6
6
  import { TieredMenuEventService } from './services/tiered-menu.event.service';
7
+ import { TieredMenuGlobalService } from './services/tiered-menu.global.service';
7
8
  import { TieredMenuService } from './services/tiered-menu.service';
8
9
  import { enableScroll } from '@seniorsistemas/angular-components/utils';
9
10
  import * as i0 from "@angular/core";
10
- import * as i1 from "./services/tiered-menu.event.service";
11
- import * as i2 from "./services/tiered-menu.service";
12
- import * as i3 from "./services/tiered-menu.global.service";
13
11
  /**
14
12
  * @description Diretiva que anexa um menu multinível (tiered menu) a qualquer elemento do DOM.
15
13
  * Ao disparar o evento configurado no elemento hospedeiro, exibe um painel flutuante
@@ -24,14 +22,14 @@ import * as i3 from "./services/tiered-menu.global.service";
24
22
  * @category Navegação
25
23
  */
26
24
  export class TieredMenuDirective {
27
- _elementRef;
28
- _appRef;
29
- _componentFactoryResolver;
30
- _injector;
31
- _tieredMenuEventService;
32
- _tieredMenuService;
33
- _tieredMenuGlobalService;
34
- _changeDetectorRef;
25
+ _elementRef = inject(ElementRef);
26
+ _appRef = inject(ApplicationRef);
27
+ _componentFactoryResolver = inject(ComponentFactoryResolver);
28
+ _injector = inject(Injector);
29
+ _tieredMenuEventService = inject(TieredMenuEventService);
30
+ _tieredMenuService = inject(TieredMenuService);
31
+ _tieredMenuGlobalService = inject(TieredMenuGlobalService);
32
+ _changeDetectorRef = inject(ChangeDetectorRef);
35
33
  /**
36
34
  * @description Lista de itens exibidos no menu. Cada item pode conter um array de `children`
37
35
  * para criar submenus aninhados, além de propriedades como `label`, `icon`,
@@ -66,16 +64,6 @@ export class TieredMenuDirective {
66
64
  this._setMenuPosition();
67
65
  this._componentRef?.hostView.detectChanges();
68
66
  });
69
- constructor(_elementRef, _appRef, _componentFactoryResolver, _injector, _tieredMenuEventService, _tieredMenuService, _tieredMenuGlobalService, _changeDetectorRef) {
70
- this._elementRef = _elementRef;
71
- this._appRef = _appRef;
72
- this._componentFactoryResolver = _componentFactoryResolver;
73
- this._injector = _injector;
74
- this._tieredMenuEventService = _tieredMenuEventService;
75
- this._tieredMenuService = _tieredMenuService;
76
- this._tieredMenuGlobalService = _tieredMenuGlobalService;
77
- this._changeDetectorRef = _changeDetectorRef;
78
- }
79
67
  ngOnInit() {
80
68
  this._itemsAreValid = !!this.items?.length;
81
69
  if (!this._itemsAreValid)
@@ -247,7 +235,7 @@ export class TieredMenuDirective {
247
235
  this._tieredMenuService.items.find((i) => i.label === this.focusedItem?.label) ??
248
236
  this._tieredMenuService.items[0];
249
237
  }
250
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TieredMenuDirective, deps: [{ token: i0.ElementRef }, { token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i1.TieredMenuEventService }, { token: i2.TieredMenuService }, { token: i3.TieredMenuGlobalService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
238
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TieredMenuDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
251
239
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TieredMenuDirective, selector: "[sTieredMenu]", inputs: { items: "items", focusedItem: "focusedItem", triggerEvent: "triggerEvent", ariaLabel: "ariaLabel" }, outputs: { tieredMenuOpened: "tieredMenuOpened", tieredMenuClosed: "tieredMenuClosed" }, host: { listeners: { "click": "onClick($event)" } }, providers: [TieredMenuEventService, TieredMenuService], usesOnChanges: true, ngImport: i0 });
252
240
  }
253
241
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TieredMenuDirective, decorators: [{
@@ -256,7 +244,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
256
244
  selector: '[sTieredMenu]',
257
245
  providers: [TieredMenuEventService, TieredMenuService],
258
246
  }]
259
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i1.TieredMenuEventService }, { type: i2.TieredMenuService }, { type: i3.TieredMenuGlobalService }, { type: i0.ChangeDetectorRef }], propDecorators: { items: [{
247
+ }], propDecorators: { items: [{
260
248
  type: Input
261
249
  }], focusedItem: [{
262
250
  type: Input
@@ -272,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
272
260
  type: HostListener,
273
261
  args: ['click', ['$event']]
274
262
  }] } });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGllcmVkLW1lbnUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3RpZXJlZC1tZW51L3NyYy9saWIvdGllcmVkLW1lbnUvdGllcmVkLW1lbnUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLSCxTQUFTLEVBR1QsWUFBWSxFQUNaLFlBQVksRUFFWixLQUFLLEVBSUwsTUFBTSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXJGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7QUFFeEU7Ozs7Ozs7Ozs7OztHQVlHO0FBS0gsTUFBTSxPQUFPLG1CQUFtQjtJQWlEUDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBdkRyQjs7OztPQUlHO0lBRUksS0FBSyxHQUF5QixFQUFFLENBQUM7SUFFeEM7OztPQUdHO0lBRUksV0FBVyxHQUFtQyxTQUFTLENBQUM7SUFFL0Q7Ozs7OztPQU1HO0lBRUksWUFBWSxHQUFzQixPQUFPLENBQUM7SUFHMUMsU0FBUyxDQUFVO0lBR25CLGdCQUFnQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBR2hFLGdCQUFnQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBRS9ELGFB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LENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvblJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEVtYmVkZGVkVmlld1JlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUaWVyZWRNZW51TmVzdGVkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RpZXJlZC1tZW51LW5lc3RlZC90aWVyZWQtbWVudS1uZXN0ZWQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpZXJlZE1lbnVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGllcmVkLW1lbnUvdGllcmVkLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFRpZXJlZE1lbnVJdGVtRGF0YSB9IGZyb20gJy4vbW9kZWxzL3RpZXJlZC1tZW51LWl0ZW0tZGF0YSc7XG5pbXBvcnQgeyBUaWVyZWRNZW51RXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90aWVyZWQtbWVudS5ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFRpZXJlZE1lbnVHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90aWVyZWQtbWVudS5nbG9iYWwuc2VydmljZSc7XG5pbXBvcnQgeyBUaWVyZWRNZW51U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGllcmVkLW1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBUaWVyZWRNZW51SXRlbUludGVybmFsRGF0YSB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IGVuYWJsZVNjcm9sbCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEaXJldGl2YSBxdWUgYW5leGEgdW0gbWVudSBtdWx0aW7DrXZlbCAodGllcmVkIG1lbnUpIGEgcXVhbHF1ZXIgZWxlbWVudG8gZG8gRE9NLlxuICogQW8gZGlzcGFyYXIgbyBldmVudG8gY29uZmlndXJhZG8gbm8gZWxlbWVudG8gaG9zcGVkZWlybywgZXhpYmUgdW0gcGFpbmVsIGZsdXR1YW50ZVxuICogY29tIGl0ZW5zIGRlIG1lbnUgaGllcsOhcnF1aWNvcywgc3Vwb3J0YW5kbyBzdWJtZW51cyBhbmluaGFkb3MgZSBkaXZpc29yZXMuXG4gKiBFbSB0ZWxhcyBlc3RyZWl0YXMgKDwgNjAwcHgpLCBvIG1lbnUgw6kgZXhpYmlkbyBlbSBtb2RvIGFuaW5oYWRvIGZ1bGxzY3JlZW4uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxzLWJ1dHRvbiBbc1RpZXJlZE1lbnVdPVwibWVudUl0ZW1zXCIgdHJpZ2dlckV2ZW50PVwiY2xpY2tcIj5BYnJpciBtZW51PC9zLWJ1dHRvbj5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBOYXZlZ2HDp8Ojb1xuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tzVGllcmVkTWVudV0nLFxuICAgIHByb3ZpZGVyczogW1RpZXJlZE1lbnVFdmVudFNlcnZpY2UsIFRpZXJlZE1lbnVTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgVGllcmVkTWVudURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBpdGVucyBleGliaWRvcyBubyBtZW51LiBDYWRhIGl0ZW0gcG9kZSBjb250ZXIgdW0gYXJyYXkgZGUgYGNoaWxkcmVuYFxuICAgICAqIHBhcmEgY3JpYXIgc3VibWVudXMgYW5pbmhhZG9zLCBhbMOpbSBkZSBwcm9wcmllZGFkZXMgY29tbyBgbGFiZWxgLCBgaWNvbmAsXG4gICAgICogYGRpc2FibGVkYCwgYGNvbW1hbmRgIGUgYGRpdmlkZXJgLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW1zOiBUaWVyZWRNZW51SXRlbURhdGFbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEl0ZW0gcXVlIHJlY2ViZXLDoSBvIGZvY28gaW5pY2lhbCBhbyBhYnJpciBvIG1lbnUuXG4gICAgICogw5p0aWwgcGFyYSBkZXN0YWNhciB1bWEgb3DDp8OjbyBwcsOpLXNlbGVjaW9uYWRhIG91IGNvbnRleHR1YWwuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9jdXNlZEl0ZW06IFRpZXJlZE1lbnVJdGVtRGF0YSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWZpbmUgbyBldmVudG8gZG8gZWxlbWVudG8gaG9zcGVkZWlybyBxdWUgZGlzcGFyYSBhIGFiZXJ0dXJhIGRvIG1lbnUuXG4gICAgICogLSBgJ2NsaWNrJ2A6IGFicmUgbyBtZW51IGFvIGNsaWNhciBubyBlbGVtZW50byAocGFkcsOjbykuXG4gICAgICogLSBgJ2hvdmVyJ2A6IGFicmUgbyBtZW51IGFvIHBhc3NhciBvIG1vdXNlIHNvYnJlIG8gZWxlbWVudG8uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnY2xpY2snXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHJpZ2dlckV2ZW50OiAnY2xpY2snIHwgJ2hvdmVyJyA9ICdjbGljayc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWw/OiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdGllcmVkTWVudU9wZW5lZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRpZXJlZE1lbnVDbG9zZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgX2NvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9zaG93VGltZW91dD86IG51bWJlcjtcbiAgICBwcml2YXRlIF9pc05lc3RlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfbGFzdEFjdGl2ZUVsZW1lbnQ/OiBFbGVtZW50O1xuICAgIHByaXZhdGUgX3ByZXZpb3VzSXRlbXM6IFRpZXJlZE1lbnVJdGVtRGF0YVtdID0gW107XG4gICAgcHJpdmF0ZSBfaXRlbXNBcmVWYWxpZD86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zZXRNZW51UG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmPy5ob3N0Vmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGllcmVkTWVudUV2ZW50U2VydmljZTogVGllcmVkTWVudUV2ZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGllcmVkTWVudVNlcnZpY2U6IFRpZXJlZE1lbnVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF90aWVyZWRNZW51R2xvYmFsU2VydmljZTogVGllcmVkTWVudUdsb2JhbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2l0ZW1zQXJlVmFsaWQgPSAhIXRoaXMuaXRlbXM/Lmxlbmd0aDtcblxuICAgICAgICBpZiAoIXRoaXMuX2l0ZW1zQXJlVmFsaWQpIHJldHVybjtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpYmVFdmVudHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5faXRlbXNBcmVWYWxpZCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICghdGhpcy5fcHJldmlvdXNJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNJdGVtcyA9IHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLmNsb25lSXRlbXModGhpcy5pdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCAhPT0gdGhpcy5fcHJldmlvdXNJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLml0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jb21wYXJlSXRlbXModGhpcy5pdGVtc1tpXSwgdGhpcy5fcHJldmlvdXNJdGVtc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVTZXJ2aWNlSXRlbXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlYnVpbGRNZW51KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wcmV2aW91c0l0ZW1zID0gdGhpcy5fdGllcmVkTWVudVNlcnZpY2UuY2xvbmVJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5faXRlbXNBcmVWYWxpZCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pdGVtc0FyZVZhbGlkKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50ID09PSAnY2xpY2snICYmICF0aGlzLl9pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RBY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBFbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlTWVudSgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlTWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlU2VydmljZUl0ZW1zKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9jb21wb25lbnRSZWYgJiYgdGhpcy5fdGllcmVkTWVudVNlcnZpY2UuaXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3RpZXJlZE1lbnVHbG9iYWxTZXJ2aWNlLmxhc3RJbnN0YW5jZT8uX2Rlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuX3RpZXJlZE1lbnVHbG9iYWxTZXJ2aWNlLmxhc3RJbnN0YW5jZSA9IHRoaXM7XG5cbiAgICAgICAgICAgICh0aGlzLl9sYXN0QWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCk/LmJsdXIoKTtcbiAgICAgICAgICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnRpZXJlZE1lbnVPcGVuZWQuZW1pdCgpO1xuICAgICAgICAgICAgdGhpcy5faXNOZXN0ZWQgPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDwgNjAwO1xuXG4gICAgICAgICAgICB0aGlzLl9pc05lc3RlZCA/IHRoaXMuX2NyZWF0ZU5lc3RlZE1lbnUoKSA6IHRoaXMuX2NyZWF0ZVRpZXJlZE1lbnUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZVRpZXJlZE1lbnUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY29tcG9uZW50UmVmICYmIHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLml0ZW1zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYgPSB0aGlzLl9jcmVhdGVDb21wb25lbnQoVGllcmVkTWVudUNvbXBvbmVudCk7XG4gICAgICAgICAgICB0aGlzLl9hcHBSZWYuYXR0YWNoVmlldyh0aGlzLl9jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgICAgY29uc3QgZG9tRWxlbSA9IHRoaXMuX2NvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgICAgICAgICAgIHRoaXMuX3NldE1lbnVDb21wb25lbnRQcm9wZXJ0aWVzKCk7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuZGVzdHJveVJlcXVlc3QucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZXN0cm95KCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fc2V0TWVudVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVOZXN0ZWRNZW51KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NvbXBvbmVudFJlZiAmJiB0aGlzLl90aWVyZWRNZW51U2VydmljZS5pdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShUaWVyZWRNZW51TmVzdGVkQ29tcG9uZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IGNvbXBvbmVudEZhY3RvcnkuY3JlYXRlKHRoaXMuX2luamVjdG9yKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcFJlZi5hdHRhY2hWaWV3KHRoaXMuX2NvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICAgICBjb25zdCBkb21FbGVtID0gKHRoaXMuX2NvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgICAgICAgICAgIHRoaXMuX3NldE1lbnVDb21wb25lbnRQcm9wZXJ0aWVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zZXRNZW51UG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZUNvbXBvbmVudDxUPihjb21wb25lbnRDbGFzczogVHlwZTxUPikge1xuICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudENsYXNzKTtcbiAgICAgICAgY29uc3QgX2NvbXBvbmVudFJlZiA9IGNvbXBvbmVudEZhY3RvcnkuY3JlYXRlKHRoaXMuX2luamVjdG9yKTtcbiAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShfY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1lbnUnKSk7XG4gICAgICAgIF9jb21wb25lbnRSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBfY29tcG9uZW50UmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aWVyZWRNZW51Q2xvc2VkLmVtaXQoKTtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcodGhpcy5fY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYgPSBudWxsO1xuXG4gICAgICAgICAgICB0aGlzLl90aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbXMgPSB0aGlzLl90aWVyZWRNZW51U2VydmljZS5pdGVtcztcbiAgICAgICAgICAgIHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtID0gdGhpcy5fdGllcmVkTWVudVNlcnZpY2UuaXRlbXNbMF07XG4gICAgICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLmNsb3NlQWxsTWVudXNFdmVudC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRNZW51UG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBjb25zdCBJVEVNX0hFSUdIVCA9IDM3O1xuICAgICAgICBjb25zdCBJVEVNX1dJRFRIID1cbiAgICAgICAgICAgICh0aGlzLl9jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCk/LnF1ZXJ5U2VsZWN0b3IoJy5tZW51Jyk/LmNsaWVudFdpZHRoIHx8IDE3NjtcbiAgICAgICAgY29uc3QgRElWSURFUl9IRUlHSFQgPSA1O1xuICAgICAgICBjb25zdCBQQURESU5HID0gODtcbiAgICAgICAgY29uc3QgTUFSR0lOID0gNDtcbiAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLnRvcCA9IDg7XG4gICAgICAgIGxldCB7IGJvdHRvbSwgbGVmdCwgcmlnaHQgfSA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBjb25zdCBpdGVtc0NvdW50ID0gdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLml0ZW1zPy5yZWR1Y2UoXG4gICAgICAgICAgICAoY291bnQ6IG51bWJlciwgaXRlbTogVGllcmVkTWVudUl0ZW1JbnRlcm5hbERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIWl0ZW0uZGl2aWRlciA/IGNvdW50ICsgMSA6IGNvdW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgZGl2aWRlcnNDb3VudCA9IHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5pdGVtcz8ucmVkdWNlKFxuICAgICAgICAgICAgKGNvdW50OiBudW1iZXIsIGl0ZW06IFRpZXJlZE1lbnVJdGVtSW50ZXJuYWxEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZGl2aWRlciA/IGNvdW50ICsgMSA6IGNvdW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbWVudUhlaWdodCA9IGl0ZW1zQ291bnQgKiBJVEVNX0hFSUdIVCArIGRpdmlkZXJzQ291bnQgKiBESVZJREVSX0hFSUdIVCArIFBBRERJTkcgKyBNQVJHSU47XG4gICAgICAgIGNvbnN0IHJpZ2h0RnJlZVNwYWNlID0gd2luZG93LmlubmVyV2lkdGggLSByaWdodDtcbiAgICAgICAgY29uc3QgYm90dG9tRnJlZVNwYWNlID0gd2luZG93LmlubmVySGVpZ2h0IC0gYm90dG9tO1xuXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS50b3AgPSBib3R0b207XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5sZWZ0ID0gbGVmdDtcblxuICAgICAgICBpZiAoYm90dG9tRnJlZVNwYWNlIDw9IG1lbnVIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS50b3AgPSBNYXRoLm1heChzY3JvbGxZICsgYm90dG9tIC0gbWVudUhlaWdodCwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UudG9wID0gd2luZG93LnNjcm9sbFkgKyBib3R0b20gKyBNQVJHSU47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmlnaHRGcmVlU3BhY2UgPiAxNzYpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5sZWZ0ID0gd2luZG93LnNjcm9sbFggKyBsZWZ0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSB3aW5kb3cuc2Nyb2xsWCArIHJpZ2h0IC0gSVRFTV9XSURUSDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9pc05lc3RlZCkge1xuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBNQVJHSU47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRNZW51Q29tcG9uZW50UHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvbmVudFJlZiAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuaXRlbXMgPSB0aGlzLl90aWVyZWRNZW51U2VydmljZS5pdGVtcztcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5hcmlhTGFiZWwgPSB0aGlzLmFyaWFMYWJlbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3N1YnNjcmliZUV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGllcmVkTWVudUV2ZW50U2VydmljZS5jbG9zZUFsbE1lbnVzRXZlbnQucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLml0ZW1zID0gdGhpcy5fdGllcmVkTWVudVNlcnZpY2UubWFya0FsbEl0ZW1zQXNDbG9zZWQodGhpcy5fdGllcmVkTWVudVNlcnZpY2UuaXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5fZGVzdHJveSgpO1xuICAgICAgICAgICAgZW5hYmxlU2Nyb2xsKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NvbXBhcmVJdGVtcyhpdGVtMTogVGllcmVkTWVudUl0ZW1EYXRhLCBpdGVtMjogVGllcmVkTWVudUl0ZW1EYXRhKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShpdGVtMSkgPT09IEpTT04uc3RyaW5naWZ5KGl0ZW0yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZWJ1aWxkTWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3VwZGF0ZVNlcnZpY2VJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGllcmVkTWVudVNlcnZpY2UuaXRlbXMgPSB0aGlzLl90aWVyZWRNZW51U2VydmljZS5ub3JtYWxpemVEYXRhKHRoaXMuaXRlbXMpO1xuICAgICAgICB0aGlzLl90aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbXMgPSB0aGlzLl90aWVyZWRNZW51U2VydmljZS5pdGVtcztcblxuICAgICAgICB0aGlzLl90aWVyZWRNZW51U2VydmljZS5jdXJyZW50SXRlbSA9XG4gICAgICAgICAgICB0aGlzLl90aWVyZWRNZW51U2VydmljZS5pdGVtcy5maW5kKChpKSA9PiBpLmxhYmVsID09PSB0aGlzLmZvY3VzZWRJdGVtPy5sYWJlbCkgPz9cbiAgICAgICAgICAgIHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLml0ZW1zWzBdO1xuICAgIH1cbn1cblxuIl19
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGllcmVkLW1lbnUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3RpZXJlZC1tZW51L3NyYy9saWIvdGllcmVkLW1lbnUvdGllcmVkLW1lbnUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQW1CLFlBQVksRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFRLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuUCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUVyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBRXhFOzs7Ozs7Ozs7Ozs7R0FZRztBQUtILE1BQU0sT0FBTyxtQkFBbUI7SUFDWCxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakMseUJBQXlCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDN0QsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFR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LGdCQUFnQjtzQkFEdEIsTUFBTTtnQkErREEsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBDb21wb25lbnRSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRW1iZWRkZWRWaWV3UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFR5cGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFRpZXJlZE1lbnVOZXN0ZWRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGllcmVkLW1lbnUtbmVzdGVkL3RpZXJlZC1tZW51LW5lc3RlZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGllcmVkTWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90aWVyZWQtbWVudS90aWVyZWQtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGllcmVkTWVudUl0ZW1EYXRhIH0gZnJvbSAnLi9tb2RlbHMvdGllcmVkLW1lbnUtaXRlbS1kYXRhJztcbmltcG9ydCB7IFRpZXJlZE1lbnVFdmVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RpZXJlZC1tZW51LmV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGllcmVkTWVudUdsb2JhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RpZXJlZC1tZW51Lmdsb2JhbC5zZXJ2aWNlJztcbmltcG9ydCB7IFRpZXJlZE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90aWVyZWQtbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IFRpZXJlZE1lbnVJdGVtSW50ZXJuYWxEYXRhIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgZW5hYmxlU2Nyb2xsIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy91dGlscyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERpcmV0aXZhIHF1ZSBhbmV4YSB1bSBtZW51IG11bHRpbsOtdmVsICh0aWVyZWQgbWVudSkgYSBxdWFscXVlciBlbGVtZW50byBkbyBET00uXG4gKiBBbyBkaXNwYXJhciBvIGV2ZW50byBjb25maWd1cmFkbyBubyBlbGVtZW50byBob3NwZWRlaXJvLCBleGliZSB1bSBwYWluZWwgZmx1dHVhbnRlXG4gKiBjb20gaXRlbnMgZGUgbWVudSBoaWVyw6FycXVpY29zLCBzdXBvcnRhbmRvIHN1Ym1lbnVzIGFuaW5oYWRvcyBlIGRpdmlzb3Jlcy5cbiAqIEVtIHRlbGFzIGVzdHJlaXRhcyAoPCA2MDBweCksIG8gbWVudSDDqSBleGliaWRvIGVtIG1vZG8gYW5pbmhhZG8gZnVsbHNjcmVlbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHMtYnV0dG9uIFtzVGllcmVkTWVudV09XCJtZW51SXRlbXNcIiB0cmlnZ2VyRXZlbnQ9XCJjbGlja1wiPkFicmlyIG1lbnU8L3MtYnV0dG9uPlxuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IE5hdmVnYcOnw6NvXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NUaWVyZWRNZW51XScsXG4gICAgcHJvdmlkZXJzOiBbVGllcmVkTWVudUV2ZW50U2VydmljZSwgVGllcmVkTWVudVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBUaWVyZWRNZW51RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hcHBSZWYgPSBpbmplY3QoQXBwbGljYXRpb25SZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlciA9IGluamVjdChDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90aWVyZWRNZW51RXZlbnRTZXJ2aWNlID0gaW5qZWN0KFRpZXJlZE1lbnVFdmVudFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RpZXJlZE1lbnVTZXJ2aWNlID0gaW5qZWN0KFRpZXJlZE1lbnVTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90aWVyZWRNZW51R2xvYmFsU2VydmljZSA9IGluamVjdChUaWVyZWRNZW51R2xvYmFsU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3RhIGRlIGl0ZW5zIGV4aWJpZG9zIG5vIG1lbnUuIENhZGEgaXRlbSBwb2RlIGNvbnRlciB1bSBhcnJheSBkZSBgY2hpbGRyZW5gXG4gICAgICogcGFyYSBjcmlhciBzdWJtZW51cyBhbmluaGFkb3MsIGFsw6ltIGRlIHByb3ByaWVkYWRlcyBjb21vIGBsYWJlbGAsIGBpY29uYCxcbiAgICAgKiBgZGlzYWJsZWRgLCBgY29tbWFuZGAgZSBgZGl2aWRlcmAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXRlbXM6IFRpZXJlZE1lbnVJdGVtRGF0YVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSXRlbSBxdWUgcmVjZWJlcsOhIG8gZm9jbyBpbmljaWFsIGFvIGFicmlyIG8gbWVudS5cbiAgICAgKiDDmnRpbCBwYXJhIGRlc3RhY2FyIHVtYSBvcMOnw6NvIHByw6ktc2VsZWNpb25hZGEgb3UgY29udGV4dHVhbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb2N1c2VkSXRlbTogVGllcmVkTWVudUl0ZW1EYXRhIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERlZmluZSBvIGV2ZW50byBkbyBlbGVtZW50byBob3NwZWRlaXJvIHF1ZSBkaXNwYXJhIGEgYWJlcnR1cmEgZG8gbWVudS5cbiAgICAgKiAtIGAnY2xpY2snYDogYWJyZSBvIG1lbnUgYW8gY2xpY2FyIG5vIGVsZW1lbnRvIChwYWRyw6NvKS5cbiAgICAgKiAtIGAnaG92ZXInYDogYWJyZSBvIG1lbnUgYW8gcGFzc2FyIG8gbW91c2Ugc29icmUgbyBlbGVtZW50by5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdjbGljaydcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0cmlnZ2VyRXZlbnQ6ICdjbGljaycgfCAnaG92ZXInID0gJ2NsaWNrJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbD86IHN0cmluZztcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB0aWVyZWRNZW51T3BlbmVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdGllcmVkTWVudUNsb3NlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBfY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX3Nob3dUaW1lb3V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgX2lzTmVzdGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9sYXN0QWN0aXZlRWxlbWVudD86IEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBfcHJldmlvdXNJdGVtczogVGllcmVkTWVudUl0ZW1EYXRhW10gPSBbXTtcbiAgICBwcml2YXRlIF9pdGVtc0FyZVZhbGlkPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldE1lbnVQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLl9jb21wb25lbnRSZWY/Lmhvc3RWaWV3LmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXRlbXNBcmVWYWxpZCA9ICEhdGhpcy5pdGVtcz8ubGVuZ3RoO1xuXG4gICAgICAgIGlmICghdGhpcy5faXRlbXNBcmVWYWxpZCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuX3N1YnNjcmliZUV2ZW50cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pdGVtc0FyZVZhbGlkKSByZXR1cm47XG5cbiAgICAgICAgaWYgKCF0aGlzLl9wcmV2aW91c0l0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmV2aW91c0l0ZW1zID0gdGhpcy5fdGllcmVkTWVudVNlcnZpY2UuY2xvbmVJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoICE9PSB0aGlzLl9wcmV2aW91c0l0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2NvbXBhcmVJdGVtcyh0aGlzLml0ZW1zW2ldLCB0aGlzLl9wcmV2aW91c0l0ZW1zW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlcnZpY2VJdGVtcygpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5fcmVidWlsZE1lbnUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzSXRlbXMgPSB0aGlzLl90aWVyZWRNZW51U2VydmljZS5jbG9uZUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pdGVtc0FyZVZhbGlkKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgdGhpcy5fZGVzdHJveSgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2l0ZW1zQXJlVmFsaWQpIHJldHVybjtcblxuICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdjbGljaycgJiYgIXRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fbGFzdEFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVNZW51KCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVNZW51KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGVTZXJ2aWNlSXRlbXMoKTtcblxuICAgICAgICBpZiAoIXRoaXMuX2NvbXBvbmVudFJlZiAmJiB0aGlzLl90aWVyZWRNZW51U2VydmljZS5pdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudUdsb2JhbFNlcnZpY2UubGFzdEluc3RhbmNlPy5fZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudUdsb2JhbFNlcnZpY2UubGFzdEluc3RhbmNlID0gdGhpcztcblxuICAgICAgICAgICAgKHRoaXMuX2xhc3RBY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KT8uYmx1cigpO1xuICAgICAgICAgICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudGllcmVkTWVudU9wZW5lZC5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLl9pc05lc3RlZCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggPCA2MDA7XG5cbiAgICAgICAgICAgIHRoaXMuX2lzTmVzdGVkID8gdGhpcy5fY3JlYXRlTmVzdGVkTWVudSgpIDogdGhpcy5fY3JlYXRlVGllcmVkTWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlVGllcmVkTWVudSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jb21wb25lbnRSZWYgJiYgdGhpcy5fdGllcmVkTWVudVNlcnZpY2UuaXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMuX2NyZWF0ZUNvbXBvbmVudChUaWVyZWRNZW51Q29tcG9uZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2FwcFJlZi5hdHRhY2hWaWV3KHRoaXMuX2NvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICAgICBjb25zdCBkb21FbGVtID0gdGhpcy5fY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICAgICAgICAgICAgdGhpcy5fc2V0TWVudUNvbXBvbmVudFByb3BlcnRpZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5kZXN0cm95UmVxdWVzdC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3koKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9zZXRNZW51UG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZU5lc3RlZE1lbnUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY29tcG9uZW50UmVmICYmIHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLml0ZW1zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFRpZXJlZE1lbnVOZXN0ZWRDb21wb25lbnQpO1xuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeS5jcmVhdGUodGhpcy5faW5qZWN0b3IpO1xuICAgICAgICAgICAgdGhpcy5fYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5fY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgICAgIGNvbnN0IGRvbUVsZW0gPSAodGhpcy5fY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICAgICAgICAgICAgdGhpcy5fc2V0TWVudUNvbXBvbmVudFByb3BlcnRpZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3NldE1lbnVQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlQ29tcG9uZW50PFQ+KGNvbXBvbmVudENsYXNzOiBUeXBlPFQ+KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50Q2xhc3MpO1xuICAgICAgICBjb25zdCBfY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeS5jcmVhdGUodGhpcy5faW5qZWN0b3IpO1xuICAgICAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKF9jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubWVudScpKTtcbiAgICAgICAgX2NvbXBvbmVudFJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9jb21wb25lbnRSZWY7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5faXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnRpZXJlZE1lbnVDbG9zZWQuZW1pdCgpO1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9zaG93VGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLl9hcHBSZWYuZGV0YWNoVmlldyh0aGlzLl9jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IG51bGw7XG5cbiAgICAgICAgICAgIHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtcyA9IHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLml0ZW1zO1xuICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudVNlcnZpY2UuY3VycmVudEl0ZW0gPSB0aGlzLl90aWVyZWRNZW51U2VydmljZS5pdGVtc1swXTtcbiAgICAgICAgICAgIHRoaXMuX3RpZXJlZE1lbnVFdmVudFNlcnZpY2UuY2xvc2VBbGxNZW51c0V2ZW50LmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NldE1lbnVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGNvbnN0IElURU1fSEVJR0hUID0gMzc7XG4gICAgICAgIGNvbnN0IElURU1fV0lEVEggPVxuICAgICAgICAgICAgKHRoaXMuX2NvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KT8ucXVlcnlTZWxlY3RvcignLm1lbnUnKT8uY2xpZW50V2lkdGggfHwgMTc2O1xuICAgICAgICBjb25zdCBESVZJREVSX0hFSUdIVCA9IDU7XG4gICAgICAgIGNvbnN0IFBBRERJTkcgPSA4O1xuICAgICAgICBjb25zdCBNQVJHSU4gPSA0O1xuICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UudG9wID0gODtcbiAgICAgICAgbGV0IHsgYm90dG9tLCBsZWZ0LCByaWdodCB9ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zQ291bnQgPSB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuaXRlbXM/LnJlZHVjZShcbiAgICAgICAgICAgIChjb3VudDogbnVtYmVyLCBpdGVtOiBUaWVyZWRNZW51SXRlbUludGVybmFsRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhaXRlbS5kaXZpZGVyID8gY291bnQgKyAxIDogY291bnQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBkaXZpZGVyc0NvdW50ID0gdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLml0ZW1zPy5yZWR1Y2UoXG4gICAgICAgICAgICAoY291bnQ6IG51bWJlciwgaXRlbTogVGllcmVkTWVudUl0ZW1JbnRlcm5hbERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5kaXZpZGVyID8gY291bnQgKyAxIDogY291bnQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBtZW51SGVpZ2h0ID0gaXRlbXNDb3VudCAqIElURU1fSEVJR0hUICsgZGl2aWRlcnNDb3VudCAqIERJVklERVJfSEVJR0hUICsgUEFERElORyArIE1BUkdJTjtcbiAgICAgICAgY29uc3QgcmlnaHRGcmVlU3BhY2UgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHJpZ2h0O1xuICAgICAgICBjb25zdCBib3R0b21GcmVlU3BhY2UgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBib3R0b207XG5cbiAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLnRvcCA9IGJvdHRvbTtcbiAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBsZWZ0O1xuXG4gICAgICAgIGlmIChib3R0b21GcmVlU3BhY2UgPD0gbWVudUhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLnRvcCA9IE1hdGgubWF4KHNjcm9sbFkgKyBib3R0b20gLSBtZW51SGVpZ2h0LCAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS50b3AgPSB3aW5kb3cuc2Nyb2xsWSArIGJvdHRvbSArIE1BUkdJTjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyaWdodEZyZWVTcGFjZSA+IDE3Nikge1xuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSB3aW5kb3cuc2Nyb2xsWCArIGxlZnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UubGVmdCA9IHdpbmRvdy5zY3JvbGxYICsgcmlnaHQgLSBJVEVNX1dJRFRIO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2lzTmVzdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UubGVmdCA9IE1BUkdJTjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NldE1lbnVDb21wb25lbnRQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY29tcG9uZW50UmVmICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5pdGVtcyA9IHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLml0ZW1zO1xuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLmFyaWFMYWJlbCA9IHRoaXMuYXJpYUxhYmVsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlRXZlbnRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aWVyZWRNZW51RXZlbnRTZXJ2aWNlLmNsb3NlQWxsTWVudXNFdmVudC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudVNlcnZpY2UuaXRlbXMgPSB0aGlzLl90aWVyZWRNZW51U2VydmljZS5tYXJrQWxsSXRlbXNBc0Nsb3NlZCh0aGlzLl90aWVyZWRNZW51U2VydmljZS5pdGVtcyk7XG4gICAgICAgICAgICB0aGlzLl9kZXN0cm95KCk7XG4gICAgICAgICAgICBlbmFibGVTY3JvbGwoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29tcGFyZUl0ZW1zKGl0ZW0xOiBUaWVyZWRNZW51SXRlbURhdGEsIGl0ZW0yOiBUaWVyZWRNZW51SXRlbURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGl0ZW0xKSA9PT0gSlNPTi5zdHJpbmdpZnkoaXRlbTIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlYnVpbGRNZW51KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdXBkYXRlU2VydmljZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aWVyZWRNZW51U2VydmljZS5pdGVtcyA9IHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLm5vcm1hbGl6ZURhdGEodGhpcy5pdGVtcyk7XG4gICAgICAgIHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtcyA9IHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLml0ZW1zO1xuXG4gICAgICAgIHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLmN1cnJlbnRJdGVtID1cbiAgICAgICAgICAgIHRoaXMuX3RpZXJlZE1lbnVTZXJ2aWNlLml0ZW1zLmZpbmQoKGkpID0+IGkubGFiZWwgPT09IHRoaXMuZm9jdXNlZEl0ZW0/LmxhYmVsKSA/P1xuICAgICAgICAgICAgdGhpcy5fdGllcmVkTWVudVNlcnZpY2UuaXRlbXNbMF07XG4gICAgfVxufVxuXG4iXX0=
@@ -1,18 +1,13 @@
1
- import { Injectable } from "@angular/core";
1
+ import { Injectable, ApplicationRef, Injector, ComponentFactoryResolver, inject } from "@angular/core";
2
2
  import { ToastComponent } from "./toast.component";
3
3
  import { first } from "rxjs/operators";
4
4
  import * as i0 from "@angular/core";
5
5
  export class ToastService {
6
- appRef;
7
- injector;
8
- componentFactoryResolver;
6
+ appRef = inject(ApplicationRef);
7
+ injector = inject(Injector);
8
+ componentFactoryResolver = inject(ComponentFactoryResolver);
9
9
  activeToasts = [];
10
10
  globalToastHostElement = null;
11
- constructor(appRef, injector, componentFactoryResolver) {
12
- this.appRef = appRef;
13
- this.injector = injector;
14
- this.componentFactoryResolver = componentFactoryResolver;
15
- }
16
11
  ensureGlobalToastHost() {
17
12
  if (!this.globalToastHostElement) {
18
13
  this.globalToastHostElement = document.createElement("div");
@@ -56,7 +51,7 @@ export class ToastService {
56
51
  });
57
52
  this.activeToasts.push(componentRef);
58
53
  }
59
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastService, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
60
55
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastService, providedIn: "root" });
61
56
  }
62
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastService, decorators: [{
@@ -64,5 +59,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
64
59
  args: [{
65
60
  providedIn: "root",
66
61
  }]
67
- }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }] });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90b2FzdC9zcmMvbGliL3RvYXN0L3RvYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBcUYsTUFBTSxlQUFlLENBQUM7QUFFOUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLdkMsTUFBTSxPQUFPLFlBQVk7SUFLVDtJQUNBO0lBQ0E7SUFOSixZQUFZLEdBQW1DLEVBQUUsQ0FBQztJQUNsRCxzQkFBc0IsR0FBdUIsSUFBSSxDQUFDO0lBRTFELFlBQ1ksTUFBc0IsRUFDdEIsUUFBa0IsRUFDbEIsd0JBQWtEO1FBRmxELFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtJQUMxRCxDQUFDO0lBRUcscUJBQXFCO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUV2RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDbkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1lBQzNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUNyRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQy9DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztZQUNuRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDbkQsQ0FBQztJQUNMLENBQUM7SUFFTSxJQUFJLENBQUMsS0FBWTtRQUNwQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvRixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDN0MsQ0FBQztRQUVELFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHO1lBQzFCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsR0FBRyxLQUFLO1NBQ1gsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFJLFlBQVksQ0FBQyxRQUFpQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFDNUYsSUFBSSxDQUFDLHNCQUF1QixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDL0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBRXhDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFdEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzlDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1lBQ3ZDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7d0dBL0RRLFlBQVk7NEdBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgQ29tcG9uZW50UmVmLCBBcHBsaWNhdGlvblJlZiwgSW5qZWN0b3IsIEVtYmVkZGVkVmlld1JlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgVG9hc3RDb21wb25lbnQgfSBmcm9tIFwiLi90b2FzdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFRvYXN0IH0gZnJvbSBcIi4vdHlwZXMvdG9hc3RcIjtcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGFjdGl2ZVRvYXN0czogQ29tcG9uZW50UmVmPFRvYXN0Q29tcG9uZW50PltdID0gW107XG4gICAgcHJpdmF0ZSBnbG9iYWxUb2FzdEhvc3RFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgICApIHsgfVxuXG4gICAgcHJpdmF0ZSBlbnN1cmVHbG9iYWxUb2FzdEhvc3QoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbFRvYXN0SG9zdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmdsb2JhbFRvYXN0SG9zdEVsZW1lbnQpO1xuXG4gICAgICAgICAgICB0aGlzLmdsb2JhbFRvYXN0SG9zdEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwiZmxleFwiO1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50LnN0eWxlLmZsZXhEaXJlY3Rpb24gPSBcImNvbHVtblwiO1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gXCJmaXhlZFwiO1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50LnN0eWxlLnJpZ2h0ID0gXCIyMHB4XCI7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbFRvYXN0SG9zdEVsZW1lbnQuc3R5bGUudG9wID0gXCIyMHB4XCI7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbFRvYXN0SG9zdEVsZW1lbnQuc3R5bGUuekluZGV4ID0gXCI5OTk5OVwiO1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50LnN0eWxlLmdhcCA9IFwiMTBweFwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNob3codG9hc3Q6IFRvYXN0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW5zdXJlR2xvYmFsVG9hc3RIb3N0KCk7XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFRvYXN0Q29tcG9uZW50KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG5cbiAgICAgICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG4gICAgICAgIGlmICghdG9hc3Quc3RpY2t5KSB7XG4gICAgICAgICAgICB0b2FzdC5kdXJhdGlvbiA9IHRvYXN0LmR1cmF0aW9uID8/IDEwMDAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnRvYXN0ID0ge1xuICAgICAgICAgICAgY2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICAuLi50b2FzdCxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICB0aGlzLmdsb2JhbFRvYXN0SG9zdEVsZW1lbnQhLmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICAgICAgICBkb21FbGVtLnN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcbiAgICAgICAgZG9tRWxlbS5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiY2VudGVyXCI7XG5cbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmRpc21pc3MucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVRvYXN0cy5pbmRleE9mKGNvbXBvbmVudFJlZik7XG5cbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRvYXN0cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVUb2FzdHMubGVuZ3RoID09PSAwICYmIHRoaXMuZ2xvYmFsVG9hc3RIb3N0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2xvYmFsVG9hc3RIb3N0RWxlbWVudC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdsb2JhbFRvYXN0SG9zdEVsZW1lbnQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFjdGl2ZVRvYXN0cy5wdXNoKGNvbXBvbmVudFJlZik7XG4gICAgfVxufVxuIl19
62
+ }] });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90b2FzdC9zcmMvbGliL3RvYXN0L3RvYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsY0FBYyxFQUFFLFFBQVEsRUFBbUIsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBS3ZDLE1BQU0sT0FBTyxZQUFZO0lBQ2IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBRTVELFlBQVksR0FBbUMsRUFBRSxDQUFDO0lBQ2xELHNCQUFzQixHQUF1QixJQUFJLENBQUM7SUFFbEQscUJBQXFCO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUV2RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDbkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1lBQzNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUNyRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQy9DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztZQUNuRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDbkQsQ0FBQztJQUNMLENBQUM7SUFFTSxJQUFJLENBQUMsS0FBWTtRQUNwQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvRixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDN0MsQ0FBQztRQUVELFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHO1lBQzFCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsR0FBRyxLQUFLO1NBQ1gsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFJLFlBQVksQ0FBQyxRQUFpQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFDNUYsSUFBSSxDQUFDLHNCQUF1QixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDL0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBRXhDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFdEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzlDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1lBQ3ZDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7d0dBN0RRLFlBQVk7NEdBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgQ29tcG9uZW50UmVmLCBBcHBsaWNhdGlvblJlZiwgSW5qZWN0b3IsIEVtYmVkZGVkVmlld1JlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBUb2FzdENvbXBvbmVudCB9IGZyb20gXCIuL3RvYXN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgVG9hc3QgfSBmcm9tIFwiLi90eXBlcy90b2FzdFwiO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdFNlcnZpY2Uge1xuICAgIHByaXZhdGUgYXBwUmVmID0gaW5qZWN0KEFwcGxpY2F0aW9uUmVmKTtcbiAgICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciA9IGluamVjdChDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpO1xuXG4gICAgcHJpdmF0ZSBhY3RpdmVUb2FzdHM6IENvbXBvbmVudFJlZjxUb2FzdENvbXBvbmVudD5bXSA9IFtdO1xuICAgIHByaXZhdGUgZ2xvYmFsVG9hc3RIb3N0RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgZW5zdXJlR2xvYmFsVG9hc3RIb3N0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsVG9hc3RIb3N0RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50KTtcblxuICAgICAgICAgICAgdGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsVG9hc3RIb3N0RWxlbWVudC5zdHlsZS5mbGV4RGlyZWN0aW9uID0gXCJjb2x1bW5cIjtcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsVG9hc3RIb3N0RWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9IFwiZml4ZWRcIjtcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsVG9hc3RIb3N0RWxlbWVudC5zdHlsZS5yaWdodCA9IFwiMjBweFwiO1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50LnN0eWxlLnRvcCA9IFwiMjBweFwiO1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50LnN0eWxlLnpJbmRleCA9IFwiOTk5OTlcIjtcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsVG9hc3RIb3N0RWxlbWVudC5zdHlsZS5nYXAgPSBcIjEwcHhcIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzaG93KHRvYXN0OiBUb2FzdCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVuc3VyZUdsb2JhbFRvYXN0SG9zdCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShUb2FzdENvbXBvbmVudCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGNvbXBvbmVudEZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xuXG4gICAgICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcblxuICAgICAgICBpZiAoIXRvYXN0LnN0aWNreSkge1xuICAgICAgICAgICAgdG9hc3QuZHVyYXRpb24gPSB0b2FzdC5kdXJhdGlvbiA/PyAxMDAwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS50b2FzdCA9IHtcbiAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgLi4udG9hc3QsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgdGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50IS5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgICAgICAgZG9tRWxlbS5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gICAgICAgIGRvbUVsZW0uc3R5bGUuanVzdGlmeUNvbnRlbnQgPSBcImNlbnRlclwiO1xuXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5kaXNtaXNzLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVUb2FzdHMuaW5kZXhPZihjb21wb25lbnRSZWYpO1xuXG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUb2FzdHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlVG9hc3RzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmdsb2JhbFRvYXN0SG9zdEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdsb2JhbFRvYXN0SG9zdEVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5nbG9iYWxUb2FzdEhvc3RFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVUb2FzdHMucHVzaChjb21wb25lbnRSZWYpO1xuICAgIH1cbn1cbiJdfQ==