desy-angular 12.0.0 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/esm2022/lib/desy-angular.module.mjs +10 -9
  2. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +5 -4
  3. package/esm2022/lib/desy-buttons/components/button-loader/button-loader.component.mjs +8 -5
  4. package/esm2022/lib/desy-buttons/components/dropdown/dropdown.component.mjs +11 -6
  5. package/esm2022/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.mjs +3 -3
  6. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +6 -5
  7. package/esm2022/lib/desy-buttons/components/pill/pill.component.mjs +5 -4
  8. package/esm2022/lib/desy-buttons/components/toggle/toggle.component.mjs +4 -3
  9. package/esm2022/lib/desy-buttons/desy-buttons.module.mjs +15 -15
  10. package/esm2022/lib/desy-buttons/interfaces/listbox-item-data.mjs +1 -1
  11. package/esm2022/lib/desy-commons/interfaces/title-data.mjs +1 -1
  12. package/esm2022/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.mjs +6 -5
  13. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes.component.mjs +11 -10
  14. package/esm2022/lib/desy-forms/components/date-input/date-input.component.mjs +10 -9
  15. package/esm2022/lib/desy-forms/components/datepicker/datepicker.component.mjs +190 -0
  16. package/esm2022/lib/desy-forms/components/datepicker/datepicker.pipe.mjs +34 -0
  17. package/esm2022/lib/desy-forms/components/error-message/error-message.component.mjs +4 -3
  18. package/esm2022/lib/desy-forms/components/fieldset/fieldset.component.mjs +5 -4
  19. package/esm2022/lib/desy-forms/components/file-upload/file-upload.component.mjs +8 -7
  20. package/esm2022/lib/desy-forms/components/hint/hint.component.mjs +4 -3
  21. package/esm2022/lib/desy-forms/components/input/input.component.mjs +8 -7
  22. package/esm2022/lib/desy-forms/components/input-group/input-group.component.mjs +11 -10
  23. package/esm2022/lib/desy-forms/components/label/label.component.mjs +4 -3
  24. package/esm2022/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +6 -5
  25. package/esm2022/lib/desy-forms/components/radios/radios.component.mjs +11 -10
  26. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +7 -6
  27. package/esm2022/lib/desy-forms/components/select/select.component.mjs +8 -7
  28. package/esm2022/lib/desy-forms/components/textarea/textarea.component.mjs +8 -7
  29. package/esm2022/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +4 -3
  30. package/esm2022/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +13 -12
  31. package/esm2022/lib/desy-forms/components/tree/tree-sub/tree-sub.component.mjs +5 -4
  32. package/esm2022/lib/desy-forms/components/tree/tree.component.mjs +12 -9
  33. package/esm2022/lib/desy-forms/desy-forms.module.mjs +40 -24
  34. package/esm2022/lib/desy-forms/interfaces/error-message-data.mjs +1 -1
  35. package/esm2022/lib/desy-forms/interfaces/fieldset-data.mjs +1 -1
  36. package/esm2022/lib/desy-forms/interfaces/hint-data.mjs +1 -1
  37. package/esm2022/lib/desy-forms/interfaces/item-checkbox-data.mjs +1 -1
  38. package/esm2022/lib/desy-forms/interfaces/item-date-input-data.mjs +1 -1
  39. package/esm2022/lib/desy-forms/interfaces/item-input-group-data.mjs +1 -1
  40. package/esm2022/lib/desy-forms/interfaces/item-radio-data.mjs +1 -1
  41. package/esm2022/lib/desy-forms/interfaces/label-data.mjs +1 -1
  42. package/esm2022/lib/desy-forms/interfaces/select-item-data.mjs +1 -1
  43. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +4 -3
  44. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +15 -14
  45. package/esm2022/lib/desy-modals/interfaces/dialog-options.mjs +1 -1
  46. package/esm2022/lib/desy-modals/interfaces/modal-options.mjs +1 -1
  47. package/esm2022/lib/desy-modals/services/dialog.service.mjs +2 -2
  48. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +4 -3
  49. package/esm2022/lib/desy-nav/components/error-summary/error-summary.component.mjs +5 -4
  50. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +4 -2
  51. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +6 -5
  52. package/esm2022/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.mjs +246 -2
  53. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +4 -3
  54. package/esm2022/lib/desy-nav/components/header/header.component.mjs +15 -14
  55. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.mjs +1 -1
  56. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.mjs +3 -3
  57. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +3 -3
  58. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced.component.mjs +6 -5
  59. package/esm2022/lib/desy-nav/components/header-mini/header-mini.component.mjs +5 -4
  60. package/esm2022/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.mjs +16 -0
  61. package/esm2022/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +7 -3
  62. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +8 -5
  63. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +6 -5
  64. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +3 -3
  65. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +280 -31
  66. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +3 -3
  67. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.mjs +3 -3
  68. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +6 -5
  69. package/esm2022/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +3 -3
  70. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +281 -32
  71. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +3 -3
  72. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +6 -5
  73. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +7 -6
  74. package/esm2022/lib/desy-nav/components/skip-link/skip-link.component.mjs +8 -3
  75. package/esm2022/lib/desy-nav/desy-nav.module.mjs +6 -5
  76. package/esm2022/lib/desy-nav/interfaces/breadcrumbs.data.mjs +1 -1
  77. package/esm2022/lib/desy-nav/interfaces/error-summary-data.mjs +1 -1
  78. package/esm2022/lib/desy-nav/interfaces/footer-data.mjs +1 -1
  79. package/esm2022/lib/desy-nav/interfaces/footer-logo.mjs +2 -1
  80. package/esm2022/lib/desy-nav/interfaces/header-dropdown-data.mjs +1 -1
  81. package/esm2022/lib/desy-nav/interfaces/header-mobile-text-data.mjs +1 -1
  82. package/esm2022/lib/desy-nav/interfaces/header-navigation-item-data.mjs +1 -1
  83. package/esm2022/lib/desy-nav/interfaces/header-subnav-data.mjs +1 -1
  84. package/esm2022/lib/desy-nav/interfaces/menu-horizontal-item-data.mjs +1 -1
  85. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.mjs +1 -1
  86. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item.mjs +1 -1
  87. package/esm2022/lib/desy-nav/interfaces/menu-navigation.mjs +1 -1
  88. package/esm2022/lib/desy-nav/interfaces/menu-vertical-items-data.mjs +1 -1
  89. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-data.mjs +1 -1
  90. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-items-data.mjs +1 -1
  91. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub.mjs +1 -1
  92. package/esm2022/lib/desy-nav/interfaces/menubar-item.mjs +1 -1
  93. package/esm2022/lib/desy-nav/interfaces/nav-item.data.mjs +1 -1
  94. package/esm2022/lib/desy-nav/interfaces/notification-items-data.mjs +1 -1
  95. package/esm2022/lib/desy-nav/interfaces/notification-options.mjs +1 -1
  96. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +22 -22
  97. package/esm2022/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.mjs +2 -2
  98. package/esm2022/lib/desy-pagination/desy-pagination.module.mjs +16 -8
  99. package/esm2022/lib/desy-tables/components/table/table.component.mjs +26 -5
  100. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +16 -16
  101. package/esm2022/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +12 -7
  102. package/esm2022/lib/desy-tables/interfaces/cell-data.mjs +1 -1
  103. package/esm2022/lib/desy-tables/interfaces/wrapper-data.mjs +1 -1
  104. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +279 -30
  105. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +5 -4
  106. package/esm2022/lib/desy-views/components/alert/alert.component.mjs +4 -3
  107. package/esm2022/lib/desy-views/components/card/card.component.mjs +4 -3
  108. package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +13 -4
  109. package/esm2022/lib/desy-views/components/description-list/description-list.component.mjs +4 -3
  110. package/esm2022/lib/desy-views/components/details/details.component.mjs +4 -3
  111. package/esm2022/lib/desy-views/components/item/item.component.mjs +11 -10
  112. package/esm2022/lib/desy-views/components/media-object/media-object.component.mjs +280 -32
  113. package/esm2022/lib/desy-views/components/status/status.component.mjs +283 -32
  114. package/esm2022/lib/desy-views/components/status-item/status-item.component.mjs +286 -37
  115. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +284 -35
  116. package/esm2022/lib/desy-views/components/tooltip/tooltip.component.mjs +281 -33
  117. package/esm2022/lib/desy-views/desy-views.module.mjs +27 -32
  118. package/esm2022/lib/desy-views/interfaces/accordion-item.data.mjs +1 -1
  119. package/esm2022/lib/desy-views/interfaces/alert-options.mjs +1 -1
  120. package/esm2022/lib/desy-views/interfaces/description-item.data.mjs +1 -1
  121. package/esm2022/lib/desy-views/interfaces/status-data.mjs +1 -1
  122. package/esm2022/lib/desy-views/interfaces/tabs-items-data.mjs +1 -1
  123. package/esm2022/lib/desy-views/interfaces/tabs-panel-data.mjs +1 -1
  124. package/esm2022/lib/desy-views/interfaces/term-definition.data.mjs +1 -1
  125. package/esm2022/lib/shared/components/accessibility/accessibility-attributes.mjs +78 -0
  126. package/esm2022/lib/shared/components/accessibility/accessibility.component.mjs +124 -2
  127. package/esm2022/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.mjs +126 -2
  128. package/esm2022/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.mjs +126 -2
  129. package/esm2022/lib/shared/components/index.mjs +4 -3
  130. package/esm2022/lib/shared/components/spinner/spinner.component.mjs +329 -0
  131. package/esm2022/lib/shared/directives/accessibility-directive.mjs +52 -0
  132. package/esm2022/lib/shared/directives/custom-inner-content.directive.mjs +21 -4
  133. package/esm2022/lib/shared/interfaces/accessibility-data.mjs +2 -0
  134. package/esm2022/lib/shared/pipes/make-html-list.pipe.mjs +2 -2
  135. package/esm2022/lib/shared/shared.module.mjs +12 -7
  136. package/esm2022/lib/shared/sharedExternal.module.mjs +24 -0
  137. package/esm2022/lib/shared/utils/search-utils.mjs +5 -1
  138. package/esm2022/public-api.mjs +5 -2
  139. package/fesm2022/desy-angular.mjs +4273 -965
  140. package/fesm2022/desy-angular.mjs.map +1 -1
  141. package/lib/desy-angular.module.d.ts +2 -1
  142. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +2 -0
  143. package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +3 -3
  144. package/lib/desy-buttons/desy-buttons.module.d.ts +3 -3
  145. package/lib/desy-buttons/interfaces/listbox-item-data.d.ts +2 -2
  146. package/lib/desy-commons/interfaces/title-data.d.ts +2 -2
  147. package/lib/desy-forms/components/datepicker/datepicker.component.d.ts +31 -0
  148. package/lib/desy-forms/components/datepicker/datepicker.pipe.d.ts +7 -0
  149. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +5 -5
  150. package/lib/desy-forms/components/tree/tree.component.d.ts +5 -4
  151. package/lib/desy-forms/desy-forms.module.d.ts +10 -6
  152. package/lib/desy-forms/interfaces/error-message-data.d.ts +2 -2
  153. package/lib/desy-forms/interfaces/fieldset-data.d.ts +2 -2
  154. package/lib/desy-forms/interfaces/hint-data.d.ts +2 -2
  155. package/lib/desy-forms/interfaces/item-checkbox-data.d.ts +3 -3
  156. package/lib/desy-forms/interfaces/item-date-input-data.d.ts +3 -3
  157. package/lib/desy-forms/interfaces/item-input-group-data.d.ts +3 -3
  158. package/lib/desy-forms/interfaces/item-radio-data.d.ts +3 -3
  159. package/lib/desy-forms/interfaces/label-data.d.ts +2 -2
  160. package/lib/desy-forms/interfaces/select-item-data.d.ts +2 -2
  161. package/lib/desy-modals/components/modal/modal.component.d.ts +8 -8
  162. package/lib/desy-modals/interfaces/dialog-options.d.ts +2 -2
  163. package/lib/desy-modals/interfaces/modal-options.d.ts +4 -4
  164. package/lib/desy-modals/services/dialog.service.d.ts +1 -1
  165. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +2 -1
  166. package/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.d.ts +61 -0
  167. package/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.d.ts +1 -1
  168. package/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.d.ts +1 -1
  169. package/lib/desy-nav/components/header-mini/header-mini.component.d.ts +1 -1
  170. package/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.d.ts +8 -0
  171. package/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.d.ts +4 -2
  172. package/lib/desy-nav/components/links-list/links-list.component.d.ts +2 -1
  173. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.d.ts +2 -2
  174. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +75 -13
  175. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +3 -3
  176. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +3 -3
  177. package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +3 -3
  178. package/lib/desy-nav/components/menubar/menubar.component.d.ts +75 -13
  179. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +2 -2
  180. package/lib/desy-nav/components/notification/notification.component.d.ts +2 -2
  181. package/lib/desy-nav/desy-nav.module.d.ts +29 -28
  182. package/lib/desy-nav/interfaces/breadcrumbs.data.d.ts +2 -2
  183. package/lib/desy-nav/interfaces/error-summary-data.d.ts +2 -2
  184. package/lib/desy-nav/interfaces/footer-data.d.ts +3 -3
  185. package/lib/desy-nav/interfaces/footer-logo.d.ts +1 -0
  186. package/lib/desy-nav/interfaces/header-dropdown-data.d.ts +2 -2
  187. package/lib/desy-nav/interfaces/header-mobile-text-data.d.ts +2 -2
  188. package/lib/desy-nav/interfaces/header-navigation-item-data.d.ts +2 -2
  189. package/lib/desy-nav/interfaces/header-subnav-data.d.ts +2 -2
  190. package/lib/desy-nav/interfaces/menu-horizontal-item-data.d.ts +2 -2
  191. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.d.ts +2 -2
  192. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item.d.ts +2 -2
  193. package/lib/desy-nav/interfaces/menu-navigation.d.ts +2 -2
  194. package/lib/desy-nav/interfaces/menu-vertical-items-data.d.ts +2 -2
  195. package/lib/desy-nav/interfaces/menu-vertical-sub-data.d.ts +2 -2
  196. package/lib/desy-nav/interfaces/menu-vertical-sub-items-data.d.ts +2 -2
  197. package/lib/desy-nav/interfaces/menubar-item-sub.d.ts +2 -2
  198. package/lib/desy-nav/interfaces/menubar-item.d.ts +3 -3
  199. package/lib/desy-nav/interfaces/nav-item.data.d.ts +2 -2
  200. package/lib/desy-nav/interfaces/notification-items-data.d.ts +2 -2
  201. package/lib/desy-nav/interfaces/notification-options.d.ts +4 -4
  202. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +4 -4
  203. package/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.d.ts +3 -3
  204. package/lib/desy-pagination/desy-pagination.module.d.ts +3 -1
  205. package/lib/desy-tables/components/table/table.component.d.ts +3 -0
  206. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +1 -1
  207. package/lib/desy-tables/directives/focus-clicked-cell.directive.d.ts +1 -0
  208. package/lib/desy-tables/interfaces/cell-data.d.ts +2 -2
  209. package/lib/desy-tables/interfaces/wrapper-data.d.ts +2 -2
  210. package/lib/desy-views/components/accordion/accordion.component.d.ts +75 -13
  211. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +5 -1
  212. package/lib/desy-views/components/item/item.component.d.ts +7 -7
  213. package/lib/desy-views/components/media-object/media-object.component.d.ts +75 -13
  214. package/lib/desy-views/components/status/status.component.d.ts +75 -13
  215. package/lib/desy-views/components/status-item/status-item.component.d.ts +77 -15
  216. package/lib/desy-views/components/tabs/tabs.component.d.ts +77 -15
  217. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +75 -13
  218. package/lib/desy-views/desy-views.module.d.ts +30 -31
  219. package/lib/desy-views/interfaces/accordion-item.data.d.ts +2 -2
  220. package/lib/desy-views/interfaces/alert-options.d.ts +2 -2
  221. package/lib/desy-views/interfaces/description-item.data.d.ts +2 -2
  222. package/lib/desy-views/interfaces/status-data.d.ts +2 -2
  223. package/lib/desy-views/interfaces/tabs-items-data.d.ts +2 -2
  224. package/lib/desy-views/interfaces/tabs-panel-data.d.ts +2 -2
  225. package/lib/desy-views/interfaces/term-definition.data.d.ts +2 -2
  226. package/lib/shared/components/accessibility/accessibility-attributes.d.ts +1 -0
  227. package/lib/shared/components/accessibility/accessibility.component.d.ts +78 -17
  228. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +79 -16
  229. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +79 -16
  230. package/lib/shared/components/index.d.ts +3 -2
  231. package/lib/shared/components/spinner/spinner.component.d.ts +86 -0
  232. package/lib/shared/directives/accessibility-directive.d.ts +16 -0
  233. package/lib/shared/directives/custom-inner-content.directive.d.ts +3 -2
  234. package/lib/shared/interfaces/accessibility-data.d.ts +77 -0
  235. package/lib/shared/shared.module.d.ts +4 -3
  236. package/lib/shared/sharedExternal.module.d.ts +8 -0
  237. package/package.json +2 -2
  238. package/public-api.d.ts +4 -1
  239. package/esm2022/lib/desy-forms/interfaces/accesibility-data.mjs +0 -2
  240. package/esm2022/lib/desy-pagination/interfaces/index.mjs +0 -2
  241. package/esm2022/lib/desy-views/components/spinner/spinner.component.mjs +0 -81
  242. package/esm2022/lib/shared/interfaces/accesibility-data.mjs +0 -2
  243. package/lib/desy-forms/interfaces/accesibility-data.d.ts +0 -15
  244. package/lib/desy-pagination/interfaces/index.d.ts +0 -1
  245. package/lib/desy-views/components/spinner/spinner.component.d.ts +0 -24
  246. package/lib/shared/interfaces/accesibility-data.d.ts +0 -16
@@ -9,8 +9,16 @@ import { TableRowComponent } from './components/table-row.component';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "@angular/common";
11
11
  import * as i2 from "../../../shared/directives/custom-inner-content.directive";
12
- import * as i3 from "../../../shared/pipes/make-html-list.pipe";
12
+ import * as i3 from "../../../shared/directives/accessibility-directive";
13
+ import * as i4 from "../../../shared/pipes/make-html-list.pipe";
13
14
  export class TableComponent extends AccessibilityComponent {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.extractedTexts = [];
18
+ }
19
+ handleContentExtracted(extractedText) {
20
+ this.extractedTexts.push(extractedText);
21
+ }
14
22
  getCaptionClass() {
15
23
  return this.captionComponent ? this.captionComponent.classes : this.captionClasses;
16
24
  }
@@ -32,6 +40,7 @@ export class TableComponent extends AccessibilityComponent {
32
40
  else if (this.foot) {
33
41
  footCells = this.foot;
34
42
  }
43
+ this.assignExtractedTextsToCells(footCells);
35
44
  return footCells;
36
45
  }
37
46
  getRows() {
@@ -45,10 +54,22 @@ export class TableComponent extends AccessibilityComponent {
45
54
  return rowList;
46
55
  }
47
56
  getRowCells(row) {
48
- return row instanceof TableRowComponent ? row.cells.toArray() : row;
57
+ const cells = row instanceof TableRowComponent ? row.cells.toArray() : row;
58
+ this.assignExtractedTextsToCells(cells);
59
+ return cells;
60
+ }
61
+ assignExtractedTextsToCells(cells) {
62
+ let textIndex = 0;
63
+ cells.forEach(cell => {
64
+ if (this.extractedTexts[textIndex]) {
65
+ cell.header = this.extractedTexts[textIndex];
66
+ }
67
+ const colspan = cell.colspan || 1;
68
+ textIndex += colspan;
69
+ });
49
70
  }
50
71
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, selector: "desy-table", inputs: { rows: "rows", head: "head", foot: "foot", caption: "caption", captionClasses: "captionClasses", firstCellIsHeader: "firstCellIsHeader", classes: "classes", id: "id", wrapper: "wrapper" }, queries: [{ propertyName: "captionComponent", predicate: TableCaptionComponent }, { propertyName: "headerComponent", predicate: TableHeaderComponent }, { propertyName: "footerComponent", predicate: TableFooterComponent }, { propertyName: "rowComponentList", predicate: TableRowComponent }], usesInheritance: true, ngImport: i0, template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-errormessage]=\"ariaErrorMessage\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-hidden]=\"ariaHidden\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-current]=\"ariaCurrent\"\n [attr.aria-live]=\"ariaLive\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-haspopup]=\"ariaHasPopup\"\n [attr.tabindex]=\"tabindex\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [attr.role]=\"headerCell.role\"\n [attr.aria-describedby]=\"headerCell.ariaDescribedBy\"\n [attr.aria-errormessage]=\"headerCell.ariaErrorMessage\"\n [attr.aria-label]=\"headerCell.ariaLabel\"\n [attr.aria-labelledby]=\"headerCell.ariaLabelledBy\"\n [attr.aria-hidden]=\"headerCell.ariaHidden\"\n [attr.aria-disabled]=\"headerCell.ariaDisabled\"\n [attr.aria-controls]=\"headerCell.ariaControls\"\n [attr.aria-current]=\"headerCell.ariaCurrent\"\n [attr.aria-live]=\"headerCell.ariaLive\"\n [attr.aria-expanded]=\"headerCell.ariaExpanded\"\n [attr.aria-haspopup]=\"headerCell.ariaHasPopup\"\n [attr.tabindex]=\"headerCell.tabindex\">\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n <tfoot *ngIf=\"foot || footerComponent\">\n <tr class=\"border-t-2 border-b border-neutral-base\">\n <ng-container *ngFor=\"let footCell of getFooterCells()\">\n <td scope=\"col\"\n [class]=\"['px-base py-sm', footCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(footCell.colspan ? footCell.colspan : null)\"\n [attr.rowspan]=\"(footCell.rowspan ? footCell.rowspan : null)\"\n [attr.id]=\"footCell.id ? footCell.id : null\"\n [attr.role]=\"footCell.role\"\n [attr.aria-describedby]=\"footCell.ariaDescribedBy\"\n [attr.aria-errormessage]=\"footCell.ariaErrorMessage\"\n [attr.aria-label]=\"footCell.ariaLabel\"\n [attr.aria-labelledby]=\"footCell.ariaLabelledBy\"\n [attr.aria-hidden]=\"footCell.ariaHidden\"\n [attr.aria-disabled]=\"footCell.ariaDisabled\"\n [attr.aria-controls]=\"footCell.ariaControls\"\n [attr.aria-current]=\"footCell.ariaCurrent\"\n [attr.aria-live]=\"footCell.ariaLive\"\n [attr.aria-expanded]=\"footCell.ariaExpanded\"\n [attr.aria-haspopup]=\"footCell.ariaHasPopup\"\n [attr.tabindex]=\"footCell.tabindex\">\n <ng-container *desyCustomInnerContent=\"{ component: footCell, html: footCell.html, text: footCell.text }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n", dependencies: [{ 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: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "pipe", type: i3.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
72
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, selector: "desy-table", inputs: { rows: "rows", head: "head", foot: "foot", caption: "caption", captionClasses: "captionClasses", firstCellIsHeader: "firstCellIsHeader", classes: "classes", id: "id", wrapper: "wrapper" }, queries: [{ propertyName: "captionComponent", predicate: TableCaptionComponent }, { propertyName: "headerComponent", predicate: TableHeaderComponent }, { propertyName: "footerComponent", predicate: TableFooterComponent }, { propertyName: "rowComponentList", predicate: TableRowComponent }], usesInheritance: true, ngImport: i0, template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\" class=\"sr-only lg:not-sr-only\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [desyAppAccessibility]=\"headerCell\">\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text, parentComponent: this }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"block lg:table-row -mb-px lg:mb-0 text-left border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\n [class]=\"['block lg:table-cell before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.data-label]=\"cell.header\"\n [desyAppAccessibility]=\"cell\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td [class]=\"['block lg:table-cell text-left before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm px-base py-sm', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.data-label]=\"cell.header\"\n [desyAppAccessibility]=\"cell\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n <tfoot *ngIf=\"foot || footerComponent\">\n <tr class=\"border-t-2 border-b border-neutral-base\">\n <ng-container *ngFor=\"let footCell of getFooterCells()\">\n <td scope=\"col\"\n [class]=\"['block lg:table-cell text-left before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm px-base py-sm', footCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(footCell.colspan ? footCell.colspan : null)\"\n [attr.rowspan]=\"(footCell.rowspan ? footCell.rowspan : null)\"\n [attr.id]=\"footCell.id ? footCell.id : null\"\n [attr.data-label]=\"footCell.header\"\n [desyAppAccessibility]=\"footCell\">\n <ng-container *desyCustomInnerContent=\"{ component: footCell, html: footCell.html, text: footCell.text }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n", dependencies: [{ 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: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i3.AccessibilityDirective, selector: "[desyAppAccessibility]", inputs: ["desyAppAccessibility"] }, { kind: "pipe", type: i4.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
52
73
  }
53
74
  __decorate([
54
75
  DesyContentChild(),
@@ -64,7 +85,7 @@ __decorate([
64
85
  ], TableComponent.prototype, "footerComponent", void 0);
65
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
66
87
  type: Component,
67
- args: [{ selector: 'desy-table', template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-errormessage]=\"ariaErrorMessage\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-hidden]=\"ariaHidden\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-current]=\"ariaCurrent\"\n [attr.aria-live]=\"ariaLive\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-haspopup]=\"ariaHasPopup\"\n [attr.tabindex]=\"tabindex\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [attr.role]=\"headerCell.role\"\n [attr.aria-describedby]=\"headerCell.ariaDescribedBy\"\n [attr.aria-errormessage]=\"headerCell.ariaErrorMessage\"\n [attr.aria-label]=\"headerCell.ariaLabel\"\n [attr.aria-labelledby]=\"headerCell.ariaLabelledBy\"\n [attr.aria-hidden]=\"headerCell.ariaHidden\"\n [attr.aria-disabled]=\"headerCell.ariaDisabled\"\n [attr.aria-controls]=\"headerCell.ariaControls\"\n [attr.aria-current]=\"headerCell.ariaCurrent\"\n [attr.aria-live]=\"headerCell.ariaLive\"\n [attr.aria-expanded]=\"headerCell.ariaExpanded\"\n [attr.aria-haspopup]=\"headerCell.ariaHasPopup\"\n [attr.tabindex]=\"headerCell.tabindex\">\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n <tfoot *ngIf=\"foot || footerComponent\">\n <tr class=\"border-t-2 border-b border-neutral-base\">\n <ng-container *ngFor=\"let footCell of getFooterCells()\">\n <td scope=\"col\"\n [class]=\"['px-base py-sm', footCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(footCell.colspan ? footCell.colspan : null)\"\n [attr.rowspan]=\"(footCell.rowspan ? footCell.rowspan : null)\"\n [attr.id]=\"footCell.id ? footCell.id : null\"\n [attr.role]=\"footCell.role\"\n [attr.aria-describedby]=\"footCell.ariaDescribedBy\"\n [attr.aria-errormessage]=\"footCell.ariaErrorMessage\"\n [attr.aria-label]=\"footCell.ariaLabel\"\n [attr.aria-labelledby]=\"footCell.ariaLabelledBy\"\n [attr.aria-hidden]=\"footCell.ariaHidden\"\n [attr.aria-disabled]=\"footCell.ariaDisabled\"\n [attr.aria-controls]=\"footCell.ariaControls\"\n [attr.aria-current]=\"footCell.ariaCurrent\"\n [attr.aria-live]=\"footCell.ariaLive\"\n [attr.aria-expanded]=\"footCell.ariaExpanded\"\n [attr.aria-haspopup]=\"footCell.ariaHasPopup\"\n [attr.tabindex]=\"footCell.tabindex\">\n <ng-container *desyCustomInnerContent=\"{ component: footCell, html: footCell.html, text: footCell.text }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n" }]
88
+ args: [{ selector: 'desy-table', template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\" class=\"sr-only lg:not-sr-only\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [desyAppAccessibility]=\"headerCell\">\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text, parentComponent: this }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"block lg:table-row -mb-px lg:mb-0 text-left border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\n [class]=\"['block lg:table-cell before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.data-label]=\"cell.header\"\n [desyAppAccessibility]=\"cell\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td [class]=\"['block lg:table-cell text-left before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm px-base py-sm', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.data-label]=\"cell.header\"\n [desyAppAccessibility]=\"cell\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n <tfoot *ngIf=\"foot || footerComponent\">\n <tr class=\"border-t-2 border-b border-neutral-base\">\n <ng-container *ngFor=\"let footCell of getFooterCells()\">\n <td scope=\"col\"\n [class]=\"['block lg:table-cell text-left before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm px-base py-sm', footCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(footCell.colspan ? footCell.colspan : null)\"\n [attr.rowspan]=\"(footCell.rowspan ? footCell.rowspan : null)\"\n [attr.id]=\"footCell.id ? footCell.id : null\"\n [attr.data-label]=\"footCell.header\"\n [desyAppAccessibility]=\"footCell\">\n <ng-container *desyCustomInnerContent=\"{ component: footCell, html: footCell.html, text: footCell.text }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n" }]
68
89
  }], propDecorators: { rows: [{
69
90
  type: Input
70
91
  }], head: [{
@@ -96,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
96
117
  type: ContentChildren,
97
118
  args: [TableRowComponent]
98
119
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS10YWJsZXMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXRhYmxlcy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7OztBQU9yRSxNQUFNLE9BQU8sY0FBZSxTQUFRLHNCQUFzQjtJQXVCeEQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTtZQUN0RCxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDcEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDekI7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDdEQsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xEO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3BCLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0QsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUMzQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNwQixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNyQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBRWpCLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBaUM7UUFDM0MsT0FBTyxHQUFHLFlBQVksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUN0RSxDQUFDOytHQTVEVSxjQUFjO21HQUFkLGNBQWMseVJBYVIscUJBQXFCLGtEQUdyQixvQkFBb0Isa0RBR3BCLG9CQUFvQixtREFFcEIsaUJBQWlCLG9EQ3BDcEMsNnNQQTRIQTs7QURqR0U7SUFBQyxnQkFBZ0IsRUFBRTs4QkFDdUMscUJBQXFCO3dEQUFDO0FBRWhGO0lBQUMsZ0JBQWdCLEVBQUU7OEJBQ3FDLG9CQUFvQjt1REFBQztBQUU3RTtJQUFDLGdCQUFnQixFQUFFOzhCQUNxQyxvQkFBb0I7dURBQUM7NEZBbkJsRSxjQUFjO2tCQUoxQixTQUFTOytCQUNFLFlBQVk7OEJBS2IsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdrQyxnQkFBZ0I7c0JBQXZELGVBQWU7dUJBQUMscUJBQXFCO2dCQUdDLGVBQWU7c0JBQXJELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUdFLGVBQWU7c0JBQXJELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUVELGdCQUFnQjtzQkFBbkQsZUFBZTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7IERlc3lDb250ZW50Q2hpbGQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7IENlbGxEYXRhLCBXcmFwcGVyRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGFibGVDYXB0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWNhcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVSb3dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtcm93LmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50IHtcblxuICBASW5wdXQoKSByb3dzOiBBcnJheTxDZWxsRGF0YVtdPjtcbiAgQElucHV0KCkgaGVhZDogQ2VsbERhdGFbXTtcbiAgQElucHV0KCkgZm9vdDogQ2VsbERhdGFbXTtcbiAgQElucHV0KCkgY2FwdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBjYXB0aW9uQ2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBmaXJzdENlbGxJc0hlYWRlcjogYm9vbGVhbjtcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSB3cmFwcGVyOiBXcmFwcGVyRGF0YTtcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVDYXB0aW9uQ29tcG9uZW50KSBjYXB0aW9uQ29tcG9uZW50OiBUYWJsZUNhcHRpb25Db21wb25lbnQ7XG5cbiAgQERlc3lDb250ZW50Q2hpbGQoKVxuICBAQ29udGVudENoaWxkcmVuKFRhYmxlSGVhZGVyQ29tcG9uZW50KSBoZWFkZXJDb21wb25lbnQ6IFRhYmxlSGVhZGVyQ29tcG9uZW50O1xuICBcbiAgQERlc3lDb250ZW50Q2hpbGQoKVxuICBAQ29udGVudENoaWxkcmVuKFRhYmxlRm9vdGVyQ29tcG9uZW50KSBmb290ZXJDb21wb25lbnQ6IFRhYmxlRm9vdGVyQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVSb3dDb21wb25lbnQpIHJvd0NvbXBvbmVudExpc3Q6IFF1ZXJ5TGlzdDxUYWJsZVJvd0NvbXBvbmVudD47XG5cbiAgZ2V0Q2FwdGlvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2FwdGlvbkNvbXBvbmVudCA/IHRoaXMuY2FwdGlvbkNvbXBvbmVudC5jbGFzc2VzIDogdGhpcy5jYXB0aW9uQ2xhc3NlcztcbiAgfVxuXG4gIGdldEhlYWRlckNlbGxzKCk6IFRhYmxlQ2VsbENvbXBvbmVudFtdfENlbGxEYXRhW10ge1xuICAgIGxldCBoZWFkZXJDZWxscyA9IFtdO1xuICAgIGlmICh0aGlzLmhlYWRlckNvbXBvbmVudCAmJiB0aGlzLmhlYWRlckNvbXBvbmVudC5jZWxscykge1xuICAgICAgaGVhZGVyQ2VsbHMgPSB0aGlzLmhlYWRlckNvbXBvbmVudC5jZWxscy50b0FycmF5KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhlYWQpIHtcbiAgICAgIGhlYWRlckNlbGxzID0gdGhpcy5oZWFkO1xuICAgIH1cbiAgICByZXR1cm4gaGVhZGVyQ2VsbHM7XG4gIH1cblxuICBnZXRGb290ZXJDZWxscygpOiBUYWJsZUNlbGxDb21wb25lbnRbXXxDZWxsRGF0YVtdIHtcbiAgICBsZXQgZm9vdENlbGxzID0gW107XG4gICAgaWYgKHRoaXMuZm9vdGVyQ29tcG9uZW50ICYmIHRoaXMuZm9vdGVyQ29tcG9uZW50LmNlbGxzKSB7XG4gICAgICBmb290Q2VsbHMgPSB0aGlzLmZvb3RlckNvbXBvbmVudC5jZWxscy50b0FycmF5KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvb3QpIHtcbiAgICAgIGZvb3RDZWxscyA9IHRoaXMuZm9vdDtcbiAgICB9XG4gICAgcmV0dXJuIGZvb3RDZWxscztcbiAgfVxuICBcbiAgZ2V0Um93cygpIHtcbiAgICBsZXQgcm93TGlzdCA9IFtdO1xuICAgIGlmICh0aGlzLnJvd0NvbXBvbmVudExpc3QgJiYgdGhpcy5yb3dDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd0xpc3QgPSB0aGlzLnJvd0NvbXBvbmVudExpc3QudG9BcnJheSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yb3dzKSB7XG4gICAgICByb3dMaXN0ID0gdGhpcy5yb3dzO1xuICAgIH1cbiAgICByZXR1cm4gcm93TGlzdDtcbiAgICAvL3RoaXMucm93Q29tcG9uZW50TGlzdCAmJiB0aGlzLnJvd0NvbXBvbmVudExpc3QubGVuZ3RoID4gMCA/IHRoaXMucm93Q29tcG9uZW50TGlzdC50b0FycmF5KCkgOiB0aGlzLnJvd3M7XG4gIH1cblxuICBnZXRSb3dDZWxscyhyb3c6IFRhYmxlUm93Q29tcG9uZW50fENlbGxEYXRhW10pOiBUYWJsZUNlbGxDb21wb25lbnRbXXxDZWxsRGF0YVtdIHtcbiAgICByZXR1cm4gcm93IGluc3RhbmNlb2YgVGFibGVSb3dDb21wb25lbnQgPyByb3cuY2VsbHMudG9BcnJheSgpIDogcm93O1xuICB9XG5cbn1cblxuIiwiPG5nLXRlbXBsYXRlICN0YWJsZUNvbnRlbnQ+XG4gIDx0YWJsZSBbY2xhc3NdPVwiWydjLXRhYmxlJywgY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlXCJcbiAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImFyaWFFcnJvck1lc3NhZ2VcIlxuICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImFyaWFIaWRkZW5cIlxuICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJhcmlhRGlzYWJsZWRcIlxuICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHNcIlxuICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50XCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZVwiXG4gICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFyaWFFeHBhbmRlZFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImFyaWFIYXNQb3B1cFwiXG4gICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiPlxuICAgIDxjYXB0aW9uICpuZ0lmPVwiY2FwdGlvbiB8fCBjYXB0aW9uQ29tcG9uZW50XCIgW2NsYXNzXT1cImdldENhcHRpb25DbGFzcygpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGNhcHRpb25Db21wb25lbnQsIHRleHQ6IGNhcHRpb24gPyBjYXB0aW9uIDogbnVsbCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9jYXB0aW9uPlxuICAgIDx0aGVhZCAqbmdJZj1cImhlYWQgfHwgaGVhZGVyQ29tcG9uZW50XCI+XG4gICAgICA8dHIgY2xhc3M9XCJib3JkZXItdCBib3JkZXItYiBib3JkZXItbmV1dHJhbC1iYXNlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhlYWRlckNlbGwgb2YgZ2V0SGVhZGVyQ2VsbHMoKVwiPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJbJ2FsaWduLXRvcCBweC1iYXNlIHB5LXNtIHRleHQtbGVmdCBmb250LW5vcm1hbCB0ZXh0LXNtIHRleHQtbmV1dHJhbC1kYXJrJywgaGVhZGVyQ2VsbC5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiKGhlYWRlckNlbGwuY29sc3BhbiA/ICBoZWFkZXJDZWxsLmNvbHNwYW4gOiBudWxsKVwiXG4gICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiKGhlYWRlckNlbGwucm93c3BhbiA/IGhlYWRlckNlbGwucm93c3BhbiA6IG51bGwpXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaGVhZGVyQ2VsbC5pZCA/IGhlYWRlckNlbGwuaWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJoZWFkZXJDZWxsLnJvbGVcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImhlYWRlckNlbGwuYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiaGVhZGVyQ2VsbC5hcmlhRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJoZWFkZXJDZWxsLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJoZWFkZXJDZWxsLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiaGVhZGVyQ2VsbC5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJoZWFkZXJDZWxsLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaGVhZGVyQ2VsbC5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaGVhZGVyQ2VsbC5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJoZWFkZXJDZWxsLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJoZWFkZXJDZWxsLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiaGVhZGVyQ2VsbC5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJoZWFkZXJDZWxsLnRhYmluZGV4XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGhlYWRlckNlbGwsIGh0bWw6IGhlYWRlckNlbGwuaHRtbCwgdGV4dDogaGVhZGVyQ2VsbC50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBnZXRSb3dzKCk7IGluZGV4IGFzIHJvd0luZGV4XCIgY2xhc3M9XCJib3JkZXItdCBib3JkZXItYiBib3JkZXItbmV1dHJhbC1iYXNlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2VsbCBvZiBnZXRSb3dDZWxscyhyb3cpOyBmaXJzdCBhcyBpc0ZpcnN0OyBpbmRleCBhcyBjZWxsSW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiZmlyc3RDZWxsSXNIZWFkZXIgJiYgaXNGaXJzdDsgZWxzZSBlbHNlVGRcIiBzY29wZT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiWydhbGlnbi10b3AgcHgtYmFzZSBweS1zbSB0ZXh0LWxlZnQgZm9udC1ub3JtYWwgdGV4dC1zbSB0ZXh0LW5ldXRyYWwtZGFyaycsIGNlbGwuY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJjZWxsLmNvbHNwYW4gPyBjZWxsLmNvbHNwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cImNlbGwucm93c3BhbiA/IGNlbGwucm93c3BhbiAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImNlbGwuaWQgPyBjZWxsLmlkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cImNlbGwucm9sZSA/IGNlbGwucm9sZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjZWxsLmFyaWFMYWJlbCA/IGNlbGwuYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImNlbGwuYXJpYURlc2NyaWJlZEJ5ID8gY2VsbC5hcmlhRGVzY3JpYmVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJjZWxsLmFyaWFMYWJlbGxlZEJ5ID8gY2VsbC5hcmlhTGFiZWxsZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiY2VsbC5hcmlhSGlkZGVuID8gY2VsbC5hcmlhSGlkZGVuIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImNlbGwuYXJpYURpc2FibGVkID8gY2VsbC5hcmlhRGlzYWJsZWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiY2VsbC5hcmlhQ29udHJvbHMgPyBjZWxsLmFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImNlbGwuYXJpYUN1cnJlbnQgPyBjZWxsLmFyaWFDdXJyZW50IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiY2VsbC5hcmlhTGl2ZSA/IGNlbGwuYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiY2VsbC5hcmlhRXhwYW5kZWQgPyBjZWxsLmFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiY2VsbC5hcmlhRXJyb3JNZXNzYWdlID8gY2VsbC5hcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImNlbGwuYXJpYUhhc1BvcHVwID8gY2VsbC5hcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImNlbGwudGFiaW5kZXggPyBjZWxsLnRhYmluZGV4IDogbnVsbFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGNvbXBvbmVudDogY2VsbCwgaHRtbDogY2VsbC5odG1sLCB0ZXh0OiBjZWxsLnRleHQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZD5cbiAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3NdPVwiWydweC1iYXNlIHB5LXNtJywgY2VsbC5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJjZWxsLmNvbHNwYW4gPyBjZWxsLmNvbHNwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJjZWxsLnJvd3NwYW4gPyBjZWxsLnJvd3NwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiY2VsbC5pZCA/IGNlbGwuaWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cImNlbGwucm9sZSA/IGNlbGwucm9sZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY2VsbC5hcmlhTGFiZWwgPyBjZWxsLmFyaWFMYWJlbCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiY2VsbC5hcmlhRGVzY3JpYmVkQnkgPyBjZWxsLmFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJjZWxsLmFyaWFMYWJlbGxlZEJ5ID8gY2VsbC5hcmlhTGFiZWxsZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImNlbGwuYXJpYUhpZGRlbiA/IGNlbGwuYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiY2VsbC5hcmlhRGlzYWJsZWQgPyBjZWxsLmFyaWFEaXNhYmxlZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiY2VsbC5hcmlhQ29udHJvbHMgPyBjZWxsLmFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJjZWxsLmFyaWFDdXJyZW50ID8gY2VsbC5hcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJjZWxsLmFyaWFMaXZlID8gY2VsbC5hcmlhTGl2ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiY2VsbC5hcmlhRXhwYW5kZWQgPyBjZWxsLmFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImNlbGwuYXJpYUVycm9yTWVzc2FnZSA/IGNlbGwuYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiY2VsbC5hcmlhSGFzUG9wdXAgPyBjZWxsLmFyaWFIYXNQb3B1cCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImNlbGwudGFiaW5kZXggPyBjZWxsLnRhYmluZGV4IDogbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGNlbGwsIGh0bWw6IGNlbGwuaHRtbCwgdGV4dDogY2VsbC50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RyPlxuICAgIDwvdGJvZHk+XG4gICAgPHRmb290ICpuZ0lmPVwiZm9vdCB8fCBmb290ZXJDb21wb25lbnRcIj5cbiAgICAgIDx0ciBjbGFzcz1cImJvcmRlci10LTIgYm9yZGVyLWIgYm9yZGVyLW5ldXRyYWwtYmFzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb290Q2VsbCBvZiBnZXRGb290ZXJDZWxscygpXCI+XG4gICAgICAgICAgPHRkIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cIlsncHgtYmFzZSBweS1zbScsIGZvb3RDZWxsLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCIoZm9vdENlbGwuY29sc3BhbiA/ICBmb290Q2VsbC5jb2xzcGFuIDogbnVsbClcIlxuICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cIihmb290Q2VsbC5yb3dzcGFuID8gZm9vdENlbGwucm93c3BhbiA6IG51bGwpXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiZm9vdENlbGwuaWQgPyBmb290Q2VsbC5pZCA6IG51bGxcIlxuICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cImZvb3RDZWxsLnJvbGVcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImZvb3RDZWxsLmFyaWFEZXNjcmliZWRCeVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImZvb3RDZWxsLmFyaWFFcnJvck1lc3NhZ2VcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZvb3RDZWxsLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJmb290Q2VsbC5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImZvb3RDZWxsLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImZvb3RDZWxsLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiZm9vdENlbGwuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImZvb3RDZWxsLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1saXZlXT1cImZvb3RDZWxsLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJmb290Q2VsbC5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImZvb3RDZWxsLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImZvb3RDZWxsLnRhYmluZGV4XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGZvb3RDZWxsLCBodG1sOiBmb290Q2VsbC5odG1sLCB0ZXh0OiBmb290Q2VsbC50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgPC90Zm9vdD5cbiAgPC90YWJsZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgKm5nSWY9XCJ3cmFwcGVyOyBlbHNlIHRhYmxlQ29udGVudFwiIFtjbGFzc109XCJ3cmFwcGVyLmNsYXNzZXNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS10YWJsZXMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXRhYmxlcy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7QUFPckUsTUFBTSxPQUFPLGNBQWUsU0FBUSxzQkFBc0I7SUFKMUQ7O1FBMkJFLG1CQUFjLEdBQWEsRUFBRSxDQUFDO0tBMEQvQjtJQXhEQyxzQkFBc0IsQ0FBQyxhQUFxQjtRQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTtZQUN0RCxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDcEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDekI7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDdEQsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xEO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3BCLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdELE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDM0M7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDcEIsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDckI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUVqQixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQW1DO1FBQzdDLE1BQU0sS0FBSyxHQUFHLEdBQUcsWUFBWSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzNFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTywyQkFBMkIsQ0FBQyxLQUF3QztRQUMxRSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUM5QztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO1lBQ2xDLFNBQVMsSUFBSSxPQUFPLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQWhGVSxjQUFjO21HQUFkLGNBQWMseVJBYVIscUJBQXFCLGtEQUdyQixvQkFBb0Isa0RBR3BCLG9CQUFvQixtREFFcEIsaUJBQWlCLG9EQ3BDcEMsNHVJQW1FQTs7QUR4Q0U7SUFBQyxnQkFBZ0IsRUFBRTs4QkFDdUMscUJBQXFCO3dEQUFDO0FBRWhGO0lBQUMsZ0JBQWdCLEVBQUU7OEJBQ3FDLG9CQUFvQjt1REFBQztBQUU3RTtJQUFDLGdCQUFnQixFQUFFOzhCQUNxQyxvQkFBb0I7dURBQUM7NEZBbkJsRSxjQUFjO2tCQUoxQixTQUFTOytCQUNFLFlBQVk7OEJBS2IsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdrQyxnQkFBZ0I7c0JBQXZELGVBQWU7dUJBQUMscUJBQXFCO2dCQUdDLGVBQWU7c0JBQXJELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUdFLGVBQWU7c0JBQXJELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUVELGdCQUFnQjtzQkFBbkQsZUFBZTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7IERlc3lDb250ZW50Q2hpbGQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7IENlbGxEYXRhLCBXcmFwcGVyRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGFibGVDYXB0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWNhcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVSb3dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtcm93LmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50IHtcblxuICBASW5wdXQoKSByb3dzOiBBcnJheTxDZWxsRGF0YVtdPjtcbiAgQElucHV0KCkgaGVhZDogQ2VsbERhdGFbXTtcbiAgQElucHV0KCkgZm9vdDogQ2VsbERhdGFbXTtcbiAgQElucHV0KCkgY2FwdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBjYXB0aW9uQ2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBmaXJzdENlbGxJc0hlYWRlcjogYm9vbGVhbjtcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSB3cmFwcGVyOiBXcmFwcGVyRGF0YTtcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVDYXB0aW9uQ29tcG9uZW50KSBjYXB0aW9uQ29tcG9uZW50OiBUYWJsZUNhcHRpb25Db21wb25lbnQ7XG5cbiAgQERlc3lDb250ZW50Q2hpbGQoKVxuICBAQ29udGVudENoaWxkcmVuKFRhYmxlSGVhZGVyQ29tcG9uZW50KSBoZWFkZXJDb21wb25lbnQ6IFRhYmxlSGVhZGVyQ29tcG9uZW50O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZUZvb3RlckNvbXBvbmVudCkgZm9vdGVyQ29tcG9uZW50OiBUYWJsZUZvb3RlckNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkcmVuKFRhYmxlUm93Q29tcG9uZW50KSByb3dDb21wb25lbnRMaXN0OiBRdWVyeUxpc3Q8VGFibGVSb3dDb21wb25lbnQ+O1xuXG4gIGV4dHJhY3RlZFRleHRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGhhbmRsZUNvbnRlbnRFeHRyYWN0ZWQoZXh0cmFjdGVkVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5leHRyYWN0ZWRUZXh0cy5wdXNoKGV4dHJhY3RlZFRleHQpO1xuICB9XG5cbiAgZ2V0Q2FwdGlvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2FwdGlvbkNvbXBvbmVudCA/IHRoaXMuY2FwdGlvbkNvbXBvbmVudC5jbGFzc2VzIDogdGhpcy5jYXB0aW9uQ2xhc3NlcztcbiAgfVxuXG4gIGdldEhlYWRlckNlbGxzKCk6IFRhYmxlQ2VsbENvbXBvbmVudFtdIHwgQ2VsbERhdGFbXSB7XG4gICAgbGV0IGhlYWRlckNlbGxzID0gW107XG4gICAgaWYgKHRoaXMuaGVhZGVyQ29tcG9uZW50ICYmIHRoaXMuaGVhZGVyQ29tcG9uZW50LmNlbGxzKSB7XG4gICAgICBoZWFkZXJDZWxscyA9IHRoaXMuaGVhZGVyQ29tcG9uZW50LmNlbGxzLnRvQXJyYXkoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGVhZCkge1xuICAgICAgaGVhZGVyQ2VsbHMgPSB0aGlzLmhlYWQ7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJDZWxscztcbiAgfVxuXG4gIGdldEZvb3RlckNlbGxzKCk6IFRhYmxlQ2VsbENvbXBvbmVudFtdIHwgQ2VsbERhdGFbXSB7XG4gICAgbGV0IGZvb3RDZWxscyA9IFtdO1xuICAgIGlmICh0aGlzLmZvb3RlckNvbXBvbmVudCAmJiB0aGlzLmZvb3RlckNvbXBvbmVudC5jZWxscykge1xuICAgICAgZm9vdENlbGxzID0gdGhpcy5mb290ZXJDb21wb25lbnQuY2VsbHMudG9BcnJheSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5mb290KSB7XG4gICAgICBmb290Q2VsbHMgPSB0aGlzLmZvb3Q7XG4gICAgfVxuICAgIHRoaXMuYXNzaWduRXh0cmFjdGVkVGV4dHNUb0NlbGxzKGZvb3RDZWxscyk7XG4gICAgcmV0dXJuIGZvb3RDZWxscztcbiAgfVxuXG4gIGdldFJvd3MoKSB7XG4gICAgbGV0IHJvd0xpc3QgPSBbXTtcbiAgICBpZiAodGhpcy5yb3dDb21wb25lbnRMaXN0ICYmIHRoaXMucm93Q29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICByb3dMaXN0ID0gdGhpcy5yb3dDb21wb25lbnRMaXN0LnRvQXJyYXkoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucm93cykge1xuICAgICAgcm93TGlzdCA9IHRoaXMucm93cztcbiAgICB9XG4gICAgcmV0dXJuIHJvd0xpc3Q7XG4gICAgLy90aGlzLnJvd0NvbXBvbmVudExpc3QgJiYgdGhpcy5yb3dDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLnJvd0NvbXBvbmVudExpc3QudG9BcnJheSgpIDogdGhpcy5yb3dzO1xuICB9XG5cbiAgZ2V0Um93Q2VsbHMocm93OiBUYWJsZVJvd0NvbXBvbmVudCB8IENlbGxEYXRhW10pOiBUYWJsZUNlbGxDb21wb25lbnRbXSB8IENlbGxEYXRhW10ge1xuICAgIGNvbnN0IGNlbGxzID0gcm93IGluc3RhbmNlb2YgVGFibGVSb3dDb21wb25lbnQgPyByb3cuY2VsbHMudG9BcnJheSgpIDogcm93O1xuICAgIHRoaXMuYXNzaWduRXh0cmFjdGVkVGV4dHNUb0NlbGxzKGNlbGxzKTtcbiAgICByZXR1cm4gY2VsbHM7XG4gIH1cblxuICBwcml2YXRlIGFzc2lnbkV4dHJhY3RlZFRleHRzVG9DZWxscyhjZWxsczogVGFibGVDZWxsQ29tcG9uZW50W10gfCBDZWxsRGF0YVtdKTogdm9pZCB7XG4gICAgbGV0IHRleHRJbmRleCA9IDA7XG4gICAgY2VsbHMuZm9yRWFjaChjZWxsID0+IHtcbiAgICAgIGlmICh0aGlzLmV4dHJhY3RlZFRleHRzW3RleHRJbmRleF0pIHtcbiAgICAgICAgY2VsbC5oZWFkZXIgPSB0aGlzLmV4dHJhY3RlZFRleHRzW3RleHRJbmRleF07XG4gICAgICB9XG4gICAgICBjb25zdCBjb2xzcGFuID0gY2VsbC5jb2xzcGFuIHx8IDE7XG4gICAgICB0ZXh0SW5kZXggKz0gY29sc3BhbjtcbiAgICB9KTtcbiAgfVxufVxuXG4iLCI8bmctdGVtcGxhdGUgI3RhYmxlQ29udGVudD5cbiAgPHRhYmxlIFtjbGFzc109XCJbJ2MtdGFibGUnLCBjbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICBbYXR0ci5pZF09XCJpZCA/IGlkIDogbnVsbFwiXG4gICAgICAgICBbZGVzeUFwcEFjY2Vzc2liaWxpdHldPVwidGhpc1wiPlxuICAgIDxjYXB0aW9uICpuZ0lmPVwiY2FwdGlvbiB8fCBjYXB0aW9uQ29tcG9uZW50XCIgW2NsYXNzXT1cImdldENhcHRpb25DbGFzcygpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGNhcHRpb25Db21wb25lbnQsIHRleHQ6IGNhcHRpb24gPyBjYXB0aW9uIDogbnVsbCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9jYXB0aW9uPlxuICAgIDx0aGVhZCAqbmdJZj1cImhlYWQgfHwgaGVhZGVyQ29tcG9uZW50XCIgY2xhc3M9XCJzci1vbmx5IGxnOm5vdC1zci1vbmx5XCI+XG4gICAgICA8dHIgY2xhc3M9XCJib3JkZXItdCBib3JkZXItYiBib3JkZXItbmV1dHJhbC1iYXNlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhlYWRlckNlbGwgb2YgZ2V0SGVhZGVyQ2VsbHMoKVwiPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJbJ2FsaWduLXRvcCBweC1iYXNlIHB5LXNtIHRleHQtbGVmdCBmb250LW5vcm1hbCB0ZXh0LXNtIHRleHQtbmV1dHJhbC1kYXJrJywgaGVhZGVyQ2VsbC5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiKGhlYWRlckNlbGwuY29sc3BhbiA/ICBoZWFkZXJDZWxsLmNvbHNwYW4gOiBudWxsKVwiXG4gICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiKGhlYWRlckNlbGwucm93c3BhbiA/IGhlYWRlckNlbGwucm93c3BhbiA6IG51bGwpXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaGVhZGVyQ2VsbC5pZCA/IGhlYWRlckNlbGwuaWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cImhlYWRlckNlbGxcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBoZWFkZXJDZWxsLCBodG1sOiBoZWFkZXJDZWxsLmh0bWwsIHRleHQ6IGhlYWRlckNlbGwudGV4dCwgcGFyZW50Q29tcG9uZW50OiB0aGlzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBnZXRSb3dzKCk7IGluZGV4IGFzIHJvd0luZGV4XCIgY2xhc3M9XCJibG9jayBsZzp0YWJsZS1yb3cgLW1iLXB4IGxnOm1iLTAgdGV4dC1sZWZ0IGJvcmRlci10IGJvcmRlci1iIGJvcmRlci1uZXV0cmFsLWJhc2VcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjZWxsIG9mIGdldFJvd0NlbGxzKHJvdyk7IGZpcnN0IGFzIGlzRmlyc3Q7IGluZGV4IGFzIGNlbGxJbmRleFwiPlxuICAgICAgICAgICAgICA8dGggKm5nSWY9XCJmaXJzdENlbGxJc0hlYWRlciAmJiBpc0ZpcnN0OyBlbHNlIGVsc2VUZFwiIHNjb3BlPVwicm93XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJbJ2Jsb2NrIGxnOnRhYmxlLWNlbGwgYmVmb3JlOmJsb2NrIGJlZm9yZTp0ZXh0LW5ldXRyYWwtZGFyayBiZWZvcmU6bGc6aGlkZGVuIGJlZm9yZTpjb250ZW50LVthdHRyKGRhdGEtbGFiZWwpXSBiZWZvcmU6dGV4dC1zbSBhbGlnbi10b3AgcHgtYmFzZSBweS1zbSB0ZXh0LWxlZnQgZm9udC1ub3JtYWwgdGV4dC1zbSB0ZXh0LW5ldXRyYWwtZGFyaycsIGNlbGwuY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJjZWxsLmNvbHNwYW4gPyBjZWxsLmNvbHNwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cImNlbGwucm93c3BhbiA/IGNlbGwucm93c3BhbiAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImNlbGwuaWQgPyBjZWxsLmlkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxhYmVsXT1cImNlbGwuaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgIFtkZXN5QXBwQWNjZXNzaWJpbGl0eV09XCJjZWxsXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBjZWxsLCBodG1sOiBjZWxsLmh0bWwsIHRleHQ6IGNlbGwudGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRkPlxuICAgICAgICAgICAgICAgICAgPHRkIFtjbGFzc109XCJbJ2Jsb2NrIGxnOnRhYmxlLWNlbGwgdGV4dC1sZWZ0IGJlZm9yZTpibG9jayBiZWZvcmU6dGV4dC1uZXV0cmFsLWRhcmsgYmVmb3JlOmxnOmhpZGRlbiBiZWZvcmU6Y29udGVudC1bYXR0cihkYXRhLWxhYmVsKV0gYmVmb3JlOnRleHQtc20gcHgtYmFzZSBweS1zbScsIGNlbGwuY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY2VsbC5jb2xzcGFuID8gY2VsbC5jb2xzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiY2VsbC5yb3dzcGFuID8gY2VsbC5yb3dzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImNlbGwuaWQgPyBjZWxsLmlkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJjZWxsLmhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cImNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBjZWxsLCBodG1sOiBjZWxsLmh0bWwsIHRleHQ6IGNlbGwudGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICAgIDx0Zm9vdCAqbmdJZj1cImZvb3QgfHwgZm9vdGVyQ29tcG9uZW50XCI+XG4gICAgICA8dHIgY2xhc3M9XCJib3JkZXItdC0yIGJvcmRlci1iIGJvcmRlci1uZXV0cmFsLWJhc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9vdENlbGwgb2YgZ2V0Rm9vdGVyQ2VsbHMoKVwiPlxuICAgICAgICAgIDx0ZCBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJbJ2Jsb2NrIGxnOnRhYmxlLWNlbGwgdGV4dC1sZWZ0IGJlZm9yZTpibG9jayBiZWZvcmU6dGV4dC1uZXV0cmFsLWRhcmsgYmVmb3JlOmxnOmhpZGRlbiBiZWZvcmU6Y29udGVudC1bYXR0cihkYXRhLWxhYmVsKV0gYmVmb3JlOnRleHQtc20gcHgtYmFzZSBweS1zbScsIGZvb3RDZWxsLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCIoZm9vdENlbGwuY29sc3BhbiA/ICBmb290Q2VsbC5jb2xzcGFuIDogbnVsbClcIlxuICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cIihmb290Q2VsbC5yb3dzcGFuID8gZm9vdENlbGwucm93c3BhbiA6IG51bGwpXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiZm9vdENlbGwuaWQgPyBmb290Q2VsbC5pZCA6IG51bGxcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxhYmVsXT1cImZvb3RDZWxsLmhlYWRlclwiXG4gICAgICAgICAgICAgIFtkZXN5QXBwQWNjZXNzaWJpbGl0eV09XCJmb290Q2VsbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBmb290Q2VsbCwgaHRtbDogZm9vdENlbGwuaHRtbCwgdGV4dDogZm9vdENlbGwudGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RyPlxuICAgIDwvdGZvb3Q+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2ICpuZ0lmPVwid3JhcHBlcjsgZWxzZSB0YWJsZUNvbnRlbnRcIiBbY2xhc3NdPVwid3JhcHBlci5jbGFzc2VzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19