aril 2.0.1-dev.5 → 2.0.2

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 (343) hide show
  1. package/esm2022/boot/config/apps/src/apps.service.mjs +4 -4
  2. package/esm2022/boot/config/apps/src/auth.guard.mjs +4 -4
  3. package/esm2022/boot/config/apps/src/custom-reuse-outlet.component.mjs +4 -4
  4. package/esm2022/boot/config/apps/src/custom-route-reuse-strategy.class.mjs +4 -4
  5. package/esm2022/boot/config/apps/src/nav-link-context-menu.service.mjs +4 -4
  6. package/esm2022/boot/config/apps/src/nav-link.directive.mjs +4 -4
  7. package/esm2022/boot/config/apps/src/nav.service.mjs +4 -4
  8. package/esm2022/boot/config/apps/src/route-close.service.mjs +4 -4
  9. package/esm2022/boot/config/apps/src/showdowDOMWrapper.mjs +4 -4
  10. package/esm2022/boot/config/apps/src/tab-aware-url-serializer.mjs +4 -4
  11. package/esm2022/boot/host/src/app.component.mjs +4 -4
  12. package/esm2022/boot/mfe/src/app.component.mjs +11 -6
  13. package/esm2022/boot/mfe/src/isolated-location-strategy.mjs +4 -4
  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/selection/src/selection-group.service.mjs +4 -4
  20. package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +4 -4
  21. package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +4 -4
  22. package/esm2022/theme/layout/app/favorite-pages/favorite-pages.service.mjs +4 -4
  23. package/esm2022/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.mjs +4 -4
  24. package/esm2022/theme/layout/app/general-search/general-search.component.mjs +4 -4
  25. package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +4 -4
  26. package/esm2022/theme/layout/app/history/history.service.mjs +4 -4
  27. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +4 -4
  28. package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +4 -4
  29. package/esm2022/theme/layout/app/notifications/notifications-sidebar.component.mjs +4 -4
  30. package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +4 -4
  31. package/esm2022/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.mjs +4 -4
  32. package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +4 -4
  33. package/esm2022/theme/layout/app/profileSidebar/profile.service.mjs +4 -4
  34. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +4 -4
  35. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +4 -4
  36. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +4 -4
  37. package/esm2022/theme/layout/service/app.layout.service.mjs +4 -4
  38. package/esm2022/theme/layout/service/app.menu.service.mjs +4 -4
  39. package/esm2022/theme/layout/service/breadcrumb-publisher.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/tab-session.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 +4 -4
  47. package/esm2022/ui/calendar/src/calendar.component.mjs +4 -4
  48. package/esm2022/ui/charts/src/highCharts/gauge/solid-gauge.component.mjs +4 -4
  49. package/esm2022/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.mjs +4 -4
  50. package/esm2022/ui/checkbox/src/check-box.component.mjs +4 -4
  51. package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +4 -4
  52. package/esm2022/ui/chip/src/chip.component.mjs +4 -4
  53. package/esm2022/ui/collapse-reorder-list/src/collapse-reorder-list.component.mjs +4 -4
  54. package/esm2022/ui/dxField/src/dx-field.component.mjs +4 -4
  55. package/esm2022/ui/editor/src/aril-editor.component.mjs +4 -4
  56. package/esm2022/ui/field/src/field.component.mjs +4 -4
  57. package/esm2022/ui/fileUpload/src/file-upload.component.mjs +4 -4
  58. package/esm2022/ui/form/index.mjs +5 -5
  59. package/esm2022/ui/form/src/form-submit-button.component.mjs +4 -4
  60. package/esm2022/ui/form/src/form.component.mjs +4 -4
  61. package/esm2022/ui/img-viewer/src/img-viewer.component.mjs +4 -4
  62. package/esm2022/ui/json-diff-comparison/src/json-diff.component.mjs +4 -4
  63. package/esm2022/ui/lib/src/form/form-error-message.component.mjs +4 -4
  64. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +4 -4
  65. package/esm2022/ui/lib/src/grid/enum-color-picker.pipe.mjs +4 -4
  66. package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +4 -4
  67. package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +4 -4
  68. package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +4 -4
  69. package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +4 -4
  70. package/esm2022/ui/loader/src/loader.component.mjs +4 -4
  71. package/esm2022/ui/mask/src/mask.component.mjs +4 -4
  72. package/esm2022/ui/multiSelect/src/multi-select.component.mjs +4 -4
  73. package/esm2022/ui/number/src/number.component.mjs +4 -4
  74. package/esm2022/ui/operation-types-dialog/src/operation-types-dialog.component.mjs +4 -4
  75. package/esm2022/ui/panel/src/panel.component.mjs +4 -4
  76. package/esm2022/ui/password/src/password.component.mjs +4 -4
  77. package/esm2022/ui/pdf-viewer/src/pdf-viewer.component.mjs +4 -4
  78. package/esm2022/ui/progressbar/src/progressbar.component.mjs +4 -4
  79. package/esm2022/ui/radioButton/src/radio-button.component.mjs +4 -4
  80. package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +4 -4
  81. package/esm2022/ui/selectBox/src/select-box.component.mjs +4 -4
  82. package/esm2022/ui/switch/src/switch.component.mjs +4 -4
  83. package/esm2022/ui/table/index.mjs +5 -5
  84. package/esm2022/ui/table/src/export-overlay-panel.component.mjs +4 -4
  85. package/esm2022/ui/table/src/table-column.component.mjs +4 -4
  86. package/esm2022/ui/table/src/table.component.mjs +4 -4
  87. package/esm2022/ui/table-expand/index.mjs +5 -5
  88. package/esm2022/ui/table-expand/src/table-column.component.mjs +4 -4
  89. package/esm2022/ui/table-expand/src/table-expand-area.component.mjs +4 -4
  90. package/esm2022/ui/table-expand/src/table.component.mjs +4 -4
  91. package/esm2022/ui/tag/src/tag.component.mjs +4 -4
  92. package/esm2022/ui/tagBox/src/tag-box.component.mjs +4 -4
  93. package/esm2022/ui/text/src/text.component.mjs +4 -4
  94. package/esm2022/ui/textArea/src/text-area.component.mjs +4 -4
  95. package/esm2022/ui/toggle-button/src/toggle-button.component.mjs +4 -4
  96. package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +4 -4
  97. package/esm2022/ui/translate-input/src/aril-translate-input.component.mjs +4 -4
  98. package/esm2022/ui/tree/src/tree.component.mjs +4 -4
  99. package/esm2022/ui/treeSelect/src/treeSelect.component.mjs +4 -4
  100. package/esm2022/ui/value/src/value.component.mjs +4 -4
  101. package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +4 -4
  102. package/esm2022/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.mjs +4 -4
  103. package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +4 -4
  104. package/esm2022/ui-business/image-viewer/src/aril-image-viewer.component.mjs +4 -4
  105. package/esm2022/ui-business/multiple-ref-value/src/multiple-ref-value.component.mjs +4 -4
  106. package/esm2022/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.mjs +4 -4
  107. package/esm2022/ui-business/pdf-preview-modal/src/pdf-preview-modal.component.mjs +4 -4
  108. package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +4 -4
  109. package/esm2022/ui-business/rolePicker/src/role-picker.component.mjs +4 -4
  110. package/esm2022/ui-business/trace-drawer/src/app-log.service.mjs +4 -4
  111. package/esm2022/ui-business/trace-drawer/src/trace-drawer.component.mjs +4 -4
  112. package/esm2022/ui-business/trace-drawer/src/trace-log.service.mjs +4 -4
  113. package/esm2022/ui-business/trace-id/src/trace-id.component.mjs +4 -4
  114. package/esm2022/ui-business/userPicker/src/user-picker.component.mjs +4 -4
  115. package/esm2022/util/activity/src/activity.service.mjs +4 -4
  116. package/esm2022/util/block/src/block.mjs +4 -4
  117. package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -4
  118. package/esm2022/util/directives/src/dialog-component/plugin-dialog.component.mjs +4 -4
  119. package/esm2022/util/directives/src/dialog-service/plugin-dialog.service.mjs +4 -4
  120. package/esm2022/util/lib/src/module-router.mjs +4 -4
  121. package/esm2022/util/pipes/src/distance-to-now.pipe.mjs +4 -4
  122. package/esm2022/util/pipes/src/get-column-by-field.pipe.mjs +4 -4
  123. package/esm2022/util/pipes/src/parse.pipe.mjs +4 -4
  124. package/esm2022/util/pipes/src/round-number.pipe.mjs +4 -4
  125. package/esm2022/util/pipes/src/safe.pipe.mjs +4 -4
  126. package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +4 -4
  127. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +4 -4
  128. package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +4 -4
  129. package/fesm2022/{aril-app.component-MjG_tPEe.mjs → aril-app.component-Bl9p6jXU.mjs} +11 -6
  130. package/fesm2022/aril-app.component-Bl9p6jXU.mjs.map +1 -0
  131. package/fesm2022/aril-boot-base.mjs +1 -1
  132. package/fesm2022/aril-boot-base.mjs.map +1 -1
  133. package/fesm2022/aril-boot-bridge.mjs.map +1 -1
  134. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  135. package/fesm2022/aril-boot-config-apps.mjs +31 -31
  136. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  137. package/fesm2022/aril-boot-config-plugins.mjs +1 -1
  138. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  139. package/fesm2022/aril-boot-config-translate.mjs.map +1 -1
  140. package/fesm2022/aril-boot-host.mjs +4 -4
  141. package/fesm2022/aril-boot-host.mjs.map +1 -1
  142. package/fesm2022/{aril-boot-mfe-app.component-DtspQ3J8.mjs → aril-boot-mfe-app.component-DovYRbZO.mjs} +12 -7
  143. package/fesm2022/aril-boot-mfe-app.component-DovYRbZO.mjs.map +1 -0
  144. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs → aril-boot-mfe-aril-boot-mfe-D9YM2exR.mjs} +7 -7
  145. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs.map → aril-boot-mfe-aril-boot-mfe-D9YM2exR.mjs.map} +1 -1
  146. package/fesm2022/aril-boot-mfe.mjs +1 -1
  147. package/fesm2022/aril-boot-pages.mjs +6 -6
  148. package/fesm2022/aril-boot-pages.mjs.map +1 -1
  149. package/fesm2022/aril-http.mjs +3 -3
  150. package/fesm2022/aril-http.mjs.map +1 -1
  151. package/fesm2022/aril-i18n.mjs +7 -7
  152. package/fesm2022/aril-i18n.mjs.map +1 -1
  153. package/fesm2022/aril-keycloak.mjs.map +1 -1
  154. package/fesm2022/aril-provider.mjs +1 -1
  155. package/fesm2022/aril-provider.mjs.map +1 -1
  156. package/fesm2022/aril-selection.mjs +3 -3
  157. package/fesm2022/aril-selection.mjs.map +1 -1
  158. package/fesm2022/aril-theme-layout.mjs +74 -74
  159. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  160. package/fesm2022/aril-ui-autoComplete.mjs +6 -6
  161. package/fesm2022/aril-ui-autoComplete.mjs.map +1 -1
  162. package/fesm2022/aril-ui-badge.mjs +4 -4
  163. package/fesm2022/aril-ui-badge.mjs.map +1 -1
  164. package/fesm2022/aril-ui-business-assetPicker.mjs +5 -5
  165. package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
  166. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs +5 -5
  167. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs.map +1 -1
  168. package/fesm2022/aril-ui-business-enumPicker.mjs +5 -5
  169. package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
  170. package/fesm2022/aril-ui-business-image-viewer.mjs +3 -3
  171. package/fesm2022/aril-ui-business-image-viewer.mjs.map +1 -1
  172. package/fesm2022/aril-ui-business-multiple-ref-value.mjs +4 -4
  173. package/fesm2022/aril-ui-business-multiple-ref-value.mjs.map +1 -1
  174. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs +3 -3
  175. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs.map +1 -1
  176. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs +3 -3
  177. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs.map +1 -1
  178. package/fesm2022/aril-ui-business-ref-value.mjs +4 -4
  179. package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
  180. package/fesm2022/aril-ui-business-rolePicker.mjs +4 -4
  181. package/fesm2022/aril-ui-business-rolePicker.mjs.map +1 -1
  182. package/fesm2022/aril-ui-business-trace-drawer.mjs +10 -10
  183. package/fesm2022/aril-ui-business-trace-drawer.mjs.map +1 -1
  184. package/fesm2022/aril-ui-business-trace-id.mjs +4 -4
  185. package/fesm2022/aril-ui-business-trace-id.mjs.map +1 -1
  186. package/fesm2022/aril-ui-business-userPicker.mjs +3 -3
  187. package/fesm2022/aril-ui-business-userPicker.mjs.map +1 -1
  188. package/fesm2022/aril-ui-button.mjs +4 -4
  189. package/fesm2022/aril-ui-button.mjs.map +1 -1
  190. package/fesm2022/aril-ui-calendar.mjs +3 -3
  191. package/fesm2022/aril-ui-calendar.mjs.map +1 -1
  192. package/fesm2022/aril-ui-charts.mjs +6 -6
  193. package/fesm2022/aril-ui-charts.mjs.map +1 -1
  194. package/fesm2022/aril-ui-checkbox.mjs +6 -6
  195. package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
  196. package/fesm2022/aril-ui-chip.mjs +4 -4
  197. package/fesm2022/aril-ui-chip.mjs.map +1 -1
  198. package/fesm2022/aril-ui-collapse-reorder-list.mjs +4 -4
  199. package/fesm2022/aril-ui-collapse-reorder-list.mjs.map +1 -1
  200. package/fesm2022/aril-ui-dxField.mjs +4 -4
  201. package/fesm2022/aril-ui-dxField.mjs.map +1 -1
  202. package/fesm2022/aril-ui-editor.mjs +4 -4
  203. package/fesm2022/aril-ui-editor.mjs.map +1 -1
  204. package/fesm2022/aril-ui-field.mjs +4 -4
  205. package/fesm2022/aril-ui-field.mjs.map +1 -1
  206. package/fesm2022/aril-ui-fileUpload.mjs +4 -4
  207. package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
  208. package/fesm2022/aril-ui-form.mjs +11 -11
  209. package/fesm2022/aril-ui-form.mjs.map +1 -1
  210. package/fesm2022/aril-ui-img-viewer.mjs +3 -3
  211. package/fesm2022/aril-ui-img-viewer.mjs.map +1 -1
  212. package/fesm2022/aril-ui-json-diff-comparison.mjs +4 -4
  213. package/fesm2022/aril-ui-json-diff-comparison.mjs.map +1 -1
  214. package/fesm2022/aril-ui-lib.mjs +22 -22
  215. package/fesm2022/aril-ui-lib.mjs.map +1 -1
  216. package/fesm2022/aril-ui-loader.mjs +3 -3
  217. package/fesm2022/aril-ui-loader.mjs.map +1 -1
  218. package/fesm2022/aril-ui-mask.mjs +3 -3
  219. package/fesm2022/aril-ui-mask.mjs.map +1 -1
  220. package/fesm2022/aril-ui-multiSelect.mjs +3 -3
  221. package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
  222. package/fesm2022/aril-ui-number.mjs +3 -3
  223. package/fesm2022/aril-ui-number.mjs.map +1 -1
  224. package/fesm2022/aril-ui-operation-types-dialog.mjs +3 -3
  225. package/fesm2022/aril-ui-operation-types-dialog.mjs.map +1 -1
  226. package/fesm2022/aril-ui-panel.mjs +4 -4
  227. package/fesm2022/aril-ui-panel.mjs.map +1 -1
  228. package/fesm2022/aril-ui-password.mjs +3 -3
  229. package/fesm2022/aril-ui-password.mjs.map +1 -1
  230. package/fesm2022/aril-ui-pdf-viewer.mjs +3 -3
  231. package/fesm2022/aril-ui-pdf-viewer.mjs.map +1 -1
  232. package/fesm2022/aril-ui-progressbar.mjs +3 -3
  233. package/fesm2022/aril-ui-progressbar.mjs.map +1 -1
  234. package/fesm2022/aril-ui-radioButton.mjs +3 -3
  235. package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
  236. package/fesm2022/aril-ui-relativeDateSelector.mjs +4 -4
  237. package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
  238. package/fesm2022/aril-ui-selectBox.mjs +5 -5
  239. package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
  240. package/fesm2022/aril-ui-switch.mjs +3 -3
  241. package/fesm2022/aril-ui-switch.mjs.map +1 -1
  242. package/fesm2022/aril-ui-table-expand.mjs +14 -14
  243. package/fesm2022/aril-ui-table-expand.mjs.map +1 -1
  244. package/fesm2022/aril-ui-table.mjs +15 -15
  245. package/fesm2022/aril-ui-table.mjs.map +1 -1
  246. package/fesm2022/aril-ui-tag.mjs +3 -3
  247. package/fesm2022/aril-ui-tag.mjs.map +1 -1
  248. package/fesm2022/aril-ui-tagBox.mjs +5 -5
  249. package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
  250. package/fesm2022/aril-ui-text.mjs +3 -3
  251. package/fesm2022/aril-ui-text.mjs.map +1 -1
  252. package/fesm2022/aril-ui-textArea.mjs +3 -3
  253. package/fesm2022/aril-ui-textArea.mjs.map +1 -1
  254. package/fesm2022/aril-ui-toggle-button.mjs +4 -4
  255. package/fesm2022/aril-ui-toggle-button.mjs.map +1 -1
  256. package/fesm2022/aril-ui-translate-input.mjs +6 -6
  257. package/fesm2022/aril-ui-translate-input.mjs.map +1 -1
  258. package/fesm2022/aril-ui-tree.mjs +4 -4
  259. package/fesm2022/aril-ui-tree.mjs.map +1 -1
  260. package/fesm2022/aril-ui-treeSelect.mjs +4 -4
  261. package/fesm2022/aril-ui-treeSelect.mjs.map +1 -1
  262. package/fesm2022/aril-ui-value.mjs +5 -5
  263. package/fesm2022/aril-ui-value.mjs.map +1 -1
  264. package/fesm2022/aril-util-activity.mjs +3 -3
  265. package/fesm2022/aril-util-activity.mjs.map +1 -1
  266. package/fesm2022/aril-util-block.mjs +3 -3
  267. package/fesm2022/aril-util-block.mjs.map +1 -1
  268. package/fesm2022/aril-util-directives.mjs +10 -10
  269. package/fesm2022/aril-util-directives.mjs.map +1 -1
  270. package/fesm2022/aril-util-lib.mjs +3 -3
  271. package/fesm2022/aril-util-lib.mjs.map +1 -1
  272. package/fesm2022/aril-util-pipes.mjs +18 -18
  273. package/fesm2022/aril-util-pipes.mjs.map +1 -1
  274. package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -1
  275. package/fesm2022/aril-util-pub-sub.mjs +3 -3
  276. package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
  277. package/fesm2022/aril-util-sync-active-tab-route.mjs +4 -4
  278. package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
  279. package/fesm2022/aril.mjs +9 -9
  280. package/fesm2022/aril.mjs.map +1 -1
  281. package/package.json +160 -160
  282. package/scripts/mf-shared.js +47 -47
  283. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.d.ts +16 -0
  284. package/theme/layout/app/history/history-sidebar.component.d.ts +16 -0
  285. package/theme/layout/app/notifications/notifications-sidebar.component.d.ts +16 -0
  286. package/theme/layout/app/site-map/site-map-sidebar.component.d.ts +16 -0
  287. package/theme/layout/service/tab-session.service.ts +138 -138
  288. package/ui/autoComplete/src/auto-complete.component.d.ts +8 -8
  289. package/ui/badge/src/badge.component.d.ts +9 -9
  290. package/ui/button/src/button.component.d.ts +12 -12
  291. package/ui/calendar/src/calendar.component.d.ts +22 -22
  292. package/ui/charts/src/highCharts/gauge/solid-gauge.component.d.ts +3 -3
  293. package/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.d.ts +5 -5
  294. package/ui/checkbox/src/check-box.component.d.ts +3 -3
  295. package/ui/checkbox/src/tri-state-checkbox.component.d.ts +2 -2
  296. package/ui/chip/src/chip.component.d.ts +7 -7
  297. package/ui/collapse-reorder-list/src/collapse-reorder-list.component.d.ts +4 -4
  298. package/ui/dxField/src/dx-field.component.d.ts +5 -5
  299. package/ui/editor/src/aril-editor.component.d.ts +3 -3
  300. package/ui/field/src/field.component.d.ts +9 -9
  301. package/ui/fileUpload/src/file-upload.component.d.ts +14 -14
  302. package/ui/form/src/form-submit-button.component.d.ts +1 -1
  303. package/ui/form/src/form.component.d.ts +1 -1
  304. package/ui/img-viewer/src/img-viewer.component.d.ts +1 -1
  305. package/ui/lib/src/form/form-error-message.directive.d.ts +1 -1
  306. package/ui/mask/src/mask.component.d.ts +6 -6
  307. package/ui/multiSelect/src/multi-select.component.d.ts +13 -13
  308. package/ui/number/src/number.component.d.ts +15 -15
  309. package/ui/panel/src/panel.component.d.ts +6 -6
  310. package/ui/password/src/password.component.d.ts +4 -4
  311. package/ui/pdf-viewer/src/pdf-viewer.component.d.ts +12 -12
  312. package/ui/progressbar/src/progressbar.component.d.ts +3 -3
  313. package/ui/radioButton/src/radio-button.component.d.ts +3 -3
  314. package/ui/selectBox/src/select-box.component.d.ts +9 -9
  315. package/ui/switch/src/switch.component.d.ts +1 -1
  316. package/ui/table/src/export-overlay-panel.component.d.ts +2 -2
  317. package/ui/table/src/table-column.component.d.ts +11 -11
  318. package/ui/table/src/table.component.d.ts +35 -35
  319. package/ui/table-expand/src/table-column.component.d.ts +6 -6
  320. package/ui/table-expand/src/table.component.d.ts +20 -20
  321. package/ui/tag/src/tag.component.d.ts +4 -6
  322. package/ui/tagBox/src/tag-box.component.d.ts +7 -7
  323. package/ui/text/src/text.component.d.ts +5 -5
  324. package/ui/textArea/src/text-area.component.d.ts +5 -5
  325. package/ui/toggle-button/src/toggle-button.component.d.ts +1 -1
  326. package/ui/translate-input/src/aril-translate-input.component.d.ts +2 -2
  327. package/ui/tree/src/tree.component.d.ts +8 -8
  328. package/ui/treeSelect/src/treeSelect.component.d.ts +12 -12
  329. package/ui/value/src/value.component.d.ts +15 -15
  330. package/ui-business/assetPicker/src/asset-picker.component.d.ts +11 -11
  331. package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.d.ts +3 -6
  332. package/ui-business/enumPicker/src/enum-picker.component.d.ts +23 -23
  333. package/ui-business/image-viewer/src/aril-image-viewer.component.d.ts +8 -8
  334. package/ui-business/multiple-ref-value/src/multiple-ref-value.component.d.ts +2 -5
  335. package/ui-business/ref-value/src/ref-value.component.d.ts +5 -5
  336. package/ui-business/rolePicker/src/role-picker.component.d.ts +6 -6
  337. package/ui-business/trace-drawer/src/trace-drawer.component.d.ts +8 -8
  338. package/ui-business/trace-id/src/trace-id.component.d.ts +6 -6
  339. package/ui-business/userPicker/src/user-picker.component.d.ts +3 -3
  340. package/util/block/src/block.d.ts +2 -2
  341. package/util/lib/src/types.d.ts +16 -0
  342. package/fesm2022/aril-app.component-MjG_tPEe.mjs.map +0 -1
  343. package/fesm2022/aril-boot-mfe-app.component-DtspQ3J8.mjs.map +0 -1
@@ -26,10 +26,10 @@ export class NavLinkDirective {
26
26
  event.preventDefault();
27
27
  this.contextMenuService.open(event, this.navItem);
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
30
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.2", type: NavLinkDirective, isStandalone: true, selector: "[arilNavLink]", inputs: { navItem: ["arilNavLink", "navItem"] }, host: { listeners: { "contextmenu": "onContextMenu($event)" } }, ngImport: i0 }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NavLinkDirective, isStandalone: true, selector: "[arilNavLink]", inputs: { navItem: ["arilNavLink", "navItem"] }, host: { listeners: { "contextmenu": "onContextMenu($event)" } }, ngImport: i0 }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavLinkDirective, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavLinkDirective, decorators: [{
33
33
  type: Directive,
34
34
  args: [{
35
35
  standalone: true,
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
42
42
  type: HostListener,
43
43
  args: ['contextmenu', ['$event']]
44
44
  }] } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWxpbmsuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9uYXYtbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHNUU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFLSCxNQUFNLE9BQU8sZ0JBQWdCO0lBSjdCO1FBWWtCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBUXhFO0lBTEEsYUFBYSxDQUFDLEtBQWlCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU87WUFBRSxPQUFPO1FBQ25DLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs4R0FmVyxnQkFBZ0I7a0dBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGVBQWU7aUJBQ3pCOzhCQU9zQixPQUFPO3NCQUE1QixLQUFLO3VCQUFDLGFBQWE7Z0JBS3BCLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmF2TGlua0NvbnRleHRNZW51U2VydmljZSB9IGZyb20gJy4vbmF2LWxpbmstY29udGV4dC1tZW51LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi9uYXYuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogTGlua2xpIGhlciBIVE1MIGVsZW1lbnRpbmUgc2HEny10xLFrIOKGkiB0YWIgY29udGV4dCBtZW7DvHPDvCBla2xleWVuIGRpcmVjdGl2ZS5cclxuICpcclxuICogKipLdWxsYW7EsW0qKjogbmF2TGluay9uYXZOYW1lICh2ZSBvcHNpeW9uZWwgaWNvbikgYmlsZ2lzaW5pIG9iamVjdCBsaXRlcmFsIG9sYXJhayB2ZXJpbjpcclxuICogYGBgaHRtbFxyXG4gKiA8YSBbYXR0ci5ocmVmXT1cIicjLycgKyBwYXRoXCJcclxuICogICAgW2FyaWxOYXZMaW5rXT1cInsgdGFiSWQ6ICcnLCBuYXZMaW5rOiBwYXRoLCBuYXZOYW1lOiAnU2F5ZmEgQWTEsScsIGljb246ICdwaSBwaS1jb2cnIH1cIlxyXG4gKiAgICAoY2xpY2spPVwiLi4uXCI+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBTYcSfIHTEsWsg4oaSIFwiQnUgc2VrbWVkZSBhw6cgLyBZZW5pIHNla21lZGUgYcOnIC8gWWVuaSBzZWttZWRlIGHDpyB2ZSBnZcOnXCIgbWVuw7xzw7wgYcOnxLFsxLFyO1xyXG4gKiBrb211dGxhciBgTmF2U2VydmljZWAgw7x6ZXJpbmRlbiBpbGdpbGkgdGFiIGV5bGVtaW5pIHRldGlrbGVyLiBDdHJsK0NsaWNrIC8gTWlkZGxlIENsaWNrXHJcbiAqIGdpYmkgbWV2Y3V0IHNob3J0Y3V0J2xhciBkZcSfacWfbWV6IOKAlCBidSBtZW7DvCBvbmxhcmEga2xhdnllL2ZhcmUgYmlsZ2lzaSBvbG1heWFuXHJcbiAqIGt1bGxhbsSxY8SxbGFyIGnDp2luIGtlxZ9mZWRpbGViaWxpciBiaXIgYWx0ZXJuYXRpZi5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdbYXJpbE5hdkxpbmtdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2TGlua0RpcmVjdGl2ZSB7XHJcblx0LyoqXHJcblx0ICogT3B0aW9uYWwgw6fDvG5rw7wgc2l0ZS1tYXAgZ2liaSBjb25kaXRpb25hbCB5YXDEsWxhcmRhIHRlbXBsYXRlIGJpbmRpbmcnaSBgbm9kZS5yb3V0ZXJMaW5rID8gey4uLn0gOiBudWxsYFxyXG5cdCAqIMWfZWtsaW5kZSDDp2FsxLHFn8SxeW9yIOKAlCByZXF1aXJlZCBpxZ9hcmV0bGVtZWsgYG51bGwvdW5kZWZpbmVkYCBkdXJ1bXVuZGEgVFMgaGF0YXPEsSB2ZXJpci4gQm/FnyB2ZXlhXHJcblx0ICogYG5hdkxpbmtgJ2kgb2xtYXlhbiBuYXZJdGVtIGnDp2luIGBvbkNvbnRleHRNZW51YCBuby1vcCDDp2FsxLHFn8Sxci5cclxuXHQgKi9cclxuXHRASW5wdXQoJ2FyaWxOYXZMaW5rJykgbmF2SXRlbT86IE5hdkl0ZW0gfCBudWxsO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IGNvbnRleHRNZW51U2VydmljZSA9IGluamVjdChOYXZMaW5rQ29udGV4dE1lbnVTZXJ2aWNlKTtcclxuXHJcblx0QEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKVxyXG5cdG9uQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5uYXZJdGVtPy5uYXZMaW5rKSByZXR1cm47XHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0dGhpcy5jb250ZXh0TWVudVNlcnZpY2Uub3BlbihldmVudCwgdGhpcy5uYXZJdGVtKTtcclxuXHR9XHJcbn1cclxuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWxpbmsuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9uYXYtbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHNUU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFLSCxNQUFNLE9BQU8sZ0JBQWdCO0lBSjdCO1FBWWtCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBUXhFO0lBTEEsYUFBYSxDQUFDLEtBQWlCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU87WUFBRSxPQUFPO1FBQ25DLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQzsrR0FmVyxnQkFBZ0I7bUdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGVBQWU7aUJBQ3pCOzhCQU9zQixPQUFPO3NCQUE1QixLQUFLO3VCQUFDLGFBQWE7Z0JBS3BCLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmF2TGlua0NvbnRleHRNZW51U2VydmljZSB9IGZyb20gJy4vbmF2LWxpbmstY29udGV4dC1tZW51LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi9uYXYuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogTGlua2xpIGhlciBIVE1MIGVsZW1lbnRpbmUgc2HEny10xLFrIOKGkiB0YWIgY29udGV4dCBtZW7DvHPDvCBla2xleWVuIGRpcmVjdGl2ZS5cclxuICpcclxuICogKipLdWxsYW7EsW0qKjogbmF2TGluay9uYXZOYW1lICh2ZSBvcHNpeW9uZWwgaWNvbikgYmlsZ2lzaW5pIG9iamVjdCBsaXRlcmFsIG9sYXJhayB2ZXJpbjpcclxuICogYGBgaHRtbFxyXG4gKiA8YSBbYXR0ci5ocmVmXT1cIicjLycgKyBwYXRoXCJcclxuICogICAgW2FyaWxOYXZMaW5rXT1cInsgdGFiSWQ6ICcnLCBuYXZMaW5rOiBwYXRoLCBuYXZOYW1lOiAnU2F5ZmEgQWTEsScsIGljb246ICdwaSBwaS1jb2cnIH1cIlxyXG4gKiAgICAoY2xpY2spPVwiLi4uXCI+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBTYcSfIHTEsWsg4oaSIFwiQnUgc2VrbWVkZSBhw6cgLyBZZW5pIHNla21lZGUgYcOnIC8gWWVuaSBzZWttZWRlIGHDpyB2ZSBnZcOnXCIgbWVuw7xzw7wgYcOnxLFsxLFyO1xyXG4gKiBrb211dGxhciBgTmF2U2VydmljZWAgw7x6ZXJpbmRlbiBpbGdpbGkgdGFiIGV5bGVtaW5pIHRldGlrbGVyLiBDdHJsK0NsaWNrIC8gTWlkZGxlIENsaWNrXHJcbiAqIGdpYmkgbWV2Y3V0IHNob3J0Y3V0J2xhciBkZcSfacWfbWV6IOKAlCBidSBtZW7DvCBvbmxhcmEga2xhdnllL2ZhcmUgYmlsZ2lzaSBvbG1heWFuXHJcbiAqIGt1bGxhbsSxY8SxbGFyIGnDp2luIGtlxZ9mZWRpbGViaWxpciBiaXIgYWx0ZXJuYXRpZi5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdbYXJpbE5hdkxpbmtdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2TGlua0RpcmVjdGl2ZSB7XHJcblx0LyoqXHJcblx0ICogT3B0aW9uYWwgw6fDvG5rw7wgc2l0ZS1tYXAgZ2liaSBjb25kaXRpb25hbCB5YXDEsWxhcmRhIHRlbXBsYXRlIGJpbmRpbmcnaSBgbm9kZS5yb3V0ZXJMaW5rID8gey4uLn0gOiBudWxsYFxyXG5cdCAqIMWfZWtsaW5kZSDDp2FsxLHFn8SxeW9yIOKAlCByZXF1aXJlZCBpxZ9hcmV0bGVtZWsgYG51bGwvdW5kZWZpbmVkYCBkdXJ1bXVuZGEgVFMgaGF0YXPEsSB2ZXJpci4gQm/FnyB2ZXlhXHJcblx0ICogYG5hdkxpbmtgJ2kgb2xtYXlhbiBuYXZJdGVtIGnDp2luIGBvbkNvbnRleHRNZW51YCBuby1vcCDDp2FsxLHFn8Sxci5cclxuXHQgKi9cclxuXHRASW5wdXQoJ2FyaWxOYXZMaW5rJykgbmF2SXRlbT86IE5hdkl0ZW0gfCBudWxsO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IGNvbnRleHRNZW51U2VydmljZSA9IGluamVjdChOYXZMaW5rQ29udGV4dE1lbnVTZXJ2aWNlKTtcclxuXHJcblx0QEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKVxyXG5cdG9uQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5uYXZJdGVtPy5uYXZMaW5rKSByZXR1cm47XHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0dGhpcy5jb250ZXh0TWVudVNlcnZpY2Uub3BlbihldmVudCwgdGhpcy5uYXZJdGVtKTtcclxuXHR9XHJcbn1cclxuIl19
@@ -663,13 +663,13 @@ export class NavService {
663
663
  console.log(`[NavService] cleanupTabHandle remoteName="${remoteName}" tabId="${item.tabId}"`);
664
664
  this.routeCloseService.deleteStoredRoute(`mfe:${remoteName}:${item.tabId}`);
665
665
  }
666
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
667
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavService, providedIn: 'root' }); }
666
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
667
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavService, providedIn: 'root' }); }
668
668
  }
669
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavService, decorators: [{
669
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavService, decorators: [{
670
670
  type: Injectable,
671
671
  args: [{
672
672
  providedIn: 'root'
673
673
  }]
674
674
  }] });
675
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL25hdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUE4Qi9DOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFNBQVMsQ0FBQyxVQUFrQixFQUFFLEtBQWE7SUFDbkQsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3RCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQixPQUFPLEdBQUcsSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNI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bmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBQbHVnaW5NZW51SXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFJvdXRlQ2xvc2VTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0ZS1jbG9zZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgc2FmZU5hdmlnYXRlIH0gZnJvbSAnLi9zYWZlLW5hdmlnYXRlJztcclxuXHJcbi8qKlxyXG4gKiBgdGFiSWRgIGhlciB0YWInxLEgdGVraWwga8SxbGFuIGtpbWxpa3RpcjsgYXluxLEgYG5hdkxpbmtgIChwYXRoKSBhbHTEsW5kYSBiaXJkZW4gZmF6bGFcclxuICogYmHEn8SxbXPEsXogdGFiIGHDp8SxbGFiaWxtZXNpbmkgc2HEn2xhci4gTmF2U2VydmljZSBSb3V0ZXInYSBuYXZpZ2F0aW9uIHlhcGFya2VuIFVSTCdlXHJcbiAqIGBfdGFiPTx0YWJJZD5gIHF1ZXJ5IHBhcmFtIGVrbGVyIHZlIGBleHRyYXMuc3RhdGUuX3RhYmAgaWxlIGhpc3Rvcnkgc3RhdGUnZSB5YXphci5cclxuICogYFRhYkF3YXJlVXJsU2VyaWFsaXplcmAgYWRyZXMgw6d1YnXEn3VuZGFuIGBfdGFiYCdpIHN0cmlwIGVkZXI7IFJvdXRlciBpbnRlcm5hbFxyXG4gKiBgcXVlcnlQYXJhbXNgIGtvcnVudXIg4oaSIGBDdXN0b21Sb3V0ZVJldXNlU3RyYXRlZ3kuZ2V0Um91dGVLZXlgIGRvxJ9ydSB0YWIga2V5IHTDvHJldGlyLlxyXG4gKlxyXG4gKiAqKsOWbmVtbGkqKjogYE5hdkl0ZW0ubmF2TGlua2AgSEVSIFpBTUFOIENMRUFOIFVSTCAobm8gYF90YWJgKS4gSGVtIGRpc3BsYXkgaGVtXHJcbiAqIGBhY3RpdmVSb3V0ZSgpYCBpbGUga2FyxZ/EsWxhxZ90xLFybWEgacOnaW4ga3VsbGFuxLFsxLFyLiBUYWIga2ltbGnEn2kgYHRhYklkYCDDvHplcmluZGVuXHJcbiAqIHnDtm5ldGlsaXIgKGBhY3RpdmVUYWJJZGAgc2lnbmFsKS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmF2SXRlbSB7XHJcblx0dGFiSWQ6IHN0cmluZztcclxuXHRuYXZMaW5rOiBzdHJpbmc7XHJcblx0bmF2TmFtZTogc3RyaW5nO1xyXG5cdC8qKlxyXG5cdCAqIE1lbnUgaXRlbSdkYW4gZ2VsZW4gaWNvbiBjbGFzcyfEsSAow7Zybi4gJ3BpIHBpLWJvbHQnKS4gVmVyaWxtZXpzZSBsYXlvdXQgYGdldFRhYkljb25gXHJcblx0ICogbWVudSBjb25maWcnaW5kZW4gbG9uZ2VzdC1wcmVmaXggbWF0Y2ggaWxlIGxvb2t1cCB5YXBhcjsgbyBkYSBidWxhbWF6c2EgZ2VuZXJpYyBpa29uYSBkw7zFn2VyLlxyXG5cdCAqL1xyXG5cdGljb24/OiBzdHJpbmc7XHJcblx0LyoqXHJcblx0ICogVGFiIHNhYml0bGVtZSDigJQgQ2hyb21lLXZhcmkgcGlubmluZy4gU2FiaXQgdGFiJ2xhciB0YWIgYmFyJ8SxbiAqKnNvbHVuYSoqIHPEsXJhbGFuxLFyLFxyXG5cdCAqIGtvbXBha3QgZ8O2c3RlcmlsaXIgKHlhbG7EsXogaWNvbiwgYmHFn2zEsWsgKyBjbG9zZSBidXR0b24gZ2l6bGkpLCBgY2xvc2VPdGhlcnNgL2BjbG9zZVRvUmlnaHRgL1xyXG5cdCAqIGBjbG9zZUFsbGAgw6dhxJ9yxLFsYXLEsW5kYW4ga29ydW51ci4gRHJhZyAmIGRyb3AndGEgcGlubmVkIOKGlCBub3JtYWwgc8SxbsSxcsSxIGdlw6dpbGVtZXouXHJcblx0ICovXHJcblx0cGlubmVkPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJvdXRlcidhIHZlcmlsZWNlayBVUkwnZSBgX3RhYmAgcXVlcnkgcGFyYW0gZWtsZXIuIFRhYiBuYXZMaW5rJ2xlcmkgQ0xFQU4gc2FrbGFuZMSxxJ/EsVxyXG4gKiBpw6dpbiBoZXIgbmF2aWdhdGlvbidkYSBidSBoZWxwZXInbGEgYF90YWJgIGVrbGVuaXIuIFVybFNlcmlhbGl6ZXIgc2VyaWFsaXplIHPEsXJhc8SxbmRhXHJcbiAqIGBfdGFiYCdpIHN0cmlwIGVkZXIg4oaSIGFkcmVzIMOndWJ1xJ91bmRhIGfDtnLDvG5tZXogYW1hIFJvdXRlciBpbnRlcm5hbCBxdWVyeVBhcmFtcyfEsW5kYVxyXG4gKiBrYWzEsXIg4oaSIHN0cmF0ZWd5IGRvxJ9ydSDDp2FsxLHFn8Sxci5cclxuICpcclxuICogUGF0aCdpbiBiYcWfxLFuZGEgbGVhZGluZyBzbGFzaCBnYXJhbnRpIGVkaWxpciAoUm91dGVyIFVSTCBmb3JtYXTEsW5hIHV5Z3VubHVrIGnDp2luKS5cclxuICovXHJcbmZ1bmN0aW9uIHdpdGhUYWJJZChyYXdOYXZMaW5rOiBzdHJpbmcsIHRhYklkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdGNvbnN0IHsgcGF0aCwgcXVlcnksIGZyYWdtZW50IH0gPSBzcGxpdFVybChyYXdOYXZMaW5rID8/ICcnKTtcclxuXHRjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5KTtcclxuXHRwYXJhbXMuc2V0KCdfdGFiJywgdGFiSWQpO1xyXG5cdHJldHVybiBgJHtwYXRofT8ke3BhcmFtcy50b1N0cmluZygpfSR7ZnJhZ21lbnR9YDtcclxufVxyXG5cclxuLyoqXHJcbiAqIE5hdkxpbmsnaSBjbGVhbiBmb3JtYXR0YSBub3JtYWxpemUgZWRlcjogbGVhZGluZyBzbGFzaCBnYXJhbnRpc2ksIHF1ZXJ5IHN0cmluZyd0ZW5cclxuICogYF90YWJgIHN0cmlwLCBmcmFnbWVudCBrb3J1bnVyLiBgYWN0aXZlUm91dGUoKWAgVXJsU2VyaWFsaXplciBvdmVycmlkZSfEsSBzYXllc2luZGVcclxuICogY2xlYW4gVVJMIGTDtm5lcjsgdGFiIHN0b3JhZ2UgZGEgY2xlYW4gb2xtYWzEsSBraSBrYXLFn8SxbGHFn3TEsXJtYSDDp2FsxLHFn3PEsW4uXHJcbiAqL1xyXG5mdW5jdGlvbiBjbGVhbk5hdkxpbmsocmF3TmF2TGluazogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRjb25zdCB7IHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCB9ID0gc3BsaXRVcmwocmF3TmF2TGluayA/PyAnJyk7XHJcblx0aWYgKCFxdWVyeSkgcmV0dXJuIHBhdGggKyBmcmFnbWVudDtcclxuXHRjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5KTtcclxuXHRwYXJhbXMuZGVsZXRlKCdfdGFiJyk7XHJcblx0Y29uc3QgcmVtYWluaW5nID0gcGFyYW1zLnRvU3RyaW5nKCk7XHJcblx0cmV0dXJuIHJlbWFpbmluZyA/IGAke3BhdGh9PyR7cmVtYWluaW5nfSR7ZnJhZ21lbnR9YCA6IHBhdGggKyBmcmFnbWVudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFVSTCBzdHJpbmcnaW5pIHBhdGgvcXVlcnkvZnJhZ21lbnQgb2xhcmFrIHBhcsOnYWxhci4gRnJhZ21lbnQgKGAjYCkgaWxrIMO2bmNlIGF5csSxbMSxclxyXG4gKiBraSBxdWVyeSAoYD9gKSBpw6dpbmRla2kgYCNgIGlsZSBrYXLEscWfbWFzxLFuLiBQYXRoJ2luIGJhxZ/EsW5hIGxlYWRpbmcgc2xhc2ggZ2FyYW50aVxyXG4gKiBlZGlsaXIgKFJvdXRlciBVUkwgZm9ybWF0xLEgacOnaW4gem9ydW5sdSkuXHJcbiAqXHJcbiAqIGBVUkxgIGNvbnN0cnVjdG9yJ8SxIHJlbGF0aXZlIFVSTCBpbGUgw6dhbMSxxZ9tYXosIG1hbnVlbCBzcGxpdCBgVVJMU2VhcmNoUGFyYW1zYCdhXHJcbiAqIHV5Z3VuIHRlbWl6IHF1ZXJ5IHN0cmluZyB2ZXJpci4gRnJhZ21lbnQgb2xkdcSfdSBnaWJpICjDtm5jZXNpbmRlIGAjYCBpbGUpIGTDtm5lci5cclxuICovXHJcbmZ1bmN0aW9uIHNwbGl0VXJsKHJhdzogc3RyaW5nKTogeyBwYXRoOiBzdHJpbmc7IHF1ZXJ5OiBzdHJpbmc7IGZyYWdtZW50OiBzdHJpbmcgfSB7XHJcblx0Y29uc3QgZnJhZ21lbnRJZHggPSByYXcuaW5kZXhPZignIycpO1xyXG5cdGNvbnN0IGZyYWdtZW50ID0gZnJhZ21lbnRJZHggPj0gMCA/IHJhdy5zbGljZShmcmFnbWVudElkeCkgOiAnJztcclxuXHRjb25zdCBiZWZvcmVGcmFnbWVudCA9IGZyYWdtZW50SWR4ID49IDAgPyByYXcuc2xpY2UoMCwgZnJhZ21lbnRJZHgpIDogcmF3O1xyXG5cdGNvbnN0IHF1ZXJ5SWR4ID0gYmVmb3JlRnJhZ21lbnQuaW5kZXhPZignPycpO1xyXG5cdGxldCBwYXRoID0gcXVlcnlJZHggPj0gMCA/IGJlZm9yZUZyYWdtZW50LnNsaWNlKDAsIHF1ZXJ5SWR4KSA6IGJlZm9yZUZyYWdtZW50O1xyXG5cdGNvbnN0IHF1ZXJ5ID0gcXVlcnlJZHggPj0gMCA/IGJlZm9yZUZyYWdtZW50LnNsaWNlKHF1ZXJ5SWR4ICsgMSkgOiAnJztcclxuXHRpZiAoIXBhdGguc3RhcnRzV2l0aCgnLycpKSBwYXRoID0gJy8nICsgcGF0aDtcclxuXHRyZXR1cm4geyBwYXRoLCBxdWVyeSwgZnJhZ21lbnQgfTtcclxufVxyXG5cclxuLyoqIFJvdXRlcidhIHZlcmlsZW4gZXh0cmFzLnN0YXRlIG9iamVzaSDigJQgYF90YWJgJ2kgaGlzdG9yeSBzdGF0ZSdpbmRlIHR1dGFyLiAqL1xyXG5mdW5jdGlvbiB0YWJTdGF0ZSh0YWJJZDogc3RyaW5nKTogeyBzdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSB7XHJcblx0cmV0dXJuIHsgc3RhdGU6IHsgX3RhYjogdGFiSWQgfSB9O1xyXG59XHJcblxyXG4vKipcclxuICogTmF2TGluaydpbiByZW1vdGUgKGlsayBwYXRoIHNlZ21lbnQpIGFkxLFuxLEgZMO2bmTDvHLDvHIuIFF1ZXJ5IHBhcmFtJ2xhcmRhbiB2ZSBsZWFkaW5nXHJcbiAqIHNsYXNoJ3RhbiBldGtpbGVubWV6IOKAlCBgL213L2FwcC1tYW5hZ2VtZW50P190YWI9YWJjYCDihpIgYG13YC5cclxuICovXHJcbmZ1bmN0aW9uIGV4dHJhY3RSZW1vdGVOYW1lKG5hdkxpbms6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xyXG5cdGlmICghbmF2TGluaykgcmV0dXJuIG51bGw7XHJcblx0bGV0IHBhdGggPSBuYXZMaW5rLnNwbGl0KCc/JylbMF07XHJcblx0aWYgKHBhdGguc3RhcnRzV2l0aCgnLycpKSBwYXRoID0gcGF0aC5zbGljZSgxKTtcclxuXHRyZXR1cm4gcGF0aC5zcGxpdCgnLycpWzBdIHx8IG51bGw7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdlNlcnZpY2Uge1xyXG5cdHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblx0cm91dGVDbG9zZVNlcnZpY2U6IFJvdXRlQ2xvc2VTZXJ2aWNlID0gaW5qZWN0KFJvdXRlQ2xvc2VTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSA9IGluamVjdChNZXNzYWdlU2VydmljZSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlID0gaW5qZWN0KFRyYW5zbG9jb1NlcnZpY2UpO1xyXG5cclxuXHQvLyBpMThuIMOnZXZpcmlsZXJpIGxhenkgKGFzeW5jIEhUVFApIHnDvGtsZW5pcjsgYGZpcnN0Q2hlY2tGb3JSb3V0ZWAvYG9wZW5Ib21lVGFiYCDDp2V2aXJpXHJcblx0Ly8gecO8a2xlbm1lZGVuIGB0cmFuc2xhdGUoJ3RhYi5ob21lJylgIGVkZXJzZSByYXcga2V5IChcInRhYi5ob21lXCIpIGthbMSxci4gw4dldmlyaSB5w7xrbGVuaW5jZVxyXG5cdC8vIGZhbGxiYWNrLWlzaW1saSB0YWInbGFyxLEgKMO2emVsbGlrbGUgYW5hc2F5ZmEpIG1lbsO8eWxlIHJldml6ZSBldCDihpIgXCJBbmFzYXlmYVwiIHllcmluZSBvdHVydXIuXHJcblx0cHJpdmF0ZSByZWFkb25seSBpMThuUmVsb2FkU3ViID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmV2ZW50cyRcclxuXHRcdC5waXBlKFxyXG5cdFx0XHQvLyBZYWxuxLF6IHJvb3QvZ2xvYmFsIGkxOG4gKHNjb3BlIFlPSykgecO8a2xlbmluY2UgcmVjb25jaWxlIGV0IOKAlCAndGFiLmhvbWUnIG9yYWRhLlxyXG5cdFx0XHQvLyBGZWF0dXJlIGxhenkgc2NvcGUnbGFyxLEgKGhlciBNRkUgc2F5ZmFzxLEga2VuZGkgc2NvcGUndW51IHnDvGtsZXIpIGdlcmVrc2l6IG1lbsO8LURGU1xyXG5cdFx0XHQvLyB0ZXRpa2xlbWVzaW47IHJlY29uY2lsZSB5YWxuxLF6IGhvbWUvbWVuw7wgYWRsYXLEsW7EsW4gYmHEn2zEsSBvbGR1xJ91IGdsb2JhbCDDp2V2aXJpIGnDp2luZGlyLlxyXG5cdFx0XHRmaWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ3RyYW5zbGF0aW9uTG9hZFN1Y2Nlc3MnICYmICFlLnBheWxvYWQ/LnNjb3BlKSxcclxuXHRcdFx0dGFrZVVudGlsRGVzdHJveWVkKClcclxuXHRcdClcclxuXHRcdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWNvbmNpbGVUYWJzV2l0aE1lbnUoKSk7XHJcblxyXG5cdGZpcnN0Q2hlY2tGb3JSb3V0ZSA9IGZhbHNlO1xyXG5cdC8qKlxyXG5cdCAqIEF5bsSxIGFuZGEgYcOnxLFrIG9sYWJpbGVjZWsgdGFiIHNhecSxc8SxIHRhdmFuxLEuIFRhYiBiYXInxLFuIFVYJ2kgdmUgYEN1c3RvbVJvdXRlUmV1c2VTdHJhdGVneWBcclxuXHQgKiBgc3RvcmVkUm91dGVzYCBiaXJpa2ltaSBpw6dpbiDDvHN0IHPEsW7EsXIuIEHFn8SxbMSxcnNhIHllbmkgbmF2aWdhc3lvbiBlbmdlbGxlbmlyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgTUFYX1RBQlMgPSAyMDtcclxuXHJcblx0LyoqIFJGQzQxMjIgdjQgVVVJRCDigJQgY29sbGlzaW9uLWZyZWUsIGludGVybmFsIHN0YXRlIHRhxZ/EsW1hei4gKi9cclxuXHRwcml2YXRlIGdlbmVyYXRlVGFiSWQoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWVudSBpdGVtcydpIE5hdlNlcnZpY2UndGVuIGFsbWFrIGnDp2luIHByb3ZpZGVyLiBgYXJpbC9ib290L2JyaWRnZWAnaSBkb8SfcnVkYW4gaW1wb3J0XHJcblx0ICogZXRtZWsgbmctcGFja2FncidkYSBgYXJpbC9ib290L2JyaWRnZSDihpIgYXJpbC9ib290L2NvbmZpZy9hcHBzYCBkw7ZuZ8O8c8O8IHRldGlrbGl5b3JkdVxyXG5cdCAqIChicmlkZ2UgYFBsdWdpbk1lbnVJdGVtYCB0eXBlJ8SxbsSxIGltcG9ydCBlZGl5b3IpLiBCdW51biB5ZXJpbmUgaG9zdCBzaGVsbFxyXG5cdCAqIChgQXBwTGF5b3V0Q29tcG9uZW50YCkgYHNldE1lbnVJdGVtc1Byb3ZpZGVyKCgpID0+IGJyaWRnZS5ob3N0TWVudUl0ZW1zKCkpYCBpbGUgYmHEn2xhci5cclxuXHQgKiBQcm92aWRlciB5b2tzYSBsYWJlbC9pY29uIHJlc29sdmUndSBhdGxhbsSxciwgVVJMIHNlZ21lbnQgZmFsbGJhY2snaSBkZXZyZXllIGdpcmVyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgbWVudUl0ZW1zUHJvdmlkZXI6ICgoKSA9PiBQbHVnaW5NZW51SXRlbVtdKSB8IG51bGwgPSBudWxsO1xyXG5cdHNldE1lbnVJdGVtc1Byb3ZpZGVyKHByb3ZpZGVyOiAoKSA9PiBQbHVnaW5NZW51SXRlbVtdKTogdm9pZCB7XHJcblx0XHR0aGlzLm1lbnVJdGVtc1Byb3ZpZGVyID0gcHJvdmlkZXI7XHJcblx0XHQvLyBQcm92aWRlciBnZcOnIHNldCBlZGlsZGl5c2UgKMO2cm4uIHNoZWxsIGxheW91dCBOYXZpZ2F0aW9uRW5kJ2RlbiBzb25yYSBtb3VudCBvbGR1KSxcclxuXHRcdC8vIGFjdGl2ZVJvdXRlcyd0YSBkZWZhdWx0L2ZhbGxiYWNrIGlzaW1sZSBla2xlbm1pxZ8gaWxrIHRhYifEsSBtZW7DvHlsZSByZXZpemUgZXQuXHJcblx0XHR0aGlzLnJlY29uY2lsZVRhYnNXaXRoTWVudSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSG9zdCBzaGVsbCBhbmFzYXlmYSBOYXZJdGVtJ8SxbsSxIHNhxJ9sYXIg4oCUIGBBcHBMYXlvdXRDb21wb25lbnQuaG9tZU5hdkl0ZW1gIChtZW7DvGRla2lcclxuXHQgKiBgcm9vdDogdHJ1ZWAgw7bEn2VzaW5kZW4gdMO8cmV0aWxpcjogbmF2TGluay9uYXZOYW1lL2ljb24pLiBUw7xtIHRhYidsYXIga2FwYXTEsWxkxLHEn8SxbmRhXHJcblx0ICogbGlzdGUgYm/FnyBrYWxtYXPEsW4gZGl5ZSBgb3BlbkhvbWVUYWJgIGJ1bnUga3VsbGFuxLFyOyBwcm92aWRlciB5b2tzYSBgL2AgKyBpMThuIGZhbGxiYWNrLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgaG9tZU5hdkl0ZW1Qcm92aWRlcjogKCgpID0+IE5hdkl0ZW0pIHwgbnVsbCA9IG51bGw7XHJcblx0c2V0SG9tZU5hdkl0ZW1Qcm92aWRlcihwcm92aWRlcjogKCkgPT4gTmF2SXRlbSk6IHZvaWQge1xyXG5cdFx0dGhpcy5ob21lTmF2SXRlbVByb3ZpZGVyID0gcHJvdmlkZXI7XHJcblx0XHQvLyBSZWZyZXNoL2lsayBhw6fEsWzEscWfIHBhdGgnaW5kZSBmYWxsYmFjayAoXCJQYWdlXCIpIGlzaW0vaWtvbmxhIGVrbGVubWnFnyBhbmFzYXlmYSB0YWInxLFcclxuXHRcdC8vIHZhcnNhLCBwcm92aWRlciBoYXrEsXIgb2x1bmNhIG1lbsO8eWxlIChob21lIGRhaGlsKSByZXZpemUgZXQuXHJcblx0XHR0aGlzLnJlY29uY2lsZVRhYnNXaXRoTWVudSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVVJMIGFkcmVzIMOndWJ1xJ91bmRhbiBnw7Zyw7xsZW4gYWt0aWYgcm91dGUg4oCUIGBUYWJBd2FyZVVybFNlcmlhbGl6ZXJgIGBfdGFiYCdpIHN0cmlwXHJcblx0ICogZXR0acSfaSBpw6dpbiBidSBDTEVBTiBVUkwnZGlyICjDtnIuIGAvY3JtL2FkZHJlc3MtbWFuYWdlbWVudC9zZWFyY2hgKS4gVGFiIG5hdkxpbmsnbGVyaVxyXG5cdCAqIGRlIGNsZWFuIHNha2xhbmTEscSfxLEgacOnaW4gYHIubmF2TGluayA9PT0gYWN0aXZlUm91dGUoKWAgZG/En3J1ZGFuIGthcsWfxLFsYcWfdMSxcsSxbMSxci5cclxuXHQgKi9cclxuXHRhY3RpdmVSb3V0ZSA9IHRvU2lnbmFsPHN0cmluZz4oXHJcblx0XHR0aGlzLnJvdXRlci5ldmVudHMucGlwZShcclxuXHRcdFx0ZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXHJcblx0XHRcdHRhcCgoZSkgPT4ge1xyXG5cdFx0XHRcdC8vIEhlciBOYXZpZ2F0aW9uRW5kJ2RlIGhpc3Rvcnkgc3RhdGUndGVuIGFrdGlmIHRhYklkJ3lpIG9rdXl1cCBzaWduYWwnYSB5YXouXHJcblx0XHRcdFx0Ly8gYGV4dHJhcy5zdGF0ZWAgaWxlIHlhcMSxbGFuIG5hdmlnYXRpb24nbGFyZGEgQW5ndWxhciBoaXN0b3J5LnN0YXRlJ2UgYF90YWJgJ2kga295YXI7XHJcblx0XHRcdFx0Ly8gYnJvd3NlciBiYWNrL2ZvcndhcmQgbmF2aWdhc3lvbmxhcsSxbmRhIGRhIGhpc3Rvcnkuc3RhdGUga29ydW51ci5cclxuXHRcdFx0XHRjb25zdCB0YWJJZEZyb21TdGF0ZSA9ICh3aW5kb3cuaGlzdG9yeS5zdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwpPy5bJ190YWInXTtcclxuXHRcdFx0XHRpZiAodHlwZW9mIHRhYklkRnJvbVN0YXRlID09PSAnc3RyaW5nJyAmJiB0YWJJZEZyb21TdGF0ZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHR0aGlzLmFjdGl2ZVRhYklkLnNldCh0YWJJZEZyb21TdGF0ZSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRjb25zdCBjdXJyZW50VXJsID0gKGUgYXMgTmF2aWdhdGlvbkVuZCkudXJsQWZ0ZXJSZWRpcmVjdHMgfHwgKGUgYXMgTmF2aWdhdGlvbkVuZCkudXJsO1xyXG5cclxuXHRcdFx0XHQvLyBOT1Q6IEFrdGlmIHRhYifEsW4gbmF2TGluaydpbmkgZ8O8bmNlbGxlbWUgYHN5bmNBY3RpdmVUYWJOYXZMaW5rRm9yVGFiYCBpbGVcclxuXHRcdFx0XHQvLyBgYnJpZGdlLmFjdGl2ZU1GRVVybGAgw7x6ZXJpbmRlbiB5YXDEsWzEsXIgKGtheW5hxJ9hLWJhxJ9sxLEsIGNyb3NzLXRhYiBzYWZlKS5cclxuXHJcblx0XHRcdFx0Ly8gVGFiIGBhY3RpdmVSb3V0ZXNgJ3RhIFlPS1NBIHTDvHJldDogKGEpIGlsayBhw6fEsWzEscWfL3JlZnJlc2ggZGVlcC1saW5rLCBWRVlBXHJcblx0XHRcdFx0Ly8gKGIpIGJyb3dzZXIgYmFjay9mb3J3YXJkIGlsZSBLQVBBVElMTUnFniB0YWInxLFuIGhpc3RvcnkgZW50cnknc2luZSBkw7Zuw7zFn1xyXG5cdFx0XHRcdC8vIChrYXBhdG1hIGhvc3QgaGlzdG9yeSd5aSBzaWxtZXog4oaSIGdlcmkgdHXFn3UgbyBVUkwnZSBnaWRlciwgdGFiIHllbmlkZW4gYcOnxLFsbWFsxLEpLlxyXG5cdFx0XHRcdC8vIEJpbGluZW4gdGFiIChub3JtYWwgdMSxa2xhbWEgLyB5ZW5pIHRhYiAvIGHDp8SxayB0YWInYSBnZXJpKSDihpIgeWFsbsSxeiBhY3RpdmVUYWJJZFxyXG5cdFx0XHRcdC8vIGfDvG5jZWxsZW5pciAoeXVrYXLEsWRhKSwgbWV2Y3V0IHRhYidhIGZvY3VzOyB0w7xyZXRtZSB5YXDEsWxtYXouXHJcblx0XHRcdFx0Y29uc3Qga25vd25UYWIgPVxyXG5cdFx0XHRcdFx0dHlwZW9mIHRhYklkRnJvbVN0YXRlID09PSAnc3RyaW5nJyAmJlxyXG5cdFx0XHRcdFx0dGFiSWRGcm9tU3RhdGUubGVuZ3RoID4gMCAmJlxyXG5cdFx0XHRcdFx0dGhpcy5hY3RpdmVSb3V0ZXMoKS5zb21lKChyKSA9PiByLnRhYklkID09PSB0YWJJZEZyb21TdGF0ZSk7XHJcblx0XHRcdFx0aWYgKCFrbm93blRhYikge1xyXG5cdFx0XHRcdFx0Ly8gUmVmcmVzaCBzb25yYXPEsSBkZWVwIGxpbmsg4oaSIFVSTCdkZW4gbmF2IGl0ZW0gdMO8cmV0IHZlIGFjdGl2ZVJvdXRlcydhIGVrbGUuXHJcblx0XHRcdFx0XHQvLyBVUkwnZGUgYF90YWJgIHlva3NhIChVcmxTZXJpYWxpemVyIHN0cmlwIGV0dGnEn2kgacOnaW4gYWRyZXMgw6d1YnXEn3VuZGFuIHBheWxhxZ/EsWxhblxyXG5cdFx0XHRcdFx0Ly8gbGluayBgX3RhYmAgdGHFn8SxbWF6KSB5ZW5pIHRhYklkIMO8cmV0ICsgaGlzdG9yeSBzdGF0ZSdlIHlhejsgbmF2aWdhdGVCeVVybFxyXG5cdFx0XHRcdFx0Ly8gw6dhxJ9yxLFzxLEgaWxlIHN0YXRlIGluamVrdGUgZWRlcml6LCBhZHJlcyDDp3VidcSfdSB0ZW1peiBrYWzEsXIuXHJcblx0XHRcdFx0XHRpZiAoY3VycmVudFVybCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBzdGF0ZVRhYklkID0gKHdpbmRvdy5oaXN0b3J5LnN0YXRlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbCk/LlsnX3RhYiddO1xyXG5cdFx0XHRcdFx0XHRjb25zdCBuYXZMaW5rID0gY2xlYW5OYXZMaW5rKGN1cnJlbnRVcmwpO1xyXG5cdFx0XHRcdFx0XHQvLyDEsGxrIG5hdmlnYXRpb24nZGEgKEY1L2HDp8SxbMSxxZ8pIGdlbGVuIFVSTCB6YXRlbiBhY3RpdmVSb3V0ZXMndGFraSBiaXIgdGFiIGlsZVxyXG5cdFx0XHRcdFx0XHQvLyBlxZ9sZcWfaXlvcnNhICjDtnplbGxpa2xlIHJlc3RvcmUgZWRpbG1pxZ8gcGlubmVkIHRhYikgWUVOxLAgdGFiIFTDnFJFVE1FIOKAlCBvIHRhYifEsVxyXG5cdFx0XHRcdFx0XHQvLyBrdWxsYW4uIEY1IHNvbnJhc8SxIEFuZ3VsYXIgaW5pdGlhbCBuYXZpZ2F0aW9uIGBoaXN0b3J5LnN0YXRlLl90YWJgJ8SxIGtvcnVNQVog4oaSXHJcblx0XHRcdFx0XHRcdC8vIGBrbm93blRhYmAgeWFrYWxheWFtYXo7IG5hdkxpbmsgZcWfbGXFn21lc2kgcmVzdG9yZS1kdXBsaWNhdGUnaW5pIMO2bmxlci4gWWFsbsSxeiBpbGtcclxuXHRcdFx0XHRcdFx0Ly8gY2hlY2sndGUgKyBzdGF0ZSd0ZSBgX3RhYmAgeW9ra2VuOiBzb25yYWtpIG5hdmlnYXRpb25sYXJkYSBrYXPEsXRsxLEgZHVwbGljYXRlIHRhYiB2ZVxyXG5cdFx0XHRcdFx0XHQvLyBicm93c2VyLWJhY2sgaWxlIGthcGF0xLFsYW4gdGFiJ8SxbiByZS1kZXJpdmUgZGF2cmFuxLHFn8SxIGtvcnVudXIuXHJcblx0XHRcdFx0XHRcdGNvbnN0IGV4aXN0aW5nID1cclxuXHRcdFx0XHRcdFx0XHQhdGhpcy5maXJzdENoZWNrRm9yUm91dGUgJiYgIXN0YXRlVGFiSWRcclxuXHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5hY3RpdmVSb3V0ZXMoKS5maW5kKChyKSA9PiByLm5hdkxpbmsgPT09IG5hdkxpbmspXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcclxuXHRcdFx0XHRcdFx0bGV0IHRhYklkID1cclxuXHRcdFx0XHRcdFx0XHR0eXBlb2Ygc3RhdGVUYWJJZCA9PT0gJ3N0cmluZycgJiYgc3RhdGVUYWJJZC5sZW5ndGggPiAwID8gc3RhdGVUYWJJZCA6IGV4aXN0aW5nPy50YWJJZCA/PyAnJztcclxuXHRcdFx0XHRcdFx0bGV0IG5lZWRzU3RhdGVJbmplY3QgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKCF0YWJJZCkge1xyXG5cdFx0XHRcdFx0XHRcdHRhYklkID0gdGhpcy5nZW5lcmF0ZVRhYklkKCk7XHJcblx0XHRcdFx0XHRcdFx0bmVlZHNTdGF0ZUluamVjdCA9IHRydWU7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZXhpc3RpbmcpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBFxZ9sZcWfZW4gdGFiJ8SxbiBgdGFiSWRgJ3NpbmkgVVJML3N0YXRlJ2UgeWFuc8SxdCDigJQgYWRyZXMgw6d1YnXEn3UgYF90YWJgIHRhxZ/EsW1hZMSxxJ/EsVxyXG5cdFx0XHRcdFx0XHRcdC8vIGnDp2luIFJvdXRlUmV1c2UgYG1mZTo8cmVtb3RlPjo8dGFiSWQ+YCBrZXkgdHV0YXJsxLFsxLHEn8SxIHN0YXRlIGluamVjdCBpc3Rlci5cclxuXHRcdFx0XHRcdFx0XHRuZWVkc1N0YXRlSW5qZWN0ID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR0aGlzLmFjdGl2ZVRhYklkLnNldCh0YWJJZCk7XHJcblx0XHRcdFx0XHRcdGlmICghZXhpc3RpbmcpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBtZW51SW5mbyA9IHRoaXMucmVzb2x2ZU5hdkluZm9Gcm9tTWVudShuYXZMaW5rKTtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBmYWxsYmFja05hbWUgPSAoKTogc3RyaW5nID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdGxldCBwYXRoID0gbmF2TGluaztcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChwYXRoLnN0YXJ0c1dpdGgoJy8nKSkgcGF0aCA9IHBhdGguc2xpY2UoMSk7XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoJy8nKS5maWx0ZXIoKHMpID0+IHMubGVuZ3RoID4gMCk7XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBsYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gfHwgJ1BhZ2UnO1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGxhc3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBsYXN0LnNsaWNlKDEpLnJlcGxhY2UoLy0vZywgJyAnKTtcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuYWRkVG9BY3RpdmVSb3V0ZXMoe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGFiSWQsXHJcblx0XHRcdFx0XHRcdFx0XHRuYXZMaW5rLFxyXG5cdFx0XHRcdFx0XHRcdFx0bmF2TmFtZTogbWVudUluZm8/Lm5hdk5hbWUgfHwgZmFsbGJhY2tOYW1lKCksXHJcblx0XHRcdFx0XHRcdFx0XHRpY29uOiBtZW51SW5mbz8uaWNvblxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZWVkc1N0YXRlSW5qZWN0KSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gTWV2Y3V0IG5hdmlnYXRpb24gY3ljbGUgYml0aW1pbmRlbiBTT05SQSB5ZW5pIG5hdmlnYXRpb24gdGV0aWtsZSDigJRcclxuXHRcdFx0XHRcdFx0XHQvLyBgcXVldWVNaWNyb3Rhc2tgIFJvdXRlcifEsW4gbmF2aWdhdGlvbiBrdXlydcSfdSBmaW5hbGl6ZSBvbG1hZGFuIMOnYWzEscWfxLFwXHJcblx0XHRcdFx0XHRcdFx0Ly8gYEFib3J0RXJyb3I6IFRyYW5zaXRpb24gd2FzIHNraXBwZWRgJ2EgeW9sIGHDp8SxeW9yZHUuIGBzZXRUaW1lb3V0KDApYCBtYWNyb3Rhc2tcclxuXHRcdFx0XHRcdFx0XHQvLyBpbGUgY3VycmVudCBjeWNsZSBiaXRlciwgUm91dGVyIGlkbGUgb2x1ci4gYHRoaXMubmF2aWdhdGVgIHphdGVuIEFib3J0RXJyb3InxLFcclxuXHRcdFx0XHRcdFx0XHQvLyB5dXR1eW9yIOKAlCBjb25jdXJyZW50IG5hdmlnYXRpb24gcmFjZSdsZXJpIHNlc3NpemNlIGlwdGFsIGVkaWxpci5cclxuXHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdHNhZmVOYXZpZ2F0ZSh0aGlzLnJvdXRlciwgd2l0aFRhYklkKG5hdkxpbmssIHRhYklkKSwge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXBsYWNlVXJsOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdGF0ZTogeyBfdGFiOiB0YWJJZCB9XHJcblx0XHRcdFx0XHRcdFx0XHR9KS5jYXRjaCgoKSA9PiB7LyogcmVmcmVzaC1wYXRoIG5vaXNlOiBjYWxsZXIgeW9rLCBzaWxlbnQgKi99KTtcclxuXHRcdFx0XHRcdFx0XHR9LCAwKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5maXJzdENoZWNrRm9yUm91dGUgPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSksXHJcblx0XHRcdG1hcCgodykgPT4gKHcgYXMgTmF2aWdhdGlvbkVuZCkudXJsQWZ0ZXJSZWRpcmVjdHMgfHwgKHcgYXMgTmF2aWdhdGlvbkVuZCkudXJsKVxyXG5cdFx0KVxyXG5cdCk7XHJcblxyXG5cdGFjdGl2ZVJvdXRlcyA9IHNpZ25hbDxOYXZJdGVtW10+KFtdKTtcclxuXHQvKiogSGlzdG9yeSBzdGF0ZSd0ZW4gb2t1bmFuIGFrdGlmIHRhYiBraW1sacSfaSDigJQgYGlzQWN0aXZlKHRhYikgPSB0YWIudGFiSWQgPT09IGFjdGl2ZVRhYklkKClgLiAqL1xyXG5cdGFjdGl2ZVRhYklkID0gc2lnbmFsPHN0cmluZz4oJycpO1xyXG5cclxuXHQvKipcclxuXHQgKiBDaHJvbWUgYm9va21hcmsgY2xpY2sgZGF2cmFuxLHFn8SxOiBha3RpZiB0YWInxLFuIG5hdkxpbmsvbmF2TmFtZSdpIGfDvG5jZWxsZW5pcixcclxuXHQgKiBvIHRhYidhIG5hdmlnYXRlIGVkaWxpci4gWWVuaSB0YWIgYcOnxLFsbWF6LiBNZXZjdXQgdGFiJ8SxbiBgdGFiSWRgJ3NpIEtPUlVOVVIg4oCUXHJcblx0ICogUm91dGVyJ2EgYD9fdGFiPXRhYklkYCBpbGUgbmF2aWdhdGUgZWRpbGlyLCBoaXN0b3J5IHN0YXRlJ2UgeWF6xLFsxLFyOyBuYXZMaW5rXHJcblx0ICogc3RvcmFnZSdkYSBDTEVBTiBzYWtsYW7EsXIuXHJcblx0ICovXHJcblx0bmF2aWdhdGVJbkN1cnJlbnRUYWIobmF2SXRlbTogTmF2SXRlbSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgaWR4ID0gdGhpcy5maW5kQWN0aXZlVGFiSW5kZXgoKTtcclxuXHRcdGlmIChpZHggPT09IC0xKSB7XHJcblx0XHRcdC8vIEFrdGlmIHRhYiB5b2sg4oCUIGZhbGxiYWNrIG9sYXJhayB5ZW5pIHRhYiBhw6cuXHJcblx0XHRcdHRoaXMub3BlbkluTmV3VGFiQW5kRm9jdXMobmF2SXRlbSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGV4aXN0aW5nVGFiID0gdGhpcy5hY3RpdmVSb3V0ZXMoKVtpZHhdO1xyXG5cdFx0Y29uc3QgdGFiSWQgPSBleGlzdGluZ1RhYi50YWJJZDtcclxuXHRcdGNvbnN0IG5ld05hdkxpbmsgPSBjbGVhbk5hdkxpbmsobmF2SXRlbS5uYXZMaW5rKTtcclxuXHRcdC8vIEF5bsSxIG5hdkxpbmsnZSB0xLFrbGFtYSDihpIgeWluZSBkZSBuYXZpZ2F0ZSBldCAoYG9uU2FtZVVybE5hdmlnYXRpb246ICdyZWxvYWQnYCkuXHJcblx0XHRpZiAoZXhpc3RpbmdUYWIubmF2TGluayA9PT0gbmV3TmF2TGluaykge1xyXG5cdFx0XHRzYWZlTmF2aWdhdGUodGhpcy5yb3V0ZXIsIHdpdGhUYWJJZChuZXdOYXZMaW5rLCB0YWJJZCksIHRhYlN0YXRlKHRhYklkKSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuYWN0aXZlUm91dGVzLnVwZGF0ZSgocm91dGVzKSA9PiB7XHJcblx0XHRcdGNvbnN0IG5leHQgPSBbLi4ucm91dGVzXTtcclxuXHRcdFx0Ly8gTWV2Y3V0IHRhYifEsW4gYHRhYklkYCBWRSBgcGlubmVkYCBkdXJ1bXUga29ydW51ciDigJQgbWVuw7xkZW4gZ2VsZW4gbmF2SXRlbSBgcGlubmVkYFxyXG5cdFx0XHQvLyB0YcWfxLFtYXo7IGB7IC4uLm5hdkl0ZW0gfWAgaWxlIGV6aWxpcnNlIHNhYml0bGVubWnFnyB0YWIgdW5waW4gb2x1cmR1ICh0YWIgacOnZXJpxJ9pbmlcclxuXHRcdFx0Ly8gZGXEn2nFn3Rpcm1layBzYWJpdGxlbWV5aSBib3ptYW1hbMSxKS5cclxuXHRcdFx0bmV4dFtpZHhdID0geyAuLi5uYXZJdGVtLCB0YWJJZCwgbmF2TGluazogbmV3TmF2TGluaywgcGlubmVkOiBleGlzdGluZ1RhYi5waW5uZWQgfTtcclxuXHRcdFx0cmV0dXJuIG5leHQ7XHJcblx0XHR9KTtcclxuXHRcdHNhZmVOYXZpZ2F0ZSh0aGlzLnJvdXRlciwgd2l0aFRhYklkKG5ld05hdkxpbmssIHRhYklkKSwgdGFiU3RhdGUodGFiSWQpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFya2EgcGxhbmRhIHllbmkgdGFiIGHDpyDigJQgYWt0aWYgdGFiIGRlxJ9pxZ9tZXosIG5hdmlnYXRlIGVkaWxtZXouIGB0YWJJZGAgaGVyIHphbWFuXHJcblx0ICogeWVuaSDDvHJldGlsaXIgKHlhIGRhIGNhbGxlciB2ZXJkaXlzZSBvIGt1bGxhbsSxbMSxciksIGV4aXN0cyBjaGVjayBZT0tUVVI7IGF5bsSxIHBhdGhcclxuXHQgKiBiaXJkZW4gZmF6bGEgdGFiJ2RhIGJhxJ/EsW1zxLF6IHlhxZ9heWFiaWxpci5cclxuXHQgKi9cclxuXHRvcGVuSW5CYWNrZ3JvdW5kVGFiKG5hdkl0ZW06IE5hdkl0ZW0pOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmFjdGl2ZVJvdXRlcygpLmxlbmd0aCA+PSB0aGlzLk1BWF9UQUJTKSB7XHJcblx0XHRcdHRoaXMubm90aWZ5TWF4VGFic1JlYWNoZWQoKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgdGFiSWQgPSBuYXZJdGVtLnRhYklkIHx8IHRoaXMuZ2VuZXJhdGVUYWJJZCgpO1xyXG5cdFx0Y29uc3QgbmF2TGluayA9IGNsZWFuTmF2TGluayhuYXZJdGVtLm5hdkxpbmspO1xyXG5cdFx0dGhpcy5hY3RpdmVSb3V0ZXMudXBkYXRlKCh2YWwpID0+IFsuLi52YWwsIHsgLi4ubmF2SXRlbSwgdGFiSWQsIG5hdkxpbmsgfV0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogWWVuaSB0YWIgYcOnIHZlIG8gdGFiJ2EgZ2XDpy4gRXhpc3RzIGNoZWNrIFlPSyDigJQgYXluxLEgcGF0aCdpbiBpa2kgYXlyxLEgdGFiJ2kga2FidWwgZWRpbGlyO1xyXG5cdCAqIGhlciB0YWIga2VuZGkgYHRhYklkYCdzaXlsZSBheXLEsSBjb21wb25lbnRSZWYgaW5zdGFudGlhdGUgZWRlci5cclxuXHQgKi9cclxuXHRvcGVuSW5OZXdUYWJBbmRGb2N1cyhuYXZJdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5hY3RpdmVSb3V0ZXMoKS5sZW5ndGggPj0gdGhpcy5NQVhfVEFCUykge1xyXG5cdFx0XHR0aGlzLm5vdGlmeU1heFRhYnNSZWFjaGVkKCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHRhYklkID0gbmF2SXRlbS50YWJJZCB8fCB0aGlzLmdlbmVyYXRlVGFiSWQoKTtcclxuXHRcdGNvbnN0IG5hdkxpbmsgPSBjbGVhbk5hdkxpbmsobmF2SXRlbS5uYXZMaW5rKTtcclxuXHRcdHRoaXMuYWN0aXZlUm91dGVzLnVwZGF0ZSgodmFsKSA9PiBbLi4udmFsLCB7IC4uLm5hdkl0ZW0sIHRhYklkLCBuYXZMaW5rIH1dKTtcclxuXHRcdHNhZmVOYXZpZ2F0ZSh0aGlzLnJvdXRlciwgd2l0aFRhYklkKG5hdkxpbmssIHRhYklkKSwgdGFiU3RhdGUodGFiSWQpKTtcclxuXHR9XHJcblxyXG5cdC8qKiBQcm9ncmFtYXRpayB0YWIgZWtsZW1lOyBhY3RpdmVSb3V0ZSBvYnNlcnZhYmxlIHJlZnJlc2ggcGF0aCdpIGJ1bnUga3VsbGFuxLFyLiAqL1xyXG5cdGFkZFRvQWN0aXZlUm91dGVzKG5hdkl0ZW06IE5hdkl0ZW0pOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmFjdGl2ZVJvdXRlcygpLmxlbmd0aCA+PSB0aGlzLk1BWF9UQUJTKSB7XHJcblx0XHRcdC8vIFByb2dyYW1tYXRpYyDDp2HEn3LEsSDigJQgdG9hc3QgZ8O2c3Rlcm1layB5ZXJpbmUgc2Vzc2l6Y2UgcmV0dXJuLlxyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCB0YWJJZCA9IG5hdkl0ZW0udGFiSWQgfHwgdGhpcy5nZW5lcmF0ZVRhYklkKCk7XHJcblx0XHRjb25zdCBuYXZMaW5rID0gY2xlYW5OYXZMaW5rKG5hdkl0ZW0ubmF2TGluayk7XHJcblx0XHQvLyBTaWduYWwgY2hhbmdlIGRldGVjdGlvbiByZWZlcmVuY2UgaWRlbnRpdHkgaWxlIMOnYWzEscWfxLFyIOKAlCB5ZW5pIGFycmF5IGTDtm4uXHJcblx0XHR0aGlzLmFjdGl2ZVJvdXRlcy51cGRhdGUoKHZhbCkgPT4gWy4uLnZhbCwgeyAuLi5uYXZJdGVtLCB0YWJJZCwgbmF2TGluayB9XSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBa3RpZiB0YWInxLEgYGFjdGl2ZVRhYklkYCDDvHplcmluZGVuIGJ1bHVyLiBBeW7EsSBgbmF2TGlua2AnaW4gYmlyZGVuIGZhemxhIHRhYidpXHJcblx0ICogb2xhYmlsZWNlxJ9pIGnDp2luIG5hdkxpbmsga2FyxZ/EsWxhxZ90xLFybWFzxLEgYW1iaWd1b3VzOyB0YWJJZCB0ZWsgZG/En3J1IGtpbWxpay5cclxuXHQgKi9cclxuXHRwcml2YXRlIGZpbmRBY3RpdmVUYWJJbmRleCgpOiBudW1iZXIge1xyXG5cdFx0Y29uc3QgdGFiSWQgPSB0aGlzLmFjdGl2ZVRhYklkKCk7XHJcblx0XHRpZiAoIXRhYklkKSByZXR1cm4gLTE7XHJcblx0XHRyZXR1cm4gdGhpcy5hY3RpdmVSb3V0ZXMoKS5maW5kSW5kZXgoKHIpID0+IHIudGFiSWQgPT09IHRhYklkKTtcclxuXHR9XHJcblxyXG5cdC8qKiBUYWIgbGltaXRpIGHFn8SxbGTEscSfxLFuZGEga3VsbGFuxLFjxLF5xLEgdG9hc3QgaWxlIGJpbGdpbGVuZGlyaXIuICovXHJcblx0cHJpdmF0ZSBub3RpZnlNYXhUYWJzUmVhY2hlZCgpOiB2b2lkIHtcclxuXHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0c2V2ZXJpdHk6ICd3YXJuJyxcclxuXHRcdFx0c3VtbWFyeTogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFiLm1heFJlYWNoZWRTdW1tYXJ5JywgeyBtYXg6IHRoaXMuTUFYX1RBQlMgfSksXHJcblx0XHRcdGRldGFpbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFiLm1heFJlYWNoZWREZXRhaWwnKSxcclxuXHRcdFx0a2V5OiAndG9hc3Qtcm9vdCdcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIEFuYXNheWZhIG5hdkxpbmsnaSDigJQgaG9zdCBtZW7DvCByb290IGl0ZW0nxLFuZGFuICh5b2tzYSAnLycpLCBjbGVhbiBmb3JtYXQuICovXHJcblx0cHJpdmF0ZSBob21lTmF2TGluaygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGNsZWFuTmF2TGluayh0aGlzLmhvbWVOYXZJdGVtUHJvdmlkZXI/LigpLm5hdkxpbmsgfHwgJy8nKTtcclxuXHR9XHJcblxyXG5cdC8qKiBWZXJpbGVuIHRhYiBhbmFzYXlmYXlhIG3EsSBhaXQuICovXHJcblx0cHJpdmF0ZSBpc0hvbWVUYWIoaXRlbTogTmF2SXRlbSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIGl0ZW0ubmF2TGluayA9PT0gdGhpcy5ob21lTmF2TGluaygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQW5hc2F5ZmEgdGFiJ8SxIGHDp8SxcCBvbmEgbmF2aWdhdGUgZWRlciDigJQgdGFiIGxpc3Rlc2kgSMSww4cgYm/FnyBrYWxtYW1hbMSxIChlbiBheiAxIHRhYikuXHJcblx0ICogTmF2SXRlbSBob3N0IG1lbsO8IHJvb3QgaXRlbSfEsW5kYW4gZ2VsaXI7IHlva3NhIGAvYCArIGkxOG4gZmFsbGJhY2sgKCd0YWIuaG9tZScsICdwaSBwaS1ob21lJykuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBvcGVuSG9tZVRhYigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuXHRcdGNvbnN0IGJhc2UgPSB0aGlzLmhvbWVOYXZJdGVtUHJvdmlkZXI/LigpO1xyXG5cdFx0Y29uc3QgbmF2TGluayA9IGNsZWFuTmF2TGluayhiYXNlPy5uYXZMaW5rIHx8ICcvJyk7XHJcblx0XHRjb25zdCB0YWJJZCA9IHRoaXMuZ2VuZXJhdGVUYWJJZCgpO1xyXG5cdFx0Y29uc3QgaG9tZTogTmF2SXRlbSA9IHtcclxuXHRcdFx0dGFiSWQsXHJcblx0XHRcdG5hdkxpbmssXHJcblx0XHRcdG5hdk5hbWU6IGJhc2U/Lm5hdk5hbWUgfHwgdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFiLmhvbWUnKSxcclxuXHRcdFx0aWNvbjogYmFzZT8uaWNvbiB8fCAncGkgcGktaG9tZSdcclxuXHRcdH07XHJcblx0XHR0aGlzLmFjdGl2ZVJvdXRlcy51cGRhdGUoKHZhbCkgPT4gWy4uLnZhbCwgaG9tZV0pO1xyXG5cdFx0cmV0dXJuIHNhZmVOYXZpZ2F0ZSh0aGlzLnJvdXRlciwgd2l0aFRhYklkKG5hdkxpbmssIHRhYklkKSwgdGFiU3RhdGUodGFiSWQpKTtcclxuXHR9XHJcblxyXG5cdGNsb3NlTmF2aWdhdGlvbihuYXZJdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHQvLyBgdGFiSWRgIGlsZSBidWwg4oCUIGF5bsSxIHBhdGgnaW4gYmlyZGVuIGZhemxhIHRhYidpIG9sYWJpbGVjZcSfaSBpw6dpbiBgbmF2TGlua2BcclxuXHRcdC8vIGthcsWfxLFsYcWfdMSxcm1hc8SxIGFtYmlndW91cyBvbHVyLCBraW1saWsgYmF6bMSxIGFyYW1hIHRlayBkb8SfcnUgecO2bnRlbS5cclxuXHRcdGNvbnN0IGlkeCA9IHRoaXMuYWN0aXZlUm91dGVzKCkuZmluZEluZGV4KChyKSA9PiByLnRhYklkID09PSBuYXZJdGVtLnRhYklkKTtcclxuXHRcdGNvbnNvbGUubG9nKGBbTmF2U2VydmljZV0gY2xvc2VOYXZpZ2F0aW9uIHRhYklkPVwiJHtuYXZJdGVtLnRhYklkfVwiIG5hdkxpbms9XCIke25hdkl0ZW0ubmF2TGlua31cIiBpbmRleD0ke2lkeH1gKTtcclxuXHRcdGlmIChpZHggPT09IC0xKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgY2xvc2VkSXRlbSA9IHRoaXMuYWN0aXZlUm91dGVzKClbaWR4XTtcclxuXHRcdC8vIFNvbiBrYWxhbiB0YWIgYW5hc2F5ZmF5c2Ega2FwYXRtYSDigJQgaGVyIHphbWFuIGVuIGF6IDEgKGFuYXNheWZhKSB0YWIgYcOnxLFrIGthbG1hbMSxLlxyXG5cdFx0aWYgKHRoaXMuYWN0aXZlUm91dGVzKCkubGVuZ3RoID09PSAxICYmIHRoaXMuaXNIb21lVGFiKGNsb3NlZEl0ZW0pKSByZXR1cm47XHJcblx0XHQvLyBTaWduYWwgY2hhbmdlIGRldGVjdGlvbiByZWZlcmVuY2UgaWRlbnRpdHkgaWxlIMOnYWzEscWfxLFyIOKAlCB5ZW5pIGFycmF5IGTDtm4uXHJcblx0XHR0aGlzLmFjdGl2ZVJvdXRlcy51cGRhdGUoKHZhbCkgPT4gdmFsLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaWR4KSk7XHJcblxyXG5cdFx0Y29uc3QgY2xlYW51cCA9ICgpOiB2b2lkID0+IHRoaXMuY2xlYW51cFRhYkhhbmRsZShjbG9zZWRJdGVtKTtcclxuXHRcdGNvbnN0IGNsb3NpbmdBY3RpdmVUYWIgPSB0aGlzLmFjdGl2ZVRhYklkKCkgPT09IGNsb3NlZEl0ZW0udGFiSWQ7XHJcblxyXG5cdFx0aWYgKGNsb3NpbmdBY3RpdmVUYWIpIHtcclxuXHRcdFx0Ly8gQWt0aWYgdGFiIGthcGF0xLFsxLF5b3Ig4oCUIGJhxZ9rYSB0YWInYSAodmV5YSBob21lJ2EpIG5hdmlnYXRlIGVkaXAgY2xlYW51cCfEsSBTT05SQSB0ZXRpa2xlLlxyXG5cdFx0XHQvLyBBa3NpIHRha2RpcmRlIHN0cmF0ZWd5IGhlbsO8eiBgc3RvcmUoJ21mZToke3JlbW90ZU5hbWV9OiR7dGFiSWR9JywgaGFuZGxlKWAnaSB5YXBtYWRhblxyXG5cdFx0XHQvLyBgZGVsZXRlU3RvcmVkUm91dGVgIMOnYcSfcsSxbMSxciB2ZSBjbGVhbnVwIGJvxZ8gaGl0IGVkZXI7IGFyZMSxbmRhbiBkZXRhY2ggdGFtYW1sYW7EsW5jYVxyXG5cdFx0XHQvLyBlbGVtZW50IGhpZGRlbiBjb250YWluZXInZGEgb3JwaGFuIGthbMSxciAocmFjZSBjb25kaXRpb24pLlxyXG5cdFx0XHRjb25zdCByZW1haW5pbmcgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0XHRjb25zdCB3aWxsTmF2aWdhdGVJdGVtID0gcmVtYWluaW5nLmxlbmd0aCA+IDAgPyByZW1haW5pbmdbaWR4XSB8fCByZW1haW5pbmdbaWR4IC0gMV0gOiBudWxsO1xyXG5cdFx0XHRpZiAod2lsbE5hdmlnYXRlSXRlbSkge1xyXG5cdFx0XHRcdHNhZmVOYXZpZ2F0ZShcclxuXHRcdFx0XHRcdHRoaXMucm91dGVyLFxyXG5cdFx0XHRcdFx0d2l0aFRhYklkKHdpbGxOYXZpZ2F0ZUl0ZW0ubmF2TGluaywgd2lsbE5hdmlnYXRlSXRlbS50YWJJZCksXHJcblx0XHRcdFx0XHR0YWJTdGF0ZSh3aWxsTmF2aWdhdGVJdGVtLnRhYklkKVxyXG5cdFx0XHRcdCkuZmluYWxseShjbGVhbnVwKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyBIacOnIHRhYiBrYWxtYWTEsSDigJQgYm/FnyBixLFyYWttYSwgYW5hc2F5ZmEgdGFiJ8SxIGHDpyAoZW4gYXogMSB0YWIga3VyYWzEsSkuXHJcblx0XHRcdFx0dGhpcy5vcGVuSG9tZVRhYigpLmZpbmFsbHkoY2xlYW51cCk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIEFrdGlmIGRlxJ9pbGRpIOKAlCBuYXZpZ2F0aW9uIGdlcmVrbWV6LiBBbmNhayBhcmthIHBsYW5kYSBhw6fEsWzEsXAgKGBvcGVuSW5CYWNrZ3JvdW5kVGFiYClcclxuXHRcdFx0Ly8gaGnDpyBnw7Zyw7xudMO8bGVubWVtacWfIHRhYiBoZW7DvHogUm91dGVyIHRhcmFmxLFuZGFuIGBzdG9yZSgpYCBlZGlsbWVtacWfIG9sYWJpbGlyOyBjbGVhbnVwJ8SxXHJcblx0XHRcdC8vIGJpciBtaWNyb3Rhc2sgZ2VjaWt0aXJpcCBvbGFzxLEgc3RvcmUgY3ljbGUnxLFuYSBmxLFyc2F0IHZlcml5b3J1eiAob3JwaGFuIGhhbmRsZSDDtm5sZW1pKS5cclxuXHRcdFx0dm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKGNsZWFudXApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQmlyIHRhYiBoYXJpw6cgZGnEn2VyIHTDvG0gdGFiJ2xhcsSxIGthcGF0xLFyLiBBa3RpZiB0YWIga2FwYXTEsWxhbmxhcmRhbiBpc2UgYGtlZXBJdGVtYCdhIGdlw6dlci5cclxuXHQgKiAqKlNhYml0IHRhYidsYXIga29ydW51cioqIChDaHJvbWUgZGF2cmFuxLHFn8SxKSDigJQgcGlubmVkIG9sYW5sYXIgaGVyIHphbWFuIGHDp8SxayBrYWzEsXIuXHJcblx0ICovXHJcblx0Y2xvc2VPdGhlcnMoa2VlcEl0ZW06IE5hdkl0ZW0pOiB2b2lkIHtcclxuXHRcdGNvbnN0IGFsbCA9IHRoaXMuYWN0aXZlUm91dGVzKCk7XHJcblx0XHRjb25zdCB0b0Nsb3NlID0gYWxsLmZpbHRlcigocikgPT4gci50YWJJZCAhPT0ga2VlcEl0ZW0udGFiSWQgJiYgIXIucGlubmVkKTtcclxuXHRcdGlmICh0b0Nsb3NlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cdFx0Y29uc3Qgc3Vydml2b3JJZHMgPSBuZXcgU2V0KFtrZWVwSXRlbS50YWJJZCwgLi4uYWxsLmZpbHRlcigocikgPT4gci5waW5uZWQpLm1hcCgocikgPT4gci50YWJJZCldKTtcclxuXHRcdHRoaXMuYWN0aXZlUm91dGVzLnNldChhbGwuZmlsdGVyKChyKSA9PiBzdXJ2aXZvcklkcy5oYXMoci50YWJJZCkpKTtcclxuXHRcdGNvbnN0IGNsZWFudXBBbGwgPSAoKTogdm9pZCA9PiB0b0Nsb3NlLmZvckVhY2goKHQpID0+IHRoaXMuY2xlYW51cFRhYkhhbmRsZSh0KSk7XHJcblx0XHRpZiAodGhpcy5hY3RpdmVUYWJJZCgpICE9PSBrZWVwSXRlbS50YWJJZCkge1xyXG5cdFx0XHRzYWZlTmF2aWdhdGUoXHJcblx0XHRcdFx0dGhpcy5yb3V0ZXIsXHJcblx0XHRcdFx0d2l0aFRhYklkKGtlZXBJdGVtLm5hdkxpbmssIGtlZXBJdGVtLnRhYklkKSxcclxuXHRcdFx0XHR0YWJTdGF0ZShrZWVwSXRlbS50YWJJZClcclxuXHRcdFx0KS5maW5hbGx5KGNsZWFudXBBbGwpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y2xlYW51cEFsbCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVmVyaWxlbiB0YWInxLFuIHNhxJ/EsW5kYWtpIHTDvG0gdGFiJ2xhcsSxIGthcGF0xLFyLiAqKlNhYml0IHRhYidsYXIga29ydW51cioqIOKAlFxyXG5cdCAqIHBpbm5lZCBiaXIgdGFiIHNhxJ9kYSBvbHNhIGJpbGUga2FwYXTEsWxtYXogKENocm9tZSBkYXZyYW7EscWfxLEpLlxyXG5cdCAqL1xyXG5cdGNsb3NlVG9SaWdodChpdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHRjb25zdCBhbGwgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0Y29uc3QgaWR4ID0gYWxsLmZpbmRJbmRleCgocikgPT4gci50YWJJZCA9PT0gaXRlbS50YWJJZCk7XHJcblx0XHRpZiAoaWR4ID09PSAtMSkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgdG9DbG9zZSA9IGFsbC5zbGljZShpZHggKyAxKS5maWx0ZXIoKHIpID0+ICFyLnBpbm5lZCk7XHJcblx0XHRpZiAodG9DbG9zZS5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHRcdGNvbnN0IHRvQ2xvc2VJZHMgPSBuZXcgU2V0KHRvQ2xvc2UubWFwKChyKSA9PiByLnRhYklkKSk7XHJcblx0XHR0aGlzLmFjdGl2ZVJvdXRlcy5zZXQoYWxsLmZpbHRlcigocikgPT4gIXRvQ2xvc2VJZHMuaGFzKHIudGFiSWQpKSk7XHJcblx0XHRjb25zdCBhY3RpdmVXYXNDbG9zZWQgPSB0b0Nsb3NlLnNvbWUoKHIpID0+IHIudGFiSWQgPT09IHRoaXMuYWN0aXZlVGFiSWQoKSk7XHJcblx0XHRjb25zdCBjbGVhbnVwQWxsID0gKCk6IHZvaWQgPT4gdG9DbG9zZS5mb3JFYWNoKCh0KSA9PiB0aGlzLmNsZWFudXBUYWJIYW5kbGUodCkpO1xyXG5cdFx0aWYgKGFjdGl2ZVdhc0Nsb3NlZCkge1xyXG5cdFx0XHRzYWZlTmF2aWdhdGUoXHJcblx0XHRcdFx0dGhpcy5yb3V0ZXIsXHJcblx0XHRcdFx0d2l0aFRhYklkKGl0ZW0ubmF2TGluaywgaXRlbS50YWJJZCksXHJcblx0XHRcdFx0dGFiU3RhdGUoaXRlbS50YWJJZClcclxuXHRcdFx0KS5maW5hbGx5KGNsZWFudXBBbGwpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y2xlYW51cEFsbCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2FiaXQgb2xtYXlhbiB0w7xtIHRhYidsYXLEsSBrYXBhdMSxci4gKipTYWJpdCB0YWInbGFyIGtvcnVudXIqKiDigJQga3VsbGFuxLFjxLEgXCJUw7xtw7xuw7wgS2FwYXRcIlxyXG5cdCAqIGlzdGVyc2UgYmlsZSBwaW5uZWQgdGFiJ2xhciBhw6fEsWsga2FsxLFyIChDaHJvbWUgZGF2cmFuxLHFn8SxKS4gSGnDpyBwaW5uZWQgdGFiIHlva3NhIGFuYSBzYXlmYXlhXHJcblx0ICogbmF2aWdhdGUgZWRpbGlyLlxyXG5cdCAqL1xyXG5cdGNsb3NlQWxsKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgYWxsID0gdGhpcy5hY3RpdmVSb3V0ZXMoKTtcclxuXHRcdGlmIChhbGwubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblx0XHRjb25zdCB0b0Nsb3NlID0gYWxsLmZpbHRlcigocikgPT4gIXIucGlubmVkKTtcclxuXHRcdGlmICh0b0Nsb3NlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cdFx0Y29uc3Qgc3Vydml2b3JzID0gYWxsLmZpbHRlcigocikgPT4gci5waW5uZWQpO1xyXG5cdFx0dGhpcy5hY3RpdmVSb3V0ZXMuc2V0KHN1cnZpdm9ycyk7XHJcblx0XHRjb25zdCBjbGVhbnVwQWxsID0gKCk6IHZvaWQgPT4gdG9DbG9zZS5mb3JFYWNoKCh0KSA9PiB0aGlzLmNsZWFudXBUYWJIYW5kbGUodCkpO1xyXG5cdFx0Ly8gQWt0aWYgdGFiIGthcGF0xLFsYW5sYXJkYW4gaXNlOiB5YSBiaXIgcGlubmVkIHRhYidhIGdlw6cgKHlhxZ/EsXlvcnNhKSwgeW9rc2EgYW5hIHNheWZheWEuXHJcblx0XHRjb25zdCBhY3RpdmVXYXNDbG9zZWQgPSB0b0Nsb3NlLnNvbWUoKHIpID0+IHIudGFiSWQgPT09IHRoaXMuYWN0aXZlVGFiSWQoKSk7XHJcblx0XHRpZiAoYWN0aXZlV2FzQ2xvc2VkKSB7XHJcblx0XHRcdGlmIChzdXJ2aXZvcnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGNvbnN0IHRhcmdldCA9IHN1cnZpdm9yc1swXTtcclxuXHRcdFx0XHRzYWZlTmF2aWdhdGUodGhpcy5yb3V0ZXIsIHdpdGhUYWJJZCh0YXJnZXQubmF2TGluaywgdGFyZ2V0LnRhYklkKSwgdGFiU3RhdGUodGFyZ2V0LnRhYklkKSkuZmluYWxseShjbGVhbnVwQWxsKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyBQaW5uZWQgc3Vydml2b3IgeW9rIOKAlCBib8WfIGLEsXJha21hLCBhbmFzYXlmYSB0YWInxLEgYcOnIChlbiBheiAxIHRhYiBrdXJhbMSxKS5cclxuXHRcdFx0XHR0aGlzLm9wZW5Ib21lVGFiKCkuZmluYWxseShjbGVhbnVwQWxsKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y2xlYW51cEFsbCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGFiIHNhYml0bGVtZSB0b2dnbGUg4oCUIENocm9tZS12YXJpIHBpbm5pbmcuIFBpbm5lZCB0YWInbGFyIHRhYiBiYXInxLFuICoqc29sdW5hKiogdGHFn8SxbsSxclxyXG5cdCAqIChpbnNlcnRpb24gc8SxcmFzxLFuxLEga29ydXlhcmFrKSwga29tcGFrdCBnw7Zyw7xuw7xyLCBgY2xvc2VPdGhlcnNgL2BjbG9zZVRvUmlnaHRgL2BjbG9zZUFsbGBcclxuXHQgKiDDp2HEn3LEsWxhcsSxbmRhbiBrb3J1bnVyLiBBeW7EsSBwaW5uZWQgdMSxa2xhbsSxcnNhIHNhYml0bGVtZXlpIGthbGTEsXLEsXIg4oaSIG5vcm1hbCBhbGFuxLFuICoqc29udW5hKipcclxuXHQgKiB0YcWfxLFuxLFyLlxyXG5cdCAqL1xyXG5cdHRvZ2dsZVBpbihpdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHRjb25zdCBhbGwgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0Y29uc3QgaWR4ID0gYWxsLmZpbmRJbmRleCgocikgPT4gci50YWJJZCA9PT0gaXRlbS50YWJJZCk7XHJcblx0XHRpZiAoaWR4ID09PSAtMSkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgdGFyZ2V0ID0gYWxsW2lkeF07XHJcblx0XHRjb25zdCBuZXdQaW5uZWQgPSAhdGFyZ2V0LnBpbm5lZDtcclxuXHRcdC8vIMOWbmNlIHRhcmdldCfEsSBhcnJheSdkZW4gw6fEsWthciwgc29ucmEgcGlubmVkL25vcm1hbCBibG/En3VudW4gKipzb251bmEqKiBla2xlLlxyXG5cdFx0Ly8gQnUgQ2hyb21lIGRhdnJhbsSxxZ/EsTogcGlubGVuaW5jZSBwaW5uZWQgYmxvxJ91biBzb251bmEgKGVuIHNhxJ9hKSwgdW5waW5sZW5pbmNlIG5vcm1hbFxyXG5cdFx0Ly8gYmxvxJ91biBiYcWfxLFuYSAocGlubmVkJ2luIGhlbWVuIHNhxJ/EsW5hKS5cclxuXHRcdGNvbnN0IHdpdGhvdXQgPSBhbGwuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpZHgpO1xyXG5cdFx0Y29uc3QgcGlubmVkU2VnbWVudCA9IHdpdGhvdXQuZmlsdGVyKChyKSA9PiByLnBpbm5lZCk7XHJcblx0XHRjb25zdCBub3JtYWxTZWdtZW50ID0gd2l0aG91dC5maWx0ZXIoKHIpID0+ICFyLnBpbm5lZCk7XHJcblx0XHRjb25zdCB1cGRhdGVkOiBOYXZJdGVtID0geyAuLi50YXJnZXQsIHBpbm5lZDogbmV3UGlubmVkIH07XHJcblx0XHQvLyBQaW4g4oaSIHBpbm5lZCBibG/En3VuIHNvbnVuYTsgdW5waW4g4oaSIG5vcm1hbCBibG/En3VuIGJhxZ/EsW5hLiBIZXIgaWtpIGR1cnVtZGEgZGEgYHVwZGF0ZWRgLFxyXG5cdFx0Ly8gcGlubmVkIHZlIG5vcm1hbCBzZWdtZW50bGVyaW4gU0lOSVJJTkEgeWVybGXFn2lyIChwb3ppc3lvbiBheW7EsSkg4oaSIHRlayBpZmFkZSB5ZXRlcmxpLlxyXG5cdFx0Y29uc3QgbmV4dCA9IFsuLi5waW5uZWRTZWdtZW50LCB1cGRhdGVkLCAuLi5ub3JtYWxTZWdtZW50XTtcclxuXHRcdHRoaXMuYWN0aXZlUm91dGVzLnNldChuZXh0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBTxLFyYWRha2kgdGFiJ2EgKGNpcmN1bGFyKSBnZcOnZXIuICovXHJcblx0Z29Ub05leHRUYWIoKTogdm9pZCB7XHJcblx0XHRjb25zdCBhbGwgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0aWYgKGFsbC5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHRcdGNvbnN0IGlkeCA9IHRoaXMuZmluZEFjdGl2ZVRhYkluZGV4KCk7XHJcblx0XHRjb25zdCBuZXh0SWR4ID0gaWR4ID09PSAtMSA/IDAgOiAoaWR4ICsgMSkgJSBhbGwubGVuZ3RoO1xyXG5cdFx0Y29uc3QgdGFyZ2V0ID0gYWxsW25leHRJZHhdO1xyXG5cdFx0c2FmZU5hdmlnYXRlKHRoaXMucm91dGVyLCB3aXRoVGFiSWQodGFyZ2V0Lm5hdkxpbmssIHRhcmdldC50YWJJZCksIHRhYlN0YXRlKHRhcmdldC50YWJJZCkpO1xyXG5cdH1cclxuXHJcblx0LyoqIMOWbmNla2kgdGFiJ2EgKGNpcmN1bGFyKSBnZcOnZXIuICovXHJcblx0Z29Ub1ByZXZUYWIoKTogdm9pZCB7XHJcblx0XHRjb25zdCBhbGwgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0aWYgKGFsbC5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHRcdGNvbnN0IGlkeCA9IHRoaXMuZmluZEFjdGl2ZVRhYkluZGV4KCk7XHJcblx0XHRjb25zdCBwcmV2SWR4ID0gaWR4ID09PSAtMSA/IGFsbC5sZW5ndGggLSAxIDogKGlkeCAtIDEgKyBhbGwubGVuZ3RoKSAlIGFsbC5sZW5ndGg7XHJcblx0XHRjb25zdCB0YXJnZXQgPSBhbGxbcHJldklkeF07XHJcblx0XHRzYWZlTmF2aWdhdGUodGhpcy5yb3V0ZXIsIHdpdGhUYWJJZCh0YXJnZXQubmF2TGluaywgdGFyZ2V0LnRhYklkKSwgdGFiU3RhdGUodGFyZ2V0LnRhYklkKSk7XHJcblx0fVxyXG5cclxuXHQvKiogSW5kZXgndGVraSB0YWInYSBnZcOnZXIgKEFsdCsxLi45IGnDp2luIDAtdGFiYW5sxLEgaW5kZXgpLiAqL1xyXG5cdGdvVG9UYWJCeUluZGV4KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGFsbCA9IHRoaXMuYWN0aXZlUm91dGVzKCk7XHJcblx0XHRpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IGFsbC5sZW5ndGgpIHJldHVybjtcclxuXHRcdGNvbnN0IHRhcmdldCA9IGFsbFtpbmRleF07XHJcblx0XHRzYWZlTmF2aWdhdGUodGhpcy5yb3V0ZXIsIHdpdGhUYWJJZCh0YXJnZXQubmF2TGluaywgdGFyZ2V0LnRhYklkKSwgdGFiU3RhdGUodGFyZ2V0LnRhYklkKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBWZXJpbGVuIHRhYidhIG5hdmlnYXRlIOKAlCBVSSdkYW4gKHRhYiB0xLFrbGFtYSkgw6dhxJ9yxLFsxLFyLiBSb3V0ZXInYSBgX3RhYmAgaWxlIFVSTCB2ZVxyXG5cdCAqIGBleHRyYXMuc3RhdGVgIGlsZSB0YWJJZCB2ZXJpcjsgVXJsU2VyaWFsaXplciBhZHJlcyDDp3VidcSfdW51IHRlbWl6IHR1dGFyLlxyXG5cdCAqL1xyXG5cdG5hdmlnYXRlVG9UYWIoaXRlbTogTmF2SXRlbSk6IHZvaWQge1xyXG5cdFx0aWYgKCFpdGVtPy5uYXZMaW5rIHx8ICFpdGVtPy50YWJJZCkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgdXJsID0gd2l0aFRhYklkKGl0ZW0ubmF2TGluaywgaXRlbS50YWJJZCk7XHJcblx0XHRjb25zb2xlLmxvZyhgW05hdlNlcnZpY2VdIG5hdmlnYXRlVG9UYWIgdGFiSWQ9XCIke2l0ZW0udGFiSWR9XCIgbmF2TGluaz1cIiR7aXRlbS5uYXZMaW5rfVwiIOKGkiB1cmw9XCIke3VybH1cImApO1xyXG5cdFx0c2FmZU5hdmlnYXRlKHRoaXMucm91dGVyLCB1cmwsIHRhYlN0YXRlKGl0ZW0udGFiSWQpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEJlbGlybGkgYmlyIHRhYifEsW4gYG5hdkxpbmtgJ2luaSB2ZSAodmFyc2EpIGBuYXZOYW1lYCdpbmkgZ8O8bmNlbGxlci4gKipLYXluYcSfYS1iYcSfbMSxKipcclxuXHQgKiAocGVyLXRhYikgc3luYyDigJQgY2FsbGVyIGhhbmdpIHRhYifEsW4gVVJMJ2kgb2xkdcSfdW51IHPDtnlsZXIsIE5hdlNlcnZpY2UgYWt0aWYgdGFiXHJcblx0ICogdmFyc2F5xLFtxLFuZGEgYnVsdW5tYXouIEhpZGRlbiBjb250YWluZXInZGFraSBhc3luYyBNRkUgTmF2aWdhdGlvbkVuZCdsZXJpIGFrdGlmIHRhYifEsW5cclxuXHQgKiBzdGF0ZSdpbmkgS09OVEFNxLBORSBFREVNRVouXHJcblx0ICpcclxuXHQgKiBgdGl0bGVgIHBhcmFtZXRyZXNpIE1GRSBSb3V0ZXIgZGVlcGVzdCByb3V0ZSd1bnVuIGBSb3V0ZS50aXRsZWAgdmV5YSBgZGF0YS50YWJOYW1lYFxyXG5cdCAqIGRlxJ9lcmluZGVuIGdlbGlyIOKGkiBrdWxsYW7EsWPEsSBkZXRhaWwvZWRpdCBnaWJpIHN1Yi1zYXlmYWxhcmEgbmF2aWdhdGUgb2xkdcSfdW5kYSB0YWJcclxuXHQgKiBhZMSxIGRpbmFtaWsgZ8O8bmNlbGxlbmlyLiBgdGl0bGVgIHVuZGVmaW5lZCBpc2UgdGFiLm5hdk5hbWUgZGXEn2nFn21leiAoc3RhdGlrIGthbMSxcikuXHJcblx0ICpcclxuXHQgKiBBcHBMYXlvdXRDb21wb25lbnQgZWZmZWN0J3RlbiBgYnJpZGdlLmFjdGl2ZU1GRVVybGAgKGB7dGFiSWQsIHVybCwgdGl0bGV9YCkgaWxlIMOnYcSfcsSxbMSxci5cclxuXHQgKi9cclxuXHRzeW5jQWN0aXZlVGFiTmF2TGlua0ZvclRhYih0YWJJZDogc3RyaW5nLCByYXdVcmw6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdGlmICghdGFiSWQgfHwgIXJhd1VybCkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgY2xlYW5VcmwgPSBjbGVhbk5hdkxpbmsocmF3VXJsKTtcclxuXHRcdGNvbnN0IHRhcmdldCA9IHRoaXMuYWN0aXZlUm91dGVzKCkuZmluZCgodCkgPT4gdC50YWJJZCA9PT0gdGFiSWQpO1xyXG5cdFx0aWYgKCF0YXJnZXQpIHJldHVybjtcclxuXHRcdGNvbnN0IGxpbmtDaGFuZ2VkID0gdGFyZ2V0Lm5hdkxpbmsgIT09IGNsZWFuVXJsO1xyXG5cdFx0Y29uc3QgbmFtZUNoYW5nZWQgPSAhIXRpdGxlICYmIHRhcmdldC5uYXZOYW1lICE9PSB0aXRsZTtcclxuXHRcdGlmICghbGlua0NoYW5nZWQgJiYgIW5hbWVDaGFuZ2VkKSByZXR1cm47XHJcblx0XHRjb25zdCBuZXdOYXZMaW5rID0gbGlua0NoYW5nZWQgPyBjbGVhblVybCA6IHRhcmdldC5uYXZMaW5rO1xyXG5cdFx0Y29uc3QgbmV3TmFtZSA9IG5hbWVDaGFuZ2VkID8gdGl0bGUhIDogdGFyZ2V0Lm5hdk5hbWU7XHJcblx0XHRjb25zb2xlLmxvZyhcclxuXHRcdFx0YFtOYXZTZXJ2aWNlXSBzeW5jQWN0aXZlVGFiTmF2TGlua0ZvclRhYiB0YWI9XCIke3RhYklkfVwiIGAgK1xyXG5cdFx0XHRgbmF2TGluayBcIiR7dGFyZ2V0Lm5hdkxpbmt9XCIg4oaSIFwiJHtuZXdOYXZMaW5rfVwiIG5hbWUgXCIke3RhcmdldC5uYXZOYW1lfVwiIOKGkiBcIiR7bmV3TmFtZX1cImBcclxuXHRcdCk7XHJcblx0XHR0aGlzLmFjdGl2ZVJvdXRlcy51cGRhdGUoKHJvdXRlcykgPT5cclxuXHRcdFx0cm91dGVzLm1hcCgodCkgPT4gKHQudGFiSWQgPT09IHRhYklkID8geyAuLi50LCBuYXZMaW5rOiBuZXdOYXZMaW5rLCBuYXZOYW1lOiBuZXdOYW1lIH0gOiB0KSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUYWIgY29udGV4dC1tZW51IFwiWWluZWxlXCIgKENocm9tZSBcIkR1cGxpY2F0ZVwiKTogbWV2Y3V0IHRhYifEsW4gcGF0aCdpIGtvcHlhbGFuxLFyLCB5ZW5pIGJpclxyXG5cdCAqIGB0YWJJZGAgw7xyZXRpbGlyIHZlIHllbmkgdGFiIG9sdcWfdHVydWx1ci4gU3RyYXRlZ3kgYF90YWJgIHF1ZXJ5IHBhcmFtJ8SxbsSxIHJvdXRlIGtleSdpblxyXG5cdCAqIHBhcsOnYXPEsSB5YXB0xLHEn8SxIGnDp2luIHllbmkgdGFiIGJhxJ/EsW1zxLF6IGBzdG9yZWRSb3V0ZXNgIHNsb3QndW5hIHlhesSxbMSxciDihpIgYmHEn8SxbXPEsXpcclxuXHQgKiBjb21wb25lbnRSZWYgKyBzdGF0ZS4gTWV2Y3V0IHRhYiBrb3J1bnVyLCBrdWxsYW7EsWPEsSBoZXIgaWtpc2luZGUgZGUgYmHEn8SxbXPEsXogw6dhbMSxxZ9hYmlsaXIuXHJcblx0ICovXHJcblx0ZHVwbGljYXRlVGFiKGl0ZW06IE5hdkl0ZW0pOiB2b2lkIHtcclxuXHRcdGlmICghaXRlbT8ubmF2TGluaykgcmV0dXJuO1xyXG5cdFx0aWYgKHRoaXMuYWN0aXZlUm91dGVzKCkubGVuZ3RoID49IHRoaXMuTUFYX1RBQlMpIHtcclxuXHRcdFx0dGhpcy5ub3RpZnlNYXhUYWJzUmVhY2hlZCgpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBuZXdUYWJJZCA9IHRoaXMuZ2VuZXJhdGVUYWJJZCgpO1xyXG5cdFx0Y29uc3QgbmV3TmF2TGluayA9IGNsZWFuTmF2TGluayhpdGVtLm5hdkxpbmspO1xyXG5cdFx0dGhpcy5hY3RpdmVSb3V0ZXMudXBkYXRlKCh2YWwpID0+IFtcclxuXHRcdFx0Li4udmFsLFxyXG5cdFx0XHR7IC4uLml0ZW0sIHRhYklkOiBuZXdUYWJJZCwgbmF2TGluazogbmV3TmF2TGluayB9XHJcblx0XHRdKTtcclxuXHRcdHNhZmVOYXZpZ2F0ZSh0aGlzLnJvdXRlciwgd2l0aFRhYklkKG5ld05hdkxpbmssIG5ld1RhYklkKSwgdGFiU3RhdGUobmV3VGFiSWQpKTtcclxuXHR9XHJcblxyXG5cdHJlb3JkZXJBY3RpdmVSb3V0ZXMobmV3Um91dGVzOiBOYXZJdGVtW10pOiB2b2lkIHtcclxuXHRcdC8vIFBpbm5lZC9ub3JtYWwgc8SxbsSxcsSxIGtvcnVtYXPEsSDigJQgc2FiaXQgdGFiJ2xhciB0YWIgYmFyJ8SxbiBzb2x1bmRhIChpbnNlcnRpb24gc8SxcmFzxLF5bGEpLFxyXG5cdFx0Ly8gbm9ybWFsIHRhYidsYXIgc2HEn8SxbmRhIGthbMSxci4gQ0RLIGRyYWcgZHJvcCBiaXIgdGFiJ8SxIHlhbmzEscWfIHNlZ21lbnRlIGTDvMWfw7xyw7xyc2VcclxuXHRcdC8vIGJ1cmFkYSBvdG9tYXRpayBkw7x6ZWx0aWxpci4gU2VnbWVudCBpw6dpIHPEsXJhIGtvcnVudXIuXHJcblx0XHRjb25zdCBwaW5uZWQgPSBuZXdSb3V0ZXMuZmlsdGVyKChyKSA9PiByLnBpbm5lZCk7XHJcblx0XHRjb25zdCBub3JtYWwgPSBuZXdSb3V0ZXMuZmlsdGVyKChyKSA9PiAhci5waW5uZWQpO1xyXG5cdFx0dGhpcy5hY3RpdmVSb3V0ZXMuc2V0KFsuLi5waW5uZWQsIC4uLm5vcm1hbF0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWVudSBjb25maWcnaW5kZW4gbmF2TGluaydlIGthcsWfxLFsxLFrIGdlbGVuIGl0ZW0naSBsb25nZXN0LXByZWZpeCBtYXRjaCBpbGUgYnVsdXBcclxuXHQgKiBha3RpZiBkaWxkZSBsYWJlbCArIGljb24gZMO2bmVyLiBBZHJlcyDDp3VidcSfdW5hIFVSTCB5YXDEscWfdMSxcmFyYWsgZGVlcCBsaW5rIGHDp8SxbGTEscSfxLFuZGFcclxuXHQgKiB0YWInxLFuIG1lbsO8ZGVuIGHDp8SxbGFuIHRhYidsYSBheW7EsSBnw7Zyw7xuw7xtZSBzYWhpcCBvbG1hc8SxbsSxIHNhxJ9sYXIuXHJcblx0ICpcclxuXHQgKiBMb29rdXAgYG1lbnVJdGVtc1Byb3ZpZGVyYCDDvHplcmluZGVuIOKAlCBob3N0IHNoZWxsIGBzZXRNZW51SXRlbXNQcm92aWRlcmAgaWxlXHJcblx0ICogYGJyaWRnZS5ob3N0TWVudUl0ZW1zKClgJ2EgYmHEn2xhci4gUHJvdmlkZXIgeW9rc2EgdmV5YSBlxZ9sZcWfbWUgeW9rc2EgYG51bGxgIGTDtm5lciB2ZVxyXG5cdCAqIGNhbGxlciBVUkwgc2VnbWVudCBmYWxsYmFjaydpbmUgZMO8xZ9lci5cclxuXHQgKi9cclxuXHRwcml2YXRlIHJlc29sdmVOYXZJbmZvRnJvbU1lbnUobmF2TGluazogc3RyaW5nKTogeyBuYXZOYW1lOiBzdHJpbmc7IGljb24/OiBzdHJpbmcgfSB8IG51bGwge1xyXG5cdFx0Ly8gQW5hc2F5ZmEgKG1lbsO8ZGVraSBgcm9vdGAgw7bEn2VzaSkgw6dvxJ91IHphbWFuIGByb3V0ZXJMaW5rYCBpbGUgZcWfbGXFn21leiAocm91dGVyTGluaydpIGAvYFxyXG5cdFx0Ly8gdmV5YSBib8WfIG9sYWJpbGlyLCBsb25nZXN0LXByZWZpeCBtYXRjaCdlIHRha8SxbG1heikg4oaSIGAvYCBpw6dpbiBmYWxsYmFjayBcIlBhZ2VcIiArIGplbmVyaWtcclxuXHRcdC8vIGlrb24gZMO2bmVyZGkuIEhvbWUgcHJvdmlkZXIgdmFyc2EgYWQvaWtvbnUgZG/En3J1ZGFuIG9yYWRhbiAocm9vdCBpdGVtJ2Rhbikgw6fDtnouXHJcblx0XHRpZiAodGhpcy5ob21lTmF2SXRlbVByb3ZpZGVyKSB7XHJcblx0XHRcdGNvbnN0IGhvbWUgPSB0aGlzLmhvbWVOYXZJdGVtUHJvdmlkZXIoKTtcclxuXHRcdFx0Ly8gQW5hc2F5ZmEgbmF2TGluayBlxZ9sZcWfaXlvcnNhIGTDtm4g4oCUIG1lbsO8IGJvxZ8vZ2XDpyB5w7xrbGVuZGl5c2UgeWEgZGEgbWVuw7xkZSBgcm9vdGAgw7bEn2VzaVxyXG5cdFx0XHQvLyB5b2tzYSBuYXZOYW1lL2ljb24gYm/FnyBnZWxlYmlsaXI7IGkxOG4gKCd0YWIuaG9tZScpICsgZXYgaWtvbnUgZmFsbGJhY2sgaWxlIGFzbGFcclxuXHRcdFx0Ly8gbWVuw7wtc2VnbWVudCBmYWxsYmFjaydpbmUgKFwiUGFnZVwiKSBkw7zFn21lLlxyXG5cdFx0XHRpZiAobmF2TGluayA9PT0gY2xlYW5OYXZMaW5rKGhvbWUubmF2TGluayB8fCAnLycpKSB7XHJcblx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdG5hdk5hbWU6IGhvbWUubmF2TmFtZSB8fCB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0YWIuaG9tZScpLFxyXG5cdFx0XHRcdFx0aWNvbjogaG9tZS5pY29uIHx8ICdwaSBwaS1ob21lJ1xyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGNvbnN0IGl0ZW1zID0gdGhpcy5tZW51SXRlbXNQcm92aWRlcj8uKCk7XHJcblx0XHRpZiAoIWl0ZW1zPy5sZW5ndGgpIHJldHVybiBudWxsO1xyXG5cdFx0Y29uc3QgcGF0aCA9IG5hdkxpbmsuc3BsaXQoJz8nKVswXTtcclxuXHRcdGNvbnN0IG1hdGNoZWQgPSB0aGlzLmZpbmRNZW51SXRlbUZvclJvdXRlKGl0ZW1zLCBwYXRoKTtcclxuXHRcdGlmICghbWF0Y2hlZCkgcmV0dXJuIG51bGw7XHJcblx0XHRjb25zdCBsYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdGNvbnN0IGxhYmVsID0gbWF0Y2hlZC5sYWJlbCBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgbmF2TmFtZSA9IGxhYmVsPy5bbGFuZ10gfHwgbGFiZWw/LlsndHInXSB8fCBsYWJlbD8uWydlbiddIHx8ICcnO1xyXG5cdFx0aWYgKCFuYXZOYW1lKSByZXR1cm4gbnVsbDtcclxuXHRcdHJldHVybiB7IG5hdk5hbWUsIGljb246IG1hdGNoZWQuaWNvbiB9O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWVuw7wvaTE4biB5w7xrbGVuaW5jZSB0YWInbGFyxLEgKMO2emVsbGlrbGUgYW5hc2F5ZmEpIG1lbsO8eWxlIHJldml6ZSBlZGVyIOKAlCByZWZyZXNoL2lsayBhw6fEsWzEscWfXHJcblx0ICogcGF0aCdpbmRlIHRhYiBmYWxsYmFjayBpc2ltL2ljb25sYSBla2xlbm1pxZ8gb2xhYmlsaXIgKG1lbsO8IHZleWEgw6dldmlyaSBvIGFuZGEgaGF6xLFyIGRlxJ9pbGRpKS5cclxuXHQgKiBUZXRpa2xleWljaWxlcjogYHNldE1lbnVJdGVtc1Byb3ZpZGVyYC9gc2V0SG9tZU5hdkl0ZW1Qcm92aWRlcmAsIGB0cmFuc2xhdGlvbkxvYWRTdWNjZXNzYFxyXG5cdCAqIGV2ZW50J2kgdmUgaG9zdCBzaGVsbCBtZW7DvCBzaWduYWwnaSBkZcSfacWfaW1pIChgQXBwTGF5b3V0Q29tcG9uZW50YCBlZmZlY3QpLiBQdWJsaWMg4oCUIGhvc3RcclxuXHQgKiBsYXlvdXQgbWVuw7wgYXN5bmMgecO8a2xlbmluY2Ugw6dhxJ/EsXLEsXIga2kgYW5hc2F5ZmEgYWTEsSBgdGFiLmhvbWVgIGZhbGxiYWNrJ2luZGUgdGFrxLFsbWFzxLFuLlxyXG5cdCAqL1xyXG5cdHJlY29uY2lsZVRhYnNXaXRoTWVudSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IHRhYnMgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0aWYgKCF0YWJzLmxlbmd0aCkgcmV0dXJuO1xyXG5cdFx0bGV0IGNoYW5nZWQgPSBmYWxzZTtcclxuXHRcdGNvbnN0IG5leHQgPSB0YWJzLm1hcCgodCkgPT4ge1xyXG5cdFx0XHRjb25zdCBpbmZvID0gdGhpcy5yZXNvbHZlTmF2SW5mb0Zyb21NZW51KHQubmF2TGluayk7XHJcblx0XHRcdGlmICghaW5mbykgcmV0dXJuIHQ7XHJcblx0XHRcdGlmICh0Lm5hdk5hbWUgPT09IGluZm8ubmF2TmFtZSAmJiB0Lmljb24gPT09IGluZm8uaWNvbikgcmV0dXJuIHQ7XHJcblx0XHRcdGNoYW5nZWQgPSB0cnVlO1xyXG5cdFx0XHRyZXR1cm4geyAuLi50LCBuYXZOYW1lOiBpbmZvLm5hdk5hbWUsIGljb246IGluZm8uaWNvbiB9O1xyXG5cdFx0fSk7XHJcblx0XHRpZiAoY2hhbmdlZCkgdGhpcy5hY3RpdmVSb3V0ZXMuc2V0KG5leHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWVudSBhxJ9hY8SxbmRhIHZlcmlsZW4gcGF0aCBpw6dpbiBlbiBzcGVzaWZpayAobG9uZ2VzdCByb3V0ZXJMaW5rIHByZWZpeCkgZcWfbGXFn21leWkgYnVsdXIuXHJcblx0ICogYG13L2FwcC1tYW5hZ2VtZW50L3ZpZXctYXBwYCBpw6dpbiBoZW0gYG13YCBoZW0gYG13L2FwcC1tYW5hZ2VtZW50L3ZpZXctYXBwYCBlxZ9sZcWfc2UsXHJcblx0ICogZGFoYSB1enVuIG9sYW4ga2F6YW7EsXIg4oaSIGxlYWYgbWVudSBpdGVtJ8SxbiBsYWJlbC9pY29uJ3Uga3VsbGFuxLFsxLFyLlxyXG5cdCAqXHJcblx0ICogUGF0aCBsZWFkaW5nIHNsYXNoIGnDp2VyZWJpbGlyIChSb3V0ZXIgVVJMIGZvcm1hdMSxKSwgbWVudSBjb25maWcgcm91dGVyTGluaydsZXJpXHJcblx0ICogZ2VuZWxkZSBsZWFkaW5nIHNsYXNoJ3PEsXogKGBtdy9tZXRlcnNgKTsgaWtpc2luaSBub3JtYWxpemUgZWRpcCBrYXLFn8SxbGHFn3TEsXLEsXLEsXouXHJcblx0ICovXHJcblx0cHJpdmF0ZSBmaW5kTWVudUl0ZW1Gb3JSb3V0ZShpdGVtczogUGx1Z2luTWVudUl0ZW1bXSwgcGF0aDogc3RyaW5nKTogUGx1Z2luTWVudUl0ZW0gfCB1bmRlZmluZWQge1xyXG5cdFx0Y29uc3Qgbm9ybWFsaXplID0gKHA6IHN0cmluZyk6IHN0cmluZyA9PiAocC5zdGFydHNXaXRoKCcvJykgPyBwLnNsaWNlKDEpIDogcCk7XHJcblx0XHRjb25zdCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZShwYXRoKTtcclxuXHRcdGxldCBiZXN0OiB7IGxlbmd0aDogbnVtYmVyOyBpdGVtOiBQbHVnaW5NZW51SXRlbSB9IHwgdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgdmlzaXQgPSAobGlzdDogUGx1Z2luTWVudUl0ZW1bXSk6IHZvaWQgPT4ge1xyXG5cdFx0XHRmb3IgKGNvbnN0IGl0IG9mIGxpc3QpIHtcclxuXHRcdFx0XHRpZiAoaXQucm91dGVyTGluaykge1xyXG5cdFx0XHRcdFx0Y29uc3QgciA9IG5vcm1hbGl6ZShpdC5yb3V0ZXJMaW5rKTtcclxuXHRcdFx0XHRcdGlmIChyICYmIChub3JtYWxpemVkUGF0aCA9PT0gciB8fCBub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKHIgKyAnLycpKSkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSByLmxlbmd0aDtcclxuXHRcdFx0XHRcdFx0aWYgKCFiZXN0IHx8IGxlbmd0aCA+IGJlc3QubGVuZ3RoKSBiZXN0ID0geyBsZW5ndGgsIGl0ZW06IGl0IH07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChpdC5pdGVtcz8ubGVuZ3RoKSB2aXNpdChpdC5pdGVtcyk7XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblx0XHR2aXNpdChpdGVtcyk7XHJcblx0XHRyZXR1cm4gYmVzdD8uaXRlbTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEJpciB0YWInxLFuIHN0b3JlZCByb3V0ZSBoYW5kbGUnxLFuxLEgc3RyYXRlZ3knZGVuIHRlbWl6bGVyLiBLZXkgZm9ybWF0xLFcclxuXHQgKiBgbWZlOiR7cmVtb3RlTmFtZX06JHt0YWJJZH1gIOKAlCBzdHJhdGVneSBgcHJvY2Vzc0NsZWFudXBLZXlgIG1hdGNoZXIga2V5J2luZGVuIGhlbVxyXG5cdCAqIE1GRSBjdXN0b20gZWxlbWVudCBoYW5kbGUnxLFuxLEgaGVtIG8gdGFiJ2EgYWl0IGNoaWxkIHJvdXRlIGhhbmRsZSdsYXLEsW7EsSBkw7zFn8O8csO8ci5cclxuXHQgKi9cclxuXHRwcml2YXRlIGNsZWFudXBUYWJIYW5kbGUoaXRlbTogTmF2SXRlbSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgcmVtb3RlTmFtZSA9IGV4dHJhY3RSZW1vdGVOYW1lKGl0ZW0ubmF2TGluayk7XHJcblx0XHRpZiAoIXJlbW90ZU5hbWUgfHwgIWl0ZW0udGFiSWQpIHJldHVybjtcclxuXHRcdGNvbnNvbGUubG9nKGBbTmF2U2VydmljZV0gY2xlYW51cFRhYkhhbmRsZSByZW1vdGVOYW1lPVwiJHtyZW1vdGVOYW1lfVwiIHRhYklkPVwiJHtpdGVtLnRhYklkfVwiYCk7XHJcblx0XHR0aGlzLnJvdXRlQ2xvc2VTZXJ2aWNlLmRlbGV0ZVN0b3JlZFJvdXRlKGBtZmU6JHtyZW1vdGVOYW1lfToke2l0ZW0udGFiSWR9YCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
675
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL25hdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUE4Qi9DOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFNBQVMsQ0FBQyxVQUFrQixFQUFFLEtBQWE7SUFDbkQsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3RCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQixPQUFPLEdBQUcsSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNI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bmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBQbHVnaW5NZW51SXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFJvdXRlQ2xvc2VTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0ZS1jbG9zZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgc2FmZU5hdmlnYXRlIH0gZnJvbSAnLi9zYWZlLW5hdmlnYXRlJztcclxuXHJcbi8qKlxyXG4gKiBgdGFiSWRgIGhlciB0YWInxLEgdGVraWwga8SxbGFuIGtpbWxpa3RpcjsgYXluxLEgYG5hdkxpbmtgIChwYXRoKSBhbHTEsW5kYSBiaXJkZW4gZmF6bGFcclxuICogYmHEn8SxbXPEsXogdGFiIGHDp8SxbGFiaWxtZXNpbmkgc2HEn2xhci4gTmF2U2VydmljZSBSb3V0ZXInYSBuYXZpZ2F0aW9uIHlhcGFya2VuIFVSTCdlXHJcbiAqIGBfdGFiPTx0YWJJZD5gIHF1ZXJ5IHBhcmFtIGVrbGVyIHZlIGBleHRyYXMuc3RhdGUuX3RhYmAgaWxlIGhpc3Rvcnkgc3RhdGUnZSB5YXphci5cclxuICogYFRhYkF3YXJlVXJsU2VyaWFsaXplcmAgYWRyZXMgw6d1YnXEn3VuZGFuIGBfdGFiYCdpIHN0cmlwIGVkZXI7IFJvdXRlciBpbnRlcm5hbFxyXG4gKiBgcXVlcnlQYXJhbXNgIGtvcnVudXIg4oaSIGBDdXN0b21Sb3V0ZVJldXNlU3RyYXRlZ3kuZ2V0Um91dGVLZXlgIGRvxJ9ydSB0YWIga2V5IHTDvHJldGlyLlxyXG4gKlxyXG4gKiAqKsOWbmVtbGkqKjogYE5hdkl0ZW0ubmF2TGlua2AgSEVSIFpBTUFOIENMRUFOIFVSTCAobm8gYF90YWJgKS4gSGVtIGRpc3BsYXkgaGVtXHJcbiAqIGBhY3RpdmVSb3V0ZSgpYCBpbGUga2FyxZ/EsWxhxZ90xLFybWEgacOnaW4ga3VsbGFuxLFsxLFyLiBUYWIga2ltbGnEn2kgYHRhYklkYCDDvHplcmluZGVuXHJcbiAqIHnDtm5ldGlsaXIgKGBhY3RpdmVUYWJJZGAgc2lnbmFsKS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmF2SXRlbSB7XHJcblx0dGFiSWQ6IHN0cmluZztcclxuXHRuYXZMaW5rOiBzdHJpbmc7XHJcblx0bmF2TmFtZTogc3RyaW5nO1xyXG5cdC8qKlxyXG5cdCAqIE1lbnUgaXRlbSdkYW4gZ2VsZW4gaWNvbiBjbGFzcyfEsSAow7Zybi4gJ3BpIHBpLWJvbHQnKS4gVmVyaWxtZXpzZSBsYXlvdXQgYGdldFRhYkljb25gXHJcblx0ICogbWVudSBjb25maWcnaW5kZW4gbG9uZ2VzdC1wcmVmaXggbWF0Y2ggaWxlIGxvb2t1cCB5YXBhcjsgbyBkYSBidWxhbWF6c2EgZ2VuZXJpYyBpa29uYSBkw7zFn2VyLlxyXG5cdCAqL1xyXG5cdGljb24/OiBzdHJpbmc7XHJcblx0LyoqXHJcblx0ICogVGFiIHNhYml0bGVtZSDigJQgQ2hyb21lLXZhcmkgcGlubmluZy4gU2FiaXQgdGFiJ2xhciB0YWIgYmFyJ8SxbiAqKnNvbHVuYSoqIHPEsXJhbGFuxLFyLFxyXG5cdCAqIGtvbXBha3QgZ8O2c3RlcmlsaXIgKHlhbG7EsXogaWNvbiwgYmHFn2zEsWsgKyBjbG9zZSBidXR0b24gZ2l6bGkpLCBgY2xvc2VPdGhlcnNgL2BjbG9zZVRvUmlnaHRgL1xyXG5cdCAqIGBjbG9zZUFsbGAgw6dhxJ9yxLFsYXLEsW5kYW4ga29ydW51ci4gRHJhZyAmIGRyb3AndGEgcGlubmVkIOKGlCBub3JtYWwgc8SxbsSxcsSxIGdlw6dpbGVtZXouXHJcblx0ICovXHJcblx0cGlubmVkPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJvdXRlcidhIHZlcmlsZWNlayBVUkwnZSBgX3RhYmAgcXVlcnkgcGFyYW0gZWtsZXIuIFRhYiBuYXZMaW5rJ2xlcmkgQ0xFQU4gc2FrbGFuZMSxxJ/EsVxyXG4gKiBpw6dpbiBoZXIgbmF2aWdhdGlvbidkYSBidSBoZWxwZXInbGEgYF90YWJgIGVrbGVuaXIuIFVybFNlcmlhbGl6ZXIgc2VyaWFsaXplIHPEsXJhc8SxbmRhXHJcbiAqIGBfdGFiYCdpIHN0cmlwIGVkZXIg4oaSIGFkcmVzIMOndWJ1xJ91bmRhIGfDtnLDvG5tZXogYW1hIFJvdXRlciBpbnRlcm5hbCBxdWVyeVBhcmFtcyfEsW5kYVxyXG4gKiBrYWzEsXIg4oaSIHN0cmF0ZWd5IGRvxJ9ydSDDp2FsxLHFn8Sxci5cclxuICpcclxuICogUGF0aCdpbiBiYcWfxLFuZGEgbGVhZGluZyBzbGFzaCBnYXJhbnRpIGVkaWxpciAoUm91dGVyIFVSTCBmb3JtYXTEsW5hIHV5Z3VubHVrIGnDp2luKS5cclxuICovXHJcbmZ1bmN0aW9uIHdpdGhUYWJJZChyYXdOYXZMaW5rOiBzdHJpbmcsIHRhYklkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdGNvbnN0IHsgcGF0aCwgcXVlcnksIGZyYWdtZW50IH0gPSBzcGxpdFVybChyYXdOYXZMaW5rID8/ICcnKTtcclxuXHRjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5KTtcclxuXHRwYXJhbXMuc2V0KCdfdGFiJywgdGFiSWQpO1xyXG5cdHJldHVybiBgJHtwYXRofT8ke3BhcmFtcy50b1N0cmluZygpfSR7ZnJhZ21lbnR9YDtcclxufVxyXG5cclxuLyoqXHJcbiAqIE5hdkxpbmsnaSBjbGVhbiBmb3JtYXR0YSBub3JtYWxpemUgZWRlcjogbGVhZGluZyBzbGFzaCBnYXJhbnRpc2ksIHF1ZXJ5IHN0cmluZyd0ZW5cclxuICogYF90YWJgIHN0cmlwLCBmcmFnbWVudCBrb3J1bnVyLiBgYWN0aXZlUm91dGUoKWAgVXJsU2VyaWFsaXplciBvdmVycmlkZSfEsSBzYXllc2luZGVcclxuICogY2xlYW4gVVJMIGTDtm5lcjsgdGFiIHN0b3JhZ2UgZGEgY2xlYW4gb2xtYWzEsSBraSBrYXLFn8SxbGHFn3TEsXJtYSDDp2FsxLHFn3PEsW4uXHJcbiAqL1xyXG5mdW5jdGlvbiBjbGVhbk5hdkxpbmsocmF3TmF2TGluazogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRjb25zdCB7IHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCB9ID0gc3BsaXRVcmwocmF3TmF2TGluayA/PyAnJyk7XHJcblx0aWYgKCFxdWVyeSkgcmV0dXJuIHBhdGggKyBmcmFnbWVudDtcclxuXHRjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5KTtcclxuXHRwYXJhbXMuZGVsZXRlKCdfdGFiJyk7XHJcblx0Y29uc3QgcmVtYWluaW5nID0gcGFyYW1zLnRvU3RyaW5nKCk7XHJcblx0cmV0dXJuIHJlbWFpbmluZyA/IGAke3BhdGh9PyR7cmVtYWluaW5nfSR7ZnJhZ21lbnR9YCA6IHBhdGggKyBmcmFnbWVudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFVSTCBzdHJpbmcnaW5pIHBhdGgvcXVlcnkvZnJhZ21lbnQgb2xhcmFrIHBhcsOnYWxhci4gRnJhZ21lbnQgKGAjYCkgaWxrIMO2bmNlIGF5csSxbMSxclxyXG4gKiBraSBxdWVyeSAoYD9gKSBpw6dpbmRla2kgYCNgIGlsZSBrYXLEscWfbWFzxLFuLiBQYXRoJ2luIGJhxZ/EsW5hIGxlYWRpbmcgc2xhc2ggZ2FyYW50aVxyXG4gKiBlZGlsaXIgKFJvdXRlciBVUkwgZm9ybWF0xLEgacOnaW4gem9ydW5sdSkuXHJcbiAqXHJcbiAqIGBVUkxgIGNvbnN0cnVjdG9yJ8SxIHJlbGF0aXZlIFVSTCBpbGUgw6dhbMSxxZ9tYXosIG1hbnVlbCBzcGxpdCBgVVJMU2VhcmNoUGFyYW1zYCdhXHJcbiAqIHV5Z3VuIHRlbWl6IHF1ZXJ5IHN0cmluZyB2ZXJpci4gRnJhZ21lbnQgb2xkdcSfdSBnaWJpICjDtm5jZXNpbmRlIGAjYCBpbGUpIGTDtm5lci5cclxuICovXHJcbmZ1bmN0aW9uIHNwbGl0VXJsKHJhdzogc3RyaW5nKTogeyBwYXRoOiBzdHJpbmc7IHF1ZXJ5OiBzdHJpbmc7IGZyYWdtZW50OiBzdHJpbmcgfSB7XHJcblx0Y29uc3QgZnJhZ21lbnRJZHggPSByYXcuaW5kZXhPZignIycpO1xyXG5cdGNvbnN0IGZyYWdtZW50ID0gZnJhZ21lbnRJZHggPj0gMCA/IHJhdy5zbGljZShmcmFnbWVudElkeCkgOiAnJztcclxuXHRjb25zdCBiZWZvcmVGcmFnbWVudCA9IGZyYWdtZW50SWR4ID49IDAgPyByYXcuc2xpY2UoMCwgZnJhZ21lbnRJZHgpIDogcmF3O1xyXG5cdGNvbnN0IHF1ZXJ5SWR4ID0gYmVmb3JlRnJhZ21lbnQuaW5kZXhPZignPycpO1xyXG5cdGxldCBwYXRoID0gcXVlcnlJZHggPj0gMCA/IGJlZm9yZUZyYWdtZW50LnNsaWNlKDAsIHF1ZXJ5SWR4KSA6IGJlZm9yZUZyYWdtZW50O1xyXG5cdGNvbnN0IHF1ZXJ5ID0gcXVlcnlJZHggPj0gMCA/IGJlZm9yZUZyYWdtZW50LnNsaWNlKHF1ZXJ5SWR4ICsgMSkgOiAnJztcclxuXHRpZiAoIXBhdGguc3RhcnRzV2l0aCgnLycpKSBwYXRoID0gJy8nICsgcGF0aDtcclxuXHRyZXR1cm4geyBwYXRoLCBxdWVyeSwgZnJhZ21lbnQgfTtcclxufVxyXG5cclxuLyoqIFJvdXRlcidhIHZlcmlsZW4gZXh0cmFzLnN0YXRlIG9iamVzaSDigJQgYF90YWJgJ2kgaGlzdG9yeSBzdGF0ZSdpbmRlIHR1dGFyLiAqL1xyXG5mdW5jdGlvbiB0YWJTdGF0ZSh0YWJJZDogc3RyaW5nKTogeyBzdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSB7XHJcblx0cmV0dXJuIHsgc3RhdGU6IHsgX3RhYjogdGFiSWQgfSB9O1xyXG59XHJcblxyXG4vKipcclxuICogTmF2TGluaydpbiByZW1vdGUgKGlsayBwYXRoIHNlZ21lbnQpIGFkxLFuxLEgZMO2bmTDvHLDvHIuIFF1ZXJ5IHBhcmFtJ2xhcmRhbiB2ZSBsZWFkaW5nXHJcbiAqIHNsYXNoJ3RhbiBldGtpbGVubWV6IOKAlCBgL213L2FwcC1tYW5hZ2VtZW50P190YWI9YWJjYCDihpIgYG13YC5cclxuICovXHJcbmZ1bmN0aW9uIGV4dHJhY3RSZW1vdGVOYW1lKG5hdkxpbms6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xyXG5cdGlmICghbmF2TGluaykgcmV0dXJuIG51bGw7XHJcblx0bGV0IHBhdGggPSBuYXZMaW5rLnNwbGl0KCc/JylbMF07XHJcblx0aWYgKHBhdGguc3RhcnRzV2l0aCgnLycpKSBwYXRoID0gcGF0aC5zbGljZSgxKTtcclxuXHRyZXR1cm4gcGF0aC5zcGxpdCgnLycpWzBdIHx8IG51bGw7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdlNlcnZpY2Uge1xyXG5cdHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblx0cm91dGVDbG9zZVNlcnZpY2U6IFJvdXRlQ2xvc2VTZXJ2aWNlID0gaW5qZWN0KFJvdXRlQ2xvc2VTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSA9IGluamVjdChNZXNzYWdlU2VydmljZSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlID0gaW5qZWN0KFRyYW5zbG9jb1NlcnZpY2UpO1xyXG5cclxuXHQvLyBpMThuIMOnZXZpcmlsZXJpIGxhenkgKGFzeW5jIEhUVFApIHnDvGtsZW5pcjsgYGZpcnN0Q2hlY2tGb3JSb3V0ZWAvYG9wZW5Ib21lVGFiYCDDp2V2aXJpXHJcblx0Ly8gecO8a2xlbm1lZGVuIGB0cmFuc2xhdGUoJ3RhYi5ob21lJylgIGVkZXJzZSByYXcga2V5IChcInRhYi5ob21lXCIpIGthbMSxci4gw4dldmlyaSB5w7xrbGVuaW5jZVxyXG5cdC8vIGZhbGxiYWNrLWlzaW1saSB0YWInbGFyxLEgKMO2emVsbGlrbGUgYW5hc2F5ZmEpIG1lbsO8eWxlIHJldml6ZSBldCDihpIgXCJBbmFzYXlmYVwiIHllcmluZSBvdHVydXIuXHJcblx0cHJpdmF0ZSByZWFkb25seSBpMThuUmVsb2FkU3ViID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmV2ZW50cyRcclxuXHRcdC5waXBlKFxyXG5cdFx0XHQvLyBZYWxuxLF6IHJvb3QvZ2xvYmFsIGkxOG4gKHNjb3BlIFlPSykgecO8a2xlbmluY2UgcmVjb25jaWxlIGV0IOKAlCAndGFiLmhvbWUnIG9yYWRhLlxyXG5cdFx0XHQvLyBGZWF0dXJlIGxhenkgc2NvcGUnbGFyxLEgKGhlciBNRkUgc2F5ZmFzxLEga2VuZGkgc2NvcGUndW51IHnDvGtsZXIpIGdlcmVrc2l6IG1lbsO8LURGU1xyXG5cdFx0XHQvLyB0ZXRpa2xlbWVzaW47IHJlY29uY2lsZSB5YWxuxLF6IGhvbWUvbWVuw7wgYWRsYXLEsW7EsW4gYmHEn2zEsSBvbGR1xJ91IGdsb2JhbCDDp2V2aXJpIGnDp2luZGlyLlxyXG5cdFx0XHRmaWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ3RyYW5zbGF0aW9uTG9hZFN1Y2Nlc3MnICYmICFlLnBheWxvYWQ/LnNjb3BlKSxcclxuXHRcdFx0dGFrZVVudGlsRGVzdHJveWVkKClcclxuXHRcdClcclxuXHRcdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWNvbmNpbGVUYWJzV2l0aE1lbnUoKSk7XHJcblxyXG5cdGZpcnN0Q2hlY2tGb3JSb3V0ZSA9IGZhbHNlO1xyXG5cdC8qKlxyXG5cdCAqIEF5bsSxIGFuZGEgYcOnxLFrIG9sYWJpbGVjZWsgdGFiIHNhecSxc8SxIHRhdmFuxLEuIFRhYiBiYXInxLFuIFVYJ2kgdmUgYEN1c3RvbVJvdXRlUmV1c2VTdHJhdGVneWBcclxuXHQgKiBgc3RvcmVkUm91dGVzYCBiaXJpa2ltaSBpw6dpbiDDvHN0IHPEsW7EsXIuIEHFn8SxbMSxcnNhIHllbmkgbmF2aWdhc3lvbiBlbmdlbGxlbmlyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgTUFYX1RBQlMgPSAyMDtcclxuXHJcblx0LyoqIFJGQzQxMjIgdjQgVVVJRCDigJQgY29sbGlzaW9uLWZyZWUsIGludGVybmFsIHN0YXRlIHRhxZ/EsW1hei4gKi9cclxuXHRwcml2YXRlIGdlbmVyYXRlVGFiSWQoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWVudSBpdGVtcydpIE5hdlNlcnZpY2UndGVuIGFsbWFrIGnDp2luIHByb3ZpZGVyLiBgYXJpbC9ib290L2JyaWRnZWAnaSBkb8SfcnVkYW4gaW1wb3J0XHJcblx0ICogZXRtZWsgbmctcGFja2FncidkYSBgYXJpbC9ib290L2JyaWRnZSDihpIgYXJpbC9ib290L2NvbmZpZy9hcHBzYCBkw7ZuZ8O8c8O8IHRldGlrbGl5b3JkdVxyXG5cdCAqIChicmlkZ2UgYFBsdWdpbk1lbnVJdGVtYCB0eXBlJ8SxbsSxIGltcG9ydCBlZGl5b3IpLiBCdW51biB5ZXJpbmUgaG9zdCBzaGVsbFxyXG5cdCAqIChgQXBwTGF5b3V0Q29tcG9uZW50YCkgYHNldE1lbnVJdGVtc1Byb3ZpZGVyKCgpID0+IGJyaWRnZS5ob3N0TWVudUl0ZW1zKCkpYCBpbGUgYmHEn2xhci5cclxuXHQgKiBQcm92aWRlciB5b2tzYSBsYWJlbC9pY29uIHJlc29sdmUndSBhdGxhbsSxciwgVVJMIHNlZ21lbnQgZmFsbGJhY2snaSBkZXZyZXllIGdpcmVyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgbWVudUl0ZW1zUHJvdmlkZXI6ICgoKSA9PiBQbHVnaW5NZW51SXRlbVtdKSB8IG51bGwgPSBudWxsO1xyXG5cdHNldE1lbnVJdGVtc1Byb3ZpZGVyKHByb3ZpZGVyOiAoKSA9PiBQbHVnaW5NZW51SXRlbVtdKTogdm9pZCB7XHJcblx0XHR0aGlzLm1lbnVJdGVtc1Byb3ZpZGVyID0gcHJvdmlkZXI7XHJcblx0XHQvLyBQcm92aWRlciBnZcOnIHNldCBlZGlsZGl5c2UgKMO2cm4uIHNoZWxsIGxheW91dCBOYXZpZ2F0aW9uRW5kJ2RlbiBzb25yYSBtb3VudCBvbGR1KSxcclxuXHRcdC8vIGFjdGl2ZVJvdXRlcyd0YSBkZWZhdWx0L2ZhbGxiYWNrIGlzaW1sZSBla2xlbm1pxZ8gaWxrIHRhYifEsSBtZW7DvHlsZSByZXZpemUgZXQuXHJcblx0XHR0aGlzLnJlY29uY2lsZVRhYnNXaXRoTWVudSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSG9zdCBzaGVsbCBhbmFzYXlmYSBOYXZJdGVtJ8SxbsSxIHNhxJ9sYXIg4oCUIGBBcHBMYXlvdXRDb21wb25lbnQuaG9tZU5hdkl0ZW1gIChtZW7DvGRla2lcclxuXHQgKiBgcm9vdDogdHJ1ZWAgw7bEn2VzaW5kZW4gdMO8cmV0aWxpcjogbmF2TGluay9uYXZOYW1lL2ljb24pLiBUw7xtIHRhYidsYXIga2FwYXTEsWxkxLHEn8SxbmRhXHJcblx0ICogbGlzdGUgYm/FnyBrYWxtYXPEsW4gZGl5ZSBgb3BlbkhvbWVUYWJgIGJ1bnUga3VsbGFuxLFyOyBwcm92aWRlciB5b2tzYSBgL2AgKyBpMThuIGZhbGxiYWNrLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgaG9tZU5hdkl0ZW1Qcm92aWRlcjogKCgpID0+IE5hdkl0ZW0pIHwgbnVsbCA9IG51bGw7XHJcblx0c2V0SG9tZU5hdkl0ZW1Qcm92aWRlcihwcm92aWRlcjogKCkgPT4gTmF2SXRlbSk6IHZvaWQge1xyXG5cdFx0dGhpcy5ob21lTmF2SXRlbVByb3ZpZGVyID0gcHJvdmlkZXI7XHJcblx0XHQvLyBSZWZyZXNoL2lsayBhw6fEsWzEscWfIHBhdGgnaW5kZSBmYWxsYmFjayAoXCJQYWdlXCIpIGlzaW0vaWtvbmxhIGVrbGVubWnFnyBhbmFzYXlmYSB0YWInxLFcclxuXHRcdC8vIHZhcnNhLCBwcm92aWRlciBoYXrEsXIgb2x1bmNhIG1lbsO8eWxlIChob21lIGRhaGlsKSByZXZpemUgZXQuXHJcblx0XHR0aGlzLnJlY29uY2lsZVRhYnNXaXRoTWVudSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVVJMIGFkcmVzIMOndWJ1xJ91bmRhbiBnw7Zyw7xsZW4gYWt0aWYgcm91dGUg4oCUIGBUYWJBd2FyZVVybFNlcmlhbGl6ZXJgIGBfdGFiYCdpIHN0cmlwXHJcblx0ICogZXR0acSfaSBpw6dpbiBidSBDTEVBTiBVUkwnZGlyICjDtnIuIGAvY3JtL2FkZHJlc3MtbWFuYWdlbWVudC9zZWFyY2hgKS4gVGFiIG5hdkxpbmsnbGVyaVxyXG5cdCAqIGRlIGNsZWFuIHNha2xhbmTEscSfxLEgacOnaW4gYHIubmF2TGluayA9PT0gYWN0aXZlUm91dGUoKWAgZG/En3J1ZGFuIGthcsWfxLFsYcWfdMSxcsSxbMSxci5cclxuXHQgKi9cclxuXHRhY3RpdmVSb3V0ZSA9IHRvU2lnbmFsPHN0cmluZz4oXHJcblx0XHR0aGlzLnJvdXRlci5ldmVudHMucGlwZShcclxuXHRcdFx0ZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXHJcblx0XHRcdHRhcCgoZSkgPT4ge1xyXG5cdFx0XHRcdC8vIEhlciBOYXZpZ2F0aW9uRW5kJ2RlIGhpc3Rvcnkgc3RhdGUndGVuIGFrdGlmIHRhYklkJ3lpIG9rdXl1cCBzaWduYWwnYSB5YXouXHJcblx0XHRcdFx0Ly8gYGV4dHJhcy5zdGF0ZWAgaWxlIHlhcMSxbGFuIG5hdmlnYXRpb24nbGFyZGEgQW5ndWxhciBoaXN0b3J5LnN0YXRlJ2UgYF90YWJgJ2kga295YXI7XHJcblx0XHRcdFx0Ly8gYnJvd3NlciBiYWNrL2ZvcndhcmQgbmF2aWdhc3lvbmxhcsSxbmRhIGRhIGhpc3Rvcnkuc3RhdGUga29ydW51ci5cclxuXHRcdFx0XHRjb25zdCB0YWJJZEZyb21TdGF0ZSA9ICh3aW5kb3cuaGlzdG9yeS5zdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwpPy5bJ190YWInXTtcclxuXHRcdFx0XHRpZiAodHlwZW9mIHRhYklkRnJvbVN0YXRlID09PSAnc3RyaW5nJyAmJiB0YWJJZEZyb21TdGF0ZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHR0aGlzLmFjdGl2ZVRhYklkLnNldCh0YWJJZEZyb21TdGF0ZSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRjb25zdCBjdXJyZW50VXJsID0gKGUgYXMgTmF2aWdhdGlvbkVuZCkudXJsQWZ0ZXJSZWRpcmVjdHMgfHwgKGUgYXMgTmF2aWdhdGlvbkVuZCkudXJsO1xyXG5cclxuXHRcdFx0XHQvLyBOT1Q6IEFrdGlmIHRhYifEsW4gbmF2TGluaydpbmkgZ8O8bmNlbGxlbWUgYHN5bmNBY3RpdmVUYWJOYXZMaW5rRm9yVGFiYCBpbGVcclxuXHRcdFx0XHQvLyBgYnJpZGdlLmFjdGl2ZU1GRVVybGAgw7x6ZXJpbmRlbiB5YXDEsWzEsXIgKGtheW5hxJ9hLWJhxJ9sxLEsIGNyb3NzLXRhYiBzYWZlKS5cclxuXHJcblx0XHRcdFx0Ly8gVGFiIGBhY3RpdmVSb3V0ZXNgJ3RhIFlPS1NBIHTDvHJldDogKGEpIGlsayBhw6fEsWzEscWfL3JlZnJlc2ggZGVlcC1saW5rLCBWRVlBXHJcblx0XHRcdFx0Ly8gKGIpIGJyb3dzZXIgYmFjay9mb3J3YXJkIGlsZSBLQVBBVElMTUnFniB0YWInxLFuIGhpc3RvcnkgZW50cnknc2luZSBkw7Zuw7zFn1xyXG5cdFx0XHRcdC8vIChrYXBhdG1hIGhvc3QgaGlzdG9yeSd5aSBzaWxtZXog4oaSIGdlcmkgdHXFn3UgbyBVUkwnZSBnaWRlciwgdGFiIHllbmlkZW4gYcOnxLFsbWFsxLEpLlxyXG5cdFx0XHRcdC8vIEJpbGluZW4gdGFiIChub3JtYWwgdMSxa2xhbWEgLyB5ZW5pIHRhYiAvIGHDp8SxayB0YWInYSBnZXJpKSDihpIgeWFsbsSxeiBhY3RpdmVUYWJJZFxyXG5cdFx0XHRcdC8vIGfDvG5jZWxsZW5pciAoeXVrYXLEsWRhKSwgbWV2Y3V0IHRhYidhIGZvY3VzOyB0w7xyZXRtZSB5YXDEsWxtYXouXHJcblx0XHRcdFx0Y29uc3Qga25vd25UYWIgPVxyXG5cdFx0XHRcdFx0dHlwZW9mIHRhYklkRnJvbVN0YXRlID09PSAnc3RyaW5nJyAmJlxyXG5cdFx0XHRcdFx0dGFiSWRGcm9tU3RhdGUubGVuZ3RoID4gMCAmJlxyXG5cdFx0XHRcdFx0dGhpcy5hY3RpdmVSb3V0ZXMoKS5zb21lKChyKSA9PiByLnRhYklkID09PSB0YWJJZEZyb21TdGF0ZSk7XHJcblx0XHRcdFx0aWYgKCFrbm93blRhYikge1xyXG5cdFx0XHRcdFx0Ly8gUmVmcmVzaCBzb25yYXPEsSBkZWVwIGxpbmsg4oaSIFVSTCdkZW4gbmF2IGl0ZW0gdMO8cmV0IHZlIGFjdGl2ZVJvdXRlcydhIGVrbGUuXHJcblx0XHRcdFx0XHQvLyBVUkwnZGUgYF90YWJgIHlva3NhIChVcmxTZXJpYWxpemVyIHN0cmlwIGV0dGnEn2kgacOnaW4gYWRyZXMgw6d1YnXEn3VuZGFuIHBheWxhxZ/EsWxhblxyXG5cdFx0XHRcdFx0Ly8gbGluayBgX3RhYmAgdGHFn8SxbWF6KSB5ZW5pIHRhYklkIMO8cmV0ICsgaGlzdG9yeSBzdGF0ZSdlIHlhejsgbmF2aWdhdGVCeVVybFxyXG5cdFx0XHRcdFx0Ly8gw6dhxJ9yxLFzxLEgaWxlIHN0YXRlIGluamVrdGUgZWRlcml6LCBhZHJlcyDDp3VidcSfdSB0ZW1peiBrYWzEsXIuXHJcblx0XHRcdFx0XHRpZiAoY3VycmVudFVybCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBzdGF0ZVRhYklkID0gKHdpbmRvdy5oaXN0b3J5LnN0YXRlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbCk/LlsnX3RhYiddO1xyXG5cdFx0XHRcdFx0XHRjb25zdCBuYXZMaW5rID0gY2xlYW5OYXZMaW5rKGN1cnJlbnRVcmwpO1xyXG5cdFx0XHRcdFx0XHQvLyDEsGxrIG5hdmlnYXRpb24nZGEgKEY1L2HDp8SxbMSxxZ8pIGdlbGVuIFVSTCB6YXRlbiBhY3RpdmVSb3V0ZXMndGFraSBiaXIgdGFiIGlsZVxyXG5cdFx0XHRcdFx0XHQvLyBlxZ9sZcWfaXlvcnNhICjDtnplbGxpa2xlIHJlc3RvcmUgZWRpbG1pxZ8gcGlubmVkIHRhYikgWUVOxLAgdGFiIFTDnFJFVE1FIOKAlCBvIHRhYifEsVxyXG5cdFx0XHRcdFx0XHQvLyBrdWxsYW4uIEY1IHNvbnJhc8SxIEFuZ3VsYXIgaW5pdGlhbCBuYXZpZ2F0aW9uIGBoaXN0b3J5LnN0YXRlLl90YWJgJ8SxIGtvcnVNQVog4oaSXHJcblx0XHRcdFx0XHRcdC8vIGBrbm93blRhYmAgeWFrYWxheWFtYXo7IG5hdkxpbmsgZcWfbGXFn21lc2kgcmVzdG9yZS1kdXBsaWNhdGUnaW5pIMO2bmxlci4gWWFsbsSxeiBpbGtcclxuXHRcdFx0XHRcdFx0Ly8gY2hlY2sndGUgKyBzdGF0ZSd0ZSBgX3RhYmAgeW9ra2VuOiBzb25yYWtpIG5hdmlnYXRpb25sYXJkYSBrYXPEsXRsxLEgZHVwbGljYXRlIHRhYiB2ZVxyXG5cdFx0XHRcdFx0XHQvLyBicm93c2VyLWJhY2sgaWxlIGthcGF0xLFsYW4gdGFiJ8SxbiByZS1kZXJpdmUgZGF2cmFuxLHFn8SxIGtvcnVudXIuXHJcblx0XHRcdFx0XHRcdGNvbnN0IGV4aXN0aW5nID1cclxuXHRcdFx0XHRcdFx0XHQhdGhpcy5maXJzdENoZWNrRm9yUm91dGUgJiYgIXN0YXRlVGFiSWRcclxuXHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5hY3RpdmVSb3V0ZXMoKS5maW5kKChyKSA9PiByLm5hdkxpbmsgPT09IG5hdkxpbmspXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcclxuXHRcdFx0XHRcdFx0bGV0IHRhYklkID1cclxuXHRcdFx0XHRcdFx0XHR0eXBlb2Ygc3RhdGVUYWJJZCA9PT0gJ3N0cmluZycgJiYgc3RhdGVUYWJJZC5sZW5ndGggPiAwID8gc3RhdGVUYWJJZCA6IGV4aXN0aW5nPy50YWJJZCA/PyAnJztcclxuXHRcdFx0XHRcdFx0bGV0IG5lZWRzU3RhdGVJbmplY3QgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKCF0YWJJZCkge1xyXG5cdFx0XHRcdFx0XHRcdHRhYklkID0gdGhpcy5nZW5lcmF0ZVRhYklkKCk7XHJcblx0XHRcdFx0XHRcdFx0bmVlZHNTdGF0ZUluamVjdCA9IHRydWU7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZXhpc3RpbmcpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBFxZ9sZcWfZW4gdGFiJ8SxbiBgdGFiSWRgJ3NpbmkgVVJML3N0YXRlJ2UgeWFuc8SxdCDigJQgYWRyZXMgw6d1YnXEn3UgYF90YWJgIHRhxZ/EsW1hZMSxxJ/EsVxyXG5cdFx0XHRcdFx0XHRcdC8vIGnDp2luIFJvdXRlUmV1c2UgYG1mZTo8cmVtb3RlPjo8dGFiSWQ+YCBrZXkgdHV0YXJsxLFsxLHEn8SxIHN0YXRlIGluamVjdCBpc3Rlci5cclxuXHRcdFx0XHRcdFx0XHRuZWVkc1N0YXRlSW5qZWN0ID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR0aGlzLmFjdGl2ZVRhYklkLnNldCh0YWJJZCk7XHJcblx0XHRcdFx0XHRcdGlmICghZXhpc3RpbmcpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBtZW51SW5mbyA9IHRoaXMucmVzb2x2ZU5hdkluZm9Gcm9tTWVudShuYXZMaW5rKTtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBmYWxsYmFja05hbWUgPSAoKTogc3RyaW5nID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdGxldCBwYXRoID0gbmF2TGluaztcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChwYXRoLnN0YXJ0c1dpdGgoJy8nKSkgcGF0aCA9IHBhdGguc2xpY2UoMSk7XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoJy8nKS5maWx0ZXIoKHMpID0+IHMubGVuZ3RoID4gMCk7XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBsYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gfHwgJ1BhZ2UnO1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGxhc3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBsYXN0LnNsaWNlKDEpLnJlcGxhY2UoLy0vZywgJyAnKTtcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuYWRkVG9BY3RpdmVSb3V0ZXMoe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGFiSWQsXHJcblx0XHRcdFx0XHRcdFx0XHRuYXZMaW5rLFxyXG5cdFx0XHRcdFx0XHRcdFx0bmF2TmFtZTogbWVudUluZm8/Lm5hdk5hbWUgfHwgZmFsbGJhY2tOYW1lKCksXHJcblx0XHRcdFx0XHRcdFx0XHRpY29uOiBtZW51SW5mbz8uaWNvblxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZWVkc1N0YXRlSW5qZWN0KSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gTWV2Y3V0IG5hdmlnYXRpb24gY3ljbGUgYml0aW1pbmRlbiBTT05SQSB5ZW5pIG5hdmlnYXRpb24gdGV0aWtsZSDigJRcclxuXHRcdFx0XHRcdFx0XHQvLyBgcXVldWVNaWNyb3Rhc2tgIFJvdXRlcifEsW4gbmF2aWdhdGlvbiBrdXlydcSfdSBmaW5hbGl6ZSBvbG1hZGFuIMOnYWzEscWfxLFwXHJcblx0XHRcdFx0XHRcdFx0Ly8gYEFib3J0RXJyb3I6IFRyYW5zaXRpb24gd2FzIHNraXBwZWRgJ2EgeW9sIGHDp8SxeW9yZHUuIGBzZXRUaW1lb3V0KDApYCBtYWNyb3Rhc2tcclxuXHRcdFx0XHRcdFx0XHQvLyBpbGUgY3VycmVudCBjeWNsZSBiaXRlciwgUm91dGVyIGlkbGUgb2x1ci4gYHRoaXMubmF2aWdhdGVgIHphdGVuIEFib3J0RXJyb3InxLFcclxuXHRcdFx0XHRcdFx0XHQvLyB5dXR1eW9yIOKAlCBjb25jdXJyZW50IG5hdmlnYXRpb24gcmFjZSdsZXJpIHNlc3NpemNlIGlwdGFsIGVkaWxpci5cclxuXHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdHNhZmVOYXZpZ2F0ZSh0aGlzLnJvdXRlciwgd2l0aFRhYklkKG5hdkxpbmssIHRhYklkKSwge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXBsYWNlVXJsOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdGF0ZTogeyBfdGFiOiB0YWJJZCB9XHJcblx0XHRcdFx0XHRcdFx0XHR9KS5jYXRjaCgoKSA9PiB7LyogcmVmcmVzaC1wYXRoIG5vaXNlOiBjYWxsZXIgeW9rLCBzaWxlbnQgKi99KTtcclxuXHRcdFx0XHRcdFx0XHR9LCAwKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5maXJzdENoZWNrRm9yUm91dGUgPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSksXHJcblx0XHRcdG1hcCgodykgPT4gKHcgYXMgTmF2aWdhdGlvbkVuZCkudXJsQWZ0ZXJSZWRpcmVjdHMgfHwgKHcgYXMgTmF2aWdhdGlvbkVuZCkudXJsKVxyXG5cdFx0KVxyXG5cdCk7XHJcblxyXG5cdGFjdGl2ZVJvdXRlcyA9IHNpZ25hbDxOYXZJdGVtW10+KFtdKTtcclxuXHQvKiogSGlzdG9yeSBzdGF0ZSd0ZW4gb2t1bmFuIGFrdGlmIHRhYiBraW1sacSfaSDigJQgYGlzQWN0aXZlKHRhYikgPSB0YWIudGFiSWQgPT09IGFjdGl2ZVRhYklkKClgLiAqL1xyXG5cdGFjdGl2ZVRhYklkID0gc2lnbmFsPHN0cmluZz4oJycpO1xyXG5cclxuXHQvKipcclxuXHQgKiBDaHJvbWUgYm9va21hcmsgY2xpY2sgZGF2cmFuxLHFn8SxOiBha3RpZiB0YWInxLFuIG5hdkxpbmsvbmF2TmFtZSdpIGfDvG5jZWxsZW5pcixcclxuXHQgKiBvIHRhYidhIG5hdmlnYXRlIGVkaWxpci4gWWVuaSB0YWIgYcOnxLFsbWF6LiBNZXZjdXQgdGFiJ8SxbiBgdGFiSWRgJ3NpIEtPUlVOVVIg4oCUXHJcblx0ICogUm91dGVyJ2EgYD9fdGFiPXRhYklkYCBpbGUgbmF2aWdhdGUgZWRpbGlyLCBoaXN0b3J5IHN0YXRlJ2UgeWF6xLFsxLFyOyBuYXZMaW5rXHJcblx0ICogc3RvcmFnZSdkYSBDTEVBTiBzYWtsYW7EsXIuXHJcblx0ICovXHJcblx0bmF2aWdhdGVJbkN1cnJlbnRUYWIobmF2SXRlbTogTmF2SXRlbSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgaWR4ID0gdGhpcy5maW5kQWN0aXZlVGFiSW5kZXgoKTtcclxuXHRcdGlmIChpZHggPT09IC0xKSB7XHJcblx0XHRcdC8vIEFrdGlmIHRhYiB5b2sg4oCUIGZhbGxiYWNrIG9sYXJhayB5ZW5pIHRhYiBhw6cuXHJcblx0XHRcdHRoaXMub3BlbkluTmV3VGFiQW5kRm9jdXMobmF2SXRlbSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGV4aXN0aW5nVGFiID0gdGhpcy5hY3RpdmVSb3V0ZXMoKVtpZHhdO1xyXG5cdFx0Y29uc3QgdGFiSWQgPSBleGlzdGluZ1RhYi50YWJJZDtcclxuXHRcdGNvbnN0IG5ld05hdkxpbmsgPSBjbGVhbk5hdkxpbmsobmF2SXRlbS5uYXZMaW5rKTtcclxuXHRcdC8vIEF5bsSxIG5hdkxpbmsnZSB0xLFrbGFtYSDihpIgeWluZSBkZSBuYXZpZ2F0ZSBldCAoYG9uU2FtZVVybE5hdmlnYXRpb246ICdyZWxvYWQnYCkuXHJcblx0XHRpZiAoZXhpc3RpbmdUYWIubmF2TGluayA9PT0gbmV3TmF2TGluaykge1xyXG5cdFx0XHRzYWZlTmF2aWdhdGUodGhpcy5yb3V0ZXIsIHdpdGhUYWJJZChuZXdOYXZMaW5rLCB0YWJJZCksIHRhYlN0YXRlKHRhYklkKSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuYWN0aXZlUm91dGVzLnVwZGF0ZSgocm91dGVzKSA9PiB7XHJcblx0XHRcdGNvbnN0IG5leHQgPSBbLi4ucm91dGVzXTtcclxuXHRcdFx0Ly8gTWV2Y3V0IHRhYifEsW4gYHRhYklkYCBWRSBgcGlubmVkYCBkdXJ1bXUga29ydW51ciDigJQgbWVuw7xkZW4gZ2VsZW4gbmF2SXRlbSBgcGlubmVkYFxyXG5cdFx0XHQvLyB0YcWfxLFtYXo7IGB7IC4uLm5hdkl0ZW0gfWAgaWxlIGV6aWxpcnNlIHNhYml0bGVubWnFnyB0YWIgdW5waW4gb2x1cmR1ICh0YWIgacOnZXJpxJ9pbmlcclxuXHRcdFx0Ly8gZGXEn2nFn3Rpcm1layBzYWJpdGxlbWV5aSBib3ptYW1hbMSxKS5cclxuXHRcdFx0bmV4dFtpZHhdID0geyAuLi5uYXZJdGVtLCB0YWJJZCwgbmF2TGluazogbmV3TmF2TGluaywgcGlubmVkOiBleGlzdGluZ1RhYi5waW5uZWQgfTtcclxuXHRcdFx0cmV0dXJuIG5leHQ7XHJcblx0XHR9KTtcclxuXHRcdHNhZmVOYXZpZ2F0ZSh0aGlzLnJvdXRlciwgd2l0aFRhYklkKG5ld05hdkxpbmssIHRhYklkKSwgdGFiU3RhdGUodGFiSWQpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFya2EgcGxhbmRhIHllbmkgdGFiIGHDpyDigJQgYWt0aWYgdGFiIGRlxJ9pxZ9tZXosIG5hdmlnYXRlIGVkaWxtZXouIGB0YWJJZGAgaGVyIHphbWFuXHJcblx0ICogeWVuaSDDvHJldGlsaXIgKHlhIGRhIGNhbGxlciB2ZXJkaXlzZSBvIGt1bGxhbsSxbMSxciksIGV4aXN0cyBjaGVjayBZT0tUVVI7IGF5bsSxIHBhdGhcclxuXHQgKiBiaXJkZW4gZmF6bGEgdGFiJ2RhIGJhxJ/EsW1zxLF6IHlhxZ9heWFiaWxpci5cclxuXHQgKi9cclxuXHRvcGVuSW5CYWNrZ3JvdW5kVGFiKG5hdkl0ZW06IE5hdkl0ZW0pOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmFjdGl2ZVJvdXRlcygpLmxlbmd0aCA+PSB0aGlzLk1BWF9UQUJTKSB7XHJcblx0XHRcdHRoaXMubm90aWZ5TWF4VGFic1JlYWNoZWQoKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgdGFiSWQgPSBuYXZJdGVtLnRhYklkIHx8IHRoaXMuZ2VuZXJhdGVUYWJJZCgpO1xyXG5cdFx0Y29uc3QgbmF2TGluayA9IGNsZWFuTmF2TGluayhuYXZJdGVtLm5hdkxpbmspO1xyXG5cdFx0dGhpcy5hY3RpdmVSb3V0ZXMudXBkYXRlKCh2YWwpID0+IFsuLi52YWwsIHsgLi4ubmF2SXRlbSwgdGFiSWQsIG5hdkxpbmsgfV0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogWWVuaSB0YWIgYcOnIHZlIG8gdGFiJ2EgZ2XDpy4gRXhpc3RzIGNoZWNrIFlPSyDigJQgYXluxLEgcGF0aCdpbiBpa2kgYXlyxLEgdGFiJ2kga2FidWwgZWRpbGlyO1xyXG5cdCAqIGhlciB0YWIga2VuZGkgYHRhYklkYCdzaXlsZSBheXLEsSBjb21wb25lbnRSZWYgaW5zdGFudGlhdGUgZWRlci5cclxuXHQgKi9cclxuXHRvcGVuSW5OZXdUYWJBbmRGb2N1cyhuYXZJdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5hY3RpdmVSb3V0ZXMoKS5sZW5ndGggPj0gdGhpcy5NQVhfVEFCUykge1xyXG5cdFx0XHR0aGlzLm5vdGlmeU1heFRhYnNSZWFjaGVkKCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHRhYklkID0gbmF2SXRlbS50YWJJZCB8fCB0aGlzLmdlbmVyYXRlVGFiSWQoKTtcclxuXHRcdGNvbnN0IG5hdkxpbmsgPSBjbGVhbk5hdkxpbmsobmF2SXRlbS5uYXZMaW5rKTtcclxuXHRcdHRoaXMuYWN0aXZlUm91dGVzLnVwZGF0ZSgodmFsKSA9PiBbLi4udmFsLCB7IC4uLm5hdkl0ZW0sIHRhYklkLCBuYXZMaW5rIH1dKTtcclxuXHRcdHNhZmVOYXZpZ2F0ZSh0aGlzLnJvdXRlciwgd2l0aFRhYklkKG5hdkxpbmssIHRhYklkKSwgdGFiU3RhdGUodGFiSWQpKTtcclxuXHR9XHJcblxyXG5cdC8qKiBQcm9ncmFtYXRpayB0YWIgZWtsZW1lOyBhY3RpdmVSb3V0ZSBvYnNlcnZhYmxlIHJlZnJlc2ggcGF0aCdpIGJ1bnUga3VsbGFuxLFyLiAqL1xyXG5cdGFkZFRvQWN0aXZlUm91dGVzKG5hdkl0ZW06IE5hdkl0ZW0pOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmFjdGl2ZVJvdXRlcygpLmxlbmd0aCA+PSB0aGlzLk1BWF9UQUJTKSB7XHJcblx0XHRcdC8vIFByb2dyYW1tYXRpYyDDp2HEn3LEsSDigJQgdG9hc3QgZ8O2c3Rlcm1layB5ZXJpbmUgc2Vzc2l6Y2UgcmV0dXJuLlxyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCB0YWJJZCA9IG5hdkl0ZW0udGFiSWQgfHwgdGhpcy5nZW5lcmF0ZVRhYklkKCk7XHJcblx0XHRjb25zdCBuYXZMaW5rID0gY2xlYW5OYXZMaW5rKG5hdkl0ZW0ubmF2TGluayk7XHJcblx0XHQvLyBTaWduYWwgY2hhbmdlIGRldGVjdGlvbiByZWZlcmVuY2UgaWRlbnRpdHkgaWxlIMOnYWzEscWfxLFyIOKAlCB5ZW5pIGFycmF5IGTDtm4uXHJcblx0XHR0aGlzLmFjdGl2ZVJvdXRlcy51cGRhdGUoKHZhbCkgPT4gWy4uLnZhbCwgeyAuLi5uYXZJdGVtLCB0YWJJZCwgbmF2TGluayB9XSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBa3RpZiB0YWInxLEgYGFjdGl2ZVRhYklkYCDDvHplcmluZGVuIGJ1bHVyLiBBeW7EsSBgbmF2TGlua2AnaW4gYmlyZGVuIGZhemxhIHRhYidpXHJcblx0ICogb2xhYmlsZWNlxJ9pIGnDp2luIG5hdkxpbmsga2FyxZ/EsWxhxZ90xLFybWFzxLEgYW1iaWd1b3VzOyB0YWJJZCB0ZWsgZG/En3J1IGtpbWxpay5cclxuXHQgKi9cclxuXHRwcml2YXRlIGZpbmRBY3RpdmVUYWJJbmRleCgpOiBudW1iZXIge1xyXG5cdFx0Y29uc3QgdGFiSWQgPSB0aGlzLmFjdGl2ZVRhYklkKCk7XHJcblx0XHRpZiAoIXRhYklkKSByZXR1cm4gLTE7XHJcblx0XHRyZXR1cm4gdGhpcy5hY3RpdmVSb3V0ZXMoKS5maW5kSW5kZXgoKHIpID0+IHIudGFiSWQgPT09IHRhYklkKTtcclxuXHR9XHJcblxyXG5cdC8qKiBUYWIgbGltaXRpIGHFn8SxbGTEscSfxLFuZGEga3VsbGFuxLFjxLF5xLEgdG9hc3QgaWxlIGJpbGdpbGVuZGlyaXIuICovXHJcblx0cHJpdmF0ZSBub3RpZnlNYXhUYWJzUmVhY2hlZCgpOiB2b2lkIHtcclxuXHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0c2V2ZXJpdHk6ICd3YXJuJyxcclxuXHRcdFx0c3VtbWFyeTogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFiLm1heFJlYWNoZWRTdW1tYXJ5JywgeyBtYXg6IHRoaXMuTUFYX1RBQlMgfSksXHJcblx0XHRcdGRldGFpbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFiLm1heFJlYWNoZWREZXRhaWwnKSxcclxuXHRcdFx0a2V5OiAndG9hc3Qtcm9vdCdcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIEFuYXNheWZhIG5hdkxpbmsnaSDigJQgaG9zdCBtZW7DvCByb290IGl0ZW0nxLFuZGFuICh5b2tzYSAnLycpLCBjbGVhbiBmb3JtYXQuICovXHJcblx0cHJpdmF0ZSBob21lTmF2TGluaygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGNsZWFuTmF2TGluayh0aGlzLmhvbWVOYXZJdGVtUHJvdmlkZXI/LigpLm5hdkxpbmsgfHwgJy8nKTtcclxuXHR9XHJcblxyXG5cdC8qKiBWZXJpbGVuIHRhYiBhbmFzYXlmYXlhIG3EsSBhaXQuICovXHJcblx0cHJpdmF0ZSBpc0hvbWVUYWIoaXRlbTogTmF2SXRlbSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIGl0ZW0ubmF2TGluayA9PT0gdGhpcy5ob21lTmF2TGluaygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQW5hc2F5ZmEgdGFiJ8SxIGHDp8SxcCBvbmEgbmF2aWdhdGUgZWRlciDigJQgdGFiIGxpc3Rlc2kgSMSww4cgYm/FnyBrYWxtYW1hbMSxIChlbiBheiAxIHRhYikuXHJcblx0ICogTmF2SXRlbSBob3N0IG1lbsO8IHJvb3QgaXRlbSfEsW5kYW4gZ2VsaXI7IHlva3NhIGAvYCArIGkxOG4gZmFsbGJhY2sgKCd0YWIuaG9tZScsICdwaSBwaS1ob21lJykuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBvcGVuSG9tZVRhYigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuXHRcdGNvbnN0IGJhc2UgPSB0aGlzLmhvbWVOYXZJdGVtUHJvdmlkZXI/LigpO1xyXG5cdFx0Y29uc3QgbmF2TGluayA9IGNsZWFuTmF2TGluayhiYXNlPy5uYXZMaW5rIHx8ICcvJyk7XHJcblx0XHRjb25zdCB0YWJJZCA9IHRoaXMuZ2VuZXJhdGVUYWJJZCgpO1xyXG5cdFx0Y29uc3QgaG9tZTogTmF2SXRlbSA9IHtcclxuXHRcdFx0dGFiSWQsXHJcblx0XHRcdG5hdkxpbmssXHJcblx0XHRcdG5hdk5hbWU6IGJhc2U/Lm5hdk5hbWUgfHwgdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFiLmhvbWUnKSxcclxuXHRcdFx0aWNvbjogYmFzZT8uaWNvbiB8fCAncGkgcGktaG9tZSdcclxuXHRcdH07XHJcblx0XHR0aGlzLmFjdGl2ZVJvdXRlcy51cGRhdGUoKHZhbCkgPT4gWy4uLnZhbCwgaG9tZV0pO1xyXG5cdFx0cmV0dXJuIHNhZmVOYXZpZ2F0ZSh0aGlzLnJvdXRlciwgd2l0aFRhYklkKG5hdkxpbmssIHRhYklkKSwgdGFiU3RhdGUodGFiSWQpKTtcclxuXHR9XHJcblxyXG5cdGNsb3NlTmF2aWdhdGlvbihuYXZJdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHQvLyBgdGFiSWRgIGlsZSBidWwg4oCUIGF5bsSxIHBhdGgnaW4gYmlyZGVuIGZhemxhIHRhYidpIG9sYWJpbGVjZcSfaSBpw6dpbiBgbmF2TGlua2BcclxuXHRcdC8vIGthcsWfxLFsYcWfdMSxcm1hc8SxIGFtYmlndW91cyBvbHVyLCBraW1saWsgYmF6bMSxIGFyYW1hIHRlayBkb8SfcnUgecO2bnRlbS5cclxuXHRcdGNvbnN0IGlkeCA9IHRoaXMuYWN0aXZlUm91dGVzKCkuZmluZEluZGV4KChyKSA9PiByLnRhYklkID09PSBuYXZJdGVtLnRhYklkKTtcclxuXHRcdGNvbnNvbGUubG9nKGBbTmF2U2VydmljZV0gY2xvc2VOYXZpZ2F0aW9uIHRhYklkPVwiJHtuYXZJdGVtLnRhYklkfVwiIG5hdkxpbms9XCIke25hdkl0ZW0ubmF2TGlua31cIiBpbmRleD0ke2lkeH1gKTtcclxuXHRcdGlmIChpZHggPT09IC0xKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgY2xvc2VkSXRlbSA9IHRoaXMuYWN0aXZlUm91dGVzKClbaWR4XTtcclxuXHRcdC8vIFNvbiBrYWxhbiB0YWIgYW5hc2F5ZmF5c2Ega2FwYXRtYSDigJQgaGVyIHphbWFuIGVuIGF6IDEgKGFuYXNheWZhKSB0YWIgYcOnxLFrIGthbG1hbMSxLlxyXG5cdFx0aWYgKHRoaXMuYWN0aXZlUm91dGVzKCkubGVuZ3RoID09PSAxICYmIHRoaXMuaXNIb21lVGFiKGNsb3NlZEl0ZW0pKSByZXR1cm47XHJcblx0XHQvLyBTaWduYWwgY2hhbmdlIGRldGVjdGlvbiByZWZlcmVuY2UgaWRlbnRpdHkgaWxlIMOnYWzEscWfxLFyIOKAlCB5ZW5pIGFycmF5IGTDtm4uXHJcblx0XHR0aGlzLmFjdGl2ZVJvdXRlcy51cGRhdGUoKHZhbCkgPT4gdmFsLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaWR4KSk7XHJcblxyXG5cdFx0Y29uc3QgY2xlYW51cCA9ICgpOiB2b2lkID0+IHRoaXMuY2xlYW51cFRhYkhhbmRsZShjbG9zZWRJdGVtKTtcclxuXHRcdGNvbnN0IGNsb3NpbmdBY3RpdmVUYWIgPSB0aGlzLmFjdGl2ZVRhYklkKCkgPT09IGNsb3NlZEl0ZW0udGFiSWQ7XHJcblxyXG5cdFx0aWYgKGNsb3NpbmdBY3RpdmVUYWIpIHtcclxuXHRcdFx0Ly8gQWt0aWYgdGFiIGthcGF0xLFsxLF5b3Ig4oCUIGJhxZ9rYSB0YWInYSAodmV5YSBob21lJ2EpIG5hdmlnYXRlIGVkaXAgY2xlYW51cCfEsSBTT05SQSB0ZXRpa2xlLlxyXG5cdFx0XHQvLyBBa3NpIHRha2RpcmRlIHN0cmF0ZWd5IGhlbsO8eiBgc3RvcmUoJ21mZToke3JlbW90ZU5hbWV9OiR7dGFiSWR9JywgaGFuZGxlKWAnaSB5YXBtYWRhblxyXG5cdFx0XHQvLyBgZGVsZXRlU3RvcmVkUm91dGVgIMOnYcSfcsSxbMSxciB2ZSBjbGVhbnVwIGJvxZ8gaGl0IGVkZXI7IGFyZMSxbmRhbiBkZXRhY2ggdGFtYW1sYW7EsW5jYVxyXG5cdFx0XHQvLyBlbGVtZW50IGhpZGRlbiBjb250YWluZXInZGEgb3JwaGFuIGthbMSxciAocmFjZSBjb25kaXRpb24pLlxyXG5cdFx0XHRjb25zdCByZW1haW5pbmcgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0XHRjb25zdCB3aWxsTmF2aWdhdGVJdGVtID0gcmVtYWluaW5nLmxlbmd0aCA+IDAgPyByZW1haW5pbmdbaWR4XSB8fCByZW1haW5pbmdbaWR4IC0gMV0gOiBudWxsO1xyXG5cdFx0XHRpZiAod2lsbE5hdmlnYXRlSXRlbSkge1xyXG5cdFx0XHRcdHNhZmVOYXZpZ2F0ZShcclxuXHRcdFx0XHRcdHRoaXMucm91dGVyLFxyXG5cdFx0XHRcdFx0d2l0aFRhYklkKHdpbGxOYXZpZ2F0ZUl0ZW0ubmF2TGluaywgd2lsbE5hdmlnYXRlSXRlbS50YWJJZCksXHJcblx0XHRcdFx0XHR0YWJTdGF0ZSh3aWxsTmF2aWdhdGVJdGVtLnRhYklkKVxyXG5cdFx0XHRcdCkuZmluYWxseShjbGVhbnVwKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyBIacOnIHRhYiBrYWxtYWTEsSDigJQgYm/FnyBixLFyYWttYSwgYW5hc2F5ZmEgdGFiJ8SxIGHDpyAoZW4gYXogMSB0YWIga3VyYWzEsSkuXHJcblx0XHRcdFx0dGhpcy5vcGVuSG9tZVRhYigpLmZpbmFsbHkoY2xlYW51cCk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIEFrdGlmIGRlxJ9pbGRpIOKAlCBuYXZpZ2F0aW9uIGdlcmVrbWV6LiBBbmNhayBhcmthIHBsYW5kYSBhw6fEsWzEsXAgKGBvcGVuSW5CYWNrZ3JvdW5kVGFiYClcclxuXHRcdFx0Ly8gaGnDpyBnw7Zyw7xudMO8bGVubWVtacWfIHRhYiBoZW7DvHogUm91dGVyIHRhcmFmxLFuZGFuIGBzdG9yZSgpYCBlZGlsbWVtacWfIG9sYWJpbGlyOyBjbGVhbnVwJ8SxXHJcblx0XHRcdC8vIGJpciBtaWNyb3Rhc2sgZ2VjaWt0aXJpcCBvbGFzxLEgc3RvcmUgY3ljbGUnxLFuYSBmxLFyc2F0IHZlcml5b3J1eiAob3JwaGFuIGhhbmRsZSDDtm5sZW1pKS5cclxuXHRcdFx0dm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKGNsZWFudXApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQmlyIHRhYiBoYXJpw6cgZGnEn2VyIHTDvG0gdGFiJ2xhcsSxIGthcGF0xLFyLiBBa3RpZiB0YWIga2FwYXTEsWxhbmxhcmRhbiBpc2UgYGtlZXBJdGVtYCdhIGdlw6dlci5cclxuXHQgKiAqKlNhYml0IHRhYidsYXIga29ydW51cioqIChDaHJvbWUgZGF2cmFuxLHFn8SxKSDigJQgcGlubmVkIG9sYW5sYXIgaGVyIHphbWFuIGHDp8SxayBrYWzEsXIuXHJcblx0ICovXHJcblx0Y2xvc2VPdGhlcnMoa2VlcEl0ZW06IE5hdkl0ZW0pOiB2b2lkIHtcclxuXHRcdGNvbnN0IGFsbCA9IHRoaXMuYWN0aXZlUm91dGVzKCk7XHJcblx0XHRjb25zdCB0b0Nsb3NlID0gYWxsLmZpbHRlcigocikgPT4gci50YWJJZCAhPT0ga2VlcEl0ZW0udGFiSWQgJiYgIXIucGlubmVkKTtcclxuXHRcdGlmICh0b0Nsb3NlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cdFx0Y29uc3Qgc3Vydml2b3JJZHMgPSBuZXcgU2V0KFtrZWVwSXRlbS50YWJJZCwgLi4uYWxsLmZpbHRlcigocikgPT4gci5waW5uZWQpLm1hcCgocikgPT4gci50YWJJZCldKTtcclxuXHRcdHRoaXMuYWN0aXZlUm91dGVzLnNldChhbGwuZmlsdGVyKChyKSA9PiBzdXJ2aXZvcklkcy5oYXMoci50YWJJZCkpKTtcclxuXHRcdGNvbnN0IGNsZWFudXBBbGwgPSAoKTogdm9pZCA9PiB0b0Nsb3NlLmZvckVhY2goKHQpID0+IHRoaXMuY2xlYW51cFRhYkhhbmRsZSh0KSk7XHJcblx0XHRpZiAodGhpcy5hY3RpdmVUYWJJZCgpICE9PSBrZWVwSXRlbS50YWJJZCkge1xyXG5cdFx0XHRzYWZlTmF2aWdhdGUoXHJcblx0XHRcdFx0dGhpcy5yb3V0ZXIsXHJcblx0XHRcdFx0d2l0aFRhYklkKGtlZXBJdGVtLm5hdkxpbmssIGtlZXBJdGVtLnRhYklkKSxcclxuXHRcdFx0XHR0YWJTdGF0ZShrZWVwSXRlbS50YWJJZClcclxuXHRcdFx0KS5maW5hbGx5KGNsZWFudXBBbGwpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y2xlYW51cEFsbCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVmVyaWxlbiB0YWInxLFuIHNhxJ/EsW5kYWtpIHTDvG0gdGFiJ2xhcsSxIGthcGF0xLFyLiAqKlNhYml0IHRhYidsYXIga29ydW51cioqIOKAlFxyXG5cdCAqIHBpbm5lZCBiaXIgdGFiIHNhxJ9kYSBvbHNhIGJpbGUga2FwYXTEsWxtYXogKENocm9tZSBkYXZyYW7EscWfxLEpLlxyXG5cdCAqL1xyXG5cdGNsb3NlVG9SaWdodChpdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHRjb25zdCBhbGwgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0Y29uc3QgaWR4ID0gYWxsLmZpbmRJbmRleCgocikgPT4gci50YWJJZCA9PT0gaXRlbS50YWJJZCk7XHJcblx0XHRpZiAoaWR4ID09PSAtMSkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgdG9DbG9zZSA9IGFsbC5zbGljZShpZHggKyAxKS5maWx0ZXIoKHIpID0+ICFyLnBpbm5lZCk7XHJcblx0XHRpZiAodG9DbG9zZS5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHRcdGNvbnN0IHRvQ2xvc2VJZHMgPSBuZXcgU2V0KHRvQ2xvc2UubWFwKChyKSA9PiByLnRhYklkKSk7XHJcblx0XHR0aGlzLmFjdGl2ZVJvdXRlcy5zZXQoYWxsLmZpbHRlcigocikgPT4gIXRvQ2xvc2VJZHMuaGFzKHIudGFiSWQpKSk7XHJcblx0XHRjb25zdCBhY3RpdmVXYXNDbG9zZWQgPSB0b0Nsb3NlLnNvbWUoKHIpID0+IHIudGFiSWQgPT09IHRoaXMuYWN0aXZlVGFiSWQoKSk7XHJcblx0XHRjb25zdCBjbGVhbnVwQWxsID0gKCk6IHZvaWQgPT4gdG9DbG9zZS5mb3JFYWNoKCh0KSA9PiB0aGlzLmNsZWFudXBUYWJIYW5kbGUodCkpO1xyXG5cdFx0aWYgKGFjdGl2ZVdhc0Nsb3NlZCkge1xyXG5cdFx0XHRzYWZlTmF2aWdhdGUoXHJcblx0XHRcdFx0dGhpcy5yb3V0ZXIsXHJcblx0XHRcdFx0d2l0aFRhYklkKGl0ZW0ubmF2TGluaywgaXRlbS50YWJJZCksXHJcblx0XHRcdFx0dGFiU3RhdGUoaXRlbS50YWJJZClcclxuXHRcdFx0KS5maW5hbGx5KGNsZWFudXBBbGwpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y2xlYW51cEFsbCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2FiaXQgb2xtYXlhbiB0w7xtIHRhYidsYXLEsSBrYXBhdMSxci4gKipTYWJpdCB0YWInbGFyIGtvcnVudXIqKiDigJQga3VsbGFuxLFjxLEgXCJUw7xtw7xuw7wgS2FwYXRcIlxyXG5cdCAqIGlzdGVyc2UgYmlsZSBwaW5uZWQgdGFiJ2xhciBhw6fEsWsga2FsxLFyIChDaHJvbWUgZGF2cmFuxLHFn8SxKS4gSGnDpyBwaW5uZWQgdGFiIHlva3NhIGFuYSBzYXlmYXlhXHJcblx0ICogbmF2aWdhdGUgZWRpbGlyLlxyXG5cdCAqL1xyXG5cdGNsb3NlQWxsKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgYWxsID0gdGhpcy5hY3RpdmVSb3V0ZXMoKTtcclxuXHRcdGlmIChhbGwubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblx0XHRjb25zdCB0b0Nsb3NlID0gYWxsLmZpbHRlcigocikgPT4gIXIucGlubmVkKTtcclxuXHRcdGlmICh0b0Nsb3NlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cdFx0Y29uc3Qgc3Vydml2b3JzID0gYWxsLmZpbHRlcigocikgPT4gci5waW5uZWQpO1xyXG5cdFx0dGhpcy5hY3RpdmVSb3V0ZXMuc2V0KHN1cnZpdm9ycyk7XHJcblx0XHRjb25zdCBjbGVhbnVwQWxsID0gKCk6IHZvaWQgPT4gdG9DbG9zZS5mb3JFYWNoKCh0KSA9PiB0aGlzLmNsZWFudXBUYWJIYW5kbGUodCkpO1xyXG5cdFx0Ly8gQWt0aWYgdGFiIGthcGF0xLFsYW5sYXJkYW4gaXNlOiB5YSBiaXIgcGlubmVkIHRhYidhIGdlw6cgKHlhxZ/EsXlvcnNhKSwgeW9rc2EgYW5hIHNheWZheWEuXHJcblx0XHRjb25zdCBhY3RpdmVXYXNDbG9zZWQgPSB0b0Nsb3NlLnNvbWUoKHIpID0+IHIudGFiSWQgPT09IHRoaXMuYWN0aXZlVGFiSWQoKSk7XHJcblx0XHRpZiAoYWN0aXZlV2FzQ2xvc2VkKSB7XHJcblx0XHRcdGlmIChzdXJ2aXZvcnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGNvbnN0IHRhcmdldCA9IHN1cnZpdm9yc1swXTtcclxuXHRcdFx0XHRzYWZlTmF2aWdhdGUodGhpcy5yb3V0ZXIsIHdpdGhUYWJJZCh0YXJnZXQubmF2TGluaywgdGFyZ2V0LnRhYklkKSwgdGFiU3RhdGUodGFyZ2V0LnRhYklkKSkuZmluYWxseShjbGVhbnVwQWxsKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyBQaW5uZWQgc3Vydml2b3IgeW9rIOKAlCBib8WfIGLEsXJha21hLCBhbmFzYXlmYSB0YWInxLEgYcOnIChlbiBheiAxIHRhYiBrdXJhbMSxKS5cclxuXHRcdFx0XHR0aGlzLm9wZW5Ib21lVGFiKCkuZmluYWxseShjbGVhbnVwQWxsKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y2xlYW51cEFsbCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGFiIHNhYml0bGVtZSB0b2dnbGUg4oCUIENocm9tZS12YXJpIHBpbm5pbmcuIFBpbm5lZCB0YWInbGFyIHRhYiBiYXInxLFuICoqc29sdW5hKiogdGHFn8SxbsSxclxyXG5cdCAqIChpbnNlcnRpb24gc8SxcmFzxLFuxLEga29ydXlhcmFrKSwga29tcGFrdCBnw7Zyw7xuw7xyLCBgY2xvc2VPdGhlcnNgL2BjbG9zZVRvUmlnaHRgL2BjbG9zZUFsbGBcclxuXHQgKiDDp2HEn3LEsWxhcsSxbmRhbiBrb3J1bnVyLiBBeW7EsSBwaW5uZWQgdMSxa2xhbsSxcnNhIHNhYml0bGVtZXlpIGthbGTEsXLEsXIg4oaSIG5vcm1hbCBhbGFuxLFuICoqc29udW5hKipcclxuXHQgKiB0YcWfxLFuxLFyLlxyXG5cdCAqL1xyXG5cdHRvZ2dsZVBpbihpdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHRjb25zdCBhbGwgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0Y29uc3QgaWR4ID0gYWxsLmZpbmRJbmRleCgocikgPT4gci50YWJJZCA9PT0gaXRlbS50YWJJZCk7XHJcblx0XHRpZiAoaWR4ID09PSAtMSkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgdGFyZ2V0ID0gYWxsW2lkeF07XHJcblx0XHRjb25zdCBuZXdQaW5uZWQgPSAhdGFyZ2V0LnBpbm5lZDtcclxuXHRcdC8vIMOWbmNlIHRhcmdldCfEsSBhcnJheSdkZW4gw6fEsWthciwgc29ucmEgcGlubmVkL25vcm1hbCBibG/En3VudW4gKipzb251bmEqKiBla2xlLlxyXG5cdFx0Ly8gQnUgQ2hyb21lIGRhdnJhbsSxxZ/EsTogcGlubGVuaW5jZSBwaW5uZWQgYmxvxJ91biBzb251bmEgKGVuIHNhxJ9hKSwgdW5waW5sZW5pbmNlIG5vcm1hbFxyXG5cdFx0Ly8gYmxvxJ91biBiYcWfxLFuYSAocGlubmVkJ2luIGhlbWVuIHNhxJ/EsW5hKS5cclxuXHRcdGNvbnN0IHdpdGhvdXQgPSBhbGwuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpZHgpO1xyXG5cdFx0Y29uc3QgcGlubmVkU2VnbWVudCA9IHdpdGhvdXQuZmlsdGVyKChyKSA9PiByLnBpbm5lZCk7XHJcblx0XHRjb25zdCBub3JtYWxTZWdtZW50ID0gd2l0aG91dC5maWx0ZXIoKHIpID0+ICFyLnBpbm5lZCk7XHJcblx0XHRjb25zdCB1cGRhdGVkOiBOYXZJdGVtID0geyAuLi50YXJnZXQsIHBpbm5lZDogbmV3UGlubmVkIH07XHJcblx0XHQvLyBQaW4g4oaSIHBpbm5lZCBibG/En3VuIHNvbnVuYTsgdW5waW4g4oaSIG5vcm1hbCBibG/En3VuIGJhxZ/EsW5hLiBIZXIgaWtpIGR1cnVtZGEgZGEgYHVwZGF0ZWRgLFxyXG5cdFx0Ly8gcGlubmVkIHZlIG5vcm1hbCBzZWdtZW50bGVyaW4gU0lOSVJJTkEgeWVybGXFn2lyIChwb3ppc3lvbiBheW7EsSkg4oaSIHRlayBpZmFkZSB5ZXRlcmxpLlxyXG5cdFx0Y29uc3QgbmV4dCA9IFsuLi5waW5uZWRTZWdtZW50LCB1cGRhdGVkLCAuLi5ub3JtYWxTZWdtZW50XTtcclxuXHRcdHRoaXMuYWN0aXZlUm91dGVzLnNldChuZXh0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBTxLFyYWRha2kgdGFiJ2EgKGNpcmN1bGFyKSBnZcOnZXIuICovXHJcblx0Z29Ub05leHRUYWIoKTogdm9pZCB7XHJcblx0XHRjb25zdCBhbGwgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0aWYgKGFsbC5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHRcdGNvbnN0IGlkeCA9IHRoaXMuZmluZEFjdGl2ZVRhYkluZGV4KCk7XHJcblx0XHRjb25zdCBuZXh0SWR4ID0gaWR4ID09PSAtMSA/IDAgOiAoaWR4ICsgMSkgJSBhbGwubGVuZ3RoO1xyXG5cdFx0Y29uc3QgdGFyZ2V0ID0gYWxsW25leHRJZHhdO1xyXG5cdFx0c2FmZU5hdmlnYXRlKHRoaXMucm91dGVyLCB3aXRoVGFiSWQodGFyZ2V0Lm5hdkxpbmssIHRhcmdldC50YWJJZCksIHRhYlN0YXRlKHRhcmdldC50YWJJZCkpO1xyXG5cdH1cclxuXHJcblx0LyoqIMOWbmNla2kgdGFiJ2EgKGNpcmN1bGFyKSBnZcOnZXIuICovXHJcblx0Z29Ub1ByZXZUYWIoKTogdm9pZCB7XHJcblx0XHRjb25zdCBhbGwgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0aWYgKGFsbC5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHRcdGNvbnN0IGlkeCA9IHRoaXMuZmluZEFjdGl2ZVRhYkluZGV4KCk7XHJcblx0XHRjb25zdCBwcmV2SWR4ID0gaWR4ID09PSAtMSA/IGFsbC5sZW5ndGggLSAxIDogKGlkeCAtIDEgKyBhbGwubGVuZ3RoKSAlIGFsbC5sZW5ndGg7XHJcblx0XHRjb25zdCB0YXJnZXQgPSBhbGxbcHJldklkeF07XHJcblx0XHRzYWZlTmF2aWdhdGUodGhpcy5yb3V0ZXIsIHdpdGhUYWJJZCh0YXJnZXQubmF2TGluaywgdGFyZ2V0LnRhYklkKSwgdGFiU3RhdGUodGFyZ2V0LnRhYklkKSk7XHJcblx0fVxyXG5cclxuXHQvKiogSW5kZXgndGVraSB0YWInYSBnZcOnZXIgKEFsdCsxLi45IGnDp2luIDAtdGFiYW5sxLEgaW5kZXgpLiAqL1xyXG5cdGdvVG9UYWJCeUluZGV4KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGFsbCA9IHRoaXMuYWN0aXZlUm91dGVzKCk7XHJcblx0XHRpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IGFsbC5sZW5ndGgpIHJldHVybjtcclxuXHRcdGNvbnN0IHRhcmdldCA9IGFsbFtpbmRleF07XHJcblx0XHRzYWZlTmF2aWdhdGUodGhpcy5yb3V0ZXIsIHdpdGhUYWJJZCh0YXJnZXQubmF2TGluaywgdGFyZ2V0LnRhYklkKSwgdGFiU3RhdGUodGFyZ2V0LnRhYklkKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBWZXJpbGVuIHRhYidhIG5hdmlnYXRlIOKAlCBVSSdkYW4gKHRhYiB0xLFrbGFtYSkgw6dhxJ9yxLFsxLFyLiBSb3V0ZXInYSBgX3RhYmAgaWxlIFVSTCB2ZVxyXG5cdCAqIGBleHRyYXMuc3RhdGVgIGlsZSB0YWJJZCB2ZXJpcjsgVXJsU2VyaWFsaXplciBhZHJlcyDDp3VidcSfdW51IHRlbWl6IHR1dGFyLlxyXG5cdCAqL1xyXG5cdG5hdmlnYXRlVG9UYWIoaXRlbTogTmF2SXRlbSk6IHZvaWQge1xyXG5cdFx0aWYgKCFpdGVtPy5uYXZMaW5rIHx8ICFpdGVtPy50YWJJZCkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgdXJsID0gd2l0aFRhYklkKGl0ZW0ubmF2TGluaywgaXRlbS50YWJJZCk7XHJcblx0XHRjb25zb2xlLmxvZyhgW05hdlNlcnZpY2VdIG5hdmlnYXRlVG9UYWIgdGFiSWQ9XCIke2l0ZW0udGFiSWR9XCIgbmF2TGluaz1cIiR7aXRlbS5uYXZMaW5rfVwiIOKGkiB1cmw9XCIke3VybH1cImApO1xyXG5cdFx0c2FmZU5hdmlnYXRlKHRoaXMucm91dGVyLCB1cmwsIHRhYlN0YXRlKGl0ZW0udGFiSWQpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEJlbGlybGkgYmlyIHRhYifEsW4gYG5hdkxpbmtgJ2luaSB2ZSAodmFyc2EpIGBuYXZOYW1lYCdpbmkgZ8O8bmNlbGxlci4gKipLYXluYcSfYS1iYcSfbMSxKipcclxuXHQgKiAocGVyLXRhYikgc3luYyDigJQgY2FsbGVyIGhhbmdpIHRhYifEsW4gVVJMJ2kgb2xkdcSfdW51IHPDtnlsZXIsIE5hdlNlcnZpY2UgYWt0aWYgdGFiXHJcblx0ICogdmFyc2F5xLFtxLFuZGEgYnVsdW5tYXouIEhpZGRlbiBjb250YWluZXInZGFraSBhc3luYyBNRkUgTmF2aWdhdGlvbkVuZCdsZXJpIGFrdGlmIHRhYifEsW5cclxuXHQgKiBzdGF0ZSdpbmkgS09OVEFNxLBORSBFREVNRVouXHJcblx0ICpcclxuXHQgKiBgdGl0bGVgIHBhcmFtZXRyZXNpIE1GRSBSb3V0ZXIgZGVlcGVzdCByb3V0ZSd1bnVuIGBSb3V0ZS50aXRsZWAgdmV5YSBgZGF0YS50YWJOYW1lYFxyXG5cdCAqIGRlxJ9lcmluZGVuIGdlbGlyIOKGkiBrdWxsYW7EsWPEsSBkZXRhaWwvZWRpdCBnaWJpIHN1Yi1zYXlmYWxhcmEgbmF2aWdhdGUgb2xkdcSfdW5kYSB0YWJcclxuXHQgKiBhZMSxIGRpbmFtaWsgZ8O8bmNlbGxlbmlyLiBgdGl0bGVgIHVuZGVmaW5lZCBpc2UgdGFiLm5hdk5hbWUgZGXEn2nFn21leiAoc3RhdGlrIGthbMSxcikuXHJcblx0ICpcclxuXHQgKiBBcHBMYXlvdXRDb21wb25lbnQgZWZmZWN0J3RlbiBgYnJpZGdlLmFjdGl2ZU1GRVVybGAgKGB7dGFiSWQsIHVybCwgdGl0bGV9YCkgaWxlIMOnYcSfcsSxbMSxci5cclxuXHQgKi9cclxuXHRzeW5jQWN0aXZlVGFiTmF2TGlua0ZvclRhYih0YWJJZDogc3RyaW5nLCByYXdVcmw6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdGlmICghdGFiSWQgfHwgIXJhd1VybCkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgY2xlYW5VcmwgPSBjbGVhbk5hdkxpbmsocmF3VXJsKTtcclxuXHRcdGNvbnN0IHRhcmdldCA9IHRoaXMuYWN0aXZlUm91dGVzKCkuZmluZCgodCkgPT4gdC50YWJJZCA9PT0gdGFiSWQpO1xyXG5cdFx0aWYgKCF0YXJnZXQpIHJldHVybjtcclxuXHRcdGNvbnN0IGxpbmtDaGFuZ2VkID0gdGFyZ2V0Lm5hdkxpbmsgIT09IGNsZWFuVXJsO1xyXG5cdFx0Y29uc3QgbmFtZUNoYW5nZWQgPSAhIXRpdGxlICYmIHRhcmdldC5uYXZOYW1lICE9PSB0aXRsZTtcclxuXHRcdGlmICghbGlua0NoYW5nZWQgJiYgIW5hbWVDaGFuZ2VkKSByZXR1cm47XHJcblx0XHRjb25zdCBuZXdOYXZMaW5rID0gbGlua0NoYW5nZWQgPyBjbGVhblVybCA6IHRhcmdldC5uYXZMaW5rO1xyXG5cdFx0Y29uc3QgbmV3TmFtZSA9IG5hbWVDaGFuZ2VkID8gdGl0bGUhIDogdGFyZ2V0Lm5hdk5hbWU7XHJcblx0XHRjb25zb2xlLmxvZyhcclxuXHRcdFx0YFtOYXZTZXJ2aWNlXSBzeW5jQWN0aXZlVGFiTmF2TGlua0ZvclRhYiB0YWI9XCIke3RhYklkfVwiIGAgK1xyXG5cdFx0XHRgbmF2TGluayBcIiR7dGFyZ2V0Lm5hdkxpbmt9XCIg4oaSIFwiJHtuZXdOYXZMaW5rfVwiIG5hbWUgXCIke3RhcmdldC5uYXZOYW1lfVwiIOKGkiBcIiR7bmV3TmFtZX1cImBcclxuXHRcdCk7XHJcblx0XHR0aGlzLmFjdGl2ZVJvdXRlcy51cGRhdGUoKHJvdXRlcykgPT5cclxuXHRcdFx0cm91dGVzLm1hcCgodCkgPT4gKHQudGFiSWQgPT09IHRhYklkID8geyAuLi50LCBuYXZMaW5rOiBuZXdOYXZMaW5rLCBuYXZOYW1lOiBuZXdOYW1lIH0gOiB0KSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUYWIgY29udGV4dC1tZW51IFwiWWluZWxlXCIgKENocm9tZSBcIkR1cGxpY2F0ZVwiKTogbWV2Y3V0IHRhYifEsW4gcGF0aCdpIGtvcHlhbGFuxLFyLCB5ZW5pIGJpclxyXG5cdCAqIGB0YWJJZGAgw7xyZXRpbGlyIHZlIHllbmkgdGFiIG9sdcWfdHVydWx1ci4gU3RyYXRlZ3kgYF90YWJgIHF1ZXJ5IHBhcmFtJ8SxbsSxIHJvdXRlIGtleSdpblxyXG5cdCAqIHBhcsOnYXPEsSB5YXB0xLHEn8SxIGnDp2luIHllbmkgdGFiIGJhxJ/EsW1zxLF6IGBzdG9yZWRSb3V0ZXNgIHNsb3QndW5hIHlhesSxbMSxciDihpIgYmHEn8SxbXPEsXpcclxuXHQgKiBjb21wb25lbnRSZWYgKyBzdGF0ZS4gTWV2Y3V0IHRhYiBrb3J1bnVyLCBrdWxsYW7EsWPEsSBoZXIgaWtpc2luZGUgZGUgYmHEn8SxbXPEsXogw6dhbMSxxZ9hYmlsaXIuXHJcblx0ICovXHJcblx0ZHVwbGljYXRlVGFiKGl0ZW06IE5hdkl0ZW0pOiB2b2lkIHtcclxuXHRcdGlmICghaXRlbT8ubmF2TGluaykgcmV0dXJuO1xyXG5cdFx0aWYgKHRoaXMuYWN0aXZlUm91dGVzKCkubGVuZ3RoID49IHRoaXMuTUFYX1RBQlMpIHtcclxuXHRcdFx0dGhpcy5ub3RpZnlNYXhUYWJzUmVhY2hlZCgpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBuZXdUYWJJZCA9IHRoaXMuZ2VuZXJhdGVUYWJJZCgpO1xyXG5cdFx0Y29uc3QgbmV3TmF2TGluayA9IGNsZWFuTmF2TGluayhpdGVtLm5hdkxpbmspO1xyXG5cdFx0dGhpcy5hY3RpdmVSb3V0ZXMudXBkYXRlKCh2YWwpID0+IFtcclxuXHRcdFx0Li4udmFsLFxyXG5cdFx0XHR7IC4uLml0ZW0sIHRhYklkOiBuZXdUYWJJZCwgbmF2TGluazogbmV3TmF2TGluayB9XHJcblx0XHRdKTtcclxuXHRcdHNhZmVOYXZpZ2F0ZSh0aGlzLnJvdXRlciwgd2l0aFRhYklkKG5ld05hdkxpbmssIG5ld1RhYklkKSwgdGFiU3RhdGUobmV3VGFiSWQpKTtcclxuXHR9XHJcblxyXG5cdHJlb3JkZXJBY3RpdmVSb3V0ZXMobmV3Um91dGVzOiBOYXZJdGVtW10pOiB2b2lkIHtcclxuXHRcdC8vIFBpbm5lZC9ub3JtYWwgc8SxbsSxcsSxIGtvcnVtYXPEsSDigJQgc2FiaXQgdGFiJ2xhciB0YWIgYmFyJ8SxbiBzb2x1bmRhIChpbnNlcnRpb24gc8SxcmFzxLF5bGEpLFxyXG5cdFx0Ly8gbm9ybWFsIHRhYidsYXIgc2HEn8SxbmRhIGthbMSxci4gQ0RLIGRyYWcgZHJvcCBiaXIgdGFiJ8SxIHlhbmzEscWfIHNlZ21lbnRlIGTDvMWfw7xyw7xyc2VcclxuXHRcdC8vIGJ1cmFkYSBvdG9tYXRpayBkw7x6ZWx0aWxpci4gU2VnbWVudCBpw6dpIHPEsXJhIGtvcnVudXIuXHJcblx0XHRjb25zdCBwaW5uZWQgPSBuZXdSb3V0ZXMuZmlsdGVyKChyKSA9PiByLnBpbm5lZCk7XHJcblx0XHRjb25zdCBub3JtYWwgPSBuZXdSb3V0ZXMuZmlsdGVyKChyKSA9PiAhci5waW5uZWQpO1xyXG5cdFx0dGhpcy5hY3RpdmVSb3V0ZXMuc2V0KFsuLi5waW5uZWQsIC4uLm5vcm1hbF0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWVudSBjb25maWcnaW5kZW4gbmF2TGluaydlIGthcsWfxLFsxLFrIGdlbGVuIGl0ZW0naSBsb25nZXN0LXByZWZpeCBtYXRjaCBpbGUgYnVsdXBcclxuXHQgKiBha3RpZiBkaWxkZSBsYWJlbCArIGljb24gZMO2bmVyLiBBZHJlcyDDp3VidcSfdW5hIFVSTCB5YXDEscWfdMSxcmFyYWsgZGVlcCBsaW5rIGHDp8SxbGTEscSfxLFuZGFcclxuXHQgKiB0YWInxLFuIG1lbsO8ZGVuIGHDp8SxbGFuIHRhYidsYSBheW7EsSBnw7Zyw7xuw7xtZSBzYWhpcCBvbG1hc8SxbsSxIHNhxJ9sYXIuXHJcblx0ICpcclxuXHQgKiBMb29rdXAgYG1lbnVJdGVtc1Byb3ZpZGVyYCDDvHplcmluZGVuIOKAlCBob3N0IHNoZWxsIGBzZXRNZW51SXRlbXNQcm92aWRlcmAgaWxlXHJcblx0ICogYGJyaWRnZS5ob3N0TWVudUl0ZW1zKClgJ2EgYmHEn2xhci4gUHJvdmlkZXIgeW9rc2EgdmV5YSBlxZ9sZcWfbWUgeW9rc2EgYG51bGxgIGTDtm5lciB2ZVxyXG5cdCAqIGNhbGxlciBVUkwgc2VnbWVudCBmYWxsYmFjaydpbmUgZMO8xZ9lci5cclxuXHQgKi9cclxuXHRwcml2YXRlIHJlc29sdmVOYXZJbmZvRnJvbU1lbnUobmF2TGluazogc3RyaW5nKTogeyBuYXZOYW1lOiBzdHJpbmc7IGljb24/OiBzdHJpbmcgfSB8IG51bGwge1xyXG5cdFx0Ly8gQW5hc2F5ZmEgKG1lbsO8ZGVraSBgcm9vdGAgw7bEn2VzaSkgw6dvxJ91IHphbWFuIGByb3V0ZXJMaW5rYCBpbGUgZcWfbGXFn21leiAocm91dGVyTGluaydpIGAvYFxyXG5cdFx0Ly8gdmV5YSBib8WfIG9sYWJpbGlyLCBsb25nZXN0LXByZWZpeCBtYXRjaCdlIHRha8SxbG1heikg4oaSIGAvYCBpw6dpbiBmYWxsYmFjayBcIlBhZ2VcIiArIGplbmVyaWtcclxuXHRcdC8vIGlrb24gZMO2bmVyZGkuIEhvbWUgcHJvdmlkZXIgdmFyc2EgYWQvaWtvbnUgZG/En3J1ZGFuIG9yYWRhbiAocm9vdCBpdGVtJ2Rhbikgw6fDtnouXHJcblx0XHRpZiAodGhpcy5ob21lTmF2SXRlbVByb3ZpZGVyKSB7XHJcblx0XHRcdGNvbnN0IGhvbWUgPSB0aGlzLmhvbWVOYXZJdGVtUHJvdmlkZXIoKTtcclxuXHRcdFx0Ly8gQW5hc2F5ZmEgbmF2TGluayBlxZ9sZcWfaXlvcnNhIGTDtm4g4oCUIG1lbsO8IGJvxZ8vZ2XDpyB5w7xrbGVuZGl5c2UgeWEgZGEgbWVuw7xkZSBgcm9vdGAgw7bEn2VzaVxyXG5cdFx0XHQvLyB5b2tzYSBuYXZOYW1lL2ljb24gYm/FnyBnZWxlYmlsaXI7IGkxOG4gKCd0YWIuaG9tZScpICsgZXYgaWtvbnUgZmFsbGJhY2sgaWxlIGFzbGFcclxuXHRcdFx0Ly8gbWVuw7wtc2VnbWVudCBmYWxsYmFjaydpbmUgKFwiUGFnZVwiKSBkw7zFn21lLlxyXG5cdFx0XHRpZiAobmF2TGluayA9PT0gY2xlYW5OYXZMaW5rKGhvbWUubmF2TGluayB8fCAnLycpKSB7XHJcblx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdG5hdk5hbWU6IGhvbWUubmF2TmFtZSB8fCB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0YWIuaG9tZScpLFxyXG5cdFx0XHRcdFx0aWNvbjogaG9tZS5pY29uIHx8ICdwaSBwaS1ob21lJ1xyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGNvbnN0IGl0ZW1zID0gdGhpcy5tZW51SXRlbXNQcm92aWRlcj8uKCk7XHJcblx0XHRpZiAoIWl0ZW1zPy5sZW5ndGgpIHJldHVybiBudWxsO1xyXG5cdFx0Y29uc3QgcGF0aCA9IG5hdkxpbmsuc3BsaXQoJz8nKVswXTtcclxuXHRcdGNvbnN0IG1hdGNoZWQgPSB0aGlzLmZpbmRNZW51SXRlbUZvclJvdXRlKGl0ZW1zLCBwYXRoKTtcclxuXHRcdGlmICghbWF0Y2hlZCkgcmV0dXJuIG51bGw7XHJcblx0XHRjb25zdCBsYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdGNvbnN0IGxhYmVsID0gbWF0Y2hlZC5sYWJlbCBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgbmF2TmFtZSA9IGxhYmVsPy5bbGFuZ10gfHwgbGFiZWw/LlsndHInXSB8fCBsYWJlbD8uWydlbiddIHx8ICcnO1xyXG5cdFx0aWYgKCFuYXZOYW1lKSByZXR1cm4gbnVsbDtcclxuXHRcdHJldHVybiB7IG5hdk5hbWUsIGljb246IG1hdGNoZWQuaWNvbiB9O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWVuw7wvaTE4biB5w7xrbGVuaW5jZSB0YWInbGFyxLEgKMO2emVsbGlrbGUgYW5hc2F5ZmEpIG1lbsO8eWxlIHJldml6ZSBlZGVyIOKAlCByZWZyZXNoL2lsayBhw6fEsWzEscWfXHJcblx0ICogcGF0aCdpbmRlIHRhYiBmYWxsYmFjayBpc2ltL2ljb25sYSBla2xlbm1pxZ8gb2xhYmlsaXIgKG1lbsO8IHZleWEgw6dldmlyaSBvIGFuZGEgaGF6xLFyIGRlxJ9pbGRpKS5cclxuXHQgKiBUZXRpa2xleWljaWxlcjogYHNldE1lbnVJdGVtc1Byb3ZpZGVyYC9gc2V0SG9tZU5hdkl0ZW1Qcm92aWRlcmAsIGB0cmFuc2xhdGlvbkxvYWRTdWNjZXNzYFxyXG5cdCAqIGV2ZW50J2kgdmUgaG9zdCBzaGVsbCBtZW7DvCBzaWduYWwnaSBkZcSfacWfaW1pIChgQXBwTGF5b3V0Q29tcG9uZW50YCBlZmZlY3QpLiBQdWJsaWMg4oCUIGhvc3RcclxuXHQgKiBsYXlvdXQgbWVuw7wgYXN5bmMgecO8a2xlbmluY2Ugw6dhxJ/EsXLEsXIga2kgYW5hc2F5ZmEgYWTEsSBgdGFiLmhvbWVgIGZhbGxiYWNrJ2luZGUgdGFrxLFsbWFzxLFuLlxyXG5cdCAqL1xyXG5cdHJlY29uY2lsZVRhYnNXaXRoTWVudSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IHRhYnMgPSB0aGlzLmFjdGl2ZVJvdXRlcygpO1xyXG5cdFx0aWYgKCF0YWJzLmxlbmd0aCkgcmV0dXJuO1xyXG5cdFx0bGV0IGNoYW5nZWQgPSBmYWxzZTtcclxuXHRcdGNvbnN0IG5leHQgPSB0YWJzLm1hcCgodCkgPT4ge1xyXG5cdFx0XHRjb25zdCBpbmZvID0gdGhpcy5yZXNvbHZlTmF2SW5mb0Zyb21NZW51KHQubmF2TGluayk7XHJcblx0XHRcdGlmICghaW5mbykgcmV0dXJuIHQ7XHJcblx0XHRcdGlmICh0Lm5hdk5hbWUgPT09IGluZm8ubmF2TmFtZSAmJiB0Lmljb24gPT09IGluZm8uaWNvbikgcmV0dXJuIHQ7XHJcblx0XHRcdGNoYW5nZWQgPSB0cnVlO1xyXG5cdFx0XHRyZXR1cm4geyAuLi50LCBuYXZOYW1lOiBpbmZvLm5hdk5hbWUsIGljb246IGluZm8uaWNvbiB9O1xyXG5cdFx0fSk7XHJcblx0XHRpZiAoY2hhbmdlZCkgdGhpcy5hY3RpdmVSb3V0ZXMuc2V0KG5leHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWVudSBhxJ9hY8SxbmRhIHZlcmlsZW4gcGF0aCBpw6dpbiBlbiBzcGVzaWZpayAobG9uZ2VzdCByb3V0ZXJMaW5rIHByZWZpeCkgZcWfbGXFn21leWkgYnVsdXIuXHJcblx0ICogYG13L2FwcC1tYW5hZ2VtZW50L3ZpZXctYXBwYCBpw6dpbiBoZW0gYG13YCBoZW0gYG13L2FwcC1tYW5hZ2VtZW50L3ZpZXctYXBwYCBlxZ9sZcWfc2UsXHJcblx0ICogZGFoYSB1enVuIG9sYW4ga2F6YW7EsXIg4oaSIGxlYWYgbWVudSBpdGVtJ8SxbiBsYWJlbC9pY29uJ3Uga3VsbGFuxLFsxLFyLlxyXG5cdCAqXHJcblx0ICogUGF0aCBsZWFkaW5nIHNsYXNoIGnDp2VyZWJpbGlyIChSb3V0ZXIgVVJMIGZvcm1hdMSxKSwgbWVudSBjb25maWcgcm91dGVyTGluaydsZXJpXHJcblx0ICogZ2VuZWxkZSBsZWFkaW5nIHNsYXNoJ3PEsXogKGBtdy9tZXRlcnNgKTsgaWtpc2luaSBub3JtYWxpemUgZWRpcCBrYXLFn8SxbGHFn3TEsXLEsXLEsXouXHJcblx0ICovXHJcblx0cHJpdmF0ZSBmaW5kTWVudUl0ZW1Gb3JSb3V0ZShpdGVtczogUGx1Z2luTWVudUl0ZW1bXSwgcGF0aDogc3RyaW5nKTogUGx1Z2luTWVudUl0ZW0gfCB1bmRlZmluZWQge1xyXG5cdFx0Y29uc3Qgbm9ybWFsaXplID0gKHA6IHN0cmluZyk6IHN0cmluZyA9PiAocC5zdGFydHNXaXRoKCcvJykgPyBwLnNsaWNlKDEpIDogcCk7XHJcblx0XHRjb25zdCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZShwYXRoKTtcclxuXHRcdGxldCBiZXN0OiB7IGxlbmd0aDogbnVtYmVyOyBpdGVtOiBQbHVnaW5NZW51SXRlbSB9IHwgdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgdmlzaXQgPSAobGlzdDogUGx1Z2luTWVudUl0ZW1bXSk6IHZvaWQgPT4ge1xyXG5cdFx0XHRmb3IgKGNvbnN0IGl0IG9mIGxpc3QpIHtcclxuXHRcdFx0XHRpZiAoaXQucm91dGVyTGluaykge1xyXG5cdFx0XHRcdFx0Y29uc3QgciA9IG5vcm1hbGl6ZShpdC5yb3V0ZXJMaW5rKTtcclxuXHRcdFx0XHRcdGlmIChyICYmIChub3JtYWxpemVkUGF0aCA9PT0gciB8fCBub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKHIgKyAnLycpKSkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSByLmxlbmd0aDtcclxuXHRcdFx0XHRcdFx0aWYgKCFiZXN0IHx8IGxlbmd0aCA+IGJlc3QubGVuZ3RoKSBiZXN0ID0geyBsZW5ndGgsIGl0ZW06IGl0IH07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChpdC5pdGVtcz8ubGVuZ3RoKSB2aXNpdChpdC5pdGVtcyk7XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblx0XHR2aXNpdChpdGVtcyk7XHJcblx0XHRyZXR1cm4gYmVzdD8uaXRlbTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEJpciB0YWInxLFuIHN0b3JlZCByb3V0ZSBoYW5kbGUnxLFuxLEgc3RyYXRlZ3knZGVuIHRlbWl6bGVyLiBLZXkgZm9ybWF0xLFcclxuXHQgKiBgbWZlOiR7cmVtb3RlTmFtZX06JHt0YWJJZH1gIOKAlCBzdHJhdGVneSBgcHJvY2Vzc0NsZWFudXBLZXlgIG1hdGNoZXIga2V5J2luZGVuIGhlbVxyXG5cdCAqIE1GRSBjdXN0b20gZWxlbWVudCBoYW5kbGUnxLFuxLEgaGVtIG8gdGFiJ2EgYWl0IGNoaWxkIHJvdXRlIGhhbmRsZSdsYXLEsW7EsSBkw7zFn8O8csO8ci5cclxuXHQgKi9cclxuXHRwcml2YXRlIGNsZWFudXBUYWJIYW5kbGUoaXRlbTogTmF2SXRlbSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgcmVtb3RlTmFtZSA9IGV4dHJhY3RSZW1vdGVOYW1lKGl0ZW0ubmF2TGluayk7XHJcblx0XHRpZiAoIXJlbW90ZU5hbWUgfHwgIWl0ZW0udGFiSWQpIHJldHVybjtcclxuXHRcdGNvbnNvbGUubG9nKGBbTmF2U2VydmljZV0gY2xlYW51cFRhYkhhbmRsZSByZW1vdGVOYW1lPVwiJHtyZW1vdGVOYW1lfVwiIHRhYklkPVwiJHtpdGVtLnRhYklkfVwiYCk7XHJcblx0XHR0aGlzLnJvdXRlQ2xvc2VTZXJ2aWNlLmRlbGV0ZVN0b3JlZFJvdXRlKGBtZmU6JHtyZW1vdGVOYW1lfToke2l0ZW0udGFiSWR9YCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -14,13 +14,13 @@ export class RouteCloseService {
14
14
  deleteStoredRoute(key) {
15
15
  this.deleteRouteSubject.next(key);
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RouteCloseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
18
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RouteCloseService, providedIn: 'root' }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RouteCloseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
18
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RouteCloseService, providedIn: 'root' }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RouteCloseService, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RouteCloseService, decorators: [{
21
21
  type: Injectable,
22
22
  args: [{
23
23
  providedIn: 'root',
24
24
  }]
25
25
  }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtY2xvc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvcm91dGUtY2xvc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFJbUIsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUM1RDs7OztXQUlHO1FBQ0gsaUJBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7S0FLdkQ7SUFIQyxpQkFBaUIsQ0FBQyxHQUFXO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs4R0FYVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvdXRlQ2xvc2VTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlbGV0ZVJvdXRlU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAvKipcclxuICAgKiBLYXBhdMSxbGFuIHRhYiBrZXknbGVyaW5pbiBrdXlydcSfdS4gVGVrLXNsb3Qgc2lnbmFsIHllcmluZSBTdWJqZWN0IGt1bGxhbsSxbMSxeW9yOlxyXG4gICAqIHRvcGx1IGthcGF0bWFkYSAoY2xvc2VBbGwvY2xvc2VPdGhlcnMvY2xvc2VUb1JpZ2h0KSBhcmTEscWfxLFrIMOnYcSfcsSxbGFyxLFuIGhlciBiaXJpIGF5csSxXHJcbiAgICogZW1pdCBvbHVyIHZlIHTDvGtldGljaSBoZXBzaW5pIGnFn2xlci4gU2lnbmFsIGNvYWxlc2NpbmcnaSBzb24ga2V5IGTEscWfxLFuZGFraWxlcmkgZMO8xZ/DvHLDvHlvcmR1LlxyXG4gICAqL1xyXG4gIGRlbGV0ZVJvdXRlJCA9IHRoaXMuZGVsZXRlUm91dGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBkZWxldGVTdG9yZWRSb3V0ZShrZXk6IHN0cmluZykge1xyXG4gICAgdGhpcy5kZWxldGVSb3V0ZVN1YmplY3QubmV4dChrZXkpO1xyXG4gIH1cclxufVxyXG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtY2xvc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvcm91dGUtY2xvc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFJbUIsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUM1RDs7OztXQUlHO1FBQ0gsaUJBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7S0FLdkQ7SUFIQyxpQkFBaUIsQ0FBQyxHQUFXO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQzsrR0FYVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvdXRlQ2xvc2VTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlbGV0ZVJvdXRlU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAvKipcclxuICAgKiBLYXBhdMSxbGFuIHRhYiBrZXknbGVyaW5pbiBrdXlydcSfdS4gVGVrLXNsb3Qgc2lnbmFsIHllcmluZSBTdWJqZWN0IGt1bGxhbsSxbMSxeW9yOlxyXG4gICAqIHRvcGx1IGthcGF0bWFkYSAoY2xvc2VBbGwvY2xvc2VPdGhlcnMvY2xvc2VUb1JpZ2h0KSBhcmTEscWfxLFrIMOnYcSfcsSxbGFyxLFuIGhlciBiaXJpIGF5csSxXHJcbiAgICogZW1pdCBvbHVyIHZlIHTDvGtldGljaSBoZXBzaW5pIGnFn2xlci4gU2lnbmFsIGNvYWxlc2NpbmcnaSBzb24ga2V5IGTEscWfxLFuZGFraWxlcmkgZMO8xZ/DvHLDvHlvcmR1LlxyXG4gICAqL1xyXG4gIGRlbGV0ZVJvdXRlJCA9IHRoaXMuZGVsZXRlUm91dGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBkZWxldGVTdG9yZWRSb3V0ZShrZXk6IHN0cmluZykge1xyXG4gICAgdGhpcy5kZWxldGVSb3V0ZVN1YmplY3QubmV4dChrZXkpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -18,10 +18,10 @@ export class ShadowDOMWrapperComponent extends WebComponentWrapper {
18
18
  this.renderer.appendChild(shadowRoot, link);
19
19
  });
20
20
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ShadowDOMWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ShadowDOMWrapperComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "vc", first: true, predicate: ["vc"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: '<div #vc></div>', isInline: true, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShadowDOMWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ShadowDOMWrapperComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "vc", first: true, predicate: ["vc"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: '<div #vc></div>', isInline: true, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ShadowDOMWrapperComponent, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShadowDOMWrapperComponent, decorators: [{
25
25
  type: Component,
26
26
  args: [{
27
27
  standalone: true,
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
32
32
  type: ViewChild,
33
33
  args: ['vc', { read: ElementRef, static: true }]
34
34
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvd2Rvd0RPTVdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL3Nob3dkb3dET01XcmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLFNBQVMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9HLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQU9sRixNQUFNLE9BQU8seUJBQTBCLFNBQVEsbUJBQW1CO0lBTGxFOztRQVFTLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7S0FlckM7SUFiQSxRQUFRO1FBQ1AsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1FBQ3BELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFFOUQsb0NBQW9DO1FBQ3BDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQWpCVyx5QkFBeUI7a0dBQXpCLHlCQUF5Qiw2SUFDWixVQUFVLGtFQUp6QixpQkFBaUI7OzJGQUdmLHlCQUF5QjtrQkFMckMsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsYUFBYSxFQUFFLGlCQUFpQixDQUFDLFNBQVM7aUJBQzFDOzhCQUU4RCxFQUFFO3NCQUEvRCxTQUFTO3VCQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgV2ViQ29tcG9uZW50V3JhcHBlciB9IGZyb20gJ0Bhbmd1bGFyLWFyY2hpdGVjdHMvbW9kdWxlLWZlZGVyYXRpb24tdG9vbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHR0ZW1wbGF0ZTogJzxkaXYgI3ZjPjwvZGl2PicsXHJcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50IGV4dGVuZHMgV2ViQ29tcG9uZW50V3JhcHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QFZpZXdDaGlsZCgndmMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBvdmVycmlkZSB2YyE6IEVsZW1lbnRSZWY7XHJcblxyXG5cdHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHRjb25zdCBzaGFkb3dSb290ID0gdGhpcy52Yy5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XHJcblx0XHRjb25zdCBzdHlsZVVybHMgPSB0aGlzWydyb3V0ZSddLnNuYXBzaG90LmRhdGEuc3R5bGVVcmxzIHx8IFtdO1xyXG5cclxuXHRcdC8vIEluamVjdCBzdHlsZXMgaW50byB0aGUgU2hhZG93IERPTVxyXG5cdFx0c3R5bGVVcmxzLmZvckVhY2goKHVybDogc3RyaW5nKSA9PiB7XHJcblx0XHRcdGNvbnN0IGxpbmsgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcclxuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdzdHlsZXNoZWV0Jyk7XHJcblx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQvY3NzJyk7XHJcblx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcclxuXHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChzaGFkb3dSb290LCBsaW5rKTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvd2Rvd0RPTVdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL3Nob3dkb3dET01XcmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLFNBQVMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9HLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQU9sRixNQUFNLE9BQU8seUJBQTBCLFNBQVEsbUJBQW1CO0lBTGxFOztRQVFTLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7S0FlckM7SUFiQSxRQUFRO1FBQ1AsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1FBQ3BELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFFOUQsb0NBQW9DO1FBQ3BDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOytHQWpCVyx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw2SUFDWixVQUFVLGtFQUp6QixpQkFBaUI7OzRGQUdmLHlCQUF5QjtrQkFMckMsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsYUFBYSxFQUFFLGlCQUFpQixDQUFDLFNBQVM7aUJBQzFDOzhCQUU4RCxFQUFFO3NCQUEvRCxTQUFTO3VCQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgV2ViQ29tcG9uZW50V3JhcHBlciB9IGZyb20gJ0Bhbmd1bGFyLWFyY2hpdGVjdHMvbW9kdWxlLWZlZGVyYXRpb24tdG9vbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHR0ZW1wbGF0ZTogJzxkaXYgI3ZjPjwvZGl2PicsXHJcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50IGV4dGVuZHMgV2ViQ29tcG9uZW50V3JhcHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QFZpZXdDaGlsZCgndmMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBvdmVycmlkZSB2YyE6IEVsZW1lbnRSZWY7XHJcblxyXG5cdHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHRjb25zdCBzaGFkb3dSb290ID0gdGhpcy52Yy5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XHJcblx0XHRjb25zdCBzdHlsZVVybHMgPSB0aGlzWydyb3V0ZSddLnNuYXBzaG90LmRhdGEuc3R5bGVVcmxzIHx8IFtdO1xyXG5cclxuXHRcdC8vIEluamVjdCBzdHlsZXMgaW50byB0aGUgU2hhZG93IERPTVxyXG5cdFx0c3R5bGVVcmxzLmZvckVhY2goKHVybDogc3RyaW5nKSA9PiB7XHJcblx0XHRcdGNvbnN0IGxpbmsgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcclxuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdzdHlsZXNoZWV0Jyk7XHJcblx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQvY3NzJyk7XHJcblx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcclxuXHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChzaGFkb3dSb290LCBsaW5rKTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -40,11 +40,11 @@ export class TabAwareUrlSerializer extends DefaultUrlSerializer {
40
40
  .join('&');
41
41
  return query ? `${path}?${query}${fragment}` : `${path}${fragment}`;
42
42
  }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TabAwareUrlSerializer, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
44
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TabAwareUrlSerializer, providedIn: 'root' }); }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabAwareUrlSerializer, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
44
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabAwareUrlSerializer, providedIn: 'root' }); }
45
45
  }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TabAwareUrlSerializer, decorators: [{
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabAwareUrlSerializer, decorators: [{
47
47
  type: Injectable,
48
48
  args: [{ providedIn: 'root' }]
49
49
  }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWF3YXJlLXVybC1zZXJpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy90YWItYXdhcmUtdXJsLXNlcmlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQVcsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFaEU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxvQkFBb0I7SUFDOUQsc0dBQXNHO0lBRTdGLFNBQVMsQ0FBQyxJQUFhO1FBQy9CLG1GQUFtRjtRQUNuRixrRkFBa0Y7UUFDbEYsc0ZBQXNGO1FBQ3RGLDBGQUEwRjtRQUMxRiw0REFBNEQ7UUFDNUQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUV2QyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRSxNQUFNLGNBQWMsR0FBRyxXQUFXLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBRTFFLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxRQUFRLEdBQUcsQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBRTdCLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sS0FBSyxHQUFHLGNBQWM7YUFDMUIsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7YUFDbkIsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1osT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLEtBQUssR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsUUFBUSxFQUFFLENBQUM7SUFDckUsQ0FBQzs4R0ExQlcscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FEUixNQUFNOzsyRkFDbkIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGVmYXVsdFVybFNlcmlhbGl6ZXIsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuLyoqXHJcbiAqIGBfdGFiYCBxdWVyeSBwYXJhbSfEsW7EsSBhZHJlcyDDp3VidcSfdW5kYSBnaXpsZXllbiBgVXJsU2VyaWFsaXplcmAuIFBhcmFtIFJvdXRlcifEsW5cclxuICogaW50ZXJuYWwgYFVybFRyZWUucXVlcnlQYXJhbXNgJ8SxbmRhIGtvcnVudXIgKHBhcnNlIGltemFzxLF6LCBkZWZhdWx0IGRhdnJhbsSxxZ8pO1xyXG4gKiBzYWRlY2UgYHNlcmlhbGl6ZWAgw6fEsWt0xLFzxLEgw7x6ZXJpbmRlbiDigJQgeWFuaSBgUm91dGVyLnVybGAsIGBOYXZpZ2F0aW9uRW5kLnVybEFmdGVyUmVkaXJlY3RzYFxyXG4gKiB2ZSBicm93c2VyIGFkZHJlc3MgYmFyIOKAlCBgX3RhYmAgc3RyaXAgZWRpbGlyLlxyXG4gKlxyXG4gKiAqKlNvbnXDpyoqOiBgQ3VzdG9tUm91dGVSZXVzZVN0cmF0ZWd5LmdldFJvdXRlS2V5YCBgcm91dGUucXVlcnlQYXJhbXNbJ190YWInXWAnxLFcclxuICogbm9ybWFsIMWfZWtpbGRlIG9rdW1heWEgZGV2YW0gZWRlciAocGFyc2UgcGF0aCdpbmRlIGRlxJ9pxZ9pa2xpayB5b2spLCBhbWEga3VsbGFuxLFjxLFuxLFuXHJcbiAqIGfDtnJkw7zEn8O8IFVSTCB0ZW1pemRpci5cclxuICpcclxuICogKipOYXZTZXJ2aWNlIGV0a2lzaSoqOiBgYWN0aXZlUm91dGUoKWAgYXJ0xLFrIGBfdGFiYCB0YcWfxLFtYXouIEFrdGlmIHRhYiB0ZXNwaXRpXHJcbiAqIGBhY3RpdmVUYWJJZGAgc2lnbmFsJ2kgw7x6ZXJpbmRlbiB5YXDEsWxtYWzEsSAoTmF2U2VydmljZSBidW51IGB3aW5kb3cuaGlzdG9yeS5zdGF0ZWAndGVuXHJcbiAqIG9rdXIg4oCUIGBuYXZpZ2F0ZUJ5VXJsKHVybCwgeyBzdGF0ZTogeyBfdGFiIH0gfSlgIGlsZSBoZXIgbmF2aWdhdGlvbidkYSBzZXQgZWRpbGlyKS5cclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJBd2FyZVVybFNlcmlhbGl6ZXIgZXh0ZW5kcyBEZWZhdWx0VXJsU2VyaWFsaXplciB7XHJcblx0LyoqIGBwYXJzZWAgZGVmYXVsdCBkYXZyYW7EscWfbGEgYsSxcmFrxLFsZMSxIOKAlCBpbnB1dCBVUkwnaW5kZSBgX3RhYmAgdmFyc2Ega29ydW51ciAocmVmcmVzaCBkZWVwIGxpbmspLiAqL1xyXG5cclxuXHRvdmVycmlkZSBzZXJpYWxpemUodHJlZTogVXJsVHJlZSk6IHN0cmluZyB7XHJcblx0XHQvLyBEZWZhdWx0IHNlcmlhbGl6ZSfEsSB0dXQsIHNvbnJhIGBfdGFiYCfEsSBzdHJpbmcgc2V2aXllc2luZGUgKHNwbGl0L2ZpbHRlcikgw6fEsWthci5cclxuXHRcdC8vIGBVUkxTZWFyY2hQYXJhbXNgIHJvdW5kLXRyaXAnaW5kZW4gS0HDh0lOSVlPUlVaOiBkacSfZXIgcXVlcnkgcGFyYW0nbGFyxLFuIEFuZ3VsYXJcclxuXHRcdC8vIGVuY29kaW5nJ2luaSBib3phciAow7Zybi4gYGElMjBiYCDihpIgYGErYmApIHZlIGJ1IHN0cmluZyBgUm91dGVyLnVybGAvYE5hdmlnYXRpb25FbmRgXHJcblx0XHQvLyBvbGFyYWsga3VsbGFuxLFsZMSxxJ/EsSBpw6dpbiBgY2xlYW5OYXZMaW5rYCBrYXLFn8SxbGHFn3TEsXJtYWxhcsSxIGthw6dhYmlsaXJkaS4gRGnEn2VyIHBhcmFtJ2xhcmFcclxuXHRcdC8vIEjEsMOHIGRva3VubXV5b3J1eiDigJQgeWFsbsSxeiBgX3RhYmAgc2VnbWVudCdpbmkgZMO8xZ/DvHLDvHlvcnV6LlxyXG5cdFx0Y29uc3QgdXJsID0gc3VwZXIuc2VyaWFsaXplKHRyZWUpO1xyXG5cdFx0aWYgKCF1cmwuaW5jbHVkZXMoJ190YWI9JykpIHJldHVybiB1cmw7XHJcblxyXG5cdFx0Y29uc3QgZnJhZ21lbnRJZHggPSB1cmwuaW5kZXhPZignIycpO1xyXG5cdFx0Y29uc3QgZnJhZ21lbnQgPSBmcmFnbWVudElkeCA+PSAwID8gdXJsLnNsaWNlKGZyYWdtZW50SWR4KSA6ICcnO1xyXG5cdFx0Y29uc3QgYmVmb3JlRnJhZ21lbnQgPSBmcmFnbWVudElkeCA+PSAwID8gdXJsLnNsaWNlKDAsIGZyYWdtZW50SWR4KSA6IHVybDtcclxuXHJcblx0XHRjb25zdCBxdWVyeUlkeCA9IGJlZm9yZUZyYWdtZW50LmluZGV4T2YoJz8nKTtcclxuXHRcdGlmIChxdWVyeUlkeCA8IDApIHJldHVybiB1cmw7XHJcblxyXG5cdFx0Y29uc3QgcGF0aCA9IGJlZm9yZUZyYWdtZW50LnNsaWNlKDAsIHF1ZXJ5SWR4KTtcclxuXHRcdGNvbnN0IHF1ZXJ5ID0gYmVmb3JlRnJhZ21lbnRcclxuXHRcdFx0LnNsaWNlKHF1ZXJ5SWR4ICsgMSlcclxuXHRcdFx0LnNwbGl0KCcmJylcclxuXHRcdFx0LmZpbHRlcigocCkgPT4gcCAhPT0gJ190YWInICYmICFwLnN0YXJ0c1dpdGgoJ190YWI9JykpXHJcblx0XHRcdC5qb2luKCcmJyk7XHJcblx0XHRyZXR1cm4gcXVlcnkgPyBgJHtwYXRofT8ke3F1ZXJ5fSR7ZnJhZ21lbnR9YCA6IGAke3BhdGh9JHtmcmFnbWVudH1gO1xyXG5cdH1cclxufVxyXG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWF3YXJlLXVybC1zZXJpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy90YWItYXdhcmUtdXJsLXNlcmlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQVcsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFaEU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxvQkFBb0I7SUFDOUQsc0dBQXNHO0lBRTdGLFNBQVMsQ0FBQyxJQUFhO1FBQy9CLG1GQUFtRjtRQUNuRixrRkFBa0Y7UUFDbEYsc0ZBQXNGO1FBQ3RGLDBGQUEwRjtRQUMxRiw0REFBNEQ7UUFDNUQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUV2QyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRSxNQUFNLGNBQWMsR0FBRyxXQUFXLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBRTFFLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxRQUFRLEdBQUcsQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBRTdCLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sS0FBSyxHQUFHLGNBQWM7YUFDMUIsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7YUFDbkIsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1osT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLEtBQUssR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsUUFBUSxFQUFFLENBQUM7SUFDckUsQ0FBQzsrR0ExQlcscUJBQXFCO21IQUFyQixxQkFBcUIsY0FEUixNQUFNOzs0RkFDbkIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGVmYXVsdFVybFNlcmlhbGl6ZXIsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuLyoqXHJcbiAqIGBfdGFiYCBxdWVyeSBwYXJhbSfEsW7EsSBhZHJlcyDDp3VidcSfdW5kYSBnaXpsZXllbiBgVXJsU2VyaWFsaXplcmAuIFBhcmFtIFJvdXRlcifEsW5cclxuICogaW50ZXJuYWwgYFVybFRyZWUucXVlcnlQYXJhbXNgJ8SxbmRhIGtvcnVudXIgKHBhcnNlIGltemFzxLF6LCBkZWZhdWx0IGRhdnJhbsSxxZ8pO1xyXG4gKiBzYWRlY2UgYHNlcmlhbGl6ZWAgw6fEsWt0xLFzxLEgw7x6ZXJpbmRlbiDigJQgeWFuaSBgUm91dGVyLnVybGAsIGBOYXZpZ2F0aW9uRW5kLnVybEFmdGVyUmVkaXJlY3RzYFxyXG4gKiB2ZSBicm93c2VyIGFkZHJlc3MgYmFyIOKAlCBgX3RhYmAgc3RyaXAgZWRpbGlyLlxyXG4gKlxyXG4gKiAqKlNvbnXDpyoqOiBgQ3VzdG9tUm91dGVSZXVzZVN0cmF0ZWd5LmdldFJvdXRlS2V5YCBgcm91dGUucXVlcnlQYXJhbXNbJ190YWInXWAnxLFcclxuICogbm9ybWFsIMWfZWtpbGRlIG9rdW1heWEgZGV2YW0gZWRlciAocGFyc2UgcGF0aCdpbmRlIGRlxJ9pxZ9pa2xpayB5b2spLCBhbWEga3VsbGFuxLFjxLFuxLFuXHJcbiAqIGfDtnJkw7zEn8O8IFVSTCB0ZW1pemRpci5cclxuICpcclxuICogKipOYXZTZXJ2aWNlIGV0a2lzaSoqOiBgYWN0aXZlUm91dGUoKWAgYXJ0xLFrIGBfdGFiYCB0YcWfxLFtYXouIEFrdGlmIHRhYiB0ZXNwaXRpXHJcbiAqIGBhY3RpdmVUYWJJZGAgc2lnbmFsJ2kgw7x6ZXJpbmRlbiB5YXDEsWxtYWzEsSAoTmF2U2VydmljZSBidW51IGB3aW5kb3cuaGlzdG9yeS5zdGF0ZWAndGVuXHJcbiAqIG9rdXIg4oCUIGBuYXZpZ2F0ZUJ5VXJsKHVybCwgeyBzdGF0ZTogeyBfdGFiIH0gfSlgIGlsZSBoZXIgbmF2aWdhdGlvbidkYSBzZXQgZWRpbGlyKS5cclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJBd2FyZVVybFNlcmlhbGl6ZXIgZXh0ZW5kcyBEZWZhdWx0VXJsU2VyaWFsaXplciB7XHJcblx0LyoqIGBwYXJzZWAgZGVmYXVsdCBkYXZyYW7EscWfbGEgYsSxcmFrxLFsZMSxIOKAlCBpbnB1dCBVUkwnaW5kZSBgX3RhYmAgdmFyc2Ega29ydW51ciAocmVmcmVzaCBkZWVwIGxpbmspLiAqL1xyXG5cclxuXHRvdmVycmlkZSBzZXJpYWxpemUodHJlZTogVXJsVHJlZSk6IHN0cmluZyB7XHJcblx0XHQvLyBEZWZhdWx0IHNlcmlhbGl6ZSfEsSB0dXQsIHNvbnJhIGBfdGFiYCfEsSBzdHJpbmcgc2V2aXllc2luZGUgKHNwbGl0L2ZpbHRlcikgw6fEsWthci5cclxuXHRcdC8vIGBVUkxTZWFyY2hQYXJhbXNgIHJvdW5kLXRyaXAnaW5kZW4gS0HDh0lOSVlPUlVaOiBkacSfZXIgcXVlcnkgcGFyYW0nbGFyxLFuIEFuZ3VsYXJcclxuXHRcdC8vIGVuY29kaW5nJ2luaSBib3phciAow7Zybi4gYGElMjBiYCDihpIgYGErYmApIHZlIGJ1IHN0cmluZyBgUm91dGVyLnVybGAvYE5hdmlnYXRpb25FbmRgXHJcblx0XHQvLyBvbGFyYWsga3VsbGFuxLFsZMSxxJ/EsSBpw6dpbiBgY2xlYW5OYXZMaW5rYCBrYXLFn8SxbGHFn3TEsXJtYWxhcsSxIGthw6dhYmlsaXJkaS4gRGnEn2VyIHBhcmFtJ2xhcmFcclxuXHRcdC8vIEjEsMOHIGRva3VubXV5b3J1eiDigJQgeWFsbsSxeiBgX3RhYmAgc2VnbWVudCdpbmkgZMO8xZ/DvHLDvHlvcnV6LlxyXG5cdFx0Y29uc3QgdXJsID0gc3VwZXIuc2VyaWFsaXplKHRyZWUpO1xyXG5cdFx0aWYgKCF1cmwuaW5jbHVkZXMoJ190YWI9JykpIHJldHVybiB1cmw7XHJcblxyXG5cdFx0Y29uc3QgZnJhZ21lbnRJZHggPSB1cmwuaW5kZXhPZignIycpO1xyXG5cdFx0Y29uc3QgZnJhZ21lbnQgPSBmcmFnbWVudElkeCA+PSAwID8gdXJsLnNsaWNlKGZyYWdtZW50SWR4KSA6ICcnO1xyXG5cdFx0Y29uc3QgYmVmb3JlRnJhZ21lbnQgPSBmcmFnbWVudElkeCA+PSAwID8gdXJsLnNsaWNlKDAsIGZyYWdtZW50SWR4KSA6IHVybDtcclxuXHJcblx0XHRjb25zdCBxdWVyeUlkeCA9IGJlZm9yZUZyYWdtZW50LmluZGV4T2YoJz8nKTtcclxuXHRcdGlmIChxdWVyeUlkeCA8IDApIHJldHVybiB1cmw7XHJcblxyXG5cdFx0Y29uc3QgcGF0aCA9IGJlZm9yZUZyYWdtZW50LnNsaWNlKDAsIHF1ZXJ5SWR4KTtcclxuXHRcdGNvbnN0IHF1ZXJ5ID0gYmVmb3JlRnJhZ21lbnRcclxuXHRcdFx0LnNsaWNlKHF1ZXJ5SWR4ICsgMSlcclxuXHRcdFx0LnNwbGl0KCcmJylcclxuXHRcdFx0LmZpbHRlcigocCkgPT4gcCAhPT0gJ190YWInICYmICFwLnN0YXJ0c1dpdGgoJ190YWI9JykpXHJcblx0XHRcdC5qb2luKCcmJyk7XHJcblx0XHRyZXR1cm4gcXVlcnkgPyBgJHtwYXRofT8ke3F1ZXJ5fSR7ZnJhZ21lbnR9YCA6IGAke3BhdGh9JHtmcmFnbWVudH1gO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -34,10 +34,10 @@ export class AppComponent {
34
34
  }
35
35
  });
36
36
  }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppComponent, deps: [{ token: i1.LayoutService }, { token: i2.PubSubService }, { token: i3.MfeBridge }], target: i0.ɵɵFactoryTarget.Component }); }
38
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppComponent, isStandalone: true, selector: "aril-root", ngImport: i0, template: ` <app-layout></app-layout> `, isInline: true, dependencies: [{ kind: "component", type: AppLayoutComponent, selector: "app-layout" }] }); }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppComponent, deps: [{ token: i1.LayoutService }, { token: i2.PubSubService }, { token: i3.MfeBridge }], target: i0.ɵɵFactoryTarget.Component }); }
38
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppComponent, isStandalone: true, selector: "aril-root", ngImport: i0, template: ` <app-layout></app-layout> `, isInline: true, dependencies: [{ kind: "component", type: AppLayoutComponent, selector: "app-layout" }] }); }
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppComponent, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppComponent, decorators: [{
41
41
  type: Component,
42
42
  args: [{
43
43
  standalone: true,
@@ -46,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
46
46
  imports: [AppLayoutComponent]
47
47
  }]
48
48
  }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.PubSubService }, { type: i3.MfeBridge }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9ob3N0L3NyYy9hcHAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQWlCLE1BQU0sbUJBQW1CLENBQUM7QUFHdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFVdEMsTUFBTSxPQUFPLFlBQVk7SUFDeEIsWUFDa0IsYUFBNEIsRUFDNUIsYUFBNEIsRUFDNUIsU0FBb0I7UUFGcEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUVyQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN4RCxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsTUFBTSxDQUFDO1lBRTlCLElBQUksUUFBUSxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQzNDLE1BQU0sU0FBUyxHQUFHO3dCQUNqQixHQUFHLE1BQU07d0JBQ1QsUUFBUSxFQUFFLFFBQW9CO3FCQUM5QixDQUFDO29CQUNGLE9BQU8sU0FBUyxDQUFDO2dCQUNsQixDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO2dCQUN0RCxDQUFDO3FCQUFNLElBQUksUUFBUSxLQUFLLFlBQVksRUFBRSxDQUFDO29CQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZELENBQUM7Z0JBRUQsMENBQTBDO2dCQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7WUFDekQsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FoQ1csWUFBWTtrR0FBWixZQUFZLHFFQUhkLDZCQUE2Qiw0REFDN0Isa0JBQWtCOzsyRkFFaEIsWUFBWTtrQkFOeEIsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgTmdab25lLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1mZUJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBBcHBMYXlvdXRDb21wb25lbnQsIExheW91dFNlcnZpY2UgfSBmcm9tICdhcmlsL3RoZW1lL2xheW91dCc7XHJcbmltcG9ydCB7IFB1YlN1YlNlcnZpY2UgfSBmcm9tICdhcmlsL3V0aWwvcHViLXN1Yic7XHJcblxyXG5pbXBvcnQgeyBhcHBOYW1lIH0gZnJvbSAnLi9ib290c3RyYXAnO1xyXG5cclxudHlwZSBNZW51TW9kZSA9ICdzdGF0aWMnIHwgJ2V4cGFuZGFibGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FyaWwtcm9vdCcsXHJcblx0dGVtcGxhdGU6IGAgPGFwcC1sYXlvdXQ+PC9hcHAtbGF5b3V0PiBgLFxyXG5cdGltcG9ydHM6IFtBcHBMYXlvdXRDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQge1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBwdWJTdWJTZXJ2aWNlOiBQdWJTdWJTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBicmlkZ2VTdmM6IE1mZUJyaWRnZVxyXG5cdCkge1xyXG5cdFx0dGhpcy5icmlkZ2VTdmMubWlycm9yVG9XaW5kb3coKTtcclxuXHRcdHRoaXMuYnJpZGdlU3ZjLmFjdGl2ZUhvc3Quc2V0KGFwcE5hbWUpO1xyXG5cdFx0dGhpcy5icmlkZ2VTdmMuaG9zdE5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xyXG5cclxuXHRcdHRoaXMucHViU3ViU2VydmljZS5zdWJzY3JpYmUoJ21lbnVNb2RlQ2hhbmdlZCcsIChkYXRhKSA9PiB7XHJcblx0XHRcdGNvbnN0IG1lbnVNb2RlID0gZGF0YT8uY3VzdG9tO1xyXG5cclxuXHRcdFx0aWYgKG1lbnVNb2RlICYmIChtZW51TW9kZSA9PT0gJ3N0YXRpYycgfHwgbWVudU1vZGUgPT09ICdleHBhbmRhYmxlJykpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2UuY29uZmlnLnVwZGF0ZSgoY29uZmlnKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCBuZXdDb25maWcgPSB7XHJcblx0XHRcdFx0XHRcdC4uLmNvbmZpZyxcclxuXHRcdFx0XHRcdFx0bWVudU1vZGU6IG1lbnVNb2RlIGFzIE1lbnVNb2RlXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0cmV0dXJuIG5ld0NvbmZpZztcclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0aWYgKG1lbnVNb2RlID09PSAnc3RhdGljJykge1xyXG5cdFx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY1NpZGViYXJWaXNpYmxlID0gdHJ1ZTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKG1lbnVNb2RlID09PSAnZXhwYW5kYWJsZScpIHtcclxuXHRcdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNTaWRlYmFyVmlzaWJsZSA9IGZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Ly8gQWx3YXlzIGNsb3NlIG1vYmlsZSBtZW51IG9uIG1vZGUgY2hhbmdlXHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUgPSBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9ob3N0L3NyYy9hcHAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQWlCLE1BQU0sbUJBQW1CLENBQUM7QUFHdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFVdEMsTUFBTSxPQUFPLFlBQVk7SUFDeEIsWUFDa0IsYUFBNEIsRUFDNUIsYUFBNEIsRUFDNUIsU0FBb0I7UUFGcEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUVyQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN4RCxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsTUFBTSxDQUFDO1lBRTlCLElBQUksUUFBUSxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQzNDLE1BQU0sU0FBUyxHQUFHO3dCQUNqQixHQUFHLE1BQU07d0JBQ1QsUUFBUSxFQUFFLFFBQW9CO3FCQUM5QixDQUFDO29CQUNGLE9BQU8sU0FBUyxDQUFDO2dCQUNsQixDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO2dCQUN0RCxDQUFDO3FCQUFNLElBQUksUUFBUSxLQUFLLFlBQVksRUFBRSxDQUFDO29CQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZELENBQUM7Z0JBRUQsMENBQTBDO2dCQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7WUFDekQsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzsrR0FoQ1csWUFBWTttR0FBWixZQUFZLHFFQUhkLDZCQUE2Qiw0REFDN0Isa0JBQWtCOzs0RkFFaEIsWUFBWTtrQkFOeEIsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgTmdab25lLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1mZUJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBBcHBMYXlvdXRDb21wb25lbnQsIExheW91dFNlcnZpY2UgfSBmcm9tICdhcmlsL3RoZW1lL2xheW91dCc7XHJcbmltcG9ydCB7IFB1YlN1YlNlcnZpY2UgfSBmcm9tICdhcmlsL3V0aWwvcHViLXN1Yic7XHJcblxyXG5pbXBvcnQgeyBhcHBOYW1lIH0gZnJvbSAnLi9ib290c3RyYXAnO1xyXG5cclxudHlwZSBNZW51TW9kZSA9ICdzdGF0aWMnIHwgJ2V4cGFuZGFibGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FyaWwtcm9vdCcsXHJcblx0dGVtcGxhdGU6IGAgPGFwcC1sYXlvdXQ+PC9hcHAtbGF5b3V0PiBgLFxyXG5cdGltcG9ydHM6IFtBcHBMYXlvdXRDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQge1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBwdWJTdWJTZXJ2aWNlOiBQdWJTdWJTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBicmlkZ2VTdmM6IE1mZUJyaWRnZVxyXG5cdCkge1xyXG5cdFx0dGhpcy5icmlkZ2VTdmMubWlycm9yVG9XaW5kb3coKTtcclxuXHRcdHRoaXMuYnJpZGdlU3ZjLmFjdGl2ZUhvc3Quc2V0KGFwcE5hbWUpO1xyXG5cdFx0dGhpcy5icmlkZ2VTdmMuaG9zdE5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xyXG5cclxuXHRcdHRoaXMucHViU3ViU2VydmljZS5zdWJzY3JpYmUoJ21lbnVNb2RlQ2hhbmdlZCcsIChkYXRhKSA9PiB7XHJcblx0XHRcdGNvbnN0IG1lbnVNb2RlID0gZGF0YT8uY3VzdG9tO1xyXG5cclxuXHRcdFx0aWYgKG1lbnVNb2RlICYmIChtZW51TW9kZSA9PT0gJ3N0YXRpYycgfHwgbWVudU1vZGUgPT09ICdleHBhbmRhYmxlJykpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2UuY29uZmlnLnVwZGF0ZSgoY29uZmlnKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCBuZXdDb25maWcgPSB7XHJcblx0XHRcdFx0XHRcdC4uLmNvbmZpZyxcclxuXHRcdFx0XHRcdFx0bWVudU1vZGU6IG1lbnVNb2RlIGFzIE1lbnVNb2RlXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0cmV0dXJuIG5ld0NvbmZpZztcclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0aWYgKG1lbnVNb2RlID09PSAnc3RhdGljJykge1xyXG5cdFx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY1NpZGViYXJWaXNpYmxlID0gdHJ1ZTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKG1lbnVNb2RlID09PSAnZXhwYW5kYWJsZScpIHtcclxuXHRcdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNTaWRlYmFyVmlzaWJsZSA9IGZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Ly8gQWx3YXlzIGNsb3NlIG1vYmlsZSBtZW51IG9uIG1vZGUgY2hhbmdlXHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUgPSBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiJdfQ==