@eui/ecl 17.0.0-rc.1 → 17.0.0-rc.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 (245) hide show
  1. package/docs/classes/EclMenuItemSelectEvent.html +3 -3
  2. package/docs/components/EclMenuItemComponent.html +117 -1
  3. package/docs/dependencies.html +27 -41
  4. package/docs/js/search/search_index.js +2 -2
  5. package/esm2022/lib/components/ecl-accordion/ecl-accordion-item.component.mjs +3 -3
  6. package/esm2022/lib/components/ecl-accordion/ecl-accordion.component.mjs +3 -3
  7. package/esm2022/lib/components/ecl-accordion/ecl-accordion.module.mjs +4 -4
  8. package/esm2022/lib/components/ecl-app/ecl-app.component.mjs +3 -3
  9. package/esm2022/lib/components/ecl-app/ecl-app.module.mjs +4 -4
  10. package/esm2022/lib/components/ecl-banner/ecl-banner-credit.directive.mjs +3 -3
  11. package/esm2022/lib/components/ecl-banner/ecl-banner-description.directive.mjs +6 -6
  12. package/esm2022/lib/components/ecl-banner/ecl-banner-picture.directive.mjs +6 -6
  13. package/esm2022/lib/components/ecl-banner/ecl-banner-title.directive.mjs +6 -6
  14. package/esm2022/lib/components/ecl-banner/ecl-banner.component.mjs +3 -3
  15. package/esm2022/lib/components/ecl-banner/ecl-banner.module.mjs +4 -4
  16. package/esm2022/lib/components/ecl-base.directive.mjs +3 -3
  17. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote-picture.directive.mjs +6 -6
  18. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote.component.mjs +3 -3
  19. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote.module.mjs +4 -4
  20. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb-segment.component.mjs +3 -3
  21. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb.component.mjs +3 -3
  22. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb.module.mjs +4 -4
  23. package/esm2022/lib/components/ecl-button/ecl-button-label.directive.mjs +3 -3
  24. package/esm2022/lib/components/ecl-button/ecl-button.component.mjs +3 -3
  25. package/esm2022/lib/components/ecl-button/ecl-button.module.mjs +4 -4
  26. package/esm2022/lib/components/ecl-card/ecl-card-body.component.mjs +3 -3
  27. package/esm2022/lib/components/ecl-card/ecl-card-image/ecl-card-image.component.mjs +3 -3
  28. package/esm2022/lib/components/ecl-card/ecl-card-picture.directive.mjs +6 -6
  29. package/esm2022/lib/components/ecl-card/ecl-card.component.mjs +3 -3
  30. package/esm2022/lib/components/ecl-card/ecl-card.module.mjs +4 -4
  31. package/esm2022/lib/components/ecl-carousel/ecl-carousel-item.component.mjs +3 -3
  32. package/esm2022/lib/components/ecl-carousel/ecl-carousel.component.mjs +3 -3
  33. package/esm2022/lib/components/ecl-carousel/ecl-carousel.module.mjs +4 -4
  34. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter/ecl-category-filter.component.mjs +3 -3
  35. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-item.component.mjs +3 -3
  36. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-list.component.mjs +3 -3
  37. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter.module.mjs +4 -4
  38. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-help.component.mjs +3 -3
  39. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-input.directive.mjs +3 -3
  40. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-label.component.mjs +3 -3
  41. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox.directive.mjs +3 -3
  42. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox.module.mjs +4 -4
  43. package/esm2022/lib/components/ecl-content-block/ecl-content-block-elements.directive.mjs +51 -51
  44. package/esm2022/lib/components/ecl-content-block/ecl-content-block.component.mjs +3 -3
  45. package/esm2022/lib/components/ecl-content-block/ecl-content-block.module.mjs +4 -4
  46. package/esm2022/lib/components/ecl-content-item/ecl-content-item-image.directive.mjs +6 -6
  47. package/esm2022/lib/components/ecl-content-item/ecl-content-item.component.mjs +3 -3
  48. package/esm2022/lib/components/ecl-content-item/ecl-content-item.module.mjs +4 -4
  49. package/esm2022/lib/components/ecl-date-block/ecl-date-block.component.mjs +3 -3
  50. package/esm2022/lib/components/ecl-date-block/ecl-date-block.module.mjs +4 -4
  51. package/esm2022/lib/components/ecl-date-picker/ecl-date-picker.directive.mjs +3 -3
  52. package/esm2022/lib/components/ecl-date-picker/ecl-date-picker.module.mjs +4 -4
  53. package/esm2022/lib/components/ecl-expandable/ecl-expandable.component.mjs +3 -3
  54. package/esm2022/lib/components/ecl-expandable/ecl-expandable.module.mjs +4 -4
  55. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-description.component.mjs +3 -3
  56. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-item.component.mjs +3 -3
  57. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-title.component.mjs +3 -3
  58. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-value.component.mjs +3 -3
  59. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-view-all.component.mjs +3 -3
  60. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures.component.mjs +3 -3
  61. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures.module.mjs +4 -4
  62. package/esm2022/lib/components/ecl-featured/ecl-featured-item-description.component.mjs +3 -3
  63. package/esm2022/lib/components/ecl-featured/ecl-featured-item-link.directive.mjs +3 -3
  64. package/esm2022/lib/components/ecl-featured/ecl-featured-item.component.mjs +3 -3
  65. package/esm2022/lib/components/ecl-featured/ecl-featured.component.mjs +3 -3
  66. package/esm2022/lib/components/ecl-featured/ecl-featured.module.mjs +4 -4
  67. package/esm2022/lib/components/ecl-feedback-message/ecl-feedback-message.directive.mjs +3 -3
  68. package/esm2022/lib/components/ecl-feedback-message/ecl-feedback-message.module.mjs +4 -4
  69. package/esm2022/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.mjs +3 -3
  70. package/esm2022/lib/components/ecl-file/ecl-file-items/ecl-file-items.component.mjs +3 -3
  71. package/esm2022/lib/components/ecl-file/ecl-file-picture.directive.mjs +6 -6
  72. package/esm2022/lib/components/ecl-file/ecl-file-taxonomy/ecl-file-taxonomy.component.mjs +3 -3
  73. package/esm2022/lib/components/ecl-file/ecl-file.component.mjs +3 -3
  74. package/esm2022/lib/components/ecl-file/ecl-file.module.mjs +4 -4
  75. package/esm2022/lib/components/ecl-file-upload/ecl-file-upload.directive.mjs +3 -3
  76. package/esm2022/lib/components/ecl-file-upload/ecl-file-upload.module.mjs +4 -4
  77. package/esm2022/lib/components/ecl-form-group/ecl-form-group.component.mjs +3 -3
  78. package/esm2022/lib/components/ecl-form-group/ecl-form-group.module.mjs +4 -4
  79. package/esm2022/lib/components/ecl-form-label/ecl-form-label.component.mjs +3 -3
  80. package/esm2022/lib/components/ecl-form-label/ecl-form-label.module.mjs +4 -4
  81. package/esm2022/lib/components/ecl-gallery/ecl-gallery-footer.component.mjs +3 -3
  82. package/esm2022/lib/components/ecl-gallery/ecl-gallery-item.component.mjs +3 -3
  83. package/esm2022/lib/components/ecl-gallery/ecl-gallery-media.directive.mjs +6 -6
  84. package/esm2022/lib/components/ecl-gallery/ecl-gallery.component.mjs +3 -3
  85. package/esm2022/lib/components/ecl-gallery/ecl-gallery.module.mjs +4 -4
  86. package/esm2022/lib/components/ecl-help-block/ecl-help-block.directive.mjs +3 -3
  87. package/esm2022/lib/components/ecl-help-block/ecl-help-block.module.mjs +4 -4
  88. package/esm2022/lib/components/ecl-icon/ecl-icon.component.mjs +3 -3
  89. package/esm2022/lib/components/ecl-icon/ecl-icon.module.mjs +4 -4
  90. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation-item.component.mjs +3 -3
  91. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.mjs +3 -3
  92. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.module.mjs +4 -4
  93. package/esm2022/lib/components/ecl-label/ecl-label.directive.mjs +3 -3
  94. package/esm2022/lib/components/ecl-label/ecl-label.module.mjs +4 -4
  95. package/esm2022/lib/components/ecl-link/ecl-link-label.directive.mjs +3 -3
  96. package/esm2022/lib/components/ecl-link/ecl-link.directive.mjs +3 -3
  97. package/esm2022/lib/components/ecl-link/ecl-link.module.mjs +4 -4
  98. package/esm2022/lib/components/ecl-list/ecl-description-list-definition/ecl-description-list-definition.component.mjs +3 -3
  99. package/esm2022/lib/components/ecl-list/ecl-description-list-definition-item.directive.mjs +3 -3
  100. package/esm2022/lib/components/ecl-list/ecl-list.directive.mjs +18 -18
  101. package/esm2022/lib/components/ecl-list/ecl-list.module.mjs +4 -4
  102. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-icon.directive.mjs +3 -3
  103. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-image/ecl-list-illustration-image.component.mjs +3 -3
  104. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-item.component.mjs +3 -3
  105. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-picture.directive.mjs +6 -6
  106. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration.component.mjs +3 -3
  107. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration.module.mjs +4 -4
  108. package/esm2022/lib/components/ecl-media-container/ecl-media-container-iframe.directive.mjs +3 -3
  109. package/esm2022/lib/components/ecl-media-container/ecl-media-container-item.directive.mjs +3 -3
  110. package/esm2022/lib/components/ecl-media-container/ecl-media-container-picture.directive.mjs +3 -3
  111. package/esm2022/lib/components/ecl-media-container/ecl-media-container.component.mjs +3 -3
  112. package/esm2022/lib/components/ecl-media-container/ecl-media-container.module.mjs +4 -4
  113. package/esm2022/lib/components/ecl-menu/common/ecl-menu-item.event.mjs +1 -1
  114. package/esm2022/lib/components/ecl-menu/ecl-menu/ecl-menu-item.component.mjs +75 -49
  115. package/esm2022/lib/components/ecl-menu/ecl-menu/ecl-menu.component.mjs +14 -4
  116. package/esm2022/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.mjs +3 -3
  117. package/esm2022/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.mjs +9 -4
  118. package/esm2022/lib/components/ecl-menu/ecl-menu.module.mjs +4 -4
  119. package/esm2022/lib/components/ecl-message/ecl-message-title.directive.mjs +3 -3
  120. package/esm2022/lib/components/ecl-message/ecl-message.component.mjs +3 -3
  121. package/esm2022/lib/components/ecl-message/ecl-message.module.mjs +4 -4
  122. package/esm2022/lib/components/ecl-modal/ecl-modal-body.component.mjs +3 -3
  123. package/esm2022/lib/components/ecl-modal/ecl-modal-close.directive.mjs +3 -3
  124. package/esm2022/lib/components/ecl-modal/ecl-modal-footer.component.mjs +3 -3
  125. package/esm2022/lib/components/ecl-modal/ecl-modal-header.component.mjs +3 -3
  126. package/esm2022/lib/components/ecl-modal/ecl-modal-trigger.directive.mjs +3 -3
  127. package/esm2022/lib/components/ecl-modal/ecl-modal.component.mjs +3 -3
  128. package/esm2022/lib/components/ecl-modal/ecl-modal.module.mjs +4 -4
  129. package/esm2022/lib/components/ecl-multiselect/boldText.pipe.mjs +3 -3
  130. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.mjs +3 -3
  131. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.mjs +3 -3
  132. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.mjs +3 -3
  133. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.mjs +3 -3
  134. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-option.directive.mjs +3 -3
  135. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect.component.mjs +3 -3
  136. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect.module.mjs +4 -4
  137. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-image/ecl-navigation-list-image.component.mjs +3 -3
  138. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-item.component.mjs +3 -3
  139. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-picture.directive.mjs +6 -6
  140. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list.component.mjs +3 -3
  141. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list.module.mjs +4 -4
  142. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker-item.component.mjs +3 -3
  143. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker.component.mjs +3 -3
  144. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker.module.mjs +4 -4
  145. package/esm2022/lib/components/ecl-page-header/ecl-page-header-background.directive.mjs +6 -6
  146. package/esm2022/lib/components/ecl-page-header/ecl-page-header-description/ecl-page-header-description.component.mjs +3 -3
  147. package/esm2022/lib/components/ecl-page-header/ecl-page-header-description.directive.mjs +9 -9
  148. package/esm2022/lib/components/ecl-page-header/ecl-page-header-meta.directive.mjs +6 -6
  149. package/esm2022/lib/components/ecl-page-header/ecl-page-header-title.directive.mjs +3 -3
  150. package/esm2022/lib/components/ecl-page-header/ecl-page-header.component.mjs +3 -3
  151. package/esm2022/lib/components/ecl-page-header/ecl-page-header.module.mjs +4 -4
  152. package/esm2022/lib/components/ecl-pagination/ecl-pagination-item.component.mjs +3 -3
  153. package/esm2022/lib/components/ecl-pagination/ecl-pagination.component.mjs +3 -3
  154. package/esm2022/lib/components/ecl-pagination/ecl-pagination.module.mjs +4 -4
  155. package/esm2022/lib/components/ecl-popover/ecl-popover-content.directive.mjs +3 -3
  156. package/esm2022/lib/components/ecl-popover/ecl-popover-list.directive.mjs +9 -9
  157. package/esm2022/lib/components/ecl-popover/ecl-popover-toggle.directive.mjs +3 -3
  158. package/esm2022/lib/components/ecl-popover/ecl-popover.component.mjs +3 -3
  159. package/esm2022/lib/components/ecl-popover/ecl-popover.module.mjs +4 -4
  160. package/esm2022/lib/components/ecl-radio/ecl-radio-help.component.mjs +3 -3
  161. package/esm2022/lib/components/ecl-radio/ecl-radio-input.directive.mjs +3 -3
  162. package/esm2022/lib/components/ecl-radio/ecl-radio-label.component.mjs +3 -3
  163. package/esm2022/lib/components/ecl-radio/ecl-radio.directive.mjs +3 -3
  164. package/esm2022/lib/components/ecl-radio/ecl-radio.module.mjs +4 -4
  165. package/esm2022/lib/components/ecl-range/ecl-range-value.component.mjs +3 -3
  166. package/esm2022/lib/components/ecl-range/ecl-range.directive.mjs +3 -3
  167. package/esm2022/lib/components/ecl-range/ecl-range.module.mjs +4 -4
  168. package/esm2022/lib/components/ecl-rating-field/ecl-rating-field.component.mjs +3 -3
  169. package/esm2022/lib/components/ecl-rating-field/ecl-rating-field.module.mjs +4 -4
  170. package/esm2022/lib/components/ecl-search-form/ecl-search-form.component.mjs +3 -3
  171. package/esm2022/lib/components/ecl-search-form/ecl-search-form.module.mjs +4 -4
  172. package/esm2022/lib/components/ecl-select/ecl-select-container.component.mjs +3 -3
  173. package/esm2022/lib/components/ecl-select/ecl-select.directive.mjs +3 -3
  174. package/esm2022/lib/components/ecl-select/ecl-select.module.mjs +4 -4
  175. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ec/ecl-site-footer-fixed-content.mjs +3 -3
  176. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-column.directive.mjs +9 -9
  177. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-description.directive.mjs +3 -3
  178. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-link.directive.mjs +15 -15
  179. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-list.directive.mjs +15 -15
  180. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-section.directive.mjs +3 -3
  181. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-title.directive.mjs +6 -6
  182. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/eu/ecl-site-footer-fixed-content.mjs +3 -3
  183. package/esm2022/lib/components/ecl-site-footer/ecl-site-footer.component.mjs +3 -3
  184. package/esm2022/lib/components/ecl-site-footer/ecl-site-footer.module.mjs +4 -4
  185. package/esm2022/lib/components/ecl-site-header/action/ecl-site-header-action.component.mjs +3 -3
  186. package/esm2022/lib/components/ecl-site-header/banner-top/ecl-site-header-banner-top.component.mjs +3 -3
  187. package/esm2022/lib/components/ecl-site-header/cta/ecl-site-header-cta.directive.mjs +3 -3
  188. package/esm2022/lib/components/ecl-site-header/ecl-site-header-environment/ecl-site-header-environment.component.mjs +3 -3
  189. package/esm2022/lib/components/ecl-site-header/ecl-site-header.component.mjs +3 -3
  190. package/esm2022/lib/components/ecl-site-header/ecl-site-header.module.mjs +4 -4
  191. package/esm2022/lib/components/ecl-site-header/language/ecl-site-header-language-popover.component.mjs +3 -3
  192. package/esm2022/lib/components/ecl-site-header/language/ecl-site-header-language.component.mjs +3 -3
  193. package/esm2022/lib/components/ecl-site-header/login/ecl-site-header-login-details.directive.mjs +6 -6
  194. package/esm2022/lib/components/ecl-site-header/login/ecl-site-header-login.component.mjs +3 -3
  195. package/esm2022/lib/components/ecl-site-header/message/ecl-site-header-message.component.mjs +3 -3
  196. package/esm2022/lib/components/ecl-site-header/search/ecl-site-header-search.component.mjs +3 -3
  197. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow-item.component.mjs +3 -3
  198. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow-link.directive.mjs +3 -3
  199. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow.component.mjs +3 -3
  200. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow.module.mjs +4 -4
  201. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share-item.component.mjs +3 -3
  202. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share-link.directive.mjs +3 -3
  203. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share.component.mjs +3 -3
  204. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share.module.mjs +4 -4
  205. package/esm2022/lib/components/ecl-spinner/ecl-spinner-label.directive.mjs +3 -3
  206. package/esm2022/lib/components/ecl-spinner/ecl-spinner.component.mjs +3 -3
  207. package/esm2022/lib/components/ecl-spinner/ecl-spinner.module.mjs +4 -4
  208. package/esm2022/lib/components/ecl-sticky-container/ecl-sticky-container.component.mjs +3 -3
  209. package/esm2022/lib/components/ecl-sticky-container/ecl-sticky-container.module.mjs +4 -4
  210. package/esm2022/lib/components/ecl-table/ecl-table-sort-button.component.mjs +3 -3
  211. package/esm2022/lib/components/ecl-table/ecl-table.directive.mjs +24 -24
  212. package/esm2022/lib/components/ecl-table/ecl-table.module.mjs +4 -4
  213. package/esm2022/lib/components/ecl-tabs/ecl-tab-label.component.mjs +3 -3
  214. package/esm2022/lib/components/ecl-tabs/ecl-tab-more.component.mjs +3 -3
  215. package/esm2022/lib/components/ecl-tabs/ecl-tab.component.mjs +3 -3
  216. package/esm2022/lib/components/ecl-tabs/ecl-tabs.component.mjs +3 -3
  217. package/esm2022/lib/components/ecl-tabs/ecl-tabs.module.mjs +4 -4
  218. package/esm2022/lib/components/ecl-tag/ecl-tag.component.mjs +3 -3
  219. package/esm2022/lib/components/ecl-tag/ecl-tag.module.mjs +4 -4
  220. package/esm2022/lib/components/ecl-text-area/ecl-text-area.directive.mjs +3 -3
  221. package/esm2022/lib/components/ecl-text-area/ecl-text-area.module.mjs +4 -4
  222. package/esm2022/lib/components/ecl-text-input/ecl-text-input.directive.mjs +3 -3
  223. package/esm2022/lib/components/ecl-text-input/ecl-text-input.module.mjs +4 -4
  224. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-label.directive.mjs +3 -3
  225. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-title.directive.mjs +3 -3
  226. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-toggler.component.mjs +3 -3
  227. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item.component.mjs +3 -3
  228. package/esm2022/lib/components/ecl-timeline/ecl-timeline.component.mjs +3 -3
  229. package/esm2022/lib/components/ecl-timeline/ecl-timeline.module.mjs +4 -4
  230. package/esm2022/lib/services/ecl-default-language.service.mjs +3 -3
  231. package/esm2022/lib/services/ecl-theme.service.mjs +3 -3
  232. package/esm2022/lib/shared/ecl-all.module.mjs +4 -4
  233. package/esm2022/lib/utils/directives/ecl-click-outside/ecl-click-outside.directive.mjs +3 -3
  234. package/esm2022/lib/utils/directives/ecl-hidden/ecl-hidden.directive.mjs +3 -3
  235. package/esm2022/lib/utils/directives/ecl-hidden/ecl-hidden.module.mjs +4 -4
  236. package/fesm2022/eui-ecl.mjs +998 -960
  237. package/fesm2022/eui-ecl.mjs.map +1 -1
  238. package/lib/components/ecl-menu/common/ecl-menu-item.event.d.ts +2 -2
  239. package/lib/components/ecl-menu/common/ecl-menu-item.event.d.ts.map +1 -1
  240. package/lib/components/ecl-menu/ecl-menu/ecl-menu-item.component.d.ts +9 -3
  241. package/lib/components/ecl-menu/ecl-menu/ecl-menu-item.component.d.ts.map +1 -1
  242. package/lib/components/ecl-menu/ecl-menu/ecl-menu.component.d.ts +1 -0
  243. package/lib/components/ecl-menu/ecl-menu/ecl-menu.component.d.ts.map +1 -1
  244. package/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.d.ts.map +1 -1
  245. package/package.json +1 -1
@@ -4,14 +4,16 @@ import { takeUntil } from 'rxjs/operators';
4
4
  import { ECLBaseDirective } from '../../ecl-base.directive';
5
5
  import { EclMenuItemCaretEvent, EclMenuItemFocusEvent, EclMenuItemHoverEvent, EclMenuItemHoverOutEvent, EclMenuItemKeydownEvent, EclMenuItemSelectEvent, } from '../common/ecl-menu-item.event';
6
6
  import { EclMenuMegaComponent } from '../ecl-menu-mega/ecl-menu-mega.component';
7
- import { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';
7
+ import { EclButtonComponent } from '../../ecl-button';
8
+ import { KeyCode } from '../../../utils';
9
+ import { Breakpoints } from '@angular/cdk/layout';
8
10
  import * as i0 from "@angular/core";
9
- import * as i1 from "../../ecl-button/ecl-button.component";
10
- import * as i2 from "../../ecl-icon/ecl-icon.component";
11
- import * as i3 from "@angular/common";
12
- import * as i4 from "@angular/router";
11
+ import * as i1 from "@angular/cdk/layout";
12
+ import * as i2 from "../../ecl-button/ecl-button.component";
13
+ import * as i3 from "../../ecl-icon/ecl-icon.component";
14
+ import * as i4 from "@angular/common";
15
+ import * as i5 from "@angular/router";
13
16
  export class EclMenuItemComponent extends ECLBaseDirective {
14
- // isVisible = true;
15
17
  get cssClasses() {
16
18
  return [
17
19
  super.getCssClasses('ecl-menu__item'),
@@ -34,11 +36,12 @@ export class EclMenuItemComponent extends ECLBaseDirective {
34
36
  get children() {
35
37
  return this.hasChildren ? this.submenu.eclMenuMegaItems.toArray() : [];
36
38
  }
37
- constructor(el, renderer, arf) {
39
+ constructor(el, renderer, arf, cdkBreakpointObserver) {
38
40
  super();
39
41
  this.el = el;
40
42
  this.renderer = renderer;
41
43
  this.arf = arf;
44
+ this.cdkBreakpointObserver = cdkBreakpointObserver;
42
45
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
46
  this.routerLink = null;
44
47
  this.queryParams = null;
@@ -46,11 +49,11 @@ export class EclMenuItemComponent extends ECLBaseDirective {
46
49
  this.href = '';
47
50
  this.target = '';
48
51
  this.isCurrent = false;
49
- this.isHovered = false;
50
- this.isVisible = true;
51
52
  this.isFull = false;
52
- // isHovered = false;
53
+ this.isHovered = false;
53
54
  this.isMobileBreakpoint = false;
55
+ this.isVisible = true;
56
+ this.role = 'listitem';
54
57
  this.menuItemSelect = new EventEmitter();
55
58
  this.menuItemCaret = new EventEmitter();
56
59
  this.menuItemHover = new EventEmitter();
@@ -102,19 +105,19 @@ export class EclMenuItemComponent extends ECLBaseDirective {
102
105
  this.isExpanded = false;
103
106
  }
104
107
  onFocusFromNext() {
105
- // TODO v17 fix
106
- // if (this.menuButton) {
107
- // this.onButtonFocus();
108
- // } else {
109
- // this.onLinkFocus();
110
- // }
108
+ if (this.menuButton) {
109
+ this.onButtonFocus();
110
+ }
111
+ else {
112
+ this.onLinkFocus();
113
+ }
111
114
  }
112
115
  onFocusFromPrev() {
113
116
  this.onLinkFocus();
114
117
  }
115
118
  onButtonKeydown(evt) {
116
- switch (evt.keyCode) {
117
- case DOWN_ARROW: {
119
+ switch (evt.key) {
120
+ case KeyCode.ARROW_DOWN: {
118
121
  evt.preventDefault();
119
122
  if (this.isHovered) {
120
123
  this.selectFirstMegaMenuItem();
@@ -124,26 +127,31 @@ export class EclMenuItemComponent extends ECLBaseDirective {
124
127
  }
125
128
  break;
126
129
  }
127
- case UP_ARROW: {
130
+ case KeyCode.ARROW_UP: {
128
131
  evt.preventDefault();
129
132
  this.onLinkFocus();
130
133
  break;
131
134
  }
132
- case RIGHT_ARROW: {
135
+ case KeyCode.ARROW_RIGHT: {
133
136
  evt.preventDefault();
134
137
  this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt));
135
138
  break;
136
139
  }
137
- case LEFT_ARROW: {
140
+ case KeyCode.ARROW_LEFT: {
138
141
  evt.preventDefault();
139
142
  this.onLinkFocus();
140
143
  break;
141
144
  }
142
- case TAB: {
145
+ case KeyCode.TAB: {
143
146
  this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt));
144
147
  break;
145
148
  }
146
- case ENTER: {
149
+ case KeyCode.ENTER: {
150
+ evt.preventDefault();
151
+ this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt));
152
+ break;
153
+ }
154
+ case KeyCode.ESCAPE: {
147
155
  evt.preventDefault();
148
156
  this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt));
149
157
  break;
@@ -154,32 +162,37 @@ export class EclMenuItemComponent extends ECLBaseDirective {
154
162
  }
155
163
  }
156
164
  onLinkKeydown(evt) {
157
- switch (evt.keyCode) {
158
- case DOWN_ARROW: {
165
+ switch (evt.key) {
166
+ case KeyCode.ARROW_DOWN: {
159
167
  evt.preventDefault();
160
168
  this.onLinkNextFocus(evt);
161
169
  break;
162
170
  }
163
- case UP_ARROW: {
171
+ case KeyCode.ARROW_UP: {
164
172
  evt.preventDefault();
165
173
  this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt));
166
174
  break;
167
175
  }
168
- case RIGHT_ARROW: {
176
+ case KeyCode.ARROW_RIGHT: {
169
177
  evt.preventDefault();
170
178
  this.onLinkNextFocus(evt);
171
179
  break;
172
180
  }
173
- case LEFT_ARROW: {
181
+ case KeyCode.ARROW_LEFT: {
174
182
  evt.preventDefault();
175
183
  this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt));
176
184
  break;
177
185
  }
178
- case ENTER: {
186
+ case KeyCode.ENTER: {
179
187
  evt.preventDefault();
180
188
  this.onItemClick(evt);
181
189
  break;
182
190
  }
191
+ case KeyCode.ESCAPE: {
192
+ evt.preventDefault();
193
+ this.onLinkEscape(evt);
194
+ break;
195
+ }
183
196
  default: {
184
197
  break;
185
198
  }
@@ -202,6 +215,15 @@ export class EclMenuItemComponent extends ECLBaseDirective {
202
215
  }
203
216
  this.renderer.removeStyle(currentItem, 'alignItems');
204
217
  }
218
+ onLinkEscape(evt) {
219
+ if (this.menuButton) {
220
+ this.menuButton.el.nativeElement.focus();
221
+ evt.stopPropagation();
222
+ }
223
+ else {
224
+ this.menuLink.nativeElement.blur();
225
+ }
226
+ }
205
227
  selectFirstMegaMenuItem() {
206
228
  this.submenu.selectFirstSubItem();
207
229
  }
@@ -209,16 +231,15 @@ export class EclMenuItemComponent extends ECLBaseDirective {
209
231
  this.menuLink.nativeElement.focus();
210
232
  }
211
233
  onLinkNextFocus(evt) {
212
- // TODO v17 fix
213
- // if (this.menuButton) {
214
- // this.onButtonFocus();
215
- // } else {
216
- // this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));
217
- // }
234
+ if (this.menuButton) {
235
+ this.onButtonFocus();
236
+ }
237
+ else {
238
+ this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt));
239
+ }
218
240
  }
219
241
  onButtonFocus() {
220
- // TODO v17 fix
221
- // this.menuButton.el.nativeElement.focus();
242
+ this.menuButton.el.nativeElement.focus();
222
243
  }
223
244
  getMenuItemLinkMaxHeight(linkStyle, maxLines) {
224
245
  return parseInt(linkStyle.lineHeight, 10) * maxLines + parseInt(linkStyle.paddingTop, 10) + parseInt(linkStyle.paddingBottom, 10);
@@ -267,21 +288,20 @@ export class EclMenuItemComponent extends ECLBaseDirective {
267
288
  return this.submenu && !!this.submenu.eclMenuMegaItems.find((it) => it.isCurrent);
268
289
  }
269
290
  observeBreakpointChanges() {
270
- // TODO v17 fix
271
- // this.cdkBreakpointObserver
272
- // .observe([Breakpoints.Handset, Breakpoints.Tablet, Breakpoints.Small])
273
- // .pipe(takeUntil(this.destroy$))
274
- // .subscribe((result) => {
275
- // this.isMobileBreakpoint = result.matches;
276
- // });
291
+ this.cdkBreakpointObserver
292
+ .observe([Breakpoints.Handset, Breakpoints.Tablet, Breakpoints.Small])
293
+ .pipe(takeUntil(this.destroy$))
294
+ .subscribe((result) => {
295
+ this.isMobileBreakpoint = result.matches;
296
+ });
277
297
  }
278
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: EclMenuItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Component }); }
279
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: EclMenuItemComponent, selector: "ecl-menu-item", inputs: { id: "id", label: "label", routerLink: "routerLink", queryParams: "queryParams", queryParamsHandling: "queryParamsHandling", href: "href", target: "target", isCurrent: "isCurrent" }, outputs: { menuItemSelect: "menuItemSelect", menuItemCaret: "menuItemCaret", menuItemHover: "menuItemHover", menuItemHoverOut: "menuItemHoverOut", menuMegaItemSelect: "menuMegaItemSelect", menuItemFocus: "menuItemFocus", menuItemKeydown: "menuItemKeydown" }, host: { listeners: { "mouseenter": "onItemMouseEnter($event)", "mouseleave": "onItemMouseLeave($event)" }, properties: { "class": "this.cssClasses", "class.ecl-menu__item--has-children": "this.hasEclChildrenDataAttribute", "attr.aria-haspopup": "this.hasEclChildrenDataAttribute", "attr.aria-expanded": "this.isAriaExpanded" } }, queries: [{ propertyName: "submenu", first: true, predicate: i0.forwardRef(() => EclMenuMegaComponent), descendants: true }], viewQueries: [{ propertyName: "menuLink", first: true, predicate: ["menuLink"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<a\n #menuLink\n *ngIf=\"href\"\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<a\n #menuLink\n *ngIf=\"!href\"\n tabindex=\"0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<button\n eclButton\n *ngIf=\"hasChildren && isMobileBreakpoint\"\n variant=\"primary\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<button\n eclButton\n *ngIf=\"hasChildren && !isMobileBreakpoint\"\n variant=\"primary\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<ng-content select=\"ecl-menu-mega\"></ng-content>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "component", type: i1.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["variant", "containerStyleClass"] }, { kind: "component", type: i2.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
298
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EclMenuItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ApplicationRef }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
299
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EclMenuItemComponent, selector: "ecl-menu-item", inputs: { id: "id", label: "label", routerLink: "routerLink", queryParams: "queryParams", queryParamsHandling: "queryParamsHandling", href: "href", target: "target", isCurrent: "isCurrent" }, outputs: { menuItemSelect: "menuItemSelect", menuItemCaret: "menuItemCaret", menuItemHover: "menuItemHover", menuItemHoverOut: "menuItemHoverOut", menuMegaItemSelect: "menuMegaItemSelect", menuItemFocus: "menuItemFocus", menuItemKeydown: "menuItemKeydown" }, host: { listeners: { "mouseenter": "onItemMouseEnter($event)", "mouseleave": "onItemMouseLeave($event)" }, properties: { "attr.role": "this.role", "class": "this.cssClasses", "class.ecl-menu__item--has-children": "this.hasEclChildrenDataAttribute", "attr.aria-haspopup": "this.hasEclChildrenDataAttribute", "attr.aria-expanded": "this.isAriaExpanded" } }, queries: [{ propertyName: "submenu", first: true, predicate: i0.forwardRef(() => EclMenuMegaComponent), descendants: true }], viewQueries: [{ propertyName: "menuLink", first: true, predicate: ["menuLink"], descendants: true }, { propertyName: "menuButton", first: true, predicate: EclButtonComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<a\n #menuLink\n *ngIf=\"href\"\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<a\n #menuLink\n *ngIf=\"!href\"\n tabindex=\"0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<button\n eclButton\n *ngIf=\"hasChildren && isMobileBreakpoint\"\n variant=\"primary\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<button\n eclButton\n *ngIf=\"hasChildren && !isMobileBreakpoint\"\n variant=\"primary\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<ng-content select=\"ecl-menu-mega\"></ng-content>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "component", type: i2.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["variant", "containerStyleClass"] }, { kind: "component", type: i3.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
280
300
  }
281
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: EclMenuItemComponent, decorators: [{
301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EclMenuItemComponent, decorators: [{
282
302
  type: Component,
283
303
  args: [{ selector: 'ecl-menu-item', encapsulation: ViewEncapsulation.None, template: "<a\n #menuLink\n *ngIf=\"href\"\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<a\n #menuLink\n *ngIf=\"!href\"\n tabindex=\"0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<button\n eclButton\n *ngIf=\"hasChildren && isMobileBreakpoint\"\n variant=\"primary\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<button\n eclButton\n *ngIf=\"hasChildren && !isMobileBreakpoint\"\n variant=\"primary\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<ng-content select=\"ecl-menu-mega\"></ng-content>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n" }]
284
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ApplicationRef }], propDecorators: { id: [{
304
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ApplicationRef }, { type: i1.BreakpointObserver }], propDecorators: { id: [{
285
305
  type: Input
286
306
  }], label: [{
287
307
  type: Input
@@ -297,6 +317,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
297
317
  type: Input
298
318
  }], isCurrent: [{
299
319
  type: Input
320
+ }], role: [{
321
+ type: HostBinding,
322
+ args: ['attr.role']
300
323
  }], cssClasses: [{
301
324
  type: HostBinding,
302
325
  args: ['class']
@@ -306,6 +329,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
306
329
  }], menuLink: [{
307
330
  type: ViewChild,
308
331
  args: ['menuLink']
332
+ }], menuButton: [{
333
+ type: ViewChild,
334
+ args: [EclButtonComponent]
309
335
  }], menuItemSelect: [{
310
336
  type: Output
311
337
  }], menuItemCaret: [{
@@ -336,4 +362,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
336
362
  type: HostListener,
337
363
  args: ['mouseleave', ['$event']]
338
364
  }] } });
339
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW1lbnUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW1lbnUvZWNsLW1lbnUvZWNsLW1lbnUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW1lbnUvZWNsLW1lbnUvZWNsLW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBRXZCLHNCQUFzQixHQUN6QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFhbEcsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGdCQUFnQjtJQWlCdEQsb0JBQW9CO0lBRXBCLElBQ0ksVUFBVTtRQUNWLE9BQU87WUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDO1lB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VUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2dCQUM3QixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBRVgsY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBSUgsMkJBQTJCO3NCQUY5QixXQUFXO3VCQUFDLG9DQUFvQzs7c0JBQ2hELFdBQVc7dUJBQUMsb0JBQW9CO2dCQU03QixjQUFjO3NCQURqQixXQUFXO3VCQUFDLG9CQUFvQjtnQkF3Q2pDLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNdEMsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFwcGxpY2F0aW9uUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVjbE1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvZWNsLW1lbnUtaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgRWNsTWVudUl0ZW1DYXJldEV2ZW50LFxuICAgIEVjbE1lbnVJdGVtRm9jdXNFdmVudCxcbiAgICBFY2xNZW51SXRlbUhvdmVyRXZlbnQsXG4gICAgRWNsTWVudUl0ZW1Ib3Zlck91dEV2ZW50LFxuICAgIEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50LFxuICAgIEVjbE1lbnVJdGVtUGFyZW50Rm9jdXNFdmVudCxcbiAgICBFY2xNZW51SXRlbVNlbGVjdEV2ZW50LFxufSBmcm9tICcuLi9jb21tb24vZWNsLW1lbnUtaXRlbS5ldmVudCc7XG5pbXBvcnQgeyBFY2xNZW51TWVnYUNvbXBvbmVudCB9IGZyb20gJy4uL2VjbC1tZW51LW1lZ2EvZWNsLW1lbnUtbWVnYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFyYW1zLCBRdWVyeVBhcmFtc0hhbmRsaW5nIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgVEFCLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbmNvbnN0IGVudW0gQ29sVHJpZ2dlciB7XG4gICAgQ09MMV9UUklHR0VSID0gNSxcbiAgICBDT0wyX1RSSUdHRVIgPSA5LFxuICAgIENPTDNfVFJJR0dFUiA9IDEzLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1tZW51LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lY2wtbWVudS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xNZW51SXRlbUNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBFY2xNZW51SXRlbSwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBASW5wdXQoKSByb3V0ZXJMaW5rOiBzdHJpbmcgfCBhbnlbXSA9IG51bGw7XG4gICAgQElucHV0KCkgcXVlcnlQYXJhbXM6IFBhcmFtcyB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFF1ZXJ5UGFyYW1zSGFuZGxpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIGhyZWYgPSAnJztcbiAgICBASW5wdXQoKSB0YXJnZXQgPSAnJztcbiAgICBASW5wdXQoKSBpc0N1cnJlbnQgPSBmYWxzZTtcblxuICAgIGlzRXhwYW5kZWQ6IGJvb2xlYW47XG4gICAgaXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICBpc0Z1bGwgPSBmYWxzZTtcbiAgICAvLyBpc0hvdmVyZWQgPSBmYWxzZTtcbiAgICBpc01vYmlsZUJyZWFrcG9pbnQgPSBmYWxzZTtcbiAgICAvLyBpc1Zpc2libGUgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHN1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1tZW51X19pdGVtJyksXG4gICAgICAgICAgICB0aGlzLmlzQ3VycmVudCA/ICdlY2wtbWVudV9faXRlbS0tY3VycmVudCcgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaXNFeHBhbmRlZCA/ICdlY2wtbWVudV9faXRlbS0tZXhwYW5kZWQnIDogJycsXG4gICAgICAgICAgICB0aGlzLmdldENsYXNzRGVwZW5kaW5nQ2hpbGRyZW5DbnQoKSxcbiAgICAgICAgXVxuICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAgICAgLnRyaW0oKTtcbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRWNsTWVudU1lZ2FDb21wb25lbnQpKSBzdWJtZW51OiBFY2xNZW51TWVnYUNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdtZW51TGluaycpIG1lbnVMaW5rOiBFbGVtZW50UmVmPEhUTUxBbmNob3JFbGVtZW50PjtcblxuICAgIEBPdXRwdXQoKSBtZW51SXRlbVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1TZWxlY3RFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbWVudUl0ZW1DYXJldCA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1DYXJldEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBtZW51SXRlbUhvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbUhvdmVyRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1lbnVJdGVtSG92ZXJPdXQgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbE1lbnVJdGVtSG92ZXJPdXRFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbWVudU1lZ2FJdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbVNlbGVjdEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBtZW51SXRlbUZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbUZvY3VzRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1lbnVJdGVtS2V5ZG93biA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1LZXlkb3duRXZlbnQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC1tZW51X19pdGVtLS1oYXMtY2hpbGRyZW4nKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhhc3BvcHVwJylcbiAgICBnZXQgaGFzRWNsQ2hpbGRyZW5EYXRhQXR0cmlidXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNDaGlsZHJlbiB8fCB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKVxuICAgIGdldCBpc0FyaWFFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQ2hpbGRyZW4gPyB0aGlzLmlzSG92ZXJlZCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0NoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnN1Ym1lbnU7XG4gICAgfVxuXG4gICAgZ2V0IGNoaWxkcmVuKCk6IEFycmF5PEVjbE1lbnVJdGVtPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0NoaWxkcmVuID8gdGhpcy5zdWJtZW51LmVjbE1lbnVNZWdhSXRlbXMudG9BcnJheSgpIDogW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgYXJmOiBBcHBsaWNhdGlvblJlZixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1Gb2N1cyhldnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbUZvY3VzLm5leHQobmV3IEVjbE1lbnVJdGVtRm9jdXNFdmVudCh0aGlzLCBldnQpKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1TZWxlY3QubmV4dChuZXcgRWNsTWVudUl0ZW1TZWxlY3RFdmVudCh0aGlzLCBldnQgYXMgTW91c2VFdmVudCkpO1xuXG4gICAgICAgIGlmICghdGhpcy5ocmVmKSB7XG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkl0ZW1DYXJldENsaWNrKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVJdGVtQ2FyZXQubmV4dChuZXcgRWNsTWVudUl0ZW1DYXJldEV2ZW50KHRoaXMsIGV2dCkpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBbJyRldmVudCddKVxuICAgIG9uSXRlbU1vdXNlRW50ZXIoZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1Ib3Zlci5uZXh0KG5ldyBFY2xNZW51SXRlbUhvdmVyRXZlbnQodGhpcywgZXZ0KSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgb25JdGVtTW91c2VMZWF2ZShldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbUhvdmVyT3V0Lm5leHQobmV3IEVjbE1lbnVJdGVtSG92ZXJPdXRFdmVudCh0aGlzLCBldnQpKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN1Ym1lbnUpIHtcbiAgICAgICAgICAgIHRoaXMuc3VibWVudS5tZW51SXRlbVNlbGVjdC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpdDogRWNsTWVudUl0ZW1TZWxlY3RFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWVudU1lZ2FJdGVtU2VsZWN0Lm5leHQobmV3IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQoaXQubWVudUl0ZW0sIGl0LmRvbUV2ZW50KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3VibWVudS5tZW51TWVnYUl0ZW1QYXJlbnRGb2N1cy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpdDogRWNsTWVudUl0ZW1QYXJlbnRGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkZvY3VzRnJvbVN1Ym1lbnUoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNTdWJtZW51QW55U2VsZWN0aW9ucygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0N1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG9uRm9jdXNGcm9tU3VibWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkJ1dHRvbkZvY3VzKCk7XG4gICAgICAgIHRoaXMuaXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uRm9jdXNGcm9tTmV4dCgpOiB2b2lkIHtcbiAgICAgICAgLy8gVE9ETyB2MTcgZml4XG4gICAgICAgIC8vIGlmICh0aGlzLm1lbnVCdXR0b24pIHtcbiAgICAgICAgLy8gICAgIHRoaXMub25CdXR0b25Gb2N1cygpO1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5vbkxpbmtGb2N1cygpO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgb25Gb2N1c0Zyb21QcmV2KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTGlua0ZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25CdXR0b25LZXlkb3duKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICgoZXZ0IGFzIEtleWJvYXJkRXZlbnQpLmtleUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgRE9XTl9BUlJPVzoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSG92ZXJlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0TWVnYU1lbnVJdGVtKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFVQX0FSUk9XOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxpbmtGb2N1cygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBSSUdIVF9BUlJPVzoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIExFRlRfQVJST1c6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTGlua0ZvY3VzKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFRBQjoge1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVOVEVSOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGlua0tleWRvd24oZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKChldnQgYXMgS2V5Ym9hcmRFdmVudCkua2V5Q29kZSkge1xuICAgICAgICAgICAgY2FzZSBET1dOX0FSUk9XOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxpbmtOZXh0Rm9jdXMoZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgVVBfQVJST1c6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVJdGVtS2V5ZG93bi5uZXh0KG5ldyBFY2xNZW51SXRlbUtleWRvd25FdmVudCh0aGlzLCBldnQgYXMgS2V5Ym9hcmRFdmVudCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBSSUdIVF9BUlJPVzoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25MaW5rTmV4dEZvY3VzKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIExFRlRfQVJST1c6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVJdGVtS2V5ZG93bi5uZXh0KG5ldyBFY2xNZW51SXRlbUtleWRvd25FdmVudCh0aGlzLCBldnQgYXMgS2V5Ym9hcmRFdmVudCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFTlRFUjoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25JdGVtQ2xpY2soZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrTWVudUl0ZW0obWF4TGluZXM6IG51bWJlciwgaXNNb2JpbGVCcmVha3BvaW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChtYXhMaW5lcyA8IDEpIHJldHVybjtcblxuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY3VycmVudExpbmsgPSB0aGlzLm1lbnVMaW5rLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChpc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIGN1cnJlbnRMaW5rLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY3VycmVudEl0ZW0sICdhbGlnbkl0ZW1zJywgJ2ZsZXgtc3RhcnQnKTtcbiAgICAgICAgY29uc3QgbGlua1N0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY3VycmVudExpbmspO1xuXG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMuZ2V0TWVudUl0ZW1MaW5rTWF4SGVpZ2h0KGxpbmtTdHlsZSwgbWF4TGluZXMpO1xuXG4gICAgICAgIGlmIChjdXJyZW50TGluay5vZmZzZXRIZWlnaHQgPiBtYXhIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlTWVudUl0ZW1MaW5rV2lkdGgoY3VycmVudExpbmssIG1heExpbmVzLCBsaW5rU3R5bGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY3VycmVudEl0ZW0sICdhbGlnbkl0ZW1zJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RGaXJzdE1lZ2FNZW51SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJtZW51LnNlbGVjdEZpcnN0U3ViSXRlbSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25MaW5rRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUxpbmsubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25MaW5rTmV4dEZvY3VzKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gVE9ETyB2MTcgZml4XG4gICAgICAgIC8vIGlmICh0aGlzLm1lbnVCdXR0b24pIHtcbiAgICAgICAgLy8gICAgIHRoaXMub25CdXR0b25Gb2N1cygpO1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25CdXR0b25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgLy8gVE9ETyB2MTcgZml4XG4gICAgICAgIC8vIHRoaXMubWVudUJ1dHRvbi5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNZW51SXRlbUxpbmtNYXhIZWlnaHQobGlua1N0eWxlOiBDU1NTdHlsZURlY2xhcmF0aW9uLCBtYXhMaW5lczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KGxpbmtTdHlsZS5saW5lSGVpZ2h0LCAxMCkgKiBtYXhMaW5lcyArIHBhcnNlSW50KGxpbmtTdHlsZS5wYWRkaW5nVG9wLCAxMCkgKyBwYXJzZUludChsaW5rU3R5bGUucGFkZGluZ0JvdHRvbSwgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlTWVudUl0ZW1MaW5rV2lkdGgoY3VycmVudExpbms6IEhUTUxBbmNob3JFbGVtZW50LCBtYXhMaW5lczogbnVtYmVyLCBsaW5rU3R5bGU6IENTU1N0eWxlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjdXJyZW50TGluaywgJ3doaXRlLXNwYWNlJywgJ25vd3JhcCcpO1xuICAgICAgICBjb25zdCBsaW5rV2lkdGggPSBjdXJyZW50TGluay5vZmZzZXRXaWR0aDtcbiAgICAgICAgaWYgKG1heExpbmVzID09PSAxKSB7XG4gICAgICAgICAgICBjdXJyZW50TGluay5zdHlsZS53aWR0aCA9IGAke2xpbmtXaWR0aCArIHBhcnNlSW50KGxpbmtTdHlsZS5wYWRkaW5nTGVmdCwgMTApICsgcGFyc2VJbnQobGlua1N0eWxlLnBhZGRpbmdSaWdodCwgMTApfXB4YDtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY3VycmVudExpbmssICd3aGl0ZS1zcGFjZScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRleHRTaXplID0gY3VycmVudExpbmsudGV4dC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGxldHRlcldpZHRoID0gTWF0aC5jZWlsKGxpbmtXaWR0aCAvIHRleHRTaXplKTtcbiAgICAgICAgY29uc3Qgd29yZHNBcnJheSA9IGN1cnJlbnRMaW5rLnRleHQudHJpbSgpLnNwbGl0KCcgJyk7XG4gICAgICAgIGNvbnN0IGdvYWxXaWR0aCA9IE1hdGguY2VpbChsaW5rV2lkdGggLyBtYXhMaW5lcyk7XG4gICAgICAgIGNvbnN0IGZpcnN0V29yZCA9IHdvcmRzQXJyYXlbMF07XG4gICAgICAgIGxldCBjbnQgPSAxO1xuICAgICAgICBsZXQgd29yZFdpZHRoID0gTWF0aC5jZWlsKChmaXJzdFdvcmQubGVuZ3RoICsgMSkgKiBsZXR0ZXJXaWR0aCk7XG4gICAgICAgIHdoaWxlICh3b3JkV2lkdGggPCBnb2FsV2lkdGgpIHtcbiAgICAgICAgICAgIHdvcmRXaWR0aCArPSBNYXRoLmNlaWwoKHdvcmRzQXJyYXlbY250XS5sZW5ndGggKyAxKSAqIGxldHRlcldpZHRoKTtcbiAgICAgICAgICAgIGNudCsrO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRMaW5rLnN0eWxlLndpZHRoID0gYCR7d29yZFdpZHRoICsgcGFyc2VJbnQobGlua1N0eWxlLnBhZGRpbmdMZWZ0LCAxMCkgKyBwYXJzZUludChsaW5rU3R5bGUucGFkZGluZ1JpZ2h0LCAxMCl9cHhgO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGN1cnJlbnRMaW5rLCAnd2hpdGUtc3BhY2UnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENsYXNzRGVwZW5kaW5nQ2hpbGRyZW5DbnQoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1Ym1lbnUuZWNsTWVudU1lZ2FJdGVtcy5sZW5ndGggPCBDb2xUcmlnZ2VyLkNPTDFfVFJJR0dFUikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWNsLW1lbnVfX2l0ZW0tLWNvbDEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN1Ym1lbnUuZWNsTWVudU1lZ2FJdGVtcy5sZW5ndGggPCBDb2xUcmlnZ2VyLkNPTDJfVFJJR0dFUikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWNsLW1lbnVfX2l0ZW0tLWNvbDInO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN1Ym1lbnUuZWNsTWVudU1lZ2FJdGVtcy5sZW5ndGggPCBDb2xUcmlnZ2VyLkNPTDNfVFJJR0dFUikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWNsLW1lbnVfX2l0ZW0tLWNvbDMnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRnVsbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlY2wtbWVudV9faXRlbS0tZnVsbCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzU3VibWVudUFueVNlbGVjdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1Ym1lbnUgJiYgISF0aGlzLnN1Ym1lbnUuZWNsTWVudU1lZ2FJdGVtcy5maW5kKChpdCkgPT4gaXQuaXNDdXJyZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgLy8gVE9ETyB2MTcgZml4XG4gICAgICAgIC8vIHRoaXMuY2RrQnJlYWtwb2ludE9ic2VydmVyXG4gICAgICAgIC8vICAgICAub2JzZXJ2ZShbQnJlYWtwb2ludHMuSGFuZHNldCwgQnJlYWtwb2ludHMuVGFibGV0LCBCcmVha3BvaW50cy5TbWFsbF0pXG4gICAgICAgIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC8vICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgLy8gICAgICAgICB0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCA9IHJlc3VsdC5tYXRjaGVzO1xuICAgICAgICAvLyAgICAgfSk7XG4gICAgfVxufVxuIiwiPGFcbiAgICAjbWVudUxpbmtcbiAgICAqbmdJZj1cImhyZWZcIlxuICAgIFtocmVmXT1cImhyZWZcIlxuICAgIFt0YXJnZXRdPVwidGFyZ2V0XCJcbiAgICBjbGFzcz1cImVjbC1tZW51X19saW5rXCJcbiAgICBbY2xhc3MuZWNsLW1lbnVfX2xpbmstLWN1cnJlbnRdPVwiaXNDdXJyZW50XCJcbiAgICAoZm9jdXMpPVwib25JdGVtRm9jdXMoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cIm9uTGlua0tleWRvd24oJGV2ZW50KVwiPlxuICAgIHt7IGxhYmVsIH19XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvYT5cbjxhXG4gICAgI21lbnVMaW5rXG4gICAgKm5nSWY9XCIhaHJlZlwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rXCJcbiAgICBbcXVlcnlQYXJhbXNdPVwicXVlcnlQYXJhbXNcIlxuICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cInF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgIGNsYXNzPVwiZWNsLW1lbnVfX2xpbmtcIlxuICAgIFtjbGFzcy5lY2wtbWVudV9fbGluay0tY3VycmVudF09XCJpc0N1cnJlbnRcIlxuICAgIChmb2N1cyk9XCJvbkl0ZW1Gb2N1cygkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25MaW5rS2V5ZG93bigkZXZlbnQpXCI+XG4gICAge3sgbGFiZWwgfX1cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9hPlxuPGJ1dHRvblxuICAgIGVjbEJ1dHRvblxuICAgICpuZ0lmPVwiaGFzQ2hpbGRyZW4gJiYgaXNNb2JpbGVCcmVha3BvaW50XCJcbiAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgY2xhc3M9XCJlY2wtbWVudV9fYnV0dG9uLWNhcmV0XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBhcmlhLWxhYmVsPVwiQWNjZXNzIGl0ZW0ncyBjaGlsZHJlblwiXG4gICAgKGNsaWNrKT1cIm9uSXRlbUNhcmV0Q2xpY2soJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25CdXR0b25LZXlkb3duKCRldmVudClcIj5cbiAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJ4c1wiIHRyYW5zZm9ybT1cInJvdGF0ZS0xODBcIiBjbGFzcz1cImVjbC1idXR0b25fX2ljb25cIj48L2VjbC1pY29uPlxuPC9idXR0b24+XG48YnV0dG9uXG4gICAgZWNsQnV0dG9uXG4gICAgKm5nSWY9XCJoYXNDaGlsZHJlbiAmJiAhaXNNb2JpbGVCcmVha3BvaW50XCJcbiAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgY2xhc3M9XCJlY2wtbWVudV9fYnV0dG9uLWNhcmV0XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBhcmlhLWxhYmVsPVwiQWNjZXNzIGl0ZW0ncyBjaGlsZHJlblwiXG4gICAgKGtleWRvd24pPVwib25CdXR0b25LZXlkb3duKCRldmVudClcIj5cbiAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJ4c1wiIHRyYW5zZm9ybT1cInJvdGF0ZS0xODBcIiBjbGFzcz1cImVjbC1idXR0b25fX2ljb25cIj48L2VjbC1pY29uPlxuPC9idXR0b24+XG48bmctY29udGVudCBzZWxlY3Q9XCJlY2wtbWVudS1tZWdhXCI+PC9uZy1jb250ZW50PlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW1lbnUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW1lbnUvZWNsLW1lbnUvZWNsLW1lbnUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW1lbnUvZWNsLW1lbnUvZWNsLW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBRXZCLHNCQUFzQixHQUN6QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBYXRFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFrQnRELElBQ0ksVUFBVTtRQUNWLE9BQU87WUFDSCxLQUFLLENB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SztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUW9CLElBQUk7c0JBQTdCLFdBQVc7dUJBQUMsV0FBVztnQkFFcEIsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU87Z0JBWWtDLE9BQU87c0JBQTVELFlBQVk7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2dCQUM3QixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ1UsVUFBVTtzQkFBeEMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBRW5CLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUlILDJCQUEyQjtzQkFGOUIsV0FBVzt1QkFBQyxvQ0FBb0M7O3NCQUNoRCxXQUFXO3VCQUFDLG9CQUFvQjtnQkFNN0IsY0FBYztzQkFEakIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBeUNqQyxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXRDLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBcHBsaWNhdGlvblJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFY2xNZW51SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VjbC1tZW51LWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgRUNMQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2VjbC1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICAgIEVjbE1lbnVJdGVtQ2FyZXRFdmVudCxcbiAgICBFY2xNZW51SXRlbUZvY3VzRXZlbnQsXG4gICAgRWNsTWVudUl0ZW1Ib3ZlckV2ZW50LFxuICAgIEVjbE1lbnVJdGVtSG92ZXJPdXRFdmVudCxcbiAgICBFY2xNZW51SXRlbUtleWRvd25FdmVudCxcbiAgICBFY2xNZW51SXRlbVBhcmVudEZvY3VzRXZlbnQsXG4gICAgRWNsTWVudUl0ZW1TZWxlY3RFdmVudCxcbn0gZnJvbSAnLi4vY29tbW9uL2VjbC1tZW51LWl0ZW0uZXZlbnQnO1xuaW1wb3J0IHsgRWNsTWVudU1lZ2FDb21wb25lbnQgfSBmcm9tICcuLi9lY2wtbWVudS1tZWdhL2VjbC1tZW51LW1lZ2EuY29tcG9uZW50JztcbmltcG9ydCB7IFBhcmFtcywgUXVlcnlQYXJhbXNIYW5kbGluZyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFY2xCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9lY2wtYnV0dG9uJztcbmltcG9ydCB7IEtleUNvZGUgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5cbmNvbnN0IGVudW0gQ29sVHJpZ2dlciB7XG4gICAgQ09MMV9UUklHR0VSID0gNSxcbiAgICBDT0wyX1RSSUdHRVIgPSA5LFxuICAgIENPTDNfVFJJR0dFUiA9IDEzLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1tZW51LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lY2wtbWVudS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xNZW51SXRlbUNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBFY2xNZW51SXRlbSwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBASW5wdXQoKSByb3V0ZXJMaW5rOiBzdHJpbmcgfCBhbnlbXSA9IG51bGw7XG4gICAgQElucHV0KCkgcXVlcnlQYXJhbXM6IFBhcmFtcyB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFF1ZXJ5UGFyYW1zSGFuZGxpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIGhyZWYgPSAnJztcbiAgICBASW5wdXQoKSB0YXJnZXQgPSAnJztcbiAgICBASW5wdXQoKSBpc0N1cnJlbnQgPSBmYWxzZTtcblxuICAgIGlzRXhwYW5kZWQ6IGJvb2xlYW47XG4gICAgaXNGdWxsID0gZmFsc2U7XG4gICAgaXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgaXNNb2JpbGVCcmVha3BvaW50ID0gZmFsc2U7XG4gICAgaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZSA9ICdsaXN0aXRlbSc7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHN1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1tZW51X19pdGVtJyksXG4gICAgICAgICAgICB0aGlzLmlzQ3VycmVudCA/ICdlY2wtbWVudV9faXRlbS0tY3VycmVudCcgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaXNFeHBhbmRlZCA/ICdlY2wtbWVudV9faXRlbS0tZXhwYW5kZWQnIDogJycsXG4gICAgICAgICAgICB0aGlzLmdldENsYXNzRGVwZW5kaW5nQ2hpbGRyZW5DbnQoKSxcbiAgICAgICAgXVxuICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAgICAgLnRyaW0oKTtcbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRWNsTWVudU1lZ2FDb21wb25lbnQpKSBzdWJtZW51OiBFY2xNZW51TWVnYUNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdtZW51TGluaycpIG1lbnVMaW5rOiBFbGVtZW50UmVmPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKEVjbEJ1dHRvbkNvbXBvbmVudCkgbWVudUJ1dHRvbjogRWNsQnV0dG9uQ29tcG9uZW50O1xuXG4gICAgQE91dHB1dCgpIG1lbnVJdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbVNlbGVjdEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBtZW51SXRlbUNhcmV0ID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbUNhcmV0RXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1lbnVJdGVtSG92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbE1lbnVJdGVtSG92ZXJFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbWVudUl0ZW1Ib3Zlck91dCA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1Ib3Zlck91dEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBtZW51TWVnYUl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1lbnVJdGVtRm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbE1lbnVJdGVtRm9jdXNFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbWVudUl0ZW1LZXlkb3duID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbUtleWRvd25FdmVudD4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLW1lbnVfX2l0ZW0tLWhhcy1jaGlsZHJlbicpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGFzcG9wdXAnKVxuICAgIGdldCBoYXNFY2xDaGlsZHJlbkRhdGFBdHRyaWJ1dGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0NoaWxkcmVuIHx8IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpXG4gICAgZ2V0IGlzQXJpYUV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNDaGlsZHJlbiA/IHRoaXMuaXNIb3ZlcmVkIDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgaGFzQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuc3VibWVudTtcbiAgICB9XG5cbiAgICBnZXQgY2hpbGRyZW4oKTogQXJyYXk8RWNsTWVudUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQ2hpbGRyZW4gPyB0aGlzLnN1Ym1lbnUuZWNsTWVudU1lZ2FJdGVtcy50b0FycmF5KCkgOiBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBhcmY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIGNka0JyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG9uSXRlbUZvY3VzKGV2dDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVJdGVtRm9jdXMubmV4dChuZXcgRWNsTWVudUl0ZW1Gb2N1c0V2ZW50KHRoaXMsIGV2dCkpO1xuICAgIH1cblxuICAgIG9uSXRlbUNsaWNrKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbVNlbGVjdC5uZXh0KG5ldyBFY2xNZW51SXRlbVNlbGVjdEV2ZW50KHRoaXMsIGV2dCkpO1xuXG4gICAgICAgIGlmICghdGhpcy5ocmVmKSB7XG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkl0ZW1DYXJldENsaWNrKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVJdGVtQ2FyZXQubmV4dChuZXcgRWNsTWVudUl0ZW1DYXJldEV2ZW50KHRoaXMsIGV2dCkpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBbJyRldmVudCddKVxuICAgIG9uSXRlbU1vdXNlRW50ZXIoZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1Ib3Zlci5uZXh0KG5ldyBFY2xNZW51SXRlbUhvdmVyRXZlbnQodGhpcywgZXZ0KSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgb25JdGVtTW91c2VMZWF2ZShldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbUhvdmVyT3V0Lm5leHQobmV3IEVjbE1lbnVJdGVtSG92ZXJPdXRFdmVudCh0aGlzLCBldnQpKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN1Ym1lbnUpIHtcbiAgICAgICAgICAgIHRoaXMuc3VibWVudS5tZW51SXRlbVNlbGVjdC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpdDogRWNsTWVudUl0ZW1TZWxlY3RFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWVudU1lZ2FJdGVtU2VsZWN0Lm5leHQobmV3IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQoaXQubWVudUl0ZW0sIGl0LmRvbUV2ZW50KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3VibWVudS5tZW51TWVnYUl0ZW1QYXJlbnRGb2N1cy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpdDogRWNsTWVudUl0ZW1QYXJlbnRGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkZvY3VzRnJvbVN1Ym1lbnUoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNTdWJtZW51QW55U2VsZWN0aW9ucygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0N1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG9uRm9jdXNGcm9tU3VibWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkJ1dHRvbkZvY3VzKCk7XG4gICAgICAgIHRoaXMuaXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uRm9jdXNGcm9tTmV4dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUJ1dHRvbikge1xuICAgICAgICAgICAgdGhpcy5vbkJ1dHRvbkZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uTGlua0ZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkZvY3VzRnJvbVByZXYoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25MaW5rRm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvbktleWRvd24oZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKChldnQgYXMgS2V5Ym9hcmRFdmVudCkua2V5KSB7XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfRE9XTjoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSG92ZXJlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0TWVnYU1lbnVJdGVtKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfVVA6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTGlua0ZvY3VzKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfUklHSFQ6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVJdGVtS2V5ZG93bi5uZXh0KG5ldyBFY2xNZW51SXRlbUtleWRvd25FdmVudCh0aGlzLCBldnQgYXMgS2V5Ym9hcmRFdmVudCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0xFRlQ6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTGlua0ZvY3VzKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuVEFCOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5FTlRFUjoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGlua0tleWRvd24oZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKChldnQgYXMgS2V5Ym9hcmRFdmVudCkua2V5KSB7XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfRE9XTjoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25MaW5rTmV4dEZvY3VzKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfVVA6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVJdGVtS2V5ZG93bi5uZXh0KG5ldyBFY2xNZW51SXRlbUtleWRvd25FdmVudCh0aGlzLCBldnQgYXMgS2V5Ym9hcmRFdmVudCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1JJR0hUOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxpbmtOZXh0Rm9jdXMoZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5BUlJPV19MRUZUOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5FTlRFUjoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25JdGVtQ2xpY2soZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5FU0NBUEU6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTGlua0VzY2FwZShldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tNZW51SXRlbShtYXhMaW5lczogbnVtYmVyLCBpc01vYmlsZUJyZWFrcG9pbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKG1heExpbmVzIDwgMSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjdXJyZW50TGluayA9IHRoaXMubWVudUxpbmsubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgY3VycmVudExpbmsuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjdXJyZW50SXRlbSwgJ2FsaWduSXRlbXMnLCAnZmxleC1zdGFydCcpO1xuICAgICAgICBjb25zdCBsaW5rU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50TGluayk7XG5cbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gdGhpcy5nZXRNZW51SXRlbUxpbmtNYXhIZWlnaHQobGlua1N0eWxlLCBtYXhMaW5lcyk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRMaW5rLm9mZnNldEhlaWdodCA+IG1heEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VNZW51SXRlbUxpbmtXaWR0aChjdXJyZW50TGluaywgbWF4TGluZXMsIGxpbmtTdHlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShjdXJyZW50SXRlbSwgJ2FsaWduSXRlbXMnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTGlua0VzY2FwZShldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVCdXR0b24pIHtcbiAgICAgICAgICAgIHRoaXMubWVudUJ1dHRvbi5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVMaW5rLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RGaXJzdE1lZ2FNZW51SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJtZW51LnNlbGVjdEZpcnN0U3ViSXRlbSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25MaW5rRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUxpbmsubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25MaW5rTmV4dEZvY3VzKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUJ1dHRvbikge1xuICAgICAgICAgICAgdGhpcy5vbkJ1dHRvbkZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtS2V5ZG93bi5uZXh0KG5ldyBFY2xNZW51SXRlbUtleWRvd25FdmVudCh0aGlzLCBldnQgYXMgS2V5Ym9hcmRFdmVudCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkJ1dHRvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVCdXR0b24uZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWVudUl0ZW1MaW5rTWF4SGVpZ2h0KGxpbmtTdHlsZTogQ1NTU3R5bGVEZWNsYXJhdGlvbiwgbWF4TGluZXM6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwYXJzZUludChsaW5rU3R5bGUubGluZUhlaWdodCwgMTApICogbWF4TGluZXMgKyBwYXJzZUludChsaW5rU3R5bGUucGFkZGluZ1RvcCwgMTApICsgcGFyc2VJbnQobGlua1N0eWxlLnBhZGRpbmdCb3R0b20sIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZU1lbnVJdGVtTGlua1dpZHRoKGN1cnJlbnRMaW5rOiBIVE1MQW5jaG9yRWxlbWVudCwgbWF4TGluZXM6IG51bWJlciwgbGlua1N0eWxlOiBDU1NTdHlsZURlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY3VycmVudExpbmssICd3aGl0ZS1zcGFjZScsICdub3dyYXAnKTtcbiAgICAgICAgY29uc3QgbGlua1dpZHRoID0gY3VycmVudExpbmsub2Zmc2V0V2lkdGg7XG4gICAgICAgIGlmIChtYXhMaW5lcyA9PT0gMSkge1xuICAgICAgICAgICAgY3VycmVudExpbmsuc3R5bGUud2lkdGggPSBgJHtsaW5rV2lkdGggKyBwYXJzZUludChsaW5rU3R5bGUucGFkZGluZ0xlZnQsIDEwKSArIHBhcnNlSW50KGxpbmtTdHlsZS5wYWRkaW5nUmlnaHQsIDEwKX1weGA7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGN1cnJlbnRMaW5rLCAnd2hpdGUtc3BhY2UnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ZXh0U2l6ZSA9IGN1cnJlbnRMaW5rLnRleHQubGVuZ3RoO1xuICAgICAgICBjb25zdCBsZXR0ZXJXaWR0aCA9IE1hdGguY2VpbChsaW5rV2lkdGggLyB0ZXh0U2l6ZSk7XG4gICAgICAgIGNvbnN0IHdvcmRzQXJyYXkgPSBjdXJyZW50TGluay50ZXh0LnRyaW0oKS5zcGxpdCgnICcpO1xuICAgICAgICBjb25zdCBnb2FsV2lkdGggPSBNYXRoLmNlaWwobGlua1dpZHRoIC8gbWF4TGluZXMpO1xuICAgICAgICBjb25zdCBmaXJzdFdvcmQgPSB3b3Jkc0FycmF5WzBdO1xuICAgICAgICBsZXQgY250ID0gMTtcbiAgICAgICAgbGV0IHdvcmRXaWR0aCA9IE1hdGguY2VpbCgoZmlyc3RXb3JkLmxlbmd0aCArIDEpICogbGV0dGVyV2lkdGgpO1xuICAgICAgICB3aGlsZSAod29yZFdpZHRoIDwgZ29hbFdpZHRoKSB7XG4gICAgICAgICAgICB3b3JkV2lkdGggKz0gTWF0aC5jZWlsKCh3b3Jkc0FycmF5W2NudF0ubGVuZ3RoICsgMSkgKiBsZXR0ZXJXaWR0aCk7XG4gICAgICAgICAgICBjbnQrKztcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50TGluay5zdHlsZS53aWR0aCA9IGAke3dvcmRXaWR0aCArIHBhcnNlSW50KGxpbmtTdHlsZS5wYWRkaW5nTGVmdCwgMTApICsgcGFyc2VJbnQobGlua1N0eWxlLnBhZGRpbmdSaWdodCwgMTApfXB4YDtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShjdXJyZW50TGluaywgJ3doaXRlLXNwYWNlJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDbGFzc0RlcGVuZGluZ0NoaWxkcmVuQ250KCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdWJtZW51LmVjbE1lbnVNZWdhSXRlbXMubGVuZ3RoIDwgQ29sVHJpZ2dlci5DT0wxX1RSSUdHRVIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VjbC1tZW51X19pdGVtLS1jb2wxJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdWJtZW51LmVjbE1lbnVNZWdhSXRlbXMubGVuZ3RoIDwgQ29sVHJpZ2dlci5DT0wyX1RSSUdHRVIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VjbC1tZW51X19pdGVtLS1jb2wyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdWJtZW51LmVjbE1lbnVNZWdhSXRlbXMubGVuZ3RoIDwgQ29sVHJpZ2dlci5DT0wzX1RSSUdHRVIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VjbC1tZW51X19pdGVtLS1jb2wzJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Z1bGwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWNsLW1lbnVfX2l0ZW0tLWZ1bGwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1N1Ym1lbnVBbnlTZWxlY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdWJtZW51ICYmICEhdGhpcy5zdWJtZW51LmVjbE1lbnVNZWdhSXRlbXMuZmluZCgoaXQpID0+IGl0LmlzQ3VycmVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlQnJlYWtwb2ludENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2RrQnJlYWtwb2ludE9ic2VydmVyXG4gICAgICAgICAgICAub2JzZXJ2ZShbQnJlYWtwb2ludHMuSGFuZHNldCwgQnJlYWtwb2ludHMuVGFibGV0LCBCcmVha3BvaW50cy5TbWFsbF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCA9IHJlc3VsdC5tYXRjaGVzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGFcbiAgICAjbWVudUxpbmtcbiAgICAqbmdJZj1cImhyZWZcIlxuICAgIFtocmVmXT1cImhyZWZcIlxuICAgIFt0YXJnZXRdPVwidGFyZ2V0XCJcbiAgICBjbGFzcz1cImVjbC1tZW51X19saW5rXCJcbiAgICBbY2xhc3MuZWNsLW1lbnVfX2xpbmstLWN1cnJlbnRdPVwiaXNDdXJyZW50XCJcbiAgICAoZm9jdXMpPVwib25JdGVtRm9jdXMoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cIm9uTGlua0tleWRvd24oJGV2ZW50KVwiPlxuICAgIHt7IGxhYmVsIH19XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvYT5cbjxhXG4gICAgI21lbnVMaW5rXG4gICAgKm5nSWY9XCIhaHJlZlwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rXCJcbiAgICBbcXVlcnlQYXJhbXNdPVwicXVlcnlQYXJhbXNcIlxuICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cInF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgIGNsYXNzPVwiZWNsLW1lbnVfX2xpbmtcIlxuICAgIFtjbGFzcy5lY2wtbWVudV9fbGluay0tY3VycmVudF09XCJpc0N1cnJlbnRcIlxuICAgIChmb2N1cyk9XCJvbkl0ZW1Gb2N1cygkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25MaW5rS2V5ZG93bigkZXZlbnQpXCI+XG4gICAge3sgbGFiZWwgfX1cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9hPlxuPGJ1dHRvblxuICAgIGVjbEJ1dHRvblxuICAgICpuZ0lmPVwiaGFzQ2hpbGRyZW4gJiYgaXNNb2JpbGVCcmVha3BvaW50XCJcbiAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgY2xhc3M9XCJlY2wtbWVudV9fYnV0dG9uLWNhcmV0XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBhcmlhLWxhYmVsPVwiQWNjZXNzIGl0ZW0ncyBjaGlsZHJlblwiXG4gICAgKGNsaWNrKT1cIm9uSXRlbUNhcmV0Q2xpY2soJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25CdXR0b25LZXlkb3duKCRldmVudClcIj5cbiAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJ4c1wiIHRyYW5zZm9ybT1cInJvdGF0ZS0xODBcIiBjbGFzcz1cImVjbC1idXR0b25fX2ljb25cIj48L2VjbC1pY29uPlxuPC9idXR0b24+XG48YnV0dG9uXG4gICAgZWNsQnV0dG9uXG4gICAgKm5nSWY9XCJoYXNDaGlsZHJlbiAmJiAhaXNNb2JpbGVCcmVha3BvaW50XCJcbiAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgY2xhc3M9XCJlY2wtbWVudV9fYnV0dG9uLWNhcmV0XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBhcmlhLWxhYmVsPVwiQWNjZXNzIGl0ZW0ncyBjaGlsZHJlblwiXG4gICAgKGtleWRvd24pPVwib25CdXR0b25LZXlkb3duKCRldmVudClcIj5cbiAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJ4c1wiIHRyYW5zZm9ybT1cInJvdGF0ZS0xODBcIiBjbGFzcz1cImVjbC1idXR0b25fX2ljb25cIj48L2VjbC1pY29uPlxuPC9idXR0b24+XG48bmctY29udGVudCBzZWxlY3Q9XCJlY2wtbWVudS1tZWdhXCI+PC9uZy1jb250ZW50PlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==