@reusa/ngx-reusa-app-lib 0.0.999 → 0.1.101

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 (372) hide show
  1. package/README.md +46 -46
  2. package/esm2022/lib/annimations/app-animations.mjs +1 -1
  3. package/esm2022/lib/components/add-employer/add-employer.component.mjs +1130 -2312
  4. package/esm2022/lib/components/add-participant/add-participant.component.mjs +1 -1
  5. package/esm2022/lib/components/add-payment/add-payment.component.mjs +16 -36
  6. package/esm2022/lib/components/address/address.component.mjs +58 -52
  7. package/esm2022/lib/components/bank-details/bank-details.component.mjs +25 -29
  8. package/esm2022/lib/components/captcha/captcha.component.mjs +6 -6
  9. package/esm2022/lib/components/card/card.component.mjs +1 -1
  10. package/esm2022/lib/components/content/content.component.mjs +1 -1
  11. package/esm2022/lib/components/correspondence-download/correspondence-download.component.mjs +1 -1
  12. package/esm2022/lib/components/dependent-grid/dependent-grid.component.mjs +14 -19
  13. package/esm2022/lib/components/disclosure/disclosure.component.mjs +1 -1
  14. package/esm2022/lib/components/dropdown/dropdown.component.mjs +6 -6
  15. package/esm2022/lib/components/dropdown/dropdown.interface.mjs +1 -1
  16. package/esm2022/lib/components/email-update/email-update.component.mjs +32 -14
  17. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +197 -192
  18. package/esm2022/lib/components/error/error.component.mjs +5 -22
  19. package/esm2022/lib/components/fav-menu/fav-menu.component.mjs +1 -1
  20. package/esm2022/lib/components/file-download/file-download.component.mjs +1 -1
  21. package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +1 -1
  22. package/esm2022/lib/components/footer/footer.component.mjs +67 -90
  23. package/esm2022/lib/components/header/header.component.mjs +105 -169
  24. package/esm2022/lib/components/help/help.component.mjs +1 -1
  25. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +13 -13
  26. package/esm2022/lib/components/info/info.component.mjs +12 -4
  27. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +1 -1
  28. package/esm2022/lib/components/job-title/job-title.component.mjs +94 -93
  29. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +82 -93
  30. package/esm2022/lib/components/lexis-nexis/lexis-nexis.component.mjs +329 -0
  31. package/esm2022/lib/components/link/link.component.mjs +1 -1
  32. package/esm2022/lib/components/maintenance-detector/maintenance-detector.component.mjs +1 -1
  33. package/esm2022/lib/components/mask/mask.component.mjs +1 -1
  34. package/esm2022/lib/components/menu/menu.component.mjs +35 -44
  35. package/esm2022/lib/components/mfa/mfa.component.mjs +305 -103
  36. package/esm2022/lib/components/mfa-popup/mfa-popup.component.mjs +16 -7
  37. package/esm2022/lib/components/mfa2/mfa2.component.mjs +260 -0
  38. package/esm2022/lib/components/money-expect/money-expect.component.mjs +36 -148
  39. package/esm2022/lib/components/msg/msg.component.mjs +1 -1
  40. package/esm2022/lib/components/news/news.component.mjs +1 -1
  41. package/esm2022/lib/components/overlay-info/overlay-info.component.mjs +1 -1
  42. package/esm2022/lib/components/page/page.component.mjs +1 -1
  43. package/esm2022/lib/components/profile/profile.component.mjs +213 -56
  44. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +33 -106
  45. package/esm2022/lib/components/questionnaire/AppValidators.mjs +14 -165
  46. package/esm2022/lib/components/questionnaire/FbConstants.mjs +1 -1
  47. package/esm2022/lib/components/questionnaire/account-success/account-success.page.mjs +60 -110
  48. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +123 -367
  49. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +9 -9
  50. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +1029 -769
  51. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +325 -157
  52. package/esm2022/lib/components/questionnaire/form-builder/form-builder.page.mjs +17 -9
  53. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +26 -93
  54. package/esm2022/lib/components/questionnaire/question-base.mjs +1 -1
  55. package/esm2022/lib/components/questionnaire/question-control.service.mjs +1 -2
  56. package/esm2022/lib/components/questionnaire/question.service.mjs +7 -5
  57. package/esm2022/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +25 -14
  58. package/esm2022/lib/components/read-more/read-more.component.mjs +6 -6
  59. package/esm2022/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +196 -333
  60. package/esm2022/lib/components/search-employer/search-employer.component.mjs +24 -47
  61. package/esm2022/lib/components/security-question/security-question.component.mjs +189 -0
  62. package/esm2022/lib/components/select/select.component.mjs +1 -1
  63. package/esm2022/lib/components/sign-ssn/sign-ssn.component.mjs +3 -3
  64. package/esm2022/lib/components/ssn/ssn.component.mjs +1 -1
  65. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +4 -4
  66. package/esm2022/lib/components/test/test.component.mjs +1 -1
  67. package/esm2022/lib/components/user-login/user-login.component.mjs +226 -115
  68. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +155 -287
  69. package/esm2022/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +46 -62
  70. package/esm2022/lib/directives/auto-focus/auto-focus.directive.mjs +1 -1
  71. package/esm2022/lib/directives/caps-lock.directive.mjs +1 -1
  72. package/esm2022/lib/directives/required-roles/required-roles.directive.mjs +1 -1
  73. package/esm2022/lib/enums/EmailStatusEnum.mjs +1 -1
  74. package/esm2022/lib/guards/auth.guard.mjs +4 -26
  75. package/esm2022/lib/guards/no-login/no-login.guard.mjs +1 -1
  76. package/esm2022/lib/interceptors/error-interceptor/http-error-interceptor.mjs +1 -1
  77. package/esm2022/lib/interceptors/header-interceptor/http-header.interceptor.mjs +1 -1
  78. package/esm2022/lib/models/EmployerDetailSearchResult.mjs +1 -1
  79. package/esm2022/lib/models/ErrorModel.mjs +1 -1
  80. package/esm2022/lib/models/FileModel.mjs +1 -1
  81. package/esm2022/lib/models/LexisNexisAccountCreationModel.mjs +2 -0
  82. package/esm2022/lib/models/LexisNexisAuthSelectionRequestModel.mjs +2 -0
  83. package/esm2022/lib/models/LexisNexisAuthSelectionResponseModel.mjs +2 -0
  84. package/esm2022/lib/models/LexisNexisResponseModel.mjs +3 -0
  85. package/esm2022/lib/models/LibConstants.mjs +15 -12
  86. package/esm2022/lib/models/NotificationModel.mjs +1 -1
  87. package/esm2022/lib/models/OtpAuthModel.mjs +1 -1
  88. package/esm2022/lib/models/PartialEmploymentModel.mjs +3 -0
  89. package/esm2022/lib/models/PaymentComponentModel.mjs +1 -1
  90. package/esm2022/lib/models/SecurityQuestionModel.mjs +3 -0
  91. package/esm2022/lib/models/TrendModel.mjs +1 -1
  92. package/esm2022/lib/models/UserDetailsModel.mjs +1 -1
  93. package/esm2022/lib/models/UserModel.mjs +1 -1
  94. package/esm2022/lib/models/claimant/ClaimantModel.mjs +1 -1
  95. package/esm2022/lib/models/claimant/JobResultsData.mjs +1 -1
  96. package/esm2022/lib/models/claimant/MatchingJobs.mjs +1 -1
  97. package/esm2022/lib/models/claimant/ResetPasswordModel.mjs +1 -1
  98. package/esm2022/lib/models/dependent.model.mjs +1 -1
  99. package/esm2022/lib/models/questionnaire/ClaimAppEmpResponseModel.mjs +1 -1
  100. package/esm2022/lib/models/questionnaire/ClaimAppEmployerDetailsModel.mjs +1 -2
  101. package/esm2022/lib/models/questionnaire/ClaimOnlyEmployerDataModel.mjs +1 -1
  102. package/esm2022/lib/models/questionnaire/ComboModel.mjs +175 -73
  103. package/esm2022/lib/models/questionnaire/ElementsModel.mjs +1 -1
  104. package/esm2022/lib/models/questionnaire/KeyValueModel.mjs +1 -1
  105. package/esm2022/lib/models/questionnaire/LegalDiscaimarModel.mjs +1 -1
  106. package/esm2022/lib/models/questionnaire/StatusModel.mjs +1 -1
  107. package/esm2022/lib/ngx-reusa-app-lib.component.mjs +5 -5
  108. package/esm2022/lib/ngx-reusa-app-lib.module.mjs +13 -27
  109. package/esm2022/lib/ngx-reusa-app-lib.service.mjs +1 -1
  110. package/esm2022/lib/pages/BasePage.mjs +22 -3
  111. package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +18 -22
  112. package/esm2022/lib/pages/common/change-password/change-password.page.mjs +124 -142
  113. package/esm2022/lib/pages/common/landing/landing.component.mjs +8 -7
  114. package/esm2022/lib/pages/common/landing2/landing2.component.mjs +4 -4
  115. package/esm2022/lib/pages/common/login/login.component.mjs +5 -5
  116. package/esm2022/lib/pages/common/not-found/not-found.page.mjs +1 -1
  117. package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +14 -14
  118. package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +5 -5
  119. package/esm2022/lib/pages/common/unauthorized/unauthorized.page.mjs +1 -1
  120. package/esm2022/lib/pages/popovers/language/language.page.mjs +1 -1
  121. package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +1 -1
  122. package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +1 -1
  123. package/esm2022/lib/pages/popovers/user-search/user-search.component.mjs +1 -1
  124. package/esm2022/lib/pipes/filter.pipe.mjs +1 -1
  125. package/esm2022/lib/pipes/mask/mask.email.pipe.mjs +1 -1
  126. package/esm2022/lib/pipes/proper-case/proper-case.pipe.mjs +1 -1
  127. package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +1 -1
  128. package/esm2022/lib/pipes/trust-html/trust-html.pipe.mjs +1 -1
  129. package/esm2022/lib/services/base-service.mjs +1 -1
  130. package/esm2022/lib/services/captcha/captcha.service.mjs +1 -1
  131. package/esm2022/lib/services/chatbot/chatbot.service.mjs +2 -1
  132. package/esm2022/lib/services/chatbot/script.const.mjs +1 -1
  133. package/esm2022/lib/services/claimant/claimant.service.mjs +1 -1
  134. package/esm2022/lib/services/claimant-service/claimant-usps-redirect.service.mjs +36 -0
  135. package/esm2022/lib/services/claimant-service/claimant.service.mjs +13 -1
  136. package/esm2022/lib/services/claims/claims.service.mjs +14 -57
  137. package/esm2022/lib/services/dms-service/dms.service.mjs +1 -1
  138. package/esm2022/lib/services/fpjs/fingerprint.service.mjs +1 -1
  139. package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +1 -1
  140. package/esm2022/lib/services/help/help.service.mjs +1 -1
  141. package/esm2022/lib/services/idle/idle.service.mjs +1 -1
  142. package/esm2022/lib/services/lexis-nexis/lexis.nexis.service.mjs +49 -0
  143. package/esm2022/lib/services/logger/logger.service.mjs +1 -1
  144. package/esm2022/lib/services/login/login.service.mjs +11 -1
  145. package/esm2022/lib/services/maintenance/maintenance.service.mjs +1 -1
  146. package/esm2022/lib/services/notification/notification.service.mjs +1 -1
  147. package/esm2022/lib/services/ovp/ovp.service.mjs +43 -0
  148. package/esm2022/lib/services/questionnaire/questionnaire.service.mjs +1 -4
  149. package/esm2022/lib/services/questionnaire/validation.service.mjs +1 -4
  150. package/esm2022/lib/services/security-service/security.service.mjs +6 -5
  151. package/esm2022/lib/services/tour/tour.service.mjs +1 -1
  152. package/esm2022/lib/services/util/util.service.mjs +5 -5
  153. package/esm2022/lib/services/weekly-cert/weekly-cert-v2.service.mjs +42 -0
  154. package/esm2022/lib/validations/AppRegex.mjs +1 -1
  155. package/esm2022/lib/validations/AppValidators.mjs +14 -34
  156. package/esm2022/public-api.mjs +5 -16
  157. package/fesm2022/reusa-ngx-reusa-app-lib.mjs +7480 -10431
  158. package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
  159. package/lib/components/add-employer/add-employer.component.d.ts +48 -77
  160. package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
  161. package/lib/components/add-payment/add-payment.component.d.ts +2 -7
  162. package/lib/components/add-payment/add-payment.component.d.ts.map +1 -1
  163. package/lib/components/address/address.component.d.ts +3 -2
  164. package/lib/components/address/address.component.d.ts.map +1 -1
  165. package/lib/components/email-update/email-update.component.d.ts +7 -1
  166. package/lib/components/email-update/email-update.component.d.ts.map +1 -1
  167. package/lib/components/employer-grid/employer-grid.component.d.ts +3 -1
  168. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
  169. package/lib/components/error/error.component.d.ts +2 -3
  170. package/lib/components/error/error.component.d.ts.map +1 -1
  171. package/lib/components/footer/footer.component.d.ts.map +1 -1
  172. package/lib/components/header/header.component.d.ts +0 -1
  173. package/lib/components/header/header.component.d.ts.map +1 -1
  174. package/lib/components/job-title/job-title.component.d.ts +21 -22
  175. package/lib/components/job-title/job-title.component.d.ts.map +1 -1
  176. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +2 -5
  177. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -1
  178. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts +55 -0
  179. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts.map +1 -0
  180. package/lib/components/menu/menu.component.d.ts.map +1 -1
  181. package/lib/components/mfa/mfa.component.d.ts +26 -3
  182. package/lib/components/mfa/mfa.component.d.ts.map +1 -1
  183. package/lib/components/mfa-popup/mfa-popup.component.d.ts +4 -1
  184. package/lib/components/mfa-popup/mfa-popup.component.d.ts.map +1 -1
  185. package/lib/components/mfa2/mfa2.component.d.ts +48 -0
  186. package/lib/components/mfa2/mfa2.component.d.ts.map +1 -0
  187. package/lib/components/money-expect/money-expect.component.d.ts +4 -15
  188. package/lib/components/money-expect/money-expect.component.d.ts.map +1 -1
  189. package/lib/components/profile/profile.component.d.ts +32 -4
  190. package/lib/components/profile/profile.component.d.ts.map +1 -1
  191. package/lib/components/profile-redirect/profile-redirect.component.d.ts +2 -9
  192. package/lib/components/profile-redirect/profile-redirect.component.d.ts.map +1 -1
  193. package/lib/components/questionnaire/AppValidators.d.ts +0 -1
  194. package/lib/components/questionnaire/AppValidators.d.ts.map +1 -1
  195. package/lib/components/questionnaire/account-success/account-success.page.d.ts +10 -13
  196. package/lib/components/questionnaire/account-success/account-success.page.d.ts.map +1 -1
  197. package/lib/components/questionnaire/common-success/common-success.page.d.ts +0 -7
  198. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
  199. package/lib/components/questionnaire/dynamic-form-question.component.d.ts +32 -14
  200. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  201. package/lib/components/questionnaire/dynamic-form.component.d.ts +24 -3
  202. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
  203. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts +3 -0
  204. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts.map +1 -1
  205. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts +1 -6
  206. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts.map +1 -1
  207. package/lib/components/questionnaire/question-control.service.d.ts.map +1 -1
  208. package/lib/components/questionnaire/question.service.d.ts +1 -0
  209. package/lib/components/questionnaire/question.service.d.ts.map +1 -1
  210. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts +3 -1
  211. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts.map +1 -1
  212. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts +3 -6
  213. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts.map +1 -1
  214. package/lib/components/search-employer/search-employer.component.d.ts +2 -1
  215. package/lib/components/search-employer/search-employer.component.d.ts.map +1 -1
  216. package/lib/components/security-question/security-question.component.d.ts +37 -0
  217. package/lib/components/security-question/security-question.component.d.ts.map +1 -0
  218. package/lib/components/user-login/user-login.component.d.ts +22 -5
  219. package/lib/components/user-login/user-login.component.d.ts.map +1 -1
  220. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +0 -6
  221. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
  222. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts +0 -1
  223. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts.map +1 -1
  224. package/lib/guards/auth.guard.d.ts +1 -3
  225. package/lib/guards/auth.guard.d.ts.map +1 -1
  226. package/lib/models/EmployerDetailSearchResult.d.ts +1 -3
  227. package/lib/models/EmployerDetailSearchResult.d.ts.map +1 -1
  228. package/lib/models/LexisNexisAccountCreationModel.d.ts +15 -0
  229. package/lib/models/LexisNexisAccountCreationModel.d.ts.map +1 -0
  230. package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts +16 -0
  231. package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts.map +1 -0
  232. package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts +39 -0
  233. package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts.map +1 -0
  234. package/lib/models/LexisNexisResponseModel.d.ts +7 -0
  235. package/lib/models/LexisNexisResponseModel.d.ts.map +1 -0
  236. package/lib/models/LibConstants.d.ts +12 -9
  237. package/lib/models/LibConstants.d.ts.map +1 -1
  238. package/lib/models/PartialEmploymentModel.d.ts +6 -0
  239. package/lib/models/PartialEmploymentModel.d.ts.map +1 -0
  240. package/lib/models/PaymentComponentModel.d.ts +1 -1
  241. package/lib/models/PaymentComponentModel.d.ts.map +1 -1
  242. package/lib/models/SecurityQuestionModel.d.ts +7 -0
  243. package/lib/models/SecurityQuestionModel.d.ts.map +1 -0
  244. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts +0 -1
  245. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts.map +1 -1
  246. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts +3 -13
  247. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts.map +1 -1
  248. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts +1 -2
  249. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts.map +1 -1
  250. package/lib/models/questionnaire/ComboModel.d.ts +16 -20
  251. package/lib/models/questionnaire/ComboModel.d.ts.map +1 -1
  252. package/lib/models/questionnaire/ElementsModel.d.ts +1 -0
  253. package/lib/models/questionnaire/ElementsModel.d.ts.map +1 -1
  254. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts +0 -2
  255. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts.map +1 -1
  256. package/lib/models/questionnaire/StatusModel.d.ts +0 -1
  257. package/lib/models/questionnaire/StatusModel.d.ts.map +1 -1
  258. package/lib/ngx-reusa-app-lib.module.d.ts +86 -95
  259. package/lib/ngx-reusa-app-lib.module.d.ts.map +1 -1
  260. package/lib/pages/BasePage.d.ts +6 -3
  261. package/lib/pages/BasePage.d.ts.map +1 -1
  262. package/lib/pages/common/change-password/change-password.page.d.ts +0 -3
  263. package/lib/pages/common/change-password/change-password.page.d.ts.map +1 -1
  264. package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts +16 -0
  265. package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts.map +1 -0
  266. package/lib/services/claimant-service/claimant.service.d.ts +5 -0
  267. package/lib/services/claimant-service/claimant.service.d.ts.map +1 -1
  268. package/lib/services/claims/claims.service.d.ts +5 -24
  269. package/lib/services/claims/claims.service.d.ts.map +1 -1
  270. package/lib/services/lexis-nexis/lexis.nexis.service.d.ts +23 -0
  271. package/lib/services/lexis-nexis/lexis.nexis.service.d.ts.map +1 -0
  272. package/lib/services/login/login.service.d.ts +3 -0
  273. package/lib/services/login/login.service.d.ts.map +1 -1
  274. package/lib/services/ovp/ovp.service.d.ts +17 -0
  275. package/lib/services/ovp/ovp.service.d.ts.map +1 -0
  276. package/lib/services/questionnaire/questionnaire.service.d.ts +0 -1
  277. package/lib/services/questionnaire/questionnaire.service.d.ts.map +1 -1
  278. package/lib/services/questionnaire/validation.service.d.ts +0 -3
  279. package/lib/services/questionnaire/validation.service.d.ts.map +1 -1
  280. package/lib/services/security-service/security.service.d.ts +4 -5
  281. package/lib/services/security-service/security.service.d.ts.map +1 -1
  282. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts +17 -0
  283. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts.map +1 -0
  284. package/lib/validations/AppValidators.d.ts +3 -7
  285. package/lib/validations/AppValidators.d.ts.map +1 -1
  286. package/package.json +2 -2
  287. package/public-api.d.ts +4 -15
  288. package/public-api.d.ts.map +1 -1
  289. package/esm2022/lib/components/add-wage/add-wage.component.mjs +0 -160
  290. package/esm2022/lib/components/associate-ssn/associate-ssn.component.mjs +0 -174
  291. package/esm2022/lib/components/dua-request-popup/dua-request-popup.component.mjs +0 -335
  292. package/esm2022/lib/components/employer-info/employer-info.component.mjs +0 -326
  293. package/esm2022/lib/components/employer-pay/employer-pay.component.mjs +0 -243
  294. package/esm2022/lib/components/employer-pay-grid/employer-pay-grid.component.mjs +0 -302
  295. package/esm2022/lib/components/farm-usage/farm-usage.component.mjs +0 -172
  296. package/esm2022/lib/components/gross-earnings/gross-earnings.component.mjs +0 -179
  297. package/esm2022/lib/components/idme/idme.component.mjs +0 -80
  298. package/esm2022/lib/components/scrollable-text/scrollable-text.component.mjs +0 -25
  299. package/esm2022/lib/components/sms/sms.component.mjs +0 -334
  300. package/esm2022/lib/components/wage-grid/wage-grid.component.mjs +0 -274
  301. package/esm2022/lib/models/CountyModel.mjs +0 -3
  302. package/esm2022/lib/models/DuaRequestModel.mjs +0 -3
  303. package/esm2022/lib/models/DuaRetroWeeksComponentModel.mjs +0 -6
  304. package/esm2022/lib/models/EmployerInfoComponentModel.mjs +0 -4
  305. package/esm2022/lib/models/EmployerPayInfoModel.mjs +0 -6
  306. package/esm2022/lib/models/FarmUsageComponentModel.mjs +0 -2
  307. package/esm2022/lib/models/GrossEarningsModel.mjs +0 -3
  308. package/esm2022/lib/models/LexisNexisOtpDetailsResponseModel.mjs +0 -3
  309. package/esm2022/lib/models/ReasonSeparationRequestModel.mjs +0 -3
  310. package/esm2022/lib/models/RetroWeeksModel.mjs +0 -3
  311. package/esm2022/lib/models/SendOtpRequestModel.mjs +0 -3
  312. package/esm2022/lib/models/VerifyOtpRequestModel.mjs +0 -3
  313. package/esm2022/lib/models/WageInfoModel.mjs +0 -4
  314. package/esm2022/lib/models/questionnaire/ScrollableTextModel.mjs +0 -3
  315. package/esm2022/lib/models/questionnaire/WbaHelperTextModel.mjs +0 -3
  316. package/esm2022/lib/services/employer/employer-service.mjs +0 -35
  317. package/lib/components/add-wage/add-wage.component.d.ts +0 -29
  318. package/lib/components/add-wage/add-wage.component.d.ts.map +0 -1
  319. package/lib/components/associate-ssn/associate-ssn.component.d.ts +0 -28
  320. package/lib/components/associate-ssn/associate-ssn.component.d.ts.map +0 -1
  321. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts +0 -59
  322. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts.map +0 -1
  323. package/lib/components/employer-info/employer-info.component.d.ts +0 -48
  324. package/lib/components/employer-info/employer-info.component.d.ts.map +0 -1
  325. package/lib/components/employer-pay/employer-pay.component.d.ts +0 -51
  326. package/lib/components/employer-pay/employer-pay.component.d.ts.map +0 -1
  327. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts +0 -43
  328. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts.map +0 -1
  329. package/lib/components/farm-usage/farm-usage.component.d.ts +0 -33
  330. package/lib/components/farm-usage/farm-usage.component.d.ts.map +0 -1
  331. package/lib/components/gross-earnings/gross-earnings.component.d.ts +0 -37
  332. package/lib/components/gross-earnings/gross-earnings.component.d.ts.map +0 -1
  333. package/lib/components/idme/idme.component.d.ts +0 -19
  334. package/lib/components/idme/idme.component.d.ts.map +0 -1
  335. package/lib/components/scrollable-text/scrollable-text.component.d.ts +0 -11
  336. package/lib/components/scrollable-text/scrollable-text.component.d.ts.map +0 -1
  337. package/lib/components/sms/sms.component.d.ts +0 -63
  338. package/lib/components/sms/sms.component.d.ts.map +0 -1
  339. package/lib/components/wage-grid/wage-grid.component.d.ts +0 -43
  340. package/lib/components/wage-grid/wage-grid.component.d.ts.map +0 -1
  341. package/lib/models/CountyModel.d.ts +0 -8
  342. package/lib/models/CountyModel.d.ts.map +0 -1
  343. package/lib/models/DuaRequestModel.d.ts +0 -10
  344. package/lib/models/DuaRequestModel.d.ts.map +0 -1
  345. package/lib/models/DuaRetroWeeksComponentModel.d.ts +0 -5
  346. package/lib/models/DuaRetroWeeksComponentModel.d.ts.map +0 -1
  347. package/lib/models/EmployerInfoComponentModel.d.ts +0 -9
  348. package/lib/models/EmployerInfoComponentModel.d.ts.map +0 -1
  349. package/lib/models/EmployerPayInfoModel.d.ts +0 -20
  350. package/lib/models/EmployerPayInfoModel.d.ts.map +0 -1
  351. package/lib/models/FarmUsageComponentModel.d.ts +0 -10
  352. package/lib/models/FarmUsageComponentModel.d.ts.map +0 -1
  353. package/lib/models/GrossEarningsModel.d.ts +0 -6
  354. package/lib/models/GrossEarningsModel.d.ts.map +0 -1
  355. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts +0 -7
  356. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts.map +0 -1
  357. package/lib/models/ReasonSeparationRequestModel.d.ts +0 -7
  358. package/lib/models/ReasonSeparationRequestModel.d.ts.map +0 -1
  359. package/lib/models/RetroWeeksModel.d.ts +0 -10
  360. package/lib/models/RetroWeeksModel.d.ts.map +0 -1
  361. package/lib/models/SendOtpRequestModel.d.ts +0 -12
  362. package/lib/models/SendOtpRequestModel.d.ts.map +0 -1
  363. package/lib/models/VerifyOtpRequestModel.d.ts +0 -8
  364. package/lib/models/VerifyOtpRequestModel.d.ts.map +0 -1
  365. package/lib/models/WageInfoModel.d.ts +0 -9
  366. package/lib/models/WageInfoModel.d.ts.map +0 -1
  367. package/lib/models/questionnaire/ScrollableTextModel.d.ts +0 -4
  368. package/lib/models/questionnaire/ScrollableTextModel.d.ts.map +0 -1
  369. package/lib/models/questionnaire/WbaHelperTextModel.d.ts +0 -4
  370. package/lib/models/questionnaire/WbaHelperTextModel.d.ts.map +0 -1
  371. package/lib/services/employer/employer-service.d.ts +0 -16
  372. package/lib/services/employer/employer-service.d.ts.map +0 -1
@@ -18,117 +18,125 @@ import * as i10 from "../../../components/content/content.component";
18
18
  import * as i11 from "../../../components/header/header.component";
19
19
  import * as i12 from "../../../components/card/card.component";
20
20
  import * as i13 from "../../../directives/auto-focus/auto-focus.directive";
21
- function ChangePasswordPage_div_10_li_7_Template(rf, ctx) { if (rf & 1) {
22
- i0.ɵɵelementStart(0, "li", 10);
23
- i0.ɵɵtext(1, "Minimum 8 characters.");
24
- i0.ɵɵelementEnd();
21
+ function ChangePasswordPage_div_10_li_13_Template(rf, ctx) { if (rf & 1) {
22
+ i0.ɵɵelementStart(0, "li", 9);
23
+ i0.ɵɵtext(1, "1 of the following symbols ");
24
+ i0.ɵɵelementStart(2, "strong");
25
+ i0.ɵɵtext(3, "!@#$*%");
26
+ i0.ɵɵelementEnd()();
25
27
  } if (rf & 2) {
26
28
  const ctx_r3 = i0.ɵɵnextContext(2);
27
- i0.ɵɵproperty("ngClass", !ctx_r3.password.hasError("minlength") && ctx_r3.password.dirty ? "success" : "error");
29
+ i0.ɵɵproperty("ngClass", !ctx_r3.password.hasError("hasClaimantSpecialCharacters") && ctx_r3.password.dirty ? "success" : "error");
28
30
  } }
29
- function ChangePasswordPage_div_10_li_8_Template(rf, ctx) { if (rf & 1) {
30
- i0.ɵɵelementStart(0, "li", 10);
31
- i0.ɵɵtext(1, "Maximum 15 characters.");
32
- i0.ɵɵelementEnd();
31
+ function ChangePasswordPage_div_10_li_14_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelementStart(0, "li", 9);
33
+ i0.ɵɵtext(1, "1 of the following symbols ");
34
+ i0.ɵɵelementStart(2, "strong");
35
+ i0.ɵɵtext(3, "!@#$*%");
36
+ i0.ɵɵelementEnd()();
33
37
  } if (rf & 2) {
34
38
  const ctx_r4 = i0.ɵɵnextContext(2);
35
- i0.ɵɵproperty("ngClass", !ctx_r4.password.hasError("maxlength") && ctx_r4.password.dirty ? "success" : "error");
39
+ i0.ɵɵproperty("ngClass", !ctx_r4.password.hasError("hasClaimantSpecialCharacters") && ctx_r4.password.dirty ? "success" : "error");
36
40
  } }
37
- function ChangePasswordPage_div_10_li_9_Template(rf, ctx) { if (rf & 1) {
38
- i0.ɵɵelementStart(0, "li", 10);
39
- i0.ɵɵtext(1, "Minimum 14 characters.");
41
+ function ChangePasswordPage_div_10_li_15_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelementStart(0, "li", 9);
43
+ i0.ɵɵtext(1, "Minimum 8 characters");
40
44
  i0.ɵɵelementEnd();
41
45
  } if (rf & 2) {
42
46
  const ctx_r5 = i0.ɵɵnextContext(2);
43
47
  i0.ɵɵproperty("ngClass", !ctx_r5.password.hasError("minlength") && ctx_r5.password.dirty ? "success" : "error");
44
48
  } }
45
- function ChangePasswordPage_div_10_li_10_Template(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵelementStart(0, "li", 10);
47
- i0.ɵɵtext(1, "Maximum 21 characters.");
49
+ function ChangePasswordPage_div_10_li_16_Template(rf, ctx) { if (rf & 1) {
50
+ i0.ɵɵelementStart(0, "li", 9);
51
+ i0.ɵɵtext(1, "Maximum 25 characters.");
48
52
  i0.ɵɵelementEnd();
49
53
  } if (rf & 2) {
50
54
  const ctx_r6 = i0.ɵɵnextContext(2);
51
55
  i0.ɵɵproperty("ngClass", !ctx_r6.password.hasError("maxlength") && ctx_r6.password.dirty ? "success" : "error");
52
56
  } }
53
57
  function ChangePasswordPage_div_10_li_17_Template(rf, ctx) { if (rf & 1) {
54
- i0.ɵɵelementStart(0, "li", 10);
55
- i0.ɵɵtext(1, "At least 2 special characters from following ");
56
- i0.ɵɵelementStart(2, "strong");
57
- i0.ɵɵtext(3, "_ @ * $ ! # .");
58
- i0.ɵɵelementEnd()();
58
+ i0.ɵɵelementStart(0, "li", 9);
59
+ i0.ɵɵtext(1, "Minimum 8 characters.");
60
+ i0.ɵɵelementEnd();
59
61
  } if (rf & 2) {
60
62
  const ctx_r7 = i0.ɵɵnextContext(2);
61
- i0.ɵɵproperty("ngClass", !ctx_r7.password.hasError("hasCsrSpecialCharacters") && ctx_r7.password.dirty ? "success" : "error");
63
+ i0.ɵɵproperty("ngClass", !ctx_r7.password.hasError("minlength") && ctx_r7.password.dirty ? "success" : "error");
62
64
  } }
63
65
  function ChangePasswordPage_div_10_li_18_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵelementStart(0, "li", 10);
65
- i0.ɵɵtext(1, "At least 1 special characters from following ");
66
- i0.ɵɵelementStart(2, "strong");
67
- i0.ɵɵtext(3, "_ @ * $ ! # .");
68
- i0.ɵɵelementEnd()();
66
+ i0.ɵɵelementStart(0, "li", 9);
67
+ i0.ɵɵtext(1, "Maximum 25 characters.");
68
+ i0.ɵɵelementEnd();
69
69
  } if (rf & 2) {
70
70
  const ctx_r8 = i0.ɵɵnextContext(2);
71
- i0.ɵɵproperty("ngClass", !ctx_r8.password.hasError("hasClaimantSpecialCharacters") && ctx_r8.password.dirty ? "success" : "error");
71
+ i0.ɵɵproperty("ngClass", !ctx_r8.password.hasError("maxlength") && ctx_r8.password.dirty ? "success" : "error");
72
72
  } }
73
73
  function ChangePasswordPage_div_10_li_19_Template(rf, ctx) { if (rf & 1) {
74
- i0.ɵɵelementStart(0, "li", 10);
74
+ i0.ɵɵelementStart(0, "li", 9);
75
+ i0.ɵɵtext(1, "Your password cannot contain your name and/or your user id.");
76
+ i0.ɵɵelementEnd();
77
+ } if (rf & 2) {
78
+ const ctx_r9 = i0.ɵɵnextContext(2);
79
+ i0.ɵɵproperty("ngClass", !ctx_r9.password.hasError("maxlength") && ctx_r9.password.dirty ? "success" : "error");
80
+ } }
81
+ function ChangePasswordPage_div_10_li_20_Template(rf, ctx) { if (rf & 1) {
82
+ i0.ɵɵelementStart(0, "li", 9);
75
83
  i0.ɵɵtext(1, "At least 2 special characters from following ");
76
84
  i0.ɵɵelementStart(2, "strong");
77
85
  i0.ɵɵtext(3, "_ @ * $ ! # .");
78
86
  i0.ɵɵelementEnd()();
79
87
  } if (rf & 2) {
80
- const ctx_r9 = i0.ɵɵnextContext(2);
81
- i0.ɵɵproperty("ngClass", !ctx_r9.password.hasError("hasClaimantSpecialCharacters") && ctx_r9.password.dirty ? "success" : "error");
88
+ const ctx_r10 = i0.ɵɵnextContext(2);
89
+ i0.ɵɵproperty("ngClass", !ctx_r10.password.hasError("hasCsrSpecialCharacters") && ctx_r10.password.dirty ? "success" : "error");
82
90
  } }
83
- function ChangePasswordPage_div_10_mat_error_25_Template(rf, ctx) { if (rf & 1) {
91
+ function ChangePasswordPage_div_10_mat_error_26_Template(rf, ctx) { if (rf & 1) {
84
92
  i0.ɵɵelementStart(0, "mat-error");
85
93
  i0.ɵɵtext(1, " Current Password is required. ");
86
94
  i0.ɵɵelementEnd();
87
95
  } }
88
- function ChangePasswordPage_div_10_mat_error_26_Template(rf, ctx) { if (rf & 1) {
96
+ function ChangePasswordPage_div_10_mat_error_27_Template(rf, ctx) { if (rf & 1) {
89
97
  i0.ɵɵelementStart(0, "mat-error");
90
98
  i0.ɵɵtext(1, " Current Password should not be same as New Password. ");
91
99
  i0.ɵɵelementEnd();
92
100
  } }
93
- function ChangePasswordPage_div_10_mat_error_33_Template(rf, ctx) { if (rf & 1) {
101
+ function ChangePasswordPage_div_10_mat_error_34_Template(rf, ctx) { if (rf & 1) {
94
102
  i0.ɵɵelementStart(0, "mat-error");
95
103
  i0.ɵɵtext(1, " New Password is required. ");
96
104
  i0.ɵɵelementEnd();
97
105
  } }
98
- function ChangePasswordPage_div_10_mat_error_34_Template(rf, ctx) { if (rf & 1) {
106
+ function ChangePasswordPage_div_10_mat_error_35_Template(rf, ctx) { if (rf & 1) {
99
107
  i0.ɵɵelementStart(0, "mat-error");
100
108
  i0.ɵɵtext(1, " New Password and Confirm Password did not match. ");
101
109
  i0.ɵɵelementEnd();
102
110
  } }
103
- function ChangePasswordPage_div_10_mat_error_35_Template(rf, ctx) { if (rf & 1) {
111
+ function ChangePasswordPage_div_10_mat_error_36_Template(rf, ctx) { if (rf & 1) {
104
112
  i0.ɵɵelementStart(0, "mat-error");
105
113
  i0.ɵɵtext(1, " Current Password should not be same as New Password. ");
106
114
  i0.ɵɵelementEnd();
107
115
  } }
108
- function ChangePasswordPage_div_10_mat_error_42_Template(rf, ctx) { if (rf & 1) {
116
+ function ChangePasswordPage_div_10_mat_error_43_Template(rf, ctx) { if (rf & 1) {
109
117
  i0.ɵɵelementStart(0, "mat-error");
110
118
  i0.ɵɵtext(1, " Confirm Password is required. ");
111
119
  i0.ɵɵelementEnd();
112
120
  } }
113
- function ChangePasswordPage_div_10_mat_error_43_Template(rf, ctx) { if (rf & 1) {
121
+ function ChangePasswordPage_div_10_mat_error_44_Template(rf, ctx) { if (rf & 1) {
114
122
  i0.ɵɵelementStart(0, "mat-error");
115
123
  i0.ɵɵtext(1, " Confirm Password should have minimum ");
116
124
  i0.ɵɵelementStart(2, "strong");
117
- i0.ɵɵtext(3, "14 characters");
125
+ i0.ɵɵtext(3, "8 characters");
118
126
  i0.ɵɵelementEnd();
119
127
  i0.ɵɵtext(4, ". ");
120
128
  i0.ɵɵelementEnd();
121
129
  } }
122
- function ChangePasswordPage_div_10_mat_error_44_Template(rf, ctx) { if (rf & 1) {
130
+ function ChangePasswordPage_div_10_mat_error_45_Template(rf, ctx) { if (rf & 1) {
123
131
  i0.ɵɵelementStart(0, "mat-error");
124
132
  i0.ɵɵtext(1, " Confirm Password should not have more than ");
125
133
  i0.ɵɵelementStart(2, "strong");
126
- i0.ɵɵtext(3, "21 characters");
134
+ i0.ɵɵtext(3, "25 characters");
127
135
  i0.ɵɵelementEnd();
128
136
  i0.ɵɵtext(4, ". ");
129
137
  i0.ɵɵelementEnd();
130
138
  } }
131
- function ChangePasswordPage_div_10_mat_error_45_Template(rf, ctx) { if (rf & 1) {
139
+ function ChangePasswordPage_div_10_mat_error_46_Template(rf, ctx) { if (rf & 1) {
132
140
  i0.ɵɵelementStart(0, "mat-error");
133
141
  i0.ɵɵtext(1, " Confirm Password should have minimum ");
134
142
  i0.ɵɵelementStart(2, "strong");
@@ -137,102 +145,102 @@ function ChangePasswordPage_div_10_mat_error_45_Template(rf, ctx) { if (rf & 1)
137
145
  i0.ɵɵtext(4, ". ");
138
146
  i0.ɵɵelementEnd();
139
147
  } }
140
- function ChangePasswordPage_div_10_mat_error_46_Template(rf, ctx) { if (rf & 1) {
148
+ function ChangePasswordPage_div_10_mat_error_47_Template(rf, ctx) { if (rf & 1) {
141
149
  i0.ɵɵelementStart(0, "mat-error");
142
150
  i0.ɵɵtext(1, " Confirm Password should not have more than ");
143
151
  i0.ɵɵelementStart(2, "strong");
144
- i0.ɵɵtext(3, "15 characters");
152
+ i0.ɵɵtext(3, "25 characters");
145
153
  i0.ɵɵelementEnd();
146
154
  i0.ɵɵtext(4, ". ");
147
155
  i0.ɵɵelementEnd();
148
156
  } }
149
- function ChangePasswordPage_div_10_mat_error_47_Template(rf, ctx) { if (rf & 1) {
157
+ function ChangePasswordPage_div_10_mat_error_48_Template(rf, ctx) { if (rf & 1) {
150
158
  i0.ɵɵelementStart(0, "mat-error");
151
159
  i0.ɵɵtext(1, " New Password and Confirm Password did not match. ");
152
160
  i0.ɵɵelementEnd();
153
161
  } }
154
- function ChangePasswordPage_div_10_mat_error_48_Template(rf, ctx) { if (rf & 1) {
162
+ function ChangePasswordPage_div_10_mat_error_49_Template(rf, ctx) { if (rf & 1) {
155
163
  i0.ɵɵelementStart(0, "mat-error");
156
164
  i0.ɵɵtext(1, " Current Password should not be same as Confirm Password. ");
157
165
  i0.ɵɵelementEnd();
158
166
  } }
159
- function ChangePasswordPage_div_10_label_49_Template(rf, ctx) { if (rf & 1) {
167
+ function ChangePasswordPage_div_10_label_50_Template(rf, ctx) { if (rf & 1) {
160
168
  i0.ɵɵelementStart(0, "label", 21)(1, "strong");
161
169
  i0.ɵɵtext(2, "Caps Lock is On");
162
170
  i0.ɵɵelementEnd()();
163
171
  } }
164
172
  function ChangePasswordPage_div_10_Template(rf, ctx) { if (rf & 1) {
165
- const _r24 = i0.ɵɵgetCurrentView();
173
+ const _r25 = i0.ɵɵgetCurrentView();
166
174
  i0.ɵɵelementStart(0, "div")(1, "div");
167
175
  i0.ɵɵtext(2, " In order to ");
168
176
  i0.ɵɵelementStart(3, "strong");
169
177
  i0.ɵɵtext(4, "protect your account");
170
178
  i0.ɵɵelementEnd();
171
- i0.ɵɵtext(5, ", make sure your password has: ");
172
- i0.ɵɵelementStart(6, "ul", 8);
173
- i0.ɵɵtemplate(7, ChangePasswordPage_div_10_li_7_Template, 2, 1, "li", 9)(8, ChangePasswordPage_div_10_li_8_Template, 2, 1, "li", 9)(9, ChangePasswordPage_div_10_li_9_Template, 2, 1, "li", 9)(10, ChangePasswordPage_div_10_li_10_Template, 2, 1, "li", 9);
174
- i0.ɵɵelementStart(11, "li", 10);
175
- i0.ɵɵtext(12, "At least 1 number");
179
+ i0.ɵɵtext(5, ", your password must include at least: ");
180
+ i0.ɵɵelementStart(6, "ul", 8)(7, "li", 9);
181
+ i0.ɵɵtext(8, "1 uppercase letter");
176
182
  i0.ɵɵelementEnd();
177
- i0.ɵɵelementStart(13, "li", 10);
178
- i0.ɵɵtext(14, "At least 1 uppercase letter");
183
+ i0.ɵɵelementStart(9, "li", 9);
184
+ i0.ɵɵtext(10, "1 lowercase letter");
179
185
  i0.ɵɵelementEnd();
180
- i0.ɵɵelementStart(15, "li", 10);
181
- i0.ɵɵtext(16, "At least 1 lowercase letter");
186
+ i0.ɵɵelementStart(11, "li", 9);
187
+ i0.ɵɵtext(12, "1 number");
182
188
  i0.ɵɵelementEnd();
183
- i0.ɵɵtemplate(17, ChangePasswordPage_div_10_li_17_Template, 4, 1, "li", 9)(18, ChangePasswordPage_div_10_li_18_Template, 4, 1, "li", 9)(19, ChangePasswordPage_div_10_li_19_Template, 4, 1, "li", 9);
189
+ i0.ɵɵtemplate(13, ChangePasswordPage_div_10_li_13_Template, 4, 1, "li", 10)(14, ChangePasswordPage_div_10_li_14_Template, 4, 1, "li", 10)(15, ChangePasswordPage_div_10_li_15_Template, 2, 1, "li", 10)(16, ChangePasswordPage_div_10_li_16_Template, 2, 1, "li", 10)(17, ChangePasswordPage_div_10_li_17_Template, 2, 1, "li", 10)(18, ChangePasswordPage_div_10_li_18_Template, 2, 1, "li", 10)(19, ChangePasswordPage_div_10_li_19_Template, 2, 1, "li", 10)(20, ChangePasswordPage_div_10_li_20_Template, 4, 1, "li", 10);
184
190
  i0.ɵɵelementEnd()();
185
- i0.ɵɵelementStart(20, "div", 11)(21, "span", 12);
186
- i0.ɵɵelement(22, "p-password", 13);
187
- i0.ɵɵelementStart(23, "label", 14);
188
- i0.ɵɵtext(24, "Current Password");
191
+ i0.ɵɵelementStart(21, "div", 11)(22, "span", 12);
192
+ i0.ɵɵelement(23, "p-password", 13);
193
+ i0.ɵɵelementStart(24, "label", 14);
194
+ i0.ɵɵtext(25, "Current Password");
189
195
  i0.ɵɵelementEnd()();
190
- i0.ɵɵtemplate(25, ChangePasswordPage_div_10_mat_error_25_Template, 2, 0, "mat-error", 6)(26, ChangePasswordPage_div_10_mat_error_26_Template, 2, 0, "mat-error", 6);
196
+ i0.ɵɵtemplate(26, ChangePasswordPage_div_10_mat_error_26_Template, 2, 0, "mat-error", 6)(27, ChangePasswordPage_div_10_mat_error_27_Template, 2, 0, "mat-error", 6);
191
197
  i0.ɵɵelementEnd();
192
- i0.ɵɵelement(27, "br");
193
- i0.ɵɵelementStart(28, "div", 11)(29, "span", 12);
194
- i0.ɵɵelement(30, "p-password", 15);
195
- i0.ɵɵelementStart(31, "label", 14);
196
- i0.ɵɵtext(32, "New Password");
198
+ i0.ɵɵelement(28, "br");
199
+ i0.ɵɵelementStart(29, "div", 11)(30, "span", 12);
200
+ i0.ɵɵelement(31, "p-password", 15);
201
+ i0.ɵɵelementStart(32, "label", 14);
202
+ i0.ɵɵtext(33, "New Password");
197
203
  i0.ɵɵelementEnd()();
198
- i0.ɵɵtemplate(33, ChangePasswordPage_div_10_mat_error_33_Template, 2, 0, "mat-error", 6)(34, ChangePasswordPage_div_10_mat_error_34_Template, 2, 0, "mat-error", 6)(35, ChangePasswordPage_div_10_mat_error_35_Template, 2, 0, "mat-error", 6);
204
+ i0.ɵɵtemplate(34, ChangePasswordPage_div_10_mat_error_34_Template, 2, 0, "mat-error", 6)(35, ChangePasswordPage_div_10_mat_error_35_Template, 2, 0, "mat-error", 6)(36, ChangePasswordPage_div_10_mat_error_36_Template, 2, 0, "mat-error", 6);
199
205
  i0.ɵɵelementEnd();
200
- i0.ɵɵelement(36, "br");
201
- i0.ɵɵelementStart(37, "div", 11)(38, "span", 12);
202
- i0.ɵɵelement(39, "p-password", 16);
203
- i0.ɵɵelementStart(40, "label", 14);
204
- i0.ɵɵtext(41, "Confirm Password");
206
+ i0.ɵɵelement(37, "br");
207
+ i0.ɵɵelementStart(38, "div", 11)(39, "span", 12);
208
+ i0.ɵɵelement(40, "p-password", 16);
209
+ i0.ɵɵelementStart(41, "label", 14);
210
+ i0.ɵɵtext(42, "Confirm Password");
205
211
  i0.ɵɵelementEnd()();
206
- i0.ɵɵtemplate(42, ChangePasswordPage_div_10_mat_error_42_Template, 2, 0, "mat-error", 6)(43, ChangePasswordPage_div_10_mat_error_43_Template, 5, 0, "mat-error", 6)(44, ChangePasswordPage_div_10_mat_error_44_Template, 5, 0, "mat-error", 6)(45, ChangePasswordPage_div_10_mat_error_45_Template, 5, 0, "mat-error", 6)(46, ChangePasswordPage_div_10_mat_error_46_Template, 5, 0, "mat-error", 6)(47, ChangePasswordPage_div_10_mat_error_47_Template, 2, 0, "mat-error", 6)(48, ChangePasswordPage_div_10_mat_error_48_Template, 2, 0, "mat-error", 6);
212
+ i0.ɵɵtemplate(43, ChangePasswordPage_div_10_mat_error_43_Template, 2, 0, "mat-error", 6)(44, ChangePasswordPage_div_10_mat_error_44_Template, 5, 0, "mat-error", 6)(45, ChangePasswordPage_div_10_mat_error_45_Template, 5, 0, "mat-error", 6)(46, ChangePasswordPage_div_10_mat_error_46_Template, 5, 0, "mat-error", 6)(47, ChangePasswordPage_div_10_mat_error_47_Template, 5, 0, "mat-error", 6)(48, ChangePasswordPage_div_10_mat_error_48_Template, 2, 0, "mat-error", 6)(49, ChangePasswordPage_div_10_mat_error_49_Template, 2, 0, "mat-error", 6);
207
213
  i0.ɵɵelementEnd();
208
- i0.ɵɵtemplate(49, ChangePasswordPage_div_10_label_49_Template, 3, 0, "label", 17);
209
- i0.ɵɵelementStart(50, "div", 18)(51, "ion-button", 19);
210
- i0.ɵɵlistener("click", function ChangePasswordPage_div_10_Template_ion_button_click_51_listener() { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r23.save()); });
211
- i0.ɵɵelement(52, "ion-icon", 20);
212
- i0.ɵɵtext(53, " Change Password ");
214
+ i0.ɵɵtemplate(50, ChangePasswordPage_div_10_label_50_Template, 3, 0, "label", 17);
215
+ i0.ɵɵelementStart(51, "div", 18)(52, "ion-button", 19);
216
+ i0.ɵɵlistener("click", function ChangePasswordPage_div_10_Template_ion_button_click_52_listener() { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r24.save()); });
217
+ i0.ɵɵelement(53, "ion-icon", 20);
218
+ i0.ɵɵtext(54, " Change Password ");
213
219
  i0.ɵɵelementEnd()()();
214
220
  } if (rf & 2) {
215
221
  const ctx_r1 = i0.ɵɵnextContext();
216
222
  i0.ɵɵadvance(7);
217
- i0.ɵɵproperty("ngIf", !ctx_r1.useNewPasswordPolicy);
218
- i0.ɵɵadvance(1);
219
- i0.ɵɵproperty("ngIf", !ctx_r1.useNewPasswordPolicy);
220
- i0.ɵɵadvance(1);
221
- i0.ɵɵproperty("ngIf", ctx_r1.useNewPasswordPolicy);
222
- i0.ɵɵadvance(1);
223
- i0.ɵɵproperty("ngIf", ctx_r1.useNewPasswordPolicy);
224
- i0.ɵɵadvance(1);
225
- i0.ɵɵproperty("ngClass", !ctx_r1.password.hasError("hasNumber") && ctx_r1.password.dirty ? "success" : "error");
226
- i0.ɵɵadvance(2);
227
223
  i0.ɵɵproperty("ngClass", !ctx_r1.password.hasError("hasCapitalCase") && ctx_r1.password.dirty ? "success" : "error");
228
224
  i0.ɵɵadvance(2);
229
225
  i0.ɵɵproperty("ngClass", !ctx_r1.password.hasError("hasSmallCase") && ctx_r1.password.dirty ? "success" : "error");
230
226
  i0.ɵɵadvance(2);
231
- i0.ɵɵproperty("ngIf", !ctx_r1.loginService.isClaimant());
232
- i0.ɵɵadvance(1);
227
+ i0.ɵɵproperty("ngClass", !ctx_r1.password.hasError("hasNumber") && ctx_r1.password.dirty ? "success" : "error");
228
+ i0.ɵɵadvance(2);
233
229
  i0.ɵɵproperty("ngIf", ctx_r1.loginService.isClaimant() && !ctx_r1.isSameSymbolPolicyForClaimantAndAgency);
234
230
  i0.ɵɵadvance(1);
235
231
  i0.ɵɵproperty("ngIf", ctx_r1.loginService.isClaimant() && ctx_r1.isSameSymbolPolicyForClaimantAndAgency);
232
+ i0.ɵɵadvance(1);
233
+ i0.ɵɵproperty("ngIf", !ctx_r1.isNewPasswordPolicyEnabled);
234
+ i0.ɵɵadvance(1);
235
+ i0.ɵɵproperty("ngIf", !ctx_r1.isNewPasswordPolicyEnabled);
236
+ i0.ɵɵadvance(1);
237
+ i0.ɵɵproperty("ngIf", ctx_r1.isNewPasswordPolicyEnabled);
238
+ i0.ɵɵadvance(1);
239
+ i0.ɵɵproperty("ngIf", ctx_r1.isNewPasswordPolicyEnabled);
240
+ i0.ɵɵadvance(1);
241
+ i0.ɵɵproperty("ngIf", ctx_r1.isNewPasswordPolicyEnabled);
242
+ i0.ɵɵadvance(1);
243
+ i0.ɵɵproperty("ngIf", !ctx_r1.loginService.isClaimant());
236
244
  i0.ɵɵadvance(3);
237
245
  i0.ɵɵproperty("formControl", ctx_r1.oldPassword)("toggleMask", true)("feedback", false);
238
246
  i0.ɵɵadvance(3);
@@ -252,13 +260,13 @@ function ChangePasswordPage_div_10_Template(rf, ctx) { if (rf & 1) {
252
260
  i0.ɵɵadvance(3);
253
261
  i0.ɵɵproperty("ngIf", ctx_r1.confirmPassword.hasError("required"));
254
262
  i0.ɵɵadvance(1);
255
- i0.ɵɵproperty("ngIf", ctx_r1.confirmPassword.hasError("minlength") && ctx_r1.useNewPasswordPolicy);
263
+ i0.ɵɵproperty("ngIf", ctx_r1.confirmPassword.hasError("minlength") && ctx_r1.isNewPasswordPolicyEnabled);
256
264
  i0.ɵɵadvance(1);
257
- i0.ɵɵproperty("ngIf", ctx_r1.confirmPassword.hasError("maxlength") && ctx_r1.useNewPasswordPolicy);
265
+ i0.ɵɵproperty("ngIf", ctx_r1.confirmPassword.hasError("maxlength") && ctx_r1.isNewPasswordPolicyEnabled);
258
266
  i0.ɵɵadvance(1);
259
- i0.ɵɵproperty("ngIf", ctx_r1.confirmPassword.hasError("minlength") && !ctx_r1.useNewPasswordPolicy);
267
+ i0.ɵɵproperty("ngIf", ctx_r1.confirmPassword.hasError("minlength") && !ctx_r1.isNewPasswordPolicyEnabled);
260
268
  i0.ɵɵadvance(1);
261
- i0.ɵɵproperty("ngIf", ctx_r1.confirmPassword.hasError("maxlength") && !ctx_r1.useNewPasswordPolicy);
269
+ i0.ɵɵproperty("ngIf", ctx_r1.confirmPassword.hasError("maxlength") && !ctx_r1.isNewPasswordPolicyEnabled);
262
270
  i0.ɵɵadvance(1);
263
271
  i0.ɵɵproperty("ngIf", ctx_r1.confirmPassword.hasError("notMatch"));
264
272
  i0.ɵɵadvance(1);
@@ -271,23 +279,23 @@ function ChangePasswordPage_div_11_strong_2_Template(rf, ctx) { if (rf & 1) {
271
279
  i0.ɵɵtext(1);
272
280
  i0.ɵɵelementEnd();
273
281
  } if (rf & 2) {
274
- const ctx_r25 = i0.ɵɵnextContext(2);
282
+ const ctx_r26 = i0.ɵɵnextContext(2);
275
283
  i0.ɵɵadvance(1);
276
- i0.ɵɵtextInterpolate(ctx_r25.user.daysTillPasswordExpire);
284
+ i0.ɵɵtextInterpolate(ctx_r26.user.daysTillPasswordExpire);
277
285
  } }
278
286
  function ChangePasswordPage_div_11_Template(rf, ctx) { if (rf & 1) {
279
- const _r27 = i0.ɵɵgetCurrentView();
287
+ const _r28 = i0.ɵɵgetCurrentView();
280
288
  i0.ɵɵelementStart(0, "div", 22);
281
289
  i0.ɵɵtext(1, " Your password will expire in ");
282
290
  i0.ɵɵtemplate(2, ChangePasswordPage_div_11_strong_2_Template, 2, 1, "strong", 6);
283
291
  i0.ɵɵtext(3, " day(s). Consider changing it now. ");
284
292
  i0.ɵɵelementStart(4, "div", 18)(5, "ion-button", 19);
285
- i0.ɵɵlistener("click", function ChangePasswordPage_div_11_Template_ion_button_click_5_listener() { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r26.showChangePassword = "false"); });
293
+ i0.ɵɵlistener("click", function ChangePasswordPage_div_11_Template_ion_button_click_5_listener() { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r27.showChangePassword = "false"); });
286
294
  i0.ɵɵelement(6, "ion-icon", 23);
287
295
  i0.ɵɵtext(7, " Change Now ");
288
296
  i0.ɵɵelementEnd();
289
297
  i0.ɵɵelementStart(8, "ion-button", 19);
290
- i0.ɵɵlistener("click", function ChangePasswordPage_div_11_Template_ion_button_click_8_listener() { i0.ɵɵrestoreView(_r27); const ctx_r28 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r28.redirect()); });
298
+ i0.ɵɵlistener("click", function ChangePasswordPage_div_11_Template_ion_button_click_8_listener() { i0.ɵɵrestoreView(_r28); const ctx_r29 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r29.redirect()); });
291
299
  i0.ɵɵelement(9, "ion-icon", 24);
292
300
  i0.ɵɵtext(10, " Dashboard ");
293
301
  i0.ɵɵelementEnd()()();
@@ -329,9 +337,6 @@ export class ChangePasswordPage extends BasePage {
329
337
  this.hideConfirmPassword = true;
330
338
  this.hideOldPassword = true;
331
339
  this.showChangePassword = 'false';
332
- this.isCSR = false;
333
- this.isClaimant = false;
334
- this.useNewPasswordPolicy = false;
335
340
  }
336
341
  ngOnInit() {
337
342
  this.initializeChangePwdForm();
@@ -355,49 +360,26 @@ export class ChangePasswordPage extends BasePage {
355
360
  this.setPasswordValidators();
356
361
  }
357
362
  setPasswordValidators() {
358
- let validators1 = [Validators.required];
359
- let validators2 = [Validators.required];
363
+ let validators1 = [];
364
+ let validators2 = [];
360
365
  let validators3 = [Validators.required, AppValidators.notEqual('password', { match: true })];
361
366
  this.commonValidators.forEach(v => validators1.push(v));
362
367
  this.commonValidators.forEach(v => validators2.push(v));
368
+ if (this.isNewPasswordPolicyEnabled) {
369
+ this.newPasswordPolicyValidators.forEach(v => validators1.push(v));
370
+ this.newPasswordPolicyValidators.forEach(v => validators2.push(v));
371
+ }
372
+ else {
373
+ this.oldPasswordPolicyValidators.forEach(v => validators1.push(v));
374
+ this.oldPasswordPolicyValidators.forEach(v => validators2.push(v));
375
+ }
363
376
  if (this.loginService.isCsr()) {
364
377
  this.csrPasswordValidators.forEach(v => validators1.push(v));
365
378
  this.csrConfirmPasswordValidators.forEach(v => validators2.push(v));
366
- if (this.isNewPasswordPolicyEnabled) {
367
- this.useNewPasswordPolicy = true;
368
- this.newPasswordPolicyValidators.forEach(v => validators1.push(v));
369
- this.newPasswordPolicyValidators.forEach(v => validators2.push(v));
370
- }
371
- else {
372
- this.oldPasswordPolicyValidators.forEach(v => validators1.push(v));
373
- this.oldPasswordPolicyValidators.forEach(v => validators2.push(v));
374
- }
375
- }
376
- else if (this.loginService.isClaimant()) {
377
- this.claimantPasswordValidators.forEach(v => validators1.push(v));
378
- this.claimantConfirmPasswordValidators.forEach(v => validators2.push(v));
379
- if (this.isNewPasswordPolicyEnabledForClaimant) {
380
- this.useNewPasswordPolicy = true;
381
- this.newPasswordPolicyValidators.forEach(v => validators1.push(v));
382
- this.newPasswordPolicyValidators.forEach(v => validators2.push(v));
383
- }
384
- else {
385
- this.oldPasswordPolicyValidators.forEach(v => validators1.push(v));
386
- this.oldPasswordPolicyValidators.forEach(v => validators2.push(v));
387
- }
388
379
  }
389
380
  else {
390
381
  this.claimantPasswordValidators.forEach(v => validators1.push(v));
391
382
  this.claimantConfirmPasswordValidators.forEach(v => validators2.push(v));
392
- if (this.isNewPasswordPolicyEnabledForEmployer) {
393
- this.useNewPasswordPolicy = true;
394
- this.newPasswordPolicyValidators.forEach(v => validators1.push(v));
395
- this.newPasswordPolicyValidators.forEach(v => validators2.push(v));
396
- }
397
- else {
398
- this.oldPasswordPolicyValidators.forEach(v => validators1.push(v));
399
- this.oldPasswordPolicyValidators.forEach(v => validators2.push(v));
400
- }
401
383
  }
402
384
  this.util.setValidation(this.oldPassword, validators3);
403
385
  this.util.setValidation(this.password, validators1);
@@ -418,7 +400,7 @@ export class ChangePasswordPage extends BasePage {
418
400
  }
419
401
  this.util.showLoader()
420
402
  .then(() => {
421
- this.loginService.updatePassword(this.oldPassword.value.trim(), this.password.value.trim(), this.confirmPassword.value.trim())
403
+ this.loginService.updatePassword(this.oldPassword.value, this.password.value, this.confirmPassword.value)
422
404
  .subscribe(res => {
423
405
  this.loginService.logout();
424
406
  this.nav
@@ -464,13 +446,13 @@ export class ChangePasswordPage extends BasePage {
464
446
  }
465
447
  }
466
448
  static { this.ɵfac = function ChangePasswordPage_Factory(t) { return new (t || ChangePasswordPage)(i0.ɵɵdirectiveInject(i1.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2.LoginService), i0.ɵɵdirectiveInject(i3.UtilService), i0.ɵɵdirectiveInject(i4.NavController), i0.ɵɵdirectiveInject(i5.ActivatedRoute), i0.ɵɵdirectiveInject(i4.Platform)); }; }
467
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ChangePasswordPage, selectors: [["app-change-password"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 3, consts: [["title", "Change Password", "pageId", "CNGPWD-001"], [3, "formGroup"], ["changePwdFormDirective", "ngForm"], ["color", "primary", 1, "ion-justify-content-center"], ["size-md", "6", "size-lg", "4", "size-xs", "12", "size-sm", "12", "size-xl", "4", 1, "ion-align-self-center"], ["title", "Change Password", 3, "capsLock"], [4, "ngIf"], ["class", "ion-text-center", 4, "ngIf"], [1, "p-pl-2", "p-ml-2", "p-mt-0", 2, "line-height", "1.5", "margin-left", "1rem !important", "list-style-type", "square"], [3, "ngClass", 4, "ngIf"], [3, "ngClass"], [2, "display", "grid"], [1, "p-float-label"], ["inputId", "oldPassword", "appAutofocus", "", 3, "formControl", "toggleMask", "feedback"], ["for", "float-input"], ["inputId", "password", "appendTo", "body", 3, "formControl", "toggleMask"], ["inputId", "confirmPassword", "appendTo", "body", 3, "formControl", "toggleMask"], ["style", "color:var(--ion-color-danger);", 4, "ngIf"], [1, "ion-text-center", "ion-padding-top"], ["shape", "round", "color", "success", "type", "submit", 3, "click"], ["name", "save-outline", "slot", "start"], [2, "color", "var(--ion-color-danger)"], [1, "ion-text-center"], ["name", "shuffle-outline", "slot", "start"], ["name", "analytics-outline", "slot", "start"]], template: function ChangePasswordPage_Template(rf, ctx) { if (rf & 1) {
449
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ChangePasswordPage, selectors: [["app-change-password"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 3, consts: [["title", "Change Password", "pageId", "CNGPWD-001"], [3, "formGroup"], ["changePwdFormDirective", "ngForm"], ["color", "primary", 1, "ion-justify-content-center"], ["size-md", "6", "size-lg", "4", "size-xs", "12", "size-sm", "12", "size-xl", "4", 1, "ion-align-self-center"], ["title", "Change Password", 3, "capsLock"], [4, "ngIf"], ["class", "ion-text-center", 4, "ngIf"], [1, "p-pl-2", "p-ml-2", "p-mt-0", 2, "line-height", "1.5", "margin-left", "1rem !important", "list-style-type", "square"], [3, "ngClass"], [3, "ngClass", 4, "ngIf"], [2, "display", "grid"], [1, "p-float-label"], ["inputId", "oldPassword", "appAutofocus", "", 3, "formControl", "toggleMask", "feedback"], ["for", "float-input"], ["inputId", "password", "appendTo", "body", 3, "formControl", "toggleMask"], ["inputId", "confirmPassword", "appendTo", "body", 3, "formControl", "toggleMask"], ["style", "color:var(--ion-color-danger);", 4, "ngIf"], [1, "ion-text-center", "ion-padding-top"], ["shape", "round", "color", "success", "type", "submit", 3, "click"], ["name", "save-outline", "slot", "start"], [2, "color", "var(--ion-color-danger)"], [1, "ion-text-center"], ["name", "shuffle-outline", "slot", "start"], ["name", "analytics-outline", "slot", "start"]], template: function ChangePasswordPage_Template(rf, ctx) { if (rf & 1) {
468
450
  i0.ɵɵelementStart(0, "ion-header");
469
451
  i0.ɵɵelement(1, "app-header", 0);
470
452
  i0.ɵɵelementEnd();
471
453
  i0.ɵɵelementStart(2, "ion-content")(3, "app-content")(4, "form", 1, 2)(6, "ion-grid")(7, "ion-row", 3)(8, "ion-col", 4)(9, "app-card", 5);
472
454
  i0.ɵɵlistener("capsLock", function ChangePasswordPage_Template_app_card_capsLock_9_listener($event) { return ctx.capsOn = $event; });
473
- i0.ɵɵtemplate(10, ChangePasswordPage_div_10_Template, 54, 30, "div", 6)(11, ChangePasswordPage_div_11_Template, 11, 1, "div", 7);
455
+ i0.ɵɵtemplate(10, ChangePasswordPage_div_10_Template, 55, 31, "div", 6)(11, ChangePasswordPage_div_11_Template, 11, 1, "div", 7);
474
456
  i0.ɵɵelementEnd()()()()()()();
475
457
  } if (rf & 2) {
476
458
  i0.ɵɵadvance(4);
@@ -483,7 +465,7 @@ export class ChangePasswordPage extends BasePage {
483
465
  }
484
466
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ChangePasswordPage, [{
485
467
  type: Component,
486
- args: [{ selector: 'app-change-password', template: "<ion-header>\r\n <app-header title=\"Change Password\" pageId=\"CNGPWD-001\">\r\n </app-header>\r\n</ion-header>\r\n\r\n<ion-content>\r\n <app-content>\r\n <form [formGroup]=\"changePwdForm\" #changePwdFormDirective=\"ngForm\">\r\n <ion-grid>\r\n <ion-row color=\"primary\" class=\"ion-justify-content-center\">\r\n <ion-col class=\"ion-align-self-center\" size-md=\"6\" size-lg=\"4\" size-xs=\"12\" size-sm=\"12\" size-xl=\"4\">\r\n \r\n <app-card title=\"Change Password\" (capsLock)=\"capsOn=$event\">\r\n <div *ngIf=\"showChangePassword == 'false'\">\r\n <div>\r\n In order to <strong>protect your account</strong>, make sure your password has:\r\n <ul class=\"p-pl-2 p-ml-2 p-mt-0\" style=\"line-height: 1.5; margin-left: 1rem !important; list-style-type: square;\">\r\n <li [ngClass]=\"!password.hasError('minlength') && password.dirty ? 'success' : 'error'\" *ngIf=\"!useNewPasswordPolicy\">Minimum 8 characters.</li>\r\n <li [ngClass]=\"!password.hasError('maxlength') && password.dirty ? 'success' : 'error'\" *ngIf=\"!useNewPasswordPolicy\">Maximum 15 characters.</li>\r\n <li [ngClass]=\"!password.hasError('minlength') && password.dirty ? 'success' : 'error'\" *ngIf=\"useNewPasswordPolicy\">Minimum 14 characters.</li>\r\n <li [ngClass]=\"!password.hasError('maxlength') && password.dirty ? 'success' : 'error'\" *ngIf=\"useNewPasswordPolicy\">Maximum 21 characters.</li>\r\n <li [ngClass]=\"!password.hasError('hasNumber') && password.dirty ? 'success' : 'error'\">At least 1 number</li>\r\n <li [ngClass]=\"!password.hasError('hasCapitalCase') && password.dirty ? 'success' : 'error'\">At least 1 uppercase letter</li>\r\n <li [ngClass]=\"!password.hasError('hasSmallCase') && password.dirty ? 'success' : 'error'\">At least 1 lowercase letter</li>\r\n <li [ngClass]=\"!password.hasError('hasCsrSpecialCharacters') && password.dirty ? 'success' : 'error'\" *ngIf=\"!loginService.isClaimant()\">At least 2 special characters from following <strong>_ &#64; * $ ! # .</strong></li>\r\n <li [ngClass]=\"!password.hasError('hasClaimantSpecialCharacters') && password.dirty ? 'success' : 'error'\" *ngIf=\"loginService.isClaimant() && !isSameSymbolPolicyForClaimantAndAgency\">At least 1 special characters from following <strong>_ &#64; * $ ! # .</strong></li>\r\n <li [ngClass]=\"!password.hasError('hasClaimantSpecialCharacters') && password.dirty ? 'success' : 'error'\" *ngIf=\"loginService.isClaimant() && isSameSymbolPolicyForClaimantAndAgency\">At least 2 special characters from following <strong>_ &#64; * $ ! # .</strong></li>\r\n </ul>\r\n </div>\r\n <div style=\"display: grid;\">\r\n <span class=\"p-float-label\">\r\n <p-password [formControl]=\"oldPassword\" inputId=\"oldPassword\" [toggleMask]='true' [feedback]='false' appAutofocus></p-password> \r\n <label for=\"float-input\">Current Password</label>\r\n </span>\r\n <mat-error *ngIf=\"oldPassword.hasError('required')\">\r\n Current Password is required.\r\n </mat-error>\r\n <mat-error *ngIf=\"oldPassword.hasError('match')\">\r\n Current Password should not be same as New Password.\r\n </mat-error>\r\n </div>\r\n <br/>\r\n <div style=\"display: grid;\">\r\n <span class=\"p-float-label\">\r\n <p-password [formControl]=\"password\" inputId=\"password\" [toggleMask]='true' appendTo=\"body\">\r\n </p-password> \r\n <label for=\"float-input\">New Password</label>\r\n </span>\r\n <mat-error *ngIf=\"password.hasError('required')\">\r\n New Password is required.\r\n </mat-error>\r\n <mat-error *ngIf=\"password.hasError('notMatch')\">\r\n New Password and Confirm Password did not match.\r\n </mat-error>\r\n <mat-error *ngIf=\"password.hasError('match')\">\r\n Current Password should not be same as New Password.\r\n </mat-error>\r\n </div>\r\n \r\n <br/>\r\n <div style=\"display: grid;\">\r\n <span class=\"p-float-label\">\r\n <p-password [formControl]=\"confirmPassword\" inputId=\"confirmPassword\" [toggleMask]='true' appendTo=\"body\">\r\n </p-password> \r\n <label for=\"float-input\">Confirm Password</label>\r\n </span>\r\n <mat-error *ngIf=\"confirmPassword.hasError('required')\">\r\n Confirm Password is required.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('minlength') && useNewPasswordPolicy\">\r\n Confirm Password should have minimum <strong>14 characters</strong>.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('maxlength') && useNewPasswordPolicy\">\r\n Confirm Password should not have more than <strong>21 characters</strong>.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('minlength') && !useNewPasswordPolicy\">\r\n Confirm Password should have minimum <strong>8 characters</strong>.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('maxlength') && !useNewPasswordPolicy\">\r\n Confirm Password should not have more than <strong>15 characters</strong>.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('notMatch')\">\r\n New Password and Confirm Password did not match.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('match')\">\r\n Current Password should not be same as Confirm Password.\r\n </mat-error>\r\n </div>\r\n \r\n <label *ngIf=\"capsOn\" style=\"color:var(--ion-color-danger);\"><strong>Caps Lock is On</strong></label>\r\n \r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-button shape=\"round\" (click)=\"save()\" color=\"success\" type=\"submit\">\r\n <ion-icon name=\"save-outline\" slot=\"start\" ></ion-icon>\r\n Change Password\r\n </ion-button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showChangePassword == 'true'\" class=\"ion-text-center\">\r\n Your password will expire in <strong *ngIf=\"user\">{{user.daysTillPasswordExpire}}</strong> day(s). Consider changing it now.\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-button shape=\"round\" (click)=\"showChangePassword = 'false'\" color=\"success\" type=\"submit\">\r\n <ion-icon name=\"shuffle-outline\" slot=\"start\" ></ion-icon>\r\n Change Now\r\n </ion-button>\r\n <ion-button shape=\"round\" (click)=\"redirect()\" color=\"success\" type=\"submit\">\r\n <ion-icon name=\"analytics-outline\" slot=\"start\" ></ion-icon>\r\n Dashboard\r\n </ion-button>\r\n </div>\r\n </div>\r\n </app-card>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </form>\r\n </app-content>\r\n</ion-content>", styles: [":host ::ng-deep .p-inputwrapper,:host ::ng-deep .p-inputtext{width:100%}.error{color:var(--ion-color-danger)}.success{color:var(--ion-color-green)}\n"] }]
468
+ args: [{ selector: 'app-change-password', template: "<ion-header>\r\n <app-header title=\"Change Password\" pageId=\"CNGPWD-001\">\r\n </app-header>\r\n</ion-header>\r\n\r\n<ion-content>\r\n <app-content>\r\n <form [formGroup]=\"changePwdForm\" #changePwdFormDirective=\"ngForm\">\r\n <ion-grid>\r\n <ion-row color=\"primary\" class=\"ion-justify-content-center\">\r\n <ion-col class=\"ion-align-self-center\" size-md=\"6\" size-lg=\"4\" size-xs=\"12\" size-sm=\"12\" size-xl=\"4\">\r\n \r\n <app-card title=\"Change Password\" (capsLock)=\"capsOn=$event\">\r\n <div *ngIf=\"showChangePassword == 'false'\">\r\n <div>\r\n In order to <strong>protect your account</strong>, your password must include at least:\r\n <ul class=\"p-pl-2 p-ml-2 p-mt-0\" style=\"line-height: 1.5; margin-left: 1rem !important; list-style-type: square;\">\r\n <li [ngClass]=\"!password.hasError('hasCapitalCase') && password.dirty ? 'success' : 'error'\">1 uppercase letter</li>\r\n <li [ngClass]=\"!password.hasError('hasSmallCase') && password.dirty ? 'success' : 'error'\">1 lowercase letter</li>\r\n <li [ngClass]=\"!password.hasError('hasNumber') && password.dirty ? 'success' : 'error'\">1 number</li>\r\n <li [ngClass]=\"!password.hasError('hasClaimantSpecialCharacters') && password.dirty ? 'success' : 'error'\" *ngIf=\"loginService.isClaimant() && !isSameSymbolPolicyForClaimantAndAgency\">1 of the following symbols <strong>!&#64;#$*%</strong></li>\r\n <li [ngClass]=\"!password.hasError('hasClaimantSpecialCharacters') && password.dirty ? 'success' : 'error'\" *ngIf=\"loginService.isClaimant() && isSameSymbolPolicyForClaimantAndAgency\">1 of the following symbols <strong>!&#64;#$*%</strong></li>\r\n <li [ngClass]=\"!password.hasError('minlength') && password.dirty ? 'success' : 'error'\" *ngIf=\"!isNewPasswordPolicyEnabled\">Minimum 8 characters</li>\r\n <li [ngClass]=\"!password.hasError('maxlength') && password.dirty ? 'success' : 'error'\" *ngIf=\"!isNewPasswordPolicyEnabled\">Maximum 25 characters.</li>\r\n <li [ngClass]=\"!password.hasError('minlength') && password.dirty ? 'success' : 'error'\" *ngIf=\"isNewPasswordPolicyEnabled\">Minimum 8 characters.</li>\r\n <li [ngClass]=\"!password.hasError('maxlength') && password.dirty ? 'success' : 'error'\" *ngIf=\"isNewPasswordPolicyEnabled\">Maximum 25 characters.</li>\r\n <li [ngClass]=\"!password.hasError('maxlength') && password.dirty ? 'success' : 'error'\" *ngIf=\"isNewPasswordPolicyEnabled\">Your password cannot contain your name and/or your user id.</li>\r\n <li [ngClass]=\"!password.hasError('hasCsrSpecialCharacters') && password.dirty ? 'success' : 'error'\" *ngIf=\"!loginService.isClaimant()\">At least 2 special characters from following <strong>_ &#64; * $ ! # .</strong></li>\r\n \r\n </ul>\r\n </div>\r\n <div style=\"display: grid;\">\r\n <span class=\"p-float-label\">\r\n <p-password [formControl]=\"oldPassword\" inputId=\"oldPassword\" [toggleMask]='true' [feedback]='false' appAutofocus></p-password> \r\n <label for=\"float-input\">Current Password</label>\r\n </span>\r\n <mat-error *ngIf=\"oldPassword.hasError('required')\">\r\n Current Password is required.\r\n </mat-error>\r\n <mat-error *ngIf=\"oldPassword.hasError('match')\">\r\n Current Password should not be same as New Password.\r\n </mat-error>\r\n </div>\r\n <br/>\r\n <div style=\"display: grid;\">\r\n <span class=\"p-float-label\">\r\n <p-password [formControl]=\"password\" inputId=\"password\" [toggleMask]='true' appendTo=\"body\">\r\n </p-password> \r\n <label for=\"float-input\">New Password</label>\r\n </span>\r\n <mat-error *ngIf=\"password.hasError('required')\">\r\n New Password is required.\r\n </mat-error>\r\n <mat-error *ngIf=\"password.hasError('notMatch')\">\r\n New Password and Confirm Password did not match.\r\n </mat-error>\r\n <mat-error *ngIf=\"password.hasError('match')\">\r\n Current Password should not be same as New Password.\r\n </mat-error>\r\n </div>\r\n \r\n <br/>\r\n <div style=\"display: grid;\">\r\n <span class=\"p-float-label\">\r\n <p-password [formControl]=\"confirmPassword\" inputId=\"confirmPassword\" [toggleMask]='true' appendTo=\"body\">\r\n </p-password> \r\n <label for=\"float-input\">Confirm Password</label>\r\n </span>\r\n <mat-error *ngIf=\"confirmPassword.hasError('required')\">\r\n Confirm Password is required.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('minlength') && isNewPasswordPolicyEnabled\">\r\n Confirm Password should have minimum <strong>8 characters</strong>.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('maxlength') && isNewPasswordPolicyEnabled\">\r\n Confirm Password should not have more than <strong>25 characters</strong>.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('minlength') && !isNewPasswordPolicyEnabled\">\r\n Confirm Password should have minimum <strong>8 characters</strong>.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('maxlength') && !isNewPasswordPolicyEnabled\">\r\n Confirm Password should not have more than <strong>25 characters</strong>.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('notMatch')\">\r\n New Password and Confirm Password did not match.\r\n </mat-error>\r\n <mat-error *ngIf=\"confirmPassword.hasError('match')\">\r\n Current Password should not be same as Confirm Password.\r\n </mat-error>\r\n </div>\r\n \r\n <label *ngIf=\"capsOn\" style=\"color:var(--ion-color-danger);\"><strong>Caps Lock is On</strong></label>\r\n \r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-button shape=\"round\" (click)=\"save()\" color=\"success\" type=\"submit\">\r\n <ion-icon name=\"save-outline\" slot=\"start\" ></ion-icon>\r\n Change Password\r\n </ion-button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showChangePassword == 'true'\" class=\"ion-text-center\">\r\n Your password will expire in <strong *ngIf=\"user\">{{user.daysTillPasswordExpire}}</strong> day(s). Consider changing it now.\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-button shape=\"round\" (click)=\"showChangePassword = 'false'\" color=\"success\" type=\"submit\">\r\n <ion-icon name=\"shuffle-outline\" slot=\"start\" ></ion-icon>\r\n Change Now\r\n </ion-button>\r\n <ion-button shape=\"round\" (click)=\"redirect()\" color=\"success\" type=\"submit\">\r\n <ion-icon name=\"analytics-outline\" slot=\"start\" ></ion-icon>\r\n Dashboard\r\n </ion-button>\r\n </div>\r\n </div>\r\n </app-card>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </form>\r\n </app-content>\r\n</ion-content>", styles: [":host ::ng-deep .p-inputwrapper,:host ::ng-deep .p-inputtext{width:100%}.error{color:var(--ion-color-danger)}.success{color:var(--ion-color-green)}\n"] }]
487
469
  }], () => [{ type: i1.UntypedFormBuilder }, { type: i2.LoginService }, { type: i3.UtilService }, { type: i4.NavController }, { type: i5.ActivatedRoute }, { type: i4.Platform }], null); })();
488
470
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ChangePasswordPage, { className: "ChangePasswordPage", filePath: "lib\\pages\\common\\change-password\\change-password.page.ts", lineNumber: 18 }); })();
489
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL3BhZ2VzL2NvbW1vbi9jaGFuZ2UtcGFzc3dvcmQvY2hhbmdlLXBhc3N3b3JkLnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL3BhZ2VzL2NvbW1vbi9jaGFuZ2UtcGFzc3dvcmQvY2hhbmdlLXBhc3N3b3JkLnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBd0MsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFHL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0lDT3hDLDhCQUFzSDtJQUFBLHFDQUFxQjtJQUFBLGlCQUFLOzs7SUFBNUksK0dBQW1GOzs7SUFDdkYsOEJBQXNIO0lBQUEsc0NBQXNCO0lBQUEsaUJBQUs7OztJQUE3SSwrR0FBbUY7OztJQUN2Riw4QkFBcUg7SUFBQSxzQ0FBc0I7SUFBQSxpQkFBSzs7O0lBQTVJLCtHQUFtRjs7O0lBQ3ZGLDhCQUFxSDtJQUFBLHNDQUFzQjtJQUFBLGlCQUFLOzs7SUFBNUksK0dBQW1GOzs7SUFJdkYsOEJBQTBJO0lBQUEsNkRBQTZDO0lBQUEsOEJBQVE7SUFBQSw2QkFBaUI7SUFBQSxpQkFBUyxFQUFBOzs7SUFBck4sNkhBQWtHOzs7SUFDdEcsOEJBQXlMO0lB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QTtZQWNSLGlCQUFXLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBOztZQXhHYixlQUEyQjtZQUEzQiw2Q0FBMkI7WUFNakIsZUFBbUM7WUFBbkMsd0RBQW1DO1lBcUZuQyxlQUFrQztZQUFsQyx1REFBa0M7OztpRkRqRnpDLGtCQUFrQjtjQUw5QixTQUFTOzJCQUNFLHFCQUFxQjs7a0ZBSXBCLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciwgUGxhdGZvcm0gfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBBcHBWYWxpZGF0b3JzIH0gZnJvbSAnLi4vLi4vLi4vdmFsaWRhdGlvbnMvQXBwVmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBBcHBSZWdleCB9IGZyb20gJy4uLy4uLy4uL3ZhbGlkYXRpb25zL0FwcFJlZ2V4JztcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSAnLi4vLi4vQmFzZVBhZ2UnO1xuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL1VzZXJNb2RlbCc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaGFuZ2UtcGFzc3dvcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbmdlLXBhc3N3b3JkLnBhZ2UuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYW5nZS1wYXNzd29yZC5wYWdlLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhbmdlUGFzc3dvcmRQYWdlIGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBjYXBzT24gPSBmYWxzZTtcblxuICBjb21tb25WYWxpZGF0b3JzIDogVmFsaWRhdG9yRm5bXSA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwVmFsaWRhdG9ycy5tYXRjaChBcHBSZWdleC5VUFBFUl9DQVNFX1JFR0VYLCB7aGFzQ2FwaXRhbENhc2UgOiB0cnVlfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcFZhbGlkYXRvcnMubWF0Y2goQXBwUmVnZXguTE9XRVJfQ0FTRV9SRUdFWCwge2hhc1NtYWxsQ2FzZSA6IHRydWV9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwVmFsaWRhdG9ycy5tYXRjaChBcHBSZWdleC5OVU1CRVJfUkVHRVgsIHtoYXNOdW1iZXIgOiB0cnVlfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG5cbiAgY3NyUGFzc3dvcmRWYWxpZGF0b3JzIDogVmFsaWRhdG9yRm5bXSA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBWYWxpZGF0b3JzLm1hdGNoKEFwcFJlZ2V4LkFHRU5DWV9TWU1CT0xfUkVHRVgsIHtoYXNDc3JTcGVjaWFsQ2hhcmFjdGVycyA6IHRydWV9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuXG4gIGNzckNvbmZpcm1QYXNzd29yZFZhbGlkYXRvcnMgOiBWYWxpZGF0b3JGbltdID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBWYWxpZGF0b3JzLm1hdGNoKEFwcFJlZ2V4LkFHRU5DWV9TWU1CT0xfUkVHRVgsIHtoYXNDc3JTcGVjaWFsQ2hhcmFjdGVycyA6IHRydWV9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwVmFsaWRhdG9ycy5lcXVhbCgncGFzc3dvcmQnLCB7bm90TWF0Y2ggOiB0cnVlfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGNsYWltYW50UGFzc3dvcmRWYWxpZGF0b3JzIDogVmFsaWRhdG9yRm5bXSA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwVmFsaWRhdG9ycy5tYXRjaCh0aGlzLmlzU2FtZVN5bWJvbFBvbGljeUZvckNsYWltYW50QW5kQWdlbmN5P0FwcFJlZ2V4LkFHRU5DWV9TWU1CT0xfUkVHRVg6QXBwUmVnZXguQ0xBSU1BTlRfU1lNQk9MX1JFR0VYLCB7aGFzQ2xhaW1hbnRTcGVjaWFsQ2hhcmFjdGVycyA6IHRydWV9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcblxuICBjbGFpbWFudENvbmZpcm1QYXNzd29yZFZhbGlkYXRvcnMgOiBWYWxpZGF0b3JGbltdID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcFZhbGlkYXRvcnMubWF0Y2godGhpcy5pc1NhbWVTeW1ib2xQb2xpY3lGb3JDbGFpbWFudEFuZEFnZW5jeT9BcHBSZWdleC5BR0VOQ1lfU1lNQk9MX1JFR0VYOkFwcFJlZ2V4LkNMQUlNQU5UX1NZTUJPTF9SRUdFWCwge2hhc0NsYWltYW50U3BlY2lhbENoYXJhY3RlcnMgOiB0cnVlfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwVmFsaWRhdG9ycy5lcXVhbCgncGFzc3dvcmQnLCB7bm90TWF0Y2ggOiB0cnVlfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcblxuICBwdWJsaWMgY2hhbmdlUHdkRm9ybSA6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgcHVibGljIGhpZGVQYXNzd29yZCA9IHRydWU7XG5cbiAgcHVibGljIGhpZGVDb25maXJtUGFzc3dvcmQgPSB0cnVlO1xuXG4gIHB1YmxpYyBoaWRlT2xkUGFzc3dvcmQgPSB0cnVlO1xuXG4gIHB1YmxpYyB1c2VyIDogVXNlck1vZGVsO1xuXG4gIHB1YmxpYyBzaG93Q2hhbmdlUGFzc3dvcmQgPSAnZmFsc2UnO1xuXG4gIHB1YmxpYyBpc0NTUiA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzQ2xhaW1hbnQgOmJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgdXNlTmV3UGFzc3dvcmRQb2xpY3kgOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGZiIDogVW50eXBlZEZvcm1CdWlsZGVyLCBwdWJsaWMgbG9naW5TZXJ2aWNlIDogTG9naW5TZXJ2aWNlLCBcbiAgICAgICAgICAgICAgcHVibGljIHV0aWwgOiBVdGlsU2VydmljZSwgcHJpdmF0ZSBuYXY6IE5hdkNvbnRyb2xsZXIsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSkge1xuICAgICAgICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgICAgICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplQ2hhbmdlUHdkRm9ybSgpO1xuICAgIHRoaXMudXNlciA9IHRoaXMubG9naW5TZXJ2aWNlLmdldFVzZXIoKTtcbiAgICB0aGlzLnNob3dDaGFuZ2VQYXNzd29yZCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ2NoYW5nZVB3ZCcpID8gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgnY2hhbmdlUHdkJykgOiAnZmFsc2UnO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUNoYW5nZVB3ZEZvcm0oKXtcbiAgICB0aGlzLmNoYW5nZVB3ZEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICdvbGRQYXNzd29yZCcgOiBbbnVsbCAsIFtdXSxcbiAgICAgICdwYXNzd29yZCc6IFtudWxsLCBbXV0sXG4gICAgICAnY29uZmlybVBhc3N3b3JkJzogW251bGwsIFtdXVxuICAgIH0pO1xuXG4gICAgdGhpcy5wYXNzd29yZC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgaWYodGhpcy5jb25maXJtUGFzc3dvcmQudmFsdWUpe1xuICAgICAgICB0aGlzLmNvbmZpcm1QYXNzd29yZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgICBpZih0aGlzLm9sZFBhc3N3b3JkLnZhbHVlKXtcbiAgICAgICAgdGhpcy5vbGRQYXNzd29yZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5zZXRQYXNzd29yZFZhbGlkYXRvcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGFzc3dvcmRWYWxpZGF0b3JzKCkge1xuICAgIGxldCB2YWxpZGF0b3JzMTogVmFsaWRhdG9yRm5bXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkXTtcbiAgICBsZXQgdmFsaWRhdG9yczI6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZF07XG4gICAgbGV0IHZhbGlkYXRvcnMzOiBWYWxpZGF0b3JGbltdID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFwcFZhbGlkYXRvcnMubm90RXF1YWwoJ3Bhc3N3b3JkJywge21hdGNoIDogdHJ1ZX0pXTtcblxuICAgIHRoaXMuY29tbW9uVmFsaWRhdG9ycy5mb3JFYWNoKHYgPT4gdmFsaWRhdG9yczEucHVzaCh2KSk7XG4gICAgdGhpcy5jb21tb25WYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMi5wdXNoKHYpKTtcblxuICAgIGlmICh0aGlzLmxvZ2luU2VydmljZS5pc0NzcigpKSB7XG4gICAgICB0aGlzLmNzclBhc3N3b3JkVmFsaWRhdG9ycy5mb3JFYWNoKHYgPT4gdmFsaWRhdG9yczEucHVzaCh2KSk7XG4gICAgICB0aGlzLmNzckNvbmZpcm1QYXNzd29yZFZhbGlkYXRvcnMuZm9yRWFjaCh2ID0+IHZhbGlkYXRvcnMyLnB1c2godikpO1xuICAgICAgaWYodGhpcy5pc05ld1Bhc3N3b3JkUG9saWN5RW5hYmxlZCl7XG4gICAgICAgIHRoaXMudXNlTmV3UGFzc3dvcmRQb2xpY3kgPSB0cnVlO1xuICAgICAgICB0aGlzLm5ld1Bhc3N3b3JkUG9saWN5VmFsaWRhdG9ycy5mb3JFYWNoKHYgPT4gdmFsaWRhdG9yczEucHVzaCh2KSk7XG4gICAgICAgIHRoaXMubmV3UGFzc3dvcmRQb2xpY3lWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMi5wdXNoKHYpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub2xkUGFzc3dvcmRQb2xpY3lWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMS5wdXNoKHYpKTtcbiAgICAgICAgdGhpcy5vbGRQYXNzd29yZFBvbGljeVZhbGlkYXRvcnMuZm9yRWFjaCh2ID0+IHZhbGlkYXRvcnMyLnB1c2godikpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5sb2dpblNlcnZpY2UuaXNDbGFpbWFudCgpKSB7XG4gICAgICB0aGlzLmNsYWltYW50UGFzc3dvcmRWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMS5wdXNoKHYpKTtcbiAgICAgIHRoaXMuY2xhaW1hbnRDb25maXJtUGFzc3dvcmRWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMi5wdXNoKHYpKTtcbiAgICAgIGlmKHRoaXMuaXNOZXdQYXNzd29yZFBvbGljeUVuYWJsZWRGb3JDbGFpbWFudCl7XG4gICAgICAgIHRoaXMudXNlTmV3UGFzc3dvcmRQb2xpY3kgPSB0cnVlO1xuICAgICAgICB0aGlzLm5ld1Bhc3N3b3JkUG9saWN5VmFsaWRhdG9ycy5mb3JFYWNoKHYgPT4gdmFsaWRhdG9yczEucHVzaCh2KSk7XG4gICAgICAgIHRoaXMubmV3UGFzc3dvcmRQb2xpY3lWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMi5wdXNoKHYpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub2xkUGFzc3dvcmRQb2xpY3lWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMS5wdXNoKHYpKTtcbiAgICAgICAgdGhpcy5vbGRQYXNzd29yZFBvbGljeVZhbGlkYXRvcnMuZm9yRWFjaCh2ID0+IHZhbGlkYXRvcnMyLnB1c2godikpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsYWltYW50UGFzc3dvcmRWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMS5wdXNoKHYpKTtcbiAgICAgIHRoaXMuY2xhaW1hbnRDb25maXJtUGFzc3dvcmRWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMi5wdXNoKHYpKTtcbiAgICAgIGlmKHRoaXMuaXNOZXdQYXNzd29yZFBvbGljeUVuYWJsZWRGb3JFbXBsb3llcil7XG4gICAgICAgIHRoaXMudXNlTmV3UGFzc3dvcmRQb2xpY3kgPSB0cnVlO1xuICAgICAgICB0aGlzLm5ld1Bhc3N3b3JkUG9saWN5VmFsaWRhdG9ycy5mb3JFYWNoKHYgPT4gdmFsaWRhdG9yczEucHVzaCh2KSk7XG4gICAgICAgIHRoaXMubmV3UGFzc3dvcmRQb2xpY3lWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMi5wdXNoKHYpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub2xkUGFzc3dvcmRQb2xpY3lWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMS5wdXNoKHYpKTtcbiAgICAgICAgdGhpcy5vbGRQYXNzd29yZFBvbGljeVZhbGlkYXRvcnMuZm9yRWFjaCh2ID0+IHZhbGlkYXRvcnMyLnB1c2godikpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLm9sZFBhc3N3b3JkLCB2YWxpZGF0b3JzMyk7XG4gICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5wYXNzd29yZCwgdmFsaWRhdG9yczEpO1xuICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuY29uZmlybVBhc3N3b3JkLCB2YWxpZGF0b3JzMik7XG4gIH1cblxuICBnZXQgb2xkUGFzc3dvcmQoKXtcbiAgICByZXR1cm4gdGhpcy5jaGFuZ2VQd2RGb3JtLmdldCgnb2xkUGFzc3dvcmQnKTtcbiAgfVxuXG4gIGdldCBwYXNzd29yZCgpe1xuICAgIHJldHVybiB0aGlzLmNoYW5nZVB3ZEZvcm0uZ2V0KCdwYXNzd29yZCcpO1xuICB9XG5cbiAgZ2V0IGNvbmZpcm1QYXNzd29yZCgpe1xuICAgIHJldHVybiB0aGlzLmNoYW5nZVB3ZEZvcm0uZ2V0KCdjb25maXJtUGFzc3dvcmQnKTtcbiAgfVxuXG4gIHNhdmUoKXtcbiAgICBpZih0aGlzLmNoYW5nZVB3ZEZvcm0uaW52YWxpZCl7XG4gICAgICByZXR1cm4gO1xuICAgIH1cbiAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpXG4gICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UudXBkYXRlUGFzc3dvcmQodGhpcy5vbGRQYXNzd29yZC52YWx1ZS50cmltKCksIHRoaXMucGFzc3dvcmQudmFsdWUudHJpbSgpLCB0aGlzLmNvbmZpcm1QYXNzd29yZC52YWx1ZS50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmF2aWdhdGVSb290KCdsb2dpbicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zdWNjZXNzKCdQYXNzd29yZCBDaGFuZ2VkIFN1Y2Nlc3NmdWxseS4gUGxlYXNlIGxvZ2luIGFnYWluLicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgIH0pXG4gIH1cblxuICByZWRpcmVjdCgpe1xuICAgIGxldCB1c2VyTW9kZWwgPSB0aGlzLmxvZ2luU2VydmljZS5nZXRVc2VyKCk7XG4gICAgaWYodGhpcy5sb2dpblNlcnZpY2UuaXNDbGFpbWFudCgpKXtcbiAgICAgIGNvbnN0IGlzQ2FwYWNpdG9yID0gdGhpcy5wbGF0Zm9ybS5pcygnY2FwYWNpdG9yJyk7XG4gICAgICBpZihpc0NhcGFjaXRvcil7XG4gICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChcIndlbGNvbWVcIik7XG4gICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XG4gICAgICB9IGVsc2V7XG4gICAgICAgIGlmKExpYkNvbnN0YW50cy5sZWdhY3lNZW51ID09ICd0cnVlJyl7XG4gICAgICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KFwid2VsY29tZVwiKTtcbiAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZigoTGliQ29uc3RhbnRzLnNzb0Nvb2tpZU5hbWUgKyBcIlwiKS5pbmNsdWRlcygnVUFUJykgfHwgKExpYkNvbnN0YW50cy5zc29Db29raWVOYW1lICsgXCJcIikuaW5jbHVkZXMoJ1BST0QnKSApe1xuICAgICAgICAgICAgd2luZG93Lm9wZW4oYCR7TGliQ29uc3RhbnRzLm1zd29ya3NVcmx9YCwgJ19zZWxmJyk7XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB3aW5kb3cub3BlbihgJHtMaWJDb25zdGFudHMuYmVuZWZpdHNVcmxFeHRlcm5hbH0vZmFjZXMvdmlydHVhbC9jb250ZXh0c3dpdGNoLnhodG1sP2E9JHt1c2VyTW9kZWwuYWNjZXNzX3Rva2VufSZyPSR7dXNlck1vZGVsLnJlZnJlc2hfdG9rZW59JnY9MjI5OWAsICdfc2VsZicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZih0aGlzLmxvZ2luU2VydmljZS5pc0VtcGxveWVyKCkgfHwgdGhpcy5sb2dpblNlcnZpY2UuaXNUcGEoKSl7XG4gICAgICB3aW5kb3cub3BlbihgJHtMaWJDb25zdGFudHMudGF4VXJsRXh0ZXJuYWx9L2ZhY2VzL3ZpcnR1YWwvY29udGV4dHN3aXRjaC54aHRtbD9hPSR7dXNlck1vZGVsLmFjY2Vzc190b2tlbn0mcj0ke3VzZXJNb2RlbC5yZWZyZXNoX3Rva2VufSZ2PTIyOTlgLCAnX3NlbGYnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lm9wZW4oYCR7TGliQ29uc3RhbnRzLmJlbmVmaXRzVXJsfS9mYWNlcy92aXJ0dWFsL2NvbnRleHRzd2l0Y2gueGh0bWw/YT0ke3VzZXJNb2RlbC5hY2Nlc3NfdG9rZW59JnI9JHt1c2VyTW9kZWwucmVmcmVzaF90b2tlbn0mdj0yMjk5YCwgJ19zZWxmJyk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxpb24taGVhZGVyPlxyXG4gIDxhcHAtaGVhZGVyIHRpdGxlPVwiQ2hhbmdlIFBhc3N3b3JkXCIgcGFnZUlkPVwiQ05HUFdELTAwMVwiPlxyXG4gIDwvYXBwLWhlYWRlcj5cclxuPC9pb24taGVhZGVyPlxyXG5cclxuPGlvbi1jb250ZW50PlxyXG4gIDxhcHAtY29udGVudD5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiY2hhbmdlUHdkRm9ybVwiICNjaGFuZ2VQd2RGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCI+XHJcbiAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICA8aW9uLXJvdyBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1hbGlnbi1zZWxmLWNlbnRlclwiIHNpemUtbWQ9XCI2XCIgc2l6ZS1sZz1cIjRcIiBzaXplLXhzPVwiMTJcIiBzaXplLXNtPVwiMTJcIiBzaXplLXhsPVwiNFwiPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGFwcC1jYXJkIHRpdGxlPVwiQ2hhbmdlIFBhc3N3b3JkXCIgKGNhcHNMb2NrKT1cImNhcHNPbj0kZXZlbnRcIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0NoYW5nZVBhc3N3b3JkID09ICdmYWxzZSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIDxzdHJvbmc+cHJvdGVjdCB5b3VyIGFjY291bnQ8L3N0cm9uZz4sIG1ha2Ugc3VyZSB5b3VyIHBhc3N3b3JkIGhhczpcclxuICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwicC1wbC0yIHAtbWwtMiBwLW10LTBcIiBzdHlsZT1cImxpbmUtaGVpZ2h0OiAxLjU7IG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IGxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCIhcGFzc3dvcmQuaGFzRXJyb3IoJ21pbmxlbmd0aCcpICYmIHBhc3N3b3JkLmRpcnR5ID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiICpuZ0lmPVwiIXVzZU5ld1Bhc3N3b3JkUG9saWN5XCI+TWluaW11bSA4IGNoYXJhY3RlcnMuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwiIXBhc3N3b3JkLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSAmJiBwYXNzd29yZC5kaXJ0eSA/ICdzdWNjZXNzJyA6ICdlcnJvcidcIiAqbmdJZj1cIiF1c2VOZXdQYXNzd29yZFBvbGljeVwiPk1heGltdW0gMTUgY2hhcmFjdGVycy48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCIhcGFzc3dvcmQuaGFzRXJyb3IoJ21pbmxlbmd0aCcpICYmIHBhc3N3b3JkLmRpcnR5ID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiICpuZ0lmPVwidXNlTmV3UGFzc3dvcmRQb2xpY3lcIj5NaW5pbXVtIDE0IGNoYXJhY3RlcnMuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwiIXBhc3N3b3JkLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSAmJiBwYXNzd29yZC5kaXJ0eSA/ICdzdWNjZXNzJyA6ICdlcnJvcidcIiAqbmdJZj1cInVzZU5ld1Bhc3N3b3JkUG9saWN5XCI+TWF4aW11bSAyMSBjaGFyYWN0ZXJzLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cIiFwYXNzd29yZC5oYXNFcnJvcignaGFzTnVtYmVyJykgJiYgcGFzc3dvcmQuZGlydHkgID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiPkF0IGxlYXN0IDEgbnVtYmVyPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwiIXBhc3N3b3JkLmhhc0Vycm9yKCdoYXNDYXBpdGFsQ2FzZScpICYmIHBhc3N3b3JkLmRpcnR5ICA/ICdzdWNjZXNzJyA6ICdlcnJvcidcIj5BdCBsZWFzdCAxIHVwcGVyY2FzZSBsZXR0ZXI8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCIhcGFzc3dvcmQuaGFzRXJyb3IoJ2hhc1NtYWxsQ2FzZScpICYmIHBhc3N3b3JkLmRpcnR5ICA/ICdzdWNjZXNzJyA6ICdlcnJvcidcIj5BdCBsZWFzdCAxIGxvd2VyY2FzZSBsZXR0ZXI8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCIhcGFzc3dvcmQuaGFzRXJyb3IoJ2hhc0NzclNwZWNpYWxDaGFyYWN0ZXJzJykgJiYgcGFzc3dvcmQuZGlydHkgID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiICpuZ0lmPVwiIWxvZ2luU2VydmljZS5pc0NsYWltYW50KClcIj5BdCBsZWFzdCAyIHNwZWNpYWwgY2hhcmFjdGVycyBmcm9tIGZvbGxvd2luZyA8c3Ryb25nPl8gJiM2NDsgKiAkICEgIyAuPC9zdHJvbmc+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwiIXBhc3N3b3JkLmhhc0Vycm9yKCdoYXNDbGFpbWFudFNwZWNpYWxDaGFyYWN0ZXJzJykgJiYgcGFzc3dvcmQuZGlydHkgID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiICpuZ0lmPVwibG9naW5TZXJ2aWNlLmlzQ2xhaW1hbnQoKSAmJiAhaXNTYW1lU3ltYm9sUG9saWN5Rm9yQ2xhaW1hbnRBbmRBZ2VuY3lcIj5BdCBsZWFzdCAxIHNwZWNpYWwgY2hhcmFjdGVycyBmcm9tIGZvbGxvd2luZyA8c3Ryb25nPl8gJiM2NDsgKiAkICEgIyAuPC9zdHJvbmc+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwiIXBhc3N3b3JkLmhhc0Vycm9yKCdoYXNDbGFpbWFudFNwZWNpYWxDaGFyYWN0ZXJzJykgJiYgcGFzc3dvcmQuZGlydHkgID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiICpuZ0lmPVwibG9naW5TZXJ2aWNlLmlzQ2xhaW1hbnQoKSAmJiBpc1NhbWVTeW1ib2xQb2xpY3lGb3JDbGFpbWFudEFuZEFnZW5jeVwiPkF0IGxlYXN0IDIgc3BlY2lhbCBjaGFyYWN0ZXJzIGZyb20gZm9sbG93aW5nIDxzdHJvbmc+XyAmIzY0OyAqICQgISAjIC48L3N0cm9uZz48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGdyaWQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXBhc3N3b3JkIFtmb3JtQ29udHJvbF09XCJvbGRQYXNzd29yZFwiIGlucHV0SWQ9XCJvbGRQYXNzd29yZFwiIFt0b2dnbGVNYXNrXT0ndHJ1ZScgW2ZlZWRiYWNrXT0nZmFsc2UnIGFwcEF1dG9mb2N1cz48L3AtcGFzc3dvcmQ+IFxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmbG9hdC1pbnB1dFwiPkN1cnJlbnQgUGFzc3dvcmQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJvbGRQYXNzd29yZC5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgUGFzc3dvcmQgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwib2xkUGFzc3dvcmQuaGFzRXJyb3IoJ21hdGNoJylcIj5cclxuICAgICAgICAgICAgICAgICAgICBDdXJyZW50IFBhc3N3b3JkIHNob3VsZCBub3QgYmUgc2FtZSBhcyBOZXcgUGFzc3dvcmQuXHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnIvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGdyaWQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXBhc3N3b3JkIFtmb3JtQ29udHJvbF09XCJwYXNzd29yZFwiIGlucHV0SWQ9XCJwYXNzd29yZFwiIFt0b2dnbGVNYXNrXT0ndHJ1ZScgYXBwZW5kVG89XCJib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLXBhc3N3b3JkPiBcclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmxvYXQtaW5wdXRcIj5OZXcgUGFzc3dvcmQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwYXNzd29yZC5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIE5ldyBQYXNzd29yZCBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwYXNzd29yZC5oYXNFcnJvcignbm90TWF0Y2gnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIE5ldyBQYXNzd29yZCBhbmQgQ29uZmlybSBQYXNzd29yZCBkaWQgbm90IG1hdGNoLlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInBhc3N3b3JkLmhhc0Vycm9yKCdtYXRjaCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBQYXNzd29yZCBzaG91bGQgbm90IGJlIHNhbWUgYXMgTmV3IFBhc3N3b3JkLlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgPGJyLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBncmlkO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1wYXNzd29yZCBbZm9ybUNvbnRyb2xdPVwiY29uZmlybVBhc3N3b3JkXCIgaW5wdXRJZD1cImNvbmZpcm1QYXNzd29yZFwiIFt0b2dnbGVNYXNrXT0ndHJ1ZScgYXBwZW5kVG89XCJib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLXBhc3N3b3JkPiBcclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmxvYXQtaW5wdXRcIj5Db25maXJtIFBhc3N3b3JkPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiY29uZmlybVBhc3N3b3JkLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQ29uZmlybSBQYXNzd29yZCBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb25maXJtUGFzc3dvcmQuaGFzRXJyb3IoJ21pbmxlbmd0aCcpICYmIHVzZU5ld1Bhc3N3b3JkUG9saWN5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQ29uZmlybSBQYXNzd29yZCBzaG91bGQgaGF2ZSBtaW5pbXVtIDxzdHJvbmc+MTQgY2hhcmFjdGVyczwvc3Ryb25nPi5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb25maXJtUGFzc3dvcmQuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmIHVzZU5ld1Bhc3N3b3JkUG9saWN5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQ29uZmlybSBQYXNzd29yZCBzaG91bGQgbm90IGhhdmUgbW9yZSB0aGFuIDxzdHJvbmc+MjEgY2hhcmFjdGVyczwvc3Ryb25nPi5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb25maXJtUGFzc3dvcmQuaGFzRXJyb3IoJ21pbmxlbmd0aCcpICYmICF1c2VOZXdQYXNzd29yZFBvbGljeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIENvbmZpcm0gUGFzc3dvcmQgc2hvdWxkIGhhdmUgbWluaW11bSA8c3Ryb25nPjggY2hhcmFjdGVyczwvc3Ryb25nPi5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb25maXJtUGFzc3dvcmQuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmICF1c2VOZXdQYXNzd29yZFBvbGljeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIENvbmZpcm0gUGFzc3dvcmQgc2hvdWxkIG5vdCBoYXZlIG1vcmUgdGhhbiA8c3Ryb25nPjE1IGNoYXJhY3RlcnM8L3N0cm9uZz4uXHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiY29uZmlybVBhc3N3b3JkLmhhc0Vycm9yKCdub3RNYXRjaCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgTmV3IFBhc3N3b3JkIGFuZCBDb25maXJtIFBhc3N3b3JkIGRpZCBub3QgbWF0Y2guXHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiY29uZmlybVBhc3N3b3JkLmhhc0Vycm9yKCdtYXRjaCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBQYXNzd29yZCBzaG91bGQgbm90IGJlIHNhbWUgYXMgQ29uZmlybSBQYXNzd29yZC5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiY2Fwc09uXCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcIj48c3Ryb25nPkNhcHMgTG9jayBpcyBPbjwvc3Ryb25nPjwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cInNhdmUoKVwiIGNvbG9yPVwic3VjY2Vzc1wiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInNhdmUtb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiID48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIENoYW5nZSBQYXNzd29yZFxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0NoYW5nZVBhc3N3b3JkID09ICd0cnVlJ1wiIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICBZb3VyIHBhc3N3b3JkIHdpbGwgZXhwaXJlIGluIDxzdHJvbmcgKm5nSWY9XCJ1c2VyXCI+e3t1c2VyLmRheXNUaWxsUGFzc3dvcmRFeHBpcmV9fTwvc3Ryb25nPiBkYXkocykuIENvbnNpZGVyIGNoYW5naW5nIGl0IG5vdy5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLXBhZGRpbmctdG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwic2hvd0NoYW5nZVBhc3N3b3JkID0gJ2ZhbHNlJ1wiIGNvbG9yPVwic3VjY2Vzc1wiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInNodWZmbGUtb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiID48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIENoYW5nZSBOb3dcclxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cInJlZGlyZWN0KClcIiBjb2xvcj1cInN1Y2Nlc3NcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhbmFseXRpY3Mtb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiID48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIERhc2hib2FyZFxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtY2FyZD5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9hcHAtY29udGVudD5cclxuPC9pb24tY29udGVudD4iXX0=
471
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL3BhZ2VzL2NvbW1vbi9jaGFuZ2UtcGFzc3dvcmQvY2hhbmdlLXBhc3N3b3JkLnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL3BhZ2VzL2NvbW1vbi9jaGFuZ2UtcGFzc3dvcmQvY2hhbmdlLXBhc3N3b3JkLnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBd0MsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFHL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0lDVXhDLDZCQUF5TDtJQUFBLDJDQUEyQjtJQUFBLDhCQUFRO0lBQUEsc0JBQVU7SUFBQSxpQkFBUyxFQUFBOzs7SUFBM08sa0lBQXVHOzs7SUFDM0csNkJBQXdMO0lBQUEsMkNBQTJCO0lBQUEsOEJBQVE7SUFBQSxzQkFBVTtJQUFBLGlCQUFTLEVBQUE7OztJQUExTyxrSUFBdUc7OztJQUMzRyw2QkFBNEg7SUFBQSxvQ0FBb0I7SUFBQSxpQkFBSzs7O0lBQWpKLCtHQUFtRjs7O0lBQ3ZGLDZCQUE0SDtJQUFBLHNDQUFzQjtJQUFBLGlCQUFLOzs7SUFBbkosK0dBQW1GOzs7SUFDdkYsNkJBQTJIO0lBQUEscUNBQXFCO0lBQUEsaUJBQUs7OztJQUFq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QyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFDO1lBQ3BFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsY0FBYyx3Q0FBd0MsU0FBUyxDQUFDLFlBQVksTUFBTSxTQUFTLENBQUMsYUFBYSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDMUo7YUFBTTtZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsV0FBVyx3Q0FBd0MsU0FBUyxDQUFDLFlBQVksTUFBTSxTQUFTLENBQUMsYUFBYSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDdko7SUFDSCxDQUFDO21GQWhLVSxrQkFBa0I7b0VBQWxCLGtCQUFrQjtZQ2pCL0Isa0NBQVk7WUFDVixnQ0FDYTtZQUNmLGlCQUFhO1lBRWIsbUNBQWEsa0JBQUEsaUJBQUEsZUFBQSxpQkFBQSxpQkFBQSxrQkFBQTtZQU9pQyxvSUFBMEI7WUFDMUQsdUVBc0ZNLHlEQUFBO1lBY1IsaUJBQVcsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUE7O1lBMUdiLGVBQTJCO1lBQTNCLDZDQUEyQjtZQU1qQixlQUFtQztZQUFuQyx3REFBbUM7WUF1Rm5DLGVBQWtDO1lBQWxDLHVEQUFrQzs7O2lGRG5GekMsa0JBQWtCO2NBTDlCLFNBQVM7MkJBQ0UscUJBQXFCOztrRkFJcEIsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyLCBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgQXBwVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uLy4uL3ZhbGlkYXRpb25zL0FwcFZhbGlkYXRvcnMnO1xyXG5pbXBvcnQgeyBBcHBSZWdleCB9IGZyb20gJy4uLy4uLy4uL3ZhbGlkYXRpb25zL0FwcFJlZ2V4JztcclxuaW1wb3J0IHsgQmFzZVBhZ2UgfSBmcm9tICcuLi8uLi9CYXNlUGFnZSc7XHJcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9Vc2VyTW9kZWwnO1xyXG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IExpYkNvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9MaWJDb25zdGFudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY2hhbmdlLXBhc3N3b3JkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbmdlLXBhc3N3b3JkLnBhZ2UuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hhbmdlLXBhc3N3b3JkLnBhZ2Uuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhbmdlUGFzc3dvcmRQYWdlIGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBwdWJsaWMgY2Fwc09uID0gZmFsc2U7XHJcblxyXG4gIGNvbW1vblZhbGlkYXRvcnMgOiBWYWxpZGF0b3JGbltdID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcFZhbGlkYXRvcnMubWF0Y2goQXBwUmVnZXguVVBQRVJfQ0FTRV9SRUdFWCwge2hhc0NhcGl0YWxDYXNlIDogdHJ1ZX0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcFZhbGlkYXRvcnMubWF0Y2goQXBwUmVnZXguTE9XRVJfQ0FTRV9SRUdFWCwge2hhc1NtYWxsQ2FzZSA6IHRydWV9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBWYWxpZGF0b3JzLm1hdGNoKEFwcFJlZ2V4Lk5VTUJFUl9SRUdFWCwge2hhc051bWJlciA6IHRydWV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG5cclxuICBjc3JQYXNzd29yZFZhbGlkYXRvcnMgOiBWYWxpZGF0b3JGbltdID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwVmFsaWRhdG9ycy5tYXRjaChBcHBSZWdleC5BR0VOQ1lfU1lNQk9MX1JFR0VYLCB7aGFzQ3NyU3BlY2lhbENoYXJhY3RlcnMgOiB0cnVlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG5cclxuICBjc3JDb25maXJtUGFzc3dvcmRWYWxpZGF0b3JzIDogVmFsaWRhdG9yRm5bXSA9IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBWYWxpZGF0b3JzLm1hdGNoKEFwcFJlZ2V4LkFHRU5DWV9TWU1CT0xfUkVHRVgsIHtoYXNDc3JTcGVjaWFsQ2hhcmFjdGVycyA6IHRydWV9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBWYWxpZGF0b3JzLmVxdWFsKCdwYXNzd29yZCcsIHtub3RNYXRjaCA6IHRydWV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgY2xhaW1hbnRQYXNzd29yZFZhbGlkYXRvcnMgOiBWYWxpZGF0b3JGbltdID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcFZhbGlkYXRvcnMubWF0Y2godGhpcy5pc1NhbWVTeW1ib2xQb2xpY3lGb3JDbGFpbWFudEFuZEFnZW5jeT9BcHBSZWdleC5BR0VOQ1lfU1lNQk9MX1JFR0VYOkFwcFJlZ2V4LkNMQUlNQU5UX1NZTUJPTF9SRUdFWCwge2hhc0NsYWltYW50U3BlY2lhbENoYXJhY3RlcnMgOiB0cnVlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcclxuXHJcbiAgY2xhaW1hbnRDb25maXJtUGFzc3dvcmRWYWxpZGF0b3JzIDogVmFsaWRhdG9yRm5bXSA9IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcFZhbGlkYXRvcnMubWF0Y2godGhpcy5pc1NhbWVTeW1ib2xQb2xpY3lGb3JDbGFpbWFudEFuZEFnZW5jeT9BcHBSZWdleC5BR0VOQ1lfU1lNQk9MX1JFR0VYOkFwcFJlZ2V4LkNMQUlNQU5UX1NZTUJPTF9SRUdFWCwge2hhc0NsYWltYW50U3BlY2lhbENoYXJhY3RlcnMgOiB0cnVlfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBWYWxpZGF0b3JzLmVxdWFsKCdwYXNzd29yZCcsIHtub3RNYXRjaCA6IHRydWV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VQd2RGb3JtIDogVW50eXBlZEZvcm1Hcm91cDtcclxuXHJcbiAgcHVibGljIGhpZGVQYXNzd29yZCA9IHRydWU7XHJcblxyXG4gIHB1YmxpYyBoaWRlQ29uZmlybVBhc3N3b3JkID0gdHJ1ZTtcclxuXHJcbiAgcHVibGljIGhpZGVPbGRQYXNzd29yZCA9IHRydWU7XHJcblxyXG4gIHB1YmxpYyB1c2VyIDogVXNlck1vZGVsO1xyXG5cclxuICBwdWJsaWMgc2hvd0NoYW5nZVBhc3N3b3JkID0gJ2ZhbHNlJztcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGZiIDogVW50eXBlZEZvcm1CdWlsZGVyLCBwdWJsaWMgbG9naW5TZXJ2aWNlIDogTG9naW5TZXJ2aWNlLCBcclxuICAgICAgICAgICAgICBwdWJsaWMgdXRpbCA6IFV0aWxTZXJ2aWNlLCBwcml2YXRlIG5hdjogTmF2Q29udHJvbGxlciwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0pIHtcclxuICAgICAgICAgICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgICAgICAgIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVDaGFuZ2VQd2RGb3JtKCk7XHJcbiAgICB0aGlzLnVzZXIgPSB0aGlzLmxvZ2luU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICB0aGlzLnNob3dDaGFuZ2VQYXNzd29yZCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ2NoYW5nZVB3ZCcpID8gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgnY2hhbmdlUHdkJykgOiAnZmFsc2UnO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZUNoYW5nZVB3ZEZvcm0oKXtcclxuICAgIHRoaXMuY2hhbmdlUHdkRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAnb2xkUGFzc3dvcmQnIDogW251bGwgLCBbXV0sXHJcbiAgICAgICdwYXNzd29yZCc6IFtudWxsLCBbXV0sXHJcbiAgICAgICdjb25maXJtUGFzc3dvcmQnOiBbbnVsbCwgW11dXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnBhc3N3b3JkLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiB7XHJcbiAgICAgIGlmKHRoaXMuY29uZmlybVBhc3N3b3JkLnZhbHVlKXtcclxuICAgICAgICB0aGlzLmNvbmZpcm1QYXNzd29yZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5vbGRQYXNzd29yZC52YWx1ZSl7XHJcbiAgICAgICAgdGhpcy5vbGRQYXNzd29yZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICB0aGlzLnNldFBhc3N3b3JkVmFsaWRhdG9ycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQYXNzd29yZFZhbGlkYXRvcnMoKSB7XHJcbiAgICBsZXQgdmFsaWRhdG9yczE6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGxldCB2YWxpZGF0b3JzMjogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgbGV0IHZhbGlkYXRvcnMzOiBWYWxpZGF0b3JGbltdID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFwcFZhbGlkYXRvcnMubm90RXF1YWwoJ3Bhc3N3b3JkJywge21hdGNoIDogdHJ1ZX0pXTtcclxuXHJcbiAgICB0aGlzLmNvbW1vblZhbGlkYXRvcnMuZm9yRWFjaCh2ID0+IHZhbGlkYXRvcnMxLnB1c2godikpO1xyXG4gICAgdGhpcy5jb21tb25WYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMi5wdXNoKHYpKTtcclxuXHJcbiAgICBpZih0aGlzLmlzTmV3UGFzc3dvcmRQb2xpY3lFbmFibGVkKXtcclxuICAgICAgdGhpcy5uZXdQYXNzd29yZFBvbGljeVZhbGlkYXRvcnMuZm9yRWFjaCh2ID0+IHZhbGlkYXRvcnMxLnB1c2godikpO1xyXG4gICAgICB0aGlzLm5ld1Bhc3N3b3JkUG9saWN5VmFsaWRhdG9ycy5mb3JFYWNoKHYgPT4gdmFsaWRhdG9yczIucHVzaCh2KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9sZFBhc3N3b3JkUG9saWN5VmFsaWRhdG9ycy5mb3JFYWNoKHYgPT4gdmFsaWRhdG9yczEucHVzaCh2KSk7XHJcbiAgICAgIHRoaXMub2xkUGFzc3dvcmRQb2xpY3lWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMi5wdXNoKHYpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5sb2dpblNlcnZpY2UuaXNDc3IoKSkge1xyXG4gICAgICB0aGlzLmNzclBhc3N3b3JkVmFsaWRhdG9ycy5mb3JFYWNoKHYgPT4gdmFsaWRhdG9yczEucHVzaCh2KSk7XHJcbiAgICAgIHRoaXMuY3NyQ29uZmlybVBhc3N3b3JkVmFsaWRhdG9ycy5mb3JFYWNoKHYgPT4gdmFsaWRhdG9yczIucHVzaCh2KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsYWltYW50UGFzc3dvcmRWYWxpZGF0b3JzLmZvckVhY2godiA9PiB2YWxpZGF0b3JzMS5wdXNoKHYpKTtcclxuICAgICAgdGhpcy5jbGFpbWFudENvbmZpcm1QYXNzd29yZFZhbGlkYXRvcnMuZm9yRWFjaCh2ID0+IHZhbGlkYXRvcnMyLnB1c2godikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5vbGRQYXNzd29yZCwgdmFsaWRhdG9yczMpO1xyXG4gICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5wYXNzd29yZCwgdmFsaWRhdG9yczEpO1xyXG4gICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5jb25maXJtUGFzc3dvcmQsIHZhbGlkYXRvcnMyKTtcclxuICB9XHJcblxyXG4gIGdldCBvbGRQYXNzd29yZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlUHdkRm9ybS5nZXQoJ29sZFBhc3N3b3JkJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFzc3dvcmQoKXtcclxuICAgIHJldHVybiB0aGlzLmNoYW5nZVB3ZEZvcm0uZ2V0KCdwYXNzd29yZCcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbmZpcm1QYXNzd29yZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlUHdkRm9ybS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpe1xyXG4gICAgaWYodGhpcy5jaGFuZ2VQd2RGb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm4gO1xyXG4gICAgfVxyXG4gICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKVxyXG4gICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICB0aGlzLmxvZ2luU2VydmljZS51cGRhdGVQYXNzd29yZCh0aGlzLm9sZFBhc3N3b3JkLnZhbHVlLCB0aGlzLnBhc3N3b3JkLnZhbHVlLCB0aGlzLmNvbmZpcm1QYXNzd29yZC52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmF2aWdhdGVSb290KCdsb2dpbicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbiggKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuc3VjY2VzcygnUGFzc3dvcmQgQ2hhbmdlZCBTdWNjZXNzZnVsbHkuIFBsZWFzZSBsb2dpbiBhZ2Fpbi4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVkaXJlY3QoKXtcclxuICAgIGxldCB1c2VyTW9kZWwgPSB0aGlzLmxvZ2luU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICBpZih0aGlzLmxvZ2luU2VydmljZS5pc0NsYWltYW50KCkpe1xyXG4gICAgICBjb25zdCBpc0NhcGFjaXRvciA9IHRoaXMucGxhdGZvcm0uaXMoJ2NhcGFjaXRvcicpO1xyXG4gICAgICBpZihpc0NhcGFjaXRvcil7XHJcbiAgICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KFwid2VsY29tZVwiKTtcclxuICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgaWYoTGliQ29uc3RhbnRzLmxlZ2FjeU1lbnUgPT0gJ3RydWUnKXtcclxuICAgICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChcIndlbGNvbWVcIik7XHJcbiAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYoKExpYkNvbnN0YW50cy5zc29Db29raWVOYW1lICsgXCJcIikuaW5jbHVkZXMoJ1VBVCcpIHx8IChMaWJDb25zdGFudHMuc3NvQ29va2llTmFtZSArIFwiXCIpLmluY2x1ZGVzKCdQUk9EJykgKXtcclxuICAgICAgICAgICAgd2luZG93Lm9wZW4oYCR7TGliQ29uc3RhbnRzLm1zd29ya3NVcmx9YCwgJ19zZWxmJyk7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgd2luZG93Lm9wZW4oYCR7TGliQ29uc3RhbnRzLmJlbmVmaXRzVXJsRXh0ZXJuYWx9L2ZhY2VzL3ZpcnR1YWwvY29udGV4dHN3aXRjaC54aHRtbD9hPSR7dXNlck1vZGVsLmFjY2Vzc190b2tlbn0mcj0ke3VzZXJNb2RlbC5yZWZyZXNoX3Rva2VufSZ2PTIyOTlgLCAnX3NlbGYnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZih0aGlzLmxvZ2luU2VydmljZS5pc0VtcGxveWVyKCkgfHwgdGhpcy5sb2dpblNlcnZpY2UuaXNUcGEoKSl7XHJcbiAgICAgIHdpbmRvdy5vcGVuKGAke0xpYkNvbnN0YW50cy50YXhVcmxFeHRlcm5hbH0vZmFjZXMvdmlydHVhbC9jb250ZXh0c3dpdGNoLnhodG1sP2E9JHt1c2VyTW9kZWwuYWNjZXNzX3Rva2VufSZyPSR7dXNlck1vZGVsLnJlZnJlc2hfdG9rZW59JnY9MjI5OWAsICdfc2VsZicpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd2luZG93Lm9wZW4oYCR7TGliQ29uc3RhbnRzLmJlbmVmaXRzVXJsfS9mYWNlcy92aXJ0dWFsL2NvbnRleHRzd2l0Y2gueGh0bWw/YT0ke3VzZXJNb2RlbC5hY2Nlc3NfdG9rZW59JnI9JHt1c2VyTW9kZWwucmVmcmVzaF90b2tlbn0mdj0yMjk5YCwgJ19zZWxmJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8aW9uLWhlYWRlcj5cclxuICA8YXBwLWhlYWRlciB0aXRsZT1cIkNoYW5nZSBQYXNzd29yZFwiIHBhZ2VJZD1cIkNOR1BXRC0wMDFcIj5cclxuICA8L2FwcC1oZWFkZXI+XHJcbjwvaW9uLWhlYWRlcj5cclxuXHJcbjxpb24tY29udGVudD5cclxuICA8YXBwLWNvbnRlbnQ+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNoYW5nZVB3ZEZvcm1cIiAjY2hhbmdlUHdkRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgPGlvbi1yb3cgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXJcIiBzaXplLW1kPVwiNlwiIHNpemUtbGc9XCI0XCIgc2l6ZS14cz1cIjEyXCIgc2l6ZS1zbT1cIjEyXCIgc2l6ZS14bD1cIjRcIj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxhcHAtY2FyZCB0aXRsZT1cIkNoYW5nZSBQYXNzd29yZFwiIChjYXBzTG9jayk9XCJjYXBzT249JGV2ZW50XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dDaGFuZ2VQYXNzd29yZCA9PSAnZmFsc2UnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byA8c3Ryb25nPnByb3RlY3QgeW91ciBhY2NvdW50PC9zdHJvbmc+LCB5b3VyIHBhc3N3b3JkIG11c3QgaW5jbHVkZSBhdCBsZWFzdDpcclxuICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwicC1wbC0yIHAtbWwtMiBwLW10LTBcIiBzdHlsZT1cImxpbmUtaGVpZ2h0OiAxLjU7IG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IGxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCIhcGFzc3dvcmQuaGFzRXJyb3IoJ2hhc0NhcGl0YWxDYXNlJykgJiYgcGFzc3dvcmQuZGlydHkgID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiPjEgdXBwZXJjYXNlIGxldHRlcjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cIiFwYXNzd29yZC5oYXNFcnJvcignaGFzU21hbGxDYXNlJykgJiYgcGFzc3dvcmQuZGlydHkgID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiPjEgbG93ZXJjYXNlIGxldHRlcjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cIiFwYXNzd29yZC5oYXNFcnJvcignaGFzTnVtYmVyJykgJiYgcGFzc3dvcmQuZGlydHkgID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiPjEgbnVtYmVyPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwiIXBhc3N3b3JkLmhhc0Vycm9yKCdoYXNDbGFpbWFudFNwZWNpYWxDaGFyYWN0ZXJzJykgJiYgcGFzc3dvcmQuZGlydHkgID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiICpuZ0lmPVwibG9naW5TZXJ2aWNlLmlzQ2xhaW1hbnQoKSAmJiAhaXNTYW1lU3ltYm9sUG9saWN5Rm9yQ2xhaW1hbnRBbmRBZ2VuY3lcIj4xIG9mIHRoZSBmb2xsb3dpbmcgc3ltYm9scyA8c3Ryb25nPiEmIzY0OyMkKiU8L3N0cm9uZz48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCIhcGFzc3dvcmQuaGFzRXJyb3IoJ2hhc0NsYWltYW50U3BlY2lhbENoYXJhY3RlcnMnKSAmJiBwYXNzd29yZC5kaXJ0eSAgPyAnc3VjY2VzcycgOiAnZXJyb3InXCIgKm5nSWY9XCJsb2dpblNlcnZpY2UuaXNDbGFpbWFudCgpICYmIGlzU2FtZVN5bWJvbFBvbGljeUZvckNsYWltYW50QW5kQWdlbmN5XCI+MSBvZiB0aGUgZm9sbG93aW5nIHN5bWJvbHMgPHN0cm9uZz4hJiM2NDsjJColPC9zdHJvbmc+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwiIXBhc3N3b3JkLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSAmJiBwYXNzd29yZC5kaXJ0eSA/ICdzdWNjZXNzJyA6ICdlcnJvcidcIiAqbmdJZj1cIiFpc05ld1Bhc3N3b3JkUG9saWN5RW5hYmxlZFwiPk1pbmltdW0gOCBjaGFyYWN0ZXJzPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwiIXBhc3N3b3JkLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSAmJiBwYXNzd29yZC5kaXJ0eSA/ICdzdWNjZXNzJyA6ICdlcnJvcidcIiAqbmdJZj1cIiFpc05ld1Bhc3N3b3JkUG9saWN5RW5hYmxlZFwiPk1heGltdW0gMjUgY2hhcmFjdGVycy48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCIhcGFzc3dvcmQuaGFzRXJyb3IoJ21pbmxlbmd0aCcpICYmIHBhc3N3b3JkLmRpcnR5ID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiICpuZ0lmPVwiaXNOZXdQYXNzd29yZFBvbGljeUVuYWJsZWRcIj5NaW5pbXVtIDggY2hhcmFjdGVycy48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCIhcGFzc3dvcmQuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmIHBhc3N3b3JkLmRpcnR5ID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiICpuZ0lmPVwiaXNOZXdQYXNzd29yZFBvbGljeUVuYWJsZWRcIj5NYXhpbXVtIDI1IGNoYXJhY3RlcnMuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwiIXBhc3N3b3JkLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSAmJiBwYXNzd29yZC5kaXJ0eSA/ICdzdWNjZXNzJyA6ICdlcnJvcidcIiAqbmdJZj1cImlzTmV3UGFzc3dvcmRQb2xpY3lFbmFibGVkXCI+WW91ciBwYXNzd29yZCBjYW5ub3QgY29udGFpbiB5b3VyIG5hbWUgYW5kL29yIHlvdXIgdXNlciBpZC48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCIhcGFzc3dvcmQuaGFzRXJyb3IoJ2hhc0NzclNwZWNpYWxDaGFyYWN0ZXJzJykgJiYgcGFzc3dvcmQuZGlydHkgID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiICpuZ0lmPVwiIWxvZ2luU2VydmljZS5pc0NsYWltYW50KClcIj5BdCBsZWFzdCAyIHNwZWNpYWwgY2hhcmFjdGVycyBmcm9tIGZvbGxvd2luZyA8c3Ryb25nPl8gJiM2NDsgKiAkICEgIyAuPC9zdHJvbmc+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBncmlkO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1wYXNzd29yZCBbZm9ybUNvbnRyb2xdPVwib2xkUGFzc3dvcmRcIiBpbnB1dElkPVwib2xkUGFzc3dvcmRcIiBbdG9nZ2xlTWFza109J3RydWUnIFtmZWVkYmFja109J2ZhbHNlJyBhcHBBdXRvZm9jdXM+PC9wLXBhc3N3b3JkPiBcclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmxvYXQtaW5wdXRcIj5DdXJyZW50IFBhc3N3b3JkPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwib2xkUGFzc3dvcmQuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICBDdXJyZW50IFBhc3N3b3JkIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm9sZFBhc3N3b3JkLmhhc0Vycm9yKCdtYXRjaCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBQYXNzd29yZCBzaG91bGQgbm90IGJlIHNhbWUgYXMgTmV3IFBhc3N3b3JkLlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJyLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBncmlkO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1wYXNzd29yZCBbZm9ybUNvbnRyb2xdPVwicGFzc3dvcmRcIiBpbnB1dElkPVwicGFzc3dvcmRcIiBbdG9nZ2xlTWFza109J3RydWUnIGFwcGVuZFRvPVwiYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1wYXNzd29yZD4gXHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZsb2F0LWlucHV0XCI+TmV3IFBhc3N3b3JkPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicGFzc3dvcmQuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICBOZXcgUGFzc3dvcmQgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicGFzc3dvcmQuaGFzRXJyb3IoJ25vdE1hdGNoJylcIj5cclxuICAgICAgICAgICAgICAgICAgICBOZXcgUGFzc3dvcmQgYW5kIENvbmZpcm0gUGFzc3dvcmQgZGlkIG5vdCBtYXRjaC5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwYXNzd29yZC5oYXNFcnJvcignbWF0Y2gnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgUGFzc3dvcmQgc2hvdWxkIG5vdCBiZSBzYW1lIGFzIE5ldyBQYXNzd29yZC5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgIDxici8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZ3JpZDtcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtcGFzc3dvcmQgW2Zvcm1Db250cm9sXT1cImNvbmZpcm1QYXNzd29yZFwiIGlucHV0SWQ9XCJjb25maXJtUGFzc3dvcmRcIiBbdG9nZ2xlTWFza109J3RydWUnIGFwcGVuZFRvPVwiYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1wYXNzd29yZD4gXHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZsb2F0LWlucHV0XCI+Q29uZmlybSBQYXNzd29yZDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbmZpcm1QYXNzd29yZC5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIENvbmZpcm0gUGFzc3dvcmQgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiY29uZmlybVBhc3N3b3JkLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSAmJiBpc05ld1Bhc3N3b3JkUG9saWN5RW5hYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIENvbmZpcm0gUGFzc3dvcmQgc2hvdWxkIGhhdmUgbWluaW11bSA8c3Ryb25nPjggY2hhcmFjdGVyczwvc3Ryb25nPi5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb25maXJtUGFzc3dvcmQuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmIGlzTmV3UGFzc3dvcmRQb2xpY3lFbmFibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQ29uZmlybSBQYXNzd29yZCBzaG91bGQgbm90IGhhdmUgbW9yZSB0aGFuIDxzdHJvbmc+MjUgY2hhcmFjdGVyczwvc3Ryb25nPi5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb25maXJtUGFzc3dvcmQuaGFzRXJyb3IoJ21pbmxlbmd0aCcpICYmICFpc05ld1Bhc3N3b3JkUG9saWN5RW5hYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIENvbmZpcm0gUGFzc3dvcmQgc2hvdWxkIGhhdmUgbWluaW11bSA8c3Ryb25nPjggY2hhcmFjdGVyczwvc3Ryb25nPi5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb25maXJtUGFzc3dvcmQuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmICFpc05ld1Bhc3N3b3JkUG9saWN5RW5hYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIENvbmZpcm0gUGFzc3dvcmQgc2hvdWxkIG5vdCBoYXZlIG1vcmUgdGhhbiA8c3Ryb25nPjI1IGNoYXJhY3RlcnM8L3N0cm9uZz4uXHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiY29uZmlybVBhc3N3b3JkLmhhc0Vycm9yKCdub3RNYXRjaCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgTmV3IFBhc3N3b3JkIGFuZCBDb25maXJtIFBhc3N3b3JkIGRpZCBub3QgbWF0Y2guXHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiY29uZmlybVBhc3N3b3JkLmhhc0Vycm9yKCdtYXRjaCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBQYXNzd29yZCBzaG91bGQgbm90IGJlIHNhbWUgYXMgQ29uZmlybSBQYXNzd29yZC5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiY2Fwc09uXCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcIj48c3Ryb25nPkNhcHMgTG9jayBpcyBPbjwvc3Ryb25nPjwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cInNhdmUoKVwiIGNvbG9yPVwic3VjY2Vzc1wiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInNhdmUtb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiID48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIENoYW5nZSBQYXNzd29yZFxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0NoYW5nZVBhc3N3b3JkID09ICd0cnVlJ1wiIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICBZb3VyIHBhc3N3b3JkIHdpbGwgZXhwaXJlIGluIDxzdHJvbmcgKm5nSWY9XCJ1c2VyXCI+e3t1c2VyLmRheXNUaWxsUGFzc3dvcmRFeHBpcmV9fTwvc3Ryb25nPiBkYXkocykuIENvbnNpZGVyIGNoYW5naW5nIGl0IG5vdy5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLXBhZGRpbmctdG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwic2hvd0NoYW5nZVBhc3N3b3JkID0gJ2ZhbHNlJ1wiIGNvbG9yPVwic3VjY2Vzc1wiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInNodWZmbGUtb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiID48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIENoYW5nZSBOb3dcclxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cInJlZGlyZWN0KClcIiBjb2xvcj1cInN1Y2Nlc3NcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhbmFseXRpY3Mtb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiID48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIERhc2hib2FyZFxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtY2FyZD5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9hcHAtY29udGVudD5cclxuPC9pb24tY29udGVudD4iXX0=