desy-angular 11.1.0 → 12.1.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 (238) hide show
  1. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +5 -4
  2. package/esm2022/lib/desy-buttons/components/button-loader/button-loader.component.mjs +8 -5
  3. package/esm2022/lib/desy-buttons/components/dropdown/dropdown.component.mjs +23 -8
  4. package/esm2022/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.mjs +3 -3
  5. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +6 -5
  6. package/esm2022/lib/desy-buttons/components/pill/pill.component.mjs +5 -4
  7. package/esm2022/lib/desy-buttons/components/toggle/toggle.component.mjs +4 -3
  8. package/esm2022/lib/desy-buttons/interfaces/listbox-item-data.mjs +1 -1
  9. package/esm2022/lib/desy-commons/interfaces/divider-data.mjs +1 -1
  10. package/esm2022/lib/desy-commons/interfaces/title-data.mjs +1 -1
  11. package/esm2022/lib/desy-forms/components/character-count/character-count.component.mjs +30 -4
  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-day/date-input-day.component.mjs +3 -3
  15. package/esm2022/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.mjs +28 -2
  16. package/esm2022/lib/desy-forms/components/date-input/date-input.component.mjs +10 -9
  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/fieldset/legend/legend.component.mjs +17 -6
  20. package/esm2022/lib/desy-forms/components/file-upload/file-upload.component.mjs +8 -7
  21. package/esm2022/lib/desy-forms/components/hint/hint.component.mjs +4 -3
  22. package/esm2022/lib/desy-forms/components/input/input.component.mjs +22 -12
  23. package/esm2022/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.mjs +28 -2
  24. package/esm2022/lib/desy-forms/components/input-group/input-group.component.mjs +11 -10
  25. package/esm2022/lib/desy-forms/components/label/label.component.mjs +4 -3
  26. package/esm2022/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +6 -5
  27. package/esm2022/lib/desy-forms/components/radios/radios.component.mjs +11 -10
  28. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +7 -6
  29. package/esm2022/lib/desy-forms/components/select/select.component.mjs +10 -9
  30. package/esm2022/lib/desy-forms/components/textarea/textarea.component.mjs +8 -7
  31. package/esm2022/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +4 -3
  32. package/esm2022/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +13 -12
  33. package/esm2022/lib/desy-forms/components/tree/tree-sub/tree-sub.component.mjs +5 -4
  34. package/esm2022/lib/desy-forms/components/tree/tree.component.mjs +5 -4
  35. package/esm2022/lib/desy-forms/interfaces/error-message-data.mjs +1 -1
  36. package/esm2022/lib/desy-forms/interfaces/fieldset-data.mjs +1 -1
  37. package/esm2022/lib/desy-forms/interfaces/hint-data.mjs +1 -1
  38. package/esm2022/lib/desy-forms/interfaces/item-checkbox-data.mjs +1 -1
  39. package/esm2022/lib/desy-forms/interfaces/item-date-input-data.mjs +1 -1
  40. package/esm2022/lib/desy-forms/interfaces/item-input-group-data.mjs +1 -1
  41. package/esm2022/lib/desy-forms/interfaces/item-radio-data.mjs +1 -1
  42. package/esm2022/lib/desy-forms/interfaces/label-data.mjs +1 -1
  43. package/esm2022/lib/desy-forms/interfaces/select-item-data.mjs +1 -1
  44. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +6 -5
  45. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +15 -14
  46. package/esm2022/lib/desy-modals/interfaces/dialog-options.mjs +1 -1
  47. package/esm2022/lib/desy-modals/interfaces/modal-options.mjs +1 -1
  48. package/esm2022/lib/desy-modals/services/dialog.service.mjs +2 -2
  49. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +4 -3
  50. package/esm2022/lib/desy-nav/components/error-summary/error-summary.component.mjs +11 -8
  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 +7 -3
  57. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +7 -3
  58. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title-container/header-advanced-title-container.component.mjs +7 -3
  59. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced.component.mjs +6 -5
  60. package/esm2022/lib/desy-nav/components/header-mini/header-mini.component.mjs +5 -4
  61. package/esm2022/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +3 -3
  62. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +6 -4
  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/components/menu-navigation-subitem/menu-navigation-subitem.component.mjs +1 -1
  66. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +280 -31
  67. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +3 -3
  68. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.mjs +3 -3
  69. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +6 -5
  70. package/esm2022/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +3 -3
  71. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +281 -32
  72. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +3 -3
  73. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +6 -5
  74. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +12 -16
  75. package/esm2022/lib/desy-nav/components/skip-link/skip-link.component.mjs +4 -3
  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/header-dropdown-data.mjs +1 -1
  80. package/esm2022/lib/desy-nav/interfaces/header-mobile-text-data.mjs +1 -1
  81. package/esm2022/lib/desy-nav/interfaces/header-navigation-item-data.mjs +1 -1
  82. package/esm2022/lib/desy-nav/interfaces/header-subnav-data.mjs +1 -1
  83. package/esm2022/lib/desy-nav/interfaces/menu-horizontal-item-data.mjs +1 -1
  84. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.mjs +1 -1
  85. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item.mjs +1 -1
  86. package/esm2022/lib/desy-nav/interfaces/menu-navigation.mjs +1 -1
  87. package/esm2022/lib/desy-nav/interfaces/menu-vertical-items-data.mjs +1 -1
  88. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-data.mjs +1 -1
  89. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-items-data.mjs +1 -1
  90. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub.mjs +1 -1
  91. package/esm2022/lib/desy-nav/interfaces/menubar-item.mjs +1 -1
  92. package/esm2022/lib/desy-nav/interfaces/nav-item.data.mjs +1 -1
  93. package/esm2022/lib/desy-nav/interfaces/notification-items-data.mjs +1 -1
  94. package/esm2022/lib/desy-nav/interfaces/notification-options.mjs +1 -1
  95. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +10 -9
  96. package/esm2022/lib/desy-tables/components/table/table.component.mjs +5 -4
  97. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +26 -10
  98. package/esm2022/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +16 -7
  99. package/esm2022/lib/desy-tables/interfaces/cell-data.mjs +1 -1
  100. package/esm2022/lib/desy-tables/interfaces/wrapper-data.mjs +1 -1
  101. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +281 -30
  102. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +5 -4
  103. package/esm2022/lib/desy-views/components/alert/alert.component.mjs +4 -3
  104. package/esm2022/lib/desy-views/components/card/card.component.mjs +4 -3
  105. package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +17 -5
  106. package/esm2022/lib/desy-views/components/description-list/description-list.component.mjs +4 -3
  107. package/esm2022/lib/desy-views/components/details/details.component.mjs +16 -4
  108. package/esm2022/lib/desy-views/components/item/item.component.mjs +11 -10
  109. package/esm2022/lib/desy-views/components/media-object/media-object.component.mjs +288 -36
  110. package/esm2022/lib/desy-views/components/spinner/spinner.component.mjs +280 -28
  111. package/esm2022/lib/desy-views/components/status/status.component.mjs +294 -35
  112. package/esm2022/lib/desy-views/components/status-item/status-item.component.mjs +296 -43
  113. package/esm2022/lib/desy-views/components/tabs/tab-item/tab-item.component.mjs +6 -4
  114. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +288 -39
  115. package/esm2022/lib/desy-views/components/tooltip/tooltip.component.mjs +284 -46
  116. package/esm2022/lib/desy-views/interfaces/accordion-item.data.mjs +1 -1
  117. package/esm2022/lib/desy-views/interfaces/alert-options.mjs +1 -1
  118. package/esm2022/lib/desy-views/interfaces/description-item.data.mjs +1 -1
  119. package/esm2022/lib/desy-views/interfaces/status-data.mjs +1 -1
  120. package/esm2022/lib/desy-views/interfaces/tabs-items-data.mjs +1 -1
  121. package/esm2022/lib/desy-views/interfaces/tabs-panel-data.mjs +1 -1
  122. package/esm2022/lib/desy-views/interfaces/term-definition.data.mjs +1 -1
  123. package/esm2022/lib/shared/components/accessibility/accessibility-attributes.mjs +78 -0
  124. package/esm2022/lib/shared/components/accessibility/accessibility.component.mjs +124 -2
  125. package/esm2022/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.mjs +126 -2
  126. package/esm2022/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.mjs +126 -2
  127. package/esm2022/lib/shared/directives/accessibility-directive.mjs +52 -0
  128. package/esm2022/lib/shared/interfaces/accessibility-data.mjs +2 -0
  129. package/esm2022/lib/shared/pipes/make-html-list.pipe.mjs +2 -2
  130. package/esm2022/lib/shared/shared.module.mjs +12 -7
  131. package/esm2022/lib/shared/utils/search-utils.mjs +5 -1
  132. package/esm2022/public-api.mjs +4 -1
  133. package/fesm2022/desy-angular.mjs +3784 -633
  134. package/fesm2022/desy-angular.mjs.map +1 -1
  135. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +2 -0
  136. package/lib/desy-buttons/components/dropdown/dropdown.component.d.ts +4 -2
  137. package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +3 -3
  138. package/lib/desy-buttons/components/listbox/listbox.component.d.ts +1 -1
  139. package/lib/desy-buttons/interfaces/listbox-item-data.d.ts +2 -2
  140. package/lib/desy-commons/interfaces/divider-data.d.ts +1 -0
  141. package/lib/desy-commons/interfaces/title-data.d.ts +2 -2
  142. package/lib/desy-forms/components/character-count/character-count.component.d.ts +7 -1
  143. package/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.d.ts +2 -3
  144. package/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.d.ts +14 -1
  145. package/lib/desy-forms/components/fieldset/legend/legend.component.d.ts +6 -2
  146. package/lib/desy-forms/components/file-upload/file-upload.component.d.ts +1 -1
  147. package/lib/desy-forms/components/input/input.component.d.ts +8 -3
  148. package/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.d.ts +14 -1
  149. package/lib/desy-forms/components/input-group/input-group.component.d.ts +1 -1
  150. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +1 -1
  151. package/lib/desy-forms/components/select/select.component.d.ts +1 -1
  152. package/lib/desy-forms/components/textarea/textarea.component.d.ts +1 -1
  153. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +5 -5
  154. package/lib/desy-forms/interfaces/error-message-data.d.ts +2 -2
  155. package/lib/desy-forms/interfaces/fieldset-data.d.ts +2 -2
  156. package/lib/desy-forms/interfaces/hint-data.d.ts +2 -2
  157. package/lib/desy-forms/interfaces/item-checkbox-data.d.ts +3 -3
  158. package/lib/desy-forms/interfaces/item-date-input-data.d.ts +3 -3
  159. package/lib/desy-forms/interfaces/item-input-group-data.d.ts +3 -3
  160. package/lib/desy-forms/interfaces/item-radio-data.d.ts +3 -3
  161. package/lib/desy-forms/interfaces/label-data.d.ts +3 -2
  162. package/lib/desy-forms/interfaces/select-item-data.d.ts +2 -2
  163. package/lib/desy-modals/components/dialog/dialog.component.d.ts +3 -3
  164. package/lib/desy-modals/components/modal/modal.component.d.ts +8 -8
  165. package/lib/desy-modals/interfaces/dialog-options.d.ts +2 -2
  166. package/lib/desy-modals/interfaces/modal-options.d.ts +4 -4
  167. package/lib/desy-modals/services/dialog.service.d.ts +1 -1
  168. package/lib/desy-nav/components/error-summary/error-summary.component.d.ts +4 -3
  169. package/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.d.ts +61 -0
  170. package/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.d.ts +3 -1
  171. package/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.d.ts +3 -1
  172. package/lib/desy-nav/components/header-advanced/header-advanced-title-container/header-advanced-title-container.component.d.ts +3 -1
  173. package/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.d.ts +2 -2
  174. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.d.ts +3 -3
  175. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.d.ts +1 -1
  176. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +75 -13
  177. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +3 -3
  178. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +3 -3
  179. package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +3 -3
  180. package/lib/desy-nav/components/menubar/menubar.component.d.ts +75 -13
  181. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +2 -2
  182. package/lib/desy-nav/components/notification/notification.component.d.ts +7 -9
  183. package/lib/desy-nav/interfaces/breadcrumbs.data.d.ts +2 -2
  184. package/lib/desy-nav/interfaces/error-summary-data.d.ts +2 -2
  185. package/lib/desy-nav/interfaces/footer-data.d.ts +7 -3
  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 +3 -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 +3 -2
  191. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.d.ts +5 -2
  192. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item.d.ts +5 -2
  193. package/lib/desy-nav/interfaces/menu-navigation.d.ts +5 -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 +3 -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 +1 -1
  203. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +8 -3
  204. package/lib/desy-tables/directives/focus-clicked-cell.directive.d.ts +1 -0
  205. package/lib/desy-tables/interfaces/cell-data.d.ts +2 -2
  206. package/lib/desy-tables/interfaces/wrapper-data.d.ts +2 -2
  207. package/lib/desy-views/components/accordion/accordion.component.d.ts +75 -13
  208. package/lib/desy-views/components/alert/alert.component.d.ts +1 -1
  209. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +3 -1
  210. package/lib/desy-views/components/details/details.component.d.ts +3 -1
  211. package/lib/desy-views/components/item/item.component.d.ts +7 -7
  212. package/lib/desy-views/components/media-object/media-object.component.d.ts +79 -17
  213. package/lib/desy-views/components/spinner/spinner.component.d.ts +75 -13
  214. package/lib/desy-views/components/status/status.component.d.ts +76 -14
  215. package/lib/desy-views/components/status-item/status-item.component.d.ts +83 -21
  216. package/lib/desy-views/components/tabs/tab-item/tab-item.component.d.ts +4 -3
  217. package/lib/desy-views/components/tabs/tabs.component.d.ts +77 -15
  218. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +76 -18
  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/directives/accessibility-directive.d.ts +16 -0
  231. package/lib/shared/interfaces/accessibility-data.d.ts +77 -0
  232. package/lib/shared/shared.module.d.ts +4 -3
  233. package/package.json +1 -1
  234. package/public-api.d.ts +3 -0
  235. package/esm2022/lib/desy-forms/interfaces/accesibility-data.mjs +0 -2
  236. package/esm2022/lib/shared/interfaces/accesibility-data.mjs +0 -2
  237. package/lib/desy-forms/interfaces/accesibility-data.d.ts +0 -15
  238. package/lib/shared/interfaces/accesibility-data.d.ts +0 -16
@@ -7,26 +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);
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;
14
91
  this.showAll = true;
15
92
  }
16
93
  ngOnChanges(changes) {
17
- this.roleData = this.role ? this.role : null;
18
- this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;
19
- this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;
20
- this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;
21
- this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;
22
- this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;
23
- this.ariaControlsData = this.ariaControls ? this.ariaControls : null;
24
- this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;
25
- this.ariaLiveData = this.ariaLive ? this.ariaLive : null;
26
- this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;
27
- this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;
28
- this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;
29
- this.ariaModalData = this.ariaModal ? this.ariaModal : null;
94
+ this.classes = this.classes ? this.classes + " block" : null;
30
95
  }
31
96
  getItemId(item, index) {
32
97
  let id;
@@ -114,7 +179,7 @@ export class AccordionComponent extends AccessibilityComponent {
114
179
  return item instanceof AccordionItemComponent ? item.contentComponent : null;
115
180
  }
116
181
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
117
- 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=\"Accordion-trigger 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' : classes\">\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" }] }); }
118
183
  }
119
184
  __decorate([
120
185
  DesyContentChild(),
@@ -122,7 +187,7 @@ __decorate([
122
187
  ], AccordionComponent.prototype, "headingComponent", void 0);
123
188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionComponent, decorators: [{
124
189
  type: Component,
125
- 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=\"Accordion-trigger 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' : classes\">\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" }]
126
191
  }], propDecorators: { itemSelectors: [{
127
192
  type: ViewChildren,
128
193
  args: ['itemSelector']
@@ -147,45 +212,231 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
147
212
  }, {
148
213
  type: HostBinding,
149
214
  args: ['class']
150
- }], roleData: [{
215
+ }], role: [{
151
216
  type: HostBinding,
152
217
  args: ['attr.role']
153
- }], ariaLabelData: [{
218
+ }], ariaLabel: [{
154
219
  type: HostBinding,
155
220
  args: ['attr.aria-label']
156
- }], ariaDescribedbyData: [{
221
+ }], ariaDescribedBy: [{
157
222
  type: HostBinding,
158
223
  args: ['attr.aria-describedby']
159
- }], ariaLabelledbyData: [{
224
+ }], ariaLabelledBy: [{
160
225
  type: HostBinding,
161
226
  args: ['attr.aria-labelledby']
162
- }], ariaHiddenData: [{
227
+ }], ariaHidden: [{
163
228
  type: HostBinding,
164
229
  args: ['attr.aria-hidden']
165
- }], ariaDisabledData: [{
230
+ }], ariaDisabled: [{
166
231
  type: HostBinding,
167
232
  args: ['attr.aria-disabled']
168
- }], ariaControlsData: [{
233
+ }], ariaControls: [{
169
234
  type: HostBinding,
170
235
  args: ['attr.aria-controls']
171
- }], ariaCurrentData: [{
236
+ }], ariaCurrent: [{
172
237
  type: HostBinding,
173
238
  args: ['attr.aria-current']
174
- }], ariaLiveData: [{
239
+ }], ariaLive: [{
175
240
  type: HostBinding,
176
241
  args: ['attr.aria-live']
177
- }], ariaExpandedData: [{
242
+ }], ariaExpanded: [{
178
243
  type: HostBinding,
179
244
  args: ['attr.aria-expanded']
180
- }], ariaErrormessageData: [{
245
+ }], ariaErrorMessage: [{
181
246
  type: HostBinding,
182
247
  args: ['attr.aria-errormessage']
183
- }], ariaHaspopupData: [{
248
+ }], ariaHasPopup: [{
184
249
  type: HostBinding,
185
250
  args: ['attr.aria-haspopup']
186
- }], ariaModalData: [{
251
+ }], ariaModal: [{
187
252
  type: HostBinding,
188
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']
189
440
  }], headingComponent: [{
190
441
  type: ContentChildren,
191
442
  args: [AccordionHeaderComponent]
@@ -193,4 +444,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
193
444
  type: ContentChildren,
194
445
  args: [AccordionItemComponent]
195
446
  }] } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktdmlld3MvY29tcG9uZW50cy9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktdmlld3MvY29tcG9uZW50cy9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBYyxXQUFXLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBaUIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlJLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRTNGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7OztBQU9uRixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsc0JBQXNCO0lBSjlEOztRQW9DRSxZQUFPLEdBQUcsSUFBSSxDQUFDO0tBa0hoQjtJQS9HQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDNUQsSUFBSSxDQUFDLG1CQUFt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O2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRXlCLE9BQU87c0JBQXJDLEtBQUs7O3NCQUFJLFdBQVc7dUJBQUMsT0FBTztnQkFDSCxRQUFRO3NCQUFqQyxXQUFXO3VCQUFDLFdBQVc7Z0JBQ1EsYUFBYTtzQkFBNUMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBQ1EsbUJBQW1CO3NCQUF4RCxXQUFXO3VCQUFDLHVCQUF1QjtnQkFDQyxrQkFBa0I7c0JBQXRELFdBQVc7dUJBQUMsc0JBQXNCO2dCQUNGLGNBQWM7c0JBQTlDLFdBQVc7dUJBQUMsa0JBQWtCO2dCQUNJLGdCQUFnQjtzQkFBbEQsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBQ0UsZ0JBQWdCO3NCQUFsRCxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDQyxlQUFlO3NCQUFoRCxXQUFXO3VCQUFDLG1CQUFtQjtnQkFDRCxZQUFZO3NCQUExQyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFDTSxnQkFBZ0I7c0JBQWxELFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNNLG9CQUFvQjtzQkFBMUQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBQ0YsZ0JBQWdCO3NCQUFsRCxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDRCxhQUFhO3NCQUE1QyxXQUFXO3VCQUFDLGlCQUFpQjtnQkFHYSxnQkFBZ0I7c0JBQTFELGVBQWU7dUJBQUMsd0JBQXdCO2dCQUNBLGlCQUFpQjtzQkFBekQsZUFBZTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZGVzeS1jb21tb25zL2NvbXBvbmVudHMvY29udGVudC9jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGVzeUNvbnRlbnRDaGlsZCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktY29udGVudC1jaGlsZC5kZWNvcmF0b3InO1xuaW1wb3J0IHsgQWNjb3JkaW9uSGVhZGVyRGF0YSwgQWNjb3JkaW9uSXRlbURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFjY29yZGlvbkhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vYWNjb3JkaW9uLWhlYWRlci9hY2NvcmRpb24taGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY2NvcmRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24taXRlbS9hY2NvcmRpb24taXRlbS5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktYWNjb3JkaW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgQFZpZXdDaGlsZHJlbignaXRlbVNlbGVjdG9yJykgaXRlbVNlbGVjdG9yczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICBcbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgQElucHV0KCkgaWRQcmVmaXg6IHN0cmluZztcbiAgQElucHV0KCkgYWxsb3dUb2dnbGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFsbG93TXVsdGlwbGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhlYWRpbmc6IEFjY29yZGlvbkhlYWRlckRhdGE7XG4gIEBJbnB1dCgpIGhlYWRpbmdMZXZlbDtcbiAgQElucHV0KCkgc2hvd0NvbnRyb2w6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGl0ZW1zOiBBY2NvcmRpb25JdGVtRGF0YVtdO1xuXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc2VzOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZURhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKSBhcmlhTGFiZWxEYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgYXJpYURlc2NyaWJlZGJ5RGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbGxlZGJ5JykgYXJpYUxhYmVsbGVkYnlEYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhpZGRlbicpIGFyaWFIaWRkZW5EYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRpc2FibGVkJykgYXJpYURpc2FibGVkRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1jb250cm9scycpIGFyaWFDb250cm9sc0RhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtY3VycmVudCcpIGFyaWFDdXJyZW50RGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1saXZlJykgYXJpYUxpdmVEYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWV4cGFuZGVkJykgYXJpYUV4cGFuZGVkRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2UnKSBhcmlhRXJyb3JtZXNzYWdlRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1oYXNwb3B1cCcpIGFyaWFIYXNwb3B1cERhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbW9kYWwnKSBhcmlhTW9kYWxEYXRhOiBhbnlcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oQWNjb3JkaW9uSGVhZGVyQ29tcG9uZW50KSBoZWFkaW5nQ29tcG9uZW50OiBBY2NvcmRpb25IZWFkZXJDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oQWNjb3JkaW9uSXRlbUNvbXBvbmVudCkgaXRlbUNvbXBvbmVudExpc3Q6IFF1ZXJ5TGlzdDxBY2NvcmRpb25JdGVtQ29tcG9uZW50PjtcblxuICBzaG93QWxsID0gdHJ1ZTtcbiAgY3VycmVudEl0ZW06IG51bWJlcjtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5yb2xlRGF0YSA9IHRoaXMucm9sZSA/IHRoaXMucm9sZSA6IG51bGw7XG4gICAgdGhpcy5hcmlhTGFiZWxEYXRhID0gdGhpcy5hcmlhTGFiZWwgPyB0aGlzLmFyaWFMYWJlbCA6IG51bGw7XG4gICAgdGhpcy5hcmlhRGVzY3JpYmVkYnlEYXRhID0gdGhpcy5hcmlhRGVzY3JpYmVkQnkgPyB0aGlzLmFyaWFEZXNjcmliZWRCeSA6IG51bGw7XG4gICAgdGhpcy5hcmlhTGFiZWxsZWRieURhdGEgPSB0aGlzLmFyaWFMYWJlbGxlZEJ5ID8gdGhpcy5hcmlhTGFiZWxsZWRCeSA6IG51bGw7XG4gICAgdGhpcy5hcmlhSGlkZGVuRGF0YSA9IHRoaXMuYXJpYUhpZGRlbiA/IHRoaXMuYXJpYUhpZGRlbiA6IG51bGw7XG4gICAgdGhpcy5hcmlhRGlzYWJsZWREYXRhID0gdGhpcy5hcmlhRGlzYWJsZWQgPyB0aGlzLmFyaWFEaXNhYmxlZCA6IG51bGw7XG4gICAgdGhpcy5hcmlhQ29udHJvbHNEYXRhID0gdGhpcy5hcmlhQ29udHJvbHMgPyB0aGlzLmFyaWFDb250cm9scyA6IG51bGw7XG4gICAgdGhpcy5hcmlhQ3VycmVudERhdGEgPSB0aGlzLmFyaWFDdXJyZW50ID8gdGhpcy5hcmlhQ3VycmVudCA6IG51bGw7XG4gICAgdGhpcy5hcmlhTGl2ZURhdGEgPSB0aGlzLmFyaWFMaXZlID8gdGhpcy5hcmlhTGl2ZSA6IG51bGw7XG4gICAgdGhpcy5hcmlhRXhwYW5kZWREYXRhID0gdGhpcy5hcmlhRXhwYW5kZWQgPyB0aGlzLmFyaWFFeHBhbmRlZCA6IG51bGw7XG4gICAgdGhpcy5hcmlhRXJyb3JtZXNzYWdlRGF0YSA9IHRoaXMuYXJpYUVycm9yTWVzc2FnZSA/IHRoaXMuYXJpYUVycm9yTWVzc2FnZSA6IG51bGw7XG4gICAgdGhpcy5hcmlhSGFzcG9wdXBEYXRhID0gdGhpcy5hcmlhSGFzUG9wdXAgPyB0aGlzLmFyaWFIYXNQb3B1cCA6IG51bGw7XG4gICAgdGhpcy5hcmlhTW9kYWxEYXRhID0gdGhpcy5hcmlhTW9kYWwgPyB0aGlzLmFyaWFNb2RhbCA6IG51bGw7XG4gIH1cblxuICBnZXRJdGVtSWQoaXRlbSwgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IGlkO1xuICAgIGlmIChpdGVtLmlkKSB7XG4gICAgICBpZCA9IGl0ZW0uaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkID0gdGhpcy5pZFByZWZpeCA/IHRoaXMuaWRQcmVmaXggKyAnLScgKyAoaW5kZXggKyAxKSA6IChpbmRleCArIDEpO1xuICAgIH1cbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBjaGFuZ2VBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGlzQ2hhbmdlID0gaXRlbS5vcGVuICE9PSB0aGlzLnNob3dBbGw7XG4gICAgICBpdGVtLm9wZW4gPSB0aGlzLnNob3dBbGw7XG4gICAgICBpZiAoaXNDaGFuZ2UgJiYgaXRlbSBpbnN0YW5jZW9mIEFjY29yZGlvbkl0ZW1Db21wb25lbnQpIHtcbiAgICAgICAgaXRlbS5vcGVuQ2hhbmdlLmVtaXQoaXRlbS5vcGVuKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNob3dBbGwgPSAhdGhpcy5zaG93QWxsO1xuICB9XG5cbiAgdG9nZ2xlSXRlbShpdGVtOiBBY2NvcmRpb25JdGVtRGF0YSk6IHZvaWQge1xuICAgIGlmICghaXRlbS5vcGVuIHx8IHRoaXMuYWxsb3dUb2dnbGUpIHtcbiAgICAgIGNvbnN0IG5ld09wZW5WYWx1ZSA9ICFpdGVtLm9wZW47XG4gICAgICBpZiAoIXRoaXMuYWxsb3dNdWx0aXBsZSkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICAgICAgaXRlbXMuZm9yRWFjaChpdCA9PiB7XG4gICAgICAgICAgY29uc3Qgd2FzT3BlbiA9IGl0Lm9wZW47XG4gICAgICAgICAgaXQub3BlbiA9IGZhbHNlO1xuICAgICAgICAgIGlmICh3YXNPcGVuICYmIGl0ICE9PSBpdGVtICYmIGl0IGluc3RhbmNlb2YgQWNjb3JkaW9uSXRlbUNvbXBvbmVudCkge1xuICAgICAgICAgICAgaXQub3BlbkNoYW5nZS5lbWl0KGl0Lm9wZW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpdGVtLm9wZW4gPSBuZXdPcGVuVmFsdWU7XG4gICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIEFjY29yZGlvbkl0ZW1Db21wb25lbnQpIHtcbiAgICAgICAgaXRlbS5vcGVuQ2hhbmdlLmVtaXQoaXRlbS5vcGVuKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb2N1c0ZpcnN0SXRlbShldmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pdGVtU2VsZWN0b3JzLnRvQXJyYXkoKVswXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c0xhc3RJdGVtKGV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLml0ZW1TZWxlY3RvcnMudG9BcnJheSgpW3RoaXMuaXRlbVNlbGVjdG9ycy5sZW5ndGggLSAxXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c05leHRJdGVtKGV2ZW50LCBmb2N1c2VkSXRlbTogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBzZWxlY3RvcnMgPSB0aGlzLml0ZW1TZWxlY3RvcnMudG9BcnJheSgpO1xuICAgIGlmIChzZWxlY3RvcnNbKGZvY3VzZWRJdGVtICsgMSkgJSBzZWxlY3RvcnMubGVuZ3RoXSAhPSBudWxsKSB7XG4gICAgICBzZWxlY3RvcnNbKGZvY3VzZWRJdGVtICsgMSkgJSBzZWxlY3RvcnMubGVuZ3RoXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNQcmV2aW91c0l0ZW0oZXZlbnQsIGZvY3VzZWRJdGVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHNlbGVjdG9ycyA9IHRoaXMuaXRlbVNlbGVjdG9ycy50b0FycmF5KCk7XG4gICAgaWYgKHNlbGVjdG9yc1soZm9jdXNlZEl0ZW0gKyBzZWxlY3RvcnMubGVuZ3RoIC0gMSkgJSBzZWxlY3RvcnMubGVuZ3RoXSAhPSBudWxsKSB7XG4gICAgICBzZWxlY3RvcnNbKGZvY3VzZWRJdGVtICsgc2VsZWN0b3JzLmxlbmd0aCAtIDEpICUgc2VsZWN0b3JzLmxlbmd0aF0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEl0ZW0oaTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50SXRlbSA9IGk7XG4gIH1cblxuICBnZXRUaXRsZUNsYXNzZXMoKTogc3RyaW5nIHtcbiAgICBsZXQgY2xhc3NlcyA9ICdjLWgyIG1iLWJhc2UnO1xuICAgIGlmICh0aGlzLmhlYWRpbmdDb21wb25lbnQgJiYgdGhpcy5oZWFkaW5nQ29tcG9uZW50LmNsYXNzZXMpIHtcbiAgICAgIGNsYXNzZXMgPSB0aGlzLmhlYWRpbmdDb21wb25lbnQuY2xhc3NlcztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGVhZGluZyAmJiB0aGlzLmhlYWRpbmcuY2xhc3Nlcykge1xuICAgICAgY2xhc3NlcyA9IHRoaXMuaGVhZGluZy5jbGFzc2VzO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIGdldEl0ZW1zKCk6IEFjY29yZGlvbkl0ZW1EYXRhW10ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtQ29tcG9uZW50TGlzdCAmJiB0aGlzLml0ZW1Db21wb25lbnRMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLml0ZW1Db21wb25lbnRMaXN0LnRvQXJyYXkoKSA6IHRoaXMuaXRlbXM7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgZ2V0SXRlbUhlYWRlcihpdGVtOiBBY2NvcmRpb25JdGVtRGF0YSk6IEFjY29yZGlvbkhlYWRlckNvbXBvbmVudCB7XG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBBY2NvcmRpb25JdGVtQ29tcG9uZW50ID8gaXRlbS5oZWFkZXJDb21wb25lbnQgOiBudWxsO1xuICB9XG5cbiAgZ2V0SXRlbUNvbnRlbnQoaXRlbTogQWNjb3JkaW9uSXRlbURhdGEpOiBDb250ZW50Q29tcG9uZW50IHtcbiAgICByZXR1cm4gaXRlbSBpbnN0YW5jZW9mIEFjY29yZGlvbkl0ZW1Db21wb25lbnQgPyBpdGVtLmNvbnRlbnRDb21wb25lbnQgOiBudWxsO1xuICB9XG5cbn1cbiIsIlxuICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGluZ0NvbXBvbmVudCB8fCBoZWFkaW5nXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJoZWFkaW5nTGV2ZWwgPiAwICYmIGhlYWRpbmdMZXZlbCA8IDYgPyBoZWFkaW5nTGV2ZWwgOiAyXCI+XG4gICAgICAgIDxoMSAqbmdTd2l0Y2hDYXNlPVwiMVwiIFtjbGFzc109XCJnZXRUaXRsZUNsYXNzZXMoKVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7XG4gICAgICAgICAgICBjb21wb25lbnQ6IGhlYWRpbmdDb21wb25lbnQgPyBoZWFkaW5nQ29tcG9uZW50IDogbnVsbCxcbiAgICAgICAgICAgIGh0bWw6IGhlYWRpbmcgPyBoZWFkaW5nLmh0bWwgOiBudWxsLFxuICAgICAgICAgICAgdGV4dDogaGVhZGluZyA/IGhlYWRpbmcudGV4dCA6IG51bGxcbiAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDE+XG4gICAgICAgIDxoMiAqbmdTd2l0Y2hDYXNlPVwiMlwiIFtjbGFzc109XCJnZXRUaXRsZUNsYXNzZXMoKVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7XG4gICAgICAgICAgICBjb21wb25lbnQ6IGhlYWRpbmdDb21wb25lbnQgPyBoZWFkaW5nQ29tcG9uZW50IDogbnVsbCxcbiAgICAgICAgICAgIGh0bWw6IGhlYWRpbmcgPyBoZWFkaW5nLmh0bWwgOiBudWxsLFxuICAgICAgICAgICAgdGV4dDogaGVhZGluZyA/IGhlYWRpbmcudGV4dCA6IG51bGxcbiAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDI+XG4gICAgICAgIDxoMyAqbmdTd2l0Y2hDYXNlPVwiM1wiIFtjbGFzc109XCJnZXRUaXRsZUNsYXNzZXMoKVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7XG4gICAgICAgICAgICBjb21wb25lbnQ6IGhlYWRpbmdDb21wb25lbnQgPyBoZWFkaW5nQ29tcG9uZW50IDogbnVsbCxcbiAgICAgICAgICAgIGh0bWw6IGhlYWRpbmcgPyBoZWFkaW5nLmh0bWwgOiBudWxsLFxuICAgICAgICAgICAgdGV4dDogaGVhZGluZyA/IGhlYWRpbmcudGV4dCA6IG51bGxcbiAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxoNCAqbmdTd2l0Y2hDYXNlPVwiNFwiIFtjbGFzc109XCJnZXRUaXRsZUNsYXNzZXMoKVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7XG4gICAgICAgICAgICBjb21wb25lbnQ6IGhlYWRpbmdDb21wb25lbnQgPyBoZWFkaW5nQ29tcG9uZW50IDogbnVsbCxcbiAgICAgICAgICAgIGh0bWw6IGhlYWRpbmcgPyBoZWFkaW5nLmh0bWwgOiBudWxsLFxuICAgICAgICAgICAgdGV4dDogaGVhZGluZyA/IGhlYWRpbmcudGV4dCA6IG51bGxcbiAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDQ+XG4gICAgICAgIDxoNSAqbmdTd2l0Y2hDYXNlPVwiNVwiIFtjbGFzc109XCJnZXRUaXRsZUNsYXNzZXMoKVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7XG4gICAgICAgICAgICBjb21wb25lbnQ6IGhlYWRpbmdDb21wb25lbnQgPyBoZWFkaW5nQ29tcG9uZW50IDogbnVsbCxcbiAgICAgICAgICAgIGh0bWw6IGhlYWRpbmcgPyBoZWFkaW5nLmh0bWwgOiBudWxsLFxuICAgICAgICAgICAgdGV4dDogaGVhZGluZyA/IGhlYWRpbmcudGV4dCA6IG51bGxcbiAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxidXR0b24gW2F0dHIuaWRdPVwiaWRcIiAqbmdJZj1cInNob3dDb250cm9sXCIgKGNsaWNrKT1cImNoYW5nZUFsbCgpXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWwtYXV0byBweS1iYXNlIHRleHQtc20gdGV4dC1uZXV0cmFsLWRhcmsgdW5kZXJsaW5lIGZvY3VzOnRleHQtYmxhY2sgZm9jdXM6Ymctd2FybmluZy1iYXNlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpzaGFkb3ctb3V0bGluZS1mb2N1cyB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgIHt7c2hvd0FsbCA/ICdNb3N0cmFyJyA6ICdPY3VsdGFyJ319IHRvZG9cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIkFjY29yZGlvblwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgaW5kZXggYXMgaVwiIGNsYXNzPVwiLW15LXB4IHB4LXhzIHB5LXNtIGJvcmRlci10IGJvcmRlci1iIGJvcmRlci1uZXV0cmFsLWJhc2VcIlxuICAgICAgICAgKGtleWRvd24uaG9tZSk9XCJmb2N1c0ZpcnN0SXRlbSgkZXZlbnQpXCJcbiAgICAgICAgIChrZXlkb3duLmVuZCk9XCJmb2N1c0xhc3RJdGVtKCRldmVudClcIlxuICAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCJmb2N1c1ByZXZpb3VzSXRlbSgkZXZlbnQsIGkpXCJcbiAgICAgICAgIChrZXlkb3duLmFycm93ZG93bik9XCJmb2N1c05leHRJdGVtKCRldmVudCwgaSlcIlxuICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaSlcIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiaGVhZGluZ0xldmVsID4gMCAmJiBoZWFkaW5nTGV2ZWwgPCA2ID8gaGVhZGluZ0xldmVsIDogMlwiPlxuICAgICAgICA8aDIgKm5nU3dpdGNoQ2FzZT1cIjFcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbUhlYWRlckNvbnRlbnQ7IGNvbnRleHQ6IHtpdGVtOiBpdGVtLCBpZDogZ2V0SXRlbUlkKGl0ZW0sIGkpLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj48L2gyPlxuICAgICAgICA8aDMgKm5nU3dpdGNoQ2FzZT1cIjJcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbUhlYWRlckNvbnRlbnQ7IGNvbnRleHQ6IHtpdGVtOiBpdGVtLCBpZDogZ2V0SXRlbUlkKGl0ZW0sIGkpLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj48L2gzPlxuICAgICAgICA8aDQgKm5nU3dpdGNoQ2FzZT1cIjNcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbUhlYWRlckNvbnRlbnQ7IGNvbnRleHQ6IHtpdGVtOiBpdGVtLCBpZDogZ2V0SXRlbUlkKGl0ZW0sIGkpLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj48L2g0PlxuICAgICAgICA8aDUgKm5nU3dpdGNoQ2FzZT1cIjRcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbUhlYWRlckNvbnRlbnQ7IGNvbnRleHQ6IHtpdGVtOiBpdGVtLCBpZDogZ2V0SXRlbUlkKGl0ZW0sIGkpLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj48L2g1PlxuICAgICAgICA8aDYgKm5nU3dpdGNoQ2FzZT1cIjVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbUhlYWRlckNvbnRlbnQ7IGNvbnRleHQ6IHtpdGVtOiBpdGVtLCBpZDogZ2V0SXRlbUlkKGl0ZW0sIGkpLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj48L2g2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8cCBjbGFzcz1cInNyLW9ubHlcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5IYXogY2xpY2sgZW4gZWwgYm90w7NuIGFudGVyaW9yIHBhcmEgbW9zdHJhciB1IG9jdWx0YXI8L3A+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5vcGVuXCIgY2xhc3M9XCJBY2NvcmRpb24tcGFuZWxcIlxuICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5jbGFzc2VzXCJcbiAgICAgICAgICAgW2F0dHIuaWRdPVwiZ2V0SXRlbUlkKGl0ZW0sIGkpXCJcbiAgICAgICAgICAgW2F0dHIucm9sZV09XCIoaXRlbS5yb2xlID8gcm9sZSA6ICdhY2NvcmRpb24nKVwiICAgICAgICAgICBcbiAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJjdXJyZW50SXRlbSA9PT0gaSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIml0ZW0uYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiaXRlbS5hcmlhRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLmFyaWFMYWJlbFwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpdGVtLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiaXRlbS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCInYWNjb3JkaW9uLScgKyBnZXRJdGVtSWQoaXRlbSwgaSlcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXRlbS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpdGVtLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBnZXRJdGVtQ29udGVudChpdGVtKSwgaHRtbDogaXRlbS5odG1sLCB0ZXh0OiBpdGVtLnRleHQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPG5nLXRlbXBsYXRlICNpdGVtSGVhZGVyQ29udGVudCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaWQ9XCJpZFwiIGxldC1pbmRleD1cImluZGV4XCI+XG4gIDxidXR0b24gI2l0ZW1TZWxlY3RvciBbaWRdPVwiaWQgKyAnLXRpdGxlJ1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIkFjY29yZGlvbi10cmlnZ2VyIGdyb3VwIHJlbGF0aXZlIHctZnVsbCBweS1zbSBmb250LXNlbWlib2xkIHRleHQtbGVmdCBjdXJzb3ItcG9pbnRlciBmb2N1czpiZy13YXJuaW5nLWJhc2UgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnNoYWRvdy1vdXRsaW5lLWZvY3VzIGZvY3VzOnRleHQtYmxhY2tcIlxuICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaWRcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0ub3BlblwiIChjbGljayk9XCJ0b2dnbGVJdGVtKGl0ZW0pXCIgW2F0dHIuZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiIFtuZ0NsYXNzXT1cIml0ZW0uZGlzYWJsZWQgPyAnY3Vyc29yLW5vdC1hbGxvd2VkJyA6IGNsYXNzZXNcIj5cbiAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGdldEl0ZW1IZWFkZXIoaXRlbSksIGh0bWw6IGl0ZW0uaGVhZGVySHRtbCwgdGV4dDogaXRlbS5oZWFkZXJUZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLmRpc2FibGVkXCIgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC15LTAgcmlnaHQtMCBweS1zbSBmb250LW5vcm1hbCB0ZXh0LXNtIHRleHQtbmV1dHJhbC1kYXJrIHVuZGVybGluZSBncm91cC1mb2N1czp0ZXh0LWJsYWNrIHBvaW50ZXItZXZlbnRzLW5vbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbbmdDbGFzc109XCJ7J2hpZGRlbic6IGl0ZW0uZGlzYWJsZWR9XCI+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=