@po-ui/ng-templates 6.13.0 → 14.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/README.md +18 -18
  2. package/esm2020/lib/components/components.module.mjs +84 -86
  3. package/esm2020/lib/components/index.mjs +12 -12
  4. package/esm2020/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-modal-content.enum.mjs +17 -17
  5. package/esm2020/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-type.enum.mjs +17 -17
  6. package/esm2020/lib/components/po-modal-password-recovery/index.mjs +8 -8
  7. package/esm2020/lib/components/po-modal-password-recovery/interfaces/po-modal-password-recovery.interface.mjs +2 -2
  8. package/esm2020/lib/components/po-modal-password-recovery/literals/i18n/po-modal-password-recovery-literals.mjs +119 -119
  9. package/esm2020/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.mjs +172 -172
  10. package/esm2020/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.mjs +30 -30
  11. package/esm2020/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.mjs +433 -433
  12. package/esm2020/lib/components/po-modal-password-recovery/po-modal-password-recovery.module.mjs +29 -29
  13. package/esm2020/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.mjs +17 -17
  14. package/esm2020/lib/components/po-page-background/index.mjs +3 -3
  15. package/esm2020/lib/components/po-page-background/po-page-background.component.mjs +179 -179
  16. package/esm2020/lib/components/po-page-background/po-page-background.module.mjs +27 -27
  17. package/esm2020/lib/components/po-page-blocked-user/enums/po-page-blocked-user-reason.enum.mjs +17 -17
  18. package/esm2020/lib/components/po-page-blocked-user/index.mjs +8 -8
  19. package/esm2020/lib/components/po-page-blocked-user/interfaces/po-page-blocked-user-reason-params.interface.mjs +2 -2
  20. package/esm2020/lib/components/po-page-blocked-user/literals/i18n/po-page-blocked-user-literals.mjs +78 -78
  21. package/esm2020/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.mjs +170 -170
  22. package/esm2020/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.mjs +97 -97
  23. package/esm2020/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.mjs +100 -100
  24. package/esm2020/lib/components/po-page-blocked-user/po-page-blocked-user.component.mjs +104 -104
  25. package/esm2020/lib/components/po-page-blocked-user/po-page-blocked-user.module.mjs +29 -29
  26. package/esm2020/lib/components/po-page-change-password/index.mjs +7 -7
  27. package/esm2020/lib/components/po-page-change-password/interfaces/po-page-change-password-recovery.interface.mjs +2 -2
  28. package/esm2020/lib/components/po-page-change-password/interfaces/po-page-change-password-requirement.interface.mjs +2 -2
  29. package/esm2020/lib/components/po-page-change-password/interfaces/po-page-change-password.interface.mjs +2 -2
  30. package/esm2020/lib/components/po-page-change-password/literals/i18n/po-page-change-password-literals.mjs +79 -79
  31. package/esm2020/lib/components/po-page-change-password/po-page-change-password-base.component.mjs +186 -186
  32. package/esm2020/lib/components/po-page-change-password/po-page-change-password.component.mjs +388 -388
  33. package/esm2020/lib/components/po-page-change-password/po-page-change-password.module.mjs +30 -30
  34. package/esm2020/lib/components/po-page-change-password/po-page-change-password.service.mjs +17 -17
  35. package/esm2020/lib/components/po-page-dynamic-detail/index.mjs +10 -10
  36. package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-actions.interface.mjs +2 -2
  37. package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-back.interface.mjs +2 -2
  38. package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-edit.interface.mjs +2 -2
  39. package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-remove.interface.mjs +2 -2
  40. package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-field.interface.mjs +2 -2
  41. package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-metadata.interface.mjs +2 -2
  42. package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-options.interface.mjs +2 -2
  43. package/esm2020/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.mjs +43 -43
  44. package/esm2020/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.mjs +461 -461
  45. package/esm2020/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.module.mjs +51 -53
  46. package/esm2020/lib/components/po-page-dynamic-edit/index.mjs +10 -10
  47. package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-actions.interface.mjs +2 -2
  48. package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-cancel.interface.mjs +2 -2
  49. package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save-new.interface.mjs +2 -2
  50. package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save.interface.mjs +2 -2
  51. package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-field.interface.mjs +2 -2
  52. package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-metadata.interface.mjs +2 -2
  53. package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-options.interface.mjs +2 -2
  54. package/esm2020/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.mjs +43 -43
  55. package/esm2020/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.mjs +569 -569
  56. package/esm2020/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.module.mjs +57 -59
  57. package/esm2020/lib/components/po-page-dynamic-search/index.mjs +7 -7
  58. package/esm2020/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.mjs +134 -134
  59. package/esm2020/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-literals.interface.mjs +2 -2
  60. package/esm2020/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.mjs +74 -74
  61. package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.mjs +260 -260
  62. package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search-filters.interface.mjs +2 -2
  63. package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search-literals.interface.mjs +2 -2
  64. package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search-options.interface.mjs +2 -2
  65. package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.mjs +266 -266
  66. package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search.interface.mjs +2 -2
  67. package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search.module.mjs +52 -54
  68. package/esm2020/lib/components/po-page-dynamic-table/index.mjs +16 -16
  69. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-actions.interface.mjs +2 -2
  70. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-detail.interface.mjs +2 -2
  71. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-duplicate.interface.mjs +2 -2
  72. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-edit.interface.mjs +2 -2
  73. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-new.interface.mjs +2 -2
  74. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove-all.interface.mjs +2 -2
  75. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove.interface.mjs +2 -2
  76. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.mjs +2 -2
  77. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.mjs +2 -2
  78. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-field.interface.mjs +2 -2
  79. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-filters.interface.mjs +2 -2
  80. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-metadata.interface.mjs +2 -2
  81. package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-options.interface.mjs +2 -2
  82. package/esm2020/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.mjs +146 -104
  83. package/esm2020/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.mjs +58 -58
  84. package/esm2020/lib/components/po-page-dynamic-table/po-page-dynamic-table-literals.mjs +63 -63
  85. package/esm2020/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.mjs +938 -929
  86. package/esm2020/lib/components/po-page-dynamic-table/po-page-dynamic-table.module.mjs +50 -52
  87. package/esm2020/lib/components/po-page-job-scheduler/index.mjs +4 -4
  88. package/esm2020/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler-internal.interface.mjs +2 -2
  89. package/esm2020/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler.interface.mjs +2 -2
  90. package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.mjs +80 -80
  91. package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.mjs +368 -368
  92. package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-internal.mjs +15 -15
  93. package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-literals.mjs +195 -195
  94. package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.mjs +21 -21
  95. package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.mjs +80 -80
  96. package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.mjs +194 -194
  97. package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.mjs +260 -266
  98. package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler.module.mjs +70 -72
  99. package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.mjs +206 -206
  100. package/esm2020/lib/components/po-page-login/enums/po-page-login-authentication-type.enum.mjs +15 -15
  101. package/esm2020/lib/components/po-page-login/index.mjs +8 -8
  102. package/esm2020/lib/components/po-page-login/interfaces/po-page-login-custom-field.interface.mjs +2 -2
  103. package/esm2020/lib/components/po-page-login/interfaces/po-page-login-literals.interface.mjs +2 -2
  104. package/esm2020/lib/components/po-page-login/interfaces/po-page-login-recovery.interface.mjs +2 -2
  105. package/esm2020/lib/components/po-page-login/interfaces/po-page-login.interface.mjs +2 -2
  106. package/esm2020/lib/components/po-page-login/po-page-login-base.component.mjs +954 -954
  107. package/esm2020/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.mjs +135 -135
  108. package/esm2020/lib/components/po-page-login/po-page-login.component.mjs +467 -467
  109. package/esm2020/lib/components/po-page-login/po-page-login.module.mjs +31 -31
  110. package/esm2020/lib/components/po-page-login/po-page-login.service.mjs +31 -31
  111. package/esm2020/lib/index.mjs +4 -4
  112. package/esm2020/lib/po-templates.module.mjs +18 -18
  113. package/esm2020/lib/services/index.mjs +4 -4
  114. package/esm2020/lib/services/po-page-customization/index.mjs +4 -4
  115. package/esm2020/lib/services/po-page-customization/po-page-customization.module.mjs +24 -24
  116. package/esm2020/lib/services/po-page-customization/po-page-customization.service.mjs +85 -85
  117. package/esm2020/lib/services/po-page-customization/po-page-dynamic-options.interface.mjs +2 -2
  118. package/esm2020/lib/services/po-page-dynamic/index.mjs +3 -3
  119. package/esm2020/lib/services/po-page-dynamic/po-page-dynamic-literals.interface.mjs +2 -2
  120. package/esm2020/lib/services/po-page-dynamic/po-page-dynamic.module.mjs +24 -24
  121. package/esm2020/lib/services/po-page-dynamic/po-page-dynamic.service.mjs +102 -102
  122. package/esm2020/lib/services/services.module.mjs +18 -18
  123. package/esm2020/lib/utils/util.mjs +379 -379
  124. package/esm2020/po-ui-ng-templates.mjs +4 -4
  125. package/esm2020/public-api.mjs +2 -2
  126. package/fesm2015/po-ui-ng-templates.mjs +9328 -9295
  127. package/fesm2015/po-ui-ng-templates.mjs.map +1 -1
  128. package/fesm2020/po-ui-ng-templates.mjs +8962 -8929
  129. package/fesm2020/po-ui-ng-templates.mjs.map +1 -1
  130. package/{po-ui-ng-templates.d.ts → index.d.ts} +5 -5
  131. package/lib/components/components.module.d.ts +16 -16
  132. package/lib/components/index.d.ts +11 -11
  133. package/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-modal-content.enum.d.ts +15 -15
  134. package/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-type.enum.d.ts +15 -15
  135. package/lib/components/po-modal-password-recovery/index.d.ts +7 -7
  136. package/lib/components/po-modal-password-recovery/interfaces/po-modal-password-recovery.interface.d.ts +25 -25
  137. package/lib/components/po-modal-password-recovery/literals/i18n/po-modal-password-recovery-literals.d.ts +6 -6
  138. package/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.d.ts +283 -283
  139. package/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.d.ts +14 -14
  140. package/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.d.ts +90 -90
  141. package/lib/components/po-modal-password-recovery/po-modal-password-recovery.module.d.ts +16 -16
  142. package/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.d.ts +13 -13
  143. package/lib/components/po-page-background/index.d.ts +2 -2
  144. package/lib/components/po-page-background/po-page-background.component.d.ts +54 -54
  145. package/lib/components/po-page-background/po-page-background.module.d.ts +16 -16
  146. package/lib/components/po-page-blocked-user/enums/po-page-blocked-user-reason.enum.d.ts +15 -15
  147. package/lib/components/po-page-blocked-user/index.d.ts +7 -7
  148. package/lib/components/po-page-blocked-user/interfaces/po-page-blocked-user-reason-params.interface.d.ts +15 -15
  149. package/lib/components/po-page-blocked-user/literals/i18n/po-page-blocked-user-literals.d.ts +72 -72
  150. package/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.d.ts +146 -146
  151. package/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.d.ts +19 -19
  152. package/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.d.ts +26 -26
  153. package/lib/components/po-page-blocked-user/po-page-blocked-user.component.d.ts +43 -43
  154. package/lib/components/po-page-blocked-user/po-page-blocked-user.module.d.ts +18 -18
  155. package/lib/components/po-page-change-password/index.d.ts +6 -6
  156. package/lib/components/po-page-change-password/interfaces/po-page-change-password-recovery.interface.d.ts +30 -30
  157. package/lib/components/po-page-change-password/interfaces/po-page-change-password-requirement.interface.d.ts +17 -17
  158. package/lib/components/po-page-change-password/interfaces/po-page-change-password.interface.d.ts +13 -13
  159. package/lib/components/po-page-change-password/literals/i18n/po-page-change-password-literals.d.ts +6 -6
  160. package/lib/components/po-page-change-password/po-page-change-password-base.component.d.ts +233 -233
  161. package/lib/components/po-page-change-password/po-page-change-password.component.d.ts +93 -93
  162. package/lib/components/po-page-change-password/po-page-change-password.module.d.ts +17 -17
  163. package/lib/components/po-page-change-password/po-page-change-password.service.d.ts +10 -10
  164. package/lib/components/po-page-dynamic-detail/index.d.ts +9 -9
  165. package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-actions.interface.d.ts +95 -95
  166. package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-back.interface.d.ts +18 -18
  167. package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-edit.interface.d.ts +18 -18
  168. package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-remove.interface.d.ts +18 -18
  169. package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-field.interface.d.ts +16 -16
  170. package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-metadata.interface.d.ts +31 -31
  171. package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-options.interface.d.ts +36 -36
  172. package/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.d.ts +18 -18
  173. package/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.d.ts +257 -257
  174. package/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.module.d.ts +17 -17
  175. package/lib/components/po-page-dynamic-edit/index.d.ts +9 -9
  176. package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-actions.interface.d.ts +123 -123
  177. package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-cancel.interface.d.ts +18 -18
  178. package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save-new.interface.d.ts +44 -44
  179. package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save.interface.d.ts +43 -43
  180. package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-field.interface.d.ts +12 -12
  181. package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-metadata.interface.d.ts +25 -25
  182. package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-options.interface.d.ts +28 -28
  183. package/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.d.ts +18 -18
  184. package/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.d.ts +329 -329
  185. package/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.module.d.ts +17 -17
  186. package/lib/components/po-page-dynamic-search/index.d.ts +6 -6
  187. package/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.d.ts +48 -48
  188. package/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-literals.interface.d.ts +15 -15
  189. package/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.d.ts +29 -29
  190. package/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.d.ts +184 -184
  191. package/lib/components/po-page-dynamic-search/po-page-dynamic-search-filters.interface.d.ts +14 -14
  192. package/lib/components/po-page-dynamic-search/po-page-dynamic-search-literals.interface.d.ts +21 -21
  193. package/lib/components/po-page-dynamic-search/po-page-dynamic-search-options.interface.d.ts +59 -59
  194. package/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.d.ts +62 -62
  195. package/lib/components/po-page-dynamic-search/po-page-dynamic-search.interface.d.ts +29 -29
  196. package/lib/components/po-page-dynamic-search/po-page-dynamic-search.module.d.ts +18 -18
  197. package/lib/components/po-page-dynamic-table/index.d.ts +15 -15
  198. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-actions.interface.d.ts +196 -196
  199. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-detail.interface.d.ts +21 -21
  200. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-duplicate.interface.d.ts +29 -29
  201. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-edit.interface.d.ts +22 -22
  202. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-new.interface.d.ts +18 -18
  203. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove-all.interface.d.ts +39 -39
  204. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove.interface.d.ts +18 -18
  205. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.d.ts +97 -97
  206. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.d.ts +106 -106
  207. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-field.interface.d.ts +49 -49
  208. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-filters.interface.d.ts +18 -18
  209. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-metadata.interface.d.ts +31 -31
  210. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-options.interface.d.ts +91 -91
  211. package/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.d.ts +164 -130
  212. package/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.d.ts +26 -26
  213. package/lib/components/po-page-dynamic-table/po-page-dynamic-table-literals.d.ts +62 -62
  214. package/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.d.ts +386 -383
  215. package/lib/components/po-page-dynamic-table/po-page-dynamic-table.module.d.ts +19 -19
  216. package/lib/components/po-page-job-scheduler/index.d.ts +3 -3
  217. package/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler-internal.interface.d.ts +14 -14
  218. package/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler.interface.d.ts +48 -48
  219. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.d.ts +176 -176
  220. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.d.ts +52 -52
  221. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-internal.d.ts +9 -9
  222. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-literals.d.ts +194 -194
  223. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.d.ts +16 -16
  224. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.d.ts +14 -14
  225. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.d.ts +36 -36
  226. package/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.d.ts +116 -116
  227. package/lib/components/po-page-job-scheduler/po-page-job-scheduler.module.d.ts +13 -13
  228. package/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.d.ts +32 -32
  229. package/lib/components/po-page-login/enums/po-page-login-authentication-type.enum.d.ts +13 -13
  230. package/lib/components/po-page-login/index.d.ts +7 -7
  231. package/lib/components/po-page-login/interfaces/po-page-login-custom-field.interface.d.ts +72 -72
  232. package/lib/components/po-page-login/interfaces/po-page-login-literals.interface.d.ts +59 -59
  233. package/lib/components/po-page-login/interfaces/po-page-login-recovery.interface.d.ts +30 -30
  234. package/lib/components/po-page-login/interfaces/po-page-login.interface.d.ts +15 -15
  235. package/lib/components/po-page-login/po-page-login-base.component.d.ts +663 -663
  236. package/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.d.ts +19 -19
  237. package/lib/components/po-page-login/po-page-login.component.d.ts +72 -72
  238. package/lib/components/po-page-login/po-page-login.module.d.ts +18 -18
  239. package/lib/components/po-page-login/po-page-login.service.d.ts +12 -12
  240. package/lib/index.d.ts +3 -3
  241. package/lib/po-templates.module.d.ts +8 -8
  242. package/lib/services/index.d.ts +3 -3
  243. package/lib/services/po-page-customization/index.d.ts +3 -3
  244. package/lib/services/po-page-customization/po-page-customization.module.d.ts +13 -13
  245. package/lib/services/po-page-customization/po-page-customization.service.d.ts +19 -19
  246. package/lib/services/po-page-customization/po-page-dynamic-options.interface.d.ts +8 -8
  247. package/lib/services/po-page-dynamic/index.d.ts +2 -2
  248. package/lib/services/po-page-dynamic/po-page-dynamic-literals.interface.d.ts +4 -4
  249. package/lib/services/po-page-dynamic/po-page-dynamic.module.d.ts +13 -13
  250. package/lib/services/po-page-dynamic/po-page-dynamic.service.d.ts +31 -31
  251. package/lib/services/services.module.d.ts +8 -8
  252. package/lib/utils/util.d.ts +170 -170
  253. package/package.json +15 -15
  254. package/po-ui-ng-templates-14.0.0-next.0.tgz +0 -0
  255. package/public-api.d.ts +1 -1
  256. package/schematics/README.md +14 -14
  257. package/schematics/collection.json +50 -50
  258. package/schematics/ng-add/index.d.ts +8 -8
  259. package/schematics/ng-add/index.js +60 -60
  260. package/schematics/ng-add/index.spec.d.ts +1 -1
  261. package/schematics/ng-add/index.spec.js +90 -90
  262. package/schematics/ng-add/index.spec.js.map +1 -1
  263. package/schematics/ng-add/schema.json +16 -7
  264. package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  265. package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
  266. package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +14 -14
  267. package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  268. package/schematics/ng-generate/po-page-blocked-user/index.d.ts +4 -4
  269. package/schematics/ng-generate/po-page-blocked-user/index.js +12 -12
  270. package/schematics/ng-generate/po-page-blocked-user/index.spec.d.ts +1 -1
  271. package/schematics/ng-generate/po-page-blocked-user/index.spec.js +120 -120
  272. package/schematics/ng-generate/po-page-blocked-user/index.spec.js.map +1 -1
  273. package/schematics/ng-generate/po-page-blocked-user/schema.d.ts +3 -3
  274. package/schematics/ng-generate/po-page-blocked-user/schema.js +2 -2
  275. package/schematics/ng-generate/po-page-blocked-user/schema.json +67 -67
  276. package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  277. package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
  278. package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +14 -14
  279. package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  280. package/schematics/ng-generate/po-page-change-password/index.d.ts +4 -4
  281. package/schematics/ng-generate/po-page-change-password/index.js +12 -12
  282. package/schematics/ng-generate/po-page-change-password/index.spec.d.ts +1 -1
  283. package/schematics/ng-generate/po-page-change-password/index.spec.js +120 -120
  284. package/schematics/ng-generate/po-page-change-password/index.spec.js.map +1 -1
  285. package/schematics/ng-generate/po-page-change-password/schema.d.ts +3 -3
  286. package/schematics/ng-generate/po-page-change-password/schema.js +2 -2
  287. package/schematics/ng-generate/po-page-change-password/schema.json +67 -67
  288. package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  289. package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -5
  290. package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
  291. package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +23 -23
  292. package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  293. package/schematics/ng-generate/po-page-dynamic-detail/index.d.ts +4 -4
  294. package/schematics/ng-generate/po-page-dynamic-detail/index.js +12 -12
  295. package/schematics/ng-generate/po-page-dynamic-detail/index.spec.d.ts +1 -1
  296. package/schematics/ng-generate/po-page-dynamic-detail/index.spec.js +120 -120
  297. package/schematics/ng-generate/po-page-dynamic-detail/index.spec.js.map +1 -1
  298. package/schematics/ng-generate/po-page-dynamic-detail/schema.d.ts +3 -3
  299. package/schematics/ng-generate/po-page-dynamic-detail/schema.js +2 -2
  300. package/schematics/ng-generate/po-page-dynamic-detail/schema.json +67 -67
  301. package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  302. package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -5
  303. package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
  304. package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +23 -23
  305. package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  306. package/schematics/ng-generate/po-page-dynamic-edit/index.d.ts +4 -4
  307. package/schematics/ng-generate/po-page-dynamic-edit/index.js +12 -12
  308. package/schematics/ng-generate/po-page-dynamic-edit/index.spec.d.ts +1 -1
  309. package/schematics/ng-generate/po-page-dynamic-edit/index.spec.js +120 -120
  310. package/schematics/ng-generate/po-page-dynamic-edit/index.spec.js.map +1 -1
  311. package/schematics/ng-generate/po-page-dynamic-edit/schema.d.ts +3 -3
  312. package/schematics/ng-generate/po-page-dynamic-edit/schema.js +2 -2
  313. package/schematics/ng-generate/po-page-dynamic-edit/schema.json +67 -67
  314. package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  315. package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -5
  316. package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
  317. package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +28 -28
  318. package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  319. package/schematics/ng-generate/po-page-dynamic-search/index.d.ts +4 -4
  320. package/schematics/ng-generate/po-page-dynamic-search/index.js +12 -12
  321. package/schematics/ng-generate/po-page-dynamic-search/index.spec.d.ts +1 -1
  322. package/schematics/ng-generate/po-page-dynamic-search/index.spec.js +120 -120
  323. package/schematics/ng-generate/po-page-dynamic-search/index.spec.js.map +1 -1
  324. package/schematics/ng-generate/po-page-dynamic-search/schema.d.ts +3 -3
  325. package/schematics/ng-generate/po-page-dynamic-search/schema.js +2 -2
  326. package/schematics/ng-generate/po-page-dynamic-search/schema.json +67 -67
  327. package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  328. package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -5
  329. package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
  330. package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +21 -21
  331. package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  332. package/schematics/ng-generate/po-page-dynamic-table/index.d.ts +4 -4
  333. package/schematics/ng-generate/po-page-dynamic-table/index.js +12 -12
  334. package/schematics/ng-generate/po-page-dynamic-table/index.spec.d.ts +1 -1
  335. package/schematics/ng-generate/po-page-dynamic-table/index.spec.js +120 -120
  336. package/schematics/ng-generate/po-page-dynamic-table/index.spec.js.map +1 -1
  337. package/schematics/ng-generate/po-page-dynamic-table/schema.d.ts +3 -3
  338. package/schematics/ng-generate/po-page-dynamic-table/schema.js +2 -2
  339. package/schematics/ng-generate/po-page-dynamic-table/schema.json +67 -67
  340. package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  341. package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +3 -3
  342. package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
  343. package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +17 -17
  344. package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  345. package/schematics/ng-generate/po-page-job-scheduler/index.d.ts +4 -4
  346. package/schematics/ng-generate/po-page-job-scheduler/index.js +12 -12
  347. package/schematics/ng-generate/po-page-job-scheduler/index.spec.d.ts +1 -1
  348. package/schematics/ng-generate/po-page-job-scheduler/index.spec.js +120 -120
  349. package/schematics/ng-generate/po-page-job-scheduler/index.spec.js.map +1 -1
  350. package/schematics/ng-generate/po-page-job-scheduler/schema.d.ts +3 -3
  351. package/schematics/ng-generate/po-page-job-scheduler/schema.js +2 -2
  352. package/schematics/ng-generate/po-page-job-scheduler/schema.json +67 -67
  353. package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  354. package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
  355. package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +14 -14
  356. package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  357. package/schematics/ng-generate/po-page-login/index.d.ts +4 -4
  358. package/schematics/ng-generate/po-page-login/index.js +12 -12
  359. package/schematics/ng-generate/po-page-login/index.spec.d.ts +1 -1
  360. package/schematics/ng-generate/po-page-login/index.spec.js +120 -120
  361. package/schematics/ng-generate/po-page-login/index.spec.js.map +1 -1
  362. package/schematics/ng-generate/po-page-login/schema.d.ts +3 -3
  363. package/schematics/ng-generate/po-page-login/schema.js +2 -2
  364. package/schematics/ng-generate/po-page-login/schema.json +67 -67
  365. package/po-ui-ng-templates-6.13.0.tgz +0 -0
@@ -1,467 +1,467 @@
1
- import { NgForm } from '@angular/forms';
2
- import { Component, ViewChild, ViewContainerRef } from '@angular/core';
3
- import { isExternalLink } from '../../utils/util';
4
- import { PoModalPasswordRecoveryComponent } from '../po-modal-password-recovery/po-modal-password-recovery.component';
5
- import { PoModalPasswordRecoveryType } from '../po-modal-password-recovery/enums/po-modal-password-recovery-type.enum';
6
- import { PoPageLoginBaseComponent, poPageLoginLiteralIn, poPageLoginLiteralsDefault } from './po-page-login-base.component';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/router";
9
- import * as i2 from "@po-ui/ng-components";
10
- import * as i3 from "./po-page-login.service";
11
- import * as i4 from "../po-page-background/po-page-background.component";
12
- import * as i5 from "@angular/common";
13
- import * as i6 from "@angular/forms";
14
- import * as i7 from "./po-page-login-popover/po-page-login-popover.component";
15
- const _c0 = ["loginForm"];
16
- const _c1 = ["pageLogin"];
17
- function PoPageLoginComponent_po_tag_9_Template(rf, ctx) { if (rf & 1) {
18
- i0.ɵɵelement(0, "po-tag", 28);
19
- } if (rf & 2) {
20
- const ctx_r1 = i0.ɵɵnextContext();
21
- i0.ɵɵproperty("p-value", ctx_r1.environment);
22
- } }
23
- function PoPageLoginComponent_div_18_span_1_Template(rf, ctx) { if (rf & 1) {
24
- i0.ɵɵelement(0, "span", 31);
25
- } if (rf & 2) {
26
- const ctx_r13 = i0.ɵɵnextContext(2);
27
- i0.ɵɵproperty("p-tooltip", ctx_r13.pageLoginLiterals.loginHint);
28
- } }
29
- function PoPageLoginComponent_div_18_Template(rf, ctx) { if (rf & 1) {
30
- i0.ɵɵelementStart(0, "div", 29);
31
- i0.ɵɵtemplate(1, PoPageLoginComponent_div_18_span_1_Template, 1, 1, "span", 30);
32
- i0.ɵɵelementEnd();
33
- } if (rf & 2) {
34
- const ctx_r3 = i0.ɵɵnextContext();
35
- i0.ɵɵclassProp("po-page-login-info-icon-container-dynamic", !ctx_r3.pageLoginLiterals.loginHint && !ctx_r3.pageLoginLiterals.rememberUserHint);
36
- i0.ɵɵadvance(1);
37
- i0.ɵɵproperty("ngIf", ctx_r3.pageLoginLiterals.loginHint);
38
- } }
39
- function PoPageLoginComponent_div_20_Template(rf, ctx) { if (rf & 1) {
40
- i0.ɵɵelementStart(0, "div", 32);
41
- i0.ɵɵelement(1, "span", 33);
42
- i0.ɵɵelementStart(2, "span", 34);
43
- i0.ɵɵtext(3);
44
- i0.ɵɵelementEnd()();
45
- } if (rf & 2) {
46
- const error_r14 = ctx.$implicit;
47
- i0.ɵɵadvance(3);
48
- i0.ɵɵtextInterpolate(error_r14);
49
- } }
50
- function PoPageLoginComponent_div_24_po_page_login_popover_1_Template(rf, ctx) { if (rf & 1) {
51
- const _r17 = i0.ɵɵgetCurrentView();
52
- i0.ɵɵelementStart(0, "po-page-login-popover", 37);
53
- i0.ɵɵlistener("p-forgot-password", function PoPageLoginComponent_div_24_po_page_login_popover_1_Template_po_page_login_popover_p_forgot_password_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(2); return ctx_r16.openUrl($event); });
54
- i0.ɵɵelementEnd();
55
- } if (rf & 2) {
56
- const ctx_r15 = i0.ɵɵnextContext(2);
57
- i0.ɵɵproperty("p-literals", ctx_r15.pageLoginLiterals)("p-recovery", ctx_r15.recovery)("p-remaining-attempts", ctx_r15.exceededAttemptsWarning);
58
- } }
59
- function PoPageLoginComponent_div_24_Template(rf, ctx) { if (rf & 1) {
60
- i0.ɵɵelementStart(0, "div", 35);
61
- i0.ɵɵtemplate(1, PoPageLoginComponent_div_24_po_page_login_popover_1_Template, 1, 3, "po-page-login-popover", 36);
62
- i0.ɵɵelementEnd();
63
- } if (rf & 2) {
64
- const ctx_r5 = i0.ɵɵnextContext();
65
- i0.ɵɵadvance(1);
66
- i0.ɵɵproperty("ngIf", ctx_r5.showExceededAttemptsWarning && ctx_r5.exceededAttemptsWarning);
67
- } }
68
- function PoPageLoginComponent_div_26_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵelementStart(0, "div", 32);
70
- i0.ɵɵelement(1, "span", 33);
71
- i0.ɵɵelementStart(2, "span", 34);
72
- i0.ɵɵtext(3);
73
- i0.ɵɵelementEnd()();
74
- } if (rf & 2) {
75
- const error_r18 = ctx.$implicit;
76
- i0.ɵɵadvance(3);
77
- i0.ɵɵtextInterpolate(error_r18);
78
- } }
79
- function PoPageLoginComponent_po_input_27_Template(rf, ctx) { if (rf & 1) {
80
- const _r20 = i0.ɵɵgetCurrentView();
81
- i0.ɵɵelementStart(0, "po-input", 38);
82
- i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_input_27_Template_po_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(); return ctx_r19.customFieldObject.value = $event; })("keyup.enter", function PoPageLoginComponent_po_input_27_Template_po_input_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r21 = i0.ɵɵnextContext(); const _r2 = i0.ɵɵreference(13); return _r2.valid && ctx_r21.onLoginSubmit(); });
83
- i0.ɵɵelementEnd();
84
- } if (rf & 2) {
85
- const ctx_r7 = i0.ɵɵnextContext();
86
- i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r7.pageLoginLiterals.loginHint && !ctx_r7.pageLoginLiterals.rememberUserHint);
87
- i0.ɵɵproperty("ngModel", ctx_r7.customFieldObject.value)("p-error-pattern", ctx_r7.customFieldObject.errorPattern || ctx_r7.pageLoginLiterals.customFieldErrorPattern)("p-pattern", ctx_r7.customFieldObject.pattern)("p-placeholder", ctx_r7.customFieldObject.placeholder || ctx_r7.pageLoginLiterals.customFieldPlaceholder);
88
- } }
89
- function PoPageLoginComponent_po_combo_28_Template(rf, ctx) { if (rf & 1) {
90
- const _r23 = i0.ɵɵgetCurrentView();
91
- i0.ɵɵelementStart(0, "po-combo", 39);
92
- i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_combo_28_Template_po_combo_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(); return ctx_r22.customFieldObject.value = $event; });
93
- i0.ɵɵelementEnd();
94
- } if (rf & 2) {
95
- const ctx_r8 = i0.ɵɵnextContext();
96
- i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r8.pageLoginLiterals.loginHint && !ctx_r8.pageLoginLiterals.rememberUserHint);
97
- i0.ɵɵproperty("ngModel", ctx_r8.customFieldObject.value)("p-field-value", ctx_r8.customFieldObject.fieldValue)("p-filter-service", ctx_r8.customFieldObject.url)("p-placeholder", ctx_r8.customFieldObject.placeholder || ctx_r8.pageLoginLiterals.customFieldPlaceholder);
98
- } }
99
- function PoPageLoginComponent_po_select_29_Template(rf, ctx) { if (rf & 1) {
100
- const _r25 = i0.ɵɵgetCurrentView();
101
- i0.ɵɵelementStart(0, "po-select", 40);
102
- i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_select_29_Template_po_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(); return ctx_r24.customFieldObject.value = $event; });
103
- i0.ɵɵelementEnd();
104
- } if (rf & 2) {
105
- const ctx_r9 = i0.ɵɵnextContext();
106
- i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r9.pageLoginLiterals.loginHint && !ctx_r9.pageLoginLiterals.rememberUserHint);
107
- i0.ɵɵproperty("ngModel", ctx_r9.customFieldObject.value)("p-placeholder", ctx_r9.customFieldObject.placeholder || ctx_r9.pageLoginLiterals.customFieldPlaceholder)("p-options", ctx_r9.customFieldObject.options);
108
- } }
109
- function PoPageLoginComponent_div_31_div_2_span_1_Template(rf, ctx) { if (rf & 1) {
110
- i0.ɵɵelement(0, "span", 31);
111
- } if (rf & 2) {
112
- const ctx_r27 = i0.ɵɵnextContext(3);
113
- i0.ɵɵproperty("p-tooltip", ctx_r27.pageLoginLiterals.rememberUserHint);
114
- } }
115
- function PoPageLoginComponent_div_31_div_2_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelementStart(0, "div", 43);
117
- i0.ɵɵtemplate(1, PoPageLoginComponent_div_31_div_2_span_1_Template, 1, 1, "span", 30);
118
- i0.ɵɵelementEnd();
119
- } if (rf & 2) {
120
- const ctx_r26 = i0.ɵɵnextContext(2);
121
- i0.ɵɵclassProp("po-page-login-info-icon-container-dynamic", !ctx_r26.pageLoginLiterals.rememberUserHint);
122
- i0.ɵɵadvance(1);
123
- i0.ɵɵproperty("ngIf", ctx_r26.pageLoginLiterals.rememberUserHint);
124
- } }
125
- function PoPageLoginComponent_div_31_Template(rf, ctx) { if (rf & 1) {
126
- const _r29 = i0.ɵɵgetCurrentView();
127
- i0.ɵɵelementStart(0, "div", 13)(1, "po-switch", 41);
128
- i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_div_31_Template_po_switch_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(); return ctx_r28.rememberUser = $event; })("keyup.enter", function PoPageLoginComponent_div_31_Template_po_switch_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r29); const ctx_r30 = i0.ɵɵnextContext(); const _r2 = i0.ɵɵreference(13); return _r2.valid && ctx_r30.onLoginSubmit(); });
129
- i0.ɵɵelementEnd();
130
- i0.ɵɵtemplate(2, PoPageLoginComponent_div_31_div_2_Template, 2, 3, "div", 42);
131
- i0.ɵɵelementEnd();
132
- } if (rf & 2) {
133
- const ctx_r10 = i0.ɵɵnextContext();
134
- i0.ɵɵadvance(1);
135
- i0.ɵɵproperty("ngModel", ctx_r10.rememberUser)("p-label-off", ctx_r10.pageLoginLiterals.rememberUser)("p-label-on", ctx_r10.pageLoginLiterals.rememberUser);
136
- i0.ɵɵadvance(1);
137
- i0.ɵɵproperty("ngIf", ctx_r10.pageLoginLiterals.loginHint || ctx_r10.pageLoginLiterals.rememberUserHint);
138
- } }
139
- function PoPageLoginComponent_div_33_Template(rf, ctx) { if (rf & 1) {
140
- const _r32 = i0.ɵɵgetCurrentView();
141
- i0.ɵɵelementStart(0, "div", 44)(1, "a", 45);
142
- i0.ɵɵlistener("click", function PoPageLoginComponent_div_33_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r32); const ctx_r31 = i0.ɵɵnextContext(); return ctx_r31.openUrl(ctx_r31.recovery); });
143
- i0.ɵɵtext(2);
144
- i0.ɵɵelementEnd()();
145
- } if (rf & 2) {
146
- const ctx_r11 = i0.ɵɵnextContext();
147
- i0.ɵɵadvance(2);
148
- i0.ɵɵtextInterpolate(ctx_r11.pageLoginLiterals.forgotPassword);
149
- } }
150
- function PoPageLoginComponent_div_34_Template(rf, ctx) { if (rf & 1) {
151
- const _r34 = i0.ɵɵgetCurrentView();
152
- i0.ɵɵelementStart(0, "div", 46)(1, "a", 45);
153
- i0.ɵɵlistener("click", function PoPageLoginComponent_div_34_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(); return ctx_r33.openUrl(ctx_r33.registerUrl); });
154
- i0.ɵɵtext(2);
155
- i0.ɵɵelementEnd()();
156
- } if (rf & 2) {
157
- const ctx_r12 = i0.ɵɵnextContext();
158
- i0.ɵɵadvance(2);
159
- i0.ɵɵtextInterpolate(ctx_r12.pageLoginLiterals.registerUrl);
160
- } }
161
- /**
162
- * @docsExtends PoPageLoginBaseComponent
163
- *
164
- * @example
165
- *
166
- * <example name="po-page-login-basic" title="PO Page Login Basic">
167
- * <file name="sample-po-page-login-basic/sample-po-page-login-basic.component.html"> </file>
168
- * <file name="sample-po-page-login-basic/sample-po-page-login-basic.component.ts"> </file>
169
- * </example>
170
- *
171
- * <example name="po-page-login-labs" title="PO Page Login Labs">
172
- * <file name="sample-po-page-login-labs/sample-po-page-login-labs.component.html"> </file>
173
- * <file name="sample-po-page-login-labs/sample-po-page-login-labs.component.ts"> </file>
174
- * </example>
175
- *
176
- * <example name="po-page-login-human-resources" title="PO Page Login - Human Resources">
177
- * <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.html"> </file>
178
- * <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.ts"> </file>
179
- * <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.module.ts"> </file>
180
- * </example>
181
- *
182
- * <example name="po-page-login-automatic-service" title="PO Page Login - Automatic Service">
183
- * <file name="sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.html"> </file>
184
- * <file name="sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.ts"> </file>
185
- * </example>
186
- */
187
- export class PoPageLoginComponent extends PoPageLoginBaseComponent {
188
- constructor(changeDetector, activatedRoute, poComponentInjector, differs, loginService, router, poLanguageService) {
189
- super(loginService, router, poLanguageService);
190
- this.changeDetector = changeDetector;
191
- this.activatedRoute = activatedRoute;
192
- this.poComponentInjector = poComponentInjector;
193
- this.componentRef = null;
194
- this.customPasswordError = { custom: false };
195
- this.differ = differs.find([]).create(null);
196
- }
197
- ngAfterViewChecked() {
198
- if (this.differ) {
199
- this.validateArrayChanges(this.differ, [
200
- { array: this.loginErrors, callback: this.generateLoginError.bind(this) },
201
- { array: this.passwordErrors, callback: this.generatePasswordError.bind(this) }
202
- ]);
203
- }
204
- }
205
- ngOnInit() {
206
- this.checkingForRouteMetadata(this.activatedRoute.snapshot.data);
207
- this.selectedLanguage = this.initializeLanguage();
208
- this.initialSelectLanguage = this.selectedLanguage;
209
- }
210
- activateSupport() {
211
- switch (typeof this.support) {
212
- case 'string': {
213
- this.setUrlRedirect(this.support);
214
- break;
215
- }
216
- case 'function': {
217
- this.support();
218
- break;
219
- }
220
- }
221
- }
222
- changeLoginModel() {
223
- if (this.authenticationUrl) {
224
- this.loginErrors = [];
225
- }
226
- else {
227
- this.setLoginErrors(this.loginErrors);
228
- this.loginChange.emit(this.login);
229
- }
230
- }
231
- changePasswordModel() {
232
- if (this.authenticationUrl) {
233
- this.passwordErrors = [];
234
- }
235
- else {
236
- this.setPasswordErrors(this.passwordErrors);
237
- this.passwordChange.emit(this.password);
238
- }
239
- }
240
- onSelectedLanguage(language) {
241
- this.languageChange.emit(this.languagesList.find(languageItem => languageItem.language === language));
242
- this.selectedLanguage = language;
243
- }
244
- openUrl(recovery) {
245
- switch (typeof recovery) {
246
- case 'string': {
247
- this.setUrlRedirect(recovery);
248
- break;
249
- }
250
- case 'function': {
251
- recovery();
252
- break;
253
- }
254
- case 'object': {
255
- this.createModalPasswordRecoveryComponent(recovery);
256
- break;
257
- }
258
- }
259
- }
260
- concatenateLoginHintWithContactEmail(contactEmail) {
261
- const defaultLoginHintLiteral = poPageLoginLiteralsDefault[this.language].loginHint;
262
- const prepositionLiteral = poPageLoginLiteralIn[this.language];
263
- return this.concatenateLiteral(contactEmail, 'loginHint', defaultLoginHintLiteral, prepositionLiteral);
264
- }
265
- setLoginErrors(errors) {
266
- const control = this.loginForm.form.controls['login'];
267
- this.setControlErrors('allLoginErrors', control, errors, this.pageLoginLiterals.loginErrorPattern);
268
- }
269
- setPasswordErrors(errors) {
270
- const control = this.loginForm.form.controls['password'];
271
- this.setControlErrors('allPasswordErrors', control, errors, this.pageLoginLiterals.passwordErrorPattern);
272
- }
273
- checkingForMetadataProperty(object, property) {
274
- if (Object.prototype.hasOwnProperty.call(object, property)) {
275
- return object[property];
276
- }
277
- }
278
- checkingForRouteMetadata(data) {
279
- if (Object.keys(data).length !== 0) {
280
- this.authenticationUrl = this.checkingForMetadataProperty(data, 'serviceApi') || this.authenticationUrl;
281
- this.authenticationType = this.checkingForMetadataProperty(data, 'authenticationType') || this.authenticationType;
282
- this.environment = this.checkingForMetadataProperty(data, 'environment') || this.environment;
283
- this.recovery = this.checkingForMetadataProperty(data, 'recovery') || this.recovery;
284
- this.registerUrl = this.checkingForMetadataProperty(data, 'registerUrl') || this.registerUrl;
285
- }
286
- }
287
- concatenate(defaultLiteral, prefixLiteral, value) {
288
- return `${defaultLiteral} ${prefixLiteral} ${value}`;
289
- }
290
- concatenateLiteral(value, literal, defaultLiteral, prepositionLiteral) {
291
- return { [literal]: this.concatenate(defaultLiteral, prepositionLiteral, value) };
292
- }
293
- createModalPasswordRecoveryComponent(poPageLoginRecovery) {
294
- if (this.componentRef) {
295
- this.poComponentInjector.destroyComponentInApplication(this.componentRef);
296
- }
297
- this.componentRef = this.poComponentInjector.createComponentInApplication(PoModalPasswordRecoveryComponent);
298
- this.componentRef.instance.urlRecovery = poPageLoginRecovery.url;
299
- this.componentRef.instance.contactEmail = poPageLoginRecovery.contactMail;
300
- this.componentRef.instance.phoneMask = poPageLoginRecovery.phoneMask;
301
- this.componentRef.instance.type = poPageLoginRecovery.type || PoModalPasswordRecoveryType.Email;
302
- this.componentRef.changeDetectorRef.detectChanges();
303
- setTimeout(() => {
304
- this.componentRef.instance.open();
305
- });
306
- }
307
- generateLoginError() {
308
- if (this.loginErrors && this.loginErrors.length) {
309
- this.setLoginErrors(this.loginErrors);
310
- }
311
- else {
312
- const control = this.loginForm.form.controls['login'];
313
- if (control) {
314
- this.resetControl(control);
315
- }
316
- }
317
- }
318
- generatePasswordError() {
319
- if (this.passwordErrors && this.passwordErrors.length) {
320
- this.setPasswordErrors(this.passwordErrors);
321
- }
322
- else {
323
- const control = this.loginForm.form.controls['password'];
324
- if (control) {
325
- this.resetControl(control);
326
- }
327
- }
328
- }
329
- resetControl(control) {
330
- control.markAsPristine();
331
- control.markAsUntouched();
332
- control.updateValueAndValidity();
333
- }
334
- setControlErrors(allErrors, control, errors, patternError) {
335
- if (control) {
336
- this[allErrors] = control.hasError('pattern') ? [...errors, ...[patternError]] : [...errors];
337
- if (errors && errors.length && (control.valid || control.pristine)) {
338
- control.markAsTouched();
339
- control.markAsDirty();
340
- control.setErrors(this.customPasswordError);
341
- }
342
- }
343
- }
344
- setUrlRedirect(url) {
345
- isExternalLink(url) ? window.open(url, '_blank') : this.router.navigate([url]);
346
- }
347
- validateArrayChanges(differ, array) {
348
- array.forEach(element => {
349
- const changes = differ.diff(element.array);
350
- if (changes) {
351
- element.callback();
352
- this.changeDetector.detectChanges();
353
- }
354
- });
355
- }
356
- initializeLanguage() {
357
- const language = this.languagesList.find(languageItem => languageItem.language === this.language);
358
- return language?.language || this.languagesList[0].language;
359
- }
360
- }
361
- PoPageLoginComponent.ɵfac = function PoPageLoginComponent_Factory(t) { return new (t || PoPageLoginComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.PoComponentInjectorService), i0.ɵɵdirectiveInject(i0.IterableDiffers), i0.ɵɵdirectiveInject(i3.PoPageLoginService), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.PoLanguageService)); };
362
- PoPageLoginComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageLoginComponent, selectors: [["po-page-login"]], viewQuery: function PoPageLoginComponent_Query(rf, ctx) { if (rf & 1) {
363
- i0.ɵɵviewQuery(_c0, 7, NgForm);
364
- i0.ɵɵviewQuery(_c1, 7, ViewContainerRef);
365
- } if (rf & 2) {
366
- let _t;
367
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loginForm = _t.first);
368
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageLogin = _t.first);
369
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 35, vars: 39, consts: [[1, "po-page-login-support", 3, "hidden", "click"], [1, "po-icon", "po-icon-help"], [3, "p-show-select-language", "p-languages", "p-initial-language", "p-background", "p-highlight-info", "p-logo", "p-secondary-logo", "p-selected-language"], ["pageLogin", ""], [1, "po-page-login-header"], [1, "po-mb-md-4", "po-mb-sm-1"], [1, "po-page-login-header-product-name"], ["p-type", "warning", 3, "p-value", 4, "ngIf"], [1, "po-page-login-header-welcome", "po-mb-md-4", "po-mb-sm-2"], [1, "po-page-login-form"], ["loginForm", "ngForm"], [1, "po-row"], [1, "po-lg-12"], [1, "po-page-login-hint", "po-page-login-info-container"], ["name", "login", "p-auto-focus", "", "p-required", "", 1, "po-page-login-info-field", 3, "ngModel", "p-label", "p-pattern", "p-placeholder", "ngModelChange", "click", "keyup.enter", "p-change-model"], ["class", "po-page-login-info-icon-container", 3, "po-page-login-info-icon-container-dynamic", 4, "ngIf"], [1, "po-field-container-bottom", "po-field-container-error-container"], ["class", "po-field-container-bottom-text-error po-field-container-error-item", 4, "ngFor", "ngForOf"], [1, "po-page-login-password-container"], ["name", "password", "p-required", "", 1, "po-page-login-field-size", "po-page-login-password-item", 3, "ngModel", "p-label", "p-pattern", "p-placeholder", "ngModelChange", "click", "keyup.enter", "p-change-model"], ["class", "po-page-login-password-item po-page-login-password-popover-container", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldInput", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-error-pattern", "p-pattern", "p-placeholder", "ngModelChange", "keyup.enter", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldCombo", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-field-value", "p-filter-service", "p-placeholder", "ngModelChange", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldSelect", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-placeholder", "p-options", "ngModelChange", 4, "ngIf"], ["class", "po-page-login-hint po-page-login-info-container", 4, "ngIf"], ["p-kind", "primary", 1, "po-lg-12", "po-page-login-button", "po-page-login-field-size", 3, "p-disabled", "p-label", "p-loading", "p-click"], ["class", "po-page-login-recovery-link", 4, "ngIf"], ["class", "po-page-login-register-link", 4, "ngIf"], ["p-type", "warning", 3, "p-value"], [1, "po-page-login-info-icon-container"], ["class", "po-icon po-field-icon po-icon-info", "p-tooltip-position", "right", 3, "p-tooltip", 4, "ngIf"], ["p-tooltip-position", "right", 1, "po-icon", "po-field-icon", "po-icon-info", 3, "p-tooltip"], [1, "po-field-container-bottom-text-error", "po-field-container-error-item"], [1, "po-icon", "po-icon-exclamation"], [1, "po-field-container-error-text"], [1, "po-page-login-password-item", "po-page-login-password-popover-container"], [3, "p-literals", "p-recovery", "p-remaining-attempts", "p-forgot-password", 4, "ngIf"], [3, "p-literals", "p-recovery", "p-remaining-attempts", "p-forgot-password"], ["name", "customFieldInput", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-error-pattern", "p-pattern", "p-placeholder", "ngModelChange", "keyup.enter"], ["name", "customFieldCombo", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-field-value", "p-filter-service", "p-placeholder", "ngModelChange"], ["name", "customFieldSelect", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-placeholder", "p-options", "ngModelChange"], ["name", "rememberUser", "p-label-position", "1", 1, "po-page-login-info-field", "po-lg-7", "po-offset-lg-5", "po-offset-xl-5", 3, "ngModel", "p-label-off", "p-label-on", "ngModelChange", "keyup.enter"], ["class", "po-page-login-info-icon-container po-page-login-info-icon-remember-user", 3, "po-page-login-info-icon-container-dynamic", 4, "ngIf"], [1, "po-page-login-info-icon-container", "po-page-login-info-icon-remember-user"], [1, "po-page-login-recovery-link"], [1, "po-font-text-large-bold", 3, "click"], [1, "po-page-login-register-link"]], template: function PoPageLoginComponent_Template(rf, ctx) { if (rf & 1) {
370
- const _r35 = i0.ɵɵgetCurrentView();
371
- i0.ɵɵelementStart(0, "button", 0);
372
- i0.ɵɵlistener("click", function PoPageLoginComponent_Template_button_click_0_listener() { return ctx.activateSupport(); });
373
- i0.ɵɵelement(1, "span", 1);
374
- i0.ɵɵtext(2);
375
- i0.ɵɵelementEnd();
376
- i0.ɵɵelementStart(3, "po-page-background", 2, 3);
377
- i0.ɵɵlistener("p-selected-language", function PoPageLoginComponent_Template_po_page_background_p_selected_language_3_listener($event) { return ctx.onSelectedLanguage($event); });
378
- i0.ɵɵelementStart(5, "header", 4)(6, "h1", 5)(7, "div", 6);
379
- i0.ɵɵtext(8);
380
- i0.ɵɵelementEnd();
381
- i0.ɵɵtemplate(9, PoPageLoginComponent_po_tag_9_Template, 1, 1, "po-tag", 7);
382
- i0.ɵɵelementEnd();
383
- i0.ɵɵelementStart(10, "div", 8);
384
- i0.ɵɵtext(11);
385
- i0.ɵɵelementEnd()();
386
- i0.ɵɵelementStart(12, "form", 9, 10)(14, "div", 11)(15, "div", 12)(16, "div", 13)(17, "po-login", 14);
387
- i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_Template_po_login_ngModelChange_17_listener($event) { return ctx.login = $event; })("click", function PoPageLoginComponent_Template_po_login_click_17_listener() { return ctx.closePopover(); })("keyup.enter", function PoPageLoginComponent_Template_po_login_keyup_enter_17_listener() { i0.ɵɵrestoreView(_r35); const _r2 = i0.ɵɵreference(13); return _r2.valid && ctx.onLoginSubmit(); })("p-change-model", function PoPageLoginComponent_Template_po_login_p_change_model_17_listener() { return ctx.changeLoginModel(); });
388
- i0.ɵɵelementEnd();
389
- i0.ɵɵtemplate(18, PoPageLoginComponent_div_18_Template, 2, 3, "div", 15);
390
- i0.ɵɵelementEnd();
391
- i0.ɵɵelementStart(19, "div", 16);
392
- i0.ɵɵtemplate(20, PoPageLoginComponent_div_20_Template, 4, 1, "div", 17);
393
- i0.ɵɵelementEnd()();
394
- i0.ɵɵelementStart(21, "div", 12)(22, "div", 18)(23, "po-password", 19);
395
- i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_Template_po_password_ngModelChange_23_listener($event) { return ctx.password = $event; })("click", function PoPageLoginComponent_Template_po_password_click_23_listener() { return ctx.closePopover(); })("keyup.enter", function PoPageLoginComponent_Template_po_password_keyup_enter_23_listener() { i0.ɵɵrestoreView(_r35); const _r2 = i0.ɵɵreference(13); return _r2.valid && ctx.onLoginSubmit(); })("p-change-model", function PoPageLoginComponent_Template_po_password_p_change_model_23_listener() { return ctx.changePasswordModel(); });
396
- i0.ɵɵelementEnd();
397
- i0.ɵɵtemplate(24, PoPageLoginComponent_div_24_Template, 2, 1, "div", 20);
398
- i0.ɵɵelementEnd();
399
- i0.ɵɵelementStart(25, "div", 16);
400
- i0.ɵɵtemplate(26, PoPageLoginComponent_div_26_Template, 4, 1, "div", 17);
401
- i0.ɵɵelementEnd()();
402
- i0.ɵɵtemplate(27, PoPageLoginComponent_po_input_27_Template, 1, 6, "po-input", 21);
403
- i0.ɵɵtemplate(28, PoPageLoginComponent_po_combo_28_Template, 1, 6, "po-combo", 22);
404
- i0.ɵɵtemplate(29, PoPageLoginComponent_po_select_29_Template, 1, 5, "po-select", 23);
405
- i0.ɵɵelementStart(30, "div", 12);
406
- i0.ɵɵtemplate(31, PoPageLoginComponent_div_31_Template, 3, 4, "div", 24);
407
- i0.ɵɵelementEnd();
408
- i0.ɵɵelementStart(32, "po-button", 25);
409
- i0.ɵɵlistener("p-click", function PoPageLoginComponent_Template_po_button_p_click_32_listener() { return ctx.onLoginSubmit(); });
410
- i0.ɵɵelementEnd();
411
- i0.ɵɵtemplate(33, PoPageLoginComponent_div_33_Template, 3, 1, "div", 26);
412
- i0.ɵɵtemplate(34, PoPageLoginComponent_div_34_Template, 3, 1, "div", 27);
413
- i0.ɵɵelementEnd()()();
414
- } if (rf & 2) {
415
- const _r2 = i0.ɵɵreference(13);
416
- i0.ɵɵproperty("hidden", !ctx.support);
417
- i0.ɵɵadvance(2);
418
- i0.ɵɵtextInterpolate1(" ", ctx.pageLoginLiterals == null ? null : ctx.pageLoginLiterals.support, "\n");
419
- i0.ɵɵadvance(1);
420
- i0.ɵɵproperty("p-show-select-language", ctx.showLanguage)("p-languages", ctx.languagesList)("p-initial-language", ctx.initialSelectLanguage)("p-background", ctx.background)("p-highlight-info", ctx.pageLoginLiterals.highlightInfo)("p-logo", ctx.logo)("p-secondary-logo", ctx.secondaryLogo);
421
- i0.ɵɵadvance(5);
422
- i0.ɵɵtextInterpolate(ctx.productName);
423
- i0.ɵɵadvance(1);
424
- i0.ɵɵproperty("ngIf", ctx.environment);
425
- i0.ɵɵadvance(2);
426
- i0.ɵɵtextInterpolate(ctx.pageLoginLiterals.welcome);
427
- i0.ɵɵadvance(6);
428
- i0.ɵɵclassProp("po-page-login-info-field-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
429
- i0.ɵɵproperty("ngModel", ctx.login)("p-label", ctx.pageLoginLiterals.loginLabel)("p-pattern", ctx.loginPattern)("p-placeholder", ctx.pageLoginLiterals.loginPlaceholder);
430
- i0.ɵɵadvance(1);
431
- i0.ɵɵproperty("ngIf", ctx.pageLoginLiterals.loginHint || ctx.pageLoginLiterals.rememberUserHint);
432
- i0.ɵɵadvance(2);
433
- i0.ɵɵproperty("ngForOf", ctx.allLoginErrors);
434
- i0.ɵɵadvance(3);
435
- i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
436
- i0.ɵɵproperty("ngModel", ctx.password)("p-label", ctx.pageLoginLiterals.passwordLabel)("p-pattern", ctx.passwordPattern)("p-placeholder", ctx.pageLoginLiterals.passwordPlaceholder);
437
- i0.ɵɵadvance(1);
438
- i0.ɵɵproperty("ngIf", ctx.pageLoginLiterals.loginHint || ctx.pageLoginLiterals.rememberUserHint);
439
- i0.ɵɵadvance(2);
440
- i0.ɵɵproperty("ngForOf", ctx.allPasswordErrors);
441
- i0.ɵɵadvance(1);
442
- i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "input");
443
- i0.ɵɵadvance(1);
444
- i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "combo");
445
- i0.ɵɵadvance(1);
446
- i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "select");
447
- i0.ɵɵadvance(2);
448
- i0.ɵɵproperty("ngIf", !ctx.hideRememberUser);
449
- i0.ɵɵadvance(1);
450
- i0.ɵɵclassProp("po-page-login-button-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
451
- i0.ɵɵproperty("p-disabled", _r2.invalid)("p-label", ctx.loading ? ctx.pageLoginLiterals.submittedLabel : ctx.pageLoginLiterals.submitLabel)("p-loading", ctx.loading);
452
- i0.ɵɵadvance(1);
453
- i0.ɵɵproperty("ngIf", ctx.recovery);
454
- i0.ɵɵadvance(1);
455
- i0.ɵɵproperty("ngIf", ctx.registerUrl);
456
- } }, directives: [i4.PoPageBackgroundComponent, i5.NgIf, i2.PoTagComponent, i6.ɵNgNoValidate, i6.NgControlStatusGroup, i6.NgForm, i2.PoLoginComponent, i6.NgControlStatus, i6.NgModel, i2.PoTooltipDirective, i5.NgForOf, i2.PoPasswordComponent, i7.PoPageLoginPopoverComponent, i2.PoInputComponent, i2.PoComboComponent, i2.PoSelectComponent, i2.PoSwitchComponent, i2.PoButtonComponent], encapsulation: 2 });
457
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageLoginComponent, [{
458
- type: Component,
459
- args: [{ selector: 'po-page-login', template: "<button class=\"po-page-login-support\" (click)=\"activateSupport()\" [hidden]=\"!support\">\n <span class=\"po-icon po-icon-help\"></span>\n {{ pageLoginLiterals?.support }}\n</button>\n\n<po-page-background\n #pageLogin\n [p-show-select-language]=\"showLanguage\"\n [p-languages]=\"languagesList\"\n [p-initial-language]=\"initialSelectLanguage\"\n [p-background]=\"background\"\n [p-highlight-info]=\"pageLoginLiterals.highlightInfo\"\n [p-logo]=\"logo\"\n [p-secondary-logo]=\"secondaryLogo\"\n (p-selected-language)=\"onSelectedLanguage($event)\"\n>\n <header class=\"po-page-login-header\">\n <h1 class=\"po-mb-md-4 po-mb-sm-1\">\n <div class=\"po-page-login-header-product-name\">{{ productName }}</div>\n <po-tag *ngIf=\"environment\" p-type=\"warning\" [p-value]=\"environment\"> </po-tag>\n </h1>\n <div class=\"po-page-login-header-welcome po-mb-md-4 po-mb-sm-2\">{{ pageLoginLiterals.welcome }}</div>\n </header>\n\n <form #loginForm=\"ngForm\" class=\"po-page-login-form\">\n <div class=\"po-row\">\n <div class=\"po-lg-12\">\n <div class=\"po-page-login-hint po-page-login-info-container\">\n <po-login\n class=\"po-page-login-info-field\"\n [class.po-page-login-info-field-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n name=\"login\"\n [(ngModel)]=\"login\"\n p-auto-focus\n p-required\n [p-label]=\"pageLoginLiterals.loginLabel\"\n [p-pattern]=\"loginPattern\"\n [p-placeholder]=\"pageLoginLiterals.loginPlaceholder\"\n (click)=\"closePopover()\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n (p-change-model)=\"changeLoginModel()\"\n >\n </po-login>\n\n <div\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-info-icon-container\"\n [class.po-page-login-info-icon-container-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n >\n <span\n *ngIf=\"pageLoginLiterals.loginHint\"\n class=\"po-icon po-field-icon po-icon-info\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"pageLoginLiterals.loginHint\"\n >\n </span>\n </div>\n </div>\n\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n <div\n *ngFor=\"let error of allLoginErrors\"\n class=\"po-field-container-bottom-text-error po-field-container-error-item\"\n >\n <span class=\"po-icon po-icon-exclamation\"></span>\n <span class=\"po-field-container-error-text\">{{ error }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"po-lg-12\">\n <div class=\"po-page-login-password-container\">\n <po-password\n class=\"po-page-login-field-size po-page-login-password-item\"\n [class.po-page-login-field-size-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n name=\"password\"\n [(ngModel)]=\"password\"\n p-required\n [p-label]=\"pageLoginLiterals.passwordLabel\"\n [p-pattern]=\"passwordPattern\"\n [p-placeholder]=\"pageLoginLiterals.passwordPlaceholder\"\n (click)=\"closePopover()\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n (p-change-model)=\"changePasswordModel()\"\n >\n </po-password>\n <div\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-password-item po-page-login-password-popover-container\"\n >\n <po-page-login-popover\n *ngIf=\"showExceededAttemptsWarning && exceededAttemptsWarning\"\n [p-literals]=\"pageLoginLiterals\"\n [p-recovery]=\"recovery\"\n [p-remaining-attempts]=\"exceededAttemptsWarning\"\n (p-forgot-password)=\"openUrl($event)\"\n >\n </po-page-login-popover>\n </div>\n </div>\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n <div\n *ngFor=\"let error of allPasswordErrors\"\n class=\"po-field-container-bottom-text-error po-field-container-error-item\"\n >\n <span class=\"po-icon po-icon-exclamation\"></span>\n <span class=\"po-field-container-error-text\">{{ error }}</span>\n </div>\n </div>\n </div>\n\n <po-input\n *ngIf=\"customField && customFieldType === 'input'\"\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldInput\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-error-pattern]=\"customFieldObject.errorPattern || pageLoginLiterals.customFieldErrorPattern\"\n [p-pattern]=\"customFieldObject.pattern\"\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n >\n </po-input>\n\n <po-combo\n *ngIf=\"customField && customFieldType === 'combo'\"\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldCombo\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-field-value]=\"customFieldObject.fieldValue\"\n [p-filter-service]=\"customFieldObject.url\"\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n >\n </po-combo>\n\n <po-select\n *ngIf=\"customField && customFieldType === 'select'\"\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldSelect\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n [p-options]=\"customFieldObject.options\"\n >\n </po-select>\n\n <div class=\"po-lg-12\">\n <div *ngIf=\"!hideRememberUser\" class=\"po-page-login-hint po-page-login-info-container\">\n <po-switch\n class=\"po-page-login-info-field po-lg-7 po-offset-lg-5 po-offset-xl-5\"\n name=\"rememberUser\"\n [(ngModel)]=\"rememberUser\"\n p-label-position=\"1\"\n [p-label-off]=\"pageLoginLiterals.rememberUser\"\n [p-label-on]=\"pageLoginLiterals.rememberUser\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n >\n </po-switch>\n\n <div\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-info-icon-container po-page-login-info-icon-remember-user\"\n [class.po-page-login-info-icon-container-dynamic]=\"!pageLoginLiterals.rememberUserHint\"\n >\n <span\n *ngIf=\"pageLoginLiterals.rememberUserHint\"\n class=\"po-icon po-field-icon po-icon-info\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"pageLoginLiterals.rememberUserHint\"\n >\n </span>\n </div>\n </div>\n </div>\n\n <po-button\n [class.po-page-login-button-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-lg-12 po-page-login-button po-page-login-field-size\"\n p-kind=\"primary\"\n [p-disabled]=\"loginForm.invalid\"\n [p-label]=\"loading ? pageLoginLiterals.submittedLabel : pageLoginLiterals.submitLabel\"\n [p-loading]=\"loading\"\n (p-click)=\"onLoginSubmit()\"\n >\n </po-button>\n\n <div *ngIf=\"recovery\" class=\"po-page-login-recovery-link\">\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(recovery)\">{{ pageLoginLiterals.forgotPassword }}</a>\n </div>\n\n <div *ngIf=\"registerUrl\" class=\"po-page-login-register-link\">\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(registerUrl)\">{{ pageLoginLiterals.registerUrl }}</a>\n </div>\n </div>\n </form>\n</po-page-background>\n" }]
460
- }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ActivatedRoute }, { type: i2.PoComponentInjectorService }, { type: i0.IterableDiffers }, { type: i3.PoPageLoginService }, { type: i1.Router }, { type: i2.PoLanguageService }]; }, { loginForm: [{
461
- type: ViewChild,
462
- args: ['loginForm', { read: NgForm, static: true }]
463
- }], pageLogin: [{
464
- type: ViewChild,
465
- args: ['pageLogin', { read: ViewContainerRef, static: true }]
466
- }] }); })();
467
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtbG9naW4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtbG9naW4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFHTCxTQUFTLEVBSVQsU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHbEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDdEgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDdkgsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzNCLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7OztJQ0xsQyw2QkFBK0U7OztJQUFsQyw0Q0FBdUI7OztJQWtDOUQsMkJBTU87OztJQUZMLCtEQUF5Qzs7O0lBWDdDLCtCQU1DO0lBQ0MsK0VBTU87SUFDVCxpQkFBTTs7O0lBWEosOElBRUM7SUFHRSxlQUFpQztJQUFqQyx5REFBaUM7OztJQVV0QywrQkFHQztJQUNDLDJCQUFpRDtJQUNqRCxnQ0FBNEM7SUFBQSxZQUFXO0lBQUEsaUJBQU8sRUFBQTs7O0lBQWxCLGVBQVc7SUFBWCwrQkFBVzs7OztJQTJCdkQsaURBTUM7SUFEQywwT0FBcUIsdUJBQWUsSUFBQztJQUV2QyxpQkFBd0I7OztJQUx0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cUNBQWlCO1FBQ3ZELGVBQWlCO1FBQWpCLHNDQUFpQjtRQUVvQyxlQUErQjtRQUEvQixtREFBK0I7UUFTdkYsZUFFQztRQUZELCtIQUVDO1FBRUQsbUNBQW1CLDZDQUFBLCtCQUFBLHlEQUFBO1FBYWxCLGVBQXVFO1FBQXZFLGdHQUF1RTtRQWtCdEQsZUFBaUI7UUFBakIsNENBQWlCO1FBYW5DLGVBRUM7UUFGRCwrSEFFQztRQUVELHNDQUFzQixnREFBQSxrQ0FBQSw0REFBQTtRQVdyQixlQUF1RTtRQUF2RSxnR0FBdUU7UUFldEQsZUFBb0I7UUFBcEIsK0NBQW9CO1FBVXpDLGVBQWdEO1FBQWhELHlFQUFnRDtRQWNoRCxlQUFnRDtRQUFoRCx5RUFBZ0Q7UUFhaEQsZUFBaUQ7UUFBakQsMEVBQWlEO1FBWTVDLGVBQXVCO1FBQXZCLDRDQUF1QjtRQTZCN0IsZUFBMEc7UUFBMUcsMkhBQTBHO1FBRzFHLHdDQUFnQyxtR0FBQSwwQkFBQTtRQU81QixlQUFjO1FBQWQsbUNBQWM7UUFJZCxlQUFpQjtRQUFqQixzQ0FBaUI7O3VGRDdJaEIsb0JBQW9CO2NBSmhDLFNBQVM7MkJBQ0UsZUFBZTs4UEFJK0IsU0FBUztrQkFBaEUsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDWSxTQUFTO2tCQUExRSxTQUFTO21CQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IGlzRXh0ZXJuYWxMaW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb0NvbXBvbmVudEluamVjdG9yU2VydmljZSB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcblxuaW1wb3J0IHsgUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlDb21wb25lbnQgfSBmcm9tICcuLi9wby1tb2RhbC1wYXNzd29yZC1yZWNvdmVyeS9wby1tb2RhbC1wYXNzd29yZC1yZWNvdmVyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlUeXBlIH0gZnJvbSAnLi4vcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnkvZW51bXMvcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnktdHlwZS5lbnVtJztcbmltcG9ydCB7XG4gIFBvUGFnZUxvZ2luQmFzZUNvbXBvbmVudCxcbiAgcG9QYWdlTG9naW5MaXRlcmFsSW4sXG4gIHBvUGFnZUxvZ2luTGl0ZXJhbHNEZWZhdWx0XG59IGZyb20gJy4vcG8tcGFnZS1sb2dpbi1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1BhZ2VMb2dpblJlY292ZXJ5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtbG9naW4tcmVjb3ZlcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUxvZ2luU2VydmljZSB9IGZyb20gJy4vcG8tcGFnZS1sb2dpbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9QYWdlTG9naW5CYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tcGFnZS1sb2dpbi1iYXNpY1wiIHRpdGxlPVwiUE8gUGFnZSBMb2dpbiBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1iYXNpYy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWJhc2ljL3NhbXBsZS1wby1wYWdlLWxvZ2luLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtbG9naW4tbGFic1wiIHRpdGxlPVwiUE8gUGFnZSBMb2dpbiBMYWJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWxhYnMvc2FtcGxlLXBvLXBhZ2UtbG9naW4tbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWxhYnMvc2FtcGxlLXBvLXBhZ2UtbG9naW4tbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlc1wiIHRpdGxlPVwiUE8gUGFnZSBMb2dpbiAtIEh1bWFuIFJlc291cmNlc1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMvc2FtcGxlLXBvLXBhZ2UtbG9naW4taHVtYW4tcmVzb3VyY2VzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtbG9naW4taHVtYW4tcmVzb3VyY2VzL3NhbXBsZS1wby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMvc2FtcGxlLXBvLXBhZ2UtbG9naW4taHVtYW4tcmVzb3VyY2VzLm1vZHVsZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtbG9naW4tYXV0b21hdGljLXNlcnZpY2VcIiB0aXRsZT1cIlBPIFBhZ2UgTG9naW4gLSBBdXRvbWF0aWMgU2VydmljZVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1hdXRvbWF0aWMtc2VydmljZS9zYW1wbGUtcG8tcGFnZS1sb2dpbi1hdXRvbWF0aWMtc2VydmljZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWF1dG9tYXRpYy1zZXJ2aWNlL3NhbXBsZS1wby1wYWdlLWxvZ2luLWF1dG9tYXRpYy1zZXJ2aWNlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tcGFnZS1sb2dpbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1wYWdlLWxvZ2luLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQb1BhZ2VMb2dpbkNvbXBvbmVudCBleHRlbmRzIFBvUGFnZUxvZ2luQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2xvZ2luRm9ybScsIHsgcmVhZDogTmdGb3JtLCBzdGF0aWM6IHRydWUgfSkgbG9naW5Gb3JtOiBOZ0Zvcm07XG4gIEBWaWV3Q2hpbGQoJ3BhZ2VMb2dpbicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHBhZ2VMb2dpbjogVmlld0NvbnRhaW5lclJlZjtcblxuICBpbml0aWFsU2VsZWN0TGFuZ3VhZ2U6IHN0cmluZztcblxuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gPSBudWxsO1xuICBwcml2YXRlIGRpZmZlcjogYW55O1xuICBwcml2YXRlIHJlYWRvbmx5IGN1c3RvbVBhc3N3b3JkRXJyb3IgPSB7IGN1c3RvbTogZmFsc2UgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcG9Db21wb25lbnRJbmplY3RvcjogUG9Db21wb25lbnRJbmplY3RvclNlcnZpY2UsXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgIGxvZ2luU2VydmljZTogUG9QYWdlTG9naW5TZXJ2aWNlLFxuICAgIHJvdXRlcjogUm91dGVyLFxuICAgIHBvTGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihsb2dpblNlcnZpY2UsIHJvdXRlciwgcG9MYW5ndWFnZVNlcnZpY2UpO1xuICAgIHRoaXMuZGlmZmVyID0gZGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgaWYgKHRoaXMuZGlmZmVyKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlQXJyYXlDaGFuZ2VzKHRoaXMuZGlmZmVyLCBbXG4gICAgICAgIHsgYXJyYXk6IHRoaXMubG9naW5FcnJvcnMsIGNhbGxiYWNrOiB0aGlzLmdlbmVyYXRlTG9naW5FcnJvci5iaW5kKHRoaXMpIH0sXG4gICAgICAgIHsgYXJyYXk6IHRoaXMucGFzc3dvcmRFcnJvcnMsIGNhbGxiYWNrOiB0aGlzLmdlbmVyYXRlUGFzc3dvcmRFcnJvci5iaW5kKHRoaXMpIH1cbiAgICAgIF0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2hlY2tpbmdGb3JSb3V0ZU1ldGFkYXRhKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YSk7XG4gICAgdGhpcy5zZWxlY3RlZExhbmd1YWdlID0gdGhpcy5pbml0aWFsaXplTGFuZ3VhZ2UoKTtcbiAgICB0aGlzLmluaXRpYWxTZWxlY3RMYW5ndWFnZSA9IHRoaXMuc2VsZWN0ZWRMYW5ndWFnZTtcbiAgfVxuXG4gIGFjdGl2YXRlU3VwcG9ydCgpIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiB0aGlzLnN1cHBvcnQpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6IHtcbiAgICAgICAgdGhpcy5zZXRVcmxSZWRpcmVjdCh0aGlzLnN1cHBvcnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoge1xuICAgICAgICB0aGlzLnN1cHBvcnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTG9naW5Nb2RlbCgpIHtcbiAgICBpZiAodGhpcy5hdXRoZW50aWNhdGlvblVybCkge1xuICAgICAgdGhpcy5sb2dpbkVycm9ycyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldExvZ2luRXJyb3JzKHRoaXMubG9naW5FcnJvcnMpO1xuICAgICAgdGhpcy5sb2dpbkNoYW5nZS5lbWl0KHRoaXMubG9naW4pO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVBhc3N3b3JkTW9kZWwoKSB7XG4gICAgaWYgKHRoaXMuYXV0aGVudGljYXRpb25VcmwpIHtcbiAgICAgIHRoaXMucGFzc3dvcmRFcnJvcnMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRQYXNzd29yZEVycm9ycyh0aGlzLnBhc3N3b3JkRXJyb3JzKTtcbiAgICAgIHRoaXMucGFzc3dvcmRDaGFuZ2UuZW1pdCh0aGlzLnBhc3N3b3JkKTtcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdGVkTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgIHRoaXMubGFuZ3VhZ2VDaGFuZ2UuZW1pdCh0aGlzLmxhbmd1YWdlc0xpc3QuZmluZChsYW5ndWFnZUl0ZW0gPT4gbGFuZ3VhZ2VJdGVtLmxhbmd1YWdlID09PSBsYW5ndWFnZSkpO1xuICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSA9IGxhbmd1YWdlO1xuICB9XG5cbiAgb3BlblVybChyZWNvdmVyeTogYW55KTogdm9pZCB7XG4gICAgc3dpdGNoICh0eXBlb2YgcmVjb3ZlcnkpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6IHtcbiAgICAgICAgdGhpcy5zZXRVcmxSZWRpcmVjdChyZWNvdmVyeSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnZnVuY3Rpb24nOiB7XG4gICAgICAgIHJlY292ZXJ5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICB0aGlzLmNyZWF0ZU1vZGFsUGFzc3dvcmRSZWNvdmVyeUNvbXBvbmVudChyZWNvdmVyeSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjb25jYXRlbmF0ZUxvZ2luSGludFdpdGhDb250YWN0RW1haWwoY29udGFjdEVtYWlsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkZWZhdWx0TG9naW5IaW50TGl0ZXJhbCA9IHBvUGFnZUxvZ2luTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLmxvZ2luSGludDtcbiAgICBjb25zdCBwcmVwb3NpdGlvbkxpdGVyYWwgPSBwb1BhZ2VMb2dpbkxpdGVyYWxJblt0aGlzLmxhbmd1YWdlXTtcblxuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlTGl0ZXJhbChjb250YWN0RW1haWwsICdsb2dpbkhpbnQnLCBkZWZhdWx0TG9naW5IaW50TGl0ZXJhbCwgcHJlcG9zaXRpb25MaXRlcmFsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRMb2dpbkVycm9ycyhlcnJvcnM6IEFycmF5PHN0cmluZz4pIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5sb2dpbkZvcm0uZm9ybS5jb250cm9sc1snbG9naW4nXTtcbiAgICB0aGlzLnNldENvbnRyb2xFcnJvcnMoJ2FsbExvZ2luRXJyb3JzJywgY29udHJvbCwgZXJyb3JzLCB0aGlzLnBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luRXJyb3JQYXR0ZXJuKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRQYXNzd29yZEVycm9ycyhlcnJvcnM6IEFycmF5PHN0cmluZz4pIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5sb2dpbkZvcm0uZm9ybS5jb250cm9sc1sncGFzc3dvcmQnXTtcbiAgICB0aGlzLnNldENvbnRyb2xFcnJvcnMoJ2FsbFBhc3N3b3JkRXJyb3JzJywgY29udHJvbCwgZXJyb3JzLCB0aGlzLnBhZ2VMb2dpbkxpdGVyYWxzLnBhc3N3b3JkRXJyb3JQYXR0ZXJuKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tpbmdGb3JNZXRhZGF0YVByb3BlcnR5KG9iamVjdCwgcHJvcGVydHkpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpKSB7XG4gICAgICByZXR1cm4gb2JqZWN0W3Byb3BlcnR5XTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNraW5nRm9yUm91dGVNZXRhZGF0YShkYXRhKSB7XG4gICAgaWYgKE9iamVjdC5rZXlzKGRhdGEpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblVybCA9IHRoaXMuY2hlY2tpbmdGb3JNZXRhZGF0YVByb3BlcnR5KGRhdGEsICdzZXJ2aWNlQXBpJykgfHwgdGhpcy5hdXRoZW50aWNhdGlvblVybDtcbiAgICAgIHRoaXMuYXV0aGVudGljYXRpb25UeXBlID0gdGhpcy5jaGVja2luZ0Zvck1ldGFkYXRhUHJvcGVydHkoZGF0YSwgJ2F1dGhlbnRpY2F0aW9uVHlwZScpIHx8IHRoaXMuYXV0aGVudGljYXRpb25UeXBlO1xuICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuY2hlY2tpbmdGb3JNZXRhZGF0YVByb3BlcnR5KGRhdGEsICdlbnZpcm9ubWVudCcpIHx8IHRoaXMuZW52aXJvbm1lbnQ7XG4gICAgICB0aGlzLnJlY292ZXJ5ID0gdGhpcy5jaGVja2luZ0Zvck1ldGFkYXRhUHJvcGVydHkoZGF0YSwgJ3JlY292ZXJ5JykgfHwgdGhpcy5yZWNvdmVyeTtcbiAgICAgIHRoaXMucmVnaXN0ZXJVcmwgPSB0aGlzLmNoZWNraW5nRm9yTWV0YWRhdGFQcm9wZXJ0eShkYXRhLCAncmVnaXN0ZXJVcmwnKSB8fCB0aGlzLnJlZ2lzdGVyVXJsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uY2F0ZW5hdGUoZGVmYXVsdExpdGVyYWw6IHN0cmluZywgcHJlZml4TGl0ZXJhbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGAke2RlZmF1bHRMaXRlcmFsfSAke3ByZWZpeExpdGVyYWx9ICR7dmFsdWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgY29uY2F0ZW5hdGVMaXRlcmFsKHZhbHVlOiBzdHJpbmcsIGxpdGVyYWw6IHN0cmluZywgZGVmYXVsdExpdGVyYWw6IHN0cmluZywgcHJlcG9zaXRpb25MaXRlcmFsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4geyBbbGl0ZXJhbF06IHRoaXMuY29uY2F0ZW5hdGUoZGVmYXVsdExpdGVyYWwsIHByZXBvc2l0aW9uTGl0ZXJhbCwgdmFsdWUpIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1vZGFsUGFzc3dvcmRSZWNvdmVyeUNvbXBvbmVudChwb1BhZ2VMb2dpblJlY292ZXJ5OiBQb1BhZ2VMb2dpblJlY292ZXJ5KSB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLnBvQ29tcG9uZW50SW5qZWN0b3IuZGVzdHJveUNvbXBvbmVudEluQXBwbGljYXRpb24odGhpcy5jb21wb25lbnRSZWYpO1xuICAgIH1cblxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5wb0NvbXBvbmVudEluamVjdG9yLmNyZWF0ZUNvbXBvbmVudEluQXBwbGljYXRpb24oUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlDb21wb25lbnQpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnVybFJlY292ZXJ5ID0gcG9QYWdlTG9naW5SZWNvdmVyeS51cmw7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY29udGFjdEVtYWlsID0gcG9QYWdlTG9naW5SZWNvdmVyeS5jb250YWN0TWFpbDtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5waG9uZU1hc2sgPSBwb1BhZ2VMb2dpblJlY292ZXJ5LnBob25lTWFzaztcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50eXBlID0gcG9QYWdlTG9naW5SZWNvdmVyeS50eXBlIHx8IFBvTW9kYWxQYXNzd29yZFJlY292ZXJ5VHlwZS5FbWFpbDtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5vcGVuKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlTG9naW5FcnJvcigpIHtcbiAgICBpZiAodGhpcy5sb2dpbkVycm9ycyAmJiB0aGlzLmxvZ2luRXJyb3JzLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZXRMb2dpbkVycm9ycyh0aGlzLmxvZ2luRXJyb3JzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubG9naW5Gb3JtLmZvcm0uY29udHJvbHNbJ2xvZ2luJ107XG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICB0aGlzLnJlc2V0Q29udHJvbChjb250cm9sKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlUGFzc3dvcmRFcnJvcigpIHtcbiAgICBpZiAodGhpcy5wYXNzd29yZEVycm9ycyAmJiB0aGlzLnBhc3N3b3JkRXJyb3JzLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZXRQYXNzd29yZEVycm9ycyh0aGlzLnBhc3N3b3JkRXJyb3JzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubG9naW5Gb3JtLmZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ107XG5cbiAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgIHRoaXMucmVzZXRDb250cm9sKGNvbnRyb2wpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRDb250cm9sKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250cm9sRXJyb3JzKGFsbEVycm9yczogc3RyaW5nLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGVycm9yczogQXJyYXk8c3RyaW5nPiwgcGF0dGVybkVycm9yOiBzdHJpbmcpIHtcbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgdGhpc1thbGxFcnJvcnNdID0gY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpID8gWy4uLmVycm9ycywgLi4uW3BhdHRlcm5FcnJvcl1dIDogWy4uLmVycm9yc107XG5cbiAgICAgIGlmIChlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aCAmJiAoY29udHJvbC52YWxpZCB8fCBjb250cm9sLnByaXN0aW5lKSkge1xuICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICBjb250cm9sLnNldEVycm9ycyh0aGlzLmN1c3RvbVBhc3N3b3JkRXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VXJsUmVkaXJlY3QodXJsKSB7XG4gICAgaXNFeHRlcm5hbExpbmsodXJsKSA/IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpIDogdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybF0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFycmF5Q2hhbmdlcyhkaWZmZXI6IGFueSwgYXJyYXk6IEFycmF5PHsgYXJyYXk6IEFycmF5PGFueT47IGNhbGxiYWNrOiBhbnkgfT4pIHtcbiAgICBhcnJheS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgY29uc3QgY2hhbmdlcyA9IGRpZmZlci5kaWZmKGVsZW1lbnQuYXJyYXkpO1xuICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgZWxlbWVudC5jYWxsYmFjaygpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxhbmd1YWdlKCkge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5sYW5ndWFnZXNMaXN0LmZpbmQobGFuZ3VhZ2VJdGVtID0+IGxhbmd1YWdlSXRlbS5sYW5ndWFnZSA9PT0gdGhpcy5sYW5ndWFnZSk7XG4gICAgcmV0dXJuIGxhbmd1YWdlPy5sYW5ndWFnZSB8fCB0aGlzLmxhbmd1YWdlc0xpc3RbMF0ubGFuZ3VhZ2U7XG4gIH1cbn1cbiIsIjxidXR0b24gY2xhc3M9XCJwby1wYWdlLWxvZ2luLXN1cHBvcnRcIiAoY2xpY2spPVwiYWN0aXZhdGVTdXBwb3J0KClcIiBbaGlkZGVuXT1cIiFzdXBwb3J0XCI+XG4gIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLWhlbHBcIj48L3NwYW4+XG4gIHt7IHBhZ2VMb2dpbkxpdGVyYWxzPy5zdXBwb3J0IH19XG48L2J1dHRvbj5cblxuPHBvLXBhZ2UtYmFja2dyb3VuZFxuICAjcGFnZUxvZ2luXG4gIFtwLXNob3ctc2VsZWN0LWxhbmd1YWdlXT1cInNob3dMYW5ndWFnZVwiXG4gIFtwLWxhbmd1YWdlc109XCJsYW5ndWFnZXNMaXN0XCJcbiAgW3AtaW5pdGlhbC1sYW5ndWFnZV09XCJpbml0aWFsU2VsZWN0TGFuZ3VhZ2VcIlxuICBbcC1iYWNrZ3JvdW5kXT1cImJhY2tncm91bmRcIlxuICBbcC1oaWdobGlnaHQtaW5mb109XCJwYWdlTG9naW5MaXRlcmFscy5oaWdobGlnaHRJbmZvXCJcbiAgW3AtbG9nb109XCJsb2dvXCJcbiAgW3Atc2Vjb25kYXJ5LWxvZ29dPVwic2Vjb25kYXJ5TG9nb1wiXG4gIChwLXNlbGVjdGVkLWxhbmd1YWdlKT1cIm9uU2VsZWN0ZWRMYW5ndWFnZSgkZXZlbnQpXCJcbj5cbiAgPGhlYWRlciBjbGFzcz1cInBvLXBhZ2UtbG9naW4taGVhZGVyXCI+XG4gICAgPGgxIGNsYXNzPVwicG8tbWItbWQtNCBwby1tYi1zbS0xXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1oZWFkZXItcHJvZHVjdC1uYW1lXCI+e3sgcHJvZHVjdE5hbWUgfX08L2Rpdj5cbiAgICAgIDxwby10YWcgKm5nSWY9XCJlbnZpcm9ubWVudFwiIHAtdHlwZT1cIndhcm5pbmdcIiBbcC12YWx1ZV09XCJlbnZpcm9ubWVudFwiPiA8L3BvLXRhZz5cbiAgICA8L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWhlYWRlci13ZWxjb21lIHBvLW1iLW1kLTQgcG8tbWItc20tMlwiPnt7IHBhZ2VMb2dpbkxpdGVyYWxzLndlbGNvbWUgfX08L2Rpdj5cbiAgPC9oZWFkZXI+XG5cbiAgPGZvcm0gI2xvZ2luRm9ybT1cIm5nRm9ybVwiIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1mb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cInBvLXJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLWxnLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWhpbnQgcG8tcGFnZS1sb2dpbi1pbmZvLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxwby1sb2dpblxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWluZm8tZmllbGRcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4taW5mby1maWVsZC1keW5hbWljXT1cIlxuICAgICAgICAgICAgICAhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgbmFtZT1cImxvZ2luXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9naW5cIlxuICAgICAgICAgICAgcC1hdXRvLWZvY3VzXG4gICAgICAgICAgICBwLXJlcXVpcmVkXG4gICAgICAgICAgICBbcC1sYWJlbF09XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpbkxhYmVsXCJcbiAgICAgICAgICAgIFtwLXBhdHRlcm5dPVwibG9naW5QYXR0ZXJuXCJcbiAgICAgICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cInBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUG9wb3ZlcigpXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcbiAgICAgICAgICAgIChwLWNoYW5nZS1tb2RlbCk9XCJjaGFuZ2VMb2dpbk1vZGVsKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3BvLWxvZ2luPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgfHwgcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXBhZ2UtbG9naW4taW5mby1pY29uLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbY2xhc3MucG8tcGFnZS1sb2dpbi1pbmZvLWljb24tY29udGFpbmVyLWR5bmFtaWNdPVwiXG4gICAgICAgICAgICAgICFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiBwby1pY29uLWluZm9cIlxuICAgICAgICAgICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20gcG8tZmllbGQtY29udGFpbmVyLWVycm9yLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlcnJvciBvZiBhbGxMb2dpbkVycm9yc1wiXG4gICAgICAgICAgICBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20tdGV4dC1lcnJvciBwby1maWVsZC1jb250YWluZXItZXJyb3ItaXRlbVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwby1pY29uIHBvLWljb24tZXhjbGFtYXRpb25cIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1lcnJvci10ZXh0XCI+e3sgZXJyb3IgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1sZy0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1wYXNzd29yZC1jb250YWluZXJcIj5cbiAgICAgICAgICA8cG8tcGFzc3dvcmRcbiAgICAgICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1maWVsZC1zaXplIHBvLXBhZ2UtbG9naW4tcGFzc3dvcmQtaXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tcGFnZS1sb2dpbi1maWVsZC1zaXplLWR5bmFtaWNdPVwiXG4gICAgICAgICAgICAgICFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYXNzd29yZFwiXG4gICAgICAgICAgICBwLXJlcXVpcmVkXG4gICAgICAgICAgICBbcC1sYWJlbF09XCJwYWdlTG9naW5MaXRlcmFscy5wYXNzd29yZExhYmVsXCJcbiAgICAgICAgICAgIFtwLXBhdHRlcm5dPVwicGFzc3dvcmRQYXR0ZXJuXCJcbiAgICAgICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cInBhZ2VMb2dpbkxpdGVyYWxzLnBhc3N3b3JkUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUG9wb3ZlcigpXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcbiAgICAgICAgICAgIChwLWNoYW5nZS1tb2RlbCk9XCJjaGFuZ2VQYXNzd29yZE1vZGVsKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3BvLXBhc3N3b3JkPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50IHx8IHBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLXBhc3N3b3JkLWl0ZW0gcG8tcGFnZS1sb2dpbi1wYXNzd29yZC1wb3BvdmVyLWNvbnRhaW5lclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHBvLXBhZ2UtbG9naW4tcG9wb3ZlclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyAmJiBleGNlZWRlZEF0dGVtcHRzV2FybmluZ1wiXG4gICAgICAgICAgICAgIFtwLWxpdGVyYWxzXT1cInBhZ2VMb2dpbkxpdGVyYWxzXCJcbiAgICAgICAgICAgICAgW3AtcmVjb3ZlcnldPVwicmVjb3ZlcnlcIlxuICAgICAgICAgICAgICBbcC1yZW1haW5pbmctYXR0ZW1wdHNdPVwiZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmdcIlxuICAgICAgICAgICAgICAocC1mb3Jnb3QtcGFzc3dvcmQpPVwib3BlblVybCgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcG8tcGFnZS1sb2dpbi1wb3BvdmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20gcG8tZmllbGQtY29udGFpbmVyLWVycm9yLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlcnJvciBvZiBhbGxQYXNzd29yZEVycm9yc1wiXG4gICAgICAgICAgICBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20tdGV4dC1lcnJvciBwby1maWVsZC1jb250YWluZXItZXJyb3ItaXRlbVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwby1pY29uIHBvLWljb24tZXhjbGFtYXRpb25cIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1lcnJvci10ZXh0XCI+e3sgZXJyb3IgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxwby1pbnB1dFxuICAgICAgICAqbmdJZj1cImN1c3RvbUZpZWxkICYmIGN1c3RvbUZpZWxkVHlwZSA9PT0gJ2lucHV0J1wiXG4gICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWZpZWxkLXNpemUtZHluYW1pY109XCIhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcbiAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWZpZWxkLXNpemUgcG8tbGctMTJcIlxuICAgICAgICBuYW1lPVwiY3VzdG9tRmllbGRJbnB1dFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tRmllbGRPYmplY3QudmFsdWVcIlxuICAgICAgICBwLXJlcXVpcmVkXG4gICAgICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiY3VzdG9tRmllbGRPYmplY3QuZXJyb3JQYXR0ZXJuIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuXCJcbiAgICAgICAgW3AtcGF0dGVybl09XCJjdXN0b21GaWVsZE9iamVjdC5wYXR0ZXJuXCJcbiAgICAgICAgW3AtcGxhY2Vob2xkZXJdPVwiY3VzdG9tRmllbGRPYmplY3QucGxhY2Vob2xkZXIgfHwgcGFnZUxvZ2luTGl0ZXJhbHMuY3VzdG9tRmllbGRQbGFjZWhvbGRlclwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcbiAgICAgID5cbiAgICAgIDwvcG8taW5wdXQ+XG5cbiAgICAgIDxwby1jb21ib1xuICAgICAgICAqbmdJZj1cImN1c3RvbUZpZWxkICYmIGN1c3RvbUZpZWxkVHlwZSA9PT0gJ2NvbWJvJ1wiXG4gICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWZpZWxkLXNpemUtZHluYW1pY109XCIhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcbiAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWZpZWxkLXNpemUgcG8tbGctMTJcIlxuICAgICAgICBuYW1lPVwiY3VzdG9tRmllbGRDb21ib1wiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tRmllbGRPYmplY3QudmFsdWVcIlxuICAgICAgICBwLXJlcXVpcmVkXG4gICAgICAgIFtwLWZpZWxkLXZhbHVlXT1cImN1c3RvbUZpZWxkT2JqZWN0LmZpZWxkVmFsdWVcIlxuICAgICAgICBbcC1maWx0ZXItc2VydmljZV09XCJjdXN0b21GaWVsZE9iamVjdC51cmxcIlxuICAgICAgICBbcC1wbGFjZWhvbGRlcl09XCJjdXN0b21GaWVsZE9iamVjdC5wbGFjZWhvbGRlciB8fCBwYWdlTG9naW5MaXRlcmFscy5jdXN0b21GaWVsZFBsYWNlaG9sZGVyXCJcbiAgICAgID5cbiAgICAgIDwvcG8tY29tYm8+XG5cbiAgICAgIDxwby1zZWxlY3RcbiAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZCAmJiBjdXN0b21GaWVsZFR5cGUgPT09ICdzZWxlY3QnXCJcbiAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4tZmllbGQtc2l6ZS1keW5hbWljXT1cIiFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxuICAgICAgICBjbGFzcz1cInBvLXBhZ2UtbG9naW4tZmllbGQtc2l6ZSBwby1sZy0xMlwiXG4gICAgICAgIG5hbWU9XCJjdXN0b21GaWVsZFNlbGVjdFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tRmllbGRPYmplY3QudmFsdWVcIlxuICAgICAgICBwLXJlcXVpcmVkXG4gICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImN1c3RvbUZpZWxkT2JqZWN0LnBsYWNlaG9sZGVyIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkUGxhY2Vob2xkZXJcIlxuICAgICAgICBbcC1vcHRpb25zXT1cImN1c3RvbUZpZWxkT2JqZWN0Lm9wdGlvbnNcIlxuICAgICAgPlxuICAgICAgPC9wby1zZWxlY3Q+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1sZy0xMlwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhpZGVSZW1lbWJlclVzZXJcIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4taGludCBwby1wYWdlLWxvZ2luLWluZm8tY29udGFpbmVyXCI+XG4gICAgICAgICAgPHBvLXN3aXRjaFxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWluZm8tZmllbGQgcG8tbGctNyBwby1vZmZzZXQtbGctNSBwby1vZmZzZXQteGwtNVwiXG4gICAgICAgICAgICBuYW1lPVwicmVtZW1iZXJVc2VyXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicmVtZW1iZXJVc2VyXCJcbiAgICAgICAgICAgIHAtbGFiZWwtcG9zaXRpb249XCIxXCJcbiAgICAgICAgICAgIFtwLWxhYmVsLW9mZl09XCJwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJcIlxuICAgICAgICAgICAgW3AtbGFiZWwtb25dPVwicGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VyXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9wby1zd2l0Y2g+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCB8fCBwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1pbmZvLWljb24tY29udGFpbmVyIHBvLXBhZ2UtbG9naW4taW5mby1pY29uLXJlbWVtYmVyLXVzZXJcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4taW5mby1pY29uLWNvbnRhaW5lci1keW5hbWljXT1cIiFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cInBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiBwby1pY29uLWluZm9cIlxuICAgICAgICAgICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwicGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxwby1idXR0b25cbiAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4tYnV0dG9uLWR5bmFtaWNdPVwiIXBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCAmJiAhcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXG4gICAgICAgIGNsYXNzPVwicG8tbGctMTIgcG8tcGFnZS1sb2dpbi1idXR0b24gcG8tcGFnZS1sb2dpbi1maWVsZC1zaXplXCJcbiAgICAgICAgcC1raW5kPVwicHJpbWFyeVwiXG4gICAgICAgIFtwLWRpc2FibGVkXT1cImxvZ2luRm9ybS5pbnZhbGlkXCJcbiAgICAgICAgW3AtbGFiZWxdPVwibG9hZGluZyA/IHBhZ2VMb2dpbkxpdGVyYWxzLnN1Ym1pdHRlZExhYmVsIDogcGFnZUxvZ2luTGl0ZXJhbHMuc3VibWl0TGFiZWxcIlxuICAgICAgICBbcC1sb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICAocC1jbGljayk9XCJvbkxvZ2luU3VibWl0KClcIlxuICAgICAgPlxuICAgICAgPC9wby1idXR0b24+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJyZWNvdmVyeVwiIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1yZWNvdmVyeS1saW5rXCI+XG4gICAgICAgIDxhIGNsYXNzPVwicG8tZm9udC10ZXh0LWxhcmdlLWJvbGRcIiAoY2xpY2spPVwib3BlblVybChyZWNvdmVyeSlcIj57eyBwYWdlTG9naW5MaXRlcmFscy5mb3Jnb3RQYXNzd29yZCB9fTwvYT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwicmVnaXN0ZXJVcmxcIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tcmVnaXN0ZXItbGlua1wiPlxuICAgICAgICA8YSBjbGFzcz1cInBvLWZvbnQtdGV4dC1sYXJnZS1ib2xkXCIgKGNsaWNrKT1cIm9wZW5VcmwocmVnaXN0ZXJVcmwpXCI+e3sgcGFnZUxvZ2luTGl0ZXJhbHMucmVnaXN0ZXJVcmwgfX08L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9wby1wYWdlLWJhY2tncm91bmQ+XG4iXX0=
1
+ import { NgForm } from '@angular/forms';
2
+ import { Component, ViewChild, ViewContainerRef } from '@angular/core';
3
+ import { isExternalLink } from '../../utils/util';
4
+ import { PoModalPasswordRecoveryComponent } from '../po-modal-password-recovery/po-modal-password-recovery.component';
5
+ import { PoModalPasswordRecoveryType } from '../po-modal-password-recovery/enums/po-modal-password-recovery-type.enum';
6
+ import { PoPageLoginBaseComponent, poPageLoginLiteralIn, poPageLoginLiteralsDefault } from './po-page-login-base.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/router";
9
+ import * as i2 from "@po-ui/ng-components";
10
+ import * as i3 from "./po-page-login.service";
11
+ import * as i4 from "@angular/common";
12
+ import * as i5 from "@angular/forms";
13
+ import * as i6 from "../po-page-background/po-page-background.component";
14
+ import * as i7 from "./po-page-login-popover/po-page-login-popover.component";
15
+ const _c0 = ["loginForm"];
16
+ const _c1 = ["pageLogin"];
17
+ function PoPageLoginComponent_po_tag_9_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelement(0, "po-tag", 28);
19
+ } if (rf & 2) {
20
+ const ctx_r1 = i0.ɵɵnextContext();
21
+ i0.ɵɵproperty("p-value", ctx_r1.environment);
22
+ } }
23
+ function PoPageLoginComponent_div_18_span_1_Template(rf, ctx) { if (rf & 1) {
24
+ i0.ɵɵelement(0, "span", 31);
25
+ } if (rf & 2) {
26
+ const ctx_r13 = i0.ɵɵnextContext(2);
27
+ i0.ɵɵproperty("p-tooltip", ctx_r13.pageLoginLiterals.loginHint);
28
+ } }
29
+ function PoPageLoginComponent_div_18_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵelementStart(0, "div", 29);
31
+ i0.ɵɵtemplate(1, PoPageLoginComponent_div_18_span_1_Template, 1, 1, "span", 30);
32
+ i0.ɵɵelementEnd();
33
+ } if (rf & 2) {
34
+ const ctx_r3 = i0.ɵɵnextContext();
35
+ i0.ɵɵclassProp("po-page-login-info-icon-container-dynamic", !ctx_r3.pageLoginLiterals.loginHint && !ctx_r3.pageLoginLiterals.rememberUserHint);
36
+ i0.ɵɵadvance(1);
37
+ i0.ɵɵproperty("ngIf", ctx_r3.pageLoginLiterals.loginHint);
38
+ } }
39
+ function PoPageLoginComponent_div_20_Template(rf, ctx) { if (rf & 1) {
40
+ i0.ɵɵelementStart(0, "div", 32);
41
+ i0.ɵɵelement(1, "span", 33);
42
+ i0.ɵɵelementStart(2, "span", 34);
43
+ i0.ɵɵtext(3);
44
+ i0.ɵɵelementEnd()();
45
+ } if (rf & 2) {
46
+ const error_r14 = ctx.$implicit;
47
+ i0.ɵɵadvance(3);
48
+ i0.ɵɵtextInterpolate(error_r14);
49
+ } }
50
+ function PoPageLoginComponent_div_24_po_page_login_popover_1_Template(rf, ctx) { if (rf & 1) {
51
+ const _r17 = i0.ɵɵgetCurrentView();
52
+ i0.ɵɵelementStart(0, "po-page-login-popover", 37);
53
+ i0.ɵɵlistener("p-forgot-password", function PoPageLoginComponent_div_24_po_page_login_popover_1_Template_po_page_login_popover_p_forgot_password_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r16.openUrl($event)); });
54
+ i0.ɵɵelementEnd();
55
+ } if (rf & 2) {
56
+ const ctx_r15 = i0.ɵɵnextContext(2);
57
+ i0.ɵɵproperty("p-literals", ctx_r15.pageLoginLiterals)("p-recovery", ctx_r15.recovery)("p-remaining-attempts", ctx_r15.exceededAttemptsWarning);
58
+ } }
59
+ function PoPageLoginComponent_div_24_Template(rf, ctx) { if (rf & 1) {
60
+ i0.ɵɵelementStart(0, "div", 35);
61
+ i0.ɵɵtemplate(1, PoPageLoginComponent_div_24_po_page_login_popover_1_Template, 1, 3, "po-page-login-popover", 36);
62
+ i0.ɵɵelementEnd();
63
+ } if (rf & 2) {
64
+ const ctx_r5 = i0.ɵɵnextContext();
65
+ i0.ɵɵadvance(1);
66
+ i0.ɵɵproperty("ngIf", ctx_r5.showExceededAttemptsWarning && ctx_r5.exceededAttemptsWarning);
67
+ } }
68
+ function PoPageLoginComponent_div_26_Template(rf, ctx) { if (rf & 1) {
69
+ i0.ɵɵelementStart(0, "div", 32);
70
+ i0.ɵɵelement(1, "span", 33);
71
+ i0.ɵɵelementStart(2, "span", 34);
72
+ i0.ɵɵtext(3);
73
+ i0.ɵɵelementEnd()();
74
+ } if (rf & 2) {
75
+ const error_r18 = ctx.$implicit;
76
+ i0.ɵɵadvance(3);
77
+ i0.ɵɵtextInterpolate(error_r18);
78
+ } }
79
+ function PoPageLoginComponent_po_input_27_Template(rf, ctx) { if (rf & 1) {
80
+ const _r20 = i0.ɵɵgetCurrentView();
81
+ i0.ɵɵelementStart(0, "po-input", 38);
82
+ i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_input_27_Template_po_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r19.customFieldObject.value = $event); })("keyup.enter", function PoPageLoginComponent_po_input_27_Template_po_input_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r21 = i0.ɵɵnextContext(); const _r2 = i0.ɵɵreference(13); return i0.ɵɵresetView(_r2.valid && ctx_r21.onLoginSubmit()); });
83
+ i0.ɵɵelementEnd();
84
+ } if (rf & 2) {
85
+ const ctx_r7 = i0.ɵɵnextContext();
86
+ i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r7.pageLoginLiterals.loginHint && !ctx_r7.pageLoginLiterals.rememberUserHint);
87
+ i0.ɵɵproperty("ngModel", ctx_r7.customFieldObject.value)("p-error-pattern", ctx_r7.customFieldObject.errorPattern || ctx_r7.pageLoginLiterals.customFieldErrorPattern)("p-pattern", ctx_r7.customFieldObject.pattern)("p-placeholder", ctx_r7.customFieldObject.placeholder || ctx_r7.pageLoginLiterals.customFieldPlaceholder);
88
+ } }
89
+ function PoPageLoginComponent_po_combo_28_Template(rf, ctx) { if (rf & 1) {
90
+ const _r23 = i0.ɵɵgetCurrentView();
91
+ i0.ɵɵelementStart(0, "po-combo", 39);
92
+ i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_combo_28_Template_po_combo_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r22.customFieldObject.value = $event); });
93
+ i0.ɵɵelementEnd();
94
+ } if (rf & 2) {
95
+ const ctx_r8 = i0.ɵɵnextContext();
96
+ i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r8.pageLoginLiterals.loginHint && !ctx_r8.pageLoginLiterals.rememberUserHint);
97
+ i0.ɵɵproperty("ngModel", ctx_r8.customFieldObject.value)("p-field-value", ctx_r8.customFieldObject.fieldValue)("p-filter-service", ctx_r8.customFieldObject.url)("p-placeholder", ctx_r8.customFieldObject.placeholder || ctx_r8.pageLoginLiterals.customFieldPlaceholder);
98
+ } }
99
+ function PoPageLoginComponent_po_select_29_Template(rf, ctx) { if (rf & 1) {
100
+ const _r25 = i0.ɵɵgetCurrentView();
101
+ i0.ɵɵelementStart(0, "po-select", 40);
102
+ i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_select_29_Template_po_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r24.customFieldObject.value = $event); });
103
+ i0.ɵɵelementEnd();
104
+ } if (rf & 2) {
105
+ const ctx_r9 = i0.ɵɵnextContext();
106
+ i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r9.pageLoginLiterals.loginHint && !ctx_r9.pageLoginLiterals.rememberUserHint);
107
+ i0.ɵɵproperty("ngModel", ctx_r9.customFieldObject.value)("p-placeholder", ctx_r9.customFieldObject.placeholder || ctx_r9.pageLoginLiterals.customFieldPlaceholder)("p-options", ctx_r9.customFieldObject.options);
108
+ } }
109
+ function PoPageLoginComponent_div_31_div_2_span_1_Template(rf, ctx) { if (rf & 1) {
110
+ i0.ɵɵelement(0, "span", 31);
111
+ } if (rf & 2) {
112
+ const ctx_r27 = i0.ɵɵnextContext(3);
113
+ i0.ɵɵproperty("p-tooltip", ctx_r27.pageLoginLiterals.rememberUserHint);
114
+ } }
115
+ function PoPageLoginComponent_div_31_div_2_Template(rf, ctx) { if (rf & 1) {
116
+ i0.ɵɵelementStart(0, "div", 43);
117
+ i0.ɵɵtemplate(1, PoPageLoginComponent_div_31_div_2_span_1_Template, 1, 1, "span", 30);
118
+ i0.ɵɵelementEnd();
119
+ } if (rf & 2) {
120
+ const ctx_r26 = i0.ɵɵnextContext(2);
121
+ i0.ɵɵclassProp("po-page-login-info-icon-container-dynamic", !ctx_r26.pageLoginLiterals.rememberUserHint);
122
+ i0.ɵɵadvance(1);
123
+ i0.ɵɵproperty("ngIf", ctx_r26.pageLoginLiterals.rememberUserHint);
124
+ } }
125
+ function PoPageLoginComponent_div_31_Template(rf, ctx) { if (rf & 1) {
126
+ const _r29 = i0.ɵɵgetCurrentView();
127
+ i0.ɵɵelementStart(0, "div", 13)(1, "po-switch", 41);
128
+ i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_div_31_Template_po_switch_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r28.rememberUser = $event); })("keyup.enter", function PoPageLoginComponent_div_31_Template_po_switch_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r29); const ctx_r30 = i0.ɵɵnextContext(); const _r2 = i0.ɵɵreference(13); return i0.ɵɵresetView(_r2.valid && ctx_r30.onLoginSubmit()); });
129
+ i0.ɵɵelementEnd();
130
+ i0.ɵɵtemplate(2, PoPageLoginComponent_div_31_div_2_Template, 2, 3, "div", 42);
131
+ i0.ɵɵelementEnd();
132
+ } if (rf & 2) {
133
+ const ctx_r10 = i0.ɵɵnextContext();
134
+ i0.ɵɵadvance(1);
135
+ i0.ɵɵproperty("ngModel", ctx_r10.rememberUser)("p-label-off", ctx_r10.pageLoginLiterals.rememberUser)("p-label-on", ctx_r10.pageLoginLiterals.rememberUser);
136
+ i0.ɵɵadvance(1);
137
+ i0.ɵɵproperty("ngIf", ctx_r10.pageLoginLiterals.loginHint || ctx_r10.pageLoginLiterals.rememberUserHint);
138
+ } }
139
+ function PoPageLoginComponent_div_33_Template(rf, ctx) { if (rf & 1) {
140
+ const _r32 = i0.ɵɵgetCurrentView();
141
+ i0.ɵɵelementStart(0, "div", 44)(1, "a", 45);
142
+ i0.ɵɵlistener("click", function PoPageLoginComponent_div_33_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r32); const ctx_r31 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r31.openUrl(ctx_r31.recovery)); });
143
+ i0.ɵɵtext(2);
144
+ i0.ɵɵelementEnd()();
145
+ } if (rf & 2) {
146
+ const ctx_r11 = i0.ɵɵnextContext();
147
+ i0.ɵɵadvance(2);
148
+ i0.ɵɵtextInterpolate(ctx_r11.pageLoginLiterals.forgotPassword);
149
+ } }
150
+ function PoPageLoginComponent_div_34_Template(rf, ctx) { if (rf & 1) {
151
+ const _r34 = i0.ɵɵgetCurrentView();
152
+ i0.ɵɵelementStart(0, "div", 46)(1, "a", 45);
153
+ i0.ɵɵlistener("click", function PoPageLoginComponent_div_34_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r33.openUrl(ctx_r33.registerUrl)); });
154
+ i0.ɵɵtext(2);
155
+ i0.ɵɵelementEnd()();
156
+ } if (rf & 2) {
157
+ const ctx_r12 = i0.ɵɵnextContext();
158
+ i0.ɵɵadvance(2);
159
+ i0.ɵɵtextInterpolate(ctx_r12.pageLoginLiterals.registerUrl);
160
+ } }
161
+ /**
162
+ * @docsExtends PoPageLoginBaseComponent
163
+ *
164
+ * @example
165
+ *
166
+ * <example name="po-page-login-basic" title="PO Page Login Basic">
167
+ * <file name="sample-po-page-login-basic/sample-po-page-login-basic.component.html"> </file>
168
+ * <file name="sample-po-page-login-basic/sample-po-page-login-basic.component.ts"> </file>
169
+ * </example>
170
+ *
171
+ * <example name="po-page-login-labs" title="PO Page Login Labs">
172
+ * <file name="sample-po-page-login-labs/sample-po-page-login-labs.component.html"> </file>
173
+ * <file name="sample-po-page-login-labs/sample-po-page-login-labs.component.ts"> </file>
174
+ * </example>
175
+ *
176
+ * <example name="po-page-login-human-resources" title="PO Page Login - Human Resources">
177
+ * <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.html"> </file>
178
+ * <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.ts"> </file>
179
+ * <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.module.ts"> </file>
180
+ * </example>
181
+ *
182
+ * <example name="po-page-login-automatic-service" title="PO Page Login - Automatic Service">
183
+ * <file name="sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.html"> </file>
184
+ * <file name="sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.ts"> </file>
185
+ * </example>
186
+ */
187
+ export class PoPageLoginComponent extends PoPageLoginBaseComponent {
188
+ constructor(changeDetector, activatedRoute, poComponentInjector, differs, loginService, router, poLanguageService) {
189
+ super(loginService, router, poLanguageService);
190
+ this.changeDetector = changeDetector;
191
+ this.activatedRoute = activatedRoute;
192
+ this.poComponentInjector = poComponentInjector;
193
+ this.componentRef = null;
194
+ this.customPasswordError = { custom: false };
195
+ this.differ = differs.find([]).create(null);
196
+ }
197
+ ngAfterViewChecked() {
198
+ if (this.differ) {
199
+ this.validateArrayChanges(this.differ, [
200
+ { array: this.loginErrors, callback: this.generateLoginError.bind(this) },
201
+ { array: this.passwordErrors, callback: this.generatePasswordError.bind(this) }
202
+ ]);
203
+ }
204
+ }
205
+ ngOnInit() {
206
+ this.checkingForRouteMetadata(this.activatedRoute.snapshot.data);
207
+ this.selectedLanguage = this.initializeLanguage();
208
+ this.initialSelectLanguage = this.selectedLanguage;
209
+ }
210
+ activateSupport() {
211
+ switch (typeof this.support) {
212
+ case 'string': {
213
+ this.setUrlRedirect(this.support);
214
+ break;
215
+ }
216
+ case 'function': {
217
+ this.support();
218
+ break;
219
+ }
220
+ }
221
+ }
222
+ changeLoginModel() {
223
+ if (this.authenticationUrl) {
224
+ this.loginErrors = [];
225
+ }
226
+ else {
227
+ this.setLoginErrors(this.loginErrors);
228
+ this.loginChange.emit(this.login);
229
+ }
230
+ }
231
+ changePasswordModel() {
232
+ if (this.authenticationUrl) {
233
+ this.passwordErrors = [];
234
+ }
235
+ else {
236
+ this.setPasswordErrors(this.passwordErrors);
237
+ this.passwordChange.emit(this.password);
238
+ }
239
+ }
240
+ onSelectedLanguage(language) {
241
+ this.languageChange.emit(this.languagesList.find(languageItem => languageItem.language === language));
242
+ this.selectedLanguage = language;
243
+ }
244
+ openUrl(recovery) {
245
+ switch (typeof recovery) {
246
+ case 'string': {
247
+ this.setUrlRedirect(recovery);
248
+ break;
249
+ }
250
+ case 'function': {
251
+ recovery();
252
+ break;
253
+ }
254
+ case 'object': {
255
+ this.createModalPasswordRecoveryComponent(recovery);
256
+ break;
257
+ }
258
+ }
259
+ }
260
+ concatenateLoginHintWithContactEmail(contactEmail) {
261
+ const defaultLoginHintLiteral = poPageLoginLiteralsDefault[this.language].loginHint;
262
+ const prepositionLiteral = poPageLoginLiteralIn[this.language];
263
+ return this.concatenateLiteral(contactEmail, 'loginHint', defaultLoginHintLiteral, prepositionLiteral);
264
+ }
265
+ setLoginErrors(errors) {
266
+ const control = this.loginForm.form.controls['login'];
267
+ this.setControlErrors('allLoginErrors', control, errors, this.pageLoginLiterals.loginErrorPattern);
268
+ }
269
+ setPasswordErrors(errors) {
270
+ const control = this.loginForm.form.controls['password'];
271
+ this.setControlErrors('allPasswordErrors', control, errors, this.pageLoginLiterals.passwordErrorPattern);
272
+ }
273
+ checkingForMetadataProperty(object, property) {
274
+ if (Object.prototype.hasOwnProperty.call(object, property)) {
275
+ return object[property];
276
+ }
277
+ }
278
+ checkingForRouteMetadata(data) {
279
+ if (Object.keys(data).length !== 0) {
280
+ this.authenticationUrl = this.checkingForMetadataProperty(data, 'serviceApi') || this.authenticationUrl;
281
+ this.authenticationType = this.checkingForMetadataProperty(data, 'authenticationType') || this.authenticationType;
282
+ this.environment = this.checkingForMetadataProperty(data, 'environment') || this.environment;
283
+ this.recovery = this.checkingForMetadataProperty(data, 'recovery') || this.recovery;
284
+ this.registerUrl = this.checkingForMetadataProperty(data, 'registerUrl') || this.registerUrl;
285
+ }
286
+ }
287
+ concatenate(defaultLiteral, prefixLiteral, value) {
288
+ return `${defaultLiteral} ${prefixLiteral} ${value}`;
289
+ }
290
+ concatenateLiteral(value, literal, defaultLiteral, prepositionLiteral) {
291
+ return { [literal]: this.concatenate(defaultLiteral, prepositionLiteral, value) };
292
+ }
293
+ createModalPasswordRecoveryComponent(poPageLoginRecovery) {
294
+ if (this.componentRef) {
295
+ this.poComponentInjector.destroyComponentInApplication(this.componentRef);
296
+ }
297
+ this.componentRef = this.poComponentInjector.createComponentInApplication(PoModalPasswordRecoveryComponent);
298
+ this.componentRef.instance.urlRecovery = poPageLoginRecovery.url;
299
+ this.componentRef.instance.contactEmail = poPageLoginRecovery.contactMail;
300
+ this.componentRef.instance.phoneMask = poPageLoginRecovery.phoneMask;
301
+ this.componentRef.instance.type = poPageLoginRecovery.type || PoModalPasswordRecoveryType.Email;
302
+ this.componentRef.changeDetectorRef.detectChanges();
303
+ setTimeout(() => {
304
+ this.componentRef.instance.open();
305
+ });
306
+ }
307
+ generateLoginError() {
308
+ if (this.loginErrors && this.loginErrors.length) {
309
+ this.setLoginErrors(this.loginErrors);
310
+ }
311
+ else {
312
+ const control = this.loginForm.form.controls['login'];
313
+ if (control) {
314
+ this.resetControl(control);
315
+ }
316
+ }
317
+ }
318
+ generatePasswordError() {
319
+ if (this.passwordErrors && this.passwordErrors.length) {
320
+ this.setPasswordErrors(this.passwordErrors);
321
+ }
322
+ else {
323
+ const control = this.loginForm.form.controls['password'];
324
+ if (control) {
325
+ this.resetControl(control);
326
+ }
327
+ }
328
+ }
329
+ resetControl(control) {
330
+ control.markAsPristine();
331
+ control.markAsUntouched();
332
+ control.updateValueAndValidity();
333
+ }
334
+ setControlErrors(allErrors, control, errors, patternError) {
335
+ if (control) {
336
+ this[allErrors] = control.hasError('pattern') ? [...errors, ...[patternError]] : [...errors];
337
+ if (errors && errors.length && (control.valid || control.pristine)) {
338
+ control.markAsTouched();
339
+ control.markAsDirty();
340
+ control.setErrors(this.customPasswordError);
341
+ }
342
+ }
343
+ }
344
+ setUrlRedirect(url) {
345
+ isExternalLink(url) ? window.open(url, '_blank') : this.router.navigate([url]);
346
+ }
347
+ validateArrayChanges(differ, array) {
348
+ array.forEach(element => {
349
+ const changes = differ.diff(element.array);
350
+ if (changes) {
351
+ element.callback();
352
+ this.changeDetector.detectChanges();
353
+ }
354
+ });
355
+ }
356
+ initializeLanguage() {
357
+ const language = this.languagesList.find(languageItem => languageItem.language === this.language);
358
+ return language?.language || this.languagesList[0].language;
359
+ }
360
+ }
361
+ PoPageLoginComponent.ɵfac = function PoPageLoginComponent_Factory(t) { return new (t || PoPageLoginComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.PoComponentInjectorService), i0.ɵɵdirectiveInject(i0.IterableDiffers), i0.ɵɵdirectiveInject(i3.PoPageLoginService), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.PoLanguageService)); };
362
+ PoPageLoginComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageLoginComponent, selectors: [["po-page-login"]], viewQuery: function PoPageLoginComponent_Query(rf, ctx) { if (rf & 1) {
363
+ i0.ɵɵviewQuery(_c0, 7, NgForm);
364
+ i0.ɵɵviewQuery(_c1, 7, ViewContainerRef);
365
+ } if (rf & 2) {
366
+ let _t;
367
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loginForm = _t.first);
368
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageLogin = _t.first);
369
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 35, vars: 39, consts: [[1, "po-page-login-support", 3, "hidden", "click"], [1, "po-icon", "po-icon-help"], [3, "p-show-select-language", "p-languages", "p-initial-language", "p-background", "p-highlight-info", "p-logo", "p-secondary-logo", "p-selected-language"], ["pageLogin", ""], [1, "po-page-login-header"], [1, "po-mb-md-4", "po-mb-sm-1"], [1, "po-page-login-header-product-name"], ["p-type", "warning", 3, "p-value", 4, "ngIf"], [1, "po-page-login-header-welcome", "po-mb-md-4", "po-mb-sm-2"], [1, "po-page-login-form"], ["loginForm", "ngForm"], [1, "po-row"], [1, "po-lg-12"], [1, "po-page-login-hint", "po-page-login-info-container"], ["name", "login", "p-auto-focus", "", "p-required", "", 1, "po-page-login-info-field", 3, "ngModel", "p-label", "p-pattern", "p-placeholder", "ngModelChange", "click", "keyup.enter", "p-change-model"], ["class", "po-page-login-info-icon-container", 3, "po-page-login-info-icon-container-dynamic", 4, "ngIf"], [1, "po-field-container-bottom", "po-field-container-error-container"], ["class", "po-field-container-bottom-text-error po-field-container-error-item", 4, "ngFor", "ngForOf"], [1, "po-page-login-password-container"], ["name", "password", "p-required", "", 1, "po-page-login-field-size", "po-page-login-password-item", 3, "ngModel", "p-label", "p-pattern", "p-placeholder", "ngModelChange", "click", "keyup.enter", "p-change-model"], ["class", "po-page-login-password-item po-page-login-password-popover-container", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldInput", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-error-pattern", "p-pattern", "p-placeholder", "ngModelChange", "keyup.enter", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldCombo", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-field-value", "p-filter-service", "p-placeholder", "ngModelChange", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldSelect", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-placeholder", "p-options", "ngModelChange", 4, "ngIf"], ["class", "po-page-login-hint po-page-login-info-container", 4, "ngIf"], ["p-kind", "primary", 1, "po-lg-12", "po-page-login-button", "po-page-login-field-size", 3, "p-disabled", "p-label", "p-loading", "p-click"], ["class", "po-page-login-recovery-link", 4, "ngIf"], ["class", "po-page-login-register-link", 4, "ngIf"], ["p-type", "warning", 3, "p-value"], [1, "po-page-login-info-icon-container"], ["class", "po-icon po-field-icon po-icon-info", "p-tooltip-position", "right", 3, "p-tooltip", 4, "ngIf"], ["p-tooltip-position", "right", 1, "po-icon", "po-field-icon", "po-icon-info", 3, "p-tooltip"], [1, "po-field-container-bottom-text-error", "po-field-container-error-item"], [1, "po-icon", "po-icon-exclamation"], [1, "po-field-container-error-text"], [1, "po-page-login-password-item", "po-page-login-password-popover-container"], [3, "p-literals", "p-recovery", "p-remaining-attempts", "p-forgot-password", 4, "ngIf"], [3, "p-literals", "p-recovery", "p-remaining-attempts", "p-forgot-password"], ["name", "customFieldInput", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-error-pattern", "p-pattern", "p-placeholder", "ngModelChange", "keyup.enter"], ["name", "customFieldCombo", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-field-value", "p-filter-service", "p-placeholder", "ngModelChange"], ["name", "customFieldSelect", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-placeholder", "p-options", "ngModelChange"], ["name", "rememberUser", "p-label-position", "1", 1, "po-page-login-info-field", "po-lg-7", "po-offset-lg-5", "po-offset-xl-5", 3, "ngModel", "p-label-off", "p-label-on", "ngModelChange", "keyup.enter"], ["class", "po-page-login-info-icon-container po-page-login-info-icon-remember-user", 3, "po-page-login-info-icon-container-dynamic", 4, "ngIf"], [1, "po-page-login-info-icon-container", "po-page-login-info-icon-remember-user"], [1, "po-page-login-recovery-link"], [1, "po-font-text-large-bold", 3, "click"], [1, "po-page-login-register-link"]], template: function PoPageLoginComponent_Template(rf, ctx) { if (rf & 1) {
370
+ const _r35 = i0.ɵɵgetCurrentView();
371
+ i0.ɵɵelementStart(0, "button", 0);
372
+ i0.ɵɵlistener("click", function PoPageLoginComponent_Template_button_click_0_listener() { return ctx.activateSupport(); });
373
+ i0.ɵɵelement(1, "span", 1);
374
+ i0.ɵɵtext(2);
375
+ i0.ɵɵelementEnd();
376
+ i0.ɵɵelementStart(3, "po-page-background", 2, 3);
377
+ i0.ɵɵlistener("p-selected-language", function PoPageLoginComponent_Template_po_page_background_p_selected_language_3_listener($event) { return ctx.onSelectedLanguage($event); });
378
+ i0.ɵɵelementStart(5, "header", 4)(6, "h1", 5)(7, "div", 6);
379
+ i0.ɵɵtext(8);
380
+ i0.ɵɵelementEnd();
381
+ i0.ɵɵtemplate(9, PoPageLoginComponent_po_tag_9_Template, 1, 1, "po-tag", 7);
382
+ i0.ɵɵelementEnd();
383
+ i0.ɵɵelementStart(10, "div", 8);
384
+ i0.ɵɵtext(11);
385
+ i0.ɵɵelementEnd()();
386
+ i0.ɵɵelementStart(12, "form", 9, 10)(14, "div", 11)(15, "div", 12)(16, "div", 13)(17, "po-login", 14);
387
+ i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_Template_po_login_ngModelChange_17_listener($event) { return ctx.login = $event; })("click", function PoPageLoginComponent_Template_po_login_click_17_listener() { return ctx.closePopover(); })("keyup.enter", function PoPageLoginComponent_Template_po_login_keyup_enter_17_listener() { i0.ɵɵrestoreView(_r35); const _r2 = i0.ɵɵreference(13); return i0.ɵɵresetView(_r2.valid && ctx.onLoginSubmit()); })("p-change-model", function PoPageLoginComponent_Template_po_login_p_change_model_17_listener() { return ctx.changeLoginModel(); });
388
+ i0.ɵɵelementEnd();
389
+ i0.ɵɵtemplate(18, PoPageLoginComponent_div_18_Template, 2, 3, "div", 15);
390
+ i0.ɵɵelementEnd();
391
+ i0.ɵɵelementStart(19, "div", 16);
392
+ i0.ɵɵtemplate(20, PoPageLoginComponent_div_20_Template, 4, 1, "div", 17);
393
+ i0.ɵɵelementEnd()();
394
+ i0.ɵɵelementStart(21, "div", 12)(22, "div", 18)(23, "po-password", 19);
395
+ i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_Template_po_password_ngModelChange_23_listener($event) { return ctx.password = $event; })("click", function PoPageLoginComponent_Template_po_password_click_23_listener() { return ctx.closePopover(); })("keyup.enter", function PoPageLoginComponent_Template_po_password_keyup_enter_23_listener() { i0.ɵɵrestoreView(_r35); const _r2 = i0.ɵɵreference(13); return i0.ɵɵresetView(_r2.valid && ctx.onLoginSubmit()); })("p-change-model", function PoPageLoginComponent_Template_po_password_p_change_model_23_listener() { return ctx.changePasswordModel(); });
396
+ i0.ɵɵelementEnd();
397
+ i0.ɵɵtemplate(24, PoPageLoginComponent_div_24_Template, 2, 1, "div", 20);
398
+ i0.ɵɵelementEnd();
399
+ i0.ɵɵelementStart(25, "div", 16);
400
+ i0.ɵɵtemplate(26, PoPageLoginComponent_div_26_Template, 4, 1, "div", 17);
401
+ i0.ɵɵelementEnd()();
402
+ i0.ɵɵtemplate(27, PoPageLoginComponent_po_input_27_Template, 1, 6, "po-input", 21);
403
+ i0.ɵɵtemplate(28, PoPageLoginComponent_po_combo_28_Template, 1, 6, "po-combo", 22);
404
+ i0.ɵɵtemplate(29, PoPageLoginComponent_po_select_29_Template, 1, 5, "po-select", 23);
405
+ i0.ɵɵelementStart(30, "div", 12);
406
+ i0.ɵɵtemplate(31, PoPageLoginComponent_div_31_Template, 3, 4, "div", 24);
407
+ i0.ɵɵelementEnd();
408
+ i0.ɵɵelementStart(32, "po-button", 25);
409
+ i0.ɵɵlistener("p-click", function PoPageLoginComponent_Template_po_button_p_click_32_listener() { return ctx.onLoginSubmit(); });
410
+ i0.ɵɵelementEnd();
411
+ i0.ɵɵtemplate(33, PoPageLoginComponent_div_33_Template, 3, 1, "div", 26);
412
+ i0.ɵɵtemplate(34, PoPageLoginComponent_div_34_Template, 3, 1, "div", 27);
413
+ i0.ɵɵelementEnd()()();
414
+ } if (rf & 2) {
415
+ const _r2 = i0.ɵɵreference(13);
416
+ i0.ɵɵproperty("hidden", !ctx.support);
417
+ i0.ɵɵadvance(2);
418
+ i0.ɵɵtextInterpolate1(" ", ctx.pageLoginLiterals == null ? null : ctx.pageLoginLiterals.support, "\n");
419
+ i0.ɵɵadvance(1);
420
+ i0.ɵɵproperty("p-show-select-language", ctx.showLanguage)("p-languages", ctx.languagesList)("p-initial-language", ctx.initialSelectLanguage)("p-background", ctx.background)("p-highlight-info", ctx.pageLoginLiterals.highlightInfo)("p-logo", ctx.logo)("p-secondary-logo", ctx.secondaryLogo);
421
+ i0.ɵɵadvance(5);
422
+ i0.ɵɵtextInterpolate(ctx.productName);
423
+ i0.ɵɵadvance(1);
424
+ i0.ɵɵproperty("ngIf", ctx.environment);
425
+ i0.ɵɵadvance(2);
426
+ i0.ɵɵtextInterpolate(ctx.pageLoginLiterals.welcome);
427
+ i0.ɵɵadvance(6);
428
+ i0.ɵɵclassProp("po-page-login-info-field-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
429
+ i0.ɵɵproperty("ngModel", ctx.login)("p-label", ctx.pageLoginLiterals.loginLabel)("p-pattern", ctx.loginPattern)("p-placeholder", ctx.pageLoginLiterals.loginPlaceholder);
430
+ i0.ɵɵadvance(1);
431
+ i0.ɵɵproperty("ngIf", ctx.pageLoginLiterals.loginHint || ctx.pageLoginLiterals.rememberUserHint);
432
+ i0.ɵɵadvance(2);
433
+ i0.ɵɵproperty("ngForOf", ctx.allLoginErrors);
434
+ i0.ɵɵadvance(3);
435
+ i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
436
+ i0.ɵɵproperty("ngModel", ctx.password)("p-label", ctx.pageLoginLiterals.passwordLabel)("p-pattern", ctx.passwordPattern)("p-placeholder", ctx.pageLoginLiterals.passwordPlaceholder);
437
+ i0.ɵɵadvance(1);
438
+ i0.ɵɵproperty("ngIf", ctx.pageLoginLiterals.loginHint || ctx.pageLoginLiterals.rememberUserHint);
439
+ i0.ɵɵadvance(2);
440
+ i0.ɵɵproperty("ngForOf", ctx.allPasswordErrors);
441
+ i0.ɵɵadvance(1);
442
+ i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "input");
443
+ i0.ɵɵadvance(1);
444
+ i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "combo");
445
+ i0.ɵɵadvance(1);
446
+ i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "select");
447
+ i0.ɵɵadvance(2);
448
+ i0.ɵɵproperty("ngIf", !ctx.hideRememberUser);
449
+ i0.ɵɵadvance(1);
450
+ i0.ɵɵclassProp("po-page-login-button-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
451
+ i0.ɵɵproperty("p-disabled", _r2.invalid)("p-label", ctx.loading ? ctx.pageLoginLiterals.submittedLabel : ctx.pageLoginLiterals.submitLabel)("p-loading", ctx.loading);
452
+ i0.ɵɵadvance(1);
453
+ i0.ɵɵproperty("ngIf", ctx.recovery);
454
+ i0.ɵɵadvance(1);
455
+ i0.ɵɵproperty("ngIf", ctx.registerUrl);
456
+ } }, dependencies: [i4.NgForOf, i4.NgIf, i5.ɵNgNoValidate, i5.NgControlStatus, i5.NgControlStatusGroup, i5.NgModel, i5.NgForm, i6.PoPageBackgroundComponent, i2.PoButtonComponent, i2.PoComboComponent, i2.PoInputComponent, i2.PoLoginComponent, i2.PoPasswordComponent, i2.PoSelectComponent, i2.PoSwitchComponent, i2.PoTagComponent, i2.PoTooltipDirective, i7.PoPageLoginPopoverComponent], encapsulation: 2 });
457
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageLoginComponent, [{
458
+ type: Component,
459
+ args: [{ selector: 'po-page-login', template: "<button class=\"po-page-login-support\" (click)=\"activateSupport()\" [hidden]=\"!support\">\r\n <span class=\"po-icon po-icon-help\"></span>\r\n {{ pageLoginLiterals?.support }}\r\n</button>\r\n\r\n<po-page-background\r\n #pageLogin\r\n [p-show-select-language]=\"showLanguage\"\r\n [p-languages]=\"languagesList\"\r\n [p-initial-language]=\"initialSelectLanguage\"\r\n [p-background]=\"background\"\r\n [p-highlight-info]=\"pageLoginLiterals.highlightInfo\"\r\n [p-logo]=\"logo\"\r\n [p-secondary-logo]=\"secondaryLogo\"\r\n (p-selected-language)=\"onSelectedLanguage($event)\"\r\n>\r\n <header class=\"po-page-login-header\">\r\n <h1 class=\"po-mb-md-4 po-mb-sm-1\">\r\n <div class=\"po-page-login-header-product-name\">{{ productName }}</div>\r\n <po-tag *ngIf=\"environment\" p-type=\"warning\" [p-value]=\"environment\"> </po-tag>\r\n </h1>\r\n <div class=\"po-page-login-header-welcome po-mb-md-4 po-mb-sm-2\">{{ pageLoginLiterals.welcome }}</div>\r\n </header>\r\n\r\n <form #loginForm=\"ngForm\" class=\"po-page-login-form\">\r\n <div class=\"po-row\">\r\n <div class=\"po-lg-12\">\r\n <div class=\"po-page-login-hint po-page-login-info-container\">\r\n <po-login\r\n class=\"po-page-login-info-field\"\r\n [class.po-page-login-info-field-dynamic]=\"\r\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\r\n \"\r\n name=\"login\"\r\n [(ngModel)]=\"login\"\r\n p-auto-focus\r\n p-required\r\n [p-label]=\"pageLoginLiterals.loginLabel\"\r\n [p-pattern]=\"loginPattern\"\r\n [p-placeholder]=\"pageLoginLiterals.loginPlaceholder\"\r\n (click)=\"closePopover()\"\r\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\r\n (p-change-model)=\"changeLoginModel()\"\r\n >\r\n </po-login>\r\n\r\n <div\r\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-info-icon-container\"\r\n [class.po-page-login-info-icon-container-dynamic]=\"\r\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\r\n \"\r\n >\r\n <span\r\n *ngIf=\"pageLoginLiterals.loginHint\"\r\n class=\"po-icon po-field-icon po-icon-info\"\r\n p-tooltip-position=\"right\"\r\n [p-tooltip]=\"pageLoginLiterals.loginHint\"\r\n >\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"po-field-container-bottom po-field-container-error-container\">\r\n <div\r\n *ngFor=\"let error of allLoginErrors\"\r\n class=\"po-field-container-bottom-text-error po-field-container-error-item\"\r\n >\r\n <span class=\"po-icon po-icon-exclamation\"></span>\r\n <span class=\"po-field-container-error-text\">{{ error }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"po-lg-12\">\r\n <div class=\"po-page-login-password-container\">\r\n <po-password\r\n class=\"po-page-login-field-size po-page-login-password-item\"\r\n [class.po-page-login-field-size-dynamic]=\"\r\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\r\n \"\r\n name=\"password\"\r\n [(ngModel)]=\"password\"\r\n p-required\r\n [p-label]=\"pageLoginLiterals.passwordLabel\"\r\n [p-pattern]=\"passwordPattern\"\r\n [p-placeholder]=\"pageLoginLiterals.passwordPlaceholder\"\r\n (click)=\"closePopover()\"\r\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\r\n (p-change-model)=\"changePasswordModel()\"\r\n >\r\n </po-password>\r\n <div\r\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-password-item po-page-login-password-popover-container\"\r\n >\r\n <po-page-login-popover\r\n *ngIf=\"showExceededAttemptsWarning && exceededAttemptsWarning\"\r\n [p-literals]=\"pageLoginLiterals\"\r\n [p-recovery]=\"recovery\"\r\n [p-remaining-attempts]=\"exceededAttemptsWarning\"\r\n (p-forgot-password)=\"openUrl($event)\"\r\n >\r\n </po-page-login-popover>\r\n </div>\r\n </div>\r\n <div class=\"po-field-container-bottom po-field-container-error-container\">\r\n <div\r\n *ngFor=\"let error of allPasswordErrors\"\r\n class=\"po-field-container-bottom-text-error po-field-container-error-item\"\r\n >\r\n <span class=\"po-icon po-icon-exclamation\"></span>\r\n <span class=\"po-field-container-error-text\">{{ error }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <po-input\r\n *ngIf=\"customField && customFieldType === 'input'\"\r\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-field-size po-lg-12\"\r\n name=\"customFieldInput\"\r\n [(ngModel)]=\"customFieldObject.value\"\r\n p-required\r\n [p-error-pattern]=\"customFieldObject.errorPattern || pageLoginLiterals.customFieldErrorPattern\"\r\n [p-pattern]=\"customFieldObject.pattern\"\r\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\r\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\r\n >\r\n </po-input>\r\n\r\n <po-combo\r\n *ngIf=\"customField && customFieldType === 'combo'\"\r\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-field-size po-lg-12\"\r\n name=\"customFieldCombo\"\r\n [(ngModel)]=\"customFieldObject.value\"\r\n p-required\r\n [p-field-value]=\"customFieldObject.fieldValue\"\r\n [p-filter-service]=\"customFieldObject.url\"\r\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\r\n >\r\n </po-combo>\r\n\r\n <po-select\r\n *ngIf=\"customField && customFieldType === 'select'\"\r\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-field-size po-lg-12\"\r\n name=\"customFieldSelect\"\r\n [(ngModel)]=\"customFieldObject.value\"\r\n p-required\r\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\r\n [p-options]=\"customFieldObject.options\"\r\n >\r\n </po-select>\r\n\r\n <div class=\"po-lg-12\">\r\n <div *ngIf=\"!hideRememberUser\" class=\"po-page-login-hint po-page-login-info-container\">\r\n <po-switch\r\n class=\"po-page-login-info-field po-lg-7 po-offset-lg-5 po-offset-xl-5\"\r\n name=\"rememberUser\"\r\n [(ngModel)]=\"rememberUser\"\r\n p-label-position=\"1\"\r\n [p-label-off]=\"pageLoginLiterals.rememberUser\"\r\n [p-label-on]=\"pageLoginLiterals.rememberUser\"\r\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\r\n >\r\n </po-switch>\r\n\r\n <div\r\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-info-icon-container po-page-login-info-icon-remember-user\"\r\n [class.po-page-login-info-icon-container-dynamic]=\"!pageLoginLiterals.rememberUserHint\"\r\n >\r\n <span\r\n *ngIf=\"pageLoginLiterals.rememberUserHint\"\r\n class=\"po-icon po-field-icon po-icon-info\"\r\n p-tooltip-position=\"right\"\r\n [p-tooltip]=\"pageLoginLiterals.rememberUserHint\"\r\n >\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <po-button\r\n [class.po-page-login-button-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\r\n class=\"po-lg-12 po-page-login-button po-page-login-field-size\"\r\n p-kind=\"primary\"\r\n [p-disabled]=\"loginForm.invalid\"\r\n [p-label]=\"loading ? pageLoginLiterals.submittedLabel : pageLoginLiterals.submitLabel\"\r\n [p-loading]=\"loading\"\r\n (p-click)=\"onLoginSubmit()\"\r\n >\r\n </po-button>\r\n\r\n <div *ngIf=\"recovery\" class=\"po-page-login-recovery-link\">\r\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(recovery)\">{{ pageLoginLiterals.forgotPassword }}</a>\r\n </div>\r\n\r\n <div *ngIf=\"registerUrl\" class=\"po-page-login-register-link\">\r\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(registerUrl)\">{{ pageLoginLiterals.registerUrl }}</a>\r\n </div>\r\n </div>\r\n </form>\r\n</po-page-background>\r\n" }]
460
+ }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ActivatedRoute }, { type: i2.PoComponentInjectorService }, { type: i0.IterableDiffers }, { type: i3.PoPageLoginService }, { type: i1.Router }, { type: i2.PoLanguageService }]; }, { loginForm: [{
461
+ type: ViewChild,
462
+ args: ['loginForm', { read: NgForm, static: true }]
463
+ }], pageLogin: [{
464
+ type: ViewChild,
465
+ args: ['pageLogin', { read: ViewContainerRef, static: true }]
466
+ }] }); })();
467
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtbG9naW4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtbG9naW4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFHTCxTQUFTLEVBSVQsU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHbEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDdEgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDdkgsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzNCLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7OztJQ0xsQyw2QkFBK0U7OztJQUFsQyw0Q0FBdUI7OztJQWtDOUQsMkJBTU87OztJQUZMLCtEQUF5Qzs7O0lBWDdDLCtCQU1DO0lBQ0MsK0VBTU87SUFDVCxpQkFBTTs7O0lBWEosOElBRUM7SUFHRSxlQUFpQztJQUFqQyx5REFBaUM7OztJQVV0QywrQkFHQztJQUNDLDJCQUFpRDtJQUNqRCxnQ0FBNEM7SUFBQSxZQUFXO0lBQUEsaUJBQU8sRUFBQTs7O0lBQWxCLGVBQVc7SUFBWCwrQkFBVzs7OztJQTJCdkQsaURBTUM7SUFEQywwT0FBcUIsZUFBQSx1QkFBZSxDQUFBLElBQUM7SUFFdkMsaUJB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OztRQTNNd0QscUNBQW1CO1FBRW5GLGVBQ0Y7UUFERSxzR0FDRjtRQUlFLGVBQXVDO1FBQXZDLHlEQUF1QyxrQ0FBQSxpREFBQSxnQ0FBQSx5REFBQSxvQkFBQSx1Q0FBQTtRQVdZLGVBQWlCO1FBQWpCLHFDQUFpQjtRQUN2RCxlQUFpQjtRQUFqQixzQ0FBaUI7UUFFb0MsZUFBK0I7UUFBL0IsbURBQStCO1FBU3ZGLGVBRUM7UUFGRCwrSEFFQztRQUVELG1DQUFtQiw2Q0FBQSwrQkFBQSx5REFBQTtRQWFsQixlQUF1RTtRQUF2RSxnR0FBdUU7UUFrQnRELGVBQWlCO1FBQWpCLDRDQUFpQjtRQWFuQyxlQUVDO1FBRkQsK0hBRUM7UUFFRCxzQ0FBc0IsZ0RBQUEsa0NBQUEsNERBQUE7UUFXckIsZUFBdUU7UUFBdkUsZ0dBQXVFO1FBZXRELGVBQW9CO1FBQXBCLCtDQUFvQjtRQVV6QyxlQUFnRDtRQUFoRCx5RUFBZ0Q7UUFjaEQsZUFBZ0Q7UUFBaEQseUVBQWdEO1FBYWhELGVBQWlEO1FBQWpELDBFQUFpRDtRQVk1QyxlQUF1QjtRQUF2Qiw0Q0FBdUI7UUE2QjdCLGVBQTBHO1FBQTFHLDJIQUEwRztRQUcxRyx3Q0FBZ0MsbUdBQUEsMEJBQUE7UUFPNUIsZUFBYztRQUFkLG1DQUFjO1FBSWQsZUFBaUI7UUFBakIsc0NBQWlCOzt1RkQ3SWhCLG9CQUFvQjtjQUpoQyxTQUFTOzJCQUNFLGVBQWU7OFBBSStCLFNBQVM7a0JBQWhFLFNBQVM7bUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ1ksU0FBUztrQkFBMUUsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRSZWYsXHJcbiAgSXRlcmFibGVEaWZmZXJzLFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XHJcblxyXG5pbXBvcnQgeyBpc0V4dGVybmFsTGluayB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xyXG5pbXBvcnQgeyBQb0NvbXBvbmVudEluamVjdG9yU2VydmljZSB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcclxuXHJcbmltcG9ydCB7IFBvTW9kYWxQYXNzd29yZFJlY292ZXJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnkvcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlUeXBlIH0gZnJvbSAnLi4vcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnkvZW51bXMvcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnktdHlwZS5lbnVtJztcclxuaW1wb3J0IHtcclxuICBQb1BhZ2VMb2dpbkJhc2VDb21wb25lbnQsXHJcbiAgcG9QYWdlTG9naW5MaXRlcmFsSW4sXHJcbiAgcG9QYWdlTG9naW5MaXRlcmFsc0RlZmF1bHRcclxufSBmcm9tICcuL3BvLXBhZ2UtbG9naW4tYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQb1BhZ2VMb2dpblJlY292ZXJ5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtbG9naW4tcmVjb3ZlcnkuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9QYWdlTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9wby1wYWdlLWxvZ2luLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIEBkb2NzRXh0ZW5kcyBQb1BhZ2VMb2dpbkJhc2VDb21wb25lbnRcclxuICpcclxuICogQGV4YW1wbGVcclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtbG9naW4tYmFzaWNcIiB0aXRsZT1cIlBPIFBhZ2UgTG9naW4gQmFzaWNcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1iYXNpYy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XHJcbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtbG9naW4tYmFzaWMvc2FtcGxlLXBvLXBhZ2UtbG9naW4tYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogPC9leGFtcGxlPlxyXG4gKlxyXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tcGFnZS1sb2dpbi1sYWJzXCIgdGl0bGU9XCJQTyBQYWdlIExvZ2luIExhYnNcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1sYWJzL3NhbXBsZS1wby1wYWdlLWxvZ2luLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWxhYnMvc2FtcGxlLXBvLXBhZ2UtbG9naW4tbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqXHJcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlc1wiIHRpdGxlPVwiUE8gUGFnZSBMb2dpbiAtIEh1bWFuIFJlc291cmNlc1wiPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMvc2FtcGxlLXBvLXBhZ2UtbG9naW4taHVtYW4tcmVzb3VyY2VzLm1vZHVsZS50c1wiPiA8L2ZpbGU+XHJcbiAqIDwvZXhhbXBsZT5cclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtbG9naW4tYXV0b21hdGljLXNlcnZpY2VcIiB0aXRsZT1cIlBPIFBhZ2UgTG9naW4gLSBBdXRvbWF0aWMgU2VydmljZVwiPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWF1dG9tYXRpYy1zZXJ2aWNlL3NhbXBsZS1wby1wYWdlLWxvZ2luLWF1dG9tYXRpYy1zZXJ2aWNlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1hdXRvbWF0aWMtc2VydmljZS9zYW1wbGUtcG8tcGFnZS1sb2dpbi1hdXRvbWF0aWMtc2VydmljZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwby1wYWdlLWxvZ2luJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFBvUGFnZUxvZ2luQ29tcG9uZW50IGV4dGVuZHMgUG9QYWdlTG9naW5CYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdsb2dpbkZvcm0nLCB7IHJlYWQ6IE5nRm9ybSwgc3RhdGljOiB0cnVlIH0pIGxvZ2luRm9ybTogTmdGb3JtO1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2VMb2dpbicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHBhZ2VMb2dpbjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgaW5pdGlhbFNlbGVjdExhbmd1YWdlOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiA9IG51bGw7XHJcbiAgcHJpdmF0ZSBkaWZmZXI6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGN1c3RvbVBhc3N3b3JkRXJyb3IgPSB7IGN1c3RvbTogZmFsc2UgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHBvQ29tcG9uZW50SW5qZWN0b3I6IFBvQ29tcG9uZW50SW5qZWN0b3JTZXJ2aWNlLFxyXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxyXG4gICAgbG9naW5TZXJ2aWNlOiBQb1BhZ2VMb2dpblNlcnZpY2UsXHJcbiAgICByb3V0ZXI6IFJvdXRlcixcclxuICAgIHBvTGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIobG9naW5TZXJ2aWNlLCByb3V0ZXIsIHBvTGFuZ3VhZ2VTZXJ2aWNlKTtcclxuICAgIHRoaXMuZGlmZmVyID0gZGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICBpZiAodGhpcy5kaWZmZXIpIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZUFycmF5Q2hhbmdlcyh0aGlzLmRpZmZlciwgW1xyXG4gICAgICAgIHsgYXJyYXk6IHRoaXMubG9naW5FcnJvcnMsIGNhbGxiYWNrOiB0aGlzLmdlbmVyYXRlTG9naW5FcnJvci5iaW5kKHRoaXMpIH0sXHJcbiAgICAgICAgeyBhcnJheTogdGhpcy5wYXNzd29yZEVycm9ycywgY2FsbGJhY2s6IHRoaXMuZ2VuZXJhdGVQYXNzd29yZEVycm9yLmJpbmQodGhpcykgfVxyXG4gICAgICBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jaGVja2luZ0ZvclJvdXRlTWV0YWRhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSA9IHRoaXMuaW5pdGlhbGl6ZUxhbmd1YWdlKCk7XHJcbiAgICB0aGlzLmluaXRpYWxTZWxlY3RMYW5ndWFnZSA9IHRoaXMuc2VsZWN0ZWRMYW5ndWFnZTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlU3VwcG9ydCgpIHtcclxuICAgIHN3aXRjaCAodHlwZW9mIHRoaXMuc3VwcG9ydCkge1xyXG4gICAgICBjYXNlICdzdHJpbmcnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRVcmxSZWRpcmVjdCh0aGlzLnN1cHBvcnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoge1xyXG4gICAgICAgIHRoaXMuc3VwcG9ydCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VMb2dpbk1vZGVsKCkge1xyXG4gICAgaWYgKHRoaXMuYXV0aGVudGljYXRpb25VcmwpIHtcclxuICAgICAgdGhpcy5sb2dpbkVycm9ycyA9IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRMb2dpbkVycm9ycyh0aGlzLmxvZ2luRXJyb3JzKTtcclxuICAgICAgdGhpcy5sb2dpbkNoYW5nZS5lbWl0KHRoaXMubG9naW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFzc3dvcmRNb2RlbCgpIHtcclxuICAgIGlmICh0aGlzLmF1dGhlbnRpY2F0aW9uVXJsKSB7XHJcbiAgICAgIHRoaXMucGFzc3dvcmRFcnJvcnMgPSBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0UGFzc3dvcmRFcnJvcnModGhpcy5wYXNzd29yZEVycm9ycyk7XHJcbiAgICAgIHRoaXMucGFzc3dvcmRDaGFuZ2UuZW1pdCh0aGlzLnBhc3N3b3JkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmxhbmd1YWdlQ2hhbmdlLmVtaXQodGhpcy5sYW5ndWFnZXNMaXN0LmZpbmQobGFuZ3VhZ2VJdGVtID0+IGxhbmd1YWdlSXRlbS5sYW5ndWFnZSA9PT0gbGFuZ3VhZ2UpKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSA9IGxhbmd1YWdlO1xyXG4gIH1cclxuXHJcbiAgb3BlblVybChyZWNvdmVyeTogYW55KTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKHR5cGVvZiByZWNvdmVyeSkge1xyXG4gICAgICBjYXNlICdzdHJpbmcnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRVcmxSZWRpcmVjdChyZWNvdmVyeSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnZnVuY3Rpb24nOiB7XHJcbiAgICAgICAgcmVjb3ZlcnkoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdvYmplY3QnOiB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVNb2RhbFBhc3N3b3JkUmVjb3ZlcnlDb21wb25lbnQocmVjb3ZlcnkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY29uY2F0ZW5hdGVMb2dpbkhpbnRXaXRoQ29udGFjdEVtYWlsKGNvbnRhY3RFbWFpbDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkZWZhdWx0TG9naW5IaW50TGl0ZXJhbCA9IHBvUGFnZUxvZ2luTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLmxvZ2luSGludDtcclxuICAgIGNvbnN0IHByZXBvc2l0aW9uTGl0ZXJhbCA9IHBvUGFnZUxvZ2luTGl0ZXJhbEluW3RoaXMubGFuZ3VhZ2VdO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlTGl0ZXJhbChjb250YWN0RW1haWwsICdsb2dpbkhpbnQnLCBkZWZhdWx0TG9naW5IaW50TGl0ZXJhbCwgcHJlcG9zaXRpb25MaXRlcmFsKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzZXRMb2dpbkVycm9ycyhlcnJvcnM6IEFycmF5PHN0cmluZz4pIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmxvZ2luRm9ybS5mb3JtLmNvbnRyb2xzWydsb2dpbiddO1xyXG4gICAgdGhpcy5zZXRDb250cm9sRXJyb3JzKCdhbGxMb2dpbkVycm9ycycsIGNvbnRyb2wsIGVycm9ycywgdGhpcy5wYWdlTG9naW5MaXRlcmFscy5sb2dpbkVycm9yUGF0dGVybik7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2V0UGFzc3dvcmRFcnJvcnMoZXJyb3JzOiBBcnJheTxzdHJpbmc+KSB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5sb2dpbkZvcm0uZm9ybS5jb250cm9sc1sncGFzc3dvcmQnXTtcclxuICAgIHRoaXMuc2V0Q29udHJvbEVycm9ycygnYWxsUGFzc3dvcmRFcnJvcnMnLCBjb250cm9sLCBlcnJvcnMsIHRoaXMucGFnZUxvZ2luTGl0ZXJhbHMucGFzc3dvcmRFcnJvclBhdHRlcm4pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja2luZ0Zvck1ldGFkYXRhUHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eSkge1xyXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KSkge1xyXG4gICAgICByZXR1cm4gb2JqZWN0W3Byb3BlcnR5XTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tpbmdGb3JSb3V0ZU1ldGFkYXRhKGRhdGEpIHtcclxuICAgIGlmIChPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGggIT09IDApIHtcclxuICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblVybCA9IHRoaXMuY2hlY2tpbmdGb3JNZXRhZGF0YVByb3BlcnR5KGRhdGEsICdzZXJ2aWNlQXBpJykgfHwgdGhpcy5hdXRoZW50aWNhdGlvblVybDtcclxuICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblR5cGUgPSB0aGlzLmNoZWNraW5nRm9yTWV0YWRhdGFQcm9wZXJ0eShkYXRhLCAnYXV0aGVudGljYXRpb25UeXBlJykgfHwgdGhpcy5hdXRoZW50aWNhdGlvblR5cGU7XHJcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLmNoZWNraW5nRm9yTWV0YWRhdGFQcm9wZXJ0eShkYXRhLCAnZW52aXJvbm1lbnQnKSB8fCB0aGlzLmVudmlyb25tZW50O1xyXG4gICAgICB0aGlzLnJlY292ZXJ5ID0gdGhpcy5jaGVja2luZ0Zvck1ldGFkYXRhUHJvcGVydHkoZGF0YSwgJ3JlY292ZXJ5JykgfHwgdGhpcy5yZWNvdmVyeTtcclxuICAgICAgdGhpcy5yZWdpc3RlclVybCA9IHRoaXMuY2hlY2tpbmdGb3JNZXRhZGF0YVByb3BlcnR5KGRhdGEsICdyZWdpc3RlclVybCcpIHx8IHRoaXMucmVnaXN0ZXJVcmw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbmNhdGVuYXRlKGRlZmF1bHRMaXRlcmFsOiBzdHJpbmcsIHByZWZpeExpdGVyYWw6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGAke2RlZmF1bHRMaXRlcmFsfSAke3ByZWZpeExpdGVyYWx9ICR7dmFsdWV9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uY2F0ZW5hdGVMaXRlcmFsKHZhbHVlOiBzdHJpbmcsIGxpdGVyYWw6IHN0cmluZywgZGVmYXVsdExpdGVyYWw6IHN0cmluZywgcHJlcG9zaXRpb25MaXRlcmFsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB7IFtsaXRlcmFsXTogdGhpcy5jb25jYXRlbmF0ZShkZWZhdWx0TGl0ZXJhbCwgcHJlcG9zaXRpb25MaXRlcmFsLCB2YWx1ZSkgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTW9kYWxQYXNzd29yZFJlY292ZXJ5Q29tcG9uZW50KHBvUGFnZUxvZ2luUmVjb3Zlcnk6IFBvUGFnZUxvZ2luUmVjb3ZlcnkpIHtcclxuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xyXG4gICAgICB0aGlzLnBvQ29tcG9uZW50SW5qZWN0b3IuZGVzdHJveUNvbXBvbmVudEluQXBwbGljYXRpb24odGhpcy5jb21wb25lbnRSZWYpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5wb0NvbXBvbmVudEluamVjdG9yLmNyZWF0ZUNvbXBvbmVudEluQXBwbGljYXRpb24oUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlDb21wb25lbnQpO1xyXG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudXJsUmVjb3ZlcnkgPSBwb1BhZ2VMb2dpblJlY292ZXJ5LnVybDtcclxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbnRhY3RFbWFpbCA9IHBvUGFnZUxvZ2luUmVjb3ZlcnkuY29udGFjdE1haWw7XHJcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5waG9uZU1hc2sgPSBwb1BhZ2VMb2dpblJlY292ZXJ5LnBob25lTWFzaztcclxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnR5cGUgPSBwb1BhZ2VMb2dpblJlY292ZXJ5LnR5cGUgfHwgUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlUeXBlLkVtYWlsO1xyXG4gICAgdGhpcy5jb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm9wZW4oKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUxvZ2luRXJyb3IoKSB7XHJcbiAgICBpZiAodGhpcy5sb2dpbkVycm9ycyAmJiB0aGlzLmxvZ2luRXJyb3JzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnNldExvZ2luRXJyb3JzKHRoaXMubG9naW5FcnJvcnMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubG9naW5Gb3JtLmZvcm0uY29udHJvbHNbJ2xvZ2luJ107XHJcbiAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldENvbnRyb2woY29udHJvbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVQYXNzd29yZEVycm9yKCkge1xyXG4gICAgaWYgKHRoaXMucGFzc3dvcmRFcnJvcnMgJiYgdGhpcy5wYXNzd29yZEVycm9ycy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zZXRQYXNzd29yZEVycm9ycyh0aGlzLnBhc3N3b3JkRXJyb3JzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmxvZ2luRm9ybS5mb3JtLmNvbnRyb2xzWydwYXNzd29yZCddO1xyXG5cclxuICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLnJlc2V0Q29udHJvbChjb250cm9sKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldENvbnRyb2woY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcbiAgICBjb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xyXG4gICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvbnRyb2xFcnJvcnMoYWxsRXJyb3JzOiBzdHJpbmcsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZXJyb3JzOiBBcnJheTxzdHJpbmc+LCBwYXR0ZXJuRXJyb3I6IHN0cmluZykge1xyXG4gICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgdGhpc1thbGxFcnJvcnNdID0gY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpID8gWy4uLmVycm9ycywgLi4uW3BhdHRlcm5FcnJvcl1dIDogWy4uLmVycm9yc107XHJcblxyXG4gICAgICBpZiAoZXJyb3JzICYmIGVycm9ycy5sZW5ndGggJiYgKGNvbnRyb2wudmFsaWQgfHwgY29udHJvbC5wcmlzdGluZSkpIHtcclxuICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnModGhpcy5jdXN0b21QYXNzd29yZEVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVcmxSZWRpcmVjdCh1cmwpIHtcclxuICAgIGlzRXh0ZXJuYWxMaW5rKHVybCkgPyB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKSA6IHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVBcnJheUNoYW5nZXMoZGlmZmVyOiBhbnksIGFycmF5OiBBcnJheTx7IGFycmF5OiBBcnJheTxhbnk+OyBjYWxsYmFjazogYW55IH0+KSB7XHJcbiAgICBhcnJheS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBjb25zdCBjaGFuZ2VzID0gZGlmZmVyLmRpZmYoZWxlbWVudC5hcnJheSk7XHJcbiAgICAgIGlmIChjaGFuZ2VzKSB7XHJcbiAgICAgICAgZWxlbWVudC5jYWxsYmFjaygpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxhbmd1YWdlKCkge1xyXG4gICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlc0xpc3QuZmluZChsYW5ndWFnZUl0ZW0gPT4gbGFuZ3VhZ2VJdGVtLmxhbmd1YWdlID09PSB0aGlzLmxhbmd1YWdlKTtcclxuICAgIHJldHVybiBsYW5ndWFnZT8ubGFuZ3VhZ2UgfHwgdGhpcy5sYW5ndWFnZXNMaXN0WzBdLmxhbmd1YWdlO1xyXG4gIH1cclxufVxyXG4iLCI8YnV0dG9uIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1zdXBwb3J0XCIgKGNsaWNrKT1cImFjdGl2YXRlU3VwcG9ydCgpXCIgW2hpZGRlbl09XCIhc3VwcG9ydFwiPlxyXG4gIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLWhlbHBcIj48L3NwYW4+XHJcbiAge3sgcGFnZUxvZ2luTGl0ZXJhbHM/LnN1cHBvcnQgfX1cclxuPC9idXR0b24+XHJcblxyXG48cG8tcGFnZS1iYWNrZ3JvdW5kXHJcbiAgI3BhZ2VMb2dpblxyXG4gIFtwLXNob3ctc2VsZWN0LWxhbmd1YWdlXT1cInNob3dMYW5ndWFnZVwiXHJcbiAgW3AtbGFuZ3VhZ2VzXT1cImxhbmd1YWdlc0xpc3RcIlxyXG4gIFtwLWluaXRpYWwtbGFuZ3VhZ2VdPVwiaW5pdGlhbFNlbGVjdExhbmd1YWdlXCJcclxuICBbcC1iYWNrZ3JvdW5kXT1cImJhY2tncm91bmRcIlxyXG4gIFtwLWhpZ2hsaWdodC1pbmZvXT1cInBhZ2VMb2dpbkxpdGVyYWxzLmhpZ2hsaWdodEluZm9cIlxyXG4gIFtwLWxvZ29dPVwibG9nb1wiXHJcbiAgW3Atc2Vjb25kYXJ5LWxvZ29dPVwic2Vjb25kYXJ5TG9nb1wiXHJcbiAgKHAtc2VsZWN0ZWQtbGFuZ3VhZ2UpPVwib25TZWxlY3RlZExhbmd1YWdlKCRldmVudClcIlxyXG4+XHJcbiAgPGhlYWRlciBjbGFzcz1cInBvLXBhZ2UtbG9naW4taGVhZGVyXCI+XHJcbiAgICA8aDEgY2xhc3M9XCJwby1tYi1tZC00IHBvLW1iLXNtLTFcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvLXBhZ2UtbG9naW4taGVhZGVyLXByb2R1Y3QtbmFtZVwiPnt7IHByb2R1Y3ROYW1lIH19PC9kaXY+XHJcbiAgICAgIDxwby10YWcgKm5nSWY9XCJlbnZpcm9ubWVudFwiIHAtdHlwZT1cIndhcm5pbmdcIiBbcC12YWx1ZV09XCJlbnZpcm9ubWVudFwiPiA8L3BvLXRhZz5cclxuICAgIDwvaDE+XHJcbiAgICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1oZWFkZXItd2VsY29tZSBwby1tYi1tZC00IHBvLW1iLXNtLTJcIj57eyBwYWdlTG9naW5MaXRlcmFscy53ZWxjb21lIH19PC9kaXY+XHJcbiAgPC9oZWFkZXI+XHJcblxyXG4gIDxmb3JtICNsb2dpbkZvcm09XCJuZ0Zvcm1cIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tZm9ybVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInBvLXJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG8tbGctMTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1oaW50IHBvLXBhZ2UtbG9naW4taW5mby1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxwby1sb2dpblxyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXBhZ2UtbG9naW4taW5mby1maWVsZFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWluZm8tZmllbGQtZHluYW1pY109XCJcclxuICAgICAgICAgICAgICAhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJsb2dpblwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9naW5cIlxyXG4gICAgICAgICAgICBwLWF1dG8tZm9jdXNcclxuICAgICAgICAgICAgcC1yZXF1aXJlZFxyXG4gICAgICAgICAgICBbcC1sYWJlbF09XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpbkxhYmVsXCJcclxuICAgICAgICAgICAgW3AtcGF0dGVybl09XCJsb2dpblBhdHRlcm5cIlxyXG4gICAgICAgICAgICBbcC1wbGFjZWhvbGRlcl09XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpblBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImxvZ2luRm9ybS52YWxpZCAmJiBvbkxvZ2luU3VibWl0KClcIlxyXG4gICAgICAgICAgICAocC1jaGFuZ2UtbW9kZWwpPVwiY2hhbmdlTG9naW5Nb2RlbCgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvcG8tbG9naW4+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCB8fCBwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWluZm8taWNvbi1jb250YWluZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MucG8tcGFnZS1sb2dpbi1pbmZvLWljb24tY29udGFpbmVyLWR5bmFtaWNdPVwiXHJcbiAgICAgICAgICAgICAgIXBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCAmJiAhcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiBwby1pY29uLWluZm9cIlxyXG4gICAgICAgICAgICAgIHAtdG9vbHRpcC1wb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItYm90dG9tIHBvLWZpZWxkLWNvbnRhaW5lci1lcnJvci1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGVycm9yIG9mIGFsbExvZ2luRXJyb3JzXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItYm90dG9tLXRleHQtZXJyb3IgcG8tZmllbGQtY29udGFpbmVyLWVycm9yLWl0ZW1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1leGNsYW1hdGlvblwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItZXJyb3ItdGV4dFwiPnt7IGVycm9yIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvLWxnLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tcGFzc3dvcmQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8cG8tcGFzc3dvcmRcclxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWZpZWxkLXNpemUgcG8tcGFnZS1sb2dpbi1wYXNzd29yZC1pdGVtXCJcclxuICAgICAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4tZmllbGQtc2l6ZS1keW5hbWljXT1cIlxyXG4gICAgICAgICAgICAgICFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgIHAtcmVxdWlyZWRcclxuICAgICAgICAgICAgW3AtbGFiZWxdPVwicGFnZUxvZ2luTGl0ZXJhbHMucGFzc3dvcmRMYWJlbFwiXHJcbiAgICAgICAgICAgIFtwLXBhdHRlcm5dPVwicGFzc3dvcmRQYXR0ZXJuXCJcclxuICAgICAgICAgICAgW3AtcGxhY2Vob2xkZXJdPVwicGFnZUxvZ2luTGl0ZXJhbHMucGFzc3dvcmRQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgKHAtY2hhbmdlLW1vZGVsKT1cImNoYW5nZVBhc3N3b3JkTW9kZWwoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8L3BvLXBhc3N3b3JkPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCB8fCBwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLXBhc3N3b3JkLWl0ZW0gcG8tcGFnZS1sb2dpbi1wYXNzd29yZC1wb3BvdmVyLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxwby1wYWdlLWxvZ2luLXBvcG92ZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyAmJiBleGNlZWRlZEF0dGVtcHRzV2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgW3AtbGl0ZXJhbHNdPVwicGFnZUxvZ2luTGl0ZXJhbHNcIlxyXG4gICAgICAgICAgICAgIFtwLXJlY292ZXJ5XT1cInJlY292ZXJ5XCJcclxuICAgICAgICAgICAgICBbcC1yZW1haW5pbmctYXR0ZW1wdHNdPVwiZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmdcIlxyXG4gICAgICAgICAgICAgIChwLWZvcmdvdC1wYXNzd29yZCk9XCJvcGVuVXJsKCRldmVudClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvcG8tcGFnZS1sb2dpbi1wb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20gcG8tZmllbGQtY29udGFpbmVyLWVycm9yLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgYWxsUGFzc3dvcmRFcnJvcnNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20tdGV4dC1lcnJvciBwby1maWVsZC1jb250YWluZXItZXJyb3ItaXRlbVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLWV4Y2xhbWF0aW9uXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1lcnJvci10ZXh0XCI+e3sgZXJyb3IgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8cG8taW5wdXRcclxuICAgICAgICAqbmdJZj1cImN1c3RvbUZpZWxkICYmIGN1c3RvbUZpZWxkVHlwZSA9PT0gJ2lucHV0J1wiXHJcbiAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4tZmllbGQtc2l6ZS1keW5hbWljXT1cIiFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxyXG4gICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1maWVsZC1zaXplIHBvLWxnLTEyXCJcclxuICAgICAgICBuYW1lPVwiY3VzdG9tRmllbGRJbnB1dFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21GaWVsZE9iamVjdC52YWx1ZVwiXHJcbiAgICAgICAgcC1yZXF1aXJlZFxyXG4gICAgICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiY3VzdG9tRmllbGRPYmplY3QuZXJyb3JQYXR0ZXJuIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuXCJcclxuICAgICAgICBbcC1wYXR0ZXJuXT1cImN1c3RvbUZpZWxkT2JqZWN0LnBhdHRlcm5cIlxyXG4gICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImN1c3RvbUZpZWxkT2JqZWN0LnBsYWNlaG9sZGVyIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcclxuICAgICAgPlxyXG4gICAgICA8L3BvLWlucHV0PlxyXG5cclxuICAgICAgPHBvLWNvbWJvXHJcbiAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZCAmJiBjdXN0b21GaWVsZFR5cGUgPT09ICdjb21ibydcIlxyXG4gICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWZpZWxkLXNpemUtZHluYW1pY109XCIhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcclxuICAgICAgICBjbGFzcz1cInBvLXBhZ2UtbG9naW4tZmllbGQtc2l6ZSBwby1sZy0xMlwiXHJcbiAgICAgICAgbmFtZT1cImN1c3RvbUZpZWxkQ29tYm9cIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tRmllbGRPYmplY3QudmFsdWVcIlxyXG4gICAgICAgIHAtcmVxdWlyZWRcclxuICAgICAgICBbcC1maWVsZC12YWx1ZV09XCJjdXN0b21GaWVsZE9iamVjdC5maWVsZFZhbHVlXCJcclxuICAgICAgICBbcC1maWx0ZXItc2VydmljZV09XCJjdXN0b21GaWVsZE9iamVjdC51cmxcIlxyXG4gICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImN1c3RvbUZpZWxkT2JqZWN0LnBsYWNlaG9sZGVyIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkUGxhY2Vob2xkZXJcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvcG8tY29tYm8+XHJcblxyXG4gICAgICA8cG8tc2VsZWN0XHJcbiAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZCAmJiBjdXN0b21GaWVsZFR5cGUgPT09ICdzZWxlY3QnXCJcclxuICAgICAgICBbY2xhc3MucG8tcGFnZS1sb2dpbi1maWVsZC1zaXplLWR5bmFtaWNdPVwiIXBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCAmJiAhcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXHJcbiAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWZpZWxkLXNpemUgcG8tbGctMTJcIlxyXG4gICAgICAgIG5hbWU9XCJjdXN0b21GaWVsZFNlbGVjdFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21GaWVsZE9iamVjdC52YWx1ZVwiXHJcbiAgICAgICAgcC1yZXF1aXJlZFxyXG4gICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImN1c3RvbUZpZWxkT2JqZWN0LnBsYWNlaG9sZGVyIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtwLW9wdGlvbnNdPVwiY3VzdG9tRmllbGRPYmplY3Qub3B0aW9uc1wiXHJcbiAgICAgID5cclxuICAgICAgPC9wby1zZWxlY3Q+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG8tbGctMTJcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhpZGVSZW1lbWJlclVzZXJcIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4taGludCBwby1wYWdlLWxvZ2luLWluZm8tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8cG8tc3dpdGNoXHJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1pbmZvLWZpZWxkIHBvLWxnLTcgcG8tb2Zmc2V0LWxnLTUgcG8tb2Zmc2V0LXhsLTVcIlxyXG4gICAgICAgICAgICBuYW1lPVwicmVtZW1iZXJVc2VyXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyZW1lbWJlclVzZXJcIlxyXG4gICAgICAgICAgICBwLWxhYmVsLXBvc2l0aW9uPVwiMVwiXHJcbiAgICAgICAgICAgIFtwLWxhYmVsLW9mZl09XCJwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJcIlxyXG4gICAgICAgICAgICBbcC1sYWJlbC1vbl09XCJwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJcIlxyXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibG9naW5Gb3JtLnZhbGlkICYmIG9uTG9naW5TdWJtaXQoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8L3BvLXN3aXRjaD5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50IHx8IHBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXBhZ2UtbG9naW4taW5mby1pY29uLWNvbnRhaW5lciBwby1wYWdlLWxvZ2luLWluZm8taWNvbi1yZW1lbWJlci11c2VyXCJcclxuICAgICAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4taW5mby1pY29uLWNvbnRhaW5lci1keW5hbWljXT1cIiFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cInBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8taWNvbiBwby1maWVsZC1pY29uIHBvLWljb24taW5mb1wiXHJcbiAgICAgICAgICAgICAgcC10b29sdGlwLXBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwicGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPHBvLWJ1dHRvblxyXG4gICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWJ1dHRvbi1keW5hbWljXT1cIiFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxyXG4gICAgICAgIGNsYXNzPVwicG8tbGctMTIgcG8tcGFnZS1sb2dpbi1idXR0b24gcG8tcGFnZS1sb2dpbi1maWVsZC1zaXplXCJcclxuICAgICAgICBwLWtpbmQ9XCJwcmltYXJ5XCJcclxuICAgICAgICBbcC1kaXNhYmxlZF09XCJsb2dpbkZvcm0uaW52YWxpZFwiXHJcbiAgICAgICAgW3AtbGFiZWxdPVwibG9hZGluZyA/IHBhZ2VMb2dpbkxpdGVyYWxzLnN1Ym1pdHRlZExhYmVsIDogcGFnZUxvZ2luTGl0ZXJhbHMuc3VibWl0TGFiZWxcIlxyXG4gICAgICAgIFtwLWxvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgICAgKHAtY2xpY2spPVwib25Mb2dpblN1Ym1pdCgpXCJcclxuICAgICAgPlxyXG4gICAgICA8L3BvLWJ1dHRvbj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCJyZWNvdmVyeVwiIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1yZWNvdmVyeS1saW5rXCI+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJwby1mb250LXRleHQtbGFyZ2UtYm9sZFwiIChjbGljayk9XCJvcGVuVXJsKHJlY292ZXJ5KVwiPnt7IHBhZ2VMb2dpbkxpdGVyYWxzLmZvcmdvdFBhc3N3b3JkIH19PC9hPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCJyZWdpc3RlclVybFwiIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1yZWdpc3Rlci1saW5rXCI+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJwby1mb250LXRleHQtbGFyZ2UtYm9sZFwiIChjbGljayk9XCJvcGVuVXJsKHJlZ2lzdGVyVXJsKVwiPnt7IHBhZ2VMb2dpbkxpdGVyYWxzLnJlZ2lzdGVyVXJsIH19PC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZm9ybT5cclxuPC9wby1wYWdlLWJhY2tncm91bmQ+XHJcbiJdfQ==