@reusa/ngx-reusa-app-lib 0.0.1374 → 0.0.1377

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 (545) hide show
  1. package/esm2022/lib/components/add-employer/add-employer.component.mjs +2392 -1322
  2. package/esm2022/lib/components/add-participant/add-participant.component.mjs +159 -105
  3. package/esm2022/lib/components/add-payment/add-payment.component.mjs +59 -53
  4. package/esm2022/lib/components/add-wage/add-wage.component.mjs +161 -0
  5. package/esm2022/lib/components/address/address.component.mjs +287 -152
  6. package/esm2022/lib/components/address-popup/address-popup.component.mjs +97 -0
  7. package/esm2022/lib/components/address-suggestion/address-suggestion.component.mjs +289 -0
  8. package/esm2022/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.mjs +245 -0
  9. package/esm2022/lib/components/associate-ssn/associate-ssn.component.mjs +203 -0
  10. package/esm2022/lib/components/bank-details/bank-details.component.mjs +79 -219
  11. package/esm2022/lib/components/claim-info/claim-info.component.mjs +408 -0
  12. package/esm2022/lib/components/contact-us/contact-us.component.mjs +17 -43
  13. package/esm2022/lib/components/correspondence-download/correspondence-download.component.mjs +3 -9
  14. package/esm2022/lib/components/dashboard-card/dashboard-card.component.mjs +32 -4
  15. package/esm2022/lib/components/dependent-grid/dependent-grid.component.mjs +30 -15
  16. package/esm2022/lib/components/disclosure/disclosure.component.mjs +1 -1
  17. package/esm2022/lib/components/dropdown/dropdown.component.mjs +4 -4
  18. package/esm2022/lib/components/dropdown/dropdown.interface.mjs +1 -1
  19. package/esm2022/lib/components/dua-request-page/dua-request-page.component.mjs +596 -0
  20. package/esm2022/lib/components/dua-request-popup/dua-request-popup.component.mjs +356 -0
  21. package/esm2022/lib/components/email-update/email-update.component.mjs +63 -140
  22. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +422 -574
  23. package/esm2022/lib/components/employer-info/employer-info.component.mjs +319 -0
  24. package/esm2022/lib/components/employer-pay/employer-pay.component.mjs +238 -0
  25. package/esm2022/lib/components/employer-pay-grid/employer-pay-grid.component.mjs +302 -0
  26. package/esm2022/lib/components/error/error.component.mjs +22 -5
  27. package/esm2022/lib/components/farm-usage/farm-usage.component.mjs +172 -0
  28. package/esm2022/lib/components/fav-menu/fav-menu.component.mjs +1 -1
  29. package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +178 -49
  30. package/esm2022/lib/components/footer/footer.component.mjs +112 -101
  31. package/esm2022/lib/components/gross-earnings/gross-earnings.component.mjs +201 -0
  32. package/esm2022/lib/components/header/header.component.mjs +440 -174
  33. package/esm2022/lib/components/history-page/history-page.component.mjs +571 -0
  34. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +25 -36
  35. package/esm2022/lib/components/idme/idme.component.mjs +84 -0
  36. package/esm2022/lib/components/info/info.component.mjs +4 -12
  37. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +16 -22
  38. package/esm2022/lib/components/job-title/job-title.component.mjs +92 -97
  39. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +143 -513
  40. package/esm2022/lib/components/link/link.component.mjs +1 -1
  41. package/esm2022/lib/components/menu/menu.component.mjs +68 -100
  42. package/esm2022/lib/components/mfa/mfa.component.mjs +158 -288
  43. package/esm2022/lib/components/mfa-popup/mfa-popup.component.mjs +11 -18
  44. package/esm2022/lib/components/money-expect/money-expect.component.mjs +158 -54
  45. package/esm2022/lib/components/offline-add-employer/offline-add-employer.component.mjs +3661 -0
  46. package/esm2022/lib/components/offline-bank-details/offline-bank-details.component.mjs +258 -0
  47. package/esm2022/lib/components/offline-employer-grid/offline-employer-grid.component.mjs +853 -0
  48. package/esm2022/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.mjs +251 -0
  49. package/esm2022/lib/components/profile/profile.component.mjs +749 -353
  50. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +108 -38
  51. package/esm2022/lib/components/proof-of-anything/proof-of-anything.component.mjs +261 -0
  52. package/esm2022/lib/components/proof-of-document-upload/proof-of-document-upload.component.mjs +560 -0
  53. package/esm2022/lib/components/questionnaire/AppValidators.mjs +296 -47
  54. package/esm2022/lib/components/questionnaire/account-success/account-success.page.mjs +110 -65
  55. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +377 -173
  56. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +76 -95
  57. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +877 -1153
  58. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +208 -699
  59. package/esm2022/lib/components/questionnaire/form-builder/form-builder.page.mjs +28 -22
  60. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +128 -41
  61. package/esm2022/lib/components/questionnaire/question-control.service.mjs +2 -1
  62. package/esm2022/lib/components/questionnaire/question.service.mjs +5 -7
  63. package/esm2022/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +15 -29
  64. package/esm2022/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +497 -237
  65. package/esm2022/lib/components/scrollable-text/scrollable-text.component.mjs +25 -0
  66. package/esm2022/lib/components/search-employer/search-employer.component.mjs +155 -30
  67. package/esm2022/lib/components/select/select.component.mjs +5 -10
  68. package/esm2022/lib/components/sign-ssn/sign-ssn.component.mjs +3 -3
  69. package/esm2022/lib/components/sms/sms.component.mjs +336 -0
  70. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +52 -72
  71. package/esm2022/lib/components/user-login/user-login.component.mjs +139 -360
  72. package/esm2022/lib/components/wage-calculator/wage-calculator.component.mjs +527 -0
  73. package/esm2022/lib/components/wage-grid/wage-grid.component.mjs +274 -0
  74. package/esm2022/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.mjs +147 -0
  75. package/esm2022/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.mjs +167 -0
  76. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +655 -387
  77. package/esm2022/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +125 -61
  78. package/esm2022/lib/components/weekly-certification/weekly-certification.component.mjs +828 -0
  79. package/esm2022/lib/components/weekly-confirmation/confirmation.component.mjs +129 -0
  80. package/esm2022/lib/components/weekly-interim-confirmation/interim-confirmation.component.mjs +136 -0
  81. package/esm2022/lib/components/weekly-summary-v2/summary.component-v2.mjs +72 -0
  82. package/esm2022/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.mjs +50 -0
  83. package/esm2022/lib/components/weekly-work-search-counter/work-search-counter.component.mjs +92 -0
  84. package/esm2022/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.mjs +1190 -0
  85. package/esm2022/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.mjs +690 -0
  86. package/esm2022/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.mjs +524 -0
  87. package/esm2022/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.mjs +394 -0
  88. package/esm2022/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.mjs +640 -0
  89. package/esm2022/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.mjs +33 -0
  90. package/esm2022/lib/enums/AddressValidationResponseEnum.mjs +9 -0
  91. package/esm2022/lib/enums/AddressValidationSourceFunctionEnum.mjs +5 -0
  92. package/esm2022/lib/guards/auth.guard.mjs +50 -2
  93. package/esm2022/lib/guards/no-login/no-login.guard.mjs +1 -1
  94. package/esm2022/lib/interceptors/error-interceptor/http-error-interceptor.mjs +51 -3
  95. package/esm2022/lib/interceptors/header-interceptor/http-header.interceptor.mjs +1 -1
  96. package/esm2022/lib/models/ActiveClaimModel.mjs +3 -0
  97. package/esm2022/lib/models/CountyModel.mjs +3 -0
  98. package/esm2022/lib/models/DuaAppDataModel.mjs +3 -0
  99. package/esm2022/lib/models/DuaRequestModel.mjs +3 -0
  100. package/esm2022/lib/models/DuaRetroWeeksComponentModel.mjs +6 -0
  101. package/esm2022/lib/models/EmployerDetailSearchResult.mjs +1 -1
  102. package/esm2022/lib/models/EmployerInfoComponentModel.mjs +4 -0
  103. package/esm2022/lib/models/EmployerPayInfoModel.mjs +6 -0
  104. package/esm2022/lib/models/FarmUsageComponentModel.mjs +2 -0
  105. package/esm2022/lib/models/GrossEarningsModel.mjs +3 -0
  106. package/esm2022/lib/models/HelpConstants.mjs +5 -0
  107. package/esm2022/lib/models/LexisNexisOtpDetailsResponseModel.mjs +3 -0
  108. package/esm2022/lib/models/LibConstants.mjs +45 -6
  109. package/esm2022/lib/models/OtpAuthModel.mjs +1 -1
  110. package/esm2022/lib/models/PaymentComponentModel.mjs +1 -1
  111. package/esm2022/lib/models/ReasonSeparationRequestModel.mjs +3 -0
  112. package/esm2022/lib/models/RetroWeeksModel.mjs +3 -0
  113. package/esm2022/lib/models/SecurityQuestionAnswerModel.mjs +3 -0
  114. package/esm2022/lib/models/SendOtpRequestModel.mjs +3 -0
  115. package/esm2022/lib/models/UserModel.mjs +1 -1
  116. package/esm2022/lib/models/VerifyOtpRequestModel.mjs +3 -0
  117. package/esm2022/lib/models/WageCalculatorModel.mjs +3 -0
  118. package/esm2022/lib/models/WageInfoModel.mjs +4 -0
  119. package/esm2022/lib/models/addressValidation/AddressRecommendationModel.mjs +3 -0
  120. package/esm2022/lib/models/addressValidation/AddressValidationRequestComponentModel.mjs +3 -0
  121. package/esm2022/lib/models/addressValidation/AddressValidationResponseComponentModel.mjs +3 -0
  122. package/esm2022/lib/models/addressValidation/AddressValidationReturnComponentModel.mjs +3 -0
  123. package/esm2022/lib/models/combo-model.mjs +343 -0
  124. package/esm2022/lib/models/dashboard-model.mjs +1 -1
  125. package/esm2022/lib/models/dependent.model.mjs +1 -1
  126. package/esm2022/lib/models/fileupload/DocUploadModel.mjs +7 -0
  127. package/esm2022/lib/models/fileupload/EmployerDataModel.mjs +3 -0
  128. package/esm2022/lib/models/fileupload/FileObject.mjs +3 -0
  129. package/esm2022/lib/models/fileupload/FileObjectArray.mjs +7 -0
  130. package/esm2022/lib/models/questionnaire/AppealParticipantModel.mjs +8 -0
  131. package/esm2022/lib/models/questionnaire/ClaimAppEmpResponseModel.mjs +1 -1
  132. package/esm2022/lib/models/questionnaire/ClaimAppEmployerDetailsModel.mjs +2 -1
  133. package/esm2022/lib/models/questionnaire/ClaimOnlyEmployerDataModel.mjs +1 -1
  134. package/esm2022/lib/models/questionnaire/ComboModel.mjs +96 -653
  135. package/esm2022/lib/models/questionnaire/ElementsModel.mjs +1 -1
  136. package/esm2022/lib/models/questionnaire/LegalDiscaimarModel.mjs +1 -1
  137. package/esm2022/lib/models/questionnaire/QuestionnaireSaveModel.mjs +1 -1
  138. package/esm2022/lib/models/questionnaire/ScrollableTextModel.mjs +3 -0
  139. package/esm2022/lib/models/questionnaire/StatusModel.mjs +1 -1
  140. package/esm2022/lib/models/questionnaire/WbaHelperTextModel.mjs +3 -0
  141. package/esm2022/lib/models/weekly-cert/WorkSearchWaiverModel.mjs +3 -0
  142. package/esm2022/lib/models/weekly-cert/address-detail-model.mjs +2 -0
  143. package/esm2022/lib/models/weekly-cert/admin-leave-details-model.mjs +7 -0
  144. package/esm2022/lib/models/weekly-cert/employer-info-v2-model.mjs +7 -0
  145. package/esm2022/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.mjs +6 -0
  146. package/esm2022/lib/models/weekly-cert/weekly-certification-v2-model.mjs +34 -0
  147. package/esm2022/lib/models/weekly-cert/work-search-record-v2-model.mjs +15 -0
  148. package/esm2022/lib/models/weekly-cert/work-search-v2-model.mjs +11 -0
  149. package/esm2022/lib/ngx-reusa-app-lib.module.mjs +135 -23
  150. package/esm2022/lib/pages/BasePage.mjs +4 -23
  151. package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +22 -18
  152. package/esm2022/lib/pages/common/change-password/change-password.page.mjs +142 -124
  153. package/esm2022/lib/pages/common/landing/landing.component.mjs +7 -8
  154. package/esm2022/lib/pages/common/landing2/landing2.component.mjs +4 -4
  155. package/esm2022/lib/pages/common/login/login.component.mjs +7 -13
  156. package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +14 -14
  157. package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +5 -5
  158. package/esm2022/lib/pages/popovers/language/language.page.mjs +1 -2
  159. package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +4 -4
  160. package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +7 -2
  161. package/esm2022/lib/pipes/format-worksearch/format-worksearch.pipe.mjs +101 -0
  162. package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +2 -2
  163. package/esm2022/lib/services/address-validation-service/address-validation.service.mjs +151 -0
  164. package/esm2022/lib/services/appeal/appeal.service.mjs +37 -0
  165. package/esm2022/lib/services/base-service.mjs +4 -1
  166. package/esm2022/lib/services/birt-service/birt.service.mjs +57 -0
  167. package/esm2022/lib/services/chatbot/chatbot.service.mjs +1 -2
  168. package/esm2022/lib/services/claimant-service/claimant.service.mjs +7 -13
  169. package/esm2022/lib/services/claims/claims.service.mjs +105 -14
  170. package/esm2022/lib/services/employer/employer-service.mjs +35 -0
  171. package/esm2022/lib/services/event-service/event-service.mjs +44 -0
  172. package/esm2022/lib/services/help/help.service.mjs +1 -1
  173. package/esm2022/lib/services/logger/logger.service.mjs +1 -1
  174. package/esm2022/lib/services/login/login.service.mjs +29 -14
  175. package/esm2022/lib/services/offline-claims/offline-claims.service.mjs +327 -0
  176. package/esm2022/lib/services/questionnaire/questionnaire.service.mjs +4 -1
  177. package/esm2022/lib/services/questionnaire/validation.service.mjs +4 -1
  178. package/esm2022/lib/services/security-service/security.service.mjs +23 -6
  179. package/esm2022/lib/services/util/util.service.mjs +61 -5
  180. package/esm2022/lib/services/weekly-cert/review.service.mjs +101 -0
  181. package/esm2022/lib/services/weekly-cert/weekly-cert-v2.service.mjs +186 -14
  182. package/esm2022/lib/services/weekly-cert/weekly-cert.service.mjs +37 -0
  183. package/esm2022/lib/services/weekly-cert/work-search.service.mjs +58 -0
  184. package/esm2022/lib/validations/AppRegex.mjs +1 -3
  185. package/esm2022/lib/validations/AppValidators.mjs +78 -62
  186. package/esm2022/public-api.mjs +47 -5
  187. package/fesm2022/reusa-ngx-reusa-app-lib.mjs +41277 -23401
  188. package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
  189. package/lib/components/add-employer/add-employer.component.d.ts +137 -53
  190. package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
  191. package/lib/components/add-participant/add-participant.component.d.ts +11 -5
  192. package/lib/components/add-participant/add-participant.component.d.ts.map +1 -1
  193. package/lib/components/add-payment/add-payment.component.d.ts +9 -3
  194. package/lib/components/add-payment/add-payment.component.d.ts.map +1 -1
  195. package/lib/components/add-wage/add-wage.component.d.ts +30 -0
  196. package/lib/components/add-wage/add-wage.component.d.ts.map +1 -0
  197. package/lib/components/address/address.component.d.ts +42 -15
  198. package/lib/components/address/address.component.d.ts.map +1 -1
  199. package/lib/components/address-popup/address-popup.component.d.ts +16 -0
  200. package/lib/components/address-popup/address-popup.component.d.ts.map +1 -0
  201. package/lib/components/address-suggestion/address-suggestion.component.d.ts +43 -0
  202. package/lib/components/address-suggestion/address-suggestion.component.d.ts.map +1 -0
  203. package/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.d.ts +37 -0
  204. package/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.d.ts.map +1 -0
  205. package/lib/components/associate-ssn/associate-ssn.component.d.ts +33 -0
  206. package/lib/components/associate-ssn/associate-ssn.component.d.ts.map +1 -0
  207. package/lib/components/bank-details/bank-details.component.d.ts +1 -23
  208. package/lib/components/bank-details/bank-details.component.d.ts.map +1 -1
  209. package/lib/components/claim-info/claim-info.component.d.ts +49 -0
  210. package/lib/components/claim-info/claim-info.component.d.ts.map +1 -0
  211. package/lib/components/contact-us/contact-us.component.d.ts +1 -4
  212. package/lib/components/contact-us/contact-us.component.d.ts.map +1 -1
  213. package/lib/components/correspondence-download/correspondence-download.component.d.ts.map +1 -1
  214. package/lib/components/dashboard-card/dashboard-card.component.d.ts.map +1 -1
  215. package/lib/components/dua-request-page/dua-request-page.component.d.ts +74 -0
  216. package/lib/components/dua-request-page/dua-request-page.component.d.ts.map +1 -0
  217. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts +61 -0
  218. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts.map +1 -0
  219. package/lib/components/email-update/email-update.component.d.ts +1 -12
  220. package/lib/components/email-update/email-update.component.d.ts.map +1 -1
  221. package/lib/components/employer-grid/employer-grid.component.d.ts +25 -15
  222. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
  223. package/lib/components/employer-info/employer-info.component.d.ts +50 -0
  224. package/lib/components/employer-info/employer-info.component.d.ts.map +1 -0
  225. package/lib/components/employer-pay/employer-pay.component.d.ts +51 -0
  226. package/lib/components/employer-pay/employer-pay.component.d.ts.map +1 -0
  227. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts +43 -0
  228. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts.map +1 -0
  229. package/lib/components/error/error.component.d.ts +3 -2
  230. package/lib/components/error/error.component.d.ts.map +1 -1
  231. package/lib/components/farm-usage/farm-usage.component.d.ts +33 -0
  232. package/lib/components/farm-usage/farm-usage.component.d.ts.map +1 -0
  233. package/lib/components/file-uploader/file-uploader.component.d.ts +5 -1
  234. package/lib/components/file-uploader/file-uploader.component.d.ts.map +1 -1
  235. package/lib/components/footer/footer.component.d.ts.map +1 -1
  236. package/lib/components/gross-earnings/gross-earnings.component.d.ts +42 -0
  237. package/lib/components/gross-earnings/gross-earnings.component.d.ts.map +1 -0
  238. package/lib/components/header/header.component.d.ts +17 -5
  239. package/lib/components/header/header.component.d.ts.map +1 -1
  240. package/lib/components/history-page/history-page.component.d.ts +80 -0
  241. package/lib/components/history-page/history-page.component.d.ts.map +1 -0
  242. package/lib/components/idme/idme.component.d.ts +19 -0
  243. package/lib/components/idme/idme.component.d.ts.map +1 -0
  244. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts +1 -3
  245. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts.map +1 -1
  246. package/lib/components/job-title/job-title.component.d.ts +22 -23
  247. package/lib/components/job-title/job-title.component.d.ts.map +1 -1
  248. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +5 -6
  249. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -1
  250. package/lib/components/menu/menu.component.d.ts +3 -12
  251. package/lib/components/menu/menu.component.d.ts.map +1 -1
  252. package/lib/components/mfa/mfa.component.d.ts +7 -19
  253. package/lib/components/mfa/mfa.component.d.ts.map +1 -1
  254. package/lib/components/mfa-popup/mfa-popup.component.d.ts +6 -8
  255. package/lib/components/mfa-popup/mfa-popup.component.d.ts.map +1 -1
  256. package/lib/components/money-expect/money-expect.component.d.ts +15 -4
  257. package/lib/components/money-expect/money-expect.component.d.ts.map +1 -1
  258. package/lib/components/offline-add-employer/offline-add-employer.component.d.ts +311 -0
  259. package/lib/components/offline-add-employer/offline-add-employer.component.d.ts.map +1 -0
  260. package/lib/components/offline-bank-details/offline-bank-details.component.d.ts +33 -0
  261. package/lib/components/offline-bank-details/offline-bank-details.component.d.ts.map +1 -0
  262. package/lib/components/offline-employer-grid/offline-employer-grid.component.d.ts +97 -0
  263. package/lib/components/offline-employer-grid/offline-employer-grid.component.d.ts.map +1 -0
  264. package/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.d.ts +33 -0
  265. package/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.d.ts.map +1 -0
  266. package/lib/components/profile/profile.component.d.ts +82 -49
  267. package/lib/components/profile/profile.component.d.ts.map +1 -1
  268. package/lib/components/profile-redirect/profile-redirect.component.d.ts +9 -2
  269. package/lib/components/profile-redirect/profile-redirect.component.d.ts.map +1 -1
  270. package/lib/components/proof-of-anything/proof-of-anything.component.d.ts +54 -0
  271. package/lib/components/proof-of-anything/proof-of-anything.component.d.ts.map +1 -0
  272. package/lib/components/proof-of-document-upload/proof-of-document-upload.component.d.ts +74 -0
  273. package/lib/components/proof-of-document-upload/proof-of-document-upload.component.d.ts.map +1 -0
  274. package/lib/components/questionnaire/AppValidators.d.ts +1 -0
  275. package/lib/components/questionnaire/AppValidators.d.ts.map +1 -1
  276. package/lib/components/questionnaire/account-success/account-success.page.d.ts +13 -10
  277. package/lib/components/questionnaire/account-success/account-success.page.d.ts.map +1 -1
  278. package/lib/components/questionnaire/common-success/common-success.page.d.ts +7 -1
  279. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
  280. package/lib/components/questionnaire/dynamic-form-panel.component.d.ts +3 -1
  281. package/lib/components/questionnaire/dynamic-form-panel.component.d.ts.map +1 -1
  282. package/lib/components/questionnaire/dynamic-form-question.component.d.ts +33 -35
  283. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  284. package/lib/components/questionnaire/dynamic-form.component.d.ts +10 -34
  285. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
  286. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts +0 -7
  287. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts.map +1 -1
  288. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts +7 -1
  289. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts.map +1 -1
  290. package/lib/components/questionnaire/question-control.service.d.ts.map +1 -1
  291. package/lib/components/questionnaire/question.service.d.ts +0 -1
  292. package/lib/components/questionnaire/question.service.d.ts.map +1 -1
  293. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts +1 -7
  294. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts.map +1 -1
  295. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts +11 -3
  296. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts.map +1 -1
  297. package/lib/components/scrollable-text/scrollable-text.component.d.ts +11 -0
  298. package/lib/components/scrollable-text/scrollable-text.component.d.ts.map +1 -0
  299. package/lib/components/search-employer/search-employer.component.d.ts +5 -4
  300. package/lib/components/search-employer/search-employer.component.d.ts.map +1 -1
  301. package/lib/components/sms/sms.component.d.ts +63 -0
  302. package/lib/components/sms/sms.component.d.ts.map +1 -0
  303. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts +1 -5
  304. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts.map +1 -1
  305. package/lib/components/user-login/user-login.component.d.ts +5 -38
  306. package/lib/components/user-login/user-login.component.d.ts.map +1 -1
  307. package/lib/components/wage-calculator/wage-calculator.component.d.ts +44 -0
  308. package/lib/components/wage-calculator/wage-calculator.component.d.ts.map +1 -0
  309. package/lib/components/wage-grid/wage-grid.component.d.ts +43 -0
  310. package/lib/components/wage-grid/wage-grid.component.d.ts.map +1 -0
  311. package/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.d.ts +28 -0
  312. package/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.d.ts.map +1 -0
  313. package/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.d.ts +28 -0
  314. package/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.d.ts.map +1 -0
  315. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +27 -10
  316. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
  317. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts +9 -3
  318. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts.map +1 -1
  319. package/lib/components/weekly-certification/weekly-certification.component.d.ts +101 -0
  320. package/lib/components/weekly-certification/weekly-certification.component.d.ts.map +1 -0
  321. package/lib/components/weekly-confirmation/confirmation.component.d.ts +21 -0
  322. package/lib/components/weekly-confirmation/confirmation.component.d.ts.map +1 -0
  323. package/lib/components/weekly-interim-confirmation/interim-confirmation.component.d.ts +34 -0
  324. package/lib/components/weekly-interim-confirmation/interim-confirmation.component.d.ts.map +1 -0
  325. package/lib/components/weekly-summary-v2/summary.component-v2.d.ts +17 -0
  326. package/lib/components/weekly-summary-v2/summary.component-v2.d.ts.map +1 -0
  327. package/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.d.ts +10 -0
  328. package/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.d.ts.map +1 -0
  329. package/lib/components/weekly-work-search-counter/work-search-counter.component.d.ts +17 -0
  330. package/lib/components/weekly-work-search-counter/work-search-counter.component.d.ts.map +1 -0
  331. package/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.d.ts +105 -0
  332. package/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.d.ts.map +1 -0
  333. package/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.d.ts +71 -0
  334. package/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.d.ts.map +1 -0
  335. package/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.d.ts +59 -0
  336. package/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.d.ts.map +1 -0
  337. package/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.d.ts +47 -0
  338. package/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.d.ts.map +1 -0
  339. package/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.d.ts +78 -0
  340. package/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.d.ts.map +1 -0
  341. package/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.d.ts +8 -0
  342. package/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.d.ts.map +1 -0
  343. package/lib/enums/AddressValidationResponseEnum.d.ts +8 -0
  344. package/lib/enums/AddressValidationResponseEnum.d.ts.map +1 -0
  345. package/lib/enums/AddressValidationSourceFunctionEnum.d.ts +4 -0
  346. package/lib/enums/AddressValidationSourceFunctionEnum.d.ts.map +1 -0
  347. package/lib/guards/auth.guard.d.ts.map +1 -1
  348. package/lib/interceptors/error-interceptor/http-error-interceptor.d.ts.map +1 -1
  349. package/lib/models/ActiveClaimModel.d.ts +8 -0
  350. package/lib/models/ActiveClaimModel.d.ts.map +1 -0
  351. package/lib/models/CountyModel.d.ts +8 -0
  352. package/lib/models/CountyModel.d.ts.map +1 -0
  353. package/lib/models/DuaAppDataModel.d.ts +5 -0
  354. package/lib/models/DuaAppDataModel.d.ts.map +1 -0
  355. package/lib/models/DuaRequestModel.d.ts +10 -0
  356. package/lib/models/DuaRequestModel.d.ts.map +1 -0
  357. package/lib/models/DuaRetroWeeksComponentModel.d.ts +5 -0
  358. package/lib/models/DuaRetroWeeksComponentModel.d.ts.map +1 -0
  359. package/lib/models/EmployerDetailSearchResult.d.ts +4 -1
  360. package/lib/models/EmployerDetailSearchResult.d.ts.map +1 -1
  361. package/lib/models/EmployerInfoComponentModel.d.ts +9 -0
  362. package/lib/models/EmployerInfoComponentModel.d.ts.map +1 -0
  363. package/lib/models/EmployerPayInfoModel.d.ts +20 -0
  364. package/lib/models/EmployerPayInfoModel.d.ts.map +1 -0
  365. package/lib/models/FarmUsageComponentModel.d.ts +10 -0
  366. package/lib/models/FarmUsageComponentModel.d.ts.map +1 -0
  367. package/lib/models/GrossEarningsModel.d.ts +6 -0
  368. package/lib/models/GrossEarningsModel.d.ts.map +1 -0
  369. package/lib/models/HelpConstants.d.ts +5 -0
  370. package/lib/models/HelpConstants.d.ts.map +1 -0
  371. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts +7 -0
  372. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts.map +1 -0
  373. package/lib/models/LibConstants.d.ts +40 -1
  374. package/lib/models/LibConstants.d.ts.map +1 -1
  375. package/lib/models/OtpAuthModel.d.ts +0 -1
  376. package/lib/models/OtpAuthModel.d.ts.map +1 -1
  377. package/lib/models/PaymentComponentModel.d.ts +1 -1
  378. package/lib/models/PaymentComponentModel.d.ts.map +1 -1
  379. package/lib/models/ReasonSeparationRequestModel.d.ts +7 -0
  380. package/lib/models/ReasonSeparationRequestModel.d.ts.map +1 -0
  381. package/lib/models/RetroWeeksModel.d.ts +11 -0
  382. package/lib/models/RetroWeeksModel.d.ts.map +1 -0
  383. package/lib/models/SecurityQuestionAnswerModel.d.ts +7 -0
  384. package/lib/models/SecurityQuestionAnswerModel.d.ts.map +1 -0
  385. package/lib/models/SendOtpRequestModel.d.ts +12 -0
  386. package/lib/models/SendOtpRequestModel.d.ts.map +1 -0
  387. package/lib/models/UserModel.d.ts +0 -1
  388. package/lib/models/UserModel.d.ts.map +1 -1
  389. package/lib/models/VerifyOtpRequestModel.d.ts +8 -0
  390. package/lib/models/VerifyOtpRequestModel.d.ts.map +1 -0
  391. package/lib/models/WageCalculatorModel.d.ts +15 -0
  392. package/lib/models/WageCalculatorModel.d.ts.map +1 -0
  393. package/lib/models/WageInfoModel.d.ts +9 -0
  394. package/lib/models/WageInfoModel.d.ts.map +1 -0
  395. package/lib/models/addressValidation/AddressRecommendationModel.d.ts +12 -0
  396. package/lib/models/addressValidation/AddressRecommendationModel.d.ts.map +1 -0
  397. package/lib/models/addressValidation/AddressValidationRequestComponentModel.d.ts +11 -0
  398. package/lib/models/addressValidation/AddressValidationRequestComponentModel.d.ts.map +1 -0
  399. package/lib/models/addressValidation/AddressValidationResponseComponentModel.d.ts +6 -0
  400. package/lib/models/addressValidation/AddressValidationResponseComponentModel.d.ts.map +1 -0
  401. package/lib/models/addressValidation/AddressValidationReturnComponentModel.d.ts +16 -0
  402. package/lib/models/addressValidation/AddressValidationReturnComponentModel.d.ts.map +1 -0
  403. package/lib/models/combo-model.d.ts +42 -0
  404. package/lib/models/combo-model.d.ts.map +1 -0
  405. package/lib/models/dashboard-model.d.ts +22 -0
  406. package/lib/models/dashboard-model.d.ts.map +1 -1
  407. package/lib/models/fileupload/DocUploadModel.d.ts +22 -0
  408. package/lib/models/fileupload/DocUploadModel.d.ts.map +1 -0
  409. package/lib/models/fileupload/EmployerDataModel.d.ts +6 -0
  410. package/lib/models/fileupload/EmployerDataModel.d.ts.map +1 -0
  411. package/lib/models/fileupload/FileObject.d.ts +8 -0
  412. package/lib/models/fileupload/FileObject.d.ts.map +1 -0
  413. package/lib/models/fileupload/FileObjectArray.d.ts +8 -0
  414. package/lib/models/fileupload/FileObjectArray.d.ts.map +1 -0
  415. package/lib/models/questionnaire/AppealParticipantModel.d.ts +17 -0
  416. package/lib/models/questionnaire/AppealParticipantModel.d.ts.map +1 -0
  417. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts +3 -0
  418. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts.map +1 -1
  419. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts +15 -4
  420. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts.map +1 -1
  421. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts +4 -1
  422. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts.map +1 -1
  423. package/lib/models/questionnaire/ComboModel.d.ts +14 -82
  424. package/lib/models/questionnaire/ComboModel.d.ts.map +1 -1
  425. package/lib/models/questionnaire/ElementsModel.d.ts +0 -1
  426. package/lib/models/questionnaire/ElementsModel.d.ts.map +1 -1
  427. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts +2 -0
  428. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts.map +1 -1
  429. package/lib/models/questionnaire/QuestionnaireSaveModel.d.ts +0 -1
  430. package/lib/models/questionnaire/QuestionnaireSaveModel.d.ts.map +1 -1
  431. package/lib/models/questionnaire/ScrollableTextModel.d.ts +4 -0
  432. package/lib/models/questionnaire/ScrollableTextModel.d.ts.map +1 -0
  433. package/lib/models/questionnaire/StatusModel.d.ts +1 -0
  434. package/lib/models/questionnaire/StatusModel.d.ts.map +1 -1
  435. package/lib/models/questionnaire/WbaHelperTextModel.d.ts +4 -0
  436. package/lib/models/questionnaire/WbaHelperTextModel.d.ts.map +1 -0
  437. package/lib/models/weekly-cert/WorkSearchWaiverModel.d.ts +9 -0
  438. package/lib/models/weekly-cert/WorkSearchWaiverModel.d.ts.map +1 -0
  439. package/lib/models/weekly-cert/address-detail-model.d.ts +14 -0
  440. package/lib/models/weekly-cert/address-detail-model.d.ts.map +1 -0
  441. package/lib/models/weekly-cert/admin-leave-details-model.d.ts +15 -0
  442. package/lib/models/weekly-cert/admin-leave-details-model.d.ts.map +1 -0
  443. package/lib/models/weekly-cert/employer-info-v2-model.d.ts +27 -0
  444. package/lib/models/weekly-cert/employer-info-v2-model.d.ts.map +1 -0
  445. package/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.d.ts +57 -0
  446. package/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.d.ts.map +1 -0
  447. package/lib/models/weekly-cert/weekly-certification-v2-model.d.ts +59 -0
  448. package/lib/models/weekly-cert/weekly-certification-v2-model.d.ts.map +1 -0
  449. package/lib/models/weekly-cert/work-search-record-v2-model.d.ts +66 -0
  450. package/lib/models/weekly-cert/work-search-record-v2-model.d.ts.map +1 -0
  451. package/lib/models/weekly-cert/work-search-v2-model.d.ts +18 -0
  452. package/lib/models/weekly-cert/work-search-v2-model.d.ts.map +1 -0
  453. package/lib/ngx-reusa-app-lib.module.d.ts +124 -86
  454. package/lib/ngx-reusa-app-lib.module.d.ts.map +1 -1
  455. package/lib/pages/BasePage.d.ts +3 -6
  456. package/lib/pages/BasePage.d.ts.map +1 -1
  457. package/lib/pages/common/change-password/change-password.page.d.ts +3 -0
  458. package/lib/pages/common/change-password/change-password.page.d.ts.map +1 -1
  459. package/lib/pages/common/login/login.component.d.ts.map +1 -1
  460. package/lib/pages/popovers/language/language.page.d.ts.map +1 -1
  461. package/lib/pages/popovers/my-profile/my-profile.page.d.ts.map +1 -1
  462. package/lib/pipes/format-worksearch/format-worksearch.pipe.d.ts +14 -0
  463. package/lib/pipes/format-worksearch/format-worksearch.pipe.d.ts.map +1 -0
  464. package/lib/services/address-validation-service/address-validation.service.d.ts +44 -0
  465. package/lib/services/address-validation-service/address-validation.service.d.ts.map +1 -0
  466. package/lib/services/appeal/appeal.service.d.ts +16 -0
  467. package/lib/services/appeal/appeal.service.d.ts.map +1 -0
  468. package/lib/services/base-service.d.ts +12 -0
  469. package/lib/services/base-service.d.ts.map +1 -1
  470. package/lib/services/birt-service/birt.service.d.ts +17 -0
  471. package/lib/services/birt-service/birt.service.d.ts.map +1 -0
  472. package/lib/services/claimant-service/claimant.service.d.ts +5 -6
  473. package/lib/services/claimant-service/claimant.service.d.ts.map +1 -1
  474. package/lib/services/claims/claims.service.d.ts +39 -5
  475. package/lib/services/claims/claims.service.d.ts.map +1 -1
  476. package/lib/services/employer/employer-service.d.ts +16 -0
  477. package/lib/services/employer/employer-service.d.ts.map +1 -0
  478. package/lib/services/event-service/event-service.d.ts +20 -0
  479. package/lib/services/event-service/event-service.d.ts.map +1 -0
  480. package/lib/services/login/login.service.d.ts +5 -3
  481. package/lib/services/login/login.service.d.ts.map +1 -1
  482. package/lib/services/offline-claims/offline-claims.service.d.ts +64 -0
  483. package/lib/services/offline-claims/offline-claims.service.d.ts.map +1 -0
  484. package/lib/services/questionnaire/questionnaire.service.d.ts +1 -0
  485. package/lib/services/questionnaire/questionnaire.service.d.ts.map +1 -1
  486. package/lib/services/questionnaire/validation.service.d.ts +3 -0
  487. package/lib/services/questionnaire/validation.service.d.ts.map +1 -1
  488. package/lib/services/security-service/security.service.d.ts +12 -4
  489. package/lib/services/security-service/security.service.d.ts.map +1 -1
  490. package/lib/services/util/util.service.d.ts +6 -0
  491. package/lib/services/util/util.service.d.ts.map +1 -1
  492. package/lib/services/weekly-cert/review.service.d.ts +23 -0
  493. package/lib/services/weekly-cert/review.service.d.ts.map +1 -0
  494. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts +47 -5
  495. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts.map +1 -1
  496. package/lib/services/weekly-cert/weekly-cert.service.d.ts +17 -0
  497. package/lib/services/weekly-cert/weekly-cert.service.d.ts.map +1 -0
  498. package/lib/services/weekly-cert/work-search.service.d.ts +26 -0
  499. package/lib/services/weekly-cert/work-search.service.d.ts.map +1 -0
  500. package/lib/validations/AppRegex.d.ts +0 -2
  501. package/lib/validations/AppRegex.d.ts.map +1 -1
  502. package/lib/validations/AppValidators.d.ts +20 -24
  503. package/lib/validations/AppValidators.d.ts.map +1 -1
  504. package/package.json +2 -2
  505. package/public-api.d.ts +46 -4
  506. package/public-api.d.ts.map +1 -1
  507. package/esm2022/lib/components/lexis-nexis/lexis-nexis.component.mjs +0 -402
  508. package/esm2022/lib/components/mfa2/mfa2.component.mjs +0 -285
  509. package/esm2022/lib/components/security-question/security-question.component.mjs +0 -199
  510. package/esm2022/lib/models/LexisNexisAccountCreationModel.mjs +0 -2
  511. package/esm2022/lib/models/LexisNexisAuthSelectionRequestModel.mjs +0 -2
  512. package/esm2022/lib/models/LexisNexisAuthSelectionResponseModel.mjs +0 -2
  513. package/esm2022/lib/models/LexisNexisEnabledResponseModel.mjs +0 -2
  514. package/esm2022/lib/models/LexisNexisResponseModel.mjs +0 -3
  515. package/esm2022/lib/models/PartialEmploymentModel.mjs +0 -3
  516. package/esm2022/lib/models/SecurityQuestionModel.mjs +0 -3
  517. package/esm2022/lib/services/claimant-service/claimant-usps-redirect.service.mjs +0 -36
  518. package/esm2022/lib/services/lexis-nexis/lexis.nexis.service.mjs +0 -60
  519. package/esm2022/lib/services/ovp/ovp.service.mjs +0 -43
  520. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts +0 -59
  521. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts.map +0 -1
  522. package/lib/components/mfa2/mfa2.component.d.ts +0 -48
  523. package/lib/components/mfa2/mfa2.component.d.ts.map +0 -1
  524. package/lib/components/security-question/security-question.component.d.ts +0 -37
  525. package/lib/components/security-question/security-question.component.d.ts.map +0 -1
  526. package/lib/models/LexisNexisAccountCreationModel.d.ts +0 -15
  527. package/lib/models/LexisNexisAccountCreationModel.d.ts.map +0 -1
  528. package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts +0 -16
  529. package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts.map +0 -1
  530. package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts +0 -39
  531. package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts.map +0 -1
  532. package/lib/models/LexisNexisEnabledResponseModel.d.ts +0 -5
  533. package/lib/models/LexisNexisEnabledResponseModel.d.ts.map +0 -1
  534. package/lib/models/LexisNexisResponseModel.d.ts +0 -7
  535. package/lib/models/LexisNexisResponseModel.d.ts.map +0 -1
  536. package/lib/models/PartialEmploymentModel.d.ts +0 -6
  537. package/lib/models/PartialEmploymentModel.d.ts.map +0 -1
  538. package/lib/models/SecurityQuestionModel.d.ts +0 -7
  539. package/lib/models/SecurityQuestionModel.d.ts.map +0 -1
  540. package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts +0 -16
  541. package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts.map +0 -1
  542. package/lib/services/lexis-nexis/lexis.nexis.service.d.ts +0 -26
  543. package/lib/services/lexis-nexis/lexis.nexis.service.d.ts.map +0 -1
  544. package/lib/services/ovp/ovp.service.d.ts +0 -17
  545. package/lib/services/ovp/ovp.service.d.ts.map +0 -1
@@ -0,0 +1,527 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { WageCalculatorModel } from '../../models/WageCalculatorModel';
4
+ import { ComboOption } from '../../models/questionnaire/ComboModel';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "../../services/util/util.service";
8
+ import * as i3 from "@ionic/angular";
9
+ import * as i4 from "@angular/common";
10
+ import * as i5 from "primeng/api";
11
+ import * as i6 from "primeng/dialog";
12
+ import * as i7 from "primeng/selectbutton";
13
+ import * as i8 from "primeng/inputnumber";
14
+ import * as i9 from "@fortawesome/angular-fontawesome";
15
+ import * as i10 from "../error/error.component";
16
+ import * as i11 from "../overlay-info/overlay-info.component";
17
+ import * as i12 from "@ngx-translate/core";
18
+ import * as i13 from "../../pipes/trust-html/trust-html.pipe";
19
+ function WageCalculatorComponent_section_10_ion_col_16_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelementStart(0, "ion-col", 1)(1, "ion-row")(2, "label");
21
+ i0.ɵɵtext(3);
22
+ i0.ɵɵelementEnd()();
23
+ i0.ɵɵelementStart(4, "ion-row");
24
+ i0.ɵɵelement(5, "p-inputNumber", 34);
25
+ i0.ɵɵelementEnd();
26
+ i0.ɵɵelementStart(6, "ion-row")(7, "ion-label");
27
+ i0.ɵɵtext(8);
28
+ i0.ɵɵelementEnd()()();
29
+ } if (rf & 2) {
30
+ const day_r5 = ctx.$implicit;
31
+ let tmp_1_0;
32
+ let tmp_7_0;
33
+ i0.ɵɵproperty("formGroup", day_r5);
34
+ i0.ɵɵadvance(3);
35
+ i0.ɵɵtextInterpolate((tmp_1_0 = day_r5.get("label")) == null ? null : tmp_1_0.value);
36
+ i0.ɵɵadvance(2);
37
+ i0.ɵɵproperty("formControl", day_r5.get("hours"))("min", 0)("max", 24)("minFractionDigits", 1)("maxFractionDigits", 2);
38
+ i0.ɵɵadvance(3);
39
+ i0.ɵɵtextInterpolate((tmp_7_0 = day_r5.get("date")) == null ? null : tmp_7_0.value);
40
+ } }
41
+ const _c0 = "total hours must not be greater than 168 for the week";
42
+ const _c1 = () => ({ totalHoursZero: "total hours must be greater than 0", hoursPerWeekExceeded: _c0 });
43
+ const _c2 = () => ["fas", "xmark"];
44
+ const _c3 = () => ({ required: "required" });
45
+ const _c4 = () => ["fas", "equals"];
46
+ const _c5 = () => ["fal", "plus"];
47
+ function WageCalculatorComponent_section_10_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelementStart(0, "section")(1, "ion-grid")(2, "ion-row")(3, "ion-col", 10)(4, "label");
49
+ i0.ɵɵtext(5);
50
+ i0.ɵɵpipe(6, "translate");
51
+ i0.ɵɵelementEnd()();
52
+ i0.ɵɵelement(7, "ion-col", 11);
53
+ i0.ɵɵelementStart(8, "ion-col", 12)(9, "label")(10, "b");
54
+ i0.ɵɵtext(11);
55
+ i0.ɵɵpipe(12, "translate");
56
+ i0.ɵɵelementEnd()()()();
57
+ i0.ɵɵelementStart(13, "ion-row")(14, "ion-col", 13)(15, "ion-row");
58
+ i0.ɵɵtemplate(16, WageCalculatorComponent_section_10_ion_col_16_Template, 9, 8, "ion-col", 14);
59
+ i0.ɵɵelementEnd();
60
+ i0.ɵɵelementStart(17, "ion-row")(18, "ion-col", 15);
61
+ i0.ɵɵelement(19, "app-error", 7);
62
+ i0.ɵɵelementEnd()()();
63
+ i0.ɵɵelementStart(20, "ion-col", 16)(21, "b");
64
+ i0.ɵɵtext(22, "= ");
65
+ i0.ɵɵelementEnd()();
66
+ i0.ɵɵelementStart(23, "ion-col", 17)(24, "b");
67
+ i0.ɵɵtext(25);
68
+ i0.ɵɵelementEnd()()()();
69
+ i0.ɵɵelementStart(26, "ion-grid")(27, "ion-row");
70
+ i0.ɵɵelement(28, "ion-col", 18);
71
+ i0.ɵɵelementStart(29, "ion-col", 19)(30, "ion-row")(31, "label");
72
+ i0.ɵɵtext(32);
73
+ i0.ɵɵpipe(33, "translate");
74
+ i0.ɵɵelementEnd()()();
75
+ i0.ɵɵelement(34, "ion-col", 20)(35, "ion-col", 21);
76
+ i0.ɵɵelementStart(36, "ion-col", 19)(37, "ion-row")(38, "label");
77
+ i0.ɵɵtext(39);
78
+ i0.ɵɵpipe(40, "translate");
79
+ i0.ɵɵelementEnd()()()();
80
+ i0.ɵɵelementStart(41, "ion-row");
81
+ i0.ɵɵelement(42, "ion-col", 22);
82
+ i0.ɵɵelementStart(43, "ion-col", 23);
83
+ i0.ɵɵelement(44, "fa-icon", 24);
84
+ i0.ɵɵelementEnd();
85
+ i0.ɵɵelementStart(45, "ion-col", 19);
86
+ i0.ɵɵelement(46, "p-inputNumber", 25);
87
+ i0.ɵɵelementStart(47, "label", 26);
88
+ i0.ɵɵtext(48);
89
+ i0.ɵɵpipe(49, "translate");
90
+ i0.ɵɵelementEnd();
91
+ i0.ɵɵelement(50, "app-error", 7);
92
+ i0.ɵɵelementEnd();
93
+ i0.ɵɵelement(51, "ion-col", 27);
94
+ i0.ɵɵelementStart(52, "ion-col", 23);
95
+ i0.ɵɵelement(53, "fa-icon", 24);
96
+ i0.ɵɵelementEnd();
97
+ i0.ɵɵelementStart(54, "ion-col", 28)(55, "label");
98
+ i0.ɵɵtext(56);
99
+ i0.ɵɵpipe(57, "currency");
100
+ i0.ɵɵelementEnd()()()();
101
+ i0.ɵɵelementStart(58, "ion-grid")(59, "ion-row");
102
+ i0.ɵɵelement(60, "ion-col", 18);
103
+ i0.ɵɵelementStart(61, "ion-col", 19)(62, "ion-row")(63, "ion-label");
104
+ i0.ɵɵtext(64);
105
+ i0.ɵɵpipe(65, "translate");
106
+ i0.ɵɵelementEnd()()();
107
+ i0.ɵɵelement(66, "ion-col", 20)(67, "ion-col", 27);
108
+ i0.ɵɵelementStart(68, "ion-col", 29)(69, "label");
109
+ i0.ɵɵtext(70);
110
+ i0.ɵɵpipe(71, "translate");
111
+ i0.ɵɵelementEnd();
112
+ i0.ɵɵelement(72, "app-overlay-info", 30);
113
+ i0.ɵɵpipe(73, "trustHtml");
114
+ i0.ɵɵpipe(74, "translate");
115
+ i0.ɵɵelementEnd()();
116
+ i0.ɵɵelementStart(75, "ion-row", 31);
117
+ i0.ɵɵelement(76, "ion-col", 22);
118
+ i0.ɵɵelementStart(77, "ion-col", 23);
119
+ i0.ɵɵelement(78, "fa-icon", 24);
120
+ i0.ɵɵelementEnd();
121
+ i0.ɵɵelementStart(79, "ion-col", 19);
122
+ i0.ɵɵelement(80, "p-inputNumber", 32)(81, "app-error", 7);
123
+ i0.ɵɵelementEnd();
124
+ i0.ɵɵelement(82, "ion-col", 33);
125
+ i0.ɵɵelementStart(83, "ion-col", 23);
126
+ i0.ɵɵelement(84, "fa-icon", 24);
127
+ i0.ɵɵelementEnd();
128
+ i0.ɵɵelementStart(85, "ion-col", 28);
129
+ i0.ɵɵtext(86);
130
+ i0.ɵɵpipe(87, "currency");
131
+ i0.ɵɵelementEnd()()()();
132
+ } if (rf & 2) {
133
+ const ctx_r1 = i0.ɵɵnextContext();
134
+ const _r0 = i0.ɵɵreference(2);
135
+ i0.ɵɵadvance(5);
136
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 27, "wage.calculator.hours.worked"));
137
+ i0.ɵɵadvance(6);
138
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(12, 29, "wage.calculator.total"));
139
+ i0.ɵɵadvance(5);
140
+ i0.ɵɵproperty("ngForOf", ctx_r1.daysFormArray.controls);
141
+ i0.ɵɵadvance(3);
142
+ i0.ɵɵproperty("field", ctx_r1.wageCalculatorForm.get("days"))("form", _r0)("errDef", i0.ɵɵpureFunction0(51, _c1));
143
+ i0.ɵɵadvance(6);
144
+ i0.ɵɵtextInterpolate(ctx_r1.calculateTotalHours());
145
+ i0.ɵɵadvance(7);
146
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(33, 31, "wage.calculator.pay.rate"));
147
+ i0.ɵɵadvance(7);
148
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(40, 33, "wage.calculator.earnings"));
149
+ i0.ɵɵadvance(5);
150
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction0(52, _c2));
151
+ i0.ɵɵadvance(2);
152
+ i0.ɵɵproperty("formControl", ctx_r1.payRate);
153
+ i0.ɵɵadvance(2);
154
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 35, "wage.calculator.per.hour"));
155
+ i0.ɵɵadvance(2);
156
+ i0.ɵɵproperty("field", ctx_r1.wageCalculatorForm.get("payRate"))("form", _r0)("errDef", i0.ɵɵpureFunction0(53, _c3));
157
+ i0.ɵɵadvance(3);
158
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction0(54, _c4));
159
+ i0.ɵɵadvance(3);
160
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(57, 37, ctx_r1.calculateEarnings(), "USD"));
161
+ i0.ɵɵadvance(8);
162
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(65, 40, "wage.calculator.other.pay"));
163
+ i0.ɵɵadvance(6);
164
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(71, 42, "wage.calculator.gross.earnings"));
165
+ i0.ɵɵadvance(2);
166
+ i0.ɵɵproperty("overlayText", i0.ɵɵpipeBind1(73, 44, i0.ɵɵpipeBind1(74, 46, "weeklies.v2.employment.rtw.info.popup.1000")));
167
+ i0.ɵɵadvance(6);
168
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction0(55, _c5));
169
+ i0.ɵɵadvance(2);
170
+ i0.ɵɵproperty("formControl", ctx_r1.otherPay);
171
+ i0.ɵɵadvance(1);
172
+ i0.ɵɵproperty("field", ctx_r1.wageCalculatorForm.get("otherPay"))("form", _r0)("errDef", i0.ɵɵpureFunction0(56, _c3));
173
+ i0.ɵɵadvance(3);
174
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction0(57, _c4));
175
+ i0.ɵɵadvance(2);
176
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(87, 48, ctx_r1.calculateGrossEarnings(), "USD"));
177
+ } }
178
+ const _c6 = () => ({ required: "required", hoursPerWeekExceeded: _c0 });
179
+ function WageCalculatorComponent_section_11_Template(rf, ctx) { if (rf & 1) {
180
+ i0.ɵɵelementStart(0, "section")(1, "ion-grid")(2, "ion-row")(3, "ion-col", 35)(4, "label");
181
+ i0.ɵɵtext(5);
182
+ i0.ɵɵpipe(6, "translate");
183
+ i0.ɵɵelementEnd();
184
+ i0.ɵɵelement(7, "p-inputNumber", 36)(8, "app-error", 7);
185
+ i0.ɵɵelementEnd()();
186
+ i0.ɵɵelementStart(9, "ion-row")(10, "ion-col", 35)(11, "label");
187
+ i0.ɵɵtext(12);
188
+ i0.ɵɵpipe(13, "translate");
189
+ i0.ɵɵelementEnd()();
190
+ i0.ɵɵelement(14, "ion-col", 37);
191
+ i0.ɵɵelementStart(15, "ion-col", 35)(16, "label", 38);
192
+ i0.ɵɵtext(17);
193
+ i0.ɵɵpipe(18, "translate");
194
+ i0.ɵɵelementEnd()();
195
+ i0.ɵɵelement(19, "ion-col", 37);
196
+ i0.ɵɵelementStart(20, "ion-col", 19)(21, "label", 39);
197
+ i0.ɵɵtext(22);
198
+ i0.ɵɵpipe(23, "translate");
199
+ i0.ɵɵelementEnd();
200
+ i0.ɵɵelement(24, "app-overlay-info", 30);
201
+ i0.ɵɵpipe(25, "trustHtml");
202
+ i0.ɵɵpipe(26, "translate");
203
+ i0.ɵɵelementEnd()();
204
+ i0.ɵɵelementStart(27, "ion-row")(28, "ion-col", 35);
205
+ i0.ɵɵelement(29, "p-inputNumber", 40)(30, "app-error", 7);
206
+ i0.ɵɵelementEnd();
207
+ i0.ɵɵelementStart(31, "ion-col", 23);
208
+ i0.ɵɵelement(32, "fa-icon", 24);
209
+ i0.ɵɵelementEnd();
210
+ i0.ɵɵelementStart(33, "ion-col", 35);
211
+ i0.ɵɵelement(34, "p-inputNumber", 40);
212
+ i0.ɵɵelementEnd();
213
+ i0.ɵɵelementStart(35, "ion-col", 23);
214
+ i0.ɵɵelement(36, "fa-icon", 24);
215
+ i0.ɵɵelementEnd();
216
+ i0.ɵɵelementStart(37, "ion-col", 19)(38, "label", 41);
217
+ i0.ɵɵtext(39);
218
+ i0.ɵɵpipe(40, "currency");
219
+ i0.ɵɵelementEnd()()()()();
220
+ } if (rf & 2) {
221
+ const ctx_r2 = i0.ɵɵnextContext();
222
+ const _r0 = i0.ɵɵreference(2);
223
+ i0.ɵɵadvance(5);
224
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 24, "wage.calculator.hours.worked"));
225
+ i0.ɵɵadvance(2);
226
+ i0.ɵɵproperty("formControl", ctx_r2.hoursWorked)("min", 0)("minFractionDigits", 1)("maxFractionDigits", 2);
227
+ i0.ɵɵadvance(1);
228
+ i0.ɵɵproperty("field", ctx_r2.wageCalculatorForm.get("hoursWorked"))("form", _r0)("errDef", i0.ɵɵpureFunction0(39, _c6));
229
+ i0.ɵɵadvance(4);
230
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(13, 26, "wage.calculator.earnings"));
231
+ i0.ɵɵadvance(5);
232
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(18, 28, "wage.calculator.other.pay"));
233
+ i0.ɵɵadvance(5);
234
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(23, 30, "wage.calculator.gross.earnings"));
235
+ i0.ɵɵadvance(2);
236
+ i0.ɵɵproperty("overlayText", i0.ɵɵpipeBind1(25, 32, i0.ɵɵpipeBind1(26, 34, "weeklies.v2.employment.rtw.info.popup.1000")));
237
+ i0.ɵɵadvance(5);
238
+ i0.ɵɵproperty("formControl", ctx_r2.earnings)("min", 0);
239
+ i0.ɵɵadvance(1);
240
+ i0.ɵɵclassMap("app-grid");
241
+ i0.ɵɵproperty("field", ctx_r2.earnings)("form", _r0)("errDef", i0.ɵɵpureFunction0(40, _c3));
242
+ i0.ɵɵadvance(2);
243
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction0(41, _c5));
244
+ i0.ɵɵadvance(2);
245
+ i0.ɵɵproperty("formControl", ctx_r2.otherPay)("min", 0);
246
+ i0.ɵɵadvance(2);
247
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction0(42, _c4));
248
+ i0.ɵɵadvance(3);
249
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(40, 36, ctx_r2.calculateGrossEarnings(), "USD"));
250
+ } }
251
+ function WageCalculatorComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
252
+ const _r8 = i0.ɵɵgetCurrentView();
253
+ i0.ɵɵelementStart(0, "ion-button", 42);
254
+ i0.ɵɵlistener("click", function WageCalculatorComponent_ng_template_12_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.onCancel()); });
255
+ i0.ɵɵtext(1);
256
+ i0.ɵɵpipe(2, "translate");
257
+ i0.ɵɵelementEnd();
258
+ i0.ɵɵelementStart(3, "ion-button", 43);
259
+ i0.ɵɵlistener("click", function WageCalculatorComponent_ng_template_12_Template_ion_button_click_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.onSave()); });
260
+ i0.ɵɵtext(4);
261
+ i0.ɵɵpipe(5, "translate");
262
+ i0.ɵɵelementEnd();
263
+ } if (rf & 2) {
264
+ i0.ɵɵadvance(1);
265
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 2, "wage.calculator.cancel"));
266
+ i0.ɵɵadvance(3);
267
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 4, "wage.calculator.save"));
268
+ } }
269
+ const _c7 = () => ({ width: "800px" });
270
+ const _c8 = () => ({ "960px": "90vw", "640px": "100vw" });
271
+ export class WageCalculatorComponent {
272
+ constructor(formBuilder, util) {
273
+ this.formBuilder = formBuilder;
274
+ this.util = util;
275
+ this.grossEarningsChange = new EventEmitter();
276
+ this.totalHoursChange = new EventEmitter();
277
+ this.saveClicked = new EventEmitter();
278
+ this.cancelClicked = new EventEmitter();
279
+ this.yesNoOption = ComboOption.YES_NO;
280
+ this.isFirstTimeEntry = true;
281
+ this.wageCalculatorForm = this.formBuilder.group({
282
+ 'isPaidHourly': [null, Validators.required],
283
+ 'hoursWorked': [null],
284
+ 'payRate': [null],
285
+ 'otherPay': [0.0],
286
+ 'earnings': [null],
287
+ 'grossEarnings': [0.0],
288
+ 'days': this.formBuilder.array([])
289
+ });
290
+ }
291
+ ngOnInit() {
292
+ const daysArray = this.daysFormArray;
293
+ if (this.wageCalculatorSavedData && this.wageCalculatorSavedData.days) {
294
+ this.isFirstTimeEntry = false;
295
+ this.wageCalculatorForm.patchValue({
296
+ payRate: this.wageCalculatorSavedData.payRate,
297
+ otherPay: this.wageCalculatorSavedData.otherPay,
298
+ earnings: this.wageCalculatorSavedData.earnings || 0.00,
299
+ grossEarnings: this.wageCalculatorSavedData.grossEarnings || 0.00,
300
+ hoursWorked: this.wageCalculatorSavedData.hoursWorked,
301
+ isPaidHourly: this.wageCalculatorSavedData.isPaidHourly
302
+ });
303
+ for (const d of this.wageCalculatorSavedData.days) {
304
+ daysArray.push(this.formBuilder.group({
305
+ label: d.label,
306
+ date: d.date,
307
+ hours: [d.hours]
308
+ }));
309
+ }
310
+ }
311
+ else {
312
+ this.isFirstTimeEntry = true;
313
+ this.satDate = this.util.getEnteredDateFromString(this.dynamicParam.saturday_date);
314
+ this.sunDate = this.util.getEnteredDateFromString(this.dynamicParam.sunday_date);
315
+ this.startDate = new Date(this.sunDate);
316
+ while (this.startDate <= this.satDate) {
317
+ daysArray.push(this.formBuilder.group({
318
+ date: this.formatDate(this.startDate),
319
+ label: this.startDate.toLocaleDateString('en-US', { weekday: 'short' }),
320
+ hours: [null]
321
+ }));
322
+ this.startDate.setDate(this.startDate.getDate() + 1);
323
+ }
324
+ }
325
+ this.updateGrossEarnings();
326
+ this.hoursWorked.valueChanges.subscribe(val => {
327
+ if (val) {
328
+ if (val > 168) {
329
+ this.wageCalculatorForm.controls['hoursWorked'].setErrors({ hoursPerWeekExceeded: true });
330
+ }
331
+ }
332
+ });
333
+ this.isPaidHourly.valueChanges.subscribe(val => {
334
+ if (val) {
335
+ if (val === 'N') {
336
+ this.util.setRequiredValidator(this.hoursWorked);
337
+ this.util.setRequiredValidator(this.earnings);
338
+ this.util.clearValidation(this.payRate);
339
+ this.payRate.setValue(null);
340
+ this.otherPay.setValue(null);
341
+ this.daysFormArray.controls.forEach((group) => {
342
+ group.get('hours')?.setValue(null);
343
+ });
344
+ }
345
+ else if (val === 'Y') {
346
+ this.util.setRequiredValidator(this.payRate);
347
+ this.util.clearValidation(this.hoursWorked);
348
+ this.util.clearValidation(this.earnings);
349
+ this.hoursWorked.setValue(null);
350
+ this.earnings.setValue(null);
351
+ this.otherPay.setValue(null);
352
+ }
353
+ }
354
+ });
355
+ }
356
+ get isPaidHourly() {
357
+ return this.wageCalculatorForm.controls['isPaidHourly'];
358
+ }
359
+ get hoursWorked() {
360
+ return this.wageCalculatorForm.controls['hoursWorked'];
361
+ }
362
+ get payRate() {
363
+ return this.wageCalculatorForm.controls['payRate'];
364
+ }
365
+ get otherPay() {
366
+ return this.wageCalculatorForm.controls['otherPay'];
367
+ }
368
+ get earnings() {
369
+ return this.wageCalculatorForm.controls['earnings'];
370
+ }
371
+ get daysFormArray() {
372
+ return this.wageCalculatorForm.get('days');
373
+ }
374
+ formatDate(date) {
375
+ const month = (date.getMonth() + 1).toString().padStart(2, '0');
376
+ const day = date.getDate().toString().padStart(2, '0');
377
+ return `${month}/${day}`;
378
+ }
379
+ calculateTotalHours() {
380
+ const total = this.daysFormArray.controls.reduce((sum, ctrl) => {
381
+ const hours = ctrl.get('hours')?.value || 0;
382
+ return sum + hours;
383
+ }, 0);
384
+ this.totalHoursChange.emit(total);
385
+ return total;
386
+ }
387
+ calculateEarnings() {
388
+ return this.calculateTotalHours() * (this.payRate?.value || 0);
389
+ }
390
+ calculateGrossEarnings() {
391
+ const earnings = this.isPaidHourly?.value === 'Y' ? this.calculateEarnings() : this.earnings?.value || 0;
392
+ const total = earnings + (this.otherPay?.value || 0);
393
+ this.wageCalculatorForm.patchValue({ grossEarnings: total });
394
+ return total;
395
+ }
396
+ updateTotalHours() {
397
+ if (this.isPaidHourly.value === 'N') {
398
+ const total = this.hoursWorked.value;
399
+ this.totalHoursChange.emit(total);
400
+ }
401
+ }
402
+ updateGrossEarnings() {
403
+ this.grossEarningsChange.emit(this.calculateGrossEarnings());
404
+ }
405
+ onSave() {
406
+ this.updateGrossEarnings();
407
+ const model = new WageCalculatorModel();
408
+ model.payRate = this.payRate?.value;
409
+ model.otherPay = this.otherPay?.value;
410
+ model.earnings = this.earnings?.value;
411
+ model.grossEarnings = this.wageCalculatorForm.get('grossEarnings')?.value;
412
+ model.totalHours = this.calculateTotalHours();
413
+ model.hoursWorked = this.hoursWorked?.value;
414
+ model.isPaidHourly = this.isPaidHourly?.value;
415
+ model.days = this.daysFormArray.controls.map(ctrl => ctrl.value);
416
+ this.updateTotalHours();
417
+ if (this.isPaidHourly.value === 'Y') {
418
+ if (model.totalHours === 0) {
419
+ this.wageCalculatorForm.controls['days'].setErrors({ totalHoursZero: true });
420
+ }
421
+ if (model.totalHours > 168) {
422
+ this.wageCalculatorForm.controls['days'].setErrors({ hoursPerWeekExceeded: true });
423
+ }
424
+ }
425
+ if (this.wageCalculatorForm.valid) {
426
+ this.showCalculatorPopup = false;
427
+ this.saveClicked.emit(model);
428
+ }
429
+ else {
430
+ this.wageCalculatorForm.markAllAsTouched();
431
+ }
432
+ }
433
+ onCancel() {
434
+ if (this.isFirstTimeEntry) {
435
+ // Case 1: New entry — reset everything
436
+ this.daysFormArray.controls.forEach((group) => {
437
+ group.get('hours')?.setValue(null);
438
+ });
439
+ this.wageCalculatorForm.patchValue({ grossEarnings: 0 });
440
+ this.totalHoursChange.emit(0);
441
+ this.grossEarningsChange.emit(0);
442
+ }
443
+ else {
444
+ // Case 2: Editing existing data — restore original values
445
+ this.daysFormArray.clear();
446
+ for (const d of this.wageCalculatorSavedData.days) {
447
+ this.daysFormArray.push(this.formBuilder.group({
448
+ label: d.label,
449
+ date: d.date,
450
+ hours: [d.hours]
451
+ }));
452
+ }
453
+ this.wageCalculatorForm.patchValue({
454
+ payRate: this.wageCalculatorSavedData.payRate,
455
+ otherPay: this.wageCalculatorSavedData.otherPay,
456
+ earnings: this.wageCalculatorSavedData.earnings || 0.00,
457
+ grossEarnings: this.wageCalculatorSavedData.grossEarnings || 0.00,
458
+ hoursWorked: this.wageCalculatorSavedData.hoursWorked,
459
+ isPaidHourly: this.wageCalculatorSavedData.isPaidHourly
460
+ });
461
+ // Correctly calculate total hours from saved data
462
+ let totalHours = 0;
463
+ if (this.wageCalculatorSavedData.isPaidHourly === 'Y') {
464
+ totalHours = this.wageCalculatorSavedData.days.reduce((sum, d) => {
465
+ return sum + (d.hours || 0);
466
+ }, 0);
467
+ }
468
+ else {
469
+ totalHours = this.wageCalculatorSavedData.hoursWorked || 0;
470
+ }
471
+ this.totalHoursChange.emit(totalHours);
472
+ this.grossEarningsChange.emit(this.wageCalculatorSavedData.grossEarnings || 0);
473
+ }
474
+ this.showCalculatorPopup = false;
475
+ this.cancelClicked.emit();
476
+ }
477
+ static { this.ɵfac = function WageCalculatorComponent_Factory(t) { return new (t || WageCalculatorComponent)(i0.ɵɵdirectiveInject(i1.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2.UtilService)); }; }
478
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WageCalculatorComponent, selectors: [["app-wage-calculator"]], inputs: { dynamicParam: "dynamicParam", showCalculatorPopup: "showCalculatorPopup", wageCalculatorSavedData: "wageCalculatorSavedData" }, outputs: { grossEarningsChange: "grossEarningsChange", totalHoursChange: "totalHoursChange", saveClicked: "saveClicked", cancelClicked: "cancelClicked" }, decls: 13, vars: 20, consts: [["modal", "true", "appendTo", "body", "position", "top", 1, "help-page-slide", 3, "visible", "breakpoints"], [3, "formGroup"], ["wageCalculatorFormDirective", "ngForm"], [1, "ion-padding"], [1, "field"], ["for", "isPaidHourly"], ["optionLabel", "text", "optionValue", "value", 3, "options", "formControl"], [3, "field", "form", "errDef"], [4, "ngIf"], ["pTemplate", "footer"], ["size", "4"], ["size", "4.5"], ["size", "2.5"], ["size", "8", 1, "days-row"], [3, "formGroup", 4, "ngFor", "ngForOf"], ["size", "12"], ["size", "0.5", 2, "padding-top", "35px"], ["size", "3.5", 2, "padding-top", "35px"], ["size", "1.5"], ["size", "3"], ["size", "1", 1, "regular-view"], ["size", "4.5", "sizeXs", "4", 1, "mobile-view"], ["size", "0.5"], ["size", "1", 1, "center-icon"], [1, "action-icon", 3, "icon"], ["mode", "currency", "currency", "USD", "placeholder", "$0.00", 1, "custom-input-medium", 3, "formControl"], [2, "padding-left", "10px"], ["size", "3.5", 1, "mobile-view"], ["size", "3", 2, "padding-top", "15px"], ["size", "3", "sizeXs", "4"], [1, "overlay-info", 2, "padding-left", "8px", "padding-top", "3px", 3, "overlayText"], [2, "padding-bottom", "20px"], ["mode", "currency", "currency", "USD", 1, "custom-input-medium", 3, "formControl"], ["size", "3", 1, "mobile-view"], ["mode", "decimal", "placeholder", "0.00", 1, "custom-input-small", 3, "formControl", "min", "max", "minFractionDigits", "maxFractionDigits"], ["size", "3.5"], ["placeholder", "0.00", "mode", "decimal", 3, "formControl", "min", "minFractionDigits", "maxFractionDigits"], ["size", "1"], [2, "position", "absolute"], [1, "gross-mobile-view"], ["mode", "currency", "currency", "USD", "locale", "en-US", "placeholder", "$0.00", 3, "formControl", "min"], [2, "display", "block", "padding-top", "8px"], ["shape", "round", "fill", "outline", "type", "reset", 3, "click"], ["shape", "round", "type", "submit", 2, "padding-left", "40px", 3, "click"]], template: function WageCalculatorComponent_Template(rf, ctx) { if (rf & 1) {
479
+ i0.ɵɵelementStart(0, "p-dialog", 0)(1, "form", 1, 2)(3, "ion-row", 3)(4, "div", 4)(5, "label", 5);
480
+ i0.ɵɵtext(6);
481
+ i0.ɵɵpipe(7, "translate");
482
+ i0.ɵɵelementEnd();
483
+ i0.ɵɵelement(8, "p-selectButton", 6)(9, "app-error", 7);
484
+ i0.ɵɵelementEnd()();
485
+ i0.ɵɵtemplate(10, WageCalculatorComponent_section_10_Template, 88, 58, "section", 8)(11, WageCalculatorComponent_section_11_Template, 41, 43, "section", 8);
486
+ i0.ɵɵelementEnd();
487
+ i0.ɵɵtemplate(12, WageCalculatorComponent_ng_template_12_Template, 6, 6, "ng-template", 9);
488
+ i0.ɵɵelementEnd();
489
+ } if (rf & 2) {
490
+ const _r0 = i0.ɵɵreference(2);
491
+ i0.ɵɵstyleMap(i0.ɵɵpureFunction0(17, _c7));
492
+ i0.ɵɵproperty("visible", ctx.showCalculatorPopup)("breakpoints", i0.ɵɵpureFunction0(18, _c8));
493
+ i0.ɵɵadvance(1);
494
+ i0.ɵɵproperty("formGroup", ctx.wageCalculatorForm);
495
+ i0.ɵɵadvance(5);
496
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(7, 15, "wage.calculator.paid.hourly"));
497
+ i0.ɵɵadvance(2);
498
+ i0.ɵɵproperty("options", ctx.yesNoOption)("formControl", ctx.isPaidHourly);
499
+ i0.ɵɵadvance(1);
500
+ i0.ɵɵclassMap("app-grid");
501
+ i0.ɵɵproperty("field", ctx.isPaidHourly)("form", _r0)("errDef", i0.ɵɵpureFunction0(19, _c3));
502
+ i0.ɵɵadvance(1);
503
+ i0.ɵɵproperty("ngIf", ctx.isPaidHourly.value === "Y");
504
+ i0.ɵɵadvance(1);
505
+ i0.ɵɵproperty("ngIf", ctx.isPaidHourly.value === "N");
506
+ } }, dependencies: [i3.IonButton, i3.IonCol, i3.IonGrid, i3.IonLabel, i3.IonRow, i4.NgForOf, i4.NgIf, i5.PrimeTemplate, i1.ɵNgNoValidate, i1.NgControlStatus, i1.NgControlStatusGroup, i1.FormControlDirective, i1.FormGroupDirective, i6.Dialog, i7.SelectButton, i8.InputNumber, i9.FaIconComponent, i10.ErrorComponent, i11.OverlayInfoComponent, i4.CurrencyPipe, i12.TranslatePipe, i13.TrustHtmlPipe], styles: [".day-header[_ngcontent-%COMP%]{text-align:center;font-weight:700}.mobile-view[_ngcontent-%COMP%]{display:none}.custom-input-small[_ngcontent-%COMP%] .p-inputnumber{width:58px!important}.custom-input-small[_ngcontent-%COMP%] .p-inputnumber input{width:58px!important}.custom-input-small[_ngcontent-%COMP%] .p-inputnumber span{max-width:58px!important;display:inline-block;overflow:hidden;text-overflow:ellipsis}.custom-input-medium[_ngcontent-%COMP%] .p-inputnumber{width:100px!important}.custom-input-medium[_ngcontent-%COMP%] .p-inputnumber input{width:100px!important}.custom-input-medium[_ngcontent-%COMP%] .p-inputnumber span{max-width:100px!important;display:inline-block;overflow:hidden;text-overflow:ellipsis}@media (min-width: 320px) and (max-width: 460px){ .p-inputtext{max-width:75px}.overlay-info[_ngcontent-%COMP%]{padding-left:57px!important;padding-top:3px}.gross-mobile-view[_ngcontent-%COMP%]{position:fixed;padding-left:10px}.mobile-view[_ngcontent-%COMP%]{display:block}.regular-view[_ngcontent-%COMP%]{display:none}}@media (min-width: 520px) and (max-width: 900px){ .p-inputtext{max-width:125px}}"] }); }
507
+ }
508
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WageCalculatorComponent, [{
509
+ type: Component,
510
+ args: [{ selector: 'app-wage-calculator', template: "<p-dialog [visible]=\"showCalculatorPopup\" modal=\"true\" appendTo=\"body\"\r\n [breakpoints]=\"{'960px': '90vw', '640px': '100vw'}\" [style]=\"{width: '800px'}\" position=\"top\"\r\n class=\"help-page-slide\">\r\n <form [formGroup]=\"wageCalculatorForm\" #wageCalculatorFormDirective=\"ngForm\">\r\n <ion-row class=\"ion-padding\">\r\n <div class=\"field\">\r\n <label for=\"isPaidHourly\">{{'wage.calculator.paid.hourly'|translate}}</label>\r\n <p-selectButton [options]=\"yesNoOption\" [formControl]=\"isPaidHourly\" optionLabel=\"text\"\r\n optionValue=\"value\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='isPaidHourly' [form]=\"wageCalculatorFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-row>\r\n\r\n <section *ngIf=\"isPaidHourly.value === 'Y'\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"4\">\r\n <label>{{'wage.calculator.hours.worked'|translate}}</label>\r\n </ion-col>\r\n <ion-col size=\"4.5\"></ion-col>\r\n <ion-col size=\"2.5\">\r\n <label><b>{{'wage.calculator.total'|translate}}</b></label>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col class=\"days-row\" size=\"8\">\r\n <ion-row>\r\n <ion-col *ngFor=\"let day of daysFormArray.controls; let i = index\" [formGroup]=\"day\">\r\n <ion-row>\r\n <label>{{ day.get('label')?.value }}</label>\r\n </ion-row>\r\n <ion-row>\r\n <p-inputNumber [formControl]=\"day.get('hours')\" mode=\"decimal\" placeholder=\"0.00\" [min]=\"0.00\" [max]=\"24.00\"\r\n class=\"custom-input-small\" [minFractionDigits]=\"1\" [maxFractionDigits]=\"2\">\r\n </p-inputNumber>\r\n </ion-row>\r\n <ion-row>\r\n <ion-label>{{ day.get('date')?.value }}</ion-label>\r\n </ion-row>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col size=\"12\">\r\n <app-error [field]=\"wageCalculatorForm.get('days')\" [form]=\"wageCalculatorFormDirective\"\r\n [errDef]=\"{ totalHoursZero: 'total hours must be greater than 0', hoursPerWeekExceeded: 'total hours must not be greater than 168 for the week' }\">\r\n </app-error>\r\n </ion-col>\r\n </ion-row>\r\n </ion-col>\r\n <ion-col size=\"0.5\" style=\"padding-top: 35px;\">\r\n <b>= </b>\r\n </ion-col>\r\n <ion-col size=\"3.5\" style=\"padding-top: 35px;\">\r\n <b>{{ calculateTotalHours() }}</b>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"1.5\"></ion-col>\r\n <ion-col size=\"3\">\r\n <ion-row>\r\n <label>{{'wage.calculator.pay.rate'|translate}}</label>\r\n </ion-row>\r\n </ion-col>\r\n <ion-col size=\"1\" class=\"regular-view\"></ion-col>\r\n <ion-col size=\"4.5\" sizeXs=\"4\" class=\"mobile-view\"></ion-col>\r\n <ion-col size=\"3\">\r\n <ion-row>\r\n <label>{{'wage.calculator.earnings'|translate}}</label>\r\n </ion-row>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col size=\"0.5\"></ion-col>\r\n <ion-col size=\"1\" class=\"center-icon\">\r\n <fa-icon [icon]=\"['fas','xmark']\" class=\"action-icon\"></fa-icon>\r\n </ion-col>\r\n <ion-col size=\"3\">\r\n <p-inputNumber [formControl]=\"payRate\" mode=\"currency\" currency=\"USD\"\r\n class=\"custom-input-medium\" placeholder=\"$0.00\"></p-inputNumber>\r\n <label style=\"padding-left: 10px;\">{{'wage.calculator.per.hour'|translate}}</label>\r\n <app-error [field]=\"wageCalculatorForm.get('payRate')\" [form]=\"wageCalculatorFormDirective\"\r\n [errDef]=\"{required: 'required'}\"></app-error>\r\n </ion-col>\r\n <ion-col size=\"3.5\" class=\"mobile-view\"></ion-col>\r\n <ion-col size=\"1\" class=\"center-icon\">\r\n <fa-icon [icon]=\"['fas','equals']\" class=\"action-icon\"></fa-icon>\r\n </ion-col>\r\n <ion-col size=\"3\" style=\"padding-top: 15px;\"><label>{{ calculateEarnings() | currency: 'USD'\r\n }}</label></ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"1.5\"></ion-col>\r\n <ion-col size=\"3\">\r\n <ion-row>\r\n <ion-label>{{'wage.calculator.other.pay'|translate}}</ion-label>\r\n </ion-row>\r\n </ion-col>\r\n <ion-col size=\"1\" class=\"regular-view\"></ion-col>\r\n <ion-col size=\"3.5\" class=\"mobile-view\"></ion-col>\r\n <ion-col size=\"3\" sizeXs=\"4\">\r\n <label>{{'wage.calculator.gross.earnings'|translate}}</label>\r\n <app-overlay-info\r\n [overlayText]=\"'weeklies.v2.employment.rtw.info.popup.1000' | translate | trustHtml\"\r\n style=\"padding-left: 8px; padding-top:3px\" class=\"overlay-info\"></app-overlay-info>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row style=\"padding-bottom: 20px;\">\r\n <ion-col size=\"0.5\"></ion-col>\r\n <ion-col size=\"1\" class=\"center-icon\">\r\n <fa-icon [icon]=\"['fal','plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-col>\r\n <ion-col size=\"3\">\r\n <p-inputNumber [formControl]=\"otherPay\" mode=\"currency\" currency=\"USD\"\r\n class=\"custom-input-medium\"></p-inputNumber>\r\n <app-error [field]=\"wageCalculatorForm.get('otherPay')\" [form]=\"wageCalculatorFormDirective\"\r\n [errDef]=\"{required: 'required'}\"></app-error>\r\n </ion-col>\r\n <ion-col size=\"3\" class=\"mobile-view\"></ion-col>\r\n <ion-col size=\"1\" class=\"center-icon\">\r\n <fa-icon [icon]=\"['fas','equals']\" class=\"action-icon\"></fa-icon>\r\n </ion-col>\r\n <ion-col size=\"3\" style=\"padding-top: 15px;\">{{ calculateGrossEarnings() | currency: 'USD'\r\n }}</ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </section>\r\n\r\n <section *ngIf=\"isPaidHourly.value === 'N'\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"3.5\">\r\n <label>{{'wage.calculator.hours.worked'|translate}}</label>\r\n <p-inputNumber [formControl]=\"hoursWorked\" placeholder=\"0.00\" [min]=\"0.00\" mode=\"decimal\"\r\n [minFractionDigits]=\"1\" [maxFractionDigits]=\"2\"></p-inputNumber>\r\n <app-error [field]=\"wageCalculatorForm.get('hoursWorked')\" [form]=\"wageCalculatorFormDirective\"\r\n [errDef]=\"{required: 'required', hoursPerWeekExceeded: 'total hours must not be greater than 168 for the week'}\"></app-error>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col size=\"3.5\">\r\n <label>{{'wage.calculator.earnings'|translate}}</label>\r\n </ion-col>\r\n <ion-col size=\"1\"></ion-col>\r\n <ion-col size=\"3.5\">\r\n <label style=\"position: absolute;\">{{'wage.calculator.other.pay'|translate}}</label>\r\n </ion-col>\r\n <ion-col size=\"1\"></ion-col>\r\n <ion-col size=\"3\">\r\n <label class=\"gross-mobile-view\">{{'wage.calculator.gross.earnings'|translate}}</label>\r\n <app-overlay-info\r\n [overlayText]=\"'weeklies.v2.employment.rtw.info.popup.1000' | translate | trustHtml\"\r\n style=\"padding-left: 8px; padding-top:3px\" class=\"overlay-info\"></app-overlay-info>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col size=\"3.5\">\r\n <p-inputNumber [formControl]=\"earnings\" mode=\"currency\" currency=\"USD\" locale=\"en-US\"\r\n [min]=\"0.00\" placeholder=\"$0.00\"></p-inputNumber>\r\n <app-error [class]=\"'app-grid'\" [field]='earnings' [form]=\"wageCalculatorFormDirective\"\r\n [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </ion-col>\r\n <ion-col size=\"1\" class=\"center-icon\">\r\n <fa-icon [icon]=\"['fal','plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-col>\r\n <ion-col size=\"3.5\">\r\n <p-inputNumber [formControl]=\"otherPay\" mode=\"currency\" currency=\"USD\" locale=\"en-US\"\r\n [min]=\"0.00\" placeholder=\"$0.00\"></p-inputNumber>\r\n </ion-col>\r\n <ion-col size=\"1\" class=\"center-icon\">\r\n <fa-icon [icon]=\"['fas','equals']\" class=\"action-icon\"></fa-icon>\r\n </ion-col>\r\n <ion-col size=\"3\">\r\n <label style=\"display: block; padding-top: 8px;\">{{ calculateGrossEarnings() | currency: 'USD'\r\n }}</label>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </section>\r\n\r\n\r\n </form>\r\n <ng-template pTemplate=\"footer\">\r\n <ion-button shape=\"round\" fill=\"outline\" type=\"reset\"\r\n (click)=\"onCancel()\">{{'wage.calculator.cancel'|translate}}</ion-button>\r\n <ion-button shape=\"round\" type=\"submit\" style=\"padding-left: 40px;\"\r\n (click)=\"onSave()\">{{'wage.calculator.save'|translate}}</ion-button>\r\n </ng-template>\r\n</p-dialog>", styles: [".day-header{text-align:center;font-weight:700}.mobile-view{display:none}.custom-input-small ::ng-deep .p-inputnumber{width:58px!important}.custom-input-small ::ng-deep .p-inputnumber input{width:58px!important}.custom-input-small ::ng-deep .p-inputnumber span{max-width:58px!important;display:inline-block;overflow:hidden;text-overflow:ellipsis}.custom-input-medium ::ng-deep .p-inputnumber{width:100px!important}.custom-input-medium ::ng-deep .p-inputnumber input{width:100px!important}.custom-input-medium ::ng-deep .p-inputnumber span{max-width:100px!important;display:inline-block;overflow:hidden;text-overflow:ellipsis}@media (min-width: 320px) and (max-width: 460px){::ng-deep .p-inputtext{max-width:75px}.overlay-info{padding-left:57px!important;padding-top:3px}.gross-mobile-view{position:fixed;padding-left:10px}.mobile-view{display:block}.regular-view{display:none}}@media (min-width: 520px) and (max-width: 900px){::ng-deep .p-inputtext{max-width:125px}}\n"] }]
511
+ }], () => [{ type: i1.UntypedFormBuilder }, { type: i2.UtilService }], { dynamicParam: [{
512
+ type: Input
513
+ }], showCalculatorPopup: [{
514
+ type: Input
515
+ }], wageCalculatorSavedData: [{
516
+ type: Input
517
+ }], grossEarningsChange: [{
518
+ type: Output
519
+ }], totalHoursChange: [{
520
+ type: Output
521
+ }], saveClicked: [{
522
+ type: Output
523
+ }], cancelClicked: [{
524
+ type: Output
525
+ }] }); })();
526
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WageCalculatorComponent, { className: "WageCalculatorComponent", filePath: "lib\\components\\wage-calculator\\wage-calculator.component.ts", lineNumber: 14 }); })();
527
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FnZS1jYWxjdWxhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy93YWdlLWNhbGN1bGF0b3Ivd2FnZS1jYWxjdWxhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy93YWdlLWNhbGN1bGF0b3Ivd2FnZS1jYWxjdWxhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFvSixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5TCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUN3QnhDLGtDQUFxRixjQUFBLFlBQUE7SUFFdEUsWUFBNkI7SUFBQSxpQkFBUSxFQUFBO0lBRWhELCtCQUFTO0lBQ0wsb0NBRWdCO0lBQ3BCLGlCQUFVO0lBQ1YsK0JBQVMsZ0JBQUE7SUFDTSxZQUE0QjtJQUFBLGlCQUFZLEVBQUEsRUFBQTs7Ozs7SUFWUSxrQ0FBaUI7SUFFckUsZUFBNkI7SUFBN0Isb0ZBQTZCO0lBR3JCLGVBQWdDO0lBQWhDLGlEQUFnQyxVQUFBLFdBQUEsd0JBQUEsd0JBQUE7SUFLcEMsZUFBNEI7SUFBNUIsbUZBQTRCOzs7Ozs7Ozs7SUF4Qm5FLCtCQUE0QyxlQUFBLGNBQUEsa0JBQUEsWUFBQTtJQUlyQixZQUE0Qzs7SUFBQSxpQkFBUSxFQUFBO0lBRS9ELDhCQUE4QjtJQUM5QixtQ0FBb0IsWUFBQSxTQUFB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QUFBLGlCQUFRO1lBQzdFLG9DQUN5QyxtQkFBQTtZQUk3QyxpQkFBTSxFQUFBO1lBR1Ysb0ZBc0hVLHVFQUFBO1lBeURkLGlCQUFPO1lBQ1AsMEZBS2M7WUFDbEIsaUJBQVc7OztZQXBNNkMsMENBQTBCO1lBRHhFLGlEQUErQiw0Q0FBQTtZQUcvQixlQUFnQztZQUFoQyxrREFBZ0M7WUFHQSxlQUEyQztZQUEzQywwRUFBMkM7WUFDckQsZUFBdUI7WUFBdkIseUNBQXVCLGlDQUFBO1lBRTVCLGVBQW9CO1lBQXBCLHlCQUFvQjtZQUFDLHdDQUFzQixhQUFBLHVDQUFBO1lBTXBELGVBQWdDO1lBQWhDLHFEQUFnQztZQXdIaEMsZUFBZ0M7WUFBaEMscURBQWdDOzs7aUZEMUhyQyx1QkFBdUI7Y0FMbkMsU0FBUzsyQkFDRSxxQkFBcUI7NkVBS3RCLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyx1QkFBdUI7a0JBQS9CLEtBQUs7WUFDSSxtQkFBbUI7a0JBQTVCLE1BQU07WUFDRyxnQkFBZ0I7a0JBQXpCLE1BQU07WUFDRyxXQUFXO2tCQUFwQixNQUFNO1lBQ0csYUFBYTtrQkFBdEIsTUFBTTs7a0ZBUEksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5nRm9ybSwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXYWdlQ2FsY3VsYXRvck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1dhZ2VDYWxjdWxhdG9yTW9kZWwnO1xyXG5pbXBvcnQgeyBDb21ib09wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0NvbWJvTW9kZWwnO1xyXG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL0Jhc2VQYWdlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdhZ2UtY2FsY3VsYXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dhZ2UtY2FsY3VsYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd2FnZS1jYWxjdWxhdG9yLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV2FnZUNhbGN1bGF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGR5bmFtaWNQYXJhbTogYW55O1xyXG4gIEBJbnB1dCgpIHNob3dDYWxjdWxhdG9yUG9wdXA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgd2FnZUNhbGN1bGF0b3JTYXZlZERhdGE6IFdhZ2VDYWxjdWxhdG9yTW9kZWw7XHJcbiAgQE91dHB1dCgpIGdyb3NzRWFybmluZ3NDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCkgdG90YWxIb3Vyc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKSBzYXZlQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8V2FnZUNhbGN1bGF0b3JNb2RlbD4oKTtcclxuICBAT3V0cHV0KCkgY2FuY2VsQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIHdhZ2VDYWxjdWxhdG9yRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgeWVzTm9PcHRpb24gPSBDb21ib09wdGlvbi5ZRVNfTk87XHJcbiAgcHVibGljIHNhdERhdGU6IERhdGU7XHJcbiAgcHVibGljIHN1bkRhdGU6IERhdGU7XHJcbiAgcHVibGljIHN0YXJ0RGF0ZTogRGF0ZTtcclxuICBwdWJsaWMgaXNGaXJzdFRpbWVFbnRyeTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLCBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UpIHtcclxuICAgIHRoaXMud2FnZUNhbGN1bGF0b3JGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICdpc1BhaWRIb3VybHknOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICdob3Vyc1dvcmtlZCc6IFtudWxsXSxcclxuICAgICAgJ3BheVJhdGUnOiBbbnVsbF0sXHJcbiAgICAgICdvdGhlclBheSc6IFswLjBdLFxyXG4gICAgICAnZWFybmluZ3MnOiBbbnVsbF0sXHJcbiAgICAgICdncm9zc0Vhcm5pbmdzJzogWzAuMF0sXHJcbiAgICAgICdkYXlzJzogdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgY29uc3QgZGF5c0FycmF5ID0gdGhpcy5kYXlzRm9ybUFycmF5O1xyXG4gICAgaWYgKHRoaXMud2FnZUNhbGN1bGF0b3JTYXZlZERhdGEgJiYgdGhpcy53YWdlQ2FsY3VsYXRvclNhdmVkRGF0YS5kYXlzKSB7XHJcbiAgICAgIHRoaXMuaXNGaXJzdFRpbWVFbnRyeSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLndhZ2VDYWxjdWxhdG9yRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICBwYXlSYXRlOiB0aGlzLndhZ2VDYWxjdWxhdG9yU2F2ZWREYXRhLnBheVJhdGUsXHJcbiAgICAgICAgb3RoZXJQYXk6IHRoaXMud2FnZUNhbGN1bGF0b3JTYXZlZERhdGEub3RoZXJQYXksXHJcbiAgICAgICAgZWFybmluZ3M6IHRoaXMud2FnZUNhbGN1bGF0b3JTYXZlZERhdGEuZWFybmluZ3MgfHwgMC4wMCxcclxuICAgICAgICBncm9zc0Vhcm5pbmdzOiB0aGlzLndhZ2VDYWxjdWxhdG9yU2F2ZWREYXRhLmdyb3NzRWFybmluZ3MgfHwgMC4wMCxcclxuICAgICAgICBob3Vyc1dvcmtlZDogdGhpcy53YWdlQ2FsY3VsYXRvclNhdmVkRGF0YS5ob3Vyc1dvcmtlZCxcclxuICAgICAgICBpc1BhaWRIb3VybHk6IHRoaXMud2FnZUNhbGN1bGF0b3JTYXZlZERhdGEuaXNQYWlkSG91cmx5XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBkIG9mIHRoaXMud2FnZUNhbGN1bGF0b3JTYXZlZERhdGEuZGF5cykge1xyXG4gICAgICAgIGRheXNBcnJheS5wdXNoKHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgbGFiZWw6IGQubGFiZWwsXHJcbiAgICAgICAgICBkYXRlOiBkLmRhdGUsXHJcbiAgICAgICAgICBob3VyczogW2QuaG91cnNdXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzRmlyc3RUaW1lRW50cnkgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNhdERhdGUgPSB0aGlzLnV0aWwuZ2V0RW50ZXJlZERhdGVGcm9tU3RyaW5nKHRoaXMuZHluYW1pY1BhcmFtLnNhdHVyZGF5X2RhdGUpO1xyXG4gICAgICB0aGlzLnN1bkRhdGUgPSB0aGlzLnV0aWwuZ2V0RW50ZXJlZERhdGVGcm9tU3RyaW5nKHRoaXMuZHluYW1pY1BhcmFtLnN1bmRheV9kYXRlKTtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSBuZXcgRGF0ZSh0aGlzLnN1bkRhdGUpO1xyXG5cclxuICAgICAgd2hpbGUgKHRoaXMuc3RhcnREYXRlIDw9IHRoaXMuc2F0RGF0ZSkge1xyXG4gICAgICAgIGRheXNBcnJheS5wdXNoKHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgZGF0ZTogdGhpcy5mb3JtYXREYXRlKHRoaXMuc3RhcnREYXRlKSxcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLnN0YXJ0RGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLVVTJywgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pLFxyXG4gICAgICAgICAgaG91cnM6IFtudWxsXVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXREYXRlKHRoaXMuc3RhcnREYXRlLmdldERhdGUoKSArIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUdyb3NzRWFybmluZ3MoKTtcclxuICAgIHRoaXMuaG91cnNXb3JrZWQudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICBpZih2YWwpe1xyXG4gICAgICAgIGlmKHZhbCA+IDE2OCl7XHJcbiAgICAgICAgICB0aGlzLndhZ2VDYWxjdWxhdG9yRm9ybS5jb250cm9sc1snaG91cnNXb3JrZWQnXS5zZXRFcnJvcnMoeyBob3Vyc1BlcldlZWtFeGNlZWRlZDogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLmlzUGFpZEhvdXJseS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgIGlmICh2YWwpIHtcclxuICAgICAgICBpZiAodmFsID09PSAnTicpIHtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmhvdXJzV29ya2VkKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVhcm5pbmdzKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5wYXlSYXRlKTtcclxuICAgICAgICAgIHRoaXMucGF5UmF0ZS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMub3RoZXJQYXkuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmRheXNGb3JtQXJyYXkuY29udHJvbHMuZm9yRWFjaCgoZ3JvdXA6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICBncm91cC5nZXQoJ2hvdXJzJyk/LnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdZJykge1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMucGF5UmF0ZSk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuaG91cnNXb3JrZWQpO1xyXG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVhcm5pbmdzKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNXb3JrZWQuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmVhcm5pbmdzLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5vdGhlclBheS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzUGFpZEhvdXJseSgpIHtcclxuICAgIHJldHVybiB0aGlzLndhZ2VDYWxjdWxhdG9yRm9ybS5jb250cm9sc1snaXNQYWlkSG91cmx5J107XHJcbiAgfVxyXG5cclxuICBnZXQgaG91cnNXb3JrZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53YWdlQ2FsY3VsYXRvckZvcm0uY29udHJvbHNbJ2hvdXJzV29ya2VkJ107XHJcbiAgfVxyXG5cclxuICBnZXQgcGF5UmF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndhZ2VDYWxjdWxhdG9yRm9ybS5jb250cm9sc1sncGF5UmF0ZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG90aGVyUGF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMud2FnZUNhbGN1bGF0b3JGb3JtLmNvbnRyb2xzWydvdGhlclBheSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVhcm5pbmdzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud2FnZUNhbGN1bGF0b3JGb3JtLmNvbnRyb2xzWydlYXJuaW5ncyddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRheXNGb3JtQXJyYXkoKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLndhZ2VDYWxjdWxhdG9yRm9ybS5nZXQoJ2RheXMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbW9udGggPSAoZGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgcmV0dXJuIGAke21vbnRofS8ke2RheX1gO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlVG90YWxIb3VycygpOiBudW1iZXIge1xyXG4gICAgY29uc3QgdG90YWwgPSB0aGlzLmRheXNGb3JtQXJyYXkuY29udHJvbHMucmVkdWNlKChzdW0sIGN0cmwpID0+IHtcclxuICAgICAgY29uc3QgaG91cnMgPSBjdHJsLmdldCgnaG91cnMnKT8udmFsdWUgfHwgMDtcclxuICAgICAgcmV0dXJuIHN1bSArIGhvdXJzO1xyXG4gICAgfSwgMCk7XHJcbiAgICB0aGlzLnRvdGFsSG91cnNDaGFuZ2UuZW1pdCh0b3RhbCk7XHJcbiAgICByZXR1cm4gdG90YWw7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVFYXJuaW5ncygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlVG90YWxIb3VycygpICogKHRoaXMucGF5UmF0ZT8udmFsdWUgfHwgMCk7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVHcm9zc0Vhcm5pbmdzKCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBlYXJuaW5ncyA9IHRoaXMuaXNQYWlkSG91cmx5Py52YWx1ZSA9PT0gJ1knID8gdGhpcy5jYWxjdWxhdGVFYXJuaW5ncygpIDogdGhpcy5lYXJuaW5ncz8udmFsdWUgfHwgMDtcclxuICAgIGNvbnN0IHRvdGFsID0gZWFybmluZ3MgKyAodGhpcy5vdGhlclBheT8udmFsdWUgfHwgMCk7XHJcbiAgICB0aGlzLndhZ2VDYWxjdWxhdG9yRm9ybS5wYXRjaFZhbHVlKHsgZ3Jvc3NFYXJuaW5nczogdG90YWwgfSk7XHJcbiAgICByZXR1cm4gdG90YWw7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUb3RhbEhvdXJzKCkge1xyXG4gICAgaWYgKHRoaXMuaXNQYWlkSG91cmx5LnZhbHVlID09PSAnTicpIHtcclxuICAgICAgY29uc3QgdG90YWwgPSB0aGlzLmhvdXJzV29ya2VkLnZhbHVlO1xyXG4gICAgICB0aGlzLnRvdGFsSG91cnNDaGFuZ2UuZW1pdCh0b3RhbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVHcm9zc0Vhcm5pbmdzKCkge1xyXG4gICAgdGhpcy5ncm9zc0Vhcm5pbmdzQ2hhbmdlLmVtaXQodGhpcy5jYWxjdWxhdGVHcm9zc0Vhcm5pbmdzKCkpO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlKCkge1xyXG4gICAgdGhpcy51cGRhdGVHcm9zc0Vhcm5pbmdzKCk7XHJcbiAgICBjb25zdCBtb2RlbCA9IG5ldyBXYWdlQ2FsY3VsYXRvck1vZGVsKCk7XHJcbiAgICBtb2RlbC5wYXlSYXRlID0gdGhpcy5wYXlSYXRlPy52YWx1ZTtcclxuICAgIG1vZGVsLm90aGVyUGF5ID0gdGhpcy5vdGhlclBheT8udmFsdWU7XHJcbiAgICBtb2RlbC5lYXJuaW5ncyA9IHRoaXMuZWFybmluZ3M/LnZhbHVlO1xyXG4gICAgbW9kZWwuZ3Jvc3NFYXJuaW5ncyA9IHRoaXMud2FnZUNhbGN1bGF0b3JGb3JtLmdldCgnZ3Jvc3NFYXJuaW5ncycpPy52YWx1ZTtcclxuICAgIG1vZGVsLnRvdGFsSG91cnMgPSB0aGlzLmNhbGN1bGF0ZVRvdGFsSG91cnMoKTtcclxuICAgIG1vZGVsLmhvdXJzV29ya2VkID0gdGhpcy5ob3Vyc1dvcmtlZD8udmFsdWU7XHJcbiAgICBtb2RlbC5pc1BhaWRIb3VybHkgPSB0aGlzLmlzUGFpZEhvdXJseT8udmFsdWU7XHJcbiAgICBtb2RlbC5kYXlzID0gdGhpcy5kYXlzRm9ybUFycmF5LmNvbnRyb2xzLm1hcChjdHJsID0+IGN0cmwudmFsdWUpO1xyXG4gICAgdGhpcy51cGRhdGVUb3RhbEhvdXJzKCk7XHJcbiAgICBpZih0aGlzLmlzUGFpZEhvdXJseS52YWx1ZSA9PT0gJ1knKSB7XHJcbiAgICAgIGlmKG1vZGVsLnRvdGFsSG91cnMgPT09IDApe1xyXG4gICAgICAgIHRoaXMud2FnZUNhbGN1bGF0b3JGb3JtLmNvbnRyb2xzWydkYXlzJ10uc2V0RXJyb3JzKHsgdG90YWxIb3Vyc1plcm86IHRydWUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYobW9kZWwudG90YWxIb3VycyA+IDE2OCl7XHJcbiAgICAgICAgdGhpcy53YWdlQ2FsY3VsYXRvckZvcm0uY29udHJvbHNbJ2RheXMnXS5zZXRFcnJvcnMoeyBob3Vyc1BlcldlZWtFeGNlZWRlZDogdHJ1ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMud2FnZUNhbGN1bGF0b3JGb3JtLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0NhbGN1bGF0b3JQb3B1cCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNhdmVDbGlja2VkLmVtaXQobW9kZWwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy53YWdlQ2FsY3VsYXRvckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwoKSB7XHJcbiAgICBpZiAodGhpcy5pc0ZpcnN0VGltZUVudHJ5KSB7XHJcbiAgICAgIC8vIENhc2UgMTogTmV3IGVudHJ5IOKAlCByZXNldCBldmVyeXRoaW5nXHJcbiAgICAgIHRoaXMuZGF5c0Zvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKChncm91cDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgICAgZ3JvdXAuZ2V0KCdob3VycycpPy5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMud2FnZUNhbGN1bGF0b3JGb3JtLnBhdGNoVmFsdWUoeyBncm9zc0Vhcm5pbmdzOiAwIH0pO1xyXG5cclxuICAgICAgdGhpcy50b3RhbEhvdXJzQ2hhbmdlLmVtaXQoMCk7XHJcbiAgICAgIHRoaXMuZ3Jvc3NFYXJuaW5nc0NoYW5nZS5lbWl0KDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gQ2FzZSAyOiBFZGl0aW5nIGV4aXN0aW5nIGRhdGEg4oCUIHJlc3RvcmUgb3JpZ2luYWwgdmFsdWVzXHJcbiAgICAgIHRoaXMuZGF5c0Zvcm1BcnJheS5jbGVhcigpO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBkIG9mIHRoaXMud2FnZUNhbGN1bGF0b3JTYXZlZERhdGEuZGF5cykge1xyXG4gICAgICAgIHRoaXMuZGF5c0Zvcm1BcnJheS5wdXNoKHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgbGFiZWw6IGQubGFiZWwsXHJcbiAgICAgICAgICBkYXRlOiBkLmRhdGUsXHJcbiAgICAgICAgICBob3VyczogW2QuaG91cnNdXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLndhZ2VDYWxjdWxhdG9yRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICBwYXlSYXRlOiB0aGlzLndhZ2VDYWxjdWxhdG9yU2F2ZWREYXRhLnBheVJhdGUsXHJcbiAgICAgICAgb3RoZXJQYXk6IHRoaXMud2FnZUNhbGN1bGF0b3JTYXZlZERhdGEub3RoZXJQYXksXHJcbiAgICAgICAgZWFybmluZ3M6IHRoaXMud2FnZUNhbGN1bGF0b3JTYXZlZERhdGEuZWFybmluZ3MgfHwgMC4wMCxcclxuICAgICAgICBncm9zc0Vhcm5pbmdzOiB0aGlzLndhZ2VDYWxjdWxhdG9yU2F2ZWREYXRhLmdyb3NzRWFybmluZ3MgfHwgMC4wMCxcclxuICAgICAgICBob3Vyc1dvcmtlZDogdGhpcy53YWdlQ2FsY3VsYXRvclNhdmVkRGF0YS5ob3Vyc1dvcmtlZCxcclxuICAgICAgICBpc1BhaWRIb3VybHk6IHRoaXMud2FnZUNhbGN1bGF0b3JTYXZlZERhdGEuaXNQYWlkSG91cmx5XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gQ29ycmVjdGx5IGNhbGN1bGF0ZSB0b3RhbCBob3VycyBmcm9tIHNhdmVkIGRhdGFcclxuICAgICAgbGV0IHRvdGFsSG91cnMgPSAwO1xyXG4gICAgICBpZiAodGhpcy53YWdlQ2FsY3VsYXRvclNhdmVkRGF0YS5pc1BhaWRIb3VybHkgPT09ICdZJykge1xyXG4gICAgICAgIHRvdGFsSG91cnMgPSB0aGlzLndhZ2VDYWxjdWxhdG9yU2F2ZWREYXRhLmRheXMucmVkdWNlKChzdW0sIGQpID0+IHtcclxuICAgICAgICAgIHJldHVybiBzdW0gKyAoZC5ob3VycyB8fCAwKTtcclxuICAgICAgICB9LCAwKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0b3RhbEhvdXJzID0gdGhpcy53YWdlQ2FsY3VsYXRvclNhdmVkRGF0YS5ob3Vyc1dvcmtlZCB8fCAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRvdGFsSG91cnNDaGFuZ2UuZW1pdCh0b3RhbEhvdXJzKTtcclxuICAgICAgdGhpcy5ncm9zc0Vhcm5pbmdzQ2hhbmdlLmVtaXQodGhpcy53YWdlQ2FsY3VsYXRvclNhdmVkRGF0YS5ncm9zc0Vhcm5pbmdzIHx8IDApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd0NhbGN1bGF0b3JQb3B1cCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jYW5jZWxDbGlja2VkLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiPHAtZGlhbG9nIFt2aXNpYmxlXT1cInNob3dDYWxjdWxhdG9yUG9wdXBcIiBtb2RhbD1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgW2JyZWFrcG9pbnRzXT1cInsnOTYwcHgnOiAnOTB2dycsICc2NDBweCc6ICcxMDB2dyd9XCIgW3N0eWxlXT1cInt3aWR0aDogJzgwMHB4J31cIiBwb3NpdGlvbj1cInRvcFwiXHJcbiAgICBjbGFzcz1cImhlbHAtcGFnZS1zbGlkZVwiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ3YWdlQ2FsY3VsYXRvckZvcm1cIiAjd2FnZUNhbGN1bGF0b3JGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCI+XHJcbiAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpc1BhaWRIb3VybHlcIj57eyd3YWdlLmNhbGN1bGF0b3IucGFpZC5ob3VybHknfHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJ5ZXNOb09wdGlvblwiIFtmb3JtQ29udHJvbF09XCJpc1BhaWRIb3VybHlcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2lzUGFpZEhvdXJseScgW2Zvcm1dPVwid2FnZUNhbGN1bGF0b3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiaXNQYWlkSG91cmx5LnZhbHVlID09PSAnWSdcIj5cclxuICAgICAgICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7J3dhZ2UuY2FsY3VsYXRvci5ob3Vycy53b3JrZWQnfHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjQuNVwiPjwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMi41XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48Yj57eyd3YWdlLmNhbGN1bGF0b3IudG90YWwnfHRyYW5zbGF0ZX19PC9iPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJkYXlzLXJvd1wiIHNpemU9XCI4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzRm9ybUFycmF5LmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCIgW2Zvcm1Hcm91cF09XCJkYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7IGRheS5nZXQoJ2xhYmVsJyk/LnZhbHVlIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIFtmb3JtQ29udHJvbF09XCJkYXkuZ2V0KCdob3VycycpXCIgbW9kZT1cImRlY2ltYWxcIiBwbGFjZWhvbGRlcj1cIjAuMDBcIiBbbWluXT1cIjAuMDBcIiBbbWF4XT1cIjI0LjAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWlucHV0LXNtYWxsXCIgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjFcIiBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7IGRheS5nZXQoJ2RhdGUnKT8udmFsdWUgfX08L2lvbi1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09XCJ3YWdlQ2FsY3VsYXRvckZvcm0uZ2V0KCdkYXlzJylcIiBbZm9ybV09XCJ3YWdlQ2FsY3VsYXRvckZvcm1EaXJlY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyRGVmXT1cInsgdG90YWxIb3Vyc1plcm86ICd0b3RhbCBob3VycyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJywgaG91cnNQZXJXZWVrRXhjZWVkZWQ6ICd0b3RhbCBob3VycyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMTY4IGZvciB0aGUgd2VlaycgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIwLjVcIiBzdHlsZT1cInBhZGRpbmctdG9wOiAzNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj49IDwvYj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjMuNVwiIHN0eWxlPVwicGFkZGluZy10b3A6IDM1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxiPnt7IGNhbGN1bGF0ZVRvdGFsSG91cnMoKSB9fTwvYj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDwvaW9uLWdyaWQ+XHJcblxyXG4gICAgICAgICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMS41XCI+PC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7J3dhZ2UuY2FsY3VsYXRvci5wYXkucmF0ZSd8dHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxXCIgY2xhc3M9XCJyZWd1bGFyLXZpZXdcIj48L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjQuNVwiIHNpemVYcz1cIjRcIiBjbGFzcz1cIm1vYmlsZS12aWV3XCI+PC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7J3dhZ2UuY2FsY3VsYXRvci5lYXJuaW5ncyd8dHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjAuNVwiPjwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMVwiIGNsYXNzPVwiY2VudGVyLWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiWydmYXMnLCd4bWFyayddXCIgY2xhc3M9XCJhY3Rpb24taWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgW2Zvcm1Db250cm9sXT1cInBheVJhdGVcIiBtb2RlPVwiY3VycmVuY3lcIiBjdXJyZW5jeT1cIlVTRFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1pbnB1dC1tZWRpdW1cIiBwbGFjZWhvbGRlcj1cIiQwLjAwXCI+PC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDEwcHg7XCI+e3snd2FnZS5jYWxjdWxhdG9yLnBlci5ob3VyJ3x0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT1cIndhZ2VDYWxjdWxhdG9yRm9ybS5nZXQoJ3BheVJhdGUnKVwiIFtmb3JtXT1cIndhZ2VDYWxjdWxhdG9yRm9ybURpcmVjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyRGVmXT1cIntyZXF1aXJlZDogJ3JlcXVpcmVkJ31cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjMuNVwiIGNsYXNzPVwibW9iaWxlLXZpZXdcIj48L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjFcIiBjbGFzcz1cImNlbnRlci1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIlsnZmFzJywnZXF1YWxzJ11cIiBjbGFzcz1cImFjdGlvbi1pY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiM1wiIHN0eWxlPVwicGFkZGluZy10b3A6IDE1cHg7XCI+PGxhYmVsPnt7IGNhbGN1bGF0ZUVhcm5pbmdzKCkgfCBjdXJyZW5jeTogJ1VTRCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD48L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDwvaW9uLWdyaWQ+XHJcblxyXG4gICAgICAgICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMS41XCI+PC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbD57eyd3YWdlLmNhbGN1bGF0b3Iub3RoZXIucGF5J3x0cmFuc2xhdGV9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxXCIgY2xhc3M9XCJyZWd1bGFyLXZpZXdcIj48L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjMuNVwiIGNsYXNzPVwibW9iaWxlLXZpZXdcIj48L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjNcIiBzaXplWHM9XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyd3YWdlLmNhbGN1bGF0b3IuZ3Jvc3MuZWFybmluZ3MnfHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvdmVybGF5VGV4dF09XCInd2Vla2xpZXMudjIuZW1wbG95bWVudC5ydHcuaW5mby5wb3B1cC4xMDAwJyB8IHRyYW5zbGF0ZSB8IHRydXN0SHRtbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIiBjbGFzcz1cIm92ZXJsYXktaW5mb1wiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdyBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIwLjVcIj48L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjFcIiBjbGFzcz1cImNlbnRlci1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIlsnZmFsJywncGx1cyddXCIgY2xhc3M9XCJhY3Rpb24taWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgW2Zvcm1Db250cm9sXT1cIm90aGVyUGF5XCIgbW9kZT1cImN1cnJlbmN5XCIgY3VycmVuY3k9XCJVU0RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20taW5wdXQtbWVkaXVtXCI+PC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09XCJ3YWdlQ2FsY3VsYXRvckZvcm0uZ2V0KCdvdGhlclBheScpXCIgW2Zvcm1dPVwid2FnZUNhbGN1bGF0b3JGb3JtRGlyZWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJEZWZdPVwie3JlcXVpcmVkOiAncmVxdWlyZWQnfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiM1wiIGNsYXNzPVwibW9iaWxlLXZpZXdcIj48L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjFcIiBjbGFzcz1cImNlbnRlci1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIlsnZmFzJywnZXF1YWxzJ11cIiBjbGFzcz1cImFjdGlvbi1pY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiM1wiIHN0eWxlPVwicGFkZGluZy10b3A6IDE1cHg7XCI+e3sgY2FsY3VsYXRlR3Jvc3NFYXJuaW5ncygpIHwgY3VycmVuY3k6ICdVU0QnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpc1BhaWRIb3VybHkudmFsdWUgPT09ICdOJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMy41XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyd3YWdlLmNhbGN1bGF0b3IuaG91cnMud29ya2VkJ3x0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIFtmb3JtQ29udHJvbF09XCJob3Vyc1dvcmtlZFwiIHBsYWNlaG9sZGVyPVwiMC4wMFwiIFttaW5dPVwiMC4wMFwiIG1vZGU9XCJkZWNpbWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5GcmFjdGlvbkRpZ2l0c109XCIxXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIjJcIj48L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT1cIndhZ2VDYWxjdWxhdG9yRm9ybS5nZXQoJ2hvdXJzV29ya2VkJylcIiBbZm9ybV09XCJ3YWdlQ2FsY3VsYXRvckZvcm1EaXJlY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VyckRlZl09XCJ7cmVxdWlyZWQ6ICdyZXF1aXJlZCcsIGhvdXJzUGVyV2Vla0V4Y2VlZGVkOiAndG90YWwgaG91cnMgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIDE2OCBmb3IgdGhlIHdlZWsnfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzLjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7J3dhZ2UuY2FsY3VsYXRvci5lYXJuaW5ncyd8dHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMVwiPjwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMy41XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtcIj57eyd3YWdlLmNhbGN1bGF0b3Iub3RoZXIucGF5J3x0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxXCI+PC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdyb3NzLW1vYmlsZS12aWV3XCI+e3snd2FnZS5jYWxjdWxhdG9yLmdyb3NzLmVhcm5pbmdzJ3x0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3ZlcmxheVRleHRdPVwiJ3dlZWtsaWVzLnYyLmVtcGxveW1lbnQucnR3LmluZm8ucG9wdXAuMTAwMCcgfCB0cmFuc2xhdGUgfCB0cnVzdEh0bWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCIgY2xhc3M9XCJvdmVybGF5LWluZm9cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjMuNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciAgW2Zvcm1Db250cm9sXT1cImVhcm5pbmdzXCIgbW9kZT1cImN1cnJlbmN5XCIgY3VycmVuY3k9XCJVU0RcIiBsb2NhbGU9XCJlbi1VU1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIjAuMDBcIiBwbGFjZWhvbGRlcj1cIiQwLjAwXCI+PC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nZWFybmluZ3MnIFtmb3JtXT1cIndhZ2VDYWxjdWxhdG9yRm9ybURpcmVjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxXCIgY2xhc3M9XCJjZW50ZXItaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJbJ2ZhbCcsJ3BsdXMnXVwiIGNsYXNzPVwiYWN0aW9uLWljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzLjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgW2Zvcm1Db250cm9sXT1cIm90aGVyUGF5XCIgbW9kZT1cImN1cnJlbmN5XCIgY3VycmVuY3k9XCJVU0RcIiBsb2NhbGU9XCJlbi1VU1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIjAuMDBcIiBwbGFjZWhvbGRlcj1cIiQwLjAwXCI+PC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMVwiIGNsYXNzPVwiY2VudGVyLWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiWydmYXMnLCdlcXVhbHMnXVwiIGNsYXNzPVwiYWN0aW9uLWljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT1cImRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nLXRvcDogOHB4O1wiPnt7IGNhbGN1bGF0ZUdyb3NzRWFybmluZ3MoKSB8IGN1cnJlbmN5OiAnVVNEJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG5cclxuICAgIDwvZm9ybT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiB0eXBlPVwicmVzZXRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25DYW5jZWwoKVwiPnt7J3dhZ2UuY2FsY3VsYXRvci5jYW5jZWwnfHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDQwcHg7XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZSgpXCI+e3snd2FnZS5jYWxjdWxhdG9yLnNhdmUnfHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWRpYWxvZz4iXX0=