@reusa/ngx-reusa-app-lib 0.0.731 → 0.1.731

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 (472) hide show
  1. package/{esm2020 → esm2022}/lib/annimations/app-animations.mjs +36 -36
  2. package/esm2022/lib/components/add-employer/add-employer.component.mjs +3027 -0
  3. package/esm2022/lib/components/add-participant/add-participant.component.mjs +394 -0
  4. package/esm2022/lib/components/add-payment/add-payment.component.mjs +187 -0
  5. package/esm2022/lib/components/address/address.component.mjs +487 -0
  6. package/esm2022/lib/components/bank-details/bank-details.component.mjs +276 -0
  7. package/esm2022/lib/components/captcha/captcha.component.mjs +181 -0
  8. package/esm2022/lib/components/card/card.component.mjs +55 -0
  9. package/esm2022/lib/components/contact-us/contact-us.component.mjs +970 -0
  10. package/esm2022/lib/components/content/content.component.mjs +61 -0
  11. package/esm2022/lib/components/correspondence-download/correspondence-download.component.mjs +83 -0
  12. package/esm2022/lib/components/dashboard-card/dashboard-card.component.mjs +223 -0
  13. package/esm2022/lib/components/dependent-grid/dependent-grid.component.mjs +292 -0
  14. package/esm2022/lib/components/disclosure/disclosure.component.mjs +60 -0
  15. package/esm2022/lib/components/dropdown/dropdown.component.mjs +1974 -0
  16. package/esm2022/lib/components/dropdown/dropdown.interface.mjs +2 -0
  17. package/esm2022/lib/components/email-update/email-update.component.mjs +283 -0
  18. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +794 -0
  19. package/esm2022/lib/components/error/error.component.mjs +86 -0
  20. package/esm2022/lib/components/fav-menu/fav-menu.component.mjs +163 -0
  21. package/{esm2020 → esm2022}/lib/components/file-download/file-download.component.mjs +104 -104
  22. package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +315 -0
  23. package/esm2022/lib/components/footer/footer.component.mjs +332 -0
  24. package/esm2022/lib/components/header/header.component.mjs +558 -0
  25. package/esm2022/lib/components/help/help.component.mjs +49 -0
  26. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +65 -0
  27. package/{esm2020 → esm2022}/lib/components/info/info.component.mjs +187 -188
  28. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +206 -0
  29. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +193 -0
  30. package/esm2022/lib/components/maintenance-detector/maintenance-detector.component.mjs +43 -0
  31. package/esm2022/lib/components/mask/mask.component.mjs +48 -0
  32. package/esm2022/lib/components/menu/menu.component.mjs +423 -0
  33. package/esm2022/lib/components/mfa/mfa.component.mjs +444 -0
  34. package/esm2022/lib/components/mfa-popup/mfa-popup.component.mjs +50 -0
  35. package/esm2022/lib/components/money-expect/money-expect.component.mjs +90 -0
  36. package/esm2022/lib/components/msg/msg.component.mjs +48 -0
  37. package/esm2022/lib/components/news/news.component.mjs +90 -0
  38. package/esm2022/lib/components/overlay-info/overlay-info.component.mjs +213 -0
  39. package/esm2022/lib/components/page/page.component.mjs +136 -0
  40. package/esm2022/lib/components/profile/profile.component.mjs +177 -0
  41. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +63 -0
  42. package/esm2022/lib/components/questionnaire/AppValidators.mjs +487 -0
  43. package/{esm2020 → esm2022}/lib/components/questionnaire/FbConstants.mjs +7 -7
  44. package/{esm2020 → esm2022}/lib/components/questionnaire/SelectItem.mjs +1 -1
  45. package/esm2022/lib/components/questionnaire/account-success/account-success.page.mjs +256 -0
  46. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +475 -0
  47. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +1094 -0
  48. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +1882 -0
  49. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +1263 -0
  50. package/esm2022/lib/components/questionnaire/form-builder/form-builder.page.mjs +244 -0
  51. package/{esm2020 → esm2022}/lib/components/questionnaire/input-focus.directive.mjs +44 -44
  52. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +256 -0
  53. package/{esm2020 → esm2022}/lib/components/questionnaire/question-base.mjs +2 -2
  54. package/{esm2020 → esm2022}/lib/components/questionnaire/question-control.service.mjs +420 -419
  55. package/{esm2020 → esm2022}/lib/components/questionnaire/question.service.mjs +33 -33
  56. package/esm2022/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +262 -0
  57. package/{esm2020 → esm2022}/lib/components/read-more/read-more.component.mjs +67 -67
  58. package/esm2022/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +690 -0
  59. package/esm2022/lib/components/search-employer/search-employer.component.mjs +142 -0
  60. package/esm2022/lib/components/select/select.component.mjs +154 -0
  61. package/esm2022/lib/components/ssn/ssn.component.mjs +44 -0
  62. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +151 -0
  63. package/esm2022/lib/components/test/test.component.mjs +19 -0
  64. package/esm2022/lib/components/user-login/user-login.component.mjs +398 -0
  65. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +442 -0
  66. package/esm2022/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +307 -0
  67. package/{esm2020 → esm2022}/lib/directives/auto-focus/auto-focus.directive.mjs +31 -31
  68. package/{esm2020 → esm2022}/lib/directives/caps-lock.directive.mjs +38 -38
  69. package/{esm2020 → esm2022}/lib/directives/required-roles/required-roles.directive.mjs +30 -30
  70. package/{esm2020 → esm2022}/lib/enums/EmailStatusEnum.mjs +8 -8
  71. package/{esm2020 → esm2022}/lib/guards/auth.guard.mjs +138 -138
  72. package/esm2022/lib/guards/no-login/no-login.guard.mjs +21 -0
  73. package/{esm2020 → esm2022}/lib/interceptors/error-interceptor/http-error-interceptor.mjs +107 -107
  74. package/{esm2020 → esm2022}/lib/interceptors/header-interceptor/http-header.interceptor.mjs +99 -99
  75. package/{esm2020 → esm2022}/lib/models/AddressComponentModel.mjs +2 -2
  76. package/{esm2020 → esm2022}/lib/models/BankDetailsComponentModel.mjs +2 -2
  77. package/{esm2020 → esm2022}/lib/models/BankDetailsModel.mjs +3 -3
  78. package/{esm2020 → esm2022}/lib/models/CinRequalificationCriteriaModel.mjs +3 -3
  79. package/{esm2020 → esm2022}/lib/models/EmployerDetailSearchResult.mjs +5 -5
  80. package/{esm2020 → esm2022}/lib/models/ErrorModel.mjs +5 -5
  81. package/{esm2020 → esm2022}/lib/models/FileModel.mjs +1 -1
  82. package/{esm2020 → esm2022}/lib/models/LibConstants.mjs +119 -119
  83. package/{esm2020 → esm2022}/lib/models/NewsAndAnnouncementModel.mjs +2 -2
  84. package/{esm2020 → esm2022}/lib/models/NotificationModel.mjs +5 -5
  85. package/{esm2020 → esm2022}/lib/models/OtpAuthModel.mjs +2 -2
  86. package/{esm2020 → esm2022}/lib/models/PaymentComponentModel.mjs +2 -2
  87. package/esm2022/lib/models/RequalifyLiftPageModel.mjs +11 -0
  88. package/{esm2020 → esm2022}/lib/models/SsaVerificationModel.mjs +3 -3
  89. package/{esm2020 → esm2022}/lib/models/TrendModel.mjs +2 -2
  90. package/{esm2020 → esm2022}/lib/models/UserDetailsModel.mjs +2 -2
  91. package/{esm2020 → esm2022}/lib/models/UserModel.mjs +5 -5
  92. package/{esm2020 → esm2022}/lib/models/case/CaseAttachmentModel.mjs +3 -3
  93. package/{esm2020 → esm2022}/lib/models/claimant/ClaimantModel.mjs +2 -2
  94. package/{esm2020 → esm2022}/lib/models/claimant/JobResultsData.mjs +2 -2
  95. package/{esm2020 → esm2022}/lib/models/claimant/MatchingJobs.mjs +2 -2
  96. package/{esm2020 → esm2022}/lib/models/claimant/ResetPasswordModel.mjs +2 -2
  97. package/esm2022/lib/models/cmp/CaseCoreModel.mjs +3 -0
  98. package/{esm2020 → esm2022}/lib/models/cmp/ComplaintCategoryModel.mjs +3 -3
  99. package/{esm2020 → esm2022}/lib/models/cmp/ComplaintCategoryOutputModel.mjs +5 -5
  100. package/esm2022/lib/models/cmp/ContactUsModel.mjs +3 -0
  101. package/{esm2020 → esm2022}/lib/models/cmp/EmailTemplateModel.mjs +3 -3
  102. package/esm2022/lib/models/cmp/contactUsInqueryModel.mjs +7 -0
  103. package/{esm2020 → esm2022}/lib/models/cmp/messageRourceModel.mjs +3 -3
  104. package/esm2022/lib/models/dashboard-model.mjs +3 -0
  105. package/esm2022/lib/models/dependent.model.mjs +8 -0
  106. package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimAppEmpRequestModel.mjs +2 -2
  107. package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimAppEmpResponseModel.mjs +7 -7
  108. package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimAppEmployerDetailsModel.mjs +5 -5
  109. package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimOnlyEmployerDataModel.mjs +2 -2
  110. package/esm2022/lib/models/questionnaire/ComboModel.mjs +337 -0
  111. package/{esm2020 → esm2022}/lib/models/questionnaire/ElementsModel.mjs +7 -7
  112. package/{esm2020 → esm2022}/lib/models/questionnaire/EmployerDetailSearchResult.mjs +2 -2
  113. package/{esm2020 → esm2022}/lib/models/questionnaire/EmployerWagesModel.mjs +3 -3
  114. package/{esm2020 → esm2022}/lib/models/questionnaire/FBConfigModel.mjs +5 -5
  115. package/{esm2020 → esm2022}/lib/models/questionnaire/KeyValueModel.mjs +2 -2
  116. package/{esm2020 → esm2022}/lib/models/questionnaire/LegalDiscaimarModel.mjs +2 -2
  117. package/{esm2020 → esm2022}/lib/models/questionnaire/LoaderModel.mjs +2 -2
  118. package/{esm2020 → esm2022}/lib/models/questionnaire/PollingStatusModel.mjs +3 -3
  119. package/{esm2020 → esm2022}/lib/models/questionnaire/QtrYearEmployerWageModel.mjs +2 -2
  120. package/{esm2020 → esm2022}/lib/models/questionnaire/QuestionnaireQueryModel.mjs +7 -7
  121. package/{esm2020 → esm2022}/lib/models/questionnaire/QuestionnaireReturnModel.mjs +10 -10
  122. package/{esm2020 → esm2022}/lib/models/questionnaire/QuestionnaireSaveModel.mjs +2 -2
  123. package/esm2022/lib/models/questionnaire/RequalifyLiftIssuesModel.mjs +3 -0
  124. package/{esm2020 → esm2022}/lib/models/questionnaire/ServiceActionResponseModel.mjs +3 -3
  125. package/esm2022/lib/models/questionnaire/StatusModel.mjs +6 -0
  126. package/{esm2020 → esm2022}/lib/models/questionnaire/SuccessPageElement.mjs +2 -2
  127. package/esm2022/lib/models/questionnaire/UI512AResponseModel.mjs +3 -0
  128. package/{esm2020 → esm2022}/lib/models/questionnaire/ValidationModel.mjs +2 -2
  129. package/esm2022/lib/ngx-reusa-app-lib.component.mjs +23 -0
  130. package/esm2022/lib/ngx-reusa-app-lib.module.mjs +402 -0
  131. package/{esm2020 → esm2022}/lib/ngx-reusa-app-lib.service.mjs +14 -14
  132. package/{esm2020 → esm2022}/lib/pages/BasePage.mjs +76 -76
  133. package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +81 -0
  134. package/esm2022/lib/pages/common/change-password/change-password.page.mjs +463 -0
  135. package/esm2022/lib/pages/common/landing/landing.component.mjs +208 -0
  136. package/esm2022/lib/pages/common/landing2/landing2.component.mjs +244 -0
  137. package/esm2022/lib/pages/common/login/login.component.mjs +526 -0
  138. package/esm2022/lib/pages/common/not-found/not-found.page.mjs +24 -0
  139. package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +306 -0
  140. package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +61 -0
  141. package/esm2022/lib/pages/common/unauthorized/unauthorized.page.mjs +24 -0
  142. package/esm2022/lib/pages/popovers/language/language.page.mjs +61 -0
  143. package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +204 -0
  144. package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +129 -0
  145. package/esm2022/lib/pages/popovers/user-search/user-search.component.mjs +251 -0
  146. package/{esm2020 → esm2022}/lib/pipes/filter.pipe.mjs +30 -30
  147. package/{esm2020 → esm2022}/lib/pipes/mask/mask.email.pipe.mjs +23 -23
  148. package/{esm2020 → esm2022}/lib/pipes/proper-case/proper-case.pipe.mjs +27 -27
  149. package/{esm2020 → esm2022}/lib/pipes/translate/dynamic-translate.pipe.mjs +44 -44
  150. package/{esm2020 → esm2022}/lib/pipes/trust-html/trust-html.pipe.mjs +20 -20
  151. package/{esm2020 → esm2022}/lib/services/base-service.mjs +49 -49
  152. package/{esm2020 → esm2022}/lib/services/captcha/captcha.service.mjs +46 -46
  153. package/{esm2020 → esm2022}/lib/services/case-service/case.service.mjs +47 -47
  154. package/{esm2020 → esm2022}/lib/services/chatbot/chatbot.service.mjs +257 -257
  155. package/esm2022/lib/services/chatbot/script.const.mjs +42 -0
  156. package/{esm2020 → esm2022}/lib/services/claimant/claimant.service.mjs +31 -31
  157. package/esm2022/lib/services/claimant-context/claimant-context.service.mjs +48 -0
  158. package/{esm2020 → esm2022}/lib/services/claimant-service/claimant.service.mjs +47 -47
  159. package/{esm2020 → esm2022}/lib/services/claims/claims.service.mjs +99 -99
  160. package/{esm2020 → esm2022}/lib/services/cmp-service/cmp.service.mjs +84 -84
  161. package/{esm2020 → esm2022}/lib/services/dms-service/dms.service.mjs +60 -60
  162. package/{esm2020 → esm2022}/lib/services/fpjs/fingerprint.service.mjs +70 -70
  163. package/{esm2020 → esm2022}/lib/services/google-analytics/google-analytics.service.mjs +29 -29
  164. package/{esm2020 → esm2022}/lib/services/help/help.service.mjs +63 -63
  165. package/{esm2020 → esm2022}/lib/services/idle/idle.service.mjs +159 -159
  166. package/{esm2020 → esm2022}/lib/services/logger/logger.service.mjs +67 -67
  167. package/esm2022/lib/services/login/login.service.mjs +330 -0
  168. package/{esm2020 → esm2022}/lib/services/maintenance/maintenance.service.mjs +21 -21
  169. package/{esm2020 → esm2022}/lib/services/notification/notification.service.mjs +113 -113
  170. package/{esm2020 → esm2022}/lib/services/questionnaire/questionnaire.service.mjs +69 -69
  171. package/{esm2020 → esm2022}/lib/services/questionnaire/validation.service.mjs +59 -59
  172. package/{esm2020 → esm2022}/lib/services/security-service/security.service.mjs +35 -35
  173. package/{esm2020 → esm2022}/lib/services/tour/tour.service.mjs +60 -60
  174. package/{esm2020 → esm2022}/lib/services/util/util.service.mjs +424 -424
  175. package/esm2022/lib/validations/AppRegex.mjs +45 -0
  176. package/{esm2020 → esm2022}/lib/validations/AppValidators.mjs +165 -165
  177. package/{esm2020 → esm2022}/public-api.mjs +131 -131
  178. package/{esm2020 → esm2022}/reusa-ngx-reusa-app-lib.mjs +4 -4
  179. package/{fesm2020 → fesm2022}/reusa-ngx-reusa-app-lib.mjs +27966 -27877
  180. package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -0
  181. package/index.d.ts +5 -5
  182. package/lib/annimations/app-animations.d.ts +3 -3
  183. package/lib/components/add-employer/add-employer.component.d.ts +276 -276
  184. package/lib/components/add-participant/add-participant.component.d.ts +45 -45
  185. package/lib/components/add-payment/add-payment.component.d.ts +33 -33
  186. package/lib/components/address/address.component.d.ts +68 -68
  187. package/lib/components/address/address.component.d.ts.map +1 -1
  188. package/lib/components/bank-details/bank-details.component.d.ts +39 -39
  189. package/lib/components/captcha/captcha.component.d.ts +44 -44
  190. package/lib/components/card/card.component.d.ts +11 -11
  191. package/lib/components/contact-us/contact-us.component.d.ts +105 -107
  192. package/lib/components/contact-us/contact-us.component.d.ts.map +1 -1
  193. package/lib/components/content/content.component.d.ts +13 -13
  194. package/lib/components/correspondence-download/correspondence-download.component.d.ts +21 -21
  195. package/lib/components/dashboard-card/dashboard-card.component.d.ts +25 -25
  196. package/lib/components/dashboard-card/dashboard-card.component.d.ts.map +1 -1
  197. package/lib/components/dependent-grid/dependent-grid.component.d.ts +35 -35
  198. package/lib/components/disclosure/disclosure.component.d.ts +12 -12
  199. package/lib/components/dropdown/dropdown.component.d.ts +581 -207
  200. package/lib/components/dropdown/dropdown.component.d.ts.map +1 -1
  201. package/lib/components/dropdown/dropdown.interface.d.ts +155 -0
  202. package/lib/components/dropdown/dropdown.interface.d.ts.map +1 -0
  203. package/lib/components/email-update/email-update.component.d.ts +31 -31
  204. package/lib/components/employer-grid/employer-grid.component.d.ts +95 -94
  205. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
  206. package/lib/components/error/error.component.d.ts +17 -17
  207. package/lib/components/fav-menu/fav-menu.component.d.ts +21 -21
  208. package/lib/components/file-download/file-download.component.d.ts +22 -22
  209. package/lib/components/file-uploader/file-uploader.component.d.ts +47 -47
  210. package/lib/components/footer/footer.component.d.ts +36 -36
  211. package/lib/components/header/header.component.d.ts +59 -58
  212. package/lib/components/header/header.component.d.ts.map +1 -1
  213. package/lib/components/help/help.component.d.ts +10 -10
  214. package/lib/components/idle-detector/idle-detector.component.d.ts +15 -15
  215. package/lib/components/info/info.component.d.ts +22 -22
  216. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts +21 -21
  217. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +33 -33
  218. package/lib/components/maintenance-detector/maintenance-detector.component.d.ts +15 -15
  219. package/lib/components/mask/mask.component.d.ts +11 -11
  220. package/lib/components/menu/menu.component.d.ts +43 -43
  221. package/lib/components/mfa/mfa.component.d.ts +59 -59
  222. package/lib/components/mfa-popup/mfa-popup.component.d.ts +16 -16
  223. package/lib/components/money-expect/money-expect.component.d.ts +18 -18
  224. package/lib/components/msg/msg.component.d.ts +10 -10
  225. package/lib/components/news/news.component.d.ts +14 -14
  226. package/lib/components/overlay-info/overlay-info.component.d.ts +34 -34
  227. package/lib/components/page/page.component.d.ts +23 -23
  228. package/lib/components/profile/profile.component.d.ts +28 -28
  229. package/lib/components/profile-redirect/profile-redirect.component.d.ts +13 -13
  230. package/lib/components/questionnaire/AppValidators.d.ts +14 -14
  231. package/lib/components/questionnaire/AppValidators.d.ts.map +1 -1
  232. package/lib/components/questionnaire/FbConstants.d.ts +7 -7
  233. package/lib/components/questionnaire/SelectItem.d.ts +4 -4
  234. package/lib/components/questionnaire/account-success/account-success.page.d.ts +53 -53
  235. package/lib/components/questionnaire/common-success/common-success.page.d.ts +75 -75
  236. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
  237. package/lib/components/questionnaire/dynamic-form-panel.component.d.ts +46 -46
  238. package/lib/components/questionnaire/dynamic-form-question.component.d.ts +82 -82
  239. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  240. package/lib/components/questionnaire/dynamic-form.component.d.ts +130 -130
  241. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
  242. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts +66 -64
  243. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts.map +1 -1
  244. package/lib/components/questionnaire/input-focus.directive.d.ts +11 -11
  245. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts +38 -38
  246. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts.map +1 -1
  247. package/lib/components/questionnaire/question-base.d.ts +16 -16
  248. package/lib/components/questionnaire/question-control.service.d.ts +19 -19
  249. package/lib/components/questionnaire/question-control.service.d.ts.map +1 -1
  250. package/lib/components/questionnaire/question.service.d.ts +18 -18
  251. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts +75 -74
  252. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts.map +1 -1
  253. package/lib/components/read-more/read-more.component.d.ts +14 -14
  254. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts +67 -67
  255. package/lib/components/search-employer/search-employer.component.d.ts +37 -36
  256. package/lib/components/search-employer/search-employer.component.d.ts.map +1 -1
  257. package/lib/components/select/select.component.d.ts +55 -55
  258. package/lib/components/ssn/ssn.component.d.ts +11 -11
  259. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts +22 -22
  260. package/lib/components/test/test.component.d.ts +8 -8
  261. package/lib/components/user-login/user-login.component.d.ts +48 -48
  262. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +59 -59
  263. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts +45 -45
  264. package/lib/directives/auto-focus/auto-focus.directive.d.ts +12 -12
  265. package/lib/directives/caps-lock.directive.d.ts +11 -11
  266. package/lib/directives/required-roles/required-roles.directive.d.ts +14 -14
  267. package/lib/enums/EmailStatusEnum.d.ts +7 -7
  268. package/lib/guards/auth.guard.d.ts +28 -28
  269. package/lib/guards/auth.guard.d.ts.map +1 -1
  270. package/lib/guards/no-login/no-login.guard.d.ts +11 -11
  271. package/lib/guards/no-login/no-login.guard.d.ts.map +1 -1
  272. package/lib/interceptors/error-interceptor/http-error-interceptor.d.ts +22 -22
  273. package/lib/interceptors/header-interceptor/http-header.interceptor.d.ts +21 -21
  274. package/lib/interceptors/header-interceptor/http-header.interceptor.d.ts.map +1 -1
  275. package/lib/models/AddressComponentModel.d.ts +12 -12
  276. package/lib/models/BankDetailsComponentModel.d.ts +11 -11
  277. package/lib/models/BankDetailsModel.d.ts +4 -4
  278. package/lib/models/CinRequalificationCriteriaModel.d.ts +10 -10
  279. package/lib/models/EmployerDetailSearchResult.d.ts +47 -47
  280. package/lib/models/ErrorModel.d.ts +6 -6
  281. package/lib/models/FileModel.d.ts +4 -4
  282. package/lib/models/LibConstants.d.ts +112 -112
  283. package/lib/models/NewsAndAnnouncementModel.d.ts +5 -5
  284. package/lib/models/NotificationModel.d.ts +10 -10
  285. package/lib/models/OtpAuthModel.d.ts +6 -6
  286. package/lib/models/PaymentComponentModel.d.ts +7 -7
  287. package/lib/models/RequalifyLiftPageModel.d.ts +11 -11
  288. package/lib/models/SsaVerificationModel.d.ts +8 -8
  289. package/lib/models/TrendModel.d.ts +13 -13
  290. package/lib/models/UserDetailsModel.d.ts +9 -9
  291. package/lib/models/UserModel.d.ts +46 -46
  292. package/lib/models/case/CaseAttachmentModel.d.ts +5 -5
  293. package/lib/models/claimant/ClaimantModel.d.ts +22 -22
  294. package/lib/models/claimant/JobResultsData.d.ts +7 -7
  295. package/lib/models/claimant/MatchingJobs.d.ts +12 -12
  296. package/lib/models/claimant/ResetPasswordModel.d.ts +8 -8
  297. package/lib/models/cmp/CaseCoreModel.d.ts +20 -20
  298. package/lib/models/cmp/ComplaintCategoryModel.d.ts +8 -8
  299. package/lib/models/cmp/ComplaintCategoryOutputModel.d.ts +5 -5
  300. package/lib/models/cmp/ContactUsModel.d.ts +22 -22
  301. package/lib/models/cmp/EmailTemplateModel.d.ts +6 -6
  302. package/lib/models/cmp/contactUsInqueryModel.d.ts +46 -46
  303. package/lib/models/cmp/messageRourceModel.d.ts +5 -5
  304. package/lib/models/dashboard-model.d.ts +43 -43
  305. package/lib/models/dependent.model.d.ts +11 -18
  306. package/lib/models/dependent.model.d.ts.map +1 -1
  307. package/lib/models/questionnaire/ClaimAppEmpRequestModel.d.ts +8 -8
  308. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts +16 -16
  309. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts +151 -151
  310. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts +16 -16
  311. package/lib/models/questionnaire/ComboModel.d.ts +85 -85
  312. package/lib/models/questionnaire/ElementsModel.d.ts +68 -68
  313. package/lib/models/questionnaire/EmployerDetailSearchResult.d.ts +17 -17
  314. package/lib/models/questionnaire/EmployerWagesModel.d.ts +4 -4
  315. package/lib/models/questionnaire/FBConfigModel.d.ts +11 -11
  316. package/lib/models/questionnaire/KeyValueModel.d.ts +10 -10
  317. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts +10 -10
  318. package/lib/models/questionnaire/LoaderModel.d.ts +4 -4
  319. package/lib/models/questionnaire/PollingStatusModel.d.ts +6 -6
  320. package/lib/models/questionnaire/QtrYearEmployerWageModel.d.ts +8 -8
  321. package/lib/models/questionnaire/QuestionnaireQueryModel.d.ts +23 -23
  322. package/lib/models/questionnaire/QuestionnaireReturnModel.d.ts +20 -20
  323. package/lib/models/questionnaire/QuestionnaireSaveModel.d.ts +24 -24
  324. package/lib/models/questionnaire/RequalifyLiftIssuesModel.d.ts +13 -13
  325. package/lib/models/questionnaire/ServiceActionResponseModel.d.ts +6 -6
  326. package/lib/models/questionnaire/StatusModel.d.ts +15 -15
  327. package/lib/models/questionnaire/SuccessPageElement.d.ts +8 -8
  328. package/lib/models/questionnaire/UI512AResponseModel.d.ts +12 -12
  329. package/lib/models/questionnaire/ValidationModel.d.ts +17 -17
  330. package/lib/ngx-reusa-app-lib.component.d.ts +8 -8
  331. package/lib/ngx-reusa-app-lib.module.d.ts +148 -145
  332. package/lib/ngx-reusa-app-lib.module.d.ts.map +1 -1
  333. package/lib/ngx-reusa-app-lib.service.d.ts +6 -6
  334. package/lib/pages/BasePage.d.ts +26 -26
  335. package/lib/pages/common/accessibility-policy/accessibility-policy.page.d.ts +11 -11
  336. package/lib/pages/common/change-password/change-password.page.d.ts +40 -40
  337. package/lib/pages/common/landing/landing.component.d.ts +24 -24
  338. package/lib/pages/common/landing2/landing2.component.d.ts +30 -30
  339. package/lib/pages/common/login/login.component.d.ts +64 -64
  340. package/lib/pages/common/not-found/not-found.page.d.ts +8 -8
  341. package/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.d.ts +11 -11
  342. package/lib/pages/common/security-policy/security-policy.page.d.ts +11 -11
  343. package/lib/pages/common/unauthorized/unauthorized.page.d.ts +8 -8
  344. package/lib/pages/popovers/language/language.page.d.ts +16 -16
  345. package/lib/pages/popovers/my-notifications/my-notifications.page.d.ts +21 -21
  346. package/lib/pages/popovers/my-profile/my-profile.page.d.ts +20 -20
  347. package/lib/pages/popovers/user-search/user-search.component.d.ts +31 -31
  348. package/lib/pipes/filter.pipe.d.ts +7 -7
  349. package/lib/pipes/mask/mask.email.pipe.d.ts +10 -10
  350. package/lib/pipes/proper-case/proper-case.pipe.d.ts +8 -8
  351. package/lib/pipes/translate/dynamic-translate.pipe.d.ts +10 -10
  352. package/lib/pipes/trust-html/trust-html.pipe.d.ts +10 -10
  353. package/lib/services/base-service.d.ts +92 -92
  354. package/lib/services/captcha/captcha.service.d.ts +15 -15
  355. package/lib/services/case-service/case.service.d.ts +19 -19
  356. package/lib/services/chatbot/chatbot.service.d.ts +60 -60
  357. package/lib/services/chatbot/script.const.d.ts +15 -15
  358. package/lib/services/claimant/claimant.service.d.ts +17 -17
  359. package/lib/services/claimant-context/claimant-context.service.d.ts +18 -18
  360. package/lib/services/claimant-context/claimant-context.service.d.ts.map +1 -1
  361. package/lib/services/claimant-service/claimant.service.d.ts +19 -19
  362. package/lib/services/claims/claims.service.d.ts +39 -39
  363. package/lib/services/cmp-service/cmp.service.d.ts +33 -33
  364. package/lib/services/dms-service/dms.service.d.ts +23 -23
  365. package/lib/services/fpjs/fingerprint.service.d.ts +18 -18
  366. package/lib/services/google-analytics/google-analytics.service.d.ts +8 -8
  367. package/lib/services/help/help.service.d.ts +25 -25
  368. package/lib/services/help/help.service.d.ts.map +1 -1
  369. package/lib/services/idle/idle.service.d.ts +43 -43
  370. package/lib/services/logger/logger.service.d.ts +31 -31
  371. package/lib/services/logger/logger.service.d.ts.map +1 -1
  372. package/lib/services/login/login.service.d.ts +75 -75
  373. package/lib/services/login/login.service.d.ts.map +1 -1
  374. package/lib/services/maintenance/maintenance.service.d.ts +15 -15
  375. package/lib/services/notification/notification.service.d.ts +38 -38
  376. package/lib/services/questionnaire/questionnaire.service.d.ts +35 -35
  377. package/lib/services/questionnaire/validation.service.d.ts +81 -81
  378. package/lib/services/security-service/security.service.d.ts +14 -14
  379. package/lib/services/tour/tour.service.d.ts +24 -24
  380. package/lib/services/util/util.service.d.ts +190 -190
  381. package/lib/validations/AppRegex.d.ts +43 -43
  382. package/lib/validations/AppValidators.d.ts +53 -53
  383. package/package.json +6 -11
  384. package/public-api.d.ts +121 -121
  385. package/esm2020/lib/components/add-employer/add-employer.component.mjs +0 -3099
  386. package/esm2020/lib/components/add-participant/add-participant.component.mjs +0 -396
  387. package/esm2020/lib/components/add-payment/add-payment.component.mjs +0 -186
  388. package/esm2020/lib/components/address/address.component.mjs +0 -480
  389. package/esm2020/lib/components/bank-details/bank-details.component.mjs +0 -275
  390. package/esm2020/lib/components/captcha/captcha.component.mjs +0 -180
  391. package/esm2020/lib/components/card/card.component.mjs +0 -54
  392. package/esm2020/lib/components/contact-us/contact-us.component.mjs +0 -1004
  393. package/esm2020/lib/components/content/content.component.mjs +0 -60
  394. package/esm2020/lib/components/correspondence-download/correspondence-download.component.mjs +0 -82
  395. package/esm2020/lib/components/dashboard-card/dashboard-card.component.mjs +0 -219
  396. package/esm2020/lib/components/dependent-grid/dependent-grid.component.mjs +0 -297
  397. package/esm2020/lib/components/disclosure/disclosure.component.mjs +0 -59
  398. package/esm2020/lib/components/dropdown/dropdown.component.mjs +0 -1552
  399. package/esm2020/lib/components/email-update/email-update.component.mjs +0 -287
  400. package/esm2020/lib/components/employer-grid/employer-grid.component.mjs +0 -800
  401. package/esm2020/lib/components/error/error.component.mjs +0 -85
  402. package/esm2020/lib/components/fav-menu/fav-menu.component.mjs +0 -163
  403. package/esm2020/lib/components/file-uploader/file-uploader.component.mjs +0 -317
  404. package/esm2020/lib/components/footer/footer.component.mjs +0 -337
  405. package/esm2020/lib/components/header/header.component.mjs +0 -566
  406. package/esm2020/lib/components/help/help.component.mjs +0 -48
  407. package/esm2020/lib/components/idle-detector/idle-detector.component.mjs +0 -64
  408. package/esm2020/lib/components/job-search-result-page/job-search-result-page.component.mjs +0 -209
  409. package/esm2020/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +0 -192
  410. package/esm2020/lib/components/maintenance-detector/maintenance-detector.component.mjs +0 -42
  411. package/esm2020/lib/components/mask/mask.component.mjs +0 -48
  412. package/esm2020/lib/components/menu/menu.component.mjs +0 -430
  413. package/esm2020/lib/components/mfa/mfa.component.mjs +0 -451
  414. package/esm2020/lib/components/mfa-popup/mfa-popup.component.mjs +0 -49
  415. package/esm2020/lib/components/money-expect/money-expect.component.mjs +0 -89
  416. package/esm2020/lib/components/msg/msg.component.mjs +0 -48
  417. package/esm2020/lib/components/news/news.component.mjs +0 -89
  418. package/esm2020/lib/components/overlay-info/overlay-info.component.mjs +0 -235
  419. package/esm2020/lib/components/page/page.component.mjs +0 -138
  420. package/esm2020/lib/components/profile/profile.component.mjs +0 -182
  421. package/esm2020/lib/components/profile-redirect/profile-redirect.component.mjs +0 -62
  422. package/esm2020/lib/components/questionnaire/AppValidators.mjs +0 -523
  423. package/esm2020/lib/components/questionnaire/account-success/account-success.page.mjs +0 -259
  424. package/esm2020/lib/components/questionnaire/common-success/common-success.page.mjs +0 -483
  425. package/esm2020/lib/components/questionnaire/dynamic-form-panel.component.mjs +0 -1137
  426. package/esm2020/lib/components/questionnaire/dynamic-form-question.component.mjs +0 -1948
  427. package/esm2020/lib/components/questionnaire/dynamic-form.component.mjs +0 -1257
  428. package/esm2020/lib/components/questionnaire/form-builder/form-builder.page.mjs +0 -240
  429. package/esm2020/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +0 -259
  430. package/esm2020/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +0 -260
  431. package/esm2020/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +0 -703
  432. package/esm2020/lib/components/search-employer/search-employer.component.mjs +0 -142
  433. package/esm2020/lib/components/select/select.component.mjs +0 -153
  434. package/esm2020/lib/components/ssn/ssn.component.mjs +0 -43
  435. package/esm2020/lib/components/ssn-reverify/ssn-reverify.component.mjs +0 -150
  436. package/esm2020/lib/components/test/test.component.mjs +0 -18
  437. package/esm2020/lib/components/user-login/user-login.component.mjs +0 -401
  438. package/esm2020/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +0 -445
  439. package/esm2020/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +0 -308
  440. package/esm2020/lib/guards/no-login/no-login.guard.mjs +0 -21
  441. package/esm2020/lib/models/RequalifyLiftPageModel.mjs +0 -11
  442. package/esm2020/lib/models/cmp/CaseCoreModel.mjs +0 -3
  443. package/esm2020/lib/models/cmp/ContactUsModel.mjs +0 -3
  444. package/esm2020/lib/models/cmp/contactUsInqueryModel.mjs +0 -7
  445. package/esm2020/lib/models/dashboard-model.mjs +0 -3
  446. package/esm2020/lib/models/dependent.model.mjs +0 -8
  447. package/esm2020/lib/models/questionnaire/ComboModel.mjs +0 -337
  448. package/esm2020/lib/models/questionnaire/RequalifyLiftIssuesModel.mjs +0 -3
  449. package/esm2020/lib/models/questionnaire/StatusModel.mjs +0 -6
  450. package/esm2020/lib/models/questionnaire/UI512AResponseModel.mjs +0 -3
  451. package/esm2020/lib/ngx-reusa-app-lib.component.mjs +0 -22
  452. package/esm2020/lib/ngx-reusa-app-lib.module.mjs +0 -390
  453. package/esm2020/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +0 -80
  454. package/esm2020/lib/pages/common/change-password/change-password.page.mjs +0 -477
  455. package/esm2020/lib/pages/common/landing/landing.component.mjs +0 -207
  456. package/esm2020/lib/pages/common/landing2/landing2.component.mjs +0 -244
  457. package/esm2020/lib/pages/common/login/login.component.mjs +0 -542
  458. package/esm2020/lib/pages/common/not-found/not-found.page.mjs +0 -23
  459. package/esm2020/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +0 -305
  460. package/esm2020/lib/pages/common/security-policy/security-policy.page.mjs +0 -60
  461. package/esm2020/lib/pages/common/unauthorized/unauthorized.page.mjs +0 -23
  462. package/esm2020/lib/pages/popovers/language/language.page.mjs +0 -60
  463. package/esm2020/lib/pages/popovers/my-notifications/my-notifications.page.mjs +0 -205
  464. package/esm2020/lib/pages/popovers/my-profile/my-profile.page.mjs +0 -129
  465. package/esm2020/lib/pages/popovers/user-search/user-search.component.mjs +0 -253
  466. package/esm2020/lib/services/chatbot/script.const.mjs +0 -42
  467. package/esm2020/lib/services/claimant-context/claimant-context.service.mjs +0 -47
  468. package/esm2020/lib/services/login/login.service.mjs +0 -330
  469. package/esm2020/lib/validations/AppRegex.mjs +0 -45
  470. package/fesm2015/reusa-ngx-reusa-app-lib.mjs +0 -30728
  471. package/fesm2015/reusa-ngx-reusa-app-lib.mjs.map +0 -1
  472. package/fesm2020/reusa-ngx-reusa-app-lib.mjs.map +0 -1
@@ -1,1137 +0,0 @@
1
- import { Component, Input, ViewEncapsulation } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import { ValidationModel } from '../../models/questionnaire/ValidationModel';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./question.service";
6
- import * as i2 from "../../services/questionnaire/validation.service";
7
- import * as i3 from "../../services/util/util.service";
8
- import * as i4 from "@ionic/angular";
9
- import * as i5 from "@angular/common";
10
- import * as i6 from "primeng/api";
11
- import * as i7 from "@angular/forms";
12
- import * as i8 from "primeng/autocomplete";
13
- import * as i9 from "primeng/dialog";
14
- import * as i10 from "primeng/password";
15
- import * as i11 from "primeng/inputtext";
16
- import * as i12 from "primeng/inputmask";
17
- import * as i13 from "primeng/calendar";
18
- import * as i14 from "primeng/selectbutton";
19
- import * as i15 from "../file-uploader/file-uploader.component";
20
- import * as i16 from "../overlay-info/overlay-info.component";
21
- import * as i17 from "../money-expect/money-expect.component";
22
- function DynamicFormPanelComponent_p_dialog_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {
23
- const _r27 = i0.ɵɵgetCurrentView();
24
- i0.ɵɵelementStart(0, "ion-button", 10);
25
- i0.ɵɵlistener("click", function DynamicFormPanelComponent_p_dialog_1_ng_template_3_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r26.reject()); });
26
- i0.ɵɵtext(1);
27
- i0.ɵɵelementEnd();
28
- i0.ɵɵelementStart(2, "ion-button", 11);
29
- i0.ɵɵlistener("click", function DynamicFormPanelComponent_p_dialog_1_ng_template_3_Template_ion_button_click_2_listener() { i0.ɵɵrestoreView(_r27); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.accept()); });
30
- i0.ɵɵtext(3);
31
- i0.ɵɵelementEnd();
32
- } if (rf & 2) {
33
- const ctx_r25 = i0.ɵɵnextContext(2);
34
- i0.ɵɵadvance(1);
35
- i0.ɵɵtextInterpolate1(" ", ctx_r25.popUpNoActionLabel, " ");
36
- i0.ɵɵadvance(2);
37
- i0.ɵɵtextInterpolate1(" ", ctx_r25.popUpYesActionLabel, " ");
38
- } }
39
- const _c0 = function () { return { width: "80vw" }; };
40
- function DynamicFormPanelComponent_p_dialog_1_Template(rf, ctx) { if (rf & 1) {
41
- const _r30 = i0.ɵɵgetCurrentView();
42
- i0.ɵɵelementStart(0, "p-dialog", 8);
43
- i0.ɵɵlistener("visibleChange", function DynamicFormPanelComponent_p_dialog_1_Template_p_dialog_visibleChange_0_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r29 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r29.displayPosition = $event); });
44
- i0.ɵɵelementStart(1, "p");
45
- i0.ɵɵtext(2);
46
- i0.ɵɵelementEnd();
47
- i0.ɵɵtemplate(3, DynamicFormPanelComponent_p_dialog_1_ng_template_3_Template, 4, 2, "ng-template", 9);
48
- i0.ɵɵelementEnd();
49
- } if (rf & 2) {
50
- const ctx_r0 = i0.ɵɵnextContext();
51
- i0.ɵɵstyleMap(i0.ɵɵpureFunction0(10, _c0));
52
- i0.ɵɵproperty("header", ctx_r0.popUpHeader)("visible", ctx_r0.displayPosition)("position", ctx_r0.position)("modal", true)("baseZIndex", 5000)("draggable", false)("resizable", false);
53
- i0.ɵɵadvance(2);
54
- i0.ɵɵtextInterpolate1("", ctx_r0.popUpText, " ");
55
- } }
56
- function DynamicFormPanelComponent_div_2_label_1_Template(rf, ctx) { if (rf & 1) {
57
- i0.ɵɵelementStart(0, "label");
58
- i0.ɵɵtext(1);
59
- i0.ɵɵelementEnd();
60
- } if (rf & 2) {
61
- const ctx_r31 = i0.ɵɵnextContext(2);
62
- i0.ɵɵattribute("for", ctx_r31.question.name);
63
- i0.ɵɵadvance(1);
64
- i0.ɵɵtextInterpolate1(" ", ctx_r31.question.title, "");
65
- } }
66
- function DynamicFormPanelComponent_div_2_Template(rf, ctx) { if (rf & 1) {
67
- i0.ɵɵelementStart(0, "div", 12);
68
- i0.ɵɵtemplate(1, DynamicFormPanelComponent_div_2_label_1_Template, 2, 2, "label", 3);
69
- i0.ɵɵelementEnd();
70
- } if (rf & 2) {
71
- const ctx_r1 = i0.ɵɵnextContext();
72
- i0.ɵɵadvance(1);
73
- i0.ɵɵproperty("ngIf", ctx_r1.question.indent === 1 && ctx_r1.question.type != "html");
74
- } }
75
- function DynamicFormPanelComponent_div_3_Template(rf, ctx) { if (rf & 1) {
76
- i0.ɵɵelementStart(0, "div", 12);
77
- i0.ɵɵtext(1);
78
- i0.ɵɵelementEnd();
79
- } if (rf & 2) {
80
- const ctx_r2 = i0.ɵɵnextContext();
81
- i0.ɵɵadvance(1);
82
- i0.ɵɵtextInterpolate1(" ", ctx_r2.question.title, " ");
83
- } }
84
- function DynamicFormPanelComponent_div_4_Template(rf, ctx) { if (rf & 1) {
85
- i0.ɵɵelementStart(0, "div", 12);
86
- i0.ɵɵtext(1);
87
- i0.ɵɵelementEnd();
88
- } if (rf & 2) {
89
- const ctx_r3 = i0.ɵɵnextContext();
90
- i0.ɵɵadvance(1);
91
- i0.ɵɵtextInterpolate1(" ", ctx_r3.question.title, " ");
92
- } }
93
- function DynamicFormPanelComponent_div_5_money_expect_1_Template(rf, ctx) { if (rf & 1) {
94
- i0.ɵɵelement(0, "money-expect");
95
- } }
96
- function DynamicFormPanelComponent_div_5_app_regular_employer_date_2_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵelement(0, "app-regular-employer-date", 14);
98
- } if (rf & 2) {
99
- const ctx_r33 = i0.ɵɵnextContext(2);
100
- i0.ɵɵproperty("form", ctx_r33.form);
101
- } }
102
- function DynamicFormPanelComponent_div_5_Template(rf, ctx) { if (rf & 1) {
103
- i0.ɵɵelementStart(0, "div");
104
- i0.ɵɵtemplate(1, DynamicFormPanelComponent_div_5_money_expect_1_Template, 1, 0, "money-expect", 3);
105
- i0.ɵɵtemplate(2, DynamicFormPanelComponent_div_5_app_regular_employer_date_2_Template, 1, 1, "app-regular-employer-date", 13);
106
- i0.ɵɵelementEnd();
107
- } if (rf & 2) {
108
- const ctx_r4 = i0.ɵɵnextContext();
109
- i0.ɵɵadvance(1);
110
- i0.ɵɵproperty("ngIf", ctx_r4.question.componentName === "money-expect");
111
- i0.ɵɵadvance(1);
112
- i0.ɵɵproperty("ngIf", ctx_r4.question.componentName === "app-regular-emp-date");
113
- } }
114
- function DynamicFormPanelComponent_div_6_Template(rf, ctx) { if (rf & 1) {
115
- i0.ɵɵelement(0, "div", 15);
116
- } if (rf & 2) {
117
- const ctx_r5 = i0.ɵɵnextContext();
118
- i0.ɵɵproperty("innerHTML", ctx_r5.question.html, i0.ɵɵsanitizeHtml);
119
- } }
120
- function DynamicFormPanelComponent_div_7_Template(rf, ctx) { if (rf & 1) {
121
- i0.ɵɵelement(0, "div", 16);
122
- } if (rf & 2) {
123
- const ctx_r6 = i0.ɵɵnextContext();
124
- i0.ɵɵproperty("innerHTML", ctx_r6.question.html, i0.ɵɵsanitizeHtml);
125
- } }
126
- function DynamicFormPanelComponent_div_8_Template(rf, ctx) { if (rf & 1) {
127
- i0.ɵɵelementStart(0, "div");
128
- i0.ɵɵelement(1, "p-calendar", 17);
129
- i0.ɵɵelementEnd();
130
- } if (rf & 2) {
131
- const ctx_r7 = i0.ɵɵnextContext();
132
- i0.ɵɵadvance(1);
133
- i0.ɵɵproperty("formControlName", ctx_r7.question.name)("id", ctx_r7.question.name)("monthNavigator", true)("yearNavigator", true)("readonlyInput", true)("showIcon", true)("minDate", ctx_r7.minDate)("maxDate", ctx_r7.maxDate);
134
- } }
135
- function DynamicFormPanelComponent_div_9_Template(rf, ctx) { if (rf & 1) {
136
- i0.ɵɵelementStart(0, "div");
137
- i0.ɵɵelement(1, "p-calendar", 18);
138
- i0.ɵɵelementEnd();
139
- } if (rf & 2) {
140
- const ctx_r8 = i0.ɵɵnextContext();
141
- i0.ɵɵadvance(1);
142
- i0.ɵɵproperty("formControlName", ctx_r8.question.name)("id", ctx_r8.question.name)("monthNavigator", true)("yearNavigator", true)("inputId", ctx_r8.question.name)("readonlyInput", true)("showIcon", true);
143
- } }
144
- function DynamicFormPanelComponent_div_10_Template(rf, ctx) { if (rf & 1) {
145
- i0.ɵɵelementStart(0, "div");
146
- i0.ɵɵelement(1, "p-calendar", 19);
147
- i0.ɵɵelementEnd();
148
- } if (rf & 2) {
149
- const ctx_r9 = i0.ɵɵnextContext();
150
- i0.ɵɵadvance(1);
151
- i0.ɵɵproperty("formControlName", ctx_r9.question.name)("id", ctx_r9.question.name)("monthNavigator", true)("yearNavigator", true)("inputId", ctx_r9.question.name)("maxDate", ctx_r9.maxDate)("readonlyInput", true)("showIcon", true);
152
- } }
153
- function DynamicFormPanelComponent_div_11_Template(rf, ctx) { if (rf & 1) {
154
- const _r35 = i0.ɵɵgetCurrentView();
155
- i0.ɵɵelementStart(0, "div")(1, "p-calendar", 20);
156
- i0.ɵɵlistener("onShow", function DynamicFormPanelComponent_div_11_Template_p_calendar_onShow_1_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r34 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r34.setMinDate($event, ctx_r34.question)); });
157
- i0.ɵɵelementEnd()();
158
- } if (rf & 2) {
159
- const ctx_r10 = i0.ɵɵnextContext();
160
- i0.ɵɵadvance(1);
161
- i0.ɵɵproperty("formControlName", ctx_r10.question.name)("id", ctx_r10.question.name)("monthNavigator", true)("yearNavigator", true)("inputId", ctx_r10.question.name)("minDate", ctx_r10.minDate)("readonlyInput", true)("showIcon", true);
162
- } }
163
- function DynamicFormPanelComponent_div_12_div_3_Template(rf, ctx) { if (rf & 1) {
164
- i0.ɵɵelementStart(0, "div", 24);
165
- i0.ɵɵelement(1, "app-overlay-info", 25);
166
- i0.ɵɵelementEnd();
167
- } if (rf & 2) {
168
- const ctx_r36 = i0.ɵɵnextContext(2);
169
- i0.ɵɵadvance(1);
170
- i0.ɵɵproperty("overlayText", ctx_r36.question.description);
171
- } }
172
- function DynamicFormPanelComponent_div_12_Template(rf, ctx) { if (rf & 1) {
173
- i0.ɵɵelementStart(0, "div")(1, "div", 21);
174
- i0.ɵɵelement(2, "p-password", 22);
175
- i0.ɵɵtemplate(3, DynamicFormPanelComponent_div_12_div_3_Template, 2, 1, "div", 23);
176
- i0.ɵɵelementEnd()();
177
- } if (rf & 2) {
178
- const ctx_r11 = i0.ɵɵnextContext();
179
- i0.ɵɵadvance(2);
180
- i0.ɵɵproperty("id", ctx_r11.question.name)("formControlName", ctx_r11.question.name)("toggleMask", true)("maxLength", ctx_r11.question.maxLength);
181
- i0.ɵɵadvance(1);
182
- i0.ɵɵproperty("ngIf", ctx_r11.question.description);
183
- } }
184
- function DynamicFormPanelComponent_div_13_div_3_Template(rf, ctx) { if (rf & 1) {
185
- i0.ɵɵelementStart(0, "div", 24);
186
- i0.ɵɵelement(1, "app-overlay-info", 25);
187
- i0.ɵɵelementEnd();
188
- } if (rf & 2) {
189
- const ctx_r37 = i0.ɵɵnextContext(2);
190
- i0.ɵɵadvance(1);
191
- i0.ɵɵproperty("overlayText", ctx_r37.question.description);
192
- } }
193
- function DynamicFormPanelComponent_div_13_Template(rf, ctx) { if (rf & 1) {
194
- i0.ɵɵelementStart(0, "div")(1, "div", 21);
195
- i0.ɵɵelement(2, "p-password", 22);
196
- i0.ɵɵtemplate(3, DynamicFormPanelComponent_div_13_div_3_Template, 2, 1, "div", 23);
197
- i0.ɵɵelementEnd()();
198
- } if (rf & 2) {
199
- const ctx_r12 = i0.ɵɵnextContext();
200
- i0.ɵɵadvance(2);
201
- i0.ɵɵproperty("id", ctx_r12.question.name)("formControlName", ctx_r12.question.name)("toggleMask", true)("maxLength", ctx_r12.question.maxLength);
202
- i0.ɵɵadvance(1);
203
- i0.ɵɵproperty("ngIf", ctx_r12.question.description);
204
- } }
205
- function DynamicFormPanelComponent_div_14_input_2_Template(rf, ctx) { if (rf & 1) {
206
- i0.ɵɵelement(0, "input", 34);
207
- } if (rf & 2) {
208
- const ctx_r38 = i0.ɵɵnextContext(2);
209
- i0.ɵɵproperty("id", ctx_r38.question.name)("formControlName", ctx_r38.question.name)("size", ctx_r38.question.size)("maxLength", ctx_r38.question.maxLength);
210
- } }
211
- function DynamicFormPanelComponent_div_14_input_3_Template(rf, ctx) { if (rf & 1) {
212
- i0.ɵɵelement(0, "input", 35);
213
- } if (rf & 2) {
214
- const ctx_r39 = i0.ɵɵnextContext(2);
215
- i0.ɵɵproperty("id", ctx_r39.question.name)("formControlName", ctx_r39.question.name)("size", ctx_r39.question.size);
216
- } }
217
- function DynamicFormPanelComponent_div_14_input_4_Template(rf, ctx) { if (rf & 1) {
218
- i0.ɵɵelement(0, "input", 36);
219
- } if (rf & 2) {
220
- const ctx_r40 = i0.ɵɵnextContext(2);
221
- i0.ɵɵproperty("id", ctx_r40.question.name)("formControlName", ctx_r40.question.name)("maxLength", ctx_r40.question.maxLength);
222
- } }
223
- function DynamicFormPanelComponent_div_14_input_5_Template(rf, ctx) { if (rf & 1) {
224
- i0.ɵɵelement(0, "input", 37);
225
- } if (rf & 2) {
226
- const ctx_r41 = i0.ɵɵnextContext(2);
227
- i0.ɵɵproperty("id", ctx_r41.question.name)("formControlName", ctx_r41.question.name);
228
- } }
229
- function DynamicFormPanelComponent_div_14_input_6_Template(rf, ctx) { if (rf & 1) {
230
- const _r48 = i0.ɵɵgetCurrentView();
231
- i0.ɵɵelementStart(0, "input", 38);
232
- i0.ɵɵlistener("blur", function DynamicFormPanelComponent_div_14_input_6_Template_input_blur_0_listener() { i0.ɵɵrestoreView(_r48); const ctx_r47 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r47.validate(ctx_r47.question)); });
233
- i0.ɵɵelementEnd();
234
- } if (rf & 2) {
235
- const ctx_r42 = i0.ɵɵnextContext(2);
236
- i0.ɵɵproperty("id", ctx_r42.question.name)("formControlName", ctx_r42.question.name)("size", ctx_r42.question.size)("maxLength", ctx_r42.question.maxLength);
237
- } }
238
- function DynamicFormPanelComponent_div_14_input_7_Template(rf, ctx) { if (rf & 1) {
239
- i0.ɵɵelement(0, "input", 39);
240
- } if (rf & 2) {
241
- const ctx_r43 = i0.ɵɵnextContext(2);
242
- i0.ɵɵproperty("id", ctx_r43.question.name)("formControlName", ctx_r43.question.name)("size", ctx_r43.question.size);
243
- } }
244
- function DynamicFormPanelComponent_div_14_input_8_Template(rf, ctx) { if (rf & 1) {
245
- i0.ɵɵelement(0, "input", 40);
246
- } if (rf & 2) {
247
- const ctx_r44 = i0.ɵɵnextContext(2);
248
- i0.ɵɵproperty("id", ctx_r44.question.name)("formControlName", ctx_r44.question.name)("maxLength", ctx_r44.question.maxLength);
249
- } }
250
- function DynamicFormPanelComponent_div_14_input_9_Template(rf, ctx) { if (rf & 1) {
251
- i0.ɵɵelement(0, "input", 41);
252
- } if (rf & 2) {
253
- const ctx_r45 = i0.ɵɵnextContext(2);
254
- i0.ɵɵproperty("id", ctx_r45.question.name)("formControlName", ctx_r45.question.name);
255
- } }
256
- function DynamicFormPanelComponent_div_14_div_10_Template(rf, ctx) { if (rf & 1) {
257
- i0.ɵɵelementStart(0, "div", 24);
258
- i0.ɵɵelement(1, "app-overlay-info", 25);
259
- i0.ɵɵelementEnd();
260
- } if (rf & 2) {
261
- const ctx_r46 = i0.ɵɵnextContext(2);
262
- i0.ɵɵadvance(1);
263
- i0.ɵɵproperty("overlayText", ctx_r46.question.description);
264
- } }
265
- function DynamicFormPanelComponent_div_14_Template(rf, ctx) { if (rf & 1) {
266
- i0.ɵɵelementStart(0, "div")(1, "div", 21);
267
- i0.ɵɵtemplate(2, DynamicFormPanelComponent_div_14_input_2_Template, 1, 4, "input", 26);
268
- i0.ɵɵtemplate(3, DynamicFormPanelComponent_div_14_input_3_Template, 1, 3, "input", 27);
269
- i0.ɵɵtemplate(4, DynamicFormPanelComponent_div_14_input_4_Template, 1, 3, "input", 28);
270
- i0.ɵɵtemplate(5, DynamicFormPanelComponent_div_14_input_5_Template, 1, 2, "input", 29);
271
- i0.ɵɵtemplate(6, DynamicFormPanelComponent_div_14_input_6_Template, 1, 4, "input", 30);
272
- i0.ɵɵtemplate(7, DynamicFormPanelComponent_div_14_input_7_Template, 1, 3, "input", 31);
273
- i0.ɵɵtemplate(8, DynamicFormPanelComponent_div_14_input_8_Template, 1, 3, "input", 32);
274
- i0.ɵɵtemplate(9, DynamicFormPanelComponent_div_14_input_9_Template, 1, 2, "input", 33);
275
- i0.ɵɵtemplate(10, DynamicFormPanelComponent_div_14_div_10_Template, 2, 1, "div", 23);
276
- i0.ɵɵelementEnd()();
277
- } if (rf & 2) {
278
- const ctx_r13 = i0.ɵɵnextContext();
279
- i0.ɵɵadvance(2);
280
- i0.ɵɵproperty("ngIf", ctx_r13.question.inputType && ctx_r13.question.inputType === "text" && !ctx_r13.question.isRequired && ctx_r13.question.size && ctx_r13.question.maxLength);
281
- i0.ɵɵadvance(1);
282
- i0.ɵɵproperty("ngIf", ctx_r13.question.inputType && ctx_r13.question.inputType === "text" && !ctx_r13.question.isRequired && ctx_r13.question.size && !ctx_r13.question.maxLength);
283
- i0.ɵɵadvance(1);
284
- i0.ɵɵproperty("ngIf", ctx_r13.question.inputType && ctx_r13.question.inputType === "text" && !ctx_r13.question.isRequired && !ctx_r13.question.size && ctx_r13.question.maxLength);
285
- i0.ɵɵadvance(1);
286
- i0.ɵɵproperty("ngIf", ctx_r13.question.inputType && ctx_r13.question.inputType === "text" && !ctx_r13.question.isRequired && !ctx_r13.question.size && !ctx_r13.question.maxLength);
287
- i0.ɵɵadvance(1);
288
- i0.ɵɵproperty("ngIf", ctx_r13.question.inputType && ctx_r13.question.inputType === "text" && ctx_r13.question.isRequired && ctx_r13.question.size && ctx_r13.question.maxLength);
289
- i0.ɵɵadvance(1);
290
- i0.ɵɵproperty("ngIf", ctx_r13.question.inputType && ctx_r13.question.inputType === "text" && ctx_r13.question.isRequired && ctx_r13.question.size && !ctx_r13.question.maxLength);
291
- i0.ɵɵadvance(1);
292
- i0.ɵɵproperty("ngIf", ctx_r13.question.inputType && ctx_r13.question.inputType === "text" && ctx_r13.question.isRequired && !ctx_r13.question.size && ctx_r13.question.maxLength);
293
- i0.ɵɵadvance(1);
294
- i0.ɵɵproperty("ngIf", ctx_r13.question.inputType && ctx_r13.question.inputType === "text" && ctx_r13.question.isRequired && !ctx_r13.question.size && !ctx_r13.question.maxLength);
295
- i0.ɵɵadvance(1);
296
- i0.ɵɵproperty("ngIf", ctx_r13.question.description);
297
- } }
298
- function DynamicFormPanelComponent_div_15_input_2_Template(rf, ctx) { if (rf & 1) {
299
- i0.ɵɵelement(0, "input", 34);
300
- } if (rf & 2) {
301
- const ctx_r49 = i0.ɵɵnextContext(2);
302
- i0.ɵɵproperty("id", ctx_r49.question.name)("formControlName", ctx_r49.question.name)("size", ctx_r49.question.size)("maxLength", ctx_r49.question.maxLength);
303
- } }
304
- function DynamicFormPanelComponent_div_15_input_3_Template(rf, ctx) { if (rf & 1) {
305
- i0.ɵɵelement(0, "input", 35);
306
- } if (rf & 2) {
307
- const ctx_r50 = i0.ɵɵnextContext(2);
308
- i0.ɵɵproperty("id", ctx_r50.question.name)("formControlName", ctx_r50.question.name)("size", ctx_r50.question.size);
309
- } }
310
- function DynamicFormPanelComponent_div_15_input_4_Template(rf, ctx) { if (rf & 1) {
311
- i0.ɵɵelement(0, "input", 36);
312
- } if (rf & 2) {
313
- const ctx_r51 = i0.ɵɵnextContext(2);
314
- i0.ɵɵproperty("id", ctx_r51.question.name)("formControlName", ctx_r51.question.name)("maxLength", ctx_r51.question.maxLength);
315
- } }
316
- function DynamicFormPanelComponent_div_15_input_5_Template(rf, ctx) { if (rf & 1) {
317
- i0.ɵɵelement(0, "input", 37);
318
- } if (rf & 2) {
319
- const ctx_r52 = i0.ɵɵnextContext(2);
320
- i0.ɵɵproperty("id", ctx_r52.question.name)("formControlName", ctx_r52.question.name);
321
- } }
322
- function DynamicFormPanelComponent_div_15_div_6_Template(rf, ctx) { if (rf & 1) {
323
- i0.ɵɵelementStart(0, "div", 24);
324
- i0.ɵɵelement(1, "app-overlay-info", 25);
325
- i0.ɵɵelementEnd();
326
- } if (rf & 2) {
327
- const ctx_r53 = i0.ɵɵnextContext(2);
328
- i0.ɵɵadvance(1);
329
- i0.ɵɵproperty("overlayText", ctx_r53.question.description);
330
- } }
331
- function DynamicFormPanelComponent_div_15_Template(rf, ctx) { if (rf & 1) {
332
- i0.ɵɵelementStart(0, "div")(1, "div", 21);
333
- i0.ɵɵtemplate(2, DynamicFormPanelComponent_div_15_input_2_Template, 1, 4, "input", 26);
334
- i0.ɵɵtemplate(3, DynamicFormPanelComponent_div_15_input_3_Template, 1, 3, "input", 27);
335
- i0.ɵɵtemplate(4, DynamicFormPanelComponent_div_15_input_4_Template, 1, 3, "input", 28);
336
- i0.ɵɵtemplate(5, DynamicFormPanelComponent_div_15_input_5_Template, 1, 2, "input", 29);
337
- i0.ɵɵtemplate(6, DynamicFormPanelComponent_div_15_div_6_Template, 2, 1, "div", 23);
338
- i0.ɵɵelementEnd()();
339
- } if (rf & 2) {
340
- const ctx_r14 = i0.ɵɵnextContext();
341
- i0.ɵɵadvance(2);
342
- i0.ɵɵproperty("ngIf", ctx_r14.question.inputType && ctx_r14.question.inputType === "text" && !ctx_r14.question.isRequired && ctx_r14.question.size && ctx_r14.question.maxLength);
343
- i0.ɵɵadvance(1);
344
- i0.ɵɵproperty("ngIf", ctx_r14.question.inputType && ctx_r14.question.inputType === "text" && !ctx_r14.question.isRequired && ctx_r14.question.size && !ctx_r14.question.maxLength);
345
- i0.ɵɵadvance(1);
346
- i0.ɵɵproperty("ngIf", ctx_r14.question.inputType && ctx_r14.question.inputType === "text" && !ctx_r14.question.isRequired && !ctx_r14.question.size && ctx_r14.question.maxLength);
347
- i0.ɵɵadvance(1);
348
- i0.ɵɵproperty("ngIf", ctx_r14.question.inputType && ctx_r14.question.inputType === "text" && !ctx_r14.question.isRequired && !ctx_r14.question.size && !ctx_r14.question.maxLength);
349
- i0.ɵɵadvance(1);
350
- i0.ɵɵproperty("ngIf", ctx_r14.question.description);
351
- } }
352
- function DynamicFormPanelComponent_div_16_p_inputMask_2_Template(rf, ctx) { if (rf & 1) {
353
- i0.ɵɵelement(0, "p-inputMask", 44);
354
- } if (rf & 2) {
355
- const ctx_r54 = i0.ɵɵnextContext(2);
356
- i0.ɵɵproperty("id", ctx_r54.question.name)("formControlName", ctx_r54.question.name);
357
- } }
358
- function DynamicFormPanelComponent_div_16_p_inputMask_3_Template(rf, ctx) { if (rf & 1) {
359
- i0.ɵɵelement(0, "p-inputMask", 45);
360
- } if (rf & 2) {
361
- const ctx_r55 = i0.ɵɵnextContext(2);
362
- i0.ɵɵproperty("id", ctx_r55.question.name)("formControlName", ctx_r55.question.name);
363
- } }
364
- function DynamicFormPanelComponent_div_16_div_4_Template(rf, ctx) { if (rf & 1) {
365
- i0.ɵɵelementStart(0, "div", 24);
366
- i0.ɵɵelement(1, "app-overlay-info", 25);
367
- i0.ɵɵelementEnd();
368
- } if (rf & 2) {
369
- const ctx_r56 = i0.ɵɵnextContext(2);
370
- i0.ɵɵadvance(1);
371
- i0.ɵɵproperty("overlayText", ctx_r56.question.description);
372
- } }
373
- function DynamicFormPanelComponent_div_16_Template(rf, ctx) { if (rf & 1) {
374
- i0.ɵɵelementStart(0, "div")(1, "div", 21);
375
- i0.ɵɵtemplate(2, DynamicFormPanelComponent_div_16_p_inputMask_2_Template, 1, 2, "p-inputMask", 42);
376
- i0.ɵɵtemplate(3, DynamicFormPanelComponent_div_16_p_inputMask_3_Template, 1, 2, "p-inputMask", 43);
377
- i0.ɵɵtemplate(4, DynamicFormPanelComponent_div_16_div_4_Template, 2, 1, "div", 23);
378
- i0.ɵɵelementEnd()();
379
- } if (rf & 2) {
380
- const ctx_r15 = i0.ɵɵnextContext();
381
- i0.ɵɵadvance(2);
382
- i0.ɵɵproperty("ngIf", ctx_r15.question.inputType && ctx_r15.question.inputType === "text" && !ctx_r15.question.isRequired);
383
- i0.ɵɵadvance(1);
384
- i0.ɵɵproperty("ngIf", ctx_r15.question.inputType && ctx_r15.question.inputType === "text" && ctx_r15.question.isRequired);
385
- i0.ɵɵadvance(1);
386
- i0.ɵɵproperty("ngIf", ctx_r15.question.description);
387
- } }
388
- function DynamicFormPanelComponent_div_17_p_inputMask_2_Template(rf, ctx) { if (rf & 1) {
389
- i0.ɵɵelement(0, "p-inputMask", 48);
390
- } if (rf & 2) {
391
- const ctx_r57 = i0.ɵɵnextContext(2);
392
- i0.ɵɵproperty("id", ctx_r57.question.name)("formControlName", ctx_r57.question.name);
393
- } }
394
- function DynamicFormPanelComponent_div_17_p_inputMask_3_Template(rf, ctx) { if (rf & 1) {
395
- i0.ɵɵelement(0, "p-inputMask", 49);
396
- } if (rf & 2) {
397
- const ctx_r58 = i0.ɵɵnextContext(2);
398
- i0.ɵɵproperty("id", ctx_r58.question.name)("formControlName", ctx_r58.question.name);
399
- } }
400
- function DynamicFormPanelComponent_div_17_div_4_Template(rf, ctx) { if (rf & 1) {
401
- i0.ɵɵelementStart(0, "div", 24);
402
- i0.ɵɵelement(1, "app-overlay-info", 25);
403
- i0.ɵɵelementEnd();
404
- } if (rf & 2) {
405
- const ctx_r59 = i0.ɵɵnextContext(2);
406
- i0.ɵɵadvance(1);
407
- i0.ɵɵproperty("overlayText", ctx_r59.question.description);
408
- } }
409
- function DynamicFormPanelComponent_div_17_Template(rf, ctx) { if (rf & 1) {
410
- i0.ɵɵelementStart(0, "div")(1, "div", 21);
411
- i0.ɵɵtemplate(2, DynamicFormPanelComponent_div_17_p_inputMask_2_Template, 1, 2, "p-inputMask", 46);
412
- i0.ɵɵtemplate(3, DynamicFormPanelComponent_div_17_p_inputMask_3_Template, 1, 2, "p-inputMask", 47);
413
- i0.ɵɵtemplate(4, DynamicFormPanelComponent_div_17_div_4_Template, 2, 1, "div", 23);
414
- i0.ɵɵelementEnd()();
415
- } if (rf & 2) {
416
- const ctx_r16 = i0.ɵɵnextContext();
417
- i0.ɵɵadvance(2);
418
- i0.ɵɵproperty("ngIf", ctx_r16.question.isRequired);
419
- i0.ɵɵadvance(1);
420
- i0.ɵɵproperty("ngIf", !ctx_r16.question.isRequired);
421
- i0.ɵɵadvance(1);
422
- i0.ɵɵproperty("ngIf", ctx_r16.question.description);
423
- } }
424
- function DynamicFormPanelComponent_div_18_input_2_Template(rf, ctx) { if (rf & 1) {
425
- i0.ɵɵelement(0, "input", 51);
426
- } if (rf & 2) {
427
- const ctx_r60 = i0.ɵɵnextContext(2);
428
- i0.ɵɵproperty("id", ctx_r60.question.name)("formControlName", ctx_r60.question.name)("size", ctx_r60.question.size)("maxLength", ctx_r60.question.maxLength);
429
- } }
430
- function DynamicFormPanelComponent_div_18_input_3_Template(rf, ctx) { if (rf & 1) {
431
- i0.ɵɵelement(0, "input", 39);
432
- } if (rf & 2) {
433
- const ctx_r61 = i0.ɵɵnextContext(2);
434
- i0.ɵɵproperty("id", ctx_r61.question.name)("formControlName", ctx_r61.question.name)("size", ctx_r61.question.size);
435
- } }
436
- function DynamicFormPanelComponent_div_18_input_4_Template(rf, ctx) { if (rf & 1) {
437
- i0.ɵɵelement(0, "input", 40);
438
- } if (rf & 2) {
439
- const ctx_r62 = i0.ɵɵnextContext(2);
440
- i0.ɵɵproperty("id", ctx_r62.question.name)("formControlName", ctx_r62.question.name)("maxLength", ctx_r62.question.maxLength);
441
- } }
442
- function DynamicFormPanelComponent_div_18_input_5_Template(rf, ctx) { if (rf & 1) {
443
- i0.ɵɵelement(0, "input", 41);
444
- } if (rf & 2) {
445
- const ctx_r63 = i0.ɵɵnextContext(2);
446
- i0.ɵɵproperty("id", ctx_r63.question.name)("formControlName", ctx_r63.question.name);
447
- } }
448
- function DynamicFormPanelComponent_div_18_div_6_Template(rf, ctx) { if (rf & 1) {
449
- i0.ɵɵelementStart(0, "div", 24);
450
- i0.ɵɵelement(1, "app-overlay-info", 25);
451
- i0.ɵɵelementEnd();
452
- } if (rf & 2) {
453
- const ctx_r64 = i0.ɵɵnextContext(2);
454
- i0.ɵɵadvance(1);
455
- i0.ɵɵproperty("overlayText", ctx_r64.question.description);
456
- } }
457
- function DynamicFormPanelComponent_div_18_Template(rf, ctx) { if (rf & 1) {
458
- i0.ɵɵelementStart(0, "div")(1, "div", 21);
459
- i0.ɵɵtemplate(2, DynamicFormPanelComponent_div_18_input_2_Template, 1, 4, "input", 50);
460
- i0.ɵɵtemplate(3, DynamicFormPanelComponent_div_18_input_3_Template, 1, 3, "input", 31);
461
- i0.ɵɵtemplate(4, DynamicFormPanelComponent_div_18_input_4_Template, 1, 3, "input", 32);
462
- i0.ɵɵtemplate(5, DynamicFormPanelComponent_div_18_input_5_Template, 1, 2, "input", 33);
463
- i0.ɵɵtemplate(6, DynamicFormPanelComponent_div_18_div_6_Template, 2, 1, "div", 23);
464
- i0.ɵɵelementEnd()();
465
- } if (rf & 2) {
466
- const ctx_r17 = i0.ɵɵnextContext();
467
- i0.ɵɵadvance(2);
468
- i0.ɵɵproperty("ngIf", ctx_r17.question.inputType && ctx_r17.question.inputType === "text" && ctx_r17.question.isRequired && ctx_r17.question.size && ctx_r17.question.maxLength);
469
- i0.ɵɵadvance(1);
470
- i0.ɵɵproperty("ngIf", ctx_r17.question.inputType && ctx_r17.question.inputType === "text" && ctx_r17.question.isRequired && ctx_r17.question.size && !ctx_r17.question.maxLength);
471
- i0.ɵɵadvance(1);
472
- i0.ɵɵproperty("ngIf", ctx_r17.question.inputType && ctx_r17.question.inputType === "text" && ctx_r17.question.isRequired && !ctx_r17.question.size && ctx_r17.question.maxLength);
473
- i0.ɵɵadvance(1);
474
- i0.ɵɵproperty("ngIf", ctx_r17.question.inputType && ctx_r17.question.inputType === "text" && ctx_r17.question.isRequired && !ctx_r17.question.size && !ctx_r17.question.maxLength);
475
- i0.ɵɵadvance(1);
476
- i0.ɵɵproperty("ngIf", ctx_r17.question.description);
477
- } }
478
- function DynamicFormPanelComponent_div_19_Template(rf, ctx) { if (rf & 1) {
479
- i0.ɵɵelementStart(0, "div");
480
- i0.ɵɵelement(1, "p-selectButton", 52);
481
- i0.ɵɵelementEnd();
482
- } if (rf & 2) {
483
- const ctx_r18 = i0.ɵɵnextContext();
484
- i0.ɵɵadvance(1);
485
- i0.ɵɵproperty("options", ctx_r18.question.choices)("formControlName", ctx_r18.question.name)("multiple", false);
486
- } }
487
- function DynamicFormPanelComponent_div_20_ng_template_4_Template(rf, ctx) { if (rf & 1) {
488
- i0.ɵɵelementStart(0, "div")(1, "div");
489
- i0.ɵɵtext(2);
490
- i0.ɵɵelementEnd()();
491
- } if (rf & 2) {
492
- const value_r66 = ctx.$implicit;
493
- i0.ɵɵadvance(2);
494
- i0.ɵɵtextInterpolate(value_r66.text);
495
- } }
496
- function DynamicFormPanelComponent_div_20_Template(rf, ctx) { if (rf & 1) {
497
- const _r68 = i0.ɵɵgetCurrentView();
498
- i0.ɵɵelementStart(0, "div")(1, "div")(2, "p-autoComplete", 53);
499
- i0.ɵɵlistener("completeMethod", function DynamicFormPanelComponent_div_20_Template_p_autoComplete_completeMethod_2_listener($event) { i0.ɵɵrestoreView(_r68); const ctx_r67 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r67.filterValue($event, ctx_r67.question)); })("onSelect", function DynamicFormPanelComponent_div_20_Template_p_autoComplete_onSelect_2_listener($event) { i0.ɵɵrestoreView(_r68); const ctx_r69 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r69.onSelect($event, ctx_r69.question.name)); });
500
- i0.ɵɵpipe(3, "async");
501
- i0.ɵɵtemplate(4, DynamicFormPanelComponent_div_20_ng_template_4_Template, 3, 1, "ng-template", 54);
502
- i0.ɵɵelementEnd()()();
503
- } if (rf & 2) {
504
- const ctx_r19 = i0.ɵɵnextContext();
505
- i0.ɵɵadvance(2);
506
- i0.ɵɵproperty("formControlName", ctx_r19.question.name)("suggestions", i0.ɵɵpipeBind1(3, 4, ctx_r19.filteredBs.get(ctx_r19.question.name)))("dropdown", true)("size", ctx_r19.question.size);
507
- } }
508
- function DynamicFormPanelComponent_div_21_ng_template_3_Template(rf, ctx) { if (rf & 1) {
509
- i0.ɵɵelementStart(0, "div")(1, "div");
510
- i0.ɵɵtext(2);
511
- i0.ɵɵelementEnd()();
512
- } if (rf & 2) {
513
- const value_r71 = ctx.$implicit;
514
- i0.ɵɵadvance(2);
515
- i0.ɵɵtextInterpolate(value_r71.text);
516
- } }
517
- function DynamicFormPanelComponent_div_21_Template(rf, ctx) { if (rf & 1) {
518
- const _r73 = i0.ɵɵgetCurrentView();
519
- i0.ɵɵelementStart(0, "div")(1, "p-autoComplete", 55);
520
- i0.ɵɵlistener("completeMethod", function DynamicFormPanelComponent_div_21_Template_p_autoComplete_completeMethod_1_listener($event) { i0.ɵɵrestoreView(_r73); const ctx_r72 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r72.filterValue($event, ctx_r72.question)); })("onSelect", function DynamicFormPanelComponent_div_21_Template_p_autoComplete_onSelect_1_listener($event) { i0.ɵɵrestoreView(_r73); const ctx_r74 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r74.onSelect($event, ctx_r74.question.name)); });
521
- i0.ɵɵpipe(2, "async");
522
- i0.ɵɵtemplate(3, DynamicFormPanelComponent_div_21_ng_template_3_Template, 3, 1, "ng-template", 54);
523
- i0.ɵɵelementEnd()();
524
- } if (rf & 2) {
525
- const ctx_r20 = i0.ɵɵnextContext();
526
- i0.ɵɵadvance(1);
527
- i0.ɵɵproperty("formControlName", ctx_r20.question.name)("suggestions", i0.ɵɵpipeBind1(2, 3, ctx_r20.filteredBs.get(ctx_r20.question.name)))("dropdown", true);
528
- } }
529
- function DynamicFormPanelComponent_div_22_Template(rf, ctx) { if (rf & 1) {
530
- i0.ɵɵelementStart(0, "div");
531
- i0.ɵɵelement(1, "app-file-uploader", 56);
532
- i0.ɵɵelementEnd();
533
- } if (rf & 2) {
534
- const ctx_r21 = i0.ɵɵnextContext();
535
- i0.ɵɵadvance(1);
536
- i0.ɵɵproperty("allowedFileType", ctx_r21.question.allowedFileType)("formControlName", ctx_r21.question.name)("maxSizeInMB", ctx_r21.question.sizeInMB)("multiple", ctx_r21.question.multiple)("noOfFilesToUpload", ctx_r21.question.noOFFiles);
537
- } }
538
- function DynamicFormPanelComponent_div_23_div_3_Template(rf, ctx) { if (rf & 1) {
539
- i0.ɵɵelementStart(0, "div", 24);
540
- i0.ɵɵelement(1, "app-overlay-info", 25);
541
- i0.ɵɵelementEnd();
542
- } if (rf & 2) {
543
- const ctx_r75 = i0.ɵɵnextContext(2);
544
- i0.ɵɵadvance(1);
545
- i0.ɵɵproperty("overlayText", ctx_r75.question.description);
546
- } }
547
- function DynamicFormPanelComponent_div_23_Template(rf, ctx) { if (rf & 1) {
548
- i0.ɵɵelementStart(0, "div", 57)(1, "div", 21);
549
- i0.ɵɵelement(2, "p-selectButton", 58);
550
- i0.ɵɵtemplate(3, DynamicFormPanelComponent_div_23_div_3_Template, 2, 1, "div", 23);
551
- i0.ɵɵelementEnd()();
552
- } if (rf & 2) {
553
- const ctx_r22 = i0.ɵɵnextContext();
554
- i0.ɵɵadvance(2);
555
- i0.ɵɵproperty("options", ctx_r22.question.choices)("formControlName", ctx_r22.question.name);
556
- i0.ɵɵadvance(1);
557
- i0.ɵɵproperty("ngIf", ctx_r22.question.description);
558
- } }
559
- function DynamicFormPanelComponent_div_24_div_5_Template(rf, ctx) { if (rf & 1) {
560
- i0.ɵɵelementStart(0, "div", 61);
561
- i0.ɵɵelement(1, "app-overlay-info", 25);
562
- i0.ɵɵelementEnd();
563
- } if (rf & 2) {
564
- const ctx_r76 = i0.ɵɵnextContext(2);
565
- i0.ɵɵadvance(1);
566
- i0.ɵɵproperty("overlayText", ctx_r76.question.description);
567
- } }
568
- function DynamicFormPanelComponent_div_24_Template(rf, ctx) { if (rf & 1) {
569
- i0.ɵɵelementStart(0, "div", 57)(1, "div", 21)(2, "label");
570
- i0.ɵɵtext(3);
571
- i0.ɵɵelementEnd();
572
- i0.ɵɵelement(4, "input", 59);
573
- i0.ɵɵtemplate(5, DynamicFormPanelComponent_div_24_div_5_Template, 2, 1, "div", 60);
574
- i0.ɵɵelementEnd()();
575
- } if (rf & 2) {
576
- const ctx_r23 = i0.ɵɵnextContext();
577
- i0.ɵɵadvance(3);
578
- i0.ɵɵtextInterpolate(ctx_r23.form.controls[ctx_r23.question.name].value);
579
- i0.ɵɵadvance(1);
580
- i0.ɵɵproperty("formControlName", ctx_r23.question.name);
581
- i0.ɵɵadvance(1);
582
- i0.ɵɵproperty("ngIf", ctx_r23.question.description);
583
- } }
584
- function DynamicFormPanelComponent_small_26_Template(rf, ctx) { if (rf & 1) {
585
- i0.ɵɵelementStart(0, "small", 62);
586
- i0.ɵɵtext(1);
587
- i0.ɵɵelementEnd();
588
- } if (rf & 2) {
589
- const ctx_r24 = i0.ɵɵnextContext();
590
- i0.ɵɵadvance(1);
591
- i0.ɵɵtextInterpolate(ctx_r24.isValid);
592
- } }
593
- export class DynamicFormPanelComponent {
594
- constructor(service, validationService, util, questionService, navController) {
595
- this.service = service;
596
- this.validationService = validationService;
597
- this.util = util;
598
- this.questionService = questionService;
599
- this.navController = navController;
600
- this.dropdownValueBs = new Map();
601
- this.filteredBs = new Map();
602
- this.returnModel = new ValidationModel();
603
- }
604
- ngOnInit() {
605
- // console.log('is DynamicFormQuestionComponent ngOnInit called', this.question)
606
- if (this.question.inputType === 'date') {
607
- console.log('Date ', this.question);
608
- if (this.question.max) {
609
- this.parseDate(this.question.max, 'max');
610
- }
611
- if (this.question.min) {
612
- this.parseDate(this.question.min, 'min');
613
- }
614
- }
615
- }
616
- get isValid() {
617
- // console.log('isValid is callled');
618
- let message = "";
619
- let questionType = this.question.type;
620
- if ('html' === questionType || ('button' === questionType && !this.question.validators) || 'simpleLabel' === questionType || 'displaytextaslabel' === questionType) {
621
- return "";
622
- }
623
- if (this.question && this.question.name && this.form && this.form.controls[this.question.name].errors?.required
624
- && (this.form.controls[this.question.name].dirty || this.form.controls[this.question.name].touched)) {
625
- //console.log('errors?.required',this.question)
626
- this.form.controls[this.question.name].markAsDirty();
627
- return this.question.requiredErrorText;
628
- }
629
- // if (this.question && this.question.name && this.form && this.form.controls[this.question.name].errors?.maxlength && (this.form.controls[this.question.name].dirty || this.form.controls[this.question.name].touched)) {
630
- // ///console.log('errors?.maxLength',this.question)
631
- // this.form.controls[this.question.name].markAsDirty();
632
- // return this.question.description;
633
- // }
634
- if (this.question && this.question.name && this.form && this.form.controls[this.question.name].errors?.pattern
635
- && (this.form.controls[this.question.name].dirty || this.form.controls[this.question.name].touched)) {
636
- // console.log('errors?.pattern',this.question)
637
- let validatorList = this.question.validators;
638
- var keepGoing = true;
639
- validatorList.forEach(validator => {
640
- // console.log('validator.type ', validator.type)
641
- if (keepGoing) {
642
- if (validator.type === 'regex') {
643
- // console.log('validator.text ', validator.text)
644
- message = validator.text;
645
- this.form.controls[this.question.name].markAsDirty();
646
- }
647
- else {
648
- message = "";
649
- }
650
- }
651
- });
652
- return message;
653
- }
654
- if (this.question && this.question.name && this.form && this.form.controls[this.question.name].errors?.dateComparision
655
- && (this.form.controls[this.question.name].dirty || this.form.controls[this.question.name].touched)) {
656
- let validatorList = this.question.validators;
657
- var keepGoing = true;
658
- let message = "";
659
- validatorList.forEach(validator => {
660
- if (keepGoing) {
661
- if (validator.type === 'expression') {
662
- // console.log('validator.text ', validator.text)
663
- message = validator.text;
664
- this.form.controls[this.question.name].markAsDirty();
665
- keepGoing = false;
666
- }
667
- else {
668
- message = "";
669
- }
670
- }
671
- });
672
- return message;
673
- }
674
- if (this.question && this.question.name && this.form && this.form.controls[this.question.name].errors?.passwordComparision
675
- && (this.form.controls[this.question.name].dirty || this.form.controls[this.question.name].touched)) {
676
- let validatorList = this.question.validators;
677
- var keepGoing = true;
678
- let message = "";
679
- validatorList.forEach(validator => {
680
- if (keepGoing) {
681
- // console.log('validator.type.minlength ', validator.type)
682
- if (validator.type === 'expression') {
683
- // console.log('validator.text ', validator.text)
684
- message = validator.text;
685
- this.form.controls[this.question.name].markAsDirty();
686
- keepGoing = false;
687
- }
688
- else {
689
- message = "";
690
- }
691
- }
692
- });
693
- return message;
694
- }
695
- if (this.question && this.question.name && this.form && this.form.controls[this.question.name].errors?.minlength
696
- && (this.form.controls[this.question.name].dirty || this.form.controls[this.question.name].touched)) {
697
- let validatorList = this.question.validators;
698
- // console.log('MinLength')
699
- var keepGoing = true;
700
- let message = "";
701
- validatorList.forEach(validator => {
702
- if (keepGoing) {
703
- // console.log('validator.type.minlength ', validator.type)
704
- if (validator.type === 'text') {
705
- // console.log('validator.text ', validator.text)
706
- message = validator.text;
707
- this.form.controls[this.question.name].markAsDirty();
708
- keepGoing = false;
709
- }
710
- else {
711
- message = "";
712
- }
713
- }
714
- });
715
- return message;
716
- }
717
- if (this.question && this.question.name && this.form && this.form.controls[this.question.name].errors?.maxlength
718
- && (this.form.controls[this.question.name].dirty || this.form.controls[this.question.name].touched)) {
719
- let validatorList = this.question.validators;
720
- var keepGoing = true;
721
- let message = "";
722
- validatorList.forEach(validator => {
723
- if (keepGoing) {
724
- // console.log('validator.type.minlength ', validator.type)
725
- if (validator.type === 'text') {
726
- // console.log('validator.text ', validator.text)
727
- message = validator.text;
728
- this.form.controls[this.question.name].markAsDirty();
729
- keepGoing = false;
730
- }
731
- else {
732
- message = "";
733
- }
734
- }
735
- });
736
- return message;
737
- }
738
- if (this.question && this.question.name && this.form && this.form.controls[this.question.name].errors?.requiredIf
739
- && (this.form.controls[this.question.name].dirty || this.form.controls[this.question.name].touched)) {
740
- this.form.controls[this.question.name].markAsDirty();
741
- return "Required";
742
- }
743
- if (this.question && this.question.name && this.form && this.form.controls[this.question.name].errors?.notEquals
744
- && (this.form.controls[this.question.name].dirty || this.form.controls[this.question.name].touched)) {
745
- let validatorList = this.question.validators;
746
- var keepGoing = true;
747
- validatorList.forEach(validator => {
748
- if (keepGoing) {
749
- //console.log('validator.type.minlength ', validator.type)
750
- if (validator.type === 'customvalidation') {
751
- //console.log('validator.text ', validator.text)
752
- message = validator.text;
753
- this.form.controls[this.question.name].markAsDirty();
754
- keepGoing = false;
755
- }
756
- else {
757
- message = "";
758
- }
759
- }
760
- });
761
- var keepGoing = true;
762
- this.form.controls[this.question.name].markAsDirty();
763
- return message;
764
- }
765
- }
766
- setMinDate(dateValue, question) {
767
- console.log('setMinDate called', question.min);
768
- console.log('question.min ', this.form.controls[question.min].value);
769
- let startDateValue = new Date(this.form.controls[question.min].value);
770
- //this.minDate = new Date(startDateValue);
771
- //this.form.controls[question.name].setValue(null);
772
- this.minDate = new Date();
773
- console.log('startDateValue', startDateValue);
774
- this.minDate.setMonth(startDateValue.getMonth());
775
- this.minDate.setFullYear(Number(startDateValue.getFullYear()));
776
- this.minDate.setDate(Number(startDateValue.getDate()) + 1);
777
- }
778
- parseDate(strDate, type) {
779
- console.log('is parseDate called', strDate + ' type', type); //05-10-2021
780
- if (strDate && type === 'max') {
781
- var splitArray = strDate.split('-');
782
- //let date: Date = new Date();
783
- this.maxDate = new Date();
784
- this.maxDate.setMonth(Number(splitArray[0]) - 1);
785
- this.maxDate.setFullYear(Number(splitArray[2]));
786
- this.maxDate.setDate(Number(splitArray[1]));
787
- console.log('date', this.maxDate);
788
- return this.maxDate;
789
- }
790
- if (strDate && type === 'min') {
791
- var splitArray = strDate.split('-');
792
- //let date: Date = new Date();
793
- this.minDate = new Date();
794
- this.minDate.setMonth(Number(splitArray[0]) - 1);
795
- this.minDate.setFullYear(Number(splitArray[2]));
796
- this.minDate.setDate(Number(splitArray[1]));
797
- console.log('date', this.minDate);
798
- return this.minDate;
799
- }
800
- }
801
- visibleIf(strExp) {
802
- if (!strExp) {
803
- return true;
804
- }
805
- var splitArray;
806
- let isDoesNotEqual;
807
- let index = strExp.indexOf('!=');
808
- if (index === -1) {
809
- splitArray = strExp.split('==');
810
- isDoesNotEqual = false;
811
- }
812
- else {
813
- splitArray = strExp.split('!=');
814
- isDoesNotEqual = true;
815
- }
816
- let operand1 = splitArray[0];
817
- let operand2 = splitArray[1];
818
- operand1 = operand1.replace('{', '').replace('}', ''); //claimantPriorPay102 diffmailaddress315
819
- operand2 = operand2.replace('{', '').replace('}', ''); //null
820
- // console.log('operand1',operand1,'operand2',operand2,' this.form',this.form.controls['city315']);
821
- if (this.form.controls['operand1']) {
822
- var valueOfCnrtrlToCheck = this.form.controls[operand1].value;
823
- //console.log('valueOfCnrtrlToCheck', valueOfCnrtrlToCheck);
824
- if (operand2 === 'null' && isDoesNotEqual && valueOfCnrtrlToCheck) {
825
- return true;
826
- }
827
- if (operand2 === 'null' && !isDoesNotEqual && !valueOfCnrtrlToCheck) {
828
- return true;
829
- }
830
- console.log('this.form.controls[operand1]', this.form.controls[operand1]);
831
- if (this.form.controls[operand1]) {
832
- this.form.controls[operand1].setValue(null);
833
- }
834
- }
835
- return false;
836
- }
837
- getDependentDropdownData(element) {
838
- if (element.serviceName) {
839
- if (element.serviceType != 'FETCH') {
840
- return;
841
- }
842
- let parentControl = this.form.controls[element.serviceCallParam];
843
- let serviceCallType = element.serviceCallType;
844
- let serviceName = element.serviceName;
845
- let serviceUpdateParam = element.serviceUpdateParam;
846
- let bs = this.dropdownValueBs.get(parentControl);
847
- if (bs) {
848
- return bs;
849
- }
850
- else {
851
- let bs = new BehaviorSubject(null);
852
- this.dropdownValueBs.set(parentControl, bs);
853
- }
854
- parentControl.valueChanges.subscribe(value => {
855
- // console.log('parentControl', parentControl);
856
- // console.log('value', value);
857
- let currentBs = this.dropdownValueBs.get(parentControl);
858
- if (value) {
859
- if (serviceCallType === 'GET') {
860
- // console.log('Inside GET');
861
- this.validationService
862
- .get(`${serviceName}${value}/${serviceUpdateParam}`)
863
- .subscribe(res => {
864
- if (res != null) {
865
- currentBs.next(res['choices']);
866
- }
867
- else {
868
- currentBs.next(null);
869
- }
870
- });
871
- }
872
- }
873
- });
874
- return bs;
875
- }
876
- else {
877
- let dependentFc = this.form.controls[element.name];
878
- let bs = this.dropdownValueBs.get(dependentFc);
879
- if (!bs) {
880
- let bs = new BehaviorSubject(element.choices);
881
- this.dropdownValueBs.set(dependentFc, bs);
882
- }
883
- return bs;
884
- }
885
- }
886
- validate(element) {
887
- if (!element.serviceName) {
888
- return;
889
- }
890
- let serviceType = element.serviceType;
891
- if (element.serviceType === 'FETCH') {
892
- return;
893
- }
894
- let serviceCallParam = element.serviceCallParam; //ssn320,lstname320
895
- let serviceCallType = element.serviceCallType; //"GET"
896
- let serviceName = element.serviceName; ///security-service/validateSSN/
897
- let serviceUpdateParam = element.serviceUpdateParam;
898
- let allValuePresent = true;
899
- // console.log('serviceCallParam',serviceCallParam);
900
- if (serviceCallParam) {
901
- var splitted = serviceCallParam.split(",");
902
- let valueArr = [];
903
- let paramArr = [];
904
- for (let i = 0; i < splitted.length; i++) {
905
- //use i instead of 0 dob320
906
- // console.log('dob320',this.form.controls['dob320'].value);
907
- if (this.form.controls[splitted[i]].value) {
908
- paramArr.push(splitted[i]);
909
- valueArr.push(this.form.controls[splitted[i]].value);
910
- }
911
- else {
912
- allValuePresent = false;
913
- }
914
- }
915
- // console.log('valueArr12', valueArr, 'paramArr11 ', paramArr, ' element', element);
916
- var model = {};
917
- model.paramName = paramArr;
918
- model.paramValue = valueArr;
919
- // return this.post(`questionnaire/screen-questionnaire`, questionnaireData);
920
- if (allValuePresent) {
921
- if (serviceCallType === 'POST') {
922
- // console.log('Inside GET');
923
- this.validationService
924
- .post(`${serviceName}`, model)
925
- .subscribe(res => {
926
- this.returnModel = res;
927
- if (this.returnModel.returnType && this.returnModel.returnType === 'POPUP') {
928
- this.displayPosition = true;
929
- this.position = 'top';
930
- this.popUpHeader = this.returnModel.popUpHeader;
931
- this.popUpText = this.returnModel.popUpText;
932
- this.popUpYesActionLabel = this.returnModel.popUpYesButtonLabel;
933
- this.popUpNoActionLabel = this.returnModel.popUpNoButtonLabel;
934
- }
935
- console.log('this.returnModel ', this.returnModel);
936
- }, err => {
937
- this.util.hideLoader();
938
- this.util.errorHandler(err);
939
- });
940
- }
941
- }
942
- }
943
- }
944
- accept() {
945
- //console.log('accept called123', this.returnModel.identifier)
946
- let modelArr = this.returnModel.identifier;
947
- let paramArray = [];
948
- for (var val of modelArr) {
949
- paramArray.push({ [val.key]: val.value });
950
- }
951
- const params = paramArray.reduce((arrObj, item) => Object.assign(arrObj, item, {}));
952
- this.navController.navigateRoot([this.returnModel.yesAction], { queryParams: params });
953
- }
954
- reject() {
955
- //console.log('Reject called')
956
- this.navController.navigateRoot(this.returnModel.noAction);
957
- }
958
- filterValue(event, element) {
959
- // console.log('filterValue called', event, ' element', element);
960
- if (!element.serviceName) {
961
- let bs = new BehaviorSubject([]);
962
- let query = event.query;
963
- let filtered = [];
964
- for (let i = 0; i < element.choices.length; i++) {
965
- let choice = element.choices[i];
966
- if (choice.text.toLowerCase().indexOf(query.toLowerCase()) == 0) {
967
- filtered.push(choice);
968
- }
969
- }
970
- bs.next(filtered);
971
- this.filteredBs.set(element.name, bs);
972
- return;
973
- }
974
- else {
975
- if (this.filteredBs && this.filteredBs.get(element.name)) {
976
- let query = event.query;
977
- let filtered = [];
978
- let existingChoices = this.filteredBs.get(element.name).value;
979
- let bs = new BehaviorSubject([]);
980
- //console.log('Inside IF---', bs);
981
- for (let i = 0; i < existingChoices.length; i++) {
982
- let choice = existingChoices[i];
983
- if (choice.text.toLowerCase().indexOf(query.toLowerCase()) == 0) {
984
- filtered.push(choice);
985
- }
986
- }
987
- bs.next(filtered);
988
- this.filteredBs.set(element.name, bs);
989
- return;
990
- }
991
- else {
992
- let parentControl = this.form.controls[element.serviceCallParam];
993
- let serviceCallType = element.serviceCallType;
994
- let serviceName = element.serviceName;
995
- let serviceUpdateParam = element.serviceUpdateParam;
996
- let parentControlVal = null;
997
- if (parentControl.value) {
998
- parentControlVal = parentControl.value['value']; //CA
999
- }
1000
- //console.log('parentControlVal', parentControlVal);
1001
- parentControl.valueChanges.subscribe(value => {
1002
- //console.log('parentControlVal value changed');
1003
- let childControl = this.form.controls[serviceUpdateParam];
1004
- this.filteredBs = new Map();
1005
- childControl.setValue(null);
1006
- });
1007
- if (parentControlVal) {
1008
- if (serviceCallType === 'GET') {
1009
- this.validationService
1010
- .get(`${serviceName}${parentControlVal}/${serviceUpdateParam}`)
1011
- .subscribe(res => {
1012
- if (res != null) {
1013
- let query = event.query;
1014
- let filtered = [];
1015
- let bs = new BehaviorSubject([]);
1016
- for (let i = 0; i < res['choices'].length; i++) {
1017
- let choice = res['choices'][i];
1018
- if (choice.text.toLowerCase().indexOf(query.toLowerCase()) == 0) {
1019
- filtered.push(choice);
1020
- }
1021
- }
1022
- bs.next(filtered);
1023
- this.filteredBs.set(element.name, bs);
1024
- }
1025
- else {
1026
- let filtered = [];
1027
- let bs = new BehaviorSubject([]);
1028
- bs.next(filtered);
1029
- this.filteredBs.set(element.name, bs);
1030
- }
1031
- });
1032
- }
1033
- }
1034
- }
1035
- }
1036
- }
1037
- clickOption(event) {
1038
- console.log('clickOption called');
1039
- }
1040
- onSelect(event, cntrlName) {
1041
- console.log('onSelect--', event.value, cntrlName);
1042
- }
1043
- }
1044
- DynamicFormPanelComponent.ɵfac = function DynamicFormPanelComponent_Factory(t) { return new (t || DynamicFormPanelComponent)(i0.ɵɵdirectiveInject(i1.QuestionService), i0.ɵɵdirectiveInject(i2.ValidationService), i0.ɵɵdirectiveInject(i3.UtilService), i0.ɵɵdirectiveInject(i1.QuestionService), i0.ɵɵdirectiveInject(i4.NavController)); };
1045
- DynamicFormPanelComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormPanelComponent, selectors: [["panel-question"]], inputs: { question: "question", form: "form", forScreenQuestionnaire: "forScreenQuestionnaire" }, decls: 27, vars: 26, consts: [[3, "formGroup"], ["appendTo", "body", 3, "header", "visible", "position", "modal", "style", "baseZIndex", "draggable", "resizable", "visibleChange", 4, "ngIf"], ["class", "form-label", 4, "ngIf"], [4, "ngIf"], ["class", "heading", 3, "innerHTML", 4, "ngIf"], [3, "innerHTML", 4, "ngIf"], ["class", "container", "style", "padding: 0px;", 4, "ngIf"], ["class", "p-error", 4, "ngIf"], ["appendTo", "body", 3, "header", "visible", "position", "modal", "baseZIndex", "draggable", "resizable", "visibleChange"], ["pTemplate", "footer"], ["shape", "round", "size", "small", "type", "submit", "fill", "outline", 3, "click"], ["shape", "round", "size", "small", "type", "submit", "fill", "solid", 3, "click"], [1, "form-label"], [3, "form", 4, "ngIf"], [3, "form"], [1, "heading", 3, "innerHTML"], [3, "innerHTML"], ["yearRange", "1901:2050", "dateFormat", "mm-dd-yy", "inputId", "navigators", "dataType", "string", "appendTo", "body", 3, "formControlName", "id", "monthNavigator", "yearNavigator", "readonlyInput", "showIcon", "minDate", "maxDate"], ["dateFormat", "mm-dd-yy", "yearRange", "1901:2050", "dataType", "string", "appendTo", "body", 3, "formControlName", "id", "monthNavigator", "yearNavigator", "inputId", "readonlyInput", "showIcon"], ["dateFormat", "mm-dd-yy", "yearRange", "1901:2050", "dataType", "string", "appendTo", "body", 3, "formControlName", "id", "monthNavigator", "yearNavigator", "inputId", "maxDate", "readonlyInput", "showIcon"], ["dateFormat", "mm-dd-yy", "yearRange", "1901:2050", "dataType", "string", "appendTo", "body", 3, "formControlName", "id", "monthNavigator", "yearNavigator", "inputId", "minDate", "readonlyInput", "showIcon", "onShow"], [1, "container", 2, "display", "flex"], [3, "id", "formControlName", "toggleMask", "maxLength"], ["style", "flex-grow: 1;", "style", "padding-left: 8px", 4, "ngIf"], [2, "padding-left", "8px"], [3, "overlayText"], ["type", "text", "pInputText", "", "placeholder", "Optional", 3, "id", "formControlName", "size", "maxLength", 4, "ngIf"], ["type", "text", "pInputText", "", "placeholder", "Optional", 3, "id", "formControlName", "size", 4, "ngIf"], ["type", "text", "pInputText", "", "placeholder", "Optional", 3, "id", "formControlName", "maxLength", 4, "ngIf"], ["type", "text", "pInputText", "", "placeholder", "Optional", 3, "id", "formControlName", 4, "ngIf"], ["type", "text", "pInputText", "", 3, "id", "formControlName", "size", "maxLength", "blur", 4, "ngIf"], ["type", "text", "pInputText", "", 3, "id", "formControlName", "size", 4, "ngIf"], ["type", "text", "pInputText", "", 3, "id", "formControlName", "maxLength", 4, "ngIf"], ["type", "text", "pInputText", "", 3, "id", "formControlName", 4, "ngIf"], ["type", "text", "pInputText", "", "placeholder", "Optional", 3, "id", "formControlName", "size", "maxLength"], ["type", "text", "pInputText", "", "placeholder", "Optional", 3, "id", "formControlName", "size"], ["type", "text", "pInputText", "", "placeholder", "Optional", 3, "id", "formControlName", "maxLength"], ["type", "text", "pInputText", "", "placeholder", "Optional", 3, "id", "formControlName"], ["type", "text", "pInputText", "", 3, "id", "formControlName", "size", "maxLength", "blur"], ["type", "text", "pInputText", "", 3, "id", "formControlName", "size"], ["type", "text", "pInputText", "", 3, "id", "formControlName", "maxLength"], ["type", "text", "pInputText", "", 3, "id", "formControlName"], ["mask", "999 999-9999", "placeholder", "Optional", 3, "id", "formControlName", 4, "ngIf"], ["mask", "999 999-9999", "placeholder", "999 999-9999", 3, "id", "formControlName", 4, "ngIf"], ["mask", "999 999-9999", "placeholder", "Optional", 3, "id", "formControlName"], ["mask", "999 999-9999", "placeholder", "999 999-9999", 3, "id", "formControlName"], ["mask", "999-99-9999", "placeholder", "999-99-9999", 3, "id", "formControlName", 4, "ngIf"], ["mask", "999-99-9999", "placeholder", "Optional", 3, "id", "formControlName", 4, "ngIf"], ["mask", "999-99-9999", "placeholder", "999-99-9999", 3, "id", "formControlName"], ["mask", "999-99-9999", "placeholder", "Optional", 3, "id", "formControlName"], ["type", "text", "pInputText", "", 3, "id", "formControlName", "size", "maxLength", 4, "ngIf"], ["type", "text", "pInputText", "", 3, "id", "formControlName", "size", "maxLength"], ["optionLabel", "text", "optionValue", "value", 3, "options", "formControlName", "multiple"], ["appendTo", "body", "dataKey", "value", "field", "text", "minLength", "1", "forceSelection", "true", "type", "text", 3, "formControlName", "suggestions", "dropdown", "size", "completeMethod", "onSelect"], ["pTemplate", "item"], ["appendTo", "body", "dataKey", "value", "field", "text", "minLength", "3", "forceSelection", "true", "type", "text", 3, "formControlName", "suggestions", "dropdown", "completeMethod", "onSelect"], [3, "allowedFileType", "formControlName", "maxSizeInMB", "multiple", "noOfFilesToUpload"], [1, "container", 2, "padding", "0px"], ["optionLabel", "text", "optionValue", "value", 3, "options", "formControlName"], ["type", "hidden", 3, "formControlName"], ["style", "flex-grow: 1;", "style", "padding-left: 2px", 4, "ngIf"], [2, "padding-left", "2px"], [1, "p-error"]], template: function DynamicFormPanelComponent_Template(rf, ctx) { if (rf & 1) {
1046
- i0.ɵɵelementStart(0, "div", 0);
1047
- i0.ɵɵtemplate(1, DynamicFormPanelComponent_p_dialog_1_Template, 4, 11, "p-dialog", 1);
1048
- i0.ɵɵtemplate(2, DynamicFormPanelComponent_div_2_Template, 2, 1, "div", 2);
1049
- i0.ɵɵtemplate(3, DynamicFormPanelComponent_div_3_Template, 2, 1, "div", 2);
1050
- i0.ɵɵtemplate(4, DynamicFormPanelComponent_div_4_Template, 2, 1, "div", 2);
1051
- i0.ɵɵtemplate(5, DynamicFormPanelComponent_div_5_Template, 3, 2, "div", 3);
1052
- i0.ɵɵtemplate(6, DynamicFormPanelComponent_div_6_Template, 1, 1, "div", 4);
1053
- i0.ɵɵtemplate(7, DynamicFormPanelComponent_div_7_Template, 1, 1, "div", 5);
1054
- i0.ɵɵtemplate(8, DynamicFormPanelComponent_div_8_Template, 2, 8, "div", 3);
1055
- i0.ɵɵtemplate(9, DynamicFormPanelComponent_div_9_Template, 2, 7, "div", 3);
1056
- i0.ɵɵtemplate(10, DynamicFormPanelComponent_div_10_Template, 2, 8, "div", 3);
1057
- i0.ɵɵtemplate(11, DynamicFormPanelComponent_div_11_Template, 2, 8, "div", 3);
1058
- i0.ɵɵtemplate(12, DynamicFormPanelComponent_div_12_Template, 4, 5, "div", 3);
1059
- i0.ɵɵtemplate(13, DynamicFormPanelComponent_div_13_Template, 4, 5, "div", 3);
1060
- i0.ɵɵtemplate(14, DynamicFormPanelComponent_div_14_Template, 11, 9, "div", 3);
1061
- i0.ɵɵtemplate(15, DynamicFormPanelComponent_div_15_Template, 7, 5, "div", 3);
1062
- i0.ɵɵtemplate(16, DynamicFormPanelComponent_div_16_Template, 5, 3, "div", 3);
1063
- i0.ɵɵtemplate(17, DynamicFormPanelComponent_div_17_Template, 5, 3, "div", 3);
1064
- i0.ɵɵtemplate(18, DynamicFormPanelComponent_div_18_Template, 7, 5, "div", 3);
1065
- i0.ɵɵtemplate(19, DynamicFormPanelComponent_div_19_Template, 2, 3, "div", 3);
1066
- i0.ɵɵtemplate(20, DynamicFormPanelComponent_div_20_Template, 5, 6, "div", 3);
1067
- i0.ɵɵtemplate(21, DynamicFormPanelComponent_div_21_Template, 4, 5, "div", 3);
1068
- i0.ɵɵtemplate(22, DynamicFormPanelComponent_div_22_Template, 2, 5, "div", 3);
1069
- i0.ɵɵtemplate(23, DynamicFormPanelComponent_div_23_Template, 4, 3, "div", 6);
1070
- i0.ɵɵtemplate(24, DynamicFormPanelComponent_div_24_Template, 6, 3, "div", 6);
1071
- i0.ɵɵelementStart(25, "div");
1072
- i0.ɵɵtemplate(26, DynamicFormPanelComponent_small_26_Template, 2, 1, "small", 7);
1073
- i0.ɵɵelementEnd()();
1074
- } if (rf & 2) {
1075
- i0.ɵɵproperty("formGroup", ctx.form);
1076
- i0.ɵɵadvance(1);
1077
- i0.ɵɵproperty("ngIf", ctx.displayPosition);
1078
- i0.ɵɵadvance(1);
1079
- i0.ɵɵproperty("ngIf", !ctx.forScreenQuestionnaire);
1080
- i0.ɵɵadvance(1);
1081
- i0.ɵɵproperty("ngIf", ctx.forScreenQuestionnaire && ctx.question.indent === 1 && ctx.question.type != "html" && ctx.question.type != "simpleLabel" && ctx.question.customTag != "component");
1082
- i0.ɵɵadvance(1);
1083
- i0.ɵɵproperty("ngIf", ctx.question.indent != 1 && ctx.question.type != "html" && ctx.question.customTag && !ctx.question.customTag.includes("fmtnumbertext"));
1084
- i0.ɵɵadvance(1);
1085
- i0.ɵɵproperty("ngIf", ctx.forScreenQuestionnaire && ctx.question.customTag && ctx.question.customTag === "component" && ctx.question.indent === 1 && ctx.question.type != "html" && !ctx.question.description);
1086
- i0.ɵɵadvance(1);
1087
- i0.ɵɵproperty("ngIf", ctx.question.type === "html");
1088
- i0.ɵɵadvance(1);
1089
- i0.ɵɵproperty("ngIf", ctx.question.type === "simpleLabel");
1090
- i0.ɵɵadvance(1);
1091
- i0.ɵɵproperty("ngIf", ctx.question.inputType && ctx.question.inputType === "date" && ctx.question.max && ctx.question.min);
1092
- i0.ɵɵadvance(1);
1093
- i0.ɵɵproperty("ngIf", ctx.question.inputType && ctx.question.inputType === "date" && !ctx.question.max && !ctx.question.min);
1094
- i0.ɵɵadvance(1);
1095
- i0.ɵɵproperty("ngIf", ctx.question.inputType && ctx.question.inputType === "date" && ctx.question.max && !ctx.question.min);
1096
- i0.ɵɵadvance(1);
1097
- i0.ɵɵproperty("ngIf", ctx.question.inputType && ctx.question.inputType === "date" && !ctx.question.max && ctx.question.min);
1098
- i0.ɵɵadvance(1);
1099
- i0.ɵɵproperty("ngIf", ctx.question.customTag && ctx.question.customTag.includes("password") && !ctx.question.name.includes("confpwd"));
1100
- i0.ɵɵadvance(1);
1101
- i0.ɵɵproperty("ngIf", ctx.question.customTag && ctx.question.customTag.includes("password") && ctx.question.name.includes("confpwd"));
1102
- i0.ɵɵadvance(1);
1103
- i0.ɵɵproperty("ngIf", !ctx.question.customTag && ctx.question.type && (ctx.question.type != "radiogroup" && ctx.question.type != "displaytextaslabel"));
1104
- i0.ɵɵadvance(1);
1105
- i0.ɵɵproperty("ngIf", ctx.question.customTag && ctx.question.type && ctx.question.customTag.includes("Optional"));
1106
- i0.ɵɵadvance(1);
1107
- i0.ɵɵproperty("ngIf", ctx.question.customTag && ctx.question.customTag.includes("phone"));
1108
- i0.ɵɵadvance(1);
1109
- i0.ɵɵproperty("ngIf", ctx.question.customTag && ctx.question.customTag.includes("ssn"));
1110
- i0.ɵɵadvance(1);
1111
- i0.ɵɵproperty("ngIf", ctx.question.customTag && !ctx.question.customTag.includes("phone") && !ctx.question.customTag.includes("password") && !ctx.question.customTag.includes("ssn"));
1112
- i0.ɵɵadvance(1);
1113
- i0.ɵɵproperty("ngIf", ctx.question.type && ctx.question.type === "singleselectcheckbox");
1114
- i0.ɵɵadvance(1);
1115
- i0.ɵɵproperty("ngIf", ctx.question.type && ctx.question.type === "dropdown" && ctx.question.size);
1116
- i0.ɵɵadvance(1);
1117
- i0.ɵɵproperty("ngIf", ctx.question.type && ctx.question.type === "dropdown" && !ctx.question.size);
1118
- i0.ɵɵadvance(1);
1119
- i0.ɵɵproperty("ngIf", ctx.question.customTag && ctx.question.customTag.includes("fileupload"));
1120
- i0.ɵɵadvance(1);
1121
- i0.ɵɵproperty("ngIf", ctx.question.type && ctx.question.type === "radiogroup");
1122
- i0.ɵɵadvance(1);
1123
- i0.ɵɵproperty("ngIf", ctx.question.type && ctx.question.type === "displaytextaslabel");
1124
- i0.ɵɵadvance(2);
1125
- i0.ɵɵproperty("ngIf", ctx.isValid != "");
1126
- } }, dependencies: [i4.IonButton, i5.NgIf, i6.PrimeTemplate, i7.DefaultValueAccessor, i7.NgControlStatus, i7.NgControlStatusGroup, i7.FormGroupDirective, i7.FormControlName, i8.AutoComplete, i9.Dialog, i10.Password, i11.InputText, i12.InputMask, i13.Calendar, i14.SelectButton, i15.FileUploaderComponent, i16.OverlayInfoComponent, i17.MoneyExpectComponent, i5.AsyncPipe], styles: [".form-label{display:inline-block;margin-bottom:6px;margin-top:20px}\n"], encapsulation: 2 });
1127
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormPanelComponent, [{
1128
- type: Component,
1129
- args: [{ selector: 'panel-question', encapsulation: ViewEncapsulation.None, template: "<div [formGroup]=\"form\">\r\n\r\n\r\n <p-dialog [header]=\"popUpHeader\" *ngIf=\"displayPosition\" [(visible)]=\"displayPosition\" [position]=\"position\" [modal]=\"true\" [style]=\"{width: '80vw'}\" [baseZIndex]=\"5000\"\r\n [draggable]=\"false\" [resizable]=\"false\" appendTo=\"body\">\r\n \r\n <p>{{popUpText}}\r\n </p>\r\n <ng-template pTemplate=\"footer\">\r\n <ion-button shape=\"round\" \r\n size=\"small\" type=\"submit\"\r\n fill=\"outline\" (click)=\"reject()\"> \r\n {{popUpNoActionLabel}}\r\n </ion-button>\r\n\r\n <ion-button shape=\"round\" \r\n size=\"small\" type=\"submit\"\r\n fill=\"solid\" (click)=\"accept()\" >\r\n {{popUpYesActionLabel}}\r\n </ion-button>\r\n \r\n </ng-template>\r\n </p-dialog> \r\n\r\n\r\n <div *ngIf=\"!forScreenQuestionnaire\" class=\"form-label\">\r\n <label [attr.for]=\"question.name\" *ngIf=\"question.indent===1 && question.type!='html'\">\r\n {{question.title}}</label>\r\n </div>\r\n <div\r\n *ngIf=\"forScreenQuestionnaire && question.indent===1 && question.type!='html' && question.type!='simpleLabel' && question.customTag!='component'\"\r\n class=\"form-label\">\r\n {{question.title}}\r\n \r\n </div>\r\n\r\n <div\r\n *ngIf=\"question.indent!=1 && question.type!='html' && question.customTag && !question.customTag.includes('fmtnumbertext')\"\r\n class=\"form-label\">\r\n {{question.title}}\r\n \r\n </div>\r\n\r\n\r\n <div *ngIf=\"forScreenQuestionnaire && question.customTag && question.customTag==='component' && question.indent===1 && question.type!='html' \r\n && !question.description\">\r\n <money-expect *ngIf=\"question.componentName==='money-expect'\"></money-expect>\r\n<!-- <app-search-employer *ngIf=\"question.componentName==='app-search-employer'\" (onEmpty)=\"resetEmployer($event)\" (onFound)=\"setEmployer($event)\" [formControlName]=\"question.name\"></app-search-employer> -->\r\n<app-regular-employer-date *ngIf=\"question.componentName==='app-regular-emp-date'\" [form]=\"form\"></app-regular-employer-date>\r\n\r\n</div> \r\n\r\n <div *ngIf=\"question.type==='html'\" [innerHTML]=\"question.html\" class=\"heading\">\r\n </div>\r\n <div *ngIf=\"question.type==='simpleLabel'\" [innerHTML]=\"question.html\">\r\n </div>\r\n\r\n <div *ngIf=\"question.inputType && question.inputType==='date' && question.max && question.min\">\r\n <p-calendar [formControlName]=\"question.name\" [id]=\"question.name\" [monthNavigator]=\"true\" [yearNavigator]=\"true\"\r\n [readonlyInput]=\"true\" yearRange=\"1901:2050\" [showIcon]=\"true\" [minDate]=\"minDate\" [maxDate]=\"maxDate\"\r\n dateFormat=\"mm-dd-yy\" inputId=\"navigators\" dataType=\"string\" appendTo=\"body\" \r\n >\r\n </p-calendar>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"question.inputType && question.inputType==='date' && !question.max && !question.min\">\r\n <p-calendar [formControlName]=\"question.name\" [id]=\"question.name\" [monthNavigator]=\"true\" [yearNavigator]=\"true\"\r\n [inputId]=\"question.name\" [readonlyInput]=\"true\" [showIcon]=\"true\" dateFormat=\"mm-dd-yy\" yearRange=\"1901:2050\"\r\n dataType=\"string\" appendTo=\"body\"></p-calendar>\r\n </div>\r\n\r\n <div *ngIf=\"question.inputType && question.inputType==='date' && question.max && !question.min\">\r\n <p-calendar [formControlName]=\"question.name\" [id]=\"question.name\" [monthNavigator]=\"true\" [yearNavigator]=\"true\"\r\n [inputId]=\"question.name\" [maxDate]=\"maxDate\" [readonlyInput]=\"true\" [showIcon]=\"true\" dateFormat=\"mm-dd-yy\"\r\n yearRange=\"1901:2050\" dataType=\"string\" appendTo=\"body\"></p-calendar>\r\n </div>\r\n\r\n <div *ngIf=\"question.inputType && question.inputType==='date' && !question.max && question.min\">\r\n <p-calendar [formControlName]=\"question.name\" [id]=\"question.name\" [monthNavigator]=\"true\" [yearNavigator]=\"true\"\r\n [inputId]=\"question.name\" [minDate]=\"minDate\" [readonlyInput]=\"true\" [showIcon]=\"true\" dateFormat=\"mm-dd-yy\"\r\n yearRange=\"1901:2050\" dataType=\"string\" appendTo=\"body\" (onShow)=\"setMinDate($event,question)\"></p-calendar>\r\n </div>\r\n\r\n <div *ngIf=\"question.customTag && question.customTag.includes('password') && !question.name.includes('confpwd')\">\r\n <div class=\"container\" style=\"display: flex;\">\r\n <p-password [id]=\"question.name\" [formControlName]=\"question.name\" [toggleMask]=\"true\"\r\n [maxLength]=\"question.maxLength\"></p-password>\r\n <div style=\"flex-grow: 1;\" *ngIf=\"question.description\" style=\"padding-left: 8px\">\r\n <app-overlay-info [overlayText]=\"question.description\"></app-overlay-info>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"question.customTag && question.customTag.includes('password') && question.name.includes('confpwd')\">\r\n <div class=\"container\" style=\"display: flex;\">\r\n <p-password [id]=\"question.name\" [formControlName]=\"question.name\" [toggleMask]=\"true\"\r\n [maxLength]=\"question.maxLength\"></p-password>\r\n <div style=\"flex-grow: 1;\" *ngIf=\"question.description\" style=\"padding-left: 8px\">\r\n <app-overlay-info [overlayText]=\"question.description\"></app-overlay-info>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"!question.customTag && question.type && (question.type!='radiogroup' && question.type!='displaytextaslabel')\">\r\n <div class=\"container\" style=\"display: flex;\">\r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && !question.isRequired && question.size && question.maxLength\" [formControlName]=\"question.name\"\r\n placeholder=\"Optional\" [size]=\"question.size\" [maxLength]=\"question.maxLength\" />\r\n \r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && !question.isRequired && question.size && !question.maxLength\" [formControlName]=\"question.name\"\r\n placeholder=\"Optional\" [size]=\"question.size\" />\r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && !question.isRequired && !question.size && question.maxLength\" [formControlName]=\"question.name\"\r\n placeholder=\"Optional\" [maxLength]=\"question.maxLength\" />\r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && !question.isRequired && !question.size && !question.maxLength\" [formControlName]=\"question.name\"\r\n placeholder=\"Optional\" />\r\n \r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && question.isRequired && question.size && question.maxLength\" [formControlName]=\"question.name\"\r\n [size]=\"question.size\" [maxLength]=\"question.maxLength\" (blur)=\"validate(question)\" />\r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && question.isRequired && question.size && !question.maxLength\" [formControlName]=\"question.name\"\r\n [size]=\"question.size\" />\r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && question.isRequired && !question.size && question.maxLength\" [formControlName]=\"question.name\"\r\n [maxLength]=\"question.maxLength\" />\r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && question.isRequired && !question.size && !question.maxLength\" [formControlName]=\"question.name\" />\r\n <div style=\"flex-grow: 1;\" *ngIf=\"question.description\" style=\"padding-left: 8px\">\r\n <app-overlay-info [overlayText]=\"question.description\"></app-overlay-info>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"question.customTag && question.type && question.customTag.includes('Optional')\">\r\n <div class=\"container\" style=\"display: flex;\">\r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && !question.isRequired && question.size && question.maxLength\" [formControlName]=\"question.name\"\r\n placeholder=\"Optional\" [size]=\"question.size\" [maxLength]=\"question.maxLength\" />\r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && !question.isRequired && question.size && !question.maxLength\" [formControlName]=\"question.name\"\r\n placeholder=\"Optional\" [size]=\"question.size\" />\r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && !question.isRequired && !question.size && question.maxLength\" [formControlName]=\"question.name\"\r\n placeholder=\"Optional\" [maxLength]=\"question.maxLength\" />\r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && !question.isRequired && !question.size && !question.maxLength\" [formControlName]=\"question.name\"\r\n placeholder=\"Optional\" />\r\n <div style=\"flex-grow: 1;\" *ngIf=\"question.description\" style=\"padding-left: 8px\">\r\n <app-overlay-info [overlayText]=\"question.description\"></app-overlay-info>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"question.customTag && question.customTag.includes('phone')\">\r\n <div class=\"container\" style=\"display: flex;\">\r\n <p-inputMask mask=\"999 999-9999\" [id]=\"question.name\" [formControlName]=\"question.name\" placeholder=\"Optional\"\r\n *ngIf=\"question.inputType && question.inputType==='text' && !question.isRequired\"></p-inputMask>\r\n \r\n <p-inputMask mask=\"999 999-9999\" [id]=\"question.name\" [formControlName]=\"question.name\" placeholder=\"999 999-9999\"\r\n *ngIf=\"question.inputType && question.inputType==='text' && question.isRequired\"></p-inputMask>\r\n <div style=\"flex-grow: 1;\" *ngIf=\"question.description\" style=\"padding-left: 8px\">\r\n <app-overlay-info [overlayText]=\"question.description\"></app-overlay-info>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"question.customTag && question.customTag.includes('ssn')\">\r\n <div class=\"container\" style=\"display: flex;\">\r\n <p-inputMask mask=\"999-99-9999\" [id]=\"question.name\" *ngIf=\"question.isRequired\" [formControlName]=\"question.name\"\r\n placeholder=\"999-99-9999\">\r\n </p-inputMask>\r\n \r\n <p-inputMask mask=\"999-99-9999\" [id]=\"question.name\" *ngIf=\"!question.isRequired\"\r\n [formControlName]=\"question.name\" placeholder=\"Optional\">\r\n </p-inputMask>\r\n <div style=\"flex-grow: 1;\" *ngIf=\"question.description\" style=\"padding-left: 8px\">\r\n <app-overlay-info [overlayText]=\"question.description\"></app-overlay-info>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"question.customTag && !question.customTag.includes('phone') \r\n && !question.customTag.includes('password') && !question.customTag.includes('ssn')\">\r\n <div class=\"container\" style=\"display: flex;\">\r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && question.isRequired && question.size && question.maxLength\" [formControlName]=\"question.name\"\r\n [size]=\"question.size\" [maxLength]=\"question.maxLength\" />\r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && question.isRequired && question.size && !question.maxLength\" [formControlName]=\"question.name\"\r\n [size]=\"question.size\" />\r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && question.isRequired && !question.size && question.maxLength\" [formControlName]=\"question.name\"\r\n [maxLength]=\"question.maxLength\" />\r\n \r\n <input type=\"text\" [id]=\"question.name\" pInputText *ngIf=\"question.inputType && question.inputType==='text' \r\n && question.isRequired && !question.size && !question.maxLength\" [formControlName]=\"question.name\" />\r\n <div style=\"flex-grow: 1;\" *ngIf=\"question.description\" style=\"padding-left: 8px\">\r\n <app-overlay-info [overlayText]=\"question.description\"></app-overlay-info>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- && visibleIf(question.visibleIf) -->\r\n <div *ngIf=\"question.type && question.type==='singleselectcheckbox'\">\r\n <!-- <div [ngStyle]=\"setStyle(question.indent)\"> -->\r\n <p-selectButton [options]=\"question.choices\" [formControlName]=\"question.name\" [multiple]=false\r\n optionLabel=\"text\" optionValue=\"value\" ></p-selectButton>\r\n <!-- </div> -->\r\n </div>\r\n\r\n\r\n <div *ngIf=\"question.type && question.type==='dropdown' && question.size\"> \r\n <!-- <div class=\"flex-child\"> \r\n <p-dropdown [id]=\"question.name\" *ngIf=\"question.choices.length>3\" \r\n [formControlName]=\"question.name\" placeholder=\" \" [options]=\" getDependentDropdownData(question)| async\"\r\n optionLabel=\"text\" optionValue=\"value\" [style]=\"{'width':'200px','height':'35px'}\" [filter]=\"true\" filterBy=\"text\"\r\n >\r\n </p-dropdown>\r\n\r\n \r\n <p-dropdown [id]=\"question.name\" *ngIf=\"question.choices.length<=3\" editable=\"true\" filter=\"true\" filterBy=\"text\"\r\n [formControlName]=\"question.name\" placeholder=\" \" [options]=\" getDependentDropdownData(question)| async\"\r\n optionLabel=\"text\" optionValue=\"value\" [style]=\"{'width':'200px','height':'35px'}\">\r\n </p-dropdown>\r\n </div> -->\r\n\r\n <!-- <p-autoComplete [formControlName]=\"question.name\" [suggestions]=\"getDependentDropdownData(question)| async\" appendTo=\"body\"\r\n (completeMethod)=\"filterValue($event,question.choices,question.name)\" field=\"text\" [dropdown]=\"true\" \r\n minLength = 3 forceSelection=\"true\" [show]=\"getDependentDropdownData(question)| async\"\r\n > -->\r\n <div > \r\n \r\n <p-autoComplete [formControlName]=\"question.name\" appendTo=\"body\" [suggestions]=\"filteredBs.get(question.name)| async\"\r\n (completeMethod)=\"filterValue($event,question)\" dataKey =\"value\" field=\"text\" [dropdown]=\"true\" [size]=\"question.size\"\r\n minLength = 1 forceSelection=\"true\" type=\"text\" (onSelect)=\"onSelect($event,question.name)\"> \r\n\r\n <ng-template let-value pTemplate=\"item\">\r\n <div>\r\n <div>{{value.text}}</div>\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n</div>\r\n\r\n <!-- <div *ngIf=\"question.description\">\r\n <app-overlay-info [overlayText]=\"question.description\"></app-overlay-info>\r\n </div> -->\r\n </div>\r\n \r\n <div *ngIf=\"question.type && question.type==='dropdown' && !question.size\">\r\n <p-autoComplete [formControlName]=\"question.name\" appendTo=\"body\"\r\n [suggestions]=\"filteredBs.get(question.name)| async\" (completeMethod)=\"filterValue($event,question)\"\r\n dataKey=\"value\" field=\"text\" [dropdown]=\"true\" minLength=3 forceSelection=\"true\" type=\"text\" (onSelect)=\"onSelect($event,question.name)\">\r\n <ng-template let-value pTemplate=\"item\">\r\n <div>\r\n <div>{{value.text}}</div>\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"question.customTag && question.customTag.includes('fileupload')\">\r\n <app-file-uploader [allowedFileType]=\"question.allowedFileType\" [formControlName]=\"question.name\"\r\n [maxSizeInMB]=\"question.sizeInMB\" [multiple]=\"question.multiple\" [noOfFilesToUpload]=\"question.noOFFiles\" ></app-file-uploader>\r\n </div>\r\n\r\n\r\n <div class=\"container\" style=\"padding: 0px;\" *ngIf=\"question.type && question.type==='radiogroup'\">\r\n <div class=\"container\" style=\"display: flex;\">\r\n <p-selectButton [options]=\"question.choices\" [formControlName]=\"question.name\" optionLabel=\"text\"\r\n optionValue=\"value\"></p-selectButton>\r\n <div style=\"flex-grow: 1;\" *ngIf=\"question.description\" style=\"padding-left: 8px\">\r\n <app-overlay-info [overlayText]=\"question.description\"></app-overlay-info>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"container\" style=\"padding: 0px;\" *ngIf=\"question.type && question.type==='displaytextaslabel'\">\r\n <div class=\"container\" style=\"display: flex;\">\r\n <label>{{form.controls[question.name].value}}</label>\r\n <input type=\"hidden\" [formControlName]=\"question.name\"/>\r\n <div style=\"flex-grow: 1;\" *ngIf=\"question.description\" style=\"padding-left: 2px\">\r\n <app-overlay-info [overlayText]=\"question.description\"></app-overlay-info>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div>\r\n <small class=\"p-error\" *ngIf=\"isValid!=''\">{{isValid}}</small>\r\n </div>\r\n</div>", styles: [".form-label{display:inline-block;margin-bottom:6px;margin-top:20px}\n"] }]
1130
- }], function () { return [{ type: i1.QuestionService }, { type: i2.ValidationService }, { type: i3.UtilService }, { type: i1.QuestionService }, { type: i4.NavController }]; }, { question: [{
1131
- type: Input
1132
- }], form: [{
1133
- type: Input
1134
- }], forScreenQuestionnaire: [{
1135
- type: Input
1136
- }] }); })();
1137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2R5bmFtaWMtZm9ybS1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9keW5hbWljLWZvcm0tcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ0NuRSxzQ0FFa0M7SUFBbkIsZ01BQVMsZUFBQSxnQkFBUSxDQUFBLElBQUM7SUFDNUIsWUFDTDtJQUFBLGlCQUFhO0lBRWIsc0NBRWlDO0lBQXBCLGdNQUFTLGVBQUEsZ0JBQVEsQ0FBQSxJQUFDO0lBQzFCLFlBQ0w7SUFBQSxpQkFBYTs7O0lBUFIsZUFDTDtJQURLLDJEQUNMO0lBS0ssZUFDTDtJQURLLDREQUNMOzs7OztJQWhCUixtQ0FDd0Q7SUFERSx5UEFBNkI7SUFHdkYseUJBQUc7SUFBQSxZQUNDO0lBQUEsaUJBQUk7SUFDSixxR0FhZ0I7SUFDcEIsaUJBQVc7OztJQW5Ca0gsMENBQXlCO0lBQTVJLDJDQUFzQixtQ0FBQSw2QkFBQSxlQUFBLG9CQUFBLG9CQUFBLG9CQUFBO0lBRzdCLGVBQ0M7SUFERCxnREFDQzs7O0lBbUJFLDZCQUF1RjtJQUNyRixZQUFrQjtJQUFBLGlCQUFROzs7SUFEckIsNENBQTBC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QUF5RztRQVd6RyxlQUF3RztRQUF4RyxxSUFBd0c7UUFVeEcsZUFBa0g7UUFBbEgsdUpBQWtIO1FBeUNsSCxlQUFxRjtRQUFyRixpSEFBcUY7UUFzQnJGLGVBQWdFO1FBQWhFLHlGQUFnRTtRQWFoRSxlQUE4RDtRQUE5RCx1RkFBOEQ7UUFlOUQsZUFDOEU7UUFEOUUscUxBQzhFO1FBc0I1RSxlQUE2RDtRQUE3RCx3RkFBNkQ7UUFRM0QsZUFBa0U7UUFBbEUsaUdBQWtFO1FBc0NwRSxlQUFtRTtRQUFuRSxrR0FBbUU7UUFhbkUsZUFBcUU7UUFBckUsOEZBQXFFO1FBTTdCLGVBQW1EO1FBQW5ELDhFQUFtRDtRQVVuRCxlQUEyRDtRQUEzRCxzRkFBMkQ7UUFZakYsZUFBaUI7UUFBakIsd0NBQWlCOzt1RkQ1UmhDLHlCQUF5QjtjQVJyQyxTQUFTOzJCQUNFLGdCQUFnQixpQkFHWCxpQkFBaUIsQ0FBQyxJQUFJO3NMQUs1QixRQUFRO2tCQUFoQixLQUFLO1lBQ0csSUFBSTtrQkFBWixLQUFLO1lBQ0csc0JBQXNCO2tCQUE5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVsZW1lbnRzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9FbGVtZW50c01vZGVsJztcclxuaW1wb3J0IHsgS2V5VmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0tleVZhbHVlTW9kZWwnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9WYWxpZGF0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4vcXVlc3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICcuL1NlbGVjdEl0ZW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwYW5lbC1xdWVzdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtZm9ybS1wYW5lbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzIDogWycuL2R5bmFtaWMtZm9ybS1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtUGFuZWxDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBFbGVtZW50c01vZGVsO1xyXG4gIEBJbnB1dCgpIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgZm9yU2NyZWVuUXVlc3Rpb25uYWlyZTogYm9vbGVhbjtcclxuICBtaW5EYXRlOiBEYXRlO1xyXG4gIG1heERhdGU6IERhdGU7XHJcbiAgZGlzcGxheVBvc2l0aW9uOiBib29sZWFuO1xyXG4gIHBvc2l0aW9uOiBzdHJpbmc7XHJcbiAgcG9wVXBIZWFkZXI6IHN0cmluZztcclxuICBwb3BVcFRleHQ6IHN0cmluZztcclxuICBwb3BVcFllc0FjdGlvbkxhYmVsOiBzdHJpbmc7XHJcbiAgcG9wVXBOb0FjdGlvbkxhYmVsOiBzdHJpbmc7XHJcbiAgZHJvcGRvd25WYWx1ZUJzID0gbmV3IE1hcDxVbnR5cGVkRm9ybUNvbnRyb2wsIEJlaGF2aW9yU3ViamVjdDxTZWxlY3RJdGVtW10+PigpO1xyXG4gIGZpbHRlcmVkQnMgPSBuZXcgTWFwPHN0cmluZywgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdEl0ZW1bXT4+KCk7XHJcbiAgcmV0dXJuTW9kZWwgPSBuZXcgVmFsaWRhdGlvbk1vZGVsKCk7XHJcbiBcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2VydmljZTogUXVlc3Rpb25TZXJ2aWNlLCBwdWJsaWMgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgcXVlc3Rpb25TZXJ2aWNlOiBRdWVzdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcikgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ2lzIER5bmFtaWNGb3JtUXVlc3Rpb25Db21wb25lbnQgbmdPbkluaXQgY2FsbGVkJywgdGhpcy5xdWVzdGlvbilcclxuICBcclxuICBcclxuICAgICAgaWYgKHRoaXMucXVlc3Rpb24uaW5wdXRUeXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgICAgY29uc29sZS5sb2coJ0RhdGUgJywgdGhpcy5xdWVzdGlvbik7XHJcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb24ubWF4KSB7XHJcbiAgICAgICAgICB0aGlzLnBhcnNlRGF0ZSh0aGlzLnF1ZXN0aW9uLm1heCwgJ21heCcpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLm1pbikge1xyXG4gICAgICAgICAgdGhpcy5wYXJzZURhdGUodGhpcy5xdWVzdGlvbi5taW4sICdtaW4nKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIGdldCBpc1ZhbGlkKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2lzVmFsaWQgaXMgY2FsbGxlZCcpO1xyXG4gICAgbGV0IG1lc3NhZ2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBsZXQgcXVlc3Rpb25UeXBlOiBzdHJpbmcgPSB0aGlzLnF1ZXN0aW9uLnR5cGU7XHJcbiAgICBpZiAoJ2h0bWwnID09PSBxdWVzdGlvblR5cGUgfHwgKCdidXR0b24nID09PSBxdWVzdGlvblR5cGUgJiYgIXRoaXMucXVlc3Rpb24udmFsaWRhdG9ycykgfHwgJ3NpbXBsZUxhYmVsJyA9PT0gcXVlc3Rpb25UeXBlIHx8ICdkaXNwbGF5dGV4dGFzbGFiZWwnID09PSBxdWVzdGlvblR5cGUpIHtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbiAmJiB0aGlzLnF1ZXN0aW9uLm5hbWUgJiYgdGhpcy5mb3JtICYmIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ucmVxdWlyZWRcclxuICAgICAgJiYgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpKSB7XHJcbiAgICAgIC8vY29uc29sZS5sb2coJ2Vycm9ycz8ucmVxdWlyZWQnLHRoaXMucXVlc3Rpb24pXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uLnJlcXVpcmVkRXJyb3JUZXh0O1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKHRoaXMucXVlc3Rpb24gJiYgdGhpcy5xdWVzdGlvbi5uYW1lICYmIHRoaXMuZm9ybSAmJiB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/Lm1heGxlbmd0aCAmJiAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHwgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZCkpIHtcclxuICAgIC8vICAgLy8vY29uc29sZS5sb2coJ2Vycm9ycz8ubWF4TGVuZ3RoJyx0aGlzLnF1ZXN0aW9uKVxyXG4gICAgLy8gICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgLy8gICByZXR1cm4gdGhpcy5xdWVzdGlvbi5kZXNjcmlwdGlvbjtcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbiAmJiB0aGlzLnF1ZXN0aW9uLm5hbWUgJiYgdGhpcy5mb3JtICYmIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ucGF0dGVyblxyXG4gICAgICAmJiAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHwgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZCkpIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ2Vycm9ycz8ucGF0dGVybicsdGhpcy5xdWVzdGlvbilcclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG5cclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKHZhbGlkYXRvciA9PiB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3ZhbGlkYXRvci50eXBlICcsIHZhbGlkYXRvci50eXBlKVxyXG4gICAgICAgIGlmIChrZWVwR29pbmcpIHtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3JlZ2V4Jykge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygndmFsaWRhdG9yLnRleHQgJywgdmFsaWRhdG9yLnRleHQpXHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0b3IudGV4dDtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24gJiYgdGhpcy5xdWVzdGlvbi5uYW1lICYmIHRoaXMuZm9ybSAmJiB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LmRhdGVDb21wYXJpc2lvblxyXG4gICAgICAmJiAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHwgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZCkpIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gXCJcIjtcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKHZhbGlkYXRvciA9PiB7XHJcbiAgICAgICAgaWYgKGtlZXBHb2luZykge1xyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnZXhwcmVzc2lvbicpIHtcclxuICAgICAgICAgICAgLy8gIGNvbnNvbGUubG9nKCd2YWxpZGF0b3IudGV4dCAnLCB2YWxpZGF0b3IudGV4dClcclxuICAgICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRvci50ZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICBrZWVwR29pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uICYmIHRoaXMucXVlc3Rpb24ubmFtZSAmJiB0aGlzLmZvcm0gJiYgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5wYXNzd29yZENvbXBhcmlzaW9uXHJcbiAgICAgICYmICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fCB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKSkge1xyXG4gICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IHRoaXMucXVlc3Rpb24udmFsaWRhdG9ycztcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2godmFsaWRhdG9yID0+IHtcclxuICAgICAgICBpZiAoa2VlcEdvaW5nKSB7XHJcbiAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCd2YWxpZGF0b3IudHlwZS5taW5sZW5ndGggJywgdmFsaWRhdG9yLnR5cGUpXHJcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdleHByZXNzaW9uJykge1xyXG4gICAgICAgICAgICAvLyAgY29uc29sZS5sb2coJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KVxyXG4gICAgICAgICAgICBtZXNzYWdlID0gdmFsaWRhdG9yLnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIGtlZXBHb2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24gJiYgdGhpcy5xdWVzdGlvbi5uYW1lICYmIHRoaXMuZm9ybSAmJiB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/Lm1pbmxlbmd0aFxyXG4gICAgICAmJiAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHwgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZCkpIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgLy8gY29uc29sZS5sb2coJ01pbkxlbmd0aCcpXHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gXCJcIjtcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKHZhbGlkYXRvciA9PiB7XHJcbiAgICAgICAgaWYgKGtlZXBHb2luZykge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ3ZhbGlkYXRvci50eXBlLm1pbmxlbmd0aCAnLCB2YWxpZGF0b3IudHlwZSlcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3RleHQnKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd2YWxpZGF0b3IudGV4dCAnLCB2YWxpZGF0b3IudGV4dClcclxuICAgICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRvci50ZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICBrZWVwR29pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG5cclxuICAgIH1cclxuXHJcblxyXG4gIFxyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24gJiYgdGhpcy5xdWVzdGlvbi5uYW1lICYmIHRoaXMuZm9ybSAmJiB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/Lm1heGxlbmd0aFxyXG4gICAgICAmJiAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHwgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZCkpIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gXCJcIjtcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKHZhbGlkYXRvciA9PiB7XHJcbiAgICAgICAgaWYgKGtlZXBHb2luZykge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ3ZhbGlkYXRvci50eXBlLm1pbmxlbmd0aCAnLCB2YWxpZGF0b3IudHlwZSlcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3RleHQnKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd2YWxpZGF0b3IudGV4dCAnLCB2YWxpZGF0b3IudGV4dClcclxuICAgICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRvci50ZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICBrZWVwR29pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG5cclxuICAgIH1cclxuICBcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uICYmIHRoaXMucXVlc3Rpb24ubmFtZSAmJiB0aGlzLmZvcm0gJiYgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5yZXF1aXJlZElmXHJcbiAgICAgICYmICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fCB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKSkge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICByZXR1cm4gXCJSZXF1aXJlZFwiO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbiAmJiB0aGlzLnF1ZXN0aW9uLm5hbWUgJiYgdGhpcy5mb3JtICYmIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ubm90RXF1YWxzXHJcbiAgICAgICYmICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fCB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKSkge1xyXG4gICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IHRoaXMucXVlc3Rpb24udmFsaWRhdG9ycztcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIHZhbGlkYXRvckxpc3QuZm9yRWFjaCh2YWxpZGF0b3IgPT4ge1xyXG4gICAgICAgIGlmIChrZWVwR29pbmcpIHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coJ3ZhbGlkYXRvci50eXBlLm1pbmxlbmd0aCAnLCB2YWxpZGF0b3IudHlwZSlcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ2N1c3RvbXZhbGlkYXRpb24nKSB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KVxyXG4gICAgICAgICAgICBtZXNzYWdlID0gdmFsaWRhdG9yLnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIGtlZXBHb2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5zZXRNaW5EYXRlKGRhdGVWYWx1ZTpEYXRlLHF1ZXN0aW9uOkVsZW1lbnRzTW9kZWwpe1xyXG4gIGNvbnNvbGUubG9nKCdzZXRNaW5EYXRlIGNhbGxlZCcsIHF1ZXN0aW9uLm1pbik7XHJcbiAgY29uc29sZS5sb2coJ3F1ZXN0aW9uLm1pbiAnLHRoaXMuZm9ybS5jb250cm9sc1txdWVzdGlvbi5taW5dLnZhbHVlKTtcclxuICBsZXQgc3RhcnREYXRlVmFsdWU6RGF0ZT1uZXcgRGF0ZSh0aGlzLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubWluXS52YWx1ZSk7XHJcbiAgIC8vdGhpcy5taW5EYXRlID0gbmV3IERhdGUoc3RhcnREYXRlVmFsdWUpO1xyXG4gICAvL3RoaXMuZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXS5zZXRWYWx1ZShudWxsKTtcclxuICAgdGhpcy5taW5EYXRlID0gbmV3IERhdGUoKTtcclxuICAgY29uc29sZS5sb2coJ3N0YXJ0RGF0ZVZhbHVlJyxzdGFydERhdGVWYWx1ZSk7XHJcbiAgIHRoaXMubWluRGF0ZS5zZXRNb250aChzdGFydERhdGVWYWx1ZS5nZXRNb250aCgpKTtcclxuICAgdGhpcy5taW5EYXRlLnNldEZ1bGxZZWFyKE51bWJlcihzdGFydERhdGVWYWx1ZS5nZXRGdWxsWWVhcigpKSk7XHJcbiAgIHRoaXMubWluRGF0ZS5zZXREYXRlKE51bWJlcihzdGFydERhdGVWYWx1ZS5nZXREYXRlKCkpICsgMSk7XHJcbn1cclxuXHJcbiAgcGFyc2VEYXRlKHN0ckRhdGU6IHN0cmluZywgdHlwZTogc3RyaW5nKTogRGF0ZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdpcyBwYXJzZURhdGUgY2FsbGVkJywgc3RyRGF0ZSArICcgdHlwZScsIHR5cGUpIC8vMDUtMTAtMjAyMVxyXG4gICAgICBpZiAoc3RyRGF0ZSAmJiB0eXBlID09PSAnbWF4Jykge1xyXG4gICAgICAgIHZhciBzcGxpdEFycmF5ID0gc3RyRGF0ZS5zcGxpdCgnLScpO1xyXG4gICAgICAgIC8vbGV0IGRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgdGhpcy5tYXhEYXRlLnNldE1vbnRoKE51bWJlcihzcGxpdEFycmF5WzBdKSAtIDEpO1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZS5zZXRGdWxsWWVhcihOdW1iZXIoc3BsaXRBcnJheVsyXSkpO1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZS5zZXREYXRlKE51bWJlcihzcGxpdEFycmF5WzFdKSk7XHJcbiAgICAgICAgIGNvbnNvbGUubG9nKCdkYXRlJywgdGhpcy5tYXhEYXRlKVxyXG4gICAgICAgIHJldHVybiB0aGlzLm1heERhdGU7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgaWYgKHN0ckRhdGUgJiYgdHlwZSA9PT0gJ21pbicpIHtcclxuICAgICAgICB2YXIgc3BsaXRBcnJheSA9IHN0ckRhdGUuc3BsaXQoJy0nKTtcclxuICAgICAgICAvL2xldCBkYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLm1pbkRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRoaXMubWluRGF0ZS5zZXRNb250aChOdW1iZXIoc3BsaXRBcnJheVswXSkgLSAxKTtcclxuICAgICAgICB0aGlzLm1pbkRhdGUuc2V0RnVsbFllYXIoTnVtYmVyKHNwbGl0QXJyYXlbMl0pKTtcclxuICAgICAgICB0aGlzLm1pbkRhdGUuc2V0RGF0ZShOdW1iZXIoc3BsaXRBcnJheVsxXSkpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2RhdGUnLCB0aGlzLm1pbkRhdGUpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWluRGF0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB2aXNpYmxlSWYoc3RyRXhwOiBzdHJpbmcpIHtcclxuXHJcbiAgICBpZiAoIXN0ckV4cCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHZhciBzcGxpdEFycmF5OiBzdHJpbmdbXTtcclxuICAgIGxldCBpc0RvZXNOb3RFcXVhbDogYm9vbGVhbjtcclxuICAgIGxldCBpbmRleDogbnVtYmVyID0gc3RyRXhwLmluZGV4T2YoJyE9Jyk7XHJcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XHJcbiAgICAgIHNwbGl0QXJyYXkgPSBzdHJFeHAuc3BsaXQoJz09Jyk7XHJcbiAgICAgIGlzRG9lc05vdEVxdWFsID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzcGxpdEFycmF5ID0gc3RyRXhwLnNwbGl0KCchPScpO1xyXG4gICAgICBpc0RvZXNOb3RFcXVhbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgb3BlcmFuZDE6IHN0cmluZyA9IHNwbGl0QXJyYXlbMF07XHJcbiAgICBsZXQgb3BlcmFuZDI6IHN0cmluZyA9IHNwbGl0QXJyYXlbMV07XHJcbiAgICBvcGVyYW5kMSA9IG9wZXJhbmQxLnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKTsgLy9jbGFpbWFudFByaW9yUGF5MTAyIGRpZmZtYWlsYWRkcmVzczMxNVxyXG4gICAgb3BlcmFuZDIgPSBvcGVyYW5kMi5yZXBsYWNlKCd7JywgJycpLnJlcGxhY2UoJ30nLCAnJyk7IC8vbnVsbFxyXG4gICAgLy8gY29uc29sZS5sb2coJ29wZXJhbmQxJyxvcGVyYW5kMSwnb3BlcmFuZDInLG9wZXJhbmQyLCcgdGhpcy5mb3JtJyx0aGlzLmZvcm0uY29udHJvbHNbJ2NpdHkzMTUnXSk7XHJcbiAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzWydvcGVyYW5kMSddKSB7XHJcbiAgICAgIHZhciB2YWx1ZU9mQ25ydHJsVG9DaGVjayA9IHRoaXMuZm9ybS5jb250cm9sc1tvcGVyYW5kMV0udmFsdWU7XHJcbiAgICAgIC8vY29uc29sZS5sb2coJ3ZhbHVlT2ZDbnJ0cmxUb0NoZWNrJywgdmFsdWVPZkNucnRybFRvQ2hlY2spO1xyXG4gICAgICBpZiAob3BlcmFuZDIgPT09ICdudWxsJyAmJiBpc0RvZXNOb3RFcXVhbCAmJiB2YWx1ZU9mQ25ydHJsVG9DaGVjaykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcGVyYW5kMiA9PT0gJ251bGwnICYmICFpc0RvZXNOb3RFcXVhbCAmJiAhdmFsdWVPZkNucnRybFRvQ2hlY2spIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZygndGhpcy5mb3JtLmNvbnRyb2xzW29wZXJhbmQxXScsdGhpcy5mb3JtLmNvbnRyb2xzW29wZXJhbmQxXSlcclxuICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9sc1tvcGVyYW5kMV0pIHtcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERlcGVuZGVudERyb3Bkb3duRGF0YShlbGVtZW50OiBhbnkpIHtcclxuICAgIGlmIChlbGVtZW50LnNlcnZpY2VOYW1lKSB7XHJcbiAgICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlICE9ICdGRVRDSCcpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBhcmVudENvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbZWxlbWVudC5zZXJ2aWNlQ2FsbFBhcmFtXSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgICAgIGxldCBzZXJ2aWNlQ2FsbFR5cGUgPSBlbGVtZW50LnNlcnZpY2VDYWxsVHlwZTtcclxuICAgICAgbGV0IHNlcnZpY2VOYW1lOiBzdHJpbmcgPSBlbGVtZW50LnNlcnZpY2VOYW1lO1xyXG4gICAgICBsZXQgc2VydmljZVVwZGF0ZVBhcmFtID0gZWxlbWVudC5zZXJ2aWNlVXBkYXRlUGFyYW07XHJcbiAgICAgIGxldCBicyA9IHRoaXMuZHJvcGRvd25WYWx1ZUJzLmdldChwYXJlbnRDb250cm9sKTtcclxuICAgICAgaWYgKGJzKSB7XHJcbiAgICAgICAgcmV0dXJuIGJzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBicyA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcbiAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlQnMuc2V0KHBhcmVudENvbnRyb2wsIGJzKTtcclxuICAgICAgfVxyXG4gICAgICBwYXJlbnRDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgIC8vICBjb25zb2xlLmxvZygncGFyZW50Q29udHJvbCcsIHBhcmVudENvbnRyb2wpO1xyXG4gICAgICAgIC8vICAgIGNvbnNvbGUubG9nKCd2YWx1ZScsIHZhbHVlKTtcclxuICAgICAgICBsZXQgY3VycmVudEJzID0gdGhpcy5kcm9wZG93blZhbHVlQnMuZ2V0KHBhcmVudENvbnRyb2wpO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgaWYgKHNlcnZpY2VDYWxsVHlwZSA9PT0gJ0dFVCcpIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0luc2lkZSBHRVQnKTtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZVxyXG4gICAgICAgICAgICAgIC5nZXQoYCR7c2VydmljZU5hbWV9JHt2YWx1ZX0vJHtzZXJ2aWNlVXBkYXRlUGFyYW19YClcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEJzLm5leHQocmVzWydjaG9pY2VzJ10pO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCcy5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZGVwZW5kZW50RmMgPSB0aGlzLmZvcm0uY29udHJvbHNbZWxlbWVudC5uYW1lXSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgICAgIGxldCBicyA9IHRoaXMuZHJvcGRvd25WYWx1ZUJzLmdldChkZXBlbmRlbnRGYyk7XHJcbiAgICAgIGlmICghYnMpIHtcclxuICAgICAgICBsZXQgYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGVsZW1lbnQuY2hvaWNlcyk7XHJcbiAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlQnMuc2V0KGRlcGVuZGVudEZjLCBicyk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGJzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoZWxlbWVudDogYW55KSB7XHJcblxyXG4gICBcclxuICAgIGlmICghZWxlbWVudC5zZXJ2aWNlTmFtZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAgXHJcbiAgICBsZXQgc2VydmljZVR5cGUgPSBlbGVtZW50LnNlcnZpY2VUeXBlO1xyXG4gICAgaWYgKGVsZW1lbnQuc2VydmljZVR5cGUgPT09ICdGRVRDSCcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBsZXQgc2VydmljZUNhbGxQYXJhbSA9IGVsZW1lbnQuc2VydmljZUNhbGxQYXJhbTsgLy9zc24zMjAsbHN0bmFtZTMyMFxyXG4gICAgbGV0IHNlcnZpY2VDYWxsVHlwZSA9IGVsZW1lbnQuc2VydmljZUNhbGxUeXBlOyAgLy9cIkdFVFwiXHJcbiAgICBsZXQgc2VydmljZU5hbWU6IHN0cmluZyA9IGVsZW1lbnQuc2VydmljZU5hbWU7IC8vL3NlY3VyaXR5LXNlcnZpY2UvdmFsaWRhdGVTU04vXHJcbiAgICBsZXQgc2VydmljZVVwZGF0ZVBhcmFtID0gZWxlbWVudC5zZXJ2aWNlVXBkYXRlUGFyYW07XHJcbiAgICBsZXQgYWxsVmFsdWVQcmVzZW50OkJvb2xlYW49dHJ1ZTtcclxuIC8vICBjb25zb2xlLmxvZygnc2VydmljZUNhbGxQYXJhbScsc2VydmljZUNhbGxQYXJhbSk7XHJcbiAgICBpZiAoc2VydmljZUNhbGxQYXJhbSkge1xyXG4gICAgICB2YXIgc3BsaXR0ZWQgPSBzZXJ2aWNlQ2FsbFBhcmFtLnNwbGl0KFwiLFwiKTtcclxuICAgICAgbGV0IHZhbHVlQXJyOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBsZXQgcGFyYW1BcnI6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXR0ZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvL3VzZSBpIGluc3RlYWQgb2YgMCBkb2IzMjBcclxuICAgICAgIC8vIGNvbnNvbGUubG9nKCdkb2IzMjAnLHRoaXMuZm9ybS5jb250cm9sc1snZG9iMzIwJ10udmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm0uY29udHJvbHNbc3BsaXR0ZWRbaV1dLnZhbHVlKSB7XHJcbiAgICAgICAgICBwYXJhbUFyci5wdXNoKHNwbGl0dGVkW2ldKTtcclxuICAgICAgICAgIHZhbHVlQXJyLnB1c2godGhpcy5mb3JtLmNvbnRyb2xzW3NwbGl0dGVkW2ldXS52YWx1ZSlcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIGFsbFZhbHVlUHJlc2VudD1mYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAvLyBjb25zb2xlLmxvZygndmFsdWVBcnIxMicsIHZhbHVlQXJyLCAncGFyYW1BcnIxMSAnLCBwYXJhbUFyciwgJyBlbGVtZW50JywgZWxlbWVudCk7XHJcblxyXG4gICAgICB2YXIgbW9kZWw6IFZhbGlkYXRpb25Nb2RlbCA9IHt9O1xyXG4gICAgICBtb2RlbC5wYXJhbU5hbWUgPSBwYXJhbUFycjtcclxuICAgICAgbW9kZWwucGFyYW1WYWx1ZSA9IHZhbHVlQXJyO1xyXG4gICAgICAvLyByZXR1cm4gdGhpcy5wb3N0KGBxdWVzdGlvbm5haXJlL3NjcmVlbi1xdWVzdGlvbm5haXJlYCwgcXVlc3Rpb25uYWlyZURhdGEpO1xyXG4gICAgICBpZihhbGxWYWx1ZVByZXNlbnQpe1xyXG4gICAgICBpZiAoc2VydmljZUNhbGxUeXBlID09PSAnUE9TVCcpIHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnSW5zaWRlIEdFVCcpO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2VcclxuICAgICAgICAgIC5wb3N0KGAke3NlcnZpY2VOYW1lfWAsIG1vZGVsKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnJldHVybk1vZGVsID0gcmVzO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnJldHVybk1vZGVsLnJldHVyblR5cGUgJiYgdGhpcy5yZXR1cm5Nb2RlbC5yZXR1cm5UeXBlID09PSAnUE9QVVAnKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UG9zaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9ICd0b3AnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcEhlYWRlciA9IHRoaXMucmV0dXJuTW9kZWwucG9wVXBIZWFkZXI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvcFVwVGV4dCA9IHRoaXMucmV0dXJuTW9kZWwucG9wVXBUZXh0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcFllc0FjdGlvbkxhYmVsID0gdGhpcy5yZXR1cm5Nb2RlbC5wb3BVcFllc0J1dHRvbkxhYmVsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcE5vQWN0aW9uTGFiZWwgPSB0aGlzLnJldHVybk1vZGVsLnBvcFVwTm9CdXR0b25MYWJlbDtcclxuXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnJldHVybk1vZGVsICcsIHRoaXMucmV0dXJuTW9kZWwpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLFxyXG4gICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWNjZXB0KCkge1xyXG4gICAgLy9jb25zb2xlLmxvZygnYWNjZXB0IGNhbGxlZDEyMycsIHRoaXMucmV0dXJuTW9kZWwuaWRlbnRpZmllcilcclxuICAgIGxldCBtb2RlbEFycjogS2V5VmFsdWVNb2RlbFtdID0gdGhpcy5yZXR1cm5Nb2RlbC5pZGVudGlmaWVyO1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IFBhcmFtc1tdID0gW107XHJcbiAgICBmb3IgKHZhciB2YWwgb2YgbW9kZWxBcnIpIHtcclxuICAgICAgcGFyYW1BcnJheS5wdXNoKHsgW3ZhbC5rZXldOiB2YWwudmFsdWUgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXJhbXMgPSBwYXJhbUFycmF5LnJlZHVjZSgoYXJyT2JqLCBpdGVtKSA9PiBPYmplY3QuYXNzaWduKGFyck9iaiwgaXRlbSwge30pKTtcclxuICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoW3RoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uXSwgeyBxdWVyeVBhcmFtczogcGFyYW1zIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgcmVqZWN0KCkge1xyXG4gICAgLy9jb25zb2xlLmxvZygnUmVqZWN0IGNhbGxlZCcpXHJcbiAgICB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KHRoaXMucmV0dXJuTW9kZWwubm9BY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgXHJcblxyXG5cclxuICBmaWx0ZXJWYWx1ZShldmVudCwgZWxlbWVudDogYW55KSB7XHJcbiAgLy8gIGNvbnNvbGUubG9nKCdmaWx0ZXJWYWx1ZSBjYWxsZWQnLCBldmVudCwgJyBlbGVtZW50JywgZWxlbWVudCk7XHJcbiAgICBpZiAoIWVsZW1lbnQuc2VydmljZU5hbWUpIHtcclxuICAgICAgbGV0IGJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWxlY3RJdGVtW10+KFtdKTtcclxuICAgICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XHJcbiAgICAgIGxldCBmaWx0ZXJlZDogYW55W10gPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNob2ljZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY2hvaWNlID0gZWxlbWVudC5jaG9pY2VzW2ldO1xyXG4gICAgICAgIGlmIChjaG9pY2UudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkudG9Mb3dlckNhc2UoKSkgPT0gMCkge1xyXG4gICAgICAgICAgZmlsdGVyZWQucHVzaChjaG9pY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBicy5uZXh0KGZpbHRlcmVkKTtcclxuICAgICAgdGhpcy5maWx0ZXJlZEJzLnNldChlbGVtZW50Lm5hbWUsIGJzKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgaWYgKHRoaXMuZmlsdGVyZWRCcyAmJiB0aGlzLmZpbHRlcmVkQnMuZ2V0KGVsZW1lbnQubmFtZSkpIHtcclxuICAgICAgICBsZXQgcXVlcnkgPSBldmVudC5xdWVyeTtcclxuICAgICAgICBsZXQgZmlsdGVyZWQ6IGFueVtdID0gW107XHJcbiAgICAgICAgbGV0IGV4aXN0aW5nQ2hvaWNlcyA9IHRoaXMuZmlsdGVyZWRCcy5nZXQoZWxlbWVudC5uYW1lKS52YWx1ZTtcclxuICAgICAgICBsZXQgYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdEl0ZW1bXT4oW10pO1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coJ0luc2lkZSBJRi0tLScsIGJzKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4aXN0aW5nQ2hvaWNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGNob2ljZSA9IGV4aXN0aW5nQ2hvaWNlc1tpXTtcclxuICAgICAgICAgIGlmIChjaG9pY2UudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkudG9Mb3dlckNhc2UoKSkgPT0gMCkge1xyXG4gICAgICAgICAgICBmaWx0ZXJlZC5wdXNoKGNob2ljZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJzLm5leHQoZmlsdGVyZWQpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRCcy5zZXQoZWxlbWVudC5uYW1lLCBicyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG5cclxuXHJcbiAgICAgICAgbGV0IHBhcmVudENvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbZWxlbWVudC5zZXJ2aWNlQ2FsbFBhcmFtXSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgICAgICAgbGV0IHNlcnZpY2VDYWxsVHlwZSA9IGVsZW1lbnQuc2VydmljZUNhbGxUeXBlO1xyXG4gICAgICAgIGxldCBzZXJ2aWNlTmFtZTogc3RyaW5nID0gZWxlbWVudC5zZXJ2aWNlTmFtZTtcclxuICAgICAgICBsZXQgc2VydmljZVVwZGF0ZVBhcmFtID0gZWxlbWVudC5zZXJ2aWNlVXBkYXRlUGFyYW07XHJcbiAgICAgICAgbGV0IHBhcmVudENvbnRyb2xWYWwgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAocGFyZW50Q29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgcGFyZW50Q29udHJvbFZhbCA9IHBhcmVudENvbnRyb2wudmFsdWVbJ3ZhbHVlJ107ICAvL0NBXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLy9jb25zb2xlLmxvZygncGFyZW50Q29udHJvbFZhbCcsIHBhcmVudENvbnRyb2xWYWwpO1xyXG5cclxuICAgICAgICBwYXJlbnRDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZygncGFyZW50Q29udHJvbFZhbCB2YWx1ZSBjaGFuZ2VkJyk7XHJcbiAgICAgICAgICBsZXQgY2hpbGRDb250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW3NlcnZpY2VVcGRhdGVQYXJhbV0gYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZEJzID0gbmV3IE1hcDxzdHJpbmcsIEJlaGF2aW9yU3ViamVjdDxTZWxlY3RJdGVtW10+PigpO1xyXG4gICAgICAgICAgY2hpbGRDb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAocGFyZW50Q29udHJvbFZhbCkge1xyXG4gICAgICAgICAgaWYgKHNlcnZpY2VDYWxsVHlwZSA9PT0gJ0dFVCcpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZVxyXG4gICAgICAgICAgICAgIC5nZXQoYCR7c2VydmljZU5hbWV9JHtwYXJlbnRDb250cm9sVmFsfS8ke3NlcnZpY2VVcGRhdGVQYXJhbX1gKVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcXVlcnkgPSBldmVudC5xdWVyeTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWQ6IGFueVtdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWxlY3RJdGVtW10+KFtdKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNbJ2Nob2ljZXMnXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGNob2ljZSA9IHJlc1snY2hvaWNlcyddW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGNob2ljZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvd2VyQ2FzZSgpKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkLnB1c2goY2hvaWNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnMubmV4dChmaWx0ZXJlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZEJzLnNldChlbGVtZW50Lm5hbWUsIGJzKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWQ6IGFueVtdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWxlY3RJdGVtW10+KFtdKTtcclxuICAgICAgICAgICAgICAgICAgICBicy5uZXh0KGZpbHRlcmVkKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkQnMuc2V0KGVsZW1lbnQubmFtZSwgYnMpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIGNsaWNrT3B0aW9uKGV2ZW50KXtcclxuICAgIGNvbnNvbGUubG9nKCdjbGlja09wdGlvbiBjYWxsZWQnKVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QoZXZlbnQsY250cmxOYW1lOnN0cmluZyl7XHJcbiAgICBjb25zb2xlLmxvZygnb25TZWxlY3QtLScsZXZlbnQudmFsdWUsIGNudHJsTmFtZSk7XHJcbiAgfVxyXG59IiwiPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuXHJcblxyXG4gIDxwLWRpYWxvZyBbaGVhZGVyXT1cInBvcFVwSGVhZGVyXCIgKm5nSWY9XCJkaXNwbGF5UG9zaXRpb25cIiAgWyh2aXNpYmxlKV09XCJkaXNwbGF5UG9zaXRpb25cIiBbcG9zaXRpb25dPVwicG9zaXRpb25cIiBbbW9kYWxdPVwidHJ1ZVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc4MHZ3J31cIiBbYmFzZVpJbmRleF09XCI1MDAwXCJcclxuICBbZHJhZ2dhYmxlXT1cImZhbHNlXCIgW3Jlc2l6YWJsZV09XCJmYWxzZVwiIGFwcGVuZFRvPVwiYm9keVwiPlxyXG4gIFxyXG4gIDxwPnt7cG9wVXBUZXh0fX1cclxuICAgICAgPC9wPlxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgXHJcbiAgICAgICAgICBzaXplPVwic21hbGxcIiB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cInJlamVjdCgpXCI+IFxyXG4gICAgICAgICAgICAgICB7e3BvcFVwTm9BY3Rpb25MYWJlbH19XHJcbiAgICAgICAgICA8L2lvbi1idXR0b24+XHJcblxyXG4gICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIFxyXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCIgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICBmaWxsPVwic29saWRcIiAoY2xpY2spPVwiYWNjZXB0KClcIiA+XHJcbiAgICAgICAgICAgICAgIHt7cG9wVXBZZXNBY3Rpb25MYWJlbH19XHJcbiAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIFxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9wLWRpYWxvZz4gXHJcblxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiIWZvclNjcmVlblF1ZXN0aW9ubmFpcmVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5cclxuICAgICAgICA8bGFiZWwgW2F0dHIuZm9yXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLmluZGVudD09PTEgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnXCI+XHJcbiAgICAgICAgICB7e3F1ZXN0aW9uLnRpdGxlfX08L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiZm9yU2NyZWVuUXVlc3Rpb25uYWlyZSAmJiBxdWVzdGlvbi5pbmRlbnQ9PT0xICYmIHF1ZXN0aW9uLnR5cGUhPSdodG1sJyAmJiBxdWVzdGlvbi50eXBlIT0nc2ltcGxlTGFiZWwnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2NvbXBvbmVudCdcIlxyXG4gICAgY2xhc3M9XCJmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAge3txdWVzdGlvbi50aXRsZX19XHJcbiAgICAgIFxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInF1ZXN0aW9uLmluZGVudCE9MSAmJiBxdWVzdGlvbi50eXBlIT0naHRtbCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICYmICFxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ2ZtdG51bWJlcnRleHQnKVwiXHJcbiAgICBjbGFzcz1cImZvcm0tbGFiZWxcIj5cclxuICAgICAgICB7e3F1ZXN0aW9uLnRpdGxlfX1cclxuICAgICAgXHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICAgPGRpdiAgKm5nSWY9XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5jdXN0b21UYWc9PT0nY29tcG9uZW50JyAmJiBxdWVzdGlvbi5pbmRlbnQ9PT0xICYmIHF1ZXN0aW9uLnR5cGUhPSdodG1sJyBcclxuICAgJiYgIXF1ZXN0aW9uLmRlc2NyaXB0aW9uXCI+XHJcbiAgICA8bW9uZXktZXhwZWN0ICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdtb25leS1leHBlY3QnXCI+PC9tb25leS1leHBlY3Q+XHJcbjwhLS0gPGFwcC1zZWFyY2gtZW1wbG95ZXIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1zZWFyY2gtZW1wbG95ZXInXCIgKG9uRW1wdHkpPVwicmVzZXRFbXBsb3llcigkZXZlbnQpXCIgKG9uRm91bmQpPVwic2V0RW1wbG95ZXIoJGV2ZW50KVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiPjwvYXBwLXNlYXJjaC1lbXBsb3llcj4gLS0+XHJcbjxhcHAtcmVndWxhci1lbXBsb3llci1kYXRlICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtcmVndWxhci1lbXAtZGF0ZSdcIiAgW2Zvcm1dPVwiZm9ybVwiPjwvYXBwLXJlZ3VsYXItZW1wbG95ZXItZGF0ZT5cclxuXHJcbjwvZGl2PiBcclxuXHJcbiAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PT0naHRtbCdcIiBbaW5uZXJIVE1MXT1cInF1ZXN0aW9uLmh0bWxcIiBjbGFzcz1cImhlYWRpbmdcIj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24udHlwZT09PSdzaW1wbGVMYWJlbCdcIiBbaW5uZXJIVE1MXT1cInF1ZXN0aW9uLmh0bWxcIj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0nZGF0ZScgJiYgcXVlc3Rpb24ubWF4ICYmIHF1ZXN0aW9uLm1pblwiPlxyXG4gICAgPHAtY2FsZW5kYXIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBbbW9udGhOYXZpZ2F0b3JdPVwidHJ1ZVwiIFt5ZWFyTmF2aWdhdG9yXT1cInRydWVcIlxyXG4gICAgICBbcmVhZG9ubHlJbnB1dF09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDUwXCIgW3Nob3dJY29uXT1cInRydWVcIiBbbWluRGF0ZV09XCJtaW5EYXRlXCIgW21heERhdGVdPVwibWF4RGF0ZVwiXHJcbiAgICAgIGRhdGVGb3JtYXQ9XCJtbS1kZC15eVwiIGlucHV0SWQ9XCJuYXZpZ2F0b3JzXCIgZGF0YVR5cGU9XCJzdHJpbmdcIiBhcHBlbmRUbz1cImJvZHlcIiBcclxuICAgICAgID5cclxuICAgIDwvcC1jYWxlbmRhcj5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J2RhdGUnICYmICFxdWVzdGlvbi5tYXggJiYgIXF1ZXN0aW9uLm1pblwiPlxyXG4gICAgPHAtY2FsZW5kYXIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBbbW9udGhOYXZpZ2F0b3JdPVwidHJ1ZVwiIFt5ZWFyTmF2aWdhdG9yXT1cInRydWVcIlxyXG4gICAgICBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW3JlYWRvbmx5SW5wdXRdPVwidHJ1ZVwiIFtzaG93SWNvbl09XCJ0cnVlXCIgZGF0ZUZvcm1hdD1cIm1tLWRkLXl5XCIgeWVhclJhbmdlPVwiMTkwMToyMDUwXCJcclxuICAgICAgZGF0YVR5cGU9XCJzdHJpbmdcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtY2FsZW5kYXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J2RhdGUnICYmIHF1ZXN0aW9uLm1heCAmJiAhcXVlc3Rpb24ubWluXCI+XHJcbiAgICA8cC1jYWxlbmRhciBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFttb250aE5hdmlnYXRvcl09XCJ0cnVlXCIgW3llYXJOYXZpZ2F0b3JdPVwidHJ1ZVwiXHJcbiAgICAgIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbbWF4RGF0ZV09XCJtYXhEYXRlXCIgW3JlYWRvbmx5SW5wdXRdPVwidHJ1ZVwiIFtzaG93SWNvbl09XCJ0cnVlXCIgZGF0ZUZvcm1hdD1cIm1tLWRkLXl5XCJcclxuICAgICAgeWVhclJhbmdlPVwiMTkwMToyMDUwXCIgZGF0YVR5cGU9XCJzdHJpbmdcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtY2FsZW5kYXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J2RhdGUnICYmICFxdWVzdGlvbi5tYXggJiYgcXVlc3Rpb24ubWluXCI+XHJcbiAgICA8cC1jYWxlbmRhciBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFttb250aE5hdmlnYXRvcl09XCJ0cnVlXCIgW3llYXJOYXZpZ2F0b3JdPVwidHJ1ZVwiXHJcbiAgICAgIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbbWluRGF0ZV09XCJtaW5EYXRlXCIgW3JlYWRvbmx5SW5wdXRdPVwidHJ1ZVwiIFtzaG93SWNvbl09XCJ0cnVlXCIgZGF0ZUZvcm1hdD1cIm1tLWRkLXl5XCJcclxuICAgICAgeWVhclJhbmdlPVwiMTkwMToyMDUwXCIgZGF0YVR5cGU9XCJzdHJpbmdcIiBhcHBlbmRUbz1cImJvZHlcIiAob25TaG93KT1cInNldE1pbkRhdGUoJGV2ZW50LHF1ZXN0aW9uKVwiPjwvcC1jYWxlbmRhcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ3Bhc3N3b3JkJykgJiYgIXF1ZXN0aW9uLm5hbWUuaW5jbHVkZXMoJ2NvbmZwd2QnKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8cC1wYXNzd29yZCBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFt0b2dnbGVNYXNrXT1cInRydWVcIlxyXG4gICAgICAgICAgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIj48L3AtcGFzc3dvcmQ+XHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4XCI+XHJcbiAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIFxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnLmluY2x1ZGVzKCdwYXNzd29yZCcpICYmIHF1ZXN0aW9uLm5hbWUuaW5jbHVkZXMoJ2NvbmZwd2QnKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8cC1wYXNzd29yZCBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFt0b2dnbGVNYXNrXT1cInRydWVcIlxyXG4gICAgICAgICAgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIj48L3AtcGFzc3dvcmQ+XHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4XCI+XHJcbiAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIFxyXG4gIDxkaXYgKm5nSWY9XCIhcXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLnR5cGUgJiYgKHF1ZXN0aW9uLnR5cGUhPSdyYWRpb2dyb3VwJyAmJiBxdWVzdGlvbi50eXBlIT0nZGlzcGxheXRleHRhc2xhYmVsJylcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0ICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0JyBcclxuICAgICAgICYmICFxdWVzdGlvbi5pc1JlcXVpcmVkICYmIHF1ZXN0aW9uLnNpemUgJiYgcXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiT3B0aW9uYWxcIiBbc2l6ZV09XCJxdWVzdGlvbi5zaXplXCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiAvPlxyXG4gIFxyXG4gIFxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgXHJcbiAgICAgICAgICAmJiAhcXVlc3Rpb24uaXNSZXF1aXJlZCAmJiBxdWVzdGlvbi5zaXplICYmICFxdWVzdGlvbi5tYXhMZW5ndGhcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJPcHRpb25hbFwiIFtzaXplXT1cInF1ZXN0aW9uLnNpemVcIiAvPlxyXG4gIFxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgXHJcbiAgICAgICAgICAgICAmJiAhcXVlc3Rpb24uaXNSZXF1aXJlZCAmJiAhcXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJPcHRpb25hbFwiIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCIgLz5cclxuICBcclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnIFxyXG4gICAgICAgICAgICAgICAgJiYgIXF1ZXN0aW9uLmlzUmVxdWlyZWQgJiYgIXF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIk9wdGlvbmFsXCIgLz5cclxuICBcclxuICBcclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnIFxyXG4gICAgICAgICAgJiYgcXVlc3Rpb24uaXNSZXF1aXJlZCAmJiBxdWVzdGlvbi5zaXplICYmIHF1ZXN0aW9uLm1heExlbmd0aFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICBbc2l6ZV09XCJxdWVzdGlvbi5zaXplXCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiAoYmx1cik9XCJ2YWxpZGF0ZShxdWVzdGlvbilcIiAvPlxyXG4gIFxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgXHJcbiAgICAgICAgICAmJiBxdWVzdGlvbi5pc1JlcXVpcmVkICYmIHF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICBbc2l6ZV09XCJxdWVzdGlvbi5zaXplXCIgLz5cclxuICBcclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnIFxyXG4gICAgICAgICAgJiYgcXVlc3Rpb24uaXNSZXF1aXJlZCAmJiAhcXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiAvPlxyXG4gIFxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgXHJcbiAgICAgICAgICAmJiBxdWVzdGlvbi5pc1JlcXVpcmVkICYmICFxdWVzdGlvbi5zaXplICYmICFxdWVzdGlvbi5tYXhMZW5ndGhcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAvPlxyXG4gICAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweFwiPlxyXG4gICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24udHlwZSAgJiYgcXVlc3Rpb24uY3VzdG9tVGFnLmluY2x1ZGVzKCdPcHRpb25hbCcpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnIFxyXG4gICAgICAgICAgICYmICFxdWVzdGlvbi5pc1JlcXVpcmVkICYmIHF1ZXN0aW9uLnNpemUgJiYgcXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIk9wdGlvbmFsXCIgW3NpemVdPVwicXVlc3Rpb24uc2l6ZVwiIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCIgLz5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0ICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0JyBcclxuICAgICAgICAgICYmICFxdWVzdGlvbi5pc1JlcXVpcmVkICYmIHF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJPcHRpb25hbFwiIFtzaXplXT1cInF1ZXN0aW9uLnNpemVcIiAvPlxyXG4gIFxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnIFxyXG4gICAgICAgICAgICAgJiYgIXF1ZXN0aW9uLmlzUmVxdWlyZWQgJiYgIXF1ZXN0aW9uLnNpemUgJiYgcXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIk9wdGlvbmFsXCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiAvPlxyXG4gIFxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnIFxyXG4gICAgICAgICAgICAgICAgJiYgIXF1ZXN0aW9uLmlzUmVxdWlyZWQgJiYgIXF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJPcHRpb25hbFwiIC8+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHhcIj5cclxuICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnLmluY2x1ZGVzKCdwaG9uZScpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICA8cC1pbnB1dE1hc2sgbWFzaz1cIjk5OSA5OTktOTk5OVwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgcGxhY2Vob2xkZXI9XCJPcHRpb25hbFwiXHJcbiAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnICYmICFxdWVzdGlvbi5pc1JlcXVpcmVkXCI+PC9wLWlucHV0TWFzaz5cclxuICBcclxuICAgICAgPHAtaW5wdXRNYXNrIG1hc2s9XCI5OTkgOTk5LTk5OTlcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIHBsYWNlaG9sZGVyPVwiOTk5IDk5OS05OTk5XCJcclxuICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgJiYgcXVlc3Rpb24uaXNSZXF1aXJlZFwiPjwvcC1pbnB1dE1hc2s+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHhcIj5cclxuICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnLmluY2x1ZGVzKCdzc24nKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8cC1pbnB1dE1hc2sgbWFzaz1cIjk5OS05OS05OTk5XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLmlzUmVxdWlyZWRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCI5OTktOTktOTk5OVwiPlxyXG4gICAgICAgIDwvcC1pbnB1dE1hc2s+XHJcbiAgXHJcbiAgICAgICAgPHAtaW5wdXRNYXNrIG1hc2s9XCI5OTktOTktOTk5OVwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCIhcXVlc3Rpb24uaXNSZXF1aXJlZFwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBwbGFjZWhvbGRlcj1cIk9wdGlvbmFsXCI+XHJcbiAgICAgICAgPC9wLWlucHV0TWFzaz5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uY3VzdG9tVGFnICYmICFxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ3Bob25lJykgXHJcbiAgICAmJiAhcXVlc3Rpb24uY3VzdG9tVGFnLmluY2x1ZGVzKCdwYXNzd29yZCcpICAmJiAhcXVlc3Rpb24uY3VzdG9tVGFnLmluY2x1ZGVzKCdzc24nKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnIFxyXG4gICAgJiYgcXVlc3Rpb24uaXNSZXF1aXJlZCAmJiBxdWVzdGlvbi5zaXplICYmIHF1ZXN0aW9uLm1heExlbmd0aFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICBbc2l6ZV09XCJxdWVzdGlvbi5zaXplXCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiAvPlxyXG4gIFxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgXHJcbiAgICAmJiBxdWVzdGlvbi5pc1JlcXVpcmVkICYmIHF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICBbc2l6ZV09XCJxdWVzdGlvbi5zaXplXCIgLz5cclxuICBcclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnIFxyXG4gICAgJiYgcXVlc3Rpb24uaXNSZXF1aXJlZCAmJiAhcXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiAvPlxyXG4gIFxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgXHJcbiAgICAmJiBxdWVzdGlvbi5pc1JlcXVpcmVkICYmICFxdWVzdGlvbi5zaXplICYmICFxdWVzdGlvbi5tYXhMZW5ndGhcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAvPlxyXG4gICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweFwiPlxyXG4gICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tICYmIHZpc2libGVJZihxdWVzdGlvbi52aXNpYmxlSWYpIC0tPlxyXG4gIDxkaXYgICAqbmdJZj1cInF1ZXN0aW9uLnR5cGUgJiYgcXVlc3Rpb24udHlwZT09PSdzaW5nbGVzZWxlY3RjaGVja2JveCdcIj5cclxuICAgIDwhLS0gPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+IC0tPlxyXG4gICAgICA8cC1zZWxlY3RCdXR0b24gW29wdGlvbnNdPVwicXVlc3Rpb24uY2hvaWNlc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFttdWx0aXBsZV09ZmFsc2VcclxuICAgICAgICBvcHRpb25MYWJlbD1cInRleHRcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgPjwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICA8IS0tIDwvZGl2PiAtLT5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiAgICpuZ0lmPVwicXVlc3Rpb24udHlwZSAmJiBxdWVzdGlvbi50eXBlPT09J2Ryb3Bkb3duJyAmJiBxdWVzdGlvbi5zaXplXCI+IFxyXG4gICAgICA8IS0tIDxkaXYgIGNsYXNzPVwiZmxleC1jaGlsZFwiPiBcclxuICAgICAgICA8cC1kcm9wZG93biBbaWRdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uY2hvaWNlcy5sZW5ndGg+M1wiIFxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIHBsYWNlaG9sZGVyPVwiICAgIFwiIFtvcHRpb25zXT1cIiBnZXREZXBlbmRlbnREcm9wZG93bkRhdGEocXVlc3Rpb24pfCBhc3luY1wiXHJcbiAgICAgICAgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtzdHlsZV09XCJ7J3dpZHRoJzonMjAwcHgnLCdoZWlnaHQnOiczNXB4J31cIiBbZmlsdGVyXT1cInRydWVcIiBmaWx0ZXJCeT1cInRleHRcIlxyXG4gICAgICAgPlxyXG4gICAgICA8L3AtZHJvcGRvd24+XHJcblxyXG4gICAgXHJcbiAgICAgIDxwLWRyb3Bkb3duIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jaG9pY2VzLmxlbmd0aDw9M1wiIGVkaXRhYmxlPVwidHJ1ZVwiIGZpbHRlcj1cInRydWVcIiBmaWx0ZXJCeT1cInRleHRcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIHBsYWNlaG9sZGVyPVwiICAgIFwiIFtvcHRpb25zXT1cIiBnZXREZXBlbmRlbnREcm9wZG93bkRhdGEocXVlc3Rpb24pfCBhc3luY1wiXHJcbiAgICAgICAgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtzdHlsZV09XCJ7J3dpZHRoJzonMjAwcHgnLCdoZWlnaHQnOiczNXB4J31cIj5cclxuICAgICAgPC9wLWRyb3Bkb3duPlxyXG4gICAgICA8L2Rpdj4gIC0tPlxyXG5cclxuICAgICAgPCEtLSA8cC1hdXRvQ29tcGxldGUgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW3N1Z2dlc3Rpb25zXT1cImdldERlcGVuZGVudERyb3Bkb3duRGF0YShxdWVzdGlvbil8IGFzeW5jXCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cImZpbHRlclZhbHVlKCRldmVudCxxdWVzdGlvbi5jaG9pY2VzLHF1ZXN0aW9uLm5hbWUpXCIgZmllbGQ9XCJ0ZXh0XCIgW2Ryb3Bkb3duXT1cInRydWVcIiBcclxuICAgICAgbWluTGVuZ3RoID0gMyBmb3JjZVNlbGVjdGlvbj1cInRydWVcIiBbc2hvd109XCJnZXREZXBlbmRlbnREcm9wZG93bkRhdGEocXVlc3Rpb24pfCBhc3luY1wiXHJcbiAgICAgPiAgLS0+XHJcbiAgICAgPGRpdiA+IFxyXG4gICAgICAgXHJcbiAgICAgIDxwLWF1dG9Db21wbGV0ZSBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBhcHBlbmRUbz1cImJvZHlcIiBbc3VnZ2VzdGlvbnNdPVwiZmlsdGVyZWRCcy5nZXQocXVlc3Rpb24ubmFtZSl8IGFzeW5jXCJcclxuICAgICAoY29tcGxldGVNZXRob2QpPVwiZmlsdGVyVmFsdWUoJGV2ZW50LHF1ZXN0aW9uKVwiIGRhdGFLZXkgPVwidmFsdWVcIiBmaWVsZD1cInRleHRcIiBbZHJvcGRvd25dPVwidHJ1ZVwiIFtzaXplXT1cInF1ZXN0aW9uLnNpemVcIlxyXG4gICAgIG1pbkxlbmd0aCA9IDEgZm9yY2VTZWxlY3Rpb249XCJ0cnVlXCIgdHlwZT1cInRleHRcIiAob25TZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50LHF1ZXN0aW9uLm5hbWUpXCI+IFxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlIGxldC12YWx1ZSBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxkaXY+e3t2YWx1ZS50ZXh0fX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC1hdXRvQ29tcGxldGU+XHJcbjwvZGl2PlxyXG5cclxuICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIj5cclxuICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgIDwvZGl2PiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICBcclxuICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi50eXBlICYmIHF1ZXN0aW9uLnR5cGU9PT0nZHJvcGRvd24nICYmICFxdWVzdGlvbi5zaXplXCI+XHJcbiAgICAgICAgICA8cC1hdXRvQ29tcGxldGUgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cImZpbHRlcmVkQnMuZ2V0KHF1ZXN0aW9uLm5hbWUpfCBhc3luY1wiIChjb21wbGV0ZU1ldGhvZCk9XCJmaWx0ZXJWYWx1ZSgkZXZlbnQscXVlc3Rpb24pXCJcclxuICAgICAgICAgICAgZGF0YUtleT1cInZhbHVlXCIgZmllbGQ9XCJ0ZXh0XCIgW2Ryb3Bkb3duXT1cInRydWVcIiBtaW5MZW5ndGg9MyBmb3JjZVNlbGVjdGlvbj1cInRydWVcIiB0eXBlPVwidGV4dFwiIChvblNlbGVjdCk9XCJvblNlbGVjdCgkZXZlbnQscXVlc3Rpb24ubmFtZSlcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YWx1ZSBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+e3t2YWx1ZS50ZXh0fX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvcC1hdXRvQ29tcGxldGU+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ2ZpbGV1cGxvYWQnKVwiPlxyXG4gICAgICA8YXBwLWZpbGUtdXBsb2FkZXIgW2FsbG93ZWRGaWxlVHlwZV09XCJxdWVzdGlvbi5hbGxvd2VkRmlsZVR5cGVcIiAgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgW21heFNpemVJbk1CXT1cInF1ZXN0aW9uLnNpemVJbk1CXCIgW211bHRpcGxlXT1cInF1ZXN0aW9uLm11bHRpcGxlXCIgW25vT2ZGaWxlc1RvVXBsb2FkXT1cInF1ZXN0aW9uLm5vT0ZGaWxlc1wiID48L2FwcC1maWxlLXVwbG9hZGVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cInBhZGRpbmc6IDBweDtcIiAqbmdJZj1cInF1ZXN0aW9uLnR5cGUgJiYgcXVlc3Rpb24udHlwZT09PSdyYWRpb2dyb3VwJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtvcHRpb25zXT1cInF1ZXN0aW9uLmNob2ljZXNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweFwiPlxyXG4gICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cInBhZGRpbmc6IDBweDtcIiAqbmdJZj1cInF1ZXN0aW9uLnR5cGUgJiYgcXVlc3Rpb24udHlwZT09PSdkaXNwbGF5dGV4dGFzbGFiZWwnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD57e2Zvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0udmFsdWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiLz5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMnB4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICA8ZGl2PlxyXG4gICAgPHNtYWxsIGNsYXNzPVwicC1lcnJvclwiICpuZ0lmPVwiaXNWYWxpZCE9JydcIj57e2lzVmFsaWR9fTwvc21hbGw+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==