desy-angular 12.0.0 → 13.0.0

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 (246) hide show
  1. package/esm2022/lib/desy-angular.module.mjs +10 -9
  2. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +5 -4
  3. package/esm2022/lib/desy-buttons/components/button-loader/button-loader.component.mjs +8 -5
  4. package/esm2022/lib/desy-buttons/components/dropdown/dropdown.component.mjs +11 -6
  5. package/esm2022/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.mjs +3 -3
  6. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +6 -5
  7. package/esm2022/lib/desy-buttons/components/pill/pill.component.mjs +5 -4
  8. package/esm2022/lib/desy-buttons/components/toggle/toggle.component.mjs +4 -3
  9. package/esm2022/lib/desy-buttons/desy-buttons.module.mjs +15 -15
  10. package/esm2022/lib/desy-buttons/interfaces/listbox-item-data.mjs +1 -1
  11. package/esm2022/lib/desy-commons/interfaces/title-data.mjs +1 -1
  12. package/esm2022/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.mjs +6 -5
  13. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes.component.mjs +11 -10
  14. package/esm2022/lib/desy-forms/components/date-input/date-input.component.mjs +10 -9
  15. package/esm2022/lib/desy-forms/components/datepicker/datepicker.component.mjs +190 -0
  16. package/esm2022/lib/desy-forms/components/datepicker/datepicker.pipe.mjs +34 -0
  17. package/esm2022/lib/desy-forms/components/error-message/error-message.component.mjs +4 -3
  18. package/esm2022/lib/desy-forms/components/fieldset/fieldset.component.mjs +5 -4
  19. package/esm2022/lib/desy-forms/components/file-upload/file-upload.component.mjs +8 -7
  20. package/esm2022/lib/desy-forms/components/hint/hint.component.mjs +4 -3
  21. package/esm2022/lib/desy-forms/components/input/input.component.mjs +8 -7
  22. package/esm2022/lib/desy-forms/components/input-group/input-group.component.mjs +11 -10
  23. package/esm2022/lib/desy-forms/components/label/label.component.mjs +4 -3
  24. package/esm2022/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +6 -5
  25. package/esm2022/lib/desy-forms/components/radios/radios.component.mjs +11 -10
  26. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +7 -6
  27. package/esm2022/lib/desy-forms/components/select/select.component.mjs +8 -7
  28. package/esm2022/lib/desy-forms/components/textarea/textarea.component.mjs +8 -7
  29. package/esm2022/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +4 -3
  30. package/esm2022/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +13 -12
  31. package/esm2022/lib/desy-forms/components/tree/tree-sub/tree-sub.component.mjs +5 -4
  32. package/esm2022/lib/desy-forms/components/tree/tree.component.mjs +12 -9
  33. package/esm2022/lib/desy-forms/desy-forms.module.mjs +40 -24
  34. package/esm2022/lib/desy-forms/interfaces/error-message-data.mjs +1 -1
  35. package/esm2022/lib/desy-forms/interfaces/fieldset-data.mjs +1 -1
  36. package/esm2022/lib/desy-forms/interfaces/hint-data.mjs +1 -1
  37. package/esm2022/lib/desy-forms/interfaces/item-checkbox-data.mjs +1 -1
  38. package/esm2022/lib/desy-forms/interfaces/item-date-input-data.mjs +1 -1
  39. package/esm2022/lib/desy-forms/interfaces/item-input-group-data.mjs +1 -1
  40. package/esm2022/lib/desy-forms/interfaces/item-radio-data.mjs +1 -1
  41. package/esm2022/lib/desy-forms/interfaces/label-data.mjs +1 -1
  42. package/esm2022/lib/desy-forms/interfaces/select-item-data.mjs +1 -1
  43. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +4 -3
  44. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +15 -14
  45. package/esm2022/lib/desy-modals/interfaces/dialog-options.mjs +1 -1
  46. package/esm2022/lib/desy-modals/interfaces/modal-options.mjs +1 -1
  47. package/esm2022/lib/desy-modals/services/dialog.service.mjs +2 -2
  48. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +4 -3
  49. package/esm2022/lib/desy-nav/components/error-summary/error-summary.component.mjs +5 -4
  50. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +4 -2
  51. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +6 -5
  52. package/esm2022/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.mjs +246 -2
  53. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +4 -3
  54. package/esm2022/lib/desy-nav/components/header/header.component.mjs +15 -14
  55. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.mjs +1 -1
  56. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.mjs +3 -3
  57. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +3 -3
  58. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced.component.mjs +6 -5
  59. package/esm2022/lib/desy-nav/components/header-mini/header-mini.component.mjs +5 -4
  60. package/esm2022/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.mjs +16 -0
  61. package/esm2022/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +7 -3
  62. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +8 -5
  63. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +6 -5
  64. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +3 -3
  65. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +280 -31
  66. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +3 -3
  67. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.mjs +3 -3
  68. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +6 -5
  69. package/esm2022/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +3 -3
  70. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +281 -32
  71. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +3 -3
  72. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +6 -5
  73. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +7 -6
  74. package/esm2022/lib/desy-nav/components/skip-link/skip-link.component.mjs +8 -3
  75. package/esm2022/lib/desy-nav/desy-nav.module.mjs +6 -5
  76. package/esm2022/lib/desy-nav/interfaces/breadcrumbs.data.mjs +1 -1
  77. package/esm2022/lib/desy-nav/interfaces/error-summary-data.mjs +1 -1
  78. package/esm2022/lib/desy-nav/interfaces/footer-data.mjs +1 -1
  79. package/esm2022/lib/desy-nav/interfaces/footer-logo.mjs +2 -1
  80. package/esm2022/lib/desy-nav/interfaces/header-dropdown-data.mjs +1 -1
  81. package/esm2022/lib/desy-nav/interfaces/header-mobile-text-data.mjs +1 -1
  82. package/esm2022/lib/desy-nav/interfaces/header-navigation-item-data.mjs +1 -1
  83. package/esm2022/lib/desy-nav/interfaces/header-subnav-data.mjs +1 -1
  84. package/esm2022/lib/desy-nav/interfaces/menu-horizontal-item-data.mjs +1 -1
  85. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.mjs +1 -1
  86. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item.mjs +1 -1
  87. package/esm2022/lib/desy-nav/interfaces/menu-navigation.mjs +1 -1
  88. package/esm2022/lib/desy-nav/interfaces/menu-vertical-items-data.mjs +1 -1
  89. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-data.mjs +1 -1
  90. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-items-data.mjs +1 -1
  91. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub.mjs +1 -1
  92. package/esm2022/lib/desy-nav/interfaces/menubar-item.mjs +1 -1
  93. package/esm2022/lib/desy-nav/interfaces/nav-item.data.mjs +1 -1
  94. package/esm2022/lib/desy-nav/interfaces/notification-items-data.mjs +1 -1
  95. package/esm2022/lib/desy-nav/interfaces/notification-options.mjs +1 -1
  96. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +22 -22
  97. package/esm2022/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.mjs +2 -2
  98. package/esm2022/lib/desy-pagination/desy-pagination.module.mjs +16 -8
  99. package/esm2022/lib/desy-tables/components/table/table.component.mjs +26 -5
  100. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +16 -16
  101. package/esm2022/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +12 -7
  102. package/esm2022/lib/desy-tables/interfaces/cell-data.mjs +1 -1
  103. package/esm2022/lib/desy-tables/interfaces/wrapper-data.mjs +1 -1
  104. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +279 -30
  105. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +5 -4
  106. package/esm2022/lib/desy-views/components/alert/alert.component.mjs +4 -3
  107. package/esm2022/lib/desy-views/components/card/card.component.mjs +4 -3
  108. package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +13 -4
  109. package/esm2022/lib/desy-views/components/description-list/description-list.component.mjs +4 -3
  110. package/esm2022/lib/desy-views/components/details/details.component.mjs +4 -3
  111. package/esm2022/lib/desy-views/components/item/item.component.mjs +11 -10
  112. package/esm2022/lib/desy-views/components/media-object/media-object.component.mjs +280 -32
  113. package/esm2022/lib/desy-views/components/status/status.component.mjs +283 -32
  114. package/esm2022/lib/desy-views/components/status-item/status-item.component.mjs +286 -37
  115. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +284 -35
  116. package/esm2022/lib/desy-views/components/tooltip/tooltip.component.mjs +281 -33
  117. package/esm2022/lib/desy-views/desy-views.module.mjs +27 -32
  118. package/esm2022/lib/desy-views/interfaces/accordion-item.data.mjs +1 -1
  119. package/esm2022/lib/desy-views/interfaces/alert-options.mjs +1 -1
  120. package/esm2022/lib/desy-views/interfaces/description-item.data.mjs +1 -1
  121. package/esm2022/lib/desy-views/interfaces/status-data.mjs +1 -1
  122. package/esm2022/lib/desy-views/interfaces/tabs-items-data.mjs +1 -1
  123. package/esm2022/lib/desy-views/interfaces/tabs-panel-data.mjs +1 -1
  124. package/esm2022/lib/desy-views/interfaces/term-definition.data.mjs +1 -1
  125. package/esm2022/lib/shared/components/accessibility/accessibility-attributes.mjs +78 -0
  126. package/esm2022/lib/shared/components/accessibility/accessibility.component.mjs +124 -2
  127. package/esm2022/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.mjs +126 -2
  128. package/esm2022/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.mjs +126 -2
  129. package/esm2022/lib/shared/components/index.mjs +4 -3
  130. package/esm2022/lib/shared/components/spinner/spinner.component.mjs +329 -0
  131. package/esm2022/lib/shared/directives/accessibility-directive.mjs +52 -0
  132. package/esm2022/lib/shared/directives/custom-inner-content.directive.mjs +21 -4
  133. package/esm2022/lib/shared/interfaces/accessibility-data.mjs +2 -0
  134. package/esm2022/lib/shared/pipes/make-html-list.pipe.mjs +2 -2
  135. package/esm2022/lib/shared/shared.module.mjs +12 -7
  136. package/esm2022/lib/shared/sharedExternal.module.mjs +24 -0
  137. package/esm2022/lib/shared/utils/search-utils.mjs +5 -1
  138. package/esm2022/public-api.mjs +5 -2
  139. package/fesm2022/desy-angular.mjs +4273 -965
  140. package/fesm2022/desy-angular.mjs.map +1 -1
  141. package/lib/desy-angular.module.d.ts +2 -1
  142. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +2 -0
  143. package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +3 -3
  144. package/lib/desy-buttons/desy-buttons.module.d.ts +3 -3
  145. package/lib/desy-buttons/interfaces/listbox-item-data.d.ts +2 -2
  146. package/lib/desy-commons/interfaces/title-data.d.ts +2 -2
  147. package/lib/desy-forms/components/datepicker/datepicker.component.d.ts +31 -0
  148. package/lib/desy-forms/components/datepicker/datepicker.pipe.d.ts +7 -0
  149. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +5 -5
  150. package/lib/desy-forms/components/tree/tree.component.d.ts +5 -4
  151. package/lib/desy-forms/desy-forms.module.d.ts +10 -6
  152. package/lib/desy-forms/interfaces/error-message-data.d.ts +2 -2
  153. package/lib/desy-forms/interfaces/fieldset-data.d.ts +2 -2
  154. package/lib/desy-forms/interfaces/hint-data.d.ts +2 -2
  155. package/lib/desy-forms/interfaces/item-checkbox-data.d.ts +3 -3
  156. package/lib/desy-forms/interfaces/item-date-input-data.d.ts +3 -3
  157. package/lib/desy-forms/interfaces/item-input-group-data.d.ts +3 -3
  158. package/lib/desy-forms/interfaces/item-radio-data.d.ts +3 -3
  159. package/lib/desy-forms/interfaces/label-data.d.ts +2 -2
  160. package/lib/desy-forms/interfaces/select-item-data.d.ts +2 -2
  161. package/lib/desy-modals/components/modal/modal.component.d.ts +8 -8
  162. package/lib/desy-modals/interfaces/dialog-options.d.ts +2 -2
  163. package/lib/desy-modals/interfaces/modal-options.d.ts +4 -4
  164. package/lib/desy-modals/services/dialog.service.d.ts +1 -1
  165. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +2 -1
  166. package/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.d.ts +61 -0
  167. package/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.d.ts +1 -1
  168. package/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.d.ts +1 -1
  169. package/lib/desy-nav/components/header-mini/header-mini.component.d.ts +1 -1
  170. package/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.d.ts +8 -0
  171. package/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.d.ts +4 -2
  172. package/lib/desy-nav/components/links-list/links-list.component.d.ts +2 -1
  173. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.d.ts +2 -2
  174. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +75 -13
  175. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +3 -3
  176. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +3 -3
  177. package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +3 -3
  178. package/lib/desy-nav/components/menubar/menubar.component.d.ts +75 -13
  179. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +2 -2
  180. package/lib/desy-nav/components/notification/notification.component.d.ts +2 -2
  181. package/lib/desy-nav/desy-nav.module.d.ts +29 -28
  182. package/lib/desy-nav/interfaces/breadcrumbs.data.d.ts +2 -2
  183. package/lib/desy-nav/interfaces/error-summary-data.d.ts +2 -2
  184. package/lib/desy-nav/interfaces/footer-data.d.ts +3 -3
  185. package/lib/desy-nav/interfaces/footer-logo.d.ts +1 -0
  186. package/lib/desy-nav/interfaces/header-dropdown-data.d.ts +2 -2
  187. package/lib/desy-nav/interfaces/header-mobile-text-data.d.ts +2 -2
  188. package/lib/desy-nav/interfaces/header-navigation-item-data.d.ts +2 -2
  189. package/lib/desy-nav/interfaces/header-subnav-data.d.ts +2 -2
  190. package/lib/desy-nav/interfaces/menu-horizontal-item-data.d.ts +2 -2
  191. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.d.ts +2 -2
  192. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item.d.ts +2 -2
  193. package/lib/desy-nav/interfaces/menu-navigation.d.ts +2 -2
  194. package/lib/desy-nav/interfaces/menu-vertical-items-data.d.ts +2 -2
  195. package/lib/desy-nav/interfaces/menu-vertical-sub-data.d.ts +2 -2
  196. package/lib/desy-nav/interfaces/menu-vertical-sub-items-data.d.ts +2 -2
  197. package/lib/desy-nav/interfaces/menubar-item-sub.d.ts +2 -2
  198. package/lib/desy-nav/interfaces/menubar-item.d.ts +3 -3
  199. package/lib/desy-nav/interfaces/nav-item.data.d.ts +2 -2
  200. package/lib/desy-nav/interfaces/notification-items-data.d.ts +2 -2
  201. package/lib/desy-nav/interfaces/notification-options.d.ts +4 -4
  202. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +4 -4
  203. package/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.d.ts +3 -3
  204. package/lib/desy-pagination/desy-pagination.module.d.ts +3 -1
  205. package/lib/desy-tables/components/table/table.component.d.ts +3 -0
  206. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +1 -1
  207. package/lib/desy-tables/directives/focus-clicked-cell.directive.d.ts +1 -0
  208. package/lib/desy-tables/interfaces/cell-data.d.ts +2 -2
  209. package/lib/desy-tables/interfaces/wrapper-data.d.ts +2 -2
  210. package/lib/desy-views/components/accordion/accordion.component.d.ts +75 -13
  211. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +5 -1
  212. package/lib/desy-views/components/item/item.component.d.ts +7 -7
  213. package/lib/desy-views/components/media-object/media-object.component.d.ts +75 -13
  214. package/lib/desy-views/components/status/status.component.d.ts +75 -13
  215. package/lib/desy-views/components/status-item/status-item.component.d.ts +77 -15
  216. package/lib/desy-views/components/tabs/tabs.component.d.ts +77 -15
  217. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +75 -13
  218. package/lib/desy-views/desy-views.module.d.ts +30 -31
  219. package/lib/desy-views/interfaces/accordion-item.data.d.ts +2 -2
  220. package/lib/desy-views/interfaces/alert-options.d.ts +2 -2
  221. package/lib/desy-views/interfaces/description-item.data.d.ts +2 -2
  222. package/lib/desy-views/interfaces/status-data.d.ts +2 -2
  223. package/lib/desy-views/interfaces/tabs-items-data.d.ts +2 -2
  224. package/lib/desy-views/interfaces/tabs-panel-data.d.ts +2 -2
  225. package/lib/desy-views/interfaces/term-definition.data.d.ts +2 -2
  226. package/lib/shared/components/accessibility/accessibility-attributes.d.ts +1 -0
  227. package/lib/shared/components/accessibility/accessibility.component.d.ts +78 -17
  228. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +79 -16
  229. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +79 -16
  230. package/lib/shared/components/index.d.ts +3 -2
  231. package/lib/shared/components/spinner/spinner.component.d.ts +86 -0
  232. package/lib/shared/directives/accessibility-directive.d.ts +16 -0
  233. package/lib/shared/directives/custom-inner-content.directive.d.ts +3 -2
  234. package/lib/shared/interfaces/accessibility-data.d.ts +77 -0
  235. package/lib/shared/shared.module.d.ts +4 -3
  236. package/lib/shared/sharedExternal.module.d.ts +8 -0
  237. package/package.json +2 -2
  238. package/public-api.d.ts +4 -1
  239. package/esm2022/lib/desy-forms/interfaces/accesibility-data.mjs +0 -2
  240. package/esm2022/lib/desy-pagination/interfaces/index.mjs +0 -2
  241. package/esm2022/lib/desy-views/components/spinner/spinner.component.mjs +0 -81
  242. package/esm2022/lib/shared/interfaces/accesibility-data.mjs +0 -2
  243. package/lib/desy-forms/interfaces/accesibility-data.d.ts +0 -15
  244. package/lib/desy-pagination/interfaces/index.d.ts +0 -1
  245. package/lib/desy-views/components/spinner/spinner.component.d.ts +0 -24
  246. package/lib/shared/interfaces/accesibility-data.d.ts +0 -16
@@ -7,28 +7,91 @@ import { AccordionItemComponent } from './accordion-item/accordion-item.componen
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common";
9
9
  import * as i2 from "../../../shared/directives/custom-inner-content.directive";
10
- import * as i3 from "../../../shared/pipes/make-html-list.pipe";
10
+ import * as i3 from "../../../shared/directives/accessibility-directive";
11
+ import * as i4 from "../../../shared/pipes/make-html-list.pipe";
11
12
  export class AccordionComponent extends AccessibilityComponent {
12
13
  constructor() {
13
14
  super(...arguments);
14
15
  this.classes = "block";
16
+ this.role = null;
17
+ this.ariaLabel = null;
18
+ this.ariaDescribedBy = null;
19
+ this.ariaLabelledBy = null;
20
+ this.ariaHidden = null;
21
+ this.ariaDisabled = null;
22
+ this.ariaControls = null;
23
+ this.ariaCurrent = null;
24
+ this.ariaLive = null;
25
+ this.ariaExpanded = null;
26
+ this.ariaErrorMessage = null;
27
+ this.ariaHasPopup = null;
28
+ this.ariaModal = null;
29
+ this.ariaChecked = null;
30
+ this.ariaPressed = null;
31
+ this.ariaReadonly = null;
32
+ this.ariaRequired = null;
33
+ this.ariaSelected = null;
34
+ this.ariaValuemin = null;
35
+ this.ariaValuemax = null;
36
+ this.ariaValuenow = null;
37
+ this.ariaValuetext = null;
38
+ this.ariaOrientation = null;
39
+ this.ariaLevel = null;
40
+ this.ariaMultiselectable = null;
41
+ this.ariaPlaceholder = null;
42
+ this.ariaPosinset = null;
43
+ this.ariaSetsize = null;
44
+ this.ariaSort = null;
45
+ this.ariaBusy = null;
46
+ this.ariaDropeffect = null;
47
+ this.ariaGrabbed = null;
48
+ this.ariaActivedescendant = null;
49
+ this.ariaAtomic = null;
50
+ this.ariaAutocomplete = null;
51
+ this.ariaBraillelabel = null;
52
+ this.ariaBrailleroledescription = null;
53
+ this.ariaColcount = null;
54
+ this.ariaColindex = null;
55
+ this.ariaColindextext = null;
56
+ this.ariaColspan = null;
57
+ this.ariaDescription = null;
58
+ this.ariaDetails = null;
59
+ this.ariaFlowto = null;
60
+ this.ariaInvalid = null;
61
+ this.ariaKeyshortcuts = null;
62
+ this.ariaOwns = null;
63
+ this.ariaRelevant = null;
64
+ this.ariaRoledescription = null;
65
+ this.ariaRowcount = null;
66
+ this.ariaRowindex = null;
67
+ this.ariaRowindextext = null;
68
+ this.ariaRowspan = null;
69
+ this.tabindex = null;
70
+ this.title = null;
71
+ this.alt = null;
72
+ this.lang = null;
73
+ this.accesskey = null;
74
+ this.autocomplete = null;
75
+ this.autofocus = null;
76
+ this.contenteditable = null;
77
+ this.dir = null;
78
+ this.draggable = null;
79
+ this.enterkeyhint = null;
80
+ this.hidden = null;
81
+ this.inputmode = null;
82
+ this.spellcheck = null;
83
+ this.translate = null;
84
+ this.ariaMultiline = null;
85
+ this.for = null;
86
+ this.form = null;
87
+ this.headers = null;
88
+ this.placeholder = null;
89
+ this.readonly = null;
90
+ this.required = null;
15
91
  this.showAll = true;
16
92
  }
17
93
  ngOnChanges(changes) {
18
94
  this.classes = this.classes ? this.classes + " block" : null;
19
- this.roleData = this.role ? this.role : null;
20
- this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;
21
- this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;
22
- this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;
23
- this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;
24
- this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;
25
- this.ariaControlsData = this.ariaControls ? this.ariaControls : null;
26
- this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;
27
- this.ariaLiveData = this.ariaLive ? this.ariaLive : null;
28
- this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;
29
- this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;
30
- this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;
31
- this.ariaModalData = this.ariaModal ? this.ariaModal : null;
32
95
  }
33
96
  getItemId(item, index) {
34
97
  let id;
@@ -116,7 +179,7 @@ export class AccordionComponent extends AccessibilityComponent {
116
179
  return item instanceof AccordionItemComponent ? item.contentComponent : null;
117
180
  }
118
181
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
119
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AccordionComponent, selector: "desy-accordion", inputs: { id: "id", idPrefix: "idPrefix", allowToggle: "allowToggle", allowMultiple: "allowMultiple", heading: "heading", headingLevel: "headingLevel", showControl: "showControl", items: "items", classes: "classes" }, host: { properties: { "class": "this.classes", "attr.role": "this.roleData", "attr.aria-label": "this.ariaLabelData", "attr.aria-describedby": "this.ariaDescribedbyData", "attr.aria-labelledby": "this.ariaLabelledbyData", "attr.aria-hidden": "this.ariaHiddenData", "attr.aria-disabled": "this.ariaDisabledData", "attr.aria-controls": "this.ariaControlsData", "attr.aria-current": "this.ariaCurrentData", "attr.aria-live": "this.ariaLiveData", "attr.aria-expanded": "this.ariaExpandedData", "attr.aria-errormessage": "this.ariaErrormessageData", "attr.aria-haspopup": "this.ariaHaspopupData", "attr.aria-modal": "this.ariaModalData" } }, queries: [{ propertyName: "headingComponent", predicate: AccordionHeaderComponent }, { propertyName: "itemComponentList", predicate: AccordionItemComponent }], viewQueries: [{ propertyName: "itemSelectors", predicate: ["itemSelector"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "\n <div class=\"flex justify-between\">\n <ng-container *ngIf=\"headingComponent || heading\">\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\n <h1 *ngSwitchCase=\"1\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h1>\n <h2 *ngSwitchCase=\"2\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h2>\n <h3 *ngSwitchCase=\"3\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h3>\n <h4 *ngSwitchCase=\"4\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h4>\n <h5 *ngSwitchCase=\"5\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h5>\n </ng-container>\n <button [attr.id]=\"id\" *ngIf=\"showControl\" (click)=\"changeAll()\" type=\"button\"\n class=\"ml-auto py-base text-sm text-neutral-dark underline focus:text-black focus:bg-warning-base focus:outline-none focus:shadow-outline-focus text-right\">\n {{showAll ? 'Mostrar' : 'Ocultar'}} todo\n </button>\n </ng-container>\n </div>\n <div class=\"Accordion\">\n <div *ngFor=\"let item of getItems(); index as i\" class=\"-my-px px-xs py-sm border-t border-b border-neutral-base\"\n (keydown.home)=\"focusFirstItem($event)\"\n (keydown.end)=\"focusLastItem($event)\"\n (keydown.arrowup)=\"focusPreviousItem($event, i)\"\n (keydown.arrowdown)=\"focusNextItem($event, i)\"\n (click)=\"selectItem(i)\">\n\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\n <h2 *ngSwitchCase=\"1\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h2>\n <h3 *ngSwitchCase=\"2\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h3>\n <h4 *ngSwitchCase=\"3\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h4>\n <h5 *ngSwitchCase=\"4\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h5>\n <h6 *ngSwitchCase=\"5\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h6>\n </ng-container>\n <p class=\"sr-only\" aria-hidden=\"true\">Haz click en el bot\u00F3n anterior para mostrar u ocultar</p>\n <div *ngIf=\"item.open\" class=\"Accordion-panel\"\n [class]=\"item.classes\"\n [attr.id]=\"getItemId(item, i)\"\n [attr.role]=\"(item.role ? role : 'accordion')\" \n [attr.aria-selected]=\"currentItem === i ? 'true' : 'false'\"\n [attr.aria-describedby]=\"item.ariaDescribedBy\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-labelledby]=\"item.ariaLabelledBy\"\n [attr.aria-hidden]=\"item.ariaHidden\"\n [attr.aria-controls]=\"'accordion-' + getItemId(item, i)\"\n [attr.aria-current]=\"item.ariaCurrent\"\n [attr.aria-live]=\"item.ariaLive\"\n [attr.aria-expanded]=\"item.ariaExpanded\"\n [attr.aria-haspopup]=\"item.ariaHasPopup\">\n <ng-container *desyCustomInnerContent=\"{ component: getItemContent(item), html: item.html, text: item.text }\"></ng-container>\n </div>\n </div>\n </div>\n<ng-template #itemHeaderContent let-item=\"item\" let-id=\"id\" let-index=\"index\">\n <button #itemSelector [id]=\"id + '-title'\" type=\"button\" class=\"group relative w-full py-sm font-semibold text-left cursor-pointer focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black\"\n [attr.aria-controls]=\"id\" [attr.aria-expanded]=\"item.open\" (click)=\"toggleItem(item)\" [attr.disabled]=\"item.disabled\" [ngClass]=\"item.disabled ? 'cursor-not-allowed' : ''\">\n <ng-container *desyCustomInnerContent=\"{ component: getItemHeader(item), html: item.headerHtml, text: item.headerText }\"></ng-container>\n <span *ngIf=\"!item.disabled\" class=\"absolute inset-y-0 right-0 py-sm font-normal text-sm text-neutral-dark underline group-focus:text-black pointer-events-none\" aria-hidden=\"true\" [ngClass]=\"{'hidden': item.disabled}\">\n <span *ngIf=\"!item.open\" [class]=\"['Accordion-show', item.showHeaderButton?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: item.showHeaderButton, text: 'Mostrar' }\"></ng-container> \n </span>\n <span *ngIf=\"allowToggle && item.open\" [class]=\"['Accordion-hide', item.showHeaderButton?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: item.hideHeaderButton, text: 'Ocultar' }\"></ng-container>\n </span>\n </span>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "pipe", type: i3.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
182
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AccordionComponent, selector: "desy-accordion", inputs: { id: "id", idPrefix: "idPrefix", allowToggle: "allowToggle", allowMultiple: "allowMultiple", heading: "heading", headingLevel: "headingLevel", showControl: "showControl", items: "items", classes: "classes" }, host: { properties: { "class": "this.classes", "attr.role": "this.role", "attr.aria-label": "this.ariaLabel", "attr.aria-describedby": "this.ariaDescribedBy", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.aria-hidden": "this.ariaHidden", "attr.aria-disabled": "this.ariaDisabled", "attr.aria-controls": "this.ariaControls", "attr.aria-current": "this.ariaCurrent", "attr.aria-live": "this.ariaLive", "attr.aria-expanded": "this.ariaExpanded", "attr.aria-errormessage": "this.ariaErrorMessage", "attr.aria-haspopup": "this.ariaHasPopup", "attr.aria-modal": "this.ariaModal", "attr.aria-checked": "this.ariaChecked", "attr.aria-pressed": "this.ariaPressed", "attr.aria-readonly": "this.ariaReadonly", "attr.aria-required": "this.ariaRequired", "attr.aria-selected": "this.ariaSelected", "attr.aria-valuemin": "this.ariaValuemin", "attr.aria-valuemax": "this.ariaValuemax", "attr.aria-valuenow": "this.ariaValuenow", "attr.aria-valuetext": "this.ariaValuetext", "attr.aria-orientation": "this.ariaOrientation", "attr.aria-level": "this.ariaLevel", "attr.aria-multiselectable": "this.ariaMultiselectable", "attr.aria-placeholder": "this.ariaPlaceholder", "attr.aria-posinset": "this.ariaPosinset", "attr.aria-setsize": "this.ariaSetsize", "attr.aria-sort": "this.ariaSort", "attr.aria-busy": "this.ariaBusy", "attr.aria-dropeffect": "this.ariaDropeffect", "attr.aria-grabbed": "this.ariaGrabbed", "attr.aria-activedescendant": "this.ariaActivedescendant", "attr.aria-atomic": "this.ariaAtomic", "attr.aria-autocomplete": "this.ariaAutocomplete", "attr.aria-braillelabel": "this.ariaBraillelabel", "attr.aria-brailleroledescription": "this.ariaBrailleroledescription", "attr.aria-colcount": "this.ariaColcount", "attr.aria-colindex": "this.ariaColindex", "attr.aria-colindextext": "this.ariaColindextext", "attr.aria-colspan": "this.ariaColspan", "attr.aria-description": "this.ariaDescription", "attr.aria-details": "this.ariaDetails", "attr.aria-flowto": "this.ariaFlowto", "attr.aria-invalid": "this.ariaInvalid", "attr.aria-keyshortcuts": "this.ariaKeyshortcuts", "attr.aria-owns": "this.ariaOwns", "attr.aria-relevant": "this.ariaRelevant", "attr.aria-roledescription": "this.ariaRoledescription", "attr.aria-rowcount": "this.ariaRowcount", "attr.aria-rowindex": "this.ariaRowindex", "attr.aria-rowindextext": "this.ariaRowindextext", "attr.aria-rowspan": "this.ariaRowspan", "attr.tabindex": "this.tabindex", "attr.title": "this.title", "attr.alt": "this.alt", "attr.lang": "this.lang", "attr.accesskey": "this.accesskey", "attr.autocomplete": "this.autocomplete", "attr.autofocus": "this.autofocus", "attr.contenteditable": "this.contenteditable", "attr.dir": "this.dir", "attr.draggable": "this.draggable", "attr.enterkeyhint": "this.enterkeyhint", "attr.hidden": "this.hidden", "attr.inputmode": "this.inputmode", "attr.spellcheck": "this.spellcheck", "attr.translate": "this.translate", "attr.aria-multiline": "this.ariaMultiline", "attr.for": "this.for", "attr.form": "this.form", "attr.headers": "this.headers", "attr.placeholder": "this.placeholder", "attr.readonly": "this.readonly", "attr.required": "this.required" } }, queries: [{ propertyName: "headingComponent", predicate: AccordionHeaderComponent }, { propertyName: "itemComponentList", predicate: AccordionItemComponent }], viewQueries: [{ propertyName: "itemSelectors", predicate: ["itemSelector"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "\n <div class=\"flex justify-between\">\n <ng-container *ngIf=\"headingComponent || heading\">\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\n <h1 *ngSwitchCase=\"1\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h1>\n <h2 *ngSwitchCase=\"2\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h2>\n <h3 *ngSwitchCase=\"3\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h3>\n <h4 *ngSwitchCase=\"4\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h4>\n <h5 *ngSwitchCase=\"5\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h5>\n </ng-container>\n <button [attr.id]=\"id\" *ngIf=\"showControl\" (click)=\"changeAll()\" type=\"button\"\n class=\"ml-auto py-base text-sm text-neutral-dark underline focus:text-black focus:bg-warning-base focus:outline-none focus:shadow-outline-focus text-right\">\n {{showAll ? 'Mostrar' : 'Ocultar'}} todo\n </button>\n </ng-container>\n </div>\n <div class=\"Accordion\">\n <div *ngFor=\"let item of getItems(); index as i\" class=\"-my-px px-xs py-sm border-t border-b border-neutral-base\"\n (keydown.home)=\"focusFirstItem($event)\"\n (keydown.end)=\"focusLastItem($event)\"\n (keydown.arrowup)=\"focusPreviousItem($event, i)\"\n (keydown.arrowdown)=\"focusNextItem($event, i)\"\n (click)=\"selectItem(i)\">\n\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\n <h2 *ngSwitchCase=\"1\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h2>\n <h3 *ngSwitchCase=\"2\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h3>\n <h4 *ngSwitchCase=\"3\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h4>\n <h5 *ngSwitchCase=\"4\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h5>\n <h6 *ngSwitchCase=\"5\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h6>\n </ng-container>\n <p class=\"sr-only\" aria-hidden=\"true\">Haz click en el bot\u00F3n anterior para mostrar u ocultar</p>\n <div *ngIf=\"item.open\" class=\"c-accordion__panel\"\n [class]=\"item.classes\"\n [attr.id]=\"getItemId(item, i)\"\n [desyAppAccessibility]=\"item\">\n <ng-container *desyCustomInnerContent=\"{ component: getItemContent(item), html: item.html, text: item.text }\"></ng-container>\n </div>\n </div>\n </div>\n<ng-template #itemHeaderContent let-item=\"item\" let-id=\"id\" let-index=\"index\">\n <button #itemSelector [id]=\"id + '-title'\" type=\"button\" class=\"group relative w-full py-sm font-semibold text-left cursor-pointer focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black\"\n [attr.aria-controls]=\"id\" [attr.aria-expanded]=\"item.open === true ? 'true' : 'false'\" (click)=\"toggleItem(item)\" [attr.disabled]=\"item.disabled\" [ngClass]=\"item.disabled ? 'cursor-not-allowed' : ''\">\n <ng-container *desyCustomInnerContent=\"{ component: getItemHeader(item), html: item.headerHtml, text: item.headerText }\"></ng-container>\n <span *ngIf=\"!item.disabled\" class=\"absolute inset-y-0 right-0 py-sm font-normal text-sm text-neutral-dark underline group-focus:text-black pointer-events-none\" aria-hidden=\"true\" [ngClass]=\"{'hidden': item.disabled}\">\n <span *ngIf=\"!item.open\" [class]=\"['Accordion-show', item.showHeaderButton?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: item.showHeaderButton, text: 'Mostrar' }\"></ng-container> \n </span>\n <span *ngIf=\"allowToggle && item.open\" [class]=\"['Accordion-hide', item.showHeaderButton?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: item.hideHeaderButton, text: 'Ocultar' }\"></ng-container>\n </span>\n </span>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i3.AccessibilityDirective, selector: "[desyAppAccessibility]", inputs: ["desyAppAccessibility"] }, { kind: "pipe", type: i4.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
120
183
  }
121
184
  __decorate([
122
185
  DesyContentChild(),
@@ -124,7 +187,7 @@ __decorate([
124
187
  ], AccordionComponent.prototype, "headingComponent", void 0);
125
188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionComponent, decorators: [{
126
189
  type: Component,
127
- args: [{ selector: 'desy-accordion', template: "\n <div class=\"flex justify-between\">\n <ng-container *ngIf=\"headingComponent || heading\">\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\n <h1 *ngSwitchCase=\"1\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h1>\n <h2 *ngSwitchCase=\"2\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h2>\n <h3 *ngSwitchCase=\"3\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h3>\n <h4 *ngSwitchCase=\"4\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h4>\n <h5 *ngSwitchCase=\"5\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h5>\n </ng-container>\n <button [attr.id]=\"id\" *ngIf=\"showControl\" (click)=\"changeAll()\" type=\"button\"\n class=\"ml-auto py-base text-sm text-neutral-dark underline focus:text-black focus:bg-warning-base focus:outline-none focus:shadow-outline-focus text-right\">\n {{showAll ? 'Mostrar' : 'Ocultar'}} todo\n </button>\n </ng-container>\n </div>\n <div class=\"Accordion\">\n <div *ngFor=\"let item of getItems(); index as i\" class=\"-my-px px-xs py-sm border-t border-b border-neutral-base\"\n (keydown.home)=\"focusFirstItem($event)\"\n (keydown.end)=\"focusLastItem($event)\"\n (keydown.arrowup)=\"focusPreviousItem($event, i)\"\n (keydown.arrowdown)=\"focusNextItem($event, i)\"\n (click)=\"selectItem(i)\">\n\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\n <h2 *ngSwitchCase=\"1\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h2>\n <h3 *ngSwitchCase=\"2\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h3>\n <h4 *ngSwitchCase=\"3\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h4>\n <h5 *ngSwitchCase=\"4\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h5>\n <h6 *ngSwitchCase=\"5\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h6>\n </ng-container>\n <p class=\"sr-only\" aria-hidden=\"true\">Haz click en el bot\u00F3n anterior para mostrar u ocultar</p>\n <div *ngIf=\"item.open\" class=\"Accordion-panel\"\n [class]=\"item.classes\"\n [attr.id]=\"getItemId(item, i)\"\n [attr.role]=\"(item.role ? role : 'accordion')\" \n [attr.aria-selected]=\"currentItem === i ? 'true' : 'false'\"\n [attr.aria-describedby]=\"item.ariaDescribedBy\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-labelledby]=\"item.ariaLabelledBy\"\n [attr.aria-hidden]=\"item.ariaHidden\"\n [attr.aria-controls]=\"'accordion-' + getItemId(item, i)\"\n [attr.aria-current]=\"item.ariaCurrent\"\n [attr.aria-live]=\"item.ariaLive\"\n [attr.aria-expanded]=\"item.ariaExpanded\"\n [attr.aria-haspopup]=\"item.ariaHasPopup\">\n <ng-container *desyCustomInnerContent=\"{ component: getItemContent(item), html: item.html, text: item.text }\"></ng-container>\n </div>\n </div>\n </div>\n<ng-template #itemHeaderContent let-item=\"item\" let-id=\"id\" let-index=\"index\">\n <button #itemSelector [id]=\"id + '-title'\" type=\"button\" class=\"group relative w-full py-sm font-semibold text-left cursor-pointer focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black\"\n [attr.aria-controls]=\"id\" [attr.aria-expanded]=\"item.open\" (click)=\"toggleItem(item)\" [attr.disabled]=\"item.disabled\" [ngClass]=\"item.disabled ? 'cursor-not-allowed' : ''\">\n <ng-container *desyCustomInnerContent=\"{ component: getItemHeader(item), html: item.headerHtml, text: item.headerText }\"></ng-container>\n <span *ngIf=\"!item.disabled\" class=\"absolute inset-y-0 right-0 py-sm font-normal text-sm text-neutral-dark underline group-focus:text-black pointer-events-none\" aria-hidden=\"true\" [ngClass]=\"{'hidden': item.disabled}\">\n <span *ngIf=\"!item.open\" [class]=\"['Accordion-show', item.showHeaderButton?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: item.showHeaderButton, text: 'Mostrar' }\"></ng-container> \n </span>\n <span *ngIf=\"allowToggle && item.open\" [class]=\"['Accordion-hide', item.showHeaderButton?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: item.hideHeaderButton, text: 'Ocultar' }\"></ng-container>\n </span>\n </span>\n </button>\n</ng-template>\n" }]
190
+ args: [{ selector: 'desy-accordion', template: "\n <div class=\"flex justify-between\">\n <ng-container *ngIf=\"headingComponent || heading\">\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\n <h1 *ngSwitchCase=\"1\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h1>\n <h2 *ngSwitchCase=\"2\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h2>\n <h3 *ngSwitchCase=\"3\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h3>\n <h4 *ngSwitchCase=\"4\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h4>\n <h5 *ngSwitchCase=\"5\" [class]=\"getTitleClasses()\">\n <ng-container *desyCustomInnerContent=\"{\n component: headingComponent ? headingComponent : null,\n html: heading ? heading.html : null,\n text: heading ? heading.text : null\n }\"></ng-container>\n </h5>\n </ng-container>\n <button [attr.id]=\"id\" *ngIf=\"showControl\" (click)=\"changeAll()\" type=\"button\"\n class=\"ml-auto py-base text-sm text-neutral-dark underline focus:text-black focus:bg-warning-base focus:outline-none focus:shadow-outline-focus text-right\">\n {{showAll ? 'Mostrar' : 'Ocultar'}} todo\n </button>\n </ng-container>\n </div>\n <div class=\"Accordion\">\n <div *ngFor=\"let item of getItems(); index as i\" class=\"-my-px px-xs py-sm border-t border-b border-neutral-base\"\n (keydown.home)=\"focusFirstItem($event)\"\n (keydown.end)=\"focusLastItem($event)\"\n (keydown.arrowup)=\"focusPreviousItem($event, i)\"\n (keydown.arrowdown)=\"focusNextItem($event, i)\"\n (click)=\"selectItem(i)\">\n\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\n <h2 *ngSwitchCase=\"1\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h2>\n <h3 *ngSwitchCase=\"2\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h3>\n <h4 *ngSwitchCase=\"3\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h4>\n <h5 *ngSwitchCase=\"4\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h5>\n <h6 *ngSwitchCase=\"5\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h6>\n </ng-container>\n <p class=\"sr-only\" aria-hidden=\"true\">Haz click en el bot\u00F3n anterior para mostrar u ocultar</p>\n <div *ngIf=\"item.open\" class=\"c-accordion__panel\"\n [class]=\"item.classes\"\n [attr.id]=\"getItemId(item, i)\"\n [desyAppAccessibility]=\"item\">\n <ng-container *desyCustomInnerContent=\"{ component: getItemContent(item), html: item.html, text: item.text }\"></ng-container>\n </div>\n </div>\n </div>\n<ng-template #itemHeaderContent let-item=\"item\" let-id=\"id\" let-index=\"index\">\n <button #itemSelector [id]=\"id + '-title'\" type=\"button\" class=\"group relative w-full py-sm font-semibold text-left cursor-pointer focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black\"\n [attr.aria-controls]=\"id\" [attr.aria-expanded]=\"item.open === true ? 'true' : 'false'\" (click)=\"toggleItem(item)\" [attr.disabled]=\"item.disabled\" [ngClass]=\"item.disabled ? 'cursor-not-allowed' : ''\">\n <ng-container *desyCustomInnerContent=\"{ component: getItemHeader(item), html: item.headerHtml, text: item.headerText }\"></ng-container>\n <span *ngIf=\"!item.disabled\" class=\"absolute inset-y-0 right-0 py-sm font-normal text-sm text-neutral-dark underline group-focus:text-black pointer-events-none\" aria-hidden=\"true\" [ngClass]=\"{'hidden': item.disabled}\">\n <span *ngIf=\"!item.open\" [class]=\"['Accordion-show', item.showHeaderButton?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: item.showHeaderButton, text: 'Mostrar' }\"></ng-container> \n </span>\n <span *ngIf=\"allowToggle && item.open\" [class]=\"['Accordion-hide', item.showHeaderButton?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: item.hideHeaderButton, text: 'Ocultar' }\"></ng-container>\n </span>\n </span>\n </button>\n</ng-template>\n" }]
128
191
  }], propDecorators: { itemSelectors: [{
129
192
  type: ViewChildren,
130
193
  args: ['itemSelector']
@@ -149,45 +212,231 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
149
212
  }, {
150
213
  type: HostBinding,
151
214
  args: ['class']
152
- }], roleData: [{
215
+ }], role: [{
153
216
  type: HostBinding,
154
217
  args: ['attr.role']
155
- }], ariaLabelData: [{
218
+ }], ariaLabel: [{
156
219
  type: HostBinding,
157
220
  args: ['attr.aria-label']
158
- }], ariaDescribedbyData: [{
221
+ }], ariaDescribedBy: [{
159
222
  type: HostBinding,
160
223
  args: ['attr.aria-describedby']
161
- }], ariaLabelledbyData: [{
224
+ }], ariaLabelledBy: [{
162
225
  type: HostBinding,
163
226
  args: ['attr.aria-labelledby']
164
- }], ariaHiddenData: [{
227
+ }], ariaHidden: [{
165
228
  type: HostBinding,
166
229
  args: ['attr.aria-hidden']
167
- }], ariaDisabledData: [{
230
+ }], ariaDisabled: [{
168
231
  type: HostBinding,
169
232
  args: ['attr.aria-disabled']
170
- }], ariaControlsData: [{
233
+ }], ariaControls: [{
171
234
  type: HostBinding,
172
235
  args: ['attr.aria-controls']
173
- }], ariaCurrentData: [{
236
+ }], ariaCurrent: [{
174
237
  type: HostBinding,
175
238
  args: ['attr.aria-current']
176
- }], ariaLiveData: [{
239
+ }], ariaLive: [{
177
240
  type: HostBinding,
178
241
  args: ['attr.aria-live']
179
- }], ariaExpandedData: [{
242
+ }], ariaExpanded: [{
180
243
  type: HostBinding,
181
244
  args: ['attr.aria-expanded']
182
- }], ariaErrormessageData: [{
245
+ }], ariaErrorMessage: [{
183
246
  type: HostBinding,
184
247
  args: ['attr.aria-errormessage']
185
- }], ariaHaspopupData: [{
248
+ }], ariaHasPopup: [{
186
249
  type: HostBinding,
187
250
  args: ['attr.aria-haspopup']
188
- }], ariaModalData: [{
251
+ }], ariaModal: [{
189
252
  type: HostBinding,
190
253
  args: ['attr.aria-modal']
254
+ }], ariaChecked: [{
255
+ type: HostBinding,
256
+ args: ['attr.aria-checked']
257
+ }], ariaPressed: [{
258
+ type: HostBinding,
259
+ args: ['attr.aria-pressed']
260
+ }], ariaReadonly: [{
261
+ type: HostBinding,
262
+ args: ['attr.aria-readonly']
263
+ }], ariaRequired: [{
264
+ type: HostBinding,
265
+ args: ['attr.aria-required']
266
+ }], ariaSelected: [{
267
+ type: HostBinding,
268
+ args: ['attr.aria-selected']
269
+ }], ariaValuemin: [{
270
+ type: HostBinding,
271
+ args: ['attr.aria-valuemin']
272
+ }], ariaValuemax: [{
273
+ type: HostBinding,
274
+ args: ['attr.aria-valuemax']
275
+ }], ariaValuenow: [{
276
+ type: HostBinding,
277
+ args: ['attr.aria-valuenow']
278
+ }], ariaValuetext: [{
279
+ type: HostBinding,
280
+ args: ['attr.aria-valuetext']
281
+ }], ariaOrientation: [{
282
+ type: HostBinding,
283
+ args: ['attr.aria-orientation']
284
+ }], ariaLevel: [{
285
+ type: HostBinding,
286
+ args: ['attr.aria-level']
287
+ }], ariaMultiselectable: [{
288
+ type: HostBinding,
289
+ args: ['attr.aria-multiselectable']
290
+ }], ariaPlaceholder: [{
291
+ type: HostBinding,
292
+ args: ['attr.aria-placeholder']
293
+ }], ariaPosinset: [{
294
+ type: HostBinding,
295
+ args: ['attr.aria-posinset']
296
+ }], ariaSetsize: [{
297
+ type: HostBinding,
298
+ args: ['attr.aria-setsize']
299
+ }], ariaSort: [{
300
+ type: HostBinding,
301
+ args: ['attr.aria-sort']
302
+ }], ariaBusy: [{
303
+ type: HostBinding,
304
+ args: ['attr.aria-busy']
305
+ }], ariaDropeffect: [{
306
+ type: HostBinding,
307
+ args: ['attr.aria-dropeffect']
308
+ }], ariaGrabbed: [{
309
+ type: HostBinding,
310
+ args: ['attr.aria-grabbed']
311
+ }], ariaActivedescendant: [{
312
+ type: HostBinding,
313
+ args: ['attr.aria-activedescendant']
314
+ }], ariaAtomic: [{
315
+ type: HostBinding,
316
+ args: ['attr.aria-atomic']
317
+ }], ariaAutocomplete: [{
318
+ type: HostBinding,
319
+ args: ['attr.aria-autocomplete']
320
+ }], ariaBraillelabel: [{
321
+ type: HostBinding,
322
+ args: ['attr.aria-braillelabel']
323
+ }], ariaBrailleroledescription: [{
324
+ type: HostBinding,
325
+ args: ['attr.aria-brailleroledescription']
326
+ }], ariaColcount: [{
327
+ type: HostBinding,
328
+ args: ['attr.aria-colcount']
329
+ }], ariaColindex: [{
330
+ type: HostBinding,
331
+ args: ['attr.aria-colindex']
332
+ }], ariaColindextext: [{
333
+ type: HostBinding,
334
+ args: ['attr.aria-colindextext']
335
+ }], ariaColspan: [{
336
+ type: HostBinding,
337
+ args: ['attr.aria-colspan']
338
+ }], ariaDescription: [{
339
+ type: HostBinding,
340
+ args: ['attr.aria-description']
341
+ }], ariaDetails: [{
342
+ type: HostBinding,
343
+ args: ['attr.aria-details']
344
+ }], ariaFlowto: [{
345
+ type: HostBinding,
346
+ args: ['attr.aria-flowto']
347
+ }], ariaInvalid: [{
348
+ type: HostBinding,
349
+ args: ['attr.aria-invalid']
350
+ }], ariaKeyshortcuts: [{
351
+ type: HostBinding,
352
+ args: ['attr.aria-keyshortcuts']
353
+ }], ariaOwns: [{
354
+ type: HostBinding,
355
+ args: ['attr.aria-owns']
356
+ }], ariaRelevant: [{
357
+ type: HostBinding,
358
+ args: ['attr.aria-relevant']
359
+ }], ariaRoledescription: [{
360
+ type: HostBinding,
361
+ args: ['attr.aria-roledescription']
362
+ }], ariaRowcount: [{
363
+ type: HostBinding,
364
+ args: ['attr.aria-rowcount']
365
+ }], ariaRowindex: [{
366
+ type: HostBinding,
367
+ args: ['attr.aria-rowindex']
368
+ }], ariaRowindextext: [{
369
+ type: HostBinding,
370
+ args: ['attr.aria-rowindextext']
371
+ }], ariaRowspan: [{
372
+ type: HostBinding,
373
+ args: ['attr.aria-rowspan']
374
+ }], tabindex: [{
375
+ type: HostBinding,
376
+ args: ['attr.tabindex']
377
+ }], title: [{
378
+ type: HostBinding,
379
+ args: ['attr.title']
380
+ }], alt: [{
381
+ type: HostBinding,
382
+ args: ['attr.alt']
383
+ }], lang: [{
384
+ type: HostBinding,
385
+ args: ['attr.lang']
386
+ }], accesskey: [{
387
+ type: HostBinding,
388
+ args: ['attr.accesskey']
389
+ }], autocomplete: [{
390
+ type: HostBinding,
391
+ args: ['attr.autocomplete']
392
+ }], autofocus: [{
393
+ type: HostBinding,
394
+ args: ['attr.autofocus']
395
+ }], contenteditable: [{
396
+ type: HostBinding,
397
+ args: ['attr.contenteditable']
398
+ }], dir: [{
399
+ type: HostBinding,
400
+ args: ['attr.dir']
401
+ }], draggable: [{
402
+ type: HostBinding,
403
+ args: ['attr.draggable']
404
+ }], enterkeyhint: [{
405
+ type: HostBinding,
406
+ args: ['attr.enterkeyhint']
407
+ }], hidden: [{
408
+ type: HostBinding,
409
+ args: ['attr.hidden']
410
+ }], inputmode: [{
411
+ type: HostBinding,
412
+ args: ['attr.inputmode']
413
+ }], spellcheck: [{
414
+ type: HostBinding,
415
+ args: ['attr.spellcheck']
416
+ }], translate: [{
417
+ type: HostBinding,
418
+ args: ['attr.translate']
419
+ }], ariaMultiline: [{
420
+ type: HostBinding,
421
+ args: ['attr.aria-multiline']
422
+ }], for: [{
423
+ type: HostBinding,
424
+ args: ['attr.for']
425
+ }], form: [{
426
+ type: HostBinding,
427
+ args: ['attr.form']
428
+ }], headers: [{
429
+ type: HostBinding,
430
+ args: ['attr.headers']
431
+ }], placeholder: [{
432
+ type: HostBinding,
433
+ args: ['attr.placeholder']
434
+ }], readonly: [{
435
+ type: HostBinding,
436
+ args: ['attr.readonly']
437
+ }], required: [{
438
+ type: HostBinding,
439
+ args: ['attr.required']
191
440
  }], headingComponent: [{
192
441
  type: ContentChildren,
193
442
  args: [AccordionHeaderComponent]
@@ -195,4 +444,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
195
444
  type: ContentChildren,
196
445
  args: [AccordionItemComponent]
197
446
  }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktdmlld3MvY29tcG9uZW50cy9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktdmlld3MvY29tcG9uZW50cy9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBYyxXQUFXLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBaUIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlJLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRTNGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7OztBQU9uRixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsc0JBQXNCO0lBSjlEOztRQWlCaUMsWUFBTyxHQUFRLE9BQU8sQ0FBQztRQW1CdEQsWUFBTyxHQUFHLElBQUksQ0FBQztLQW1IaEI7SUFoSEMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FB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QUExQyxZQUFZO3VCQUFDLGNBQWM7Z0JBRW5CLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFeUIsT0FBTztzQkFBckMsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxPQUFPO2dCQUNILFFBQVE7c0JBQWpDLFdBQVc7dUJBQUMsV0FBVztnQkFDUSxhQUFhO3NCQUE1QyxXQUFXO3VCQUFDLGlCQUFpQjtnQkFDUSxtQkFBbUI7c0JBQXhELFdBQVc7dUJBQUMsdUJBQXVCO2dCQUNDLGtCQUFrQjtzQkFBdEQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBQ0YsY0FBYztzQkFBOUMsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ0ksZ0JBQWdCO3NCQUFsRCxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDRSxnQkFBZ0I7c0JBQWxELFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNDLGVBQWU7c0JBQWhELFdBQVc7dUJBQUMsbUJBQW1CO2dCQUNELFlBQVk7c0JBQTFDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUNNLGdCQUFnQjtzQkFBbEQsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBQ00sb0JBQW9CO3NCQUExRCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFDRixnQkFBZ0I7c0JBQWxELFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNELGFBQWE7c0JBQTVDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUdhLGdCQUFnQjtzQkFBMUQsZUFBZTt1QkFBQyx3QkFBd0I7Z0JBQ0EsaUJBQWlCO3NCQUF6RCxlQUFlO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9kZXN5LWNvbW1vbnMvY29tcG9uZW50cy9jb250ZW50L2NvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEZXN5Q29udGVudENoaWxkIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1jb250ZW50LWNoaWxkLmRlY29yYXRvcic7XG5pbXBvcnQgeyBBY2NvcmRpb25IZWFkZXJEYXRhLCBBY2NvcmRpb25JdGVtRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWNjb3JkaW9uSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24taGVhZGVyL2FjY29yZGlvbi1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFjY29yZGlvbkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2FjY29yZGlvbi1pdGVtL2FjY29yZGlvbi1pdGVtLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS1hY2NvcmRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICBAVmlld0NoaWxkcmVuKCdpdGVtU2VsZWN0b3InKSBpdGVtU2VsZWN0b3JzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG4gIFxuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSBpZFByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBhbGxvd1RvZ2dsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgYWxsb3dNdWx0aXBsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgaGVhZGluZzogQWNjb3JkaW9uSGVhZGVyRGF0YTtcbiAgQElucHV0KCkgaGVhZGluZ0xldmVsO1xuICBASW5wdXQoKSBzaG93Q29udHJvbDogYm9vbGVhbjtcbiAgQElucHV0KCkgaXRlbXM6IEFjY29yZGlvbkl0ZW1EYXRhW107XG5cbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzZXM6IGFueSA9IFwiYmxvY2tcIjtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpIGFyaWFMYWJlbERhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBhcmlhRGVzY3JpYmVkYnlEYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsbGVkYnknKSBhcmlhTGFiZWxsZWRieURhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGlkZGVuJykgYXJpYUhpZGRlbkRhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGlzYWJsZWQnKSBhcmlhRGlzYWJsZWREYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWNvbnRyb2xzJykgYXJpYUNvbnRyb2xzRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1jdXJyZW50JykgYXJpYUN1cnJlbnREYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxpdmUnKSBhcmlhTGl2ZURhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKSBhcmlhRXhwYW5kZWREYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWVycm9ybWVzc2FnZScpIGFyaWFFcnJvcm1lc3NhZ2VEYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhhc3BvcHVwJykgYXJpYUhhc3BvcHVwRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1tb2RhbCcpIGFyaWFNb2RhbERhdGE6IGFueVxuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihBY2NvcmRpb25IZWFkZXJDb21wb25lbnQpIGhlYWRpbmdDb21wb25lbnQ6IEFjY29yZGlvbkhlYWRlckNvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZHJlbihBY2NvcmRpb25JdGVtQ29tcG9uZW50KSBpdGVtQ29tcG9uZW50TGlzdDogUXVlcnlMaXN0PEFjY29yZGlvbkl0ZW1Db21wb25lbnQ+O1xuXG4gIHNob3dBbGwgPSB0cnVlO1xuICBjdXJyZW50SXRlbTogbnVtYmVyO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNsYXNzZXMgPSB0aGlzLmNsYXNzZXMgPyB0aGlzLmNsYXNzZXMgKyBcIiBibG9ja1wiIDogbnVsbDtcbiAgICB0aGlzLnJvbGVEYXRhID0gdGhpcy5yb2xlID8gdGhpcy5yb2xlIDogbnVsbDtcbiAgICB0aGlzLmFyaWFMYWJlbERhdGEgPSB0aGlzLmFyaWFMYWJlbCA/IHRoaXMuYXJpYUxhYmVsIDogbnVsbDtcbiAgICB0aGlzLmFyaWFEZXNjcmliZWRieURhdGEgPSB0aGlzLmFyaWFEZXNjcmliZWRCeSA/IHRoaXMuYXJpYURlc2NyaWJlZEJ5IDogbnVsbDtcbiAgICB0aGlzLmFyaWFMYWJlbGxlZGJ5RGF0YSA9IHRoaXMuYXJpYUxhYmVsbGVkQnkgPyB0aGlzLmFyaWFMYWJlbGxlZEJ5IDogbnVsbDtcbiAgICB0aGlzLmFyaWFIaWRkZW5EYXRhID0gdGhpcy5hcmlhSGlkZGVuID8gdGhpcy5hcmlhSGlkZGVuIDogbnVsbDtcbiAgICB0aGlzLmFyaWFEaXNhYmxlZERhdGEgPSB0aGlzLmFyaWFEaXNhYmxlZCA/IHRoaXMuYXJpYURpc2FibGVkIDogbnVsbDtcbiAgICB0aGlzLmFyaWFDb250cm9sc0RhdGEgPSB0aGlzLmFyaWFDb250cm9scyA/IHRoaXMuYXJpYUNvbnRyb2xzIDogbnVsbDtcbiAgICB0aGlzLmFyaWFDdXJyZW50RGF0YSA9IHRoaXMuYXJpYUN1cnJlbnQgPyB0aGlzLmFyaWFDdXJyZW50IDogbnVsbDtcbiAgICB0aGlzLmFyaWFMaXZlRGF0YSA9IHRoaXMuYXJpYUxpdmUgPyB0aGlzLmFyaWFMaXZlIDogbnVsbDtcbiAgICB0aGlzLmFyaWFFeHBhbmRlZERhdGEgPSB0aGlzLmFyaWFFeHBhbmRlZCA/IHRoaXMuYXJpYUV4cGFuZGVkIDogbnVsbDtcbiAgICB0aGlzLmFyaWFFcnJvcm1lc3NhZ2VEYXRhID0gdGhpcy5hcmlhRXJyb3JNZXNzYWdlID8gdGhpcy5hcmlhRXJyb3JNZXNzYWdlIDogbnVsbDtcbiAgICB0aGlzLmFyaWFIYXNwb3B1cERhdGEgPSB0aGlzLmFyaWFIYXNQb3B1cCA/IHRoaXMuYXJpYUhhc1BvcHVwIDogbnVsbDtcbiAgICB0aGlzLmFyaWFNb2RhbERhdGEgPSB0aGlzLmFyaWFNb2RhbCA/IHRoaXMuYXJpYU1vZGFsIDogbnVsbDtcbiAgfVxuXG4gIGdldEl0ZW1JZChpdGVtLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgaWQ7XG4gICAgaWYgKGl0ZW0uaWQpIHtcbiAgICAgIGlkID0gaXRlbS5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgPSB0aGlzLmlkUHJlZml4ID8gdGhpcy5pZFByZWZpeCArICctJyArIChpbmRleCArIDEpIDogKGluZGV4ICsgMSk7XG4gICAgfVxuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIGNoYW5nZUFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgaXNDaGFuZ2UgPSBpdGVtLm9wZW4gIT09IHRoaXMuc2hvd0FsbDtcbiAgICAgIGl0ZW0ub3BlbiA9IHRoaXMuc2hvd0FsbDtcbiAgICAgIGlmIChpc0NoYW5nZSAmJiBpdGVtIGluc3RhbmNlb2YgQWNjb3JkaW9uSXRlbUNvbXBvbmVudCkge1xuICAgICAgICBpdGVtLm9wZW5DaGFuZ2UuZW1pdChpdGVtLm9wZW4pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2hvd0FsbCA9ICF0aGlzLnNob3dBbGw7XG4gIH1cblxuICB0b2dnbGVJdGVtKGl0ZW06IEFjY29yZGlvbkl0ZW1EYXRhKTogdm9pZCB7XG4gICAgaWYgKCFpdGVtLm9wZW4gfHwgdGhpcy5hbGxvd1RvZ2dsZSkge1xuICAgICAgY29uc3QgbmV3T3BlblZhbHVlID0gIWl0ZW0ub3BlbjtcbiAgICAgIGlmICghdGhpcy5hbGxvd011bHRpcGxlKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgICAgICBpdGVtcy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICBjb25zdCB3YXNPcGVuID0gaXQub3BlbjtcbiAgICAgICAgICBpdC5vcGVuID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHdhc09wZW4gJiYgaXQgIT09IGl0ZW0gJiYgaXQgaW5zdGFuY2VvZiBBY2NvcmRpb25JdGVtQ29tcG9uZW50KSB7XG4gICAgICAgICAgICBpdC5vcGVuQ2hhbmdlLmVtaXQoaXQub3Blbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGl0ZW0ub3BlbiA9IG5ld09wZW5WYWx1ZTtcbiAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgQWNjb3JkaW9uSXRlbUNvbXBvbmVudCkge1xuICAgICAgICBpdGVtLm9wZW5DaGFuZ2UuZW1pdChpdGVtLm9wZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvY3VzRmlyc3RJdGVtKGV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLml0ZW1TZWxlY3RvcnMudG9BcnJheSgpWzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzTGFzdEl0ZW0oZXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXRlbVNlbGVjdG9ycy50b0FycmF5KClbdGhpcy5pdGVtU2VsZWN0b3JzLmxlbmd0aCAtIDFdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzTmV4dEl0ZW0oZXZlbnQsIGZvY3VzZWRJdGVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHNlbGVjdG9ycyA9IHRoaXMuaXRlbVNlbGVjdG9ycy50b0FycmF5KCk7XG4gICAgaWYgKHNlbGVjdG9yc1soZm9jdXNlZEl0ZW0gKyAxKSAlIHNlbGVjdG9ycy5sZW5ndGhdICE9IG51bGwpIHtcbiAgICAgIHNlbGVjdG9yc1soZm9jdXNlZEl0ZW0gKyAxKSAlIHNlbGVjdG9ycy5sZW5ndGhdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c1ByZXZpb3VzSXRlbShldmVudCwgZm9jdXNlZEl0ZW06IG51bWJlcik6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3Qgc2VsZWN0b3JzID0gdGhpcy5pdGVtU2VsZWN0b3JzLnRvQXJyYXkoKTtcbiAgICBpZiAoc2VsZWN0b3JzWyhmb2N1c2VkSXRlbSArIHNlbGVjdG9ycy5sZW5ndGggLSAxKSAlIHNlbGVjdG9ycy5sZW5ndGhdICE9IG51bGwpIHtcbiAgICAgIHNlbGVjdG9yc1soZm9jdXNlZEl0ZW0gKyBzZWxlY3RvcnMubGVuZ3RoIC0gMSkgJSBzZWxlY3RvcnMubGVuZ3RoXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0SXRlbShpOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRJdGVtID0gaTtcbiAgfVxuXG4gIGdldFRpdGxlQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgIGxldCBjbGFzc2VzID0gJ2MtaDIgbWItYmFzZSc7XG4gICAgaWYgKHRoaXMuaGVhZGluZ0NvbXBvbmVudCAmJiB0aGlzLmhlYWRpbmdDb21wb25lbnQuY2xhc3Nlcykge1xuICAgICAgY2xhc3NlcyA9IHRoaXMuaGVhZGluZ0NvbXBvbmVudC5jbGFzc2VzO1xuICAgIH0gZWxzZSBpZiAodGhpcy5oZWFkaW5nICYmIHRoaXMuaGVhZGluZy5jbGFzc2VzKSB7XG4gICAgICBjbGFzc2VzID0gdGhpcy5oZWFkaW5nLmNsYXNzZXM7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG5cbiAgZ2V0SXRlbXMoKTogQWNjb3JkaW9uSXRlbURhdGFbXSB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1Db21wb25lbnRMaXN0ICYmIHRoaXMuaXRlbUNvbXBvbmVudExpc3QubGVuZ3RoID4gMCA/IHRoaXMuaXRlbUNvbXBvbmVudExpc3QudG9BcnJheSgpIDogdGhpcy5pdGVtcztcbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBnZXRJdGVtSGVhZGVyKGl0ZW06IEFjY29yZGlvbkl0ZW1EYXRhKTogQWNjb3JkaW9uSGVhZGVyQ29tcG9uZW50IHtcbiAgICByZXR1cm4gaXRlbSBpbnN0YW5jZW9mIEFjY29yZGlvbkl0ZW1Db21wb25lbnQgPyBpdGVtLmhlYWRlckNvbXBvbmVudCA6IG51bGw7XG4gIH1cblxuICBnZXRJdGVtQ29udGVudChpdGVtOiBBY2NvcmRpb25JdGVtRGF0YSk6IENvbnRlbnRDb21wb25lbnQge1xuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgQWNjb3JkaW9uSXRlbUNvbXBvbmVudCA/IGl0ZW0uY29udGVudENvbXBvbmVudCA6IG51bGw7XG4gIH1cblxufVxuIiwiXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkaW5nQ29tcG9uZW50IHx8IGhlYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImhlYWRpbmdMZXZlbCA+IDAgJiYgaGVhZGluZ0xldmVsIDwgNiA/IGhlYWRpbmdMZXZlbCA6IDJcIj5cbiAgICAgICAgPGgxICpuZ1N3aXRjaENhc2U9XCIxXCIgW2NsYXNzXT1cImdldFRpdGxlQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudDogaGVhZGluZ0NvbXBvbmVudCA/IGhlYWRpbmdDb21wb25lbnQgOiBudWxsLFxuICAgICAgICAgICAgaHRtbDogaGVhZGluZyA/IGhlYWRpbmcuaHRtbCA6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiBoZWFkaW5nID8gaGVhZGluZy50ZXh0IDogbnVsbFxuICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMT5cbiAgICAgICAgPGgyICpuZ1N3aXRjaENhc2U9XCIyXCIgW2NsYXNzXT1cImdldFRpdGxlQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudDogaGVhZGluZ0NvbXBvbmVudCA/IGhlYWRpbmdDb21wb25lbnQgOiBudWxsLFxuICAgICAgICAgICAgaHRtbDogaGVhZGluZyA/IGhlYWRpbmcuaHRtbCA6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiBoZWFkaW5nID8gaGVhZGluZy50ZXh0IDogbnVsbFxuICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMj5cbiAgICAgICAgPGgzICpuZ1N3aXRjaENhc2U9XCIzXCIgW2NsYXNzXT1cImdldFRpdGxlQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudDogaGVhZGluZ0NvbXBvbmVudCA/IGhlYWRpbmdDb21wb25lbnQgOiBudWxsLFxuICAgICAgICAgICAgaHRtbDogaGVhZGluZyA/IGhlYWRpbmcuaHRtbCA6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiBoZWFkaW5nID8gaGVhZGluZy50ZXh0IDogbnVsbFxuICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGg0ICpuZ1N3aXRjaENhc2U9XCI0XCIgW2NsYXNzXT1cImdldFRpdGxlQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudDogaGVhZGluZ0NvbXBvbmVudCA/IGhlYWRpbmdDb21wb25lbnQgOiBudWxsLFxuICAgICAgICAgICAgaHRtbDogaGVhZGluZyA/IGhlYWRpbmcuaHRtbCA6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiBoZWFkaW5nID8gaGVhZGluZy50ZXh0IDogbnVsbFxuICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oND5cbiAgICAgICAgPGg1ICpuZ1N3aXRjaENhc2U9XCI1XCIgW2NsYXNzXT1cImdldFRpdGxlQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudDogaGVhZGluZ0NvbXBvbmVudCA/IGhlYWRpbmdDb21wb25lbnQgOiBudWxsLFxuICAgICAgICAgICAgaHRtbDogaGVhZGluZyA/IGhlYWRpbmcuaHRtbCA6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiBoZWFkaW5nID8gaGVhZGluZy50ZXh0IDogbnVsbFxuICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oNT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGJ1dHRvbiBbYXR0ci5pZF09XCJpZFwiICpuZ0lmPVwic2hvd0NvbnRyb2xcIiAoY2xpY2spPVwiY2hhbmdlQWxsKClcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtbC1hdXRvIHB5LWJhc2UgdGV4dC1zbSB0ZXh0LW5ldXRyYWwtZGFyayB1bmRlcmxpbmUgZm9jdXM6dGV4dC1ibGFjayBmb2N1czpiZy13YXJuaW5nLWJhc2UgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnNoYWRvdy1vdXRsaW5lLWZvY3VzIHRleHQtcmlnaHRcIj5cbiAgICAgICAge3tzaG93QWxsID8gJ01vc3RyYXInIDogJ09jdWx0YXInfX0gdG9kb1xuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiQWNjb3JkaW9uXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRJdGVtcygpOyBpbmRleCBhcyBpXCIgY2xhc3M9XCItbXktcHggcHgteHMgcHktc20gYm9yZGVyLXQgYm9yZGVyLWIgYm9yZGVyLW5ldXRyYWwtYmFzZVwiXG4gICAgICAgICAoa2V5ZG93bi5ob21lKT1cImZvY3VzRmlyc3RJdGVtKCRldmVudClcIlxuICAgICAgICAgKGtleWRvd24uZW5kKT1cImZvY3VzTGFzdEl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAoa2V5ZG93bi5hcnJvd3VwKT1cImZvY3VzUHJldmlvdXNJdGVtKCRldmVudCwgaSlcIlxuICAgICAgICAgKGtleWRvd24uYXJyb3dkb3duKT1cImZvY3VzTmV4dEl0ZW0oJGV2ZW50LCBpKVwiXG4gICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShpKVwiPlxuXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJoZWFkaW5nTGV2ZWwgPiAwICYmIGhlYWRpbmdMZXZlbCA8IDYgPyBoZWFkaW5nTGV2ZWwgOiAyXCI+XG4gICAgICAgIDxoMiAqbmdTd2l0Y2hDYXNlPVwiMVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtSGVhZGVyQ29udGVudDsgY29udGV4dDoge2l0ZW06IGl0ZW0sIGlkOiBnZXRJdGVtSWQoaXRlbSwgaSksIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPjwvaDI+XG4gICAgICAgIDxoMyAqbmdTd2l0Y2hDYXNlPVwiMlwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtSGVhZGVyQ29udGVudDsgY29udGV4dDoge2l0ZW06IGl0ZW0sIGlkOiBnZXRJdGVtSWQoaXRlbSwgaSksIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPjwvaDM+XG4gICAgICAgIDxoNCAqbmdTd2l0Y2hDYXNlPVwiM1wiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtSGVhZGVyQ29udGVudDsgY29udGV4dDoge2l0ZW06IGl0ZW0sIGlkOiBnZXRJdGVtSWQoaXRlbSwgaSksIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPjwvaDQ+XG4gICAgICAgIDxoNSAqbmdTd2l0Y2hDYXNlPVwiNFwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtSGVhZGVyQ29udGVudDsgY29udGV4dDoge2l0ZW06IGl0ZW0sIGlkOiBnZXRJdGVtSWQoaXRlbSwgaSksIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPjwvaDU+XG4gICAgICAgIDxoNiAqbmdTd2l0Y2hDYXNlPVwiNVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtSGVhZGVyQ29udGVudDsgY29udGV4dDoge2l0ZW06IGl0ZW0sIGlkOiBnZXRJdGVtSWQoaXRlbSwgaSksIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPjwvaDY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxwIGNsYXNzPVwic3Itb25seVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPkhheiBjbGljayBlbiBlbCBib3TDs24gYW50ZXJpb3IgcGFyYSBtb3N0cmFyIHUgb2N1bHRhcjwvcD5cbiAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLm9wZW5cIiBjbGFzcz1cIkFjY29yZGlvbi1wYW5lbFwiXG4gICAgICAgICAgIFtjbGFzc109XCJpdGVtLmNsYXNzZXNcIlxuICAgICAgICAgICBbYXR0ci5pZF09XCJnZXRJdGVtSWQoaXRlbSwgaSlcIlxuICAgICAgICAgICBbYXR0ci5yb2xlXT1cIihpdGVtLnJvbGUgPyByb2xlIDogJ2FjY29yZGlvbicpXCIgICAgICAgICAgIFxuICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImN1cnJlbnRJdGVtID09PSBpID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaXRlbS5hcmlhRGVzY3JpYmVkQnlcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJpdGVtLmFyaWFFcnJvck1lc3NhZ2VcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIml0ZW0uYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIidhY2NvcmRpb24tJyArIGdldEl0ZW1JZChpdGVtLCBpKVwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1saXZlXT1cIml0ZW0uYXJpYUxpdmVcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJpdGVtLmFyaWFIYXNQb3B1cFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGdldEl0ZW1Db250ZW50KGl0ZW0pLCBodG1sOiBpdGVtLmh0bWwsIHRleHQ6IGl0ZW0udGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48bmctdGVtcGxhdGUgI2l0ZW1IZWFkZXJDb250ZW50IGxldC1pdGVtPVwiaXRlbVwiIGxldC1pZD1cImlkXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgPGJ1dHRvbiAjaXRlbVNlbGVjdG9yIFtpZF09XCJpZCArICctdGl0bGUnXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZ3JvdXAgcmVsYXRpdmUgdy1mdWxsIHB5LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1sZWZ0IGN1cnNvci1wb2ludGVyIGZvY3VzOmJnLXdhcm5pbmctYmFzZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6c2hhZG93LW91dGxpbmUtZm9jdXMgZm9jdXM6dGV4dC1ibGFja1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpZFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXRlbS5vcGVuXCIgKGNsaWNrKT1cInRvZ2dsZUl0ZW0oaXRlbSlcIiBbYXR0ci5kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCIgW25nQ2xhc3NdPVwiaXRlbS5kaXNhYmxlZCA/ICdjdXJzb3Itbm90LWFsbG93ZWQnIDogJydcIj5cbiAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGdldEl0ZW1IZWFkZXIoaXRlbSksIGh0bWw6IGl0ZW0uaGVhZGVySHRtbCwgdGV4dDogaXRlbS5oZWFkZXJUZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLmRpc2FibGVkXCIgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC15LTAgcmlnaHQtMCBweS1zbSBmb250LW5vcm1hbCB0ZXh0LXNtIHRleHQtbmV1dHJhbC1kYXJrIHVuZGVybGluZSBncm91cC1mb2N1czp0ZXh0LWJsYWNrIHBvaW50ZXItZXZlbnRzLW5vbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbbmdDbGFzc109XCJ7J2hpZGRlbic6IGl0ZW0uZGlzYWJsZWR9XCI+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLm9wZW5cIiBbY2xhc3NdPVwiWydBY2NvcmRpb24tc2hvdycsIGl0ZW0uc2hvd0hlYWRlckJ1dHRvbj8uY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBpdGVtLnNob3dIZWFkZXJCdXR0b24sIHRleHQ6ICdNb3N0cmFyJyB9XCI+PC9uZy1jb250YWluZXI+ICAgICAgXG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImFsbG93VG9nZ2xlICYmIGl0ZW0ub3BlblwiIFtjbGFzc109XCJbJ0FjY29yZGlvbi1oaWRlJywgaXRlbS5zaG93SGVhZGVyQnV0dG9uPy5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGl0ZW0uaGlkZUhlYWRlckJ1dHRvbiwgdGV4dDogJ09jdWx0YXInIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
447
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktdmlld3MvY29tcG9uZW50cy9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktdmlld3MvY29tcG9uZW50cy9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBYyxXQUFXLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBaUIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlJLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRTNGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7QUFPbkYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHNCQUFzQjtJQUo5RDs7UUFpQmlDLFlBQU8sR0FBUSxPQUFPLENBQUM7UUFDNUIsU0FBSSxHQUFXLElBQUksQ0FBQztRQUNkLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDbkIsb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFDaEMsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFDbEMsZUFBVSxHQUFXLElBQUksQ0FBQztRQUN4QixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUM1QixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUM3QixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUM5QixhQUFRLEdBQVcsSUFBSSxDQUFDO1FB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Vzt1QkFBQyxrQkFBa0I7Z0JBQ0QsUUFBUTtzQkFBckMsV0FBVzt1QkFBQyxlQUFlO2dCQUNFLFFBQVE7c0JBQXJDLFdBQVc7dUJBQUMsZUFBZTtnQkFHZSxnQkFBZ0I7c0JBQTFELGVBQWU7dUJBQUMsd0JBQXdCO2dCQUNBLGlCQUFpQjtzQkFBekQsZUFBZTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZGVzeS1jb21tb25zL2NvbXBvbmVudHMvY29udGVudC9jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGVzeUNvbnRlbnRDaGlsZCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktY29udGVudC1jaGlsZC5kZWNvcmF0b3InO1xuaW1wb3J0IHsgQWNjb3JkaW9uSGVhZGVyRGF0YSwgQWNjb3JkaW9uSXRlbURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFjY29yZGlvbkhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vYWNjb3JkaW9uLWhlYWRlci9hY2NvcmRpb24taGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY2NvcmRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24taXRlbS9hY2NvcmRpb24taXRlbS5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktYWNjb3JkaW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgQFZpZXdDaGlsZHJlbignaXRlbVNlbGVjdG9yJykgaXRlbVNlbGVjdG9yczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICBcbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgQElucHV0KCkgaWRQcmVmaXg6IHN0cmluZztcbiAgQElucHV0KCkgYWxsb3dUb2dnbGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFsbG93TXVsdGlwbGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhlYWRpbmc6IEFjY29yZGlvbkhlYWRlckRhdGE7XG4gIEBJbnB1dCgpIGhlYWRpbmdMZXZlbDtcbiAgQElucHV0KCkgc2hvd0NvbnRyb2w6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGl0ZW1zOiBBY2NvcmRpb25JdGVtRGF0YVtdO1xuXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc2VzOiBhbnkgPSBcImJsb2NrXCI7XG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZTogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKSBhcmlhTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgYXJpYURlc2NyaWJlZEJ5OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbGxlZGJ5JykgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhpZGRlbicpIGFyaWFIaWRkZW46IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRpc2FibGVkJykgYXJpYURpc2FibGVkOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1jb250cm9scycpIGFyaWFDb250cm9sczogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtY3VycmVudCcpIGFyaWFDdXJyZW50OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1saXZlJykgYXJpYUxpdmU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWV4cGFuZGVkJykgYXJpYUV4cGFuZGVkOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2UnKSBhcmlhRXJyb3JNZXNzYWdlOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1oYXNwb3B1cCcpIGFyaWFIYXNQb3B1cDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbW9kYWwnKSBhcmlhTW9kYWw6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWNoZWNrZWQnKSBhcmlhQ2hlY2tlZDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcHJlc3NlZCcpIGFyaWFQcmVzc2VkOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1yZWFkb25seScpIGFyaWFSZWFkb25seTogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcmVxdWlyZWQnKSBhcmlhUmVxdWlyZWQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXNlbGVjdGVkJykgYXJpYVNlbGVjdGVkOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS12YWx1ZW1pbicpIGFyaWFWYWx1ZW1pbjogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtdmFsdWVtYXgnKSBhcmlhVmFsdWVtYXg6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXZhbHVlbm93JykgYXJpYVZhbHVlbm93OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS12YWx1ZXRleHQnKSBhcmlhVmFsdWV0ZXh0OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1vcmllbnRhdGlvbicpIGFyaWFPcmllbnRhdGlvbjogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGV2ZWwnKSBhcmlhTGV2ZWw6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW11bHRpc2VsZWN0YWJsZScpIGFyaWFNdWx0aXNlbGVjdGFibGU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXBsYWNlaG9sZGVyJykgYXJpYVBsYWNlaG9sZGVyOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1wb3NpbnNldCcpIGFyaWFQb3NpbnNldDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2V0c2l6ZScpIGFyaWFTZXRzaXplOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1zb3J0JykgYXJpYVNvcnQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWJ1c3knKSBhcmlhQnVzeTogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZHJvcGVmZmVjdCcpIGFyaWFEcm9wZWZmZWN0OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1ncmFiYmVkJykgYXJpYUdyYWJiZWQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKSBhcmlhQWN0aXZlZGVzY2VuZGFudDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYXRvbWljJykgYXJpYUF0b21pYzogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYXV0b2NvbXBsZXRlJykgYXJpYUF1dG9jb21wbGV0ZTogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYnJhaWxsZWxhYmVsJykgYXJpYUJyYWlsbGVsYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYnJhaWxsZXJvbGVkZXNjcmlwdGlvbicpIGFyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1jb2xjb3VudCcpIGFyaWFDb2xjb3VudDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtY29saW5kZXgnKSBhcmlhQ29saW5kZXg6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWNvbGluZGV4dGV4dCcpIGFyaWFDb2xpbmRleHRleHQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWNvbHNwYW4nKSBhcmlhQ29sc3Bhbjogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpcHRpb24nKSBhcmlhRGVzY3JpcHRpb246IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRldGFpbHMnKSBhcmlhRGV0YWlsczogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZmxvd3RvJykgYXJpYUZsb3d0bzogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaW52YWxpZCcpIGFyaWFJbnZhbGlkOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1rZXlzaG9ydGN1dHMnKSBhcmlhS2V5c2hvcnRjdXRzOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1vd25zJykgYXJpYU93bnM6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXJlbGV2YW50JykgYXJpYVJlbGV2YW50OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1yb2xlZGVzY3JpcHRpb24nKSBhcmlhUm9sZWRlc2NyaXB0aW9uOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1yb3djb3VudCcpIGFyaWFSb3djb3VudDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcm93aW5kZXgnKSBhcmlhUm93aW5kZXg6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXJvd2luZGV4dGV4dCcpIGFyaWFSb3dpbmRleHRleHQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXJvd3NwYW4nKSBhcmlhUm93c3Bhbjogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JykgdGFiaW5kZXg6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci50aXRsZScpIHRpdGxlOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYWx0JykgYWx0OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIubGFuZycpIGxhbmc6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hY2Nlc3NrZXknKSBhY2Nlc3NrZXk6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hdXRvY29tcGxldGUnKSBhdXRvY29tcGxldGU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hdXRvZm9jdXMnKSBhdXRvZm9jdXM6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5jb250ZW50ZWRpdGFibGUnKSBjb250ZW50ZWRpdGFibGU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXInKSBkaXI6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5kcmFnZ2FibGUnKSBkcmFnZ2FibGU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5lbnRlcmtleWhpbnQnKSBlbnRlcmtleWhpbnQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5oaWRkZW4nKSBoaWRkZW46IGJvb2xlYW4gPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuaW5wdXRtb2RlJykgaW5wdXRtb2RlOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuc3BlbGxjaGVjaycpIHNwZWxsY2hlY2s6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci50cmFuc2xhdGUnKSB0cmFuc2xhdGU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW11bHRpbGluZScpIGFyaWFNdWx0aWxpbmU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5mb3InKSBmb3I6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5mb3JtJykgZm9ybTogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmhlYWRlcnMnKSBoZWFkZXJzOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIucGxhY2Vob2xkZXInKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJlYWRvbmx5JykgcmVhZG9ubHk6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5yZXF1aXJlZCcpIHJlcXVpcmVkOiBzdHJpbmcgPSBudWxsO1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihBY2NvcmRpb25IZWFkZXJDb21wb25lbnQpIGhlYWRpbmdDb21wb25lbnQ6IEFjY29yZGlvbkhlYWRlckNvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZHJlbihBY2NvcmRpb25JdGVtQ29tcG9uZW50KSBpdGVtQ29tcG9uZW50TGlzdDogUXVlcnlMaXN0PEFjY29yZGlvbkl0ZW1Db21wb25lbnQ+O1xuXG4gIHNob3dBbGwgPSB0cnVlO1xuICBjdXJyZW50SXRlbTogbnVtYmVyO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNsYXNzZXMgPSB0aGlzLmNsYXNzZXMgPyB0aGlzLmNsYXNzZXMgKyBcIiBibG9ja1wiIDogbnVsbDtcbiAgfVxuXG4gIGdldEl0ZW1JZChpdGVtLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgaWQ7XG4gICAgaWYgKGl0ZW0uaWQpIHtcbiAgICAgIGlkID0gaXRlbS5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgPSB0aGlzLmlkUHJlZml4ID8gdGhpcy5pZFByZWZpeCArICctJyArIChpbmRleCArIDEpIDogKGluZGV4ICsgMSk7XG4gICAgfVxuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIGNoYW5nZUFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgaXNDaGFuZ2UgPSBpdGVtLm9wZW4gIT09IHRoaXMuc2hvd0FsbDtcbiAgICAgIGl0ZW0ub3BlbiA9IHRoaXMuc2hvd0FsbDtcbiAgICAgIGlmIChpc0NoYW5nZSAmJiBpdGVtIGluc3RhbmNlb2YgQWNjb3JkaW9uSXRlbUNvbXBvbmVudCkge1xuICAgICAgICBpdGVtLm9wZW5DaGFuZ2UuZW1pdChpdGVtLm9wZW4pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2hvd0FsbCA9ICF0aGlzLnNob3dBbGw7XG4gIH1cblxuICB0b2dnbGVJdGVtKGl0ZW06IEFjY29yZGlvbkl0ZW1EYXRhKTogdm9pZCB7XG4gICAgaWYgKCFpdGVtLm9wZW4gfHwgdGhpcy5hbGxvd1RvZ2dsZSkge1xuICAgICAgY29uc3QgbmV3T3BlblZhbHVlID0gIWl0ZW0ub3BlbjtcbiAgICAgIGlmICghdGhpcy5hbGxvd011bHRpcGxlKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgICAgICBpdGVtcy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICBjb25zdCB3YXNPcGVuID0gaXQub3BlbjtcbiAgICAgICAgICBpdC5vcGVuID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHdhc09wZW4gJiYgaXQgIT09IGl0ZW0gJiYgaXQgaW5zdGFuY2VvZiBBY2NvcmRpb25JdGVtQ29tcG9uZW50KSB7XG4gICAgICAgICAgICBpdC5vcGVuQ2hhbmdlLmVtaXQoaXQub3Blbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGl0ZW0ub3BlbiA9IG5ld09wZW5WYWx1ZTtcbiAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgQWNjb3JkaW9uSXRlbUNvbXBvbmVudCkge1xuICAgICAgICBpdGVtLm9wZW5DaGFuZ2UuZW1pdChpdGVtLm9wZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvY3VzRmlyc3RJdGVtKGV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLml0ZW1TZWxlY3RvcnMudG9BcnJheSgpWzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzTGFzdEl0ZW0oZXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXRlbVNlbGVjdG9ycy50b0FycmF5KClbdGhpcy5pdGVtU2VsZWN0b3JzLmxlbmd0aCAtIDFdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzTmV4dEl0ZW0oZXZlbnQsIGZvY3VzZWRJdGVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHNlbGVjdG9ycyA9IHRoaXMuaXRlbVNlbGVjdG9ycy50b0FycmF5KCk7XG4gICAgaWYgKHNlbGVjdG9yc1soZm9jdXNlZEl0ZW0gKyAxKSAlIHNlbGVjdG9ycy5sZW5ndGhdICE9IG51bGwpIHtcbiAgICAgIHNlbGVjdG9yc1soZm9jdXNlZEl0ZW0gKyAxKSAlIHNlbGVjdG9ycy5sZW5ndGhdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c1ByZXZpb3VzSXRlbShldmVudCwgZm9jdXNlZEl0ZW06IG51bWJlcik6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3Qgc2VsZWN0b3JzID0gdGhpcy5pdGVtU2VsZWN0b3JzLnRvQXJyYXkoKTtcbiAgICBpZiAoc2VsZWN0b3JzWyhmb2N1c2VkSXRlbSArIHNlbGVjdG9ycy5sZW5ndGggLSAxKSAlIHNlbGVjdG9ycy5sZW5ndGhdICE9IG51bGwpIHtcbiAgICAgIHNlbGVjdG9yc1soZm9jdXNlZEl0ZW0gKyBzZWxlY3RvcnMubGVuZ3RoIC0gMSkgJSBzZWxlY3RvcnMubGVuZ3RoXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0SXRlbShpOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRJdGVtID0gaTtcbiAgfVxuXG4gIGdldFRpdGxlQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgIGxldCBjbGFzc2VzID0gJ2MtaDIgbWItYmFzZSc7XG4gICAgaWYgKHRoaXMuaGVhZGluZ0NvbXBvbmVudCAmJiB0aGlzLmhlYWRpbmdDb21wb25lbnQuY2xhc3Nlcykge1xuICAgICAgY2xhc3NlcyA9IHRoaXMuaGVhZGluZ0NvbXBvbmVudC5jbGFzc2VzO1xuICAgIH0gZWxzZSBpZiAodGhpcy5oZWFkaW5nICYmIHRoaXMuaGVhZGluZy5jbGFzc2VzKSB7XG4gICAgICBjbGFzc2VzID0gdGhpcy5oZWFkaW5nLmNsYXNzZXM7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG5cbiAgZ2V0SXRlbXMoKTogQWNjb3JkaW9uSXRlbURhdGFbXSB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1Db21wb25lbnRMaXN0ICYmIHRoaXMuaXRlbUNvbXBvbmVudExpc3QubGVuZ3RoID4gMCA/IHRoaXMuaXRlbUNvbXBvbmVudExpc3QudG9BcnJheSgpIDogdGhpcy5pdGVtcztcbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBnZXRJdGVtSGVhZGVyKGl0ZW06IEFjY29yZGlvbkl0ZW1EYXRhKTogQWNjb3JkaW9uSGVhZGVyQ29tcG9uZW50IHtcbiAgICByZXR1cm4gaXRlbSBpbnN0YW5jZW9mIEFjY29yZGlvbkl0ZW1Db21wb25lbnQgPyBpdGVtLmhlYWRlckNvbXBvbmVudCA6IG51bGw7XG4gIH1cblxuICBnZXRJdGVtQ29udGVudChpdGVtOiBBY2NvcmRpb25JdGVtRGF0YSk6IENvbnRlbnRDb21wb25lbnQge1xuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgQWNjb3JkaW9uSXRlbUNvbXBvbmVudCA/IGl0ZW0uY29udGVudENvbXBvbmVudCA6IG51bGw7XG4gIH1cblxufVxuIiwiXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkaW5nQ29tcG9uZW50IHx8IGhlYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImhlYWRpbmdMZXZlbCA+IDAgJiYgaGVhZGluZ0xldmVsIDwgNiA/IGhlYWRpbmdMZXZlbCA6IDJcIj5cbiAgICAgICAgPGgxICpuZ1N3aXRjaENhc2U9XCIxXCIgW2NsYXNzXT1cImdldFRpdGxlQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudDogaGVhZGluZ0NvbXBvbmVudCA/IGhlYWRpbmdDb21wb25lbnQgOiBudWxsLFxuICAgICAgICAgICAgaHRtbDogaGVhZGluZyA/IGhlYWRpbmcuaHRtbCA6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiBoZWFkaW5nID8gaGVhZGluZy50ZXh0IDogbnVsbFxuICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMT5cbiAgICAgICAgPGgyICpuZ1N3aXRjaENhc2U9XCIyXCIgW2NsYXNzXT1cImdldFRpdGxlQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudDogaGVhZGluZ0NvbXBvbmVudCA/IGhlYWRpbmdDb21wb25lbnQgOiBudWxsLFxuICAgICAgICAgICAgaHRtbDogaGVhZGluZyA/IGhlYWRpbmcuaHRtbCA6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiBoZWFkaW5nID8gaGVhZGluZy50ZXh0IDogbnVsbFxuICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMj5cbiAgICAgICAgPGgzICpuZ1N3aXRjaENhc2U9XCIzXCIgW2NsYXNzXT1cImdldFRpdGxlQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudDogaGVhZGluZ0NvbXBvbmVudCA/IGhlYWRpbmdDb21wb25lbnQgOiBudWxsLFxuICAgICAgICAgICAgaHRtbDogaGVhZGluZyA/IGhlYWRpbmcuaHRtbCA6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiBoZWFkaW5nID8gaGVhZGluZy50ZXh0IDogbnVsbFxuICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGg0ICpuZ1N3aXRjaENhc2U9XCI0XCIgW2NsYXNzXT1cImdldFRpdGxlQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudDogaGVhZGluZ0NvbXBvbmVudCA/IGhlYWRpbmdDb21wb25lbnQgOiBudWxsLFxuICAgICAgICAgICAgaHRtbDogaGVhZGluZyA/IGhlYWRpbmcuaHRtbCA6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiBoZWFkaW5nID8gaGVhZGluZy50ZXh0IDogbnVsbFxuICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oND5cbiAgICAgICAgPGg1ICpuZ1N3aXRjaENhc2U9XCI1XCIgW2NsYXNzXT1cImdldFRpdGxlQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudDogaGVhZGluZ0NvbXBvbmVudCA/IGhlYWRpbmdDb21wb25lbnQgOiBudWxsLFxuICAgICAgICAgICAgaHRtbDogaGVhZGluZyA/IGhlYWRpbmcuaHRtbCA6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiBoZWFkaW5nID8gaGVhZGluZy50ZXh0IDogbnVsbFxuICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oNT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGJ1dHRvbiBbYXR0ci5pZF09XCJpZFwiICpuZ0lmPVwic2hvd0NvbnRyb2xcIiAoY2xpY2spPVwiY2hhbmdlQWxsKClcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtbC1hdXRvIHB5LWJhc2UgdGV4dC1zbSB0ZXh0LW5ldXRyYWwtZGFyayB1bmRlcmxpbmUgZm9jdXM6dGV4dC1ibGFjayBmb2N1czpiZy13YXJuaW5nLWJhc2UgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnNoYWRvdy1vdXRsaW5lLWZvY3VzIHRleHQtcmlnaHRcIj5cbiAgICAgICAge3tzaG93QWxsID8gJ01vc3RyYXInIDogJ09jdWx0YXInfX0gdG9kb1xuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiQWNjb3JkaW9uXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRJdGVtcygpOyBpbmRleCBhcyBpXCIgY2xhc3M9XCItbXktcHggcHgteHMgcHktc20gYm9yZGVyLXQgYm9yZGVyLWIgYm9yZGVyLW5ldXRyYWwtYmFzZVwiXG4gICAgICAgICAoa2V5ZG93bi5ob21lKT1cImZvY3VzRmlyc3RJdGVtKCRldmVudClcIlxuICAgICAgICAgKGtleWRvd24uZW5kKT1cImZvY3VzTGFzdEl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAoa2V5ZG93bi5hcnJvd3VwKT1cImZvY3VzUHJldmlvdXNJdGVtKCRldmVudCwgaSlcIlxuICAgICAgICAgKGtleWRvd24uYXJyb3dkb3duKT1cImZvY3VzTmV4dEl0ZW0oJGV2ZW50LCBpKVwiXG4gICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShpKVwiPlxuXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJoZWFkaW5nTGV2ZWwgPiAwICYmIGhlYWRpbmdMZXZlbCA8IDYgPyBoZWFkaW5nTGV2ZWwgOiAyXCI+XG4gICAgICAgIDxoMiAqbmdTd2l0Y2hDYXNlPVwiMVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtSGVhZGVyQ29udGVudDsgY29udGV4dDoge2l0ZW06IGl0ZW0sIGlkOiBnZXRJdGVtSWQoaXRlbSwgaSksIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPjwvaDI+XG4gICAgICAgIDxoMyAqbmdTd2l0Y2hDYXNlPVwiMlwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtSGVhZGVyQ29udGVudDsgY29udGV4dDoge2l0ZW06IGl0ZW0sIGlkOiBnZXRJdGVtSWQoaXRlbSwgaSksIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPjwvaDM+XG4gICAgICAgIDxoNCAqbmdTd2l0Y2hDYXNlPVwiM1wiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtSGVhZGVyQ29udGVudDsgY29udGV4dDoge2l0ZW06IGl0ZW0sIGlkOiBnZXRJdGVtSWQoaXRlbSwgaSksIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPjwvaDQ+XG4gICAgICAgIDxoNSAqbmdTd2l0Y2hDYXNlPVwiNFwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtSGVhZGVyQ29udGVudDsgY29udGV4dDoge2l0ZW06IGl0ZW0sIGlkOiBnZXRJdGVtSWQoaXRlbSwgaSksIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPjwvaDU+XG4gICAgICAgIDxoNiAqbmdTd2l0Y2hDYXNlPVwiNVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtSGVhZGVyQ29udGVudDsgY29udGV4dDoge2l0ZW06IGl0ZW0sIGlkOiBnZXRJdGVtSWQoaXRlbSwgaSksIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPjwvaDY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxwIGNsYXNzPVwic3Itb25seVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPkhheiBjbGljayBlbiBlbCBib3TDs24gYW50ZXJpb3IgcGFyYSBtb3N0cmFyIHUgb2N1bHRhcjwvcD5cbiAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLm9wZW5cIiBjbGFzcz1cImMtYWNjb3JkaW9uX19wYW5lbFwiXG4gICAgICAgICAgIFtjbGFzc109XCJpdGVtLmNsYXNzZXNcIlxuICAgICAgICAgICBbYXR0ci5pZF09XCJnZXRJdGVtSWQoaXRlbSwgaSlcIlxuICAgICAgICAgICBbZGVzeUFwcEFjY2Vzc2liaWxpdHldPVwiaXRlbVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGdldEl0ZW1Db250ZW50KGl0ZW0pLCBodG1sOiBpdGVtLmh0bWwsIHRleHQ6IGl0ZW0udGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48bmctdGVtcGxhdGUgI2l0ZW1IZWFkZXJDb250ZW50IGxldC1pdGVtPVwiaXRlbVwiIGxldC1pZD1cImlkXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgPGJ1dHRvbiAjaXRlbVNlbGVjdG9yIFtpZF09XCJpZCArICctdGl0bGUnXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZ3JvdXAgcmVsYXRpdmUgdy1mdWxsIHB5LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1sZWZ0IGN1cnNvci1wb2ludGVyIGZvY3VzOmJnLXdhcm5pbmctYmFzZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6c2hhZG93LW91dGxpbmUtZm9jdXMgZm9jdXM6dGV4dC1ibGFja1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpZFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXRlbS5vcGVuID09PSB0cnVlID8gJ3RydWUnIDogJ2ZhbHNlJ1wiIChjbGljayk9XCJ0b2dnbGVJdGVtKGl0ZW0pXCIgW2F0dHIuZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiIFtuZ0NsYXNzXT1cIml0ZW0uZGlzYWJsZWQgPyAnY3Vyc29yLW5vdC1hbGxvd2VkJyA6ICcnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBnZXRJdGVtSGVhZGVyKGl0ZW0pLCBodG1sOiBpdGVtLmhlYWRlckh0bWwsIHRleHQ6IGl0ZW0uaGVhZGVyVGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5kaXNhYmxlZFwiIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQteS0wIHJpZ2h0LTAgcHktc20gZm9udC1ub3JtYWwgdGV4dC1zbSB0ZXh0LW5ldXRyYWwtZGFyayB1bmRlcmxpbmUgZ3JvdXAtZm9jdXM6dGV4dC1ibGFjayBwb2ludGVyLWV2ZW50cy1ub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgW25nQ2xhc3NdPVwieydoaWRkZW4nOiBpdGVtLmRpc2FibGVkfVwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5vcGVuXCIgW2NsYXNzXT1cIlsnQWNjb3JkaW9uLXNob3cnLCBpdGVtLnNob3dIZWFkZXJCdXR0b24/LmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGNvbXBvbmVudDogaXRlbS5zaG93SGVhZGVyQnV0dG9uLCB0ZXh0OiAnTW9zdHJhcicgfVwiPjwvbmctY29udGFpbmVyPiAgICAgIFxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJhbGxvd1RvZ2dsZSAmJiBpdGVtLm9wZW5cIiBbY2xhc3NdPVwiWydBY2NvcmRpb24taGlkZScsIGl0ZW0uc2hvd0hlYWRlckJ1dHRvbj8uY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBpdGVtLmhpZGVIZWFkZXJCdXR0b24sIHRleHQ6ICdPY3VsdGFyJyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L3NwYW4+XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=