@dsivd/prestations-ng 17.10.9 → 18.0.0-beta.10

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 (314) hide show
  1. package/CHANGELOG.md +2478 -2466
  2. package/CONTRIBUTING.md +66 -66
  3. package/ESLINT_MIGRATION_GUIDE.md +19 -33
  4. package/MODULES.md +88 -88
  5. package/MULTI_ETAPES.md +9 -9
  6. package/README.md +25 -24
  7. package/README_COMMON.md +10 -10
  8. package/UPGRADING_V12.md +36 -36
  9. package/UPGRADING_V13.md +3 -3
  10. package/UPGRADING_V14.md +2 -2
  11. package/UPGRADING_V15.md +4 -4
  12. package/UPGRADING_V16.md +38 -38
  13. package/UPGRADING_V17.md +51 -51
  14. package/UPGRADING_V18.md +596 -8
  15. package/UPGRADING_V8.md +5 -5
  16. package/abstract-page-component.d.ts +1 -1
  17. package/dsivd-prestations-ng-18.0.0-beta.10.tgz +0 -0
  18. package/fesm2022/dsivd-prestations-ng.mjs +903 -868
  19. package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
  20. package/foehn-checkables/foehn-checkable-group.component.d.ts +1 -1
  21. package/foehn-checkables/foehn-checkables.module.d.ts +6 -7
  22. package/foehn-date-picker/date-picker.helper.d.ts +1 -1
  23. package/foehn-icons/abstract-icon-component.d.ts +1 -1
  24. package/foehn-input/foehn-input-string.component.d.ts +1 -1
  25. package/foehn-input/foehn-input.component.d.ts +1 -1
  26. package/foehn-menu-prestation/abstract-list-item-detail-page.component.d.ts +1 -1
  27. package/foehn-menu-prestation/abstract-menu-page.component.d.ts +1 -1
  28. package/foehn-menu-prestation/abstract-page-from-menu.component.d.ts +1 -1
  29. package/foehn-navigation/abstract-foehn-navigation.component.d.ts +1 -1
  30. package/foehn-table/foehn-table.component.d.ts +1 -6
  31. package/foehn-upload/abstract-foehn-uploader.component.d.ts +1 -2
  32. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +1 -3
  33. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.d.ts +1 -1
  34. package/index.d.ts +1 -1
  35. package/index.html +1 -1
  36. package/package.json +15 -17
  37. package/prestations-ng-core.module.d.ts +5 -4
  38. package/sdk-appinfo/application-info.service.d.ts +1 -0
  39. package/sdk-drafts/drafts.module.d.ts +7 -8
  40. package/sdk-support-alert/support-alert.module.d.ts +2 -3
  41. package/dsivd-prestations-ng-17.10.9.tgz +0 -0
  42. package/esm2022/abstract-page-component.mjs +0 -232
  43. package/esm2022/directives/currency-formatter.directive.mjs +0 -143
  44. package/esm2022/directives/formatter.module.mjs +0 -37
  45. package/esm2022/directives/iban-formatter.directive.mjs +0 -29
  46. package/esm2022/directives/ide-formatter.directive.mjs +0 -37
  47. package/esm2022/directives/ndc-formatter.directive.mjs +0 -75
  48. package/esm2022/dsivd-prestations-ng.mjs +0 -5
  49. package/esm2022/foehn-address/address.type.mjs +0 -10
  50. package/esm2022/foehn-address/foehn-address.module.mjs +0 -55
  51. package/esm2022/foehn-address/foehn-display-address.component.mjs +0 -69
  52. package/esm2022/foehn-address/foehn-input-address.component.mjs +0 -498
  53. package/esm2022/foehn-address/foehn-input-foreign-locality.component.mjs +0 -66
  54. package/esm2022/foehn-address/foehn-input-foreign-street.component.mjs +0 -56
  55. package/esm2022/foehn-agenda/calendar.type.mjs +0 -3
  56. package/esm2022/foehn-agenda/current-week.type.mjs +0 -4
  57. package/esm2022/foehn-agenda/day-slots.type.mjs +0 -3
  58. package/esm2022/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +0 -75
  59. package/esm2022/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +0 -242
  60. package/esm2022/foehn-agenda/foehn-agenda.component.mjs +0 -95
  61. package/esm2022/foehn-agenda/foehn-agenda.module.mjs +0 -62
  62. package/esm2022/foehn-agenda/pagination-week.type.mjs +0 -3
  63. package/esm2022/foehn-agenda/selected-slot.type.mjs +0 -3
  64. package/esm2022/foehn-autocomplete/foehn-autocomplete.component.mjs +0 -684
  65. package/esm2022/foehn-autocomplete/foehn-autocomplete.module.mjs +0 -40
  66. package/esm2022/foehn-boolean/foehn-boolean-checkbox.component.mjs +0 -28
  67. package/esm2022/foehn-boolean/foehn-boolean-radio.component.mjs +0 -40
  68. package/esm2022/foehn-boolean/foehn-boolean.module.mjs +0 -33
  69. package/esm2022/foehn-breadcrumb/breadcrumb-event.service.mjs +0 -177
  70. package/esm2022/foehn-breadcrumb/breadcrumb.mjs +0 -5
  71. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.component.mjs +0 -106
  72. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.module.mjs +0 -20
  73. package/esm2022/foehn-checkables/foehn-checkable-group.component.mjs +0 -291
  74. package/esm2022/foehn-checkables/foehn-checkables.module.mjs +0 -68
  75. package/esm2022/foehn-checkables/foehn-checkbox.component.mjs +0 -37
  76. package/esm2022/foehn-checkables/foehn-radio.component.mjs +0 -64
  77. package/esm2022/foehn-checkables/foehn-select.component.mjs +0 -55
  78. package/esm2022/foehn-checkables/form-select-option-group.mjs +0 -3
  79. package/esm2022/foehn-checkables/form-select-option.mjs +0 -3
  80. package/esm2022/foehn-confirm-modal/foehn-confirm-modal-content.mjs +0 -7
  81. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.component.mjs +0 -40
  82. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.module.mjs +0 -19
  83. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.service.mjs +0 -53
  84. package/esm2022/foehn-date-picker/date-picker-navigation.helper.mjs +0 -168
  85. package/esm2022/foehn-date-picker/date-picker.helper.mjs +0 -132
  86. package/esm2022/foehn-date-picker/day-month.type.mjs +0 -3
  87. package/esm2022/foehn-date-picker/focused-day.type.mjs +0 -3
  88. package/esm2022/foehn-date-picker/foehn-date-picker.component.mjs +0 -392
  89. package/esm2022/foehn-date-picker/foehn-date-picker.module.mjs +0 -40
  90. package/esm2022/foehn-date-picker/month-year.type.mjs +0 -3
  91. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.component.mjs +0 -97
  92. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.module.mjs +0 -36
  93. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.mjs +0 -84
  94. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.module.mjs +0 -20
  95. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.component.mjs +0 -37
  96. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.module.mjs +0 -32
  97. package/esm2022/foehn-dropdown-menu/dropdown-menu-group.type.mjs +0 -3
  98. package/esm2022/foehn-dropdown-menu/dropdown-menu-item.type.mjs +0 -6
  99. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.component.mjs +0 -212
  100. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.module.mjs +0 -21
  101. package/esm2022/foehn-feedback-notification/foehn-feedback-notification.component.mjs +0 -113
  102. package/esm2022/foehn-feedback-notification/foehn-feedback-notification.module.mjs +0 -32
  103. package/esm2022/foehn-feedback-notification/foehn-feedback-notification.type.mjs +0 -3
  104. package/esm2022/foehn-footer/foehn-footer.component.mjs +0 -130
  105. package/esm2022/foehn-footer/foehn-footer.module.mjs +0 -19
  106. package/esm2022/foehn-footer/footer-link.type.mjs +0 -3
  107. package/esm2022/foehn-form/foehn-form.component.mjs +0 -136
  108. package/esm2022/foehn-form/foehn-form.module.mjs +0 -32
  109. package/esm2022/foehn-form/register-ng-model.service.mjs +0 -23
  110. package/esm2022/foehn-growl/foehn-growl.component.mjs +0 -45
  111. package/esm2022/foehn-growl/foehn-growl.module.mjs +0 -18
  112. package/esm2022/foehn-growl/growl-broker.service.mjs +0 -37
  113. package/esm2022/foehn-growl/growl-message.mjs +0 -9
  114. package/esm2022/foehn-growl/growl-types.mjs +0 -7
  115. package/esm2022/foehn-header/foehn-header.component.mjs +0 -159
  116. package/esm2022/foehn-header/foehn-header.module.mjs +0 -40
  117. package/esm2022/foehn-header/foehn-skip-link.component.mjs +0 -51
  118. package/esm2022/foehn-help-modal/foehn-help-modal.component.mjs +0 -44
  119. package/esm2022/foehn-help-modal/foehn-help-modal.module.mjs +0 -20
  120. package/esm2022/foehn-help-modal/foehn-help-modal.type.mjs +0 -2
  121. package/esm2022/foehn-icons/abstract-icon-component.mjs +0 -12
  122. package/esm2022/foehn-icons/foehn-icon-calendar.component.mjs +0 -19
  123. package/esm2022/foehn-icons/foehn-icon-check-square-o.component.mjs +0 -19
  124. package/esm2022/foehn-icons/foehn-icon-check.component.mjs +0 -19
  125. package/esm2022/foehn-icons/foehn-icon-chevron-down.component.mjs +0 -19
  126. package/esm2022/foehn-icons/foehn-icon-chevron-left.component.mjs +0 -19
  127. package/esm2022/foehn-icons/foehn-icon-chevron-right.component.mjs +0 -19
  128. package/esm2022/foehn-icons/foehn-icon-chevron-up.component.mjs +0 -19
  129. package/esm2022/foehn-icons/foehn-icon-clock.component.mjs +0 -19
  130. package/esm2022/foehn-icons/foehn-icon-comment-dots.component.mjs +0 -19
  131. package/esm2022/foehn-icons/foehn-icon-edit.component.mjs +0 -19
  132. package/esm2022/foehn-icons/foehn-icon-external-link-alt.component.mjs +0 -19
  133. package/esm2022/foehn-icons/foehn-icon-file-pdf.component.mjs +0 -19
  134. package/esm2022/foehn-icons/foehn-icon-info-circle.component.mjs +0 -19
  135. package/esm2022/foehn-icons/foehn-icon-lock.component.mjs +0 -19
  136. package/esm2022/foehn-icons/foehn-icon-map-marker.component.mjs +0 -19
  137. package/esm2022/foehn-icons/foehn-icon-minus-circle.component.mjs +0 -19
  138. package/esm2022/foehn-icons/foehn-icon-pencil.component.mjs +0 -19
  139. package/esm2022/foehn-icons/foehn-icon-plus-circle.component.mjs +0 -19
  140. package/esm2022/foehn-icons/foehn-icon-plus-square.component.mjs +0 -19
  141. package/esm2022/foehn-icons/foehn-icon-search.component.mjs +0 -19
  142. package/esm2022/foehn-icons/foehn-icon-times.component.mjs +0 -19
  143. package/esm2022/foehn-icons/foehn-icon-trash-alt.component.mjs +0 -19
  144. package/esm2022/foehn-icons/foehn-icon-unlock-alt.component.mjs +0 -19
  145. package/esm2022/foehn-icons/foehn-icon-user.component.mjs +0 -19
  146. package/esm2022/foehn-icons/foehn-icons.module.mjs +0 -139
  147. package/esm2022/foehn-input/foehn-input-email.component.mjs +0 -74
  148. package/esm2022/foehn-input/foehn-input-hidden.component.mjs +0 -54
  149. package/esm2022/foehn-input/foehn-input-number.component.mjs +0 -319
  150. package/esm2022/foehn-input/foehn-input-password.component.mjs +0 -51
  151. package/esm2022/foehn-input/foehn-input-phone.component.mjs +0 -99
  152. package/esm2022/foehn-input/foehn-input-prefixed-text.component.mjs +0 -116
  153. package/esm2022/foehn-input/foehn-input-string.component.mjs +0 -27
  154. package/esm2022/foehn-input/foehn-input-text.component.mjs +0 -69
  155. package/esm2022/foehn-input/foehn-input-textarea.component.mjs +0 -97
  156. package/esm2022/foehn-input/foehn-input.component.mjs +0 -418
  157. package/esm2022/foehn-input/foehn-input.module.mjs +0 -98
  158. package/esm2022/foehn-input/pattern.const.mjs +0 -16
  159. package/esm2022/foehn-input-date/foehn-input-date.component.mjs +0 -163
  160. package/esm2022/foehn-input-date-time/foehn-input-date-time.component.mjs +0 -201
  161. package/esm2022/foehn-input-time/foehn-input-time.component.mjs +0 -89
  162. package/esm2022/foehn-list/foehn-list.component.mjs +0 -127
  163. package/esm2022/foehn-list/foehn-list.module.mjs +0 -19
  164. package/esm2022/foehn-list/page-change-event.mjs +0 -3
  165. package/esm2022/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +0 -122
  166. package/esm2022/foehn-menu-prestation/abstract-menu-page.component.mjs +0 -31
  167. package/esm2022/foehn-menu-prestation/abstract-page-from-menu.component.mjs +0 -87
  168. package/esm2022/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +0 -25
  169. package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.mjs +0 -2
  170. package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-item.mjs +0 -3
  171. package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +0 -161
  172. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +0 -38
  173. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +0 -58
  174. package/esm2022/foehn-menu-prestation/foehn-menu-prestation.module.mjs +0 -67
  175. package/esm2022/foehn-misc/foehn-abbr.component.mjs +0 -15
  176. package/esm2022/foehn-misc/foehn-misc.module.mjs +0 -17
  177. package/esm2022/foehn-modal/foehn-modal.component.mjs +0 -94
  178. package/esm2022/foehn-modal/foehn-modal.module.mjs +0 -21
  179. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +0 -287
  180. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +0 -40
  181. package/esm2022/foehn-nav13/foehn-input-nav13.component.mjs +0 -114
  182. package/esm2022/foehn-nav13/foehn-input-nav13.module.mjs +0 -32
  183. package/esm2022/foehn-navigation/abstract-foehn-navigation.component.mjs +0 -55
  184. package/esm2022/foehn-navigation/foehn-navigation/foehn-navigation.component.mjs +0 -67
  185. package/esm2022/foehn-navigation/foehn-navigation.module.mjs +0 -37
  186. package/esm2022/foehn-navigation/foehn-navigation.service.mjs +0 -322
  187. package/esm2022/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.mjs +0 -26
  188. package/esm2022/foehn-notfound/foehn-notfound.component.mjs +0 -61
  189. package/esm2022/foehn-notfound/foehn-notfound.module.mjs +0 -20
  190. package/esm2022/foehn-page/foehn-page-counter.component.mjs +0 -31
  191. package/esm2022/foehn-page/foehn-page-expiration-timer/current-session-expiration.mjs +0 -3
  192. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration-interceptor.mjs +0 -68
  193. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration.service.mjs +0 -53
  194. package/esm2022/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs +0 -175
  195. package/esm2022/foehn-page/foehn-page-expiration-timer/interval.helper.mjs +0 -29
  196. package/esm2022/foehn-page/foehn-page-modal.component.mjs +0 -54
  197. package/esm2022/foehn-page/foehn-page-modal.service.mjs +0 -38
  198. package/esm2022/foehn-page/foehn-page.component.mjs +0 -223
  199. package/esm2022/foehn-page/foehn-page.module.mjs +0 -101
  200. package/esm2022/foehn-page/foehn-page.service.mjs +0 -54
  201. package/esm2022/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.mjs +0 -52
  202. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.mjs +0 -23
  203. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.service.mjs +0 -32
  204. package/esm2022/foehn-recap-section/foehn-recap-section.component.mjs +0 -98
  205. package/esm2022/foehn-recap-section/foehn-recap-section.module.mjs +0 -20
  206. package/esm2022/foehn-recap-section/foehn-recap-section.type.mjs +0 -2
  207. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs +0 -50
  208. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs +0 -18
  209. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +0 -56
  210. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +0 -20
  211. package/esm2022/foehn-table/foehn-table-column-configuration.mjs +0 -3
  212. package/esm2022/foehn-table/foehn-table-page-change-event.mjs +0 -3
  213. package/esm2022/foehn-table/foehn-table.component.mjs +0 -190
  214. package/esm2022/foehn-table/foehn-table.module.mjs +0 -40
  215. package/esm2022/foehn-table/row-element.type.mjs +0 -3
  216. package/esm2022/foehn-table/tableSort.mjs +0 -3
  217. package/esm2022/foehn-upload/abstract-foehn-uploader.component.mjs +0 -242
  218. package/esm2022/foehn-upload/document-reference.mjs +0 -6
  219. package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +0 -116
  220. package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.mjs +0 -6
  221. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +0 -199
  222. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +0 -40
  223. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +0 -250
  224. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +0 -40
  225. package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +0 -125
  226. package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.type.mjs +0 -6
  227. package/esm2022/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +0 -163
  228. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +0 -178
  229. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +0 -44
  230. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +0 -83
  231. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +0 -21
  232. package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +0 -66
  233. package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.type.mjs +0 -7
  234. package/esm2022/foehn-upload/page-upload-limit.service.mjs +0 -80
  235. package/esm2022/foehn-upload/pending-upload.type.mjs +0 -3
  236. package/esm2022/foehn-upload/uploader.helper.mjs +0 -329
  237. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.component.mjs +0 -21
  238. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.module.mjs +0 -19
  239. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +0 -96
  240. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +0 -19
  241. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.component.mjs +0 -29
  242. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.module.mjs +0 -18
  243. package/esm2022/form-error.mjs +0 -2
  244. package/esm2022/form-post-response.mjs +0 -10
  245. package/esm2022/gesdem/gesdem-error-handler.service.mjs +0 -85
  246. package/esm2022/gesdem/gesdem-event.service.mjs +0 -38
  247. package/esm2022/gesdem/gesdem-handler.service.mjs +0 -201
  248. package/esm2022/gesdem/gesdem-loader.guard.mjs +0 -25
  249. package/esm2022/gesdem/gesdem-statut-utils.mjs +0 -25
  250. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +0 -170
  251. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +0 -227
  252. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.module.mjs +0 -62
  253. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.service.mjs +0 -97
  254. package/esm2022/gesdem-action-recovery/reprise-info.mjs +0 -4
  255. package/esm2022/gesdem-confirmation/gesdem-confirmation.component.mjs +0 -241
  256. package/esm2022/gesdem-confirmation/gesdem-confirmation.module.mjs +0 -36
  257. package/esm2022/gesdem-error/gesdem-error.component.mjs +0 -96
  258. package/esm2022/gesdem-error/gesdem-error.module.mjs +0 -36
  259. package/esm2022/global.const.mjs +0 -5
  260. package/esm2022/helpers/demande.helper.mjs +0 -19
  261. package/esm2022/helpers/object.helper.mjs +0 -124
  262. package/esm2022/i18n-form.mjs +0 -7
  263. package/esm2022/pipes/currency.pipe.mjs +0 -18
  264. package/esm2022/pipes/date.pipe.mjs +0 -43
  265. package/esm2022/pipes/formatIde.pipe.mjs +0 -22
  266. package/esm2022/pipes/pipes.module.mjs +0 -18
  267. package/esm2022/prestations-ng-core.module.mjs +0 -31
  268. package/esm2022/public_api.mjs +0 -288
  269. package/esm2022/refinf/model/address-type-light.mjs +0 -3
  270. package/esm2022/refinf/model/canton.mjs +0 -3
  271. package/esm2022/refinf/model/district.mjs +0 -3
  272. package/esm2022/refinf/model/municipality.mjs +0 -3
  273. package/esm2022/refinf/model/place-of-origin.mjs +0 -3
  274. package/esm2022/refinf/model/postal-locality.mjs +0 -3
  275. package/esm2022/sdk-appinfo/application-info.mjs +0 -22
  276. package/esm2022/sdk-appinfo/application-info.service.mjs +0 -146
  277. package/esm2022/sdk-currency/currency.helper.mjs +0 -34
  278. package/esm2022/sdk-date/date.helper.mjs +0 -109
  279. package/esm2022/sdk-dictionary/default-dictionary.mjs +0 -312
  280. package/esm2022/sdk-dictionary/sdk-dictionary.module.mjs +0 -16
  281. package/esm2022/sdk-dictionary/sdk-dictionary.pipe.mjs +0 -28
  282. package/esm2022/sdk-dictionary/sdk-dictionary.service.mjs +0 -122
  283. package/esm2022/sdk-drafts/draft.model.mjs +0 -2
  284. package/esm2022/sdk-drafts/drafts-container.component.mjs +0 -99
  285. package/esm2022/sdk-drafts/drafts.module.mjs +0 -47
  286. package/esm2022/sdk-drafts/drafts.service.mjs +0 -51
  287. package/esm2022/sdk-epayment/model/EPaymentParameters.mjs +0 -2
  288. package/esm2022/sdk-epayment/pending-payment/pending-payment.component.mjs +0 -24
  289. package/esm2022/sdk-epayment/sdk-epayment.component.mjs +0 -76
  290. package/esm2022/sdk-epayment/sdk-epayment.module.mjs +0 -23
  291. package/esm2022/sdk-epayment/sdk-epayment.service.mjs +0 -51
  292. package/esm2022/sdk-events-logger/sdk-event-type.mjs +0 -14
  293. package/esm2022/sdk-events-logger/sdk-event.mjs +0 -3
  294. package/esm2022/sdk-events-logger/sdk-events-logger.service.mjs +0 -43
  295. package/esm2022/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs +0 -113
  296. package/esm2022/sdk-recaptcha/recaptcha.service.mjs +0 -180
  297. package/esm2022/sdk-recaptcha/sdk-recaptcha.component.mjs +0 -75
  298. package/esm2022/sdk-recaptcha/sdk-recaptcha.module.mjs +0 -19
  299. package/esm2022/sdk-redirect/iam-expired-interceptor.service.mjs +0 -62
  300. package/esm2022/sdk-redirect/redirect.component.mjs +0 -55
  301. package/esm2022/sdk-redirect/sdk-redirect.module.mjs +0 -19
  302. package/esm2022/sdk-session-info/session-info-data.mjs +0 -6
  303. package/esm2022/sdk-session-info/session-info-with-application.service.mjs +0 -68
  304. package/esm2022/sdk-session-info/session-info.service.mjs +0 -50
  305. package/esm2022/sdk-statistics/sdk-statistics.service.mjs +0 -74
  306. package/esm2022/sdk-support-alert/support-alert-container.component.mjs +0 -49
  307. package/esm2022/sdk-support-alert/support-alert.component.mjs +0 -32
  308. package/esm2022/sdk-support-alert/support-alert.model.mjs +0 -7
  309. package/esm2022/sdk-support-alert/support-alert.module.mjs +0 -21
  310. package/esm2022/sdk-support-alert/support-alert.service.mjs +0 -139
  311. package/esm2022/service-locator.mjs +0 -4
  312. package/esm2022/supported-browser.mjs +0 -2
  313. package/esm2022/validation/validation-handler.service.mjs +0 -44
  314. /package/{public_api.d.ts → public-api.d.ts} +0 -0
@@ -1,319 +0,0 @@
1
- import { Component, forwardRef, Input } from '@angular/core';
2
- // eslint-disable-next-line import/no-cycle
3
- import { formatDecimalCurrency, formatNonDecimalCurrency, formatNumberAsGiven } from '../directives/currency-formatter.directive';
4
- import { DECIMALS_SEPARATOR } from '../sdk-currency/currency.helper';
5
- import { FoehnInputComponent } from './foehn-input.component';
6
- import { FoehnInputStringComponent } from './foehn-input-string.component';
7
- import { CLEAN_DECIMAL_NUMBERS_PATTERN, CLEAN_NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN, CLEAN_NEGATIVE_NUMBERS_PATTERN, CLEAN_NUMBERS_PATTERN, DECIMAL_NUMBERS_PATTERN, HTML_DECIMAL_PATTERN, HTML_NO_DECIMAL_PATTERN, NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN, NEGATIVE_NUMBERS_PATTERN, NUMBERS_PATTERN } from './pattern.const';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../sdk-currency/currency.helper";
10
- import * as i2 from "../sdk-dictionary/sdk-dictionary.service";
11
- import * as i3 from "../foehn-icons/foehn-icon-times.component";
12
- import * as i4 from "@angular/common";
13
- import * as i5 from "@angular/forms";
14
- import * as i6 from "../foehn-validation-alerts/foehn-validation-alerts.component";
15
- import * as i7 from "../foehn-help-modal/foehn-help-modal.component";
16
- import * as i8 from "../sdk-dictionary/sdk-dictionary.pipe";
17
- const isDefined = (value) => value === 0 || !!value;
18
- export class FoehnInputNumberComponent extends FoehnInputStringComponent {
19
- constructor(currencyHelper, dictionaryService) {
20
- super();
21
- this.currencyHelper = currencyHelper;
22
- this.dictionaryService = dictionaryService;
23
- this.hideStandardHelpText = false;
24
- this.maxDecimalCount = 2;
25
- this.allowFreeInput = false;
26
- this.allowLeadingZero = false;
27
- }
28
- get model() {
29
- // If the setter is overridden, it's critical to override the getter too.
30
- return this.model_;
31
- }
32
- set model(value) {
33
- // This doesn't trigger the component's version of updateNgModel strait away as this might
34
- // be called before allowDecimal or allowNegative are properly set (before the init lifecycle
35
- // of the component). This is critical to not re-format the input before the OnInit, otherwise
36
- // we might end up with invalid value displayed to the user. this.updateNgModel is called implicitly
37
- // as super.updateNgModel will emit a change on this.modelChange.
38
- // FIXME this is a hack and should be refactored.
39
- super.updateNgModel(value);
40
- }
41
- ngOnInit() {
42
- super.ngOnInit();
43
- this.type = 'text';
44
- // Pattern used only for numpad trigger on mobile phones
45
- this.pattern = this.allowDecimal
46
- ? HTML_DECIMAL_PATTERN
47
- : HTML_NO_DECIMAL_PATTERN;
48
- this.maxlength = !!this.maxlength ? this.maxlength : 9;
49
- }
50
- ngOnChanges(changes) {
51
- const hasChanges = Object.keys(changes)
52
- .filter(k => k !== 'model')
53
- .map(k => changes[k])
54
- .find(change => change.currentValue !== change.previousValue);
55
- const helpTextHasChanged = changes.helpText?.currentValue !== changes.helpText?.previousValue;
56
- if (helpTextHasChanged) {
57
- this.initialHelpText = changes.helpText.currentValue;
58
- }
59
- if (hasChanges) {
60
- this.manageHelpText();
61
- }
62
- }
63
- getMaxLength() {
64
- if (this.allowFreeInput) {
65
- return null;
66
- }
67
- return super.getMaxLength();
68
- }
69
- updateNgModel(value) {
70
- if (this.isEmpty(value)) {
71
- this.setToEmpty(value);
72
- return;
73
- }
74
- const isDeleting = value.toString()?.length < this.model?.length;
75
- let cleanNumber;
76
- if (!this.allowFreeInput) {
77
- cleanNumber = this.getCleanNumber(value.toString());
78
- const isModelValid = this.isModelValid(cleanNumber);
79
- if (!isModelValid && !isDeleting) {
80
- cleanNumber = this.model;
81
- }
82
- }
83
- else {
84
- const noCommaString = this.replaceCommaWithDot(value);
85
- cleanNumber =
86
- noCommaString && typeof noCommaString === 'string'
87
- ? noCommaString.replace(CLEAN_NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN, '')
88
- : noCommaString;
89
- // check that it is a number in any of its possible form
90
- // to avoid -3.14-23--534
91
- if (!NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN.test(cleanNumber) &&
92
- !isDeleting) {
93
- cleanNumber = this.model;
94
- }
95
- }
96
- super.updateNgModel(cleanNumber);
97
- // Need to update HTML input value because we let user input what he wants and then we clean model
98
- this.updateInputElementValue(cleanNumber);
99
- }
100
- /**
101
- * To be used for post-formatting by directives.
102
- * @param value of model
103
- */
104
- forceUpdateNgModel(value) {
105
- this.model_ = value;
106
- this.updateInputElementValue(value);
107
- }
108
- isStringAValidNumber(value) {
109
- return this.getValidationRegex().test(value);
110
- }
111
- isModelValid(value) {
112
- return this.isStringAValidNumber(value);
113
- }
114
- getValidationRegex(isForClean = false) {
115
- if (this.allowDecimal || this.allowNegative) {
116
- // Allow decimal and negative
117
- if (this.allowDecimal && this.allowNegative) {
118
- return !isForClean
119
- ? NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN
120
- : CLEAN_NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN;
121
- }
122
- // Allow decimal
123
- if (this.allowDecimal) {
124
- return !isForClean
125
- ? DECIMAL_NUMBERS_PATTERN
126
- : CLEAN_DECIMAL_NUMBERS_PATTERN;
127
- }
128
- // Allow negative
129
- return !isForClean
130
- ? NEGATIVE_NUMBERS_PATTERN
131
- : CLEAN_NEGATIVE_NUMBERS_PATTERN;
132
- }
133
- return !isForClean ? NUMBERS_PATTERN : CLEAN_NUMBERS_PATTERN;
134
- }
135
- replaceCommaWithDot(value) {
136
- return value && typeof value === 'string'
137
- ? value.replace(new RegExp(',', 'g'), DECIMALS_SEPARATOR)
138
- : value;
139
- }
140
- removeNonNumericCharacters(value) {
141
- return value && typeof value === 'string'
142
- ? value.replace(this.getValidationRegex(true), '')
143
- : value;
144
- }
145
- cleanDecimals(value, separator = DECIMALS_SEPARATOR) {
146
- if (!value || !this.allowDecimal || !value.includes(separator)) {
147
- return value;
148
- }
149
- const [intg, dec] = value.split(separator);
150
- const cleanDec = dec.substring(0, this.maxDecimalCount);
151
- return intg + separator + cleanDec;
152
- }
153
- getCleanNumber(value) {
154
- const noCommaString = this.replaceCommaWithDot(value);
155
- const cleanDecimals = this.cleanDecimals(noCommaString);
156
- const cleanNonNumericCharacters = this.removeNonNumericCharacters(cleanDecimals);
157
- const cleanNumber = !this.allowLeadingZero
158
- ? this.removeLeadingZero(cleanNonNumericCharacters, this.allowDecimal)
159
- : cleanNonNumericCharacters;
160
- if (this.isEmptyWhenTrimmedIfString(cleanNumber)) {
161
- return null;
162
- }
163
- return cleanNumber.substring(0, this.getMaxLength());
164
- }
165
- updateInputElementValue(cleanNumber) {
166
- if (!this.inputElement) {
167
- // No need to update the native element if it doesn't yet exist.
168
- return;
169
- }
170
- const inputElemValue = this.inputElement.nativeElement.value;
171
- if (inputElemValue !== cleanNumber) {
172
- // Need to update HTML input value because we let user input what he wants and then we clean model
173
- // Do not set an undefined value into a "nativeElement" value otherwise it will print out "undefined" in input field
174
- this.inputElement.nativeElement.value =
175
- cleanNumber === undefined ? null : cleanNumber;
176
- }
177
- }
178
- setToEmpty(value) {
179
- // Empty means null, otherwise the backend doesn't handle numbers properly. We have to keep 'undefined'
180
- // if 'undefined' otherwise Angular complains about the value of the model being changed without updating
181
- // the view.
182
- const emptyValue = value === undefined ? undefined : null;
183
- super.updateNgModel(emptyValue);
184
- this.updateInputElementValue(emptyValue);
185
- }
186
- manageHelpText() {
187
- if (!!this.hideStandardHelpText) {
188
- this.helpText = this.initialHelpText;
189
- return;
190
- }
191
- if (!this.allowFreeInput) {
192
- if (isDefined(this.min) && isDefined(this.max)) {
193
- if (!!this.initialHelpText?.length) {
194
- this.helpText = `${this.initialHelpText}<br/>`;
195
- }
196
- else {
197
- this.helpText = '';
198
- }
199
- this.helpText += this.dictionaryService.getKeySync('foehn-input-number.standard-help-text.label', {
200
- minValue: formatNumberAsGiven(this.min.toString()),
201
- maxValue: formatNumberAsGiven(this.max.toString())
202
- });
203
- }
204
- return;
205
- }
206
- if (!!this.initialHelpText?.length) {
207
- this.helpText = `${this.initialHelpText}<br/>`;
208
- }
209
- else {
210
- this.helpText = '';
211
- }
212
- const maxIntegerCount = this.allowDecimal
213
- ? this.maxlength - this.maxDecimalCount - 1
214
- : this.maxlength;
215
- let maxAsString;
216
- if (!!this.max) {
217
- maxAsString = this.max;
218
- }
219
- else {
220
- maxAsString = '9'.repeat(maxIntegerCount);
221
- if (this.allowDecimal) {
222
- maxAsString += `.${'9'.repeat(this.maxDecimalCount)}`;
223
- }
224
- }
225
- let minAsString;
226
- if (this.min) {
227
- minAsString = this.min;
228
- }
229
- else {
230
- minAsString = this.allowNegative
231
- ? `-${'9'.repeat(maxIntegerCount - 1)}`
232
- : '0';
233
- if (this.allowDecimal) {
234
- minAsString += this.allowNegative
235
- ? `.${'9'.repeat(this.maxDecimalCount || 0)}`
236
- : `.${'0'.repeat(this.maxDecimalCount || 0)}`;
237
- }
238
- }
239
- this.helpText += this.dictionaryService.getKeySync('foehn-input-number.standard-help-text.label', {
240
- minValue: this.formatValue(minAsString),
241
- maxValue: this.formatValue(maxAsString)
242
- });
243
- }
244
- formatValue(value) {
245
- if (this.allowDecimal) {
246
- return formatDecimalCurrency(value?.toString(), this.maxDecimalCount, this.maxlength, this.allowFreeInput);
247
- }
248
- return formatNonDecimalCurrency(value?.toString());
249
- }
250
- removeLeadingZero(value, allowDecimal = false) {
251
- if (value === undefined || value === null) {
252
- return null;
253
- }
254
- // Never clean first character because it could be only "0" or "-"
255
- if (value.length === 1) {
256
- return value;
257
- }
258
- // For decimal values, we can't remove "0" from "0." or "-0." because we can't predict what comes after the dot
259
- if (allowDecimal && (value === '0.' || value === '-0.')) {
260
- return value;
261
- }
262
- // Remove "0" from "-0" for forbidden decimal values
263
- if (!allowDecimal &&
264
- value.includes('-') &&
265
- value.length === 2 &&
266
- value.substring(1) === '0') {
267
- return value.substring(0, 1);
268
- }
269
- // Clean positive or negative integer
270
- if (!value.includes(DECIMALS_SEPARATOR)) {
271
- // Remove "0" from "01", "02"... numbers
272
- if (!value.includes('-') &&
273
- value.length === 2 &&
274
- value.substring(0, 1) === '0') {
275
- return value.substring(1);
276
- }
277
- // Remove "0" from "-01", "-02"... numbers
278
- if (value.includes('-') &&
279
- value.length === 3 &&
280
- value.substring(1, 2) === '0') {
281
- return value.substring(0, 1) + value.substring(2);
282
- }
283
- }
284
- return value;
285
- }
286
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnInputNumberComponent, deps: [{ token: i1.CurrencyHelper }, { token: i2.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component }); }
287
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FoehnInputNumberComponent, selector: "foehn-input-number", inputs: { hideStandardHelpText: "hideStandardHelpText", allowDecimal: "allowDecimal", allowNegative: "allowNegative", maxDecimalCount: "maxDecimalCount", allowFreeInput: "allowFreeInput", allowLeadingZero: "allowLeadingZero", model: "model" }, providers: [
288
- {
289
- provide: FoehnInputComponent,
290
- useExisting: forwardRef(() => FoehnInputNumberComponent),
291
- multi: true
292
- }
293
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"form-group clearable-input-form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\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-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"standardHelpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'StandardHelpText'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"standardHelpText\"\n ></small>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <input\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n [class.clearable-input]=\"displayClearButton() | async\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.maxlength]=\"getMaxLength()\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [attr.autocapitalize]=\"autocapitalize\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.type]=\"type\"\n [attr.pattern]=\"pattern\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (paste)=\"onPaste($event)\"\n (ngModelChange)=\"updateNgModel($event)\"\n (input)=\"handleChange(entryComponent.value)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n #entryComponent\n />\n\n <button\n type=\"button\"\n [id]=\"buildChildId() + 'ClearButton'\"\n *ngIf=\"displayClearButton() | async\"\n class=\"clearable-input-clear-button btn\"\n (click)=\"onClear()\"\n >\n <foehn-icon-times\n class=\"clearable-input-clear-button-icon\"\n [title]=\"'foehn-input.clear-button.label' | fromDictionary\"\n ></foehn-icon-times>\n </button>\n</div>\n", styles: ["input::-ms-clear{display:none}input.clearable-input{padding-right:30px}.clearable-input-form-group{position:relative}:host ::ng-deep foehn-help-modal>.btn{padding-top:0!important;margin-top:0!important}.clearable-input-clear-button{position:absolute;bottom:4px;right:4px;height:30px;width:30px;background:none;border:none;box-shadow:none}.clearable-input-clear-button-icon{top:4px;right:8px;position:absolute}:host ::ng-deep .clearable-input-clear-button.btn .svg-inline--fa{color:#595959!important}:host ::ng-deep .clearable-input-clear-button.btn:hover .svg-inline--fa{color:#000!important}.chars-remaining{color:#757575;font-size:.9rem}.char-count-exceeded{color:#c21f39}:host ::ng-deep .sameLine-list{display:inline;list-style:none;padding:0}:host ::ng-deep .sameLine-list li{display:inline;padding:3px}\n"], dependencies: [{ kind: "component", type: i3.FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: i7.FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.SdkDictionaryPipe, name: "fromDictionary" }] }); }
294
- }
295
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnInputNumberComponent, decorators: [{
296
- type: Component,
297
- args: [{ selector: 'foehn-input-number', providers: [
298
- {
299
- provide: FoehnInputComponent,
300
- useExisting: forwardRef(() => FoehnInputNumberComponent),
301
- multi: true
302
- }
303
- ], template: "<div\n class=\"form-group clearable-input-form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\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-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"standardHelpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'StandardHelpText'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"standardHelpText\"\n ></small>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <input\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n [class.clearable-input]=\"displayClearButton() | async\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.maxlength]=\"getMaxLength()\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [attr.autocapitalize]=\"autocapitalize\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.type]=\"type\"\n [attr.pattern]=\"pattern\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (paste)=\"onPaste($event)\"\n (ngModelChange)=\"updateNgModel($event)\"\n (input)=\"handleChange(entryComponent.value)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n #entryComponent\n />\n\n <button\n type=\"button\"\n [id]=\"buildChildId() + 'ClearButton'\"\n *ngIf=\"displayClearButton() | async\"\n class=\"clearable-input-clear-button btn\"\n (click)=\"onClear()\"\n >\n <foehn-icon-times\n class=\"clearable-input-clear-button-icon\"\n [title]=\"'foehn-input.clear-button.label' | fromDictionary\"\n ></foehn-icon-times>\n </button>\n</div>\n", styles: ["input::-ms-clear{display:none}input.clearable-input{padding-right:30px}.clearable-input-form-group{position:relative}:host ::ng-deep foehn-help-modal>.btn{padding-top:0!important;margin-top:0!important}.clearable-input-clear-button{position:absolute;bottom:4px;right:4px;height:30px;width:30px;background:none;border:none;box-shadow:none}.clearable-input-clear-button-icon{top:4px;right:8px;position:absolute}:host ::ng-deep .clearable-input-clear-button.btn .svg-inline--fa{color:#595959!important}:host ::ng-deep .clearable-input-clear-button.btn:hover .svg-inline--fa{color:#000!important}.chars-remaining{color:#757575;font-size:.9rem}.char-count-exceeded{color:#c21f39}:host ::ng-deep .sameLine-list{display:inline;list-style:none;padding:0}:host ::ng-deep .sameLine-list li{display:inline;padding:3px}\n"] }]
304
- }], ctorParameters: () => [{ type: i1.CurrencyHelper }, { type: i2.SdkDictionaryService }], propDecorators: { hideStandardHelpText: [{
305
- type: Input
306
- }], allowDecimal: [{
307
- type: Input
308
- }], allowNegative: [{
309
- type: Input
310
- }], maxDecimalCount: [{
311
- type: Input
312
- }], allowFreeInput: [{
313
- type: Input
314
- }], allowLeadingZero: [{
315
- type: Input
316
- }], model: [{
317
- type: Input
318
- }] } });
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFJUixNQUFNLGVBQWUsQ0FBQztBQUV2QiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUNILHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ3RCLE1BQU0sNENBQTRDLENBQUM7QUFDcEQsT0FBTyxFQUVILGtCQUFrQixFQUNyQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFDSCw2QkFBNkIsRUFDN0IsMENBQTBDLEVBQzFDLDhCQUE4QixFQUM5QixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsb0NBQW9DLEVBQ3BDLHdCQUF3QixFQUN4QixlQUFlLEVBQ2xCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFFekIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFhLEVBQVcsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztBQWNyRSxNQUFNLE9BQU8seUJBQ1QsU0FBUSx5QkFBeUI7SUF1QmpDLFlBQ1ksY0FBOEIsRUFDOUIsaUJBQXVDO1FBRS9DLEtBQUssRUFBRSxDQUFDO1FBSEEs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QUNuQixLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQ2xCLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFDL0IsQ0FBQztnQkFDQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOytHQXpXUSx5QkFBeUI7bUdBQXpCLHlCQUF5QixpU0FSdkI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osc0VDL0NMLDQvRkF3RkE7OzRGRHZDYSx5QkFBeUI7a0JBWnJDLFNBQVM7K0JBQ0ksb0JBQW9CLGFBR25CO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtzSEFPRCxvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQWtCRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHtcbiAgICBmb3JtYXREZWNpbWFsQ3VycmVuY3ksXG4gICAgZm9ybWF0Tm9uRGVjaW1hbEN1cnJlbmN5LFxuICAgIGZvcm1hdE51bWJlckFzR2l2ZW5cbn0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jdXJyZW5jeS1mb3JtYXR0ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgQ3VycmVuY3lIZWxwZXIsXG4gICAgREVDSU1BTFNfU0VQQVJBVE9SXG59IGZyb20gJy4uL3Nkay1jdXJyZW5jeS9jdXJyZW5jeS5oZWxwZXInO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb2VobklucHV0U3RyaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1pbnB1dC1zdHJpbmcuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgQ0xFQU5fREVDSU1BTF9OVU1CRVJTX1BBVFRFUk4sXG4gICAgQ0xFQU5fTkVHQVRJVkVfQU5EX0RFQ0lNQUxfTlVNQkVSU19QQVRURVJOLFxuICAgIENMRUFOX05FR0FUSVZFX05VTUJFUlNfUEFUVEVSTixcbiAgICBDTEVBTl9OVU1CRVJTX1BBVFRFUk4sXG4gICAgREVDSU1BTF9OVU1CRVJTX1BBVFRFUk4sXG4gICAgSFRNTF9ERUNJTUFMX1BBVFRFUk4sXG4gICAgSFRNTF9OT19ERUNJTUFMX1BBVFRFUk4sXG4gICAgTkVHQVRJVkVfQU5EX0RFQ0lNQUxfTlVNQkVSU19QQVRURVJOLFxuICAgIE5FR0FUSVZFX05VTUJFUlNfUEFUVEVSTixcbiAgICBOVU1CRVJTX1BBVFRFUk5cbn0gZnJvbSAnLi9wYXR0ZXJuLmNvbnN0JztcblxuY29uc3QgaXNEZWZpbmVkID0gKHZhbHVlOiBudW1iZXIpOiBib29sZWFuID0+IHZhbHVlID09PSAwIHx8ICEhdmFsdWU7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4taW5wdXQtbnVtYmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWlucHV0LmNvbXBvbmVudC5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9laG5JbnB1dENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvZWhuSW5wdXROdW1iZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5JbnB1dE51bWJlckNvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dFN0cmluZ0NvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgICBASW5wdXQoKVxuICAgIGhpZGVTdGFuZGFyZEhlbHBUZXh0ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RGVjaW1hbDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dOZWdhdGl2ZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4RGVjaW1hbENvdW50ID0gMjtcblxuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dGcmVlSW5wdXQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dMZWFkaW5nWmVybyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBpbml0aWFsSGVscFRleHQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGN1cnJlbmN5SGVscGVyOiBDdXJyZW5jeUhlbHBlcixcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBnZXQgbW9kZWwoKTogc3RyaW5nIHtcbiAgICAgICAgLy8gSWYgdGhlIHNldHRlciBpcyBvdmVycmlkZGVuLCBpdCdzIGNyaXRpY2FsIHRvIG92ZXJyaWRlIHRoZSBnZXR0ZXIgdG9vLlxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbF87XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbW9kZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgdHJpZ2dlciB0aGUgY29tcG9uZW50J3MgdmVyc2lvbiBvZiB1cGRhdGVOZ01vZGVsIHN0cmFpdCBhd2F5IGFzIHRoaXMgbWlnaHRcbiAgICAgICAgLy8gYmUgY2FsbGVkIGJlZm9yZSBhbGxvd0RlY2ltYWwgb3IgYWxsb3dOZWdhdGl2ZSBhcmUgcHJvcGVybHkgc2V0IChiZWZvcmUgdGhlIGluaXQgbGlmZWN5Y2xlXG4gICAgICAgIC8vIG9mIHRoZSBjb21wb25lbnQpLiBUaGlzIGlzIGNyaXRpY2FsIHRvIG5vdCByZS1mb3JtYXQgdGhlIGlucHV0IGJlZm9yZSB0aGUgT25Jbml0LCBvdGhlcndpc2VcbiAgICAgICAgLy8gd2UgbWlnaHQgZW5kIHVwIHdpdGggaW52YWxpZCB2YWx1ZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIHRoaXMudXBkYXRlTmdNb2RlbCBpcyBjYWxsZWQgaW1wbGljaXRseVxuICAgICAgICAvLyBhcyBzdXBlci51cGRhdGVOZ01vZGVsIHdpbGwgZW1pdCBhIGNoYW5nZSBvbiB0aGlzLm1vZGVsQ2hhbmdlLlxuICAgICAgICAvLyBGSVhNRSB0aGlzIGlzIGEgaGFjayBhbmQgc2hvdWxkIGJlIHJlZmFjdG9yZWQuXG4gICAgICAgIHN1cGVyLnVwZGF0ZU5nTW9kZWwodmFsdWUpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcblxuICAgICAgICAvLyBQYXR0ZXJuIHVzZWQgb25seSBmb3IgbnVtcGFkIHRyaWdnZXIgb24gbW9iaWxlIHBob25lc1xuICAgICAgICB0aGlzLnBhdHRlcm4gPSB0aGlzLmFsbG93RGVjaW1hbFxuICAgICAgICAgICAgPyBIVE1MX0RFQ0lNQUxfUEFUVEVSTlxuICAgICAgICAgICAgOiBIVE1MX05PX0RFQ0lNQUxfUEFUVEVSTjtcblxuICAgICAgICB0aGlzLm1heGxlbmd0aCA9ICEhdGhpcy5tYXhsZW5ndGggPyB0aGlzLm1heGxlbmd0aCA6IDk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBoYXNDaGFuZ2VzID0gT2JqZWN0LmtleXMoY2hhbmdlcylcbiAgICAgICAgICAgIC5maWx0ZXIoayA9PiBrICE9PSAnbW9kZWwnKVxuICAgICAgICAgICAgLm1hcChrID0+IGNoYW5nZXNba10pXG4gICAgICAgICAgICAuZmluZChjaGFuZ2UgPT4gY2hhbmdlLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlLnByZXZpb3VzVmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IGhlbHBUZXh0SGFzQ2hhbmdlZCA9XG4gICAgICAgICAgICBjaGFuZ2VzLmhlbHBUZXh0Py5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMuaGVscFRleHQ/LnByZXZpb3VzVmFsdWU7XG5cbiAgICAgICAgaWYgKGhlbHBUZXh0SGFzQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsSGVscFRleHQgPSBjaGFuZ2VzLmhlbHBUZXh0LmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZUhlbHBUZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRNYXhMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dGcmVlSW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdXBlci5nZXRNYXhMZW5ndGgoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVOZ01vZGVsKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VG9FbXB0eSh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNEZWxldGluZyA9IHZhbHVlLnRvU3RyaW5nKCk/Lmxlbmd0aCA8IHRoaXMubW9kZWw/Lmxlbmd0aDtcblxuICAgICAgICBsZXQgY2xlYW5OdW1iZXI7XG4gICAgICAgIGlmICghdGhpcy5hbGxvd0ZyZWVJbnB1dCkge1xuICAgICAgICAgICAgY2xlYW5OdW1iZXIgPSB0aGlzLmdldENsZWFuTnVtYmVyKHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgY29uc3QgaXNNb2RlbFZhbGlkID0gdGhpcy5pc01vZGVsVmFsaWQoY2xlYW5OdW1iZXIpO1xuICAgICAgICAgICAgaWYgKCFpc01vZGVsVmFsaWQgJiYgIWlzRGVsZXRpbmcpIHtcbiAgICAgICAgICAgICAgICBjbGVhbk51bWJlciA9IHRoaXMubW9kZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBub0NvbW1hU3RyaW5nID0gdGhpcy5yZXBsYWNlQ29tbWFXaXRoRG90KHZhbHVlKTtcbiAgICAgICAgICAgIGNsZWFuTnVtYmVyID1cbiAgICAgICAgICAgICAgICBub0NvbW1hU3RyaW5nICYmIHR5cGVvZiBub0NvbW1hU3RyaW5nID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IG5vQ29tbWFTdHJpbmcucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xFQU5fTkVHQVRJVkVfQU5EX0RFQ0lNQUxfTlVNQkVSU19QQVRURVJOLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBub0NvbW1hU3RyaW5nO1xuICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCBpdCBpcyBhIG51bWJlciBpbiBhbnkgb2YgaXRzIHBvc3NpYmxlIGZvcm1cbiAgICAgICAgICAgIC8vIHRvIGF2b2lkIC0zLjE0LTIzLS01MzRcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhTkVHQVRJVkVfQU5EX0RFQ0lNQUxfTlVNQkVSU19QQVRURVJOLnRlc3QoY2xlYW5OdW1iZXIpICYmXG4gICAgICAgICAgICAgICAgIWlzRGVsZXRpbmdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNsZWFuTnVtYmVyID0gdGhpcy5tb2RlbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLnVwZGF0ZU5nTW9kZWwoY2xlYW5OdW1iZXIpO1xuXG4gICAgICAgIC8vIE5lZWQgdG8gdXBkYXRlIEhUTUwgaW5wdXQgdmFsdWUgYmVjYXVzZSB3ZSBsZXQgdXNlciBpbnB1dCB3aGF0IGhlIHdhbnRzIGFuZCB0aGVuIHdlIGNsZWFuIG1vZGVsXG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRFbGVtZW50VmFsdWUoY2xlYW5OdW1iZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvIGJlIHVzZWQgZm9yIHBvc3QtZm9ybWF0dGluZyBieSBkaXJlY3RpdmVzLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBvZiBtb2RlbFxuICAgICAqL1xuICAgIGZvcmNlVXBkYXRlTmdNb2RlbCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9kZWxfID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRFbGVtZW50VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTdHJpbmdBVmFsaWROdW1iZXIodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWxpZGF0aW9uUmVnZXgoKS50ZXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTW9kZWxWYWxpZCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU3RyaW5nQVZhbGlkTnVtYmVyKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkYXRpb25SZWdleChpc0ZvckNsZWFuOiBib29sZWFuID0gZmFsc2UpOiBSZWdFeHAge1xuICAgICAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWwgfHwgdGhpcy5hbGxvd05lZ2F0aXZlKSB7XG4gICAgICAgICAgICAvLyBBbGxvdyBkZWNpbWFsIGFuZCBuZWdhdGl2ZVxuICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dEZWNpbWFsICYmIHRoaXMuYWxsb3dOZWdhdGl2ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhaXNGb3JDbGVhblxuICAgICAgICAgICAgICAgICAgICA/IE5FR0FUSVZFX0FORF9ERUNJTUFMX05VTUJFUlNfUEFUVEVSTlxuICAgICAgICAgICAgICAgICAgICA6IENMRUFOX05FR0FUSVZFX0FORF9ERUNJTUFMX05VTUJFUlNfUEFUVEVSTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEFsbG93IGRlY2ltYWxcbiAgICAgICAgICAgIGlmICh0aGlzLmFsbG93RGVjaW1hbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhaXNGb3JDbGVhblxuICAgICAgICAgICAgICAgICAgICA/IERFQ0lNQUxfTlVNQkVSU19QQVRURVJOXG4gICAgICAgICAgICAgICAgICAgIDogQ0xFQU5fREVDSU1BTF9OVU1CRVJTX1BBVFRFUk47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBbGxvdyBuZWdhdGl2ZVxuICAgICAgICAgICAgcmV0dXJuICFpc0ZvckNsZWFuXG4gICAgICAgICAgICAgICAgPyBORUdBVElWRV9OVU1CRVJTX1BBVFRFUk5cbiAgICAgICAgICAgICAgICA6IENMRUFOX05FR0FUSVZFX05VTUJFUlNfUEFUVEVSTjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWlzRm9yQ2xlYW4gPyBOVU1CRVJTX1BBVFRFUk4gOiBDTEVBTl9OVU1CRVJTX1BBVFRFUk47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXBsYWNlQ29tbWFXaXRoRG90KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoJywnLCAnZycpLCBERUNJTUFMU19TRVBBUkFUT1IpXG4gICAgICAgICAgICA6IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlTm9uTnVtZXJpY0NoYXJhY3RlcnModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IHZhbHVlLnJlcGxhY2UodGhpcy5nZXRWYWxpZGF0aW9uUmVnZXgodHJ1ZSksICcnKVxuICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFuRGVjaW1hbHMoXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgIHNlcGFyYXRvcjogc3RyaW5nID0gREVDSU1BTFNfU0VQQVJBVE9SXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdGhpcy5hbGxvd0RlY2ltYWwgfHwgIXZhbHVlLmluY2x1ZGVzKHNlcGFyYXRvcikpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFtpbnRnLCBkZWNdID0gdmFsdWUuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgY2xlYW5EZWMgPSBkZWMuc3Vic3RyaW5nKDAsIHRoaXMubWF4RGVjaW1hbENvdW50KTtcblxuICAgICAgICByZXR1cm4gaW50ZyArIHNlcGFyYXRvciArIGNsZWFuRGVjO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2xlYW5OdW1iZXIodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG5vQ29tbWFTdHJpbmcgPSB0aGlzLnJlcGxhY2VDb21tYVdpdGhEb3QodmFsdWUpO1xuICAgICAgICBjb25zdCBjbGVhbkRlY2ltYWxzID0gdGhpcy5jbGVhbkRlY2ltYWxzKG5vQ29tbWFTdHJpbmcpO1xuICAgICAgICBjb25zdCBjbGVhbk5vbk51bWVyaWNDaGFyYWN0ZXJzID1cbiAgICAgICAgICAgIHRoaXMucmVtb3ZlTm9uTnVtZXJpY0NoYXJhY3RlcnMoY2xlYW5EZWNpbWFscyk7XG4gICAgICAgIGNvbnN0IGNsZWFuTnVtYmVyID0gIXRoaXMuYWxsb3dMZWFkaW5nWmVyb1xuICAgICAgICAgICAgPyB0aGlzLnJlbW92ZUxlYWRpbmdaZXJvKFxuICAgICAgICAgICAgICAgICAgY2xlYW5Ob25OdW1lcmljQ2hhcmFjdGVycyxcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWxsb3dEZWNpbWFsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogY2xlYW5Ob25OdW1lcmljQ2hhcmFjdGVycztcblxuICAgICAgICBpZiAodGhpcy5pc0VtcHR5V2hlblRyaW1tZWRJZlN0cmluZyhjbGVhbk51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsZWFuTnVtYmVyLnN1YnN0cmluZygwLCB0aGlzLmdldE1heExlbmd0aCgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUlucHV0RWxlbWVudFZhbHVlKGNsZWFuTnVtYmVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1cGRhdGUgdGhlIG5hdGl2ZSBlbGVtZW50IGlmIGl0IGRvZXNuJ3QgeWV0IGV4aXN0LlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5wdXRFbGVtVmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICBpZiAoaW5wdXRFbGVtVmFsdWUgIT09IGNsZWFuTnVtYmVyKSB7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHVwZGF0ZSBIVE1MIGlucHV0IHZhbHVlIGJlY2F1c2Ugd2UgbGV0IHVzZXIgaW5wdXQgd2hhdCBoZSB3YW50cyBhbmQgdGhlbiB3ZSBjbGVhbiBtb2RlbFxuICAgICAgICAgICAgLy8gRG8gbm90IHNldCBhbiB1bmRlZmluZWQgdmFsdWUgaW50byBhIFwibmF0aXZlRWxlbWVudFwiIHZhbHVlIG90aGVyd2lzZSBpdCB3aWxsIHByaW50IG91dCBcInVuZGVmaW5lZFwiIGluIGlucHV0IGZpZWxkXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID1cbiAgICAgICAgICAgICAgICBjbGVhbk51bWJlciA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNsZWFuTnVtYmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUb0VtcHR5KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gRW1wdHkgbWVhbnMgbnVsbCwgb3RoZXJ3aXNlIHRoZSBiYWNrZW5kIGRvZXNuJ3QgaGFuZGxlIG51bWJlcnMgcHJvcGVybHkuIFdlIGhhdmUgdG8ga2VlcCAndW5kZWZpbmVkJ1xuICAgICAgICAvLyBpZiAndW5kZWZpbmVkJyBvdGhlcndpc2UgQW5ndWxhciBjb21wbGFpbnMgYWJvdXQgdGhlIHZhbHVlIG9mIHRoZSBtb2RlbCBiZWluZyBjaGFuZ2VkIHdpdGhvdXQgdXBkYXRpbmdcbiAgICAgICAgLy8gdGhlIHZpZXcuXG4gICAgICAgIGNvbnN0IGVtcHR5VmFsdWUgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogbnVsbDtcbiAgICAgICAgc3VwZXIudXBkYXRlTmdNb2RlbChlbXB0eVZhbHVlKTtcbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dEVsZW1lbnRWYWx1ZShlbXB0eVZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZUhlbHBUZXh0KCk6IHZvaWQge1xuICAgICAgICBpZiAoISF0aGlzLmhpZGVTdGFuZGFyZEhlbHBUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmhlbHBUZXh0ID0gdGhpcy5pbml0aWFsSGVscFRleHQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuYWxsb3dGcmVlSW5wdXQpIHtcbiAgICAgICAgICAgIGlmIChpc0RlZmluZWQodGhpcy5taW4pICYmIGlzRGVmaW5lZCh0aGlzLm1heCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoISF0aGlzLmluaXRpYWxIZWxwVGV4dD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVscFRleHQgPSBgJHt0aGlzLmluaXRpYWxIZWxwVGV4dH08YnIvPmA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWxwVGV4dCA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmhlbHBUZXh0ICs9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LW51bWJlci5zdGFuZGFyZC1oZWxwLXRleHQubGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5WYWx1ZTogZm9ybWF0TnVtYmVyQXNHaXZlbih0aGlzLm1pbi50b1N0cmluZygpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFZhbHVlOiBmb3JtYXROdW1iZXJBc0dpdmVuKHRoaXMubWF4LnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEhdGhpcy5pbml0aWFsSGVscFRleHQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5oZWxwVGV4dCA9IGAke3RoaXMuaW5pdGlhbEhlbHBUZXh0fTxici8+YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGVscFRleHQgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1heEludGVnZXJDb3VudCA9IHRoaXMuYWxsb3dEZWNpbWFsXG4gICAgICAgICAgICA/IHRoaXMubWF4bGVuZ3RoIC0gdGhpcy5tYXhEZWNpbWFsQ291bnQgLSAxXG4gICAgICAgICAgICA6IHRoaXMubWF4bGVuZ3RoO1xuXG4gICAgICAgIGxldCBtYXhBc1N0cmluZztcbiAgICAgICAgaWYgKCEhdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIG1heEFzU3RyaW5nID0gdGhpcy5tYXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXhBc1N0cmluZyA9ICc5Jy5yZXBlYXQobWF4SW50ZWdlckNvdW50KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmFsbG93RGVjaW1hbCkge1xuICAgICAgICAgICAgICAgIG1heEFzU3RyaW5nICs9IGAuJHsnOScucmVwZWF0KHRoaXMubWF4RGVjaW1hbENvdW50KX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG1pbkFzU3RyaW5nO1xuICAgICAgICBpZiAodGhpcy5taW4pIHtcbiAgICAgICAgICAgIG1pbkFzU3RyaW5nID0gdGhpcy5taW47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtaW5Bc1N0cmluZyA9IHRoaXMuYWxsb3dOZWdhdGl2ZVxuICAgICAgICAgICAgICAgID8gYC0keyc5Jy5yZXBlYXQobWF4SW50ZWdlckNvdW50IC0gMSl9YFxuICAgICAgICAgICAgICAgIDogJzAnO1xuICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dEZWNpbWFsKSB7XG4gICAgICAgICAgICAgICAgbWluQXNTdHJpbmcgKz0gdGhpcy5hbGxvd05lZ2F0aXZlXG4gICAgICAgICAgICAgICAgICAgID8gYC4keyc5Jy5yZXBlYXQodGhpcy5tYXhEZWNpbWFsQ291bnQgfHwgMCl9YFxuICAgICAgICAgICAgICAgICAgICA6IGAuJHsnMCcucmVwZWF0KHRoaXMubWF4RGVjaW1hbENvdW50IHx8IDApfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhlbHBUZXh0ICs9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdmb2Vobi1pbnB1dC1udW1iZXIuc3RhbmRhcmQtaGVscC10ZXh0LmxhYmVsJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZTogdGhpcy5mb3JtYXRWYWx1ZShtaW5Bc1N0cmluZyksXG4gICAgICAgICAgICAgICAgbWF4VmFsdWU6IHRoaXMuZm9ybWF0VmFsdWUobWF4QXNTdHJpbmcpXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dEZWNpbWFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0RGVjaW1hbEN1cnJlbmN5KFxuICAgICAgICAgICAgICAgIHZhbHVlPy50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIHRoaXMubWF4RGVjaW1hbENvdW50LFxuICAgICAgICAgICAgICAgIHRoaXMubWF4bGVuZ3RoLFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsb3dGcmVlSW5wdXRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdE5vbkRlY2ltYWxDdXJyZW5jeSh2YWx1ZT8udG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVMZWFkaW5nWmVybyhcbiAgICAgICAgdmFsdWU6IHN0cmluZyxcbiAgICAgICAgYWxsb3dEZWNpbWFsOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOZXZlciBjbGVhbiBmaXJzdCBjaGFyYWN0ZXIgYmVjYXVzZSBpdCBjb3VsZCBiZSBvbmx5IFwiMFwiIG9yIFwiLVwiXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZvciBkZWNpbWFsIHZhbHVlcywgd2UgY2FuJ3QgcmVtb3ZlIFwiMFwiIGZyb20gXCIwLlwiIG9yIFwiLTAuXCIgYmVjYXVzZSB3ZSBjYW4ndCBwcmVkaWN0IHdoYXQgY29tZXMgYWZ0ZXIgdGhlIGRvdFxuICAgICAgICBpZiAoYWxsb3dEZWNpbWFsICYmICh2YWx1ZSA9PT0gJzAuJyB8fCB2YWx1ZSA9PT0gJy0wLicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW1vdmUgXCIwXCIgZnJvbSBcIi0wXCIgZm9yIGZvcmJpZGRlbiBkZWNpbWFsIHZhbHVlc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhYWxsb3dEZWNpbWFsICYmXG4gICAgICAgICAgICB2YWx1ZS5pbmNsdWRlcygnLScpICYmXG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPT09IDIgJiZcbiAgICAgICAgICAgIHZhbHVlLnN1YnN0cmluZygxKSA9PT0gJzAnXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnN1YnN0cmluZygwLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENsZWFuIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGludGVnZXJcbiAgICAgICAgaWYgKCF2YWx1ZS5pbmNsdWRlcyhERUNJTUFMU19TRVBBUkFUT1IpKSB7XG4gICAgICAgICAgICAvLyBSZW1vdmUgXCIwXCIgZnJvbSBcIjAxXCIsIFwiMDJcIi4uLiBudW1iZXJzXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXZhbHVlLmluY2x1ZGVzKCctJykgJiZcbiAgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGggPT09IDIgJiZcbiAgICAgICAgICAgICAgICB2YWx1ZS5zdWJzdHJpbmcoMCwgMSkgPT09ICcwJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVtb3ZlIFwiMFwiIGZyb20gXCItMDFcIiwgXCItMDJcIi4uLiBudW1iZXJzXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdmFsdWUuaW5jbHVkZXMoJy0nKSAmJlxuICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gMyAmJlxuICAgICAgICAgICAgICAgIHZhbHVlLnN1YnN0cmluZygxLCAyKSA9PT0gJzAnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuc3Vic3RyaW5nKDAsIDEpICsgdmFsdWUuc3Vic3RyaW5nKDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY2xlYXJhYmxlLWlucHV0LWZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWxhYmVsXCJcbiAgICAgICAgICAgIFthdHRyLmZvcl09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICAgICAqbmdJZj1cImxhYmVsICYmIHR5cGUgIT09ICdoaWRkZW4nXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAndmlzdWFsbHktaGlkZGVuJyA6IGxhYmVsU3R5bGVNb2RpZmllclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlcXVpcmVkICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxmb2Vobi1oZWxwLW1vZGFsXG4gICAgICAgICAgICBjbGFzcz1cInJlbW92ZVBhZGRpbmdCdXR0b25cIlxuICAgICAgICAgICAgKm5nSWY9XCIhIWhlbHBNb2RhbFwiXG4gICAgICAgICAgICBbbW9kYWxDb250ZW50XT1cImhlbHBNb2RhbFwiXG4gICAgICAgID48L2ZvZWhuLWhlbHAtbW9kYWw+XG4gICAgPC9kaXY+XG5cbiAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHMgW2NvbXBvbmVudF09XCJ0aGlzXCI+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgIDxzbWFsbFxuICAgICAgICAqbmdJZj1cInN0YW5kYXJkSGVscFRleHQgJiYgdHlwZSAhPT0gJ2hpZGRlbidcIlxuICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoKSArICdTdGFuZGFyZEhlbHBUZXh0J1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgW2lubmVySFRNTF09XCJzdGFuZGFyZEhlbHBUZXh0XCJcbiAgICA+PC9zbWFsbD5cblxuICAgIDxzbWFsbFxuICAgICAgICAqbmdJZj1cImhlbHBUZXh0ICYmIHR5cGUgIT09ICdoaWRkZW4nXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCkgKyAnSGVscCdcIlxuICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgID48L3NtYWxsPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPGlucHV0XG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IGhhc0luaGVyaXRFcnJvckZyb21QYXJlbnQoKVwiXG4gICAgICAgIFtjbGFzcy5jbGVhcmFibGUtaW5wdXRdPVwiZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgW25hbWVdPVwibmFtZSB8fCBsYWJlbFwiXG4gICAgICAgIFthdHRyLm1heGxlbmd0aF09XCJnZXRNYXhMZW5ndGgoKVwiXG4gICAgICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJnZXRBdXRvQ29tcGxldGUoKVwiXG4gICAgICAgIFthdHRyLmF1dG9jYXBpdGFsaXplXT1cImF1dG9jYXBpdGFsaXplXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgIFthdHRyLnBhdHRlcm5dPVwicGF0dGVyblwiXG4gICAgICAgIFthdHRyLm1pbl09XCJtaW5cIlxuICAgICAgICBbYXR0ci5tYXhdPVwibWF4XCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImdldERlc2NyaWJlZEJ5KClcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWQgfHwgbnVsbFwiXG4gICAgICAgIFtuZ01vZGVsXT1cIm1vZGVsXCJcbiAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZU5nTW9kZWwoJGV2ZW50KVwiXG4gICAgICAgIChpbnB1dCk9XCJoYW5kbGVDaGFuZ2UoZW50cnlDb21wb25lbnQudmFsdWUpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAjZW50cnlDb21wb25lbnRcbiAgICAvPlxuXG4gICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ0NsZWFyQnV0dG9uJ1wiXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwiY2xlYXJhYmxlLWlucHV0LWNsZWFyLWJ1dHRvbiBidG5cIlxuICAgICAgICAoY2xpY2spPVwib25DbGVhcigpXCJcbiAgICA+XG4gICAgICAgIDxmb2Vobi1pY29uLXRpbWVzXG4gICAgICAgICAgICBjbGFzcz1cImNsZWFyYWJsZS1pbnB1dC1jbGVhci1idXR0b24taWNvblwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ2ZvZWhuLWlucHV0LmNsZWFyLWJ1dHRvbi5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgID48L2ZvZWhuLWljb24tdGltZXM+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { Component, forwardRef } from '@angular/core';
2
- import { FoehnInputComponent } from './foehn-input.component';
3
- import { FoehnInputStringComponent } from './foehn-input-string.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../foehn-icons/foehn-icon-times.component";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "@angular/forms";
8
- import * as i4 from "../foehn-validation-alerts/foehn-validation-alerts.component";
9
- import * as i5 from "../foehn-help-modal/foehn-help-modal.component";
10
- import * as i6 from "../sdk-dictionary/sdk-dictionary.pipe";
11
- export class FoehnInputPasswordComponent extends FoehnInputStringComponent {
12
- constructor(ngZone) {
13
- super();
14
- this.ngZone = ngZone;
15
- }
16
- ngOnInit() {
17
- super.ngOnInit();
18
- this.type = 'password';
19
- this.autocomplete = 'current-password';
20
- }
21
- onModelChange(value) {
22
- clearTimeout(this.timeoutReference);
23
- if (value === undefined || value === null || !!value) {
24
- this.updateNgModel(value);
25
- }
26
- else {
27
- this.timeoutReference = setTimeout(() => {
28
- this.updateNgModel(null);
29
- }, 0);
30
- }
31
- }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnInputPasswordComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FoehnInputPasswordComponent, selector: "foehn-input-password", providers: [
34
- {
35
- provide: FoehnInputComponent,
36
- useExisting: forwardRef(() => FoehnInputPasswordComponent),
37
- multi: true
38
- }
39
- ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group clearable-input-form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\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-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"standardHelpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'StandardHelpText'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"standardHelpText\"\n ></small>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <input\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n [class.clearable-input]=\"displayClearButton() | async\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.maxlength]=\"getMaxLength()\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [attr.autocapitalize]=\"autocapitalize\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.type]=\"type\"\n [attr.pattern]=\"pattern\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (paste)=\"onPaste($event)\"\n (ngModelChange)=\"updateNgModel($event)\"\n (input)=\"handleChange(entryComponent.value)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n #entryComponent\n />\n\n <button\n type=\"button\"\n [id]=\"buildChildId() + 'ClearButton'\"\n *ngIf=\"displayClearButton() | async\"\n class=\"clearable-input-clear-button btn\"\n (click)=\"onClear()\"\n >\n <foehn-icon-times\n class=\"clearable-input-clear-button-icon\"\n [title]=\"'foehn-input.clear-button.label' | fromDictionary\"\n ></foehn-icon-times>\n </button>\n</div>\n", styles: ["input::-ms-clear{display:none}input.clearable-input{padding-right:30px}.clearable-input-form-group{position:relative}:host ::ng-deep foehn-help-modal>.btn{padding-top:0!important;margin-top:0!important}.clearable-input-clear-button{position:absolute;bottom:4px;right:4px;height:30px;width:30px;background:none;border:none;box-shadow:none}.clearable-input-clear-button-icon{top:4px;right:8px;position:absolute}:host ::ng-deep .clearable-input-clear-button.btn .svg-inline--fa{color:#595959!important}:host ::ng-deep .clearable-input-clear-button.btn:hover .svg-inline--fa{color:#000!important}.chars-remaining{color:#757575;font-size:.9rem}.char-count-exceeded{color:#c21f39}:host ::ng-deep .sameLine-list{display:inline;list-style:none;padding:0}:host ::ng-deep .sameLine-list li{display:inline;padding:3px}\n"], dependencies: [{ kind: "component", type: i1.FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: i5.FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.SdkDictionaryPipe, name: "fromDictionary" }] }); }
40
- }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnInputPasswordComponent, decorators: [{
42
- type: Component,
43
- args: [{ selector: 'foehn-input-password', providers: [
44
- {
45
- provide: FoehnInputComponent,
46
- useExisting: forwardRef(() => FoehnInputPasswordComponent),
47
- multi: true
48
- }
49
- ], template: "<div\n class=\"form-group clearable-input-form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\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-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"standardHelpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'StandardHelpText'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"standardHelpText\"\n ></small>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <input\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n [class.clearable-input]=\"displayClearButton() | async\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.maxlength]=\"getMaxLength()\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [attr.autocapitalize]=\"autocapitalize\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.type]=\"type\"\n [attr.pattern]=\"pattern\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (paste)=\"onPaste($event)\"\n (ngModelChange)=\"updateNgModel($event)\"\n (input)=\"handleChange(entryComponent.value)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n #entryComponent\n />\n\n <button\n type=\"button\"\n [id]=\"buildChildId() + 'ClearButton'\"\n *ngIf=\"displayClearButton() | async\"\n class=\"clearable-input-clear-button btn\"\n (click)=\"onClear()\"\n >\n <foehn-icon-times\n class=\"clearable-input-clear-button-icon\"\n [title]=\"'foehn-input.clear-button.label' | fromDictionary\"\n ></foehn-icon-times>\n </button>\n</div>\n", styles: ["input::-ms-clear{display:none}input.clearable-input{padding-right:30px}.clearable-input-form-group{position:relative}:host ::ng-deep foehn-help-modal>.btn{padding-top:0!important;margin-top:0!important}.clearable-input-clear-button{position:absolute;bottom:4px;right:4px;height:30px;width:30px;background:none;border:none;box-shadow:none}.clearable-input-clear-button-icon{top:4px;right:8px;position:absolute}:host ::ng-deep .clearable-input-clear-button.btn .svg-inline--fa{color:#595959!important}:host ::ng-deep .clearable-input-clear-button.btn:hover .svg-inline--fa{color:#000!important}.chars-remaining{color:#757575;font-size:.9rem}.char-count-exceeded{color:#c21f39}:host ::ng-deep .sameLine-list{display:inline;list-style:none;padding:0}:host ::ng-deep .sameLine-list li{display:inline;padding:3px}\n"] }]
50
- }], ctorParameters: () => [{ type: i0.NgZone }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtcGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LXBhc3N3b3JkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7O0FBYzNFLE1BQU0sT0FBTywyQkFDVCxTQUFRLHlCQUF5QjtJQUtqQyxZQUFvQixNQUFjO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBRFEsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUVsQyxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLGtCQUFrQixDQUFDO0lBQzNDLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN2QixZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0wsQ0FBQzsrR0F6QlEsMkJBQTJCO21HQUEzQiwyQkFBMkIsK0NBUnpCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztnQkFDMUQsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLGlEQ2ZMLDQvRkF3RkE7OzRGRHZFYSwyQkFBMkI7a0JBWnZDLFNBQVM7K0JBQ0ksc0JBQXNCLGFBR3JCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDOzRCQUMxRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgTmdab25lLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLWlucHV0LXN0cmluZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWlucHV0LXBhc3N3b3JkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWlucHV0LmNvbXBvbmVudC5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9laG5JbnB1dENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvZWhuSW5wdXRQYXNzd29yZENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobklucHV0UGFzc3dvcmRDb21wb25lbnRcbiAgICBleHRlbmRzIEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdGltZW91dFJlZmVyZW5jZTogYW55O1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3Bhc3N3b3JkJztcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGUgPSAnY3VycmVudC1wYXNzd29yZCc7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRSZWZlcmVuY2UpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCAhIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50aW1lb3V0UmVmZXJlbmNlID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKG51bGwpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwIGNsZWFyYWJsZS1pbnB1dC1mb3JtLWdyb3VwXCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbYXR0ci5pZF09XCJidWlsZElkKCdDb250YWluZXInKVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1sYWJlbFwiXG4gICAgICAgICAgICBbYXR0ci5mb3JdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICAgICAgKm5nSWY9XCJsYWJlbCAmJiB0eXBlICE9PSAnaGlkZGVuJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJpc0xhYmVsU3JPbmx5ID8gJ3Zpc3VhbGx5LWhpZGRlbicgOiBsYWJlbFN0eWxlTW9kaWZpZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8Zm9laG4taGVscC1tb2RhbFxuICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmVQYWRkaW5nQnV0dG9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiISFoZWxwTW9kYWxcIlxuICAgICAgICAgICAgW21vZGFsQ29udGVudF09XCJoZWxwTW9kYWxcIlxuICAgICAgICA+PC9mb2Vobi1oZWxwLW1vZGFsPlxuICAgIDwvZGl2PlxuXG4gICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzIFtjb21wb25lbnRdPVwidGhpc1wiPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICA8c21hbGxcbiAgICAgICAgKm5nSWY9XCJzdGFuZGFyZEhlbHBUZXh0ICYmIHR5cGUgIT09ICdoaWRkZW4nXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCkgKyAnU3RhbmRhcmRIZWxwVGV4dCdcIlxuICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwic3RhbmRhcmRIZWxwVGV4dFwiXG4gICAgPjwvc21hbGw+XG5cbiAgICA8c21hbGxcbiAgICAgICAgKm5nSWY9XCJoZWxwVGV4dCAmJiB0eXBlICE9PSAnaGlkZGVuJ1wiXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ0hlbHAnXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cImhlbHBUZXh0XCJcbiAgICA+PC9zbWFsbD5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDxpbnB1dFxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKSB8fCBoYXNJbmhlcml0RXJyb3JGcm9tUGFyZW50KClcIlxuICAgICAgICBbY2xhc3MuY2xlYXJhYmxlLWlucHV0XT1cImRpc3BsYXlDbGVhckJ1dHRvbigpIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIFtuYW1lXT1cIm5hbWUgfHwgbGFiZWxcIlxuICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwiZ2V0TWF4TGVuZ3RoKClcIlxuICAgICAgICBbYXR0ci5hdXRvY29tcGxldGVdPVwiZ2V0QXV0b0NvbXBsZXRlKClcIlxuICAgICAgICBbYXR0ci5hdXRvY2FwaXRhbGl6ZV09XCJhdXRvY2FwaXRhbGl6ZVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICBbYXR0ci50eXBlXT1cInR5cGVcIlxuICAgICAgICBbYXR0ci5wYXR0ZXJuXT1cInBhdHRlcm5cIlxuICAgICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIlxuICAgICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXG4gICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVOZ01vZGVsKCRldmVudClcIlxuICAgICAgICAoaW5wdXQpPVwiaGFuZGxlQ2hhbmdlKGVudHJ5Q29tcG9uZW50LnZhbHVlKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgI2VudHJ5Q29tcG9uZW50XG4gICAgLz5cblxuICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoKSArICdDbGVhckJ1dHRvbidcIlxuICAgICAgICAqbmdJZj1cImRpc3BsYXlDbGVhckJ1dHRvbigpIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cImNsZWFyYWJsZS1pbnB1dC1jbGVhci1idXR0b24gYnRuXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiXG4gICAgPlxuICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgY2xhc3M9XCJjbGVhcmFibGUtaW5wdXQtY2xlYXItYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidmb2Vobi1pbnB1dC5jbGVhci1idXR0b24ubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICA+PC9mb2Vobi1pY29uLXRpbWVzPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=