@bnsights/bbsf-admin-portal 1.1.2 → 1.1.3

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 (684) hide show
  1. package/README.md +4 -0
  2. package/{esm2020 → esm2022}/bnsights-bbsf-admin-portal.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directories.component.mjs +14 -14
  4. package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +421 -0
  5. package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +528 -0
  6. package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directory-routing.module.mjs +29 -29
  7. package/esm2022/lib/Pages/ActiveDirectories/active-directory.module.mjs +108 -0
  8. package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +23 -0
  9. package/{esm2020 → esm2022}/lib/Pages/_layout/components/aside/aside.component.mjs +65 -65
  10. package/{esm2020 → esm2022}/lib/Pages/_layout/components/content/content.component.mjs +31 -31
  11. package/{esm2020 → esm2022}/lib/Pages/_layout/components/footer/footer.component.mjs +32 -32
  12. package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/header.component.mjs +57 -57
  13. package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/page-title/page-title.component.mjs +36 -36
  14. package/{esm2020 → esm2022}/lib/Pages/_layout/components/scripts-init/scripts-init.component.mjs +58 -58
  15. package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.component.mjs +36 -36
  16. package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.module.mjs +26 -26
  17. package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.component.mjs +41 -41
  18. package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.module.mjs +25 -25
  19. package/{esm2020 → esm2022}/lib/Pages/_layout/components/topbar/topbar.component.mjs +71 -71
  20. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/activation/activation.component.mjs +92 -92
  21. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +37 -37
  22. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +54 -54
  23. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +100 -0
  24. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/error/error.component.mjs +48 -48
  25. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +59 -59
  26. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/login/login.component.mjs +94 -94
  27. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +90 -90
  28. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +71 -71
  29. package/{esm2020 → esm2022}/lib/Pages/authentication/auth-callback/auth-callback.component.mjs +43 -43
  30. package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.component.mjs +15 -15
  31. package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.module.mjs +41 -41
  32. package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.routing.mjs +31 -31
  33. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +330 -0
  34. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +157 -0
  35. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +801 -0
  36. package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.component.mjs +15 -15
  37. package/esm2022/lib/Pages/configurations/configurations.module.mjs +104 -0
  38. package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.routing.mjs +41 -41
  39. package/{esm2020 → esm2022}/lib/Pages/configurations/index.mjs +6 -6
  40. package/{esm2020 → esm2022}/lib/Pages/core/auth.module.mjs +30 -30
  41. package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +17 -0
  42. package/{esm2020 → esm2022}/lib/Pages/core/authentication/auth.guard.mjs +46 -46
  43. package/esm2022/lib/Pages/core/authentication/auth.service.mjs +147 -0
  44. package/esm2022/lib/Pages/departments/department/department.component.mjs +220 -0
  45. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +185 -0
  46. package/{esm2020 → esm2022}/lib/Pages/departments/departments-routing.module.mjs +27 -27
  47. package/{esm2020 → esm2022}/lib/Pages/departments/departments.component.mjs +15 -15
  48. package/esm2022/lib/Pages/departments/departments.module.mjs +94 -0
  49. package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +136 -0
  50. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +148 -0
  51. package/{esm2020 → esm2022}/lib/Pages/documents/document-template-info/document-template-info.component.mjs +332 -332
  52. package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +437 -0
  53. package/{esm2020 → esm2022}/lib/Pages/documents/documents.component.mjs +15 -15
  54. package/esm2022/lib/Pages/documents/documents.module.mjs +114 -0
  55. package/esm2022/lib/Pages/documents/documents.routing.mjs +37 -0
  56. package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +169 -0
  57. package/{esm2020 → esm2022}/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +123 -123
  58. package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.component.mjs +31 -31
  59. package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.module.mjs +28 -28
  60. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +294 -0
  61. package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +43 -0
  62. package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-center-routing.module.mjs +31 -31
  63. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +242 -0
  64. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +243 -0
  65. package/esm2022/lib/Pages/helpCenter/help-center.module.mjs +99 -0
  66. package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-centers.component.mjs +15 -15
  67. package/{esm2020 → esm2022}/lib/Pages/home/filter-pipe.mjs +23 -23
  68. package/esm2022/lib/Pages/home/home.component.mjs +158 -0
  69. package/esm2022/lib/Pages/home/home.module.mjs +48 -0
  70. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +443 -0
  71. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +95 -0
  72. package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +223 -0
  73. package/esm2022/lib/Pages/jobs/jobs.module.mjs +87 -0
  74. package/{esm2020 → esm2022}/lib/Pages/license/license/license.component.mjs +163 -163
  75. package/esm2022/lib/Pages/license/license.module.mjs +71 -0
  76. package/{esm2020 → esm2022}/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +215 -215
  77. package/esm2022/lib/Pages/localizations/localizations.component.mjs +516 -0
  78. package/esm2022/lib/Pages/localizations/localizations.module.mjs +79 -0
  79. package/{esm2020 → esm2022}/lib/Pages/logs/log/log.component.mjs +93 -93
  80. package/{esm2020 → esm2022}/lib/Pages/logs/logs-routing.module.mjs +27 -27
  81. package/{esm2020 → esm2022}/lib/Pages/logs/logs.component.mjs +15 -15
  82. package/esm2022/lib/Pages/logs/logs.module.mjs +87 -0
  83. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +367 -0
  84. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +187 -0
  85. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +297 -0
  86. package/{esm2020 → esm2022}/lib/Pages/lookups/lookups-routing.module.mjs +29 -29
  87. package/{esm2020 → esm2022}/lib/Pages/lookups/lookups.component.mjs +15 -15
  88. package/esm2022/lib/Pages/lookups/lookups.module.mjs +100 -0
  89. package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +104 -0
  90. package/{esm2020 → esm2022}/lib/Pages/notifications/edit-email/edit-email.component.mjs +158 -158
  91. package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +133 -0
  92. package/{esm2020 → esm2022}/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +115 -115
  93. package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +148 -0
  94. package/esm2022/lib/Pages/notifications/notifications-routing.module.mjs +39 -0
  95. package/{esm2020 → esm2022}/lib/Pages/notifications/notifications.component.mjs +15 -15
  96. package/esm2022/lib/Pages/notifications/notifications.module.mjs +101 -0
  97. package/{esm2020 → esm2022}/lib/Pages/notifications/template-info/template-info.component.mjs +391 -391
  98. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +495 -0
  99. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +615 -0
  100. package/{esm2020 → esm2022}/lib/Pages/providers/providers-routing.module.mjs +27 -27
  101. package/{esm2020 → esm2022}/lib/Pages/providers/providers.component.mjs +15 -15
  102. package/esm2022/lib/Pages/providers/providers.module.mjs +91 -0
  103. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +334 -0
  104. package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays-routing.module.mjs +25 -25
  105. package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays.component.mjs +15 -15
  106. package/esm2022/lib/Pages/publicHolidays/public-holidays.module.mjs +94 -0
  107. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +187 -0
  108. package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +226 -0
  109. package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +277 -0
  110. package/{esm2020 → esm2022}/lib/Pages/roles/roles-routing.module.mjs +29 -29
  111. package/{esm2020 → esm2022}/lib/Pages/roles/roles.component.mjs +15 -15
  112. package/esm2022/lib/Pages/roles/roles.module.mjs +105 -0
  113. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +193 -0
  114. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +180 -0
  115. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +187 -0
  116. package/{esm2020 → esm2022}/lib/Pages/sectors/sectors-routing.module.mjs +29 -29
  117. package/{esm2020 → esm2022}/lib/Pages/sectors/sectors.component.mjs +15 -15
  118. package/esm2022/lib/Pages/sectors/sectors.module.mjs +96 -0
  119. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ADType.mjs +5 -5
  120. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/Enums.mjs +54 -54
  121. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ProviderType.mjs +6 -6
  122. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/WFActivityType.mjs +11 -11
  123. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/ConditionRHSType.mjs +5 -5
  124. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/authentecation-configuration.mjs +18 -18
  125. package/{esm2020 → esm2022}/lib/Pages/shared/Pipes/survey-date.pipe.mjs +22 -22
  126. package/{esm2020 → esm2022}/lib/Pages/shared/Services/AccountService.service.mjs +55 -55
  127. package/{esm2020 → esm2022}/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +51 -51
  128. package/{esm2020 → esm2022}/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +29 -29
  129. package/{esm2020 → esm2022}/lib/Pages/shared/Services/ConfigurationsService.service.mjs +61 -61
  130. package/{esm2020 → esm2022}/lib/Pages/shared/Services/DepartmentService.service.mjs +46 -46
  131. package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +36 -36
  132. package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +81 -81
  133. package/{esm2020 → esm2022}/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +37 -37
  134. package/{esm2020 → esm2022}/lib/Pages/shared/Services/ErrorService.service.mjs +15 -15
  135. package/{esm2020 → esm2022}/lib/Pages/shared/Services/GlobalErrorHandler.service.mjs +36 -36
  136. package/{esm2020 → esm2022}/lib/Pages/shared/Services/HelpCenterService.service.mjs +47 -47
  137. package/{esm2020 → esm2022}/lib/Pages/shared/Services/HttpErrorInterceptor.service.mjs +47 -47
  138. package/{esm2020 → esm2022}/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +36 -36
  139. package/{esm2020 → esm2022}/lib/Pages/shared/Services/JobsService.service.mjs +21 -21
  140. package/{esm2020 → esm2022}/lib/Pages/shared/Services/LicenseService.service.mjs +24 -24
  141. package/{esm2020 → esm2022}/lib/Pages/shared/Services/LogsService.mjs +24 -24
  142. package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupGroupsService.service.mjs +33 -33
  143. package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupService.service.mjs +67 -67
  144. package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionSetService.service.mjs +50 -50
  145. package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionsService.service.mjs +36 -36
  146. package/{esm2020 → esm2022}/lib/Pages/shared/Services/PublicHolidayService.service.mjs +39 -39
  147. package/{esm2020 → esm2022}/lib/Pages/shared/Services/SectorService.service.mjs +46 -46
  148. package/{esm2020 → esm2022}/lib/Pages/shared/Services/TemplateService.service.mjs +90 -90
  149. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +24 -24
  150. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +54 -54
  151. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +24 -24
  152. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +24 -24
  153. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowService.service.mjs +38 -38
  154. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +36 -36
  155. package/{esm2020 → esm2022}/lib/Pages/shared/Services/data.service.mjs +27 -27
  156. package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +163 -0
  157. package/{esm2020 → esm2022}/lib/Pages/shared/Services/localizationsService.service .mjs +77 -77
  158. package/{esm2020 → esm2022}/lib/Pages/shared/Services/provider.service.mjs +62 -62
  159. package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey-question.service.mjs +57 -57
  160. package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey.service.mjs +140 -140
  161. package/{esm2020 → esm2022}/lib/Pages/shared/Services/userService.service.mjs +80 -80
  162. package/{esm2020 → esm2022}/lib/Pages/shared/base.service.mjs +19 -19
  163. package/{esm2020 → esm2022}/lib/Pages/shared/components/AdDirective.mjs +16 -16
  164. package/{esm2020 → esm2022}/lib/Pages/shared/components/external-url/external-url.component.mjs +168 -168
  165. package/{esm2020 → esm2022}/lib/Pages/shared/components/no-results/no-results.component.mjs +19 -19
  166. package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +192 -0
  167. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +48 -48
  168. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +50 -50
  169. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +217 -217
  170. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +47 -47
  171. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +49 -49
  172. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +50 -50
  173. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +624 -624
  174. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +47 -47
  175. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +683 -683
  176. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +138 -138
  177. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +102 -102
  178. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +56 -56
  179. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +532 -532
  180. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +113 -113
  181. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +114 -114
  182. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey.component.mjs +292 -292
  183. package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +696 -0
  184. package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +84 -0
  185. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey-layout/survey-layout.component.mjs +15 -15
  186. package/{esm2020 → esm2022}/lib/Pages/shared/config/environment.mjs +11 -11
  187. package/esm2022/lib/Pages/shared/constants.mjs +130 -0
  188. package/{esm2020 → esm2022}/lib/Pages/shared/filter/filter.component.mjs +14 -14
  189. package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ADMappingModel.mjs +3 -3
  190. package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.mjs +6 -6
  191. package/{esm2020 → esm2022}/lib/Pages/shared/models/AccountModels/forgotPasswordModel.mjs +5 -5
  192. package/{esm2020 → esm2022}/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.mjs +50 -50
  193. package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentModel.mjs +2 -2
  194. package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.mjs +5 -5
  195. package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.mjs +7 -7
  196. package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.mjs +9 -9
  197. package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.mjs +9 -9
  198. package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.mjs +7 -7
  199. package/{esm2020 → esm2022}/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.mjs +11 -11
  200. package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.mjs +7 -7
  201. package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.mjs +8 -8
  202. package/{esm2020 → esm2022}/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.mjs +6 -6
  203. package/{esm2020 → esm2022}/lib/Pages/shared/models/JobModels/JobCountsModel.mjs +2 -2
  204. package/{esm2020 → esm2022}/lib/Pages/shared/models/LicenseModel/LicenseModel.mjs +5 -5
  205. package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/EditResourceModel.mjs +7 -7
  206. package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.mjs +5 -5
  207. package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.mjs +2 -2
  208. package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupGroupModel.mjs +6 -6
  209. package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupItem.mjs +7 -7
  210. package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupModel.mjs +8 -8
  211. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.mjs +10 -10
  212. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.mjs +11 -11
  213. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.mjs +2 -2
  214. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.mjs +6 -6
  215. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.mjs +2 -2
  216. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.mjs +2 -2
  217. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateDTO.mjs +9 -9
  218. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.mjs +8 -8
  219. package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionModel.mjs +7 -7
  220. package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.mjs +7 -7
  221. package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.mjs +5 -5
  222. package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.mjs +5 -5
  223. package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.mjs +2 -2
  224. package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.mjs +2 -2
  225. package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderModel.mjs +5 -5
  226. package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.mjs +2 -2
  227. package/{esm2020 → esm2022}/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.mjs +7 -7
  228. package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.mjs +5 -5
  229. package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorModel.mjs +6 -6
  230. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.mjs +2 -2
  231. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey-submissio.mjs +13 -13
  232. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey.mjs +10 -10
  233. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/model.mjs +2 -2
  234. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-field-options.mjs +6 -6
  235. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-filed-value.mjs +7 -7
  236. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-form-options.mjs +7 -7
  237. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-publish.mjs +4 -4
  238. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +17 -17
  239. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question.mjs +10 -10
  240. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +8 -0
  241. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/ActivationModel.mjs +2 -2
  242. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/AddUserModel.mjs +36 -36
  243. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/DropdownsResponseModel.mjs +11 -11
  244. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/EditUserModel.mjs +8 -8
  245. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/IdentityModel.mjs +2 -2
  246. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UserSearchParamDTO.mjs +2 -2
  247. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UsersIDRequestModel.mjs +5 -5
  248. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.mjs +2 -2
  249. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityModel.mjs +16 -16
  250. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.mjs +2 -2
  251. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.mjs +7 -7
  252. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFCreationModel.mjs +7 -7
  253. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFVariableModel.mjs +8 -8
  254. package/{esm2020 → esm2022}/lib/Pages/shared/models/user.registration.mjs +7 -7
  255. package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +68 -0
  256. package/{esm2020 → esm2022}/lib/Pages/shared/modules/survey-routing.module.mjs +39 -39
  257. package/esm2022/lib/Pages/shared/modules/survey.module.mjs +129 -0
  258. package/esm2022/lib/Pages/shared/shared.module.mjs +31 -0
  259. package/{esm2020 → esm2022}/lib/Pages/shared/stylesbundle.service.mjs +44 -44
  260. package/{esm2020 → esm2022}/lib/Pages/start/index/index.component.mjs +25 -25
  261. package/{esm2020 → esm2022}/lib/Pages/start/start-routing.module.mjs +22 -22
  262. package/{esm2020 → esm2022}/lib/Pages/start/start.module.mjs +31 -31
  263. package/esm2022/lib/Pages/users/users.component.mjs +806 -0
  264. package/esm2022/lib/Pages/users/users.module.mjs +86 -0
  265. package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +535 -535
  266. package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +840 -840
  267. package/{esm2020 → esm2022}/lib/Pages/workflows/instance-info/instance-info.component.mjs +302 -302
  268. package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +793 -0
  269. package/{esm2020 → esm2022}/lib/Pages/workflows/version-info/version-info.component.mjs +137 -137
  270. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +209 -0
  271. package/{esm2020 → esm2022}/lib/Pages/workflows/workflows-routing.module.mjs +35 -35
  272. package/{esm2020 → esm2022}/lib/Pages/workflows/workflows.component.mjs +15 -15
  273. package/esm2022/lib/Pages/workflows/workflows.module.mjs +103 -0
  274. package/{esm2020 → esm2022}/lib/_metronic/configs/default-layout.config.mjs +95 -95
  275. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/DomHelpers.mjs +270 -270
  276. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/ElementAnimateUtil.mjs +166 -166
  277. package/esm2022/lib/_metronic/core/_utils/EventHandlerUtil.mjs +90 -0
  278. package/esm2022/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +49 -0
  279. package/esm2022/lib/_metronic/core/_utils/_DataUtil.mjs +48 -0
  280. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_ElementStyleUtil.mjs +16 -16
  281. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_TypesHelpers.mjs +48 -48
  282. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/OffsetModel.mjs +1 -1
  283. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/ViewPortModel.mjs +1 -1
  284. package/{esm2020 → esm2022}/lib/_metronic/core/components/MenuComponent.mjs +827 -827
  285. package/{esm2020 → esm2022}/lib/_metronic/core/components/_CookieComponent.mjs +52 -52
  286. package/esm2022/lib/_metronic/core/components/_DrawerComponent.mjs +288 -0
  287. package/{esm2020 → esm2022}/lib/_metronic/core/components/_ScrollComponent.mjs +252 -252
  288. package/esm2022/lib/_metronic/core/components/_ScrollTopComponent.mjs +113 -0
  289. package/esm2022/lib/_metronic/core/components/_ToggleComponent.mjs +157 -0
  290. package/{esm2020 → esm2022}/lib/_metronic/core/services/layout-init.service.mjs +155 -155
  291. package/{esm2020 → esm2022}/lib/_metronic/core/services/layout.service.mjs +150 -150
  292. package/esm2022/lib/_metronic/core/services/page-info.service.mjs +119 -0
  293. package/esm2022/lib/masterlayout-routing.module.mjs +41 -0
  294. package/{esm2020 → esm2022}/lib/masterlayout.component.mjs +118 -118
  295. package/esm2022/lib/masterlayout.module.mjs +188 -0
  296. package/{esm2020 → esm2022}/public-api.mjs +48 -48
  297. package/{fesm2020 → fesm2022}/bnsights-bbsf-admin-portal.mjs +26884 -26881
  298. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -0
  299. package/index.d.ts +5 -5
  300. package/lib/Pages/ActiveDirectories/active-directories.component.d.ts +8 -8
  301. package/lib/Pages/ActiveDirectories/active-directory/active-directory.component.d.ts +85 -87
  302. package/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.d.ts +97 -99
  303. package/lib/Pages/ActiveDirectories/active-directory-routing.module.d.ts +7 -7
  304. package/lib/Pages/ActiveDirectories/active-directory.module.d.ts +26 -26
  305. package/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.d.ts +13 -13
  306. package/lib/Pages/_layout/components/aside/aside.component.d.ts +24 -24
  307. package/lib/Pages/_layout/components/content/content.component.d.ts +13 -13
  308. package/lib/Pages/_layout/components/footer/footer.component.d.ts +14 -14
  309. package/lib/Pages/_layout/components/header/header.component.d.ts +24 -24
  310. package/lib/Pages/_layout/components/header/page-title/page-title.component.d.ts +22 -22
  311. package/lib/Pages/_layout/components/scripts-init/scripts-init.component.d.ts +18 -18
  312. package/lib/Pages/_layout/components/subheader/subheader.component.d.ts +17 -17
  313. package/lib/Pages/_layout/components/subheader/subheader.module.d.ts +9 -9
  314. package/lib/Pages/_layout/components/toolbar/toolbar.component.d.ts +18 -18
  315. package/lib/Pages/_layout/components/toolbar/toolbar.module.d.ts +10 -10
  316. package/lib/Pages/_layout/components/topbar/topbar.component.d.ts +44 -44
  317. package/lib/Pages/anonymouslayout/activation/activation.component.d.ts +32 -32
  318. package/lib/Pages/anonymouslayout/anonymouslayout-routing.module.d.ts +7 -7
  319. package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +24 -24
  320. package/lib/Pages/anonymouslayout/anonymouslayout.module.d.ts +21 -21
  321. package/lib/Pages/anonymouslayout/error/error.component.d.ts +25 -25
  322. package/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.d.ts +24 -24
  323. package/lib/Pages/anonymouslayout/login/login.component.d.ts +36 -36
  324. package/lib/Pages/anonymouslayout/rest-password/rest-password.component.d.ts +32 -32
  325. package/lib/Pages/anonymouslayout/upload-license/upload-license.component.d.ts +25 -25
  326. package/lib/Pages/authentication/auth-callback/auth-callback.component.d.ts +21 -21
  327. package/lib/Pages/authentication/authentication.component.d.ts +8 -8
  328. package/lib/Pages/authentication/authentication.module.d.ts +12 -12
  329. package/lib/Pages/authentication/authentication.routing.d.ts +7 -7
  330. package/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.d.ts +75 -75
  331. package/lib/Pages/configurations/auth-configuration/auth-configuration.component.d.ts +57 -58
  332. package/lib/Pages/configurations/configuration/configuration.component.d.ts +127 -129
  333. package/lib/Pages/configurations/configurations.component.d.ts +8 -8
  334. package/lib/Pages/configurations/configurations.module.d.ts +24 -24
  335. package/lib/Pages/configurations/configurations.routing.d.ts +7 -7
  336. package/lib/Pages/configurations/index.d.ts +6 -6
  337. package/lib/Pages/core/auth.module.d.ts +8 -8
  338. package/lib/Pages/core/authentication/admin.guard.d.ts +9 -9
  339. package/lib/Pages/core/authentication/auth.guard.d.ts +14 -14
  340. package/lib/Pages/core/authentication/auth.service.d.ts +35 -35
  341. package/lib/Pages/departments/department/department.component.d.ts +66 -68
  342. package/lib/Pages/departments/department-info/department-info.component.d.ts +58 -60
  343. package/lib/Pages/departments/departments-routing.module.d.ts +7 -7
  344. package/lib/Pages/departments/departments.component.d.ts +8 -8
  345. package/lib/Pages/departments/departments.module.d.ts +21 -21
  346. package/lib/Pages/documents/{add/add.component.d.ts → add-document/add-document.component.d.ts} +40 -40
  347. package/lib/Pages/documents/document-master-layouts/document-master-layouts.component.d.ts +51 -53
  348. package/lib/Pages/documents/document-template-info/document-template-info.component.d.ts +67 -67
  349. package/lib/Pages/documents/document-templates/document-templates.component.d.ts +87 -89
  350. package/lib/Pages/documents/documents.component.d.ts +8 -8
  351. package/lib/Pages/documents/documents.module.d.ts +27 -27
  352. package/lib/Pages/documents/documents.routing.d.ts +7 -7
  353. package/lib/Pages/documents/{edit/edit.component.d.ts → edit-document/edit-document.component.d.ts} +42 -42
  354. package/lib/Pages/documents/edit-document-template/edit-document-template.component.d.ts +39 -39
  355. package/lib/Pages/empty-data/empty-data.component.d.ts +14 -14
  356. package/lib/Pages/empty-data/empty-data.module.d.ts +8 -8
  357. package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +69 -71
  358. package/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.d.ts +23 -23
  359. package/lib/Pages/helpCenter/help-center-routing.module.d.ts +7 -7
  360. package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +65 -67
  361. package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +64 -66
  362. package/lib/Pages/helpCenter/help-center.module.d.ts +25 -25
  363. package/lib/Pages/helpCenter/help-centers.component.d.ts +8 -8
  364. package/lib/Pages/home/filter-pipe.d.ts +7 -7
  365. package/lib/Pages/home/home.component.d.ts +19 -19
  366. package/lib/Pages/home/home.module.d.ts +14 -14
  367. package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +86 -88
  368. package/lib/Pages/impersonation-rules/impersonation-rules.module.d.ts +19 -19
  369. package/lib/Pages/jobs/jobs/jobs.component.d.ts +76 -77
  370. package/lib/Pages/jobs/jobs.module.d.ts +17 -17
  371. package/lib/Pages/license/license/license.component.d.ts +59 -59
  372. package/lib/Pages/license/license.module.d.ts +15 -15
  373. package/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.d.ts +53 -53
  374. package/lib/Pages/localizations/localizations.component.d.ts +108 -110
  375. package/lib/Pages/localizations/localizations.module.d.ts +18 -18
  376. package/lib/Pages/logs/log/log.component.d.ts +34 -34
  377. package/lib/Pages/logs/logs-routing.module.d.ts +7 -7
  378. package/lib/Pages/logs/logs.component.d.ts +8 -8
  379. package/lib/Pages/logs/logs.module.d.ts +20 -20
  380. package/lib/Pages/lookups/lookup/lookup.component.d.ts +83 -85
  381. package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +58 -60
  382. package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +84 -86
  383. package/lib/Pages/lookups/lookups-routing.module.d.ts +7 -7
  384. package/lib/Pages/lookups/lookups.component.d.ts +8 -8
  385. package/lib/Pages/lookups/lookups.module.d.ts +24 -24
  386. package/lib/Pages/notifications/{add/add.component.d.ts → add-notification/add-notification.component.d.ts} +33 -33
  387. package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +43 -43
  388. package/lib/Pages/notifications/{edit/edit.component.d.ts → edit-notification/edit-notification.component.d.ts} +35 -35
  389. package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +37 -37
  390. package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +51 -53
  391. package/lib/Pages/notifications/notifications-routing.module.d.ts +7 -7
  392. package/lib/Pages/notifications/notifications.component.d.ts +8 -8
  393. package/lib/Pages/notifications/notifications.module.d.ts +28 -28
  394. package/lib/Pages/notifications/template-info/template-info.component.d.ts +86 -86
  395. package/lib/Pages/notifications/templates/templates.component.d.ts +100 -102
  396. package/lib/Pages/providers/provider/provider.component.d.ts +118 -120
  397. package/lib/Pages/providers/providers-routing.module.d.ts +7 -7
  398. package/lib/Pages/providers/providers.component.d.ts +8 -8
  399. package/lib/Pages/providers/providers.module.d.ts +21 -21
  400. package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +73 -75
  401. package/lib/Pages/publicHolidays/public-holidays-routing.module.d.ts +7 -7
  402. package/lib/Pages/publicHolidays/public-holidays.component.d.ts +8 -8
  403. package/lib/Pages/publicHolidays/public-holidays.module.d.ts +21 -21
  404. package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +56 -58
  405. package/lib/Pages/roles/permissions/permissions.component.d.ts +63 -65
  406. package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +67 -69
  407. package/lib/Pages/roles/roles-routing.module.d.ts +7 -7
  408. package/lib/Pages/roles/roles.component.d.ts +8 -8
  409. package/lib/Pages/roles/roles.module.d.ts +24 -24
  410. package/lib/Pages/sectors/sector/sector.component.d.ts +62 -64
  411. package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +60 -62
  412. package/lib/Pages/sectors/{department-info/department-info.component.d.ts → sectors-department-info/sectors-department-info.component.d.ts} +61 -63
  413. package/lib/Pages/sectors/sectors-routing.module.d.ts +7 -7
  414. package/lib/Pages/sectors/sectors.component.d.ts +8 -8
  415. package/lib/Pages/sectors/sectors.module.d.ts +23 -23
  416. package/lib/Pages/shared/Enums/ADType.d.ts +4 -4
  417. package/lib/Pages/shared/Enums/Enums.d.ts +47 -47
  418. package/lib/Pages/shared/Enums/ProviderType.d.ts +5 -5
  419. package/lib/Pages/shared/Enums/WFActivityType.d.ts +10 -10
  420. package/lib/Pages/shared/Enums/configuration/ConditionRHSType.d.ts +4 -4
  421. package/lib/Pages/shared/Enums/configuration/authentecation-configuration.d.ts +15 -15
  422. package/lib/Pages/shared/Pipes/survey-date.pipe.d.ts +12 -12
  423. package/lib/Pages/shared/Services/AccountService.service.d.ts +21 -21
  424. package/lib/Pages/shared/Services/ActiveDirectoryService.service.d.ts +18 -18
  425. package/lib/Pages/shared/Services/AnonymousLayoutService.service.d.ts +17 -17
  426. package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +20 -20
  427. package/lib/Pages/shared/Services/DepartmentService.service.d.ts +18 -18
  428. package/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.d.ts +15 -15
  429. package/lib/Pages/shared/Services/DocumentTemplateService.service.d.ts +26 -26
  430. package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +15 -15
  431. package/lib/Pages/shared/Services/ErrorService.service.d.ts +8 -8
  432. package/lib/Pages/shared/Services/GlobalErrorHandler.service.d.ts +10 -10
  433. package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +18 -18
  434. package/lib/Pages/shared/Services/HttpErrorInterceptor.service.d.ts +12 -12
  435. package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +15 -15
  436. package/lib/Pages/shared/Services/JobsService.service.d.ts +10 -10
  437. package/lib/Pages/shared/Services/LicenseService.service.d.ts +12 -12
  438. package/lib/Pages/shared/Services/LogsService.d.ts +10 -10
  439. package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +14 -14
  440. package/lib/Pages/shared/Services/LookupService.service.d.ts +25 -25
  441. package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +19 -19
  442. package/lib/Pages/shared/Services/PermissionsService.service.d.ts +15 -15
  443. package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +16 -16
  444. package/lib/Pages/shared/Services/SectorService.service.d.ts +18 -18
  445. package/lib/Pages/shared/Services/TemplateService.service.d.ts +34 -34
  446. package/lib/Pages/shared/Services/WorkFlowVersionService.service.d.ts +10 -10
  447. package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +19 -19
  448. package/lib/Pages/shared/Services/WorkflowInstanceService.service.d.ts +10 -10
  449. package/lib/Pages/shared/Services/WorkflowLogVariablesService.service.d.ts +10 -10
  450. package/lib/Pages/shared/Services/WorkflowService.service.d.ts +15 -15
  451. package/lib/Pages/shared/Services/WorkflowVariablesService.service.d.ts +15 -15
  452. package/lib/Pages/shared/Services/data.service.d.ts +9 -9
  453. package/lib/Pages/shared/Services/injectionModuleService.service.d.ts +50 -50
  454. package/lib/Pages/shared/Services/localizationsService.service .d.ts +28 -28
  455. package/lib/Pages/shared/Services/provider.service.d.ts +25 -25
  456. package/lib/Pages/shared/Services/survey-question.service.d.ts +19 -19
  457. package/lib/Pages/shared/Services/survey.service.d.ts +38 -38
  458. package/lib/Pages/shared/Services/userService.service.d.ts +29 -29
  459. package/lib/Pages/shared/base.service.d.ts +4 -4
  460. package/lib/Pages/shared/components/AdDirective.d.ts +8 -8
  461. package/lib/Pages/shared/components/external-url/external-url.component.d.ts +61 -61
  462. package/lib/Pages/shared/components/no-results/no-results.component.d.ts +10 -10
  463. package/lib/Pages/shared/components/survey/add-survey/add-survey.component.d.ts +40 -40
  464. package/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.d.ts +19 -19
  465. package/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.d.ts +19 -19
  466. package/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.d.ts +43 -43
  467. package/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.d.ts +19 -19
  468. package/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.d.ts +19 -19
  469. package/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.d.ts +19 -19
  470. package/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.d.ts +83 -83
  471. package/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.d.ts +19 -19
  472. package/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.d.ts +84 -84
  473. package/lib/Pages/shared/components/survey/survey-info/preview/preview.component.d.ts +40 -40
  474. package/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.d.ts +31 -31
  475. package/lib/Pages/shared/components/survey/survey-info/result-question/result.component.d.ts +27 -27
  476. package/lib/Pages/shared/components/survey/survey-info/survey-info.component.d.ts +119 -119
  477. package/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.d.ts +39 -39
  478. package/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.d.ts +32 -32
  479. package/lib/Pages/shared/components/survey/survey.component.d.ts +65 -65
  480. package/lib/Pages/shared/components/survey-form/survey-form.component.d.ts +41 -41
  481. package/lib/Pages/shared/components/survey-form-item/survey-form-item.component.d.ts +23 -23
  482. package/lib/Pages/shared/components/survey-layout/survey-layout.component.d.ts +8 -8
  483. package/lib/Pages/shared/config/environment.d.ts +1 -1
  484. package/lib/Pages/shared/constants.d.ts +129 -129
  485. package/lib/Pages/shared/filter/filter.component.d.ts +8 -8
  486. package/lib/Pages/shared/models/ADModels/ADMappingModel.d.ts +6 -6
  487. package/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.d.ts +28 -28
  488. package/lib/Pages/shared/models/AccountModels/forgotPasswordModel.d.ts +3 -3
  489. package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +64 -64
  490. package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +9 -9
  491. package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +4 -4
  492. package/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.d.ts +8 -8
  493. package/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.d.ts +16 -16
  494. package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.d.ts +13 -13
  495. package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.d.ts +7 -7
  496. package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +17 -17
  497. package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +9 -9
  498. package/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.d.ts +15 -15
  499. package/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.d.ts +5 -5
  500. package/lib/Pages/shared/models/JobModels/JobCountsModel.d.ts +8 -8
  501. package/lib/Pages/shared/models/LicenseModel/LicenseModel.d.ts +5 -5
  502. package/lib/Pages/shared/models/LocalizationModels/EditResourceModel.d.ts +7 -7
  503. package/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.d.ts +9 -9
  504. package/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.d.ts +5 -5
  505. package/lib/Pages/shared/models/Lookups/LookupGroupModel.d.ts +5 -5
  506. package/lib/Pages/shared/models/Lookups/LookupItem.d.ts +13 -13
  507. package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +13 -13
  508. package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +9 -9
  509. package/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.d.ts +15 -15
  510. package/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.d.ts +9 -9
  511. package/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.d.ts +9 -9
  512. package/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.d.ts +9 -9
  513. package/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.d.ts +8 -8
  514. package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +22 -22
  515. package/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.d.ts +11 -11
  516. package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +8 -8
  517. package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +10 -10
  518. package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +4 -4
  519. package/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.d.ts +6 -6
  520. package/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.d.ts +7 -7
  521. package/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.d.ts +7 -7
  522. package/lib/Pages/shared/models/ProviderModels/ProviderModel.d.ts +13 -13
  523. package/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.d.ts +6 -6
  524. package/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.d.ts +15 -15
  525. package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +4 -4
  526. package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +6 -6
  527. package/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.d.ts +3 -3
  528. package/lib/Pages/shared/models/SurveyModels/add-survey-submissio.d.ts +21 -21
  529. package/lib/Pages/shared/models/SurveyModels/add-survey.d.ts +18 -18
  530. package/lib/Pages/shared/models/SurveyModels/model.d.ts +3 -3
  531. package/lib/Pages/shared/models/SurveyModels/survey-field-options.d.ts +24 -24
  532. package/lib/Pages/shared/models/SurveyModels/survey-filed-value.d.ts +22 -22
  533. package/lib/Pages/shared/models/SurveyModels/survey-form-options.d.ts +8 -8
  534. package/lib/Pages/shared/models/SurveyModels/survey-publish.d.ts +15 -15
  535. package/lib/Pages/shared/models/SurveyModels/survey-question-option.d.ts +9 -9
  536. package/lib/Pages/shared/models/SurveyModels/survey-question.d.ts +21 -21
  537. package/lib/Pages/shared/models/SurveyModels/survey-utils.d.ts +5 -5
  538. package/lib/Pages/shared/models/UserModels/ActivationModel.d.ts +10 -10
  539. package/lib/Pages/shared/models/UserModels/AddUserModel.d.ts +33 -33
  540. package/lib/Pages/shared/models/UserModels/DropdownsResponseModel.d.ts +9 -9
  541. package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +25 -25
  542. package/lib/Pages/shared/models/UserModels/IdentityModel.d.ts +9 -9
  543. package/lib/Pages/shared/models/UserModels/UserSearchParamDTO.d.ts +8 -8
  544. package/lib/Pages/shared/models/UserModels/UsersIDRequestModel.d.ts +3 -3
  545. package/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.d.ts +9 -9
  546. package/lib/Pages/shared/models/WorkflowModels/WFActivityModel.d.ts +40 -40
  547. package/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.d.ts +13 -13
  548. package/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.d.ts +13 -13
  549. package/lib/Pages/shared/models/WorkflowModels/WFCreationModel.d.ts +10 -10
  550. package/lib/Pages/shared/models/WorkflowModels/WFVariableModel.d.ts +23 -23
  551. package/lib/Pages/shared/models/user.registration.d.ts +6 -6
  552. package/lib/Pages/shared/modules/public-survey.module.d.ts +15 -15
  553. package/lib/Pages/shared/modules/survey-routing.module.d.ts +7 -7
  554. package/lib/Pages/shared/modules/survey.module.d.ts +35 -35
  555. package/lib/Pages/shared/shared.module.d.ts +8 -8
  556. package/lib/Pages/shared/stylesbundle.service.d.ts +9 -9
  557. package/lib/Pages/start/index/index.component.d.ts +15 -15
  558. package/lib/Pages/start/start-routing.module.d.ts +7 -7
  559. package/lib/Pages/start/start.module.d.ts +11 -11
  560. package/lib/Pages/users/users.component.d.ts +138 -139
  561. package/lib/Pages/users/users.module.d.ts +18 -18
  562. package/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.d.ts +77 -77
  563. package/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.d.ts +82 -82
  564. package/lib/Pages/workflows/instance-info/instance-info.component.d.ts +81 -81
  565. package/lib/Pages/workflows/tabs/tabs.component.d.ts +126 -128
  566. package/lib/Pages/workflows/version-info/version-info.component.d.ts +41 -41
  567. package/lib/Pages/workflows/workflow/workflow.component.d.ts +54 -55
  568. package/lib/Pages/workflows/workflows-routing.module.d.ts +7 -7
  569. package/lib/Pages/workflows/workflows.component.d.ts +8 -8
  570. package/lib/Pages/workflows/workflows.module.d.ts +27 -27
  571. package/lib/_metronic/configs/default-layout.config.d.ts +139 -139
  572. package/lib/_metronic/core/_utils/DomHelpers.d.ts +26 -26
  573. package/lib/_metronic/core/_utils/ElementAnimateUtil.d.ts +13 -13
  574. package/lib/_metronic/core/_utils/EventHandlerUtil.d.ts +20 -20
  575. package/lib/_metronic/core/_utils/_DOMEventHandlerUtil.d.ts +6 -6
  576. package/lib/_metronic/core/_utils/_DataUtil.d.ts +8 -8
  577. package/lib/_metronic/core/_utils/_ElementStyleUtil.d.ts +5 -5
  578. package/lib/_metronic/core/_utils/_TypesHelpers.d.ts +10 -10
  579. package/lib/_metronic/core/_utils/models/OffsetModel.d.ts +4 -4
  580. package/lib/_metronic/core/_utils/models/ViewPortModel.d.ts +4 -4
  581. package/lib/_metronic/core/components/MenuComponent.d.ts +88 -88
  582. package/lib/_metronic/core/components/_CookieComponent.d.ts +25 -25
  583. package/lib/_metronic/core/components/_DrawerComponent.d.ts +49 -49
  584. package/lib/_metronic/core/components/_ScrollComponent.d.ts +31 -31
  585. package/lib/_metronic/core/components/_ScrollTopComponent.d.ts +24 -24
  586. package/lib/_metronic/core/components/_ToggleComponent.d.ts +36 -36
  587. package/lib/_metronic/core/services/layout-init.service.d.ts +18 -18
  588. package/lib/_metronic/core/services/layout.service.d.ts +38 -38
  589. package/lib/_metronic/core/services/page-info.service.d.ts +32 -32
  590. package/lib/masterlayout-routing.module.d.ts +11 -13
  591. package/lib/masterlayout.component.d.ts +63 -63
  592. package/lib/masterlayout.module.d.ts +34 -34
  593. package/package.json +25 -30
  594. package/public-api.d.ts +41 -41
  595. package/src/lib/assets/images/menu/Tools.svg +10 -4
  596. package/src/lib/assets/images/menu/authentication.svg +9 -0
  597. package/src/lib/assets/sass/style-rtl.scss +3 -3
  598. package/src/lib/assets/sass/style.scss +3 -3
  599. package/bnsights-bbsf-admin-portal-1.1.2.tgz +0 -0
  600. package/esm2020/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +0 -421
  601. package/esm2020/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +0 -528
  602. package/esm2020/lib/Pages/ActiveDirectories/active-directory.module.mjs +0 -108
  603. package/esm2020/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +0 -23
  604. package/esm2020/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +0 -100
  605. package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +0 -330
  606. package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +0 -157
  607. package/esm2020/lib/Pages/configurations/configuration/configuration.component.mjs +0 -801
  608. package/esm2020/lib/Pages/configurations/configurations.module.mjs +0 -104
  609. package/esm2020/lib/Pages/core/authentication/admin.guard.mjs +0 -17
  610. package/esm2020/lib/Pages/core/authentication/auth.service.mjs +0 -147
  611. package/esm2020/lib/Pages/departments/department/department.component.mjs +0 -220
  612. package/esm2020/lib/Pages/departments/department-info/department-info.component.mjs +0 -185
  613. package/esm2020/lib/Pages/departments/departments.module.mjs +0 -94
  614. package/esm2020/lib/Pages/documents/add/add.component.mjs +0 -136
  615. package/esm2020/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +0 -148
  616. package/esm2020/lib/Pages/documents/document-templates/document-templates.component.mjs +0 -437
  617. package/esm2020/lib/Pages/documents/documents.module.mjs +0 -114
  618. package/esm2020/lib/Pages/documents/documents.routing.mjs +0 -37
  619. package/esm2020/lib/Pages/documents/edit/edit.component.mjs +0 -169
  620. package/esm2020/lib/Pages/helpCenter/help-center/help-center.component.mjs +0 -294
  621. package/esm2020/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +0 -43
  622. package/esm2020/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +0 -242
  623. package/esm2020/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +0 -243
  624. package/esm2020/lib/Pages/helpCenter/help-center.module.mjs +0 -98
  625. package/esm2020/lib/Pages/home/home.component.mjs +0 -153
  626. package/esm2020/lib/Pages/home/home.module.mjs +0 -48
  627. package/esm2020/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +0 -443
  628. package/esm2020/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +0 -95
  629. package/esm2020/lib/Pages/jobs/jobs/jobs.component.mjs +0 -223
  630. package/esm2020/lib/Pages/jobs/jobs.module.mjs +0 -87
  631. package/esm2020/lib/Pages/license/license.module.mjs +0 -71
  632. package/esm2020/lib/Pages/localizations/localizations.component.mjs +0 -516
  633. package/esm2020/lib/Pages/localizations/localizations.module.mjs +0 -79
  634. package/esm2020/lib/Pages/logs/logs.module.mjs +0 -87
  635. package/esm2020/lib/Pages/lookups/lookup/lookup.component.mjs +0 -367
  636. package/esm2020/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +0 -187
  637. package/esm2020/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +0 -297
  638. package/esm2020/lib/Pages/lookups/lookups.module.mjs +0 -100
  639. package/esm2020/lib/Pages/notifications/add/add.component.mjs +0 -104
  640. package/esm2020/lib/Pages/notifications/edit/edit.component.mjs +0 -133
  641. package/esm2020/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +0 -148
  642. package/esm2020/lib/Pages/notifications/notifications-routing.module.mjs +0 -39
  643. package/esm2020/lib/Pages/notifications/notifications.module.mjs +0 -101
  644. package/esm2020/lib/Pages/notifications/templates/templates.component.mjs +0 -495
  645. package/esm2020/lib/Pages/providers/provider/provider.component.mjs +0 -615
  646. package/esm2020/lib/Pages/providers/providers.module.mjs +0 -91
  647. package/esm2020/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +0 -334
  648. package/esm2020/lib/Pages/publicHolidays/public-holidays.module.mjs +0 -94
  649. package/esm2020/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +0 -187
  650. package/esm2020/lib/Pages/roles/permissions/permissions.component.mjs +0 -226
  651. package/esm2020/lib/Pages/roles/permissionsets/permissionsets.component.mjs +0 -277
  652. package/esm2020/lib/Pages/roles/roles.module.mjs +0 -105
  653. package/esm2020/lib/Pages/sectors/department-info/department-info.component.mjs +0 -187
  654. package/esm2020/lib/Pages/sectors/sector/sector.component.mjs +0 -193
  655. package/esm2020/lib/Pages/sectors/sector-info/sector-info.component.mjs +0 -180
  656. package/esm2020/lib/Pages/sectors/sectors.module.mjs +0 -96
  657. package/esm2020/lib/Pages/shared/Enums/WFVariableDataType.mjs +0 -14
  658. package/esm2020/lib/Pages/shared/Services/injectionModuleService.service.mjs +0 -163
  659. package/esm2020/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +0 -192
  660. package/esm2020/lib/Pages/shared/components/survey-form/survey-form.component.mjs +0 -696
  661. package/esm2020/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +0 -84
  662. package/esm2020/lib/Pages/shared/constants.mjs +0 -130
  663. package/esm2020/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +0 -8
  664. package/esm2020/lib/Pages/shared/modules/public-survey.module.mjs +0 -68
  665. package/esm2020/lib/Pages/shared/modules/survey.module.mjs +0 -126
  666. package/esm2020/lib/Pages/shared/shared.module.mjs +0 -31
  667. package/esm2020/lib/Pages/users/users.component.mjs +0 -806
  668. package/esm2020/lib/Pages/users/users.module.mjs +0 -86
  669. package/esm2020/lib/Pages/workflows/tabs/tabs.component.mjs +0 -793
  670. package/esm2020/lib/Pages/workflows/workflow/workflow.component.mjs +0 -209
  671. package/esm2020/lib/Pages/workflows/workflows.module.mjs +0 -103
  672. package/esm2020/lib/_metronic/core/_utils/EventHandlerUtil.mjs +0 -90
  673. package/esm2020/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +0 -49
  674. package/esm2020/lib/_metronic/core/_utils/_DataUtil.mjs +0 -48
  675. package/esm2020/lib/_metronic/core/components/_DrawerComponent.mjs +0 -290
  676. package/esm2020/lib/_metronic/core/components/_ScrollTopComponent.mjs +0 -113
  677. package/esm2020/lib/_metronic/core/components/_ToggleComponent.mjs +0 -157
  678. package/esm2020/lib/_metronic/core/services/page-info.service.mjs +0 -119
  679. package/esm2020/lib/masterlayout-routing.module.mjs +0 -45
  680. package/esm2020/lib/masterlayout.module.mjs +0 -188
  681. package/fesm2015/bnsights-bbsf-admin-portal.mjs +0 -27293
  682. package/fesm2015/bnsights-bbsf-admin-portal.mjs.map +0 -1
  683. package/fesm2020/bnsights-bbsf-admin-portal.mjs.map +0 -1
  684. package/lib/Pages/shared/Enums/WFVariableDataType.d.ts +0 -12
@@ -1,793 +0,0 @@
1
- import { Component, ViewChild } from '@angular/core';
2
- import { FormGroup } from '@angular/forms';
3
- import { ControlLayout, EnglishArabicDTO, FilterItem, FilterType, InputType, MultiLingualTextBoxOptions, PagingOptions, TextBoxOptions, ToggleSlideOptions, DropdownOptions, FormOptions, PagingActionMode, ForceDirection, ConfirmationModalOptions, CheckBoxOptions } from '@bnsights/bbsf-controls';
4
- import { WFVariableModel } from '../../shared/models/WorkflowModels/WFVariableModel';
5
- import { PageInfoService } from '../../../_metronic/core/services/page-info.service';
6
- import { VariableLookupModel } from '../../shared/models/WorkflowModels/VariableLookupModel';
7
- import { WFActivityVariableDTO, WFActivityVariablesModel } from '../../shared/models/WorkflowModels/WFActivityVariablesModel';
8
- import { VariableDataType } from '../../shared/constants';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@bnsights/bbsf-utilities";
11
- import * as i2 from "./../../shared/Services/WorkflowService.service";
12
- import * as i3 from "@angular/router";
13
- import * as i4 from "../../shared/Services/WorkflowVariablesService.service";
14
- import * as i5 from "../../shared/Services/WorkflowActivityService.service";
15
- import * as i6 from "../../../_metronic/core/services/page-info.service";
16
- import * as i7 from "@ng-bootstrap/ng-bootstrap";
17
- import * as i8 from "@angular/common";
18
- import * as i9 from "@angular/forms";
19
- import * as i10 from "ng-block-ui";
20
- import * as i11 from "@bnsights/bbsf-controls";
21
- import * as i12 from "ng-inline-svg";
22
- import * as i13 from "../../empty-data/empty-data.component";
23
- export class TabsComponent {
24
- //End Workflow Activity
25
- constructor(authService, WorkflowService, activatedRoute, WorkflowVariablesService, workflowActivityService, pageInfoService, modalService, environmentService, bbsfTranslateService, utilityService, requestHandlerService) {
26
- this.authService = authService;
27
- this.WorkflowService = WorkflowService;
28
- this.activatedRoute = activatedRoute;
29
- this.WorkflowVariablesService = WorkflowVariablesService;
30
- this.workflowActivityService = workflowActivityService;
31
- this.pageInfoService = pageInfoService;
32
- this.modalService = modalService;
33
- this.environmentService = environmentService;
34
- this.bbsfTranslateService = bbsfTranslateService;
35
- this.utilityService = utilityService;
36
- this.requestHandlerService = requestHandlerService;
37
- //Page requirements
38
- this.Pagetitle = "";
39
- //WF
40
- // Details Controls
41
- this.DetailsForm = new FormGroup({});
42
- this.ShowWorkflowDetails = false;
43
- this.publishControlLoaded = false;
44
- //Start WorkFlow Version
45
- this.WorkFlowVersionApiUrl = "/api/admin/WFVersion/";
46
- this.WorkflowVersionForm = new FormGroup({});
47
- this.WorkflowVersionPagingResult = [];
48
- this.IsFilterLoaded = false;
49
- //End WorkFlow version
50
- //Start Workflow Variables
51
- //Workflow Variables controls
52
- this.WorkflowVariableApiUrl = "/api/admin/WorkflowVariable/";
53
- this.WorkflowVariableForm = new FormGroup({});
54
- this.DataTypeList = [];
55
- this.WorkflowVariablePagingResult = [];
56
- this.IsWorkflowVariableFilterLoaded = false;
57
- //Add Model Controls
58
- this.AddWorkflowVariableForm = new FormGroup({});
59
- this.AddWorkflowVariableFormOptions = new FormOptions;
60
- //WF variable lookups
61
- this.addWFVariablesLookupOptions = [];
62
- this.showAddLookupsTable = false;
63
- this.addLastLookupIndex = 0;
64
- //Edit Model Controls
65
- this.EditWorkflowVariableForm = new FormGroup({});
66
- this.EditWorkflowVariableFormOptions = new FormOptions;
67
- //WF variable lookups
68
- this.editWFVariablesLookupOptions = [];
69
- this.showEditLookupsTable = false;
70
- this.editLastLookupIndex = 0;
71
- //End Workflow Variable
72
- //strat Workflow Activity
73
- //Workflow Activity Controls
74
- this.ActivityApiUrl = "/api/admin/WorkflowActivity/";
75
- this.ActivityTypeList = [];
76
- this.workflowActivityForm = new FormGroup({});
77
- this.ActivityPagingResult = [];
78
- this.IsworkflowActivityFilterLoaded = false;
79
- //Add WF variables to activity controls
80
- this.addWorkflowVariabletoActivityForm = new FormGroup({});
81
- this.addWorkflowVariabletoActivityFormOptions = new FormOptions;
82
- this.activityWFVariableOptions = [];
83
- this.lastActivityWFVariableIndex = 0;
84
- this.activityVariablesList = [];
85
- this.publishWorkFlow = (id) => {
86
- return this.WorkflowService.publishWorkFlow(id);
87
- };
88
- this.publishWorkFlowOnSuccess = (result) => {
89
- this.WorkflowDetails.isPublished = true;
90
- };
91
- this.getAddWFVariableModel = () => {
92
- let paramArray = [];
93
- let ResultModel = this.AddWorkflowVariableForm.value;
94
- let addModel = new WFVariableModel();
95
- addModel.Name = ResultModel.Name;
96
- addModel.SysName = ResultModel.SysName;
97
- addModel.WorkflowVersionID_GUID = this.VersionId;
98
- addModel.DataTypeItemID_GUID = ResultModel.DataTypeItemID_GUID;
99
- addModel.IsConstant = ResultModel.IsConstant;
100
- for (let j = 0; j < this.addLastLookupIndex; j++) {
101
- let addLookupNameEN = ResultModel["AddLookupNameEN" + j];
102
- if (addLookupNameEN == undefined)
103
- continue;
104
- let addLookupNameAR = ResultModel["AddLookupNameAR" + j];
105
- let addLookupValue = ResultModel["AddLookupValue" + j];
106
- let lookup = new VariableLookupModel();
107
- lookup.NameEN = addLookupNameEN;
108
- lookup.NameAR = addLookupNameAR;
109
- lookup.Value = addLookupValue;
110
- addModel.variableLookupDTOs.push(lookup);
111
- }
112
- paramArray.push(addModel);
113
- return paramArray;
114
- };
115
- this.getAddWFVariableFunction = (AddModel) => {
116
- return this.WorkflowVariablesService.addVariable(AddModel);
117
- };
118
- this.getEditWFVariableModel = () => {
119
- let paramArray = [];
120
- let ResultModel = this.EditWorkflowVariableForm.value;
121
- let EditModel = new WFVariableModel();
122
- EditModel.ID_GUID = this.WorkflowVariableId;
123
- EditModel.Name = ResultModel.Name;
124
- EditModel.SysName = ResultModel.SysName;
125
- EditModel.WorkflowVersionID_GUID = this.VersionId;
126
- EditModel.DataTypeItemID_GUID = ResultModel.DataTypeItemID_GUID;
127
- EditModel.IsConstant = ResultModel.IsConstant;
128
- for (let j = 0; j < this.editLastLookupIndex; j++) {
129
- let editLookupID = ResultModel["EditLookupID" + j];
130
- if (editLookupID == undefined)
131
- continue;
132
- let editLookupNameEN = ResultModel["EditLookupNameEN" + j];
133
- let editLookupNameAR = ResultModel["EditLookupNameAR" + j];
134
- let editLookupValue = ResultModel["EditLookupValue" + j];
135
- let lookup = new VariableLookupModel();
136
- lookup.ID_GUID = editLookupID;
137
- lookup.NameEN = editLookupNameEN;
138
- lookup.NameAR = editLookupNameAR;
139
- lookup.Value = editLookupValue;
140
- EditModel.variableLookupDTOs.push(lookup);
141
- }
142
- paramArray.push(EditModel);
143
- return paramArray;
144
- };
145
- this.getEditWFVariableFunction = (EditModel) => {
146
- return this.WorkflowVariablesService.editVariable(EditModel);
147
- };
148
- this.getaddWFVariabletoActivityModel = () => {
149
- let paramArray = [];
150
- let ResultModel = this.addWorkflowVariabletoActivityForm.value;
151
- let model = new WFActivityVariablesModel();
152
- model.ActivityID_GUID = this.activityID;
153
- for (let j = 0; j < this.lastActivityWFVariableIndex; j++) {
154
- let variablesIsSystem = ResultModel["variableIsSystem" + j];
155
- if (variablesIsSystem == undefined)
156
- continue;
157
- let variableIsEnabled;
158
- let variableIsMandatory;
159
- let variableIsVisible;
160
- let activityVariable = new WFActivityVariableDTO();
161
- if (variablesIsSystem) {
162
- let variableID = ResultModel["variableID" + j];
163
- activityVariable.ID_GUID = variableID;
164
- variableIsEnabled = ResultModel["variableIsEnabledHidden" + j];
165
- variableIsMandatory = ResultModel["variableIsMandatoryHidden" + j];
166
- variableIsVisible = ResultModel["variableIsVisibleHidden" + j];
167
- }
168
- else {
169
- let variableID = ResultModel["variableIDdropdown" + j];
170
- activityVariable.ID_GUID = variableID;
171
- variableIsEnabled = ResultModel["variableIsEnabled" + j];
172
- variableIsMandatory = ResultModel["variableIsMandatory" + j];
173
- variableIsVisible = ResultModel["variableIsVisible" + j];
174
- }
175
- activityVariable.IsSystem = variablesIsSystem;
176
- activityVariable.IsEnabled = variableIsEnabled;
177
- activityVariable.IsMandatory = variableIsMandatory;
178
- activityVariable.IsVisible = variableIsVisible;
179
- model.activityVariableDTOs.push(activityVariable);
180
- }
181
- paramArray.push(model);
182
- return paramArray;
183
- };
184
- this.getaddWFVariabletoActivityFunction = (variablesModel) => {
185
- return this.workflowActivityService.addActivityWFVariables(variablesModel);
186
- };
187
- this.activatedRoute.params.subscribe(params => {
188
- this.WorkflowId = params['id'];
189
- this.VersionId = params['vid'];
190
- });
191
- }
192
- async ngOnInit() {
193
- this.bbsfTranslateService.onLangChange.subscribe((event) => {
194
- this.ngOnInit();
195
- });
196
- this.getDetails();
197
- }
198
- //WF functions
199
- getDetails() {
200
- this.ShowWorkflowDetails = false;
201
- this.IsFilterLoaded = false;
202
- this.IsWorkflowVariableFilterLoaded = false;
203
- this.IsworkflowActivityFilterLoaded = false;
204
- this.WorkflowService.getDetails(this.WorkflowId).subscribe((result) => {
205
- this.WorkflowDetails = result;
206
- var Name = new EnglishArabicDTO();
207
- Name.Arabic = this.WorkflowDetails.name.arabic;
208
- Name.English = this.WorkflowDetails.name.english;
209
- this.Pagetitle = this.WorkflowDetails.nameStr;
210
- PageInfoService.PageTitle = this.Pagetitle;
211
- PageInfoService.PageBreadcrumbs = [
212
- { title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
213
- { title: '', path: '', isSeparator: true, isActive: false },
214
- { title: this.utilityService.getResourceValue("Workflows"), path: '/Admin/Workflows/workflow', isSeparator: false, isActive: false },
215
- { title: '', path: '', isSeparator: true, isActive: false }
216
- ];
217
- this.pageInfoService.calculateTitle();
218
- this.pageInfoService.calculateBreadcrumbs();
219
- this.NameMultilingualTextBox = new MultiLingualTextBoxOptions();
220
- this.NameMultilingualTextBox.ArabicLabelKey = "NameInArabic";
221
- this.NameMultilingualTextBox.EnglishLabelKey = "NameInEnglish";
222
- this.NameMultilingualTextBox.IsRequired = true;
223
- this.NameMultilingualTextBox.Name = "Name";
224
- this.NameMultilingualTextBox.Value = Name;
225
- this.NameMultilingualTextBox.IsDisabled = true;
226
- var Description = new EnglishArabicDTO();
227
- Description.Arabic = this.WorkflowDetails.description.arabic;
228
- Description.English = this.WorkflowDetails.description.english;
229
- this.DescriptionMultilingualTextBox = new MultiLingualTextBoxOptions();
230
- this.DescriptionMultilingualTextBox.ArabicLabelKey = "DescriptionInArabic";
231
- this.DescriptionMultilingualTextBox.EnglishLabelKey = "DescriptionInEnglish";
232
- this.DescriptionMultilingualTextBox.IsRequired = true;
233
- this.DescriptionMultilingualTextBox.Name = "Description";
234
- this.DescriptionMultilingualTextBox.Value = Description;
235
- this.DescriptionMultilingualTextBox.IsDisabled = true;
236
- this.SysName = new TextBoxOptions();
237
- this.SysName.Name = "SysName";
238
- this.SysName.LabelKey = "SysName";
239
- this.SysName.Type = InputType.Text;
240
- this.SysName.IsDisabled = true;
241
- this.SysName.Value = this.WorkflowDetails.sysName;
242
- this.Active = new TextBoxOptions();
243
- this.Active.Name = "Active";
244
- this.Active.LabelKey = "Active";
245
- this.Active.Type = InputType.Text;
246
- this.Active.IsDisabled = true;
247
- this.Active.Value = this.WorkflowDetails.isActive;
248
- this.Published = new TextBoxOptions();
249
- this.Published.Name = "Published";
250
- this.Published.LabelKey = "Published";
251
- this.Published.Type = InputType.Text;
252
- this.Published.IsDisabled = true;
253
- this.Published.Value = this.WorkflowDetails.isPublished;
254
- this.IsFilterLoaded = false;
255
- this.IsWorkflowVariableFilterLoaded = false;
256
- this.IsworkflowActivityFilterLoaded = false;
257
- this.ShowWorkflowDetails = true;
258
- this.utilityService.stopBlockUI();
259
- }, (error) => {
260
- this.utilityService.stopBlockUI();
261
- });
262
- }
263
- //Delete provider
264
- showPublishWFModal(id) {
265
- //array sent to service function
266
- let paramArray = [];
267
- paramArray.push(id);
268
- this.publishWFConfirmationOptions = new ConfirmationModalOptions();
269
- this.publishWFConfirmationOptions.ServiceSubmitFunction = this.publishWorkFlow;
270
- this.publishWFConfirmationOptions.ServiceSubmitModel = paramArray;
271
- this.publishWFConfirmationOptions.ConfirmationHeader = this.utilityService.getResourceValue("PublishWorkFflow");
272
- this.publishWFConfirmationOptions.ConfirmationBody = this.utilityService.getResourceValue("PublishWorkFflowConfirmation");
273
- this.publishWFConfirmationOptions.SubmitButtonText = this.utilityService.getResourceValue("Publish");
274
- this.publishWFConfirmationOptions.SuccessNotificationMessage = this.utilityService.getResourceValue("PublishedSuccessfully");
275
- this.publishWFConfirmationOptions.OnSuccessHandler = this.publishWorkFlowOnSuccess;
276
- this.publishControlLoaded = true;
277
- setTimeout(() => {
278
- this.publishConfirmationModalControl.showModal();
279
- }, 200);
280
- }
281
- //WF version functions
282
- initializeVersion() {
283
- this.ShowWorkflowDetails = false;
284
- this.IsFilterLoaded = false;
285
- this.IsWorkflowVariableFilterLoaded = false;
286
- this.IsworkflowActivityFilterLoaded = false;
287
- this.utilityService.startBlockUI();
288
- // TextBox inti
289
- this.searchTextBox = new TextBoxOptions();
290
- this.searchTextBox.Name = "searchTextBox";
291
- this.searchTextBox.Type = InputType.Text;
292
- this.searchTextBox.Placeholder = this.utilityService.getResourceValue("SearchByName");
293
- this.searchTextBox.HideLabel = true;
294
- this.TextInputFilter = new FilterItem();
295
- this.TextInputFilter.FormControlName = "searchTextBox";
296
- this.TextInputFilter.ActionParameterName = "searchText";
297
- this.TextInputFilter.IsFormControl = true;
298
- this.TextInputFilter.FilterType = FilterType.TextBox;
299
- this.WorkflowIdTextBox = new TextBoxOptions();
300
- this.WorkflowIdTextBox.Name = "WorkflowIdTextBox";
301
- this.WorkflowIdTextBox.HideLabel = true;
302
- this.WorkflowIdTextBox.Type = InputType.Text;
303
- this.WorkflowIdTextBox.Value = this.WorkflowId;
304
- this.WorkflowIdFilter = new FilterItem();
305
- this.WorkflowIdFilter.FormControlName = "WorkflowIdTextBox";
306
- this.WorkflowIdFilter.ActionParameterName = "WfID";
307
- this.WorkflowIdFilter.IsFormControl = true;
308
- this.WorkflowIdFilter.FilterType = FilterType.TextBox;
309
- this.WorkflowVersionPaging = new PagingOptions();
310
- this.WorkflowVersionPaging.ActionPostURL = this.WorkFlowVersionApiUrl + 'GetVersionsListing';
311
- this.WorkflowVersionPaging.OnKeyPressFiltersControlNames = ["searchTextBox", "WorkflowIdTextBox"];
312
- this.WorkflowVersionPaging.Filters = [this.TextInputFilter, this.WorkflowIdFilter];
313
- this.WorkflowVersionPaging.ValidationToken = this.authService.authorizationHeaderValue();
314
- this.IsWorkflowVariableFilterLoaded = false;
315
- this.IsworkflowActivityFilterLoaded = false;
316
- setTimeout(() => {
317
- this.IsFilterLoaded = true;
318
- this.utilityService.stopBlockUI();
319
- }, 10);
320
- }
321
- setWorkflowVersionListResult(result) {
322
- this.utilityService.stopBlockUI();
323
- this.WorkflowVersionPagingResult = result;
324
- }
325
- //WF variables Functions
326
- setWorkflowVariableListResult(result) {
327
- this.utilityService.stopBlockUI();
328
- this.WorkflowVariablePagingResult = result;
329
- }
330
- //initialize WF variables page
331
- initializeWorkflowVariables() {
332
- // TextBox init
333
- this.WorkflowVariablesearchTextBox = new TextBoxOptions();
334
- this.WorkflowVariablesearchTextBox.Name = "WorkflowVariablesearchTextBox";
335
- this.WorkflowVariablesearchTextBox.Type = InputType.Text;
336
- this.WorkflowVariablesearchTextBox.Placeholder = this.utilityService.getResourceValue("SearchByName");
337
- this.WorkflowVariablesearchTextBox.HideLabel = true;
338
- this.TextInputFilter = new FilterItem();
339
- this.TextInputFilter.FormControlName = "WorkflowVariablesearchTextBox";
340
- this.TextInputFilter.ActionParameterName = "searchText";
341
- this.TextInputFilter.IsFormControl = true;
342
- this.TextInputFilter.FilterType = FilterType.TextBox;
343
- this.VerisonIdTextBox = new TextBoxOptions();
344
- this.VerisonIdTextBox.Name = "VerisonIdTextBox";
345
- this.VerisonIdTextBox.HideLabel = true;
346
- this.VerisonIdTextBox.Type = InputType.Text;
347
- this.VerisonIdTextBox.Value = this.WorkflowId;
348
- this.VerisonIdTextInputFilter = new FilterItem();
349
- this.VerisonIdTextInputFilter.FormControlName = "VerisonIdTextBox";
350
- this.VerisonIdTextInputFilter.ActionParameterName = "versionID";
351
- this.VerisonIdTextInputFilter.IsFormControl = true;
352
- this.VerisonIdTextInputFilter.FilterType = FilterType.TextBox;
353
- this.WorkflowVariablePaging = new PagingOptions();
354
- this.WorkflowVariablePaging.ActionPostURL = this.WorkflowVariableApiUrl + 'GetVariableListing';
355
- this.WorkflowVariablePaging.OnKeyPressFiltersControlNames = ["WorkflowVariablesearchTextBox", "VerisonIdTextBox"];
356
- this.WorkflowVariablePaging.Filters = [this.TextInputFilter, this.VerisonIdTextInputFilter];
357
- this.WorkflowVariablePaging.ValidationToken = this.authService.authorizationHeaderValue();
358
- this.ShowWorkflowDetails = false;
359
- this.IsFilterLoaded = false;
360
- this.IsworkflowActivityFilterLoaded = false;
361
- setTimeout(() => {
362
- this.IsWorkflowVariableFilterLoaded = true;
363
- this.utilityService.stopBlockUI();
364
- }, 10);
365
- }
366
- //Add,Edit WF variable shared functions
367
- WFVariableTypeOnChange(type, isAdd) {
368
- type = type.toLowerCase();
369
- if (isAdd) {
370
- for (let i = 0; i < this.addLastLookupIndex; i++) {
371
- this.AddWorkflowVariableForm.removeControl("AddLookupNameEN" + i);
372
- this.AddWorkflowVariableForm.removeControl("AddLookupNameAR" + i);
373
- this.AddWorkflowVariableForm.removeControl("LookupValue" + i);
374
- }
375
- this.addWFVariablesLookupOptions = [];
376
- this.addLastLookupIndex = 0;
377
- if (type == VariableDataType.SingleSelection || type == VariableDataType.MultiSelection)
378
- this.showAddLookupsTable = true;
379
- else
380
- this.showAddLookupsTable = false;
381
- }
382
- else {
383
- for (let i = 0; i < this.editLastLookupIndex; i++) {
384
- this.EditWorkflowVariableForm.removeControl("EditLookupID" + i);
385
- this.EditWorkflowVariableForm.removeControl("EditLookupNameEN" + i);
386
- this.EditWorkflowVariableForm.removeControl("EditLookupNameAR" + i);
387
- this.EditWorkflowVariableForm.removeControl("EditLookupValue" + i);
388
- }
389
- this.editWFVariablesLookupOptions = [];
390
- this.editLastLookupIndex = 0;
391
- if (type == VariableDataType.SingleSelection || type == VariableDataType.MultiSelection)
392
- this.showEditLookupsTable = true;
393
- else
394
- this.showEditLookupsTable = false;
395
- }
396
- }
397
- initializeWFVariableLookupOptions(isAdd) {
398
- let lookupOptions = [];
399
- let objectLookupOptions = [];
400
- let actionIndicate;
401
- let index;
402
- if (isAdd) {
403
- actionIndicate = "Add";
404
- index = this.addLastLookupIndex;
405
- }
406
- else {
407
- actionIndicate = "Edit";
408
- index = this.editLastLookupIndex;
409
- }
410
- //For edit only
411
- let lookupID = new TextBoxOptions();
412
- lookupID.Name = actionIndicate + "LookupID" + index;
413
- lookupID.HideLabel = true;
414
- lookupID.Type = InputType.Text;
415
- let lookupNameEN = new TextBoxOptions();
416
- lookupNameEN.Name = actionIndicate + "LookupNameEN" + index;
417
- lookupNameEN.HideLabel = true;
418
- lookupNameEN.Type = InputType.Text;
419
- lookupNameEN.IsRequired = true;
420
- lookupNameEN.MaxLength = 255;
421
- let lookupNameAR = new TextBoxOptions();
422
- lookupNameAR.Name = actionIndicate + "LookupNameAR" + index;
423
- lookupNameAR.HideLabel = true;
424
- lookupNameAR.Type = InputType.Text;
425
- lookupNameAR.IsRequired = true;
426
- lookupNameAR.MaxLength = 255;
427
- let lookupValue = new TextBoxOptions();
428
- lookupValue.Name = actionIndicate + "LookupValue" + index;
429
- lookupValue.HideLabel = true;
430
- lookupValue.Type = InputType.Text;
431
- lookupValue.IsRequired = true;
432
- lookupValue.MaxLength = 2000;
433
- if (isAdd)
434
- objectLookupOptions.push(lookupNameEN, lookupNameAR, lookupValue);
435
- else
436
- objectLookupOptions.push(lookupID, lookupNameEN, lookupNameAR, lookupValue);
437
- lookupOptions.push(objectLookupOptions);
438
- index += 1;
439
- return [lookupOptions, index];
440
- }
441
- deleteWFVariableLookup(deletedLookup, isAdd) {
442
- if (isAdd) {
443
- let deletedLookupIndex = this.addWFVariablesLookupOptions.indexOf(deletedLookup);
444
- if (deletedLookupIndex !== -1) {
445
- this.addWFVariablesLookupOptions.splice(deletedLookupIndex, 1);
446
- for (var i = 0; i < deletedLookup.length; i++) {
447
- this.AddWorkflowVariableForm.removeControl(deletedLookup[i].Name);
448
- }
449
- }
450
- }
451
- else {
452
- let deletedLookupIndex = this.editWFVariablesLookupOptions.indexOf(deletedLookup);
453
- if (deletedLookupIndex !== -1) {
454
- this.editWFVariablesLookupOptions.splice(deletedLookupIndex, 1);
455
- for (var i = 0; i < deletedLookup.length; i++) {
456
- this.EditWorkflowVariableForm.removeControl(deletedLookup[i].Name);
457
- }
458
- }
459
- }
460
- }
461
- //Add WF variable
462
- showAddWorkflowVariableModal(AddWorkflowVariableModal) {
463
- this.utilityService.startBlockUI();
464
- this.WorkflowVariablesService.loadAddDropdowns().subscribe((result) => {
465
- let resultObj = result;
466
- this.DataTypeList = resultObj.dataTypeList;
467
- this.addWFVariablesLookupOptions = [];
468
- this.addLastLookupIndex = 0;
469
- this.showAddLookupsTable = false;
470
- this.AddWorkflowVariableForm = new FormGroup({});
471
- this.AddWorkflowVariableFormOptions = new FormOptions();
472
- this.AddWorkflowVariableFormOptions.FormGroup = this.AddWorkflowVariableForm;
473
- this.AddWorkflowVariableFormOptions.GetModelFunction = this.getAddWFVariableModel;
474
- this.AddWorkflowVariableFormOptions.ServiceSubmitFunction = this.getAddWFVariableFunction;
475
- this.AddWorkflowVariableFormOptions.PagingReference = this.WorkflowVariablePagingViewElement;
476
- this.AddWFVariableName = new MultiLingualTextBoxOptions();
477
- this.AddWFVariableName.Name = "Name";
478
- this.AddWFVariableName.ArabicLabelKey = "NameInArabic";
479
- this.AddWFVariableName.EnglishLabelKey = "NameInEnglish";
480
- this.AddWFVariableName.IsRequired = true;
481
- this.AddWFVariableName.MaxLength = 255;
482
- this.AddWFVariableSysName = new TextBoxOptions();
483
- this.AddWFVariableSysName.Name = "SysName";
484
- this.AddWFVariableSysName.LabelKey = "SysName";
485
- this.AddWFVariableSysName.Type = InputType.Text;
486
- this.AddWFVariableSysName.Value = null;
487
- this.AddWFVariableSysName.MaxLength = 100;
488
- this.AddWFVariableDataType = new DropdownOptions();
489
- this.AddWFVariableDataType.Name = "DataTypeItemID_GUID";
490
- this.AddWFVariableDataType.LabelKey = "DataType";
491
- this.AddWFVariableDataType.DataSource = this.DataTypeList;
492
- this.AddWFVariableDataType.SingleSelection = true;
493
- this.AddWFVariableDataType.AllowSearchFilter = true;
494
- this.AddWFVariableDataType.Placeholder = "";
495
- this.AddWFVariableConstant = new ToggleSlideOptions();
496
- this.AddWFVariableConstant.Name = "IsConstant";
497
- this.AddWFVariableConstant.LabelKey = "Constant";
498
- this.AddWFVariableConstant.ViewType = ControlLayout.Horizontal;
499
- this.modalService.open(AddWorkflowVariableModal);
500
- this.utilityService.stopBlockUI();
501
- });
502
- }
503
- addWFVariableLookupinAddMode() {
504
- let result = this.initializeWFVariableLookupOptions(true);
505
- this.addWFVariablesLookupOptions = this.addWFVariablesLookupOptions.concat(result[0]);
506
- this.addLastLookupIndex = result[1];
507
- }
508
- //Edit WF variable
509
- showEditWorkflowVariableModal(WFVariableID, EditWorkflowVariableModal) {
510
- this.utilityService.startBlockUI();
511
- this.WorkflowVariableId = WFVariableID;
512
- this.WorkflowVariablesService.getEditWorkFlowVariableData(WFVariableID).subscribe((result) => {
513
- let resultObj = result;
514
- let workflowVariable = resultObj.model;
515
- workflowVariable.dataTypeItemID_GUID = workflowVariable.dataTypeItemID_GUID?.toLowerCase();
516
- let lists = resultObj.lists;
517
- this.DataTypeList = lists.dataTypeList;
518
- this.editWFVariablesLookupOptions = [];
519
- this.editLastLookupIndex = 0;
520
- this.showEditLookupsTable = false;
521
- this.EditWorkflowVariableForm = new FormGroup({});
522
- this.EditWorkflowVariableFormOptions = new FormOptions();
523
- this.EditWorkflowVariableFormOptions.FormGroup = this.EditWorkflowVariableForm;
524
- this.EditWorkflowVariableFormOptions.GetModelFunction = this.getEditWFVariableModel;
525
- this.EditWorkflowVariableFormOptions.ServiceSubmitFunction = this.getEditWFVariableFunction;
526
- this.EditWorkflowVariableFormOptions.PagingReference = this.WorkflowVariablePagingViewElement;
527
- this.EditWorkflowVariableFormOptions.PagingActionMode = PagingActionMode.Update;
528
- let name = new EnglishArabicDTO();
529
- name.Arabic = workflowVariable.name.arabic;
530
- name.English = workflowVariable.name.english;
531
- this.EditWFVariableName = new MultiLingualTextBoxOptions();
532
- this.EditWFVariableName.Name = "Name";
533
- this.EditWFVariableName.ArabicLabelKey = "NameInArabic";
534
- this.EditWFVariableName.EnglishLabelKey = "NameInEnglish";
535
- this.EditWFVariableName.IsRequired = true;
536
- this.EditWFVariableName.Value = name;
537
- this.EditWFVariableName.MaxLength = 255;
538
- this.EditWFVariableSysName = new TextBoxOptions();
539
- this.EditWFVariableSysName.Name = "SysName";
540
- this.EditWFVariableSysName.LabelKey = "SysName";
541
- this.EditWFVariableSysName.Type = InputType.Text;
542
- this.EditWFVariableSysName.Value = workflowVariable.sysName;
543
- this.EditWFVariableSysName.MaxLength = 100;
544
- this.EditWFVariableDataType = new DropdownOptions();
545
- this.EditWFVariableDataType.Name = "DataTypeItemID_GUID";
546
- this.EditWFVariableDataType.LabelKey = "DataType";
547
- this.EditWFVariableDataType.DataSource = this.DataTypeList;
548
- this.EditWFVariableDataType.SingleSelection = true;
549
- this.EditWFVariableDataType.AllowSearchFilter = true;
550
- this.EditWFVariableDataType.Placeholder = "";
551
- this.EditWFVariableDataType.SelectedItems = workflowVariable.dataTypeItemID_GUID?.toLowerCase();
552
- this.EditWFVariableConstant = new ToggleSlideOptions();
553
- this.EditWFVariableConstant.Name = "IsConstant";
554
- this.EditWFVariableConstant.LabelKey = "Constant";
555
- this.EditWFVariableConstant.Value = workflowVariable.isConstant;
556
- this.EditWFVariableConstant.ViewType = ControlLayout.Horizontal;
557
- if (workflowVariable.dataTypeItemID_GUID == VariableDataType.SingleSelection || workflowVariable.dataTypeItemID_GUID == VariableDataType.MultiSelection) {
558
- //Set Lookup Controls
559
- this.setEditVariableLookups(workflowVariable.variableLookupDTOs);
560
- this.showEditLookupsTable = true;
561
- }
562
- this.modalService.open(EditWorkflowVariableModal);
563
- this.utilityService.stopBlockUI();
564
- });
565
- }
566
- setEditVariableLookups(existingLookups) {
567
- for (let i = 0; i < existingLookups.length; i++) {
568
- let objectAttributeOptions = [];
569
- let lookupID = new TextBoxOptions();
570
- lookupID.Name = "EditLookupID" + i;
571
- lookupID.HideLabel = true;
572
- lookupID.Type = InputType.Text;
573
- lookupID.Value = existingLookups[i].iD_GUID;
574
- let lookupNameEN = new TextBoxOptions();
575
- lookupNameEN.Name = "EditLookupNameEN" + i;
576
- lookupNameEN.HideLabel = true;
577
- lookupNameEN.Type = InputType.Text;
578
- lookupNameEN.Value = existingLookups[i].nameEN;
579
- lookupNameEN.IsRequired = true;
580
- lookupNameEN.MaxLength = 255;
581
- let lookupNameAR = new TextBoxOptions();
582
- lookupNameAR.Name = "EditLookupNameAR" + i;
583
- lookupNameAR.HideLabel = true;
584
- lookupNameAR.Type = InputType.Text;
585
- lookupNameAR.Value = existingLookups[i].nameAR;
586
- lookupNameAR.IsRequired = true;
587
- lookupNameAR.ForceDirection = ForceDirection.Arabic;
588
- lookupNameAR.MaxLength = 255;
589
- let lookupValue = new TextBoxOptions();
590
- lookupValue.Name = "EditLookupValue" + i;
591
- lookupValue.HideLabel = true;
592
- lookupValue.Type = InputType.Text;
593
- lookupValue.Value = existingLookups[i].value;
594
- lookupValue.IsRequired = true;
595
- lookupValue.MaxLength = 2000;
596
- objectAttributeOptions.push(lookupID, lookupNameEN, lookupNameAR, lookupValue);
597
- this.editWFVariablesLookupOptions.push(objectAttributeOptions);
598
- this.editLastLookupIndex += 1;
599
- }
600
- }
601
- addWFVariableLookupinEditMode() {
602
- let result = this.initializeWFVariableLookupOptions(false);
603
- this.editWFVariablesLookupOptions = this.editWFVariablesLookupOptions.concat(result[0]);
604
- this.editLastLookupIndex = result[1];
605
- }
606
- //WF Activitities Functions
607
- setActivityListResult(result) {
608
- this.ActivityPagingResult = result;
609
- }
610
- initializeWorkflowActivity() {
611
- // this.IsworkflowActivityFilterLoaded = false;
612
- this.utilityService.startBlockUI();
613
- this.WorkflowActivityIdTextBox = new TextBoxOptions();
614
- this.WorkflowActivityIdTextBox.Name = "WorkflowActivityIdTextBox";
615
- this.WorkflowActivityIdTextBox.HideLabel = true;
616
- this.WorkflowActivityIdTextBox.Type = InputType.Text;
617
- this.WorkflowActivityIdTextBox.Value = this.WorkflowId;
618
- this.WorkflowActivityIdFilter = new FilterItem();
619
- this.WorkflowActivityIdFilter.FormControlName = "WorkflowActivityIdTextBox";
620
- this.WorkflowActivityIdFilter.ActionParameterName = "WfID";
621
- this.WorkflowActivityIdFilter.IsFormControl = true;
622
- this.WorkflowActivityIdFilter.FilterType = FilterType.TextBox;
623
- this.ActivityPaging = new PagingOptions();
624
- this.ActivityPaging.ActionPostURL = this.ActivityApiUrl + 'GetWorkflowActivityListing';
625
- this.ActivityPaging.OnKeyPressFiltersControlNames = ["WorkflowActivityIdTextBox"];
626
- this.ActivityPaging.Filters = [this.WorkflowActivityIdFilter];
627
- this.ActivityPaging.ValidationToken = this.authService.authorizationHeaderValue();
628
- this.ShowWorkflowDetails = false;
629
- this.IsFilterLoaded = false;
630
- this.IsWorkflowVariableFilterLoaded = false;
631
- setTimeout(() => {
632
- this.IsworkflowActivityFilterLoaded = true;
633
- this.utilityService.stopBlockUI();
634
- }, 10);
635
- //this.workflowActivityService.Loaddropdowns().subscribe((result) => {
636
- // let ActivityList = result as any
637
- // this.ActivityTypeList = ActivityList
638
- //})
639
- }
640
- //Add Activity WF variables
641
- showAddWFVariablestoActivity(versionID, activityID, wfVariablesModal) {
642
- this.utilityService.startBlockUI();
643
- this.activityID = activityID;
644
- this.activityWFVariableOptions = [];
645
- this.lastActivityWFVariableIndex = 0;
646
- this.workflowActivityService.getActivityWFVariables(versionID, activityID).subscribe((result) => {
647
- let resultObj = result;
648
- let model = resultObj.model;
649
- this.activityVariablesList = resultObj.activityVariablesList;
650
- this.addWorkflowVariabletoActivityForm = new FormGroup({});
651
- this.addWorkflowVariabletoActivityFormOptions = new FormOptions();
652
- this.addWorkflowVariabletoActivityFormOptions.FormGroup = this.addWorkflowVariabletoActivityForm;
653
- this.addWorkflowVariabletoActivityFormOptions.GetModelFunction = this.getaddWFVariabletoActivityModel;
654
- this.addWorkflowVariabletoActivityFormOptions.ServiceSubmitFunction = this.getaddWFVariabletoActivityFunction;
655
- this.addWorkflowVariabletoActivityFormOptions.PagingReference = this.ActivityPagingViewElement;
656
- this.addWorkflowVariabletoActivityFormOptions.PagingActionMode = PagingActionMode.Update;
657
- for (let i = 0; i < model.activityVariableDTOs.length; i++) {
658
- let currentVariable = model.activityVariableDTOs[i];
659
- let objectVariableOptions = [];
660
- let isSystem = currentVariable.isSystem;
661
- let variableIsSystem = new TextBoxOptions(); //hidden
662
- variableIsSystem.Name = "variableIsSystem" + i;
663
- variableIsSystem.HideLabel = true;
664
- variableIsSystem.Type = InputType.Text;
665
- variableIsSystem.Value = isSystem;
666
- let variableIsEnabled = new CheckBoxOptions();
667
- variableIsEnabled.Name = "variableIsEnabled" + i;
668
- variableIsEnabled.Value = currentVariable.isEnabled;
669
- variableIsEnabled.IsDisabled = isSystem;
670
- //hidden field
671
- let variableIsEnabledHidden = new CheckBoxOptions();
672
- variableIsEnabledHidden.Name = "variableIsEnabledHidden" + i;
673
- variableIsEnabledHidden.Value = currentVariable.isEnabled;
674
- let variableIsMandatory = new CheckBoxOptions();
675
- variableIsMandatory.Name = "variableIsMandatory" + i;
676
- variableIsMandatory.Value = currentVariable.isMandatory;
677
- variableIsMandatory.IsDisabled = isSystem;
678
- //hidden field
679
- let variableIsMandatoryHidden = new CheckBoxOptions();
680
- variableIsMandatoryHidden.Name = "variableIsMandatoryHidden" + i;
681
- variableIsMandatoryHidden.Value = currentVariable.isMandatory;
682
- let variableIsVisible = new CheckBoxOptions();
683
- variableIsVisible.Name = "variableIsVisible" + i;
684
- variableIsVisible.Value = currentVariable.isVisible;
685
- variableIsVisible.IsDisabled = isSystem;
686
- //hidden field
687
- let variableIsVisibleHidden = new CheckBoxOptions();
688
- variableIsVisibleHidden.Name = "variableIsVisibleHidden" + i;
689
- variableIsVisibleHidden.Value = currentVariable.isVisible;
690
- objectVariableOptions.push(variableIsSystem, variableIsEnabled, variableIsEnabledHidden, variableIsMandatory, variableIsMandatoryHidden, variableIsVisible, variableIsVisibleHidden, isSystem);
691
- if (isSystem) {
692
- let variableName = new TextBoxOptions();
693
- variableName.Name = "variableName" + i;
694
- variableName.HideLabel = true;
695
- variableName.IsDisabled = true;
696
- variableName.Type = InputType.Text;
697
- variableName.Value = currentVariable.variableName;
698
- let variableID = new TextBoxOptions(); //hidden
699
- variableID.Name = "variableID" + i;
700
- variableID.HideLabel = true;
701
- variableID.Type = InputType.Text;
702
- variableID.Value = currentVariable.iD_GUID?.toLowerCase();
703
- objectVariableOptions.push(variableName, variableID);
704
- }
705
- else {
706
- let variableIDdropdown = new DropdownOptions();
707
- variableIDdropdown.Name = "variableIDdropdown";
708
- variableIDdropdown.HideLabel = true;
709
- variableIDdropdown.SingleSelection = true;
710
- variableIDdropdown.AllowSearchFilter = true;
711
- variableIDdropdown.IsRequired = true;
712
- variableIDdropdown.DataSource = this.activityVariablesList;
713
- variableIDdropdown.SelectedItems = currentVariable.iDGUID?.toLowerCase();
714
- objectVariableOptions.push(variableIDdropdown);
715
- }
716
- this.activityWFVariableOptions.push(objectVariableOptions);
717
- this.lastActivityWFVariableIndex += 1;
718
- }
719
- this.modalService.open(wfVariablesModal);
720
- this.utilityService.stopBlockUI();
721
- });
722
- }
723
- deleteActivityWFVariable(deletedVariable) {
724
- let deletedVariableIndex = this.activityWFVariableOptions.indexOf(deletedVariable);
725
- if (deletedVariableIndex !== -1) {
726
- this.activityWFVariableOptions.splice(deletedVariableIndex, 1);
727
- for (var i = 0; i < deletedVariable.length; i++) {
728
- this.addWorkflowVariabletoActivityForm.removeControl(deletedVariable[i].Name);
729
- }
730
- }
731
- }
732
- addNewActivityWFVariable() {
733
- let index = this.lastActivityWFVariableIndex;
734
- let objectVariableOptions = [];
735
- let variableIDdropdown = new DropdownOptions();
736
- variableIDdropdown.Name = "variableIDdropdown" + index;
737
- variableIDdropdown.HideLabel = true;
738
- variableIDdropdown.SingleSelection = true;
739
- variableIDdropdown.AllowSearchFilter = true;
740
- variableIDdropdown.IsRequired = true;
741
- variableIDdropdown.DataSource = this.activityVariablesList;
742
- let isSystem = false;
743
- let variableIsSystem = new TextBoxOptions(); //hidden
744
- variableIsSystem.Name = "variableIsSystem" + index;
745
- variableIsSystem.HideLabel = true;
746
- variableIsSystem.Type = InputType.Text;
747
- variableIsSystem.Value = isSystem;
748
- let variableIsEnabled = new CheckBoxOptions();
749
- variableIsEnabled.Name = "variableIsEnabled" + index;
750
- variableIsEnabled.Value = false;
751
- let variableIsEnabledHidden = new CheckBoxOptions();
752
- variableIsEnabledHidden.Name = "variableIsEnabledHidden" + index;
753
- variableIsEnabledHidden.Value = false;
754
- let variableIsMandatory = new CheckBoxOptions();
755
- variableIsMandatory.Name = "variableIsMandatory" + index;
756
- variableIsMandatory.Value = false;
757
- let variableIsMandatoryHidden = new CheckBoxOptions();
758
- variableIsMandatoryHidden.Name = "variableIsMandatoryHidden" + index;
759
- variableIsMandatoryHidden.Value = false;
760
- let variableIsVisible = new CheckBoxOptions();
761
- variableIsVisible.Name = "variableIsVisible" + index;
762
- variableIsVisible.Value = false;
763
- let variableIsVisibleHidden = new CheckBoxOptions();
764
- variableIsVisibleHidden.Name = "variableIsVisibleHidden" + index;
765
- variableIsVisibleHidden.Value = false;
766
- objectVariableOptions.push(variableIsSystem, variableIsEnabled, variableIsEnabledHidden, variableIsMandatory, variableIsMandatoryHidden, variableIsVisible, variableIsVisibleHidden, isSystem, variableIDdropdown);
767
- this.activityWFVariableOptions.push(objectVariableOptions);
768
- this.lastActivityWFVariableIndex += 1;
769
- }
770
- //On destroy
771
- ngOnDestroy() {
772
- this.requestHandlerService.destroyHandler();
773
- }
774
- }
775
- TabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TabsComponent, deps: [{ token: i1.AuthService }, { token: i2.WorkflowService }, { token: i3.ActivatedRoute }, { token: i4.WorkflowVariablesService }, { token: i5.WorkflowActivityService }, { token: i6.PageInfoService }, { token: i7.NgbModal }, { token: i1.EnvironmentService }, { token: i1.BBSFTranslateService }, { token: i1.UtilityService }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
776
- TabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TabsComponent, selector: "lib-tabs", viewQueries: [{ propertyName: "publishConfirmationModalControl", first: true, predicate: ["publishConfirmationModalControl"], descendants: true }, { propertyName: "WFVersionPagingElement", first: true, predicate: ["WorkflowVersionPagingViewElement"], descendants: true }, { propertyName: "WorkflowVariablePagingViewElement", first: true, predicate: ["WorkflowVariablePagingViewElement"], descendants: true }, { propertyName: "ActivityPagingViewElement", first: true, predicate: ["ActivityPagingViewElement"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"getDetails()\">{{utilityService.getResourceValue(\"Details\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0 justify-content-end\">\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" *ngIf=\"ShowWorkflowDetails&&!WorkflowDetails.isPublished\"\r\n id=\"btnPublish\" class=\"btn btn-sm btn-primary\" (click)=\"showPublishWFModal(WorkflowDetails.iD_GUID)\">\r\n {{utilityService.getResourceValue(\"PublishWorkflow\")}}\r\n\r\n </button>\r\n <!--<a class=\"btn btn-sm btn-light-primary\">\r\n {{utilityService.getResourceValue(\"Preview\")}}\r\n </a>-->\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <form [formGroup]=\"DetailsForm\" *ngIf=\"ShowWorkflowDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"NameMultilingualTextBox\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-MultiLingualTextBox>\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"DescriptionMultilingualTextBox\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"SysName\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"form-group\">\r\n <div class=\"label-content\">\r\n <BBSF-TextBox [options]=\"Active\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"form-group\">\r\n <div class=\"label-content\">\r\n <BBSF-TextBox [options]=\"Published\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </form>\r\n\r\n\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n </ng-template>\r\n <!--Publish workflow confirmation-->\r\n <BBSF-ConfirmationModal *ngIf=\"publishControlLoaded\" [options]=\"publishWFConfirmationOptions\" id=\"publishConfirmationModalControl\" #publishConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeVersion()\">{{utilityService.getResourceValue(\"Versions\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"WorkflowVersionForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"WorkflowVersionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"WorkflowIdTextBox\"\r\n [group]=\"WorkflowVersionForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <!--begin::Permission list-->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Change\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Current\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Published\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"CreationDate\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let version of WorkflowVersionPagingResult\">\r\n <td>\r\n <a href=\"javascript:void(0)\"\r\n [routerLink]=\"['/Admin/Workflows/VersionInfo',version.iD_GUID]\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"text-dark\">{{version.changeStr}}</a>\r\n </td>\r\n <td>{{version.isCurrent}}</td>\r\n <td>{{version.isPublished}}</td>\r\n <td>{{version.creationDate}}</td>\r\n </tr>\r\n <tr *ngIf=\"WorkflowVersionPagingResult.length == 0\">\r\n <td colspan=\"4\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Permission list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowVersionListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"WorkflowVersionPaging\" [group]=\"WorkflowVersionForm\"\r\n #WorkflowVersionPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeWorkflowVariables()\">{{utilityService.getResourceValue(\"WorkflowVariables\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n <div class=\"filter-container text-dark\"\r\n *ngIf=\"IsWorkflowVariableFilterLoaded\">\r\n <form [formGroup]=\"WorkflowVariableForm\">\r\n <BBSF-TextBox [options]=\"WorkflowVariablesearchTextBox\"\r\n [group]=\"WorkflowVariableForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"VerisonIdTextBox\"\r\n [group]=\"WorkflowVariableForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-primary btn-sm\"\r\n (click)=\"showAddWorkflowVariableModal(AddWorkflowVariableModal)\">\r\n <i class=\" fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <!--begin::Permission list-->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"SysName\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"DataType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"VariableType\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n\r\n\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n\r\n <tr *ngFor=\"let WorkflowVariable of WorkflowVariablePagingResult\">\r\n\r\n <td>\r\n <a href=\"javascript:void(0)\" class=\"text-dark\">{{WorkflowVariable.nameStr}}</a>\r\n\r\n </td>\r\n\r\n <td>\r\n {{WorkflowVariable.sysName}}\r\n </td>\r\n <td>{{WorkflowVariable.dataTypeItem}}</td>\r\n <td>{{WorkflowVariable.variableTypeItem}}</td>\r\n\r\n <td>\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\"\r\n (click)=\"showEditWorkflowVariableModal(WorkflowVariable.iD_GUID, EditWorkflowVariableModal)\">\r\n <i class=\"fa fa-edit\"\r\n aria-hidden=\"true\"></i>\r\n </a>\r\n\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"WorkflowVariablePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Permission list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowVariableListResult($event)\"\r\n *ngIf=\"IsWorkflowVariableFilterLoaded\" [options]=\"WorkflowVariablePaging\"\r\n [group]=\"WorkflowVariableForm\" #WorkflowVariablePagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n <!-- Add Modal -->\r\n <ng-template #AddWorkflowVariableModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"Add\")}} {{utilityService.getResourceValue(\"WorkflowVariable\")}}\r\n </h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"AddWorkflowVariableFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddWFVariableName\" [group]=\"AddWorkflowVariableForm\"></BBSF-MultiLingualTextBox>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"AddWFVariableSysName\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList (OnChange)=\"WFVariableTypeOnChange($event,true)\" [options]=\"AddWFVariableDataType\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"AddWFVariableConstant\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"showAddLookupsTable\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameEN\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameAR\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of addWFVariablesLookupOptions;let i=index;\">\r\n\r\n <td>\r\n <BBSF-TextBox [options]=\"option[0]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[1]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteWFVariableLookup(option,true)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"4\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFVariableLookupinAddMode()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseWorkflowVariableModal id=\"CloseWorkflowVariableModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n <!--Edit Modal-->\r\n <ng-template #EditWorkflowVariableModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"WorkflowVariable\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditWorkflowVariableFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditWFVariableName\" [group]=\"EditWorkflowVariableForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditWFVariableSysName\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList (OnChange)=\"WFVariableTypeOnChange($event,false)\" [options]=\"EditWFVariableDataType\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditWFVariableConstant\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"showEditLookupsTable\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameEN\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameAR\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of editWFVariablesLookupOptions;let i=index;\">\r\n\r\n <td>\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"option[1]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[3]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteWFVariableLookup(option,false)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"4\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFVariableLookupinEditMode()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditWorkflowVariableModal id=\"CloseEditWorkflowVariableModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeWorkflowActivity()\">\r\n {{utilityService.getResourceValue(\"WorkflowActivities\")}}\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n <div class=\"filter-container text-dark\"\r\n *ngIf=\"IsworkflowActivityFilterLoaded\">\r\n <form [formGroup]=\"workflowActivityForm\">\r\n <div id=\"filtersContainer\" data-isloaded=\"true\">\r\n <BBSF-TextBox [options]=\"WorkflowActivityIdTextBox\"\r\n [group]=\"workflowActivityForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-primary btn-sm\" [routerLink]=\"['/Admin/Workflows/AddActivity',VersionId]\">\r\n <i class=\"fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-6 mb-8\" *ngFor=\"let workflowActivity of ActivityPagingResult\">\r\n <div class=\"card bg-light-dark rounded\">\r\n <div class=\"card-header border-0 pt-9\">\r\n <div class=\"card-title m-0 fs-2 text-primary\">\r\n {{workflowActivity.typeNameStr}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm me-2 \" (click)=\"showAddWFVariablestoActivity(workflowActivity.versionID_GUID,workflowActivity.iD_GUID,wfActivityVariablesModal)\">\r\n <i class=\"fa fa-gear\" aria-hidden=\"true\">\r\n </i>\r\n {{utilityService.getResourceValue(\"WorkflowVariables\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnAdd\" class=\"btn btn-light-primary btn-sm btn-icon me-2\" [routerLink]=\"['/Admin/Workflows/EditActivity',workflowActivity.iD_GUID]\">\r\n <i *ngIf=\"workflowActivity.isPublished\" class=\"fas fa-pen\"></i>\r\n <i *ngIf=\"!workflowActivity.isPublished\" class=\"fas fa-pen\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-9\">\r\n <div class=\"fs-6 fw-bolder text-dark\">{{utilityService.getResourceValue(\"WFOutcome\")}}</div>\r\n <div class=\"text-gray-400 fw-bold fs-5 mt-1 mb-7\">\r\n <ul class=\"list-unstyled\">\r\n\r\n <li>\r\n {{utilityService.getResourceValue(\"WorkflowVariables\")}}\r\n <ul id=\"horizontalmenu\">\r\n <li class=\"text-dark\" *ngFor=\"let item of workflowActivity.variables\">\r\n <i class=\"fa fa-gear\"></i>\r\n {{item.sysName}}\r\n\r\n </li>\r\n </ul>\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n\r\n <div class=\" mb-5\">\r\n <div *ngFor=\"let item of workflowActivity.outcomes\">\r\n {{ item.nameEN }}: {{item.nextActvityName}}\r\n </div>\r\n </div>\r\n </div>\r\n <!--end:: Card body-->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setActivityListResult($event)\"\r\n *ngIf=\"IsworkflowActivityFilterLoaded\" [options]=\"ActivityPaging\"\r\n [group]=\"workflowActivityForm\" #ActivityPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n\r\n <ng-template #wfActivityVariablesModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"AddWorkflowVariables\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"addWorkflowVariabletoActivityFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"WorkflowVariables\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Enabled\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Mandatory\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of activityWFVariableOptions;let i=index;\">\r\n\r\n <td>\r\n <!--hidden is system-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n\r\n <!--if is systm-->\r\n <div *ngIf=\"option[7];else variableNameDDL;\">\r\n <!--variavle name-->\r\n <BBSF-TextBox [options]=\"option[8]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden variable id-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[9]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <!--variavle name ddl-->\r\n <ng-template #variableNameDDL>\r\n <BBSF-DropdownList [options]=\"option[8]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-DropdownList>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <!--is enabled-->\r\n <BBSF-CheckBox [options]=\"option[1]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[2]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--is mandatory-->\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[4]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--is visible-->\r\n <BBSF-CheckBox [options]=\"option[5]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--if ! isSystem-->\r\n <a *ngIf=\"!option[7]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteActivityWFVariable(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addNewActivityWFVariable()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", styles: [".nav.nav-tabs{background:#f7f8fa;border-bottom:0px}.nav-tabs .nav-item .nav-link{color:#494b74}.nav-tabs .nav-item .nav-link.active,.nav-tabs .nav-item .nav-link:active,.nav-tabs .nav-item .nav-link:hover{color:#494b74;font-weight:500}.workflow-tabs a.nav-link{padding:17px 25px}.kt-widget.kt-widget--user-profile-3.kt-widget.kt-widget--user-profile-3.workflow-activities{border-radius:15px;box-shadow:0 0 3px #dadada!important}.workflow-activities .kt-widget__progress{justify-content:flex-end;align-items:end}.workflow-activities .kt-widget__username{color:#494b74}.workflow-activities ul#horizontalmenu{color:#a4a4a4;list-style:outside}\n"], dependencies: [{ kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i10.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { kind: "component", type: i11.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i11.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i11.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i11.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i11.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i11.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { kind: "component", type: i11.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "component", type: i11.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "directive", type: i7.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i7.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i7.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i7.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "component", type: i7.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "directive", type: i12.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: i13.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] });
777
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TabsComponent, decorators: [{
778
- type: Component,
779
- args: [{ selector: 'lib-tabs', template: "<block-ui></block-ui>\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"getDetails()\">{{utilityService.getResourceValue(\"Details\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0 justify-content-end\">\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" *ngIf=\"ShowWorkflowDetails&&!WorkflowDetails.isPublished\"\r\n id=\"btnPublish\" class=\"btn btn-sm btn-primary\" (click)=\"showPublishWFModal(WorkflowDetails.iD_GUID)\">\r\n {{utilityService.getResourceValue(\"PublishWorkflow\")}}\r\n\r\n </button>\r\n <!--<a class=\"btn btn-sm btn-light-primary\">\r\n {{utilityService.getResourceValue(\"Preview\")}}\r\n </a>-->\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <form [formGroup]=\"DetailsForm\" *ngIf=\"ShowWorkflowDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"NameMultilingualTextBox\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-MultiLingualTextBox>\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"DescriptionMultilingualTextBox\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"SysName\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"form-group\">\r\n <div class=\"label-content\">\r\n <BBSF-TextBox [options]=\"Active\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"form-group\">\r\n <div class=\"label-content\">\r\n <BBSF-TextBox [options]=\"Published\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </form>\r\n\r\n\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n </ng-template>\r\n <!--Publish workflow confirmation-->\r\n <BBSF-ConfirmationModal *ngIf=\"publishControlLoaded\" [options]=\"publishWFConfirmationOptions\" id=\"publishConfirmationModalControl\" #publishConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeVersion()\">{{utilityService.getResourceValue(\"Versions\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"WorkflowVersionForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"WorkflowVersionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"WorkflowIdTextBox\"\r\n [group]=\"WorkflowVersionForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <!--begin::Permission list-->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Change\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Current\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Published\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"CreationDate\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let version of WorkflowVersionPagingResult\">\r\n <td>\r\n <a href=\"javascript:void(0)\"\r\n [routerLink]=\"['/Admin/Workflows/VersionInfo',version.iD_GUID]\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"text-dark\">{{version.changeStr}}</a>\r\n </td>\r\n <td>{{version.isCurrent}}</td>\r\n <td>{{version.isPublished}}</td>\r\n <td>{{version.creationDate}}</td>\r\n </tr>\r\n <tr *ngIf=\"WorkflowVersionPagingResult.length == 0\">\r\n <td colspan=\"4\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Permission list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowVersionListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"WorkflowVersionPaging\" [group]=\"WorkflowVersionForm\"\r\n #WorkflowVersionPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeWorkflowVariables()\">{{utilityService.getResourceValue(\"WorkflowVariables\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n <div class=\"filter-container text-dark\"\r\n *ngIf=\"IsWorkflowVariableFilterLoaded\">\r\n <form [formGroup]=\"WorkflowVariableForm\">\r\n <BBSF-TextBox [options]=\"WorkflowVariablesearchTextBox\"\r\n [group]=\"WorkflowVariableForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"VerisonIdTextBox\"\r\n [group]=\"WorkflowVariableForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-primary btn-sm\"\r\n (click)=\"showAddWorkflowVariableModal(AddWorkflowVariableModal)\">\r\n <i class=\" fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <!--begin::Permission list-->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"SysName\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"DataType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"VariableType\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n\r\n\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n\r\n <tr *ngFor=\"let WorkflowVariable of WorkflowVariablePagingResult\">\r\n\r\n <td>\r\n <a href=\"javascript:void(0)\" class=\"text-dark\">{{WorkflowVariable.nameStr}}</a>\r\n\r\n </td>\r\n\r\n <td>\r\n {{WorkflowVariable.sysName}}\r\n </td>\r\n <td>{{WorkflowVariable.dataTypeItem}}</td>\r\n <td>{{WorkflowVariable.variableTypeItem}}</td>\r\n\r\n <td>\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\"\r\n (click)=\"showEditWorkflowVariableModal(WorkflowVariable.iD_GUID, EditWorkflowVariableModal)\">\r\n <i class=\"fa fa-edit\"\r\n aria-hidden=\"true\"></i>\r\n </a>\r\n\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"WorkflowVariablePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Permission list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowVariableListResult($event)\"\r\n *ngIf=\"IsWorkflowVariableFilterLoaded\" [options]=\"WorkflowVariablePaging\"\r\n [group]=\"WorkflowVariableForm\" #WorkflowVariablePagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n <!-- Add Modal -->\r\n <ng-template #AddWorkflowVariableModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"Add\")}} {{utilityService.getResourceValue(\"WorkflowVariable\")}}\r\n </h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"AddWorkflowVariableFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddWFVariableName\" [group]=\"AddWorkflowVariableForm\"></BBSF-MultiLingualTextBox>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"AddWFVariableSysName\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList (OnChange)=\"WFVariableTypeOnChange($event,true)\" [options]=\"AddWFVariableDataType\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"AddWFVariableConstant\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"showAddLookupsTable\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameEN\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameAR\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of addWFVariablesLookupOptions;let i=index;\">\r\n\r\n <td>\r\n <BBSF-TextBox [options]=\"option[0]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[1]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteWFVariableLookup(option,true)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"4\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFVariableLookupinAddMode()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseWorkflowVariableModal id=\"CloseWorkflowVariableModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n <!--Edit Modal-->\r\n <ng-template #EditWorkflowVariableModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"WorkflowVariable\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditWorkflowVariableFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditWFVariableName\" [group]=\"EditWorkflowVariableForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditWFVariableSysName\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList (OnChange)=\"WFVariableTypeOnChange($event,false)\" [options]=\"EditWFVariableDataType\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditWFVariableConstant\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"showEditLookupsTable\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameEN\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameAR\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of editWFVariablesLookupOptions;let i=index;\">\r\n\r\n <td>\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"option[1]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[3]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteWFVariableLookup(option,false)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"4\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFVariableLookupinEditMode()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditWorkflowVariableModal id=\"CloseEditWorkflowVariableModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeWorkflowActivity()\">\r\n {{utilityService.getResourceValue(\"WorkflowActivities\")}}\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n <div class=\"filter-container text-dark\"\r\n *ngIf=\"IsworkflowActivityFilterLoaded\">\r\n <form [formGroup]=\"workflowActivityForm\">\r\n <div id=\"filtersContainer\" data-isloaded=\"true\">\r\n <BBSF-TextBox [options]=\"WorkflowActivityIdTextBox\"\r\n [group]=\"workflowActivityForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-primary btn-sm\" [routerLink]=\"['/Admin/Workflows/AddActivity',VersionId]\">\r\n <i class=\"fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-6 mb-8\" *ngFor=\"let workflowActivity of ActivityPagingResult\">\r\n <div class=\"card bg-light-dark rounded\">\r\n <div class=\"card-header border-0 pt-9\">\r\n <div class=\"card-title m-0 fs-2 text-primary\">\r\n {{workflowActivity.typeNameStr}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm me-2 \" (click)=\"showAddWFVariablestoActivity(workflowActivity.versionID_GUID,workflowActivity.iD_GUID,wfActivityVariablesModal)\">\r\n <i class=\"fa fa-gear\" aria-hidden=\"true\">\r\n </i>\r\n {{utilityService.getResourceValue(\"WorkflowVariables\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnAdd\" class=\"btn btn-light-primary btn-sm btn-icon me-2\" [routerLink]=\"['/Admin/Workflows/EditActivity',workflowActivity.iD_GUID]\">\r\n <i *ngIf=\"workflowActivity.isPublished\" class=\"fas fa-pen\"></i>\r\n <i *ngIf=\"!workflowActivity.isPublished\" class=\"fas fa-pen\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-9\">\r\n <div class=\"fs-6 fw-bolder text-dark\">{{utilityService.getResourceValue(\"WFOutcome\")}}</div>\r\n <div class=\"text-gray-400 fw-bold fs-5 mt-1 mb-7\">\r\n <ul class=\"list-unstyled\">\r\n\r\n <li>\r\n {{utilityService.getResourceValue(\"WorkflowVariables\")}}\r\n <ul id=\"horizontalmenu\">\r\n <li class=\"text-dark\" *ngFor=\"let item of workflowActivity.variables\">\r\n <i class=\"fa fa-gear\"></i>\r\n {{item.sysName}}\r\n\r\n </li>\r\n </ul>\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n\r\n <div class=\" mb-5\">\r\n <div *ngFor=\"let item of workflowActivity.outcomes\">\r\n {{ item.nameEN }}: {{item.nextActvityName}}\r\n </div>\r\n </div>\r\n </div>\r\n <!--end:: Card body-->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setActivityListResult($event)\"\r\n *ngIf=\"IsworkflowActivityFilterLoaded\" [options]=\"ActivityPaging\"\r\n [group]=\"workflowActivityForm\" #ActivityPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n\r\n <ng-template #wfActivityVariablesModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"AddWorkflowVariables\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"addWorkflowVariabletoActivityFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"WorkflowVariables\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Enabled\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Mandatory\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of activityWFVariableOptions;let i=index;\">\r\n\r\n <td>\r\n <!--hidden is system-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n\r\n <!--if is systm-->\r\n <div *ngIf=\"option[7];else variableNameDDL;\">\r\n <!--variavle name-->\r\n <BBSF-TextBox [options]=\"option[8]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden variable id-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[9]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <!--variavle name ddl-->\r\n <ng-template #variableNameDDL>\r\n <BBSF-DropdownList [options]=\"option[8]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-DropdownList>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <!--is enabled-->\r\n <BBSF-CheckBox [options]=\"option[1]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[2]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--is mandatory-->\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[4]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--is visible-->\r\n <BBSF-CheckBox [options]=\"option[5]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--if ! isSystem-->\r\n <a *ngIf=\"!option[7]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteActivityWFVariable(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addNewActivityWFVariable()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", styles: [".nav.nav-tabs{background:#f7f8fa;border-bottom:0px}.nav-tabs .nav-item .nav-link{color:#494b74}.nav-tabs .nav-item .nav-link.active,.nav-tabs .nav-item .nav-link:active,.nav-tabs .nav-item .nav-link:hover{color:#494b74;font-weight:500}.workflow-tabs a.nav-link{padding:17px 25px}.kt-widget.kt-widget--user-profile-3.kt-widget.kt-widget--user-profile-3.workflow-activities{border-radius:15px;box-shadow:0 0 3px #dadada!important}.workflow-activities .kt-widget__progress{justify-content:flex-end;align-items:end}.workflow-activities .kt-widget__username{color:#494b74}.workflow-activities ul#horizontalmenu{color:#a4a4a4;list-style:outside}\n"] }]
780
- }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.WorkflowService }, { type: i3.ActivatedRoute }, { type: i4.WorkflowVariablesService }, { type: i5.WorkflowActivityService }, { type: i6.PageInfoService }, { type: i7.NgbModal }, { type: i1.EnvironmentService }, { type: i1.BBSFTranslateService }, { type: i1.UtilityService }, { type: i1.RequestHandlerService }]; }, propDecorators: { publishConfirmationModalControl: [{
781
- type: ViewChild,
782
- args: ['publishConfirmationModalControl', { static: false }]
783
- }], WFVersionPagingElement: [{
784
- type: ViewChild,
785
- args: ['WorkflowVersionPagingViewElement', { static: false }]
786
- }], WorkflowVariablePagingViewElement: [{
787
- type: ViewChild,
788
- args: ['WorkflowVariablePagingViewElement', { static: false }]
789
- }], ActivityPagingViewElement: [{
790
- type: ViewChild,
791
- args: ['ActivityPagingViewElement', { static: false }]
792
- }] } });
793
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3dvcmtmbG93cy90YWJzL3RhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvdGFicy90YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBK0IsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3BVLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUlyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFLckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFHN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDOUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQU8xRCxNQUFNLE9BQU8sYUFBYTtJQStGeEIsdUJBQXVCO0lBR3ZCLFlBQW9CLFdBQXdCLEVBQVUsZUFBZ0MsRUFDNUUsY0FBOEIsRUFB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QUssRUFBRTtnQkF1Q04seUJBQXlCO3NCQUFuRixTQUFTO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sTGF5b3V0LCBFbmdsaXNoQXJhYmljRFRPLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQYWdpbmdPcHRpb25zLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zLCBEcm9wZG93bk9wdGlvbnMsIEZvcm1PcHRpb25zLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsIFBhZ2luZ0FjdGlvbk1vZGUsIEZvcmNlRGlyZWN0aW9uLCBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMsIENoZWNrQm94T3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zaGFyZWQvU2VydmljZXMvV29ya2Zsb3dTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFdGVmFyaWFibGVNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvV29ya2Zsb3dNb2RlbHMvV0ZWYXJpYWJsZU1vZGVsJztcclxuaW1wb3J0IHsgV29ya2Zsb3dWYXJpYWJsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL1dvcmtmbG93VmFyaWFibGVzU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvV29ya2Zsb3dBY3Rpdml0eVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvV29ya2Zsb3dNb2RlbHMvV0ZBY3Rpdml0eU1vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFZhcmlhYmxlTG9va3VwTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1ZhcmlhYmxlTG9va3VwTW9kZWwnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzL2xpYi9jb250cm9scy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXRlZhcmlhYmxlRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvV0ZWYXJpYWJsZURhdGFUeXBlJztcclxuaW1wb3J0IHsgV0ZBY3Rpdml0eVZhcmlhYmxlRFRPLCBXRkFjdGl2aXR5VmFyaWFibGVzTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlWYXJpYWJsZXNNb2RlbCc7XHJcbmltcG9ydCB7IFZhcmlhYmxlRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRhYnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFBhZ2V0aXRsZTogc3RyaW5nID0gXCJcIlxyXG5cclxuICAvL1dGXHJcbiAgLy8gRGV0YWlscyBDb250cm9sc1xyXG4gIERldGFpbHNGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgV29ya2Zsb3dEZXRhaWxzOiBhbnk7XHJcbiAgV29ya2Zsb3dJZDogc3RyaW5nO1xyXG4gIE5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94OiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBEZXNjcmlwdGlvbk11bHRpbGluZ3VhbFRleHRCb3g6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIEFjdGl2ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgUHVibGlzaGVkOiBUZXh0Qm94T3B0aW9ucztcclxuICBTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBTaG93V29ya2Zsb3dEZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgVmVyc2lvbklkOiBzdHJpbmdcclxuICAvL3B1Ymxpc2ggV0YgIE1vZGVsIENvbnRyb2xzXHJcbiAgcHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIHB1Ymxpc2hDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgncHVibGlzaENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaXNoQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9TdGFydCBXb3JrRmxvdyBWZXJzaW9uXHJcbiAgV29ya0Zsb3dWZXJzaW9uQXBpVXJsID0gXCIvYXBpL2FkbWluL1dGVmVyc2lvbi9cIlxyXG4gIFdvcmtmbG93VmVyc2lvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBXb3JrZmxvd0lkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2VhcmNoVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgV29ya2Zsb3dWZXJzaW9uUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIFdvcmtmbG93VmVyc2lvblBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgV29ya2Zsb3dJZEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBJc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ1dvcmtmbG93VmVyc2lvblBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIFdGVmVyc2lvblBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG4gIC8vRW5kIFdvcmtGbG93IHZlcnNpb25cclxuXHJcbiAgLy9TdGFydCBXb3JrZmxvdyBWYXJpYWJsZXNcclxuICAvL1dvcmtmbG93IFZhcmlhYmxlcyBjb250cm9sc1xyXG4gIFdvcmtmbG93VmFyaWFibGVBcGlVcmwgPSBcIi9hcGkvYWRtaW4vV29ya2Zsb3dWYXJpYWJsZS9cIlxyXG4gIFdvcmtmbG93VmFyaWFibGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgV29ya2Zsb3dWYXJpYWJsZXNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFdvcmtmbG93VmFyaWFibGVUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgVmVyaXNvbklkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgVmVyaXNvbklkVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIERhdGFUeXBlTGlzdCA9IFtdO1xyXG4gIFdvcmtmbG93VmFyaWFibGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgV29ya2Zsb3dWYXJpYWJsZVBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBJc1dvcmtmbG93VmFyaWFibGVGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIFdvcmtmbG93VmFyaWFibGVQYWdpbmdWaWV3RWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBBZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgQWRkV0ZWYXJpYWJsZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIEFkZFdGVmFyaWFibGVTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBBZGRXRlZhcmlhYmxlRGF0YVR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRXRlZhcmlhYmxlQ29uc3RhbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICAvL1dGIHZhcmlhYmxlIGxvb2t1cHNcclxuICBhZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgc2hvd0FkZExvb2t1cHNUYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFkZExhc3RMb29rdXBJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBFZGl0V0ZWYXJpYWJsZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIEVkaXRXRlZhcmlhYmxlU3lzTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgRWRpdFdGVmFyaWFibGVEYXRhVHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRXRlZhcmlhYmxlQ29uc3RhbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBXb3JrZmxvd1ZhcmlhYmxlSWQ6IGFueVxyXG4gIC8vV0YgdmFyaWFibGUgbG9va3Vwc1xyXG4gIGVkaXRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgc2hvd0VkaXRMb29rdXBzVGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlZGl0TGFzdExvb2t1cEluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICAvL0VuZCBXb3JrZmxvdyBWYXJpYWJsZVxyXG5cclxuICAvL3N0cmF0IFdvcmtmbG93IEFjdGl2aXR5XHJcbiAgLy9Xb3JrZmxvdyBBY3Rpdml0eSBDb250cm9sc1xyXG4gIEFjdGl2aXR5QXBpVXJsID0gXCIvYXBpL2FkbWluL1dvcmtmbG93QWN0aXZpdHkvXCJcclxuICBBY3Rpdml0eVR5cGVMaXN0ID0gW107XHJcbiAgd29ya2Zsb3dBY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBXb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBXb3JrZmxvd0FjdGl2aXR5SWRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgQWN0aXZpdHlQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgQWN0aXZpdHlQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQWN0aXZpdHlQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBBY3Rpdml0eVBhZ2luZ1ZpZXdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcbiAgLy9BZGQgV0YgdmFyaWFibGVzIHRvIGFjdGl2aXR5IGNvbnRyb2xzXHJcbiAgYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBhY3Rpdml0eUlEOiBzdHJpbmc7XHJcbiAgYWN0aXZpdHlXRlZhcmlhYmxlT3B0aW9uczogYW55W10gPSBbXTtcclxuICBsYXN0QWN0aXZpdHlXRlZhcmlhYmxlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgYWN0aXZpdHlWYXJpYWJsZXNMaXN0ID0gW107XHJcbiAgLy9FbmQgV29ya2Zsb3cgQWN0aXZpdHlcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIFdvcmtmbG93U2VydmljZTogV29ya2Zsb3dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgV29ya2Zsb3dWYXJpYWJsZXNTZXJ2aWNlOiBXb3JrZmxvd1ZhcmlhYmxlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdvcmtmbG93QWN0aXZpdHlTZXJ2aWNlOiBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSwgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5Xb3JrZmxvd0lkID0gcGFyYW1zWydpZCddO1xyXG4gICAgICB0aGlzLlZlcnNpb25JZCA9IHBhcmFtc1sndmlkJ107XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5nZXREZXRhaWxzKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLy9XRiBmdW5jdGlvbnNcclxuICBnZXREZXRhaWxzKCkge1xyXG4gICAgdGhpcy5TaG93V29ya2Zsb3dEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuICAgIHRoaXMuSXNXb3JrZmxvd1ZhcmlhYmxlRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuICAgIHRoaXMuSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLldvcmtmbG93U2VydmljZS5nZXREZXRhaWxzKHRoaXMuV29ya2Zsb3dJZCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5Xb3JrZmxvd0RldGFpbHMgPSByZXN1bHQgYXMgYW55XHJcblxyXG4gICAgICB2YXIgTmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIE5hbWUuQXJhYmljID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMubmFtZS5hcmFiaWM7XHJcbiAgICAgIE5hbWUuRW5nbGlzaCA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLm5hbWUuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuUGFnZXRpdGxlID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMubmFtZVN0clxyXG5cclxuXHJcbiAgICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLlBhZ2V0aXRsZVxyXG4gICAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dzXCIpLCBwYXRoOiAnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdycsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICAgIF07XHJcblxyXG4gICAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG5cclxuICAgICAgdGhpcy5OYW1lTXVsdGlsaW5ndWFsVGV4dEJveCA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLk5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94LkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIlxyXG4gICAgICB0aGlzLk5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94LkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuTmFtZU11bHRpbGluZ3VhbFRleHRCb3guSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuTmFtZU11bHRpbGluZ3VhbFRleHRCb3guTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLk5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94LlZhbHVlID0gTmFtZTtcclxuICAgICAgdGhpcy5OYW1lTXVsdGlsaW5ndWFsVGV4dEJveC5Jc0Rpc2FibGVkID0gdHJ1ZVxyXG5cclxuXHJcbiAgICAgIHZhciBEZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIERlc2NyaXB0aW9uLkFyYWJpYyA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLmRlc2NyaXB0aW9uLmFyYWJpYztcclxuICAgICAgRGVzY3JpcHRpb24uRW5nbGlzaCA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLmRlc2NyaXB0aW9uLmVuZ2xpc2g7XHJcbiAgICAgIHRoaXMuRGVzY3JpcHRpb25NdWx0aWxpbmd1YWxUZXh0Qm94ID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRGVzY3JpcHRpb25NdWx0aWxpbmd1YWxUZXh0Qm94LkFyYWJpY0xhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluQXJhYmljXCJcclxuICAgICAgdGhpcy5EZXNjcmlwdGlvbk11bHRpbGluZ3VhbFRleHRCb3guRW5nbGlzaExhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuRGVzY3JpcHRpb25NdWx0aWxpbmd1YWxUZXh0Qm94LklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkRlc2NyaXB0aW9uTXVsdGlsaW5ndWFsVGV4dEJveC5OYW1lID0gXCJEZXNjcmlwdGlvblwiO1xyXG4gICAgICB0aGlzLkRlc2NyaXB0aW9uTXVsdGlsaW5ndWFsVGV4dEJveC5WYWx1ZSA9IERlc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLkRlc2NyaXB0aW9uTXVsdGlsaW5ndWFsVGV4dEJveC5Jc0Rpc2FibGVkID0gdHJ1ZVxyXG5cclxuICAgICAgdGhpcy5TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuU3lzTmFtZS5OYW1lID0gXCJTeXNOYW1lXCJcclxuICAgICAgdGhpcy5TeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCJcclxuICAgICAgdGhpcy5TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLlN5c05hbWUuSXNEaXNhYmxlZCA9IHRydWVcclxuICAgICAgdGhpcy5TeXNOYW1lLlZhbHVlID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMuc3lzTmFtZVxyXG5cclxuICAgICAgdGhpcy5BY3RpdmUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BY3RpdmUuTmFtZSA9IFwiQWN0aXZlXCJcclxuICAgICAgdGhpcy5BY3RpdmUuTGFiZWxLZXkgPSBcIkFjdGl2ZVwiXHJcbiAgICAgIHRoaXMuQWN0aXZlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLkFjdGl2ZS5Jc0Rpc2FibGVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLkFjdGl2ZS5WYWx1ZSA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLmlzQWN0aXZlXHJcblxyXG4gICAgICB0aGlzLlB1Ymxpc2hlZCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlB1Ymxpc2hlZC5OYW1lID0gXCJQdWJsaXNoZWRcIlxyXG4gICAgICB0aGlzLlB1Ymxpc2hlZC5MYWJlbEtleSA9IFwiUHVibGlzaGVkXCJcclxuICAgICAgdGhpcy5QdWJsaXNoZWQuVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICAgIHRoaXMuUHVibGlzaGVkLklzRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuUHVibGlzaGVkLlZhbHVlID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMuaXNQdWJsaXNoZWRcclxuXHJcbiAgICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSBmYWxzZVxyXG4gICAgICB0aGlzLklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICAgIHRoaXMuSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcblxyXG5cclxuICAgICAgdGhpcy5TaG93V29ya2Zsb3dEZXRhaWxzID0gdHJ1ZTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy9EZWxldGUgcHJvdmlkZXJcclxuICBzaG93UHVibGlzaFdGTW9kYWwoaWQ6IHN0cmluZykge1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaChpZCk7XHJcblxyXG4gICAgdGhpcy5wdWJsaXNoV0ZDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5wdWJsaXNoV0ZDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMucHVibGlzaFdvcmtGbG93O1xyXG4gICAgdGhpcy5wdWJsaXNoV0ZDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLnB1Ymxpc2hXRkNvbmZpcm1hdGlvbk9wdGlvbnMuQ29uZmlybWF0aW9uSGVhZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaFdvcmtGZmxvd1wiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5Db25maXJtYXRpb25Cb2R5ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaFdvcmtGZmxvd0NvbmZpcm1hdGlvblwiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5TdWJtaXRCdXR0b25UZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaFwiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5TdWNjZXNzTm90aWZpY2F0aW9uTWVzc2FnZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlB1Ymxpc2hlZFN1Y2Nlc3NmdWxseVwiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5wdWJsaXNoV29ya0Zsb3dPblN1Y2Nlc3M7XHJcblxyXG4gICAgdGhpcy5wdWJsaXNoQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5wdWJsaXNoQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcbiAgcHVibGlzaFdvcmtGbG93ID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuV29ya2Zsb3dTZXJ2aWNlLnB1Ymxpc2hXb3JrRmxvdyhpZCk7XHJcbiAgfVxyXG4gIHB1Ymxpc2hXb3JrRmxvd09uU3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMuV29ya2Zsb3dEZXRhaWxzLmlzUHVibGlzaGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vV0YgdmVyc2lvbiBmdW5jdGlvbnNcclxuICBpbml0aWFsaXplVmVyc2lvbigpIHtcclxuICAgIHRoaXMuU2hvd1dvcmtmbG93RGV0YWlscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLklzd29ya2Zsb3dBY3Rpdml0eUZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIC8vIFRleHRCb3ggaW50aVxyXG5cclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuXHJcbiAgICB0aGlzLldvcmtmbG93SWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLldvcmtmbG93SWRUZXh0Qm94Lk5hbWUgPSBcIldvcmtmbG93SWRUZXh0Qm94XCJcclxuICAgIHRoaXMuV29ya2Zsb3dJZFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy5Xb3JrZmxvd0lkVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuV29ya2Zsb3dJZFRleHRCb3guVmFsdWUgPSB0aGlzLldvcmtmbG93SWRcclxuXHJcbiAgICB0aGlzLldvcmtmbG93SWRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0lkRmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwiV29ya2Zsb3dJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5Xb3JrZmxvd0lkRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcIldmSURcIlxyXG4gICAgdGhpcy5Xb3JrZmxvd0lkRmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLldvcmtmbG93SWRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLldvcmtGbG93VmVyc2lvbkFwaVVybCArICdHZXRWZXJzaW9uc0xpc3RpbmcnO1xyXG4gICAgdGhpcy5Xb3JrZmxvd1ZlcnNpb25QYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCIsIFwiV29ya2Zsb3dJZFRleHRCb3hcIl1cclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nLkZpbHRlcnMgPSBbdGhpcy5UZXh0SW5wdXRGaWx0ZXIsIHRoaXMuV29ya2Zsb3dJZEZpbHRlcl1cclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuXHJcbiAgICB0aGlzLklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLklzd29ya2Zsb3dBY3Rpdml0eUZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0sIDEwKTtcclxuICB9XHJcbiAgc2V0V29ya2Zsb3dWZXJzaW9uTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcblxyXG4gIH1cclxuXHJcbiAgLy9XRiB2YXJpYWJsZXMgRnVuY3Rpb25zXHJcbiAgc2V0V29ya2Zsb3dWYXJpYWJsZUxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVQYWdpbmdSZXN1bHQgPSByZXN1bHRcclxuICB9XHJcblxyXG4gIC8vaW5pdGlhbGl6ZSBXRiB2YXJpYWJsZXMgcGFnZVxyXG4gIGluaXRpYWxpemVXb3JrZmxvd1ZhcmlhYmxlcygpIHtcclxuICAgIC8vIFRleHRCb3ggaW5pdFxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveC5OYW1lID0gXCJXb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVzZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlO1xyXG5cclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcIldvcmtmbG93VmFyaWFibGVzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuVmVyaXNvbklkVGV4dEJveC5OYW1lID0gXCJWZXJpc29uSWRUZXh0Qm94XCJcclxuICAgIHRoaXMuVmVyaXNvbklkVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRCb3guVmFsdWUgPSB0aGlzLldvcmtmbG93SWRcclxuXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcIlZlcmlzb25JZFRleHRCb3hcIlxyXG4gICAgdGhpcy5WZXJpc29uSWRUZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwidmVyc2lvbklEXCJcclxuICAgIHRoaXMuVmVyaXNvbklkVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlQXBpVXJsICsgJ0dldFZhcmlhYmxlTGlzdGluZyc7XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVQYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJXb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveFwiLCBcIlZlcmlzb25JZFRleHRCb3hcIl1cclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyLCB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcblxyXG4gICAgdGhpcy5TaG93V29ya2Zsb3dEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuICAgIHRoaXMuSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuSXNXb3JrZmxvd1ZhcmlhYmxlRmlsdGVyTG9hZGVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgLy9BZGQsRWRpdCBXRiB2YXJpYWJsZSBzaGFyZWQgZnVuY3Rpb25zXHJcbiAgV0ZWYXJpYWJsZVR5cGVPbkNoYW5nZSh0eXBlOiBzdHJpbmcsIGlzQWRkOiBib29sZWFuKSB7XHJcbiAgICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hZGRMYXN0TG9va3VwSW5kZXg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChcIkFkZExvb2t1cE5hbWVFTlwiICsgaSk7XHJcbiAgICAgICAgdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybS5yZW1vdmVDb250cm9sKFwiQWRkTG9va3VwTmFtZUFSXCIgKyBpKTtcclxuICAgICAgICB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBWYWx1ZVwiICsgaSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5hZGRMYXN0TG9va3VwSW5kZXggPSAwO1xyXG4gICAgICBpZiAodHlwZSA9PSBWYXJpYWJsZURhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiB8fCB0eXBlID09IFZhcmlhYmxlRGF0YVR5cGUuTXVsdGlTZWxlY3Rpb24pXHJcbiAgICAgICAgdGhpcy5zaG93QWRkTG9va3Vwc1RhYmxlID0gdHJ1ZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuc2hvd0FkZExvb2t1cHNUYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZWRpdExhc3RMb29rdXBJbmRleDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChcIkVkaXRMb29rdXBJRFwiICsgaSk7XHJcbiAgICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChcIkVkaXRMb29rdXBOYW1lRU5cIiArIGkpO1xyXG4gICAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtLnJlbW92ZUNvbnRyb2woXCJFZGl0TG9va3VwTmFtZUFSXCIgKyBpKTtcclxuICAgICAgICB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybS5yZW1vdmVDb250cm9sKFwiRWRpdExvb2t1cFZhbHVlXCIgKyBpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVkaXRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5lZGl0TGFzdExvb2t1cEluZGV4ID0gMDtcclxuICAgICAgaWYgKHR5cGUgPT0gVmFyaWFibGVEYXRhVHlwZS5TaW5nbGVTZWxlY3Rpb24gfHwgdHlwZSA9PSBWYXJpYWJsZURhdGFUeXBlLk11bHRpU2VsZWN0aW9uKVxyXG4gICAgICAgIHRoaXMuc2hvd0VkaXRMb29rdXBzVGFibGUgPSB0cnVlO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5zaG93RWRpdExvb2t1cHNUYWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBpbml0aWFsaXplV0ZWYXJpYWJsZUxvb2t1cE9wdGlvbnMoaXNBZGQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBsb29rdXBPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IG9iamVjdExvb2t1cE9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBsZXQgYWN0aW9uSW5kaWNhdGU6IHN0cmluZztcclxuICAgIGxldCBpbmRleDogbnVtYmVyO1xyXG4gICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgIGFjdGlvbkluZGljYXRlID0gXCJBZGRcIjtcclxuICAgICAgaW5kZXggPSB0aGlzLmFkZExhc3RMb29rdXBJbmRleDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBhY3Rpb25JbmRpY2F0ZSA9IFwiRWRpdFwiO1xyXG4gICAgICBpbmRleCA9IHRoaXMuZWRpdExhc3RMb29rdXBJbmRleDtcclxuICAgIH1cclxuICAgIC8vRm9yIGVkaXQgb25seVxyXG4gICAgbGV0IGxvb2t1cElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBsb29rdXBJRC5OYW1lID0gYWN0aW9uSW5kaWNhdGUgKyBcIkxvb2t1cElEXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cElELkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBsb29rdXBJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgbGV0IGxvb2t1cE5hbWVFTiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgbG9va3VwTmFtZUVOLk5hbWUgPSBhY3Rpb25JbmRpY2F0ZSArIFwiTG9va3VwTmFtZUVOXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cE5hbWVFTi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgbG9va3VwTmFtZUVOLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIGxvb2t1cE5hbWVFTi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIGxvb2t1cE5hbWVFTi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgbGV0IGxvb2t1cE5hbWVBUiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgbG9va3VwTmFtZUFSLk5hbWUgPSBhY3Rpb25JbmRpY2F0ZSArIFwiTG9va3VwTmFtZUFSXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cE5hbWVBUi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgbG9va3VwTmFtZUFSLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIGxvb2t1cE5hbWVBUi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIGxvb2t1cE5hbWVBUi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgbGV0IGxvb2t1cFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBsb29rdXBWYWx1ZS5OYW1lID0gYWN0aW9uSW5kaWNhdGUgKyBcIkxvb2t1cFZhbHVlXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cFZhbHVlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBsb29rdXBWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICBsb29rdXBWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIGxvb2t1cFZhbHVlLk1heExlbmd0aCA9IDIwMDA7XHJcblxyXG4gICAgaWYgKGlzQWRkKVxyXG4gICAgICBvYmplY3RMb29rdXBPcHRpb25zLnB1c2gobG9va3VwTmFtZUVOLCBsb29rdXBOYW1lQVIsIGxvb2t1cFZhbHVlKTtcclxuICAgIGVsc2VcclxuICAgICAgb2JqZWN0TG9va3VwT3B0aW9ucy5wdXNoKGxvb2t1cElELCBsb29rdXBOYW1lRU4sIGxvb2t1cE5hbWVBUiwgbG9va3VwVmFsdWUpO1xyXG5cclxuICAgIGxvb2t1cE9wdGlvbnMucHVzaChvYmplY3RMb29rdXBPcHRpb25zKTtcclxuXHJcbiAgICBpbmRleCArPSAxO1xyXG4gICAgcmV0dXJuIFtsb29rdXBPcHRpb25zLCBpbmRleF07XHJcblxyXG4gIH1cclxuICBkZWxldGVXRlZhcmlhYmxlTG9va3VwKGRlbGV0ZWRMb29rdXA6IGFueSwgaXNBZGQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChpc0FkZCkge1xyXG4gICAgICBsZXQgZGVsZXRlZExvb2t1cEluZGV4OiBudW1iZXIgPSB0aGlzLmFkZFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRMb29rdXApO1xyXG4gICAgICBpZiAoZGVsZXRlZExvb2t1cEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuYWRkV0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zLnNwbGljZShkZWxldGVkTG9va3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZExvb2t1cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRMb29rdXBbaV0uTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGRlbGV0ZWRMb29rdXBJbmRleDogbnVtYmVyID0gdGhpcy5lZGl0V0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zLmluZGV4T2YoZGVsZXRlZExvb2t1cCk7XHJcbiAgICAgIGlmIChkZWxldGVkTG9va3VwSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0V0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zLnNwbGljZShkZWxldGVkTG9va3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZExvb2t1cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkTG9va3VwW2ldLk5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9BZGQgV0YgdmFyaWFibGVcclxuICBzaG93QWRkV29ya2Zsb3dWYXJpYWJsZU1vZGFsKEFkZFdvcmtmbG93VmFyaWFibGVNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZXNTZXJ2aWNlLmxvYWRBZGREcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5EYXRhVHlwZUxpc3QgPSByZXN1bHRPYmouZGF0YVR5cGVMaXN0O1xyXG5cclxuICAgICAgdGhpcy5hZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5hZGRMYXN0TG9va3VwSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnNob3dBZGRMb29rdXBzVGFibGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtXHJcbiAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZFdGVmFyaWFibGVNb2RlbDtcclxuICAgICAgdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRXRlZhcmlhYmxlRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1ZpZXdFbGVtZW50XHJcblxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZU5hbWUuTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlTmFtZS5NYXhMZW5ndGggPSAyNTVcclxuXHJcblxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZVN5c05hbWUuTmFtZSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVTeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZVN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVTeXNOYW1lLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlU3lzTmFtZS5NYXhMZW5ndGggPSAxMDBcclxuXHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZURhdGFUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVEYXRhVHlwZS5OYW1lID0gXCJEYXRhVHlwZUl0ZW1JRF9HVUlEXCJcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlRGF0YVR5cGUuTGFiZWxLZXkgPSBcIkRhdGFUeXBlXCJcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlRGF0YVR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuRGF0YVR5cGVMaXN0XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZURhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZURhdGFUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlRGF0YVR5cGUuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG5cclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlQ29uc3RhbnQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZUNvbnN0YW50Lk5hbWUgPSBcIklzQ29uc3RhbnRcIlxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVDb25zdGFudC5MYWJlbEtleSA9IFwiQ29uc3RhbnRcIlxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVDb25zdGFudC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbFxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZFdvcmtmbG93VmFyaWFibGVNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldEFkZFdGVmFyaWFibGVNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybS52YWx1ZSAgYXMgYW55O1xyXG4gICAgbGV0IGFkZE1vZGVsID0gbmV3IFdGVmFyaWFibGVNb2RlbCgpO1xyXG4gICAgYWRkTW9kZWwuTmFtZSA9IFJlc3VsdE1vZGVsLk5hbWVcclxuICAgIGFkZE1vZGVsLlN5c05hbWUgPSBSZXN1bHRNb2RlbC5TeXNOYW1lXHJcbiAgICBhZGRNb2RlbC5Xb3JrZmxvd1ZlcnNpb25JRF9HVUlEID0gdGhpcy5WZXJzaW9uSWRcclxuICAgIGFkZE1vZGVsLkRhdGFUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5EYXRhVHlwZUl0ZW1JRF9HVUlEXHJcbiAgICBhZGRNb2RlbC5Jc0NvbnN0YW50ID0gUmVzdWx0TW9kZWwuSXNDb25zdGFudFxyXG5cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5hZGRMYXN0TG9va3VwSW5kZXg7IGorKykge1xyXG4gICAgICBsZXQgYWRkTG9va3VwTmFtZUVOID0gUmVzdWx0TW9kZWxbXCJBZGRMb29rdXBOYW1lRU5cIiArIGpdO1xyXG4gICAgICBpZiAoYWRkTG9va3VwTmFtZUVOID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGxldCBhZGRMb29rdXBOYW1lQVIgPSBSZXN1bHRNb2RlbFtcIkFkZExvb2t1cE5hbWVBUlwiICsgal07XHJcbiAgICAgIGxldCBhZGRMb29rdXBWYWx1ZSA9IFJlc3VsdE1vZGVsW1wiQWRkTG9va3VwVmFsdWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IGxvb2t1cDogVmFyaWFibGVMb29rdXBNb2RlbCA9IG5ldyBWYXJpYWJsZUxvb2t1cE1vZGVsKCk7XHJcbiAgICAgIGxvb2t1cC5OYW1lRU4gPSBhZGRMb29rdXBOYW1lRU47XHJcbiAgICAgIGxvb2t1cC5OYW1lQVIgPSBhZGRMb29rdXBOYW1lQVI7XHJcbiAgICAgIGxvb2t1cC5WYWx1ZSA9IGFkZExvb2t1cFZhbHVlO1xyXG4gICAgICBhZGRNb2RlbC52YXJpYWJsZUxvb2t1cERUT3MucHVzaChsb29rdXApO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChhZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcbiAgZ2V0QWRkV0ZWYXJpYWJsZUZ1bmN0aW9uID0gKEFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLldvcmtmbG93VmFyaWFibGVzU2VydmljZS5hZGRWYXJpYWJsZShBZGRNb2RlbClcclxuICB9XHJcbiAgYWRkV0ZWYXJpYWJsZUxvb2t1cGluQWRkTW9kZSgpIHtcclxuICAgIGxldCByZXN1bHQ6IGFueSA9IHRoaXMuaW5pdGlhbGl6ZVdGVmFyaWFibGVMb29rdXBPcHRpb25zKHRydWUpO1xyXG4gICAgdGhpcy5hZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMgPSB0aGlzLmFkZFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucy5jb25jYXQocmVzdWx0WzBdKTtcclxuICAgIHRoaXMuYWRkTGFzdExvb2t1cEluZGV4ID0gcmVzdWx0WzFdO1xyXG4gIH1cclxuXHJcbiAgLy9FZGl0IFdGIHZhcmlhYmxlXHJcbiAgc2hvd0VkaXRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwoV0ZWYXJpYWJsZUlEOiBzdHJpbmcsIEVkaXRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVJZCA9IFdGVmFyaWFibGVJRDtcclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZXNTZXJ2aWNlLmdldEVkaXRXb3JrRmxvd1ZhcmlhYmxlRGF0YShXRlZhcmlhYmxlSUQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgd29ya2Zsb3dWYXJpYWJsZSA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgd29ya2Zsb3dWYXJpYWJsZS5kYXRhVHlwZUl0ZW1JRF9HVUlEID0gd29ya2Zsb3dWYXJpYWJsZS5kYXRhVHlwZUl0ZW1JRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBsZXQgbGlzdHMgPSByZXN1bHRPYmoubGlzdHM7XHJcbiAgICAgIHRoaXMuRGF0YVR5cGVMaXN0ID0gbGlzdHMuZGF0YVR5cGVMaXN0O1xyXG5cclxuICAgICAgdGhpcy5lZGl0V0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zID0gW107XHJcbiAgICAgIHRoaXMuZWRpdExhc3RMb29rdXBJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuc2hvd0VkaXRMb29rdXBzVGFibGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybVxyXG4gICAgICB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdFdGVmFyaWFibGVNb2RlbDtcclxuICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdFdGVmFyaWFibGVGdW5jdGlvbjtcclxuICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1ZpZXdFbGVtZW50XHJcbiAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGU7XHJcblxyXG4gICAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIG5hbWUuQXJhYmljID0gd29ya2Zsb3dWYXJpYWJsZS5uYW1lLmFyYWJpYztcclxuICAgICAgbmFtZS5FbmdsaXNoID0gd29ya2Zsb3dWYXJpYWJsZS5uYW1lLmVuZ2xpc2g7XHJcblxyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlTmFtZS5OYW1lID0gXCJOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZU5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlTmFtZS5WYWx1ZSA9IG5hbWU7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVOYW1lLk1heExlbmd0aCA9IDI1NTtcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlU3lzTmFtZS5OYW1lID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVTeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZVN5c05hbWUuVmFsdWUgPSB3b3JrZmxvd1ZhcmlhYmxlLnN5c05hbWU7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVTeXNOYW1lLk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVEYXRhVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZURhdGFUeXBlLk5hbWUgPSBcIkRhdGFUeXBlSXRlbUlEX0dVSURcIlxyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlRGF0YVR5cGUuTGFiZWxLZXkgPSBcIkRhdGFUeXBlXCJcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZURhdGFUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLkRhdGFUeXBlTGlzdFxyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlRGF0YVR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZURhdGFUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZURhdGFUeXBlLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZURhdGFUeXBlLlNlbGVjdGVkSXRlbXMgPSB3b3JrZmxvd1ZhcmlhYmxlLmRhdGFUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlQ29uc3RhbnQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVDb25zdGFudC5OYW1lID0gXCJJc0NvbnN0YW50XCJcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZUNvbnN0YW50LkxhYmVsS2V5ID0gXCJDb25zdGFudFwiXHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVDb25zdGFudC5WYWx1ZSA9IHdvcmtmbG93VmFyaWFibGUuaXNDb25zdGFudFxyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlQ29uc3RhbnQuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWxcclxuXHJcblxyXG4gICAgICBpZiAod29ya2Zsb3dWYXJpYWJsZS5kYXRhVHlwZUl0ZW1JRF9HVUlEID09IFZhcmlhYmxlRGF0YVR5cGUuU2luZ2xlU2VsZWN0aW9uIHx8IHdvcmtmbG93VmFyaWFibGUuZGF0YVR5cGVJdGVtSURfR1VJRCA9PSBWYXJpYWJsZURhdGFUeXBlLk11bHRpU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgLy9TZXQgTG9va3VwIENvbnRyb2xzXHJcbiAgICAgICAgdGhpcy5zZXRFZGl0VmFyaWFibGVMb29rdXBzKHdvcmtmbG93VmFyaWFibGUudmFyaWFibGVMb29rdXBEVE9zKTtcclxuICAgICAgICB0aGlzLnNob3dFZGl0TG9va3Vwc1RhYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEVkaXRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldEVkaXRXRlZhcmlhYmxlTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtLnZhbHVlICBhcyBhbnk7XHJcbiAgICBsZXQgRWRpdE1vZGVsID0gbmV3IFdGVmFyaWFibGVNb2RlbCgpO1xyXG4gICAgRWRpdE1vZGVsLklEX0dVSUQgPSB0aGlzLldvcmtmbG93VmFyaWFibGVJZDtcclxuICAgIEVkaXRNb2RlbC5OYW1lID0gUmVzdWx0TW9kZWwuTmFtZVxyXG4gICAgRWRpdE1vZGVsLlN5c05hbWUgPSBSZXN1bHRNb2RlbC5TeXNOYW1lXHJcbiAgICBFZGl0TW9kZWwuV29ya2Zsb3dWZXJzaW9uSURfR1VJRCA9IHRoaXMuVmVyc2lvbklkO1xyXG4gICAgRWRpdE1vZGVsLkRhdGFUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5EYXRhVHlwZUl0ZW1JRF9HVUlEXHJcbiAgICBFZGl0TW9kZWwuSXNDb25zdGFudCA9IFJlc3VsdE1vZGVsLklzQ29uc3RhbnRcclxuXHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZWRpdExhc3RMb29rdXBJbmRleDsgaisrKSB7XHJcbiAgICAgIGxldCBlZGl0TG9va3VwSUQgPSBSZXN1bHRNb2RlbFtcIkVkaXRMb29rdXBJRFwiICsgal07XHJcbiAgICAgIGlmIChlZGl0TG9va3VwSUQgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgbGV0IGVkaXRMb29rdXBOYW1lRU4gPSBSZXN1bHRNb2RlbFtcIkVkaXRMb29rdXBOYW1lRU5cIiArIGpdO1xyXG4gICAgICBsZXQgZWRpdExvb2t1cE5hbWVBUiA9IFJlc3VsdE1vZGVsW1wiRWRpdExvb2t1cE5hbWVBUlwiICsgal07XHJcbiAgICAgIGxldCBlZGl0TG9va3VwVmFsdWUgPSBSZXN1bHRNb2RlbFtcIkVkaXRMb29rdXBWYWx1ZVwiICsgal07XHJcblxyXG4gICAgICBsZXQgbG9va3VwOiBWYXJpYWJsZUxvb2t1cE1vZGVsID0gbmV3IFZhcmlhYmxlTG9va3VwTW9kZWwoKTtcclxuICAgICAgbG9va3VwLklEX0dVSUQgPSBlZGl0TG9va3VwSUQ7XHJcbiAgICAgIGxvb2t1cC5OYW1lRU4gPSBlZGl0TG9va3VwTmFtZUVOO1xyXG4gICAgICBsb29rdXAuTmFtZUFSID0gZWRpdExvb2t1cE5hbWVBUjtcclxuICAgICAgbG9va3VwLlZhbHVlID0gZWRpdExvb2t1cFZhbHVlO1xyXG4gICAgICBFZGl0TW9kZWwudmFyaWFibGVMb29rdXBEVE9zLnB1c2gobG9va3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuICBnZXRFZGl0V0ZWYXJpYWJsZUZ1bmN0aW9uID0gKEVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc1NlcnZpY2UuZWRpdFZhcmlhYmxlKEVkaXRNb2RlbClcclxuICB9XHJcbiAgc2V0RWRpdFZhcmlhYmxlTG9va3VwcyhleGlzdGluZ0xvb2t1cHM6IGFueVtdKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4aXN0aW5nTG9va3Vwcy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgbGV0IG9iamVjdEF0dHJpYnV0ZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgICBsZXQgbG9va3VwSUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgbG9va3VwSUQuTmFtZSA9IFwiRWRpdExvb2t1cElEXCIgKyBpO1xyXG4gICAgICBsb29rdXBJRC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBsb29rdXBJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIGxvb2t1cElELlZhbHVlID0gZXhpc3RpbmdMb29rdXBzW2ldLmlEX0dVSUQ7XHJcblxyXG4gICAgICBsZXQgbG9va3VwTmFtZUVOID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIGxvb2t1cE5hbWVFTi5OYW1lID0gXCJFZGl0TG9va3VwTmFtZUVOXCIgKyBpO1xyXG4gICAgICBsb29rdXBOYW1lRU4uSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgbG9va3VwTmFtZUVOLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgbG9va3VwTmFtZUVOLlZhbHVlID0gZXhpc3RpbmdMb29rdXBzW2ldLm5hbWVFTjtcclxuICAgICAgbG9va3VwTmFtZUVOLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICBsb29rdXBOYW1lRU4uTWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuXHJcbiAgICAgIGxldCBsb29rdXBOYW1lQVIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgbG9va3VwTmFtZUFSLk5hbWUgPSBcIkVkaXRMb29rdXBOYW1lQVJcIiArIGk7XHJcbiAgICAgIGxvb2t1cE5hbWVBUi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBsb29rdXBOYW1lQVIuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBsb29rdXBOYW1lQVIuVmFsdWUgPSBleGlzdGluZ0xvb2t1cHNbaV0ubmFtZUFSO1xyXG4gICAgICBsb29rdXBOYW1lQVIuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIGxvb2t1cE5hbWVBUi5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkFyYWJpYztcclxuICAgICAgbG9va3VwTmFtZUFSLk1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgIGxldCBsb29rdXBWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBsb29rdXBWYWx1ZS5OYW1lID0gXCJFZGl0TG9va3VwVmFsdWVcIiArIGk7XHJcbiAgICAgIGxvb2t1cFZhbHVlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIGxvb2t1cFZhbHVlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgbG9va3VwVmFsdWUuVmFsdWUgPSBleGlzdGluZ0xvb2t1cHNbaV0udmFsdWU7XHJcbiAgICAgIGxvb2t1cFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICBsb29rdXBWYWx1ZS5NYXhMZW5ndGggPSAyMDAwO1xyXG5cclxuICAgICAgb2JqZWN0QXR0cmlidXRlT3B0aW9ucy5wdXNoKGxvb2t1cElELCBsb29rdXBOYW1lRU4sIGxvb2t1cE5hbWVBUiwgbG9va3VwVmFsdWUpO1xyXG4gICAgICB0aGlzLmVkaXRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMucHVzaChvYmplY3RBdHRyaWJ1dGVPcHRpb25zKTtcclxuICAgICAgdGhpcy5lZGl0TGFzdExvb2t1cEluZGV4ICs9IDE7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBhZGRXRlZhcmlhYmxlTG9va3VwaW5FZGl0TW9kZSgpIHtcclxuICAgIGxldCByZXN1bHQ6IGFueSA9IHRoaXMuaW5pdGlhbGl6ZVdGVmFyaWFibGVMb29rdXBPcHRpb25zKGZhbHNlKTtcclxuICAgIHRoaXMuZWRpdFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucyA9IHRoaXMuZWRpdFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucy5jb25jYXQocmVzdWx0WzBdKTtcclxuICAgIHRoaXMuZWRpdExhc3RMb29rdXBJbmRleCA9IHJlc3VsdFsxXTtcclxuICB9XHJcblxyXG4gIC8vV0YgQWN0aXZpdGl0aWVzIEZ1bmN0aW9uc1xyXG4gIHNldEFjdGl2aXR5TGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuQWN0aXZpdHlQYWdpbmdSZXN1bHQgPSByZXN1bHRcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVXb3JrZmxvd0FjdGl2aXR5KCkge1xyXG4gICAgLy8gdGhpcy5Jc3dvcmtmbG93QWN0aXZpdHlGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIHRoaXMuV29ya2Zsb3dBY3Rpdml0eUlkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94Lk5hbWUgPSBcIldvcmtmbG93QWN0aXZpdHlJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWVcclxuICAgIHRoaXMuV29ya2Zsb3dBY3Rpdml0eUlkVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuV29ya2Zsb3dBY3Rpdml0eUlkVGV4dEJveC5WYWx1ZSA9IHRoaXMuV29ya2Zsb3dJZFxyXG5cclxuICAgIHRoaXMuV29ya2Zsb3dBY3Rpdml0eUlkRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuV29ya2Zsb3dBY3Rpdml0eUlkRmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwiV29ya2Zsb3dBY3Rpdml0eUlkVGV4dEJveFwiXHJcbiAgICB0aGlzLldvcmtmbG93QWN0aXZpdHlJZEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJXZklEXCJcclxuICAgIHRoaXMuV29ya2Zsb3dBY3Rpdml0eUlkRmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLldvcmtmbG93QWN0aXZpdHlJZEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5BY3Rpdml0eVBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLkFjdGl2aXR5UGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLkFjdGl2aXR5QXBpVXJsICsgJ0dldFdvcmtmbG93QWN0aXZpdHlMaXN0aW5nJztcclxuICAgIHRoaXMuQWN0aXZpdHlQYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJXb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94XCJdXHJcbiAgICB0aGlzLkFjdGl2aXR5UGFnaW5nLkZpbHRlcnMgPSBbdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRGaWx0ZXJdXHJcbiAgICB0aGlzLkFjdGl2aXR5UGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuXHJcbiAgICB0aGlzLlNob3dXb3JrZmxvd0RldGFpbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSBmYWxzZVxyXG4gICAgdGhpcy5Jc1dvcmtmbG93VmFyaWFibGVGaWx0ZXJMb2FkZWQgPSBmYWxzZVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLklzd29ya2Zsb3dBY3Rpdml0eUZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuXHJcbiAgICB9LCAxMCk7XHJcblxyXG4gICAgLy90aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLkxvYWRkcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gIGxldCBBY3Rpdml0eUxpc3QgPSByZXN1bHQgYXMgYW55XHJcbiAgICAvLyAgdGhpcy5BY3Rpdml0eVR5cGVMaXN0ID0gQWN0aXZpdHlMaXN0XHJcblxyXG5cclxuICAgIC8vfSlcclxuICB9XHJcblxyXG4gIC8vQWRkIEFjdGl2aXR5IFdGIHZhcmlhYmxlc1xyXG4gIHNob3dBZGRXRlZhcmlhYmxlc3RvQWN0aXZpdHkodmVyc2lvbklEOiBzdHJpbmcsIGFjdGl2aXR5SUQ6IHN0cmluZywgd2ZWYXJpYWJsZXNNb2RhbDogYW55KSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5hY3Rpdml0eUlEID0gYWN0aXZpdHlJRDtcclxuICAgIHRoaXMuYWN0aXZpdHlXRlZhcmlhYmxlT3B0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy5sYXN0QWN0aXZpdHlXRlZhcmlhYmxlSW5kZXggPSAwO1xyXG4gICAgdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5nZXRBY3Rpdml0eVdGVmFyaWFibGVzKHZlcnNpb25JRCwgYWN0aXZpdHlJRCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIGxldCBtb2RlbCA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgdGhpcy5hY3Rpdml0eVZhcmlhYmxlc0xpc3QgPSByZXN1bHRPYmouYWN0aXZpdHlWYXJpYWJsZXNMaXN0O1xyXG5cclxuICAgICAgdGhpcy5hZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLmFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtXHJcbiAgICAgIHRoaXMuYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRhZGRXRlZhcmlhYmxldG9BY3Rpdml0eU1vZGVsO1xyXG4gICAgICB0aGlzLmFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRhZGRXRlZhcmlhYmxldG9BY3Rpdml0eUZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLmFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5BY3Rpdml0eVBhZ2luZ1ZpZXdFbGVtZW50O1xyXG4gICAgICB0aGlzLmFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybU9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RlbC5hY3Rpdml0eVZhcmlhYmxlRFRPcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBjdXJyZW50VmFyaWFibGUgPSBtb2RlbC5hY3Rpdml0eVZhcmlhYmxlRFRPc1tpXTtcclxuICAgICAgICBsZXQgb2JqZWN0VmFyaWFibGVPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgICBsZXQgaXNTeXN0ZW06IGJvb2xlYW4gPSBjdXJyZW50VmFyaWFibGUuaXNTeXN0ZW07XHJcblxyXG4gICAgICAgIGxldCB2YXJpYWJsZUlzU3lzdGVtID0gbmV3IFRleHRCb3hPcHRpb25zKCk7Ly9oaWRkZW5cclxuICAgICAgICB2YXJpYWJsZUlzU3lzdGVtLk5hbWUgPSBcInZhcmlhYmxlSXNTeXN0ZW1cIiArIGk7XHJcbiAgICAgICAgdmFyaWFibGVJc1N5c3RlbS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgIHZhcmlhYmxlSXNTeXN0ZW0uVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHZhcmlhYmxlSXNTeXN0ZW0uVmFsdWUgPSBpc1N5c3RlbTtcclxuXHJcbiAgICAgICAgbGV0IHZhcmlhYmxlSXNFbmFibGVkID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNFbmFibGVkLk5hbWUgPSBcInZhcmlhYmxlSXNFbmFibGVkXCIgKyBpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNFbmFibGVkLlZhbHVlID0gY3VycmVudFZhcmlhYmxlLmlzRW5hYmxlZDtcclxuICAgICAgICB2YXJpYWJsZUlzRW5hYmxlZC5Jc0Rpc2FibGVkID0gaXNTeXN0ZW07XHJcblxyXG4gICAgICAgIC8vaGlkZGVuIGZpZWxkXHJcbiAgICAgICAgbGV0IHZhcmlhYmxlSXNFbmFibGVkSGlkZGVuID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNFbmFibGVkSGlkZGVuLk5hbWUgPSBcInZhcmlhYmxlSXNFbmFibGVkSGlkZGVuXCIgKyBpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNFbmFibGVkSGlkZGVuLlZhbHVlID0gY3VycmVudFZhcmlhYmxlLmlzRW5hYmxlZDtcclxuXHJcbiAgICAgICAgbGV0IHZhcmlhYmxlSXNNYW5kYXRvcnkgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdmFyaWFibGVJc01hbmRhdG9yeS5OYW1lID0gXCJ2YXJpYWJsZUlzTWFuZGF0b3J5XCIgKyBpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNNYW5kYXRvcnkuVmFsdWUgPSBjdXJyZW50VmFyaWFibGUuaXNNYW5kYXRvcnk7XHJcbiAgICAgICAgdmFyaWFibGVJc01hbmRhdG9yeS5Jc0Rpc2FibGVkID0gaXNTeXN0ZW07XHJcblxyXG4gICAgICAgIC8vaGlkZGVuIGZpZWxkXHJcbiAgICAgICAgbGV0IHZhcmlhYmxlSXNNYW5kYXRvcnlIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdmFyaWFibGVJc01hbmRhdG9yeUhpZGRlbi5OYW1lID0gXCJ2YXJpYWJsZUlzTWFuZGF0b3J5SGlkZGVuXCIgKyBpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNNYW5kYXRvcnlIaWRkZW4uVmFsdWUgPSBjdXJyZW50VmFyaWFibGUuaXNNYW5kYXRvcnk7XHJcblxyXG4gICAgICAgIGxldCB2YXJpYWJsZUlzVmlzaWJsZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB2YXJpYWJsZUlzVmlzaWJsZS5OYW1lID0gXCJ2YXJpYWJsZUlzVmlzaWJsZVwiICsgaTtcclxuICAgICAgICB2YXJpYWJsZUlzVmlzaWJsZS5WYWx1ZSA9IGN1cnJlbnRWYXJpYWJsZS5pc1Zpc2libGU7XHJcbiAgICAgICAgdmFyaWFibGVJc1Zpc2libGUuSXNEaXNhYmxlZCA9IGlzU3lzdGVtO1xyXG5cclxuICAgICAgICAvL2hpZGRlbiBmaWVsZFxyXG4gICAgICAgIGxldCB2YXJpYWJsZUlzVmlzaWJsZUhpZGRlbiA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB2YXJpYWJsZUlzVmlzaWJsZUhpZGRlbi5OYW1lID0gXCJ2YXJpYWJsZUlzVmlzaWJsZUhpZGRlblwiICsgaTtcclxuICAgICAgICB2YXJpYWJsZUlzVmlzaWJsZUhpZGRlbi5WYWx1ZSA9IGN1cnJlbnRWYXJpYWJsZS5pc1Zpc2libGU7XHJcblxyXG4gICAgICAgIG9iamVjdFZhcmlhYmxlT3B0aW9ucy5wdXNoKHZhcmlhYmxlSXNTeXN0ZW0sIHZhcmlhYmxlSXNFbmFibGVkLCB2YXJpYWJsZUlzRW5hYmxlZEhpZGRlbiwgdmFyaWFibGVJc01hbmRhdG9yeSwgdmFyaWFibGVJc01hbmRhdG9yeUhpZGRlbixcclxuICAgICAgICAgIHZhcmlhYmxlSXNWaXNpYmxlLCB2YXJpYWJsZUlzVmlzaWJsZUhpZGRlbiwgaXNTeXN0ZW0pO1xyXG5cclxuICAgICAgICBpZiAoaXNTeXN0ZW0pIHtcclxuICAgICAgICAgIGxldCB2YXJpYWJsZU5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHZhcmlhYmxlTmFtZS5OYW1lID0gXCJ2YXJpYWJsZU5hbWVcIiArIGk7XHJcbiAgICAgICAgICB2YXJpYWJsZU5hbWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgIHZhcmlhYmxlTmFtZS5Jc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHZhcmlhYmxlTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB2YXJpYWJsZU5hbWUuVmFsdWUgPSBjdXJyZW50VmFyaWFibGUudmFyaWFibGVOYW1lO1xyXG5cclxuICAgICAgICAgIGxldCB2YXJpYWJsZUlEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7Ly9oaWRkZW5cclxuICAgICAgICAgIHZhcmlhYmxlSUQuTmFtZSA9IFwidmFyaWFibGVJRFwiICsgaTtcclxuICAgICAgICAgIHZhcmlhYmxlSUQuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgIHZhcmlhYmxlSUQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdmFyaWFibGVJRC5WYWx1ZSA9IGN1cnJlbnRWYXJpYWJsZS5pRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgIG9iamVjdFZhcmlhYmxlT3B0aW9ucy5wdXNoKHZhcmlhYmxlTmFtZSwgdmFyaWFibGVJRCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxldCB2YXJpYWJsZUlEZHJvcGRvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB2YXJpYWJsZUlEZHJvcGRvd24uTmFtZSA9IFwidmFyaWFibGVJRGRyb3Bkb3duXCI7XHJcbiAgICAgICAgICB2YXJpYWJsZUlEZHJvcGRvd24uSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgIHZhcmlhYmxlSURkcm9wZG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVJRGRyb3Bkb3duLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHZhcmlhYmxlSURkcm9wZG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHZhcmlhYmxlSURkcm9wZG93bi5EYXRhU291cmNlID0gdGhpcy5hY3Rpdml0eVZhcmlhYmxlc0xpc3Q7XHJcbiAgICAgICAgICB2YXJpYWJsZUlEZHJvcGRvd24uU2VsZWN0ZWRJdGVtcyA9IGN1cnJlbnRWYXJpYWJsZS5pREdVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgb2JqZWN0VmFyaWFibGVPcHRpb25zLnB1c2godmFyaWFibGVJRGRyb3Bkb3duKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hY3Rpdml0eVdGVmFyaWFibGVPcHRpb25zLnB1c2gob2JqZWN0VmFyaWFibGVPcHRpb25zKTtcclxuICAgICAgICB0aGlzLmxhc3RBY3Rpdml0eVdGVmFyaWFibGVJbmRleCArPSAxO1xyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHdmVmFyaWFibGVzTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldGFkZFdGVmFyaWFibGV0b0FjdGl2aXR5TW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtLnZhbHVlO1xyXG4gICAgbGV0IG1vZGVsID0gbmV3IFdGQWN0aXZpdHlWYXJpYWJsZXNNb2RlbCgpO1xyXG4gICAgbW9kZWwuQWN0aXZpdHlJRF9HVUlEID0gdGhpcy5hY3Rpdml0eUlEO1xyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmxhc3RBY3Rpdml0eVdGVmFyaWFibGVJbmRleDsgaisrKSB7XHJcbiAgICAgIGxldCB2YXJpYWJsZXNJc1N5c3RlbSA9IFJlc3VsdE1vZGVsW1widmFyaWFibGVJc1N5c3RlbVwiICsgal07XHJcbiAgICAgIGlmICh2YXJpYWJsZXNJc1N5c3RlbSA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgdmFyaWFibGVJc0VuYWJsZWQ6IGJvb2xlYW47XHJcbiAgICAgIGxldCB2YXJpYWJsZUlzTWFuZGF0b3J5OiBib29sZWFuO1xyXG4gICAgICBsZXQgdmFyaWFibGVJc1Zpc2libGU6IGJvb2xlYW47XHJcblxyXG4gICAgICBsZXQgYWN0aXZpdHlWYXJpYWJsZTogV0ZBY3Rpdml0eVZhcmlhYmxlRFRPID0gbmV3IFdGQWN0aXZpdHlWYXJpYWJsZURUTygpO1xyXG5cclxuICAgICAgaWYgKHZhcmlhYmxlc0lzU3lzdGVtKSB7XHJcbiAgICAgICAgbGV0IHZhcmlhYmxlSUQgPSBSZXN1bHRNb2RlbFtcInZhcmlhYmxlSURcIiArIGpdO1xyXG4gICAgICAgIGFjdGl2aXR5VmFyaWFibGUuSURfR1VJRCA9IHZhcmlhYmxlSUQ7XHJcblxyXG4gICAgICAgIHZhcmlhYmxlSXNFbmFibGVkID0gUmVzdWx0TW9kZWxbXCJ2YXJpYWJsZUlzRW5hYmxlZEhpZGRlblwiICsgal07XHJcbiAgICAgICAgdmFyaWFibGVJc01hbmRhdG9yeSA9IFJlc3VsdE1vZGVsW1widmFyaWFibGVJc01hbmRhdG9yeUhpZGRlblwiICsgal07XHJcbiAgICAgICAgdmFyaWFibGVJc1Zpc2libGUgPSBSZXN1bHRNb2RlbFtcInZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuXCIgKyBqXTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgdmFyaWFibGVJRCA9IFJlc3VsdE1vZGVsW1widmFyaWFibGVJRGRyb3Bkb3duXCIgKyBqXTtcclxuICAgICAgICBhY3Rpdml0eVZhcmlhYmxlLklEX0dVSUQgPSB2YXJpYWJsZUlEO1xyXG5cclxuICAgICAgICB2YXJpYWJsZUlzRW5hYmxlZCA9IFJlc3VsdE1vZGVsW1widmFyaWFibGVJc0VuYWJsZWRcIiArIGpdO1xyXG4gICAgICAgIHZhcmlhYmxlSXNNYW5kYXRvcnkgPSBSZXN1bHRNb2RlbFtcInZhcmlhYmxlSXNNYW5kYXRvcnlcIiArIGpdO1xyXG4gICAgICAgIHZhcmlhYmxlSXNWaXNpYmxlID0gUmVzdWx0TW9kZWxbXCJ2YXJpYWJsZUlzVmlzaWJsZVwiICsgal07XHJcbiAgICAgIH1cclxuICAgICAgYWN0aXZpdHlWYXJpYWJsZS5Jc1N5c3RlbSA9IHZhcmlhYmxlc0lzU3lzdGVtO1xyXG4gICAgICBhY3Rpdml0eVZhcmlhYmxlLklzRW5hYmxlZCA9IHZhcmlhYmxlSXNFbmFibGVkO1xyXG4gICAgICBhY3Rpdml0eVZhcmlhYmxlLklzTWFuZGF0b3J5ID0gdmFyaWFibGVJc01hbmRhdG9yeTtcclxuICAgICAgYWN0aXZpdHlWYXJpYWJsZS5Jc1Zpc2libGUgPSB2YXJpYWJsZUlzVmlzaWJsZTtcclxuICAgICAgbW9kZWwuYWN0aXZpdHlWYXJpYWJsZURUT3MucHVzaChhY3Rpdml0eVZhcmlhYmxlKTtcclxuICAgIH1cclxuICAgIHBhcmFtQXJyYXkucHVzaChtb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcbiAgZ2V0YWRkV0ZWYXJpYWJsZXRvQWN0aXZpdHlGdW5jdGlvbiA9ICh2YXJpYWJsZXNNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5hZGRBY3Rpdml0eVdGVmFyaWFibGVzKHZhcmlhYmxlc01vZGVsKVxyXG4gIH1cclxuICBkZWxldGVBY3Rpdml0eVdGVmFyaWFibGUoZGVsZXRlZFZhcmlhYmxlOiBhbnkpIHtcclxuICAgIGxldCBkZWxldGVkVmFyaWFibGVJbmRleDogbnVtYmVyID0gdGhpcy5hY3Rpdml0eVdGVmFyaWFibGVPcHRpb25zLmluZGV4T2YoZGVsZXRlZFZhcmlhYmxlKTtcclxuICAgIGlmIChkZWxldGVkVmFyaWFibGVJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5hY3Rpdml0eVdGVmFyaWFibGVPcHRpb25zLnNwbGljZShkZWxldGVkVmFyaWFibGVJbmRleCwgMSk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZFZhcmlhYmxlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5hZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkVmFyaWFibGVbaV0uTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYWRkTmV3QWN0aXZpdHlXRlZhcmlhYmxlKCkge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5sYXN0QWN0aXZpdHlXRlZhcmlhYmxlSW5kZXg7XHJcblxyXG4gICAgbGV0IG9iamVjdFZhcmlhYmxlT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBsZXQgdmFyaWFibGVJRGRyb3Bkb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgdmFyaWFibGVJRGRyb3Bkb3duLk5hbWUgPSBcInZhcmlhYmxlSURkcm9wZG93blwiICsgaW5kZXg7XHJcbiAgICB2YXJpYWJsZUlEZHJvcGRvd24uSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIHZhcmlhYmxlSURkcm9wZG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdmFyaWFibGVJRGRyb3Bkb3duLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgIHZhcmlhYmxlSURkcm9wZG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIHZhcmlhYmxlSURkcm9wZG93bi5EYXRhU291cmNlID0gdGhpcy5hY3Rpdml0eVZhcmlhYmxlc0xpc3Q7XHJcblxyXG4gICAgbGV0IGlzU3lzdGVtOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IHZhcmlhYmxlSXNTeXN0ZW0gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTsvL2hpZGRlblxyXG4gICAgdmFyaWFibGVJc1N5c3RlbS5OYW1lID0gXCJ2YXJpYWJsZUlzU3lzdGVtXCIgKyBpbmRleDtcclxuICAgIHZhcmlhYmxlSXNTeXN0ZW0uSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIHZhcmlhYmxlSXNTeXN0ZW0uVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdmFyaWFibGVJc1N5c3RlbS5WYWx1ZSA9IGlzU3lzdGVtO1xyXG5cclxuICAgIGxldCB2YXJpYWJsZUlzRW5hYmxlZCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIHZhcmlhYmxlSXNFbmFibGVkLk5hbWUgPSBcInZhcmlhYmxlSXNFbmFibGVkXCIgKyBpbmRleDtcclxuICAgIHZhcmlhYmxlSXNFbmFibGVkLlZhbHVlID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IHZhcmlhYmxlSXNFbmFibGVkSGlkZGVuID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgdmFyaWFibGVJc0VuYWJsZWRIaWRkZW4uTmFtZSA9IFwidmFyaWFibGVJc0VuYWJsZWRIaWRkZW5cIiArIGluZGV4O1xyXG4gICAgdmFyaWFibGVJc0VuYWJsZWRIaWRkZW4uVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgdmFyaWFibGVJc01hbmRhdG9yeSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIHZhcmlhYmxlSXNNYW5kYXRvcnkuTmFtZSA9IFwidmFyaWFibGVJc01hbmRhdG9yeVwiICsgaW5kZXg7XHJcbiAgICB2YXJpYWJsZUlzTWFuZGF0b3J5LlZhbHVlID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IHZhcmlhYmxlSXNNYW5kYXRvcnlIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICB2YXJpYWJsZUlzTWFuZGF0b3J5SGlkZGVuLk5hbWUgPSBcInZhcmlhYmxlSXNNYW5kYXRvcnlIaWRkZW5cIiArIGluZGV4O1xyXG4gICAgdmFyaWFibGVJc01hbmRhdG9yeUhpZGRlbi5WYWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgIGxldCB2YXJpYWJsZUlzVmlzaWJsZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIHZhcmlhYmxlSXNWaXNpYmxlLk5hbWUgPSBcInZhcmlhYmxlSXNWaXNpYmxlXCIgKyBpbmRleDtcclxuICAgIHZhcmlhYmxlSXNWaXNpYmxlLlZhbHVlID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IHZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgdmFyaWFibGVJc1Zpc2libGVIaWRkZW4uTmFtZSA9IFwidmFyaWFibGVJc1Zpc2libGVIaWRkZW5cIiArIGluZGV4O1xyXG4gICAgdmFyaWFibGVJc1Zpc2libGVIaWRkZW4uVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBvYmplY3RWYXJpYWJsZU9wdGlvbnMucHVzaCh2YXJpYWJsZUlzU3lzdGVtLCB2YXJpYWJsZUlzRW5hYmxlZCwgdmFyaWFibGVJc0VuYWJsZWRIaWRkZW4sIHZhcmlhYmxlSXNNYW5kYXRvcnksIHZhcmlhYmxlSXNNYW5kYXRvcnlIaWRkZW4sXHJcbiAgICAgIHZhcmlhYmxlSXNWaXNpYmxlLCB2YXJpYWJsZUlzVmlzaWJsZUhpZGRlbiwgaXNTeXN0ZW0sIHZhcmlhYmxlSURkcm9wZG93bik7XHJcblxyXG4gICAgdGhpcy5hY3Rpdml0eVdGVmFyaWFibGVPcHRpb25zLnB1c2gob2JqZWN0VmFyaWFibGVPcHRpb25zKTtcclxuICAgIHRoaXMubGFzdEFjdGl2aXR5V0ZWYXJpYWJsZUluZGV4ICs9IDE7XHJcbiAgfVxyXG5cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgPHVsIG5nYk5hdiAjbmF2PVwibmdiTmF2XCIgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFicyBuYXYtbGluZS10YWJzLTJ4IGJvcmRlci10cmFuc3BhcmVudCBmcy01IGZ3LWJvbGRlclwiPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImdldERldGFpbHMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRldGFpbHNcIil9fTwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01IHB4LTAgIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJTaG93V29ya2Zsb3dEZXRhaWxzJiYhV29ya2Zsb3dEZXRhaWxzLmlzUHVibGlzaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImJ0blB1Ymxpc2hcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2hvd1B1Ymxpc2hXRk1vZGFsKFdvcmtmbG93RGV0YWlscy5pRF9HVUlEKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlB1Ymxpc2hXb3JrZmxvd1wiKX19XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPCEtLTxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlByZXZpZXdcIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L2E+LS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiRGV0YWlsc0Zvcm1cIiAqbmdJZj1cIlNob3dXb3JrZmxvd0RldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiTmFtZU11bHRpbGluZ3VhbFRleHRCb3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiRGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkRlc2NyaXB0aW9uTXVsdGlsaW5ndWFsVGV4dEJveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIkRldGFpbHNGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJTeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIkRldGFpbHNGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIkRldGFpbHNGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlB1Ymxpc2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiRGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcblxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tZW5kOjogV2lkZ2V0cy9BcHBsaWNhdGlvbnMvVXNlci9Qcm9maWxlMy0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8IS0tUHVibGlzaCB3b3JrZmxvdyBjb25maXJtYXRpb24tLT5cclxuICAgICAgICAgIDxCQlNGLUNvbmZpcm1hdGlvbk1vZGFsICpuZ0lmPVwicHVibGlzaENvbnRyb2xMb2FkZWRcIiBbb3B0aW9uc109XCJwdWJsaXNoV0ZDb25maXJtYXRpb25PcHRpb25zXCIgaWQ9XCJwdWJsaXNoQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCIgI3B1Ymxpc2hDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImluaXRpYWxpemVWZXJzaW9uKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWZXJzaW9uc1wiKX19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTUgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiV29ya2Zsb3dWZXJzaW9uRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2VhcmNoVGV4dEJveFwiIFtncm91cF09XCJXb3JrZmxvd1ZlcnNpb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJXb3JrZmxvd0lkVGV4dEJveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiV29ya2Zsb3dWZXJzaW9uRm9ybVwiIFtoaWRkZW5dPVwidHJ1ZVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2hhbmdlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkN1cnJlbnRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaGVkXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNyZWF0aW9uRGF0ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgdmVyc2lvbiBvZiBXb3JrZmxvd1ZlcnNpb25QYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL1dvcmtmbG93cy9WZXJzaW9uSW5mbycsdmVyc2lvbi5pRF9HVUlEXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e3ZlcnNpb24uY2hhbmdlU3RyfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3ZlcnNpb24uaXNDdXJyZW50fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t2ZXJzaW9uLmlzUHVibGlzaGVkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t2ZXJzaW9uLmNyZWF0aW9uRGF0ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJXb3JrZmxvd1ZlcnNpb25QYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS1lbmQ6OlBlcm1pc3Npb24gbGlzdC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRXb3JrZmxvd1ZlcnNpb25MaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJXb3JrZmxvd1ZlcnNpb25QYWdpbmdcIiBbZ3JvdXBdPVwiV29ya2Zsb3dWZXJzaW9uRm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI1dvcmtmbG93VmVyc2lvblBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tZW5kOjogV2lkZ2V0cy9BcHBsaWNhdGlvbnMvVXNlci9Qcm9maWxlMy0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtIG10LTJcIj5cclxuICAgICAgICAgIDxhIG5nYk5hdkxpbmsgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1zLTAgbWUtMTAgcHktNVwiIChjbGljayk9XCJpbml0aWFsaXplV29ya2Zsb3dWYXJpYWJsZXMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtmbG93VmFyaWFibGVzXCIpfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWNvbnRhaW5lciB0ZXh0LWRhcmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiSXNXb3JrZmxvd1ZhcmlhYmxlRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJXb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJWZXJpc29uSWRUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIldvcmtmbG93VmFyaWFibGVGb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIkFkZFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dBZGRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwoQWRkV29ya2Zsb3dWYXJpYWJsZU1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiIGZhIGZhLXBsdXNcIj48L2k+IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlN5c05hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGF0YVR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVmFyaWFibGVUeXBlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBXb3JrZmxvd1ZhcmlhYmxlIG9mIFdvcmtmbG93VmFyaWFibGVQYWdpbmdSZXN1bHRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e1dvcmtmbG93VmFyaWFibGUubmFtZVN0cn19PC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e1dvcmtmbG93VmFyaWFibGUuc3lzTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e1dvcmtmbG93VmFyaWFibGUuZGF0YVR5cGVJdGVtfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tXb3JrZmxvd1ZhcmlhYmxlLnZhcmlhYmxlVHlwZUl0ZW19fTwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IGJ0bi1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0VkaXRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwoV29ya2Zsb3dWYXJpYWJsZS5pRF9HVUlELCBFZGl0V29ya2Zsb3dWYXJpYWJsZU1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cIldvcmtmbG93VmFyaWFibGVQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS1lbmQ6OlBlcm1pc3Npb24gbGlzdC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRXb3JrZmxvd1ZhcmlhYmxlTGlzdFJlc3VsdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZFwiIFtvcHRpb25zXT1cIldvcmtmbG93VmFyaWFibGVQYWdpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiICNXb3JrZmxvd1ZhcmlhYmxlUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS1lbmQ6OiBXaWRnZXRzL0FwcGxpY2F0aW9ucy9Vc2VyL1Byb2ZpbGUzLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIEFkZCBNb2RhbCAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNBZGRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtmbG93VmFyaWFibGVcIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJBZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnNcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkFkZFdGVmFyaWFibGVOYW1lXCIgW2dyb3VwXT1cIkFkZFdvcmtmbG93VmFyaWFibGVGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkFkZFdGVmFyaWFibGVTeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIkFkZFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgKE9uQ2hhbmdlKT1cIldGVmFyaWFibGVUeXBlT25DaGFuZ2UoJGV2ZW50LHRydWUpXCIgW29wdGlvbnNdPVwiQWRkV0ZWYXJpYWJsZURhdGFUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cIkFkZFdGVmFyaWFibGVDb25zdGFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNob3dBZGRMb29rdXBzVGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVFTlwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZUFSXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWYWx1ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnM7bGV0IGk9aW5kZXg7XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJBZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cIkFkZFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tbGlnaHQtZGFuZ2VyIGJ0bi1zbVwiIChjbGljayk9XCJkZWxldGVXRlZhcmlhYmxlTG9va3VwKG9wdGlvbix0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiIGZhIGZhLXRyYXNoIGhpZGRlblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInctMTAwIGJ0biBidG4tc3VjY2Vzc1wiIChjbGljayk9XCJhZGRXRlZhcmlhYmxlTG9va3VwaW5BZGRNb2RlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGROZXdSZWNvcmRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAjQ2xvc2VXb3JrZmxvd1ZhcmlhYmxlTW9kYWwgaWQ9XCJDbG9zZVdvcmtmbG93VmFyaWFibGVNb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tRWRpdCBNb2RhbC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI0VkaXRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJXb3JrZmxvd1ZhcmlhYmxlXCIpfX1cclxuICAgICAgICAgICAgICAgICAgPC9oMT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJFZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJFZGl0V0ZWYXJpYWJsZU5hbWVcIiBbZ3JvdXBdPVwiRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRXRlZhcmlhYmxlU3lzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJFZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAoT25DaGFuZ2UpPVwiV0ZWYXJpYWJsZVR5cGVPbkNoYW5nZSgkZXZlbnQsZmFsc2UpXCIgW29wdGlvbnNdPVwiRWRpdFdGVmFyaWFibGVEYXRhVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiRWRpdFdGVmFyaWFibGVDb25zdGFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzaG93RWRpdExvb2t1cHNUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZUVOXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lQVJcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZhbHVlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVkaXRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnM7bGV0IGk9aW5kZXg7XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJFZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cIkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cIkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzNdXCIgW2dyb3VwXT1cIkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1saWdodC1kYW5nZXIgYnRuLXNtXCIgKGNsaWNrKT1cImRlbGV0ZVdGVmFyaWFibGVMb29rdXAob3B0aW9uLGZhbHNlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiIGZhIGZhLXRyYXNoIGhpZGRlblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInctMTAwIGJ0biBidG4tc3VjY2Vzc1wiIChjbGljayk9XCJhZGRXRlZhcmlhYmxlTG9va3VwaW5FZGl0TW9kZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkTmV3UmVjb3JkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwgaWQ9XCJDbG9zZUVkaXRXb3JrZmxvd1ZhcmlhYmxlTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Gb3JtPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtIG10LTJcIj5cclxuICAgICAgICAgIDxhIG5nYk5hdkxpbmsgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1zLTAgbWUtMTAgcHktNVwiIChjbGljayk9XCJpbml0aWFsaXplV29ya2Zsb3dBY3Rpdml0eSgpXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtmbG93QWN0aXZpdGllc1wiKX19XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWNvbnRhaW5lciB0ZXh0LWRhcmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImZpbHRlcnNDb250YWluZXJcIiBkYXRhLWlzbG9hZGVkPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIldvcmtmbG93QWN0aXZpdHlJZFRleHRCb3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJ3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIFtoaWRkZW5dPVwidHJ1ZVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIkFkZFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL1dvcmtmbG93cy9BZGRBY3Rpdml0eScsVmVyc2lvbklkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IG1iLThcIiAqbmdGb3I9XCJsZXQgd29ya2Zsb3dBY3Rpdml0eSBvZiBBY3Rpdml0eVBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJnLWxpZ2h0LWRhcmsgcm91bmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgbS0wIGZzLTIgdGV4dC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3t3b3JrZmxvd0FjdGl2aXR5LnR5cGVOYW1lU3RyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbWUtMiBcIiAoY2xpY2spPVwic2hvd0FkZFdGVmFyaWFibGVzdG9BY3Rpdml0eSh3b3JrZmxvd0FjdGl2aXR5LnZlcnNpb25JRF9HVUlELHdvcmtmbG93QWN0aXZpdHkuaURfR1VJRCx3ZkFjdGl2aXR5VmFyaWFibGVzTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWdlYXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtmbG93VmFyaWFibGVzXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0bkFkZFwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodC1wcmltYXJ5IGJ0bi1zbSBidG4taWNvbiBtZS0yXCIgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vV29ya2Zsb3dzL0VkaXRBY3Rpdml0eScsd29ya2Zsb3dBY3Rpdml0eS5pRF9HVUlEXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJ3b3JrZmxvd0FjdGl2aXR5LmlzUHVibGlzaGVkXCIgY2xhc3M9XCJmYXMgZmEtcGVuXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhd29ya2Zsb3dBY3Rpdml0eS5pc1B1Ymxpc2hlZFwiIGNsYXNzPVwiZmFzIGZhLXBlblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IGZ3LWJvbGRlciB0ZXh0LWRhcmtcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJXRk91dGNvbWVcIil9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTQwMCBmdy1ib2xkIGZzLTUgbXQtMSBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dWYXJpYWJsZXNcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgaWQ9XCJob3Jpem9udGFsbWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtZGFya1wiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHdvcmtmbG93QWN0aXZpdHkudmFyaWFibGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWdlYXJcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uc3lzTmFtZX19XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygd29ya2Zsb3dBY3Rpdml0eS5vdXRjb21lc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5uYW1lRU4gfX06IHt7aXRlbS5uZXh0QWN0dml0eU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6IENhcmQgYm9keS0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0QWN0aXZpdHlMaXN0UmVzdWx0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkXCIgW29wdGlvbnNdPVwiQWN0aXZpdHlQYWdpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJ3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiICNBY3Rpdml0eVBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tZW5kOjogV2lkZ2V0cy9BcHBsaWNhdGlvbnMvVXNlci9Qcm9maWxlMy0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjd2ZBY3Rpdml0eVZhcmlhYmxlc01vZGFsIGxldC1tb2RhbD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRXb3JrZmxvd1ZhcmlhYmxlc1wiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvaDE+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJXb3JrZmxvd1ZhcmlhYmxlc1wiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW5hYmxlZFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWFuZGF0b3J5XCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWaXNpYmxlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFjdGl2aXR5V0ZWYXJpYWJsZU9wdGlvbnM7bGV0IGk9aW5kZXg7XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0taGlkZGVuIGlzIHN5c3RlbS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJhZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0taWYgaXMgc3lzdG0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbls3XTtlbHNlIHZhcmlhYmxlTmFtZURETDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tdmFyaWF2bGUgbmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzhdXCIgW2dyb3VwXT1cImFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1oaWRkZW4gdmFyaWFibGUgaWQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvbls5XVwiIFtncm91cF09XCJhZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS12YXJpYXZsZSBuYW1lIGRkbC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhcmlhYmxlTmFtZURETD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzhdXCIgW2dyb3VwXT1cImFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0taXMgZW5hYmxlZC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cImFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0taXMgbWFuZGF0b3J5LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvblszXVwiIFtncm91cF09XCJhZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bNF1cIiBbZ3JvdXBdPVwiYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1pcyB2aXNpYmxlLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvbls1XVwiIFtncm91cF09XCJhZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bNl1cIiBbZ3JvdXBdPVwiYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1pZiAhIGlzU3lzdGVtLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiIW9wdGlvbls3XVwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1saWdodC1kYW5nZXIgYnRuLXNtXCIgKGNsaWNrKT1cImRlbGV0ZUFjdGl2aXR5V0ZWYXJpYWJsZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZE5ld0FjdGl2aXR5V0ZWYXJpYWJsZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkTmV3UmVjb3JkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Gb3JtPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgICAgPGRpdiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19