@reusa/ngx-reusa-app-lib 0.0.1320 → 0.0.1322

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 (153) hide show
  1. package/README.md +46 -46
  2. package/esm2022/lib/annimations/app-animations.mjs +1 -1
  3. package/esm2022/lib/components/add-employer/add-employer.component.mjs +755 -763
  4. package/esm2022/lib/components/add-participant/add-participant.component.mjs +24 -29
  5. package/esm2022/lib/components/add-payment/add-payment.component.mjs +31 -45
  6. package/esm2022/lib/components/address/address.component.mjs +46 -97
  7. package/esm2022/lib/components/bank-details/bank-details.component.mjs +75 -139
  8. package/esm2022/lib/components/captcha/captcha.component.mjs +6 -6
  9. package/esm2022/lib/components/card/card.component.mjs +1 -1
  10. package/esm2022/lib/components/contact-us/contact-us.component.mjs +28 -42
  11. package/esm2022/lib/components/content/content.component.mjs +1 -1
  12. package/esm2022/lib/components/email-update/email-update.component.mjs +62 -119
  13. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +84 -165
  14. package/esm2022/lib/components/error/error.component.mjs +1 -1
  15. package/esm2022/lib/components/file-download/file-download.component.mjs +1 -1
  16. package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +1 -1
  17. package/esm2022/lib/components/footer/footer.component.mjs +11 -23
  18. package/esm2022/lib/components/header/header.component.mjs +109 -163
  19. package/esm2022/lib/components/help/help.component.mjs +1 -1
  20. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +18 -29
  21. package/esm2022/lib/components/info/info.component.mjs +1 -1
  22. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +16 -22
  23. package/esm2022/lib/components/job-title/job-title.component.mjs +16 -20
  24. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +208 -389
  25. package/esm2022/lib/components/lexis-nexis/lexis-nexis.component.mjs +21 -83
  26. package/esm2022/lib/components/maintenance-detector/maintenance-detector.component.mjs +1 -1
  27. package/esm2022/lib/components/mask/mask.component.mjs +1 -1
  28. package/esm2022/lib/components/menu/menu.component.mjs +25 -63
  29. package/esm2022/lib/components/mfa/mfa.component.mjs +98 -155
  30. package/esm2022/lib/components/mfa2/mfa2.component.mjs +30 -54
  31. package/esm2022/lib/components/money-expect/money-expect.component.mjs +23 -31
  32. package/esm2022/lib/components/msg/msg.component.mjs +1 -1
  33. package/esm2022/lib/components/news/news.component.mjs +1 -1
  34. package/esm2022/lib/components/overlay-info/overlay-info.component.mjs +1 -1
  35. package/esm2022/lib/components/page/page.component.mjs +1 -1
  36. package/esm2022/lib/components/profile/profile.component.mjs +14 -34
  37. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +10 -17
  38. package/esm2022/lib/components/questionnaire/FbConstants.mjs +1 -1
  39. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +27 -80
  40. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +8 -29
  41. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +119 -172
  42. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +41 -122
  43. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +7 -7
  44. package/esm2022/lib/components/questionnaire/question-base.mjs +1 -1
  45. package/esm2022/lib/components/questionnaire/question.service.mjs +1 -1
  46. package/esm2022/lib/components/read-more/read-more.component.mjs +6 -6
  47. package/esm2022/lib/components/search-employer/search-employer.component.mjs +7 -10
  48. package/esm2022/lib/components/security-question/security-question.component.mjs +9 -19
  49. package/esm2022/lib/components/select/select.component.mjs +5 -10
  50. package/esm2022/lib/components/ssn/ssn.component.mjs +1 -1
  51. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +52 -72
  52. package/esm2022/lib/components/test/test.component.mjs +1 -1
  53. package/esm2022/lib/components/user-login/user-login.component.mjs +82 -116
  54. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +174 -170
  55. package/esm2022/lib/directives/auto-focus/auto-focus.directive.mjs +1 -1
  56. package/esm2022/lib/directives/caps-lock.directive.mjs +1 -1
  57. package/esm2022/lib/directives/required-roles/required-roles.directive.mjs +1 -1
  58. package/esm2022/lib/enums/EmailStatusEnum.mjs +1 -1
  59. package/esm2022/lib/interceptors/error-interceptor/http-error-interceptor.mjs +1 -1
  60. package/esm2022/lib/models/ErrorModel.mjs +1 -1
  61. package/esm2022/lib/models/FileModel.mjs +1 -1
  62. package/esm2022/lib/models/NotificationModel.mjs +1 -1
  63. package/esm2022/lib/models/OtpAuthModel.mjs +1 -1
  64. package/esm2022/lib/models/TrendModel.mjs +1 -1
  65. package/esm2022/lib/models/UserDetailsModel.mjs +1 -1
  66. package/esm2022/lib/models/UserModel.mjs +1 -1
  67. package/esm2022/lib/models/claimant/ClaimantModel.mjs +1 -1
  68. package/esm2022/lib/models/claimant/JobResultsData.mjs +1 -1
  69. package/esm2022/lib/models/claimant/MatchingJobs.mjs +1 -1
  70. package/esm2022/lib/models/claimant/ResetPasswordModel.mjs +1 -1
  71. package/esm2022/lib/models/questionnaire/ComboModel.mjs +1 -480
  72. package/esm2022/lib/models/questionnaire/KeyValueModel.mjs +1 -1
  73. package/esm2022/lib/ngx-reusa-app-lib.component.mjs +5 -5
  74. package/esm2022/lib/ngx-reusa-app-lib.service.mjs +1 -1
  75. package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +1 -1
  76. package/esm2022/lib/pages/common/change-password/change-password.page.mjs +1 -1
  77. package/esm2022/lib/pages/common/landing2/landing2.component.mjs +1 -1
  78. package/esm2022/lib/pages/common/login/login.component.mjs +2 -7
  79. package/esm2022/lib/pages/common/not-found/not-found.page.mjs +1 -1
  80. package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +1 -1
  81. package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +1 -1
  82. package/esm2022/lib/pages/common/unauthorized/unauthorized.page.mjs +1 -1
  83. package/esm2022/lib/pages/popovers/language/language.page.mjs +1 -2
  84. package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +1 -1
  85. package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +1 -1
  86. package/esm2022/lib/pages/popovers/user-search/user-search.component.mjs +1 -1
  87. package/esm2022/lib/pipes/filter.pipe.mjs +1 -1
  88. package/esm2022/lib/pipes/mask/mask.email.pipe.mjs +1 -1
  89. package/esm2022/lib/pipes/proper-case/proper-case.pipe.mjs +1 -1
  90. package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +2 -2
  91. package/esm2022/lib/pipes/trust-html/trust-html.pipe.mjs +1 -1
  92. package/esm2022/lib/services/base-service.mjs +1 -1
  93. package/esm2022/lib/services/captcha/captcha.service.mjs +1 -1
  94. package/esm2022/lib/services/chatbot/script.const.mjs +1 -1
  95. package/esm2022/lib/services/claimant/claimant.service.mjs +1 -1
  96. package/esm2022/lib/services/dms-service/dms.service.mjs +1 -1
  97. package/esm2022/lib/services/fpjs/fingerprint.service.mjs +1 -1
  98. package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +1 -1
  99. package/esm2022/lib/services/idle/idle.service.mjs +1 -1
  100. package/esm2022/lib/services/maintenance/maintenance.service.mjs +1 -1
  101. package/esm2022/lib/services/notification/notification.service.mjs +1 -1
  102. package/esm2022/lib/services/tour/tour.service.mjs +1 -1
  103. package/esm2022/lib/validations/AppValidators.mjs +43 -6
  104. package/fesm2022/reusa-ngx-reusa-app-lib.mjs +2290 -3782
  105. package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
  106. package/lib/components/add-employer/add-employer.component.d.ts +76 -22
  107. package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
  108. package/lib/components/add-participant/add-participant.component.d.ts +1 -4
  109. package/lib/components/add-participant/add-participant.component.d.ts.map +1 -1
  110. package/lib/components/add-payment/add-payment.component.d.ts +2 -1
  111. package/lib/components/add-payment/add-payment.component.d.ts.map +1 -1
  112. package/lib/components/address/address.component.d.ts +1 -10
  113. package/lib/components/address/address.component.d.ts.map +1 -1
  114. package/lib/components/bank-details/bank-details.component.d.ts +1 -17
  115. package/lib/components/bank-details/bank-details.component.d.ts.map +1 -1
  116. package/lib/components/contact-us/contact-us.component.d.ts +1 -4
  117. package/lib/components/contact-us/contact-us.component.d.ts.map +1 -1
  118. package/lib/components/email-update/email-update.component.d.ts +1 -6
  119. package/lib/components/email-update/email-update.component.d.ts.map +1 -1
  120. package/lib/components/employer-grid/employer-grid.component.d.ts +24 -6
  121. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
  122. package/lib/components/footer/footer.component.d.ts.map +1 -1
  123. package/lib/components/header/header.component.d.ts +0 -3
  124. package/lib/components/header/header.component.d.ts.map +1 -1
  125. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts +1 -3
  126. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts.map +1 -1
  127. package/lib/components/job-title/job-title.component.d.ts +1 -3
  128. package/lib/components/job-title/job-title.component.d.ts.map +1 -1
  129. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +1 -5
  130. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -1
  131. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts.map +1 -1
  132. package/lib/components/menu/menu.component.d.ts +1 -11
  133. package/lib/components/menu/menu.component.d.ts.map +1 -1
  134. package/lib/components/mfa/mfa.component.d.ts +1 -6
  135. package/lib/components/mfa/mfa.component.d.ts.map +1 -1
  136. package/lib/components/profile/profile.component.d.ts.map +1 -1
  137. package/lib/components/questionnaire/common-success/common-success.page.d.ts +0 -1
  138. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
  139. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  140. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
  141. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts +1 -5
  142. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts.map +1 -1
  143. package/lib/components/user-login/user-login.component.d.ts +1 -7
  144. package/lib/components/user-login/user-login.component.d.ts.map +1 -1
  145. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +1 -7
  146. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
  147. package/lib/models/questionnaire/ComboModel.d.ts +0 -80
  148. package/lib/models/questionnaire/ComboModel.d.ts.map +1 -1
  149. package/lib/pages/common/login/login.component.d.ts.map +1 -1
  150. package/lib/pages/popovers/language/language.page.d.ts.map +1 -1
  151. package/lib/validations/AppValidators.d.ts +10 -0
  152. package/lib/validations/AppValidators.d.ts.map +1 -1
  153. package/package.json +2 -2
@@ -156,4 +156,4 @@ export class IdleService {
156
156
  providedIn: 'root'
157
157
  }]
158
158
  }], () => [{ type: i1.LoggerService }, { type: i2.Idle }, { type: i3.LoginService }, { type: i4.NavController }, { type: i5.Keepalive }], null); })();
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9pZGxlL2lkbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFJekQ7Ozs7O0dBS0c7QUFJSCxNQUFNLE9BQU8sV0FBVztJQWV0QixZQUFxQixNQUFxQixFQUFTLElBQVUsRUFBVSxFQUFpQixFQUFVLEdBQWtCLEVBQVUsU0FBb0I7UUFBN0gsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFTLFNBQUksR0FBSixJQUFJLENBQU07UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFlO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFiM0ksa0JBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQ3BDLFVBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO1FBQ3BDLFNBQUksR0FBRyxHQUFHLENBQUM7UUFDSixjQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JELFlBQU8sR0FBNkIsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUs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QUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUM7WUFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsSUFBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUM7WUFDN0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZLEVBQUUsUUFBaUI7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzRFQWhKVSxXQUFXO3VFQUFYLFdBQVcsV0FBWCxXQUFXLG1CQUZWLE1BQU07O2lGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBERUZBVUxUX0lOVEVSUlVQVFNPVVJDRVMsIElkbGUgfSBmcm9tICdAbmctaWRsZS9jb3JlJztcclxuaW1wb3J0IHsgS2VlcGFsaXZlIH0gZnJvbSAnQG5nLWlkbGUva2VlcGFsaXZlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcclxuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgc2VydmljZSB3aWxsIGF1dG9tYXRpY2FsbHkgZXh0ZW5kIHVzZXIncyBzZXNzaW9uIGJ5IHJlZnJlc2hpbmcgYWNjZXNzX3Rva2VuIGlmIHRoZSB2YWxpZGl0eSBvZiBhY2Nlc3MgdG9rZW4gaXMgbGVzcyB0aGFuIDEyMHMgYW5kIFxyXG4gKiB1c2VyIGlzIG5vdCBpZGxlIG9uIHRoZSBzY3JlZW4uXHJcbiAqIFxyXG4gKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIElkbGVTZXJ2aWNlIHtcclxuICBwcml2YXRlIHNlc3Npb25WYWxpZGl0eVRpbGwgOiBEYXRlO1xyXG4gIHB1YmxpYyB0aW1lckludGVydmFsID0gaW50ZXJ2YWwoMTAwMCk7IC8vMXNcclxuICBwdWJsaWMgdGltZXIgPSB0aW1lcigxMjAwMDApOyAvLzMwcyBcclxuICB0aW1lID0gMTIwO1xyXG4gIHB1YmxpYyBjb3VudERvd24gPSB0aGlzLnRpbWVySW50ZXJ2YWwucGlwZSh0YWtlKHRoaXMudGltZSkpO1xyXG4gIHB1YmxpYyBjb3VudGVyIDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDApO1xyXG4gIGxhc3RQaW5nPzogRGF0ZSA9IG51bGw7XHJcblxyXG4gIGNvdW50ZXJTdWJzY3JpcHRpb24gOiBTdWJzY3JpcHRpb247XHJcbiAgY291bnRlckVuZFN1YnNjcmlwdGlvbiA6IFN1YnNjcmlwdGlvbjtcclxuICBzZXNzaW9uVmFsaWRpdHlzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcHVibGljIHNob3dTZXNzaW9uVGltZW91dFdhcm5pbmcgOiBCZWhhdmlvclN1YmplY3Q8Qm9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlICxwdWJsaWMgaWRsZTogSWRsZSwgcHJpdmF0ZSBscyA6IExvZ2luU2VydmljZSwgcHJpdmF0ZSBuYXY6IE5hdkNvbnRyb2xsZXIsIHByaXZhdGUga2VlcGFsaXZlOiBLZWVwYWxpdmUpIHsgXHJcbiAgICB0aGlzLmxvZ2dlci5sb2coJ1tJZGxlU2VydmljZV0gSWRsZVNlcnZpY2UgSW5pdGlhbGl6ZWQnKTtcclxuICB9XHJcblxyXG4gIHNldHVwSWRhbFRpbWVvdXQoKXtcclxuICAgIC8vIHNldHMgYW4gaWRsZSB0aW1lb3V0IG9mIDE4MCBzZWNvbmRzXHJcbiAgICB0aGlzLmlkbGUuc2V0SWRsZShMaWJDb25zdGFudHMuaWRsZVRpbWUpO1xyXG4gICAgLy8gc2V0cyBhIHRpbWVvdXQgcGVyaW9kIG9mIDEyMCBzZWNvbmRzLiBhZnRlciAzMDAgc2Vjb25kcyBvZiBpbmFjdGl2aXR5LCB0aGUgdXNlciB3aWxsIGJlIGNvbnNpZGVyZWQgdGltZWQgb3V0LlxyXG4gICAgdGhpcy5pZGxlLnNldFRpbWVvdXQoTGliQ29uc3RhbnRzLnRpbWVPdXRQZXJpb2QpO1xyXG4gICAgLy8gc2V0cyB0aGUgZGVmYXVsdCBpbnRlcnJ1cHRzLCBpbiB0aGlzIGNhc2UsIHRoaW5ncyBsaWtlIGNsaWNrcywgc2Nyb2xscywgdG91Y2hlcyB0byB0aGUgZG9jdW1lbnRcclxuICAgIHRoaXMuaWRsZS5zZXRJbnRlcnJ1cHRzKERFRkFVTFRfSU5URVJSVVBUU09VUkNFUyk7XHJcblxyXG4gICAgdGhpcy5pZGxlLm9uSWRsZVN0YXJ0LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuc2hvd1Nlc3Npb25UaW1lb3V0V2FybmluZy5uZXh0KHRydWUpO1xyXG4gICAgICAgIHRoaXMuY291bnRlclN1YnNjcmlwdGlvbiA9IHRoaXMuY291bnREb3duLnN1YnNjcmliZSh2YWwgPT57XHJcbiAgICAgICAgICB0aGlzLmNvdW50ZXIubmV4dCh0aGlzLnRpbWUgLSB2YWwpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmNvdW50ZXJFbmRTdWJzY3JpcHRpb24gPSB0aGlzLnRpbWVyLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIHNldHMgdGhlIHBpbmcgaW50ZXJ2YWwgdG8gMTUgc2Vjb25kc1xyXG4gICAgdGhpcy5rZWVwYWxpdmUuaW50ZXJ2YWwoMTUpO1xyXG5cclxuICAgIHRoaXMua2VlcGFsaXZlLm9uUGluZy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sYXN0UGluZyA9IG5ldyBEYXRlKCkpO1xyXG5cclxuICAgIHRoaXMubHMuZ2V0VXNlckJzKCkuc3Vic2NyaWJlKHVzZXIgPT4ge1xyXG4gICAgICBpZih1c2VyKXtcclxuICAgICAgICB0aGlzLmxvZ2dlci5sb2coJ0lkbGVTZXJ2aWNlIHdhdGNoaW5nJyk7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uVmFsaWRpdHlUaWxsID0gdGhpcy5hZGRTZWNvbmRzKG5ldyBEYXRlKCksIHVzZXIuZXhwaXJlc19pbik7XHJcbiAgICAgICAgdGhpcy5pZGxlLndhdGNoKClcclxuICAgICAgfWVsc2Uge1xyXG4gICAgICAgIHRoaXMuaWRsZS5zdG9wKCk7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKCdJZGxlU2VydmljZSBzdG9wcGVkJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLmlkbGUud2F0Y2goKTtcclxuICAgIHRoaXMuc2hvd1Nlc3Npb25UaW1lb3V0V2FybmluZy5uZXh0KGZhbHNlKTtcclxuICAgIGlmKHRoaXMuY291bnRlclN1YnNjcmlwdGlvbil7XHJcbiAgICAgIHRoaXMuY291bnRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb3VudGVyRW5kU3Vic2NyaXB0aW9uKXtcclxuICAgICAgdGhpcy5jb3VudGVyRW5kU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldHVwU2Vzc2lvbk9ic2VydmVyKCk7XHJcbiAgICB0aGlzLmNoZWNrU2Vzc2lvblZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBzdGF5KCkge1xyXG4gICAgLy90aGlzLmNoaWxkTW9kYWwuaGlkZSgpO1xyXG4gICAgdGhpcy5yZXNldCgpO1xyXG4gIH1cclxuICBcclxuXHJcbiAgc2V0dXBTZXNzaW9uVGltZW91dE9ic2VydmVyKCl7XHJcbiAgICB0aGlzLmxzLmdldFVzZXJCcygpLnN1YnNjcmliZSh1c2VyID0+IHtcclxuICAgICAgaWYodXNlcil7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKCdbSWRsZVNlcnZpY2VdIFN1YnNjcmliaW5nIFNlc3Npb24gT2JzZXJ2ZXInKTtcclxuICAgICAgICB0aGlzLnNlc3Npb25WYWxpZGl0eVRpbGwgPSB0aGlzLmFkZFNlY29uZHMobmV3IERhdGUoKSwgdXNlci5leHBpcmVzX2luKTtcclxuICAgICAgICB0aGlzLnNldHVwU2Vzc2lvbk9ic2VydmVyKCk7XHJcbiAgICAgIH1lbHNlIHtcclxuICAgICAgICB0aGlzLmxvZ2dlci5sb2coJ1tJZGxlU2VydmljZV0gVW5zdWJzY3JpYmluZyBTZXNzaW9uIE9ic2VydmVyJyk7XHJcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldHVwU2Vzc2lvbk9ic2VydmVyKCl7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XHJcbiAgICBjb25zdCBzb3VyY2UgPSBpbnRlcnZhbCgxNTAwMCk7XHJcbiAgICB0aGlzLnNlc3Npb25WYWxpZGl0eXN1YnNjcmlwdGlvbiA9IHNvdXJjZS5zdWJzY3JpYmUodmFsID0+IHRoaXMuY2hlY2tTZXNzaW9uVmFsaWRpdHkoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVuc3Vic2NyaWJlKCkge1xyXG4gICAgaWYgKHRoaXMuc2Vzc2lvblZhbGlkaXR5c3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2Vzc2lvblZhbGlkaXR5c3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja1Nlc3Npb25WYWxpZGl0eSgpe1xyXG4gICAgbGV0IGlzSWRsZSA9IHRoaXMuaWRsZS5pc0lkbGluZygpO1xyXG4gICAgaWYoIWlzSWRsZSl7XHJcbiAgICAgIGxldCB0b2tlbkV4cFRpbWUgPSB0aGlzLnNlc3Npb25WYWxpZGl0eVRpbGw7XHJcbiAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBsZXQgZGlmZkluU2VjID0gTWF0aC5jZWlsKCh0b2tlbkV4cFRpbWUuZ2V0VGltZSgpIC0gbm93LmdldFRpbWUoKSkvMTAwMCk7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmxvZygnW0lkbGVTZXJ2aWNlXSBkaWZmSW5TZWMnLCBkaWZmSW5TZWMpO1xyXG4gICAgICBpZihkaWZmSW5TZWMgPCAxMjApe1xyXG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmxvZ2dlci5sb2coJ1tJZGxlU2VydmljZV0gSW5pdGlhdGluZyBSZWZyZXNoIFRva2VuIGFzIHNlc3Npb24gaXMgYWN0aXZlIGFuZCB1c2VyIGlzIGFjdGl2ZScpO1xyXG4gICAgICAgIHRoaXMubHNcclxuICAgICAgICAgICAgLnJlZnJlc2hUb2tlbih0aGlzLmxzLmdldFVzZXIoKS5yZWZyZXNoX3Rva2VuKVxyXG4gICAgICAgICAgICAudGhlbihhc3luYyByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5scy5zZXRVc2VyKHJlcykudGhlbihyZXMgPT4gcmVzKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdbSWRsZVNlcnZpY2VdIGVycm9yIHdoaWxlIHJlZnJlc2hpbmcgdG9rZW4nLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKCdbSWRsZVNlcnZpY2VdIE5PVCBJbml0aWF0aW5nIFJlZnJlc2ggVG9rZW4gYXMgc2Vzc2lvbiBpcyBhY3RpdmUnKTtcclxuICAgICAgfVxyXG4gICAgfWVsc2Uge1xyXG4gICAgICB0aGlzLmxvZ2dlci5sb2coJ1tJZGxlU2VydmljZV0gTk9UIEluaXRpYXRpbmcgUmVmcmVzaCBUb2tlbiBhcyBzZXNzaW9uIGlzIGlkbGUgYW5kIGl0IHdpbGwgYmUgdGltZW91dCBhdXRvbWF0aWNhbGx5LicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9nb3V0KCkge1xyXG4gICAgLy90aGlzLmNoaWxkTW9kYWwuaGlkZSgpO1xyXG4gICAgdGhpcy5scy5sb2dvdXQoKTtcclxuICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdCgnL2xvZ2luJyk7XHJcbiAgICB0aGlzLnNob3dTZXNzaW9uVGltZW91dFdhcm5pbmcubmV4dChmYWxzZSk7XHJcbiAgICBpZih0aGlzLmNvdW50ZXJTdWJzY3JpcHRpb24pe1xyXG4gICAgICB0aGlzLmNvdW50ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY291bnRlckVuZFN1YnNjcmlwdGlvbil7XHJcbiAgICAgIHRoaXMuY291bnRlckVuZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkU2Vjb25kcyhkYXRlIDogIERhdGUsIHNlY1RvQWRkIDogbnVtYmVyKXtcclxuICAgIGRhdGUuc2V0U2Vjb25kcyhkYXRlLmdldFNlY29uZHMoKSArIHNlY1RvQWRkKTtcclxuICAgIHJldHVybiBkYXRlO1xyXG4gIH1cclxufVxyXG4iXX0=
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9pZGxlL2lkbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFJekQ7Ozs7O0dBS0c7QUFJSCxNQUFNLE9BQU8sV0FBVztJQWV0QixZQUFxQixNQUFxQixFQUFTLElBQVUsRUFBVSxFQUFpQixFQUFVLEdBQWtCLEVBQVUsU0FBb0I7UUFBN0gsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFTLFNBQUksR0FBSixJQUFJLENBQU07UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFlO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFiM0ksa0JBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQ3BDLFVBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO1FBQ3BDLFNBQUksR0FBRyxHQUFHLENBQUM7UUFDSixjQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JELFlBQU8sR0FBNkIsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUs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QUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUM7WUFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsSUFBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUM7WUFDN0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZLEVBQUUsUUFBaUI7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzRFQWhKVSxXQUFXO3VFQUFYLFdBQVcsV0FBWCxXQUFXLG1CQUZWLE1BQU07O2lGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IERFRkFVTFRfSU5URVJSVVBUU09VUkNFUywgSWRsZSB9IGZyb20gJ0BuZy1pZGxlL2NvcmUnO1xuaW1wb3J0IHsgS2VlcGFsaXZlIH0gZnJvbSAnQG5nLWlkbGUva2VlcGFsaXZlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgaW50ZXJ2YWwsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vbG9naW4vbG9naW4uc2VydmljZSc7XG5cbi8qKlxuICogVGhpcyBzZXJ2aWNlIHdpbGwgYXV0b21hdGljYWxseSBleHRlbmQgdXNlcidzIHNlc3Npb24gYnkgcmVmcmVzaGluZyBhY2Nlc3NfdG9rZW4gaWYgdGhlIHZhbGlkaXR5IG9mIGFjY2VzcyB0b2tlbiBpcyBsZXNzIHRoYW4gMTIwcyBhbmQgXG4gKiB1c2VyIGlzIG5vdCBpZGxlIG9uIHRoZSBzY3JlZW4uXG4gKiBcbiAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJZGxlU2VydmljZSB7XG4gIHByaXZhdGUgc2Vzc2lvblZhbGlkaXR5VGlsbCA6IERhdGU7XG4gIHB1YmxpYyB0aW1lckludGVydmFsID0gaW50ZXJ2YWwoMTAwMCk7IC8vMXNcbiAgcHVibGljIHRpbWVyID0gdGltZXIoMTIwMDAwKTsgLy8zMHMgXG4gIHRpbWUgPSAxMjA7XG4gIHB1YmxpYyBjb3VudERvd24gPSB0aGlzLnRpbWVySW50ZXJ2YWwucGlwZSh0YWtlKHRoaXMudGltZSkpO1xuICBwdWJsaWMgY291bnRlciA6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcbiAgbGFzdFBpbmc/OiBEYXRlID0gbnVsbDtcblxuICBjb3VudGVyU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xuICBjb3VudGVyRW5kU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xuICBzZXNzaW9uVmFsaWRpdHlzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgc2hvd1Nlc3Npb25UaW1lb3V0V2FybmluZyA6IEJlaGF2aW9yU3ViamVjdDxCb29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKCBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSAscHVibGljIGlkbGU6IElkbGUsIHByaXZhdGUgbHMgOiBMb2dpblNlcnZpY2UsIHByaXZhdGUgbmF2OiBOYXZDb250cm9sbGVyLCBwcml2YXRlIGtlZXBhbGl2ZTogS2VlcGFsaXZlKSB7IFxuICAgIHRoaXMubG9nZ2VyLmxvZygnW0lkbGVTZXJ2aWNlXSBJZGxlU2VydmljZSBJbml0aWFsaXplZCcpO1xuICB9XG5cbiAgc2V0dXBJZGFsVGltZW91dCgpe1xuICAgIC8vIHNldHMgYW4gaWRsZSB0aW1lb3V0IG9mIDE4MCBzZWNvbmRzXG4gICAgdGhpcy5pZGxlLnNldElkbGUoTGliQ29uc3RhbnRzLmlkbGVUaW1lKTtcbiAgICAvLyBzZXRzIGEgdGltZW91dCBwZXJpb2Qgb2YgMTIwIHNlY29uZHMuIGFmdGVyIDMwMCBzZWNvbmRzIG9mIGluYWN0aXZpdHksIHRoZSB1c2VyIHdpbGwgYmUgY29uc2lkZXJlZCB0aW1lZCBvdXQuXG4gICAgdGhpcy5pZGxlLnNldFRpbWVvdXQoTGliQ29uc3RhbnRzLnRpbWVPdXRQZXJpb2QpO1xuICAgIC8vIHNldHMgdGhlIGRlZmF1bHQgaW50ZXJydXB0cywgaW4gdGhpcyBjYXNlLCB0aGluZ3MgbGlrZSBjbGlja3MsIHNjcm9sbHMsIHRvdWNoZXMgdG8gdGhlIGRvY3VtZW50XG4gICAgdGhpcy5pZGxlLnNldEludGVycnVwdHMoREVGQVVMVF9JTlRFUlJVUFRTT1VSQ0VTKTtcblxuICAgIHRoaXMuaWRsZS5vbklkbGVTdGFydC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc2hvd1Nlc3Npb25UaW1lb3V0V2FybmluZy5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmNvdW50ZXJTdWJzY3JpcHRpb24gPSB0aGlzLmNvdW50RG93bi5zdWJzY3JpYmUodmFsID0+e1xuICAgICAgICAgIHRoaXMuY291bnRlci5uZXh0KHRoaXMudGltZSAtIHZhbCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY291bnRlckVuZFN1YnNjcmlwdGlvbiA9IHRoaXMudGltZXIuc3Vic2NyaWJlKHZhbCA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBzZXRzIHRoZSBwaW5nIGludGVydmFsIHRvIDE1IHNlY29uZHNcbiAgICB0aGlzLmtlZXBhbGl2ZS5pbnRlcnZhbCgxNSk7XG5cbiAgICB0aGlzLmtlZXBhbGl2ZS5vblBpbmcuc3Vic2NyaWJlKCgpID0+IHRoaXMubGFzdFBpbmcgPSBuZXcgRGF0ZSgpKTtcblxuICAgIHRoaXMubHMuZ2V0VXNlckJzKCkuc3Vic2NyaWJlKHVzZXIgPT4ge1xuICAgICAgaWYodXNlcil7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZygnSWRsZVNlcnZpY2Ugd2F0Y2hpbmcnKTtcbiAgICAgICAgdGhpcy5zZXNzaW9uVmFsaWRpdHlUaWxsID0gdGhpcy5hZGRTZWNvbmRzKG5ldyBEYXRlKCksIHVzZXIuZXhwaXJlc19pbik7XG4gICAgICAgIHRoaXMuaWRsZS53YXRjaCgpXG4gICAgICB9ZWxzZSB7XG4gICAgICAgIHRoaXMuaWRsZS5zdG9wKCk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZygnSWRsZVNlcnZpY2Ugc3RvcHBlZCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5pZGxlLndhdGNoKCk7XG4gICAgdGhpcy5zaG93U2Vzc2lvblRpbWVvdXRXYXJuaW5nLm5leHQoZmFsc2UpO1xuICAgIGlmKHRoaXMuY291bnRlclN1YnNjcmlwdGlvbil7XG4gICAgICB0aGlzLmNvdW50ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYodGhpcy5jb3VudGVyRW5kU3Vic2NyaXB0aW9uKXtcbiAgICAgIHRoaXMuY291bnRlckVuZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnNldHVwU2Vzc2lvbk9ic2VydmVyKCk7XG4gICAgdGhpcy5jaGVja1Nlc3Npb25WYWxpZGl0eSgpO1xuICB9XG5cbiAgc3RheSgpIHtcbiAgICAvL3RoaXMuY2hpbGRNb2RhbC5oaWRlKCk7XG4gICAgdGhpcy5yZXNldCgpO1xuICB9XG4gIFxuXG4gIHNldHVwU2Vzc2lvblRpbWVvdXRPYnNlcnZlcigpe1xuICAgIHRoaXMubHMuZ2V0VXNlckJzKCkuc3Vic2NyaWJlKHVzZXIgPT4ge1xuICAgICAgaWYodXNlcil7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZygnW0lkbGVTZXJ2aWNlXSBTdWJzY3JpYmluZyBTZXNzaW9uIE9ic2VydmVyJyk7XG4gICAgICAgIHRoaXMuc2Vzc2lvblZhbGlkaXR5VGlsbCA9IHRoaXMuYWRkU2Vjb25kcyhuZXcgRGF0ZSgpLCB1c2VyLmV4cGlyZXNfaW4pO1xuICAgICAgICB0aGlzLnNldHVwU2Vzc2lvbk9ic2VydmVyKCk7XG4gICAgICB9ZWxzZSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZygnW0lkbGVTZXJ2aWNlXSBVbnN1YnNjcmliaW5nIFNlc3Npb24gT2JzZXJ2ZXInKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0dXBTZXNzaW9uT2JzZXJ2ZXIoKXtcbiAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgY29uc3Qgc291cmNlID0gaW50ZXJ2YWwoMTUwMDApO1xuICAgIHRoaXMuc2Vzc2lvblZhbGlkaXR5c3Vic2NyaXB0aW9uID0gc291cmNlLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5jaGVja1Nlc3Npb25WYWxpZGl0eSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUoKSB7XG4gICAgaWYgKHRoaXMuc2Vzc2lvblZhbGlkaXR5c3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnNlc3Npb25WYWxpZGl0eXN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrU2Vzc2lvblZhbGlkaXR5KCl7XG4gICAgbGV0IGlzSWRsZSA9IHRoaXMuaWRsZS5pc0lkbGluZygpO1xuICAgIGlmKCFpc0lkbGUpe1xuICAgICAgbGV0IHRva2VuRXhwVGltZSA9IHRoaXMuc2Vzc2lvblZhbGlkaXR5VGlsbDtcbiAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgbGV0IGRpZmZJblNlYyA9IE1hdGguY2VpbCgodG9rZW5FeHBUaW1lLmdldFRpbWUoKSAtIG5vdy5nZXRUaW1lKCkpLzEwMDApO1xuICAgICAgdGhpcy5sb2dnZXIubG9nKCdbSWRsZVNlcnZpY2VdIGRpZmZJblNlYycsIGRpZmZJblNlYyk7XG4gICAgICBpZihkaWZmSW5TZWMgPCAxMjApe1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZygnW0lkbGVTZXJ2aWNlXSBJbml0aWF0aW5nIFJlZnJlc2ggVG9rZW4gYXMgc2Vzc2lvbiBpcyBhY3RpdmUgYW5kIHVzZXIgaXMgYWN0aXZlJyk7XG4gICAgICAgIHRoaXMubHNcbiAgICAgICAgICAgIC5yZWZyZXNoVG9rZW4odGhpcy5scy5nZXRVc2VyKCkucmVmcmVzaF90b2tlbilcbiAgICAgICAgICAgIC50aGVuKGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5scy5zZXRVc2VyKHJlcykudGhlbihyZXMgPT4gcmVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignW0lkbGVTZXJ2aWNlXSBlcnJvciB3aGlsZSByZWZyZXNoaW5nIHRva2VuJywgZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgIH1lbHNle1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coJ1tJZGxlU2VydmljZV0gTk9UIEluaXRpYXRpbmcgUmVmcmVzaCBUb2tlbiBhcyBzZXNzaW9uIGlzIGFjdGl2ZScpO1xuICAgICAgfVxuICAgIH1lbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmxvZygnW0lkbGVTZXJ2aWNlXSBOT1QgSW5pdGlhdGluZyBSZWZyZXNoIFRva2VuIGFzIHNlc3Npb24gaXMgaWRsZSBhbmQgaXQgd2lsbCBiZSB0aW1lb3V0IGF1dG9tYXRpY2FsbHkuJyk7XG4gICAgfVxuICB9XG5cbiAgbG9nb3V0KCkge1xuICAgIC8vdGhpcy5jaGlsZE1vZGFsLmhpZGUoKTtcbiAgICB0aGlzLmxzLmxvZ291dCgpO1xuICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdCgnL2xvZ2luJyk7XG4gICAgdGhpcy5zaG93U2Vzc2lvblRpbWVvdXRXYXJuaW5nLm5leHQoZmFsc2UpO1xuICAgIGlmKHRoaXMuY291bnRlclN1YnNjcmlwdGlvbil7XG4gICAgICB0aGlzLmNvdW50ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYodGhpcy5jb3VudGVyRW5kU3Vic2NyaXB0aW9uKXtcbiAgICAgIHRoaXMuY291bnRlckVuZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFNlY29uZHMoZGF0ZSA6ICBEYXRlLCBzZWNUb0FkZCA6IG51bWJlcil7XG4gICAgZGF0ZS5zZXRTZWNvbmRzKGRhdGUuZ2V0U2Vjb25kcygpICsgc2VjVG9BZGQpO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iXX0=
@@ -18,4 +18,4 @@ export class MaintenanceService {
18
18
  providedIn: 'root'
19
19
  }]
20
20
  }], () => [{ type: i1.HttpClient }], null); })();
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbnRlbmFuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvc2VydmljZXMvbWFpbnRlbmFuY2UvbWFpbnRlbmFuY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBWXpELE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsWUFBbUIsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFJLENBQUM7SUFFekMsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXlCLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1RSxDQUFDO21GQU5VLGtCQUFrQjt1RUFBbEIsa0JBQWtCLFdBQWxCLGtCQUFrQixtQkFGakIsTUFBTTs7aUZBRVAsa0JBQWtCO2NBSDlCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1haW50ZW5hbmNlU3RhdHVzTW9kZWx7XHJcbiAgaXNBcHBVbmRlck1haW50ZW5hbmNlIDogYm9vbGVhbjtcclxuXHRtc2cgOiBzdHJpbmc7XHJcblx0c3RhcnRUaW1lIDogc3RyaW5nO1xyXG5cdGVuZFRpbWUgOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1haW50ZW5hbmNlU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwIDogSHR0cENsaWVudCkgeyB9XHJcblxyXG4gIGNoZWNrZm9yTWFpbnRlbmFuY2UoKXtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE1haW50ZW5hbmNlU3RhdHVzTW9kZWw+KExpYkNvbnN0YW50cy5tYWludGVuYW5jZVVybCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbnRlbmFuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvc2VydmljZXMvbWFpbnRlbmFuY2UvbWFpbnRlbmFuY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBWXpELE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsWUFBbUIsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFJLENBQUM7SUFFekMsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXlCLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1RSxDQUFDO21GQU5VLGtCQUFrQjt1RUFBbEIsa0JBQWtCLFdBQWxCLGtCQUFrQixtQkFGakIsTUFBTTs7aUZBRVAsa0JBQWtCO2NBSDlCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBNYWludGVuYW5jZVN0YXR1c01vZGVse1xuICBpc0FwcFVuZGVyTWFpbnRlbmFuY2UgOiBib29sZWFuO1xuXHRtc2cgOiBzdHJpbmc7XG5cdHN0YXJ0VGltZSA6IHN0cmluZztcblx0ZW5kVGltZSA6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWFpbnRlbmFuY2VTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaHR0cCA6IEh0dHBDbGllbnQpIHsgfVxuXG4gIGNoZWNrZm9yTWFpbnRlbmFuY2UoKXtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxNYWludGVuYW5jZVN0YXR1c01vZGVsPihMaWJDb25zdGFudHMubWFpbnRlbmFuY2VVcmwpO1xuICB9XG59XG4iXX0=
@@ -110,4 +110,4 @@ export class NotificationService extends BaseService {
110
110
  providedIn: 'root'
111
111
  }]
112
112
  }], () => [{ type: i1.HttpClient }, { type: i2.LoggerService }], null); })();
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFTekQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQVc7SUFnQmxELFlBQVksVUFBdUIsRUFBVSxNQUFxQjtRQUNoRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFEeUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQWQxRCxRQUFHLEdBQUc7WUFDWixPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUM7Z0JBQ3JCLGNBQWMsRUFBRSxZQUFZO2FBQy9CLENBQUM7U0FDSCxDQUFBO1FBSU0sc0JBQWlCLEdBQTZCLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJFLGtCQUFhLEdBQTBDLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRS9FLDJCQUFzQixHQUFHLEtBQUssQ0FBQztJQUt0QyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBUyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxH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O1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGludGVydmFsLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi9iYXNlLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmV3c0FuZEFubm91bmNlbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL05ld3NBbmRBbm5vdW5jZW1lbnRNb2RlbCc7XHJcbmltcG9ydCB7IFRyZW5kTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvVHJlbmRNb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25TZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2V7XHJcblxyXG4gIHByaXZhdGUgb3B0ID0ge1xyXG4gICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW4nXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHB1YmxpYyBub3RpZmljYXRpb25Db3VudCA6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcclxuXHJcbiAgcHVibGljIG5vdGlmaWNhdGlvbnMgOiBCZWhhdmlvclN1YmplY3Q8Tm90aWZpY2F0aW9uTW9kZWxbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuXHJcbiAgcHVibGljIHNob3dOb3RpZmljYXRpb25Mb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoaHR0cENsaWVudCA6IEh0dHBDbGllbnQsIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlKSB7IFxyXG4gICAgc3VwZXIoaHR0cENsaWVudCk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0Tm90aWZpY2F0aW9uQ291bnQoKXtcclxuICAgIHJldHVybiB0aGlzLmdldDxudW1iZXI+KCdub3RpZmljYXRpb25zL2NvdW50Jyk7XHJcbiAgfVxyXG5cclxuICBnZXROb3RpZmljYXRpb25zKCl7XHJcbiAgICByZXR1cm4gdGhpcy5nZXQ8Tm90aWZpY2F0aW9uTW9kZWxbXT4oJ25vdGlmaWNhdGlvbnMnKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVJlYWRGbGFnKCl7XHJcbiAgICBsZXQgaWRzID0gdGhpcy5ub3RpZmljYXRpb25zXHJcbiAgICAgICAgICAgICAgICAgIC5nZXRWYWx1ZSgpXHJcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIobiA9PiBuLnVwZGF0ZSlcclxuICAgICAgICAgICAgICAgICAgLm1hcChuID0+IG4udXNlck5vdGlmaWNhdGlvbklkKTtcclxuICAgIGlmKGlkcyAmJiBpZHMubGVuZ3RoID4gMCl7XHJcbiAgICAgIHJldHVybiB0aGlzLnBvc3Q8bnVtYmVyPignbm90aWZpY2F0aW9ucy9tYXJrcmVhZCcsIGlkcylcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgIHJlcyA9PiB0aGlzLm5vdGlmaWNhdGlvbkNvdW50Lm5leHQocmVzKSxcclxuICAgICAgICAgICAgICAgICAgZXJyID0+IHRoaXMubG9nZ2VyLmxvZygnW05vdGlmaWNhdGlvblNlcnZpY2VdIEVycm9yIHdoaWxlIHVwZGF0aW5nJywgZXJyKSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZXJ2aWNlQ29udGV4dCgpIHtcclxuICAgIHRoaXMuc2VydmljZUNvbnRleHQgPSBMaWJDb25zdGFudHMubm90aWZpY2F0aW9uX3NlcnZpY2UuY29udGV4dFxyXG4gIH1cclxuXHJcbiAgc2V0U2VydmljZVBvcnQoKSB7XHJcbiAgICB0aGlzLnNlcnZpY2VQb3J0ID0gTGliQ29uc3RhbnRzLm5vdGlmaWNhdGlvbl9zZXJ2aWNlLnBvcnQ7XHJcbiAgfVxyXG5cclxuICBzZXRTZXJ2aWNlUHJvdG9jb2woKSB7XHJcbiAgICB0aGlzLnByb3RvY29sID0gTGliQ29uc3RhbnRzLm5vdGlmaWNhdGlvbl9zZXJ2aWNlLnByb3RvY29sO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VydmljZUhvc3QoKSB7XHJcbiAgICB0aGlzLmhvc3QgPSBMaWJDb25zdGFudHMubm90aWZpY2F0aW9uX3NlcnZpY2UuaG9zdDtcclxuICB9XHJcblxyXG4gIGdldFJlYWROb3RpZmljYXRpb25zKCl7XHJcbiAgICByZXR1cm4gdGhpcy5ub3RpZmljYXRpb25zXHJcbiAgICAgICAgICAgICAgIC5nZXRWYWx1ZSgpXHJcbiAgICAgICAgICAgICAgIC5maWx0ZXIobiA9PiBuLmlzUmVhZCA9PT0gJzEnKTtcclxuICB9XHJcblxyXG4gIGdldFJlYWROb3RpZmljYXRpb25Db3VudCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVhZE5vdGlmaWNhdGlvbnMoKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXRVblJlYWROb3RpZmljYXRpb25zKCl7XHJcbiAgICByZXR1cm4gdGhpcy5ub3RpZmljYXRpb25zXHJcbiAgICAgICAgICAgICAgIC5nZXRWYWx1ZSgpXHJcbiAgICAgICAgICAgICAgIC5maWx0ZXIobiA9PiBuLmlzUmVhZCA9PT0gJzAnKTtcclxuICB9XHJcblxyXG4gIGdldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCl7XHJcbiAgICBsZXQgY291bnQgPSB0aGlzLmdldFVuUmVhZE5vdGlmaWNhdGlvbnMoKS5sZW5ndGhcclxuICAgIHRoaXMubm90aWZpY2F0aW9uQ291bnQubmV4dChjb3VudCk7XHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG5cclxuICBtYXJrRm9yVXBkYXRlKG5vdGlmaWNhdGlvbklkKXtcclxuICAgIGxldCBub3RpZmljYXRpb24gPSB0aGlzLm5vdGlmaWNhdGlvbnMuZ2V0VmFsdWUoKS5maWx0ZXIobiA9PiBuLnVzZXJOb3RpZmljYXRpb25JZCA9PT0gbm90aWZpY2F0aW9uSWQpWzBdO1xyXG4gICAgbm90aWZpY2F0aW9uLnVwZGF0ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBtYXJrQXNSZWFkKG5vdGlmaWNhdGlvbklkKXtcclxuICAgIGxldCBub3RpZmljYXRpb24gPSB0aGlzLm5vdGlmaWNhdGlvbnMuZ2V0VmFsdWUoKS5maWx0ZXIobiA9PiBuLnVzZXJOb3RpZmljYXRpb25JZCA9PT0gbm90aWZpY2F0aW9uSWQpWzBdO1xyXG4gICAgbm90aWZpY2F0aW9uLmlzUmVhZCA9IFwiMVwiO1xyXG4gICAgdGhpcy5nZXRVbnJlYWROb3RpZmljYXRpb25Db3VudCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0dXBOb3RpZmljYXRpb25UaW1lcigpe1xyXG4gICAgY29uc3Qgc291cmNlID0gaW50ZXJ2YWwoMzAwMDAwKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gc291cmNlLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5sb2FkTm90aWZpY2F0aW9uQ291bnQoKSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVOb3RpZmljYXRpb25UaW1lcigpe1xyXG4gICAgaWYodGhpcy5zdWJzY3JpcHRpb24pe1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkTm90aWZpY2F0aW9uQ291bnQoKSB7XHJcbiAgICB0aGlzLnNob3dOb3RpZmljYXRpb25Mb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5nZXROb3RpZmljYXRpb25Db3VudCgpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ291bnQubmV4dChyZXMpO1xyXG4gICAgICAgICAgdGhpcy5zaG93Tm90aWZpY2F0aW9uTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ291bnQubmV4dCgwKTtcclxuICAgICAgICAgIHRoaXMuc2hvd05vdGlmaWNhdGlvbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGZldGNoTmV3c0Fubm91bmNlbWVudHNJbmZvcm1hdGlvbigpe1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0PE5ld3NBbmRBbm5vdW5jZW1lbnRNb2RlbFtdPignbmV3cy8nKTtcclxuICB9XHJcblxyXG4gIGZldGNoVHJlbmRzKCl7XHJcbiAgICByZXR1cm4gdGhpcy5nZXQ8VHJlbmRNb2RlbFtdPigndHJlbmRzLycsIHRoaXMub3B0KTtcclxuICB9XHJcbn1cclxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFTekQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQVc7SUFnQmxELFlBQVksVUFBdUIsRUFBVSxNQUFxQjtRQUNoRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFEeUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQWQxRCxRQUFHLEdBQUc7WUFDWixPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUM7Z0JBQ3JCLGNBQWMsRUFBRSxZQUFZO2FBQy9CLENBQUM7U0FDSCxDQUFBO1FBSU0sc0JBQWlCLEdBQTZCLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJFLGtCQUFhLEdBQTBDLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRS9FLDJCQUFzQixHQUFHLEtBQUssQ0FBQztJQUt0QyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBUyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxH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O1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGludGVydmFsLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vYmFzZS1zZXJ2aWNlJztcbmltcG9ydCB7IExpYkNvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9MaWJDb25zdGFudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTm90aWZpY2F0aW9uTW9kZWwnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOZXdzQW5kQW5ub3VuY2VtZW50TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTmV3c0FuZEFubm91bmNlbWVudE1vZGVsJztcbmltcG9ydCB7IFRyZW5kTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvVHJlbmRNb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZXtcblxuICBwcml2YXRlIG9wdCA9IHtcbiAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW4nXG4gICAgfSlcbiAgfVxuXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBub3RpZmljYXRpb25Db3VudCA6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcblxuICBwdWJsaWMgbm90aWZpY2F0aW9ucyA6IEJlaGF2aW9yU3ViamVjdDxOb3RpZmljYXRpb25Nb2RlbFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuXG4gIHB1YmxpYyBzaG93Tm90aWZpY2F0aW9uTG9hZGVyID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoaHR0cENsaWVudCA6IEh0dHBDbGllbnQsIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlKSB7IFxuICAgIHN1cGVyKGh0dHBDbGllbnQpO1xuXG4gIH1cblxuICBnZXROb3RpZmljYXRpb25Db3VudCgpe1xuICAgIHJldHVybiB0aGlzLmdldDxudW1iZXI+KCdub3RpZmljYXRpb25zL2NvdW50Jyk7XG4gIH1cblxuICBnZXROb3RpZmljYXRpb25zKCl7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PE5vdGlmaWNhdGlvbk1vZGVsW10+KCdub3RpZmljYXRpb25zJyk7XG4gIH1cblxuICB1cGRhdGVSZWFkRmxhZygpe1xuICAgIGxldCBpZHMgPSB0aGlzLm5vdGlmaWNhdGlvbnNcbiAgICAgICAgICAgICAgICAgIC5nZXRWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKG4gPT4gbi51cGRhdGUpXG4gICAgICAgICAgICAgICAgICAubWFwKG4gPT4gbi51c2VyTm90aWZpY2F0aW9uSWQpO1xuICAgIGlmKGlkcyAmJiBpZHMubGVuZ3RoID4gMCl7XG4gICAgICByZXR1cm4gdGhpcy5wb3N0PG51bWJlcj4oJ25vdGlmaWNhdGlvbnMvbWFya3JlYWQnLCBpZHMpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgIHJlcyA9PiB0aGlzLm5vdGlmaWNhdGlvbkNvdW50Lm5leHQocmVzKSxcbiAgICAgICAgICAgICAgICAgIGVyciA9PiB0aGlzLmxvZ2dlci5sb2coJ1tOb3RpZmljYXRpb25TZXJ2aWNlXSBFcnJvciB3aGlsZSB1cGRhdGluZycsIGVyciksXG4gICAgICAgICAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBzZXRTZXJ2aWNlQ29udGV4dCgpIHtcbiAgICB0aGlzLnNlcnZpY2VDb250ZXh0ID0gTGliQ29uc3RhbnRzLm5vdGlmaWNhdGlvbl9zZXJ2aWNlLmNvbnRleHRcbiAgfVxuXG4gIHNldFNlcnZpY2VQb3J0KCkge1xuICAgIHRoaXMuc2VydmljZVBvcnQgPSBMaWJDb25zdGFudHMubm90aWZpY2F0aW9uX3NlcnZpY2UucG9ydDtcbiAgfVxuXG4gIHNldFNlcnZpY2VQcm90b2NvbCgpIHtcbiAgICB0aGlzLnByb3RvY29sID0gTGliQ29uc3RhbnRzLm5vdGlmaWNhdGlvbl9zZXJ2aWNlLnByb3RvY29sO1xuICB9XG5cbiAgc2V0U2VydmljZUhvc3QoKSB7XG4gICAgdGhpcy5ob3N0ID0gTGliQ29uc3RhbnRzLm5vdGlmaWNhdGlvbl9zZXJ2aWNlLmhvc3Q7XG4gIH1cblxuICBnZXRSZWFkTm90aWZpY2F0aW9ucygpe1xuICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvbnNcbiAgICAgICAgICAgICAgIC5nZXRWYWx1ZSgpXG4gICAgICAgICAgICAgICAuZmlsdGVyKG4gPT4gbi5pc1JlYWQgPT09ICcxJyk7XG4gIH1cblxuICBnZXRSZWFkTm90aWZpY2F0aW9uQ291bnQoKXtcbiAgICByZXR1cm4gdGhpcy5nZXRSZWFkTm90aWZpY2F0aW9ucygpLmxlbmd0aDtcbiAgfVxuXG4gIGdldFVuUmVhZE5vdGlmaWNhdGlvbnMoKXtcbiAgICByZXR1cm4gdGhpcy5ub3RpZmljYXRpb25zXG4gICAgICAgICAgICAgICAuZ2V0VmFsdWUoKVxuICAgICAgICAgICAgICAgLmZpbHRlcihuID0+IG4uaXNSZWFkID09PSAnMCcpO1xuICB9XG5cbiAgZ2V0VW5yZWFkTm90aWZpY2F0aW9uQ291bnQoKXtcbiAgICBsZXQgY291bnQgPSB0aGlzLmdldFVuUmVhZE5vdGlmaWNhdGlvbnMoKS5sZW5ndGhcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkNvdW50Lm5leHQoY291bnQpO1xuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIG1hcmtGb3JVcGRhdGUobm90aWZpY2F0aW9uSWQpe1xuICAgIGxldCBub3RpZmljYXRpb24gPSB0aGlzLm5vdGlmaWNhdGlvbnMuZ2V0VmFsdWUoKS5maWx0ZXIobiA9PiBuLnVzZXJOb3RpZmljYXRpb25JZCA9PT0gbm90aWZpY2F0aW9uSWQpWzBdO1xuICAgIG5vdGlmaWNhdGlvbi51cGRhdGUgPSB0cnVlO1xuICB9XG5cbiAgbWFya0FzUmVhZChub3RpZmljYXRpb25JZCl7XG4gICAgbGV0IG5vdGlmaWNhdGlvbiA9IHRoaXMubm90aWZpY2F0aW9ucy5nZXRWYWx1ZSgpLmZpbHRlcihuID0+IG4udXNlck5vdGlmaWNhdGlvbklkID09PSBub3RpZmljYXRpb25JZClbMF07XG4gICAgbm90aWZpY2F0aW9uLmlzUmVhZCA9IFwiMVwiO1xuICAgIHRoaXMuZ2V0VW5yZWFkTm90aWZpY2F0aW9uQ291bnQoKTtcbiAgfVxuXG4gIHNldHVwTm90aWZpY2F0aW9uVGltZXIoKXtcbiAgICBjb25zdCBzb3VyY2UgPSBpbnRlcnZhbCgzMDAwMDApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gc291cmNlLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5sb2FkTm90aWZpY2F0aW9uQ291bnQoKSk7XG4gIH1cblxuICByZW1vdmVOb3RpZmljYXRpb25UaW1lcigpe1xuICAgIGlmKHRoaXMuc3Vic2NyaXB0aW9uKXtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTm90aWZpY2F0aW9uQ291bnQoKSB7XG4gICAgdGhpcy5zaG93Tm90aWZpY2F0aW9uTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmdldE5vdGlmaWNhdGlvbkNvdW50KClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Db3VudC5uZXh0KHJlcyk7XG4gICAgICAgICAgdGhpcy5zaG93Tm90aWZpY2F0aW9uTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Db3VudC5uZXh0KDApO1xuICAgICAgICAgIHRoaXMuc2hvd05vdGlmaWNhdGlvbkxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZmV0Y2hOZXdzQW5ub3VuY2VtZW50c0luZm9ybWF0aW9uKCl7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PE5ld3NBbmRBbm5vdW5jZW1lbnRNb2RlbFtdPignbmV3cy8nKTtcbiAgfVxuXG4gIGZldGNoVHJlbmRzKCl7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFRyZW5kTW9kZWxbXT4oJ3RyZW5kcy8nLCB0aGlzLm9wdCk7XG4gIH1cbn1cbiJdfQ==
@@ -57,4 +57,4 @@ export class TourService {
57
57
  providedIn: 'root'
58
58
  }]
59
59
  }], () => [{ type: i1.HttpClient }, { type: i2.ActivatedRoute }, { type: i3.LoggerService }], null); })();
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy90b3VyL3RvdXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTW5ELE1BQU0sT0FBTyxXQUFXO0lBV3hCLFlBQW9CLElBQWlCLEVBQVUsRUFBa0IsRUFBVSxNQUFxQjtRQUE1RSxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBZ0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBVGhHLHFKQUFxSjtRQUNySixrRkFBa0Y7UUFFMUUsc0JBQWlCLEdBQTRCLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXBGLFVBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUVoQixlQUFVLEdBQWtELEVBQUUsQ0FBQztRQUc3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSTthQUNKLEdBQUcsQ0FBSywyQkFBMkIsQ0FBQzthQUNwQyxTQUFTLENBQ1IsR0FBRyxDQUFDLEVBQUU7WUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtZQUNKLE1BQU0sMkNBQTJDLENBQUM7UUFDcEQsQ0FBQyxDQUNGLENBQUM7SUFDUixDQUFDO0lBRUQsUUFBUSxDQUFDLGFBQXFCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxRQUFnQjtRQUNuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBZTtRQUMzQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVTthQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUM7UUFDbEQsSUFBRyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNqRDthQUFJO1lBQ0gsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxDQUFDOzRFQXBEWSxXQUFXO3VFQUFYLFdBQVcsV0FBWCxXQUFXLG1CQUZWLE1BQU07O2lGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvdXJTZXJ2aWNlIHtcclxuXHJcbi8vaW1wb3J0IHRoaXMgc2VydmljZSBpbiByZXF1aXJlZCBwYWdlIGNvbXBvbmVudCBhbmQgY2FsbCBzZXRDdXJyZW50U3RlcHNDb3VudChOKSBmcm9tIHRoYXQgY29tcG9uZW50IHdoZXJlIE4gaXMgbnVtYmVyIG9mIHN0ZXBzIGRlZmluZWQgaW4gdGhhdCBwYWdlXHJcbi8vbWFrZSBzdXJlIHN0ZXBzIGFyZSBkZWZpbmVkIGFzIHN0ZXAxLHN0ZXAyLHN0ZXAzLi4uc3RlcE4gICAgICAocGF0dGVybiBvZiBzdGVwTilcclxuXHJcbnByaXZhdGUgY3VycmVudFN0ZXBzQ291bnQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG5cclxuc3RlcHMgPSBBcnJheSgpO1xyXG5cclxudG91ckNvbmZpZyA6IEFycmF5PHsgcGFnZUlkOiBzdHJpbmcsIHN0ZXBzQ291bnQ6IG51bWJlcn0+ID0gW107XHJcblxyXG5jb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHAgOiBIdHRwQ2xpZW50LCBwcml2YXRlIGFyOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UpIHtcclxuICBmb3IgKGxldCBpID0gMTsgaSA8PSAxNTsgaSsrKSB7XHJcbiAgICB0aGlzLnN0ZXBzLnB1c2goJ3N0ZXAnICsgaS50b1N0cmluZygpKTtcclxuICB9XHJcbiAgdGhpcy5sb2dnZXIubG9nKCd0b3VyIHNlcnZpY2UgaW5pdGlhbGl6ZWQgZnJvbSBBcHBMaWInKTtcclxufVxyXG5cclxubG9hZFRvdXJDb25maWcoKXtcclxuICB0aGlzLmh0dHBcclxuICAgICAgLmdldDxbXT4oJ2Fzc2V0cy90b3VyL2FwcC50b3VyLmpzb24nKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvdXJDb25maWcgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnNldFNldHBzQ291bnQodGhpcy5hci5zbmFwc2hvdC5kYXRhWydwYWdlSWQnXSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgJ0Vycm9yIG9jY3VyZWQgd2hpbGUgbG9hZGluZyBhcHAudG91ci5qc29uJztcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldFN0ZXBzKG51bWJlck9mU3RlcHM6IG51bWJlcikge1xyXG4gIHJldHVybiB0aGlzLnN0ZXBzLnNsaWNlKDAsIG51bWJlck9mU3RlcHMpO1xyXG59XHJcblxyXG5zZXRDdXJyZW50U3RlcHNDb3VudChuZXdWYWx1ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgdGhpcy5jdXJyZW50U3RlcHNDb3VudC5uZXh0KG5ld1ZhbHVlKTtcclxufVxyXG5cclxuc2V0U2V0cHNDb3VudChwYWdlSWQgOiBzdHJpbmcpe1xyXG4gIGxldCBjb25maWcgPSB0aGlzLnRvdXJDb25maWdcclxuICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoYyA9PiBjLnBhZ2VJZCA9PSBwYWdlSWQpO1xyXG4gIGlmKGNvbmZpZyAmJiBjb25maWcubGVuZ3RoID4gMCl7XHJcbiAgICB0aGlzLnNldEN1cnJlbnRTdGVwc0NvdW50KGNvbmZpZ1swXS5zdGVwc0NvdW50KTtcclxuICB9ZWxzZXtcclxuICAgIHRoaXMuc2V0Q3VycmVudFN0ZXBzQ291bnQoMCk7XHJcbiAgfVxyXG59XHJcblxyXG5nZXRDdXJyZW50U3RlcHNDb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gIHJldHVybiB0aGlzLmN1cnJlbnRTdGVwc0NvdW50LmFzT2JzZXJ2YWJsZSgpO1xyXG59XHJcbn1cclxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy90b3VyL3RvdXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTW5ELE1BQU0sT0FBTyxXQUFXO0lBV3hCLFlBQW9CLElBQWlCLEVBQVUsRUFBa0IsRUFBVSxNQUFxQjtRQUE1RSxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBZ0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBVGhHLHFKQUFxSjtRQUNySixrRkFBa0Y7UUFFMUUsc0JBQWlCLEdBQTRCLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXBGLFVBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUVoQixlQUFVLEdBQWtELEVBQUUsQ0FBQztRQUc3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSTthQUNKLEdBQUcsQ0FBSywyQkFBMkIsQ0FBQzthQUNwQyxTQUFTLENBQ1IsR0FBRyxDQUFDLEVBQUU7WUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtZQUNKLE1BQU0sMkNBQTJDLENBQUM7UUFDcEQsQ0FBQyxDQUNGLENBQUM7SUFDUixDQUFDO0lBRUQsUUFBUSxDQUFDLGFBQXFCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxRQUFnQjtRQUNuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBZTtRQUMzQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVTthQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUM7UUFDbEQsSUFBRyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNqRDthQUFJO1lBQ0gsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxDQUFDOzRFQXBEWSxXQUFXO3VFQUFYLFdBQVcsV0FBWCxXQUFXLG1CQUZWLE1BQU07O2lGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRvdXJTZXJ2aWNlIHtcblxuLy9pbXBvcnQgdGhpcyBzZXJ2aWNlIGluIHJlcXVpcmVkIHBhZ2UgY29tcG9uZW50IGFuZCBjYWxsIHNldEN1cnJlbnRTdGVwc0NvdW50KE4pIGZyb20gdGhhdCBjb21wb25lbnQgd2hlcmUgTiBpcyBudW1iZXIgb2Ygc3RlcHMgZGVmaW5lZCBpbiB0aGF0IHBhZ2Vcbi8vbWFrZSBzdXJlIHN0ZXBzIGFyZSBkZWZpbmVkIGFzIHN0ZXAxLHN0ZXAyLHN0ZXAzLi4uc3RlcE4gICAgICAocGF0dGVybiBvZiBzdGVwTilcblxucHJpdmF0ZSBjdXJyZW50U3RlcHNDb3VudDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG5cbnN0ZXBzID0gQXJyYXkoKTtcblxudG91ckNvbmZpZyA6IEFycmF5PHsgcGFnZUlkOiBzdHJpbmcsIHN0ZXBzQ291bnQ6IG51bWJlcn0+ID0gW107XG5cbmNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cCA6IEh0dHBDbGllbnQsIHByaXZhdGUgYXI6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSkge1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSAxNTsgaSsrKSB7XG4gICAgdGhpcy5zdGVwcy5wdXNoKCdzdGVwJyArIGkudG9TdHJpbmcoKSk7XG4gIH1cbiAgdGhpcy5sb2dnZXIubG9nKCd0b3VyIHNlcnZpY2UgaW5pdGlhbGl6ZWQgZnJvbSBBcHBMaWInKTtcbn1cblxubG9hZFRvdXJDb25maWcoKXtcbiAgdGhpcy5odHRwXG4gICAgICAuZ2V0PFtdPignYXNzZXRzL3RvdXIvYXBwLnRvdXIuanNvbicpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge1xuICAgICAgICAgIHRoaXMudG91ckNvbmZpZyA9IHJlcztcbiAgICAgICAgICB0aGlzLnNldFNldHBzQ291bnQodGhpcy5hci5zbmFwc2hvdC5kYXRhWydwYWdlSWQnXSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgdGhyb3cgJ0Vycm9yIG9jY3VyZWQgd2hpbGUgbG9hZGluZyBhcHAudG91ci5qc29uJztcbiAgICAgICAgfVxuICAgICAgKTtcbn1cblxuZ2V0U3RlcHMobnVtYmVyT2ZTdGVwczogbnVtYmVyKSB7XG4gIHJldHVybiB0aGlzLnN0ZXBzLnNsaWNlKDAsIG51bWJlck9mU3RlcHMpO1xufVxuXG5zZXRDdXJyZW50U3RlcHNDb3VudChuZXdWYWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gIHRoaXMuY3VycmVudFN0ZXBzQ291bnQubmV4dChuZXdWYWx1ZSk7XG59XG5cbnNldFNldHBzQ291bnQocGFnZUlkIDogc3RyaW5nKXtcbiAgbGV0IGNvbmZpZyA9IHRoaXMudG91ckNvbmZpZ1xuICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoYyA9PiBjLnBhZ2VJZCA9PSBwYWdlSWQpO1xuICBpZihjb25maWcgJiYgY29uZmlnLmxlbmd0aCA+IDApe1xuICAgIHRoaXMuc2V0Q3VycmVudFN0ZXBzQ291bnQoY29uZmlnWzBdLnN0ZXBzQ291bnQpO1xuICB9ZWxzZXtcbiAgICB0aGlzLnNldEN1cnJlbnRTdGVwc0NvdW50KDApO1xuICB9XG59XG5cbmdldEN1cnJlbnRTdGVwc0NvdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gIHJldHVybiB0aGlzLmN1cnJlbnRTdGVwc0NvdW50LmFzT2JzZXJ2YWJsZSgpO1xufVxufVxuIl19
@@ -73,13 +73,15 @@ export class AppValidators {
73
73
  static requiredIfValidator(predicate) {
74
74
  return (formControl) => {
75
75
  try {
76
- if (formControl == null) {
76
+ if (!formControl) {
77
77
  return null;
78
78
  }
79
- if (formControl.value == null && predicate()) {
80
- return {
81
- required: 'required'
82
- };
79
+ if (predicate()) {
80
+ const val = formControl.value;
81
+ // Check for null, undefined, or empty string
82
+ if (val === null || val === undefined || val === '') {
83
+ return { required: 'required' };
84
+ }
83
85
  }
84
86
  return null;
85
87
  }
@@ -212,5 +214,40 @@ export class AppValidators {
212
214
  return valid ? null : error;
213
215
  };
214
216
  }
217
+ /**
218
+ *
219
+ * @param weekstart and weekEnd date
220
+ * @param error earningsRequired error which should be returned in case validation fails
221
+ *
222
+ * @description Form validator to validate earnings and hours worked is avalible if ldw falls within the week of filling
223
+ *
224
+ * @author Steevan Macwan
225
+ */
226
+ static requireEarningsIfWorked(sunDate, satDate) {
227
+ return (group) => {
228
+ const lastDayWorked = group.get('lastDayWorked')?.value;
229
+ const grossEarning = group.get('grossEarning')?.value;
230
+ const hoursWorked = group.get('hoursWorkedInWeek')?.value;
231
+ // Skip if lastDayWorked is missing
232
+ if (!lastDayWorked) {
233
+ return null;
234
+ }
235
+ const lastDay = lastDayWorked instanceof Date ? lastDayWorked : new Date(lastDayWorked);
236
+ // Check if lastDayWorked falls within the week
237
+ if (lastDay >= sunDate && lastDay <= satDate) {
238
+ if (!grossEarning || grossEarning === 0) {
239
+ group.get('grossEarning')?.setErrors({ earningsRequired: true });
240
+ }
241
+ if (!hoursWorked || hoursWorked === 0) {
242
+ group.get('hoursWorkedInWeek')?.setErrors({ earningsRequired: true });
243
+ }
244
+ // If work was performed but grossEarning or hoursWorked is missing
245
+ if (!grossEarning || grossEarning === 0 || !hoursWorked || hoursWorked === 0) {
246
+ return { earningsRequired: true };
247
+ }
248
+ }
249
+ return null;
250
+ };
251
+ }
215
252
  }
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwVmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvdmFsaWRhdGlvbnMvQXBwVmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFDeEI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBa0I7UUFDdEMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBa0I7UUFDaEQsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxFQUFFO1lBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLFNBQTJCO1FBQ3BFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRSxPQUFPLFFBQVEsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRSxDQUFD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Q0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG4vKioqXHJcbiAqIFxyXG4gKiBAZGVzY3JpcHRpb24gQ2xhc3MgQ29udGFpbnMgYWxsIGNvbW1vbiBmb3JtIHZhbGlkYXRpb24gdXNlZCBpbiB0aGUgcHJvamVjdC5cclxuICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXBwVmFsaWRhdG9ycyB7XHJcbiAgLyoqXHJcbiAgICogY2hlY2tzIGlmIHN0YXRlIGZpZWxkIGhhcyBhIHZhbHVlIG90aGVyIHRoYW4gS1NcclxuICAgKiBAcGFyYW0gYyBjb250cm9sXHJcbiAgICogQHJldHVybnMge3JlcXVpcmVkS2Fuc2FzOiBib29sZWFufVxyXG4gICAqL1xyXG4gIHN0YXRpYyByZXF1aXJlZEthbnNhcyhjOiBBYnN0cmFjdENvbnRyb2wpOiB7cmVxdWlyZWRLYW5zYXM6IGJvb2xlYW59IHtcclxuICAgIGlmIChjLnZhbHVlPy52YWx1ZSA9PSB1bmRlZmluZWQgfHwgYy52YWx1ZT8udmFsdWUgPT09ICdLUycpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge3JlcXVpcmVkS2Fuc2FzOiB0cnVlfTtcclxuICB9XHJcbiAgc3RhdGljIGNvbmZpcm1QYXNzd29yZFZhbGlkYXRvcihjOiBBYnN0cmFjdENvbnRyb2wpOiB7IGludmFsaWQ6IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoYy5nZXQoJ3Bhc3N3b3JkJykudmFsdWUgIT0gYy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWQ6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBwYXNzd29yZEFuZENvbmZpcm1QYXNzd29yZE11c3RNYXRjaChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcclxuICAgIGNvbnN0IHsgdmFsdWU6IHBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdwYXNzd29yZCcpO1xyXG4gICAgY29uc3QgeyB2YWx1ZTogY29uZmlybVBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdjb25maXJtUGFzc3dvcmQnKTtcclxuICAgIHJldHVybiBwYXNzd29yZCA9PT0gY29uZmlybVBhc3N3b3JkID8gbnVsbCA6IHsgcGFzc3dvcmROb3RNYXRjaDogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgY29uZmlybVZhbGlkYXRvcihjb250cm9sTmFtZTogc3RyaW5nLCBtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdO1xyXG4gICAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XHJcbiAgICAgIGlmIChtYXRjaGluZ0NvbnRyb2wuZXJyb3JzICYmICFtYXRjaGluZ0NvbnRyb2wuZXJyb3JzLmNvbmZpcm1lZFZhbGlkYXRvcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgbWF0Y2hpbmdDb250cm9sLnNldEVycm9ycyh7IG5vdE1hdGNoOiB0cnVlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1hdGNoaW5nQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuICBcclxuICAvLyBAZHluYW1pY1xyXG4gIHN0YXRpYyBzZWxlY3RBdGxlYXN0T25lKHZhbGlkYXRvcjogVmFsaWRhdG9yRm4pIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZ3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGlzQXRsZWFzdE9uZVBhc3NUaGVWYWxpZGF0aW9uID0gZ3JvdXAgJiYgZ3JvdXAuY29udHJvbHMgJiYgT2JqZWN0LmtleXMoZ3JvdXAuY29udHJvbHMpLnNvbWUoayA9PiAhdmFsaWRhdG9yKGdyb3VwLmNvbnRyb2xzW2tdKSk7XHJcbiAgICAgIHJldHVybiBpc0F0bGVhc3RPbmVQYXNzVGhlVmFsaWRhdGlvbiA/IG51bGwgOiB7IHNlbGVjdEF0bGVhc3RPbmU6IHRydWUgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgYXRMZWFzdE9uZU5vblplcm9WYWx1ZVZhbGlkYXRvcihtaW5SZXF1aXJlZDogbnVtYmVyID0gMSwgbmFtZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiB2YWxpZGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCkge1xyXG4gICAgICBsZXQgbm9PZk5vblplcm9WYWx1ZXMgPSAwXHJcbiAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNba2V5XVxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5hbWUgPyAgY29udHJvbC52YWx1ZVtuYW1lXSA6IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlID4gMCkge1xyXG4gICAgICAgICAgbm9PZk5vblplcm9WYWx1ZXMrK1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgaWYgKG5vT2ZOb25aZXJvVmFsdWVzIDwgbWluUmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcmVxdWlyZUNoZWNrYm94VG9CZUNoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIEBkeW5hbWljXHJcbiAgc3RhdGljIHJlcXVpcmVkSWZWYWxpZGF0b3IocHJlZGljYXRlKSB7XHJcbiAgICByZXR1cm4gKGZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sPT1udWxsKSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sLnZhbHVlID09IG51bGwgICYmIHByZWRpY2F0ZSgpKSB7XHJcbiAgICAgICAgICByZXR1cm57IFxyXG4gICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2goZSl7XHJcbiAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSByZWdleCBSZWd1bGFyIEV4cHJlc3Npb24gYWdhaW5zdCB3aGljaCB2YWx1ZSBuZWVkcyB0byBiZSB2YWxpZGF0ZWRcclxuICAgKiBAcGFyYW0gZXJyb3IgRXJyb3Igd2hpY2ggc2hvdWxkIGJlIHJldHVybmVkIGluIGNhc2UgdmFsaWRhdGlvbiBmYWlsc1xyXG4gICAqIFxyXG4gICAqIEBkZXNjcmlwdGlvbiBGb3JtIHZhbGlkYXRvciB0byB2YWxpZGF0ZSBjb250cm9sIHZhbHVlIGFnYWluc3QgYSByZWd1bGFyIGV4cHJlc3Npb25cclxuICAgKiBcclxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcclxuICAgKi9cclxuICAgc3RhdGljIG1hdGNoKHJlZ2V4OiBSZWdFeHAsIGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgY29uc3QgZnVuYyA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gdGVzdCB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wgYWdhaW5zdCB0aGUgcmVnZXhwIHN1cHBsaWVkXHJcbiAgICAgIGNvbnN0IHZhbGlkID0gcmVnZXgudGVzdChjb250cm9sLnZhbHVlKTtcclxuICAgICAgLy8gaWYgdHJ1ZSwgcmV0dXJuIG5vIGVycm9yIChubyBlcnJvciksIGVsc2UgcmV0dXJuIGVycm9yIHBhc3NlZCBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlclxyXG4gICAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogZXJyb3I7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGZ1bmM7XHJcbiAgfVxyXG5cclxuICAgIC8qKipcclxuICAgICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIHRoZSBlbnRlcmVkIHJvdXRpbmcgbnVtYmVyIGlzIHZhbGlkIG9yIG5vdCBhcyBwZXIgZm9sbG93aW5nIGxvZ2ljXHJcbiAgICAqIFxyXG4gICAgKiAoMyAqIChkMSArIGQ0ICsgZDcpICsgNyAqIChkMiArIGQ1ICsgZDgpICsgMSAqIChkMyArIGQ2ICsgZDkpICkgbW9kIDEwID0gMFxyXG4gICAgKiBcclxuICAgICogIFRoaXMgZm9ybXVsYSBpcyB0YWtlbiBmcm9tIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvdXRpbmdfdHJhbnNpdF9udW1iZXIjTUlDUl9Sb3V0aW5nX251bWJlcl9mb3JtYXRcclxuICAgICovXHJcbiAgc3RhdGljIGlzVmFsaWRSb3V0aW5nTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICBsZXQgcm91dGluZ051bWJlciA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICBsZXQgc3VtID0gMCwgbW9kID0gMDtcclxuICAgIGxldCByb3V0aW5nTnVtYmVyQXJyID0gKHJvdXRpbmdOdW1iZXIgKyBcIlwiKS5zcGxpdChcIlwiKTtcclxuICAgIGxldCBzdW0xID0gMyAqIChwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzBdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbM10pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFycls2XSkpO1xyXG4gICAgbGV0IHN1bTIgPSA3ICogKHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbMV0pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFycls0XSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzddKSk7XHJcbiAgICBsZXQgc3VtMyA9IDEgKiAocGFyc2VJbnQocm91dGluZ051bWJlckFyclsyXSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzVdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbOF0pKTtcclxuXHJcbiAgICBzdW0gPSBzdW0xICsgc3VtMiArIHN1bTM7XHJcbiAgICBtb2QgPSBzdW0gJSAxMDtcclxuXHJcbiAgICBpZiAoIShtb2QgPT0gMCkpIHtcclxuICAgICAgcmV0dXJuIHsgaXNSb3V0aW5nTnVtYmVyTm90VmFsaWQ6IHRydWUgfTtcclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIFxyXG4gIHN0YXRpYyBpc1ZhbGlkTGVuZ3RoUm91dGluZ051bWJlcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH17XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgaWYoY29udHJvbC52YWx1ZSAhPSBudWxsICYmIChjb250cm9sLnZhbHVlLmxlbmd0aCAhPSA5KSl7XHJcbiAgICAgIHJldHVybiB7aW52YWxpZExlbmd0aFJvdXRpbmcgOiB0cnVlfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc1ZhbGlkWmlwQ29kZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH17XHJcbiAgICBpZihjb250cm9sLnZhbHVlICE9IG51bGwgJiYgIUFwcFZhbGlkYXRvcnMuaXNOdW1iZXIoY29udHJvbC52YWx1ZSkpe1xyXG4gICAgICByZXR1cm4ge2ludmFsaWROdW1iZXIgOiB0cnVlfTtcclxuICAgIH1lbHNlIGlmKGNvbnRyb2wudmFsdWUgIT0gbnVsbCAmJiAoY29udHJvbC52YWx1ZS5sZW5ndGggPT0gNSB8fCBjb250cm9sLnZhbHVlLmxlbmd0aCA9PSA5KSl7XHJcbiAgICAgIC8vZG8gbm90aGluZ1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJldHVybiB7aW52YWxpZExlbmd0aCA6IHRydWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzVmFsaWRDYW5hZGlhblppcENvZGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGlmKCFBcHBWYWxpZGF0b3JzLmlzQ2FuYWRhWmlwQ29kZShjb250cm9sLnZhbHVlKSl7XHJcbiAgICAgIHJldHVybiB7aW52YWxpZFppcENvZGUgOiB0cnVlfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc0NhbmFkYVppcENvZGUoc3RyaW5nKSB7XHJcbiAgICB2YXIgcmVnID0gL15bQUJDRUdISi1OUFJTVFZYWV1cXGRbQUJDRUdISi1OUFJTVFYtWl1bIC1dP1xcZFtBQkNFR0hKLU5QUlNUVi1aXVxcZCQvaTtcclxuICAgIHJldHVybiByZWcudGVzdChzdHJpbmcpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzTnVtYmVyKG51bWJlcikge1xyXG4gICAgdmFyIHJlZyA9IG5ldyBSZWdFeHAoXCJeWzAtOV0qJFwiKTsgXHJcbiAgICByZXR1cm4gcmVnLnRlc3QobnVtYmVyKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc0JldHdlZW4oZnJvbSA6IERhdGUsIHRvOiBEYXRlKSA6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIC8vIGlmIGNvbnRyb2wgaXMgZW1wdHkgcmV0dXJuIG5vIGVycm9yXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHdzRGF0ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgIGlmKHdzRGF0ZS5nZXRUaW1lKCkgPCBmcm9tLmdldFRpbWUoKSB8fCB3c0RhdGUuZ2V0VGltZSgpID4gdG8uZ2V0VGltZSgpKXtcclxuICAgICAgICByZXR1cm4ge2RhdGVOb3RCZXR3ZWVuIDogdHJ1ZX07XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZXF1YWwobWF0Y2hpbmdDb250cm9sTmFtZTogc3RyaW5nLCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC5wYXJlbnQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbWF0Y2hpbmdDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBjb250cm9sLnBhcmVudC5nZXQobWF0Y2hpbmdDb250cm9sTmFtZSk7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSB8fCAhbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdmFsaWQgPSAoY29udHJvbC52YWx1ZSA9PT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIC8vIGlmIHRydWUsIHJldHVybiBubyBlcnJvciAobm8gZXJyb3IpLCBlbHNlIHJldHVybiBlcnJvciBwYXNzZWQgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXJcclxuICAgICAgcmV0dXJuIHZhbGlkID8gbnVsbCA6IGVycm9yO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBtYXRjaGluZ0NvbnRyb2xOYW1lIEZvcm0gY29udHJvbCBuYW1lIGFnYWluc3Qgd2hpY2ggY3VycmVudCBmb3JtIGNvbnRyb2wgdmFsdWUgc2hvdWxkIGJlIG1hdGNoZWRcclxuICAgKiBAcGFyYW0gZXJyb3IgRXJyb3Igd2hpY2ggc2hvdWxkIGJlIHJldHVybmVkIGluIGNhc2UgdmFsaWRhdGlvbiBmYWlsc1xyXG4gICAqIFxyXG4gICAqIEBkZXNjcmlwdGlvbiBGb3JtIHZhbGlkYXRvciB0byB2YWxpZGF0ZSBjb250cm9sIHZhbHVlIGFnYWluc3QgYSBvdGhlciBjb250cm9sIHZhbHVlXHJcbiAgICogXHJcbiAgICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXHJcbiAgICovXHJcbiAgc3RhdGljIG5vdEVxdWFsKG1hdGNoaW5nQ29udHJvbE5hbWU6IHN0cmluZywgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wucGFyZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG1hdGNoaW5nQ29udHJvbDogQWJzdHJhY3RDb250cm9sID0gY29udHJvbC5wYXJlbnQuZ2V0KG1hdGNoaW5nQ29udHJvbE5hbWUpO1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgIW1hdGNoaW5nQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIC8vIGlmIGNvbnRyb2wgaXMgZW1wdHkgcmV0dXJuIG5vIGVycm9yXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHZhbGlkID0gKGNvbnRyb2wudmFsdWUgIT09IG1hdGNoaW5nQ29udHJvbC52YWx1ZSk7XHJcblxyXG4gICAgICAvLyBpZiB0cnVlLCByZXR1cm4gbm8gZXJyb3IgKG5vIGVycm9yKSwgZWxzZSByZXR1cm4gZXJyb3IgcGFzc2VkIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyXHJcbiAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiBlcnJvcjtcclxuICAgIH07XHJcbiAgfVxyXG59Il19
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwVmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvdmFsaWRhdGlvbnMvQXBwVmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFDeEI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBa0I7UUFDdEMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBa0I7UUFDaEQsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxFQUFFO1lBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLFNBQTJCO1FBQ3BFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRSxPQUFPLFFBQVEsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsV0FBVztJQUNYLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFtQixFQUFFLG1CQUEyQjtRQUN0RSxNQUFNLElBQUksR0FBRyxDQUFDLFNBQTJCLEVBQUUsRUFBRTtZQUMzQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNoRSxJQUFJLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFO2dCQUN4RSxPQUFPO2FBQ1I7WUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUssRUFBRTtnQkFDM0MsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQy9DO2lCQUFNO2dCQUNMLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakM7UUFDSCxDQUFDLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO0lBQ1gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQXNCO1FBQzVDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBdUIsRUFBMkIsRUFBRTtZQUNoRSxNQUFNLDZCQUE2QixHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RJLE9BQU8sNkJBQTZCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMzRSxDQUFDLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO0lBQ1gsTUFBTSxDQUFDLCtCQUErQixDQUFDLGNBQXNCLENBQUMsRUFBRSxJQUFhO1FBQzNFLE9BQU8sU0FBUyxRQUFRLENBQUMsU0FBb0I7WUFDM0MsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUE7WUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3hELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDYixpQkFBaUIsRUFBRSxDQUFBO2lCQUNwQjtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxpQkFBaUIsR0FBRyxXQUFXLEVBQUU7Z0JBQ25DLE9BQU87b0JBQ0wsMEJBQTBCLEVBQUUsSUFBSTtpQkFDakMsQ0FBQTthQUNGO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQUE7SUFDSCxDQUFDO0lBQ0QsV0FBVztJQUNYLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTO1FBQ2xDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNyQixJQUFJO2dCQUNGLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ2hCLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUNELElBQUksU0FBUyxFQUFFLEVBQUU7b0JBQ2YsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztvQkFDOUIsNkNBQTZDO29CQUM3QyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO3FCQUNqQztpQkFDRjtnQkFDRCxPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsT0FBTSxDQUFDLEVBQUM7Z0JBQ1AsT0FBTyxJQUFJLENBQUM7YUFDWjtRQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYSxFQUFFLEtBQXVCO1FBQ2xELE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBd0IsRUFBMEIsRUFBRTtZQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDbEIsc0NBQXNDO2dCQUN0QyxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsNERBQTREO1lBQzVELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLHdGQUF3RjtZQUN4RixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUM7Ozs7OztNQU1FO0lBQ0osTUFBTSxDQUFDLG9CQUFvQixDQUFDLE9BQXdCO1FBQ2xELElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9HLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0csR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ2YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxDQUFDO1NBQzFDO1FBQ0QsT0FBTztJQUNULENBQUM7SUFHRCxNQUFNLENBQUMsMEJBQTBCLENBQUMsT0FBd0I7UUFDeEQsUUFBUSxDQUFDO1FBQ1YsSUFBRyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFDO1lBQ3JELE9BQU8sRUFBQyxvQkFBb0IsRUFBRyxJQUFJLEVBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQXdCO1FBQzVDLElBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBQztZQUNqRSxPQUFPLEVBQUMsYUFBYSxFQUFHLElBQUksRUFBQyxDQUFDO1NBQy9CO2FBQUssSUFBRyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBQztZQUN6RixZQUFZO1NBQ2I7YUFBSTtZQUNILE9BQU8sRUFBQyxhQUFhLEVBQUcsSUFBSSxFQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE9BQXdCO1FBQ3BELElBQUcsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBQztZQUMvQyxPQUFPLEVBQUMsY0FBYyxFQUFHLElBQUksRUFBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTTtRQUMzQixJQUFJLEdBQUcsR0FBRyxzRUFBc0UsQ0FBQztRQUNqRixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTTtRQUNwQixJQUFJLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBVyxFQUFFLEVBQVE7UUFDcEMsT0FBTyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2xCLHNDQUFzQztnQkFDdEMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDM0IsSUFBRyxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUM7Z0JBQ3RFLE9BQU8sRUFBQyxjQUFjLEVBQUcsSUFBSSxFQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBMkIsRUFBRSxLQUF1QjtRQUMvRCxPQUFPLENBQUMsT0FBd0IsRUFBMEIsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELElBQUksZUFBZSxHQUFvQixPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTtnQkFDNUMsc0NBQXNDO2dCQUN0QyxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV4RCx3RkFBd0Y7WUFDeEYsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzlCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsbUJBQTJCLEVBQUUsS0FBdUI7UUFDbEUsT0FBTyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLGVBQWUsR0FBb0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUU7Z0JBQzVDLHNDQUFzQztnQkFDdEMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFeEQsd0ZBQXdGO1lBQ3hGLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsdUJBQXVCLENBQUMsT0FBYSxFQUFFLE9BQWE7UUFDekQsT0FBTyxDQUFDLEtBQWdCLEVBQTJCLEVBQUU7WUFDbkQsTUFBTSxhQUFhLEdBQVMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDOUQsTUFBTSxZQUFZLEdBQVcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDOUQsTUFBTSxXQUFXLEdBQVcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUVsRSxtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDbEIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE1BQU0sT0FBTyxHQUFHLGFBQWEsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFeEYsK0NBQStDO1lBQy9DLElBQUksT0FBTyxJQUFJLE9BQU8sSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksS0FBSyxDQUFDLEVBQUU7b0JBQ3ZDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDbEU7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFO29CQUNyQyxLQUFLLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDdkU7Z0JBRUQsbUVBQW1FO2dCQUNuRSxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtvQkFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDO2lCQUNuQzthQUNGO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG4vKioqXHJcbiAqIFxyXG4gKiBAZGVzY3JpcHRpb24gQ2xhc3MgQ29udGFpbnMgYWxsIGNvbW1vbiBmb3JtIHZhbGlkYXRpb24gdXNlZCBpbiB0aGUgcHJvamVjdC5cclxuICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXBwVmFsaWRhdG9ycyB7XHJcbiAgLyoqXHJcbiAgICogY2hlY2tzIGlmIHN0YXRlIGZpZWxkIGhhcyBhIHZhbHVlIG90aGVyIHRoYW4gS1NcclxuICAgKiBAcGFyYW0gYyBjb250cm9sXHJcbiAgICogQHJldHVybnMge3JlcXVpcmVkS2Fuc2FzOiBib29sZWFufVxyXG4gICAqL1xyXG4gIHN0YXRpYyByZXF1aXJlZEthbnNhcyhjOiBBYnN0cmFjdENvbnRyb2wpOiB7cmVxdWlyZWRLYW5zYXM6IGJvb2xlYW59IHtcclxuICAgIGlmIChjLnZhbHVlPy52YWx1ZSA9PSB1bmRlZmluZWQgfHwgYy52YWx1ZT8udmFsdWUgPT09ICdLUycpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge3JlcXVpcmVkS2Fuc2FzOiB0cnVlfTtcclxuICB9XHJcbiAgc3RhdGljIGNvbmZpcm1QYXNzd29yZFZhbGlkYXRvcihjOiBBYnN0cmFjdENvbnRyb2wpOiB7IGludmFsaWQ6IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoYy5nZXQoJ3Bhc3N3b3JkJykudmFsdWUgIT0gYy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWQ6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBwYXNzd29yZEFuZENvbmZpcm1QYXNzd29yZE11c3RNYXRjaChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcclxuICAgIGNvbnN0IHsgdmFsdWU6IHBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdwYXNzd29yZCcpO1xyXG4gICAgY29uc3QgeyB2YWx1ZTogY29uZmlybVBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdjb25maXJtUGFzc3dvcmQnKTtcclxuICAgIHJldHVybiBwYXNzd29yZCA9PT0gY29uZmlybVBhc3N3b3JkID8gbnVsbCA6IHsgcGFzc3dvcmROb3RNYXRjaDogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgY29uZmlybVZhbGlkYXRvcihjb250cm9sTmFtZTogc3RyaW5nLCBtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdO1xyXG4gICAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XHJcbiAgICAgIGlmIChtYXRjaGluZ0NvbnRyb2wuZXJyb3JzICYmICFtYXRjaGluZ0NvbnRyb2wuZXJyb3JzLmNvbmZpcm1lZFZhbGlkYXRvcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgbWF0Y2hpbmdDb250cm9sLnNldEVycm9ycyh7IG5vdE1hdGNoOiB0cnVlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1hdGNoaW5nQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuICBcclxuICAvLyBAZHluYW1pY1xyXG4gIHN0YXRpYyBzZWxlY3RBdGxlYXN0T25lKHZhbGlkYXRvcjogVmFsaWRhdG9yRm4pIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZ3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGlzQXRsZWFzdE9uZVBhc3NUaGVWYWxpZGF0aW9uID0gZ3JvdXAgJiYgZ3JvdXAuY29udHJvbHMgJiYgT2JqZWN0LmtleXMoZ3JvdXAuY29udHJvbHMpLnNvbWUoayA9PiAhdmFsaWRhdG9yKGdyb3VwLmNvbnRyb2xzW2tdKSk7XHJcbiAgICAgIHJldHVybiBpc0F0bGVhc3RPbmVQYXNzVGhlVmFsaWRhdGlvbiA/IG51bGwgOiB7IHNlbGVjdEF0bGVhc3RPbmU6IHRydWUgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgYXRMZWFzdE9uZU5vblplcm9WYWx1ZVZhbGlkYXRvcihtaW5SZXF1aXJlZDogbnVtYmVyID0gMSwgbmFtZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiB2YWxpZGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCkge1xyXG4gICAgICBsZXQgbm9PZk5vblplcm9WYWx1ZXMgPSAwXHJcbiAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNba2V5XVxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5hbWUgPyAgY29udHJvbC52YWx1ZVtuYW1lXSA6IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlID4gMCkge1xyXG4gICAgICAgICAgbm9PZk5vblplcm9WYWx1ZXMrK1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgaWYgKG5vT2ZOb25aZXJvVmFsdWVzIDwgbWluUmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcmVxdWlyZUNoZWNrYm94VG9CZUNoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIEBkeW5hbWljXHJcbiAgc3RhdGljIHJlcXVpcmVkSWZWYWxpZGF0b3IocHJlZGljYXRlKSB7XHJcbiAgICByZXR1cm4gKGZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKCFmb3JtQ29udHJvbCkge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwcmVkaWNhdGUoKSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsID0gZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAvLyBDaGVjayBmb3IgbnVsbCwgdW5kZWZpbmVkLCBvciBlbXB0eSBzdHJpbmdcclxuICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJykge1xyXG4gICAgICAgICAgICByZXR1cm4geyByZXF1aXJlZDogJ3JlcXVpcmVkJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaChlKXtcclxuICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHJlZ2V4IFJlZ3VsYXIgRXhwcmVzc2lvbiBhZ2FpbnN0IHdoaWNoIHZhbHVlIG5lZWRzIHRvIGJlIHZhbGlkYXRlZFxyXG4gICAqIEBwYXJhbSBlcnJvciBFcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgYWdhaW5zdCBhIHJlZ3VsYXIgZXhwcmVzc2lvblxyXG4gICAqIFxyXG4gICAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxyXG4gICAqL1xyXG4gICBzdGF0aWMgbWF0Y2gocmVnZXg6IFJlZ0V4cCwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICBjb25zdCBmdW5jID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAvLyBpZiBjb250cm9sIGlzIGVtcHR5IHJldHVybiBubyBlcnJvclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB0ZXN0IHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCBhZ2FpbnN0IHRoZSByZWdleHAgc3VwcGxpZWRcclxuICAgICAgY29uc3QgdmFsaWQgPSByZWdleC50ZXN0KGNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAvLyBpZiB0cnVlLCByZXR1cm4gbm8gZXJyb3IgKG5vIGVycm9yKSwgZWxzZSByZXR1cm4gZXJyb3IgcGFzc2VkIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyXHJcbiAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiBlcnJvcjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZnVuYztcclxuICB9XHJcblxyXG4gICAgLyoqKlxyXG4gICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGVudGVyZWQgcm91dGluZyBudW1iZXIgaXMgdmFsaWQgb3Igbm90IGFzIHBlciBmb2xsb3dpbmcgbG9naWNcclxuICAgICogXHJcbiAgICAqICgzICogKGQxICsgZDQgKyBkNykgKyA3ICogKGQyICsgZDUgKyBkOCkgKyAxICogKGQzICsgZDYgKyBkOSkgKSBtb2QgMTAgPSAwXHJcbiAgICAqIFxyXG4gICAgKiAgVGhpcyBmb3JtdWxhIGlzIHRha2VuIGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm91dGluZ190cmFuc2l0X251bWJlciNNSUNSX1JvdXRpbmdfbnVtYmVyX2Zvcm1hdFxyXG4gICAgKi9cclxuICBzdGF0aWMgaXNWYWxpZFJvdXRpbmdOdW1iZXIoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGxldCByb3V0aW5nTnVtYmVyID0gY29udHJvbC52YWx1ZTtcclxuICAgIGxldCBzdW0gPSAwLCBtb2QgPSAwO1xyXG4gICAgbGV0IHJvdXRpbmdOdW1iZXJBcnIgPSAocm91dGluZ051bWJlciArIFwiXCIpLnNwbGl0KFwiXCIpO1xyXG4gICAgbGV0IHN1bTEgPSAzICogKHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbMF0pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFyclszXSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzZdKSk7XHJcbiAgICBsZXQgc3VtMiA9IDcgKiAocGFyc2VJbnQocm91dGluZ051bWJlckFyclsxXSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzRdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbN10pKTtcclxuICAgIGxldCBzdW0zID0gMSAqIChwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzJdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbNV0pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFycls4XSkpO1xyXG5cclxuICAgIHN1bSA9IHN1bTEgKyBzdW0yICsgc3VtMztcclxuICAgIG1vZCA9IHN1bSAlIDEwO1xyXG5cclxuICAgIGlmICghKG1vZCA9PSAwKSkge1xyXG4gICAgICByZXR1cm4geyBpc1JvdXRpbmdOdW1iZXJOb3RWYWxpZDogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgc3RhdGljIGlzVmFsaWRMZW5ndGhSb3V0aW5nTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfXtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICBpZihjb250cm9sLnZhbHVlICE9IG51bGwgJiYgKGNvbnRyb2wudmFsdWUubGVuZ3RoICE9IDkpKXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkTGVuZ3RoUm91dGluZyA6IHRydWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzVmFsaWRaaXBDb2RlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfXtcclxuICAgIGlmKGNvbnRyb2wudmFsdWUgIT0gbnVsbCAmJiAhQXBwVmFsaWRhdG9ycy5pc051bWJlcihjb250cm9sLnZhbHVlKSl7XHJcbiAgICAgIHJldHVybiB7aW52YWxpZE51bWJlciA6IHRydWV9O1xyXG4gICAgfWVsc2UgaWYoY29udHJvbC52YWx1ZSAhPSBudWxsICYmIChjb250cm9sLnZhbHVlLmxlbmd0aCA9PSA1IHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoID09IDkpKXtcclxuICAgICAgLy9kbyBub3RoaW5nXHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkTGVuZ3RoIDogdHJ1ZX07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNWYWxpZENhbmFkaWFuWmlwQ29kZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYoIUFwcFZhbGlkYXRvcnMuaXNDYW5hZGFaaXBDb2RlKGNvbnRyb2wudmFsdWUpKXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkWmlwQ29kZSA6IHRydWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQ2FuYWRhWmlwQ29kZShzdHJpbmcpIHtcclxuICAgIHZhciByZWcgPSAvXltBQkNFR0hKLU5QUlNUVlhZXVxcZFtBQkNFR0hKLU5QUlNUVi1aXVsgLV0/XFxkW0FCQ0VHSEotTlBSU1RWLVpdXFxkJC9pO1xyXG4gICAgcmV0dXJuIHJlZy50ZXN0KHN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNOdW1iZXIobnVtYmVyKSB7XHJcbiAgICB2YXIgcmVnID0gbmV3IFJlZ0V4cChcIl5bMC05XSokXCIpOyBcclxuICAgIHJldHVybiByZWcudGVzdChudW1iZXIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQmV0d2Vlbihmcm9tIDogRGF0ZSwgdG86IERhdGUpIDogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgd3NEYXRlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgaWYod3NEYXRlLmdldFRpbWUoKSA8IGZyb20uZ2V0VGltZSgpIHx8IHdzRGF0ZS5nZXRUaW1lKCkgPiB0by5nZXRUaW1lKCkpe1xyXG4gICAgICAgIHJldHVybiB7ZGF0ZU5vdEJldHdlZW4gOiB0cnVlfTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBlcXVhbChtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcsIGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnBhcmVudCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBtYXRjaGluZ0NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IGNvbnRyb2wucGFyZW50LmdldChtYXRjaGluZ0NvbnRyb2xOYW1lKTtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlIHx8ICFtYXRjaGluZ0NvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAvLyBpZiBjb250cm9sIGlzIGVtcHR5IHJldHVybiBubyBlcnJvclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB2YWxpZCA9IChjb250cm9sLnZhbHVlID09PSBtYXRjaGluZ0NvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgICAgLy8gaWYgdHJ1ZSwgcmV0dXJuIG5vIGVycm9yIChubyBlcnJvciksIGVsc2UgcmV0dXJuIGVycm9yIHBhc3NlZCBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlclxyXG4gICAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogZXJyb3I7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG1hdGNoaW5nQ29udHJvbE5hbWUgRm9ybSBjb250cm9sIG5hbWUgYWdhaW5zdCB3aGljaCBjdXJyZW50IGZvcm0gY29udHJvbCB2YWx1ZSBzaG91bGQgYmUgbWF0Y2hlZFxyXG4gICAqIEBwYXJhbSBlcnJvciBFcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgYWdhaW5zdCBhIG90aGVyIGNvbnRyb2wgdmFsdWVcclxuICAgKiBcclxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcclxuICAgKi9cclxuICBzdGF0aWMgbm90RXF1YWwobWF0Y2hpbmdDb250cm9sTmFtZTogc3RyaW5nLCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC5wYXJlbnQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbWF0Y2hpbmdDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBjb250cm9sLnBhcmVudC5nZXQobWF0Y2hpbmdDb250cm9sTmFtZSk7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSB8fCAhbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdmFsaWQgPSAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIC8vIGlmIHRydWUsIHJldHVybiBubyBlcnJvciAobm8gZXJyb3IpLCBlbHNlIHJldHVybiBlcnJvciBwYXNzZWQgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXJcclxuICAgICAgcmV0dXJuIHZhbGlkID8gbnVsbCA6IGVycm9yO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB3ZWVrc3RhcnQgYW5kIHdlZWtFbmQgZGF0ZVxyXG4gICAqIEBwYXJhbSBlcnJvciBlYXJuaW5nc1JlcXVpcmVkIGVycm9yIHdoaWNoIHNob3VsZCBiZSByZXR1cm5lZCBpbiBjYXNlIHZhbGlkYXRpb24gZmFpbHNcclxuICAgKiBcclxuICAgKiBAZGVzY3JpcHRpb24gRm9ybSB2YWxpZGF0b3IgdG8gdmFsaWRhdGUgZWFybmluZ3MgYW5kIGhvdXJzIHdvcmtlZCBpcyBhdmFsaWJsZSBpZiBsZHcgZmFsbHMgd2l0aGluIHRoZSB3ZWVrIG9mIGZpbGxpbmdcclxuICAgKiBcclxuICAgKiBAYXV0aG9yIFN0ZWV2YW4gTWFjd2FuXHJcbiAgICovXHJcbiAgc3RhdGljIHJlcXVpcmVFYXJuaW5nc0lmV29ya2VkKHN1bkRhdGU6IERhdGUsIHNhdERhdGU6IERhdGUpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGdyb3VwOiBGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGxhc3REYXlXb3JrZWQ6IERhdGUgPSBncm91cC5nZXQoJ2xhc3REYXlXb3JrZWQnKT8udmFsdWU7XHJcbiAgICAgIGNvbnN0IGdyb3NzRWFybmluZzogbnVtYmVyID0gZ3JvdXAuZ2V0KCdncm9zc0Vhcm5pbmcnKT8udmFsdWU7XHJcbiAgICAgIGNvbnN0IGhvdXJzV29ya2VkOiBudW1iZXIgPSBncm91cC5nZXQoJ2hvdXJzV29ya2VkSW5XZWVrJyk/LnZhbHVlO1xyXG5cclxuICAgICAgLy8gU2tpcCBpZiBsYXN0RGF5V29ya2VkIGlzIG1pc3NpbmdcclxuICAgICAgaWYgKCFsYXN0RGF5V29ya2VkKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGxhc3REYXkgPSBsYXN0RGF5V29ya2VkIGluc3RhbmNlb2YgRGF0ZSA/IGxhc3REYXlXb3JrZWQgOiBuZXcgRGF0ZShsYXN0RGF5V29ya2VkKTtcclxuXHJcbiAgICAgIC8vIENoZWNrIGlmIGxhc3REYXlXb3JrZWQgZmFsbHMgd2l0aGluIHRoZSB3ZWVrXHJcbiAgICAgIGlmIChsYXN0RGF5ID49IHN1bkRhdGUgJiYgbGFzdERheSA8PSBzYXREYXRlKSB7XHJcbiAgICAgICAgaWYgKCFncm9zc0Vhcm5pbmcgfHwgZ3Jvc3NFYXJuaW5nID09PSAwKSB7XHJcbiAgICAgICAgICBncm91cC5nZXQoJ2dyb3NzRWFybmluZycpPy5zZXRFcnJvcnMoeyBlYXJuaW5nc1JlcXVpcmVkOiB0cnVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWhvdXJzV29ya2VkIHx8IGhvdXJzV29ya2VkID09PSAwKSB7XHJcbiAgICAgICAgICBncm91cC5nZXQoJ2hvdXJzV29ya2VkSW5XZWVrJyk/LnNldEVycm9ycyh7IGVhcm5pbmdzUmVxdWlyZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiB3b3JrIHdhcyBwZXJmb3JtZWQgYnV0IGdyb3NzRWFybmluZyBvciBob3Vyc1dvcmtlZCBpcyBtaXNzaW5nXHJcbiAgICAgICAgaWYgKCFncm9zc0Vhcm5pbmcgfHwgZ3Jvc3NFYXJuaW5nID09PSAwIHx8ICFob3Vyc1dvcmtlZCB8fCBob3Vyc1dvcmtlZCA9PT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuIHsgZWFybmluZ3NSZXF1aXJlZDogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxufSJdfQ==