@dsivd/prestations-ng 17.0.0-beta.2 → 17.0.0-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/ESLINT_MIGRATION_GUIDE.md +2 -1
  3. package/UPGRADING_V17.md +385 -38
  4. package/dsivd-prestations-ng-17.0.0-beta.20.tgz +0 -0
  5. package/esm2022/abstract-page-component.mjs +10 -6
  6. package/esm2022/directives/currency-formatter.directive.mjs +4 -4
  7. package/esm2022/directives/formatter.module.mjs +5 -5
  8. package/esm2022/directives/iban-formatter.directive.mjs +4 -4
  9. package/esm2022/directives/ide-formatter.directive.mjs +4 -4
  10. package/esm2022/directives/ndc-formatter.directive.mjs +4 -4
  11. package/esm2022/foehn-address/foehn-address.module.mjs +5 -5
  12. package/esm2022/foehn-address/foehn-display-address.component.mjs +4 -4
  13. package/esm2022/foehn-address/foehn-input-address.component.mjs +9 -5
  14. package/esm2022/foehn-address/foehn-input-foreign-locality.component.mjs +4 -4
  15. package/esm2022/foehn-address/foehn-input-foreign-street.component.mjs +6 -7
  16. package/esm2022/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +5 -5
  17. package/esm2022/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +6 -6
  18. package/esm2022/foehn-agenda/foehn-agenda.component.mjs +4 -4
  19. package/esm2022/foehn-agenda/foehn-agenda.module.mjs +5 -5
  20. package/esm2022/foehn-autocomplete/foehn-autocomplete.component.mjs +4 -4
  21. package/esm2022/foehn-autocomplete/foehn-autocomplete.module.mjs +5 -5
  22. package/esm2022/foehn-boolean/foehn-boolean-checkbox.component.mjs +4 -4
  23. package/esm2022/foehn-boolean/foehn-boolean-radio.component.mjs +4 -4
  24. package/esm2022/foehn-boolean/foehn-boolean.module.mjs +5 -5
  25. package/esm2022/foehn-breadcrumb/breadcrumb-event.service.mjs +24 -17
  26. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.component.mjs +4 -4
  27. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.module.mjs +5 -5
  28. package/esm2022/foehn-checkables/foehn-checkable-group.component.mjs +36 -34
  29. package/esm2022/foehn-checkables/foehn-checkables.module.mjs +5 -5
  30. package/esm2022/foehn-checkables/foehn-checkbox.component.mjs +4 -4
  31. package/esm2022/foehn-checkables/foehn-radio.component.mjs +4 -4
  32. package/esm2022/foehn-checkables/foehn-select.component.mjs +4 -4
  33. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.component.mjs +5 -5
  34. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.module.mjs +5 -5
  35. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.service.mjs +4 -4
  36. package/esm2022/foehn-date-picker/foehn-date-picker.component.mjs +5 -5
  37. package/esm2022/foehn-date-picker/foehn-date-picker.module.mjs +5 -5
  38. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.component.mjs +4 -4
  39. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.module.mjs +5 -5
  40. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.mjs +4 -4
  41. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.module.mjs +5 -5
  42. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.component.mjs +4 -4
  43. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.module.mjs +5 -5
  44. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.component.mjs +5 -5
  45. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.module.mjs +5 -5
  46. package/esm2022/foehn-feedback-notification/foehn-feedback-notification.component.mjs +90 -0
  47. package/esm2022/foehn-feedback-notification/foehn-feedback-notification.module.mjs +32 -0
  48. package/esm2022/foehn-footer/foehn-footer.component.mjs +5 -5
  49. package/esm2022/foehn-footer/foehn-footer.module.mjs +5 -5
  50. package/esm2022/foehn-form/foehn-form.component.mjs +4 -4
  51. package/esm2022/foehn-form/foehn-form.module.mjs +5 -5
  52. package/esm2022/foehn-form/register-ng-model.service.mjs +4 -4
  53. package/esm2022/foehn-growl/foehn-growl.component.mjs +4 -4
  54. package/esm2022/foehn-growl/foehn-growl.module.mjs +5 -5
  55. package/esm2022/foehn-growl/growl-broker.service.mjs +4 -4
  56. package/esm2022/foehn-header/foehn-header.component.mjs +4 -4
  57. package/esm2022/foehn-header/foehn-header.module.mjs +5 -5
  58. package/esm2022/foehn-header/foehn-skip-link.component.mjs +4 -4
  59. package/esm2022/foehn-help-modal/foehn-help-modal.component.mjs +5 -5
  60. package/esm2022/foehn-help-modal/foehn-help-modal.module.mjs +5 -5
  61. package/esm2022/foehn-icons/abstract-icon-component.mjs +4 -4
  62. package/esm2022/foehn-icons/foehn-icon-calendar.component.mjs +4 -4
  63. package/esm2022/foehn-icons/foehn-icon-check-square-o.component.mjs +4 -4
  64. package/esm2022/foehn-icons/foehn-icon-check.component.mjs +4 -4
  65. package/esm2022/foehn-icons/foehn-icon-chevron-down.component.mjs +4 -4
  66. package/esm2022/foehn-icons/foehn-icon-chevron-left.component.mjs +4 -4
  67. package/esm2022/foehn-icons/foehn-icon-chevron-right.component.mjs +4 -4
  68. package/esm2022/foehn-icons/foehn-icon-chevron-up.component.mjs +4 -4
  69. package/esm2022/foehn-icons/foehn-icon-clock.component.mjs +4 -4
  70. package/esm2022/foehn-icons/foehn-icon-comment-dots.component.mjs +4 -4
  71. package/esm2022/foehn-icons/foehn-icon-edit.component.mjs +4 -4
  72. package/esm2022/foehn-icons/foehn-icon-external-link-alt.component.mjs +4 -4
  73. package/esm2022/foehn-icons/foehn-icon-file-pdf.component.mjs +4 -4
  74. package/esm2022/foehn-icons/foehn-icon-info-circle.component.mjs +4 -4
  75. package/esm2022/foehn-icons/foehn-icon-lock.component.mjs +4 -4
  76. package/esm2022/foehn-icons/foehn-icon-map-marker.component.mjs +4 -4
  77. package/esm2022/foehn-icons/foehn-icon-minus-circle.component.mjs +4 -4
  78. package/esm2022/foehn-icons/foehn-icon-pencil.component.mjs +4 -4
  79. package/esm2022/foehn-icons/foehn-icon-plus-circle.component.mjs +4 -4
  80. package/esm2022/foehn-icons/foehn-icon-plus-square.component.mjs +4 -4
  81. package/esm2022/foehn-icons/foehn-icon-search.component.mjs +4 -4
  82. package/esm2022/foehn-icons/foehn-icon-times.component.mjs +4 -4
  83. package/esm2022/foehn-icons/foehn-icon-trash-alt.component.mjs +4 -4
  84. package/esm2022/foehn-icons/foehn-icon-unlock-alt.component.mjs +4 -4
  85. package/esm2022/foehn-icons/foehn-icon-user.component.mjs +4 -4
  86. package/esm2022/foehn-icons/foehn-icons.module.mjs +5 -5
  87. package/esm2022/foehn-input/foehn-input-email.component.mjs +4 -4
  88. package/esm2022/foehn-input/foehn-input-hidden.component.mjs +4 -4
  89. package/esm2022/foehn-input/foehn-input-number.component.mjs +4 -4
  90. package/esm2022/foehn-input/foehn-input-password.component.mjs +4 -4
  91. package/esm2022/foehn-input/foehn-input-phone.component.mjs +4 -4
  92. package/esm2022/foehn-input/foehn-input-prefixed-text.component.mjs +4 -4
  93. package/esm2022/foehn-input/foehn-input-string.component.mjs +4 -4
  94. package/esm2022/foehn-input/foehn-input-text.component.mjs +4 -4
  95. package/esm2022/foehn-input/foehn-input-textarea.component.mjs +4 -4
  96. package/esm2022/foehn-input/foehn-input.component.mjs +4 -4
  97. package/esm2022/foehn-input/foehn-input.module.mjs +5 -5
  98. package/esm2022/foehn-input-date/foehn-input-date.component.mjs +4 -4
  99. package/esm2022/foehn-input-date-time/foehn-input-date-time.component.mjs +4 -4
  100. package/esm2022/foehn-input-time/foehn-input-time.component.mjs +6 -6
  101. package/esm2022/foehn-list/foehn-list.component.mjs +5 -5
  102. package/esm2022/foehn-list/foehn-list.module.mjs +5 -5
  103. package/esm2022/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +4 -4
  104. package/esm2022/foehn-menu-prestation/abstract-menu-page.component.mjs +4 -4
  105. package/esm2022/foehn-menu-prestation/abstract-page-from-menu.component.mjs +4 -4
  106. package/esm2022/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +6 -5
  107. package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +6 -6
  108. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +4 -4
  109. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +4 -4
  110. package/esm2022/foehn-menu-prestation/foehn-menu-prestation.module.mjs +5 -5
  111. package/esm2022/foehn-misc/foehn-abbr.component.mjs +4 -4
  112. package/esm2022/foehn-misc/foehn-misc.module.mjs +5 -5
  113. package/esm2022/foehn-modal/foehn-modal.component.mjs +5 -5
  114. package/esm2022/foehn-modal/foehn-modal.module.mjs +5 -5
  115. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +6 -6
  116. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +5 -5
  117. package/esm2022/foehn-nav13/foehn-input-nav13.component.mjs +4 -4
  118. package/esm2022/foehn-nav13/foehn-input-nav13.module.mjs +5 -5
  119. package/esm2022/foehn-navigation/abstract-foehn-navigation.component.mjs +4 -4
  120. package/esm2022/foehn-navigation/foehn-navigation/foehn-navigation.component.mjs +5 -5
  121. package/esm2022/foehn-navigation/foehn-navigation.module.mjs +5 -5
  122. package/esm2022/foehn-navigation/foehn-navigation.service.mjs +4 -4
  123. package/esm2022/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.mjs +5 -5
  124. package/esm2022/foehn-notfound/foehn-notfound.component.mjs +4 -4
  125. package/esm2022/foehn-notfound/foehn-notfound.module.mjs +5 -5
  126. package/esm2022/foehn-page/foehn-page-counter.component.mjs +4 -4
  127. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration-interceptor.mjs +4 -4
  128. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration.service.mjs +4 -4
  129. package/esm2022/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs +4 -4
  130. package/esm2022/foehn-page/foehn-page-expiration-timer/interval.helper.mjs +2 -2
  131. package/esm2022/foehn-page/foehn-page-modal.component.mjs +4 -4
  132. package/esm2022/foehn-page/foehn-page-modal.service.mjs +4 -4
  133. package/esm2022/foehn-page/foehn-page.component.mjs +5 -5
  134. package/esm2022/foehn-page/foehn-page.module.mjs +5 -5
  135. package/esm2022/foehn-page/foehn-page.service.mjs +4 -4
  136. package/esm2022/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.mjs +4 -4
  137. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.mjs +4 -4
  138. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.service.mjs +4 -4
  139. package/esm2022/foehn-recap-section/foehn-recap-section.component.mjs +4 -4
  140. package/esm2022/foehn-recap-section/foehn-recap-section.module.mjs +5 -5
  141. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs +4 -4
  142. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs +5 -5
  143. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +4 -4
  144. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +5 -5
  145. package/esm2022/foehn-table/foehn-table.component.mjs +9 -5
  146. package/esm2022/foehn-table/foehn-table.module.mjs +5 -5
  147. package/esm2022/foehn-upload/abstract-foehn-uploader.component.mjs +4 -4
  148. package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +6 -19
  149. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +4 -4
  150. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +5 -5
  151. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +4 -4
  152. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +5 -5
  153. package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +6 -19
  154. package/esm2022/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +8 -6
  155. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +20 -47
  156. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +5 -5
  157. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +4 -4
  158. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +5 -5
  159. package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +4 -4
  160. package/esm2022/foehn-upload/page-upload-limit.service.mjs +4 -4
  161. package/esm2022/foehn-upload/uploader.helper.mjs +5 -13
  162. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.component.mjs +4 -4
  163. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.module.mjs +5 -5
  164. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +4 -4
  165. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +5 -5
  166. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.component.mjs +4 -4
  167. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.module.mjs +5 -5
  168. package/esm2022/gesdem/gesdem-error-handler.service.mjs +16 -13
  169. package/esm2022/gesdem/gesdem-event.service.mjs +4 -4
  170. package/esm2022/gesdem/gesdem-handler.service.mjs +29 -16
  171. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +4 -4
  172. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +31 -12
  173. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.module.mjs +5 -5
  174. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.service.mjs +4 -4
  175. package/esm2022/gesdem-confirmation/gesdem-confirmation.component.mjs +20 -15
  176. package/esm2022/gesdem-confirmation/gesdem-confirmation.module.mjs +12 -8
  177. package/esm2022/gesdem-error/gesdem-error.component.mjs +8 -6
  178. package/esm2022/gesdem-error/gesdem-error.module.mjs +5 -5
  179. package/esm2022/pipes/currency.pipe.mjs +4 -4
  180. package/esm2022/pipes/date.pipe.mjs +4 -4
  181. package/esm2022/pipes/formatIde.pipe.mjs +4 -4
  182. package/esm2022/pipes/pipes.module.mjs +5 -5
  183. package/esm2022/prestations-ng-core.module.mjs +5 -5
  184. package/esm2022/public_api.mjs +4 -1
  185. package/esm2022/sdk-appinfo/application-info.mjs +7 -1
  186. package/esm2022/sdk-appinfo/application-info.service.mjs +24 -6
  187. package/esm2022/sdk-currency/currency.helper.mjs +4 -4
  188. package/esm2022/sdk-date/date.helper.mjs +4 -4
  189. package/esm2022/sdk-dictionary/default-dictionary.mjs +19 -5
  190. package/esm2022/sdk-dictionary/sdk-dictionary.module.mjs +5 -5
  191. package/esm2022/sdk-dictionary/sdk-dictionary.pipe.mjs +4 -4
  192. package/esm2022/sdk-dictionary/sdk-dictionary.service.mjs +4 -4
  193. package/esm2022/sdk-drafts/drafts-container.component.mjs +5 -5
  194. package/esm2022/sdk-drafts/drafts.module.mjs +5 -5
  195. package/esm2022/sdk-drafts/drafts.service.mjs +4 -4
  196. package/esm2022/sdk-epayment/sdk-epayment.component.mjs +4 -4
  197. package/esm2022/sdk-epayment/sdk-epayment.module.mjs +5 -5
  198. package/esm2022/sdk-epayment/sdk-epayment.service.mjs +4 -4
  199. package/esm2022/sdk-events-logger/sdk-events-logger.service.mjs +4 -4
  200. package/esm2022/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs +4 -4
  201. package/esm2022/sdk-recaptcha/recaptcha.service.mjs +8 -16
  202. package/esm2022/sdk-recaptcha/sdk-recaptcha.component.mjs +4 -4
  203. package/esm2022/sdk-recaptcha/sdk-recaptcha.module.mjs +5 -5
  204. package/esm2022/sdk-redirect/iam-expired-interceptor.service.mjs +12 -11
  205. package/esm2022/sdk-redirect/redirect.component.mjs +32 -17
  206. package/esm2022/sdk-redirect/sdk-redirect.module.mjs +5 -5
  207. package/esm2022/sdk-session-info/session-info-with-application.service.mjs +4 -4
  208. package/esm2022/sdk-session-info/session-info.service.mjs +4 -4
  209. package/esm2022/sdk-statistics/sdk-statistics.service.mjs +4 -4
  210. package/esm2022/sdk-support-alert/support-alert-container.component.mjs +5 -5
  211. package/esm2022/sdk-support-alert/support-alert.component.mjs +12 -14
  212. package/esm2022/sdk-support-alert/support-alert.module.mjs +5 -5
  213. package/esm2022/sdk-support-alert/support-alert.service.mjs +4 -4
  214. package/esm2022/supported-browser.mjs +2 -2
  215. package/esm2022/validation/validation-handler.service.mjs +4 -4
  216. package/fesm2022/dsivd-prestations-ng.mjs +1304 -1153
  217. package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
  218. package/foehn-address/foehn-input-address.component.d.ts +2 -1
  219. package/foehn-breadcrumb/breadcrumb-event.service.d.ts +3 -1
  220. package/foehn-checkables/foehn-checkable-group.component.d.ts +2 -1
  221. package/foehn-feedback-notification/foehn-feedback-notification.component.d.ts +30 -0
  222. package/foehn-feedback-notification/foehn-feedback-notification.module.d.ts +11 -0
  223. package/foehn-table/foehn-table.component.d.ts +3 -1
  224. package/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.d.ts +1 -4
  225. package/foehn-upload/foehn-multi-upload/multi-upload.service.d.ts +1 -4
  226. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +2 -4
  227. package/gesdem/gesdem-error-handler.service.d.ts +1 -0
  228. package/gesdem/gesdem-handler.service.d.ts +2 -2
  229. package/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.d.ts +3 -1
  230. package/gesdem-confirmation/gesdem-confirmation.component.d.ts +2 -0
  231. package/gesdem-confirmation/gesdem-confirmation.module.d.ts +2 -1
  232. package/gesdem-error/gesdem-error.component.d.ts +1 -0
  233. package/package.json +1 -1
  234. package/public_api.d.ts +2 -0
  235. package/schematics/utility/foehn2-bootstrap5-migration.js +19 -2
  236. package/sdk-appinfo/application-info.d.ts +4 -2
  237. package/sdk-recaptcha/recaptcha.service.d.ts +1 -3
  238. package/sdk-redirect/redirect.component.d.ts +4 -2
  239. package/dsivd-prestations-ng-17.0.0-beta.2.tgz +0 -0
@@ -217,8 +217,8 @@ export class FoehnMultiUploadComponent extends AbstractFoehnUploaderComponent {
217
217
  // Then we ensure we take only one file from current selection
218
218
  return files.slice(0, 1);
219
219
  }
220
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadComponent, deps: [{ token: i1.MultiUploadService }, { token: i2.PendingUploadService }, { token: i3.ApplicationInfoService }, { token: i4.FoehnConfirmModalService }, { token: i5.SdkDictionaryService }, { token: i6.GrowlBrokerService }, { token: i7.PageUploadLimitService }], target: i0.ɵɵFactoryTarget.Component }); }
221
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: FoehnMultiUploadComponent, selector: "foehn-multi-upload", inputs: { url: "url", reference: "reference" }, providers: [
220
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: FoehnMultiUploadComponent, deps: [{ token: i1.MultiUploadService }, { token: i2.PendingUploadService }, { token: i3.ApplicationInfoService }, { token: i4.FoehnConfirmModalService }, { token: i5.SdkDictionaryService }, { token: i6.GrowlBrokerService }, { token: i7.PageUploadLimitService }], target: i0.ɵɵFactoryTarget.Component }); }
221
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: FoehnMultiUploadComponent, selector: "foehn-multi-upload", inputs: { url: "url", reference: "reference" }, providers: [
222
222
  {
223
223
  provide: FoehnInputComponent,
224
224
  useExisting: forwardRef(() => FoehnMultiUploadComponent),
@@ -228,7 +228,7 @@ export class FoehnMultiUploadComponent extends AbstractFoehnUploaderComponent {
228
228
  { provide: UploadProgressService, useClass: UploadProgressService }
229
229
  ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group container-box\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [class.drop-zone-highlight]=\"showDropZone\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n (drop)=\"onDrop($event)\"\n (dragenter)=\"onDragenter($event)\"\n (dragleave)=\"onDragleave($event)\"\n (dragover)=\"onDragover($event)\"\n #fallBackTrigger\n>\n <label\n class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts\n [component]=\"this\"\n [shouldErrorsBeLive]=\"hasLiveUploadErrors()\"\n ></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <!-- PRESTAKIT-309: Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"reference\">\n <div\n *ngFor=\"let document of model; trackBy: trackByDocument\"\n class=\"file file-uploaded\"\n >\n <!-- prettier-ignore -->\n <a [href]=\"multiUploadService.getDownloadUrl(url, document)\">{{ document.filename }}</a>\n <span class=\"ms-1 me-1\">\n ({{ toMegaOctets(document.fileSize) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n type=\"button\"\n class=\"btn btn-link icon-button delete-uploaded\"\n (click)=\"removeFile(document)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: document.filename }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary uploaded-global-info\"\n *ngIf=\"showGlobalInfos(model)\"\n [innerHTML]=\"getGlobalInfos(model)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"!reference\">\n <div\n *ngFor=\"let pending of pendingFiles; trackBy: trackByPending\"\n class=\"file file-pending\"\n >\n <span>{{ pending.name }}</span>\n <span class=\"ms-1 me-1\">\n ({{ toMegaOctets(pending.size) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n type=\"button\"\n class=\"btn btn-link icon-button delete-pending\"\n (click)=\"removeFile(pending)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: pending.name }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary pending-global-info\"\n *ngIf=\"showGlobalInfos(pendingFiles)\"\n [innerHTML]=\"getGlobalInfos(pendingFiles)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"canAddMoreFiles()\">\n <input\n class=\"form-control actual-input\"\n type=\"file\"\n [name]=\"name || label\"\n [multiple]=\"multiple\"\n [attr.accept]=\"\n overrideAcceptedExtensions\n ? overrideAcceptedExtensions\n : uploaderHelper.accept\n ? uploaderHelper.accept\n : null\n \"\n (change)=\"onFileChange($event)\"\n #inputFile\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'visually-hidden': !showUploadButton }\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n (click)=\"inputFile.click()\"\n #entryComponent\n >\n {{ multiple ? chooseButtonLabelMultiple : chooseButtonLabel }}\n </button>\n\n <div\n *ngIf=\"dragAndDrop && !disabled\"\n aria-hidden=\"true\"\n class=\"dropfile\"\n [class.dropfile-border-transparent]=\"showDropZone\"\n (click)=\"inputFile.click()\"\n >\n {{ multiple ? dropZoneLabelMultiple : dropZoneLabel }}\n </div>\n </ng-container>\n\n <foehn-upload-progress-bar\n *ngIf=\"reference\"\n [progressBarTriggerHtmlElement]=\"\n inputElement?.nativeElement || fallBackTrigger\n \"\n ></foehn-upload-progress-bar>\n</div>\n", styles: [".dropfile{width:300px;border:3px dashed #bbb;text-align:center;margin-top:10px;cursor:pointer;padding:15px 3px}.dropfile-border-transparent{border-color:#fff}.actual-input{display:none}.file-list{margin-top:20px}.icon-button{border:0}.icon-button:hover{cursor:pointer}:host ::ng-deep .svg-inline--fa{color:#000!important}.drop-zone-highlight{outline:3px dashed #bbb}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}\n"], dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "component", type: i10.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "directive", type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i12.FoehnUploadProgressBarComponent, selector: "foehn-upload-progress-bar", inputs: ["progressBarTriggerHtmlElement"] }, { kind: "pipe", type: i13.SdkDictionaryPipe, name: "fromDictionary" }] }); }
230
230
  }
231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadComponent, decorators: [{
231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: FoehnMultiUploadComponent, decorators: [{
232
232
  type: Component,
233
233
  args: [{ selector: 'foehn-multi-upload', providers: [
234
234
  {
@@ -244,4 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
244
244
  }], reference: [{
245
245
  type: Input
246
246
  }] } });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGktdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC9mb2Vobi1tdWx0aS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsS0FBSyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQ0gsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFlBQVksRUFDZixNQUFNLGdCQUFnQixDQUFDO0FBSXhCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBSTlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFrQjVELE1BQU0sT0FBTyx5QkFDVCxTQUFRLDhCQUFtRDtJQWMzRCxZQUNJLGtCQUFzQyxFQUN0QyxvQkFBMEMsRUFDaEMsc0JBQThDLEVBQzlDLG1CQUE2QyxFQUM3QyxpQkFBdUMsRUFDdkMsWUFBZ0MsRUFDaEMsc0JBQThDO1FBRXhELEtBQUssQ0FDRCxzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixZQUFZLENBQ2Ys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LEVBQUUsa0JBQWtCLEVBQUU7WUFDN0QsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO1NBQ3RFLGlEQ3BDTCxtaE1BK0tBOzsyRkR6SWEseUJBQXlCO2tCQWRyQyxTQUFTOytCQUNJLG9CQUFvQixhQUduQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFO3dCQUM3RCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7cUJBQ3RFOytTQU9ELEdBQUc7c0JBREYsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRU1QVFksIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBjYXRjaEVycm9yLFxuICAgIGZpbHRlcixcbiAgICBtZXJnZU1hcCxcbiAgICB0YXAsXG4gICAgdGhyb3R0bGVUaW1lXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRm9laG5Db25maXJtTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZm9laG4tY29uZmlybS1tb2RhbC9mb2Vobi1jb25maXJtLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3Jvd2xCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtYnJva2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRXJyb3IgfSBmcm9tICcuLi8uLi9mb3JtLWVycm9yJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFic3RyYWN0Rm9laG5VcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2Fic3RyYWN0LWZvZWhuLXVwbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb2N1bWVudFJlZmVyZW5jZSB9IGZyb20gJy4uL2RvY3VtZW50LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBVcGxvYWRQcm9ncmVzc1NlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi11cGxvYWQtcHJvZ3Jlc3MtYmFyL3VwbG9hZC1wcm9ncmVzcy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VVcGxvYWRMaW1pdFNlcnZpY2UgfSBmcm9tICcuLi9wYWdlLXVwbG9hZC1saW1pdC5zZXJ2aWNlJztcbmltcG9ydCB7IE11bHRpVXBsb2FkU2VydmljZSB9IGZyb20gJy4vbXVsdGktdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9jdW1lbnRFcnJvciwgRG9jdW1lbnRzV2l0aEVycm9ycyB9IGZyb20gJy4vbXVsdGktdXBsb2FkLnR5cGUnO1xuaW1wb3J0IHsgUGVuZGluZ1VwbG9hZFNlcnZpY2UgfSBmcm9tICcuL3BlbmRpbmctdXBsb2FkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLW11bHRpLXVwbG9hZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLW11bHRpLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uL2ZvZWhuLXVwbG9hZC5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2Vobk11bHRpVXBsb2FkQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTXVsdGlVcGxvYWRTZXJ2aWNlLCB1c2VDbGFzczogTXVsdGlVcGxvYWRTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogVXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlLCB1c2VDbGFzczogVXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuTXVsdGlVcGxvYWRDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0Rm9laG5VcGxvYWRlckNvbXBvbmVudDxEb2N1bWVudFJlZmVyZW5jZVtdPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgICBASW5wdXQoKVxuICAgIHVybCA9ICdhcGkvZG9jdW1lbnQnO1xuXG4gICAgQElucHV0KClcbiAgICByZWZlcmVuY2U6IHN0cmluZztcblxuICAgIG11bHRpVXBsb2FkU2VydmljZTogTXVsdGlVcGxvYWRTZXJ2aWNlO1xuICAgIHBlbmRpbmdVcGxvYWRTZXJ2aWNlOiBQZW5kaW5nVXBsb2FkU2VydmljZTtcblxuICAgIHByaXZhdGUgcGVuZGluZ1VwbG9hZGVkRXJyb3JzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgbXVsdGlVcGxvYWRTZXJ2aWNlOiBNdWx0aVVwbG9hZFNlcnZpY2UsXG4gICAgICAgIHBlbmRpbmdVcGxvYWRTZXJ2aWNlOiBQZW5kaW5nVXBsb2FkU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBjb25maXJtTW9kYWxTZXJ2aWNlOiBGb2VobkNvbmZpcm1Nb2RhbFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBncm93bFNlcnZpY2U6IEdyb3dsQnJva2VyU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHBhZ2VVcGxvYWRMaW1pdFNlcnZpY2U6IFBhZ2VVcGxvYWRMaW1pdFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlLFxuICAgICAgICAgICAgY29uZmlybU1vZGFsU2VydmljZSxcbiAgICAgICAgICAgIGRpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICAgICAgZ3Jvd2xTZXJ2aWNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UgPSBwZW5kaW5nVXBsb2FkU2VydmljZTtcbiAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2UgPSBtdWx0aVVwbG9hZFNlcnZpY2U7XG4gICAgfVxuXG4gICAgZ2V0IHBlbmRpbmdGaWxlcygpOiBGaWxlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nVXBsb2FkU2VydmljZS5nZXRQZW5kaW5nRmlsZXModGhpcy5uYW1lKTtcbiAgICB9XG5cbiAgICBnZXQgYWRkZWRGaWxlcygpOiBGaWxlW10gfCBEb2N1bWVudFJlZmVyZW5jZVtdIHtcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UuaGFzUGVuZGluZ0ZpbGVzKHRoaXMubmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdGaWxlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0aGlzLm1vZGVsID8gdGhpcy5tb2RlbCA6IFtdO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMucGFnZVVwbG9hZExpbWl0U2VydmljZS5yZWdpc3RlclVwbG9hZGVyKHRoaXMpO1xuXG4gICAgICAgIHRoaXMucGVuZGluZ1VwbG9hZGVkRXJyb3JzU3Vic2NyaXB0aW9uID1cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UucGVuZGluZ1VwbG9hZGVkRXJyb3JzLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAocmVzcG9uc2U6IERvY3VtZW50c1dpdGhFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGVuZGluZ1VwbG9hZGVkRXJyb3JzRnJvbVNlcnZlckJ5Rm9ybUtleShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgLy8gQWRkIGZpbGVzIGxvZ2ljXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZXNTdWJzY3JpcHRpb24gPSB0aGlzLnVwbG9hZEZpbGVzU3ViamVjdFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICBmaWxlcyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgISFmaWxlcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuaXNNYXhTZWxlY3Rpb25SZWFjaGVkKGZpbGVzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlVXBsb2FkTGltaXRTZXJ2aWNlLmNhblVwbG9hZE1vcmVGaWxlcyhmaWxlcylcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIC8vIE9ubHkgb25lIGNhbGwgZXZlcnkgMzAwbXMgdG8gc3RvcCBjb25jdXJyZW50IGFjY2Vzc1xuICAgICAgICAgICAgICAgIHRocm90dGxlVGltZSgzMDApLFxuICAgICAgICAgICAgICAgIC8vIE9ubHkgb25lIGNvbmN1cnJlbnQgY2FsbCBhdCB0aGUgdGltZVxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKFxuICAgICAgICAgICAgICAgICAgICBmaWxlcyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2UudXBsb2FkRG9jdW1lbnRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcnM6IEZvcm1FcnJvcltdID0gW107XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhdHVzIH06IGFueSA9IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVySGVscGVyLmFkZEN1c3RvbUVycm9yT3JEZWZhdWx0KFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7c3RhdHVzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hFcnJvcnMoW2Vycm9ycywgdHJ1ZV0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgZG9jdW1lbnRzLCBlcnJvcnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVJlc3VsdEZyb21TZXJ2ZXIoZG9jdW1lbnRzLCBlcnJvcnMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRGVsZXRlIGRvY3VtZW50IGxvZ2ljXG4gICAgICAgIHRoaXMuZGVsZXRlRG9jdW1lbnRTdWJzY3JpcHRpb24gPSB0aGlzLmRlbGV0ZURvY3VtZW50U3ViamVjdFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKGRvY3VtZW50ID0+ICEhZG9jdW1lbnQpLFxuICAgICAgICAgICAgICAgIC8vIE9ubHkgb25lIGNhbGwgZXZlcnkgMzAwIG1zIHRvIHN0b3AgY29uY3VycmVudCBhY2Nlc3NcbiAgICAgICAgICAgICAgICB0aHJvdHRsZVRpbWUoMzAwKSxcbiAgICAgICAgICAgICAgICAvLyBPbmx5IG9uZSBjb25jdXJyZW50IGNhbGwgYXQgdGhlIHRpbWVcbiAgICAgICAgICAgICAgICBtZXJnZU1hcChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXVsdGlVcGxvYWRTZXJ2aWNlLmRlbGV0ZURvY3VtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAvLyBTaWRlIGVmZmVjdCBvbmNlIHRoZSBkb2N1bWVudCBoYXMgYmVlbiBkZWxldGVkLlxuICAgICAgICAgICAgICAgIHRhcChkb2N1bWVudCA9PiB0aGlzLnJlbW92ZURvY3VtZW50RnJvbU1vZGVsKGRvY3VtZW50KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcblxuICAgICAgICBpZiAoISF0aGlzLnBlbmRpbmdVcGxvYWRlZEVycm9yc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGFnZVVwbG9hZExpbWl0U2VydmljZS51bnJlZ2lzdGVyVXBsb2FkZXIodGhpcyk7XG4gICAgfVxuXG4gICAgdHJhY2tCeVBlbmRpbmcoaW5kZXg6IG51bWJlciwgcGVuZGluZzogRmlsZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwZW5kaW5nLmxhc3RNb2RpZmllZDtcbiAgICB9XG5cbiAgICBnZXRUb3RhbEZpbGVzU2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbFxuICAgICAgICAgICAgLm1hcChlID0+IGUuZmlsZVNpemUpXG4gICAgICAgICAgICAucmVkdWNlKChwYXJ0aWFsU3VtLCBhKSA9PiBwYXJ0aWFsU3VtICsgYSwgMCk7XG4gICAgfVxuXG4gICAgY2FuQWRkTW9yZUZpbGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubW9kZWwgJiYgISF0aGlzLm1vZGVsLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICF0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLmhhc1BlbmRpbmdGaWxlcyh0aGlzLm5hbWUpO1xuICAgIH1cblxuICAgIG9uRmlsZUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gUFJFU1RBS0lULTMwOTogTWFyayBhcyBwcmlzdGluZSBzbyBlcnJvcnMgY2FuIGJlIHNob3duIGRpcmVjdGx5IHRvIHVzZXIgd2hlbiB1cGxvYWRpbmcgZmlsZVxuICAgICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0OiBIVE1MSW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIHRoaXMucG9wdWxhdGVGaWxlSXRlbUxpc3QodGFyZ2V0LmZpbGVzKTtcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gbnVsbDsgLy8gcmVzZXQgaGlkZGVuIGZpbGUgaW5wdXQgdmFsdWVzXG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBvbkRyb3AoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZGVySGVscGVyLnByZXZlbnRBbmRTdG9wKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ0FuZERyb3ApIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVMaXN0OiBGaWxlTGlzdCA9IHRoaXMudXBsb2FkZXJIZWxwZXIuZ2V0VHJhbnNmZXIoZXZlbnQpO1xuICAgICAgICAgICAgaWYgKGZpbGVMaXN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUZpbGVJdGVtTGlzdChmaWxlTGlzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNob3dEcm9wWm9uZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcm90ZWN0ZWQgcmVtb3ZlRmlsZU9uQ29uZmlybWF0aW9uKGRvY3VtZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIHN1cGVyLnJlbW92ZUZpbGVPbkNvbmZpcm1hdGlvbihkb2N1bWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGUgZG9jdW1lbnQgaGFzbid0IGJlZW4gdXBsb2FkZWQuXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLnJlbW92ZVBlbmRpbmdGaWxlKGRvY3VtZW50LCB0aGlzLm5hbWUpO1xuICAgICAgICAgICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZUZpbGVJdGVtTGlzdChmaWxlTGlzdDogRmlsZUxpc3QpOiB2b2lkIHtcbiAgICAgICAgbGV0IGZpbGVzID0gQXJyYXkuZnJvbShmaWxlTGlzdCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWZpbGVzLmxlbmd0aCB8fFxuICAgICAgICAgICAgdGhpcy5pc01heEZpbGVzQ291bnRSZWFjaGVkKGZpbGVzKSB8fFxuICAgICAgICAgICAgdGhpcy5pc01heEZpbGVzU2l6ZVJlYWNoZWQoZmlsZXMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiBkcmFnL2Ryb3AgYW5kIGFza2VkIGZvciBzaW5nbGUgdXBsb2FkLCB3ZSBlbnN1cmUgd2Ugc3RvcmUgb25seSBvbmUgZmlsZSBmb3IgdXBsb2FkXG4gICAgICAgIGlmICh0aGlzLmRyYWdBbmREcm9wICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmaWxlcyA9IHRoaXMubWFuYWdlU2luZ2xlRmlsZShmaWxlcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNwbGF5IGxvY2FsIGVycm9ycyBhbmQgc3RvcCBwcm9jZXNzaW5nXG4gICAgICAgIGNvbnN0IGZpbGVzRXJyb3JzID0gdGhpcy5kaXNwbGF5TG9jYWxFcnJvcnMoZmlsZXMpO1xuICAgICAgICBpZiAoZmlsZXNFcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0aWFsaXplIG1vZGVsIGlmIGVtcHR5XG4gICAgICAgIGlmICghdGhpcy5tb2RlbCB8fCAhdGhpcy5tb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIXRoaXMucmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGhhdmUgYSByZWZlcmVuY2UsIHdlIHNlbmQgZmlsZXMgdG8gc2VydmVyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVzU3ViamVjdC5uZXh0KGZpbGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFBSRVNUQUtJVC0zMDk6IFNpbXVsYXRlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjb21wb25lbnRcbiAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBubyBlcnJvciBzbyBpc1ByaXN0aW5lIGlzIHNldCB0byBmYWxzZSBmb3IgdmFsaWRhdGlvbiBwdXJwb3NlXG4gICAgICAgICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2Ugc3RvcmUgZmlsZXMgaW4gcGVuZGluZyBzdG9yYWdlXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLmFkZFBlbmRpbmdGaWxlcyhcbiAgICAgICAgICAgICAgICB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICB0aGlzLm5hbWUsXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbCxcbiAgICAgICAgICAgICAgICBmaWxlcyxcbiAgICAgICAgICAgICAgICB0aGlzLmtleSxcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpcGxlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvblxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGlzcGxheVBlbmRpbmdVcGxvYWRlZEVycm9yc0Zyb21TZXJ2ZXJCeUZvcm1LZXkoXG4gICAgICAgIGVycm9yczogRG9jdW1lbnRFcnJvcltdLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmdcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXJyb3JzQnlGb3JtS2V5ID0gZXJyb3JzLmZpbHRlcihcbiAgICAgICAgICAgIChlcnJvcjogRG9jdW1lbnRFcnJvcikgPT4gZXJyb3IuZm9ybUtleSA9PT0gZm9ybUtleVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRpc3BsYXlFcnJvcnNGcm9tU2VydmVyKGVycm9yc0J5Rm9ybUtleSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNwbGF5UmVzdWx0RnJvbVNlcnZlcihcbiAgICAgICAgZG9jdW1lbnRzOiBEb2N1bWVudFJlZmVyZW5jZVtdLFxuICAgICAgICBlcnJvcnM6IERvY3VtZW50RXJyb3JbXVxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc3BsYXlFcnJvcnNGcm9tU2VydmVyKGVycm9ycyk7XG4gICAgICAgIHRoaXMubW9kZWwgPSBbLi4udGhpcy5tb2RlbCwgLi4uKGRvY3VtZW50cyB8fCBbXSldO1xuICAgICAgICB0aGlzLnRyaWdnZXJVc2VySW5wdXQodGhpcy5tb2RlbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVEb2N1bWVudEZyb21Nb2RlbChkb2N1bWVudDogRG9jdW1lbnRSZWZlcmVuY2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm1vZGVsLmluZGV4T2YoZG9jdW1lbnQpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IFsuLi50aGlzLm1vZGVsXTtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlclVzZXJJbnB1dCh0aGlzLm1vZGVsKTtcbiAgICAgICAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGlzcGxheUVycm9yc0Zyb21TZXJ2ZXIoZXJyb3JzOiBEb2N1bWVudEVycm9yW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFlcnJvcnMgfHwgIWVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIFBSRVNUQUtJVC0zMDk6IFNpbXVsYXRlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjb21wb25lbnRcbiAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBubyBlcnJvciBzbyBpc1ByaXN0aW5lIGlzIHNldCB0byBmYWxzZSBmb3IgdmFsaWRhdGlvbiBwdXJwb3NlXG4gICAgICAgICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdFcnJvcnM6IEZvcm1FcnJvcltdID0gW107XG4gICAgICAgIGVycm9ycy5mb3JFYWNoKGVycm9yID0+XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVySGVscGVyLmFkZEN1c3RvbUVycm9yT3JEZWZhdWx0KFxuICAgICAgICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICBuZXdFcnJvcnMsXG4gICAgICAgICAgICAgICAgYCR7ZXJyb3IuZXJyb3JDb2RlfWAsXG4gICAgICAgICAgICAgICAgZXJyb3IubGFiZWwsXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoRXJyb3JzKFtuZXdFcnJvcnMsIHRydWVdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVNpbmdsZUZpbGUoZmlsZXM6IEZpbGVbXSk6IEZpbGVbXSB7XG4gICAgICAgIC8vIEVkZ2UgYnJvd3NlciBsZXRzIHlvdSBkcm9wIGZpbGVzIGZyb20gZGlhbG9nIGJveCB3aGVuIHNlbGVjdGluZyBhIGZpbGUuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIG9ubHkga2VlcCBsYXN0IHNlbGVjdGVkIGZpbGUgZnJvbSB1c2VyXG4gICAgICAgIGlmICghIXRoaXMucmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbCAmJiB0aGlzLm1vZGVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TW9kZWxGaWxlcyA9IFsuLi50aGlzLm1vZGVsXTtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RlbEZpbGVzLmZvckVhY2goKGRvYzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGVPbkNvbmZpcm1hdGlvbihkb2MpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQZW5kaW5nRmlsZXMgPSBbLi4udGhpcy5wZW5kaW5nRmlsZXNdO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRQZW5kaW5nRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgY3VycmVudFBlbmRpbmdGaWxlcy5mb3JFYWNoKChkb2M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlT25Db25maXJtYXRpb24oZG9jKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlbiB3ZSBlbnN1cmUgd2UgdGFrZSBvbmx5IG9uZSBmaWxlIGZyb20gY3VycmVudCBzZWxlY3Rpb25cbiAgICAgICAgcmV0dXJuIGZpbGVzLnNsaWNlKDAsIDEpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY29udGFpbmVyLWJveFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLmRyb3Atem9uZS1oaWdobGlnaHRdPVwic2hvd0Ryb3Bab25lXCJcbiAgICBbYXR0ci5pZF09XCJidWlsZElkKCdDb250YWluZXInKVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxuICAgIChkcmFnZW50ZXIpPVwib25EcmFnZW50ZXIoJGV2ZW50KVwiXG4gICAgKGRyYWdsZWF2ZSk9XCJvbkRyYWdsZWF2ZSgkZXZlbnQpXCJcbiAgICAoZHJhZ292ZXIpPVwib25EcmFnb3ZlcigkZXZlbnQpXCJcbiAgICAjZmFsbEJhY2tUcmlnZ2VyXG4+XG4gICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiZm9ybS1sYWJlbFwiXG4gICAgICAgIFthdHRyLmZvcl09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICpuZ0lmPVwiISFsYWJlbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAndmlzdWFsbHktaGlkZGVuJyA6IGxhYmVsU3R5bGVNb2RpZmllclwiXG4gICAgPlxuICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhcmVxdWlyZWQgJiYgIWhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWlucHV0Lm9wdGlvbmFsJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzXG4gICAgICAgIFtjb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgIFtzaG91bGRFcnJvcnNCZUxpdmVdPVwiaGFzTGl2ZVVwbG9hZEVycm9ycygpXCJcbiAgICA+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgIDxzbWFsbFxuICAgICAgICAqbmdJZj1cImhlbHBUZXh0XCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCkgKyAnSGVscCdcIlxuICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgID48L3NtYWxsPlxuXG4gICAgPCEtLSBQUkVTVEFLSVQtMzA5OiBGYWtlIGlucHV0IHdpdGggTmdNb2RlbCB0byBiZSByZWdpc3RlcmVkIGludG8gRm9ybSBjb250cm9scyAtLT5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtuYW1lXT1cIm5hbWUgfHwgbGFiZWxcIiBbbmdNb2RlbF09XCJtb2RlbFwiIC8+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVmZXJlbmNlXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkb2N1bWVudCBvZiBtb2RlbDsgdHJhY2tCeTogdHJhY2tCeURvY3VtZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmlsZSBmaWxlLXVwbG9hZGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBwcmV0dGllci1pZ25vcmUgLS0+XG4gICAgICAgICAgICA8YSBbaHJlZl09XCJtdWx0aVVwbG9hZFNlcnZpY2UuZ2V0RG93bmxvYWRVcmwodXJsLCBkb2N1bWVudClcIj57eyBkb2N1bWVudC5maWxlbmFtZSB9fTwvYT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMSBtZS0xXCI+XG4gICAgICAgICAgICAgICAgKHt7IHRvTWVnYU9jdGV0cyhkb2N1bWVudC5maWxlU2l6ZSkgfX1cbiAgICAgICAgICAgICAgICA8YWJiclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuYWJici1tZWdhb2N0ZXQtdGl0bGUnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi11cGxvYWRlci5hYmJyLW1lZ2FvY3RldCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgICAgIDwvYWJicj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGljb24tYnV0dG9uIGRlbGV0ZS11cGxvYWRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpbGUoZG9jdW1lbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZGVsZXRlLWljb24tdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeTogeyBkb2NOYW1lOiBkb2N1bWVudC5maWxlbmFtZSB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi10aW1lcz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5IHVwbG9hZGVkLWdsb2JhbC1pbmZvXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0dsb2JhbEluZm9zKG1vZGVsKVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldEdsb2JhbEluZm9zKG1vZGVsKVwiXG4gICAgICAgID48L3NtYWxsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZWZlcmVuY2VcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHBlbmRpbmcgb2YgcGVuZGluZ0ZpbGVzOyB0cmFja0J5OiB0cmFja0J5UGVuZGluZ1wiXG4gICAgICAgICAgICBjbGFzcz1cImZpbGUgZmlsZS1wZW5kaW5nXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3sgcGVuZGluZy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xIG1lLTFcIj5cbiAgICAgICAgICAgICAgICAoe3sgdG9NZWdhT2N0ZXRzKHBlbmRpbmcuc2l6ZSkgfX1cbiAgICAgICAgICAgICAgICA8YWJiclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuYWJici1tZWdhb2N0ZXQtdGl0bGUnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi11cGxvYWRlci5hYmJyLW1lZ2FvY3RldCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgICAgIDwvYWJicj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGljb24tYnV0dG9uIGRlbGV0ZS1wZW5kaW5nXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsZShwZW5kaW5nKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWljb24tdGltZXNcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXVwbG9hZGVyLmRlbGV0ZS1pY29uLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnk6IHsgZG9jTmFtZTogcGVuZGluZy5uYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9mb2Vobi1pY29uLXRpbWVzPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnkgcGVuZGluZy1nbG9iYWwtaW5mb1wiXG4gICAgICAgICAgICAqbmdJZj1cInNob3dHbG9iYWxJbmZvcyhwZW5kaW5nRmlsZXMpXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0R2xvYmFsSW5mb3MocGVuZGluZ0ZpbGVzKVwiXG4gICAgICAgID48L3NtYWxsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbkFkZE1vcmVGaWxlcygpXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYWN0dWFsLWlucHV0XCJcbiAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgfHwgbGFiZWxcIlxuICAgICAgICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgIFthdHRyLmFjY2VwdF09XCJcbiAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgICA/IG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgICAgIDogdXBsb2FkZXJIZWxwZXIuYWNjZXB0XG4gICAgICAgICAgICAgICAgICAgICAgPyB1cGxvYWRlckhlbHBlci5hY2NlcHRcbiAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICNpbnB1dEZpbGVcbiAgICAgICAgLz5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Zpc3VhbGx5LWhpZGRlbic6ICFzaG93VXBsb2FkQnV0dG9uIH1cIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJidWlsZElkKCdFcnJvcnNDb250YWluZXInKVwiXG4gICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpbnB1dEZpbGUuY2xpY2soKVwiXG4gICAgICAgICAgICAjZW50cnlDb21wb25lbnRcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgbXVsdGlwbGUgPyBjaG9vc2VCdXR0b25MYWJlbE11bHRpcGxlIDogY2hvb3NlQnV0dG9uTGFiZWwgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJkcmFnQW5kRHJvcCAmJiAhZGlzYWJsZWRcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGZpbGVcIlxuICAgICAgICAgICAgW2NsYXNzLmRyb3BmaWxlLWJvcmRlci10cmFuc3BhcmVudF09XCJzaG93RHJvcFpvbmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImlucHV0RmlsZS5jbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgbXVsdGlwbGUgPyBkcm9wWm9uZUxhYmVsTXVsdGlwbGUgOiBkcm9wWm9uZUxhYmVsIH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXJcbiAgICAgICAgKm5nSWY9XCJyZWZlcmVuY2VcIlxuICAgICAgICBbcHJvZ3Jlc3NCYXJUcmlnZ2VySHRtbEVsZW1lbnRdPVwiXG4gICAgICAgICAgICBpbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQgfHwgZmFsbEJhY2tUcmlnZ2VyXG4gICAgICAgIFwiXG4gICAgPjwvZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhcj5cbjwvZGl2PlxuIl19
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGktdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC9mb2Vobi1tdWx0aS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsS0FBSyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQ0gsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFlBQVksRUFDZixNQUFNLGdCQUFnQixDQUFDO0FBSXhCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBSTlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFrQjVELE1BQU0sT0FBTyx5QkFDVCxTQUFRLDhCQUFtRDtJQWMzRCxZQUNJLGtCQUFzQyxFQUN0QyxvQkFBMEMsRUFDaEMsc0JBQThDLEVBQzlDLG1CQUE2QyxFQUM3QyxpQkFBdUMsRUFDdkMsWUFBZ0MsRUFDaEMsc0JBQThDO1FBRXhELEtBQUssQ0FDRCxzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixZQUFZLENBQ2Ys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LEVBQUUsa0JBQWtCLEVBQUU7WUFDN0QsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO1NBQ3RFLGlEQ3BDTCxtaE1BK0tBOzs0RkR6SWEseUJBQXlCO2tCQWRyQyxTQUFTOytCQUNJLG9CQUFvQixhQUduQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFO3dCQUM3RCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7cUJBQ3RFOytTQU9ELEdBQUc7c0JBREYsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRU1QVFksIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBjYXRjaEVycm9yLFxuICAgIGZpbHRlcixcbiAgICBtZXJnZU1hcCxcbiAgICB0YXAsXG4gICAgdGhyb3R0bGVUaW1lXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRm9laG5Db25maXJtTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZm9laG4tY29uZmlybS1tb2RhbC9mb2Vobi1jb25maXJtLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3Jvd2xCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtYnJva2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRXJyb3IgfSBmcm9tICcuLi8uLi9mb3JtLWVycm9yJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFic3RyYWN0Rm9laG5VcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2Fic3RyYWN0LWZvZWhuLXVwbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb2N1bWVudFJlZmVyZW5jZSB9IGZyb20gJy4uL2RvY3VtZW50LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBVcGxvYWRQcm9ncmVzc1NlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi11cGxvYWQtcHJvZ3Jlc3MtYmFyL3VwbG9hZC1wcm9ncmVzcy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VVcGxvYWRMaW1pdFNlcnZpY2UgfSBmcm9tICcuLi9wYWdlLXVwbG9hZC1saW1pdC5zZXJ2aWNlJztcbmltcG9ydCB7IE11bHRpVXBsb2FkU2VydmljZSB9IGZyb20gJy4vbXVsdGktdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9jdW1lbnRFcnJvciwgRG9jdW1lbnRzV2l0aEVycm9ycyB9IGZyb20gJy4vbXVsdGktdXBsb2FkLnR5cGUnO1xuaW1wb3J0IHsgUGVuZGluZ1VwbG9hZFNlcnZpY2UgfSBmcm9tICcuL3BlbmRpbmctdXBsb2FkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLW11bHRpLXVwbG9hZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLW11bHRpLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uL2ZvZWhuLXVwbG9hZC5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2Vobk11bHRpVXBsb2FkQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTXVsdGlVcGxvYWRTZXJ2aWNlLCB1c2VDbGFzczogTXVsdGlVcGxvYWRTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogVXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlLCB1c2VDbGFzczogVXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuTXVsdGlVcGxvYWRDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0Rm9laG5VcGxvYWRlckNvbXBvbmVudDxEb2N1bWVudFJlZmVyZW5jZVtdPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgICBASW5wdXQoKVxuICAgIHVybCA9ICdhcGkvZG9jdW1lbnQnO1xuXG4gICAgQElucHV0KClcbiAgICByZWZlcmVuY2U6IHN0cmluZztcblxuICAgIG11bHRpVXBsb2FkU2VydmljZTogTXVsdGlVcGxvYWRTZXJ2aWNlO1xuICAgIHBlbmRpbmdVcGxvYWRTZXJ2aWNlOiBQZW5kaW5nVXBsb2FkU2VydmljZTtcblxuICAgIHByaXZhdGUgcGVuZGluZ1VwbG9hZGVkRXJyb3JzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgbXVsdGlVcGxvYWRTZXJ2aWNlOiBNdWx0aVVwbG9hZFNlcnZpY2UsXG4gICAgICAgIHBlbmRpbmdVcGxvYWRTZXJ2aWNlOiBQZW5kaW5nVXBsb2FkU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBjb25maXJtTW9kYWxTZXJ2aWNlOiBGb2VobkNvbmZpcm1Nb2RhbFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBncm93bFNlcnZpY2U6IEdyb3dsQnJva2VyU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHBhZ2VVcGxvYWRMaW1pdFNlcnZpY2U6IFBhZ2VVcGxvYWRMaW1pdFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlLFxuICAgICAgICAgICAgY29uZmlybU1vZGFsU2VydmljZSxcbiAgICAgICAgICAgIGRpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICAgICAgZ3Jvd2xTZXJ2aWNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UgPSBwZW5kaW5nVXBsb2FkU2VydmljZTtcbiAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2UgPSBtdWx0aVVwbG9hZFNlcnZpY2U7XG4gICAgfVxuXG4gICAgZ2V0IHBlbmRpbmdGaWxlcygpOiBGaWxlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nVXBsb2FkU2VydmljZS5nZXRQZW5kaW5nRmlsZXModGhpcy5uYW1lKTtcbiAgICB9XG5cbiAgICBnZXQgYWRkZWRGaWxlcygpOiBGaWxlW10gfCBEb2N1bWVudFJlZmVyZW5jZVtdIHtcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UuaGFzUGVuZGluZ0ZpbGVzKHRoaXMubmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdGaWxlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0aGlzLm1vZGVsID8gdGhpcy5tb2RlbCA6IFtdO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMucGFnZVVwbG9hZExpbWl0U2VydmljZS5yZWdpc3RlclVwbG9hZGVyKHRoaXMpO1xuXG4gICAgICAgIHRoaXMucGVuZGluZ1VwbG9hZGVkRXJyb3JzU3Vic2NyaXB0aW9uID1cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UucGVuZGluZ1VwbG9hZGVkRXJyb3JzLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAocmVzcG9uc2U6IERvY3VtZW50c1dpdGhFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGVuZGluZ1VwbG9hZGVkRXJyb3JzRnJvbVNlcnZlckJ5Rm9ybUtleShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgLy8gQWRkIGZpbGVzIGxvZ2ljXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZXNTdWJzY3JpcHRpb24gPSB0aGlzLnVwbG9hZEZpbGVzU3ViamVjdFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICBmaWxlcyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgISFmaWxlcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuaXNNYXhTZWxlY3Rpb25SZWFjaGVkKGZpbGVzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlVXBsb2FkTGltaXRTZXJ2aWNlLmNhblVwbG9hZE1vcmVGaWxlcyhmaWxlcylcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIC8vIE9ubHkgb25lIGNhbGwgZXZlcnkgMzAwbXMgdG8gc3RvcCBjb25jdXJyZW50IGFjY2Vzc1xuICAgICAgICAgICAgICAgIHRocm90dGxlVGltZSgzMDApLFxuICAgICAgICAgICAgICAgIC8vIE9ubHkgb25lIGNvbmN1cnJlbnQgY2FsbCBhdCB0aGUgdGltZVxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKFxuICAgICAgICAgICAgICAgICAgICBmaWxlcyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2UudXBsb2FkRG9jdW1lbnRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcnM6IEZvcm1FcnJvcltdID0gW107XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhdHVzIH06IGFueSA9IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVySGVscGVyLmFkZEN1c3RvbUVycm9yT3JEZWZhdWx0KFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7c3RhdHVzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hFcnJvcnMoW2Vycm9ycywgdHJ1ZV0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgZG9jdW1lbnRzLCBlcnJvcnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVJlc3VsdEZyb21TZXJ2ZXIoZG9jdW1lbnRzLCBlcnJvcnMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRGVsZXRlIGRvY3VtZW50IGxvZ2ljXG4gICAgICAgIHRoaXMuZGVsZXRlRG9jdW1lbnRTdWJzY3JpcHRpb24gPSB0aGlzLmRlbGV0ZURvY3VtZW50U3ViamVjdFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKGRvY3VtZW50ID0+ICEhZG9jdW1lbnQpLFxuICAgICAgICAgICAgICAgIC8vIE9ubHkgb25lIGNhbGwgZXZlcnkgMzAwIG1zIHRvIHN0b3AgY29uY3VycmVudCBhY2Nlc3NcbiAgICAgICAgICAgICAgICB0aHJvdHRsZVRpbWUoMzAwKSxcbiAgICAgICAgICAgICAgICAvLyBPbmx5IG9uZSBjb25jdXJyZW50IGNhbGwgYXQgdGhlIHRpbWVcbiAgICAgICAgICAgICAgICBtZXJnZU1hcChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXVsdGlVcGxvYWRTZXJ2aWNlLmRlbGV0ZURvY3VtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAvLyBTaWRlIGVmZmVjdCBvbmNlIHRoZSBkb2N1bWVudCBoYXMgYmVlbiBkZWxldGVkLlxuICAgICAgICAgICAgICAgIHRhcChkb2N1bWVudCA9PiB0aGlzLnJlbW92ZURvY3VtZW50RnJvbU1vZGVsKGRvY3VtZW50KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcblxuICAgICAgICBpZiAoISF0aGlzLnBlbmRpbmdVcGxvYWRlZEVycm9yc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGFnZVVwbG9hZExpbWl0U2VydmljZS51bnJlZ2lzdGVyVXBsb2FkZXIodGhpcyk7XG4gICAgfVxuXG4gICAgdHJhY2tCeVBlbmRpbmcoaW5kZXg6IG51bWJlciwgcGVuZGluZzogRmlsZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwZW5kaW5nLmxhc3RNb2RpZmllZDtcbiAgICB9XG5cbiAgICBnZXRUb3RhbEZpbGVzU2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbFxuICAgICAgICAgICAgLm1hcChlID0+IGUuZmlsZVNpemUpXG4gICAgICAgICAgICAucmVkdWNlKChwYXJ0aWFsU3VtLCBhKSA9PiBwYXJ0aWFsU3VtICsgYSwgMCk7XG4gICAgfVxuXG4gICAgY2FuQWRkTW9yZUZpbGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubW9kZWwgJiYgISF0aGlzLm1vZGVsLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICF0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLmhhc1BlbmRpbmdGaWxlcyh0aGlzLm5hbWUpO1xuICAgIH1cblxuICAgIG9uRmlsZUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gUFJFU1RBS0lULTMwOTogTWFyayBhcyBwcmlzdGluZSBzbyBlcnJvcnMgY2FuIGJlIHNob3duIGRpcmVjdGx5IHRvIHVzZXIgd2hlbiB1cGxvYWRpbmcgZmlsZVxuICAgICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0OiBIVE1MSW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIHRoaXMucG9wdWxhdGVGaWxlSXRlbUxpc3QodGFyZ2V0LmZpbGVzKTtcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gbnVsbDsgLy8gcmVzZXQgaGlkZGVuIGZpbGUgaW5wdXQgdmFsdWVzXG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBvbkRyb3AoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZGVySGVscGVyLnByZXZlbnRBbmRTdG9wKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ0FuZERyb3ApIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVMaXN0OiBGaWxlTGlzdCA9IHRoaXMudXBsb2FkZXJIZWxwZXIuZ2V0VHJhbnNmZXIoZXZlbnQpO1xuICAgICAgICAgICAgaWYgKGZpbGVMaXN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUZpbGVJdGVtTGlzdChmaWxlTGlzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNob3dEcm9wWm9uZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcm90ZWN0ZWQgcmVtb3ZlRmlsZU9uQ29uZmlybWF0aW9uKGRvY3VtZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIHN1cGVyLnJlbW92ZUZpbGVPbkNvbmZpcm1hdGlvbihkb2N1bWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGUgZG9jdW1lbnQgaGFzbid0IGJlZW4gdXBsb2FkZWQuXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLnJlbW92ZVBlbmRpbmdGaWxlKGRvY3VtZW50LCB0aGlzLm5hbWUpO1xuICAgICAgICAgICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZUZpbGVJdGVtTGlzdChmaWxlTGlzdDogRmlsZUxpc3QpOiB2b2lkIHtcbiAgICAgICAgbGV0IGZpbGVzID0gQXJyYXkuZnJvbShmaWxlTGlzdCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWZpbGVzLmxlbmd0aCB8fFxuICAgICAgICAgICAgdGhpcy5pc01heEZpbGVzQ291bnRSZWFjaGVkKGZpbGVzKSB8fFxuICAgICAgICAgICAgdGhpcy5pc01heEZpbGVzU2l6ZVJlYWNoZWQoZmlsZXMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiBkcmFnL2Ryb3AgYW5kIGFza2VkIGZvciBzaW5nbGUgdXBsb2FkLCB3ZSBlbnN1cmUgd2Ugc3RvcmUgb25seSBvbmUgZmlsZSBmb3IgdXBsb2FkXG4gICAgICAgIGlmICh0aGlzLmRyYWdBbmREcm9wICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmaWxlcyA9IHRoaXMubWFuYWdlU2luZ2xlRmlsZShmaWxlcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNwbGF5IGxvY2FsIGVycm9ycyBhbmQgc3RvcCBwcm9jZXNzaW5nXG4gICAgICAgIGNvbnN0IGZpbGVzRXJyb3JzID0gdGhpcy5kaXNwbGF5TG9jYWxFcnJvcnMoZmlsZXMpO1xuICAgICAgICBpZiAoZmlsZXNFcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0aWFsaXplIG1vZGVsIGlmIGVtcHR5XG4gICAgICAgIGlmICghdGhpcy5tb2RlbCB8fCAhdGhpcy5tb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIXRoaXMucmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGhhdmUgYSByZWZlcmVuY2UsIHdlIHNlbmQgZmlsZXMgdG8gc2VydmVyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVzU3ViamVjdC5uZXh0KGZpbGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFBSRVNUQUtJVC0zMDk6IFNpbXVsYXRlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjb21wb25lbnRcbiAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBubyBlcnJvciBzbyBpc1ByaXN0aW5lIGlzIHNldCB0byBmYWxzZSBmb3IgdmFsaWRhdGlvbiBwdXJwb3NlXG4gICAgICAgICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2Ugc3RvcmUgZmlsZXMgaW4gcGVuZGluZyBzdG9yYWdlXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLmFkZFBlbmRpbmdGaWxlcyhcbiAgICAgICAgICAgICAgICB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICB0aGlzLm5hbWUsXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbCxcbiAgICAgICAgICAgICAgICBmaWxlcyxcbiAgICAgICAgICAgICAgICB0aGlzLmtleSxcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpcGxlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvblxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGlzcGxheVBlbmRpbmdVcGxvYWRlZEVycm9yc0Zyb21TZXJ2ZXJCeUZvcm1LZXkoXG4gICAgICAgIGVycm9yczogRG9jdW1lbnRFcnJvcltdLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmdcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXJyb3JzQnlGb3JtS2V5ID0gZXJyb3JzLmZpbHRlcihcbiAgICAgICAgICAgIChlcnJvcjogRG9jdW1lbnRFcnJvcikgPT4gZXJyb3IuZm9ybUtleSA9PT0gZm9ybUtleVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRpc3BsYXlFcnJvcnNGcm9tU2VydmVyKGVycm9yc0J5Rm9ybUtleSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNwbGF5UmVzdWx0RnJvbVNlcnZlcihcbiAgICAgICAgZG9jdW1lbnRzOiBEb2N1bWVudFJlZmVyZW5jZVtdLFxuICAgICAgICBlcnJvcnM6IERvY3VtZW50RXJyb3JbXVxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc3BsYXlFcnJvcnNGcm9tU2VydmVyKGVycm9ycyk7XG4gICAgICAgIHRoaXMubW9kZWwgPSBbLi4udGhpcy5tb2RlbCwgLi4uKGRvY3VtZW50cyB8fCBbXSldO1xuICAgICAgICB0aGlzLnRyaWdnZXJVc2VySW5wdXQodGhpcy5tb2RlbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVEb2N1bWVudEZyb21Nb2RlbChkb2N1bWVudDogRG9jdW1lbnRSZWZlcmVuY2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm1vZGVsLmluZGV4T2YoZG9jdW1lbnQpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IFsuLi50aGlzLm1vZGVsXTtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlclVzZXJJbnB1dCh0aGlzLm1vZGVsKTtcbiAgICAgICAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGlzcGxheUVycm9yc0Zyb21TZXJ2ZXIoZXJyb3JzOiBEb2N1bWVudEVycm9yW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFlcnJvcnMgfHwgIWVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIFBSRVNUQUtJVC0zMDk6IFNpbXVsYXRlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjb21wb25lbnRcbiAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBubyBlcnJvciBzbyBpc1ByaXN0aW5lIGlzIHNldCB0byBmYWxzZSBmb3IgdmFsaWRhdGlvbiBwdXJwb3NlXG4gICAgICAgICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdFcnJvcnM6IEZvcm1FcnJvcltdID0gW107XG4gICAgICAgIGVycm9ycy5mb3JFYWNoKGVycm9yID0+XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVySGVscGVyLmFkZEN1c3RvbUVycm9yT3JEZWZhdWx0KFxuICAgICAgICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICBuZXdFcnJvcnMsXG4gICAgICAgICAgICAgICAgYCR7ZXJyb3IuZXJyb3JDb2RlfWAsXG4gICAgICAgICAgICAgICAgZXJyb3IubGFiZWwsXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoRXJyb3JzKFtuZXdFcnJvcnMsIHRydWVdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVNpbmdsZUZpbGUoZmlsZXM6IEZpbGVbXSk6IEZpbGVbXSB7XG4gICAgICAgIC8vIEVkZ2UgYnJvd3NlciBsZXRzIHlvdSBkcm9wIGZpbGVzIGZyb20gZGlhbG9nIGJveCB3aGVuIHNlbGVjdGluZyBhIGZpbGUuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIG9ubHkga2VlcCBsYXN0IHNlbGVjdGVkIGZpbGUgZnJvbSB1c2VyXG4gICAgICAgIGlmICghIXRoaXMucmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbCAmJiB0aGlzLm1vZGVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TW9kZWxGaWxlcyA9IFsuLi50aGlzLm1vZGVsXTtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RlbEZpbGVzLmZvckVhY2goKGRvYzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGVPbkNvbmZpcm1hdGlvbihkb2MpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQZW5kaW5nRmlsZXMgPSBbLi4udGhpcy5wZW5kaW5nRmlsZXNdO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRQZW5kaW5nRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgY3VycmVudFBlbmRpbmdGaWxlcy5mb3JFYWNoKChkb2M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlT25Db25maXJtYXRpb24oZG9jKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlbiB3ZSBlbnN1cmUgd2UgdGFrZSBvbmx5IG9uZSBmaWxlIGZyb20gY3VycmVudCBzZWxlY3Rpb25cbiAgICAgICAgcmV0dXJuIGZpbGVzLnNsaWNlKDAsIDEpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY29udGFpbmVyLWJveFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLmRyb3Atem9uZS1oaWdobGlnaHRdPVwic2hvd0Ryb3Bab25lXCJcbiAgICBbYXR0ci5pZF09XCJidWlsZElkKCdDb250YWluZXInKVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxuICAgIChkcmFnZW50ZXIpPVwib25EcmFnZW50ZXIoJGV2ZW50KVwiXG4gICAgKGRyYWdsZWF2ZSk9XCJvbkRyYWdsZWF2ZSgkZXZlbnQpXCJcbiAgICAoZHJhZ292ZXIpPVwib25EcmFnb3ZlcigkZXZlbnQpXCJcbiAgICAjZmFsbEJhY2tUcmlnZ2VyXG4+XG4gICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiZm9ybS1sYWJlbFwiXG4gICAgICAgIFthdHRyLmZvcl09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICpuZ0lmPVwiISFsYWJlbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAndmlzdWFsbHktaGlkZGVuJyA6IGxhYmVsU3R5bGVNb2RpZmllclwiXG4gICAgPlxuICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhcmVxdWlyZWQgJiYgIWhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWlucHV0Lm9wdGlvbmFsJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzXG4gICAgICAgIFtjb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgIFtzaG91bGRFcnJvcnNCZUxpdmVdPVwiaGFzTGl2ZVVwbG9hZEVycm9ycygpXCJcbiAgICA+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgIDxzbWFsbFxuICAgICAgICAqbmdJZj1cImhlbHBUZXh0XCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCkgKyAnSGVscCdcIlxuICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgID48L3NtYWxsPlxuXG4gICAgPCEtLSBQUkVTVEFLSVQtMzA5OiBGYWtlIGlucHV0IHdpdGggTmdNb2RlbCB0byBiZSByZWdpc3RlcmVkIGludG8gRm9ybSBjb250cm9scyAtLT5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtuYW1lXT1cIm5hbWUgfHwgbGFiZWxcIiBbbmdNb2RlbF09XCJtb2RlbFwiIC8+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVmZXJlbmNlXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkb2N1bWVudCBvZiBtb2RlbDsgdHJhY2tCeTogdHJhY2tCeURvY3VtZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmlsZSBmaWxlLXVwbG9hZGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBwcmV0dGllci1pZ25vcmUgLS0+XG4gICAgICAgICAgICA8YSBbaHJlZl09XCJtdWx0aVVwbG9hZFNlcnZpY2UuZ2V0RG93bmxvYWRVcmwodXJsLCBkb2N1bWVudClcIj57eyBkb2N1bWVudC5maWxlbmFtZSB9fTwvYT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMSBtZS0xXCI+XG4gICAgICAgICAgICAgICAgKHt7IHRvTWVnYU9jdGV0cyhkb2N1bWVudC5maWxlU2l6ZSkgfX1cbiAgICAgICAgICAgICAgICA8YWJiclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuYWJici1tZWdhb2N0ZXQtdGl0bGUnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi11cGxvYWRlci5hYmJyLW1lZ2FvY3RldCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgICAgIDwvYWJicj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGljb24tYnV0dG9uIGRlbGV0ZS11cGxvYWRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpbGUoZG9jdW1lbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZGVsZXRlLWljb24tdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeTogeyBkb2NOYW1lOiBkb2N1bWVudC5maWxlbmFtZSB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi10aW1lcz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5IHVwbG9hZGVkLWdsb2JhbC1pbmZvXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0dsb2JhbEluZm9zKG1vZGVsKVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldEdsb2JhbEluZm9zKG1vZGVsKVwiXG4gICAgICAgID48L3NtYWxsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZWZlcmVuY2VcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHBlbmRpbmcgb2YgcGVuZGluZ0ZpbGVzOyB0cmFja0J5OiB0cmFja0J5UGVuZGluZ1wiXG4gICAgICAgICAgICBjbGFzcz1cImZpbGUgZmlsZS1wZW5kaW5nXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3sgcGVuZGluZy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xIG1lLTFcIj5cbiAgICAgICAgICAgICAgICAoe3sgdG9NZWdhT2N0ZXRzKHBlbmRpbmcuc2l6ZSkgfX1cbiAgICAgICAgICAgICAgICA8YWJiclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuYWJici1tZWdhb2N0ZXQtdGl0bGUnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi11cGxvYWRlci5hYmJyLW1lZ2FvY3RldCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgICAgIDwvYWJicj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGljb24tYnV0dG9uIGRlbGV0ZS1wZW5kaW5nXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsZShwZW5kaW5nKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWljb24tdGltZXNcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXVwbG9hZGVyLmRlbGV0ZS1pY29uLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnk6IHsgZG9jTmFtZTogcGVuZGluZy5uYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9mb2Vobi1pY29uLXRpbWVzPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnkgcGVuZGluZy1nbG9iYWwtaW5mb1wiXG4gICAgICAgICAgICAqbmdJZj1cInNob3dHbG9iYWxJbmZvcyhwZW5kaW5nRmlsZXMpXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0R2xvYmFsSW5mb3MocGVuZGluZ0ZpbGVzKVwiXG4gICAgICAgID48L3NtYWxsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbkFkZE1vcmVGaWxlcygpXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYWN0dWFsLWlucHV0XCJcbiAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgfHwgbGFiZWxcIlxuICAgICAgICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgIFthdHRyLmFjY2VwdF09XCJcbiAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgICA/IG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgICAgIDogdXBsb2FkZXJIZWxwZXIuYWNjZXB0XG4gICAgICAgICAgICAgICAgICAgICAgPyB1cGxvYWRlckhlbHBlci5hY2NlcHRcbiAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICNpbnB1dEZpbGVcbiAgICAgICAgLz5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Zpc3VhbGx5LWhpZGRlbic6ICFzaG93VXBsb2FkQnV0dG9uIH1cIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJidWlsZElkKCdFcnJvcnNDb250YWluZXInKVwiXG4gICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpbnB1dEZpbGUuY2xpY2soKVwiXG4gICAgICAgICAgICAjZW50cnlDb21wb25lbnRcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgbXVsdGlwbGUgPyBjaG9vc2VCdXR0b25MYWJlbE11bHRpcGxlIDogY2hvb3NlQnV0dG9uTGFiZWwgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJkcmFnQW5kRHJvcCAmJiAhZGlzYWJsZWRcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGZpbGVcIlxuICAgICAgICAgICAgW2NsYXNzLmRyb3BmaWxlLWJvcmRlci10cmFuc3BhcmVudF09XCJzaG93RHJvcFpvbmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImlucHV0RmlsZS5jbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgbXVsdGlwbGUgPyBkcm9wWm9uZUxhYmVsTXVsdGlwbGUgOiBkcm9wWm9uZUxhYmVsIH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXJcbiAgICAgICAgKm5nSWY9XCJyZWZlcmVuY2VcIlxuICAgICAgICBbcHJvZ3Jlc3NCYXJUcmlnZ2VySHRtbEVsZW1lbnRdPVwiXG4gICAgICAgICAgICBpbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQgfHwgZmFsbEJhY2tUcmlnZ2VyXG4gICAgICAgIFwiXG4gICAgPjwvZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhcj5cbjwvZGl2PlxuIl19
@@ -8,21 +8,21 @@ import { FoehnUploadProgressBarModule } from '../foehn-upload-progress-bar/foehn
8
8
  import { FoehnMultiUploadComponent } from './foehn-multi-upload.component';
9
9
  import * as i0 from "@angular/core";
10
10
  export class FoehnMultiUploadModule {
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadModule, declarations: [FoehnMultiUploadComponent], imports: [CommonModule,
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: FoehnMultiUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.10", ngImport: i0, type: FoehnMultiUploadModule, declarations: [FoehnMultiUploadComponent], imports: [CommonModule,
13
13
  FoehnIconsModule,
14
14
  FoehnValidationAlertsModule,
15
15
  SdkDictionaryModule,
16
16
  FormsModule,
17
17
  FoehnUploadProgressBarModule], exports: [FoehnMultiUploadComponent] }); }
18
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadModule, imports: [CommonModule,
18
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: FoehnMultiUploadModule, imports: [CommonModule,
19
19
  FoehnIconsModule,
20
20
  FoehnValidationAlertsModule,
21
21
  SdkDictionaryModule,
22
22
  FormsModule,
23
23
  FoehnUploadProgressBarModule] }); }
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadModule, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: FoehnMultiUploadModule, decorators: [{
26
26
  type: NgModule,
27
27
  args: [{
28
28
  imports: [
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
37
37
  exports: [FoehnMultiUploadComponent]
38
38
  }]
39
39
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGktdXBsb2FkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQWMzRSxNQUFNLE9BQU8sc0JBQXNCOzhHQUF0QixzQkFBc0I7K0dBQXRCLHNCQUFzQixpQkFIaEIseUJBQXlCLGFBUHBDLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsMkJBQTJCO1lBQzNCLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsNEJBQTRCLGFBR3RCLHlCQUF5QjsrR0FFMUIsc0JBQXNCLFlBVjNCLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsMkJBQTJCO1lBQzNCLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsNEJBQTRCOzsyRkFLdkIsc0JBQXNCO2tCQVpsQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsNEJBQTRCO3FCQUMvQjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDekMsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRm9laG5JY29uc01vZHVsZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWljb25zL2ZvZWhuLWljb25zLm1vZHVsZSc7XG5pbXBvcnQgeyBGb2VoblZhbGlkYXRpb25BbGVydHNNb2R1bGUgfSBmcm9tICcuLi8uLi9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cy9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cy5tb2R1bGUnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeU1vZHVsZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5Lm1vZHVsZSc7XG5pbXBvcnQgeyBGb2VoblVwbG9hZFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnLi4vZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci9mb2Vobi11cGxvYWQtcHJvZ3Jlc3MtYmFyLm1vZHVsZSc7XG5pbXBvcnQgeyBGb2Vobk11bHRpVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1tdWx0aS11cGxvYWQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9laG5JY29uc01vZHVsZSxcbiAgICAgICAgRm9laG5WYWxpZGF0aW9uQWxlcnRzTW9kdWxlLFxuICAgICAgICBTZGtEaWN0aW9uYXJ5TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgRm9laG5VcGxvYWRQcm9ncmVzc0Jhck1vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbRm9laG5NdWx0aVVwbG9hZENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0ZvZWhuTXVsdGlVcGxvYWRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuTXVsdGlVcGxvYWRNb2R1bGUge31cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGktdXBsb2FkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQWMzRSxNQUFNLE9BQU8sc0JBQXNCOytHQUF0QixzQkFBc0I7Z0hBQXRCLHNCQUFzQixpQkFIaEIseUJBQXlCLGFBUHBDLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsMkJBQTJCO1lBQzNCLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsNEJBQTRCLGFBR3RCLHlCQUF5QjtnSEFFMUIsc0JBQXNCLFlBVjNCLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsMkJBQTJCO1lBQzNCLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsNEJBQTRCOzs0RkFLdkIsc0JBQXNCO2tCQVpsQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsNEJBQTRCO3FCQUMvQjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDekMsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRm9laG5JY29uc01vZHVsZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWljb25zL2ZvZWhuLWljb25zLm1vZHVsZSc7XG5pbXBvcnQgeyBGb2VoblZhbGlkYXRpb25BbGVydHNNb2R1bGUgfSBmcm9tICcuLi8uLi9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cy9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cy5tb2R1bGUnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeU1vZHVsZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5Lm1vZHVsZSc7XG5pbXBvcnQgeyBGb2VoblVwbG9hZFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnLi4vZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci9mb2Vobi11cGxvYWQtcHJvZ3Jlc3MtYmFyLm1vZHVsZSc7XG5pbXBvcnQgeyBGb2Vobk11bHRpVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1tdWx0aS11cGxvYWQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9laG5JY29uc01vZHVsZSxcbiAgICAgICAgRm9laG5WYWxpZGF0aW9uQWxlcnRzTW9kdWxlLFxuICAgICAgICBTZGtEaWN0aW9uYXJ5TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgRm9laG5VcGxvYWRQcm9ncmVzc0Jhck1vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbRm9laG5NdWx0aVVwbG9hZENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0ZvZWhuTXVsdGlVcGxvYWRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuTXVsdGlVcGxvYWRNb2R1bGUge31cbiJdfQ==
@@ -11,16 +11,14 @@ import * as i3 from "../../gesdem/gesdem-handler.service";
11
11
  import * as i4 from "../../sdk-appinfo/application-info.service";
12
12
  import * as i5 from "../../sdk-dictionary/sdk-dictionary.service";
13
13
  import * as i6 from "../foehn-upload-progress-bar/upload-progress.service";
14
- import * as i7 from "../../sdk-redirect/iam-expired-interceptor.service";
15
14
  export class MultiUploadService {
16
- constructor(httpClient, growlService, gesdemHandlerService, applicationInfoService, dictionaryService, uploadProgressService, iamInterceptor) {
15
+ constructor(httpClient, growlService, gesdemHandlerService, applicationInfoService, dictionaryService, uploadProgressService) {
17
16
  this.httpClient = httpClient;
18
17
  this.growlService = growlService;
19
18
  this.gesdemHandlerService = gesdemHandlerService;
20
19
  this.applicationInfoService = applicationInfoService;
21
20
  this.dictionaryService = dictionaryService;
22
21
  this.uploadProgressService = uploadProgressService;
23
- this.iamInterceptor = iamInterceptor;
24
22
  // A way to have a unique Id per file
25
23
  this.globalSequence = 0;
26
24
  this.NB_CONCURRENT_FILES_TO_UPLOAD = 3;
@@ -78,7 +76,6 @@ export class MultiUploadService {
78
76
  this.growlService.addWithType(GrowlType.SUCCESS, message);
79
77
  }), catchError((e) => {
80
78
  const message = this.dictionaryService.getKeySync('foehn-uploader.delete-error-message');
81
- this.manageBeneficiaryRequiredError(e);
82
79
  this.growlService.addWithType(GrowlType.DANGER, message);
83
80
  return throwError(() => e);
84
81
  }));
@@ -108,26 +105,16 @@ export class MultiUploadService {
108
105
  this.uploadProgressService.showProgress.next(false);
109
106
  const message = this.dictionaryService.getKeySync('foehn-uploader.transmission-error-message');
110
107
  this.growlService.addWithType(GrowlType.DANGER, message);
111
- this.manageBeneficiaryRequiredError(e);
112
108
  return throwError(() => e);
113
109
  }));
114
110
  }
115
- manageBeneficiaryRequiredError(httpErrorResponse) {
116
- if (!!httpErrorResponse) {
117
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
118
- const { error } = httpErrorResponse;
119
- if (error?.code === 'BENEFICIARY_REQUIRED') {
120
- this.iamInterceptor.setIamSessionExpiredManually();
121
- }
122
- }
123
- }
124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiUploadService, deps: [{ token: i1.HttpClient }, { token: i2.GrowlBrokerService }, { token: i3.GesdemHandlerService }, { token: i4.ApplicationInfoService }, { token: i5.SdkDictionaryService }, { token: i6.UploadProgressService }, { token: i7.IamExpiredInterceptorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
125
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiUploadService, providedIn: 'root' }); }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: MultiUploadService, deps: [{ token: i1.HttpClient }, { token: i2.GrowlBrokerService }, { token: i3.GesdemHandlerService }, { token: i4.ApplicationInfoService }, { token: i5.SdkDictionaryService }, { token: i6.UploadProgressService }], target: i0.ɵɵFactoryTarget.Injectable }); }
112
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: MultiUploadService, providedIn: 'root' }); }
126
113
  }
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiUploadService, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: MultiUploadService, decorators: [{
128
115
  type: Injectable,
129
116
  args: [{
130
117
  providedIn: 'root'
131
118
  }]
132
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.GrowlBrokerService }, { type: i3.GesdemHandlerService }, { type: i4.ApplicationInfoService }, { type: i5.SdkDictionaryService }, { type: i6.UploadProgressService }, { type: i7.IamExpiredInterceptorService }] });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC9tdWx0aS11cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFjLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU8xRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7OztBQUsxRCxNQUFNLE9BQU8sa0JBQWtCO0lBTTNCLFlBQ1ksVUFBc0IsRUFDdEIsWUFBZ0MsRUFDaEMsb0JBQTBDLEVBQzFDLHNCQUE4QyxFQUM5QyxpQkFBdUMsRUFDdkMscUJBQTRDLEVBQzVDLGNBQTRDO1FBTjVDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ2hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsbUJBQWMsR0FBZCxjQUFjLENBQThCO1FBWnhELHFDQUFxQztRQUM3QixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUVWLGtDQUE2QixH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Q0FBQztJQUNMLENBQUM7OEdBbk5RLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmYsTUFBTTs7MkZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSHR0cENsaWVudCxcbiAgICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgICBIdHRwRXZlbnQsXG4gICAgSHR0cFJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbmNhdCwgRU1QVFksIE9ic2VydmFibGUsIHRocm93RXJyb3IsIHRvQXJyYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEdyb3dsQnJva2VyU2VydmljZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWdyb3dsL2dyb3dsLWJyb2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb3dsVHlwZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWdyb3dsL2dyb3dsLXR5cGVzJztcbmltcG9ydCB7IEdlc2RlbUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2VzZGVtL2dlc2RlbS1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSWFtRXhwaXJlZEludGVyY2VwdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1yZWRpcmVjdC9pYW0tZXhwaXJlZC1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3VtZW50UmVmZXJlbmNlIH0gZnJvbSAnLi4vZG9jdW1lbnQtcmVmZXJlbmNlJztcbmltcG9ydCB7IFVwbG9hZFByb2dyZXNzU2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXIvdXBsb2FkLXByb2dyZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkZXJIZWxwZXIgfSBmcm9tICcuLi91cGxvYWRlci5oZWxwZXInO1xuaW1wb3J0IHsgRG9jdW1lbnRzV2l0aEVycm9ycyB9IGZyb20gJy4vbXVsdGktdXBsb2FkLnR5cGUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpVXBsb2FkU2VydmljZSB7XG4gICAgLy8gQSB3YXkgdG8gaGF2ZSBhIHVuaXF1ZSBJZCBwZXIgZmlsZVxuICAgIHByaXZhdGUgZ2xvYmFsU2VxdWVuY2UgPSAwO1xuICAgIHByaXZhdGUgdXBsb2FkZXJIZWxwZXI6IFVwbG9hZGVySGVscGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgTkJfQ09OQ1VSUkVOVF9GSUxFU19UT19VUExPQUQgPSAzO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBncm93bFNlcnZpY2U6IEdyb3dsQnJva2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBnZXNkZW1IYW5kbGVyU2VydmljZTogR2VzZGVtSGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25JbmZvU2VydmljZTogQXBwbGljYXRpb25JbmZvU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlOiBVcGxvYWRQcm9ncmVzc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaWFtSW50ZXJjZXB0b3I6IElhbUV4cGlyZWRJbnRlcmNlcHRvclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy51cGxvYWRlckhlbHBlciA9IG5ldyBVcGxvYWRlckhlbHBlcihcbiAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgICAgICB0aGlzLmFwcGxpY2F0aW9uSW5mb1NlcnZpY2VcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGxvYWREb2N1bWVudHMoXG4gICAgICAgIGJhc2VVcmw6IHN0cmluZyxcbiAgICAgICAgZm9ybUtleTogc3RyaW5nLFxuICAgICAgICBsYWJlbDogc3RyaW5nLFxuICAgICAgICBmaWxlczogRmlsZVtdLFxuICAgICAgICBrZXk6IHN0cmluZyxcbiAgICAgICAgaXNNdWx0aXBsZTogYm9vbGVhbixcbiAgICAgICAgbGFuZ3VhZ2U6IHN0cmluZyxcbiAgICAgICAgc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvbjogYm9vbGVhblxuICAgICk6IE9ic2VydmFibGU8RG9jdW1lbnRzV2l0aEVycm9ycz4ge1xuICAgICAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLmdlc2RlbUhhbmRsZXJTZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhLnJlZmVyZW5jZTtcbiAgICAgICAgaWYgKCEhcmVmZXJlbmNlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L3VwbG9hZC8ke3JlZmVyZW5jZX1gO1xuICAgICAgICAgICAgY29uc3QgZmlsZXNUb0dyb3VwID0gWy4uLmZpbGVzXTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3Vwc09mRmlsZXM6IEZpbGVbXVtdID0gW107XG5cbiAgICAgICAgICAgIHdoaWxlICghIWZpbGVzVG9Hcm91cC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBncm91cHNPZkZpbGVzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIGZpbGVzVG9Hcm91cC5zcGxpY2UoMCwgdGhpcy5OQl9DT05DVVJSRU5UX0ZJTEVTX1RPX1VQTE9BRClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBhcnJheU9mRG9jdW1lbnRzV2l0aEVycm9yc09ic2VydmFibGU6IE9ic2VydmFibGU8RG9jdW1lbnRzV2l0aEVycm9ycz5bXSA9XG4gICAgICAgICAgICAgICAgZ3JvdXBzT2ZGaWxlcy5tYXAoKGdyb3VwT2ZGaWxlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudHMgPSBncm91cE9mRmlsZS5tYXAoZmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlckhlbHBlci5tYXBUb0RvY3VtZW50UmVmZXJlbmNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoKS5nZXRUaW1lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nbG9iYWxTZXF1ZW5jZSsrXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy51cGxvYWRlckhlbHBlci5tYXBUb0Zvcm1EYXRhKFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHNPZkZpbGVzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcnJheU9mRG9jdW1lbnRzV2l0aEVycm9yc09ic2VydmFibGVbMF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vICBjb25jYXQoKSBvcGVyYXRvciBzZXF1ZW50aWFsbHkgZW1pdHMgYWxsIHZhbHVlcyBmcm9tIHRoZSBnaXZlbiBPYnNlcnZhYmxlIGFuZCB0aGVuIHByb2NlZWQgdG8gdGhlIG5leHQgb25lLlxuICAgICAgICAgICAgcmV0dXJuIGNvbmNhdCguLi5hcnJheU9mRG9jdW1lbnRzV2l0aEVycm9yc09ic2VydmFibGUpLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gIHRvQXJyYXkoKSBvcGVyYXRvciBjb2xsZWN0cyBhbGwgdGhlIHZhbHVlcyBlbWl0dGVkIGJ5IHRoZSBzb3VyY2Ugb2JzZXJ2YWJsZSBpbnRvIGFuIGFycmF5IGFuZCBzZW5kcyBpdCB0byB0aGUgb2JzZXJ2ZXJcbiAgICAgICAgICAgICAgICB0b0FycmF5KCksXG4gICAgICAgICAgICAgICAgbWFwKHRoaXMubWVyZ2VEb2N1bWVudHNXaXRoRXJyb3JzLmJpbmQodGhpcykpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIGRlbGV0ZURvY3VtZW50KFxuICAgICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICAgIGRvY3VtZW50OiBEb2N1bWVudFJlZmVyZW5jZVxuICAgICk6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U+IHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5nZXNkZW1IYW5kbGVyU2VydmljZS5sYXN0UmVzcG9uc2UubWV0YS5yZWZlcmVuY2U7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L2RlbGV0ZS8ke3JlZmVyZW5jZX0vZG9jLyR7ZG9jdW1lbnQucmVmZXJlbmNlfWA7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5kZWxldGUodXJsKS5waXBlKFxuICAgICAgICAgICAgLy8gUmVmbGVjdCB0aGUgZG9jdW1lbnQgb25jZSB0aGUgdXBkYXRlIGlzIGRvbmUgdG8gZWFzZSBjaGFpbmluZyBvYnNlcnZhYmxlcy5cbiAgICAgICAgICAgIG1hcCgoKSA9PiBkb2N1bWVudCksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi11cGxvYWRlci5maWxlcy1kZWxldGVkLXN1Y2Nlc3MtbWVzc2FnZScsXG4gICAgICAgICAgICAgICAgICAgIHsgZmlsZW5hbWU6IGRvY3VtZW50LmZpbGVuYW1lIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmFkZFdpdGhUeXBlKEdyb3dsVHlwZS5TVUNDRVNTLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi11cGxvYWRlci5kZWxldGUtZXJyb3ItbWVzc2FnZSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlQmVuZWZpY2lhcnlSZXF1aXJlZEVycm9yKGUgYXMgSHR0cEVycm9yUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmFkZFdpdGhUeXBlKEdyb3dsVHlwZS5EQU5HRVIsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXREb3dubG9hZFVybChiYXNlVXJsOiBzdHJpbmcsIGRvY3VtZW50OiBEb2N1bWVudFJlZmVyZW5jZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHRoaXMuZ2VzZGVtSGFuZGxlclNlcnZpY2UubGFzdFJlc3BvbnNlLm1ldGEucmVmZXJlbmNlO1xuICAgICAgICByZXR1cm4gYCR7YmFzZVVybH0vZG93bmxvYWQvJHtyZWZlcmVuY2V9L2RvYy8ke2RvY3VtZW50LnJlZmVyZW5jZX1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RG9jdW1lbnRzV2l0aEVycm9yc09ic2VydmFibGUoXG4gICAgICAgIHVybDogc3RyaW5nLFxuICAgICAgICBmb3JtRGF0YTogRm9ybURhdGEsXG4gICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb246IGJvb2xlYW4sXG4gICAgICAgIHBhY2thZ2VJbmRleDogbnVtYmVyID0gMCxcbiAgICAgICAgbmJQYWNrYWdlczogbnVtYmVyID0gMVxuICAgICk6IE9ic2VydmFibGU8RG9jdW1lbnRzV2l0aEVycm9ycz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdDxEb2N1bWVudHNXaXRoRXJyb3JzPih1cmwsIGZvcm1EYXRhLCB7XG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbidcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGU6IEh0dHBFdmVudDxEb2N1bWVudHNXaXRoRXJyb3JzPikgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzc1NlcnZpY2UubWFuYWdlVXBsb2FkRXZlbnRGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZUluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmJQYWNrYWdlc1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgIChlOiBIdHRwRXZlbnQ8RG9jdW1lbnRzV2l0aEVycm9ycz4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoZSBhcyBIdHRwUmVzcG9uc2U8RG9jdW1lbnRzV2l0aEVycm9ycz4pLmJvZHlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRhcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWNjZXNzZnVsRG9jdW1lbnRzQ291bnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmRvY3VtZW50cyAmJiByZXN1bHQuZG9jdW1lbnRzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bERvY3VtZW50c0NvdW50ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZmlsZXMtc2F2ZWQtc3VjY2Vzcy1tZXNzYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxEb2N1bWVudHNDb3VudDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxEb2N1bWVudHNDb3VudC50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmFkZFdpdGhUeXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3dsVHlwZS5TVUNDRVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlLmFuYWx5c2lzUHJvZ3Jlc3MubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlLnNob3dQcm9ncmVzcy5uZXh0KGZhbHNlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXVwbG9hZGVyLnRyYW5zbWlzc2lvbi1lcnJvci1tZXNzYWdlJ1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShHcm93bFR5cGUuREFOR0VSLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2VCZW5lZmljaWFyeVJlcXVpcmVkRXJyb3IoZSBhcyBIdHRwRXJyb3JSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWVyZ2VEb2N1bWVudHNXaXRoRXJyb3JzID0gKFxuICAgICAgICBhcnJheU9mRG9jdW1lbnRzV2l0aEVycm9yczogRG9jdW1lbnRzV2l0aEVycm9yc1tdXG4gICAgKTogRG9jdW1lbnRzV2l0aEVycm9ycyA9PiB7XG4gICAgICAgIGNvbnN0IG1lcmdlZFJlc3BvbnNlOiBEb2N1bWVudHNXaXRoRXJyb3JzID0gbmV3IERvY3VtZW50c1dpdGhFcnJvcnMoKTtcbiAgICAgICAgYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmICghIWl0ZW0uZG9jdW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cykge1xuICAgICAgICAgICAgICAgICAgICBtZXJnZWRSZXNwb25zZS5kb2N1bWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzID0gbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzLmNvbmNhdChcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5kb2N1bWVudHNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEhaXRlbS5lcnJvcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICghbWVyZ2VkUmVzcG9uc2UuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLmVycm9ycyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtZXJnZWRSZXNwb25zZS5lcnJvcnMgPSBtZXJnZWRSZXNwb25zZS5lcnJvcnMuY29uY2F0KFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmVycm9yc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWVyZ2VkUmVzcG9uc2U7XG4gICAgfTtcblxuICAgIHByaXZhdGUgbWFuYWdlQmVuZWZpY2lhcnlSZXF1aXJlZEVycm9yKFxuICAgICAgICBodHRwRXJyb3JSZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2VcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhaHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBjb25zdCB7IGVycm9yIH06IGFueSA9IGh0dHBFcnJvclJlc3BvbnNlO1xuICAgICAgICAgICAgaWYgKGVycm9yPy5jb2RlID09PSAnQkVORUZJQ0lBUllfUkVRVUlSRUQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pYW1JbnRlcmNlcHRvci5zZXRJYW1TZXNzaW9uRXhwaXJlZE1hbnVhbGx5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
119
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.GrowlBrokerService }, { type: i3.GesdemHandlerService }, { type: i4.ApplicationInfoService }, { type: i5.SdkDictionaryService }, { type: i6.UploadProgressService }] });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC9tdWx0aS11cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFjLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU0xRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBSzFELE1BQU0sT0FBTyxrQkFBa0I7SUFNM0IsWUFDWSxVQUFzQixFQUN0QixZQUFnQyxFQUNoQyxvQkFBMEMsRUFDMUMsc0JBQThDLEVBQzlDLGlCQUF1QyxFQUN2QyxxQkFBNEM7UUFMNUMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFDaEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQVh4RCxxQ0FBcUM7UUFDN0IsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFFVixrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUF5SzNDLDZCQUF3QixHQUFHLENBQy9CLDBCQUFpRCxFQUM5QixFQUFFO1lBQ3JCLE1BQU0sY0FBYyxHQUF3QixJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDdEUsMEJBQTBCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN0QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUM1QixjQUFjLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztvQkFDbEMsQ0FBQztvQkFDRCxjQUFjLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUN0RCxJQUFJLENBQUMsU0FBUyxDQUNqQixDQUFDO2dCQUNOLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDekIsY0FBYyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7b0JBQy9CLENBQUM7b0JBQ0QsY0FBYyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDaEQsSUFBSSxDQUFDLE1BQU0sQ0FDZCxDQUFDO2dCQUNOLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sY0FBYyxDQUFDO1FBQzFCLENBQUMsQ0FBQztRQXRMRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUNwQyxJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLElBQUksQ0FBQyxzQkFBc0IsQ0FDOUIsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlLENBQ1gsT0FBZSxFQUNmLE9BQWUsRUFDZixLQUFhLEVBQ2IsS0FBYSxFQUNiLEdBQVcsRUFDWCxVQUFtQixFQUNuQixRQUFnQixFQUNoQixrQ0FBMkM7UUFFM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN0QixNQUFNLEdBQUcsR0FBRyxHQUFHLE9BQU8sV0FBVyxTQUFTLEVBQUUsQ0FBQztZQUM3QyxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDaEMsTUFBTSxhQUFhLEdBQWEsRUFBRSxDQUFDO1lBRW5DLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDM0IsYUFBYSxDQUFDLElBQUksQ0FDZCxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FDN0QsQ0FBQztZQUNOLENBQUM7WUFFRCxNQUFNLG9DQUFvQyxHQUN0QyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNyQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQ3RDLElBQUksRUFDSixLQUFLLEVBQ0wsR0FBRyxFQUNILFVBQVUsRUFDVixJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUNwQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQ3hCLENBQ0osQ0FBQztnQkFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FDOUMsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLENBQ1gsQ0FBQztnQkFDRixPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FDeEMsR0FBRyxFQUNILFFBQVEsRUFDUixrQ0FBa0MsRUFDbEMsS0FBSyxFQUNMLGFBQWEsQ0FBQyxNQUFNLENBQ3ZCLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztZQUVQLElBQUksb0NBQW9DLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNwRCxPQUFPLG9DQUFvQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25ELENBQUM7WUFFRCwrR0FBK0c7WUFDL0csT0FBTyxNQUFNLENBQUMsR0FBRyxvQ0FBb0MsQ0FBQyxDQUFDLElBQUk7WUFDdkQsMEhBQTBIO1lBQzFILE9BQU8sRUFBRSxFQUNULEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ2hELENBQUM7UUFDTixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGNBQWMsQ0FDVixPQUFlLEVBQ2YsUUFBMkI7UUFFM0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hFLE1BQU0sR0FBRyxHQUFHLEdBQUcsT0FBTyxXQUFXLFNBQVMsUUFBUSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdkUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJO1FBQ25DLDZFQUE2RTtRQUM3RSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQ25CLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUM3Qyw4Q0FBOEMsRUFDOUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUNsQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxDQUFVLEVBQUUsRUFBRTtZQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUM3QyxxQ0FBcUMsQ0FDeEMsQ0FBQztZQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDekQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZSxFQUFFLFFBQTJCO1FBQ3ZELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN4RSxPQUFPLEdBQUcsT0FBTyxhQUFhLFNBQVMsUUFBUSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEUsQ0FBQztJQUVPLGdDQUFnQyxDQUNwQyxHQUFXLEVBQ1gsUUFBa0IsRUFDbEIsa0NBQTJDLEVBQzNDLGVBQXVCLENBQUMsRUFDeEIsYUFBcUIsQ0FBQztRQUV0QixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ2pCLElBQUksQ0FBc0IsR0FBRyxFQUFFLFFBQVEsRUFBRTtZQUN0QyxjQUFjLEVBQUUsSUFBSTtZQUNwQixPQUFPLEVBQUUsUUFBUTtZQUNqQixZQUFZLEVBQUUsTUFBTTtTQUN2QixDQUFDO2FBQ0QsSUFBSSxDQUNELE1BQU0sQ0FBQyxDQUFDLENBQWlDLEVBQUUsRUFBRSxDQUN6QyxJQUFJLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLENBQzlDLENBQUMsRUFDRCxZQUFZLEVBQ1osVUFBVSxDQUNiLENBQ0osRUFDRCxHQUFHLENBQ0MsQ0FBQyxDQUFpQyxFQUFFLEVBQUUsQ0FDakMsQ0FBdUMsQ0FBQyxJQUFJLENBQ3BELEVBQ0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1QsTUFBTSx3QkFBd0IsR0FDMUIsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNoRCxJQUNJLHdCQUF3QjtnQkFDeEIsa0NBQWtDLEVBQ3BDLENBQUM7Z0JBQ0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FDN0MsNENBQTRDLEVBQzVDO29CQUNJLHdCQUF3QixFQUNwQix3QkFBd0IsQ0FBQyxRQUFRLEVBQUU7aUJBQzFDLENBQ0osQ0FBQztnQkFDRixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FDekIsU0FBUyxDQUFDLE9BQU8sRUFDakIsT0FBTyxDQUNWLENBQUM7WUFDTixDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsQ0FBVSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUM3QywyQ0FBMkMsQ0FDOUMsQ0FBQztZQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDekQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7K0dBM0tRLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmYsTUFBTTs7NEZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29uY2F0LCBFTVBUWSwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgdG9BcnJheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgR3Jvd2xCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtYnJva2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3Jvd2xUeXBlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtdHlwZXMnO1xuaW1wb3J0IHsgR2VzZGVtSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9nZXNkZW0vZ2VzZGVtLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBEb2N1bWVudFJlZmVyZW5jZSB9IGZyb20gJy4uL2RvY3VtZW50LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBVcGxvYWRQcm9ncmVzc1NlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi11cGxvYWQtcHJvZ3Jlc3MtYmFyL3VwbG9hZC1wcm9ncmVzcy5zZXJ2aWNlJztcbmltcG9ydCB7IFVwbG9hZGVySGVscGVyIH0gZnJvbSAnLi4vdXBsb2FkZXIuaGVscGVyJztcbmltcG9ydCB7IERvY3VtZW50c1dpdGhFcnJvcnMgfSBmcm9tICcuL211bHRpLXVwbG9hZC50eXBlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVVwbG9hZFNlcnZpY2Uge1xuICAgIC8vIEEgd2F5IHRvIGhhdmUgYSB1bmlxdWUgSWQgcGVyIGZpbGVcbiAgICBwcml2YXRlIGdsb2JhbFNlcXVlbmNlID0gMDtcbiAgICBwcml2YXRlIHVwbG9hZGVySGVscGVyOiBVcGxvYWRlckhlbHBlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE5CX0NPTkNVUlJFTlRfRklMRVNfVE9fVVBMT0FEID0gMztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xTZXJ2aWNlOiBHcm93bEJyb2tlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtSGFuZGxlclNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHVwbG9hZFByb2dyZXNzU2VydmljZTogVXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMudXBsb2FkZXJIZWxwZXIgPSBuZXcgVXBsb2FkZXJIZWxwZXIoXG4gICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvbkluZm9TZXJ2aWNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXBsb2FkRG9jdW1lbnRzKFxuICAgICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICAgIGZvcm1LZXk6IHN0cmluZyxcbiAgICAgICAgbGFiZWw6IHN0cmluZyxcbiAgICAgICAgZmlsZXM6IEZpbGVbXSxcbiAgICAgICAga2V5OiBzdHJpbmcsXG4gICAgICAgIGlzTXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgICAgIGxhbmd1YWdlOiBzdHJpbmcsXG4gICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb246IGJvb2xlYW5cbiAgICApOiBPYnNlcnZhYmxlPERvY3VtZW50c1dpdGhFcnJvcnM+IHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5nZXNkZW1IYW5kbGVyU2VydmljZS5sYXN0UmVzcG9uc2UubWV0YS5yZWZlcmVuY2U7XG4gICAgICAgIGlmICghIXJlZmVyZW5jZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS91cGxvYWQvJHtyZWZlcmVuY2V9YDtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzVG9Hcm91cCA9IFsuLi5maWxlc107XG4gICAgICAgICAgICBjb25zdCBncm91cHNPZkZpbGVzOiBGaWxlW11bXSA9IFtdO1xuXG4gICAgICAgICAgICB3aGlsZSAoISFmaWxlc1RvR3JvdXAubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBzT2ZGaWxlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBmaWxlc1RvR3JvdXAuc3BsaWNlKDAsIHRoaXMuTkJfQ09OQ1VSUkVOVF9GSUxFU19UT19VUExPQUQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPERvY3VtZW50c1dpdGhFcnJvcnM+W10gPVxuICAgICAgICAgICAgICAgIGdyb3Vwc09mRmlsZXMubWFwKChncm91cE9mRmlsZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRzID0gZ3JvdXBPZkZpbGUubWFwKGZpbGUgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZXJIZWxwZXIubWFwVG9Eb2N1bWVudFJlZmVyZW5jZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc011bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2xvYmFsU2VxdWVuY2UrK1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMudXBsb2FkZXJIZWxwZXIubWFwVG9Gb3JtRGF0YShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1LZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREb2N1bWVudHNXaXRoRXJyb3JzT2JzZXJ2YWJsZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzT2ZGaWxlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGFycmF5T2ZEb2N1bWVudHNXaXRoRXJyb3JzT2JzZXJ2YWJsZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyAgY29uY2F0KCkgb3BlcmF0b3Igc2VxdWVudGlhbGx5IGVtaXRzIGFsbCB2YWx1ZXMgZnJvbSB0aGUgZ2l2ZW4gT2JzZXJ2YWJsZSBhbmQgdGhlbiBwcm9jZWVkIHRvIHRoZSBuZXh0IG9uZS5cbiAgICAgICAgICAgIHJldHVybiBjb25jYXQoLi4uYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlKS5waXBlKFxuICAgICAgICAgICAgICAgIC8vICB0b0FycmF5KCkgb3BlcmF0b3IgY29sbGVjdHMgYWxsIHRoZSB2YWx1ZXMgZW1pdHRlZCBieSB0aGUgc291cmNlIG9ic2VydmFibGUgaW50byBhbiBhcnJheSBhbmQgc2VuZHMgaXQgdG8gdGhlIG9ic2VydmVyXG4gICAgICAgICAgICAgICAgdG9BcnJheSgpLFxuICAgICAgICAgICAgICAgIG1hcCh0aGlzLm1lcmdlRG9jdW1lbnRzV2l0aEVycm9ycy5iaW5kKHRoaXMpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICBkZWxldGVEb2N1bWVudChcbiAgICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICBkb2N1bWVudDogRG9jdW1lbnRSZWZlcmVuY2VcbiAgICApOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPiB7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHRoaXMuZ2VzZGVtSGFuZGxlclNlcnZpY2UubGFzdFJlc3BvbnNlLm1ldGEucmVmZXJlbmNlO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS9kZWxldGUvJHtyZWZlcmVuY2V9L2RvYy8ke2RvY3VtZW50LnJlZmVyZW5jZX1gO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlKHVybCkucGlwZShcbiAgICAgICAgICAgIC8vIFJlZmxlY3QgdGhlIGRvY3VtZW50IG9uY2UgdGhlIHVwZGF0ZSBpcyBkb25lIHRvIGVhc2UgY2hhaW5pbmcgb2JzZXJ2YWJsZXMuXG4gICAgICAgICAgICBtYXAoKCkgPT4gZG9jdW1lbnQpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZmlsZXMtZGVsZXRlZC1zdWNjZXNzLW1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgICAgICB7IGZpbGVuYW1lOiBkb2N1bWVudC5maWxlbmFtZSB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShHcm93bFR5cGUuU1VDQ0VTUywgbWVzc2FnZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZGVsZXRlLWVycm9yLW1lc3NhZ2UnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShHcm93bFR5cGUuREFOR0VSLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0RG93bmxvYWRVcmwoYmFzZVVybDogc3RyaW5nLCBkb2N1bWVudDogRG9jdW1lbnRSZWZlcmVuY2UpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLmdlc2RlbUhhbmRsZXJTZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhLnJlZmVyZW5jZTtcbiAgICAgICAgcmV0dXJuIGAke2Jhc2VVcmx9L2Rvd25sb2FkLyR7cmVmZXJlbmNlfS9kb2MvJHtkb2N1bWVudC5yZWZlcmVuY2V9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlKFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgZm9ybURhdGE6IEZvcm1EYXRhLFxuICAgICAgICBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uOiBib29sZWFuLFxuICAgICAgICBwYWNrYWdlSW5kZXg6IG51bWJlciA9IDAsXG4gICAgICAgIG5iUGFja2FnZXM6IG51bWJlciA9IDFcbiAgICApOiBPYnNlcnZhYmxlPERvY3VtZW50c1dpdGhFcnJvcnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3Q8RG9jdW1lbnRzV2l0aEVycm9ycz4odXJsLCBmb3JtRGF0YSwge1xuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6ICdldmVudHMnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChlOiBIdHRwRXZlbnQ8RG9jdW1lbnRzV2l0aEVycm9ycz4pID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlLm1hbmFnZVVwbG9hZEV2ZW50RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5iUGFja2FnZXNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAoZTogSHR0cEV2ZW50PERvY3VtZW50c1dpdGhFcnJvcnM+KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKGUgYXMgSHR0cFJlc3BvbnNlPERvY3VtZW50c1dpdGhFcnJvcnM+KS5ib2R5XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VjY2Vzc2Z1bERvY3VtZW50c0NvdW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5kb2N1bWVudHMgJiYgcmVzdWx0LmRvY3VtZW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxEb2N1bWVudHNDb3VudCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXVwbG9hZGVyLmZpbGVzLXNhdmVkLXN1Y2Nlc3MtbWVzc2FnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsRG9jdW1lbnRzQ291bnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsRG9jdW1lbnRzQ291bnQudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm93bFR5cGUuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzU2VydmljZS5hbmFseXNpc1Byb2dyZXNzLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzU2VydmljZS5zaG93UHJvZ3Jlc3MubmV4dChmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi11cGxvYWRlci50cmFuc21pc3Npb24tZXJyb3ItbWVzc2FnZSdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuYWRkV2l0aFR5cGUoR3Jvd2xUeXBlLkRBTkdFUiwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWVyZ2VEb2N1bWVudHNXaXRoRXJyb3JzID0gKFxuICAgICAgICBhcnJheU9mRG9jdW1lbnRzV2l0aEVycm9yczogRG9jdW1lbnRzV2l0aEVycm9yc1tdXG4gICAgKTogRG9jdW1lbnRzV2l0aEVycm9ycyA9PiB7XG4gICAgICAgIGNvbnN0IG1lcmdlZFJlc3BvbnNlOiBEb2N1bWVudHNXaXRoRXJyb3JzID0gbmV3IERvY3VtZW50c1dpdGhFcnJvcnMoKTtcbiAgICAgICAgYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmICghIWl0ZW0uZG9jdW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cykge1xuICAgICAgICAgICAgICAgICAgICBtZXJnZWRSZXNwb25zZS5kb2N1bWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzID0gbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzLmNvbmNhdChcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5kb2N1bWVudHNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEhaXRlbS5lcnJvcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICghbWVyZ2VkUmVzcG9uc2UuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLmVycm9ycyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtZXJnZWRSZXNwb25zZS5lcnJvcnMgPSBtZXJnZWRSZXNwb25zZS5lcnJvcnMuY29uY2F0KFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmVycm9yc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWVyZ2VkUmVzcG9uc2U7XG4gICAgfTtcbn1cbiJdfQ==
@@ -103,8 +103,10 @@ export class PendingUploadService {
103
103
  this.pendingFilesByFormKey.delete(formKey);
104
104
  // save the form when every document has been uploaded
105
105
  if (this.pendingFilesByFormKey.size === 0) {
106
- // eslint-disable-next-line rxjs/no-nested-subscribe
107
- this.gesdemService.save(form, false).subscribe(() => {
106
+ this.gesdemService
107
+ .save(form, false, false)
108
+ // eslint-disable-next-line rxjs/no-nested-subscribe
109
+ .subscribe(() => {
108
110
  this.attachmentsUploadedSubject.next(form);
109
111
  // Dispatch errors coming from server
110
112
  if (!!mergedResponse.errors.length) {
@@ -149,13 +151,13 @@ export class PendingUploadService {
149
151
  obj[path[0]] = value;
150
152
  }
151
153
  }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PendingUploadService, deps: [{ token: i1.MultiUploadService }, { token: i2.GesdemHandlerService }, { token: i3.GesdemEventService }], target: i0.ɵɵFactoryTarget.Injectable }); }
153
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PendingUploadService, providedIn: 'root' }); }
154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: PendingUploadService, deps: [{ token: i1.MultiUploadService }, { token: i2.GesdemHandlerService }, { token: i3.GesdemEventService }], target: i0.ɵɵFactoryTarget.Injectable }); }
155
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: PendingUploadService, providedIn: 'root' }); }
154
156
  }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PendingUploadService, decorators: [{
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: PendingUploadService, decorators: [{
156
158
  type: Injectable,
157
159
  args: [{
158
160
  providedIn: 'root'
159
161
  }]
160
162
  }], ctorParameters: () => [{ type: i1.MultiUploadService }, { type: i2.GesdemHandlerService }, { type: i3.GesdemEventService }] });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL3BlbmRpbmctdXBsb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBSzFELE1BQU0sT0FBTyxvQkFBb0I7SUFNN0IsWUFDWSxrQkFBc0MsRUFDdEMsYUFBbUMsRUFDbkMsa0JBQXNDO1FBRnRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFSMUMsMEJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDaEUsOERBQThEO1FBQ3RELCtCQUEwQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDaEQsaUNBQTRCLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFPdEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QjthQUM1QyxJQUFJO1FBQ0QsNEJBQTRCO1FBQzVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1IsSUFBSTtZQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTO1NBQ2pELENBQUM7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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEdlc2RlbUV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2dlc2RlbS9nZXNkZW0tZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBHZXNkZW1IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2dlc2RlbS9nZXNkZW0taGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBlbmRpbmdGaWxlcyB9IGZyb20gJy4uL3BlbmRpbmctdXBsb2FkLnR5cGUnO1xuaW1wb3J0IHsgTXVsdGlVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9tdWx0aS11cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBEb2N1bWVudHNXaXRoRXJyb3JzIH0gZnJvbSAnLi9tdWx0aS11cGxvYWQudHlwZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGVuZGluZ1VwbG9hZFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcGVuZGluZ0ZpbGVzQnlGb3JtS2V5ID0gbmV3IE1hcDxzdHJpbmcsIFBlbmRpbmdGaWxlcz4oKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgYXR0YWNobWVudHNVcGxvYWRlZFN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHJpdmF0ZSBwZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8RG9jdW1lbnRzV2l0aEVycm9ycz4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG11bHRpVXBsb2FkU2VydmljZTogTXVsdGlVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbVNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUV2ZW50U2VydmljZTogR2VzZGVtRXZlbnRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZ2VzZGVtRXZlbnRTZXJ2aWNlLmZvcm1Jbml0aWFsaXphdGlvblN1YmplY3RcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgY3VycmVudCByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICBtYXAoZm9ybSA9PiBbXG4gICAgICAgICAgICAgICAgICAgIGZvcm0sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2UubWV0YS5yZWZlcmVuY2VcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gdXBsb2FkIHRoZSBkb2N1bWVudHMgaWYgdGhlcmUgaXMgbm93IGEgcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgZmlsdGVyKHJlZmVyZW5jZSA9PiAhIXJlZmVyZW5jZSksXG4gICAgICAgICAgICAgICAgLy8gSXQgb25seSBtYWtlcyBzZW5zZSB0byB1cGxvYWQgdGhlIGRvY3VtZW50IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGRvY3VtZW50cy5cbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW2Zvcm1dKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRQZW5kaW5nRmlsZXNBbmRTYXZlRm9ybShmb3JtKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0IGF0dGFjaG1lbnRzVXBsb2FkZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0YWNobWVudHNVcGxvYWRlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHBlbmRpbmdVcGxvYWRlZEVycm9ycygpOiBPYnNlcnZhYmxlPERvY3VtZW50c1dpdGhFcnJvcnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ1VwbG9hZGVkRXJyb3JzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBnZXRQZW5kaW5nRmlsZXMoZm9ybUtleTogc3RyaW5nKTogRmlsZVtdIHtcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaGFzUGVuZGluZ0ZpbGVzKGZvcm1LZXk6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcbiAgICAgICAgLy8gTm8gZm9ybUtleSwgd2UgcmV0dXJuIGdsb2JhbCBzaXplIG9mIHBlbmRpbmcgZmlsZXNcbiAgICAgICAgaWYgKCFmb3JtS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgc29tZXRoaW5nIG9uIGZvcm1LZXkgYW5kIGFzc29jaWF0ZWQgZmlsZXNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KSB8fFxuICAgICAgICAgICAgIXRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlc1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZmlsZXMgZm9yIGEgZ2l2ZW4gZm9ybUtleSBleGlzdFxuICAgICAgICByZXR1cm4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIGFkZFBlbmRpbmdGaWxlcyhcbiAgICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmcsXG4gICAgICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgICAgIGZpbGVzOiBGaWxlW10sXG4gICAgICAgIGtleTogc3RyaW5nLFxuICAgICAgICBpc011bHRpcGxlOiBib29sZWFuLFxuICAgICAgICBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uOiBib29sZWFuXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIEluaXRpYWxpemUgcGVuZGluZyBmaWxlcyBieSBmb3JtS2V5XG4gICAgICAgIGlmICghdGhpcy5oYXNQZW5kaW5nRmlsZXMoZm9ybUtleSkpIHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LnNldChmb3JtS2V5LCBuZXcgUGVuZGluZ0ZpbGVzKCkpO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuZ2V0KGZvcm1LZXkpLmZpbGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2V0IHBlbmRpbmcgaW5mb3JtYXRpb25zXG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS51cmwgPSBiYXNlVXJsO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZm9ybUtleSA9IGZvcm1LZXk7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5sYWJlbCA9IGxhYmVsO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMsXG4gICAgICAgICAgICAuLi5maWxlc1xuICAgICAgICBdO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkua2V5ID0ga2V5O1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuaXNNdWx0aXBsZSA9IGlzTXVsdGlwbGU7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChcbiAgICAgICAgICAgIGZvcm1LZXlcbiAgICAgICAgKS5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uID1cbiAgICAgICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb247XG4gICAgfVxuXG4gICAgcmVtb3ZlUGVuZGluZ0ZpbGUoZmlsZTogRmlsZSwgZm9ybUtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc1BlbmRpbmdGaWxlcyhmb3JtS2V5KSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleVxuICAgICAgICAgICAgICAgIC5nZXQoZm9ybUtleSlcbiAgICAgICAgICAgICAgICAuZmlsZXMuaW5kZXhPZihmaWxlKTtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHVwbG9hZFBlbmRpbmdGaWxlc0FuZFNhdmVGb3JtKGZvcm06IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gbmV3IE1hcCh0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleSk7XG4gICAgICAgIGNvbnN0IG1lcmdlZFJlc3BvbnNlOiBEb2N1bWVudHNXaXRoRXJyb3JzID0gbmV3IERvY3VtZW50c1dpdGhFcnJvcnMoKTtcblxuICAgICAgICBmaWxlc1RvVXBsb2FkLmZvckVhY2goKHBlbmRpbmdGaWxlcywgZm9ybUtleSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAudXBsb2FkRG9jdW1lbnRzKFxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRmlsZXMudXJsLFxuICAgICAgICAgICAgICAgICAgICBmb3JtS2V5LFxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRmlsZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0ZpbGVzLmtleSxcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0ZpbGVzLmlzTXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgIGZvcm0ubGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmRlbGV0ZShmb3JtS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IERvY3VtZW50c1dpdGhFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgYWxsIHVwbG9hZHMgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXJnZVBlbmRpbmdVcGxvYWRlZFNlcnZlclJlc3VsdChcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBkb2N1bWVudCBpbiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5mb3JtS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZG9jdW1lbnRzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmRlbGV0ZShmb3JtS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgZm9ybSB3aGVuIGV2ZXJ5IGRvY3VtZW50IGhhcyBiZWVuIHVwbG9hZGVkXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1uZXN0ZWQtc3Vic2NyaWJlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlc2RlbVNlcnZpY2Uuc2F2ZShmb3JtLCBmYWxzZSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRzVXBsb2FkZWRTdWJqZWN0Lm5leHQoZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzcGF0Y2ggZXJyb3JzIGNvbWluZyBmcm9tIHNlcnZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIW1lcmdlZFJlc3BvbnNlLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJqZWN0Lm5leHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRSZXNwb25zZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWVyZ2VQZW5kaW5nVXBsb2FkZWRTZXJ2ZXJSZXN1bHQoXG4gICAgICAgIG1lcmdlZFJlc3BvbnNlOiBEb2N1bWVudHNXaXRoRXJyb3JzLFxuICAgICAgICBzZXJ2ZXJSZXNwb25zZTogRG9jdW1lbnRzV2l0aEVycm9yc1xuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBJbml0aWFsaXplIGFycmF5cyB3aGVuIG5lZWRlZFxuICAgICAgICBpZiAoIW1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cykge1xuICAgICAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBhcnJheXMgd2hlbiBuZWVkZWRcbiAgICAgICAgaWYgKCFtZXJnZWRSZXNwb25zZS5lcnJvcnMpIHtcbiAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLmVycm9ycyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWVyZ2UgYWxsIHVwbG9hZHMgcmVzcG9uc2VcbiAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzID0gW1xuICAgICAgICAgICAgLi4ubWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzLFxuICAgICAgICAgICAgLi4uKHNlcnZlclJlc3BvbnNlLmRvY3VtZW50cyB8fCBbXSlcbiAgICAgICAgXTtcbiAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZXJyb3JzID0gW1xuICAgICAgICAgICAgLi4ubWVyZ2VkUmVzcG9uc2UuZXJyb3JzLFxuICAgICAgICAgICAgLi4uKHNlcnZlclJlc3BvbnNlLmVycm9ycyB8fCBbXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE5lc3RlZFZhbHVlKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBvYmo6IGFueSxcbiAgICAgICAgcGF0aDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHZhbHVlOiBhbnlcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcGF0aCA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKG9ialtwYXRoLnNoaWZ0KCldLCBwYXRoLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmpbcGF0aFswXV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL3BlbmRpbmctdXBsb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBSzFELE1BQU0sT0FBTyxvQkFBb0I7SUFNN0IsWUFDWSxrQkFBc0MsRUFDdEMsYUFBbUMsRUFDbkMsa0JBQXNDO1FBRnRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFSMUMsMEJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDaEUsOERBQThEO1FBQ3RELCtCQUEwQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDaEQsaUNBQTRCLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFPdEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QjthQUM1QyxJQUFJO1FBQ0QsNEJBQTRCO1FBQzVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1IsSUFBSTtZQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTO1NBQ2pELENBQUM7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TTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEdlc2RlbUV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2dlc2RlbS9nZXNkZW0tZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBHZXNkZW1IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2dlc2RlbS9nZXNkZW0taGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBlbmRpbmdGaWxlcyB9IGZyb20gJy4uL3BlbmRpbmctdXBsb2FkLnR5cGUnO1xuaW1wb3J0IHsgTXVsdGlVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9tdWx0aS11cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBEb2N1bWVudHNXaXRoRXJyb3JzIH0gZnJvbSAnLi9tdWx0aS11cGxvYWQudHlwZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGVuZGluZ1VwbG9hZFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcGVuZGluZ0ZpbGVzQnlGb3JtS2V5ID0gbmV3IE1hcDxzdHJpbmcsIFBlbmRpbmdGaWxlcz4oKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgYXR0YWNobWVudHNVcGxvYWRlZFN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHJpdmF0ZSBwZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8RG9jdW1lbnRzV2l0aEVycm9ycz4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG11bHRpVXBsb2FkU2VydmljZTogTXVsdGlVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbVNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUV2ZW50U2VydmljZTogR2VzZGVtRXZlbnRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZ2VzZGVtRXZlbnRTZXJ2aWNlLmZvcm1Jbml0aWFsaXphdGlvblN1YmplY3RcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgY3VycmVudCByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICBtYXAoZm9ybSA9PiBbXG4gICAgICAgICAgICAgICAgICAgIGZvcm0sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2UubWV0YS5yZWZlcmVuY2VcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gdXBsb2FkIHRoZSBkb2N1bWVudHMgaWYgdGhlcmUgaXMgbm93IGEgcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgZmlsdGVyKHJlZmVyZW5jZSA9PiAhIXJlZmVyZW5jZSksXG4gICAgICAgICAgICAgICAgLy8gSXQgb25seSBtYWtlcyBzZW5zZSB0byB1cGxvYWQgdGhlIGRvY3VtZW50IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGRvY3VtZW50cy5cbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW2Zvcm1dKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRQZW5kaW5nRmlsZXNBbmRTYXZlRm9ybShmb3JtKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0IGF0dGFjaG1lbnRzVXBsb2FkZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0YWNobWVudHNVcGxvYWRlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHBlbmRpbmdVcGxvYWRlZEVycm9ycygpOiBPYnNlcnZhYmxlPERvY3VtZW50c1dpdGhFcnJvcnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ1VwbG9hZGVkRXJyb3JzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBnZXRQZW5kaW5nRmlsZXMoZm9ybUtleTogc3RyaW5nKTogRmlsZVtdIHtcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaGFzUGVuZGluZ0ZpbGVzKGZvcm1LZXk6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcbiAgICAgICAgLy8gTm8gZm9ybUtleSwgd2UgcmV0dXJuIGdsb2JhbCBzaXplIG9mIHBlbmRpbmcgZmlsZXNcbiAgICAgICAgaWYgKCFmb3JtS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgc29tZXRoaW5nIG9uIGZvcm1LZXkgYW5kIGFzc29jaWF0ZWQgZmlsZXNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KSB8fFxuICAgICAgICAgICAgIXRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlc1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZmlsZXMgZm9yIGEgZ2l2ZW4gZm9ybUtleSBleGlzdFxuICAgICAgICByZXR1cm4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIGFkZFBlbmRpbmdGaWxlcyhcbiAgICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmcsXG4gICAgICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgICAgIGZpbGVzOiBGaWxlW10sXG4gICAgICAgIGtleTogc3RyaW5nLFxuICAgICAgICBpc011bHRpcGxlOiBib29sZWFuLFxuICAgICAgICBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uOiBib29sZWFuXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIEluaXRpYWxpemUgcGVuZGluZyBmaWxlcyBieSBmb3JtS2V5XG4gICAgICAgIGlmICghdGhpcy5oYXNQZW5kaW5nRmlsZXMoZm9ybUtleSkpIHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LnNldChmb3JtS2V5LCBuZXcgUGVuZGluZ0ZpbGVzKCkpO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuZ2V0KGZvcm1LZXkpLmZpbGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2V0IHBlbmRpbmcgaW5mb3JtYXRpb25zXG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS51cmwgPSBiYXNlVXJsO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZm9ybUtleSA9IGZvcm1LZXk7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5sYWJlbCA9IGxhYmVsO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMsXG4gICAgICAgICAgICAuLi5maWxlc1xuICAgICAgICBdO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkua2V5ID0ga2V5O1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuaXNNdWx0aXBsZSA9IGlzTXVsdGlwbGU7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChcbiAgICAgICAgICAgIGZvcm1LZXlcbiAgICAgICAgKS5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uID1cbiAgICAgICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb247XG4gICAgfVxuXG4gICAgcmVtb3ZlUGVuZGluZ0ZpbGUoZmlsZTogRmlsZSwgZm9ybUtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc1BlbmRpbmdGaWxlcyhmb3JtS2V5KSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleVxuICAgICAgICAgICAgICAgIC5nZXQoZm9ybUtleSlcbiAgICAgICAgICAgICAgICAuZmlsZXMuaW5kZXhPZihmaWxlKTtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHVwbG9hZFBlbmRpbmdGaWxlc0FuZFNhdmVGb3JtKGZvcm06IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gbmV3IE1hcCh0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleSk7XG4gICAgICAgIGNvbnN0IG1lcmdlZFJlc3BvbnNlOiBEb2N1bWVudHNXaXRoRXJyb3JzID0gbmV3IERvY3VtZW50c1dpdGhFcnJvcnMoKTtcblxuICAgICAgICBmaWxlc1RvVXBsb2FkLmZvckVhY2goKHBlbmRpbmdGaWxlcywgZm9ybUtleSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAudXBsb2FkRG9jdW1lbnRzKFxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRmlsZXMudXJsLFxuICAgICAgICAgICAgICAgICAgICBmb3JtS2V5LFxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRmlsZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0ZpbGVzLmtleSxcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0ZpbGVzLmlzTXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgIGZvcm0ubGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmRlbGV0ZShmb3JtS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IERvY3VtZW50c1dpdGhFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgYWxsIHVwbG9hZHMgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXJnZVBlbmRpbmdVcGxvYWRlZFNlcnZlclJlc3VsdChcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBkb2N1bWVudCBpbiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5mb3JtS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZG9jdW1lbnRzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmRlbGV0ZShmb3JtS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgZm9ybSB3aGVuIGV2ZXJ5IGRvY3VtZW50IGhhcyBiZWVuIHVwbG9hZGVkXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlc2RlbVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2F2ZShmb3JtLCBmYWxzZSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8tbmVzdGVkLXN1YnNjcmliZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRzVXBsb2FkZWRTdWJqZWN0Lm5leHQoZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc3BhdGNoIGVycm9ycyBjb21pbmcgZnJvbSBzZXJ2ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhbWVyZ2VkUmVzcG9uc2UuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJqZWN0Lm5leHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1lcmdlUGVuZGluZ1VwbG9hZGVkU2VydmVyUmVzdWx0KFxuICAgICAgICBtZXJnZWRSZXNwb25zZTogRG9jdW1lbnRzV2l0aEVycm9ycyxcbiAgICAgICAgc2VydmVyUmVzcG9uc2U6IERvY3VtZW50c1dpdGhFcnJvcnNcbiAgICApOiB2b2lkIHtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBhcnJheXMgd2hlbiBuZWVkZWRcbiAgICAgICAgaWYgKCFtZXJnZWRSZXNwb25zZS5kb2N1bWVudHMpIHtcbiAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIC8vIEluaXRpYWxpemUgYXJyYXlzIHdoZW4gbmVlZGVkXG4gICAgICAgIGlmICghbWVyZ2VkUmVzcG9uc2UuZXJyb3JzKSB7XG4gICAgICAgICAgICBtZXJnZWRSZXNwb25zZS5lcnJvcnMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1lcmdlIGFsbCB1cGxvYWRzIHJlc3BvbnNlXG4gICAgICAgIG1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cyA9IFtcbiAgICAgICAgICAgIC4uLm1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cyxcbiAgICAgICAgICAgIC4uLihzZXJ2ZXJSZXNwb25zZS5kb2N1bWVudHMgfHwgW10pXG4gICAgICAgIF07XG4gICAgICAgIG1lcmdlZFJlc3BvbnNlLmVycm9ycyA9IFtcbiAgICAgICAgICAgIC4uLm1lcmdlZFJlc3BvbnNlLmVycm9ycyxcbiAgICAgICAgICAgIC4uLihzZXJ2ZXJSZXNwb25zZS5lcnJvcnMgfHwgW10pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXROZXN0ZWRWYWx1ZShcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgb2JqOiBhbnksXG4gICAgICAgIHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICB2YWx1ZTogYW55XG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHBhdGggPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShvYmpbcGF0aC5zaGlmdCgpXSwgcGF0aCwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqW3BhdGhbMF1dID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=