@bnsights/bbsf-admin-portal 1.0.4 → 1.0.8

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 (150) hide show
  1. package/bnsights-bbsf-admin-portal-1.0.8.tgz +0 -0
  2. package/bundles/bnsights-bbsf-admin-portal.umd.js +8335 -3660
  3. package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
  4. package/esm2015/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.js +2 -2
  5. package/esm2015/lib/Pages/account/account-routing.module.js +9 -1
  6. package/esm2015/lib/Pages/account/account.component.js +15 -6
  7. package/esm2015/lib/Pages/account/account.module.js +19 -8
  8. package/esm2015/lib/Pages/account/activation/activation.component.js +91 -0
  9. package/esm2015/lib/Pages/account/forgot-password/forgot-password.component.js +54 -0
  10. package/esm2015/lib/Pages/account/rest-password/rest-password.component.js +89 -0
  11. package/esm2015/lib/Pages/account/upload-license/upload-license.component.js +70 -0
  12. package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +203 -184
  13. package/esm2015/lib/Pages/core/authentication/auth.guard.js +10 -4
  14. package/esm2015/lib/Pages/core/authentication/auth.service.js +1 -2
  15. package/esm2015/lib/Pages/departments/department/department.component.js +12 -9
  16. package/esm2015/lib/Pages/departments/department-info/department-info.component.js +1 -1
  17. package/esm2015/lib/Pages/departments/departments.module.js +6 -4
  18. package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +9 -9
  19. package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +9 -9
  20. package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +9 -9
  21. package/esm2015/lib/Pages/home/home.component.js +2 -2
  22. package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +1 -1
  23. package/esm2015/lib/Pages/jobs/jobs/jobs.component.js +1 -1
  24. package/esm2015/lib/Pages/localizations/localizations.component.js +10 -11
  25. package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +10 -10
  26. package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +5 -5
  27. package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +5 -5
  28. package/esm2015/lib/Pages/notifications/add/add.component.js +11 -13
  29. package/esm2015/lib/Pages/notifications/edit/edit.component.js +11 -13
  30. package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +1 -1
  31. package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +5 -5
  32. package/esm2015/lib/Pages/notifications/templates/templates.component.js +9 -9
  33. package/esm2015/lib/Pages/providers/provider/provider.component.js +2 -1
  34. package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +78 -84
  35. package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +1 -1
  36. package/esm2015/lib/Pages/roles/permissions/permissions.component.js +5 -5
  37. package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +5 -5
  38. package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +1 -1
  39. package/esm2015/lib/Pages/sectors/sector/sector.component.js +5 -5
  40. package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +1 -1
  41. package/esm2015/lib/Pages/shared/Enums/ConditionRHSType.js +6 -0
  42. package/esm2015/lib/Pages/shared/Enums/ConfigurationScope.js +8 -0
  43. package/esm2015/lib/Pages/shared/Enums/ConfigurationType.js +8 -0
  44. package/esm2015/lib/Pages/shared/Enums/ConfigurationValueSource.js +6 -0
  45. package/esm2015/lib/Pages/shared/Enums/WFActivityType.js +12 -0
  46. package/esm2015/lib/Pages/shared/Enums/WFVariableDataType.js +14 -0
  47. package/esm2015/lib/Pages/shared/Services/AccountService.service.js +41 -0
  48. package/esm2015/lib/Pages/shared/Services/DepartmentService.service.js +1 -1
  49. package/esm2015/lib/Pages/shared/Services/WorkFlowVersionService.service.js +24 -0
  50. package/esm2015/lib/Pages/shared/Services/WorkflowActivityService.service.js +32 -5
  51. package/esm2015/lib/Pages/shared/Services/WorkflowInstanceService.service.js +24 -0
  52. package/esm2015/lib/Pages/shared/Services/WorkflowLogVariablesService.service.js +24 -0
  53. package/esm2015/lib/Pages/shared/Services/WorkflowService.service.js +12 -4
  54. package/esm2015/lib/Pages/shared/Services/WorkflowVariablesService.service.js +12 -6
  55. package/esm2015/lib/Pages/shared/models/AccountModels/forgotPasswordModel.js +6 -0
  56. package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentModel.js +3 -2
  57. package/esm2015/lib/Pages/shared/models/UserModels/ActivationModel.js +3 -0
  58. package/esm2015/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.js +8 -0
  59. package/esm2015/lib/Pages/users/users.component.js +7 -6
  60. package/esm2015/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.js +535 -0
  61. package/esm2015/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.js +852 -0
  62. package/esm2015/lib/Pages/workflows/instance-info/instance-info.component.js +309 -0
  63. package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +611 -430
  64. package/esm2015/lib/Pages/workflows/version-info/version-info.component.js +143 -0
  65. package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +136 -148
  66. package/esm2015/lib/Pages/workflows/workflows-routing.module.js +9 -1
  67. package/esm2015/lib/Pages/workflows/workflows.module.js +7 -3
  68. package/esm2015/lib/masterlayout.component.js +1 -2
  69. package/esm2015/lib/masterlayout.module.js +2 -4
  70. package/esm2015/public-api.js +2 -1
  71. package/fesm2015/bnsights-bbsf-admin-portal.js +7678 -3098
  72. package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
  73. package/lib/Pages/account/account.component.d.ts +5 -1
  74. package/lib/Pages/account/account.module.d.ts +11 -6
  75. package/lib/Pages/account/activation/activation.component.d.ts +32 -0
  76. package/lib/Pages/account/forgot-password/forgot-password.component.d.ts +23 -0
  77. package/lib/Pages/account/rest-password/rest-password.component.d.ts +32 -0
  78. package/lib/Pages/account/upload-license/upload-license.component.d.ts +25 -0
  79. package/lib/Pages/configurations/configuration/configuration.component.d.ts +12 -8
  80. package/lib/Pages/core/authentication/auth.guard.d.ts +1 -0
  81. package/lib/Pages/departments/department/department.component.d.ts +3 -2
  82. package/lib/Pages/departments/department-info/department-info.component.d.ts +1 -1
  83. package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +1 -1
  84. package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +1 -1
  85. package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +1 -1
  86. package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +1 -1
  87. package/lib/Pages/jobs/jobs/jobs.component.d.ts +6 -6
  88. package/lib/Pages/localizations/localizations.component.d.ts +1 -1
  89. package/lib/Pages/lookups/lookup/lookup.component.d.ts +1 -1
  90. package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +1 -1
  91. package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +1 -1
  92. package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +1 -1
  93. package/lib/Pages/notifications/templates/templates.component.d.ts +1 -1
  94. package/lib/Pages/providers/provider/provider.component.d.ts +1 -1
  95. package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +12 -15
  96. package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +1 -1
  97. package/lib/Pages/roles/permissions/permissions.component.d.ts +1 -1
  98. package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +1 -1
  99. package/lib/Pages/sectors/department-info/department-info.component.d.ts +1 -1
  100. package/lib/Pages/sectors/sector/sector.component.d.ts +1 -1
  101. package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +1 -1
  102. package/lib/Pages/shared/Enums/ConditionRHSType.d.ts +4 -0
  103. package/lib/Pages/shared/Enums/ConfigurationScope.d.ts +5 -0
  104. package/lib/Pages/shared/Enums/ConfigurationType.d.ts +6 -0
  105. package/lib/Pages/shared/Enums/ConfigurationValueSource.d.ts +4 -0
  106. package/lib/Pages/shared/Enums/WFActivityType.d.ts +10 -0
  107. package/lib/Pages/shared/Enums/WFVariableDataType.d.ts +12 -0
  108. package/lib/Pages/shared/Services/AccountService.service.d.ts +17 -0
  109. package/lib/Pages/shared/Services/ActiveDirectoryService.service.d.ts +8 -8
  110. package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +7 -7
  111. package/lib/Pages/shared/Services/DepartmentService.service.d.ts +7 -7
  112. package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +5 -5
  113. package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +8 -8
  114. package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +5 -5
  115. package/lib/Pages/shared/Services/JobsService.service.d.ts +1 -1
  116. package/lib/Pages/shared/Services/LicenseService.service.d.ts +2 -2
  117. package/lib/Pages/shared/Services/LogsService.d.ts +1 -1
  118. package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +4 -4
  119. package/lib/Pages/shared/Services/LookupService.service.d.ts +14 -14
  120. package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +8 -8
  121. package/lib/Pages/shared/Services/PermissionsService.service.d.ts +5 -5
  122. package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +6 -6
  123. package/lib/Pages/shared/Services/SectorService.service.d.ts +7 -7
  124. package/lib/Pages/shared/Services/TemplateService.service.d.ts +20 -20
  125. package/lib/Pages/shared/Services/WorkFlowVersionService.service.d.ts +10 -0
  126. package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +9 -3
  127. package/lib/Pages/shared/Services/WorkflowInstanceService.service.d.ts +10 -0
  128. package/lib/Pages/shared/Services/WorkflowLogVariablesService.service.d.ts +10 -0
  129. package/lib/Pages/shared/Services/WorkflowService.service.d.ts +5 -3
  130. package/lib/Pages/shared/Services/WorkflowVariablesService.service.d.ts +5 -4
  131. package/lib/Pages/shared/Services/localizationsService.service .d.ts +12 -12
  132. package/lib/Pages/shared/Services/provider.service.d.ts +10 -10
  133. package/lib/Pages/shared/Services/userService.service.d.ts +14 -14
  134. package/lib/Pages/shared/models/AccountModels/forgotPasswordModel.d.ts +3 -0
  135. package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +9 -8
  136. package/lib/Pages/shared/models/UserModels/ActivationModel.d.ts +10 -0
  137. package/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.d.ts +13 -0
  138. package/lib/Pages/users/users.component.d.ts +1 -1
  139. package/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.d.ts +77 -0
  140. package/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.d.ts +83 -0
  141. package/lib/Pages/workflows/instance-info/instance-info.component.d.ts +81 -0
  142. package/lib/Pages/workflows/tabs/tabs.component.d.ts +73 -80
  143. package/lib/Pages/workflows/version-info/version-info.component.d.ts +41 -0
  144. package/lib/Pages/workflows/workflow/workflow.component.d.ts +26 -29
  145. package/lib/Pages/workflows/workflows.module.d.ts +19 -15
  146. package/package.json +5 -3
  147. package/public-api.d.ts +1 -0
  148. package/src/lib/assets/sass/core/components/_variables.scss +1 -1
  149. package/src/lib/assets/sass/custom-styles-rtl.scss +5 -0
  150. package/src/lib/assets/sass/custom-styles.scss +38 -0
@@ -451,4 +451,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
451
451
  type: ViewChild,
452
452
  args: ['ConfirmationModalControl', { static: false }]
453
453
  }] } });
454
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wZXJzb25hdGlvbi1ydWxlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2ltcGVyc29uYXRpb24tcnVsZXMvaW1wZXJzb25hdGlvbi1ydWxlcy9pbXBlcnNvbmF0aW9uLXJ1bGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaW1wZXJzb25hdGlvbi1ydWxlcy9pbXBlcnNvbmF0aW9uLXJ1bGVzL2ltcGVyc29uYXRpb24tcnVsZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbFQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFFNUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU9yRSxNQUFNLE9BQU8sMkJBQTJCO0lBNkR0QyxZQUFvQixXQUF3QixFQUFVLGVBQWdDLEVBQVMsY0FBOEIsRUFDbkgsb0JBQTBDLEVBQVUsa0JBQXNDLEVBQzFGLHdCQUFrRCxFQUFVLFlBQXNCLEVBQVUscUJBQTRDO1FBRjlILGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ25ILHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQzFGLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUE5RGxKLG1CQUFtQjtRQUNuQixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxXQUFNLEdBQUcsK0JBQStCLENBQUE7UUFLeEMsc0JBQWlCLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsOEJBQXlCLEdBQVUsRUFBRSxDQUFDO1FBQ3RDLDJCQUFzQixHQUFVLEVBQUUsQ0FBQztRQUVuQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUdoQyxnQkFBZ0I7UUFDaEIsc0JBQWlCLEdBQVUsRUFBRSxDQUFDO1FBQzlCLHdCQUFtQixHQUFVLEVBQUUsQ0FBQztRQUVoQyxvQkFBb0I7UUFDcEIseUJBQW9CLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekMsZ0NBQTJCLEdBQUcsSUFBSSxXQUFXLENBQUM7UUFTOUMsZ0NBQTJCLEdBQVMsS0FBSyxDQUFDO1FBQzFDLGtDQUE2QixHQUFTLEtBQUssQ0FBQztRQUM1QyxxQ0FBZ0MsR0FBUyxLQUFLLENBQUM7UUFDL0MsdUNBQWtDLEdBQVMsS0FBSyxDQUFDO1FBR2pELHFCQUFxQjtRQUNyQiwwQkFBcUIsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyxpQ0FBNEIsR0FBRyxJQUFJLFdBQVcsQ0FBQztRQVMvQyxpQ0FBNEIsR0FBUyxLQUFLLENBQUM7UUFDM0MsbUNBQThCLEdBQVMsS0FBSyxDQUFDO1FBQzdDLHNDQUFpQyxHQUFTLEtBQUssQ0FBQztRQUNoRCx3Q0FBbUMsR0FBUyxLQUFLLENBQUM7UUFRbEQsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBdUtyQyxpQ0FBNEIsR0FBRyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxVQUFVLEdBQVUsRUFBRSxDQUFDO1lBQzNCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7WUFFbEQsSUFBSSxRQUFRLEdBQTJCLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUNwRSxRQUFRLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1lBQ2xHLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLDZCQUE2QixDQUFDLENBQUE7WUFDNUcsUUFBUSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFBO1lBQzdDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQTtZQUMzQyxJQUFJLFdBQVcsQ0FBQyw4QkFBOEIsSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLDhCQUE4QixJQUFJLFNBQVM7Z0JBQy9HLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsQ0FBQTs7Z0JBRWxHLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO1lBQzFHLElBQUksV0FBVyxDQUFDLHlCQUF5QixJQUFJLElBQUksSUFBSSxXQUFXLENBQUMseUJBQXlCLElBQUksU0FBUztnQkFDckcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFBOztnQkFFeEYsUUFBUSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUE7WUFDaEcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQixPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUE7UUFFRCxvQ0FBK0IsR0FBRyxDQUFDLFFBQVEsRUFBbUIsRUFBRTtZQUM5RCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNyRSxDQUFDLENBQUE7UUEwS0Qsa0NBQTZCLEdBQUcsR0FBRyxFQUFFO1lBQ25DLElBQUksVUFBVSxHQUFVLEVBQUUsQ0FBQztZQUMzQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO1lBRW5ELElBQUksU0FBUyxHQUEyQixJQUFJLHNCQUFzQixFQUFFLENBQUM7WUFDckUsU0FBUyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFBO1lBQ25DLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFBO1lBQ3RFLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFBO1lBQzVELFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLENBQUE7WUFDcEcsU0FBUyxDQUFDLHlCQUF5QixDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsOEJBQThCLENBQUMsQ0FBQTtZQUM5RyxTQUFTLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUE7WUFDL0MsU0FBUyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFBO1lBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6QixJQUFJLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsSUFBSSxlQUFlLENBQUMsSUFBSTtnQkFDbkYsU0FBUyxDQUFDLHlCQUF5QixDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLCtCQUErQixDQUFDLEdBQUcsQ0FBQyxDQUFBOztnQkFFcEcsU0FBUyxDQUFDLHlCQUF5QixDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLGdDQUFnQyxDQUFDLENBQUE7WUFDNUcsSUFBSSxTQUFTLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLElBQUksZUFBZSxDQUFDLElBQUk7Z0JBQzlFLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQTs7Z0JBRTFGLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO1lBQ2xHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0IsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFBO1FBRUQscUNBQWdDLEdBQUcsQ0FBQyxTQUFTLEVBQW1CLEVBQUU7WUFDaEUsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDdkUsQ0FBQyxDQUFBO1FBc0RELHdCQUFtQixHQUFHLENBQUMsRUFBVSxFQUFtQixFQUFFO1lBQ3BELE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQTtJQXRiRCxDQUFDO0lBRUssUUFBUTs7WUFDWixJQUFJLENBQUMsZUFBZSxHQUFDLElBQUksQ0FBQztZQUMxQixlQUFlLENBQUMsU0FBUyxHQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtZQUNwRixlQUFlLENBQUMsZUFBZSxHQUFDO2dCQUM3QixFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFHLElBQUksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDO2dCQUNoSCxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7YUFFM0QsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixDQUFDLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDO0tBQUE7SUFFRCxjQUFjO1FBQ1osZUFBZTtRQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUE7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFBO1FBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUE7UUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUVyRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFBO1FBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEdBQUcsWUFBWSxDQUFBO1FBQ3ZELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFBO1FBRXBELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyw4QkFBOEIsQ0FBQztRQUN0RixJQUFJLENBQUMsbUJBQW1CLENBQUMsNkJBQTZCLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUMxRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQ3pELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO1FBQ3RGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsMEJBQTBCLENBQUMsTUFBTTtRQUMvQixJQUFJLENBQUMseUJBQXlCLEdBQUcsTUFBTSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBVztRQUMxQixJQUFJLFdBQVc7WUFDYixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FDOUQsVUFBVSxJQUFJO2dCQUNaLElBQUkscUJBQXFCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQztnQkFDdEUsSUFBSSwwQkFBMEIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDO2dCQUNoRixPQUFPLENBQ0wscUJBQXFCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7dUJBQzVFLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO3VCQUM5RSwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQzt1QkFDbkYsMEJBQTBCLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVGLENBQUMsQ0FBQyxDQUFBOztZQUVKLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUM7SUFDakUsQ0FBQztJQUVELGtDQUFrQztJQUNsQyx5QkFBeUIsQ0FBQyxxQkFBcUI7UUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwRSxJQUFJLGFBQWEsR0FBRyxNQUFhLENBQUM7WUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUM7WUFDdEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQztZQUM3RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFN0MsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUE7WUFDdEUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztZQUN0RixJQUFJLENBQUMsMkJBQTJCLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDO1lBQzlGLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQTtZQUVyRSxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsS0FBSyxDQUFDO1lBQzlDLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxLQUFLLENBQUM7WUFDaEQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEtBQUssQ0FBQTtZQUN4QyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFBO1lBRTFDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEdBQUcsMEJBQTBCLENBQUE7WUFDL0QsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQTtZQUNoRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUNuRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQTtZQUNuRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUNyRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ3ZELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRWhELElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEdBQUcsK0JBQStCLENBQUE7WUFDekUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFFBQVEsR0FBRyw0QkFBNEIsQ0FBQTtZQUMxRSxJQUFJLENBQUMsNkJBQTZCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUN4RCxJQUFJLENBQUMsNkJBQTZCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQTtZQUN4RSxJQUFJLENBQUMsNkJBQTZCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUMxRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzVELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRXJELElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEdBQUcsNEJBQTRCLENBQUE7WUFDbkUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsR0FBRyx5QkFBeUIsQ0FBQTtZQUNwRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUNyRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQTtZQUNuRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUN2RCxJQUFJLENBQUMsMEJBQTBCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ3pELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRWxELElBQUksQ0FBQywrQkFBK0IsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLEdBQUcsaUNBQWlDLENBQUE7WUFDN0UsSUFBSSxDQUFDLCtCQUErQixDQUFDLFVBQVUsR0FBRyw4QkFBOEIsQ0FBQTtZQUNoRixJQUFJLENBQUMsK0JBQStCLENBQUMsUUFBUSxHQUFHLDhCQUE4QixDQUFBO1lBQzlFLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFELElBQUksQ0FBQywrQkFBK0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFBO1lBQ3hFLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzVELElBQUksQ0FBQywrQkFBK0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDOUQsSUFBSSxDQUFDLCtCQUErQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFFdkQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxHQUFHLDJCQUEyQixDQUFDO1lBQ2xFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1lBQ2pELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNyRCxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUNqRCxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUM1QyxJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUM7WUFDdkUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQTtZQUNqSCxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtZQUU1RixJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLEdBQUcsZ0NBQWdDLENBQUM7WUFDNUUsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7WUFDdEQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQzFELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3RELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2pELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUE7WUFDdEgsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUE7WUFFakcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQTtZQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7WUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1lBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtZQUU3QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUE7WUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFBO1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtZQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFBO1lBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUE7WUFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQTtZQUVoRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFHTCxDQUFDO0lBMkJELGlDQUFpQyxDQUFDLEdBQUc7UUFDbkMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekgseUJBQXlCO1FBRXpCLFFBQVEsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUN4QixLQUFLLGVBQWU7Z0JBQ2xCLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxLQUFLLENBQUM7Z0JBQ2hELE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLEtBQUssQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGtDQUFrQyxHQUFHLElBQUksQ0FBQztnQkFDL0MsTUFBTTtZQUVSO2dCQUNFLE1BQU07U0FDVDtJQUVILENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxHQUFHO1FBQzlCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pILHlCQUF5QjtRQUV6QixRQUFRLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDeEIsS0FBSyxlQUFlO2dCQUNsQixJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUM7Z0JBQzFDLE1BQU07WUFFUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLDBCQUEwQixDQUFDLGVBQXVCLEVBQUUsa0JBQTBCLEVBQUUsc0JBQXNCO1FBQ3BHLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBRXZDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzlGLElBQUksU0FBUyxHQUFHLE1BQWEsQ0FBQztZQUM5QixJQUFJLGFBQWEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ3BDLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztZQUVyRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFOUMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUE7WUFDeEUsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQztZQUN4RixJQUFJLENBQUMsNEJBQTRCLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQTtZQUN0RSxJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFBO1lBRTVFLElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxLQUFLLENBQUM7WUFDL0MsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLEtBQUssQ0FBQztZQUNqRCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFBO1lBQ3pDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxLQUFLLENBQUE7WUFFM0MsSUFBSSxhQUFhLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLElBQUksSUFBSSxJQUFJLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsRUFBRTtnQkFDckksSUFBSSxDQUFDLGtDQUFrQyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUN2RyxJQUFJLENBQUMsNkJBQTZCLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLENBQUM7YUFDOUY7WUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRW5DLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxhQUFhLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxhQUFhLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDO1lBQzNFLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEdBQUcsMkJBQTJCLENBQUE7WUFDakUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQTtZQUNqRSxJQUFJLENBQUMseUJBQXlCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxhQUFhLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoTixJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQTtZQUNwRSxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUN0RCxJQUFJLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ3hELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRWpELElBQUksQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLEdBQUcsZ0NBQWdDLENBQUE7WUFDM0UsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsR0FBRyw0QkFBNEIsQ0FBQTtZQUMzRSxJQUFJLENBQUMsOEJBQThCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxhQUFhLENBQUMseUJBQXlCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFBLENBQUM7WUFDM04sSUFBSSxDQUFDLDhCQUE4QixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUE7WUFDekUsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDM0QsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM3RCxJQUFJLENBQUMsOEJBQThCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUV0RCxJQUFJLCtCQUErQixDQUFDO1lBQ3BDLElBQUksZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDNUMsSUFBSSxhQUFhLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLElBQUksZUFBZSxDQUFDLElBQUksRUFBRTtnQkFDcEYsZUFBZSxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFBO2dCQUMvRCxlQUFlLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQzthQUMvRTtpQkFDSTtnQkFDSCwrQkFBK0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksYUFBYSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzVMO1lBQ0QsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksR0FBRyw2QkFBNkIsQ0FBQTtZQUNyRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxHQUFHLHlCQUF5QixDQUFBO1lBQ3JFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxhQUFhLEdBQUcsK0JBQStCLENBQUM7WUFDakYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUE7WUFDcEUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDeEQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUMxRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUVuRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEdBQUcsNEJBQTRCLENBQUM7WUFDcEUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7WUFDbEQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3RELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ2xELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDO1lBQ2hFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUE7WUFDbEgsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUE7WUFFN0YsSUFBSSxvQ0FBb0MsQ0FBQztZQUN6QyxJQUFJLG9CQUFvQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDakQsSUFBSSxhQUFhLENBQUMseUJBQXlCLENBQUMscUJBQXFCLElBQUksZUFBZSxDQUFDLElBQUksRUFBRTtnQkFDekYsb0JBQW9CLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUE7Z0JBQ3pFLG9CQUFvQixDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUM7YUFDekY7aUJBQ0k7Z0JBQ0gsb0NBQW9DLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0TTtZQUNELElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLEdBQUcsa0NBQWtDLENBQUE7WUFDL0UsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLFFBQVEsR0FBRyw4QkFBOEIsQ0FBQTtZQUMvRSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsYUFBYSxHQUFHLG9DQUFvQyxDQUFBO1lBQzFGLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFBO1lBQ3pFLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzdELElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDL0QsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFHeEQsSUFBSSxDQUFDLCtCQUErQixHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUNqRSxJQUFJLENBQUMsK0JBQStCLENBQUMsSUFBSSxHQUFHLGlDQUFpQyxDQUFDO1lBQzlFLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1lBQ3ZELElBQUksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztZQUMzRCxJQUFJLENBQUMsK0JBQStCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2RCxJQUFJLENBQUMsK0JBQStCLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFBO1lBQ3pFLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUE7WUFDdkgsSUFBSSxDQUFDLCtCQUErQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUE7WUFFbEcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQTtZQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7WUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1lBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtZQUU5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUE7WUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFBO1lBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtZQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFBO1lBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUE7WUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQTtZQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFBO1lBRWpELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFnQ0Qsa0NBQWtDLENBQUMsR0FBRztRQUNwQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6SCxRQUFRLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDeEIsS0FBSyxlQUFlO2dCQUNsQixJQUFJLENBQUMsaUNBQWlDLEdBQUcsSUFBSSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsbUNBQW1DLEdBQUcsS0FBSyxDQUFDO2dCQUNqRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxLQUFLLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxtQ0FBbUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2hELE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7SUFFSCxDQUFDO0lBRUQsNkJBQTZCLENBQUMsR0FBRztRQUMvQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6SCxRQUFRLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDeEIsS0FBSyxlQUFlO2dCQUNsQixJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsOEJBQThCLEdBQUcsS0FBSyxDQUFDO2dCQUM1QyxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUM7Z0JBQzFDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUM7Z0JBQzNDLE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLDRCQUE0QixDQUFDLG1CQUEyQjtRQUN0RCxJQUFJLENBQUMseUJBQXlCLEdBQUcsbUJBQW1CLENBQUM7UUFFckQsZ0NBQWdDO1FBQ2hDLElBQUksVUFBVSxHQUFVLEVBQUUsQ0FBQztRQUMzQixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNoRixJQUFJLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDO1FBQy9ELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUVwRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQU1ELFlBQVk7SUFDWixXQUFXO1FBQ1QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7O3lIQTNmVSwyQkFBMkI7NkdBQTNCLDJCQUEyQix1VENqQnhDLHNvV0F1T0E7NEZEdE5hLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxXQUFXLEVBQUUsc0NBQXNDO2lCQUNwRDttVUFjaUUsYUFBYTtzQkFBNUUsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBOENKLHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQXV0b2NvbXBsZXRlRFRPLCBBdXRvY29tcGxldGVPcHRpb25zLCBDaGVja0JveE9wdGlvbnMsIENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgRGF0ZVBpY2tlck9wdGlvbnMsIERyb3Bkb3duT3B0aW9ucywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgRm9yY2VEaXJlY3Rpb24sIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIFBhZ2luZ0FjdGlvbk1vZGUsIFBhZ2luZ09wdGlvbnMsIFBpY2tlclR5cGUsIFNlbGVjdE1vZGUsIFN0YXJ0VmlldywgVGV4dEJveE9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEltcGVyc29uYXRpb25SdWxlTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWwnO1xyXG5pbXBvcnQgeyBJbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9JbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYXJ0aWNpcGFudFR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvUGFydGljaXBhbnRUeXBlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWltcGVyc29uYXRpb24tcnVsZXMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBlcnNvbmF0aW9uLXJ1bGVzLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSW1wZXJzb25hdGlvblJ1bGVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgU2hvd1BhZ2VDb250ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL0ltcGVyc29uYXRpb25SdWxlL1wiXHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEltcGVyc29uYXRpb25QYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBJbXBlcnNvbmF0aW9uUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnSW1wZXJzb25hdGlvblBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDtcclxuXHJcbiAgLy9SZXF1aXJlZCBsaXN0c1xyXG4gIFBlcm1pc3Npb25TZXRMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIFBhcnRpY2lwYW50VHlwZUxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkSW1wZXJzb25hdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBBZGRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgQWRkU291cmNlUGFydGljaXBhbnRUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdDogRHJvcGRvd25PcHRpb25zO1xyXG4gIEFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3Q6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlOiBBdXRvY29tcGxldGVPcHRpb25zO1xyXG4gIEFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZTogQXV0b2NvbXBsZXRlT3B0aW9ucztcclxuICBBZGRJc0FjdGl2ZTogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEFkZEV4cGlyZXNBdDogRGF0ZVBpY2tlck9wdGlvbnM7XHJcbiAgQWRkU2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0OmJvb2xlYW49ZmFsc2U7XHJcbiAgQWRkU2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGU6Ym9vbGVhbj1mYWxzZTtcclxuICBBZGRTaG93RGVzdGluYXRpb25QZXJtaXNzaW9uTGlzdDpib29sZWFuPWZhbHNlO1xyXG4gIEFkZFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGU6Ym9vbGVhbj1mYWxzZTtcclxuXHJcblxyXG4gIC8vRWRpdCBNb2RlbCBDb250cm9sc1xyXG4gIEVkaXRJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEVkaXRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdDogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGU6IEF1dG9jb21wbGV0ZU9wdGlvbnM7XHJcbiAgRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZTogQXV0b2NvbXBsZXRlT3B0aW9ucztcclxuICBFZGl0SXNBY3RpdmU6IENoZWNrQm94T3B0aW9ucztcclxuICBFZGl0RXhwaXJlc0F0OiBEYXRlUGlja2VyT3B0aW9ucztcclxuICBFZGl0U2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0OmJvb2xlYW49ZmFsc2U7XHJcbiAgRWRpdFNob3dTb3VyY2VVc2VyQXV0b0NvbXBsZXRlOmJvb2xlYW49ZmFsc2U7XHJcbiAgRWRpdFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0OmJvb2xlYW49ZmFsc2U7XHJcbiAgRWRpdFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGU6Ym9vbGVhbj1mYWxzZTtcclxuICBJbXBlcnNvbmF0aW9uSWQ6IG51bWJlcjtcclxuICBTb3VyY2VQYXJ0aWNpcGFudElkOiBudW1iZXI7XHJcbiAgRGVzdGluYXRpb25QYXJ0aWNpcGFudElkOiBudW1iZXI7XHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZUltcGVyc29uYXRpb25SdWxlSWQ6IHN0cmluZztcclxuICBEZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSwgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBJbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2U6IEltcGVyc29uYXRpb25SdWxlU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50PXRydWU7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlPXRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkltcGVyc29uYXRpb25SdWxlc1wiKVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icz1bXHJcbiAgICAgICB7dGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIikgLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZX0sXHJcbiAgICAgICB7dGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZX1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KT0+e1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICAvLyBUZXh0Qm94IGluaXRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWVcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG5cclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5JbXBlcnNvbmF0aW9uUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0SW1wZXJzb25hdGlvblJ1bGVCeUZpbHRlcic7XHJcbiAgICB0aGlzLkltcGVyc29uYXRpb25QYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCJdXHJcbiAgICB0aGlzLkltcGVyc29uYXRpb25QYWdpbmcuRmlsdGVycyA9IFt0aGlzLlRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldEltcGVyc29uYXRpb25MaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5JbXBlcnNvbmF0aW9uUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpXHJcbiAgfVxyXG5cclxuICBzZWFyY2hDbGllbnRTaWRlKHNlYXJjaFZhbHVlKSB7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUpXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5maWx0ZXIoXHJcbiAgICAgICAgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHZhciBzb3VyY2VQYXJ0aWNpcGFudE5hbWUgPSBpdGVtLnNvdXJjZVBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50TmFtZTtcclxuICAgICAgICAgIHZhciBkZXN0aW5hdGlvblBhcnRpY2lwYW50TmFtZSA9IGl0ZW0uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudE5hbWU7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBzb3VyY2VQYXJ0aWNpcGFudE5hbWUuZW5nbGlzaC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IHNvdXJjZVBhcnRpY2lwYW50TmFtZS5hcmFiaWMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgICAgICB8fCBkZXN0aW5hdGlvblBhcnRpY2lwYW50TmFtZS5hcmFiaWMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgICAgICB8fCBkZXN0aW5hdGlvblBhcnRpY2lwYW50TmFtZS5hcmFiaWMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgfSlcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5JbXBlcnNvbmF0aW9uUGFnaW5nUmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy9BZGQgaW1wZXJzb25hdGlvbiBydWxlIGZ1bmN0aW9uc1xyXG4gIHNob3dBZGRJbXBlcnNvbmF0aW9uTW9kYWwoQWRkSW1wZXJzb25hdGlvbk1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLmxvYWRBZGREcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgRHJvcGRvd25MaXN0cyA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldExpc3QgPSBEcm9wZG93bkxpc3RzLnBlcm1pc3Npb25MaXN0O1xyXG4gICAgICB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3QgPSBEcm9wZG93bkxpc3RzLnBhcnRpY2lwYW50VHlwZUxpc3Q7XHJcbiAgICAgIHRoaXMuQWRkSW1wZXJzb25hdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG5cclxuICAgICAgdGhpcy5BZGRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5BZGRJbXBlcnNvbmF0aW9uRm9ybVxyXG4gICAgICB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRJbXBlcnNvbmF0aW9uUnVsZU1vZGVsO1xyXG4gICAgICB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZEltcGVyc29uYXRpb25SdWxlRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuQWRkSW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG5cclxuICAgICAgdGhpcy5BZGRTaG93RGVzdGluYXRpb25QZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5BZGRTaG93U291cmNlUGVybWlzc2lvbkxpc3QgPSBmYWxzZVxyXG4gICAgICB0aGlzLkFkZFNob3dTb3VyY2VVc2VyQXV0b0NvbXBsZXRlID0gZmFsc2VcclxuXHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGFydGljaXBhbnRUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5OYW1lID0gXCJBZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5MYWJlbEtleSA9IFwiU291cmNlUGFydGljaXBhbnRUeXBlXCJcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGFydGljaXBhbnRUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3RcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuTmFtZSA9IFwiQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlLkxhYmVsS2V5ID0gXCJEZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZVwiXHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5OYW1lID0gXCJBZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdFwiXHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGVybWlzc2lvblNldExpc3QuTGFiZWxLZXkgPSBcIlNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5EYXRhU291cmNlID0gdGhpcy5QZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGVybWlzc2lvblNldExpc3QuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuTmFtZSA9IFwiQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdFwiXHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5MYWJlbFZhbHVlID0gXCJEZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LkxhYmVsS2V5ID0gXCJEZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuRGF0YVNvdXJjZSA9IHRoaXMuUGVybWlzc2lvblNldExpc3RcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZSA9IG5ldyBBdXRvY29tcGxldGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5OYW1lID0gXCJBZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlXCI7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5MYWJlbEtleSA9IFwiVXNlclwiO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkVuZ2xpc2g7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5BY3Rpb25VUkwgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIHRoaXMuQXBpVXJsICsgXCJBdXRvQ29tcGxldGVVc2VyXCJcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuXHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlID0gbmV3IEF1dG9jb21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuTmFtZSA9IFwiQWRkRGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlXCI7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuQWN0aW9uVVJMID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyB0aGlzLkFwaVVybCArIFwiQXV0b0NvbXBsZXRlVXNlclwiXHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuXHJcbiAgICAgIHRoaXMuQWRkSXNBY3RpdmUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkSXNBY3RpdmUuTmFtZSA9IFwiQWRkSXNBY3RpdmVcIlxyXG4gICAgICB0aGlzLkFkZElzQWN0aXZlLkxhYmVsS2V5ID0gXCJBY3RpdmVcIlxyXG4gICAgICB0aGlzLkFkZElzQWN0aXZlLklzRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuQWRkSXNBY3RpdmUuVmFsdWUgPSB0cnVlXHJcblxyXG4gICAgICB0aGlzLkFkZEV4cGlyZXNBdCA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZEV4cGlyZXNBdC5OYW1lID0gXCJBZGRFeHBpcmVzQXRcIlxyXG4gICAgICB0aGlzLkFkZEV4cGlyZXNBdC5MYWJlbEtleSA9IFwiRXhwaXJlc0F0XCJcclxuICAgICAgdGhpcy5BZGRFeHBpcmVzQXQuSXNSZXF1aXJlZCA9IHRydWVcclxuICAgICAgdGhpcy5BZGRFeHBpcmVzQXQuU3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgIHRoaXMuQWRkRXhwaXJlc0F0LlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLkNhbGVuZGFyXHJcbiAgICAgIHRoaXMuQWRkRXhwaXJlc0F0LlNlbGVjdE1vZGUgPSBTZWxlY3RNb2RlLlNpbmdsZVxyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBZGRJbXBlcnNvbmF0aW9uTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gIH1cclxuICBnZXRBZGRJbXBlcnNvbmF0aW9uUnVsZU1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtLnZhbHVlO1xyXG5cclxuICAgIGxldCBBZGRNb2RlbDogSW1wZXJzb25hdGlvblJ1bGVNb2RlbCA9IG5ldyBJbXBlcnNvbmF0aW9uUnVsZU1vZGVsKCk7XHJcbiAgICBBZGRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuQWRkU291cmNlUGFydGljaXBhbnRUeXBlKVxyXG4gICAgQWRkTW9kZWwuRGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUpXHJcbiAgICBBZGRNb2RlbC5FeHBpcmVzQXQgPSBSZXN1bHRNb2RlbC5BZGRFeHBpcmVzQXRcclxuICAgIEFkZE1vZGVsLklzQWN0aXZlID0gUmVzdWx0TW9kZWwuQWRkSXNBY3RpdmVcclxuICAgIGlmIChSZXN1bHRNb2RlbC5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgIT0gbnVsbCAmJiBSZXN1bHRNb2RlbC5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgIT0gdW5kZWZpbmVkKVxyXG4gICAgICBBZGRNb2RlbC5EZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLlVzZXJJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUua2V5KVxyXG4gICAgZWxzZVxyXG4gICAgICBBZGRNb2RlbC5EZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLlBlcm1pc3Npb25TZXRJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0KVxyXG4gICAgaWYgKFJlc3VsdE1vZGVsLkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGUgIT0gbnVsbCAmJiBSZXN1bHRNb2RlbC5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlICE9IHVuZGVmaW5lZClcclxuICAgICAgQWRkTW9kZWwuU291cmNlUGFydGljaXBhbnREVE8uVXNlcklEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGUua2V5KVxyXG4gICAgZWxzZVxyXG4gICAgICBBZGRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuQWRkU291cmNlUGVybWlzc2lvblNldExpc3QpXHJcbiAgICBwYXJhbUFycmF5LnB1c2goQWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRJbXBlcnNvbmF0aW9uUnVsZUZ1bmN0aW9uID0gKEFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkltcGVyc29uYXRpb25SdWxlU2VydmljZS5hZGRJbXBlcnNvbmF0aW9uUnVsZShBZGRNb2RlbClcclxuICB9XHJcblxyXG5cclxuICBhZGREZXN0aW5hdGlvblBhcnRpY2lwYW50T25DaGFuZ2Uoa2V5KSB7XHJcbiAgICBsZXQgc291cmNlSXRlbSA9IHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSBrZXk7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbSlbMF07XHJcbiAgICAvL2NvbnNvbGUubG9nKHNvdXJjZUl0ZW0pXHJcblxyXG4gICAgc3dpdGNoIChzb3VyY2VJdGVtLnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgXCJQZXJtaXNzaW9uU2V0XCI6XHJcbiAgICAgICAgdGhpcy5BZGRTaG93RGVzdGluYXRpb25QZXJtaXNzaW9uTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5BZGRTaG93RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJVc2VyXCI6XHJcbiAgICAgICAgdGhpcy5BZGRTaG93RGVzdGluYXRpb25QZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuQWRkU2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGFkZFNvdXJjZVBhcnRpY2lwYW50T25DaGFuZ2Uoa2V5KSB7XHJcbiAgICBsZXQgc291cmNlSXRlbSA9IHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSBrZXk7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbSlbMF07XHJcbiAgICAvL2NvbnNvbGUubG9nKHNvdXJjZUl0ZW0pXHJcblxyXG4gICAgc3dpdGNoIChzb3VyY2VJdGVtLnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgXCJQZXJtaXNzaW9uU2V0XCI6XHJcbiAgICAgICAgdGhpcy5BZGRTaG93U291cmNlUGVybWlzc2lvbkxpc3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQWRkU2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlVzZXJcIjpcclxuICAgICAgICB0aGlzLkFkZFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuQWRkU2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRWRpdCBpbXBlcnNvbmF0aW9uIHJ1bGUgZnVuY3Rpb25zXHJcbiAgc2hvd0VkaXRJbXBlcnNvbmF0aW9uTW9kYWwoaW1wZXJzb25hdGlvbklEOiBudW1iZXIsIGltcGVyc29uYXRpb25JREVuYzogc3RyaW5nLCBlZGl0SW1wZXJzb25hdGlvbk1vZGFsKSB7XHJcbiAgICB0aGlzLkltcGVyc29uYXRpb25JZCA9IGltcGVyc29uYXRpb25JRDtcclxuXHJcbiAgICB0aGlzLkltcGVyc29uYXRpb25SdWxlU2VydmljZS5nZXRFZGl0SW1wZXJzb25hdGlvblJ1bGUoaW1wZXJzb25hdGlvbklERW5jKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IGltcGVyc29uYXRpb24gPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIGxldCBsaXN0cyA9IHJlc3VsdE9iai5saXN0cztcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0TGlzdCA9IGxpc3RzLnBlcm1pc3Npb25MaXN0O1xyXG4gICAgICB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3QgPSBsaXN0cy5wYXJ0aWNpcGFudFR5cGVMaXN0O1xyXG5cclxuICAgICAgdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG5cclxuICAgICAgdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkVkaXRJbXBlcnNvbmF0aW9uRm9ybVxyXG4gICAgICB0aGlzLkVkaXRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEltcGVyc29uYXRpb25SdWxlTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRJbXBlcnNvbmF0aW9uUnVsZUZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkVkaXRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcbiAgICAgIHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGVcclxuXHJcbiAgICAgIHRoaXMuRWRpdFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuRWRpdFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5FZGl0U2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0ID0gZmFsc2VcclxuICAgICAgdGhpcy5FZGl0U2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZVxyXG5cclxuICAgICAgaWYgKGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbUlEICE9IG51bGwgJiYgaW1wZXJzb25hdGlvbi5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50VHlwZUl0ZW1JRCkge1xyXG4gICAgICAgIHRoaXMuZWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRPbkNoYW5nZShpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbUlEKTtcclxuICAgICAgICB0aGlzLmVkaXRTb3VyY2VQYXJ0aWNpcGFudE9uQ2hhbmdlKGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbUlEKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuXHJcbiAgICAgIHRoaXMuU291cmNlUGFydGljaXBhbnRJZCA9IGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8uaWQ7XHJcbiAgICAgIHRoaXMuRGVzdGluYXRpb25QYXJ0aWNpcGFudElkID0gaW1wZXJzb25hdGlvbi5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLmlkO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5OYW1lID0gXCJFZGl0U291cmNlUGFydGljaXBhbnRUeXBlXCJcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGFydGljaXBhbnRUeXBlLkxhYmVsS2V5ID0gXCJTb3VyY2VQYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSBpbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50VHlwZUl0ZW1JRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5EYXRhU291cmNlID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuTmFtZSA9IFwiRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlXCJcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuTGFiZWxLZXkgPSBcIkRlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlXCJcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTs7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3RcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBzb3VyY2VQZXJtaXNzaW9uU2V0U2VsZWN0ZWRJdGVtO1xyXG4gICAgICBsZXQgc291cmNlVXNlck1vZGVsID0gbmV3IEF1dG9jb21wbGV0ZURUTygpO1xyXG4gICAgICBpZiAoaW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQgPT0gUGFydGljaXBhbnRUeXBlLlVzZXIpIHtcclxuICAgICAgICBzb3VyY2VVc2VyTW9kZWwua2V5ID0gaW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy51c2VySURcclxuICAgICAgICBzb3VyY2VVc2VyTW9kZWwudmFsdWUgPSBpbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50TmFtZVN0cjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBzb3VyY2VQZXJtaXNzaW9uU2V0U2VsZWN0ZWRJdGVtID0gdGhpcy5QZXJtaXNzaW9uU2V0TGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSBpbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnBlcm1pc3Npb25TZXRJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0Lk5hbWUgPSBcIkVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdFwiXHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LkxhYmVsS2V5ID0gXCJTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdFwiXHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LlNlbGVjdGVkSXRlbXMgPSBzb3VyY2VQZXJtaXNzaW9uU2V0U2VsZWN0ZWRJdGVtO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5EYXRhU291cmNlID0gdGhpcy5QZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5FZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IG5ldyBBdXRvY29tcGxldGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuTmFtZSA9IFwiRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGVcIjtcclxuICAgICAgdGhpcy5FZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZS5MYWJlbEtleSA9IFwiVXNlclwiO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5FZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZS5TZWxlY3RlZFZhbHVlID0gc291cmNlVXNlck1vZGVsO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkFjdGlvblVSTCA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgdGhpcy5BcGlVcmwgKyBcIkF1dG9Db21wbGV0ZVVzZXJcIlxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuXHJcbiAgICAgIGxldCBkZXN0aW5hdGlvblBlcm1pc3Npb25TZXRTZWxlY3RlZEl0ZW07XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvblVzZXJNb2RlbCA9IG5ldyBBdXRvY29tcGxldGVEVE8oKTtcclxuICAgICAgaWYgKGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQgPT0gUGFydGljaXBhbnRUeXBlLlVzZXIpIHtcclxuICAgICAgICBkZXN0aW5hdGlvblVzZXJNb2RlbC5rZXkgPSBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8udXNlcklEXHJcbiAgICAgICAgZGVzdGluYXRpb25Vc2VyTW9kZWwudmFsdWUgPSBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8ucGFydGljaXBhbnROYW1lU3RyO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGRlc3RpbmF0aW9uUGVybWlzc2lvblNldFNlbGVjdGVkSXRlbSA9IHRoaXMuUGVybWlzc2lvblNldExpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0gaW1wZXJzb25hdGlvbi5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBlcm1pc3Npb25TZXRJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5OYW1lID0gXCJFZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdFwiXHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuTGFiZWxLZXkgPSBcIkRlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3RcIlxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LlNlbGVjdGVkSXRlbXMgPSBkZXN0aW5hdGlvblBlcm1pc3Npb25TZXRTZWxlY3RlZEl0ZW1cclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5EYXRhU291cmNlID0gdGhpcy5QZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSA9IG5ldyBBdXRvY29tcGxldGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5OYW1lID0gXCJFZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5MYWJlbEtleSA9IFwiVXNlclwiO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5TZWxlY3RlZFZhbHVlID0gZGVzdGluYXRpb25Vc2VyTW9kZWxcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLkFjdGlvblVSTCA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgdGhpcy5BcGlVcmwgKyBcIkF1dG9Db21wbGV0ZVVzZXJcIlxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgICAgdGhpcy5FZGl0SXNBY3RpdmUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdElzQWN0aXZlLk5hbWUgPSBcIkVkaXRJc0FjdGl2ZVwiXHJcbiAgICAgIHRoaXMuRWRpdElzQWN0aXZlLkxhYmVsS2V5ID0gXCJBY3RpdmVcIlxyXG4gICAgICB0aGlzLkVkaXRJc0FjdGl2ZS5Jc0Rpc2FibGVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLkVkaXRJc0FjdGl2ZS5WYWx1ZSA9IHRydWVcclxuXHJcbiAgICAgIHRoaXMuRWRpdEV4cGlyZXNBdCA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRFeHBpcmVzQXQuTmFtZSA9IFwiRWRpdEV4cGlyZXNBdFwiXHJcbiAgICAgIHRoaXMuRWRpdEV4cGlyZXNBdC5MYWJlbEtleSA9IFwiRXhwaXJlc0F0XCJcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LklzUmVxdWlyZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuRWRpdEV4cGlyZXNBdC5WYWx1ZSA9IGltcGVyc29uYXRpb24uZXhwaXJlc0F0XHJcbiAgICAgIHRoaXMuRWRpdEV4cGlyZXNBdC5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLkNhbGVuZGFyXHJcbiAgICAgIHRoaXMuRWRpdEV4cGlyZXNBdC5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oZWRpdEltcGVyc29uYXRpb25Nb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEltcGVyc29uYXRpb25SdWxlTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtLnZhbHVlO1xyXG5cclxuICAgIGxldCBFZGl0TW9kZWw6IEltcGVyc29uYXRpb25SdWxlTW9kZWwgPSBuZXcgSW1wZXJzb25hdGlvblJ1bGVNb2RlbCgpO1xyXG4gICAgRWRpdE1vZGVsLklEID0gdGhpcy5JbXBlcnNvbmF0aW9uSWRcclxuICAgIEVkaXRNb2RlbC5EZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLklEID0gdGhpcy5EZXN0aW5hdGlvblBhcnRpY2lwYW50SWRcclxuICAgIEVkaXRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5JRCA9IHRoaXMuU291cmNlUGFydGljaXBhbnRJZFxyXG4gICAgRWRpdE1vZGVsLlNvdXJjZVBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9IE51bWJlcihSZXN1bHRNb2RlbC5FZGl0U291cmNlUGFydGljaXBhbnRUeXBlKVxyXG4gICAgRWRpdE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZSlcclxuICAgIEVkaXRNb2RlbC5FeHBpcmVzQXQgPSBSZXN1bHRNb2RlbC5FZGl0RXhwaXJlc0F0XHJcbiAgICBFZGl0TW9kZWwuSXNBY3RpdmUgPSBSZXN1bHRNb2RlbC5FZGl0SXNBY3RpdmVcclxuICAgIGNvbnNvbGUubG9nKFwiRGF0YTpcIik7XHJcbiAgICBjb25zb2xlLmxvZyhSZXN1bHRNb2RlbCk7XHJcbiAgICBpZiAoRWRpdE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEID09IFBhcnRpY2lwYW50VHlwZS5Vc2VyKVxyXG4gICAgICBFZGl0TW9kZWwuRGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5Vc2VySUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5rZXkpXHJcbiAgICBlbHNlXHJcbiAgICAgIEVkaXRNb2RlbC5EZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLlBlcm1pc3Npb25TZXRJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5FZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdClcclxuICAgIGlmIChFZGl0TW9kZWwuU291cmNlUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEID09IFBhcnRpY2lwYW50VHlwZS5Vc2VyKVxyXG4gICAgICBFZGl0TW9kZWwuU291cmNlUGFydGljaXBhbnREVE8uVXNlcklEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLmtleSlcclxuICAgIGVsc2VcclxuICAgICAgRWRpdE1vZGVsLlNvdXJjZVBhcnRpY2lwYW50RFRPLlBlcm1pc3Npb25TZXRJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QpXHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEltcGVyc29uYXRpb25SdWxlRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkltcGVyc29uYXRpb25SdWxlU2VydmljZS5lZGl0SW1wZXJzb25hdGlvblJ1bGUoRWRpdE1vZGVsKVxyXG4gIH1cclxuXHJcbiAgZWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRPbkNoYW5nZShrZXkpIHtcclxuICAgIGxldCBzb3VyY2VJdGVtID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGtleTsgfSkubWFwKChpdGVtKSA9PiBpdGVtKVswXTtcclxuICAgIHN3aXRjaCAoc291cmNlSXRlbS52YWx1ZSkge1xyXG4gICAgICBjYXNlIFwiUGVybWlzc2lvblNldFwiOlxyXG4gICAgICAgIHRoaXMuRWRpdFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkVkaXRTaG93RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJVc2VyXCI6XHJcbiAgICAgICAgdGhpcy5FZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLkVkaXRTaG93RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBlZGl0U291cmNlUGFydGljaXBhbnRPbkNoYW5nZShrZXkpIHtcclxuICAgIGxldCBzb3VyY2VJdGVtID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGtleTsgfSkubWFwKChpdGVtKSA9PiBpdGVtKVswXTtcclxuICAgIHN3aXRjaCAoc291cmNlSXRlbS52YWx1ZSkge1xyXG4gICAgICBjYXNlIFwiUGVybWlzc2lvblNldFwiOlxyXG4gICAgICAgIHRoaXMuRWRpdFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5FZGl0U2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlVzZXJcIjpcclxuICAgICAgICB0aGlzLkVkaXRTaG93U291cmNlUGVybWlzc2lvbkxpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLkVkaXRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0RlbGV0ZSBJbXBlcnNvbmF0aW9uUnVsZVxyXG4gIHNob3dEZWxldGVJbXBlcnNvbmF0aW9uTW9kYWwoaW1wZXJzb25hdGlvblJ1bGVJRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUltcGVyc29uYXRpb25SdWxlSWQgPSBpbXBlcnNvbmF0aW9uUnVsZUlEO1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaCh0aGlzLmRlbGV0ZUltcGVyc29uYXRpb25SdWxlSWQpO1xyXG5cclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZUltcGVyc29uYXRpb247XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuU2VydmljZVN1Ym1pdE1vZGVsID0gcGFyYW1BcnJheTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5kZWxldGVDb250cm9sTG9hZGVkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93TW9kYWwoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJbXBlcnNvbmF0aW9uID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLmRlbGV0ZUltcGVyc29uYXRpb25SdWxlKGlkKTtcclxuICB9XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiAqbmdJZj1cIlNob3dQYWdlQ29udGVudFwiIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCAoT25DaGFuZ2UpPVwic2VhcmNoQ2xpZW50U2lkZSgkZXZlbnQpXCIgW29wdGlvbnNdPVwic2VhcmNoVGV4dEJveFwiIFtncm91cF09XCJJbXBlcnNvbmF0aW9uRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICA8IS0tIGJlZ2luOjpNZW51IC0tPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIHRpdGxlPVwiQWRkXCIgKGNsaWNrKT1cInNob3dBZGRJbXBlcnNvbmF0aW9uTW9kYWwoQWRkSW1wZXJzb25hdGlvbk1vZGFsKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPCEtLSBlbmQ6Ok1lbnUgLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICA8IS0tYmVnaW46OlBlcm1pc3Npb24gbGlzdC0tPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcblxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+IFt7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYXJ0aWNpcGFudFR5cGVcIil9fV17e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTb3VyY2VcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj4gW3t7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBhcnRpY2lwYW50VHlwZVwiKX19XXt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlc3RpbmF0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRXhwaXJlc0F0XCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcblxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IEltcGVyc29uYXRpb24gb2YgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdFwiPlxyXG5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFya1wiPlxyXG4gICAgICAgICAgICAgICAgICBbe3tJbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50VHlwZUl0ZW1OYW1lU3RyfX1dIHt7SW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudE5hbWVTdHJ9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD4gIFt7e0ltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtTmFtZVN0cn19XSB7e0ltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudE5hbWVTdHJ9fTwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgIDx0ZD57e0ltcGVyc29uYXRpb24uZXhwaXJlc0F0fX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57e0ltcGVyc29uYXRpb24uaXNBY3RpdmV9fTwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0SW1wZXJzb25hdGlvbk1vZGFsKEltcGVyc29uYXRpb24uaWQsSW1wZXJzb25hdGlvbi5pZEVuY3J5cHRlZCxFZGl0SW1wZXJzb25hdGlvbk1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlSW1wZXJzb25hdGlvbk1vZGFsKEltcGVyc29uYXRpb24uaWRFbmNyeXB0ZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVsZXRlXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgPCEtLWVuZDo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0SW1wZXJzb25hdGlvbkxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiSW1wZXJzb25hdGlvblBhZ2luZ1wiIFtncm91cF09XCJJbXBlcnNvbmF0aW9uRm9ybVwiICNJbXBlcnNvbmF0aW9uUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG48IS0tIEFkZCBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNBZGRJbXBlcnNvbmF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkltcGVyc29uYXRpb25SdWxlXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJBZGRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnNcIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiQWRkU291cmNlUGFydGljaXBhbnRUeXBlXCIgKE9uQ2hhbmdlKT1cImFkZFNvdXJjZVBhcnRpY2lwYW50T25DaGFuZ2UoJGV2ZW50KVwiIFtncm91cF09XCJBZGRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiQWRkU291cmNlUGVybWlzc2lvblNldExpc3RcIiAqbmdJZj1cIkFkZFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdFwiIFtncm91cF09XCJBZGRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1BdXRvY29tcGxldGVUZXh0Qm94IFtvcHRpb25zXT1cIkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGVcIiAqbmdJZj1cIkFkZFNob3dTb3VyY2VVc2VyQXV0b0NvbXBsZXRlXCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQXV0b2NvbXBsZXRlVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlXCIgKE9uQ2hhbmdlKT1cImFkZERlc3RpbmF0aW9uUGFydGljaXBhbnRPbkNoYW5nZSgkZXZlbnQpXCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJBZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0XCIgKm5nSWY9XCJBZGRTaG93RGVzdGluYXRpb25QZXJtaXNzaW9uTGlzdFwiIFtncm91cF09XCJBZGRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1BdXRvY29tcGxldGVUZXh0Qm94IFtvcHRpb25zXT1cIkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZVwiICpuZ0lmPVwiQWRkU2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZVwiIFtncm91cF09XCJBZGRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUF1dG9jb21wbGV0ZVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiQWRkSXNBY3RpdmVcIiBbZ3JvdXBdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRGF0ZVRpbWVQaWNrZXIgW29wdGlvbnNdPVwiQWRkRXhwaXJlc0F0XCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcblxyXG4gICAgICAgICAgPC9CQlNGLURhdGVUaW1lUGlja2VyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uIENsb3NlSW1wZXJzb25hdGlvbk1vZGFsIGlkPVwiQ2xvc2VJbXBlcnNvbmF0aW9uTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLUVkaXQgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNFZGl0SW1wZXJzb25hdGlvbk1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW1wZXJzb25hdGlvblJ1bGVcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGVcIiAoT25DaGFuZ2UpPVwiZWRpdFNvdXJjZVBhcnRpY2lwYW50T25DaGFuZ2UoJGV2ZW50KVwiIFtncm91cF09XCJFZGl0SW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdFwiICpuZ0lmPVwiRWRpdFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdFwiIFtncm91cF09XCJFZGl0SW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQXV0b2NvbXBsZXRlVGV4dEJveCBbb3B0aW9uc109XCJFZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZVwiICpuZ0lmPVwiRWRpdFNob3dTb3VyY2VVc2VyQXV0b0NvbXBsZXRlXCIgW2dyb3VwXT1cIkVkaXRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUF1dG9jb21wbGV0ZVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZVwiIChPbkNoYW5nZSk9XCJlZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudE9uQ2hhbmdlKCRldmVudClcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdFwiICpuZ0lmPVwiRWRpdFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkVkaXRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1BdXRvY29tcGxldGVUZXh0Qm94IFtvcHRpb25zXT1cIkVkaXREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGVcIiAqbmdJZj1cIkVkaXRTaG93RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlXCIgW2dyb3VwXT1cIkVkaXRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUF1dG9jb21wbGV0ZVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiRWRpdElzQWN0aXZlXCIgW2dyb3VwXT1cIkVkaXRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1EYXRlVGltZVBpY2tlciBbb3B0aW9uc109XCJFZGl0RXhwaXJlc0F0XCIgW2dyb3VwXT1cIkVkaXRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG5cclxuICAgICAgICAgIDwvQkJTRi1EYXRlVGltZVBpY2tlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VFZGl0SW1wZXJzb25hdGlvbk1vZGFsIGlkPVwiQ2xvc2VFZGl0SW1wZXJzb25hdGlvbk1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtICBtZS0zXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG48IS0tZGVsZXRlIE1vZGFsLS0+XHJcbjxCQlNGLUNvbmZpcm1hdGlvbk1vZGFsICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cIkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cIkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbFwiICNDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuIl19
454
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wZXJzb25hdGlvbi1ydWxlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2ltcGVyc29uYXRpb24tcnVsZXMvaW1wZXJzb25hdGlvbi1ydWxlcy9pbXBlcnNvbmF0aW9uLXJ1bGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaW1wZXJzb25hdGlvbi1ydWxlcy9pbXBlcnNvbmF0aW9uLXJ1bGVzL2ltcGVyc29uYXRpb24tcnVsZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbFQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFFNUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU9yRSxNQUFNLE9BQU8sMkJBQTJCO0lBNkR0QyxZQUFvQixXQUF3QixFQUFVLGVBQWdDLEVBQVMsY0FBOEIsRUFDbkgs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QUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxXQUFXLEVBQUUsc0NBQXNDO2lCQUNwRDttVUFjaUUsYUFBYTtzQkFBNUUsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBOENKLHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQXV0b2NvbXBsZXRlRFRPLCBBdXRvY29tcGxldGVPcHRpb25zLCBDaGVja0JveE9wdGlvbnMsIENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgRGF0ZVBpY2tlck9wdGlvbnMsIERyb3Bkb3duT3B0aW9ucywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgRm9yY2VEaXJlY3Rpb24sIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIFBhZ2luZ0FjdGlvbk1vZGUsIFBhZ2luZ09wdGlvbnMsIFBpY2tlclR5cGUsIFNlbGVjdE1vZGUsIFN0YXJ0VmlldywgVGV4dEJveE9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEltcGVyc29uYXRpb25SdWxlTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWwnO1xyXG5pbXBvcnQgeyBJbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9JbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYXJ0aWNpcGFudFR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvUGFydGljaXBhbnRUeXBlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWltcGVyc29uYXRpb24tcnVsZXMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBlcnNvbmF0aW9uLXJ1bGVzLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSW1wZXJzb25hdGlvblJ1bGVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgU2hvd1BhZ2VDb250ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL0ltcGVyc29uYXRpb25SdWxlL1wiXHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEltcGVyc29uYXRpb25QYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBJbXBlcnNvbmF0aW9uUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnSW1wZXJzb25hdGlvblBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG5cclxuICAvL1JlcXVpcmVkIGxpc3RzXHJcbiAgUGVybWlzc2lvblNldExpc3Q6IGFueVtdID0gW107XHJcbiAgUGFydGljaXBhbnRUeXBlTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy9BZGQgTW9kZWwgQ29udHJvbHNcclxuICBBZGRJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBBZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdDogRHJvcGRvd25PcHRpb25zO1xyXG4gIEFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGU6IEF1dG9jb21wbGV0ZU9wdGlvbnM7XHJcbiAgQWRkRGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlOiBBdXRvY29tcGxldGVPcHRpb25zO1xyXG4gIEFkZElzQWN0aXZlOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgQWRkRXhwaXJlc0F0OiBEYXRlUGlja2VyT3B0aW9ucztcclxuICBBZGRTaG93U291cmNlUGVybWlzc2lvbkxpc3Q6Ym9vbGVhbj1mYWxzZTtcclxuICBBZGRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZTpib29sZWFuPWZhbHNlO1xyXG4gIEFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0OmJvb2xlYW49ZmFsc2U7XHJcbiAgQWRkU2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZTpib29sZWFuPWZhbHNlO1xyXG5cclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdEltcGVyc29uYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBFZGl0U291cmNlUGFydGljaXBhbnRUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3Q6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZTogQXV0b2NvbXBsZXRlT3B0aW9ucztcclxuICBFZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlOiBBdXRvY29tcGxldGVPcHRpb25zO1xyXG4gIEVkaXRJc0FjdGl2ZTogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEVkaXRFeHBpcmVzQXQ6IERhdGVQaWNrZXJPcHRpb25zO1xyXG4gIEVkaXRTaG93U291cmNlUGVybWlzc2lvbkxpc3Q6Ym9vbGVhbj1mYWxzZTtcclxuICBFZGl0U2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGU6Ym9vbGVhbj1mYWxzZTtcclxuICBFZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3Q6Ym9vbGVhbj1mYWxzZTtcclxuICBFZGl0U2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZTpib29sZWFuPWZhbHNlO1xyXG4gIEltcGVyc29uYXRpb25JZDogbnVtYmVyO1xyXG4gIFNvdXJjZVBhcnRpY2lwYW50SWQ6IG51bWJlcjtcclxuICBEZXN0aW5hdGlvblBhcnRpY2lwYW50SWQ6IG51bWJlcjtcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlSW1wZXJzb25hdGlvblJ1bGVJZDogc3RyaW5nO1xyXG4gIERlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBkZWxldGVDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIEltcGVyc29uYXRpb25SdWxlU2VydmljZTogSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQ9dHJ1ZTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGU9dGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW1wZXJzb25hdGlvblJ1bGVzXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzPVtcclxuICAgICAgIHt0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSAsIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlfSxcclxuICAgICAgIHt0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlfVxyXG5cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpPT57XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIC8vIFRleHRCb3ggaW5pdFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcblxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLkltcGVyc29uYXRpb25QYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5JbXBlcnNvbmF0aW9uUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXRJbXBlcnNvbmF0aW9uUnVsZUJ5RmlsdGVyJztcclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl1cclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyXVxyXG4gICAgdGhpcy5JbXBlcnNvbmF0aW9uUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9QYWdpbmcgZnVuY3Rpb25zXHJcbiAgc2V0SW1wZXJzb25hdGlvbkxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLkltcGVyc29uYXRpb25QYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKClcclxuICB9XHJcblxyXG4gIHNlYXJjaENsaWVudFNpZGUoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0LmZpbHRlcihcclxuICAgICAgICBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgdmFyIHNvdXJjZVBhcnRpY2lwYW50TmFtZSA9IGl0ZW0uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnROYW1lO1xyXG4gICAgICAgICAgdmFyIGRlc3RpbmF0aW9uUGFydGljaXBhbnROYW1lID0gaXRlbS5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50TmFtZTtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHNvdXJjZVBhcnRpY2lwYW50TmFtZS5lbmdsaXNoLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgfHwgc291cmNlUGFydGljaXBhbnROYW1lLmFyYWJpYy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGRlc3RpbmF0aW9uUGFydGljaXBhbnROYW1lLmFyYWJpYy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGRlc3RpbmF0aW9uUGFydGljaXBhbnROYW1lLmFyYWJpYy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICB9KVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLkltcGVyc29uYXRpb25QYWdpbmdSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvL0FkZCBpbXBlcnNvbmF0aW9uIHJ1bGUgZnVuY3Rpb25zXHJcbiAgc2hvd0FkZEltcGVyc29uYXRpb25Nb2RhbChBZGRJbXBlcnNvbmF0aW9uTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcblxyXG4gICAgdGhpcy5JbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2UubG9hZEFkZERyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBEcm9wZG93bkxpc3RzID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0TGlzdCA9IERyb3Bkb3duTGlzdHMucGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgIHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdCA9IERyb3Bkb3duTGlzdHMucGFydGljaXBhbnRUeXBlTGlzdDtcclxuICAgICAgdGhpcy5BZGRJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcblxyXG4gICAgICB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtXHJcbiAgICAgIHRoaXMuQWRkSW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZEltcGVyc29uYXRpb25SdWxlTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkSW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkSW1wZXJzb25hdGlvblJ1bGVGdW5jdGlvbjtcclxuICAgICAgdGhpcy5BZGRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcblxyXG4gICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQWRkU2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkFkZFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdCA9IGZhbHNlXHJcbiAgICAgIHRoaXMuQWRkU2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZVxyXG5cclxuICAgICAgdGhpcy5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGFydGljaXBhbnRUeXBlLk5hbWUgPSBcIkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZVwiXHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGFydGljaXBhbnRUeXBlLkxhYmVsS2V5ID0gXCJTb3VyY2VQYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGFydGljaXBhbnRUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5OYW1lID0gXCJBZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZVwiXHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuTGFiZWxLZXkgPSBcIkRlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlXCJcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5EYXRhU291cmNlID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0Lk5hbWUgPSBcIkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5MYWJlbEtleSA9IFwiU291cmNlUGVybWlzc2lvblNldExpc3RcIlxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LkRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGVybWlzc2lvblNldExpc3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGVybWlzc2lvblNldExpc3QuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5OYW1lID0gXCJBZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LkxhYmVsVmFsdWUgPSBcIkRlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3RcIlxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuTGFiZWxLZXkgPSBcIkRlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3RcIlxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5EYXRhU291cmNlID0gdGhpcy5QZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlID0gbmV3IEF1dG9jb21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLk5hbWUgPSBcIkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGVcIjtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uRW5nbGlzaDtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkFjdGlvblVSTCA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgdGhpcy5BcGlVcmwgKyBcIkF1dG9Db21wbGV0ZVVzZXJcIlxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSBuZXcgQXV0b2NvbXBsZXRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5OYW1lID0gXCJBZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGVcIjtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuTGFiZWxLZXkgPSBcIlVzZXJcIjtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5BY3Rpb25VUkwgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIHRoaXMuQXBpVXJsICsgXCJBdXRvQ29tcGxldGVVc2VyXCJcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgICAgdGhpcy5BZGRJc0FjdGl2ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRJc0FjdGl2ZS5OYW1lID0gXCJBZGRJc0FjdGl2ZVwiXHJcbiAgICAgIHRoaXMuQWRkSXNBY3RpdmUuTGFiZWxLZXkgPSBcIkFjdGl2ZVwiXHJcbiAgICAgIHRoaXMuQWRkSXNBY3RpdmUuSXNEaXNhYmxlZCA9IHRydWVcclxuICAgICAgdGhpcy5BZGRJc0FjdGl2ZS5WYWx1ZSA9IHRydWVcclxuXHJcbiAgICAgIHRoaXMuQWRkRXhwaXJlc0F0ID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkRXhwaXJlc0F0Lk5hbWUgPSBcIkFkZEV4cGlyZXNBdFwiXHJcbiAgICAgIHRoaXMuQWRkRXhwaXJlc0F0LkxhYmVsS2V5ID0gXCJFeHBpcmVzQXRcIlxyXG4gICAgICB0aGlzLkFkZEV4cGlyZXNBdC5Jc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLkFkZEV4cGlyZXNBdC5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgdGhpcy5BZGRFeHBpcmVzQXQuUGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQ2FsZW5kYXJcclxuICAgICAgdGhpcy5BZGRFeHBpcmVzQXQuU2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZEltcGVyc29uYXRpb25Nb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldEFkZEltcGVyc29uYXRpb25SdWxlTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuQWRkSW1wZXJzb25hdGlvbkZvcm0udmFsdWU7XHJcblxyXG4gICAgbGV0IEFkZE1vZGVsOiBJbXBlcnNvbmF0aW9uUnVsZU1vZGVsID0gbmV3IEltcGVyc29uYXRpb25SdWxlTW9kZWwoKTtcclxuICAgIEFkZE1vZGVsLlNvdXJjZVBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9IE51bWJlcihSZXN1bHRNb2RlbC5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUpXHJcbiAgICBBZGRNb2RlbC5EZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9IE51bWJlcihSZXN1bHRNb2RlbC5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZSlcclxuICAgIEFkZE1vZGVsLkV4cGlyZXNBdCA9IFJlc3VsdE1vZGVsLkFkZEV4cGlyZXNBdFxyXG4gICAgQWRkTW9kZWwuSXNBY3RpdmUgPSBSZXN1bHRNb2RlbC5BZGRJc0FjdGl2ZVxyXG4gICAgaWYgKFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSAhPSBudWxsICYmIFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSAhPSB1bmRlZmluZWQpXHJcbiAgICAgIEFkZE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uVXNlcklEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5rZXkpXHJcbiAgICBlbHNlXHJcbiAgICAgIEFkZE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QpXHJcbiAgICBpZiAoUmVzdWx0TW9kZWwuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZSAhPSBudWxsICYmIFJlc3VsdE1vZGVsLkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGUgIT0gdW5kZWZpbmVkKVxyXG4gICAgICBBZGRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5Vc2VySUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5rZXkpXHJcbiAgICBlbHNlXHJcbiAgICAgIEFkZE1vZGVsLlNvdXJjZVBhcnRpY2lwYW50RFRPLlBlcm1pc3Npb25TZXRJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdClcclxuICAgIHBhcmFtQXJyYXkucHVzaChBZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEFkZEltcGVyc29uYXRpb25SdWxlRnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLmFkZEltcGVyc29uYXRpb25SdWxlKEFkZE1vZGVsKVxyXG4gIH1cclxuXHJcblxyXG4gIGFkZERlc3RpbmF0aW9uUGFydGljaXBhbnRPbkNoYW5nZShrZXkpIHtcclxuICAgIGxldCBzb3VyY2VJdGVtID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGtleTsgfSkubWFwKChpdGVtKSA9PiBpdGVtKVswXTtcclxuICAgIC8vY29uc29sZS5sb2coc291cmNlSXRlbSlcclxuXHJcbiAgICBzd2l0Y2ggKHNvdXJjZUl0ZW0udmFsdWUpIHtcclxuICAgICAgY2FzZSBcIlBlcm1pc3Npb25TZXRcIjpcclxuICAgICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlVzZXJcIjpcclxuICAgICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5BZGRTaG93RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgYWRkU291cmNlUGFydGljaXBhbnRPbkNoYW5nZShrZXkpIHtcclxuICAgIGxldCBzb3VyY2VJdGVtID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGtleTsgfSkubWFwKChpdGVtKSA9PiBpdGVtKVswXTtcclxuICAgIC8vY29uc29sZS5sb2coc291cmNlSXRlbSlcclxuXHJcbiAgICBzd2l0Y2ggKHNvdXJjZUl0ZW0udmFsdWUpIHtcclxuICAgICAgY2FzZSBcIlBlcm1pc3Npb25TZXRcIjpcclxuICAgICAgICB0aGlzLkFkZFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5BZGRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiVXNlclwiOlxyXG4gICAgICAgIHRoaXMuQWRkU2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5BZGRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9FZGl0IGltcGVyc29uYXRpb24gcnVsZSBmdW5jdGlvbnNcclxuICBzaG93RWRpdEltcGVyc29uYXRpb25Nb2RhbChpbXBlcnNvbmF0aW9uSUQ6IG51bWJlciwgaW1wZXJzb25hdGlvbklERW5jOiBzdHJpbmcsIGVkaXRJbXBlcnNvbmF0aW9uTW9kYWwpIHtcclxuICAgIHRoaXMuSW1wZXJzb25hdGlvbklkID0gaW1wZXJzb25hdGlvbklEO1xyXG5cclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLmdldEVkaXRJbXBlcnNvbmF0aW9uUnVsZShpbXBlcnNvbmF0aW9uSURFbmMpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgaW1wZXJzb25hdGlvbiA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmxpc3RzO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXRMaXN0ID0gbGlzdHMucGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgIHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3RzLnBhcnRpY2lwYW50VHlwZUxpc3Q7XHJcblxyXG4gICAgICB0aGlzLkVkaXRJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcblxyXG4gICAgICB0aGlzLkVkaXRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtXHJcbiAgICAgIHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0SW1wZXJzb25hdGlvblJ1bGVNb2RlbDtcclxuICAgICAgdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEltcGVyc29uYXRpb25SdWxlRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuICAgICAgdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlVwZGF0ZVxyXG5cclxuICAgICAgdGhpcy5FZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5FZGl0U2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkVkaXRTaG93U291cmNlUGVybWlzc2lvbkxpc3QgPSBmYWxzZVxyXG4gICAgICB0aGlzLkVkaXRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlXHJcblxyXG4gICAgICBpZiAoaW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQgIT0gbnVsbCAmJiBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbUlEKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudE9uQ2hhbmdlKGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQpO1xyXG4gICAgICAgIHRoaXMuZWRpdFNvdXJjZVBhcnRpY2lwYW50T25DaGFuZ2UoaW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgICAgdGhpcy5Tb3VyY2VQYXJ0aWNpcGFudElkID0gaW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5pZDtcclxuICAgICAgdGhpcy5EZXN0aW5hdGlvblBhcnRpY2lwYW50SWQgPSBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uaWQ7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGFydGljaXBhbnRUeXBlLk5hbWUgPSBcIkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuTGFiZWxLZXkgPSBcIlNvdXJjZVBhcnRpY2lwYW50VHlwZVwiXHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGFydGljaXBhbnRUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3RcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGFydGljaXBhbnRUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5OYW1lID0gXCJFZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5MYWJlbEtleSA9IFwiRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdOztcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IHNvdXJjZVBlcm1pc3Npb25TZXRTZWxlY3RlZEl0ZW07XHJcbiAgICAgIGxldCBzb3VyY2VVc2VyTW9kZWwgPSBuZXcgQXV0b2NvbXBsZXRlRFRPKCk7XHJcbiAgICAgIGlmIChpbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9PSBQYXJ0aWNpcGFudFR5cGUuVXNlcikge1xyXG4gICAgICAgIHNvdXJjZVVzZXJNb2RlbC5rZXkgPSBpbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnVzZXJJRFxyXG4gICAgICAgIHNvdXJjZVVzZXJNb2RlbC52YWx1ZSA9IGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnROYW1lU3RyO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHNvdXJjZVBlcm1pc3Npb25TZXRTZWxlY3RlZEl0ZW0gPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGVybWlzc2lvblNldElEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuTmFtZSA9IFwiRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuTGFiZWxLZXkgPSBcIlNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuU2VsZWN0ZWRJdGVtcyA9IHNvdXJjZVBlcm1pc3Npb25TZXRTZWxlY3RlZEl0ZW07XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LkRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlID0gbmV3IEF1dG9jb21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZS5OYW1lID0gXCJFZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZVwiO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLlNlbGVjdGVkVmFsdWUgPSBzb3VyY2VVc2VyTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuQWN0aW9uVVJMID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyB0aGlzLkFwaVVybCArIFwiQXV0b0NvbXBsZXRlVXNlclwiXHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgICAgbGV0IGRlc3RpbmF0aW9uUGVybWlzc2lvblNldFNlbGVjdGVkSXRlbTtcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uVXNlck1vZGVsID0gbmV3IEF1dG9jb21wbGV0ZURUTygpO1xyXG4gICAgICBpZiAoaW1wZXJzb25hdGlvbi5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9PSBQYXJ0aWNpcGFudFR5cGUuVXNlcikge1xyXG4gICAgICAgIGRlc3RpbmF0aW9uVXNlck1vZGVsLmtleSA9IGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy51c2VySURcclxuICAgICAgICBkZXN0aW5hdGlvblVzZXJNb2RlbC52YWx1ZSA9IGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudE5hbWVTdHI7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZGVzdGluYXRpb25QZXJtaXNzaW9uU2V0U2VsZWN0ZWRJdGVtID0gdGhpcy5QZXJtaXNzaW9uU2V0TGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8ucGVybWlzc2lvblNldElEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0Lk5hbWUgPSBcIkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5MYWJlbEtleSA9IFwiRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdFwiXHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2VsZWN0ZWRJdGVtcyA9IGRlc3RpbmF0aW9uUGVybWlzc2lvblNldFNlbGVjdGVkSXRlbVxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LkRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlID0gbmV3IEF1dG9jb21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLk5hbWUgPSBcIkVkaXREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGVcIjtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLlNlbGVjdGVkVmFsdWUgPSBkZXN0aW5hdGlvblVzZXJNb2RlbFxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuQWN0aW9uVVJMID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyB0aGlzLkFwaVVybCArIFwiQXV0b0NvbXBsZXRlVXNlclwiXHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcblxyXG4gICAgICB0aGlzLkVkaXRJc0FjdGl2ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SXNBY3RpdmUuTmFtZSA9IFwiRWRpdElzQWN0aXZlXCJcclxuICAgICAgdGhpcy5FZGl0SXNBY3RpdmUuTGFiZWxLZXkgPSBcIkFjdGl2ZVwiXHJcbiAgICAgIHRoaXMuRWRpdElzQWN0aXZlLklzRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuRWRpdElzQWN0aXZlLlZhbHVlID0gdHJ1ZVxyXG5cclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0ID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEV4cGlyZXNBdC5OYW1lID0gXCJFZGl0RXhwaXJlc0F0XCJcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LkxhYmVsS2V5ID0gXCJFeHBpcmVzQXRcIlxyXG4gICAgICB0aGlzLkVkaXRFeHBpcmVzQXQuSXNSZXF1aXJlZCA9IHRydWVcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LlZhbHVlID0gaW1wZXJzb25hdGlvbi5leHBpcmVzQXRcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LlN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICB0aGlzLkVkaXRFeHBpcmVzQXQuUGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQ2FsZW5kYXJcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LlNlbGVjdE1vZGUgPSBTZWxlY3RNb2RlLlNpbmdsZVxyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihlZGl0SW1wZXJzb25hdGlvbk1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRFZGl0SW1wZXJzb25hdGlvblJ1bGVNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm0udmFsdWU7XHJcblxyXG4gICAgbGV0IEVkaXRNb2RlbDogSW1wZXJzb25hdGlvblJ1bGVNb2RlbCA9IG5ldyBJbXBlcnNvbmF0aW9uUnVsZU1vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSUQgPSB0aGlzLkltcGVyc29uYXRpb25JZFxyXG4gICAgRWRpdE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uSUQgPSB0aGlzLkRlc3RpbmF0aW9uUGFydGljaXBhbnRJZFxyXG4gICAgRWRpdE1vZGVsLlNvdXJjZVBhcnRpY2lwYW50RFRPLklEID0gdGhpcy5Tb3VyY2VQYXJ0aWNpcGFudElkXHJcbiAgICBFZGl0TW9kZWwuU291cmNlUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGUpXHJcbiAgICBFZGl0TW9kZWwuRGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlKVxyXG4gICAgRWRpdE1vZGVsLkV4cGlyZXNBdCA9IFJlc3VsdE1vZGVsLkVkaXRFeHBpcmVzQXRcclxuICAgIEVkaXRNb2RlbC5Jc0FjdGl2ZSA9IFJlc3VsdE1vZGVsLkVkaXRJc0FjdGl2ZVxyXG4gICAgY29uc29sZS5sb2coXCJEYXRhOlwiKTtcclxuICAgIGNvbnNvbGUubG9nKFJlc3VsdE1vZGVsKTtcclxuICAgIGlmIChFZGl0TW9kZWwuRGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSUQgPT0gUGFydGljaXBhbnRUeXBlLlVzZXIpXHJcbiAgICAgIEVkaXRNb2RlbC5EZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLlVzZXJJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLmtleSlcclxuICAgIGVsc2VcclxuICAgICAgRWRpdE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0KVxyXG4gICAgaWYgKEVkaXRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSUQgPT0gUGFydGljaXBhbnRUeXBlLlVzZXIpXHJcbiAgICAgIEVkaXRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5Vc2VySUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUua2V5KVxyXG4gICAgZWxzZVxyXG4gICAgICBFZGl0TW9kZWwuU291cmNlUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdClcclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0SW1wZXJzb25hdGlvblJ1bGVGdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLmVkaXRJbXBlcnNvbmF0aW9uUnVsZShFZGl0TW9kZWwpXHJcbiAgfVxyXG5cclxuICBlZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudE9uQ2hhbmdlKGtleSkge1xyXG4gICAgbGV0IHNvdXJjZUl0ZW0gPSB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0ga2V5OyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0pWzBdO1xyXG4gICAgc3dpdGNoIChzb3VyY2VJdGVtLnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgXCJQZXJtaXNzaW9uU2V0XCI6XHJcbiAgICAgICAgdGhpcy5FZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuRWRpdFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlVzZXJcIjpcclxuICAgICAgICB0aGlzLkVkaXRTaG93RGVzdGluYXRpb25QZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuRWRpdFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGVkaXRTb3VyY2VQYXJ0aWNpcGFudE9uQ2hhbmdlKGtleSkge1xyXG4gICAgbGV0IHNvdXJjZUl0ZW0gPSB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0ga2V5OyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0pWzBdO1xyXG4gICAgc3dpdGNoIChzb3VyY2VJdGVtLnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgXCJQZXJtaXNzaW9uU2V0XCI6XHJcbiAgICAgICAgdGhpcy5FZGl0U2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkVkaXRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiVXNlclwiOlxyXG4gICAgICAgIHRoaXMuRWRpdFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuRWRpdFNob3dTb3VyY2VVc2VyQXV0b0NvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIEltcGVyc29uYXRpb25SdWxlXHJcbiAgc2hvd0RlbGV0ZUltcGVyc29uYXRpb25Nb2RhbChpbXBlcnNvbmF0aW9uUnVsZUlEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGVsZXRlSW1wZXJzb25hdGlvblJ1bGVJZCA9IGltcGVyc29uYXRpb25SdWxlSUQ7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuZGVsZXRlSW1wZXJzb25hdGlvblJ1bGVJZCk7XHJcblxyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZGVsZXRlSW1wZXJzb25hdGlvbjtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLmRlbGV0ZUNvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUltcGVyc29uYXRpb24gPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5JbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2UuZGVsZXRlSW1wZXJzb25hdGlvblJ1bGUoaWQpO1xyXG4gIH1cclxuXHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjwhLS0gUGFnZSBDb250ZW50IC0tPlxyXG48ZGl2ICpuZ0lmPVwiU2hvd1BhZ2VDb250ZW50XCIgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IChPbkNoYW5nZSk9XCJzZWFyY2hDbGllbnRTaWRlKCRldmVudClcIiBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cIkltcGVyc29uYXRpb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgIDwhLS0gYmVnaW46Ok1lbnUgLS0+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgdGl0bGU9XCJBZGRcIiAoY2xpY2spPVwic2hvd0FkZEltcGVyc29uYXRpb25Nb2RhbChBZGRJbXBlcnNvbmF0aW9uTW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8IS0tIGVuZDo6TWVudSAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDwhLS1iZWdpbjo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj4gW3t7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBhcnRpY2lwYW50VHlwZVwiKX19XXt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNvdXJjZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPiBbe3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFydGljaXBhbnRUeXBlXCIpfX1de3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVzdGluYXRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFeHBpcmVzQXRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuXHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgSW1wZXJzb25hdGlvbiBvZiBjbGllbnRTaWRlUGFnaW5nUmVzdWx0XCI+XHJcblxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICAgIFt7e0ltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbU5hbWVTdHJ9fV0ge3tJbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50TmFtZVN0cn19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPiAgW3t7SW1wZXJzb25hdGlvbi5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50VHlwZUl0ZW1OYW1lU3RyfX1dIHt7SW1wZXJzb25hdGlvbi5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50TmFtZVN0cn19PC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgPHRkPnt7SW1wZXJzb25hdGlvbi5leHBpcmVzQXR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7SW1wZXJzb25hdGlvbi5pc0FjdGl2ZX19PC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgPHRkPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0VkaXRJbXBlcnNvbmF0aW9uTW9kYWwoSW1wZXJzb25hdGlvbi5pZCxJbXBlcnNvbmF0aW9uLmlkRW5jcnlwdGVkLEVkaXRJbXBlcnNvbmF0aW9uTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVJbXBlcnNvbmF0aW9uTW9kYWwoSW1wZXJzb25hdGlvbi5pZEVuY3J5cHRlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8dHIgKm5nSWY9XCJjbGllbnRTaWRlUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICA8IS0tZW5kOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRJbXBlcnNvbmF0aW9uTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJJbXBlcnNvbmF0aW9uUGFnaW5nXCIgW2dyb3VwXT1cIkltcGVyc29uYXRpb25Gb3JtXCIgI0ltcGVyc29uYXRpb25QYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbjwhLS0gQWRkIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0FkZEltcGVyc29uYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW1wZXJzb25hdGlvblJ1bGVcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9uc1wiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJBZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGVcIiAoT25DaGFuZ2UpPVwiYWRkU291cmNlUGFydGljaXBhbnRPbkNoYW5nZSgkZXZlbnQpXCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJBZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdFwiICpuZ0lmPVwiQWRkU2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUF1dG9jb21wbGV0ZVRleHRCb3ggW29wdGlvbnNdPVwiQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZVwiICpuZ0lmPVwiQWRkU2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGVcIiBbZ3JvdXBdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1BdXRvY29tcGxldGVUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGVcIiAoT25DaGFuZ2UpPVwiYWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudE9uQ2hhbmdlKCRldmVudClcIiBbZ3JvdXBdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3RcIiAqbmdJZj1cIkFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUF1dG9jb21wbGV0ZVRleHRCb3ggW29wdGlvbnNdPVwiQWRkRGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlXCIgKm5nSWY9XCJBZGRTaG93RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlXCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQXV0b2NvbXBsZXRlVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJBZGRJc0FjdGl2ZVwiIFtncm91cF09XCJBZGRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1EYXRlVGltZVBpY2tlciBbb3B0aW9uc109XCJBZGRFeHBpcmVzQXRcIiBbZ3JvdXBdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1cIj5cclxuXHJcbiAgICAgICAgICA8L0JCU0YtRGF0ZVRpbWVQaWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gQ2xvc2VJbXBlcnNvbmF0aW9uTW9kYWwgaWQ9XCJDbG9zZUltcGVyc29uYXRpb25Nb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tRWRpdCBNb2RhbC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRJbXBlcnNvbmF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbXBlcnNvbmF0aW9uUnVsZVwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJFZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZVwiIChPbkNoYW5nZSk9XCJlZGl0U291cmNlUGFydGljaXBhbnRPbkNoYW5nZSgkZXZlbnQpXCIgW2dyb3VwXT1cIkVkaXRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCIgKm5nSWY9XCJFZGl0U2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkVkaXRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1BdXRvY29tcGxldGVUZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlXCIgKm5nSWY9XCJFZGl0U2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGVcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQXV0b2NvbXBsZXRlVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlXCIgKE9uQ2hhbmdlKT1cImVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50T25DaGFuZ2UoJGV2ZW50KVwiIFtncm91cF09XCJFZGl0SW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0XCIgKm5nSWY9XCJFZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3RcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUF1dG9jb21wbGV0ZVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZVwiICpuZ0lmPVwiRWRpdFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGVcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQXV0b2NvbXBsZXRlVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJFZGl0SXNBY3RpdmVcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURhdGVUaW1lUGlja2VyIFtvcHRpb25zXT1cIkVkaXRFeHBpcmVzQXRcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcblxyXG4gICAgICAgICAgPC9CQlNGLURhdGVUaW1lUGlja2VyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRJbXBlcnNvbmF0aW9uTW9kYWwgaWQ9XCJDbG9zZUVkaXRJbXBlcnNvbmF0aW9uTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbjwhLS1kZWxldGUgTW9kYWwtLT5cclxuPEJCU0YtQ29uZmlybWF0aW9uTW9kYWwgKm5nSWY9XCJkZWxldGVDb250cm9sTG9hZGVkXCIgW29wdGlvbnNdPVwiRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uc1wiIGlkPVwiQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCIgI0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbD48L0JCU0YtQ29uZmlybWF0aW9uTW9kYWw+XHJcblxyXG4iXX0=
@@ -230,4 +230,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
230
230
  type: ViewChild,
231
231
  args: ['DeletedPagingViewElement', { static: false }]
232
232
  }] } });
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9icy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2pvYnMvam9icy9qb2JzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvam9icy9qb2JzL2pvYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7Ozs7OztBQVU5RSxNQUFNLE9BQU8sYUFBYTtJQTJEeEIsWUFDVSxlQUFnQyxFQUNqQyxjQUE4QixFQUM3QixrQkFBc0MsRUFDdEMsV0FBd0IsRUFDeEIscUJBQTRDO1FBSjVDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBOUR0RCxtQkFBbUI7UUFDbkIsV0FBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFBO1FBSWhDLG1CQUFjLEdBQW1CLElBQUksY0FBYyxFQUFFLENBQUM7UUFDdEQsbUJBQWMsR0FBWSxL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QUFLLEVBQUU7Z0JBT0csY0FBYztzQkFBekUsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT0csZUFBZTtzQkFBM0UsU0FBUzt1QkFBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT0MsY0FBYztzQkFBekUsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT0QsV0FBVztzQkFBbkUsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT0csWUFBWTtzQkFBckUsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIFBhZ2luZ09wdGlvbnMsIFRleHRCb3hPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEpvYkNvdW50c01vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Kb2JNb2RlbHMvSm9iQ291bnRzTW9kZWwnO1xyXG5pbXBvcnQgeyBKb2JzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0pvYnNTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItam9icycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2pvYnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2pvYnMuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBKb2JzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgQXBpVXJsID0gdGhpcy5qb2JzU2VydmljZS5BcGlVcmxcclxuXHJcbiAgLy9QYWdlIENvbnRlbnRcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBqb2JDb3VudHNNb2RlbDogSm9iQ291bnRzTW9kZWwgPSBuZXcgSm9iQ291bnRzTW9kZWwoKTtcclxuICBwcm9kdWN0aW9uTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU3RhdGlzdGljc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBFbnF1ZXVlZCBKb2JzIGNvbXBvbmVudFxyXG4gIGVucXVldWVkRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNob3dFbnF1ZXVlZEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVucXVldWVkUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGZpbHRlcmVkRW5xdWV1ZWRQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgZW5xdWV1ZWRQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgZW5xdWV1ZWRUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgaXNFbnF1ZXVlZEZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0VucXVldWVkUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgZW5xdWV1ZWRJbnB1dDogUGFnaW5nQ29tcG9uZW50O1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIFNjaGVkdWxlZCBKb2JzIGNvbXBvbmVudFxyXG4gIHNjaGVkdWxlZEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzY2hlZHVsZWRQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgc2NoZWR1bGVkUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIGlzU2NoZWR1bGVkRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnU2NoZWR1bGVkUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2NoZWR1bGVkSW5wdXQ6IFBhZ2luZ0NvbXBvbmVudDtcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBQcm9jZXNzaW5nIEpvYnMgY29tcG9uZW50XHJcbiAgcHJvY2Vzc2luZ0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBwcm9jZXNzaW5nUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIHByb2Nlc3NpbmdQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgaXNQcm9jZXNzaW5nRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnUHJvY2Vzc2luZ1BhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHByb2Nlc3NpbmdJbnB1dDogUGFnaW5nQ29tcG9uZW50O1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIFN1Y2NlZWRlZCBKb2JzIGNvbXBvbmVudFxyXG4gIHN1Y2NlZWRlZEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzdWNjZWVkZWRQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgc3VjY2VlZGVkUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIGlzU3VjY2VlZGVkRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnU3VjY2VlZGVkUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgc3VjY2VlZGVkSW5wdXQ6IFBhZ2luZ0NvbXBvbmVudDtcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyAgRmFpbGVkIEpvYnMgY29tcG9uZW50XHJcbiAgZmFpbGVkRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGZhaWxlZFBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBmYWlsZWRQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgaXNGYWlsZWRGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdGYWlsZWRQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBmYWlsZWRJbnB1dDogUGFnaW5nQ29tcG9uZW50O1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIERlbGV0ZWQgSm9icyBjb21wb25lbnRcclxuICBkZWxldGVkRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGRlbGV0ZWRQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgZGVsZXRlZFBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBpc0RlbGV0ZWRGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdEZWxldGVkUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgZGVsZXRlZElucHV0OiBQYWdpbmdDb21wb25lbnQ7XHJcblxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGpvYnNTZXJ2aWNlOiBKb2JzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2VcclxuICApIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvL1BhZ2UgaGVhZGVyIChicmVhZGNydW1iIGFuZCB0aXRsZSlcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJKb2JzXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG5cclxuICAgIF07XHJcblxyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLnByb2R1Y3Rpb25Nb2RlID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0UHJvZHVjdGlvbk1vZGUoKVxyXG4gICAgLy9pbml0aWFsaXplIHBhZ2VcclxuICAgIHRoaXMubG9hZFN0YXRpc3RpY3MoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8gRW5xdWV1ZWQgUGFnaW5nIGZ1bmN0aW9uc1xyXG5cclxuICBzZXRFbnF1ZXVlZExpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLmVucXVldWVkUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcbiAgICB0aGlzLmZpbHRlcmVkRW5xdWV1ZWRQYWdpbmdSZXN1bHQgPSB0aGlzLmVucXVldWVkUGFnaW5nUmVzdWx0XHJcbiAgfVxyXG5cclxuICAvL0ZpbHRlciBmdW5jdGlvbnNcclxuICByZXNldEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmVucXVldWVkRm9ybS5jb250cm9sc1tcInNlYXJjaFRleHRCb3hcIl0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZW5xdWV1ZWRJbnB1dCBhcyBhbnk7XHJcbiAgICBlbGVtZW50LlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG5cclxuICB9XHJcblxyXG4gIC8vU2NoZWR1bGVkIFBhZ2luZyBmdW5jdGlvbnNcclxuXHJcbiAgc2V0U2NoZWR1bGVkTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuc2NoZWR1bGVkUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcbiAgfVxyXG5cclxuICAvL1Byb2Nlc3NpbmcgUGFnaW5nIGZ1bmN0aW9uc1xyXG5cclxuICBzZXRQcm9jZXNzaW5nTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMucHJvY2Vzc2luZ1BhZ2luZ1Jlc3VsdCA9IHJlc3VsdFxyXG5cclxuICB9XHJcblxyXG4gIC8vU3VjY2VlZGVkIFBhZ2luZyBmdW5jdGlvbnNcclxuXHJcbiAgc2V0U3VjY2VlZGVkTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuc3VjY2VlZGVkUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcbiAgfVxyXG4gIC8vRmFpbGVkIFBhZ2luZyBmdW5jdGlvbnNcclxuXHJcbiAgc2V0RmFpbGVkTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuZmFpbGVkUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcbiAgfVxyXG5cclxuICAvL0RlbGV0ZWQgUGFnaW5nIGZ1bmN0aW9uc1xyXG5cclxuICBzZXREZWxldGVkTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuZGVsZXRlZFBhZ2luZ1Jlc3VsdCA9IHJlc3VsdFxyXG5cclxuICB9XHJcblxyXG4gIC8vaW5pdGlhbGl6ZSBwYWdlXHJcblxyXG4gIGxvYWRTdGF0aXN0aWNzKCkge1xyXG4gICAgdGhpcy5qb2JzU2VydmljZS5Mb2FkU3RhdGlzdGljcygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBMaXN0cyA9IHJlc3VsdCBhcyBhbnlcclxuICAgICAgdGhpcy5qb2JDb3VudHNNb2RlbC5FbnF1ZXVlZCA9IExpc3RzLmVucXVldWVkXHJcbiAgICAgIHRoaXMuam9iQ291bnRzTW9kZWwuU3VjY2VlZGVkID0gTGlzdHMuc3VjY2VlZGVkXHJcbiAgICAgIHRoaXMuam9iQ291bnRzTW9kZWwuU2NoZWR1bGVkID0gTGlzdHMuc2NoZWR1bGVkXHJcbiAgICAgIHRoaXMuam9iQ291bnRzTW9kZWwuUHJvY2Vzc2luZyA9IExpc3RzLnByb2Nlc3NpbmdcclxuICAgICAgdGhpcy5qb2JDb3VudHNNb2RlbC5GYWlsZWQgPSBMaXN0cy5mYWlsZWRcclxuICAgICAgdGhpcy5qb2JDb3VudHNNb2RlbC5EZWxldGVkID0gTGlzdHMuZGVsZXRlZFxyXG4gICAgICB0aGlzLmlzU3RhdGlzdGljc0xvYWRlZCA9IHRydWU7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBsb2FkRW5xdWV1ZWRKb2JzKCkge1xyXG4gICAgdGhpcy5pc0VucXVldWVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2NoZWR1bGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1N1Y2NlZWRlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZhaWxlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0RlbGV0ZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvLyBUZXh0Qm94IGludGlcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWVcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG5cclxuICAgIHRoaXMuZW5xdWV1ZWRUZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5lbnF1ZXVlZFRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5lbnF1ZXVlZFRleHRJbnB1dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCJcclxuICAgIHRoaXMuZW5xdWV1ZWRUZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuZW5xdWV1ZWRUZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuICAgIHRoaXMuZW5xdWV1ZWRQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5lbnF1ZXVlZFBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0UXVldWVMaXN0QnlGaWx0ZXInO1xyXG4gICAgdGhpcy5lbnF1ZXVlZFBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl1cclxuICAgIHRoaXMuZW5xdWV1ZWRQYWdpbmcuRmlsdGVycyA9IFt0aGlzLmVucXVldWVkVGV4dElucHV0RmlsdGVyXVxyXG5cclxuICAgIHRoaXMuaXNFbnF1ZXVlZEZpbHRlckxvYWRlZCA9IHRydWU7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGxvYWRTY2hlZHVsZWRKb2JzKCkge1xyXG4gICAgdGhpcy5pc0VucXVldWVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2NoZWR1bGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1N1Y2NlZWRlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZhaWxlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0RlbGV0ZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnNjaGVkdWxlZFBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNjaGVkdWxlZFBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0U2NoZWR1bGVkTGlzdEJ5RmlsdGVyJztcclxuICAgIHRoaXMuaXNTY2hlZHVsZWRGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBsb2FkUHJvY2Vzc2luZ0pvYnMoKSB7XHJcbiAgICB0aGlzLmlzRW5xdWV1ZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTY2hlZHVsZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNQcm9jZXNzaW5nRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU3VjY2VlZGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzRmFpbGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzRGVsZXRlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMucHJvY2Vzc2luZ1BhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLnByb2Nlc3NpbmdQYWdpbmcuQWN0aW9uUG9zdFVSTCA9IHRoaXMuQXBpVXJsICsgJ0dldFByb2Nlc3NpbmdMaXN0QnlGaWx0ZXInO1xyXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmdGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG5cclxuICB9XHJcblxyXG4gIGxvYWRTdWNjZWVkZWRKb2JzKCkge1xyXG4gICAgdGhpcy5pc0VucXVldWVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2NoZWR1bGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1N1Y2NlZWRlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZhaWxlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0RlbGV0ZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnN1Y2NlZWRlZFBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLnN1Y2NlZWRlZFBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0U3VjY2VlZGVkTGlzdEJ5RmlsdGVyJztcclxuICAgIHRoaXMuaXNTdWNjZWVkZWRGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBsb2FkRmFpbGVkSm9icygpIHtcclxuICAgIHRoaXMuaXNFbnF1ZXVlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1NjaGVkdWxlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmdGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTdWNjZWVkZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNGYWlsZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNEZWxldGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5mYWlsZWRQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5mYWlsZWRQYWdpbmcuQWN0aW9uUG9zdFVSTCA9IHRoaXMuQXBpVXJsICsgJ0dldEZhaWxlZExpc3RCeUZpbHRlcic7XHJcbiAgICB0aGlzLmlzRmFpbGVkRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgbG9hZERlbGV0ZWRKb2JzKCkge1xyXG4gICAgdGhpcy5pc0VucXVldWVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2NoZWR1bGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1N1Y2NlZWRlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZhaWxlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0RlbGV0ZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmRlbGV0ZWRQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5kZWxldGVkUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXREZWxldGVkTGlzdEJ5RmlsdGVyJztcclxuICAgIHRoaXMuaXNEZWxldGVkRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipGdW5jdGlvbk5hbWU6ZmlsdGVyRW5xdWV1ZWRMaXN0Ki9cclxuICAvKipEZWNsYXJhdGlvbjpmdW5jdGlvbiB0byBmaWx0ZXIgRW5xdWV1ZWRMaXN0IGluIGNsaWVudC1zaWRlICovXHJcbiAgLyoqUGFyYW1ldGVyczoqL1xyXG4gIC8qKnNlYXJjaFZhbHVlOiBjdXJyZW50IHZhbHVlIG9mIHNlYXJjaCBib3gqL1xyXG4gIGZpbHRlckVucXVldWVkTGlzdChzZWFyY2hWYWx1ZSkge1xyXG4gICAgaWYgKHNlYXJjaFZhbHVlKVxyXG4gICAgICB0aGlzLmZpbHRlcmVkRW5xdWV1ZWRQYWdpbmdSZXN1bHQgPSB0aGlzLmVucXVldWVkUGFnaW5nUmVzdWx0LmZpbHRlcihpdGVtID0+IGl0ZW0uam9iLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmZpbHRlcmVkRW5xdWV1ZWRQYWdpbmdSZXN1bHQgPSB0aGlzLmVucXVldWVkUGFnaW5nUmVzdWx0XHJcbiAgfVxyXG5cclxuICAvLy8vLy8vLy8vL0Rlc3Ryb3kgT2JzZXJ2YWJsZSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjxibG9jay11aT4gPC9ibG9jay11aT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgIDx1bCBuZ2JOYXYgI25hdj1cIm5nYk5hdlwiIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMgbmF2LWxpbmUtdGFicy0yeCBib3JkZXItdHJhbnNwYXJlbnQgZnMtNSBmdy1ib2xkZXJcIj5cclxuICAgICAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImxvYWRFbnF1ZXVlZEpvYnMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVucXVldWVkXCIpfX0oe3tqb2JDb3VudHNNb2RlbC5FbnF1ZXVlZH19KTwvYT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01IHB4LTAgIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiICpuZ0lmPVwiaXNFbnF1ZXVlZEZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiAgKE9uQ2hhbmdlKT1cImZpbHRlckVucXVldWVkTGlzdCgkZXZlbnQpXCIgW2dyb3VwXT1cImVucXVldWVkRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OlBlcm1pc3Npb24gbGlzdC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJKb2JcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlN0YXRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgam9iIG9mIGZpbHRlcmVkRW5xdWV1ZWRQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZGFya1wiPnt7am9iLmpvYn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2pvYi5zdGF0ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAgKm5nSWY9XCJmaWx0ZXJlZEVucXVldWVkUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0RW5xdWV1ZWRMaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cImlzRW5xdWV1ZWRGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJlbnF1ZXVlZFBhZ2luZ1wiIFtncm91cF09XCJlbnF1ZXVlZEZvcm1cIiAjRW5xdWV1ZWRQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgICAgIDxhIG5nYk5hdkxpbmsgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1zLTAgbWUtMTAgcHktNVwiIChjbGljayk9XCJsb2FkU2NoZWR1bGVkSm9icygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2NoZWR1bGVkXCIpfX0oe3tqb2JDb3VudHNNb2RlbC5TY2hlZHVsZWR9fSk8L2E+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkpvYlwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW5xdWV1ZWRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNjaGVkdWxlZFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGpvYiBvZiBzY2hlZHVsZWRQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2pvYi5qb2J9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tqb2IuZW5xdWV1ZUF0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLnNjaGVkdWxlZEF0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICAqbmdJZj1cInNjaGVkdWxlZFBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0U2NoZWR1bGVkTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJpc1NjaGVkdWxlZEZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVkdWxlZFBhZ2luZ1wiIFtncm91cF09XCJzY2hlZHVsZWRGb3JtXCIgI1NjaGVkdWxlZFBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImxvYWRQcm9jZXNzaW5nSm9icygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvY2Vzc2luZ1wiKX19KHt7am9iQ291bnRzTW9kZWwuUHJvY2Vzc2luZ319KTwvYT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSm9iXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTdGFydGVkQXRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlcnZlcklkXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgam9iIG9mIHByb2Nlc3NpbmdQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2pvYi5qb2J9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tqb2Iuc3RhcnRlZEF0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLnNlcnZlcklkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwicHJvY2Vzc2luZ1BhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0UHJvY2Vzc2luZ0xpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiaXNQcm9jZXNzaW5nRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwicHJvY2Vzc2luZ1BhZ2luZ1wiIFtncm91cF09XCJwcm9jZXNzaW5nRm9ybVwiICNQcm9jZXNzaW5nUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtIG10LTJcIj5cclxuICAgICAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwibG9hZFN1Y2NlZWRlZEpvYnMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlN1Y2NlZWRlZFwiKX19KHt7am9iQ291bnRzTW9kZWwuU3VjY2VlZGVkfX0pPC9hPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJKb2JcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTdWNjZWVkZWRBdFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRvdGFsRHVyYXRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBqb2Igb2Ygc3VjY2VlZGVkUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tqb2Iuam9ifX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLnN1Y2NlZWRlZEF0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLnRvdGFsRHVyYXRpb259fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJzdWNjZWVkZWRQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRTdWNjZWVkZWRMaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cImlzU3VjY2VlZGVkRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic3VjY2VlZGVkUGFnaW5nXCIgW2dyb3VwXT1cInN1Y2NlZWRlZEZvcm1cIiAjU3VjY2VlZGVkUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtIG10LTJcIj5cclxuICAgICAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwibG9hZEZhaWxlZEpvYnMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkZhaWxlZFwiKX19KHt7am9iQ291bnRzTW9kZWwuRmFpbGVkfX0pPC9hPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkZhaWxlZEF0XCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSm9iXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRXJyb3JNZXNzYWdlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRXJyb3JNZXNzYWdlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgam9iIG9mIGZhaWxlZFBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLmZhaWxlZEF0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLmpvYn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2pvYi5yZWFzb259fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmYWlsZWQtam9iLWRldGFpbHMgZGlyZWN0aW9uTHRyXCIgKm5nSWY9XCJqb2IuaW5GYWlsZWRTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5kYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiB7e2pvYi5leGNlcHRpb25UeXBlfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2pvYi5leGNlcHRpb25NZXNzYWdlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJmYWlsZWRQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldEZhaWxlZExpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiaXNGYWlsZWRGaWx0ZXJMb2FkZWRcIiBbb3B0aW9uc109XCJmYWlsZWRQYWdpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZmFpbGVkRm9ybVwiICNGYWlsZWRQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgICAgIDxhIG5nYk5hdkxpbmsgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1zLTAgbWUtMTAgcHktNVwiIChjbGljayk9XCJsb2FkRGVsZXRlZEpvYnMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZWRcIil9fSh7e2pvYkNvdW50c01vZGVsLkRlbGV0ZWR9fSk8L2E+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJKb2JcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZWRBdFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGpvYiBvZiBkZWxldGVkUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tqb2Iuam9ifX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLmRlbGV0ZWRBdH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAgKm5nSWY9XCJkZWxldGVkUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXREZWxldGVkTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJpc0RlbGV0ZWRGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJkZWxldGVkUGFnaW5nXCIgW2dyb3VwXT1cImRlbGV0ZWRGb3JtXCIgI0RlbGV0ZWRQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPGRpdiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuIFxyXG5cclxuIl19
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9icy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2pvYnMvam9icy9qb2JzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvam9icy9qb2JzL2pvYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7Ozs7OztBQVU5RSxNQUFNLE9BQU8sYUFBYTtJQTJEeEIsWUFDVSxlQUFnQyxFQUNqQyxjQUE4QixFQUM3QixrQkFBc0MsRUFDdEMsV0FBd0IsRUFDeEIscUJBQTRDO1FBSjVDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBOUR0RCxtQkFBbUI7UUFDbkIsV0FBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFBO1FBSWhDLG1CQUFjLEdBQW1CLElBQUksY0FBYyxFQUFFLENBQUM7UUFDdEQsbUJBQWMsR0FBWSxL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QUFLLEVBQUU7Z0JBT0csY0FBYztzQkFBekUsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT0csZUFBZTtzQkFBM0UsU0FBUzt1QkFBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT0MsY0FBYztzQkFBekUsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT0QsV0FBVztzQkFBbkUsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT0csWUFBWTtzQkFBckUsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIFBhZ2luZ09wdGlvbnMsIFRleHRCb3hPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEpvYkNvdW50c01vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Kb2JNb2RlbHMvSm9iQ291bnRzTW9kZWwnO1xyXG5pbXBvcnQgeyBKb2JzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0pvYnNTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItam9icycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2pvYnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2pvYnMuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBKb2JzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgQXBpVXJsID0gdGhpcy5qb2JzU2VydmljZS5BcGlVcmxcclxuXHJcbiAgLy9QYWdlIENvbnRlbnRcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBqb2JDb3VudHNNb2RlbDogSm9iQ291bnRzTW9kZWwgPSBuZXcgSm9iQ291bnRzTW9kZWwoKTtcclxuICBwcm9kdWN0aW9uTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU3RhdGlzdGljc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBFbnF1ZXVlZCBKb2JzIGNvbXBvbmVudFxyXG4gIGVucXVldWVkRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNob3dFbnF1ZXVlZEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVucXVldWVkUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGZpbHRlcmVkRW5xdWV1ZWRQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgZW5xdWV1ZWRQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgZW5xdWV1ZWRUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgaXNFbnF1ZXVlZEZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0VucXVldWVkUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgZW5xdWV1ZWRJbnB1dDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgU2NoZWR1bGVkIEpvYnMgY29tcG9uZW50XHJcbiAgc2NoZWR1bGVkRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNjaGVkdWxlZFBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBzY2hlZHVsZWRQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgaXNTY2hlZHVsZWRGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdTY2hlZHVsZWRQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBzY2hlZHVsZWRJbnB1dDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgUHJvY2Vzc2luZyBKb2JzIGNvbXBvbmVudFxyXG4gIHByb2Nlc3NpbmdGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgcHJvY2Vzc2luZ1BhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBwcm9jZXNzaW5nUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIGlzUHJvY2Vzc2luZ0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ1Byb2Nlc3NpbmdQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm9jZXNzaW5nSW5wdXQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIFN1Y2NlZWRlZCBKb2JzIGNvbXBvbmVudFxyXG4gIHN1Y2NlZWRlZEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzdWNjZWVkZWRQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgc3VjY2VlZGVkUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIGlzU3VjY2VlZGVkRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnU3VjY2VlZGVkUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgc3VjY2VlZGVkSW5wdXQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nICBGYWlsZWQgSm9icyBjb21wb25lbnRcclxuICBmYWlsZWRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZmFpbGVkUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGZhaWxlZFBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBpc0ZhaWxlZEZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0ZhaWxlZFBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIGZhaWxlZElucHV0OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBEZWxldGVkIEpvYnMgY29tcG9uZW50XHJcbiAgZGVsZXRlZEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBkZWxldGVkUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGRlbGV0ZWRQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgaXNEZWxldGVkRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnRGVsZXRlZFBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIGRlbGV0ZWRJbnB1dDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGpvYnNTZXJ2aWNlOiBKb2JzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2VcclxuICApIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvL1BhZ2UgaGVhZGVyIChicmVhZGNydW1iIGFuZCB0aXRsZSlcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJKb2JzXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG5cclxuICAgIF07XHJcblxyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLnByb2R1Y3Rpb25Nb2RlID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0UHJvZHVjdGlvbk1vZGUoKVxyXG4gICAgLy9pbml0aWFsaXplIHBhZ2VcclxuICAgIHRoaXMubG9hZFN0YXRpc3RpY3MoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8gRW5xdWV1ZWQgUGFnaW5nIGZ1bmN0aW9uc1xyXG5cclxuICBzZXRFbnF1ZXVlZExpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLmVucXVldWVkUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcbiAgICB0aGlzLmZpbHRlcmVkRW5xdWV1ZWRQYWdpbmdSZXN1bHQgPSB0aGlzLmVucXVldWVkUGFnaW5nUmVzdWx0XHJcbiAgfVxyXG5cclxuICAvL0ZpbHRlciBmdW5jdGlvbnNcclxuICByZXNldEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmVucXVldWVkRm9ybS5jb250cm9sc1tcInNlYXJjaFRleHRCb3hcIl0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZW5xdWV1ZWRJbnB1dCBhcyBhbnk7XHJcbiAgICBlbGVtZW50LlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG5cclxuICB9XHJcblxyXG4gIC8vU2NoZWR1bGVkIFBhZ2luZyBmdW5jdGlvbnNcclxuXHJcbiAgc2V0U2NoZWR1bGVkTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuc2NoZWR1bGVkUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcbiAgfVxyXG5cclxuICAvL1Byb2Nlc3NpbmcgUGFnaW5nIGZ1bmN0aW9uc1xyXG5cclxuICBzZXRQcm9jZXNzaW5nTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMucHJvY2Vzc2luZ1BhZ2luZ1Jlc3VsdCA9IHJlc3VsdFxyXG5cclxuICB9XHJcblxyXG4gIC8vU3VjY2VlZGVkIFBhZ2luZyBmdW5jdGlvbnNcclxuXHJcbiAgc2V0U3VjY2VlZGVkTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuc3VjY2VlZGVkUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcbiAgfVxyXG4gIC8vRmFpbGVkIFBhZ2luZyBmdW5jdGlvbnNcclxuXHJcbiAgc2V0RmFpbGVkTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuZmFpbGVkUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcbiAgfVxyXG5cclxuICAvL0RlbGV0ZWQgUGFnaW5nIGZ1bmN0aW9uc1xyXG5cclxuICBzZXREZWxldGVkTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuZGVsZXRlZFBhZ2luZ1Jlc3VsdCA9IHJlc3VsdFxyXG5cclxuICB9XHJcblxyXG4gIC8vaW5pdGlhbGl6ZSBwYWdlXHJcblxyXG4gIGxvYWRTdGF0aXN0aWNzKCkge1xyXG4gICAgdGhpcy5qb2JzU2VydmljZS5Mb2FkU3RhdGlzdGljcygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBMaXN0cyA9IHJlc3VsdCBhcyBhbnlcclxuICAgICAgdGhpcy5qb2JDb3VudHNNb2RlbC5FbnF1ZXVlZCA9IExpc3RzLmVucXVldWVkXHJcbiAgICAgIHRoaXMuam9iQ291bnRzTW9kZWwuU3VjY2VlZGVkID0gTGlzdHMuc3VjY2VlZGVkXHJcbiAgICAgIHRoaXMuam9iQ291bnRzTW9kZWwuU2NoZWR1bGVkID0gTGlzdHMuc2NoZWR1bGVkXHJcbiAgICAgIHRoaXMuam9iQ291bnRzTW9kZWwuUHJvY2Vzc2luZyA9IExpc3RzLnByb2Nlc3NpbmdcclxuICAgICAgdGhpcy5qb2JDb3VudHNNb2RlbC5GYWlsZWQgPSBMaXN0cy5mYWlsZWRcclxuICAgICAgdGhpcy5qb2JDb3VudHNNb2RlbC5EZWxldGVkID0gTGlzdHMuZGVsZXRlZFxyXG4gICAgICB0aGlzLmlzU3RhdGlzdGljc0xvYWRlZCA9IHRydWU7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBsb2FkRW5xdWV1ZWRKb2JzKCkge1xyXG4gICAgdGhpcy5pc0VucXVldWVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2NoZWR1bGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1N1Y2NlZWRlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZhaWxlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0RlbGV0ZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvLyBUZXh0Qm94IGludGlcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWVcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG5cclxuICAgIHRoaXMuZW5xdWV1ZWRUZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5lbnF1ZXVlZFRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5lbnF1ZXVlZFRleHRJbnB1dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCJcclxuICAgIHRoaXMuZW5xdWV1ZWRUZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuZW5xdWV1ZWRUZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuICAgIHRoaXMuZW5xdWV1ZWRQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5lbnF1ZXVlZFBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0UXVldWVMaXN0QnlGaWx0ZXInO1xyXG4gICAgdGhpcy5lbnF1ZXVlZFBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl1cclxuICAgIHRoaXMuZW5xdWV1ZWRQYWdpbmcuRmlsdGVycyA9IFt0aGlzLmVucXVldWVkVGV4dElucHV0RmlsdGVyXVxyXG5cclxuICAgIHRoaXMuaXNFbnF1ZXVlZEZpbHRlckxvYWRlZCA9IHRydWU7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGxvYWRTY2hlZHVsZWRKb2JzKCkge1xyXG4gICAgdGhpcy5pc0VucXVldWVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2NoZWR1bGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1N1Y2NlZWRlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZhaWxlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0RlbGV0ZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnNjaGVkdWxlZFBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNjaGVkdWxlZFBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0U2NoZWR1bGVkTGlzdEJ5RmlsdGVyJztcclxuICAgIHRoaXMuaXNTY2hlZHVsZWRGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBsb2FkUHJvY2Vzc2luZ0pvYnMoKSB7XHJcbiAgICB0aGlzLmlzRW5xdWV1ZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTY2hlZHVsZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNQcm9jZXNzaW5nRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU3VjY2VlZGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzRmFpbGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzRGVsZXRlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMucHJvY2Vzc2luZ1BhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLnByb2Nlc3NpbmdQYWdpbmcuQWN0aW9uUG9zdFVSTCA9IHRoaXMuQXBpVXJsICsgJ0dldFByb2Nlc3NpbmdMaXN0QnlGaWx0ZXInO1xyXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmdGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG5cclxuICB9XHJcblxyXG4gIGxvYWRTdWNjZWVkZWRKb2JzKCkge1xyXG4gICAgdGhpcy5pc0VucXVldWVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2NoZWR1bGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1N1Y2NlZWRlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZhaWxlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0RlbGV0ZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnN1Y2NlZWRlZFBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLnN1Y2NlZWRlZFBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0U3VjY2VlZGVkTGlzdEJ5RmlsdGVyJztcclxuICAgIHRoaXMuaXNTdWNjZWVkZWRGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBsb2FkRmFpbGVkSm9icygpIHtcclxuICAgIHRoaXMuaXNFbnF1ZXVlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1NjaGVkdWxlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmdGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTdWNjZWVkZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNGYWlsZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNEZWxldGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5mYWlsZWRQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5mYWlsZWRQYWdpbmcuQWN0aW9uUG9zdFVSTCA9IHRoaXMuQXBpVXJsICsgJ0dldEZhaWxlZExpc3RCeUZpbHRlcic7XHJcbiAgICB0aGlzLmlzRmFpbGVkRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgbG9hZERlbGV0ZWRKb2JzKCkge1xyXG4gICAgdGhpcy5pc0VucXVldWVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2NoZWR1bGVkRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1N1Y2NlZWRlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZhaWxlZEZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0RlbGV0ZWRGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmRlbGV0ZWRQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5kZWxldGVkUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXREZWxldGVkTGlzdEJ5RmlsdGVyJztcclxuICAgIHRoaXMuaXNEZWxldGVkRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipGdW5jdGlvbk5hbWU6ZmlsdGVyRW5xdWV1ZWRMaXN0Ki9cclxuICAvKipEZWNsYXJhdGlvbjpmdW5jdGlvbiB0byBmaWx0ZXIgRW5xdWV1ZWRMaXN0IGluIGNsaWVudC1zaWRlICovXHJcbiAgLyoqUGFyYW1ldGVyczoqL1xyXG4gIC8qKnNlYXJjaFZhbHVlOiBjdXJyZW50IHZhbHVlIG9mIHNlYXJjaCBib3gqL1xyXG4gIGZpbHRlckVucXVldWVkTGlzdChzZWFyY2hWYWx1ZSkge1xyXG4gICAgaWYgKHNlYXJjaFZhbHVlKVxyXG4gICAgICB0aGlzLmZpbHRlcmVkRW5xdWV1ZWRQYWdpbmdSZXN1bHQgPSB0aGlzLmVucXVldWVkUGFnaW5nUmVzdWx0LmZpbHRlcihpdGVtID0+IGl0ZW0uam9iLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmZpbHRlcmVkRW5xdWV1ZWRQYWdpbmdSZXN1bHQgPSB0aGlzLmVucXVldWVkUGFnaW5nUmVzdWx0XHJcbiAgfVxyXG5cclxuICAvLy8vLy8vLy8vL0Rlc3Ryb3kgT2JzZXJ2YWJsZSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjxibG9jay11aT4gPC9ibG9jay11aT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgIDx1bCBuZ2JOYXYgI25hdj1cIm5nYk5hdlwiIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMgbmF2LWxpbmUtdGFicy0yeCBib3JkZXItdHJhbnNwYXJlbnQgZnMtNSBmdy1ib2xkZXJcIj5cclxuICAgICAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImxvYWRFbnF1ZXVlZEpvYnMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVucXVldWVkXCIpfX0oe3tqb2JDb3VudHNNb2RlbC5FbnF1ZXVlZH19KTwvYT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01IHB4LTAgIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiICpuZ0lmPVwiaXNFbnF1ZXVlZEZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiAgKE9uQ2hhbmdlKT1cImZpbHRlckVucXVldWVkTGlzdCgkZXZlbnQpXCIgW2dyb3VwXT1cImVucXVldWVkRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OlBlcm1pc3Npb24gbGlzdC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJKb2JcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlN0YXRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgam9iIG9mIGZpbHRlcmVkRW5xdWV1ZWRQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZGFya1wiPnt7am9iLmpvYn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2pvYi5zdGF0ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAgKm5nSWY9XCJmaWx0ZXJlZEVucXVldWVkUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0RW5xdWV1ZWRMaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cImlzRW5xdWV1ZWRGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJlbnF1ZXVlZFBhZ2luZ1wiIFtncm91cF09XCJlbnF1ZXVlZEZvcm1cIiAjRW5xdWV1ZWRQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgICAgIDxhIG5nYk5hdkxpbmsgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1zLTAgbWUtMTAgcHktNVwiIChjbGljayk9XCJsb2FkU2NoZWR1bGVkSm9icygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2NoZWR1bGVkXCIpfX0oe3tqb2JDb3VudHNNb2RlbC5TY2hlZHVsZWR9fSk8L2E+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkpvYlwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW5xdWV1ZWRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNjaGVkdWxlZFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGpvYiBvZiBzY2hlZHVsZWRQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2pvYi5qb2J9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tqb2IuZW5xdWV1ZUF0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLnNjaGVkdWxlZEF0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICAqbmdJZj1cInNjaGVkdWxlZFBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0U2NoZWR1bGVkTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJpc1NjaGVkdWxlZEZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVkdWxlZFBhZ2luZ1wiIFtncm91cF09XCJzY2hlZHVsZWRGb3JtXCIgI1NjaGVkdWxlZFBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImxvYWRQcm9jZXNzaW5nSm9icygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvY2Vzc2luZ1wiKX19KHt7am9iQ291bnRzTW9kZWwuUHJvY2Vzc2luZ319KTwvYT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSm9iXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTdGFydGVkQXRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlcnZlcklkXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgam9iIG9mIHByb2Nlc3NpbmdQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2pvYi5qb2J9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tqb2Iuc3RhcnRlZEF0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLnNlcnZlcklkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwicHJvY2Vzc2luZ1BhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0UHJvY2Vzc2luZ0xpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiaXNQcm9jZXNzaW5nRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwicHJvY2Vzc2luZ1BhZ2luZ1wiIFtncm91cF09XCJwcm9jZXNzaW5nRm9ybVwiICNQcm9jZXNzaW5nUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtIG10LTJcIj5cclxuICAgICAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwibG9hZFN1Y2NlZWRlZEpvYnMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlN1Y2NlZWRlZFwiKX19KHt7am9iQ291bnRzTW9kZWwuU3VjY2VlZGVkfX0pPC9hPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJKb2JcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTdWNjZWVkZWRBdFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRvdGFsRHVyYXRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBqb2Igb2Ygc3VjY2VlZGVkUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tqb2Iuam9ifX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLnN1Y2NlZWRlZEF0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLnRvdGFsRHVyYXRpb259fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJzdWNjZWVkZWRQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRTdWNjZWVkZWRMaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cImlzU3VjY2VlZGVkRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic3VjY2VlZGVkUGFnaW5nXCIgW2dyb3VwXT1cInN1Y2NlZWRlZEZvcm1cIiAjU3VjY2VlZGVkUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtIG10LTJcIj5cclxuICAgICAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwibG9hZEZhaWxlZEpvYnMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkZhaWxlZFwiKX19KHt7am9iQ291bnRzTW9kZWwuRmFpbGVkfX0pPC9hPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkZhaWxlZEF0XCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSm9iXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRXJyb3JNZXNzYWdlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRXJyb3JNZXNzYWdlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgam9iIG9mIGZhaWxlZFBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLmZhaWxlZEF0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLmpvYn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2pvYi5yZWFzb259fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmYWlsZWQtam9iLWRldGFpbHMgZGlyZWN0aW9uTHRyXCIgKm5nSWY9XCJqb2IuaW5GYWlsZWRTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5kYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiB7e2pvYi5leGNlcHRpb25UeXBlfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2pvYi5leGNlcHRpb25NZXNzYWdlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJmYWlsZWRQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldEZhaWxlZExpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiaXNGYWlsZWRGaWx0ZXJMb2FkZWRcIiBbb3B0aW9uc109XCJmYWlsZWRQYWdpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZmFpbGVkRm9ybVwiICNGYWlsZWRQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgICAgIDxhIG5nYk5hdkxpbmsgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1zLTAgbWUtMTAgcHktNVwiIChjbGljayk9XCJsb2FkRGVsZXRlZEpvYnMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZWRcIil9fSh7e2pvYkNvdW50c01vZGVsLkRlbGV0ZWR9fSk8L2E+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJKb2JcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZWRBdFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGpvYiBvZiBkZWxldGVkUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tqb2Iuam9ifX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7am9iLmRlbGV0ZWRBdH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAgKm5nSWY9XCJkZWxldGVkUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXREZWxldGVkTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJpc0RlbGV0ZWRGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJkZWxldGVkUGFnaW5nXCIgW2dyb3VwXT1cImRlbGV0ZWRGb3JtXCIgI0RlbGV0ZWRQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPGRpdiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuIFxyXG5cclxuIl19