aril 1.2.18 → 1.2.20

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 (398) hide show
  1. package/boot/config/apps/src/interfaces.d.ts +7 -1
  2. package/boot/config/apps/src/route-permissions.d.ts +2 -2
  3. package/esm2022/boot/config/api/src/interfaces.mjs +3 -2
  4. package/esm2022/boot/config/apps/src/apps.service.mjs +5 -5
  5. package/esm2022/boot/config/apps/src/auth.guard.mjs +4 -4
  6. package/esm2022/boot/config/apps/src/interfaces.mjs +2 -1
  7. package/esm2022/boot/config/apps/src/route-permissions.mjs +24 -6
  8. package/esm2022/boot/config/apps/src/showdowDOMWrapper.mjs +4 -4
  9. package/esm2022/boot/config/plugins/src/plugins.service.mjs +7 -5
  10. package/esm2022/boot/host/src/app.component.mjs +4 -4
  11. package/esm2022/boot/host/src/bootstrap.mjs +5 -3
  12. package/esm2022/boot/mfe/src/app.component.mjs +4 -4
  13. package/esm2022/boot/mfe/src/bootstrap.mjs +5 -3
  14. package/esm2022/boot/pages/src/forbidden.component.mjs +4 -4
  15. package/esm2022/boot/pages/src/notFound.component.mjs +4 -4
  16. package/esm2022/http/src/httpBackend.mjs +4 -4
  17. package/esm2022/i18n/src/i18n.module.mjs +5 -5
  18. package/esm2022/i18n/src/loader.mjs +4 -4
  19. package/esm2022/keycloak/src/auth.interceptor.mjs +5 -2
  20. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +4 -4
  21. package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +4 -4
  22. package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +4 -4
  23. package/esm2022/theme/layout/app/favorite-pages/favorite-pages.service.mjs +4 -4
  24. package/esm2022/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.mjs +4 -4
  25. package/esm2022/theme/layout/app/general-search/general-search.component.mjs +4 -4
  26. package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +4 -4
  27. package/esm2022/theme/layout/app/history/history.service.mjs +4 -4
  28. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +4 -4
  29. package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +4 -4
  30. package/esm2022/theme/layout/app/notifications/notifications-sidebar.component.mjs +4 -4
  31. package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +4 -4
  32. package/esm2022/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.mjs +4 -4
  33. package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +4 -4
  34. package/esm2022/theme/layout/app/profileSidebar/profile.service.mjs +4 -4
  35. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +4 -4
  36. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +4 -4
  37. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +18 -6
  38. package/esm2022/theme/layout/service/app.layout.service.mjs +4 -4
  39. package/esm2022/theme/layout/service/app.menu.service.mjs +4 -4
  40. package/esm2022/theme/layout/service/breadcrumb.service.mjs +4 -4
  41. package/esm2022/theme/layout/service/notifications.service.mjs +4 -4
  42. package/esm2022/theme/layout/service/search.service.mjs +4 -4
  43. package/esm2022/theme/layout/service/selection-group.service.mjs +4 -4
  44. package/esm2022/ui/autoComplete/src/auto-complete.component.mjs +4 -4
  45. package/esm2022/ui/badge/src/badge.component.mjs +4 -4
  46. package/esm2022/ui/button/src/button.component.mjs +8 -5
  47. package/esm2022/ui/button/src/split-button.component.mjs +4 -4
  48. package/esm2022/ui/calendar/src/calendar.component.mjs +4 -4
  49. package/esm2022/ui/charts/src/amCharts/column/column-chart.component.mjs +4 -4
  50. package/esm2022/ui/charts/src/amCharts/line/line-chart.component.mjs +4 -4
  51. package/esm2022/ui/charts/src/amCharts/pie/pie-chart.component.mjs +4 -4
  52. package/esm2022/ui/charts/src/highCharts/area/area-chart.component.mjs +4 -4
  53. package/esm2022/ui/charts/src/highCharts/bar/bar-chart.component.mjs +4 -4
  54. package/esm2022/ui/charts/src/highCharts/column/column-chart.component.mjs +4 -4
  55. package/esm2022/ui/charts/src/highCharts/gauge/solid-gauge.component.mjs +4 -4
  56. package/esm2022/ui/charts/src/highCharts/heatmap/heatMap-chart.component.mjs +4 -4
  57. package/esm2022/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.mjs +4 -4
  58. package/esm2022/ui/charts/src/highCharts/line/line-chart-series.component.mjs +4 -4
  59. package/esm2022/ui/charts/src/highCharts/line/line-chart.component.mjs +4 -4
  60. package/esm2022/ui/charts/src/highCharts/pie/pie-chart.component.mjs +4 -4
  61. package/esm2022/ui/checkbox/src/check-box.component.mjs +4 -4
  62. package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +4 -4
  63. package/esm2022/ui/chip/src/chip.component.mjs +4 -4
  64. package/esm2022/ui/collapse-reorder-list/src/collapse-reorder-list.component.mjs +4 -4
  65. package/esm2022/ui/dxEditor/src/dx-editor.component.mjs +4 -4
  66. package/esm2022/ui/dxField/src/dx-field.component.mjs +4 -4
  67. package/esm2022/ui/editor/src/aril-editor.component.mjs +4 -4
  68. package/esm2022/ui/field/src/field.component.mjs +4 -4
  69. package/esm2022/ui/fileUpload/src/file-upload.component.mjs +4 -4
  70. package/esm2022/ui/form/index.mjs +5 -5
  71. package/esm2022/ui/form/src/form-submit-button.component.mjs +4 -4
  72. package/esm2022/ui/form/src/form.component.mjs +4 -4
  73. package/esm2022/ui/img-viewer/src/img-viewer.component.mjs +4 -4
  74. package/esm2022/ui/json-diff-comparison/src/json-diff.component.mjs +4 -4
  75. package/esm2022/ui/lib/src/form/form-error-message.component.mjs +4 -4
  76. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +4 -4
  77. package/esm2022/ui/lib/src/grid/enum-color-picker.pipe.mjs +4 -4
  78. package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +4 -4
  79. package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +4 -4
  80. package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +4 -4
  81. package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +4 -4
  82. package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +4 -4
  83. package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +4 -4
  84. package/esm2022/ui/loader/src/loader.component.mjs +4 -4
  85. package/esm2022/ui/mask/src/mask.component.mjs +4 -4
  86. package/esm2022/ui/multiSelect/src/multi-select.component.mjs +4 -4
  87. package/esm2022/ui/number/src/number.component.mjs +4 -4
  88. package/esm2022/ui/operation-types-dialog/src/operation-types-dialog.component.mjs +4 -4
  89. package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +4 -4
  90. package/esm2022/ui/panel/src/panel.component.mjs +4 -4
  91. package/esm2022/ui/password/src/password.component.mjs +4 -4
  92. package/esm2022/ui/pdf-viewer/src/pdf-viewer.component.mjs +4 -4
  93. package/esm2022/ui/progressbar/src/progressbar.component.mjs +4 -4
  94. package/esm2022/ui/radioButton/src/radio-button.component.mjs +4 -4
  95. package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +4 -4
  96. package/esm2022/ui/selectBox/src/select-box.component.mjs +4 -4
  97. package/esm2022/ui/switch/src/switch.component.mjs +4 -4
  98. package/esm2022/ui/table/index.mjs +5 -5
  99. package/esm2022/ui/table/src/export-overlay-panel.component.mjs +4 -4
  100. package/esm2022/ui/table/src/table-column.component.mjs +4 -4
  101. package/esm2022/ui/table/src/table.component.mjs +4 -4
  102. package/esm2022/ui/table-expand/index.mjs +5 -5
  103. package/esm2022/ui/table-expand/src/table-column.component.mjs +4 -4
  104. package/esm2022/ui/table-expand/src/table-expand-area.component.mjs +4 -4
  105. package/esm2022/ui/table-expand/src/table.component.mjs +4 -4
  106. package/esm2022/ui/tag/src/tag.component.mjs +4 -4
  107. package/esm2022/ui/tagBox/src/tag-box.component.mjs +4 -4
  108. package/esm2022/ui/text/src/text.component.mjs +4 -4
  109. package/esm2022/ui/textArea/src/text-area.component.mjs +4 -4
  110. package/esm2022/ui/toggle-button/src/toggle-button.component.mjs +4 -4
  111. package/esm2022/ui/tooltip/src/tooltip-component.mjs +4 -4
  112. package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +4 -4
  113. package/esm2022/ui/translate-input/src/aril-translate-input.component.mjs +4 -4
  114. package/esm2022/ui/tree/src/tree.component.mjs +4 -4
  115. package/esm2022/ui/treeSelect/src/treeSelect.component.mjs +4 -4
  116. package/esm2022/ui/treeTable/src/tree-table.component.mjs +4 -4
  117. package/esm2022/ui/value/src/value.component.mjs +4 -4
  118. package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +4 -4
  119. package/esm2022/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.mjs +4 -4
  120. package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +4 -4
  121. package/esm2022/ui-business/image-viewer/src/aril-image-viewer.component.mjs +4 -4
  122. package/esm2022/ui-business/multiple-ref-value/src/multiple-ref-value.component.mjs +4 -4
  123. package/esm2022/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.mjs +4 -4
  124. package/esm2022/ui-business/operation-types-dialog/src/operation-types-dialog.component.mjs +4 -4
  125. package/esm2022/ui-business/pdf-preview-modal/src/pdf-preview-modal.component.mjs +4 -4
  126. package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +4 -4
  127. package/esm2022/ui-business/rolePicker/src/role-picker.component.mjs +4 -4
  128. package/esm2022/ui-business/trace-drawer/src/app-log.service.mjs +4 -4
  129. package/esm2022/ui-business/trace-drawer/src/trace-drawer.component.mjs +4 -4
  130. package/esm2022/ui-business/trace-drawer/src/trace-log.service.mjs +4 -4
  131. package/esm2022/ui-business/trace-id/src/trace-id.component.mjs +4 -4
  132. package/esm2022/ui-business/userPicker/src/user-picker.component.mjs +4 -4
  133. package/esm2022/util/activity/aril-util-activity.mjs +5 -0
  134. package/esm2022/util/activity/index.mjs +4 -0
  135. package/esm2022/util/activity/src/activity.constants.mjs +4 -0
  136. package/esm2022/util/activity/src/activity.service.mjs +198 -0
  137. package/esm2022/util/activity/src/activity.types.mjs +2 -0
  138. package/esm2022/util/block/src/block.mjs +7 -7
  139. package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -4
  140. package/esm2022/util/directives/src/dialog-component/plugin-dialog.component.mjs +4 -4
  141. package/esm2022/util/directives/src/dialog-service/plugin-dialog.service.mjs +4 -4
  142. package/esm2022/util/lib/src/module-router.mjs +4 -4
  143. package/esm2022/util/pipes/src/distance-to-now.pipe.mjs +4 -4
  144. package/esm2022/util/pipes/src/get-column-by-field.pipe.mjs +4 -4
  145. package/esm2022/util/pipes/src/parse.pipe.mjs +4 -4
  146. package/esm2022/util/pipes/src/round-number.pipe.mjs +4 -4
  147. package/esm2022/util/pipes/src/safe.pipe.mjs +4 -4
  148. package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +4 -4
  149. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +4 -4
  150. package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +4 -4
  151. package/esm2022/util/unwrap/src/unwrap-tag.directive.mjs +4 -4
  152. package/fesm2022/{aril-app.component-wxP3y8dg.mjs → aril-app.component-CwZZhJcO.mjs} +5 -4
  153. package/fesm2022/{aril-app.component-wxP3y8dg.mjs.map → aril-app.component-CwZZhJcO.mjs.map} +1 -1
  154. package/fesm2022/aril-boot-base.mjs +1 -1
  155. package/fesm2022/aril-boot-base.mjs.map +1 -1
  156. package/fesm2022/aril-boot-bridge.mjs.map +1 -1
  157. package/fesm2022/aril-boot-config-api.mjs +3 -2
  158. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  159. package/fesm2022/aril-boot-config-apps.mjs +35 -16
  160. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  161. package/fesm2022/aril-boot-config-plugins.mjs +7 -5
  162. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  163. package/fesm2022/aril-boot-config-translate.mjs.map +1 -1
  164. package/fesm2022/aril-boot-host.mjs +8 -6
  165. package/fesm2022/aril-boot-host.mjs.map +1 -1
  166. package/fesm2022/{aril-boot-mfe-app.component-7IjAmjz0.mjs → aril-boot-mfe-app.component-DwYgUUdL.mjs} +6 -5
  167. package/fesm2022/{aril-boot-mfe-app.component-7IjAmjz0.mjs.map → aril-boot-mfe-app.component-DwYgUUdL.mjs.map} +1 -1
  168. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs → aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs} +8 -6
  169. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs.map → aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs.map} +1 -1
  170. package/fesm2022/aril-boot-mfe.mjs +2 -1
  171. package/fesm2022/aril-boot-mfe.mjs.map +1 -1
  172. package/fesm2022/aril-boot-pages.mjs +6 -6
  173. package/fesm2022/aril-boot-pages.mjs.map +1 -1
  174. package/fesm2022/aril-http.mjs +3 -3
  175. package/fesm2022/aril-http.mjs.map +1 -1
  176. package/fesm2022/aril-i18n.mjs +7 -7
  177. package/fesm2022/aril-i18n.mjs.map +1 -1
  178. package/fesm2022/aril-keycloak.mjs +4 -1
  179. package/fesm2022/aril-keycloak.mjs.map +1 -1
  180. package/fesm2022/aril-provider.mjs +1 -1
  181. package/fesm2022/aril-provider.mjs.map +1 -1
  182. package/fesm2022/aril-theme-layout.mjs +85 -74
  183. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  184. package/fesm2022/aril-ui-autoComplete.mjs +6 -6
  185. package/fesm2022/aril-ui-autoComplete.mjs.map +1 -1
  186. package/fesm2022/aril-ui-badge.mjs +4 -4
  187. package/fesm2022/aril-ui-badge.mjs.map +1 -1
  188. package/fesm2022/aril-ui-business-assetPicker.mjs +5 -5
  189. package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
  190. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs +5 -5
  191. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs.map +1 -1
  192. package/fesm2022/aril-ui-business-enumPicker.mjs +5 -5
  193. package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
  194. package/fesm2022/aril-ui-business-image-viewer.mjs +3 -3
  195. package/fesm2022/aril-ui-business-image-viewer.mjs.map +1 -1
  196. package/fesm2022/aril-ui-business-multiple-ref-value.mjs +4 -4
  197. package/fesm2022/aril-ui-business-multiple-ref-value.mjs.map +1 -1
  198. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs +3 -3
  199. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs.map +1 -1
  200. package/fesm2022/aril-ui-business-operation-types-dialog.mjs +3 -3
  201. package/fesm2022/aril-ui-business-operation-types-dialog.mjs.map +1 -1
  202. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs +3 -3
  203. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs.map +1 -1
  204. package/fesm2022/aril-ui-business-ref-value.mjs +4 -4
  205. package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
  206. package/fesm2022/aril-ui-business-rolePicker.mjs +4 -4
  207. package/fesm2022/aril-ui-business-rolePicker.mjs.map +1 -1
  208. package/fesm2022/aril-ui-business-trace-drawer.mjs +10 -10
  209. package/fesm2022/aril-ui-business-trace-drawer.mjs.map +1 -1
  210. package/fesm2022/aril-ui-business-trace-id.mjs +4 -4
  211. package/fesm2022/aril-ui-business-trace-id.mjs.map +1 -1
  212. package/fesm2022/aril-ui-business-userPicker.mjs +3 -3
  213. package/fesm2022/aril-ui-business-userPicker.mjs.map +1 -1
  214. package/fesm2022/aril-ui-button.mjs +10 -7
  215. package/fesm2022/aril-ui-button.mjs.map +1 -1
  216. package/fesm2022/aril-ui-calendar.mjs +3 -3
  217. package/fesm2022/aril-ui-calendar.mjs.map +1 -1
  218. package/fesm2022/aril-ui-charts.mjs +37 -37
  219. package/fesm2022/aril-ui-charts.mjs.map +1 -1
  220. package/fesm2022/aril-ui-checkbox.mjs +6 -6
  221. package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
  222. package/fesm2022/aril-ui-chip.mjs +4 -4
  223. package/fesm2022/aril-ui-chip.mjs.map +1 -1
  224. package/fesm2022/aril-ui-collapse-reorder-list.mjs +4 -4
  225. package/fesm2022/aril-ui-collapse-reorder-list.mjs.map +1 -1
  226. package/fesm2022/aril-ui-dxEditor.mjs +4 -4
  227. package/fesm2022/aril-ui-dxEditor.mjs.map +1 -1
  228. package/fesm2022/aril-ui-dxField.mjs +4 -4
  229. package/fesm2022/aril-ui-dxField.mjs.map +1 -1
  230. package/fesm2022/aril-ui-editor.mjs +4 -4
  231. package/fesm2022/aril-ui-editor.mjs.map +1 -1
  232. package/fesm2022/aril-ui-field.mjs +4 -4
  233. package/fesm2022/aril-ui-field.mjs.map +1 -1
  234. package/fesm2022/aril-ui-fileUpload.mjs +4 -4
  235. package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
  236. package/fesm2022/aril-ui-form.mjs +11 -11
  237. package/fesm2022/aril-ui-form.mjs.map +1 -1
  238. package/fesm2022/aril-ui-img-viewer.mjs +3 -3
  239. package/fesm2022/aril-ui-img-viewer.mjs.map +1 -1
  240. package/fesm2022/aril-ui-json-diff-comparison.mjs +4 -4
  241. package/fesm2022/aril-ui-json-diff-comparison.mjs.map +1 -1
  242. package/fesm2022/aril-ui-lib.mjs +28 -28
  243. package/fesm2022/aril-ui-lib.mjs.map +1 -1
  244. package/fesm2022/aril-ui-loader.mjs +3 -3
  245. package/fesm2022/aril-ui-loader.mjs.map +1 -1
  246. package/fesm2022/aril-ui-mask.mjs +3 -3
  247. package/fesm2022/aril-ui-mask.mjs.map +1 -1
  248. package/fesm2022/aril-ui-multiSelect.mjs +3 -3
  249. package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
  250. package/fesm2022/aril-ui-number.mjs +3 -3
  251. package/fesm2022/aril-ui-number.mjs.map +1 -1
  252. package/fesm2022/aril-ui-operation-types-dialog.mjs +3 -3
  253. package/fesm2022/aril-ui-operation-types-dialog.mjs.map +1 -1
  254. package/fesm2022/aril-ui-overlayPanel.mjs +4 -4
  255. package/fesm2022/aril-ui-overlayPanel.mjs.map +1 -1
  256. package/fesm2022/aril-ui-panel.mjs +4 -4
  257. package/fesm2022/aril-ui-panel.mjs.map +1 -1
  258. package/fesm2022/aril-ui-password.mjs +3 -3
  259. package/fesm2022/aril-ui-password.mjs.map +1 -1
  260. package/fesm2022/aril-ui-pdf-viewer.mjs +3 -3
  261. package/fesm2022/aril-ui-pdf-viewer.mjs.map +1 -1
  262. package/fesm2022/aril-ui-progressbar.mjs +3 -3
  263. package/fesm2022/aril-ui-progressbar.mjs.map +1 -1
  264. package/fesm2022/aril-ui-radioButton.mjs +3 -3
  265. package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
  266. package/fesm2022/aril-ui-relativeDateSelector.mjs +4 -4
  267. package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
  268. package/fesm2022/aril-ui-selectBox.mjs +5 -5
  269. package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
  270. package/fesm2022/aril-ui-switch.mjs +3 -3
  271. package/fesm2022/aril-ui-switch.mjs.map +1 -1
  272. package/fesm2022/aril-ui-table-expand.mjs +14 -14
  273. package/fesm2022/aril-ui-table-expand.mjs.map +1 -1
  274. package/fesm2022/aril-ui-table.mjs +15 -15
  275. package/fesm2022/aril-ui-table.mjs.map +1 -1
  276. package/fesm2022/aril-ui-tag.mjs +3 -3
  277. package/fesm2022/aril-ui-tag.mjs.map +1 -1
  278. package/fesm2022/aril-ui-tagBox.mjs +5 -5
  279. package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
  280. package/fesm2022/aril-ui-text.mjs +3 -3
  281. package/fesm2022/aril-ui-text.mjs.map +1 -1
  282. package/fesm2022/aril-ui-textArea.mjs +3 -3
  283. package/fesm2022/aril-ui-textArea.mjs.map +1 -1
  284. package/fesm2022/aril-ui-toggle-button.mjs +4 -4
  285. package/fesm2022/aril-ui-toggle-button.mjs.map +1 -1
  286. package/fesm2022/aril-ui-tooltip.mjs +3 -3
  287. package/fesm2022/aril-ui-tooltip.mjs.map +1 -1
  288. package/fesm2022/aril-ui-translate-input.mjs +6 -6
  289. package/fesm2022/aril-ui-translate-input.mjs.map +1 -1
  290. package/fesm2022/aril-ui-tree.mjs +4 -4
  291. package/fesm2022/aril-ui-tree.mjs.map +1 -1
  292. package/fesm2022/aril-ui-treeSelect.mjs +4 -4
  293. package/fesm2022/aril-ui-treeSelect.mjs.map +1 -1
  294. package/fesm2022/aril-ui-treeTable.mjs +4 -4
  295. package/fesm2022/aril-ui-treeTable.mjs.map +1 -1
  296. package/fesm2022/aril-ui-value.mjs +5 -5
  297. package/fesm2022/aril-ui-value.mjs.map +1 -1
  298. package/fesm2022/aril-util-activity.mjs +208 -0
  299. package/fesm2022/aril-util-activity.mjs.map +1 -0
  300. package/fesm2022/aril-util-block.mjs +6 -6
  301. package/fesm2022/aril-util-block.mjs.map +1 -1
  302. package/fesm2022/aril-util-directives.mjs +10 -10
  303. package/fesm2022/aril-util-directives.mjs.map +1 -1
  304. package/fesm2022/aril-util-lib.mjs +3 -3
  305. package/fesm2022/aril-util-lib.mjs.map +1 -1
  306. package/fesm2022/aril-util-pipes.mjs +18 -18
  307. package/fesm2022/aril-util-pipes.mjs.map +1 -1
  308. package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -1
  309. package/fesm2022/aril-util-pub-sub.mjs +3 -3
  310. package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
  311. package/fesm2022/aril-util-sync-active-tab-route.mjs +4 -4
  312. package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
  313. package/fesm2022/aril-util-unwrap.mjs +3 -3
  314. package/fesm2022/aril-util-unwrap.mjs.map +1 -1
  315. package/fesm2022/aril.mjs +13 -10
  316. package/fesm2022/aril.mjs.map +1 -1
  317. package/package.json +233 -227
  318. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.d.ts +16 -0
  319. package/theme/layout/app/history/history-sidebar.component.d.ts +16 -0
  320. package/theme/layout/app/notifications/notifications-sidebar.component.d.ts +16 -0
  321. package/theme/layout/app/site-map/site-map-sidebar.component.d.ts +16 -0
  322. package/theme/layout/app/topbar/app.topbar.component.d.ts +5 -0
  323. package/theme/layout/app/topbar/app.topbar.component.html +3 -0
  324. package/theme/layout/app/topbar/app.topbar.component.scss +31 -0
  325. package/theme/layout/app/topbar/app.topbar.component.ts +14 -1
  326. package/ui/autoComplete/src/auto-complete.component.d.ts +8 -8
  327. package/ui/badge/src/badge.component.d.ts +9 -9
  328. package/ui/button/src/button.component.d.ts +14 -12
  329. package/ui/button/src/split-button.component.d.ts +1 -1
  330. package/ui/calendar/src/calendar.component.d.ts +22 -22
  331. package/ui/charts/src/amCharts/column/column-chart.component.d.ts +4 -4
  332. package/ui/charts/src/amCharts/line/line-chart.component.d.ts +5 -5
  333. package/ui/charts/src/amCharts/pie/pie-chart.component.d.ts +4 -4
  334. package/ui/charts/src/highCharts/area/area-chart.component.d.ts +3 -3
  335. package/ui/charts/src/highCharts/bar/bar-chart.component.d.ts +7 -7
  336. package/ui/charts/src/highCharts/column/column-chart.component.d.ts +9 -9
  337. package/ui/charts/src/highCharts/gauge/solid-gauge.component.d.ts +3 -3
  338. package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.d.ts +4 -4
  339. package/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.d.ts +5 -5
  340. package/ui/charts/src/highCharts/line/line-chart-series.component.d.ts +4 -4
  341. package/ui/charts/src/highCharts/line/line-chart.component.d.ts +4 -4
  342. package/ui/charts/src/highCharts/pie/pie-chart.component.d.ts +7 -7
  343. package/ui/checkbox/src/check-box.component.d.ts +3 -3
  344. package/ui/checkbox/src/tri-state-checkbox.component.d.ts +2 -2
  345. package/ui/chip/src/chip.component.d.ts +7 -7
  346. package/ui/collapse-reorder-list/src/collapse-reorder-list.component.d.ts +4 -4
  347. package/ui/dxEditor/src/dx-editor.component.d.ts +5 -5
  348. package/ui/dxField/src/dx-field.component.d.ts +5 -5
  349. package/ui/editor/src/aril-editor.component.d.ts +3 -3
  350. package/ui/field/src/field.component.d.ts +9 -9
  351. package/ui/fileUpload/src/file-upload.component.d.ts +14 -14
  352. package/ui/form/src/form-submit-button.component.d.ts +1 -1
  353. package/ui/form/src/form.component.d.ts +1 -1
  354. package/ui/img-viewer/src/img-viewer.component.d.ts +1 -1
  355. package/ui/lib/src/form/form-error-message.directive.d.ts +1 -1
  356. package/ui/mask/src/mask.component.d.ts +6 -6
  357. package/ui/multiSelect/src/multi-select.component.d.ts +13 -13
  358. package/ui/number/src/number.component.d.ts +15 -15
  359. package/ui/overlayPanel/src/overlay-panel.component.d.ts +1 -1
  360. package/ui/panel/src/panel.component.d.ts +6 -6
  361. package/ui/password/src/password.component.d.ts +4 -4
  362. package/ui/pdf-viewer/src/pdf-viewer.component.d.ts +12 -12
  363. package/ui/progressbar/src/progressbar.component.d.ts +3 -3
  364. package/ui/radioButton/src/radio-button.component.d.ts +3 -3
  365. package/ui/selectBox/src/select-box.component.d.ts +10 -10
  366. package/ui/switch/src/switch.component.d.ts +1 -1
  367. package/ui/table/src/export-overlay-panel.component.d.ts +2 -2
  368. package/ui/table/src/table-column.component.d.ts +11 -11
  369. package/ui/table/src/table.component.d.ts +35 -35
  370. package/ui/table-expand/src/table-column.component.d.ts +6 -6
  371. package/ui/table-expand/src/table.component.d.ts +20 -20
  372. package/ui/tag/src/tag.component.d.ts +4 -6
  373. package/ui/tagBox/src/tag-box.component.d.ts +7 -7
  374. package/ui/text/src/text.component.d.ts +5 -5
  375. package/ui/textArea/src/text-area.component.d.ts +5 -5
  376. package/ui/toggle-button/src/toggle-button.component.d.ts +1 -1
  377. package/ui/tooltip/src/tooltip-component.d.ts +8 -8
  378. package/ui/translate-input/src/aril-translate-input.component.d.ts +2 -2
  379. package/ui/tree/src/tree.component.d.ts +8 -8
  380. package/ui/treeSelect/src/treeSelect.component.d.ts +12 -12
  381. package/ui/treeTable/src/tree-table.component.d.ts +5 -5
  382. package/ui/value/src/value.component.d.ts +15 -15
  383. package/ui-business/assetPicker/src/asset-picker.component.d.ts +11 -11
  384. package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.d.ts +3 -6
  385. package/ui-business/enumPicker/src/enum-picker.component.d.ts +23 -23
  386. package/ui-business/image-viewer/src/aril-image-viewer.component.d.ts +8 -8
  387. package/ui-business/multiple-ref-value/src/multiple-ref-value.component.d.ts +2 -5
  388. package/ui-business/ref-value/src/ref-value.component.d.ts +5 -5
  389. package/ui-business/rolePicker/src/role-picker.component.d.ts +6 -6
  390. package/ui-business/trace-drawer/src/trace-drawer.component.d.ts +8 -8
  391. package/ui-business/trace-id/src/trace-id.component.d.ts +6 -6
  392. package/ui-business/userPicker/src/user-picker.component.d.ts +3 -3
  393. package/util/activity/index.d.ts +3 -0
  394. package/util/activity/src/activity.constants.d.ts +3 -0
  395. package/util/activity/src/activity.service.d.ts +29 -0
  396. package/util/activity/src/activity.types.d.ts +13 -0
  397. package/util/block/src/block.d.ts +4 -4
  398. package/util/lib/src/types.d.ts +16 -0
@@ -7,8 +7,8 @@ import * as i1 from "primeng/button";
7
7
  import * as i2 from "@angular/router";
8
8
  import * as i3 from "@ngneat/transloco";
9
9
  export class ForbiddenComponent {
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ForbiddenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ForbiddenComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ForbiddenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ForbiddenComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
12
12
  <ng-container *transloco="let t">
13
13
  <svg
14
14
  viewBox="0 0 960 540"
@@ -35,7 +35,7 @@ export class ForbiddenComponent {
35
35
  </ng-container>
36
36
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ForbiddenComponent, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ForbiddenComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{
41
41
  standalone: true,
@@ -68,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
68
68
  `
69
69
  }]
70
70
  }] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yYmlkZGVuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9wYWdlcy9zcmMvZm9yYmlkZGVuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQWdDcEQsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCO2tHQUFsQixrQkFBa0Isd0VBM0JwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlCVCwyREExQlMsWUFBWSw2WEFBRSxZQUFZLCtRQUFFLGVBQWU7OzJGQTRCekMsa0JBQWtCO2tCQTlCOUIsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3RELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlCVDtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbQnV0dG9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFRyYW5zbG9jb01vZHVsZV0sXHJcblx0dGVtcGxhdGU6IGBcclxuXHRcdDxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XHJcblx0XHRcdDxzdmdcclxuXHRcdFx0XHR2aWV3Qm94PVwiMCAwIDk2MCA1NDBcIlxyXG5cdFx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG5cdFx0XHRcdHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXHJcblx0XHRcdFx0dmVyc2lvbj1cIjEuMVwiXHJcblx0XHRcdFx0Y2xhc3M9XCJtaW4taC1zY3JlZW4gbWluLXctc2NyZWVuIGZpeGVkIGxlZnQtMFwiXHJcblx0XHRcdFx0c3R5bGU9XCJib3R0b206LTEwcmVtXCJcclxuXHRcdFx0XHRwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxyXG5cdFx0XHRcdDxyZWN0IHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjk2MFwiIGhlaWdodD1cIjU0MFwiIGZpbGw9XCJ2YXIoLS1zdXJmYWNlLWdyb3VuZClcIj48L3JlY3Q+XHJcblx0XHRcdFx0PHBhdGhcclxuXHRcdFx0XHRcdGQ9XCJNMCAzMzFMMjYuNyAzMjFDNTMuMyAzMTEgMTA2LjcgMjkxIDE2MCAyOTFDMjEzLjMgMjkxIDI2Ni43IDMxMSAzMjAgMzI5LjVDMzczLjMgMzQ4IDQyNi43IDM2NSA0ODAgMzczLjJDNTMzLjMgMzgxLjMgNTg2LjcgMzgwLjcgNjQwIDM3My44QzY5My4zIDM2NyA3NDYuNyAzNTQgODAwIDM0MS4yQzg1My4zIDMyOC4zIDkwNi43IDMxNS43IDkzMy4zIDMwOS4zTDk2MCAzMDNMOTYwIDU0MUw5MzMuMyA1NDFDOTA2LjcgNTQxIDg1My4zIDU0MSA4MDAgNTQxQzc0Ni43IDU0MSA2OTMuMyA1NDEgNjQwIDU0MUM1ODYuNyA1NDEgNTMzLjMgNTQxIDQ4MCA1NDFDNDI2LjcgNTQxIDM3My4zIDU0MSAzMjAgNTQxQzI2Ni43IDU0MSAyMTMuMyA1NDEgMTYwIDU0MUMxMDYuNyA1NDEgNTMuMyA1NDEgMjYuNyA1NDFMMCA1NDFaXCJcclxuXHRcdFx0XHRcdGZpbGw9XCJ2YXIoLS1wcmltYXJ5LWNvbG9yKVwiXHJcblx0XHRcdFx0XHRzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuXHRcdFx0XHRcdHN0cm9rZS1saW5lam9pbj1cIm1pdGVyXCI+PC9wYXRoPlxyXG5cdFx0XHQ8L3N2Zz5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInB4LTUgbWluLWgtc2NyZWVuIGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiei0xIHRleHQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC05MDAgZm9udC1ib2xkIHRleHQtOHhsIG1iLTRcIj57eyB0KCdmb3JiaWRkZW4udGl0bGUnKSB9fTwvZGl2PlxyXG5cdFx0XHRcdFx0PHAgY2xhc3M9XCJsaW5lLWhlaWdodC0zIG10LTAgbWItNSB0ZXh0LTcwMCB0ZXh0LXhsIGZvbnQtbWVkaXVtXCI+e3sgdCgnZm9yYmlkZGVuLm1lc3NhZ2UnKSB9fTwvcD5cclxuXHRcdFx0XHRcdDxwLWJ1dHRvbiByb3V0ZXJMaW5rPVwiL1wiIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYXJrIGZvbnQtbWVkaXVtIHAtYnV0dG9uLXJhaXNlZFwiPnt7IHQoJ2ZvcmJpZGRlbi5nb0hvbWUnKSB9fTwvcC1idXR0b24+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9yYmlkZGVuQ29tcG9uZW50IHt9XHJcbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yYmlkZGVuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9wYWdlcy9zcmMvZm9yYmlkZGVuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQWdDcEQsTUFBTSxPQUFPLGtCQUFrQjsrR0FBbEIsa0JBQWtCO21HQUFsQixrQkFBa0Isd0VBM0JwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlCVCwyREExQlMsWUFBWSw2WEFBRSxZQUFZLCtRQUFFLGVBQWU7OzRGQTRCekMsa0JBQWtCO2tCQTlCOUIsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3RELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlCVDtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbQnV0dG9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFRyYW5zbG9jb01vZHVsZV0sXHJcblx0dGVtcGxhdGU6IGBcclxuXHRcdDxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XHJcblx0XHRcdDxzdmdcclxuXHRcdFx0XHR2aWV3Qm94PVwiMCAwIDk2MCA1NDBcIlxyXG5cdFx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG5cdFx0XHRcdHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXHJcblx0XHRcdFx0dmVyc2lvbj1cIjEuMVwiXHJcblx0XHRcdFx0Y2xhc3M9XCJtaW4taC1zY3JlZW4gbWluLXctc2NyZWVuIGZpeGVkIGxlZnQtMFwiXHJcblx0XHRcdFx0c3R5bGU9XCJib3R0b206LTEwcmVtXCJcclxuXHRcdFx0XHRwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxyXG5cdFx0XHRcdDxyZWN0IHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjk2MFwiIGhlaWdodD1cIjU0MFwiIGZpbGw9XCJ2YXIoLS1zdXJmYWNlLWdyb3VuZClcIj48L3JlY3Q+XHJcblx0XHRcdFx0PHBhdGhcclxuXHRcdFx0XHRcdGQ9XCJNMCAzMzFMMjYuNyAzMjFDNTMuMyAzMTEgMTA2LjcgMjkxIDE2MCAyOTFDMjEzLjMgMjkxIDI2Ni43IDMxMSAzMjAgMzI5LjVDMzczLjMgMzQ4IDQyNi43IDM2NSA0ODAgMzczLjJDNTMzLjMgMzgxLjMgNTg2LjcgMzgwLjcgNjQwIDM3My44QzY5My4zIDM2NyA3NDYuNyAzNTQgODAwIDM0MS4yQzg1My4zIDMyOC4zIDkwNi43IDMxNS43IDkzMy4zIDMwOS4zTDk2MCAzMDNMOTYwIDU0MUw5MzMuMyA1NDFDOTA2LjcgNTQxIDg1My4zIDU0MSA4MDAgNTQxQzc0Ni43IDU0MSA2OTMuMyA1NDEgNjQwIDU0MUM1ODYuNyA1NDEgNTMzLjMgNTQxIDQ4MCA1NDFDNDI2LjcgNTQxIDM3My4zIDU0MSAzMjAgNTQxQzI2Ni43IDU0MSAyMTMuMyA1NDEgMTYwIDU0MUMxMDYuNyA1NDEgNTMuMyA1NDEgMjYuNyA1NDFMMCA1NDFaXCJcclxuXHRcdFx0XHRcdGZpbGw9XCJ2YXIoLS1wcmltYXJ5LWNvbG9yKVwiXHJcblx0XHRcdFx0XHRzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuXHRcdFx0XHRcdHN0cm9rZS1saW5lam9pbj1cIm1pdGVyXCI+PC9wYXRoPlxyXG5cdFx0XHQ8L3N2Zz5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInB4LTUgbWluLWgtc2NyZWVuIGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiei0xIHRleHQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC05MDAgZm9udC1ib2xkIHRleHQtOHhsIG1iLTRcIj57eyB0KCdmb3JiaWRkZW4udGl0bGUnKSB9fTwvZGl2PlxyXG5cdFx0XHRcdFx0PHAgY2xhc3M9XCJsaW5lLWhlaWdodC0zIG10LTAgbWItNSB0ZXh0LTcwMCB0ZXh0LXhsIGZvbnQtbWVkaXVtXCI+e3sgdCgnZm9yYmlkZGVuLm1lc3NhZ2UnKSB9fTwvcD5cclxuXHRcdFx0XHRcdDxwLWJ1dHRvbiByb3V0ZXJMaW5rPVwiL1wiIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYXJrIGZvbnQtbWVkaXVtIHAtYnV0dG9uLXJhaXNlZFwiPnt7IHQoJ2ZvcmJpZGRlbi5nb0hvbWUnKSB9fTwvcC1idXR0b24+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9yYmlkZGVuQ29tcG9uZW50IHt9XHJcbiJdfQ==
@@ -5,8 +5,8 @@ import * as i0 from "@angular/core";
5
5
  import * as i1 from "primeng/button";
6
6
  import * as i2 from "@angular/router";
7
7
  export class NotFoundComponent {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: NotFoundComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NotFoundComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
10
10
  <svg
11
11
  viewBox="0 0 960 540"
12
12
  xmlns="http://www.w3.org/2000/svg"
@@ -31,7 +31,7 @@ export class NotFoundComponent {
31
31
  </div>
32
32
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
33
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotFoundComponent, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotFoundComponent, decorators: [{
35
35
  type: Component,
36
36
  args: [{
37
37
  standalone: true,
@@ -62,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
62
62
  `
63
63
  }]
64
64
  }] });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90Rm91bmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L3BhZ2VzL3NyYy9ub3RGb3VuZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBOEI5QyxNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7a0dBQWpCLGlCQUFpQix3RUF6Qm5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXVCVCwyREF4QlMsWUFBWSw2WEFBRSxZQUFZOzsyRkEwQnhCLGlCQUFpQjtrQkE1QjdCLFNBQVM7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7b0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1QlQ7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0J1dHRvbk1vZHVsZSwgUm91dGVyTW9kdWxlXSxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PHN2Z1xyXG5cdFx0XHR2aWV3Qm94PVwiMCAwIDk2MCA1NDBcIlxyXG5cdFx0XHR4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuXHRcdFx0eG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcclxuXHRcdFx0dmVyc2lvbj1cIjEuMVwiXHJcblx0XHRcdGNsYXNzPVwibWluLWgtc2NyZWVuIG1pbi13LXNjcmVlbiBmaXhlZCBsZWZ0LTBcIlxyXG5cdFx0XHRzdHlsZT1cImJvdHRvbTotMTByZW1cIlxyXG5cdFx0XHRwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxyXG5cdFx0XHQ8cmVjdCB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI5NjBcIiBoZWlnaHQ9XCI1NDBcIiBmaWxsPVwidmFyKC0tc3VyZmFjZS1ncm91bmQpXCI+PC9yZWN0PlxyXG5cdFx0XHQ8cGF0aFxyXG5cdFx0XHRcdGQ9XCJNMCAzMzFMMjYuNyAzMjFDNTMuMyAzMTEgMTA2LjcgMjkxIDE2MCAyOTFDMjEzLjMgMjkxIDI2Ni43IDMxMSAzMjAgMzI5LjVDMzczLjMgMzQ4IDQyNi43IDM2NSA0ODAgMzczLjJDNTMzLjMgMzgxLjMgNTg2LjcgMzgwLjcgNjQwIDM3My44QzY5My4zIDM2NyA3NDYuNyAzNTQgODAwIDM0MS4yQzg1My4zIDMyOC4zIDkwNi43IDMxNS43IDkzMy4zIDMwOS4zTDk2MCAzMDNMOTYwIDU0MUw5MzMuMyA1NDFDOTA2LjcgNTQxIDg1My4zIDU0MSA4MDAgNTQxQzc0Ni43IDU0MSA2OTMuMyA1NDEgNjQwIDU0MUM1ODYuNyA1NDEgNTMzLjMgNTQxIDQ4MCA1NDFDNDI2LjcgNTQxIDM3My4zIDU0MSAzMjAgNTQxQzI2Ni43IDU0MSAyMTMuMyA1NDEgMTYwIDU0MUMxMDYuNyA1NDEgNTMuMyA1NDEgMjYuNyA1NDFMMCA1NDFaXCJcclxuXHRcdFx0XHRmaWxsPVwidmFyKC0tcHJpbWFyeS1jb2xvcilcIlxyXG5cdFx0XHRcdHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG5cdFx0XHRcdHN0cm9rZS1saW5lam9pbj1cIm1pdGVyXCI+PC9wYXRoPlxyXG5cdFx0PC9zdmc+XHJcblx0XHQ8ZGl2IGNsYXNzPVwicHgtNSBtaW4taC1zY3JlZW4gZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiei0xIHRleHQtY2VudGVyXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtOTAwIGZvbnQtYm9sZCB0ZXh0LTh4bCBtYi00XCI+T29wcyE8L2Rpdj5cclxuXHRcdFx0XHQ8cCBjbGFzcz1cImxpbmUtaGVpZ2h0LTMgbXQtMCBtYi01IHRleHQtNzAwIHRleHQteGwgZm9udC1tZWRpdW1cIj5TYXlmYSBCdWx1bmFtYWTEsTwvcD5cclxuXHRcdFx0XHQ8cC1idXR0b24gcm91dGVyTGluaz1cIi9cIiBzdHlsZUNsYXNzPVwicC1idXR0b24tZGFyayBmb250LW1lZGl1bSBwLWJ1dHRvbi1yYWlzZWRcIj5BbmFzYXlmYXlhIEdpdDwvcC1idXR0b24+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90Rm91bmRDb21wb25lbnQge31cclxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90Rm91bmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L3BhZ2VzL3NyYy9ub3RGb3VuZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBOEI5QyxNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7bUdBQWpCLGlCQUFpQix3RUF6Qm5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXVCVCwyREF4QlMsWUFBWSw2WEFBRSxZQUFZOzs0RkEwQnhCLGlCQUFpQjtrQkE1QjdCLFNBQVM7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7b0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1QlQ7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0J1dHRvbk1vZHVsZSwgUm91dGVyTW9kdWxlXSxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PHN2Z1xyXG5cdFx0XHR2aWV3Qm94PVwiMCAwIDk2MCA1NDBcIlxyXG5cdFx0XHR4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuXHRcdFx0eG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcclxuXHRcdFx0dmVyc2lvbj1cIjEuMVwiXHJcblx0XHRcdGNsYXNzPVwibWluLWgtc2NyZWVuIG1pbi13LXNjcmVlbiBmaXhlZCBsZWZ0LTBcIlxyXG5cdFx0XHRzdHlsZT1cImJvdHRvbTotMTByZW1cIlxyXG5cdFx0XHRwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxyXG5cdFx0XHQ8cmVjdCB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI5NjBcIiBoZWlnaHQ9XCI1NDBcIiBmaWxsPVwidmFyKC0tc3VyZmFjZS1ncm91bmQpXCI+PC9yZWN0PlxyXG5cdFx0XHQ8cGF0aFxyXG5cdFx0XHRcdGQ9XCJNMCAzMzFMMjYuNyAzMjFDNTMuMyAzMTEgMTA2LjcgMjkxIDE2MCAyOTFDMjEzLjMgMjkxIDI2Ni43IDMxMSAzMjAgMzI5LjVDMzczLjMgMzQ4IDQyNi43IDM2NSA0ODAgMzczLjJDNTMzLjMgMzgxLjMgNTg2LjcgMzgwLjcgNjQwIDM3My44QzY5My4zIDM2NyA3NDYuNyAzNTQgODAwIDM0MS4yQzg1My4zIDMyOC4zIDkwNi43IDMxNS43IDkzMy4zIDMwOS4zTDk2MCAzMDNMOTYwIDU0MUw5MzMuMyA1NDFDOTA2LjcgNTQxIDg1My4zIDU0MSA4MDAgNTQxQzc0Ni43IDU0MSA2OTMuMyA1NDEgNjQwIDU0MUM1ODYuNyA1NDEgNTMzLjMgNTQxIDQ4MCA1NDFDNDI2LjcgNTQxIDM3My4zIDU0MSAzMjAgNTQxQzI2Ni43IDU0MSAyMTMuMyA1NDEgMTYwIDU0MUMxMDYuNyA1NDEgNTMuMyA1NDEgMjYuNyA1NDFMMCA1NDFaXCJcclxuXHRcdFx0XHRmaWxsPVwidmFyKC0tcHJpbWFyeS1jb2xvcilcIlxyXG5cdFx0XHRcdHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG5cdFx0XHRcdHN0cm9rZS1saW5lam9pbj1cIm1pdGVyXCI+PC9wYXRoPlxyXG5cdFx0PC9zdmc+XHJcblx0XHQ8ZGl2IGNsYXNzPVwicHgtNSBtaW4taC1zY3JlZW4gZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiei0xIHRleHQtY2VudGVyXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtOTAwIGZvbnQtYm9sZCB0ZXh0LTh4bCBtYi00XCI+T29wcyE8L2Rpdj5cclxuXHRcdFx0XHQ8cCBjbGFzcz1cImxpbmUtaGVpZ2h0LTMgbXQtMCBtYi01IHRleHQtNzAwIHRleHQteGwgZm9udC1tZWRpdW1cIj5TYXlmYSBCdWx1bmFtYWTEsTwvcD5cclxuXHRcdFx0XHQ8cC1idXR0b24gcm91dGVyTGluaz1cIi9cIiBzdHlsZUNsYXNzPVwicC1idXR0b24tZGFyayBmb250LW1lZGl1bSBwLWJ1dHRvbi1yYWlzZWRcIj5BbmFzYXlmYXlhIEdpdDwvcC1idXR0b24+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90Rm91bmRDb21wb25lbnQge31cclxuIl19
@@ -7,11 +7,11 @@ export class HttpBackendService {
7
7
  constructor(handler) {
8
8
  this.httpClient = new HttpClient(handler);
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HttpBackendService, deps: [{ token: i1.HttpBackend }], target: i0.ɵɵFactoryTarget.Injectable }); }
11
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HttpBackendService, providedIn: 'root' }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HttpBackendService, deps: [{ token: i1.HttpBackend }], target: i0.ɵɵFactoryTarget.Injectable }); }
11
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HttpBackendService, providedIn: 'root' }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HttpBackendService, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HttpBackendService, decorators: [{
14
14
  type: Injectable,
15
15
  args: [{ providedIn: 'root' }]
16
16
  }], ctorParameters: () => [{ type: i1.HttpBackend }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cEJhY2tlbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2h0dHAvc3JjL2h0dHBCYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFM0MsK0JBQStCO0FBRS9CLE1BQU0sT0FBTyxrQkFBa0I7SUFHOUIsWUFBWSxPQUFvQjtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBTFcsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FETCxNQUFNOzsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBCYWNrZW5kLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vLyBXaXRob3V0SW50ZXJjZXB0b3JIdHRwQ2xpZW50XHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwQmFja2VuZFNlcnZpY2Uge1xyXG5cdHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihoYW5kbGVyOiBIdHRwQmFja2VuZCkge1xyXG5cdFx0dGhpcy5odHRwQ2xpZW50ID0gbmV3IEh0dHBDbGllbnQoaGFuZGxlcik7XHJcblx0fVxyXG59XHJcbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cEJhY2tlbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2h0dHAvc3JjL2h0dHBCYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFM0MsK0JBQStCO0FBRS9CLE1BQU0sT0FBTyxrQkFBa0I7SUFHOUIsWUFBWSxPQUFvQjtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBTFcsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FETCxNQUFNOzs0RkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBCYWNrZW5kLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vLyBXaXRob3V0SW50ZXJjZXB0b3JIdHRwQ2xpZW50XHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwQmFja2VuZFNlcnZpY2Uge1xyXG5cdHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihoYW5kbGVyOiBIdHRwQmFja2VuZCkge1xyXG5cdFx0dGhpcy5odHRwQ2xpZW50ID0gbmV3IEh0dHBDbGllbnQoaGFuZGxlcik7XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -3,15 +3,15 @@ import { TranslocoModule } from '@ngneat/transloco';
3
3
  import { i18nProvider } from './provideI18n';
4
4
  import * as i0 from "@angular/core";
5
5
  export class i18nModule {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: i18nModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: i18nModule, exports: [TranslocoModule] }); }
8
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: i18nModule, providers: [i18nProvider()], imports: [TranslocoModule] }); }
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: i18nModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: i18nModule, exports: [TranslocoModule] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: i18nModule, providers: [i18nProvider()], imports: [TranslocoModule] }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: i18nModule, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: i18nModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  exports: [TranslocoModule],
14
14
  providers: [i18nProvider()]
15
15
  }]
16
16
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2kxOG4vc3JjL2kxOG4ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTdDLE1BQU0sT0FBTyxVQUFVOzhHQUFWLFVBQVU7K0dBQVYsVUFBVSxZQUhaLGVBQWU7K0dBR2IsVUFBVSxhQUZYLENBQUMsWUFBWSxFQUFFLENBQUMsWUFEakIsZUFBZTs7MkZBR2IsVUFBVTtrQkFKdEIsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQzFCLFNBQVMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBpMThuUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVJMThuJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0ZXhwb3J0czogW1RyYW5zbG9jb01vZHVsZV0sXHJcblx0cHJvdmlkZXJzOiBbaTE4blByb3ZpZGVyKCldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBpMThuTW9kdWxlIHt9XHJcbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2kxOG4vc3JjL2kxOG4ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTdDLE1BQU0sT0FBTyxVQUFVOytHQUFWLFVBQVU7Z0hBQVYsVUFBVSxZQUhaLGVBQWU7Z0hBR2IsVUFBVSxhQUZYLENBQUMsWUFBWSxFQUFFLENBQUMsWUFEakIsZUFBZTs7NEZBR2IsVUFBVTtrQkFKdEIsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQzFCLFNBQVMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBpMThuUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVJMThuJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0ZXhwb3J0czogW1RyYW5zbG9jb01vZHVsZV0sXHJcblx0cHJvdmlkZXJzOiBbaTE4blByb3ZpZGVyKCldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBpMThuTW9kdWxlIHt9XHJcbiJdfQ==
@@ -8,11 +8,11 @@ export class TranslocoHttpLoader {
8
8
  getTranslation(lang) {
9
9
  return this.http.get(`./assets/host/i18n/${lang}.json`);
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TranslocoHttpLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
12
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TranslocoHttpLoader, providedIn: 'root' }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TranslocoHttpLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
12
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TranslocoHttpLoader, providedIn: 'root' }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TranslocoHttpLoader, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TranslocoHttpLoader, decorators: [{
15
15
  type: Injectable,
16
16
  args: [{ providedIn: 'root' }]
17
17
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9pMThuL3NyYy9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtuRCxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRVMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUtsQztJQUhBLGNBQWMsQ0FBQyxJQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWMsc0JBQXNCLElBQUksT0FBTyxDQUFDLENBQUM7SUFDdEUsQ0FBQzs4R0FMVyxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUROLE1BQU07OzJGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGlvbiwgVHJhbnNsb2NvTG9hZGVyIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zbG9jb0h0dHBMb2FkZXIgaW1wbGVtZW50cyBUcmFuc2xvY29Mb2FkZXIge1xyXG5cdHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuXHJcblx0Z2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLmdldDxUcmFuc2xhdGlvbj4oYC4vYXNzZXRzL2hvc3QvaTE4bi8ke2xhbmd9Lmpzb25gKTtcclxuXHR9XHJcbn1cclxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9pMThuL3NyYy9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtuRCxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRVMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUtsQztJQUhBLGNBQWMsQ0FBQyxJQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWMsc0JBQXNCLElBQUksT0FBTyxDQUFDLENBQUM7SUFDdEUsQ0FBQzsrR0FMVyxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUROLE1BQU07OzRGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGlvbiwgVHJhbnNsb2NvTG9hZGVyIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zbG9jb0h0dHBMb2FkZXIgaW1wbGVtZW50cyBUcmFuc2xvY29Mb2FkZXIge1xyXG5cdHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuXHJcblx0Z2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLmdldDxUcmFuc2xhdGlvbj4oYC4vYXNzZXRzL2hvc3QvaTE4bi8ke2xhbmd9Lmpzb25gKTtcclxuXHR9XHJcbn1cclxuIl19
@@ -2,6 +2,7 @@ import { inject } from '@angular/core';
2
2
  import { KeycloakBearerInterceptor } from 'keycloak-angular';
3
3
  import { bridge } from 'aril/boot/bridge';
4
4
  import { Apps } from 'aril/boot/config/apps';
5
+ import { ActivityService, LOGGER_SESSION_HEADER } from 'aril/util/activity';
5
6
  const HOST_APP_HEADERS = {
6
7
  [Apps.THOR]: { 'x-yeap-application': 'thor', 'x-application': 'thor', 'x-module': 'thor-fe' },
7
8
  [Apps.LENA]: { 'x-yeap-application': 'lena', 'x-application': 'lena', 'x-module': 'lena-fe' },
@@ -16,13 +17,15 @@ export const authInterceptor = (req, next) => {
16
17
  const activeHost = bridge.activeHost();
17
18
  const headers = isHostApp(activeHost) ? HOST_APP_HEADERS[activeHost] : {};
18
19
  const csrfToken = getCsrfToken();
20
+ const loggerSessionId = inject(ActivityService).getSessionId();
19
21
  const authReq = req.clone({
20
22
  setHeaders: {
21
23
  csrf_token: csrfToken ?? '',
22
- ...headers
24
+ ...headers,
25
+ ...(loggerSessionId ? { [LOGGER_SESSION_HEADER]: loggerSessionId } : {})
23
26
  }
24
27
  });
25
28
  return next(authReq);
26
29
  };
27
30
  export const keycloakAuthInterceptor = (req, next) => inject(KeycloakBearerInterceptor).intercept(req, { handle: next });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTdDLE1BQU0sZ0JBQWdCLEdBQXNEO0lBQzNFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtJQUM3RixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUU7SUFDN0YsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO0NBQzdGLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWdDLEVBQW9CLEVBQUUsQ0FDeEUsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUM7QUFFbkUsTUFBTSxZQUFZLEdBQUcsR0FBdUIsRUFBRSxDQUM3QyxRQUFRLENBQUMsTUFBTTtLQUNiLEtBQUssQ0FBQyxJQUFJLENBQUM7S0FDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFbEIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQixDQUFDLEdBQXlCLEVBQUUsSUFBbUIsRUFBRSxFQUFFO0lBQ3BHLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN2QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUUsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFFakMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN6QixVQUFVLEVBQUU7WUFDWCxVQUFVLEVBQUUsU0FBUyxJQUFJLEVBQUU7WUFDM0IsR0FBRyxPQUFPO1NBQ1Y7S0FDRCxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBc0IsQ0FBQyxHQUF5QixFQUFFLElBQW1CLEVBQUUsRUFBRSxDQUM1RyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGFuZGxlckZuLCBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtCZWFyZXJJbnRlcmNlcHRvciB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxudHlwZSBIb3N0QXBwID0gQXBwcy5USE9SIHwgQXBwcy5ZRUFQIHwgQXBwcy5MRU5BO1xyXG5cclxuY29uc3QgSE9TVF9BUFBfSEVBREVSUzogUmVjb3JkPEhvc3RBcHAsIFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PiA9IHtcclxuXHRbQXBwcy5USE9SXTogeyAneC15ZWFwLWFwcGxpY2F0aW9uJzogJ3Rob3InLCAneC1hcHBsaWNhdGlvbic6ICd0aG9yJywgJ3gtbW9kdWxlJzogJ3Rob3ItZmUnIH0sXHJcblx0W0FwcHMuTEVOQV06IHsgJ3gteWVhcC1hcHBsaWNhdGlvbic6ICdsZW5hJywgJ3gtYXBwbGljYXRpb24nOiAnbGVuYScsICd4LW1vZHVsZSc6ICdsZW5hLWZlJyB9LFxyXG5cdFtBcHBzLllFQVBdOiB7ICd4LXllYXAtYXBwbGljYXRpb24nOiAneWVhcCcsICd4LWFwcGxpY2F0aW9uJzogJ3llYXAnLCAneC1tb2R1bGUnOiAneWVhcC1mZScgfVxyXG59O1xyXG5cclxuY29uc3QgaXNIb3N0QXBwID0gKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgSG9zdEFwcCA9PlxyXG5cdHZhbHVlID09PSBBcHBzLlRIT1IgfHwgdmFsdWUgPT09IEFwcHMuTEVOQSB8fCB2YWx1ZSA9PT0gQXBwcy5ZRUFQO1xyXG5cclxuY29uc3QgZ2V0Q3NyZlRva2VuID0gKCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxyXG5cdGRvY3VtZW50LmNvb2tpZVxyXG5cdFx0LnNwbGl0KCc7ICcpXHJcblx0XHQuZmluZCgocm93KSA9PiByb3cuc3RhcnRzV2l0aCgnY3NyZl90b2tlbj0nKSlcclxuXHRcdD8uc3BsaXQoJz0nKVsxXTtcclxuXHJcbmV4cG9ydCBjb25zdCBhdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pID0+IHtcclxuXHRjb25zdCBhY3RpdmVIb3N0ID0gYnJpZGdlLmFjdGl2ZUhvc3QoKTtcclxuXHRjb25zdCBoZWFkZXJzID0gaXNIb3N0QXBwKGFjdGl2ZUhvc3QpID8gSE9TVF9BUFBfSEVBREVSU1thY3RpdmVIb3N0XSA6IHt9O1xyXG5cdGNvbnN0IGNzcmZUb2tlbiA9IGdldENzcmZUb2tlbigpO1xyXG5cclxuXHRjb25zdCBhdXRoUmVxID0gcmVxLmNsb25lKHtcclxuXHRcdHNldEhlYWRlcnM6IHtcclxuXHRcdFx0Y3NyZl90b2tlbjogY3NyZlRva2VuID8/ICcnLFxyXG5cdFx0XHQuLi5oZWFkZXJzXHJcblx0XHR9XHJcblx0fSk7XHJcblxyXG5cdHJldHVybiBuZXh0KGF1dGhSZXEpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGtleWNsb2FrQXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlckZuKSA9PlxyXG5cdGluamVjdChLZXljbG9ha0JlYXJlckludGVyY2VwdG9yKS5pbnRlcmNlcHQocmVxLCB7IGhhbmRsZTogbmV4dCB9KTtcclxuIl19
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUk1RSxNQUFNLGdCQUFnQixHQUFzRDtJQUMzRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUU7SUFDN0YsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO0lBQzdGLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtDQUM3RixDQUFDO0FBRUYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFnQyxFQUFvQixFQUFFLENBQ3hFLEtBQUssS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBRW5FLE1BQU0sWUFBWSxHQUFHLEdBQXVCLEVBQUUsQ0FDN0MsUUFBUSxDQUFDLE1BQU07S0FDYixLQUFLLENBQUMsSUFBSSxDQUFDO0tBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWxCLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBc0IsQ0FBQyxHQUF5QixFQUFFLElBQW1CLEVBQUUsRUFBRTtJQUNwRyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdkMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzFFLE1BQU0sU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFDO0lBQ2pDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUvRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3pCLFVBQVUsRUFBRTtZQUNYLFVBQVUsRUFBRSxTQUFTLElBQUksRUFBRTtZQUMzQixHQUFHLE9BQU87WUFDVixHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3hFO0tBQ0QsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXNCLENBQUMsR0FBeUIsRUFBRSxJQUFtQixFQUFFLEVBQUUsQ0FDNUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhhbmRsZXJGbiwgSHR0cEludGVyY2VwdG9yRm4sIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgQWN0aXZpdHlTZXJ2aWNlLCBMT0dHRVJfU0VTU0lPTl9IRUFERVIgfSBmcm9tICdhcmlsL3V0aWwvYWN0aXZpdHknO1xyXG5cclxudHlwZSBIb3N0QXBwID0gQXBwcy5USE9SIHwgQXBwcy5ZRUFQIHwgQXBwcy5MRU5BO1xyXG5cclxuY29uc3QgSE9TVF9BUFBfSEVBREVSUzogUmVjb3JkPEhvc3RBcHAsIFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PiA9IHtcclxuXHRbQXBwcy5USE9SXTogeyAneC15ZWFwLWFwcGxpY2F0aW9uJzogJ3Rob3InLCAneC1hcHBsaWNhdGlvbic6ICd0aG9yJywgJ3gtbW9kdWxlJzogJ3Rob3ItZmUnIH0sXHJcblx0W0FwcHMuTEVOQV06IHsgJ3gteWVhcC1hcHBsaWNhdGlvbic6ICdsZW5hJywgJ3gtYXBwbGljYXRpb24nOiAnbGVuYScsICd4LW1vZHVsZSc6ICdsZW5hLWZlJyB9LFxyXG5cdFtBcHBzLllFQVBdOiB7ICd4LXllYXAtYXBwbGljYXRpb24nOiAneWVhcCcsICd4LWFwcGxpY2F0aW9uJzogJ3llYXAnLCAneC1tb2R1bGUnOiAneWVhcC1mZScgfVxyXG59O1xyXG5cclxuY29uc3QgaXNIb3N0QXBwID0gKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgSG9zdEFwcCA9PlxyXG5cdHZhbHVlID09PSBBcHBzLlRIT1IgfHwgdmFsdWUgPT09IEFwcHMuTEVOQSB8fCB2YWx1ZSA9PT0gQXBwcy5ZRUFQO1xyXG5cclxuY29uc3QgZ2V0Q3NyZlRva2VuID0gKCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxyXG5cdGRvY3VtZW50LmNvb2tpZVxyXG5cdFx0LnNwbGl0KCc7ICcpXHJcblx0XHQuZmluZCgocm93KSA9PiByb3cuc3RhcnRzV2l0aCgnY3NyZl90b2tlbj0nKSlcclxuXHRcdD8uc3BsaXQoJz0nKVsxXTtcclxuXHJcbmV4cG9ydCBjb25zdCBhdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pID0+IHtcclxuXHRjb25zdCBhY3RpdmVIb3N0ID0gYnJpZGdlLmFjdGl2ZUhvc3QoKTtcclxuXHRjb25zdCBoZWFkZXJzID0gaXNIb3N0QXBwKGFjdGl2ZUhvc3QpID8gSE9TVF9BUFBfSEVBREVSU1thY3RpdmVIb3N0XSA6IHt9O1xyXG5cdGNvbnN0IGNzcmZUb2tlbiA9IGdldENzcmZUb2tlbigpO1xyXG5cdGNvbnN0IGxvZ2dlclNlc3Npb25JZCA9IGluamVjdChBY3Rpdml0eVNlcnZpY2UpLmdldFNlc3Npb25JZCgpO1xyXG5cclxuXHRjb25zdCBhdXRoUmVxID0gcmVxLmNsb25lKHtcclxuXHRcdHNldEhlYWRlcnM6IHtcclxuXHRcdFx0Y3NyZl90b2tlbjogY3NyZlRva2VuID8/ICcnLFxyXG5cdFx0XHQuLi5oZWFkZXJzLFxyXG5cdFx0XHQuLi4obG9nZ2VyU2Vzc2lvbklkID8geyBbTE9HR0VSX1NFU1NJT05fSEVBREVSXTogbG9nZ2VyU2Vzc2lvbklkIH0gOiB7fSlcclxuXHRcdH1cclxuXHR9KTtcclxuXHJcblx0cmV0dXJuIG5leHQoYXV0aFJlcSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qga2V5Y2xvYWtBdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pID0+XHJcblx0aW5qZWN0KEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IpLmludGVyY2VwdChyZXEsIHsgaGFuZGxlOiBuZXh0IH0pO1xyXG4iXX0=
@@ -97,11 +97,11 @@ export class AppBreadcrumbComponent {
97
97
  this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);
98
98
  }
99
99
  }
100
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppBreadcrumbComponent, deps: [{ token: i1.Router }, { token: i2.BreadcrumbService }, { token: i3.PubSubService }], target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", ngImport: i0, template: "<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class='text-500'>{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: BreadcrumbModule }, { kind: "component", type: i4.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppBreadcrumbComponent, deps: [{ token: i1.Router }, { token: i2.BreadcrumbService }, { token: i3.PubSubService }], target: i0.ɵɵFactoryTarget.Component }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", ngImport: i0, template: "<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class='text-500'>{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: BreadcrumbModule }, { kind: "component", type: i4.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
102
102
  }
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppBreadcrumbComponent, decorators: [{
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppBreadcrumbComponent, decorators: [{
104
104
  type: Component,
105
105
  args: [{ standalone: true, selector: 'app-breadcrumb', imports: [RouterLink, BreadcrumbModule, NgClass], template: "<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class='text-500'>{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n" }]
106
106
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.BreadcrumbService }, { type: i3.PubSubService }] });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBMEIsYUFBYSxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFlMUMsTUFBTSxPQUFPLHNCQUFzQjtJQU9sQyxZQUNTLE1BQWMsRUFDZCxpQkFBb0MsRUFDcEMsYUFBNEI7UUFGNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFUcEIsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUc5RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUQsZ0JBQVcsR0FBZSxFQUFFLENBQUM7UUFPNUIsSUFBSSxDQUFDLE1B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RTtnQkFDakUsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDaEIsS0FBSyxFQUFFLEtBQUs7b0JBQ1osR0FBRyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNQLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztvQkFDL0IsR0FBRyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0osQ0FBQztRQUNGLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDRixDQUFDOzhHQXBHVyxzQkFBc0I7a0dBQXRCLHNCQUFzQiwwRUN6Qm5DLDhVQVFBLDRDRGNXLFVBQVUsbU9BQUUsZ0JBQWdCLHlTQUFFLE9BQU87OzJGQUduQyxzQkFBc0I7a0JBTmxDLFNBQVM7aUNBQ0csSUFBSSxZQUNOLGdCQUFnQixXQUNqQixDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9icmVhZGNydW1iJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBQdWJTdWJTZXJ2aWNlIH0gZnJvbSAnYXJpbC91dGlsL3B1Yi1zdWInO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYnJlYWRjcnVtYi5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBCcmVhZGNydW1iIHtcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdHVybD86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1icmVhZGNydW1iJyxcclxuXHRpbXBvcnRzOiBbUm91dGVyTGluaywgQnJlYWRjcnVtYk1vZHVsZSwgTmdDbGFzc10sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2FwcC5icmVhZGNydW1iLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwQnJlYWRjcnVtYkNvbXBvbmVudCB7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfYnJlYWRjcnVtYnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCcmVhZGNydW1iW10+KFtdKTtcclxuXHRwcml2YXRlIGJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuXHRyZWFkb25seSBicmVhZGNydW1icyQgPSB0aGlzLl9icmVhZGNydW1icyQuYXNPYnNlcnZhYmxlKCk7XHJcblx0YnJlYWRjcnVtYnM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSBicmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHB1YlN1YlNlcnZpY2U6IFB1YlN1YlNlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuXHRcdFx0Y29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XHJcblx0XHRcdGNvbnN0IGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10gPSBbXTtcclxuXHJcblx0XHRcdHRoaXMuYWRkQnJlYWRjcnVtYihyb290LCBbXSwgYnJlYWRjcnVtYnMpO1xyXG5cclxuXHRcdFx0dGhpcy5fYnJlYWRjcnVtYnMkLm5leHQoYnJlYWRjcnVtYnMpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uua2V5VmFsdWVzKCkpIHtcclxuXHRcdFx0XHRjb25zdCByb290ID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcclxuXHRcdFx0XHRjb25zdCBicmVhZGNydW1iczogQnJlYWRjcnVtYltdID0gW107XHJcblxyXG5cdFx0XHRcdHRoaXMuYWRkQnJlYWRjcnVtYihyb290LCBbXSwgYnJlYWRjcnVtYnMpO1xyXG5cclxuXHRcdFx0XHR0aGlzLl9icmVhZGNydW1icyQubmV4dChicmVhZGNydW1icyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uID0gdGhpcy5icmVhZGNydW1icyQuc3Vic2NyaWJlKChicmVhZGNydW1icykgPT4ge1xyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnMubWFwKChicmVhZGNydW1iKSA9PiAoe1xyXG5cdFx0XHRcdGxhYmVsOiBicmVhZGNydW1iLmxhYmVsLFxyXG5cdFx0XHRcdHVybDogYnJlYWRjcnVtYi51cmxcclxuXHRcdFx0fSkpO1xyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJzLnVuc2hpZnQoeyBpY29uOiAncGkgcGktaG9tZScsIHVybDogJy8nIH0pO1xyXG5cdFx0XHRcclxuXHRcdFx0Ly8gVXBkYXRlIGdsb2JhbCBwYWdlIHRpdGxlIHNpZ25hbCB3aXRoIHRoZSBsYXN0IGJyZWFkY3J1bWIgbGFiZWxcclxuXHRcdFx0Y29uc3QgcGFnZVRpdGxlID0gYnJpZGdlLnBhZ2VUaXRsZSgpO1xyXG5cdFx0XHRpZiAocGFnZVRpdGxlKSB7XHJcblx0XHRcdFx0XHRjb25zdCBsYXN0QnJlYWRjcnVtYiA9IGJyZWFkY3J1bWJzW2JyZWFkY3J1bWJzLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0YnJpZGdlLnBhZ2VUaXRsZS5zZXQobGFzdEJyZWFkY3J1bWI/LmxhYmVsIHx8ICcnKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdFx0dGhpcy5wdWJTdWJTZXJ2aWNlLnB1Ymxpc2goe1xyXG5cdFx0XHRcdG5hbWU6ICdicmVhZGNydW1iVXBkYXRlZCcsXHJcblx0XHRcdFx0ZGF0YTogeyBcclxuXHRcdFx0XHRcdHBhdGg6IGN1cnJlbnRVcmwsXHJcblx0XHRcdFx0XHRjdXN0b206IHtcclxuXHRcdFx0XHRcdFx0YnJlYWRjcnVtYnM6IGJyZWFkY3J1bWJzLFxyXG5cdFx0XHRcdFx0XHRwYWdlVGl0bGU6IGJyZWFkY3J1bWJzLmxlbmd0aCA+IDAgPyBicmVhZGNydW1ic1ticmVhZGNydW1icy5sZW5ndGggLSAxXS5sYWJlbCA6ICcnXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHRpZiAodGhpcy5icmVhZGNydW1ic1N1YnNjcmlwdGlvbikge1xyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFkZEJyZWFkY3J1bWIocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHBhcmVudFVybDogc3RyaW5nW10sIGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pIHtcclxuXHRcdGNvbnN0IHJvdXRlVXJsID0gcGFyZW50VXJsLmNvbmNhdChyb3V0ZS51cmwubWFwKCh1cmwpID0+IHVybC5wYXRoKSk7XHJcblx0XHRjb25zdCBicmVhZGNydW1iID0gcm91dGUuZGF0YVsnYnJlYWRjcnVtYiddO1xyXG5cdFx0Y29uc3QgcGFyZW50QnJlYWRjcnVtYiA9IHJvdXRlLnBhcmVudCAmJiByb3V0ZS5wYXJlbnQuZGF0YSA/IHJvdXRlLnBhcmVudC5kYXRhWydicmVhZGNydW1iJ10gOiBudWxsO1xyXG5cclxuXHRcdGlmIChicmVhZGNydW1iICYmIGJyZWFkY3J1bWIgIT09IHBhcmVudEJyZWFkY3J1bWIpIHtcclxuXHRcdFx0Y29uc3Qga2V5UmVnZXggPSBuZXcgUmVnRXhwKCcoPzw9XFxcXHspKFtefV0rKSg/PVxcXFx9KScpO1xyXG5cdFx0XHRjb25zdCBrZXkgPSAoa2V5UmVnZXguZXhlYyhyb3V0ZS5kYXRhWydicmVhZGNydW1iJ10pIHx8IFtdKVswXSE7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5icmVhZGNydW1iU2VydmljZS5nZXRWYWx1ZShrZXkpO1xyXG5cclxuXHRcdFx0aWYgKGtleSAmJiB2YWx1ZSkge1xyXG5cdFx0XHRcdGJyZWFkY3J1bWJzLnB1c2goe1xyXG5cdFx0XHRcdFx0bGFiZWw6IChyb3V0ZS5kYXRhWydicmVhZGNydW1iJ10gYXMgc3RyaW5nKS5yZXBsYWNlKGB7JHtrZXl9fWAsIHZhbHVlKSxcclxuXHRcdFx0XHRcdHVybDogJy8nICsgcm91dGVVcmwuam9pbignLycpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0gZWxzZSBpZiAoa2V5ICYmICF2YWx1ZSkge1xyXG5cdFx0XHRcdC8vIEtleSBleGlzdHMgYnV0IHZhbHVlIG5vdCBsb2FkZWQgeWV0IC0gc2hvdyBsb2FkaW5nIHBsYWNlaG9sZGVyXHJcblx0XHRcdFx0YnJlYWRjcnVtYnMucHVzaCh7XHJcblx0XHRcdFx0XHRsYWJlbDogJy4uLicsXHJcblx0XHRcdFx0XHR1cmw6ICcvJyArIHJvdXRlVXJsLmpvaW4oJy8nKVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGJyZWFkY3J1bWJzLnB1c2goe1xyXG5cdFx0XHRcdFx0bGFiZWw6IHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSxcclxuXHRcdFx0XHRcdHVybDogJy8nICsgcm91dGVVcmwuam9pbignLycpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAocm91dGUuZmlyc3RDaGlsZCkge1xyXG5cdFx0XHR0aGlzLmFkZEJyZWFkY3J1bWIocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmwsIGJyZWFkY3J1bWJzKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPHAtYnJlYWRjcnVtYiBjbGFzcz1cIm1heC13LWZ1bGxcIiBbbW9kZWxdPVwiYnJlYWRjcnVtYnNcIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaXRlbVwiIGxldC1pdGVtPlxyXG5cdFx0PGEgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIj5cclxuXHRcdFx0PHNwYW4gW25nQ2xhc3NdPVwiW2l0ZW0uaWNvbiA/IGl0ZW0uaWNvbiA6ICcnLCAndGV4dC01MDAnXVwiPjwvc3Bhbj5cclxuXHRcdFx0PHNwYW4gY2xhc3M9J3RleHQtNTAwJz57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG5cdFx0PC9hPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcbjwvcC1icmVhZGNydW1iPlxyXG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBMEIsYUFBYSxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFlMUMsTUFBTSxPQUFPLHNCQUFzQjtJQU9sQyxZQUNTLE1BQWMsRUFDZCxpQkFBb0MsRUFDcEMsYUFBNEI7UUFGNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFUcEIsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUc5RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUQsZ0JBQVcsR0FBZSxFQUFFLENBQUM7UUFPNUIsSUFBSSxDQUFDLE1B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RTtnQkFDakUsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDaEIsS0FBSyxFQUFFLEtBQUs7b0JBQ1osR0FBRyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNQLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztvQkFDL0IsR0FBRyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0osQ0FBQztRQUNGLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDRixDQUFDOytHQXBHVyxzQkFBc0I7bUdBQXRCLHNCQUFzQiwwRUN6Qm5DLDhVQVFBLDRDRGNXLFVBQVUsbU9BQUUsZ0JBQWdCLHlTQUFFLE9BQU87OzRGQUduQyxzQkFBc0I7a0JBTmxDLFNBQVM7aUNBQ0csSUFBSSxZQUNOLGdCQUFnQixXQUNqQixDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9icmVhZGNydW1iJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBQdWJTdWJTZXJ2aWNlIH0gZnJvbSAnYXJpbC91dGlsL3B1Yi1zdWInO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYnJlYWRjcnVtYi5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBCcmVhZGNydW1iIHtcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdHVybD86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1icmVhZGNydW1iJyxcclxuXHRpbXBvcnRzOiBbUm91dGVyTGluaywgQnJlYWRjcnVtYk1vZHVsZSwgTmdDbGFzc10sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2FwcC5icmVhZGNydW1iLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwQnJlYWRjcnVtYkNvbXBvbmVudCB7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfYnJlYWRjcnVtYnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCcmVhZGNydW1iW10+KFtdKTtcclxuXHRwcml2YXRlIGJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuXHRyZWFkb25seSBicmVhZGNydW1icyQgPSB0aGlzLl9icmVhZGNydW1icyQuYXNPYnNlcnZhYmxlKCk7XHJcblx0YnJlYWRjcnVtYnM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSBicmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHB1YlN1YlNlcnZpY2U6IFB1YlN1YlNlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuXHRcdFx0Y29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XHJcblx0XHRcdGNvbnN0IGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10gPSBbXTtcclxuXHJcblx0XHRcdHRoaXMuYWRkQnJlYWRjcnVtYihyb290LCBbXSwgYnJlYWRjcnVtYnMpO1xyXG5cclxuXHRcdFx0dGhpcy5fYnJlYWRjcnVtYnMkLm5leHQoYnJlYWRjcnVtYnMpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uua2V5VmFsdWVzKCkpIHtcclxuXHRcdFx0XHRjb25zdCByb290ID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcclxuXHRcdFx0XHRjb25zdCBicmVhZGNydW1iczogQnJlYWRjcnVtYltdID0gW107XHJcblxyXG5cdFx0XHRcdHRoaXMuYWRkQnJlYWRjcnVtYihyb290LCBbXSwgYnJlYWRjcnVtYnMpO1xyXG5cclxuXHRcdFx0XHR0aGlzLl9icmVhZGNydW1icyQubmV4dChicmVhZGNydW1icyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uID0gdGhpcy5icmVhZGNydW1icyQuc3Vic2NyaWJlKChicmVhZGNydW1icykgPT4ge1xyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnMubWFwKChicmVhZGNydW1iKSA9PiAoe1xyXG5cdFx0XHRcdGxhYmVsOiBicmVhZGNydW1iLmxhYmVsLFxyXG5cdFx0XHRcdHVybDogYnJlYWRjcnVtYi51cmxcclxuXHRcdFx0fSkpO1xyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJzLnVuc2hpZnQoeyBpY29uOiAncGkgcGktaG9tZScsIHVybDogJy8nIH0pO1xyXG5cdFx0XHRcclxuXHRcdFx0Ly8gVXBkYXRlIGdsb2JhbCBwYWdlIHRpdGxlIHNpZ25hbCB3aXRoIHRoZSBsYXN0IGJyZWFkY3J1bWIgbGFiZWxcclxuXHRcdFx0Y29uc3QgcGFnZVRpdGxlID0gYnJpZGdlLnBhZ2VUaXRsZSgpO1xyXG5cdFx0XHRpZiAocGFnZVRpdGxlKSB7XHJcblx0XHRcdFx0XHRjb25zdCBsYXN0QnJlYWRjcnVtYiA9IGJyZWFkY3J1bWJzW2JyZWFkY3J1bWJzLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0YnJpZGdlLnBhZ2VUaXRsZS5zZXQobGFzdEJyZWFkY3J1bWI/LmxhYmVsIHx8ICcnKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdFx0dGhpcy5wdWJTdWJTZXJ2aWNlLnB1Ymxpc2goe1xyXG5cdFx0XHRcdG5hbWU6ICdicmVhZGNydW1iVXBkYXRlZCcsXHJcblx0XHRcdFx0ZGF0YTogeyBcclxuXHRcdFx0XHRcdHBhdGg6IGN1cnJlbnRVcmwsXHJcblx0XHRcdFx0XHRjdXN0b206IHtcclxuXHRcdFx0XHRcdFx0YnJlYWRjcnVtYnM6IGJyZWFkY3J1bWJzLFxyXG5cdFx0XHRcdFx0XHRwYWdlVGl0bGU6IGJyZWFkY3J1bWJzLmxlbmd0aCA+IDAgPyBicmVhZGNydW1ic1ticmVhZGNydW1icy5sZW5ndGggLSAxXS5sYWJlbCA6ICcnXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHRpZiAodGhpcy5icmVhZGNydW1ic1N1YnNjcmlwdGlvbikge1xyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFkZEJyZWFkY3J1bWIocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHBhcmVudFVybDogc3RyaW5nW10sIGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pIHtcclxuXHRcdGNvbnN0IHJvdXRlVXJsID0gcGFyZW50VXJsLmNvbmNhdChyb3V0ZS51cmwubWFwKCh1cmwpID0+IHVybC5wYXRoKSk7XHJcblx0XHRjb25zdCBicmVhZGNydW1iID0gcm91dGUuZGF0YVsnYnJlYWRjcnVtYiddO1xyXG5cdFx0Y29uc3QgcGFyZW50QnJlYWRjcnVtYiA9IHJvdXRlLnBhcmVudCAmJiByb3V0ZS5wYXJlbnQuZGF0YSA/IHJvdXRlLnBhcmVudC5kYXRhWydicmVhZGNydW1iJ10gOiBudWxsO1xyXG5cclxuXHRcdGlmIChicmVhZGNydW1iICYmIGJyZWFkY3J1bWIgIT09IHBhcmVudEJyZWFkY3J1bWIpIHtcclxuXHRcdFx0Y29uc3Qga2V5UmVnZXggPSBuZXcgUmVnRXhwKCcoPzw9XFxcXHspKFtefV0rKSg/PVxcXFx9KScpO1xyXG5cdFx0XHRjb25zdCBrZXkgPSAoa2V5UmVnZXguZXhlYyhyb3V0ZS5kYXRhWydicmVhZGNydW1iJ10pIHx8IFtdKVswXSE7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5icmVhZGNydW1iU2VydmljZS5nZXRWYWx1ZShrZXkpO1xyXG5cclxuXHRcdFx0aWYgKGtleSAmJiB2YWx1ZSkge1xyXG5cdFx0XHRcdGJyZWFkY3J1bWJzLnB1c2goe1xyXG5cdFx0XHRcdFx0bGFiZWw6IChyb3V0ZS5kYXRhWydicmVhZGNydW1iJ10gYXMgc3RyaW5nKS5yZXBsYWNlKGB7JHtrZXl9fWAsIHZhbHVlKSxcclxuXHRcdFx0XHRcdHVybDogJy8nICsgcm91dGVVcmwuam9pbignLycpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0gZWxzZSBpZiAoa2V5ICYmICF2YWx1ZSkge1xyXG5cdFx0XHRcdC8vIEtleSBleGlzdHMgYnV0IHZhbHVlIG5vdCBsb2FkZWQgeWV0IC0gc2hvdyBsb2FkaW5nIHBsYWNlaG9sZGVyXHJcblx0XHRcdFx0YnJlYWRjcnVtYnMucHVzaCh7XHJcblx0XHRcdFx0XHRsYWJlbDogJy4uLicsXHJcblx0XHRcdFx0XHR1cmw6ICcvJyArIHJvdXRlVXJsLmpvaW4oJy8nKVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGJyZWFkY3J1bWJzLnB1c2goe1xyXG5cdFx0XHRcdFx0bGFiZWw6IHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSxcclxuXHRcdFx0XHRcdHVybDogJy8nICsgcm91dGVVcmwuam9pbignLycpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAocm91dGUuZmlyc3RDaGlsZCkge1xyXG5cdFx0XHR0aGlzLmFkZEJyZWFkY3J1bWIocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmwsIGJyZWFkY3J1bWJzKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPHAtYnJlYWRjcnVtYiBjbGFzcz1cIm1heC13LWZ1bGxcIiBbbW9kZWxdPVwiYnJlYWRjcnVtYnNcIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaXRlbVwiIGxldC1pdGVtPlxyXG5cdFx0PGEgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIj5cclxuXHRcdFx0PHNwYW4gW25nQ2xhc3NdPVwiW2l0ZW0uaWNvbiA/IGl0ZW0uaWNvbiA6ICcnLCAndGV4dC01MDAnXVwiPjwvc3Bhbj5cclxuXHRcdFx0PHNwYW4gY2xhc3M9J3RleHQtNTAwJz57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG5cdFx0PC9hPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcbjwvcC1icmVhZGNydW1iPlxyXG4iXX0=
@@ -301,14 +301,14 @@ export class ExpandableMenuComponent {
301
301
  this.sidebarExpanded = false;
302
302
  }
303
303
  }
304
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ExpandableMenuComponent, deps: [{ token: i1.TranslateJsonPipe }, { token: i2.AppMenuService }, { token: i3.Router }, { token: i4.KeycloakService }, { token: i5.TranslocoService }, { token: i6.LayoutService }, { token: i7.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
305
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ExpandableMenuComponent, isStandalone: true, selector: "app-expandable-menu", host: { listeners: { "window:resize": "onResize()" } }, providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"new-layout-sidebar\" >\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\" style=\"position: relative;\">\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"(item.label && activeLang() ? item.label[activeLang()!] || '' : '')\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<!-- <small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n\t\t @if(selectedMainMenuItem && selectedMainMenuItem.items && selectedMainMenuItem.items.length > 0){\r\n\r\n\t\t\t <div class=\"sidebar-toggle-container\">\r\n\t\t\t\t <button class=\"sidebar-circle-toggle-btn\" (click)=\"toggleSidebar()\">\r\n\t\t\t\t\t <i class=\"pi\" [ngClass]=\"sidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t\t </button>\r\n\t\t\t </div>\r\n\t\t }\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': sidebarExpanded}\">\r\n\t\t<div class=\"secondary-content-wrapper\" style=\"position: relative;\">\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Action menu item -->\r\n\t\t\t\t\t\t\t\t@if(subItem.action) {\r\n\t\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t<a class=\"secondary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(subItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(subItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"submenu-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<!-- Regular menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<!-- Action item at tertiary level -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"tertiary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(childItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(childItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(nestedItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"nested-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"nested-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(nestedItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(nestedItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
304
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExpandableMenuComponent, deps: [{ token: i1.TranslateJsonPipe }, { token: i2.AppMenuService }, { token: i3.Router }, { token: i4.KeycloakService }, { token: i5.TranslocoService }, { token: i6.LayoutService }, { token: i7.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
305
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ExpandableMenuComponent, isStandalone: true, selector: "app-expandable-menu", host: { listeners: { "window:resize": "onResize()" } }, providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"new-layout-sidebar\" >\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\" style=\"position: relative;\">\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"(item.label && activeLang() ? item.label[activeLang()!] || '' : '')\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<!-- <small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n\t\t @if(selectedMainMenuItem && selectedMainMenuItem.items && selectedMainMenuItem.items.length > 0){\r\n\r\n\t\t\t <div class=\"sidebar-toggle-container\">\r\n\t\t\t\t <button class=\"sidebar-circle-toggle-btn\" (click)=\"toggleSidebar()\">\r\n\t\t\t\t\t <i class=\"pi\" [ngClass]=\"sidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t\t </button>\r\n\t\t\t </div>\r\n\t\t }\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': sidebarExpanded}\">\r\n\t\t<div class=\"secondary-content-wrapper\" style=\"position: relative;\">\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Action menu item -->\r\n\t\t\t\t\t\t\t\t@if(subItem.action) {\r\n\t\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t<a class=\"secondary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(subItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(subItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"submenu-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<!-- Regular menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<!-- Action item at tertiary level -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"tertiary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(childItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(childItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(nestedItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"nested-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"nested-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(nestedItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(nestedItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
306
306
  }
307
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ExpandableMenuComponent, decorators: [{
307
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExpandableMenuComponent, decorators: [{
308
308
  type: Component,
309
309
  args: [{ standalone: true, selector: 'app-expandable-menu', imports: [RouterLink, NgClass, TooltipModule], providers: [TranslateJsonPipe], template: "<div class=\"new-layout-sidebar\" >\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\" style=\"position: relative;\">\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"(item.label && activeLang() ? item.label[activeLang()!] || '' : '')\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<!-- <small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n\t\t @if(selectedMainMenuItem && selectedMainMenuItem.items && selectedMainMenuItem.items.length > 0){\r\n\r\n\t\t\t <div class=\"sidebar-toggle-container\">\r\n\t\t\t\t <button class=\"sidebar-circle-toggle-btn\" (click)=\"toggleSidebar()\">\r\n\t\t\t\t\t <i class=\"pi\" [ngClass]=\"sidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t\t </button>\r\n\t\t\t </div>\r\n\t\t }\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': sidebarExpanded}\">\r\n\t\t<div class=\"secondary-content-wrapper\" style=\"position: relative;\">\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Action menu item -->\r\n\t\t\t\t\t\t\t\t@if(subItem.action) {\r\n\t\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t<a class=\"secondary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(subItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(subItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"submenu-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<!-- Regular menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<!-- Action item at tertiary level -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"tertiary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(childItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(childItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(nestedItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"nested-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"nested-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(nestedItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(nestedItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n" }]
310
310
  }], ctorParameters: () => [{ type: i1.TranslateJsonPipe }, { type: i2.AppMenuService }, { type: i3.Router }, { type: i4.KeycloakService }, { type: i5.TranslocoService }, { type: i6.LayoutService }, { type: i7.HttpClient }], propDecorators: { onResize: [{
311
311
  type: HostListener,
312
312
  args: ['window:resize']
313
313
  }] } });
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9leHBhbmRhYmxlTWVudS9leHBhbmRhYmxlLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2V4cGFuZGFibGVNZW51L2V4cGFuZGFibGUtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUloRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFZcEQsTUFBTSxPQUFPLHVCQUF1QjtJQVVuQyxJQUFJLGVBQWU7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFrQ0QsWUFDUyxpQkFBb0MsRUFDcEMsV0FBMkIsRUFDM0IsTUFBYyxF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LENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsYUFBYTtRQUNaLGdGQUFnRjtRQUNoRixJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hILElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzlDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDO0lBQ0YsQ0FBQzs4R0F6VlcsdUJBQXVCO2tHQUF2Qix1QkFBdUIsMEhBRnhCLENBQUMsaUJBQWlCLENBQUMsMEJDeEIvQixndVJBeUlBLDRDRG5IVyxVQUFVLG9PQUFFLE9BQU8sbUZBQUUsYUFBYTs7MkZBSWhDLHVCQUF1QjtrQkFQbkMsU0FBUztpQ0FDRyxJQUFJLFlBQ04scUJBQXFCLFdBQ3RCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsYUFFbEMsQ0FBQyxpQkFBaUIsQ0FBQzswUEFpTzlCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBQbHVnaW5NZW51SXRlbSB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUpzb25QaXBlIH0gZnJvbSAnYXJpbC91dGlsL3BpcGVzJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubWVudS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtZXhwYW5kYWJsZS1tZW51JyxcclxuXHRpbXBvcnRzOiBbUm91dGVyTGluaywgTmdDbGFzcywgVG9vbHRpcE1vZHVsZV0sXHJcblx0dGVtcGxhdGVVcmw6ICdleHBhbmRhYmxlLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHByb3ZpZGVyczogW1RyYW5zbGF0ZUpzb25QaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXhwYW5kYWJsZU1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblx0YWN0aXZlTGFuZzogU2lnbmFsPHN0cmluZz47XHJcblx0b3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHRyb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cdHVzZXJuYW1lOiBzdHJpbmc7XHJcblxyXG5cdGNhY2hlZE1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuXHRzZWxlY3RlZE1haW5NZW51SXRlbTogUGx1Z2luTWVudUl0ZW0gfCBudWxsID0gbnVsbDtcclxuXHJcblx0Z2V0IHNpZGViYXJFeHBhbmRlZCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkO1xyXG5cdH1cclxuXHJcblx0c2V0IHNpZGViYXJFeHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHR0b29sdGlwVGV4dCA9IHtcclxuXHRcdHRvZ2dsZUJ1dHRvbjoge1xyXG5cdFx0XHRleHBhbmRlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgR2l6bGUnLFxyXG5cdFx0XHRcdGVuOiAnSGlkZSBNZW51J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjb2xsYXBzZWQ6IHtcclxuXHRcdFx0XHR0cjogJ01lbsO8ecO8IEfDtnN0ZXInLFxyXG5cdFx0XHRcdGVuOiAnU2hvdyBNZW51J1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bG9ja0J1dHRvbjoge1xyXG5cdFx0XHRsb2NrZWQ6IHtcclxuXHRcdFx0XHR0cjogJ090b21hdGlrIEthcGFubWF5xLEgQcOnJyxcclxuXHRcdFx0XHRlbjogJ0VuYWJsZSBBdXRvLUNsb3NlJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR1bmxvY2tlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgS2lsaXRsZScsXHJcblx0XHRcdFx0ZW46ICdMb2NrIE1lbnUnXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IE1BWF9MRU5HVEggPSB7XHJcblx0XHRtYWluOiA4LFxyXG5cdFx0c2Vjb25kYXJ5OiAyMCxcclxuXHRcdHRlcnRpYXJ5OiAyMFxyXG5cdH07XHJcblxyXG5cdGFjdGlvbkxvYWRpbmdJdGVtcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cdHByaXZhdGUgYWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHRyYW5zbGF0ZUpzb25QaXBlOiBUcmFuc2xhdGVKc29uUGlwZSxcclxuXHRcdHByaXZhdGUgbWVudVNlcnZpY2U6IEFwcE1lbnVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHByaXZhdGUga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG5cdCkge1xyXG5cdFx0dGhpcy5hY3RpdmVMYW5nID0gdG9TaWduYWwodGhpcy50cmFuc2xvY29TZXJ2aWNlLmxhbmdDaGFuZ2VzJCwgeyBpbml0aWFsVmFsdWU6ICd0cicgfSk7XHJcblx0XHR0aGlzLnVzZXJuYW1lID0gdGhpcy5rZXljbG9hay5nZXRVc2VybmFtZSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xyXG5cdH1cclxuXHJcblx0Ly8gR2V0dGVyIGZvciBsYXlvdXQgc2VydmljZSBzdGF0ZXNcclxuXHRnZXQgc2VsZWN0ZWRNYWluSXRlbSgpOiBudW1iZXIgfCBudWxsIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2VsZWN0ZWRNYWluSXRlbTtcclxuXHR9XHJcblxyXG5cdGdldCBzZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZDtcclxuXHR9XHJcblxyXG5cdC8vIENoZWNrIGlmIHRleHQgaXMgdHJ1bmNhdGVkIGFuZCBuZWVkcyB0b29sdGlwXHJcblx0aXNUZXh0VHJ1bmNhdGVkKFxyXG5cdFx0bGFiZWw6IGFueSxcclxuXHRcdGxhbmc6IHN0cmluZyB8IG51bGwsXHJcblx0XHRtZW51VHlwZTogJ21haW4nIHwgJ3NlY29uZGFyeScgfCAndGVydGlhcnknIHwgJ25lc3RlZCcgPSAnc2Vjb25kYXJ5J1xyXG5cdCk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFsYWJlbCB8fCAhbGFuZyB8fCAhbGFiZWxbbGFuZ10pIHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRjb25zdCB0ZXh0ID0gbGFiZWxbbGFuZ107XHJcblx0XHRjb25zdCB0ZXh0TGVuZ3RoID0gdGV4dC5sZW5ndGg7XHJcblx0XHRjb25zdCBtYXhMZW5ndGggPSBtZW51VHlwZSA9PT0gJ25lc3RlZCcgPyB0aGlzLk1BWF9MRU5HVEgudGVydGlhcnkgOiB0aGlzLk1BWF9MRU5HVEhbbWVudVR5cGVdO1xyXG5cdFx0cmV0dXJuIHRleHRMZW5ndGggPiBtYXhMZW5ndGg7XHJcblx0fVxyXG5cclxuXHQvLyBSZWN1cnNpdmVseSBjaGVjayBpZiBhIG1lbnUgaXRlbSBvciBpdHMgY2hpbGRyZW4gbWF0Y2ggdGhlIGN1cnJlbnQgcm91dGVcclxuXHRpc0FjdGl2ZVJvdXRlKG1lbnVJdGVtOiBQbHVnaW5NZW51SXRlbSk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFtZW51SXRlbSB8fCAhbWVudUl0ZW0ucm91dGVyTGluaykgcmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdC8vIEdldCBjdXJyZW50IFVSTCBwYXRoIGFmdGVyIHRoZSBoYXNoXHJcblx0XHRjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cdFx0Y29uc3QgaGFzaFVybCA9IGN1cnJlbnRVcmwuaW5kZXhPZignIycpID4gLTEgPyBjdXJyZW50VXJsLnNwbGl0KCcjJylbMV0gOiBjdXJyZW50VXJsO1xyXG5cclxuXHRcdC8vIENoZWNrIGZvciBleGFjdCBtYXRjaCBmaXJzdFxyXG5cdFx0aWYgKGhhc2hVcmwgPT09IG1lbnVJdGVtLnJvdXRlckxpbmsgfHwgaGFzaFVybCA9PT0gJy8nICsgbWVudUl0ZW0ucm91dGVyTGluaykge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBpZiBjdXJyZW50IFVSTCBzdGFydHMgd2l0aCB0aGUgcm91dGVyTGluayAoaGFuZGxlcyBjaGlsZCByb3V0ZXMpXHJcblx0XHRpZiAoXHJcblx0XHRcdG1lbnVJdGVtLnJvdXRlckxpbmsgIT09ICcvJyAmJlxyXG5cdFx0XHQoaGFzaFVybC5zdGFydHNXaXRoKG1lbnVJdGVtLnJvdXRlckxpbmsgKyAnLycpIHx8IGhhc2hVcmwuc3RhcnRzV2l0aCgnLycgKyBtZW51SXRlbS5yb3V0ZXJMaW5rICsgJy8nKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBjaGlsZCBpdGVtcyBpZiB0aGV5IGV4aXN0XHJcblx0XHRpZiAobWVudUl0ZW0uaXRlbXMgJiYgbWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRyZXR1cm4gbWVudUl0ZW0uaXRlbXMuc29tZSgoY2hpbGRJdGVtKSA9PiB0aGlzLmlzQWN0aXZlUm91dGUoY2hpbGRJdGVtKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdFx0dGhpcy5pbml0aWFsaXplTWVudSgpO1xyXG5cdFx0dGhpcy51cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpO1xyXG5cclxuXHRcdC8vIFN1YnNjcmliZSB0byByb3V0ZSBjaGFuZ2VzIHRvIGhhbmRsZSBzZWNvbmRhcnkgc2lkZWJhciBjbG9zaW5nXHJcblx0XHR0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xyXG5cdFx0XHQucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0XHQvLyBVcGRhdGUgYWN0aXZlIG1lbnUgYmFzZWQgb24gdGhlIG5ldyByb3V0ZVxyXG5cdFx0XHRcdHRoaXMudXBkYXRlQWN0aXZlTWVudUZyb21DdXJyZW50Um91dGUoKTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0Ly8gU3Vic2NyaWJlIHRvIG92ZXJsYXkgbWVudSBvcGVuIG5vdGlmaWNhdGlvbnNcclxuXHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uID0gdGhpcy5sYXlvdXRTZXJ2aWNlLm92ZXJsYXlPcGVuJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKHRydWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0aWYgKHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5hY3Rpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHQvLyBJbml0aWFsaXplIHRoZSBtZW51IHdpdGggcHJvcGVyIGFjdGl2ZSBzdGF0ZVxyXG5cdGluaXRpYWxpemVNZW51KCkge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0obnVsbCk7XHJcblx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gbnVsbDtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoZmFsc2UpO1xyXG5cdFx0dGhpcy51cGRhdGVNZW51SXRlbXMoKTtcclxuXHR9XHJcblxyXG5cdHVwZGF0ZU1lbnVGcm9tUm9vdEtleShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuXHJcblx0XHRpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IG1lbnVJdGVtcy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3QgaXRlbSA9IG1lbnVJdGVtc1tpbmRleF07XHJcblx0XHRcdGlmICghaXRlbS5zZXBhcmF0b3IpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShpbmRleCk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IGl0ZW07XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh0cnVlKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dXBkYXRlTWVudUl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5jYWNoZWRNZW51SXRlbXMgPSBicmlkZ2UuaXNIb3N0TW9kZSgpID8gYnJpZGdlLmhvc3RNZW51SXRlbXMoKSA6IHRoaXMubWVudVNlcnZpY2UubWVudUl0ZW1zKCk7XHJcblx0fVxyXG5cclxuXHRnZXRNZW51SXRlbXMoKTogUGx1Z2luTWVudUl0ZW1bXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYWNoZWRNZW51SXRlbXM7XHJcblx0fVxyXG5cclxuXHRzZWxlY3RNYWluSXRlbShpbmRleDogbnVtYmVyLCBpdGVtOiBQbHVnaW5NZW51SXRlbSk6IHZvaWQge1xyXG5cdFx0Ly8gSGFuZGxlIGFjdGlvbiBpdGVtcyBhdCB0b3AgbGV2ZWxcclxuXHRcdGlmIChpdGVtLmFjdGlvbiAmJiAoIWl0ZW0uaXRlbXMgfHwgaXRlbS5pdGVtcy5sZW5ndGggPT09IDApKSB7XHJcblx0XHRcdHRoaXMub25BY3Rpb25JdGVtQ2xpY2soaXRlbSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoaXRlbS5yb3V0ZXJMaW5rICYmICghaXRlbS5pdGVtcyB8fCBpdGVtLml0ZW1zLmxlbmd0aCA9PT0gMCkpIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZChmYWxzZSk7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWxlY3RlZE1haW5JdGVtKGluZGV4KTtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IGl0ZW07XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnJvdXRlckxpbmtdKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEhhbmRsZSByZWd1bGFyIG1lbnUgaXRlbXMgd2l0aCBzdWJtZW51XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZE1haW5JdGVtID09PSBpbmRleCkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2UudG9nZ2xlU2Vjb25kYXJ5U2lkZWJhcigpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0oaW5kZXgpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gaXRlbTtcclxuXHJcblx0XHRcdGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQodHJ1ZSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZChmYWxzZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBGb3IgbW9iaWxlIGRldmljZXMsIGVuc3VyZSB0aGUgbWVudSBzdGF5cyBvcGVuXHJcblx0XHRpZiAodGhpcy5pc01vYmlsZSgpKSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlID0gdHJ1ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRvZ2dsZVNlY29uZGFyeVNpZGViYXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2UudG9nZ2xlU2Vjb25kYXJ5U2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0aXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmlzTW9iaWxlKCk7XHJcblx0fVxyXG5cclxuXHQvLyBMaXN0ZW4gZm9yIHJlc2l6ZSBldmVudHMgLSBub3cgaGFuZGxlZCBtb3JlIGVmZmljaWVudGx5IGJ5IGxheW91dCBzZXJ2aWNlXHJcblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcblx0b25SZXNpemUoKSB7XHJcblx0XHRpZiAoIXRoaXMuaXNNb2JpbGUoKSAmJiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2UuY2xvc2VNb2JpbGVNZW51KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR1cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IHRoaXMuZ2V0TWVudUl0ZW1zKCk7XHJcblxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBtZW51SXRlbXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Y29uc3QgbWVudUl0ZW0gPSBtZW51SXRlbXNbaV07XHJcblx0XHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGUobWVudUl0ZW0pKSB7XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0oaSk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IG1lbnVJdGVtO1xyXG5cclxuXHRcdFx0XHRpZiAobWVudUl0ZW0uaXRlbXMgJiYgbWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0aWYgKCF0aGlzLmlzTW9iaWxlKCkgJiYgIXRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkICYmICF0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKHRydWUpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKGZhbHNlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRpc0hhdmVTZWxlY3RlZENoaWxkSXRlbShpdGVtOiBQbHVnaW5NZW51SXRlbSk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFpdGVtIHx8ICFpdGVtLml0ZW1zIHx8IGl0ZW0uaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBjaGlsZCBvZiBpdGVtLml0ZW1zKSB7XHJcblx0XHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGUoY2hpbGQpKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChjaGlsZC5pdGVtcyAmJiBjaGlsZC5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNIYXZlU2VsZWN0ZWRDaGlsZEl0ZW0oY2hpbGQpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRnZXRMb2NhbFRleHQodGV4dDogYW55KTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLnRyYW5zbGF0ZUpzb25QaXBlLnRyYW5zZm9ybSh0ZXh0KTtcclxuXHR9XHJcblxyXG5cdGdldEFjdGlvbkl0ZW1LZXkoaXRlbTogUGx1Z2luTWVudUl0ZW0pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGl0ZW0uYWN0aW9uPy51cmwgKyAnfCcgKyBpdGVtLmFjdGlvbj8uc3VjY2Vzc1JvdXRlO1xyXG5cdH1cclxuXHJcblx0aXNBY3Rpb25Mb2FkaW5nKGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuaGFzKHRoaXMuZ2V0QWN0aW9uSXRlbUtleShpdGVtKSk7XHJcblx0fVxyXG5cclxuXHRvbkFjdGlvbkl0ZW1DbGljayhpdGVtOiBQbHVnaW5NZW51SXRlbSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0aWYgKGV2ZW50KSB7XHJcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghaXRlbS5hY3Rpb24gfHwgdGhpcy5pc0FjdGlvbkxvYWRpbmcoaXRlbSkpIHJldHVybjtcclxuXHJcblx0XHQvLyBDYW5jZWwgYW55IHByZXZpb3VzIGFjdGlvbiByZXF1ZXN0XHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHRjb25zdCBrZXkgPSB0aGlzLmdldEFjdGlvbkl0ZW1LZXkoaXRlbSk7XHJcblx0XHR0aGlzLmFjdGlvbkxvYWRpbmdJdGVtcy5hZGQoa2V5KTtcclxuXHJcblx0XHRjb25zdCByZXF1ZXN0JCA9XHJcblx0XHRcdGl0ZW0uYWN0aW9uLm1ldGhvZCA9PT0gJ0dFVCdcclxuXHRcdFx0XHQ/IHRoaXMuaHR0cC5nZXQoaXRlbS5hY3Rpb24udXJsKVxyXG5cdFx0XHRcdDogdGhpcy5odHRwLnBvc3QoaXRlbS5hY3Rpb24udXJsLCBpdGVtLmFjdGlvbi5ib2R5ID8/IHt9KTtcclxuXHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbiA9IHJlcXVlc3QkLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0Y29uc3Qgcm91dGUgPSB0aGlzLmJ1aWxkU3VjY2Vzc1JvdXRlKGl0ZW0uYWN0aW9uISwgcmVzcG9uc2UpO1xyXG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuYWN0aW9uTG9hZGluZ0l0ZW1zLmRlbGV0ZShrZXkpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRTdWNjZXNzUm91dGUoYWN0aW9uOiBQbHVnaW5NZW51SXRlbVsnYWN0aW9uJ10sIHJlc3BvbnNlOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFhY3Rpb24/LnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KSByZXR1cm4gYWN0aW9uPy5zdWNjZXNzUm91dGUgPz8gJy8nO1xyXG5cclxuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUJ5UGF0aChyZXNwb25zZSwgYWN0aW9uLnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KTtcclxuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gYWN0aW9uLnN1Y2Nlc3NSb3V0ZTtcclxuXHJcblx0XHRyZXR1cm4gYCR7YWN0aW9uLnN1Y2Nlc3NSb3V0ZX0vJHt2YWx1ZX1gO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRWYWx1ZUJ5UGF0aChvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcclxuXHRcdGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50LCBrZXkpID0+IHtcclxuXHRcdFx0aWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCB8fCBjdXJyZW50ID09PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdFx0Ly8gSGFuZGxlIGFycmF5IGFjY2VzcyBsaWtlICdyZXN1bHRbMF0nXHJcblx0XHRcdGNvbnN0IGFycmF5TWF0Y2ggPSBrZXkubWF0Y2goL14oLis/KVxcWyhcXGQrKVxcXSQvKTtcclxuXHRcdFx0aWYgKGFycmF5TWF0Y2gpIHtcclxuXHRcdFx0XHRjb25zdCBhcnJheUtleSA9IGFycmF5TWF0Y2hbMV07XHJcblx0XHRcdFx0Y29uc3QgaW5kZXggPSBwYXJzZUludChhcnJheU1hdGNoWzJdLCAxMCk7XHJcblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRbYXJyYXlLZXldPy5baW5kZXhdO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gY3VycmVudFtrZXldO1xyXG5cdFx0fSwgb2JqKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZVNpZGViYXIoKSB7XHJcblx0XHQvLyBFxJ9lciBzZcOnaWxpIGJpciBhbmEgbWVuw7wgw7bEn2VzaSB2YXJzYSB2ZSBhbHQgbWVuw7xsZXJpIHZhcnNhIHRvZ2dsZSB5YXBhYmlsaXJpelxyXG5cdFx0aWYgKHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0gJiYgdGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbS5pdGVtcyAmJiB0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5zaWRlYmFyRXhwYW5kZWQgPSAhdGhpcy5zaWRlYmFyRXhwYW5kZWQ7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuc2lkZWJhckV4cGFuZGVkKSB7XHJcblx0XHRcdHRoaXMuc2lkZWJhckV4cGFuZGVkID0gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXctbGF5b3V0LXNpZGViYXJcIiA+XHJcblx0PCEtLSBNYWluIHNpZGViYXIgKGZpcnN0IGxldmVsKSAtLT5cclxuXHQ8ZGl2IGNsYXNzPVwibWFpbi1zaWRlYmFyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibWFpbi1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0PHVsIGNsYXNzPVwibWFpbi1tZW51XCI+XHJcblx0XHRcdFx0QGZvcihpdGVtIG9mIGdldE1lbnVJdGVtcygpOyB0cmFjayBpdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRAaWYoIWl0ZW0uc2VwYXJhdG9yKXtcclxuXHRcdFx0XHRcdFx0PGxpXHJcblx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShpdGVtKSB8fCBpc0hhdmVTZWxlY3RlZENoaWxkSXRlbShpdGVtKX1cIlxyXG5cdFx0XHRcdFx0XHQoY2xpY2spPVwic2VsZWN0TWFpbkl0ZW0oaSwgaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiKGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKVwiXHJcblx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtYWluLW1lbnUtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPHNtYWxsIGNsYXNzPVwibWVudS1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zbWFsbD4gLS0+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvdWw+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHRcdCBAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0gJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMgJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblxyXG5cdFx0XHQgPGRpdiBjbGFzcz1cInNpZGViYXItdG9nZ2xlLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdCA8YnV0dG9uIGNsYXNzPVwic2lkZWJhci1jaXJjbGUtdG9nZ2xlLWJ0blwiIChjbGljayk9XCJ0b2dnbGVTaWRlYmFyKClcIj5cclxuXHRcdFx0XHRcdCA8aSBjbGFzcz1cInBpXCIgW25nQ2xhc3NdPVwic2lkZWJhckV4cGFuZGVkID8gJ3BpLWFuZ2xlLWxlZnQnIDogJ3BpLWFuZ2xlLXJpZ2h0J1wiPjwvaT5cclxuXHRcdFx0XHQgPC9idXR0b24+XHJcblx0XHRcdCA8L2Rpdj5cclxuXHRcdCB9XHJcblxyXG5cdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgKHNlY29uZCBsZXZlbCkgLS0+XHJcblx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyXCIgW25nQ2xhc3NdPVwieydleHBhbmRlZCc6IHNpZGViYXJFeHBhbmRlZH1cIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJzZWNvbmRhcnktY29udGVudC13cmFwcGVyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcblx0XHRcdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgY29udGVudCAtLT5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0pe1xyXG5cdFx0XHRcdFx0PHVsIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnVcIj5cclxuXHRcdFx0XHRcdFx0QGZvcihzdWJJdGVtIG9mIHNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zOyB0cmFjayBzdWJJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBtZW51IGl0ZW0gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRAaWYoc3ViSXRlbS5hY3Rpb24pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoc3ViSXRlbSl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2soc3ViSXRlbSwgJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKHN1Ykl0ZW0pKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJzdWJtZW51LWljb24gcGkgcGktc3BpbiBwaS1zcGlubmVyXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJzdWJtZW51LWxhYmVsXCI+e3sgc3ViSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzdWJJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIFJlZ3VsYXIgbWVudSBpdGVtIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShzdWJJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGEgW3JvdXRlckxpbmtdPVwic3ViSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwic3VibWVudS1sYWJlbFwiPnt7IHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gQWx3YXlzIHJlbmRlciBzdWJtZW51IGlmIGl0IGV4aXN0cyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0IEBpZihzdWJJdGVtLml0ZW1zICYmIHN1Ykl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IDx1bCBjbGFzcz1cInRlcnRpYXJ5LW1lbnUgYWx3YXlzLW9wZW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IoY2hpbGRJdGVtIG9mIHN1Ykl0ZW0uaXRlbXM7IHRyYWNrIGNoaWxkSXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBpdGVtIGF0IHRlcnRpYXJ5IGxldmVsIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoY2hpbGRJdGVtLmFjdGlvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoY2hpbGRJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwidGVydGlhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhjaGlsZEl0ZW0sICRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKGNoaWxkSXRlbSkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj48aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT4ge3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRlcnRpYXJ5LWxhYmVsXCI+e3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShjaGlsZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIFtyb3V0ZXJMaW5rXT1cImNoaWxkSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInRlcnRpYXJ5LW1lbnUtbGlua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj57eyBjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gQWx3YXlzIHJlbmRlciBkZWVwZXIgbGV2ZWxzIGlmIHRoZXkgZXhpc3QsIGFsc28gdmlzaWJsZSBieSBkZWZhdWx0IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihjaGlsZEl0ZW0uaXRlbXMgJiYgY2hpbGRJdGVtLml0ZW1zLmxlbmd0aCA+IDApe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHVsIGNsYXNzPVwibmVzdGVkLW1lbnUgYWx3YXlzLW9wZW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGZvcihuZXN0ZWRJdGVtIG9mIGNoaWxkSXRlbS5pdGVtczsgdHJhY2sgbmVzdGVkSXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihuZXN0ZWRJdGVtLmFjdGlvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwibmVzdGVkLW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcobmVzdGVkSXRlbSl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwibmVzdGVkLW1lbnUtbGluayBpcy1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhuZXN0ZWRJdGVtLCAkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKG5lc3RlZEl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ25lc3RlZCcpID8gKG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihpc0FjdGlvbkxvYWRpbmcobmVzdGVkSXRlbSkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJuZXN0ZWQtbGFiZWxcIj48aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT4ge3sgbmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5lc3RlZC1sYWJlbFwiPnt7IG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGkgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm5lc3RlZC1tZW51LWl0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZVJvdXRlKG5lc3RlZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgW3JvdXRlckxpbmtdPVwibmVzdGVkSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibmVzdGVkLW1lbnUtbGlua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobmVzdGVkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAnbmVzdGVkJykgPyAobmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5lc3RlZC1sYWJlbFwiPnt7IG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbGk+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3VsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCA8L3VsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgfVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC91bD5cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0XHJcbjwvZGl2PlxyXG4iXX0=
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9leHBhbmRhYmxlTWVudS9leHBhbmRhYmxlLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2V4cGFuZGFibGVNZW51L2V4cGFuZGFibGUtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUloRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFZcEQsTUFBTSxPQUFPLHVCQUF1QjtJQVVuQyxJQUFJLGVBQWU7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFrQ0QsWUFDUyxpQkFBb0MsRUFDcEMsV0FBMkIsRUFDM0IsTUFBYyxF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LENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsYUFBYTtRQUNaLGdGQUFnRjtRQUNoRixJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hILElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzlDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDO0lBQ0YsQ0FBQzsrR0F6VlcsdUJBQXVCO21HQUF2Qix1QkFBdUIsMEhBRnhCLENBQUMsaUJBQWlCLENBQUMsMEJDeEIvQixndVJBeUlBLDRDRG5IVyxVQUFVLG9PQUFFLE9BQU8sbUZBQUUsYUFBYTs7NEZBSWhDLHVCQUF1QjtrQkFQbkMsU0FBUztpQ0FDRyxJQUFJLFlBQ04scUJBQXFCLFdBQ3RCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsYUFFbEMsQ0FBQyxpQkFBaUIsQ0FBQzswUEFpTzlCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBQbHVnaW5NZW51SXRlbSB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUpzb25QaXBlIH0gZnJvbSAnYXJpbC91dGlsL3BpcGVzJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubWVudS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtZXhwYW5kYWJsZS1tZW51JyxcclxuXHRpbXBvcnRzOiBbUm91dGVyTGluaywgTmdDbGFzcywgVG9vbHRpcE1vZHVsZV0sXHJcblx0dGVtcGxhdGVVcmw6ICdleHBhbmRhYmxlLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHByb3ZpZGVyczogW1RyYW5zbGF0ZUpzb25QaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXhwYW5kYWJsZU1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblx0YWN0aXZlTGFuZzogU2lnbmFsPHN0cmluZz47XHJcblx0b3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHRyb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cdHVzZXJuYW1lOiBzdHJpbmc7XHJcblxyXG5cdGNhY2hlZE1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuXHRzZWxlY3RlZE1haW5NZW51SXRlbTogUGx1Z2luTWVudUl0ZW0gfCBudWxsID0gbnVsbDtcclxuXHJcblx0Z2V0IHNpZGViYXJFeHBhbmRlZCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkO1xyXG5cdH1cclxuXHJcblx0c2V0IHNpZGViYXJFeHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHR0b29sdGlwVGV4dCA9IHtcclxuXHRcdHRvZ2dsZUJ1dHRvbjoge1xyXG5cdFx0XHRleHBhbmRlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgR2l6bGUnLFxyXG5cdFx0XHRcdGVuOiAnSGlkZSBNZW51J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjb2xsYXBzZWQ6IHtcclxuXHRcdFx0XHR0cjogJ01lbsO8ecO8IEfDtnN0ZXInLFxyXG5cdFx0XHRcdGVuOiAnU2hvdyBNZW51J1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bG9ja0J1dHRvbjoge1xyXG5cdFx0XHRsb2NrZWQ6IHtcclxuXHRcdFx0XHR0cjogJ090b21hdGlrIEthcGFubWF5xLEgQcOnJyxcclxuXHRcdFx0XHRlbjogJ0VuYWJsZSBBdXRvLUNsb3NlJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR1bmxvY2tlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgS2lsaXRsZScsXHJcblx0XHRcdFx0ZW46ICdMb2NrIE1lbnUnXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IE1BWF9MRU5HVEggPSB7XHJcblx0XHRtYWluOiA4LFxyXG5cdFx0c2Vjb25kYXJ5OiAyMCxcclxuXHRcdHRlcnRpYXJ5OiAyMFxyXG5cdH07XHJcblxyXG5cdGFjdGlvbkxvYWRpbmdJdGVtcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cdHByaXZhdGUgYWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHRyYW5zbGF0ZUpzb25QaXBlOiBUcmFuc2xhdGVKc29uUGlwZSxcclxuXHRcdHByaXZhdGUgbWVudVNlcnZpY2U6IEFwcE1lbnVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHByaXZhdGUga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG5cdCkge1xyXG5cdFx0dGhpcy5hY3RpdmVMYW5nID0gdG9TaWduYWwodGhpcy50cmFuc2xvY29TZXJ2aWNlLmxhbmdDaGFuZ2VzJCwgeyBpbml0aWFsVmFsdWU6ICd0cicgfSk7XHJcblx0XHR0aGlzLnVzZXJuYW1lID0gdGhpcy5rZXljbG9hay5nZXRVc2VybmFtZSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xyXG5cdH1cclxuXHJcblx0Ly8gR2V0dGVyIGZvciBsYXlvdXQgc2VydmljZSBzdGF0ZXNcclxuXHRnZXQgc2VsZWN0ZWRNYWluSXRlbSgpOiBudW1iZXIgfCBudWxsIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2VsZWN0ZWRNYWluSXRlbTtcclxuXHR9XHJcblxyXG5cdGdldCBzZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZDtcclxuXHR9XHJcblxyXG5cdC8vIENoZWNrIGlmIHRleHQgaXMgdHJ1bmNhdGVkIGFuZCBuZWVkcyB0b29sdGlwXHJcblx0aXNUZXh0VHJ1bmNhdGVkKFxyXG5cdFx0bGFiZWw6IGFueSxcclxuXHRcdGxhbmc6IHN0cmluZyB8IG51bGwsXHJcblx0XHRtZW51VHlwZTogJ21haW4nIHwgJ3NlY29uZGFyeScgfCAndGVydGlhcnknIHwgJ25lc3RlZCcgPSAnc2Vjb25kYXJ5J1xyXG5cdCk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFsYWJlbCB8fCAhbGFuZyB8fCAhbGFiZWxbbGFuZ10pIHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRjb25zdCB0ZXh0ID0gbGFiZWxbbGFuZ107XHJcblx0XHRjb25zdCB0ZXh0TGVuZ3RoID0gdGV4dC5sZW5ndGg7XHJcblx0XHRjb25zdCBtYXhMZW5ndGggPSBtZW51VHlwZSA9PT0gJ25lc3RlZCcgPyB0aGlzLk1BWF9MRU5HVEgudGVydGlhcnkgOiB0aGlzLk1BWF9MRU5HVEhbbWVudVR5cGVdO1xyXG5cdFx0cmV0dXJuIHRleHRMZW5ndGggPiBtYXhMZW5ndGg7XHJcblx0fVxyXG5cclxuXHQvLyBSZWN1cnNpdmVseSBjaGVjayBpZiBhIG1lbnUgaXRlbSBvciBpdHMgY2hpbGRyZW4gbWF0Y2ggdGhlIGN1cnJlbnQgcm91dGVcclxuXHRpc0FjdGl2ZVJvdXRlKG1lbnVJdGVtOiBQbHVnaW5NZW51SXRlbSk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFtZW51SXRlbSB8fCAhbWVudUl0ZW0ucm91dGVyTGluaykgcmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdC8vIEdldCBjdXJyZW50IFVSTCBwYXRoIGFmdGVyIHRoZSBoYXNoXHJcblx0XHRjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cdFx0Y29uc3QgaGFzaFVybCA9IGN1cnJlbnRVcmwuaW5kZXhPZignIycpID4gLTEgPyBjdXJyZW50VXJsLnNwbGl0KCcjJylbMV0gOiBjdXJyZW50VXJsO1xyXG5cclxuXHRcdC8vIENoZWNrIGZvciBleGFjdCBtYXRjaCBmaXJzdFxyXG5cdFx0aWYgKGhhc2hVcmwgPT09IG1lbnVJdGVtLnJvdXRlckxpbmsgfHwgaGFzaFVybCA9PT0gJy8nICsgbWVudUl0ZW0ucm91dGVyTGluaykge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBpZiBjdXJyZW50IFVSTCBzdGFydHMgd2l0aCB0aGUgcm91dGVyTGluayAoaGFuZGxlcyBjaGlsZCByb3V0ZXMpXHJcblx0XHRpZiAoXHJcblx0XHRcdG1lbnVJdGVtLnJvdXRlckxpbmsgIT09ICcvJyAmJlxyXG5cdFx0XHQoaGFzaFVybC5zdGFydHNXaXRoKG1lbnVJdGVtLnJvdXRlckxpbmsgKyAnLycpIHx8IGhhc2hVcmwuc3RhcnRzV2l0aCgnLycgKyBtZW51SXRlbS5yb3V0ZXJMaW5rICsgJy8nKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBjaGlsZCBpdGVtcyBpZiB0aGV5IGV4aXN0XHJcblx0XHRpZiAobWVudUl0ZW0uaXRlbXMgJiYgbWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRyZXR1cm4gbWVudUl0ZW0uaXRlbXMuc29tZSgoY2hpbGRJdGVtKSA9PiB0aGlzLmlzQWN0aXZlUm91dGUoY2hpbGRJdGVtKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdFx0dGhpcy5pbml0aWFsaXplTWVudSgpO1xyXG5cdFx0dGhpcy51cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpO1xyXG5cclxuXHRcdC8vIFN1YnNjcmliZSB0byByb3V0ZSBjaGFuZ2VzIHRvIGhhbmRsZSBzZWNvbmRhcnkgc2lkZWJhciBjbG9zaW5nXHJcblx0XHR0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xyXG5cdFx0XHQucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0XHQvLyBVcGRhdGUgYWN0aXZlIG1lbnUgYmFzZWQgb24gdGhlIG5ldyByb3V0ZVxyXG5cdFx0XHRcdHRoaXMudXBkYXRlQWN0aXZlTWVudUZyb21DdXJyZW50Um91dGUoKTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0Ly8gU3Vic2NyaWJlIHRvIG92ZXJsYXkgbWVudSBvcGVuIG5vdGlmaWNhdGlvbnNcclxuXHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uID0gdGhpcy5sYXlvdXRTZXJ2aWNlLm92ZXJsYXlPcGVuJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKHRydWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0aWYgKHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5hY3Rpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHQvLyBJbml0aWFsaXplIHRoZSBtZW51IHdpdGggcHJvcGVyIGFjdGl2ZSBzdGF0ZVxyXG5cdGluaXRpYWxpemVNZW51KCkge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0obnVsbCk7XHJcblx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gbnVsbDtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoZmFsc2UpO1xyXG5cdFx0dGhpcy51cGRhdGVNZW51SXRlbXMoKTtcclxuXHR9XHJcblxyXG5cdHVwZGF0ZU1lbnVGcm9tUm9vdEtleShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuXHJcblx0XHRpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IG1lbnVJdGVtcy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3QgaXRlbSA9IG1lbnVJdGVtc1tpbmRleF07XHJcblx0XHRcdGlmICghaXRlbS5zZXBhcmF0b3IpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShpbmRleCk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IGl0ZW07XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh0cnVlKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dXBkYXRlTWVudUl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5jYWNoZWRNZW51SXRlbXMgPSBicmlkZ2UuaXNIb3N0TW9kZSgpID8gYnJpZGdlLmhvc3RNZW51SXRlbXMoKSA6IHRoaXMubWVudVNlcnZpY2UubWVudUl0ZW1zKCk7XHJcblx0fVxyXG5cclxuXHRnZXRNZW51SXRlbXMoKTogUGx1Z2luTWVudUl0ZW1bXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYWNoZWRNZW51SXRlbXM7XHJcblx0fVxyXG5cclxuXHRzZWxlY3RNYWluSXRlbShpbmRleDogbnVtYmVyLCBpdGVtOiBQbHVnaW5NZW51SXRlbSk6IHZvaWQge1xyXG5cdFx0Ly8gSGFuZGxlIGFjdGlvbiBpdGVtcyBhdCB0b3AgbGV2ZWxcclxuXHRcdGlmIChpdGVtLmFjdGlvbiAmJiAoIWl0ZW0uaXRlbXMgfHwgaXRlbS5pdGVtcy5sZW5ndGggPT09IDApKSB7XHJcblx0XHRcdHRoaXMub25BY3Rpb25JdGVtQ2xpY2soaXRlbSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoaXRlbS5yb3V0ZXJMaW5rICYmICghaXRlbS5pdGVtcyB8fCBpdGVtLml0ZW1zLmxlbmd0aCA9PT0gMCkpIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZChmYWxzZSk7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWxlY3RlZE1haW5JdGVtKGluZGV4KTtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IGl0ZW07XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnJvdXRlckxpbmtdKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEhhbmRsZSByZWd1bGFyIG1lbnUgaXRlbXMgd2l0aCBzdWJtZW51XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZE1haW5JdGVtID09PSBpbmRleCkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2UudG9nZ2xlU2Vjb25kYXJ5U2lkZWJhcigpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0oaW5kZXgpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gaXRlbTtcclxuXHJcblx0XHRcdGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQodHJ1ZSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZChmYWxzZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBGb3IgbW9iaWxlIGRldmljZXMsIGVuc3VyZSB0aGUgbWVudSBzdGF5cyBvcGVuXHJcblx0XHRpZiAodGhpcy5pc01vYmlsZSgpKSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlID0gdHJ1ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRvZ2dsZVNlY29uZGFyeVNpZGViYXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2UudG9nZ2xlU2Vjb25kYXJ5U2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0aXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmlzTW9iaWxlKCk7XHJcblx0fVxyXG5cclxuXHQvLyBMaXN0ZW4gZm9yIHJlc2l6ZSBldmVudHMgLSBub3cgaGFuZGxlZCBtb3JlIGVmZmljaWVudGx5IGJ5IGxheW91dCBzZXJ2aWNlXHJcblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcblx0b25SZXNpemUoKSB7XHJcblx0XHRpZiAoIXRoaXMuaXNNb2JpbGUoKSAmJiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2UuY2xvc2VNb2JpbGVNZW51KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR1cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IHRoaXMuZ2V0TWVudUl0ZW1zKCk7XHJcblxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBtZW51SXRlbXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Y29uc3QgbWVudUl0ZW0gPSBtZW51SXRlbXNbaV07XHJcblx0XHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGUobWVudUl0ZW0pKSB7XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0oaSk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IG1lbnVJdGVtO1xyXG5cclxuXHRcdFx0XHRpZiAobWVudUl0ZW0uaXRlbXMgJiYgbWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0aWYgKCF0aGlzLmlzTW9iaWxlKCkgJiYgIXRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkICYmICF0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKHRydWUpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKGZhbHNlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRpc0hhdmVTZWxlY3RlZENoaWxkSXRlbShpdGVtOiBQbHVnaW5NZW51SXRlbSk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFpdGVtIHx8ICFpdGVtLml0ZW1zIHx8IGl0ZW0uaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBjaGlsZCBvZiBpdGVtLml0ZW1zKSB7XHJcblx0XHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGUoY2hpbGQpKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChjaGlsZC5pdGVtcyAmJiBjaGlsZC5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNIYXZlU2VsZWN0ZWRDaGlsZEl0ZW0oY2hpbGQpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRnZXRMb2NhbFRleHQodGV4dDogYW55KTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLnRyYW5zbGF0ZUpzb25QaXBlLnRyYW5zZm9ybSh0ZXh0KTtcclxuXHR9XHJcblxyXG5cdGdldEFjdGlvbkl0ZW1LZXkoaXRlbTogUGx1Z2luTWVudUl0ZW0pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGl0ZW0uYWN0aW9uPy51cmwgKyAnfCcgKyBpdGVtLmFjdGlvbj8uc3VjY2Vzc1JvdXRlO1xyXG5cdH1cclxuXHJcblx0aXNBY3Rpb25Mb2FkaW5nKGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuaGFzKHRoaXMuZ2V0QWN0aW9uSXRlbUtleShpdGVtKSk7XHJcblx0fVxyXG5cclxuXHRvbkFjdGlvbkl0ZW1DbGljayhpdGVtOiBQbHVnaW5NZW51SXRlbSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0aWYgKGV2ZW50KSB7XHJcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghaXRlbS5hY3Rpb24gfHwgdGhpcy5pc0FjdGlvbkxvYWRpbmcoaXRlbSkpIHJldHVybjtcclxuXHJcblx0XHQvLyBDYW5jZWwgYW55IHByZXZpb3VzIGFjdGlvbiByZXF1ZXN0XHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHRjb25zdCBrZXkgPSB0aGlzLmdldEFjdGlvbkl0ZW1LZXkoaXRlbSk7XHJcblx0XHR0aGlzLmFjdGlvbkxvYWRpbmdJdGVtcy5hZGQoa2V5KTtcclxuXHJcblx0XHRjb25zdCByZXF1ZXN0JCA9XHJcblx0XHRcdGl0ZW0uYWN0aW9uLm1ldGhvZCA9PT0gJ0dFVCdcclxuXHRcdFx0XHQ/IHRoaXMuaHR0cC5nZXQoaXRlbS5hY3Rpb24udXJsKVxyXG5cdFx0XHRcdDogdGhpcy5odHRwLnBvc3QoaXRlbS5hY3Rpb24udXJsLCBpdGVtLmFjdGlvbi5ib2R5ID8/IHt9KTtcclxuXHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbiA9IHJlcXVlc3QkLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0Y29uc3Qgcm91dGUgPSB0aGlzLmJ1aWxkU3VjY2Vzc1JvdXRlKGl0ZW0uYWN0aW9uISwgcmVzcG9uc2UpO1xyXG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuYWN0aW9uTG9hZGluZ0l0ZW1zLmRlbGV0ZShrZXkpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRTdWNjZXNzUm91dGUoYWN0aW9uOiBQbHVnaW5NZW51SXRlbVsnYWN0aW9uJ10sIHJlc3BvbnNlOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFhY3Rpb24/LnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KSByZXR1cm4gYWN0aW9uPy5zdWNjZXNzUm91dGUgPz8gJy8nO1xyXG5cclxuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUJ5UGF0aChyZXNwb25zZSwgYWN0aW9uLnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KTtcclxuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gYWN0aW9uLnN1Y2Nlc3NSb3V0ZTtcclxuXHJcblx0XHRyZXR1cm4gYCR7YWN0aW9uLnN1Y2Nlc3NSb3V0ZX0vJHt2YWx1ZX1gO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRWYWx1ZUJ5UGF0aChvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcclxuXHRcdGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50LCBrZXkpID0+IHtcclxuXHRcdFx0aWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCB8fCBjdXJyZW50ID09PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdFx0Ly8gSGFuZGxlIGFycmF5IGFjY2VzcyBsaWtlICdyZXN1bHRbMF0nXHJcblx0XHRcdGNvbnN0IGFycmF5TWF0Y2ggPSBrZXkubWF0Y2goL14oLis/KVxcWyhcXGQrKVxcXSQvKTtcclxuXHRcdFx0aWYgKGFycmF5TWF0Y2gpIHtcclxuXHRcdFx0XHRjb25zdCBhcnJheUtleSA9IGFycmF5TWF0Y2hbMV07XHJcblx0XHRcdFx0Y29uc3QgaW5kZXggPSBwYXJzZUludChhcnJheU1hdGNoWzJdLCAxMCk7XHJcblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRbYXJyYXlLZXldPy5baW5kZXhdO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gY3VycmVudFtrZXldO1xyXG5cdFx0fSwgb2JqKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZVNpZGViYXIoKSB7XHJcblx0XHQvLyBFxJ9lciBzZcOnaWxpIGJpciBhbmEgbWVuw7wgw7bEn2VzaSB2YXJzYSB2ZSBhbHQgbWVuw7xsZXJpIHZhcnNhIHRvZ2dsZSB5YXBhYmlsaXJpelxyXG5cdFx0aWYgKHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0gJiYgdGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbS5pdGVtcyAmJiB0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5zaWRlYmFyRXhwYW5kZWQgPSAhdGhpcy5zaWRlYmFyRXhwYW5kZWQ7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuc2lkZWJhckV4cGFuZGVkKSB7XHJcblx0XHRcdHRoaXMuc2lkZWJhckV4cGFuZGVkID0gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXctbGF5b3V0LXNpZGViYXJcIiA+XHJcblx0PCEtLSBNYWluIHNpZGViYXIgKGZpcnN0IGxldmVsKSAtLT5cclxuXHQ8ZGl2IGNsYXNzPVwibWFpbi1zaWRlYmFyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibWFpbi1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0PHVsIGNsYXNzPVwibWFpbi1tZW51XCI+XHJcblx0XHRcdFx0QGZvcihpdGVtIG9mIGdldE1lbnVJdGVtcygpOyB0cmFjayBpdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRAaWYoIWl0ZW0uc2VwYXJhdG9yKXtcclxuXHRcdFx0XHRcdFx0PGxpXHJcblx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShpdGVtKSB8fCBpc0hhdmVTZWxlY3RlZENoaWxkSXRlbShpdGVtKX1cIlxyXG5cdFx0XHRcdFx0XHQoY2xpY2spPVwic2VsZWN0TWFpbkl0ZW0oaSwgaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiKGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKVwiXHJcblx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtYWluLW1lbnUtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPHNtYWxsIGNsYXNzPVwibWVudS1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zbWFsbD4gLS0+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvdWw+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHRcdCBAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0gJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMgJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblxyXG5cdFx0XHQgPGRpdiBjbGFzcz1cInNpZGViYXItdG9nZ2xlLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdCA8YnV0dG9uIGNsYXNzPVwic2lkZWJhci1jaXJjbGUtdG9nZ2xlLWJ0blwiIChjbGljayk9XCJ0b2dnbGVTaWRlYmFyKClcIj5cclxuXHRcdFx0XHRcdCA8aSBjbGFzcz1cInBpXCIgW25nQ2xhc3NdPVwic2lkZWJhckV4cGFuZGVkID8gJ3BpLWFuZ2xlLWxlZnQnIDogJ3BpLWFuZ2xlLXJpZ2h0J1wiPjwvaT5cclxuXHRcdFx0XHQgPC9idXR0b24+XHJcblx0XHRcdCA8L2Rpdj5cclxuXHRcdCB9XHJcblxyXG5cdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgKHNlY29uZCBsZXZlbCkgLS0+XHJcblx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyXCIgW25nQ2xhc3NdPVwieydleHBhbmRlZCc6IHNpZGViYXJFeHBhbmRlZH1cIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJzZWNvbmRhcnktY29udGVudC13cmFwcGVyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcblx0XHRcdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgY29udGVudCAtLT5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0pe1xyXG5cdFx0XHRcdFx0PHVsIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnVcIj5cclxuXHRcdFx0XHRcdFx0QGZvcihzdWJJdGVtIG9mIHNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zOyB0cmFjayBzdWJJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBtZW51IGl0ZW0gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRAaWYoc3ViSXRlbS5hY3Rpb24pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoc3ViSXRlbSl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2soc3ViSXRlbSwgJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKHN1Ykl0ZW0pKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJzdWJtZW51LWljb24gcGkgcGktc3BpbiBwaS1zcGlubmVyXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJzdWJtZW51LWxhYmVsXCI+e3sgc3ViSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzdWJJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIFJlZ3VsYXIgbWVudSBpdGVtIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShzdWJJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGEgW3JvdXRlckxpbmtdPVwic3ViSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwic3VibWVudS1sYWJlbFwiPnt7IHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gQWx3YXlzIHJlbmRlciBzdWJtZW51IGlmIGl0IGV4aXN0cyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0IEBpZihzdWJJdGVtLml0ZW1zICYmIHN1Ykl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IDx1bCBjbGFzcz1cInRlcnRpYXJ5LW1lbnUgYWx3YXlzLW9wZW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IoY2hpbGRJdGVtIG9mIHN1Ykl0ZW0uaXRlbXM7IHRyYWNrIGNoaWxkSXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBpdGVtIGF0IHRlcnRpYXJ5IGxldmVsIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoY2hpbGRJdGVtLmFjdGlvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoY2hpbGRJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwidGVydGlhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhjaGlsZEl0ZW0sICRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKGNoaWxkSXRlbSkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj48aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT4ge3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRlcnRpYXJ5LWxhYmVsXCI+e3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShjaGlsZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIFtyb3V0ZXJMaW5rXT1cImNoaWxkSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInRlcnRpYXJ5LW1lbnUtbGlua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj57eyBjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gQWx3YXlzIHJlbmRlciBkZWVwZXIgbGV2ZWxzIGlmIHRoZXkgZXhpc3QsIGFsc28gdmlzaWJsZSBieSBkZWZhdWx0IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihjaGlsZEl0ZW0uaXRlbXMgJiYgY2hpbGRJdGVtLml0ZW1zLmxlbmd0aCA+IDApe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHVsIGNsYXNzPVwibmVzdGVkLW1lbnUgYWx3YXlzLW9wZW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGZvcihuZXN0ZWRJdGVtIG9mIGNoaWxkSXRlbS5pdGVtczsgdHJhY2sgbmVzdGVkSXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihuZXN0ZWRJdGVtLmFjdGlvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwibmVzdGVkLW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcobmVzdGVkSXRlbSl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwibmVzdGVkLW1lbnUtbGluayBpcy1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhuZXN0ZWRJdGVtLCAkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKG5lc3RlZEl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ25lc3RlZCcpID8gKG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihpc0FjdGlvbkxvYWRpbmcobmVzdGVkSXRlbSkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJuZXN0ZWQtbGFiZWxcIj48aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT4ge3sgbmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5lc3RlZC1sYWJlbFwiPnt7IG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGkgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm5lc3RlZC1tZW51LWl0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZVJvdXRlKG5lc3RlZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgW3JvdXRlckxpbmtdPVwibmVzdGVkSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibmVzdGVkLW1lbnUtbGlua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobmVzdGVkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAnbmVzdGVkJykgPyAobmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5lc3RlZC1sYWJlbFwiPnt7IG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbGk+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3VsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCA8L3VsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgfVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC91bD5cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0XHJcbjwvZGl2PlxyXG4iXX0=