@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.
- package/README.md +4 -0
- package/{esm2020 → esm2022}/bnsights-bbsf-admin-portal.mjs +4 -4
- package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directories.component.mjs +14 -14
- package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +421 -0
- package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +528 -0
- package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directory-routing.module.mjs +29 -29
- package/esm2022/lib/Pages/ActiveDirectories/active-directory.module.mjs +108 -0
- package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +23 -0
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/aside/aside.component.mjs +65 -65
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/content/content.component.mjs +31 -31
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/footer/footer.component.mjs +32 -32
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/header.component.mjs +57 -57
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/page-title/page-title.component.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/scripts-init/scripts-init.component.mjs +58 -58
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.component.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.module.mjs +26 -26
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.component.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.module.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/topbar/topbar.component.mjs +71 -71
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/activation/activation.component.mjs +92 -92
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +37 -37
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +54 -54
- package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +100 -0
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/error/error.component.mjs +48 -48
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +59 -59
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/login/login.component.mjs +94 -94
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +90 -90
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +71 -71
- package/{esm2020 → esm2022}/lib/Pages/authentication/auth-callback/auth-callback.component.mjs +43 -43
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.routing.mjs +31 -31
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +330 -0
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +157 -0
- package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +801 -0
- package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.component.mjs +15 -15
- package/esm2022/lib/Pages/configurations/configurations.module.mjs +104 -0
- package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.routing.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/configurations/index.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/core/auth.module.mjs +30 -30
- package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +17 -0
- package/{esm2020 → esm2022}/lib/Pages/core/authentication/auth.guard.mjs +46 -46
- package/esm2022/lib/Pages/core/authentication/auth.service.mjs +147 -0
- package/esm2022/lib/Pages/departments/department/department.component.mjs +220 -0
- package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +185 -0
- package/{esm2020 → esm2022}/lib/Pages/departments/departments-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/departments/departments.component.mjs +15 -15
- package/esm2022/lib/Pages/departments/departments.module.mjs +94 -0
- package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +136 -0
- package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +148 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/document-template-info/document-template-info.component.mjs +332 -332
- package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +437 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/documents.component.mjs +15 -15
- package/esm2022/lib/Pages/documents/documents.module.mjs +114 -0
- package/esm2022/lib/Pages/documents/documents.routing.mjs +37 -0
- package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +169 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +123 -123
- package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.component.mjs +31 -31
- package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.module.mjs +28 -28
- package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +294 -0
- package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +43 -0
- package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-center-routing.module.mjs +31 -31
- package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +242 -0
- package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +243 -0
- package/esm2022/lib/Pages/helpCenter/help-center.module.mjs +99 -0
- package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-centers.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/home/filter-pipe.mjs +23 -23
- package/esm2022/lib/Pages/home/home.component.mjs +158 -0
- package/esm2022/lib/Pages/home/home.module.mjs +48 -0
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +443 -0
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +95 -0
- package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +223 -0
- package/esm2022/lib/Pages/jobs/jobs.module.mjs +87 -0
- package/{esm2020 → esm2022}/lib/Pages/license/license/license.component.mjs +163 -163
- package/esm2022/lib/Pages/license/license.module.mjs +71 -0
- package/{esm2020 → esm2022}/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +215 -215
- package/esm2022/lib/Pages/localizations/localizations.component.mjs +516 -0
- package/esm2022/lib/Pages/localizations/localizations.module.mjs +79 -0
- package/{esm2020 → esm2022}/lib/Pages/logs/log/log.component.mjs +93 -93
- package/{esm2020 → esm2022}/lib/Pages/logs/logs-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/logs/logs.component.mjs +15 -15
- package/esm2022/lib/Pages/logs/logs.module.mjs +87 -0
- package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +367 -0
- package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +187 -0
- package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +297 -0
- package/{esm2020 → esm2022}/lib/Pages/lookups/lookups-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/lookups/lookups.component.mjs +15 -15
- package/esm2022/lib/Pages/lookups/lookups.module.mjs +100 -0
- package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +104 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/edit-email/edit-email.component.mjs +158 -158
- package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +133 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +115 -115
- package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +148 -0
- package/esm2022/lib/Pages/notifications/notifications-routing.module.mjs +39 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/notifications.component.mjs +15 -15
- package/esm2022/lib/Pages/notifications/notifications.module.mjs +101 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/template-info/template-info.component.mjs +391 -391
- package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +495 -0
- package/esm2022/lib/Pages/providers/provider/provider.component.mjs +615 -0
- package/{esm2020 → esm2022}/lib/Pages/providers/providers-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/providers/providers.component.mjs +15 -15
- package/esm2022/lib/Pages/providers/providers.module.mjs +91 -0
- package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +334 -0
- package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays-routing.module.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays.component.mjs +15 -15
- package/esm2022/lib/Pages/publicHolidays/public-holidays.module.mjs +94 -0
- package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +187 -0
- package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +226 -0
- package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +277 -0
- package/{esm2020 → esm2022}/lib/Pages/roles/roles-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/roles/roles.component.mjs +15 -15
- package/esm2022/lib/Pages/roles/roles.module.mjs +105 -0
- package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +193 -0
- package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +180 -0
- package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +187 -0
- package/{esm2020 → esm2022}/lib/Pages/sectors/sectors-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/sectors/sectors.component.mjs +15 -15
- package/esm2022/lib/Pages/sectors/sectors.module.mjs +96 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ADType.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/Enums.mjs +54 -54
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ProviderType.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/WFActivityType.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/ConditionRHSType.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/authentecation-configuration.mjs +18 -18
- package/{esm2020 → esm2022}/lib/Pages/shared/Pipes/survey-date.pipe.mjs +22 -22
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/AccountService.service.mjs +55 -55
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +51 -51
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ConfigurationsService.service.mjs +61 -61
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DepartmentService.service.mjs +46 -46
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +81 -81
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +37 -37
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ErrorService.service.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/GlobalErrorHandler.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/HelpCenterService.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/HttpErrorInterceptor.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/JobsService.service.mjs +21 -21
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LicenseService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LogsService.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupGroupsService.service.mjs +33 -33
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupService.service.mjs +67 -67
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionSetService.service.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionsService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PublicHolidayService.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/SectorService.service.mjs +46 -46
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/TemplateService.service.mjs +90 -90
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +54 -54
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowService.service.mjs +38 -38
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/data.service.mjs +27 -27
- package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +163 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/localizationsService.service .mjs +77 -77
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/provider.service.mjs +62 -62
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey-question.service.mjs +57 -57
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey.service.mjs +140 -140
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/userService.service.mjs +80 -80
- package/{esm2020 → esm2022}/lib/Pages/shared/base.service.mjs +19 -19
- package/{esm2020 → esm2022}/lib/Pages/shared/components/AdDirective.mjs +16 -16
- package/{esm2020 → esm2022}/lib/Pages/shared/components/external-url/external-url.component.mjs +168 -168
- package/{esm2020 → esm2022}/lib/Pages/shared/components/no-results/no-results.component.mjs +19 -19
- package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +192 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +48 -48
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +217 -217
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +49 -49
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +624 -624
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +683 -683
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +138 -138
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +102 -102
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +56 -56
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +532 -532
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +113 -113
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +114 -114
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey.component.mjs +292 -292
- package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +696 -0
- package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +84 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey-layout/survey-layout.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/shared/config/environment.mjs +11 -11
- package/esm2022/lib/Pages/shared/constants.mjs +130 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/filter/filter.component.mjs +14 -14
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ADMappingModel.mjs +3 -3
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/AccountModels/forgotPasswordModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/JobModels/JobCountsModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LicenseModel/LicenseModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/EditResourceModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupGroupModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupItem.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateDTO.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey-submissio.mjs +13 -13
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/model.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-field-options.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-filed-value.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-form-options.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-publish.mjs +4 -4
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +17 -17
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question.mjs +10 -10
- package/esm2022/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +8 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/ActivationModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/AddUserModel.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/DropdownsResponseModel.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/EditUserModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/IdentityModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UserSearchParamDTO.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityModel.mjs +16 -16
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFCreationModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFVariableModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/user.registration.mjs +7 -7
- package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +68 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/modules/survey-routing.module.mjs +39 -39
- package/esm2022/lib/Pages/shared/modules/survey.module.mjs +129 -0
- package/esm2022/lib/Pages/shared/shared.module.mjs +31 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/stylesbundle.service.mjs +44 -44
- package/{esm2020 → esm2022}/lib/Pages/start/index/index.component.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/start/start-routing.module.mjs +22 -22
- package/{esm2020 → esm2022}/lib/Pages/start/start.module.mjs +31 -31
- package/esm2022/lib/Pages/users/users.component.mjs +806 -0
- package/esm2022/lib/Pages/users/users.module.mjs +86 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +535 -535
- package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +840 -840
- package/{esm2020 → esm2022}/lib/Pages/workflows/instance-info/instance-info.component.mjs +302 -302
- package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +793 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/version-info/version-info.component.mjs +137 -137
- package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +209 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/workflows-routing.module.mjs +35 -35
- package/{esm2020 → esm2022}/lib/Pages/workflows/workflows.component.mjs +15 -15
- package/esm2022/lib/Pages/workflows/workflows.module.mjs +103 -0
- package/{esm2020 → esm2022}/lib/_metronic/configs/default-layout.config.mjs +95 -95
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/DomHelpers.mjs +270 -270
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/ElementAnimateUtil.mjs +166 -166
- package/esm2022/lib/_metronic/core/_utils/EventHandlerUtil.mjs +90 -0
- package/esm2022/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +49 -0
- package/esm2022/lib/_metronic/core/_utils/_DataUtil.mjs +48 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_ElementStyleUtil.mjs +16 -16
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_TypesHelpers.mjs +48 -48
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/OffsetModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/ViewPortModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/_metronic/core/components/MenuComponent.mjs +827 -827
- package/{esm2020 → esm2022}/lib/_metronic/core/components/_CookieComponent.mjs +52 -52
- package/esm2022/lib/_metronic/core/components/_DrawerComponent.mjs +288 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/components/_ScrollComponent.mjs +252 -252
- package/esm2022/lib/_metronic/core/components/_ScrollTopComponent.mjs +113 -0
- package/esm2022/lib/_metronic/core/components/_ToggleComponent.mjs +157 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/services/layout-init.service.mjs +155 -155
- package/{esm2020 → esm2022}/lib/_metronic/core/services/layout.service.mjs +150 -150
- package/esm2022/lib/_metronic/core/services/page-info.service.mjs +119 -0
- package/esm2022/lib/masterlayout-routing.module.mjs +41 -0
- package/{esm2020 → esm2022}/lib/masterlayout.component.mjs +118 -118
- package/esm2022/lib/masterlayout.module.mjs +188 -0
- package/{esm2020 → esm2022}/public-api.mjs +48 -48
- package/{fesm2020 → fesm2022}/bnsights-bbsf-admin-portal.mjs +26884 -26881
- package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/Pages/ActiveDirectories/active-directories.component.d.ts +8 -8
- package/lib/Pages/ActiveDirectories/active-directory/active-directory.component.d.ts +85 -87
- package/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.d.ts +97 -99
- package/lib/Pages/ActiveDirectories/active-directory-routing.module.d.ts +7 -7
- package/lib/Pages/ActiveDirectories/active-directory.module.d.ts +26 -26
- package/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.d.ts +13 -13
- package/lib/Pages/_layout/components/aside/aside.component.d.ts +24 -24
- package/lib/Pages/_layout/components/content/content.component.d.ts +13 -13
- package/lib/Pages/_layout/components/footer/footer.component.d.ts +14 -14
- package/lib/Pages/_layout/components/header/header.component.d.ts +24 -24
- package/lib/Pages/_layout/components/header/page-title/page-title.component.d.ts +22 -22
- package/lib/Pages/_layout/components/scripts-init/scripts-init.component.d.ts +18 -18
- package/lib/Pages/_layout/components/subheader/subheader.component.d.ts +17 -17
- package/lib/Pages/_layout/components/subheader/subheader.module.d.ts +9 -9
- package/lib/Pages/_layout/components/toolbar/toolbar.component.d.ts +18 -18
- package/lib/Pages/_layout/components/toolbar/toolbar.module.d.ts +10 -10
- package/lib/Pages/_layout/components/topbar/topbar.component.d.ts +44 -44
- package/lib/Pages/anonymouslayout/activation/activation.component.d.ts +32 -32
- package/lib/Pages/anonymouslayout/anonymouslayout-routing.module.d.ts +7 -7
- package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +24 -24
- package/lib/Pages/anonymouslayout/anonymouslayout.module.d.ts +21 -21
- package/lib/Pages/anonymouslayout/error/error.component.d.ts +25 -25
- package/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.d.ts +24 -24
- package/lib/Pages/anonymouslayout/login/login.component.d.ts +36 -36
- package/lib/Pages/anonymouslayout/rest-password/rest-password.component.d.ts +32 -32
- package/lib/Pages/anonymouslayout/upload-license/upload-license.component.d.ts +25 -25
- package/lib/Pages/authentication/auth-callback/auth-callback.component.d.ts +21 -21
- package/lib/Pages/authentication/authentication.component.d.ts +8 -8
- package/lib/Pages/authentication/authentication.module.d.ts +12 -12
- package/lib/Pages/authentication/authentication.routing.d.ts +7 -7
- package/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.d.ts +75 -75
- package/lib/Pages/configurations/auth-configuration/auth-configuration.component.d.ts +57 -58
- package/lib/Pages/configurations/configuration/configuration.component.d.ts +127 -129
- package/lib/Pages/configurations/configurations.component.d.ts +8 -8
- package/lib/Pages/configurations/configurations.module.d.ts +24 -24
- package/lib/Pages/configurations/configurations.routing.d.ts +7 -7
- package/lib/Pages/configurations/index.d.ts +6 -6
- package/lib/Pages/core/auth.module.d.ts +8 -8
- package/lib/Pages/core/authentication/admin.guard.d.ts +9 -9
- package/lib/Pages/core/authentication/auth.guard.d.ts +14 -14
- package/lib/Pages/core/authentication/auth.service.d.ts +35 -35
- package/lib/Pages/departments/department/department.component.d.ts +66 -68
- package/lib/Pages/departments/department-info/department-info.component.d.ts +58 -60
- package/lib/Pages/departments/departments-routing.module.d.ts +7 -7
- package/lib/Pages/departments/departments.component.d.ts +8 -8
- package/lib/Pages/departments/departments.module.d.ts +21 -21
- package/lib/Pages/documents/{add/add.component.d.ts → add-document/add-document.component.d.ts} +40 -40
- package/lib/Pages/documents/document-master-layouts/document-master-layouts.component.d.ts +51 -53
- package/lib/Pages/documents/document-template-info/document-template-info.component.d.ts +67 -67
- package/lib/Pages/documents/document-templates/document-templates.component.d.ts +87 -89
- package/lib/Pages/documents/documents.component.d.ts +8 -8
- package/lib/Pages/documents/documents.module.d.ts +27 -27
- package/lib/Pages/documents/documents.routing.d.ts +7 -7
- package/lib/Pages/documents/{edit/edit.component.d.ts → edit-document/edit-document.component.d.ts} +42 -42
- package/lib/Pages/documents/edit-document-template/edit-document-template.component.d.ts +39 -39
- package/lib/Pages/empty-data/empty-data.component.d.ts +14 -14
- package/lib/Pages/empty-data/empty-data.module.d.ts +8 -8
- package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +69 -71
- package/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.d.ts +23 -23
- package/lib/Pages/helpCenter/help-center-routing.module.d.ts +7 -7
- package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +65 -67
- package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +64 -66
- package/lib/Pages/helpCenter/help-center.module.d.ts +25 -25
- package/lib/Pages/helpCenter/help-centers.component.d.ts +8 -8
- package/lib/Pages/home/filter-pipe.d.ts +7 -7
- package/lib/Pages/home/home.component.d.ts +19 -19
- package/lib/Pages/home/home.module.d.ts +14 -14
- package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +86 -88
- package/lib/Pages/impersonation-rules/impersonation-rules.module.d.ts +19 -19
- package/lib/Pages/jobs/jobs/jobs.component.d.ts +76 -77
- package/lib/Pages/jobs/jobs.module.d.ts +17 -17
- package/lib/Pages/license/license/license.component.d.ts +59 -59
- package/lib/Pages/license/license.module.d.ts +15 -15
- package/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.d.ts +53 -53
- package/lib/Pages/localizations/localizations.component.d.ts +108 -110
- package/lib/Pages/localizations/localizations.module.d.ts +18 -18
- package/lib/Pages/logs/log/log.component.d.ts +34 -34
- package/lib/Pages/logs/logs-routing.module.d.ts +7 -7
- package/lib/Pages/logs/logs.component.d.ts +8 -8
- package/lib/Pages/logs/logs.module.d.ts +20 -20
- package/lib/Pages/lookups/lookup/lookup.component.d.ts +83 -85
- package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +58 -60
- package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +84 -86
- package/lib/Pages/lookups/lookups-routing.module.d.ts +7 -7
- package/lib/Pages/lookups/lookups.component.d.ts +8 -8
- package/lib/Pages/lookups/lookups.module.d.ts +24 -24
- package/lib/Pages/notifications/{add/add.component.d.ts → add-notification/add-notification.component.d.ts} +33 -33
- package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +43 -43
- package/lib/Pages/notifications/{edit/edit.component.d.ts → edit-notification/edit-notification.component.d.ts} +35 -35
- package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +37 -37
- package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +51 -53
- package/lib/Pages/notifications/notifications-routing.module.d.ts +7 -7
- package/lib/Pages/notifications/notifications.component.d.ts +8 -8
- package/lib/Pages/notifications/notifications.module.d.ts +28 -28
- package/lib/Pages/notifications/template-info/template-info.component.d.ts +86 -86
- package/lib/Pages/notifications/templates/templates.component.d.ts +100 -102
- package/lib/Pages/providers/provider/provider.component.d.ts +118 -120
- package/lib/Pages/providers/providers-routing.module.d.ts +7 -7
- package/lib/Pages/providers/providers.component.d.ts +8 -8
- package/lib/Pages/providers/providers.module.d.ts +21 -21
- package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +73 -75
- package/lib/Pages/publicHolidays/public-holidays-routing.module.d.ts +7 -7
- package/lib/Pages/publicHolidays/public-holidays.component.d.ts +8 -8
- package/lib/Pages/publicHolidays/public-holidays.module.d.ts +21 -21
- package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +56 -58
- package/lib/Pages/roles/permissions/permissions.component.d.ts +63 -65
- package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +67 -69
- package/lib/Pages/roles/roles-routing.module.d.ts +7 -7
- package/lib/Pages/roles/roles.component.d.ts +8 -8
- package/lib/Pages/roles/roles.module.d.ts +24 -24
- package/lib/Pages/sectors/sector/sector.component.d.ts +62 -64
- package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +60 -62
- package/lib/Pages/sectors/{department-info/department-info.component.d.ts → sectors-department-info/sectors-department-info.component.d.ts} +61 -63
- package/lib/Pages/sectors/sectors-routing.module.d.ts +7 -7
- package/lib/Pages/sectors/sectors.component.d.ts +8 -8
- package/lib/Pages/sectors/sectors.module.d.ts +23 -23
- package/lib/Pages/shared/Enums/ADType.d.ts +4 -4
- package/lib/Pages/shared/Enums/Enums.d.ts +47 -47
- package/lib/Pages/shared/Enums/ProviderType.d.ts +5 -5
- package/lib/Pages/shared/Enums/WFActivityType.d.ts +10 -10
- package/lib/Pages/shared/Enums/configuration/ConditionRHSType.d.ts +4 -4
- package/lib/Pages/shared/Enums/configuration/authentecation-configuration.d.ts +15 -15
- package/lib/Pages/shared/Pipes/survey-date.pipe.d.ts +12 -12
- package/lib/Pages/shared/Services/AccountService.service.d.ts +21 -21
- package/lib/Pages/shared/Services/ActiveDirectoryService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/AnonymousLayoutService.service.d.ts +17 -17
- package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +20 -20
- package/lib/Pages/shared/Services/DepartmentService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.d.ts +15 -15
- package/lib/Pages/shared/Services/DocumentTemplateService.service.d.ts +26 -26
- package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +15 -15
- package/lib/Pages/shared/Services/ErrorService.service.d.ts +8 -8
- package/lib/Pages/shared/Services/GlobalErrorHandler.service.d.ts +10 -10
- package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/HttpErrorInterceptor.service.d.ts +12 -12
- package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/JobsService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/LicenseService.service.d.ts +12 -12
- package/lib/Pages/shared/Services/LogsService.d.ts +10 -10
- package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +14 -14
- package/lib/Pages/shared/Services/LookupService.service.d.ts +25 -25
- package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +19 -19
- package/lib/Pages/shared/Services/PermissionsService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +16 -16
- package/lib/Pages/shared/Services/SectorService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/TemplateService.service.d.ts +34 -34
- package/lib/Pages/shared/Services/WorkFlowVersionService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +19 -19
- package/lib/Pages/shared/Services/WorkflowInstanceService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowLogVariablesService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/WorkflowVariablesService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/data.service.d.ts +9 -9
- package/lib/Pages/shared/Services/injectionModuleService.service.d.ts +50 -50
- package/lib/Pages/shared/Services/localizationsService.service .d.ts +28 -28
- package/lib/Pages/shared/Services/provider.service.d.ts +25 -25
- package/lib/Pages/shared/Services/survey-question.service.d.ts +19 -19
- package/lib/Pages/shared/Services/survey.service.d.ts +38 -38
- package/lib/Pages/shared/Services/userService.service.d.ts +29 -29
- package/lib/Pages/shared/base.service.d.ts +4 -4
- package/lib/Pages/shared/components/AdDirective.d.ts +8 -8
- package/lib/Pages/shared/components/external-url/external-url.component.d.ts +61 -61
- package/lib/Pages/shared/components/no-results/no-results.component.d.ts +10 -10
- package/lib/Pages/shared/components/survey/add-survey/add-survey.component.d.ts +40 -40
- package/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.d.ts +43 -43
- package/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.d.ts +83 -83
- package/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.d.ts +84 -84
- package/lib/Pages/shared/components/survey/survey-info/preview/preview.component.d.ts +40 -40
- package/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.d.ts +31 -31
- package/lib/Pages/shared/components/survey/survey-info/result-question/result.component.d.ts +27 -27
- package/lib/Pages/shared/components/survey/survey-info/survey-info.component.d.ts +119 -119
- package/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.d.ts +39 -39
- package/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.d.ts +32 -32
- package/lib/Pages/shared/components/survey/survey.component.d.ts +65 -65
- package/lib/Pages/shared/components/survey-form/survey-form.component.d.ts +41 -41
- package/lib/Pages/shared/components/survey-form-item/survey-form-item.component.d.ts +23 -23
- package/lib/Pages/shared/components/survey-layout/survey-layout.component.d.ts +8 -8
- package/lib/Pages/shared/config/environment.d.ts +1 -1
- package/lib/Pages/shared/constants.d.ts +129 -129
- package/lib/Pages/shared/filter/filter.component.d.ts +8 -8
- package/lib/Pages/shared/models/ADModels/ADMappingModel.d.ts +6 -6
- package/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.d.ts +28 -28
- package/lib/Pages/shared/models/AccountModels/forgotPasswordModel.d.ts +3 -3
- package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +64 -64
- package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +9 -9
- package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +4 -4
- package/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.d.ts +8 -8
- package/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.d.ts +16 -16
- package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.d.ts +13 -13
- package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.d.ts +7 -7
- package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +17 -17
- package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +9 -9
- package/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.d.ts +15 -15
- package/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.d.ts +5 -5
- package/lib/Pages/shared/models/JobModels/JobCountsModel.d.ts +8 -8
- package/lib/Pages/shared/models/LicenseModel/LicenseModel.d.ts +5 -5
- package/lib/Pages/shared/models/LocalizationModels/EditResourceModel.d.ts +7 -7
- package/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.d.ts +9 -9
- package/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.d.ts +5 -5
- package/lib/Pages/shared/models/Lookups/LookupGroupModel.d.ts +5 -5
- package/lib/Pages/shared/models/Lookups/LookupItem.d.ts +13 -13
- package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +13 -13
- package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.d.ts +15 -15
- package/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.d.ts +8 -8
- package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +22 -22
- package/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.d.ts +11 -11
- package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +8 -8
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +10 -10
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +4 -4
- package/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.d.ts +6 -6
- package/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.d.ts +7 -7
- package/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.d.ts +7 -7
- package/lib/Pages/shared/models/ProviderModels/ProviderModel.d.ts +13 -13
- package/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.d.ts +6 -6
- package/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.d.ts +15 -15
- package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +4 -4
- package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +6 -6
- package/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.d.ts +3 -3
- package/lib/Pages/shared/models/SurveyModels/add-survey-submissio.d.ts +21 -21
- package/lib/Pages/shared/models/SurveyModels/add-survey.d.ts +18 -18
- package/lib/Pages/shared/models/SurveyModels/model.d.ts +3 -3
- package/lib/Pages/shared/models/SurveyModels/survey-field-options.d.ts +24 -24
- package/lib/Pages/shared/models/SurveyModels/survey-filed-value.d.ts +22 -22
- package/lib/Pages/shared/models/SurveyModels/survey-form-options.d.ts +8 -8
- package/lib/Pages/shared/models/SurveyModels/survey-publish.d.ts +15 -15
- package/lib/Pages/shared/models/SurveyModels/survey-question-option.d.ts +9 -9
- package/lib/Pages/shared/models/SurveyModels/survey-question.d.ts +21 -21
- package/lib/Pages/shared/models/SurveyModels/survey-utils.d.ts +5 -5
- package/lib/Pages/shared/models/UserModels/ActivationModel.d.ts +10 -10
- package/lib/Pages/shared/models/UserModels/AddUserModel.d.ts +33 -33
- package/lib/Pages/shared/models/UserModels/DropdownsResponseModel.d.ts +9 -9
- package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +25 -25
- package/lib/Pages/shared/models/UserModels/IdentityModel.d.ts +9 -9
- package/lib/Pages/shared/models/UserModels/UserSearchParamDTO.d.ts +8 -8
- package/lib/Pages/shared/models/UserModels/UsersIDRequestModel.d.ts +3 -3
- package/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.d.ts +9 -9
- package/lib/Pages/shared/models/WorkflowModels/WFActivityModel.d.ts +40 -40
- package/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.d.ts +13 -13
- package/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.d.ts +13 -13
- package/lib/Pages/shared/models/WorkflowModels/WFCreationModel.d.ts +10 -10
- package/lib/Pages/shared/models/WorkflowModels/WFVariableModel.d.ts +23 -23
- package/lib/Pages/shared/models/user.registration.d.ts +6 -6
- package/lib/Pages/shared/modules/public-survey.module.d.ts +15 -15
- package/lib/Pages/shared/modules/survey-routing.module.d.ts +7 -7
- package/lib/Pages/shared/modules/survey.module.d.ts +35 -35
- package/lib/Pages/shared/shared.module.d.ts +8 -8
- package/lib/Pages/shared/stylesbundle.service.d.ts +9 -9
- package/lib/Pages/start/index/index.component.d.ts +15 -15
- package/lib/Pages/start/start-routing.module.d.ts +7 -7
- package/lib/Pages/start/start.module.d.ts +11 -11
- package/lib/Pages/users/users.component.d.ts +138 -139
- package/lib/Pages/users/users.module.d.ts +18 -18
- package/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.d.ts +77 -77
- package/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.d.ts +82 -82
- package/lib/Pages/workflows/instance-info/instance-info.component.d.ts +81 -81
- package/lib/Pages/workflows/tabs/tabs.component.d.ts +126 -128
- package/lib/Pages/workflows/version-info/version-info.component.d.ts +41 -41
- package/lib/Pages/workflows/workflow/workflow.component.d.ts +54 -55
- package/lib/Pages/workflows/workflows-routing.module.d.ts +7 -7
- package/lib/Pages/workflows/workflows.component.d.ts +8 -8
- package/lib/Pages/workflows/workflows.module.d.ts +27 -27
- package/lib/_metronic/configs/default-layout.config.d.ts +139 -139
- package/lib/_metronic/core/_utils/DomHelpers.d.ts +26 -26
- package/lib/_metronic/core/_utils/ElementAnimateUtil.d.ts +13 -13
- package/lib/_metronic/core/_utils/EventHandlerUtil.d.ts +20 -20
- package/lib/_metronic/core/_utils/_DOMEventHandlerUtil.d.ts +6 -6
- package/lib/_metronic/core/_utils/_DataUtil.d.ts +8 -8
- package/lib/_metronic/core/_utils/_ElementStyleUtil.d.ts +5 -5
- package/lib/_metronic/core/_utils/_TypesHelpers.d.ts +10 -10
- package/lib/_metronic/core/_utils/models/OffsetModel.d.ts +4 -4
- package/lib/_metronic/core/_utils/models/ViewPortModel.d.ts +4 -4
- package/lib/_metronic/core/components/MenuComponent.d.ts +88 -88
- package/lib/_metronic/core/components/_CookieComponent.d.ts +25 -25
- package/lib/_metronic/core/components/_DrawerComponent.d.ts +49 -49
- package/lib/_metronic/core/components/_ScrollComponent.d.ts +31 -31
- package/lib/_metronic/core/components/_ScrollTopComponent.d.ts +24 -24
- package/lib/_metronic/core/components/_ToggleComponent.d.ts +36 -36
- package/lib/_metronic/core/services/layout-init.service.d.ts +18 -18
- package/lib/_metronic/core/services/layout.service.d.ts +38 -38
- package/lib/_metronic/core/services/page-info.service.d.ts +32 -32
- package/lib/masterlayout-routing.module.d.ts +11 -13
- package/lib/masterlayout.component.d.ts +63 -63
- package/lib/masterlayout.module.d.ts +34 -34
- package/package.json +25 -30
- package/public-api.d.ts +41 -41
- package/src/lib/assets/images/menu/Tools.svg +10 -4
- package/src/lib/assets/images/menu/authentication.svg +9 -0
- package/src/lib/assets/sass/style-rtl.scss +3 -3
- package/src/lib/assets/sass/style.scss +3 -3
- package/bnsights-bbsf-admin-portal-1.1.2.tgz +0 -0
- package/esm2020/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +0 -421
- package/esm2020/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +0 -528
- package/esm2020/lib/Pages/ActiveDirectories/active-directory.module.mjs +0 -108
- package/esm2020/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +0 -23
- package/esm2020/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +0 -100
- package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +0 -330
- package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +0 -157
- package/esm2020/lib/Pages/configurations/configuration/configuration.component.mjs +0 -801
- package/esm2020/lib/Pages/configurations/configurations.module.mjs +0 -104
- package/esm2020/lib/Pages/core/authentication/admin.guard.mjs +0 -17
- package/esm2020/lib/Pages/core/authentication/auth.service.mjs +0 -147
- package/esm2020/lib/Pages/departments/department/department.component.mjs +0 -220
- package/esm2020/lib/Pages/departments/department-info/department-info.component.mjs +0 -185
- package/esm2020/lib/Pages/departments/departments.module.mjs +0 -94
- package/esm2020/lib/Pages/documents/add/add.component.mjs +0 -136
- package/esm2020/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +0 -148
- package/esm2020/lib/Pages/documents/document-templates/document-templates.component.mjs +0 -437
- package/esm2020/lib/Pages/documents/documents.module.mjs +0 -114
- package/esm2020/lib/Pages/documents/documents.routing.mjs +0 -37
- package/esm2020/lib/Pages/documents/edit/edit.component.mjs +0 -169
- package/esm2020/lib/Pages/helpCenter/help-center/help-center.component.mjs +0 -294
- package/esm2020/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +0 -43
- package/esm2020/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +0 -242
- package/esm2020/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +0 -243
- package/esm2020/lib/Pages/helpCenter/help-center.module.mjs +0 -98
- package/esm2020/lib/Pages/home/home.component.mjs +0 -153
- package/esm2020/lib/Pages/home/home.module.mjs +0 -48
- package/esm2020/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +0 -443
- package/esm2020/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +0 -95
- package/esm2020/lib/Pages/jobs/jobs/jobs.component.mjs +0 -223
- package/esm2020/lib/Pages/jobs/jobs.module.mjs +0 -87
- package/esm2020/lib/Pages/license/license.module.mjs +0 -71
- package/esm2020/lib/Pages/localizations/localizations.component.mjs +0 -516
- package/esm2020/lib/Pages/localizations/localizations.module.mjs +0 -79
- package/esm2020/lib/Pages/logs/logs.module.mjs +0 -87
- package/esm2020/lib/Pages/lookups/lookup/lookup.component.mjs +0 -367
- package/esm2020/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +0 -187
- package/esm2020/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +0 -297
- package/esm2020/lib/Pages/lookups/lookups.module.mjs +0 -100
- package/esm2020/lib/Pages/notifications/add/add.component.mjs +0 -104
- package/esm2020/lib/Pages/notifications/edit/edit.component.mjs +0 -133
- package/esm2020/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +0 -148
- package/esm2020/lib/Pages/notifications/notifications-routing.module.mjs +0 -39
- package/esm2020/lib/Pages/notifications/notifications.module.mjs +0 -101
- package/esm2020/lib/Pages/notifications/templates/templates.component.mjs +0 -495
- package/esm2020/lib/Pages/providers/provider/provider.component.mjs +0 -615
- package/esm2020/lib/Pages/providers/providers.module.mjs +0 -91
- package/esm2020/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +0 -334
- package/esm2020/lib/Pages/publicHolidays/public-holidays.module.mjs +0 -94
- package/esm2020/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +0 -187
- package/esm2020/lib/Pages/roles/permissions/permissions.component.mjs +0 -226
- package/esm2020/lib/Pages/roles/permissionsets/permissionsets.component.mjs +0 -277
- package/esm2020/lib/Pages/roles/roles.module.mjs +0 -105
- package/esm2020/lib/Pages/sectors/department-info/department-info.component.mjs +0 -187
- package/esm2020/lib/Pages/sectors/sector/sector.component.mjs +0 -193
- package/esm2020/lib/Pages/sectors/sector-info/sector-info.component.mjs +0 -180
- package/esm2020/lib/Pages/sectors/sectors.module.mjs +0 -96
- package/esm2020/lib/Pages/shared/Enums/WFVariableDataType.mjs +0 -14
- package/esm2020/lib/Pages/shared/Services/injectionModuleService.service.mjs +0 -163
- package/esm2020/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +0 -192
- package/esm2020/lib/Pages/shared/components/survey-form/survey-form.component.mjs +0 -696
- package/esm2020/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +0 -84
- package/esm2020/lib/Pages/shared/constants.mjs +0 -130
- package/esm2020/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +0 -8
- package/esm2020/lib/Pages/shared/modules/public-survey.module.mjs +0 -68
- package/esm2020/lib/Pages/shared/modules/survey.module.mjs +0 -126
- package/esm2020/lib/Pages/shared/shared.module.mjs +0 -31
- package/esm2020/lib/Pages/users/users.component.mjs +0 -806
- package/esm2020/lib/Pages/users/users.module.mjs +0 -86
- package/esm2020/lib/Pages/workflows/tabs/tabs.component.mjs +0 -793
- package/esm2020/lib/Pages/workflows/workflow/workflow.component.mjs +0 -209
- package/esm2020/lib/Pages/workflows/workflows.module.mjs +0 -103
- package/esm2020/lib/_metronic/core/_utils/EventHandlerUtil.mjs +0 -90
- package/esm2020/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +0 -49
- package/esm2020/lib/_metronic/core/_utils/_DataUtil.mjs +0 -48
- package/esm2020/lib/_metronic/core/components/_DrawerComponent.mjs +0 -290
- package/esm2020/lib/_metronic/core/components/_ScrollTopComponent.mjs +0 -113
- package/esm2020/lib/_metronic/core/components/_ToggleComponent.mjs +0 -157
- package/esm2020/lib/_metronic/core/services/page-info.service.mjs +0 -119
- package/esm2020/lib/masterlayout-routing.module.mjs +0 -45
- package/esm2020/lib/masterlayout.module.mjs +0 -188
- package/fesm2015/bnsights-bbsf-admin-portal.mjs +0 -27293
- package/fesm2015/bnsights-bbsf-admin-portal.mjs.map +0 -1
- package/fesm2020/bnsights-bbsf-admin-portal.mjs.map +0 -1
- package/lib/Pages/shared/Enums/WFVariableDataType.d.ts +0 -12
|
@@ -1,806 +0,0 @@
|
|
|
1
|
-
import { Component, ViewChild } from '@angular/core';
|
|
2
|
-
import { FormGroup } from '@angular/forms';
|
|
3
|
-
import { Country, CustomValidation, FilterType, InputType, MultiLingualTextBoxOptions, PhoneOptions, TextBoxOptions, ToggleSlideOptions, EnglishArabicDTO, FormOptions, PagingActionMode, ProfileImageUploadOptions, ImageType } from '@bnsights/bbsf-controls';
|
|
4
|
-
import { ControlLayout, DropdownOptions, FilterItem, PagingOptions } from '@bnsights/bbsf-controls';
|
|
5
|
-
import { AddUserModel } from '../shared/models/UserModels/AddUserModel';
|
|
6
|
-
import { EditUserModel } from '../shared/models/UserModels/EditUserModel';
|
|
7
|
-
import { saveAs } from 'file-saver';
|
|
8
|
-
import { PageInfoService } from '../../_metronic/core/services/page-info.service';
|
|
9
|
-
import { Constants } from '../shared/constants';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@bnsights/bbsf-utilities";
|
|
12
|
-
import * as i2 from "../../_metronic/core/services/page-info.service";
|
|
13
|
-
import * as i3 from "../shared/Services/userService.service";
|
|
14
|
-
import * as i4 from "@ng-bootstrap/ng-bootstrap";
|
|
15
|
-
import * as i5 from "ng-block-ui";
|
|
16
|
-
import * as i6 from "@angular/common";
|
|
17
|
-
import * as i7 from "@angular/forms";
|
|
18
|
-
import * as i8 from "@bnsights/bbsf-controls";
|
|
19
|
-
import * as i9 from "@angular/material/menu";
|
|
20
|
-
import * as i10 from "@angular/material/checkbox";
|
|
21
|
-
import * as i11 from "ng-inline-svg";
|
|
22
|
-
import * as i12 from "../empty-data/empty-data.component";
|
|
23
|
-
export class UsersComponent {
|
|
24
|
-
constructor(authService, utilityService, bbsfTranslateService, environmentService, pageInfoService, userService, modalService, requestHandlerService) {
|
|
25
|
-
this.authService = authService;
|
|
26
|
-
this.utilityService = utilityService;
|
|
27
|
-
this.bbsfTranslateService = bbsfTranslateService;
|
|
28
|
-
this.environmentService = environmentService;
|
|
29
|
-
this.pageInfoService = pageInfoService;
|
|
30
|
-
this.userService = userService;
|
|
31
|
-
this.modalService = modalService;
|
|
32
|
-
this.requestHandlerService = requestHandlerService;
|
|
33
|
-
//Page requirements
|
|
34
|
-
this.ShowPageContent = false;
|
|
35
|
-
this.ApiUrl = "/api/admin/Users/";
|
|
36
|
-
//Filter and paging components
|
|
37
|
-
this.UsersForm = new FormGroup({});
|
|
38
|
-
this.IsFilterLoaded = false;
|
|
39
|
-
this.IsFilterDataLoaded = false;
|
|
40
|
-
this.UserPagingResult = [];
|
|
41
|
-
this.clientSidePagingResult = [];
|
|
42
|
-
//Required lists
|
|
43
|
-
this.SelectedUserList = [];
|
|
44
|
-
this.permissionSetList = [];
|
|
45
|
-
this.permissionsList = [];
|
|
46
|
-
this.accountStatusList = [];
|
|
47
|
-
this.lockedStatusList = [];
|
|
48
|
-
this.departmentsList = [];
|
|
49
|
-
this.countriesList = [];
|
|
50
|
-
//Add Model Controls
|
|
51
|
-
this.AddUserForm = new FormGroup({});
|
|
52
|
-
this.AddUserFormOptions = new FormOptions;
|
|
53
|
-
//Edit Model Controls
|
|
54
|
-
this.EditUserForm = new FormGroup({});
|
|
55
|
-
this.EditUserFormOptions = new FormOptions;
|
|
56
|
-
//Deactivate/Activate User Model Controls
|
|
57
|
-
this.ShowActivateModelData = false;
|
|
58
|
-
this.ActivatorDeactivateUserList = [];
|
|
59
|
-
//Reset Password User Model Controls
|
|
60
|
-
this.ResetPasswordUserList = [];
|
|
61
|
-
//set Password User Model Controls
|
|
62
|
-
this.SetUserPasswordForm = new FormGroup({});
|
|
63
|
-
this.SetUserPasswordFormOptions = new FormOptions;
|
|
64
|
-
this.customValidation = new CustomValidation();
|
|
65
|
-
this.setPasswordUserList = [];
|
|
66
|
-
//Confirmation Model Controls
|
|
67
|
-
this.ConfirmationModalType = 0;
|
|
68
|
-
this.ConfirmationMessage = "";
|
|
69
|
-
//Users selection
|
|
70
|
-
this.activatedUsersSelected = 0;
|
|
71
|
-
this.deActivatedUsersSelected = 0;
|
|
72
|
-
this.showActivateBtn = false;
|
|
73
|
-
this.showDeactivateBtn = false;
|
|
74
|
-
this.showSetPassBtn = false;
|
|
75
|
-
this.showResetPassBtn = false;
|
|
76
|
-
this.showSendEmailBtn = false;
|
|
77
|
-
this.showGeneralBtns = true;
|
|
78
|
-
this.allSelected = false;
|
|
79
|
-
this.getAddUserModel = () => {
|
|
80
|
-
let paramArray = [];
|
|
81
|
-
let ResultModel = this.AddUserForm.value;
|
|
82
|
-
let AddModel = new AddUserModel();
|
|
83
|
-
AddModel.Username = ResultModel.Username;
|
|
84
|
-
AddModel.Name = ResultModel.Name;
|
|
85
|
-
AddModel.Nationality = ResultModel.Nationality;
|
|
86
|
-
AddModel.EID = ResultModel.EID;
|
|
87
|
-
AddModel.SamAccount = ResultModel.SamAccount;
|
|
88
|
-
AddModel.OrganizationID_GUID = Constants.OrganizationID_GUID;
|
|
89
|
-
if (ResultModel.DepartmentID_GUID != undefined)
|
|
90
|
-
AddModel.DepartmentID_GUID = ResultModel.DepartmentID_GUID;
|
|
91
|
-
let PermissionSets = ResultModel.PermissionSets;
|
|
92
|
-
AddModel.PermissionSets = PermissionSets;
|
|
93
|
-
let Permissions = ResultModel.Permissions;
|
|
94
|
-
AddModel.Permissions = Permissions;
|
|
95
|
-
AddModel.SendActivationMail = ResultModel.SendActivationMail;
|
|
96
|
-
let internationalNumber = null;
|
|
97
|
-
if (ResultModel.PhoneInputMobile != null) {
|
|
98
|
-
internationalNumber = ResultModel.PhoneInputMobile.internationalNumber;
|
|
99
|
-
internationalNumber = internationalNumber.replace(/\s/g, "");
|
|
100
|
-
}
|
|
101
|
-
AddModel.PhoneInputMobile = internationalNumber;
|
|
102
|
-
AddModel.ProfileImage = ResultModel.Image;
|
|
103
|
-
paramArray.push(AddModel);
|
|
104
|
-
return paramArray;
|
|
105
|
-
};
|
|
106
|
-
this.getAddUserFunction = (AddModel) => {
|
|
107
|
-
return this.userService.AddUser(AddModel);
|
|
108
|
-
};
|
|
109
|
-
this.getEditUserModel = () => {
|
|
110
|
-
let paramArray = [];
|
|
111
|
-
let ResultModel = this.EditUserForm.value;
|
|
112
|
-
let EditModel = new EditUserModel();
|
|
113
|
-
EditModel.ID_GUID = this.UserId;
|
|
114
|
-
EditModel.Username = ResultModel.Username;
|
|
115
|
-
EditModel.Email = ResultModel.Email;
|
|
116
|
-
EditModel.Name = ResultModel.Name;
|
|
117
|
-
EditModel.Nationality = ResultModel.Nationality;
|
|
118
|
-
EditModel.EID = ResultModel.EID;
|
|
119
|
-
EditModel.SamAccount = ResultModel.SamAccount;
|
|
120
|
-
if (ResultModel.DepartmentID_GUID != undefined)
|
|
121
|
-
EditModel.DepartmentID = Number(ResultModel.DepartmentID_GUID);
|
|
122
|
-
let PermissionSets = ResultModel.PermissionSets;
|
|
123
|
-
EditModel.PermissionSetIDs = PermissionSets;
|
|
124
|
-
let Permissions = ResultModel.Permissions;
|
|
125
|
-
EditModel.PermissionIDs = Permissions;
|
|
126
|
-
let internationalNumber = null;
|
|
127
|
-
if (ResultModel.PhoneInputMobile != null) {
|
|
128
|
-
internationalNumber = ResultModel.PhoneInputMobile.internationalNumber;
|
|
129
|
-
internationalNumber = internationalNumber.replace(/\s/g, "");
|
|
130
|
-
}
|
|
131
|
-
EditModel.Mobile = internationalNumber;
|
|
132
|
-
EditModel.ProfileImage = ResultModel.Image;
|
|
133
|
-
paramArray.push(EditModel);
|
|
134
|
-
return paramArray;
|
|
135
|
-
};
|
|
136
|
-
this.getEditUserFunction = (EditModel) => {
|
|
137
|
-
return this.userService.EditUser(EditModel);
|
|
138
|
-
};
|
|
139
|
-
this.getSetPAsswordModel = () => {
|
|
140
|
-
let paramArray = [];
|
|
141
|
-
let ResultModel = this.SetUserPasswordForm.value;
|
|
142
|
-
let updatesUsers = [];
|
|
143
|
-
for (let index = 0; index < this.setPasswordUserList.length; index++) {
|
|
144
|
-
var element = this.setPasswordUserList[index];
|
|
145
|
-
element.Password = ResultModel.Password;
|
|
146
|
-
element.PasswordConfirmation = ResultModel.PasswordConfirmation;
|
|
147
|
-
updatesUsers.push(element);
|
|
148
|
-
}
|
|
149
|
-
paramArray.push(updatesUsers);
|
|
150
|
-
return paramArray;
|
|
151
|
-
};
|
|
152
|
-
this.getSetPasswordFunction = (passwordListModel) => {
|
|
153
|
-
return this.userService.SetUsersPassword(passwordListModel);
|
|
154
|
-
};
|
|
155
|
-
this.onSubmitSuccess = (result) => {
|
|
156
|
-
this.resetUsersCount();
|
|
157
|
-
this.disableButtons();
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
ngOnInit() {
|
|
161
|
-
this.ShowPageContent = true;
|
|
162
|
-
PageInfoService.PageTitle = this.utilityService.getResourceValue("Users");
|
|
163
|
-
PageInfoService.PageBreadcrumbs = [
|
|
164
|
-
{ title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
|
|
165
|
-
{ title: '', path: '', isSeparator: true, isActive: false }
|
|
166
|
-
];
|
|
167
|
-
this.pageInfoService.calculateTitle();
|
|
168
|
-
this.pageInfoService.calculateBreadcrumbs();
|
|
169
|
-
this.ProductionMode = this.environmentService.getProductionMode();
|
|
170
|
-
this.initializePage();
|
|
171
|
-
}
|
|
172
|
-
//Paging functions
|
|
173
|
-
setUsersListResult(result) {
|
|
174
|
-
this.UserPagingResult = result;
|
|
175
|
-
this.clientSidePagingResult = result;
|
|
176
|
-
this.ShowPageContent = true;
|
|
177
|
-
this.resetUsersCount();
|
|
178
|
-
this.disableButtons();
|
|
179
|
-
this.allSelected = false;
|
|
180
|
-
this.utilityService.stopBlockUI();
|
|
181
|
-
}
|
|
182
|
-
searchClientSide(searchValue) {
|
|
183
|
-
if (searchValue)
|
|
184
|
-
this.clientSidePagingResult = this.clientSidePagingResult.filter(function (item) {
|
|
185
|
-
return (item.name.english.toLowerCase().includes(searchValue.toLowerCase())
|
|
186
|
-
|| item.name.arabic.toLowerCase().includes(searchValue.toLowerCase())
|
|
187
|
-
|| item.username.toLowerCase().includes(searchValue.toLowerCase()));
|
|
188
|
-
});
|
|
189
|
-
else
|
|
190
|
-
this.clientSidePagingResult = this.UserPagingResult;
|
|
191
|
-
}
|
|
192
|
-
//Initialize filters and paging
|
|
193
|
-
initializePage() {
|
|
194
|
-
// Permission Sets init
|
|
195
|
-
this.permissionSetsOptions = new DropdownOptions();
|
|
196
|
-
this.permissionSetsOptions.Name = "permissionsets";
|
|
197
|
-
this.permissionSetsOptions.LabelKey = "PermissionSets";
|
|
198
|
-
this.permissionSetsOptions.SingleSelection = true;
|
|
199
|
-
this.permissionSetsOptions.AllowSearchFilter = true;
|
|
200
|
-
this.permissionSetsOptions.Placeholder = "";
|
|
201
|
-
// Account Status init
|
|
202
|
-
this.accountStatusOptions = new DropdownOptions();
|
|
203
|
-
this.accountStatusOptions.Name = "accountstatus";
|
|
204
|
-
this.accountStatusOptions.LabelKey = "AccountStatus";
|
|
205
|
-
this.accountStatusOptions.SingleSelection = true;
|
|
206
|
-
// Locked Status init
|
|
207
|
-
this.lockedStatusOptions = new DropdownOptions();
|
|
208
|
-
this.lockedStatusOptions.Name = "lockedstatus";
|
|
209
|
-
this.lockedStatusOptions.LabelKey = "LockedStatus";
|
|
210
|
-
this.lockedStatusOptions.SingleSelection = true;
|
|
211
|
-
// departments init
|
|
212
|
-
this.departmentsOptions = new DropdownOptions();
|
|
213
|
-
this.departmentsOptions.Name = "departments";
|
|
214
|
-
this.departmentsOptions.LabelKey = "Departments";
|
|
215
|
-
this.departmentsOptions.SingleSelection = false;
|
|
216
|
-
this.departmentsOptions.AllowSearchFilter = true;
|
|
217
|
-
// TextBox init
|
|
218
|
-
this.searchTextBox = new TextBoxOptions();
|
|
219
|
-
this.searchTextBox.Name = "searchTextBox";
|
|
220
|
-
this.searchTextBox.HideLabel = true;
|
|
221
|
-
this.searchTextBox.Type = InputType.Text;
|
|
222
|
-
this.searchTextBox.ExtraClasses = "Users";
|
|
223
|
-
this.searchTextBox.Placeholder = this.utilityService.getResourceValue("SearchByNameOrEmail");
|
|
224
|
-
//Filters
|
|
225
|
-
this.TextInputFilter = new FilterItem();
|
|
226
|
-
this.TextInputFilter.FormControlName = "searchTextBox";
|
|
227
|
-
this.TextInputFilter.ActionParameterName = "nameFilter";
|
|
228
|
-
this.TextInputFilter.IsFormControl = true;
|
|
229
|
-
this.TextInputFilter.FilterType = FilterType.TextBox;
|
|
230
|
-
this.permissionSetsFilter = new FilterItem();
|
|
231
|
-
this.permissionSetsFilter.FormControlName = "permissionsets";
|
|
232
|
-
this.permissionSetsFilter.ActionParameterName = "PermissionSetIds";
|
|
233
|
-
this.permissionSetsFilter.IsFormControl = true;
|
|
234
|
-
this.permissionSetsFilter.FilterType = FilterType.DropdownList;
|
|
235
|
-
this.accountStatusFilter = new FilterItem();
|
|
236
|
-
this.accountStatusFilter.FormControlName = "accountstatus";
|
|
237
|
-
this.accountStatusFilter.ActionParameterName = "accountStatusIDs";
|
|
238
|
-
this.accountStatusFilter.IsFormControl = true;
|
|
239
|
-
this.accountStatusFilter.FilterType = FilterType.DropdownList;
|
|
240
|
-
this.lockedStatusFilter = new FilterItem();
|
|
241
|
-
this.lockedStatusFilter.FormControlName = "lockedstatus";
|
|
242
|
-
this.lockedStatusFilter.ActionParameterName = "lockedStatusIds";
|
|
243
|
-
this.lockedStatusFilter.IsFormControl = true;
|
|
244
|
-
this.lockedStatusFilter.FilterType = FilterType.DropdownList;
|
|
245
|
-
this.departmentsFilter = new FilterItem();
|
|
246
|
-
this.departmentsFilter.FormControlName = "departments";
|
|
247
|
-
this.departmentsFilter.ActionParameterName = "departmentIds";
|
|
248
|
-
this.departmentsFilter.IsFormControl = true;
|
|
249
|
-
this.departmentsFilter.FilterType = FilterType.DropdownList;
|
|
250
|
-
this.UserPaging = new PagingOptions();
|
|
251
|
-
this.UserPaging.ActionPostURL = this.ApiUrl + 'GetUsersByFilter';
|
|
252
|
-
this.UserPaging.OnKeyPressFiltersControlNames = ["searchTextBox"];
|
|
253
|
-
this.UserPaging.DropdownFiltersControlNames = ["permissionsets", "accountstatus", "lockedstatus", "departments"];
|
|
254
|
-
this.UserPaging.Filters = [this.permissionSetsFilter, this.lockedStatusFilter, this.accountStatusFilter, this.departmentsFilter, this.TextInputFilter];
|
|
255
|
-
this.UserPaging.ValidationToken = this.authService.authorizationHeaderValue();
|
|
256
|
-
this.UserPaging.ResetFilterButtonName = "usersFiltersBtn";
|
|
257
|
-
this.IsFilterLoaded = true;
|
|
258
|
-
}
|
|
259
|
-
//Load lists for filters
|
|
260
|
-
loadLists() {
|
|
261
|
-
if (!this.IsFilterDataLoaded) {
|
|
262
|
-
this.userService.Loaddropdowns().subscribe((result) => {
|
|
263
|
-
let DropdownsResponseModel = result;
|
|
264
|
-
this.permissionSetList = DropdownsResponseModel.permessionsets;
|
|
265
|
-
this.accountStatusList = DropdownsResponseModel.accountStatus;
|
|
266
|
-
this.lockedStatusList = DropdownsResponseModel.lockedStatus;
|
|
267
|
-
this.departmentsList = DropdownsResponseModel.departments;
|
|
268
|
-
let permissionSetElement = this.permissionSetDDL;
|
|
269
|
-
let accountStatusElement = this.accountStatusDDL;
|
|
270
|
-
let lockedStatusElement = this.lockedStatusDDL;
|
|
271
|
-
let departmentsElement = this.departmentsDDL;
|
|
272
|
-
permissionSetElement.UpdateDataSource(this.permissionSetList);
|
|
273
|
-
accountStatusElement.UpdateDataSource(this.accountStatusList);
|
|
274
|
-
lockedStatusElement.UpdateDataSource(this.lockedStatusList);
|
|
275
|
-
departmentsElement.UpdateDataSource(this.departmentsList);
|
|
276
|
-
this.IsFilterDataLoaded = true;
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
//Users checkboxes selection functions
|
|
281
|
-
selectAllUserList(event, Users) {
|
|
282
|
-
if (this.UserPagingResult == null) {
|
|
283
|
-
return;
|
|
284
|
-
}
|
|
285
|
-
this.UserPagingResult.forEach(u => u.selected = event.checked);
|
|
286
|
-
if (event.checked) {
|
|
287
|
-
for (let index = 0; index < Users.length; index++) {
|
|
288
|
-
const user = Users[index];
|
|
289
|
-
this.SelectedUserList.push(user);
|
|
290
|
-
if (user.isActive) {
|
|
291
|
-
this.activatedUsersSelected += 1;
|
|
292
|
-
}
|
|
293
|
-
else {
|
|
294
|
-
this.deActivatedUsersSelected += 1;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
this.activatedUsersSelected = Users.filter((item) => { return item.isActive; }).map((item) => item.key).length;
|
|
298
|
-
this.deActivatedUsersSelected = Users.filter((item) => { return !item.isActive; }).map((item) => item.key).length;
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
this.SelectedUserList = [];
|
|
302
|
-
this.activatedUsersSelected = 0;
|
|
303
|
-
this.deActivatedUsersSelected = 0;
|
|
304
|
-
}
|
|
305
|
-
this.enableButtons();
|
|
306
|
-
}
|
|
307
|
-
updateUserList(event, User) {
|
|
308
|
-
this.UserPagingResult.find(u => u.id === User.id).selected = event.checked;
|
|
309
|
-
this.allSelected = this.UserPagingResult != null && this.UserPagingResult.every(u => u.selected);
|
|
310
|
-
if (event.checked) {
|
|
311
|
-
this.SelectedUserList.push(User);
|
|
312
|
-
if (User.isActive)
|
|
313
|
-
this.activatedUsersSelected += 1;
|
|
314
|
-
else
|
|
315
|
-
this.deActivatedUsersSelected += 1;
|
|
316
|
-
}
|
|
317
|
-
else {
|
|
318
|
-
this.SelectedUserList.forEach((value, index) => {
|
|
319
|
-
if (value.id == User.id)
|
|
320
|
-
this.SelectedUserList.splice(index, 1);
|
|
321
|
-
});
|
|
322
|
-
if (User.isActive)
|
|
323
|
-
this.activatedUsersSelected -= 1;
|
|
324
|
-
else
|
|
325
|
-
this.deActivatedUsersSelected -= 1;
|
|
326
|
-
}
|
|
327
|
-
this.enableButtons();
|
|
328
|
-
}
|
|
329
|
-
deleteUserFromList(user) {
|
|
330
|
-
this.UserPagingResult.find(u => u.id === user.id).selected = false;
|
|
331
|
-
this.SelectedUserList = this.SelectedUserList.filter(item => item != user);
|
|
332
|
-
if (user.isActive)
|
|
333
|
-
this.activatedUsersSelected -= 1;
|
|
334
|
-
else
|
|
335
|
-
this.deActivatedUsersSelected -= 1;
|
|
336
|
-
this.enableButtons();
|
|
337
|
-
if (this.SelectedUserList.length <= 0) {
|
|
338
|
-
this.modalService.dismissAll();
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
enableButtons() {
|
|
342
|
-
//Reset all btns
|
|
343
|
-
this.disableButtons();
|
|
344
|
-
if (this.activatedUsersSelected == 0 && this.deActivatedUsersSelected == 0) {
|
|
345
|
-
this.showGeneralBtns = true;
|
|
346
|
-
}
|
|
347
|
-
else {
|
|
348
|
-
this.showGeneralBtns = false;
|
|
349
|
-
//if only activated users
|
|
350
|
-
if (this.activatedUsersSelected > 0 && this.deActivatedUsersSelected == 0) {
|
|
351
|
-
this.showDeactivateBtn = true;
|
|
352
|
-
this.showResetPassBtn = true;
|
|
353
|
-
}
|
|
354
|
-
else if (this.deActivatedUsersSelected > 0 && this.activatedUsersSelected == 0) //if only deActivated users
|
|
355
|
-
{
|
|
356
|
-
this.showActivateBtn = true;
|
|
357
|
-
this.showSendEmailBtn = true;
|
|
358
|
-
}
|
|
359
|
-
else if (this.activatedUsersSelected > 0 && this.deActivatedUsersSelected > 0) //if activated and deactivated users selected
|
|
360
|
-
{
|
|
361
|
-
this.showResetPassBtn = true;
|
|
362
|
-
this.showSetPassBtn = true;
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
disableButtons() {
|
|
367
|
-
//Reset all btns
|
|
368
|
-
this.showActivateBtn = false;
|
|
369
|
-
this.showDeactivateBtn = false;
|
|
370
|
-
this.showSendEmailBtn = false;
|
|
371
|
-
this.showResetPassBtn = false;
|
|
372
|
-
this.showSetPassBtn = false;
|
|
373
|
-
this.showGeneralBtns = true;
|
|
374
|
-
}
|
|
375
|
-
resetUsersCount() {
|
|
376
|
-
this.SelectedUserList = [];
|
|
377
|
-
this.activatedUsersSelected = 0;
|
|
378
|
-
this.deActivatedUsersSelected = 0;
|
|
379
|
-
this.UserPagingResult.forEach(u => u.selected = false);
|
|
380
|
-
}
|
|
381
|
-
//Add User
|
|
382
|
-
showAddUserModal(addUserModal) {
|
|
383
|
-
this.utilityService.startBlockUI();
|
|
384
|
-
this.userService.LoadAddDropdowns().subscribe((result) => {
|
|
385
|
-
let DropdownsResponseModel = result;
|
|
386
|
-
//Set required lists
|
|
387
|
-
this.permissionSetList = DropdownsResponseModel.permessionsets;
|
|
388
|
-
this.departmentsList = DropdownsResponseModel.departments;
|
|
389
|
-
this.countriesList = DropdownsResponseModel.countries;
|
|
390
|
-
this.AddUserForm = new FormGroup({});
|
|
391
|
-
this.AddUserFormOptions = new FormOptions();
|
|
392
|
-
this.AddUserFormOptions.FormGroup = this.AddUserForm;
|
|
393
|
-
this.AddUserFormOptions.GetModelFunction = this.getAddUserModel;
|
|
394
|
-
this.AddUserFormOptions.ServiceSubmitFunction = this.getAddUserFunction;
|
|
395
|
-
this.AddUserFormOptions.PagingReference = this.pagingElement;
|
|
396
|
-
this.AddName = new MultiLingualTextBoxOptions();
|
|
397
|
-
this.AddName.Name = "Name";
|
|
398
|
-
this.AddName.ArabicLabelKey = "NameInArabic";
|
|
399
|
-
this.AddName.EnglishLabelKey = "NameInEnglish";
|
|
400
|
-
this.AddName.IsRequired = true;
|
|
401
|
-
this.AddName.MaxLength = 100;
|
|
402
|
-
this.AddMobileNumber = new PhoneOptions();
|
|
403
|
-
this.AddMobileNumber.Value = null;
|
|
404
|
-
this.AddMobileNumber.Name = "PhoneInputMobile";
|
|
405
|
-
this.AddMobileNumber.LabelKey = "MobileNumber";
|
|
406
|
-
this.AddMobileNumber.ExtraClasses = "form-control bnsights-control";
|
|
407
|
-
this.AddMobileNumber.SelectedCountryISO = Country.UnitedArabEmirates;
|
|
408
|
-
this.AddMobileNumber.PhoneValidation = true;
|
|
409
|
-
this.AddMobileNumber.AllowSearch = true;
|
|
410
|
-
this.AddUsername = new TextBoxOptions();
|
|
411
|
-
this.AddUsername.Value = null;
|
|
412
|
-
this.AddUsername.Name = "Username";
|
|
413
|
-
this.AddUsername.LabelKey = "Username";
|
|
414
|
-
this.AddUsername.Type = InputType.Email;
|
|
415
|
-
this.AddUsername.IsRequired = true;
|
|
416
|
-
this.AddUsername.MaxLength = 256;
|
|
417
|
-
this.AddSamAccount = new TextBoxOptions();
|
|
418
|
-
this.AddSamAccount.Value = null;
|
|
419
|
-
this.AddSamAccount.Name = "SamAccount";
|
|
420
|
-
this.AddSamAccount.LabelKey = "SamAccount";
|
|
421
|
-
this.AddSamAccount.Type = InputType.Text;
|
|
422
|
-
this.AddSamAccount.MaxLength = 256;
|
|
423
|
-
this.AddUserDepartment = new DropdownOptions();
|
|
424
|
-
this.AddUserDepartment.Name = "DepartmentID_GUID";
|
|
425
|
-
this.AddUserDepartment.LabelKey = "Department";
|
|
426
|
-
this.AddUserDepartment.SelectedItems = null;
|
|
427
|
-
this.AddUserDepartment.DataSource = this.departmentsList;
|
|
428
|
-
this.AddUserDepartment.SingleSelection = true;
|
|
429
|
-
this.AddUserDepartment.AllowSearchFilter = true;
|
|
430
|
-
this.AddSendActivationEmail = new ToggleSlideOptions();
|
|
431
|
-
this.AddSendActivationEmail.Name = "SendActivationMail";
|
|
432
|
-
this.AddSendActivationEmail.LabelKey = "SendActivationEmail";
|
|
433
|
-
this.AddSendActivationEmail.Value = false;
|
|
434
|
-
this.AddSendActivationEmail.ViewType = ControlLayout.Horizontal;
|
|
435
|
-
this.AddUserPermissionSet = new DropdownOptions();
|
|
436
|
-
this.AddUserPermissionSet.Name = "PermissionSets";
|
|
437
|
-
this.AddUserPermissionSet.LabelKey = "PermissionSets";
|
|
438
|
-
this.AddUserPermissionSet.SelectedItems = null;
|
|
439
|
-
this.AddUserPermissionSet.DataSource = this.permissionSetList;
|
|
440
|
-
this.AddUserPermissionSet.SingleSelection = false;
|
|
441
|
-
this.AddUserPermissionSet.AllowSearchFilter = true;
|
|
442
|
-
this.AddUserPermissionSet.IsRequired = true;
|
|
443
|
-
this.AddUserPermissions = new DropdownOptions();
|
|
444
|
-
this.AddUserPermissions.Name = "Permissions";
|
|
445
|
-
this.AddUserPermissions.LabelKey = "Permissions";
|
|
446
|
-
this.AddUserPermissions.SelectedItems = null;
|
|
447
|
-
this.AddUserPermissions.SingleSelection = false;
|
|
448
|
-
this.AddUserPermissions.AllowSearchFilter = true;
|
|
449
|
-
this.AddUserPermissions.IsRequired = false;
|
|
450
|
-
this.AddUserNationality = new DropdownOptions();
|
|
451
|
-
this.AddUserNationality.Name = "Nationality";
|
|
452
|
-
this.AddUserNationality.LabelKey = "Nationality";
|
|
453
|
-
this.AddUserNationality.ViewType = ControlLayout.Vertical;
|
|
454
|
-
this.AddUserNationality.SingleSelection = true;
|
|
455
|
-
this.AddUserNationality.ShowCheckbox = false;
|
|
456
|
-
this.AddUserNationality.AllowSearchFilter = true;
|
|
457
|
-
this.AddUserNationality.DataSource = this.countriesList;
|
|
458
|
-
this.AddUserEID = new TextBoxOptions();
|
|
459
|
-
this.AddUserEID.Name = "EID";
|
|
460
|
-
this.AddUserEID.LabelKey = "EID";
|
|
461
|
-
this.AddUserEID.Type = InputType.EID;
|
|
462
|
-
this.AddUserEID.ViewType = ControlLayout.Vertical;
|
|
463
|
-
this.AddProfileImage = new ProfileImageUploadOptions();
|
|
464
|
-
this.AddProfileImage.Name = "Image";
|
|
465
|
-
this.AddProfileImage.LabelValue = "ProfileImage";
|
|
466
|
-
this.AddProfileImage.IsRequired = false;
|
|
467
|
-
this.AddProfileImage.ViewType = ControlLayout.Vertical;
|
|
468
|
-
this.AddProfileImage.ImageUploadAcceptsTypes = [ImageType.ImageTypes];
|
|
469
|
-
this.modalService.open(addUserModal);
|
|
470
|
-
this.utilityService.stopBlockUI();
|
|
471
|
-
});
|
|
472
|
-
}
|
|
473
|
-
//Edit User
|
|
474
|
-
showEditUserModal(userID, EditUserModal) {
|
|
475
|
-
this.utilityService.startBlockUI();
|
|
476
|
-
this.UserId = userID;
|
|
477
|
-
this.userService.getEditUser(userID).subscribe((result) => {
|
|
478
|
-
let resultObj = result;
|
|
479
|
-
let user = resultObj.model;
|
|
480
|
-
let lists = resultObj.lists;
|
|
481
|
-
this.permissionSetList = lists.permessionsets;
|
|
482
|
-
this.permissionsList = lists.permessions;
|
|
483
|
-
this.departmentsList = lists.departments;
|
|
484
|
-
this.countriesList = lists.countries;
|
|
485
|
-
this.EditUserForm = new FormGroup({});
|
|
486
|
-
this.EditUserFormOptions = new FormOptions();
|
|
487
|
-
this.EditUserFormOptions.FormGroup = this.EditUserForm;
|
|
488
|
-
this.EditUserFormOptions.GetModelFunction = this.getEditUserModel;
|
|
489
|
-
this.EditUserFormOptions.ServiceSubmitFunction = this.getEditUserFunction;
|
|
490
|
-
this.EditUserFormOptions.PagingReference = this.pagingElement;
|
|
491
|
-
this.EditUserFormOptions.PagingActionMode = PagingActionMode.Update;
|
|
492
|
-
this.EditUserFormOptions.OnSuccessHandler = this.onSubmitSuccess;
|
|
493
|
-
let Name = new EnglishArabicDTO();
|
|
494
|
-
Name.English = user.name.english;
|
|
495
|
-
Name.Arabic = user.name.arabic;
|
|
496
|
-
this.EditName = new MultiLingualTextBoxOptions();
|
|
497
|
-
this.EditName.Name = "Name";
|
|
498
|
-
this.EditName.ArabicLabelKey = "NameInArabic";
|
|
499
|
-
this.EditName.EnglishLabelKey = "NameInEnglish";
|
|
500
|
-
this.EditName.IsRequired = true;
|
|
501
|
-
this.EditName.Value = Name;
|
|
502
|
-
this.EditName.MaxLength = 100;
|
|
503
|
-
this.EditMobileNumber = new PhoneOptions();
|
|
504
|
-
this.EditMobileNumber.Value = user.mobile;
|
|
505
|
-
this.EditMobileNumber.Name = "PhoneInputMobile";
|
|
506
|
-
this.EditMobileNumber.LabelKey = "MobileNumber";
|
|
507
|
-
this.EditMobileNumber.ExtraClasses = "form-control bnsights-control";
|
|
508
|
-
this.EditMobileNumber.SelectedCountryISO = Country.UnitedArabEmirates;
|
|
509
|
-
this.EditMobileNumber.PhoneValidation = true;
|
|
510
|
-
this.EditMobileNumber.AllowSearch = true;
|
|
511
|
-
this.EditUsername = new TextBoxOptions();
|
|
512
|
-
this.EditUsername.Value = user.username;
|
|
513
|
-
this.EditUsername.Name = "Username";
|
|
514
|
-
this.EditUsername.LabelKey = "Username";
|
|
515
|
-
this.EditUsername.Type = InputType.Email;
|
|
516
|
-
this.EditUsername.IsRequired = true;
|
|
517
|
-
this.EditUsername.MaxLength = 256;
|
|
518
|
-
this.EditEmail = new TextBoxOptions();
|
|
519
|
-
this.EditEmail.Value = user.email;
|
|
520
|
-
this.EditEmail.Name = "Email";
|
|
521
|
-
this.EditEmail.LabelKey = "Email";
|
|
522
|
-
this.EditEmail.Type = InputType.Email;
|
|
523
|
-
this.EditEmail.IsRequired = true;
|
|
524
|
-
this.EditEmail.MaxLength = 256;
|
|
525
|
-
this.EditSamAccount = new TextBoxOptions();
|
|
526
|
-
this.EditSamAccount.Value = user.samAccount;
|
|
527
|
-
this.EditSamAccount.Name = "SamAccount";
|
|
528
|
-
this.EditSamAccount.LabelKey = "SamAccount";
|
|
529
|
-
this.EditSamAccount.Type = InputType.Text;
|
|
530
|
-
this.EditSamAccount.MaxLength = 256;
|
|
531
|
-
this.EditUserDepartment = new DropdownOptions();
|
|
532
|
-
this.EditUserDepartment.Name = "DepartmentID_GUID";
|
|
533
|
-
this.EditUserDepartment.LabelKey = "Department";
|
|
534
|
-
this.EditUserDepartment.SelectedItems = user.departmentID_GUID?.toLowerCase();
|
|
535
|
-
this.EditUserDepartment.DataSource = this.departmentsList;
|
|
536
|
-
this.EditUserDepartment.SingleSelection = true;
|
|
537
|
-
this.EditUserDepartment.AllowSearchFilter = true;
|
|
538
|
-
this.EditUserPermissionSet = new DropdownOptions();
|
|
539
|
-
this.EditUserPermissionSet.Name = "PermissionSets";
|
|
540
|
-
this.EditUserPermissionSet.LabelKey = "PermissionSets";
|
|
541
|
-
this.EditUserPermissionSet.SelectedItems = user.permissionSetIDs.map((item) => item.toLowerCase());
|
|
542
|
-
this.EditUserPermissionSet.DataSource = this.permissionSetList;
|
|
543
|
-
this.EditUserPermissionSet.SingleSelection = false;
|
|
544
|
-
this.EditUserPermissionSet.AllowSearchFilter = true;
|
|
545
|
-
this.EditUserPermissionSet.IsRequired = true;
|
|
546
|
-
this.EditUserPermissions = new DropdownOptions();
|
|
547
|
-
this.EditUserPermissions.Name = "Permissions";
|
|
548
|
-
this.EditUserPermissions.LabelKey = "Permissions";
|
|
549
|
-
this.EditUserPermissions.SelectedItems = user.permissionIDs.map((item) => item.toLowerCase());
|
|
550
|
-
this.EditUserPermissions.DataSource = this.permissionsList;
|
|
551
|
-
this.EditUserPermissions.SingleSelection = false;
|
|
552
|
-
this.EditUserPermissions.AllowSearchFilter = true;
|
|
553
|
-
this.EditUserPermissions.IsRequired = false;
|
|
554
|
-
this.EditUserNationality = new DropdownOptions();
|
|
555
|
-
this.EditUserNationality.Name = "Nationality";
|
|
556
|
-
this.EditUserNationality.LabelKey = "Nationality";
|
|
557
|
-
this.EditUserNationality.ViewType = ControlLayout.Vertical;
|
|
558
|
-
this.EditUserNationality.SingleSelection = true;
|
|
559
|
-
this.EditUserNationality.ShowCheckbox = false;
|
|
560
|
-
this.EditUserNationality.AllowSearchFilter = true;
|
|
561
|
-
this.EditUserNationality.DataSource = this.countriesList;
|
|
562
|
-
if (user.nationality)
|
|
563
|
-
this.EditUserNationality.SelectedItems = user.nationality;
|
|
564
|
-
this.EditUserEID = new TextBoxOptions();
|
|
565
|
-
this.EditUserEID.Name = "EID";
|
|
566
|
-
this.EditUserEID.LabelKey = "EID";
|
|
567
|
-
this.EditUserEID.Type = InputType.EID;
|
|
568
|
-
this.EditUserEID.ViewType = ControlLayout.Vertical;
|
|
569
|
-
this.EditUserEID.Value = user.eid;
|
|
570
|
-
this.EditProfileImage = new ProfileImageUploadOptions();
|
|
571
|
-
this.EditProfileImage.Name = "Image";
|
|
572
|
-
this.EditProfileImage.LabelValue = "ProfileImage";
|
|
573
|
-
this.EditProfileImage.IsRequired = false;
|
|
574
|
-
this.EditProfileImage.ViewType = ControlLayout.Vertical;
|
|
575
|
-
this.EditProfileImage.ImageUploadAcceptsTypes = [ImageType.ImageTypes];
|
|
576
|
-
this.EditProfileImage.Value = user.profileImage;
|
|
577
|
-
this.modalService.open(EditUserModal);
|
|
578
|
-
this.utilityService.stopBlockUI();
|
|
579
|
-
});
|
|
580
|
-
}
|
|
581
|
-
changePermissionSet(ids, isAdd) {
|
|
582
|
-
this.userService.LoadPermissionsDropDown(ids).subscribe((result) => {
|
|
583
|
-
let ddl = result;
|
|
584
|
-
this.permissionsList = ddl;
|
|
585
|
-
if (isAdd) {
|
|
586
|
-
this.AddUserPermissions.SelectedItems = null;
|
|
587
|
-
this.AddUserPermissions.DataSource = this.permissionsList;
|
|
588
|
-
}
|
|
589
|
-
else {
|
|
590
|
-
this.EditUserPermissions.SelectedItems = null;
|
|
591
|
-
this.EditUserPermissions.DataSource = this.permissionsList;
|
|
592
|
-
}
|
|
593
|
-
});
|
|
594
|
-
}
|
|
595
|
-
//Export users excel
|
|
596
|
-
exportExcel() {
|
|
597
|
-
let filters = {};
|
|
598
|
-
filters = this.pagingElement.getFiltersValue();
|
|
599
|
-
this.userService.Export(filters).subscribe((result) => {
|
|
600
|
-
debugger;
|
|
601
|
-
let FileDTO = result;
|
|
602
|
-
const file = new Blob([FileDTO], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
|
|
603
|
-
let fileName = this.utilityService.getResourceValue("Users") + ".xlsx";
|
|
604
|
-
saveAs(file, fileName);
|
|
605
|
-
window.location.reload();
|
|
606
|
-
}, (error) => {
|
|
607
|
-
});
|
|
608
|
-
}
|
|
609
|
-
//One user functions
|
|
610
|
-
//Activation and deactivation functions
|
|
611
|
-
showActivateUserModal(User, isActivateModel, ActivateUserModal) {
|
|
612
|
-
this.utilityService.startBlockUI();
|
|
613
|
-
this.ActivatorDeactivateUserList = [];
|
|
614
|
-
this.ActivatorDeactivateUserList.push(User);
|
|
615
|
-
this.Name = User.nameStr;
|
|
616
|
-
this.Email = User.email;
|
|
617
|
-
this.ShowActivateModelData = isActivateModel;
|
|
618
|
-
this.modalService.open(ActivateUserModal);
|
|
619
|
-
this.utilityService.stopBlockUI();
|
|
620
|
-
}
|
|
621
|
-
activate() {
|
|
622
|
-
this.userService.ActivateUsers(this.ActivatorDeactivateUserList).subscribe((result) => {
|
|
623
|
-
this.modalService.dismissAll();
|
|
624
|
-
let element = this.pagingElement;
|
|
625
|
-
element.UpdatePaging();
|
|
626
|
-
this.resetUsersCount();
|
|
627
|
-
this.disableButtons();
|
|
628
|
-
}, (error) => {
|
|
629
|
-
});
|
|
630
|
-
}
|
|
631
|
-
deactivate() {
|
|
632
|
-
this.userService.DeactivateUsers(this.ActivatorDeactivateUserList).subscribe((result) => {
|
|
633
|
-
this.modalService.dismissAll();
|
|
634
|
-
let element = this.pagingElement;
|
|
635
|
-
element.UpdatePaging();
|
|
636
|
-
this.resetUsersCount();
|
|
637
|
-
this.disableButtons();
|
|
638
|
-
}, (error) => {
|
|
639
|
-
});
|
|
640
|
-
}
|
|
641
|
-
//Reset Password function
|
|
642
|
-
showResetPasswordUserModal(User, ResetPasswordUserModal) {
|
|
643
|
-
this.utilityService.startBlockUI();
|
|
644
|
-
this.ResetPasswordUserList = [];
|
|
645
|
-
this.ResetPasswordUserList.push(User);
|
|
646
|
-
this.Name = User.nameStr;
|
|
647
|
-
this.Email = User.email;
|
|
648
|
-
this.modalService.open(ResetPasswordUserModal);
|
|
649
|
-
this.utilityService.stopBlockUI();
|
|
650
|
-
}
|
|
651
|
-
resetPassword() {
|
|
652
|
-
this.userService.ResetUsersPassword(this.ResetPasswordUserList).subscribe((result) => {
|
|
653
|
-
this.modalService.dismissAll();
|
|
654
|
-
let element = this.pagingElement;
|
|
655
|
-
element.UpdatePaging();
|
|
656
|
-
this.resetUsersCount();
|
|
657
|
-
this.disableButtons();
|
|
658
|
-
}, (error) => {
|
|
659
|
-
});
|
|
660
|
-
}
|
|
661
|
-
//Send activation mail function
|
|
662
|
-
showSendActivationEmailModal(User, SendActivationEmailModal) {
|
|
663
|
-
this.utilityService.startBlockUI();
|
|
664
|
-
this.SelectedUserList = [];
|
|
665
|
-
this.SelectedUserList.push(User);
|
|
666
|
-
this.Name = User.nameStr;
|
|
667
|
-
this.Email = User.email;
|
|
668
|
-
this.modalService.open(SendActivationEmailModal);
|
|
669
|
-
this.utilityService.stopBlockUI();
|
|
670
|
-
}
|
|
671
|
-
sendActivationEmailForUser() {
|
|
672
|
-
this.userService.SendActivationEmailForUser(this.SelectedUserList).subscribe((result) => {
|
|
673
|
-
this.modalService.dismissAll();
|
|
674
|
-
this.SelectedUserList = [];
|
|
675
|
-
let element = this.pagingElement;
|
|
676
|
-
element.UpdatePaging();
|
|
677
|
-
this.resetUsersCount();
|
|
678
|
-
this.disableButtons();
|
|
679
|
-
}, (error) => {
|
|
680
|
-
});
|
|
681
|
-
}
|
|
682
|
-
//Set password function
|
|
683
|
-
showsetPasswordUserModal(User, setPasswordUserModal) {
|
|
684
|
-
this.utilityService.startBlockUI();
|
|
685
|
-
this.SetUserPasswordForm = new FormGroup({});
|
|
686
|
-
this.SetUserPasswordFormOptions = new FormOptions();
|
|
687
|
-
this.SetUserPasswordFormOptions.FormGroup = this.SetUserPasswordForm;
|
|
688
|
-
this.SetUserPasswordFormOptions.GetModelFunction = this.getSetPAsswordModel;
|
|
689
|
-
this.SetUserPasswordFormOptions.ServiceSubmitFunction = this.getSetPasswordFunction;
|
|
690
|
-
this.SetUserPasswordFormOptions.PagingReference = this.pagingElement;
|
|
691
|
-
this.SetUserPasswordFormOptions.PagingActionMode = PagingActionMode.Update;
|
|
692
|
-
this.SetUserPasswordFormOptions.OnSuccessHandler = this.onSubmitSuccess;
|
|
693
|
-
this.setPasswordUserList = [];
|
|
694
|
-
this.setPasswordUserList.push(User);
|
|
695
|
-
this.Name = User.nameStr;
|
|
696
|
-
this.Email = User.email;
|
|
697
|
-
this.Password = new TextBoxOptions();
|
|
698
|
-
this.Password.Name = "Password";
|
|
699
|
-
this.Password.HideLabel = true;
|
|
700
|
-
this.Password.Type = InputType.Password;
|
|
701
|
-
this.Password.IsRequired = true;
|
|
702
|
-
this.customValidation.functionBody = (control) => {
|
|
703
|
-
let Password = this.SetUserPasswordForm.controls["Password"].value;
|
|
704
|
-
if (control.value != Password)
|
|
705
|
-
return { 'customerError': true };
|
|
706
|
-
return null;
|
|
707
|
-
};
|
|
708
|
-
this.customValidation.massage = this.utilityService.getResourceValue("PasswordNotMatch");
|
|
709
|
-
this.PasswordConfirmation = new TextBoxOptions();
|
|
710
|
-
this.PasswordConfirmation.Name = "PasswordConfirmation";
|
|
711
|
-
this.PasswordConfirmation.HideLabel = true;
|
|
712
|
-
this.PasswordConfirmation.Type = InputType.Password;
|
|
713
|
-
this.PasswordConfirmation.IsRequired = true;
|
|
714
|
-
this.PasswordConfirmation.CustomValidation = [this.customValidation];
|
|
715
|
-
this.modalService.open(setPasswordUserModal);
|
|
716
|
-
this.utilityService.stopBlockUI();
|
|
717
|
-
}
|
|
718
|
-
//Users List Functions
|
|
719
|
-
//Show activate,deactivate,resetPassword,sendactivationemail modals
|
|
720
|
-
showConfirmationModal(type, ConfirmationModal) {
|
|
721
|
-
this.utilityService.startBlockUI();
|
|
722
|
-
switch (type) {
|
|
723
|
-
case 1:
|
|
724
|
-
this.ConfirmationMessage = this.utilityService.getResourceValue("ActivateConfirmation");
|
|
725
|
-
this.ConfirmationModalType = 1;
|
|
726
|
-
break;
|
|
727
|
-
case 2:
|
|
728
|
-
this.ConfirmationMessage = this.utilityService.getResourceValue("DeactivateConfirmation");
|
|
729
|
-
this.ConfirmationModalType = 2;
|
|
730
|
-
break;
|
|
731
|
-
case 3:
|
|
732
|
-
this.ConfirmationMessage = this.utilityService.getResourceValue("ResetPasswordConfirmation");
|
|
733
|
-
this.ConfirmationModalType = 3;
|
|
734
|
-
break;
|
|
735
|
-
case 4:
|
|
736
|
-
this.ConfirmationMessage = this.utilityService.getResourceValue("SendActivationMailConfirmation");
|
|
737
|
-
this.ConfirmationModalType = 4;
|
|
738
|
-
break;
|
|
739
|
-
default:
|
|
740
|
-
break;
|
|
741
|
-
}
|
|
742
|
-
this.modalService.open(ConfirmationModal);
|
|
743
|
-
this.utilityService.stopBlockUI();
|
|
744
|
-
}
|
|
745
|
-
//Activate users list
|
|
746
|
-
activateUserList() {
|
|
747
|
-
this.userService.ActivateUsers(this.SelectedUserList).subscribe((result) => {
|
|
748
|
-
this.modalService.dismissAll();
|
|
749
|
-
this.SelectedUserList = [];
|
|
750
|
-
let element = this.pagingElement;
|
|
751
|
-
element.UpdatePaging();
|
|
752
|
-
this.resetUsersCount();
|
|
753
|
-
this.disableButtons();
|
|
754
|
-
}, (error) => {
|
|
755
|
-
});
|
|
756
|
-
}
|
|
757
|
-
//Deactivate users list
|
|
758
|
-
deactivateUserList() {
|
|
759
|
-
this.userService.DeactivateUsers(this.SelectedUserList).subscribe((result) => {
|
|
760
|
-
this.modalService.dismissAll();
|
|
761
|
-
this.SelectedUserList = [];
|
|
762
|
-
let element = this.pagingElement;
|
|
763
|
-
element.UpdatePaging();
|
|
764
|
-
this.resetUsersCount();
|
|
765
|
-
this.disableButtons();
|
|
766
|
-
}, (error) => {
|
|
767
|
-
});
|
|
768
|
-
}
|
|
769
|
-
//Reset passwords users list
|
|
770
|
-
resetUserPasswordList() {
|
|
771
|
-
this.userService.ResetUsersPassword(this.SelectedUserList).subscribe((result) => {
|
|
772
|
-
this.modalService.dismissAll();
|
|
773
|
-
this.SelectedUserList = [];
|
|
774
|
-
let element = this.pagingElement;
|
|
775
|
-
element.UpdatePaging();
|
|
776
|
-
this.resetUsersCount();
|
|
777
|
-
this.disableButtons();
|
|
778
|
-
}, (error) => {
|
|
779
|
-
});
|
|
780
|
-
}
|
|
781
|
-
ngOnDestroy() {
|
|
782
|
-
this.requestHandlerService.destroyHandler();
|
|
783
|
-
}
|
|
784
|
-
}
|
|
785
|
-
UsersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersComponent, deps: [{ token: i1.AuthService }, { token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i1.EnvironmentService }, { token: i2.PageInfoService }, { token: i3.UserService }, { token: i4.NgbModal }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
786
|
-
UsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UsersComponent, selector: "lib-users", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["UserPagingViewElement"], descendants: true }, { propertyName: "permissionSetDDL", first: true, predicate: ["permissionSetDDL"], descendants: true }, { propertyName: "accountStatusDDL", first: true, predicate: ["accountStatusDDL"], descendants: true }, { propertyName: "lockedStatusDDL", first: true, predicate: ["lockedStatusDDL"], descendants: true }, { propertyName: "departmentsDDL", first: true, predicate: ["departmentsDDL"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<div *ngIf=\"ShowPageContent\" class=\"container-fluid\">\r\n <!-- begin::Header -->\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"UsersForm\">\r\n <!-- (OnChange)=\"searchClientSide($event)\" -->\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"UsersForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <!-- begin::Menu -->\r\n <div *ngIf=\"showGeneralBtns\" ngbDropdown class=\"d-inline-block\" [ngStyle]=\"{'display': ShowPageContent==true?'block':'none'}\">\r\n <button (click)=\"loadLists()\" ngbDropdownToggle href=\"javascript:;\" type=\"button\" class=\"btn btn-sm btn-light-primary me-3\"\r\n id=\"FiltersDropdown\" title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{utilityService.getResourceValue(\"Filter\")}}\r\n </button>\r\n <div *ngIf=\"IsFilterLoaded\" ngbDropdownMenu aria-labelledby=\"FiltersDropdown\"\r\n class=\" filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"UsersForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #permissionSetDDL [options]=\"permissionSetsOptions\" [group]=\"UsersForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #accountStatusDDL [options]=\"accountStatusOptions\" [group]=\"UsersForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #lockedStatusDDL [options]=\"lockedStatusOptions\" [group]=\"UsersForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #departmentsDDL [options]=\"departmentsOptions\" [group]=\"UsersForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"usersFiltersBtn\">\r\n {{utilityService.getResourceValue(\"Reset\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <button *ngIf=\"showGeneralBtns\" href=\"javascript:;\" type=\"button\" (click)=\"exportExcel()\"\r\n class=\"btn btn-sm btn-light-primary me-3 bnsights-btn-export\" title=\"Export\">\r\n <i class=\"fas fa-download me-1\"></i>\r\n {{utilityService.getResourceValue(\"Export\")}}\r\n </button>\r\n <button *ngIf=\"showActivateBtn\" type=\"button\" id=\"btnActivate\" class=\"btn btn-sm btn-light-primary me-3\" href=\"javascript:;\"\r\n (click)=\"showConfirmationModal(1, ConfirmationModal)\">\r\n <i class=\"fa fa-history\"></i> {{utilityService.getResourceValue(\"Activate\")}}\r\n </button>\r\n <button *ngIf=\"showDeactivateBtn\" type=\"button\" id=\"btnDeactivate\" class=\"btn btn-sm btn-light-primary me-3\" href=\"javascript:;\"\r\n (click)=\"showConfirmationModal(2, ConfirmationModal)\">\r\n <i class=\"fa fa-power-off\"></i>{{utilityService.getResourceValue(\"Deactivate\")}}\r\n </button>\r\n <button *ngIf=\"showResetPassBtn\" type=\"button\" id=\"btnResetPass\" class=\"btn btn-sm btn-light-primary me-3\" href=\"javascript:;\"\r\n (click)=\"showConfirmationModal(3, ConfirmationModal)\">\r\n <i class=\"fa fa-cog\"></i>{{utilityService.getResourceValue(\"ResetPassword\")}}\r\n </button>\r\n <button *ngIf=\"showSendEmailBtn\" type=\"button\" id=\"btnResendActivation\" class=\"btn btn-sm btn-light-primary me-3\" href=\"javascript:;\"\r\n (click)=\"showConfirmationModal(4 , ConfirmationModal)\">\r\n <i class=\"fa fa-envelope\"></i> {{utilityService.getResourceValue(\"SendActivationEmail\")}}\r\n </button>\r\n <button *ngIf=\"showGeneralBtns\" type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\" (click)=\"showAddUserModal(addUserModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <!-- end::Header -->\r\n <!-- begin::Body -->\r\n <div class=\"card-body py-3\">\r\n <!-- begin::Table container -->\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 users-table\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"w-50px\">\r\n <span>\r\n <label class=\"form-check form-check-sm form-check-custom form-check-solid\">\r\n <mat-checkbox (change)=\"selectAllUserList($event,clientSidePagingResult)\" [checked]=\"allSelected\">\r\n </mat-checkbox>\r\n <!--<input type=\"checkbox\" class=\"form-check-input\" (change)=\"selectAllUserList($event,UserPagingResult)\" id=\"chk_SelectAll\">-->\r\n <span></span>\r\n </label>\r\n </span>\r\n </th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Email\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Mobile\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Roles\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Status\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</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 user of clientSidePagingResult\">\r\n <td class=\"\">\r\n <span>\r\n <label class=\"form-check form-check-sm form-check-custom form-check-solid\">\r\n <!--<input type=\"checkbox\" class=\"form-check-input\" (change)=\"updateUserList($event,user)\" id=\"User-{{user.id}}\">-->\r\n <span></span>\r\n <mat-checkbox (change)=\"updateUserList($event,user)\" [(ngModel)]=\"user.selected\">\r\n </mat-checkbox>\r\n </label>\r\n </span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px\">\r\n <h6 class=\"symbol-label font-size-h5 font-weight-bold bg-light-primary ml-2 mb-0 me-3\">A</h6>\r\n </div>\r\n <div class=\"d-flex justify-content-start flex-column\">\r\n <a (click)=\"showEditUserModal(user.iD_GUID,EditUserModal)\" href=\"javascript:void(0)\"\r\n class=\"text-dark fw-bolder text-hover-primary fs-6\">{{user.nameStr}}</a>\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{user.username}}</td>\r\n <td>{{user.mobile}}</td>\r\n <td>{{user.permissionset}}</td>\r\n <td>\r\n <span class=\"badge badge-light-success\" *ngIf=\"user.isActive==true\">\r\n {{utilityService.getResourceValue(\"Active\")}}\r\n </span>\r\n <span class=\"badge badge-light-danger\" *ngIf=\"user.isActive==false&& user.activationDate!=null\">\r\n {{utilityService.getResourceValue(\"Deactivated\")}}\r\n </span>\r\n <span class=\"badge badge-light-warning\" *ngIf=\"user.isActive==false&& user.activationDate==null\">\r\n {{utilityService.getResourceValue(\"PendingActivation\")}}\r\n </span>\r\n </td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" class=\"menu-item px-3\" ngbDropdownItem (click)=\"showEditUserModal(user.iD_GUID,EditUserModal)\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"menu-item px-3\" *ngIf=\"user.isActive\" id=\"btnDeactivate\"\r\n (click)=\"showActivateUserModal(user,false,ActivateUserModal)\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"Deactivate\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"menu-item px-3\" id=\"btnactivate\" (click)=\"showActivateUserModal(user,true,ActivateUserModal)\"\r\n *ngIf=\"!user.isActive\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"Activate\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"menu-item px-3\" id=\"btnResetPass\"\r\n (click)=\"showResetPasswordUserModal(user , ResetPasswordUserModal)\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"ResetPassword\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"menu-item px-3\" id=\"btnResetPass\" (click)=\"showsetPasswordUserModal(user, setPasswordUserModal)\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"SetPassword\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"menu-item px-3\" id=\"btnResetPass\" *ngIf=\"!user.isActive&&user.activationDate==null\"\r\n (click)=\"showSendActivationEmailModal(user , SendActivationEmailModal)\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"SendActivationEmail\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"6\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- end::Table -->\r\n </div>\r\n <!-- end::Table container -->\r\n\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <!-- begin paging-->\r\n <BBSF-Paging (Items)=\"setUsersListResult($event)\" *ngIf=\"IsFilterLoaded\" [options]=\"UserPaging\" [group]=\"UsersForm\" #UserPagingViewElement>\r\n </BBSF-Paging>\r\n <!-- End paging-->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- add user-->\r\n<ng-template #addUserModal 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\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\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\">{{utilityService.getResourceValue(\"AddUser\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"AddUserFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddName\" [group]=\"AddUserForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-TextBox [options]=\"AddUsername\" [group]=\"AddUserForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"AddSamAccount\" [group]=\"AddUserForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"AddUserEID\" [group]=\"AddUserForm\"></BBSF-TextBox>\r\n <BBSF-DropdownList [options]=\"AddUserNationality\" [group]=\"AddUserForm\"></BBSF-DropdownList>\r\n <BBSF-Phone [options]=\"AddMobileNumber\" [group]=\"AddUserForm\"></BBSF-Phone>\r\n <BBSF-DropdownList [options]=\"AddUserDepartment\" [group]=\"AddUserForm\"></BBSF-DropdownList>\r\n <BBSF-Toggleslide [options]=\"AddSendActivationEmail\" [group]=\"AddUserForm\"></BBSF-Toggleslide>\r\n <BBSF-DropdownList (OnChange)=\"changePermissionSet($event,true)\" [options]=\"AddUserPermissionSet\" [group]=\"AddUserForm\"></BBSF-DropdownList>\r\n <BBSF-DropdownList [options]=\"AddUserPermissions\" [group]=\"AddUserForm\"></BBSF-DropdownList>\r\n <BBSF-ProfileImageUploader [options]=\"AddProfileImage\" [group]=\"AddUserForm\"></BBSF-ProfileImageUploader>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" #CloseUserModal id=\"CloseUserModal\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}} </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\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Edit user-->\r\n<ng-template #EditUserModal 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\">{{utilityService.getResourceValue(\"EditUser\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditUserFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditName\" [group]=\"EditUserForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-Phone [options]=\"EditMobileNumber\" [group]=\"EditUserForm\"></BBSF-Phone>\r\n <BBSF-TextBox [options]=\"EditUsername\" [group]=\"EditUserForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"EditEmail\" [group]=\"EditUserForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"EditSamAccount\" [group]=\"EditUserForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"EditUserEID\" [group]=\"EditUserForm\"></BBSF-TextBox>\r\n <BBSF-DropdownList [options]=\"EditUserNationality\" [group]=\"EditUserForm\"></BBSF-DropdownList>\r\n <BBSF-DropdownList [options]=\"EditUserDepartment\" [group]=\"EditUserForm\"></BBSF-DropdownList>\r\n <BBSF-DropdownList (OnChange)=\"changePermissionSet($event,false)\" [options]=\"EditUserPermissionSet\" [group]=\"EditUserForm\"></BBSF-DropdownList>\r\n <BBSF-DropdownList [options]=\"EditUserPermissions\" [group]=\"EditUserForm\"></BBSF-DropdownList>\r\n <BBSF-ProfileImageUploader [options]=\"EditProfileImage\" [group]=\"EditUserForm\"></BBSF-ProfileImageUploader>\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" data-dismiss=\"modal\" #CloseEditUserModal id=\"CloseEditUserModal\" aria-label=\"Close\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}}</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\r\n </div>\r\n</ng-template>\r\n<!-- Deactivate/Activate User Modal -->\r\n<ng-template #ActivateUserModal 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\" *ngIf=\"!ShowActivateModelData\" id=\"exampleModalLabel\">\r\n {{utilityService.getResourceValue(\"Deactivate\")}}\r\n </h1>\r\n <h1 class=\"mb-3\" *ngIf=\"ShowActivateModelData\" id=\"exampleModalLabel\">\r\n {{utilityService.getResourceValue(\"Activate\")}}\r\n </h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <!--begin::Icon-->\r\n <!--begin::Svg Icon | path: icons/duotune/general/gen044.svg-->\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <!--end::Svg Icon-->\r\n <!--end::Icon-->\r\n <!--begin::Wrapper-->\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <!--begin::Content-->\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\" *ngIf=\"!ShowActivateModelData\">\r\n {{utilityService.getResourceValue(\"DeactivateConfirmation\")}}\r\n </div>\r\n <div class=\"fs-6 text-gray-700\" *ngIf=\"ShowActivateModelData\">\r\n {{utilityService.getResourceValue(\"ActivateConfirmation\")}}\r\n </div>\r\n </div>\r\n <!--end::Content-->\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\r\n <div id=\"\" class=\"\">\r\n <div class=\"table-responsive\">\r\n <table id=\"tableConfirmation\" class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr>\r\n <th class=\"min-w-150\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150\">{{utilityService.getResourceValue(\"Email\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr class=\"trItem\">\r\n <td>{{Name}}</td>\r\n <td>{{Email}}</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 type=\"button\" #CloseActivateUserModal id=\"CloseActivateUserModal\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\" (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}} </button>\r\n <button type=\"button\" *ngIf=\"!ShowActivateModelData\" (click)=\"deactivate()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"ShowActivateModelData\" (click)=\"activate()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n</ng-template>\r\n<!-- ResetPassword User Modal -->\r\n<ng-template #ResetPasswordUserModal 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\">{{utilityService.getResourceValue(\"ResetPassword\")}}</h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <!--begin::Icon-->\r\n <!--begin::Svg Icon | path: icons/duotune/general/gen044.svg-->\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <!--end::Svg Icon-->\r\n <!--end::Icon-->\r\n <!--begin::Wrapper-->\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <!--begin::Content-->\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"ResetPasswordConfirmation\")}}\r\n </div>\r\n </div>\r\n <!--end::Content-->\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\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-200\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-200\">{{utilityService.getResourceValue(\"Email\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr class=\"trItem\">\r\n <td class=\"text-dark\">{{Name}}</td>\r\n <td>{{Email}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button id=\"CloseResetPasswordUserModal\" #CloseResetPasswordUserModal type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\" (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}}</button>\r\n\r\n <button type=\"button\" (click)=\"resetPassword()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- setPassword User Modal -->\r\n<ng-template #setPasswordUserModal 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\">{{utilityService.getResourceValue(\"SetPassword\")}}</h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <!--begin::Icon-->\r\n <!--begin::Svg Icon | path: icons/duotune/general/gen044.svg-->\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <!--end::Svg Icon-->\r\n <!--end::Icon-->\r\n <!--begin::Wrapper-->\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <!--begin::Content-->\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"SetPasswordConfirmation\")}}\r\n </div>\r\n </div>\r\n <!--end::Content-->\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\r\n <!-- begin::Table -->\r\n <BBSF-Form [options]=\"SetUserPasswordFormOptions\">\r\n <div class=\"table-responsive\">\r\n <table id=\"tableConfirmation\" class=\"table 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-50\"> {{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-50\"> {{utilityService.getResourceValue(\"Email\")}}</th>\r\n <th class=\"min-w-150\"> {{utilityService.getResourceValue(\"Password\")}}</th>\r\n <th class=\"min-w-150\"> {{utilityService.getResourceValue(\"ConfirmPassword\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr class=\"trItem\">\r\n <td class=\"align-middle\">{{Name}}</td>\r\n <td class=\"align-middle\">{{Email}}</td>\r\n <td>\r\n <BBSF-TextBox [options]=\"Password\" [group]=\"SetUserPasswordForm\"></BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"PasswordConfirmation\" [group]=\"SetUserPasswordForm\"></BBSF-TextBox>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button id=\"ClosesetPasswordUserModal\" #ClosesetPasswordUserModal type=\"button\" aria-label=\"Close\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}}</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\r\n\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Send Activation Email Modal -->\r\n<ng-template #SendActivationEmailModal 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\">{{utilityService.getResourceValue(\"SendActivationEmail\")}}</h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <!--begin::Icon-->\r\n <!--begin::Svg Icon | path: icons/duotune/general/gen044.svg-->\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <!--end::Svg Icon-->\r\n <!--end::Icon-->\r\n <!--begin::Wrapper-->\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <!--begin::Content-->\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"ActivateConfirmation\")}}\r\n </div>\r\n </div>\r\n <!--end::Content-->\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\r\n <div class=\"note note-warning text-center\">\r\n </div>\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table id=\"tableConfirmation\" 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-150\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150\">{{utilityService.getResourceValue(\"Email\")}}</th>\r\n <th class=\"min-w-50\" *ngIf=\"SelectedUserList.length>1\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let user of SelectedUserList\" class=\"trItem\">\r\n <td class=\"text-dark\">{{user.nameStr}}</td>\r\n\r\n <td>{{user.username}}</td>\r\n <td *ngIf=\"SelectedUserList.length>1\">\r\n <button type=\"button\" (click)=\"deleteUserFromList(user)\" class=\"btn btn-light-danger btn-icon btn-sm\">\r\n <i class=\"fas fa-trash\"></i>\r\n </button>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseActivationEmailModal id=\"CloseActivationEmailModal\" type=\"button\" aria-label=\"Close\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}}</button>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\"\r\n (click)=\"sendActivationEmailForUser()\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- confirmation Message Modal -->\r\n<ng-template #ConfirmationModal 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\">{{utilityService.getResourceValue(\"ConfirmationMessage\")}}</h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <!--begin::Icon-->\r\n <!--begin::Svg Icon | path: icons/duotune/general/gen044.svg-->\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <!--end::Svg Icon-->\r\n <!--end::Icon-->\r\n <!--begin::Wrapper-->\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <!--begin::Content-->\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{ConfirmationMessage}}\r\n </div>\r\n </div>\r\n <!--end::Content-->\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table id=\"tableConfirmation\" 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-150\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150\">{{utilityService.getResourceValue(\"Email\")}}</th>\r\n <th class=\"min-w-50\" *ngIf=\"SelectedUserList.length>1\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let user of SelectedUserList\" class=\"trItem\">\r\n <td class=\"text-dark\">{{user.nameStr}}</td>\r\n\r\n <td>{{user.username}}</td>\r\n <td *ngIf=\"SelectedUserList.length>1\">\r\n <button type=\"button\" (click)=\"deleteUserFromList(user)\" class=\"btn btn-light-danger btn-icon\">\r\n <i class=\"fas fa-trash\"></i>\r\n </button>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseConfirmationModal id=\"CloseConfirmationModal\" class=\"btn btn-light me-3 btn-sm\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"ConfirmationModalType==1\" (click)=\"activateUserList()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"ConfirmationModalType==2\" (click)=\"deactivateUserList()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"ConfirmationModalType==3\" (click)=\"resetUserPasswordList()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"ConfirmationModalType==4\" (click)=\"sendActivationEmailForUser()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n</ng-template>", dependencies: [{ kind: "component", type: i5.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i8.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i8.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i8.PhoneComponent, selector: "BBSF-Phone", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i8.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i8.ProfileImageUploaderComponent, selector: "BBSF-ProfileImageUploader", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i8.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { kind: "component", type: i8.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: i12.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] });
|
|
787
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersComponent, decorators: [{
|
|
788
|
-
type: Component,
|
|
789
|
-
args: [{ selector: 'lib-users', template: "<block-ui></block-ui>\r\n<div *ngIf=\"ShowPageContent\" class=\"container-fluid\">\r\n <!-- begin::Header -->\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"UsersForm\">\r\n <!-- (OnChange)=\"searchClientSide($event)\" -->\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"UsersForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <!-- begin::Menu -->\r\n <div *ngIf=\"showGeneralBtns\" ngbDropdown class=\"d-inline-block\" [ngStyle]=\"{'display': ShowPageContent==true?'block':'none'}\">\r\n <button (click)=\"loadLists()\" ngbDropdownToggle href=\"javascript:;\" type=\"button\" class=\"btn btn-sm btn-light-primary me-3\"\r\n id=\"FiltersDropdown\" title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{utilityService.getResourceValue(\"Filter\")}}\r\n </button>\r\n <div *ngIf=\"IsFilterLoaded\" ngbDropdownMenu aria-labelledby=\"FiltersDropdown\"\r\n class=\" filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"UsersForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #permissionSetDDL [options]=\"permissionSetsOptions\" [group]=\"UsersForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #accountStatusDDL [options]=\"accountStatusOptions\" [group]=\"UsersForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #lockedStatusDDL [options]=\"lockedStatusOptions\" [group]=\"UsersForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #departmentsDDL [options]=\"departmentsOptions\" [group]=\"UsersForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"usersFiltersBtn\">\r\n {{utilityService.getResourceValue(\"Reset\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <button *ngIf=\"showGeneralBtns\" href=\"javascript:;\" type=\"button\" (click)=\"exportExcel()\"\r\n class=\"btn btn-sm btn-light-primary me-3 bnsights-btn-export\" title=\"Export\">\r\n <i class=\"fas fa-download me-1\"></i>\r\n {{utilityService.getResourceValue(\"Export\")}}\r\n </button>\r\n <button *ngIf=\"showActivateBtn\" type=\"button\" id=\"btnActivate\" class=\"btn btn-sm btn-light-primary me-3\" href=\"javascript:;\"\r\n (click)=\"showConfirmationModal(1, ConfirmationModal)\">\r\n <i class=\"fa fa-history\"></i> {{utilityService.getResourceValue(\"Activate\")}}\r\n </button>\r\n <button *ngIf=\"showDeactivateBtn\" type=\"button\" id=\"btnDeactivate\" class=\"btn btn-sm btn-light-primary me-3\" href=\"javascript:;\"\r\n (click)=\"showConfirmationModal(2, ConfirmationModal)\">\r\n <i class=\"fa fa-power-off\"></i>{{utilityService.getResourceValue(\"Deactivate\")}}\r\n </button>\r\n <button *ngIf=\"showResetPassBtn\" type=\"button\" id=\"btnResetPass\" class=\"btn btn-sm btn-light-primary me-3\" href=\"javascript:;\"\r\n (click)=\"showConfirmationModal(3, ConfirmationModal)\">\r\n <i class=\"fa fa-cog\"></i>{{utilityService.getResourceValue(\"ResetPassword\")}}\r\n </button>\r\n <button *ngIf=\"showSendEmailBtn\" type=\"button\" id=\"btnResendActivation\" class=\"btn btn-sm btn-light-primary me-3\" href=\"javascript:;\"\r\n (click)=\"showConfirmationModal(4 , ConfirmationModal)\">\r\n <i class=\"fa fa-envelope\"></i> {{utilityService.getResourceValue(\"SendActivationEmail\")}}\r\n </button>\r\n <button *ngIf=\"showGeneralBtns\" type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\" (click)=\"showAddUserModal(addUserModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <!-- end::Header -->\r\n <!-- begin::Body -->\r\n <div class=\"card-body py-3\">\r\n <!-- begin::Table container -->\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 users-table\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"w-50px\">\r\n <span>\r\n <label class=\"form-check form-check-sm form-check-custom form-check-solid\">\r\n <mat-checkbox (change)=\"selectAllUserList($event,clientSidePagingResult)\" [checked]=\"allSelected\">\r\n </mat-checkbox>\r\n <!--<input type=\"checkbox\" class=\"form-check-input\" (change)=\"selectAllUserList($event,UserPagingResult)\" id=\"chk_SelectAll\">-->\r\n <span></span>\r\n </label>\r\n </span>\r\n </th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Email\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Mobile\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Roles\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Status\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</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 user of clientSidePagingResult\">\r\n <td class=\"\">\r\n <span>\r\n <label class=\"form-check form-check-sm form-check-custom form-check-solid\">\r\n <!--<input type=\"checkbox\" class=\"form-check-input\" (change)=\"updateUserList($event,user)\" id=\"User-{{user.id}}\">-->\r\n <span></span>\r\n <mat-checkbox (change)=\"updateUserList($event,user)\" [(ngModel)]=\"user.selected\">\r\n </mat-checkbox>\r\n </label>\r\n </span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px\">\r\n <h6 class=\"symbol-label font-size-h5 font-weight-bold bg-light-primary ml-2 mb-0 me-3\">A</h6>\r\n </div>\r\n <div class=\"d-flex justify-content-start flex-column\">\r\n <a (click)=\"showEditUserModal(user.iD_GUID,EditUserModal)\" href=\"javascript:void(0)\"\r\n class=\"text-dark fw-bolder text-hover-primary fs-6\">{{user.nameStr}}</a>\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{user.username}}</td>\r\n <td>{{user.mobile}}</td>\r\n <td>{{user.permissionset}}</td>\r\n <td>\r\n <span class=\"badge badge-light-success\" *ngIf=\"user.isActive==true\">\r\n {{utilityService.getResourceValue(\"Active\")}}\r\n </span>\r\n <span class=\"badge badge-light-danger\" *ngIf=\"user.isActive==false&& user.activationDate!=null\">\r\n {{utilityService.getResourceValue(\"Deactivated\")}}\r\n </span>\r\n <span class=\"badge badge-light-warning\" *ngIf=\"user.isActive==false&& user.activationDate==null\">\r\n {{utilityService.getResourceValue(\"PendingActivation\")}}\r\n </span>\r\n </td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" class=\"menu-item px-3\" ngbDropdownItem (click)=\"showEditUserModal(user.iD_GUID,EditUserModal)\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"menu-item px-3\" *ngIf=\"user.isActive\" id=\"btnDeactivate\"\r\n (click)=\"showActivateUserModal(user,false,ActivateUserModal)\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"Deactivate\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"menu-item px-3\" id=\"btnactivate\" (click)=\"showActivateUserModal(user,true,ActivateUserModal)\"\r\n *ngIf=\"!user.isActive\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"Activate\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"menu-item px-3\" id=\"btnResetPass\"\r\n (click)=\"showResetPasswordUserModal(user , ResetPasswordUserModal)\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"ResetPassword\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"menu-item px-3\" id=\"btnResetPass\" (click)=\"showsetPasswordUserModal(user, setPasswordUserModal)\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"SetPassword\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"menu-item px-3\" id=\"btnResetPass\" *ngIf=\"!user.isActive&&user.activationDate==null\"\r\n (click)=\"showSendActivationEmailModal(user , SendActivationEmailModal)\">\r\n <span class=\"menu-link px-3\">{{utilityService.getResourceValue(\"SendActivationEmail\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"6\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- end::Table -->\r\n </div>\r\n <!-- end::Table container -->\r\n\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <!-- begin paging-->\r\n <BBSF-Paging (Items)=\"setUsersListResult($event)\" *ngIf=\"IsFilterLoaded\" [options]=\"UserPaging\" [group]=\"UsersForm\" #UserPagingViewElement>\r\n </BBSF-Paging>\r\n <!-- End paging-->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- add user-->\r\n<ng-template #addUserModal 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\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\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\">{{utilityService.getResourceValue(\"AddUser\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"AddUserFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddName\" [group]=\"AddUserForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-TextBox [options]=\"AddUsername\" [group]=\"AddUserForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"AddSamAccount\" [group]=\"AddUserForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"AddUserEID\" [group]=\"AddUserForm\"></BBSF-TextBox>\r\n <BBSF-DropdownList [options]=\"AddUserNationality\" [group]=\"AddUserForm\"></BBSF-DropdownList>\r\n <BBSF-Phone [options]=\"AddMobileNumber\" [group]=\"AddUserForm\"></BBSF-Phone>\r\n <BBSF-DropdownList [options]=\"AddUserDepartment\" [group]=\"AddUserForm\"></BBSF-DropdownList>\r\n <BBSF-Toggleslide [options]=\"AddSendActivationEmail\" [group]=\"AddUserForm\"></BBSF-Toggleslide>\r\n <BBSF-DropdownList (OnChange)=\"changePermissionSet($event,true)\" [options]=\"AddUserPermissionSet\" [group]=\"AddUserForm\"></BBSF-DropdownList>\r\n <BBSF-DropdownList [options]=\"AddUserPermissions\" [group]=\"AddUserForm\"></BBSF-DropdownList>\r\n <BBSF-ProfileImageUploader [options]=\"AddProfileImage\" [group]=\"AddUserForm\"></BBSF-ProfileImageUploader>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" #CloseUserModal id=\"CloseUserModal\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}} </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\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Edit user-->\r\n<ng-template #EditUserModal 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\">{{utilityService.getResourceValue(\"EditUser\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditUserFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditName\" [group]=\"EditUserForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-Phone [options]=\"EditMobileNumber\" [group]=\"EditUserForm\"></BBSF-Phone>\r\n <BBSF-TextBox [options]=\"EditUsername\" [group]=\"EditUserForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"EditEmail\" [group]=\"EditUserForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"EditSamAccount\" [group]=\"EditUserForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"EditUserEID\" [group]=\"EditUserForm\"></BBSF-TextBox>\r\n <BBSF-DropdownList [options]=\"EditUserNationality\" [group]=\"EditUserForm\"></BBSF-DropdownList>\r\n <BBSF-DropdownList [options]=\"EditUserDepartment\" [group]=\"EditUserForm\"></BBSF-DropdownList>\r\n <BBSF-DropdownList (OnChange)=\"changePermissionSet($event,false)\" [options]=\"EditUserPermissionSet\" [group]=\"EditUserForm\"></BBSF-DropdownList>\r\n <BBSF-DropdownList [options]=\"EditUserPermissions\" [group]=\"EditUserForm\"></BBSF-DropdownList>\r\n <BBSF-ProfileImageUploader [options]=\"EditProfileImage\" [group]=\"EditUserForm\"></BBSF-ProfileImageUploader>\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" data-dismiss=\"modal\" #CloseEditUserModal id=\"CloseEditUserModal\" aria-label=\"Close\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}}</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\r\n </div>\r\n</ng-template>\r\n<!-- Deactivate/Activate User Modal -->\r\n<ng-template #ActivateUserModal 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\" *ngIf=\"!ShowActivateModelData\" id=\"exampleModalLabel\">\r\n {{utilityService.getResourceValue(\"Deactivate\")}}\r\n </h1>\r\n <h1 class=\"mb-3\" *ngIf=\"ShowActivateModelData\" id=\"exampleModalLabel\">\r\n {{utilityService.getResourceValue(\"Activate\")}}\r\n </h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <!--begin::Icon-->\r\n <!--begin::Svg Icon | path: icons/duotune/general/gen044.svg-->\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <!--end::Svg Icon-->\r\n <!--end::Icon-->\r\n <!--begin::Wrapper-->\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <!--begin::Content-->\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\" *ngIf=\"!ShowActivateModelData\">\r\n {{utilityService.getResourceValue(\"DeactivateConfirmation\")}}\r\n </div>\r\n <div class=\"fs-6 text-gray-700\" *ngIf=\"ShowActivateModelData\">\r\n {{utilityService.getResourceValue(\"ActivateConfirmation\")}}\r\n </div>\r\n </div>\r\n <!--end::Content-->\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\r\n <div id=\"\" class=\"\">\r\n <div class=\"table-responsive\">\r\n <table id=\"tableConfirmation\" class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr>\r\n <th class=\"min-w-150\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150\">{{utilityService.getResourceValue(\"Email\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr class=\"trItem\">\r\n <td>{{Name}}</td>\r\n <td>{{Email}}</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 type=\"button\" #CloseActivateUserModal id=\"CloseActivateUserModal\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\" (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}} </button>\r\n <button type=\"button\" *ngIf=\"!ShowActivateModelData\" (click)=\"deactivate()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"ShowActivateModelData\" (click)=\"activate()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n</ng-template>\r\n<!-- ResetPassword User Modal -->\r\n<ng-template #ResetPasswordUserModal 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\">{{utilityService.getResourceValue(\"ResetPassword\")}}</h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <!--begin::Icon-->\r\n <!--begin::Svg Icon | path: icons/duotune/general/gen044.svg-->\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <!--end::Svg Icon-->\r\n <!--end::Icon-->\r\n <!--begin::Wrapper-->\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <!--begin::Content-->\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"ResetPasswordConfirmation\")}}\r\n </div>\r\n </div>\r\n <!--end::Content-->\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\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-200\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-200\">{{utilityService.getResourceValue(\"Email\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr class=\"trItem\">\r\n <td class=\"text-dark\">{{Name}}</td>\r\n <td>{{Email}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button id=\"CloseResetPasswordUserModal\" #CloseResetPasswordUserModal type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\" (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}}</button>\r\n\r\n <button type=\"button\" (click)=\"resetPassword()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- setPassword User Modal -->\r\n<ng-template #setPasswordUserModal 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\">{{utilityService.getResourceValue(\"SetPassword\")}}</h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <!--begin::Icon-->\r\n <!--begin::Svg Icon | path: icons/duotune/general/gen044.svg-->\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <!--end::Svg Icon-->\r\n <!--end::Icon-->\r\n <!--begin::Wrapper-->\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <!--begin::Content-->\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"SetPasswordConfirmation\")}}\r\n </div>\r\n </div>\r\n <!--end::Content-->\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\r\n <!-- begin::Table -->\r\n <BBSF-Form [options]=\"SetUserPasswordFormOptions\">\r\n <div class=\"table-responsive\">\r\n <table id=\"tableConfirmation\" class=\"table 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-50\"> {{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-50\"> {{utilityService.getResourceValue(\"Email\")}}</th>\r\n <th class=\"min-w-150\"> {{utilityService.getResourceValue(\"Password\")}}</th>\r\n <th class=\"min-w-150\"> {{utilityService.getResourceValue(\"ConfirmPassword\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr class=\"trItem\">\r\n <td class=\"align-middle\">{{Name}}</td>\r\n <td class=\"align-middle\">{{Email}}</td>\r\n <td>\r\n <BBSF-TextBox [options]=\"Password\" [group]=\"SetUserPasswordForm\"></BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"PasswordConfirmation\" [group]=\"SetUserPasswordForm\"></BBSF-TextBox>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button id=\"ClosesetPasswordUserModal\" #ClosesetPasswordUserModal type=\"button\" aria-label=\"Close\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}}</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\r\n\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Send Activation Email Modal -->\r\n<ng-template #SendActivationEmailModal 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\">{{utilityService.getResourceValue(\"SendActivationEmail\")}}</h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <!--begin::Icon-->\r\n <!--begin::Svg Icon | path: icons/duotune/general/gen044.svg-->\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <!--end::Svg Icon-->\r\n <!--end::Icon-->\r\n <!--begin::Wrapper-->\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <!--begin::Content-->\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"ActivateConfirmation\")}}\r\n </div>\r\n </div>\r\n <!--end::Content-->\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\r\n <div class=\"note note-warning text-center\">\r\n </div>\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table id=\"tableConfirmation\" 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-150\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150\">{{utilityService.getResourceValue(\"Email\")}}</th>\r\n <th class=\"min-w-50\" *ngIf=\"SelectedUserList.length>1\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let user of SelectedUserList\" class=\"trItem\">\r\n <td class=\"text-dark\">{{user.nameStr}}</td>\r\n\r\n <td>{{user.username}}</td>\r\n <td *ngIf=\"SelectedUserList.length>1\">\r\n <button type=\"button\" (click)=\"deleteUserFromList(user)\" class=\"btn btn-light-danger btn-icon btn-sm\">\r\n <i class=\"fas fa-trash\"></i>\r\n </button>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseActivationEmailModal id=\"CloseActivationEmailModal\" type=\"button\" aria-label=\"Close\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">{{utilityService.getResourceValue(\"CancelLabel\")}}</button>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\"\r\n (click)=\"sendActivationEmailForUser()\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- confirmation Message Modal -->\r\n<ng-template #ConfirmationModal 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\">{{utilityService.getResourceValue(\"ConfirmationMessage\")}}</h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <!--begin::Icon-->\r\n <!--begin::Svg Icon | path: icons/duotune/general/gen044.svg-->\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <!--end::Svg Icon-->\r\n <!--end::Icon-->\r\n <!--begin::Wrapper-->\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <!--begin::Content-->\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{ConfirmationMessage}}\r\n </div>\r\n </div>\r\n <!--end::Content-->\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table id=\"tableConfirmation\" 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-150\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150\">{{utilityService.getResourceValue(\"Email\")}}</th>\r\n <th class=\"min-w-50\" *ngIf=\"SelectedUserList.length>1\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let user of SelectedUserList\" class=\"trItem\">\r\n <td class=\"text-dark\">{{user.nameStr}}</td>\r\n\r\n <td>{{user.username}}</td>\r\n <td *ngIf=\"SelectedUserList.length>1\">\r\n <button type=\"button\" (click)=\"deleteUserFromList(user)\" class=\"btn btn-light-danger btn-icon\">\r\n <i class=\"fas fa-trash\"></i>\r\n </button>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseConfirmationModal id=\"CloseConfirmationModal\" class=\"btn btn-light me-3 btn-sm\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"ConfirmationModalType==1\" (click)=\"activateUserList()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"ConfirmationModalType==2\" (click)=\"deactivateUserList()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"ConfirmationModalType==3\" (click)=\"resetUserPasswordList()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"ConfirmationModalType==4\" (click)=\"sendActivationEmailForUser()\" class=\"btn btn-primary btn-sm\">\r\n {{utilityService.getResourceValue(\"SaveLabel\")}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n</ng-template>" }]
|
|
790
|
-
}], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i1.UtilityService }, { type: i1.BBSFTranslateService }, { type: i1.EnvironmentService }, { type: i2.PageInfoService }, { type: i3.UserService }, { type: i4.NgbModal }, { type: i1.RequestHandlerService }]; }, propDecorators: { pagingElement: [{
|
|
791
|
-
type: ViewChild,
|
|
792
|
-
args: ['UserPagingViewElement', { static: false }]
|
|
793
|
-
}], permissionSetDDL: [{
|
|
794
|
-
type: ViewChild,
|
|
795
|
-
args: ['permissionSetDDL', { static: false }]
|
|
796
|
-
}], accountStatusDDL: [{
|
|
797
|
-
type: ViewChild,
|
|
798
|
-
args: ['accountStatusDDL', { static: false }]
|
|
799
|
-
}], lockedStatusDDL: [{
|
|
800
|
-
type: ViewChild,
|
|
801
|
-
args: ['lockedStatusDDL', { static: false }]
|
|
802
|
-
}], departmentsDDL: [{
|
|
803
|
-
type: ViewChild,
|
|
804
|
-
args: ['departmentsDDL', { static: false }]
|
|
805
|
-
}] } });
|
|
806
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy91c2Vycy91c2Vycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3VzZXJzL3VzZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUF5Qix5QkFBeUIsRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2UixPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUcxRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUtsRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBTWhELE1BQU0sT0FBTyxjQUFjO0lBdUd6QixZQUFvQixXQUF3QixFQUFTLGNBQThCLEVBQVUsb0JBQTBDLEVB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fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3VudHJ5LCBDdXN0b21WYWxpZGF0aW9uLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQaG9uZU9wdGlvbnMsIFRleHRCb3hPcHRpb25zLCBUb2dnbGVTbGlkZU9wdGlvbnMsIEVuZ2xpc2hBcmFiaWNEVE8sIEZvcm1PcHRpb25zLCBQYWdpbmdBY3Rpb25Nb2RlLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIFByb2ZpbGVJbWFnZVVwbG9hZE9wdGlvbnMsIEltYWdlVHlwZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBGaWx0ZXJJdGVtLCBQYWdpbmdPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBBZGRVc2VyTW9kZWwgfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL1VzZXJNb2RlbHMvQWRkVXNlck1vZGVsJztcclxuaW1wb3J0IHsgRHJvcGRvd25zUmVzcG9uc2VNb2RlbCB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvVXNlck1vZGVscy9Ecm9wZG93bnNSZXNwb25zZU1vZGVsJztcclxuaW1wb3J0IHsgRWRpdFVzZXJNb2RlbCB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvVXNlck1vZGVscy9FZGl0VXNlck1vZGVsJztcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvU2VydmljZXMvdXNlclNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi11c2VycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXJzLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBTaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBQcm9kdWN0aW9uTW9kZTogYm9vbGVhbjtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vVXNlcnMvXCJcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBjb21wb25lbnRzXHJcbiAgVXNlcnNGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgc2VhcmNoVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgcGVybWlzc2lvblNldHNPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWNjb3VudFN0YXR1c09wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBsb2NrZWRTdGF0dXNPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZGVwYXJ0bWVudHNPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIHBlcm1pc3Npb25TZXRzRmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIGxvY2tlZFN0YXR1c0ZpbHRlcjogRmlsdGVySXRlbTtcclxuICBhY2NvdW50U3RhdHVzRmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIGRlcGFydG1lbnRzRmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgSXNGaWx0ZXJEYXRhTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgVXNlclBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBjbGllbnRTaWRlUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIFVzZXJQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgQFZpZXdDaGlsZCgnVXNlclBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG5cclxuICAvL1JlcXVpcmVkIGxpc3RzXHJcbiAgU2VsZWN0ZWRVc2VyTGlzdCA9IFtdO1xyXG4gIHBlcm1pc3Npb25TZXRMaXN0ID0gW107XHJcbiAgcGVybWlzc2lvbnNMaXN0ID0gW107XHJcbiAgYWNjb3VudFN0YXR1c0xpc3QgPSBbXTtcclxuICBsb2NrZWRTdGF0dXNMaXN0ID0gW107XHJcbiAgZGVwYXJ0bWVudHNMaXN0ID0gW107XHJcbiAgY291bnRyaWVzTGlzdCA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKCdwZXJtaXNzaW9uU2V0RERMJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBlcm1pc3Npb25TZXREREw6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYWNjb3VudFN0YXR1c0RETCcsIHsgc3RhdGljOiBmYWxzZSB9KSBhY2NvdW50U3RhdHVzRERMOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2xvY2tlZFN0YXR1c0RETCcsIHsgc3RhdGljOiBmYWxzZSB9KSBsb2NrZWRTdGF0dXNEREw6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZGVwYXJ0bWVudHNEREwnLCB7IHN0YXRpYzogZmFsc2UgfSkgZGVwYXJ0bWVudHNEREw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkVXNlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBBZGRVc2VyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgQWRkTmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnNcclxuICBBZGRNb2JpbGVOdW1iZXI6IFBob25lT3B0aW9ucztcclxuICBBZGRVc2VybmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgQWRkU2FtQWNjb3VudDogVGV4dEJveE9wdGlvbnM7XHJcbiAgQWRkVXNlckRlcGFydG1lbnQ6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRTZW5kQWN0aXZhdGlvbkVtYWlsOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgQWRkVXNlclBlcm1pc3Npb25TZXQ6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRVc2VyUGVybWlzc2lvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRQcm9maWxlSW1hZ2U6IFByb2ZpbGVJbWFnZVVwbG9hZE9wdGlvbnM7XHJcbiAgQWRkVXNlckVJRDogVGV4dEJveE9wdGlvbnM7XHJcbiAgQWRkVXNlck5hdGlvbmFsaXR5OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdFVzZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdFVzZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBFZGl0TmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnNcclxuICBFZGl0TW9iaWxlTnVtYmVyOiBQaG9uZU9wdGlvbnM7XHJcbiAgRWRpdFVzZXJuYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBFZGl0RW1haWw6IFRleHRCb3hPcHRpb25zO1xyXG4gIEVkaXRTYW1BY2NvdW50OiBUZXh0Qm94T3B0aW9ucztcclxuICBFZGl0VXNlckRlcGFydG1lbnQ6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0VXNlclBlcm1pc3Npb25TZXQ6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0VXNlclBlcm1pc3Npb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdFByb2ZpbGVJbWFnZTogUHJvZmlsZUltYWdlVXBsb2FkT3B0aW9ucztcclxuICBFZGl0VXNlckVJRDogVGV4dEJveE9wdGlvbnM7XHJcbiAgRWRpdFVzZXJOYXRpb25hbGl0eTogRHJvcGRvd25PcHRpb25zO1xyXG4gIFVzZXJJZDogc3RyaW5nO1xyXG5cclxuXHJcbiAgLy9EZWFjdGl2YXRlL0FjdGl2YXRlIFVzZXIgTW9kZWwgQ29udHJvbHNcclxuICBTaG93QWN0aXZhdGVNb2RlbERhdGE6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIEFjdGl2YXRvckRlYWN0aXZhdGVVc2VyTGlzdDogYW55W10gPSBbXVxyXG4gIE5hbWU6IHN0cmluZ1xyXG4gIEVtYWlsOiBzdHJpbmdcclxuXHJcbiAgLy9SZXNldCBQYXNzd29yZCBVc2VyIE1vZGVsIENvbnRyb2xzXHJcbiAgUmVzZXRQYXNzd29yZFVzZXJMaXN0OiBhbnlbXSA9IFtdXHJcblxyXG4gIC8vc2V0IFBhc3N3b3JkIFVzZXIgTW9kZWwgQ29udHJvbHNcclxuICBTZXRVc2VyUGFzc3dvcmRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgU2V0VXNlclBhc3N3b3JkRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgUGFzc3dvcmQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIFBhc3N3b3JkQ29uZmlybWF0aW9uOiBUZXh0Qm94T3B0aW9ucztcclxuICBjdXN0b21WYWxpZGF0aW9uOiBDdXN0b21WYWxpZGF0aW9uID0gbmV3IEN1c3RvbVZhbGlkYXRpb24oKTtcclxuICBzZXRQYXNzd29yZFVzZXJMaXN0OiBhbnlbXSA9IFtdXHJcblxyXG4gIC8vQ29uZmlybWF0aW9uICBNb2RlbCBDb250cm9sc1xyXG4gIENvbmZpcm1hdGlvbk1vZGFsVHlwZTogbnVtYmVyID0gMDtcclxuICBDb25maXJtYXRpb25NZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvL1VzZXJzIHNlbGVjdGlvblxyXG4gIGFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQ6IG51bWJlciA9IDA7XHJcbiAgZGVBY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkOiBudW1iZXIgPSAwO1xyXG4gIHNob3dBY3RpdmF0ZUJ0bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dEZWFjdGl2YXRlQnRuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1NldFBhc3NCdG46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93UmVzZXRQYXNzQnRuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1NlbmRFbWFpbEJ0bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dHZW5lcmFsQnRuczogYm9vbGVhbiA9IHRydWU7XHJcbiAgYWxsU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVXNlcnNcIilcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuUHJvZHVjdGlvbk1vZGUgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRQcm9kdWN0aW9uTW9kZSgpO1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuXHJcbiAgfVxyXG5cclxuICAvL1BhZ2luZyBmdW5jdGlvbnNcclxuICBzZXRVc2Vyc0xpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLlVzZXJQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnJlc2V0VXNlcnNDb3VudCgpO1xyXG4gICAgdGhpcy5kaXNhYmxlQnV0dG9ucygpO1xyXG4gICAgdGhpcy5hbGxTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuICB9XHJcblxyXG4gIHNlYXJjaENsaWVudFNpZGUoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0LmZpbHRlcihcclxuICAgICAgICBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgcmV0dXJuIChpdGVtLm5hbWUuZW5nbGlzaC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGl0ZW0ubmFtZS5hcmFiaWMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgICAgICB8fCBpdGVtLnVzZXJuYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICAgIH0pXHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuVXNlclBhZ2luZ1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vSW5pdGlhbGl6ZSBmaWx0ZXJzIGFuZCBwYWdpbmdcclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuXHJcbiAgICAvLyBQZXJtaXNzaW9uIFNldHMgaW5pdFxyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c09wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRzT3B0aW9ucy5OYW1lID0gXCJwZXJtaXNzaW9uc2V0c1wiXHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRzT3B0aW9ucy5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldHNcIlxyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c09wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuXHJcbiAgICAvLyBBY2NvdW50IFN0YXR1cyBpbml0XHJcbiAgICB0aGlzLmFjY291bnRTdGF0dXNPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzT3B0aW9ucy5OYW1lID0gXCJhY2NvdW50c3RhdHVzXCJcclxuICAgIHRoaXMuYWNjb3VudFN0YXR1c09wdGlvbnMuTGFiZWxLZXkgPSBcIkFjY291bnRTdGF0dXNcIlxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG5cclxuICAgIC8vIExvY2tlZCBTdGF0dXMgaW5pdFxyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNPcHRpb25zLk5hbWUgPSBcImxvY2tlZHN0YXR1c1wiO1xyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNPcHRpb25zLkxhYmVsS2V5ID0gXCJMb2NrZWRTdGF0dXNcIjtcclxuICAgIHRoaXMubG9ja2VkU3RhdHVzT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG5cclxuICAgIC8vIGRlcGFydG1lbnRzIGluaXRcclxuICAgIHRoaXMuZGVwYXJ0bWVudHNPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgdGhpcy5kZXBhcnRtZW50c09wdGlvbnMuTmFtZSA9IFwiZGVwYXJ0bWVudHNcIlxyXG4gICAgdGhpcy5kZXBhcnRtZW50c09wdGlvbnMuTGFiZWxLZXkgPSBcIkRlcGFydG1lbnRzXCJcclxuICAgIHRoaXMuZGVwYXJ0bWVudHNPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5kZXBhcnRtZW50c09wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgIC8vIFRleHRCb3ggaW5pdFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LkV4dHJhQ2xhc3NlcyA9IFwiVXNlcnNcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lT3JFbWFpbFwiKVxyXG5cclxuXHJcbiAgICAvL0ZpbHRlcnNcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJuYW1lRmlsdGVyXCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c0ZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRzRmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwicGVybWlzc2lvbnNldHNcIlxyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c0ZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJQZXJtaXNzaW9uU2V0SWRzXCJcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuRHJvcGRvd25MaXN0XHJcblxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuYWNjb3VudFN0YXR1c0ZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcImFjY291bnRzdGF0dXNcIlxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcImFjY291bnRTdGF0dXNJRHNcIlxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLmFjY291bnRTdGF0dXNGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuRHJvcGRvd25MaXN0XHJcblxyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJsb2NrZWRzdGF0dXNcIlxyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwibG9ja2VkU3RhdHVzSWRzXCJcclxuICAgIHRoaXMubG9ja2VkU3RhdHVzRmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLmxvY2tlZFN0YXR1c0ZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3RcclxuXHJcbiAgICB0aGlzLmRlcGFydG1lbnRzRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuZGVwYXJ0bWVudHNGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJkZXBhcnRtZW50c1wiXHJcbiAgICB0aGlzLmRlcGFydG1lbnRzRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcImRlcGFydG1lbnRJZHNcIlxyXG4gICAgdGhpcy5kZXBhcnRtZW50c0ZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5kZXBhcnRtZW50c0ZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3RcclxuXHJcblxyXG4gICAgdGhpcy5Vc2VyUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuVXNlclBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0VXNlcnNCeUZpbHRlcic7XHJcbiAgICB0aGlzLlVzZXJQYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCJdXHJcbiAgICB0aGlzLlVzZXJQYWdpbmcuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wicGVybWlzc2lvbnNldHNcIiwgXCJhY2NvdW50c3RhdHVzXCIsIFwibG9ja2Vkc3RhdHVzXCIsIFwiZGVwYXJ0bWVudHNcIl07XHJcbiAgICB0aGlzLlVzZXJQYWdpbmcuRmlsdGVycyA9IFt0aGlzLnBlcm1pc3Npb25TZXRzRmlsdGVyLCB0aGlzLmxvY2tlZFN0YXR1c0ZpbHRlciwgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyLCB0aGlzLmRlcGFydG1lbnRzRmlsdGVyLCB0aGlzLlRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuVXNlclBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcbiAgICB0aGlzLlVzZXJQYWdpbmcuUmVzZXRGaWx0ZXJCdXR0b25OYW1lID0gXCJ1c2Vyc0ZpbHRlcnNCdG5cIjtcclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9Mb2FkIGxpc3RzIGZvciBmaWx0ZXJzXHJcbiAgbG9hZExpc3RzKCkge1xyXG4gICAgaWYgKCF0aGlzLklzRmlsdGVyRGF0YUxvYWRlZCkge1xyXG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLkxvYWRkcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGxldCBEcm9wZG93bnNSZXNwb25zZU1vZGVsID0gcmVzdWx0IGFzIERyb3Bkb3duc1Jlc3BvbnNlTW9kZWw7XHJcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0TGlzdCA9IERyb3Bkb3duc1Jlc3BvbnNlTW9kZWwucGVybWVzc2lvbnNldHM7XHJcbiAgICAgICAgdGhpcy5hY2NvdW50U3RhdHVzTGlzdCA9IERyb3Bkb3duc1Jlc3BvbnNlTW9kZWwuYWNjb3VudFN0YXR1cztcclxuICAgICAgICB0aGlzLmxvY2tlZFN0YXR1c0xpc3QgPSBEcm9wZG93bnNSZXNwb25zZU1vZGVsLmxvY2tlZFN0YXR1cztcclxuICAgICAgICB0aGlzLmRlcGFydG1lbnRzTGlzdCA9IERyb3Bkb3duc1Jlc3BvbnNlTW9kZWwuZGVwYXJ0bWVudHM7XHJcblxyXG4gICAgICAgIGxldCBwZXJtaXNzaW9uU2V0RWxlbWVudCA9IHRoaXMucGVybWlzc2lvblNldERETCBhcyBhbnk7XHJcbiAgICAgICAgbGV0IGFjY291bnRTdGF0dXNFbGVtZW50ID0gdGhpcy5hY2NvdW50U3RhdHVzRERMIGFzIGFueTtcclxuICAgICAgICBsZXQgbG9ja2VkU3RhdHVzRWxlbWVudCA9IHRoaXMubG9ja2VkU3RhdHVzRERMIGFzIGFueTtcclxuICAgICAgICBsZXQgZGVwYXJ0bWVudHNFbGVtZW50ID0gdGhpcy5kZXBhcnRtZW50c0RETCBhcyBhbnk7XHJcblxyXG5cclxuICAgICAgICBwZXJtaXNzaW9uU2V0RWxlbWVudC5VcGRhdGVEYXRhU291cmNlKHRoaXMucGVybWlzc2lvblNldExpc3QpO1xyXG5cclxuICAgICAgICBhY2NvdW50U3RhdHVzRWxlbWVudC5VcGRhdGVEYXRhU291cmNlKHRoaXMuYWNjb3VudFN0YXR1c0xpc3QpO1xyXG5cclxuICAgICAgICBsb2NrZWRTdGF0dXNFbGVtZW50LlVwZGF0ZURhdGFTb3VyY2UodGhpcy5sb2NrZWRTdGF0dXNMaXN0KTtcclxuXHJcbiAgICAgICAgZGVwYXJ0bWVudHNFbGVtZW50LlVwZGF0ZURhdGFTb3VyY2UodGhpcy5kZXBhcnRtZW50c0xpc3QpO1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5Jc0ZpbHRlckRhdGFMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vVXNlcnMgY2hlY2tib3hlcyBzZWxlY3Rpb24gZnVuY3Rpb25zXHJcbiAgc2VsZWN0QWxsVXNlckxpc3QoZXZlbnQsIFVzZXJzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMuVXNlclBhZ2luZ1Jlc3VsdCA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuVXNlclBhZ2luZ1Jlc3VsdC5mb3JFYWNoKHUgPT4gdS5zZWxlY3RlZCA9IGV2ZW50LmNoZWNrZWQpO1xyXG5cclxuICAgIGlmIChldmVudC5jaGVja2VkKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBVc2Vycy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCB1c2VyID0gVXNlcnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdC5wdXNoKHVzZXIpO1xyXG4gICAgICAgIGlmICh1c2VyLmlzQWN0aXZlKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgKz0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmRlQWN0aXZhdGVkVXNlcnNTZWxlY3RlZCArPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPSBVc2Vycy5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0uaXNBY3RpdmU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpLmxlbmd0aDtcclxuICAgICAgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPSBVc2Vycy5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuICFpdGVtLmlzQWN0aXZlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KS5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA9IDA7XHJcbiAgICAgIHRoaXMuZGVBY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkID0gMDtcclxuICAgIH1cclxuICAgIHRoaXMuZW5hYmxlQnV0dG9ucygpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVXNlckxpc3QoZXZlbnQsIFVzZXIpIHtcclxuICAgIHRoaXMuVXNlclBhZ2luZ1Jlc3VsdC5maW5kKHUgPT4gdS5pZCA9PT0gVXNlci5pZCkuc2VsZWN0ZWQgPSBldmVudC5jaGVja2VkO1xyXG4gICAgdGhpcy5hbGxTZWxlY3RlZCA9IHRoaXMuVXNlclBhZ2luZ1Jlc3VsdCAhPSBudWxsICYmIHRoaXMuVXNlclBhZ2luZ1Jlc3VsdC5ldmVyeSh1ID0+IHUuc2VsZWN0ZWQpO1xyXG4gICAgaWYgKGV2ZW50LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0LnB1c2goVXNlcik7XHJcbiAgICAgIGlmIChVc2VyLmlzQWN0aXZlKVxyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkVXNlcnNTZWxlY3RlZCArPSAxO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgKz0gMTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlLmlkID09IFVzZXIuaWQpIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKFVzZXIuaXNBY3RpdmUpXHJcbiAgICAgICAgdGhpcy5hY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkIC09IDE7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLmRlQWN0aXZhdGVkVXNlcnNTZWxlY3RlZCAtPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbmFibGVCdXR0b25zKCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVVc2VyRnJvbUxpc3QodXNlcjogYW55KSB7XHJcbiAgICB0aGlzLlVzZXJQYWdpbmdSZXN1bHQuZmluZCh1ID0+IHUuaWQgPT09IHVzZXIuaWQpLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QgPSB0aGlzLlNlbGVjdGVkVXNlckxpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPSB1c2VyKTtcclxuICAgIGlmICh1c2VyLmlzQWN0aXZlKVxyXG4gICAgICB0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgLT0gMTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgLT0gMTtcclxuICAgIHRoaXMuZW5hYmxlQnV0dG9ucygpO1xyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRVc2VyTGlzdC5sZW5ndGggPD0gMCkge1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmFibGVCdXR0b25zKCkge1xyXG4gICAgLy9SZXNldCBhbGwgYnRuc1xyXG4gICAgdGhpcy5kaXNhYmxlQnV0dG9ucygpO1xyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPT0gMCAmJiB0aGlzLmRlQWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dlbmVyYWxCdG5zID0gdHJ1ZTtcclxuXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93R2VuZXJhbEJ0bnMgPSBmYWxzZTtcclxuXHJcbiAgICAgIC8vaWYgb25seSBhY3RpdmF0ZWQgdXNlcnNcclxuICAgICAgaWYgKHRoaXMuYWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA+IDAgJiYgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPT0gMCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0RlYWN0aXZhdGVCdG4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1Jlc2V0UGFzc0J0biA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPiAwICYmIHRoaXMuYWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA9PSAwKSAgICAgLy9pZiBvbmx5IGRlQWN0aXZhdGVkIHVzZXJzXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnNob3dBY3RpdmF0ZUJ0biA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93U2VuZEVtYWlsQnRuID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPiAwICYmIHRoaXMuZGVBY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkID4gMCkgLy9pZiBhY3RpdmF0ZWQgYW5kIGRlYWN0aXZhdGVkIHVzZXJzIHNlbGVjdGVkXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnNob3dSZXNldFBhc3NCdG4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NldFBhc3NCdG4gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQnV0dG9ucygpIHtcclxuICAgIC8vUmVzZXQgYWxsIGJ0bnNcclxuICAgIHRoaXMuc2hvd0FjdGl2YXRlQnRuID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dEZWFjdGl2YXRlQnRuID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTZW5kRW1haWxCdG4gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1Jlc2V0UGFzc0J0biA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U2V0UGFzc0J0biA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93R2VuZXJhbEJ0bnMgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRVc2Vyc0NvdW50KCkge1xyXG4gICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0ID0gW107XHJcbiAgICB0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPSAwO1xyXG4gICAgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPSAwO1xyXG4gICAgdGhpcy5Vc2VyUGFnaW5nUmVzdWx0LmZvckVhY2godSA9PiB1LnNlbGVjdGVkID0gZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLy9BZGQgVXNlclxyXG4gIHNob3dBZGRVc2VyTW9kYWwoYWRkVXNlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5Mb2FkQWRkRHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgIGxldCBEcm9wZG93bnNSZXNwb25zZU1vZGVsID0gcmVzdWx0IGFzIERyb3Bkb3duc1Jlc3BvbnNlTW9kZWw7XHJcbiAgICAgIC8vU2V0IHJlcXVpcmVkIGxpc3RzXHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSBEcm9wZG93bnNSZXNwb25zZU1vZGVsLnBlcm1lc3Npb25zZXRzO1xyXG4gICAgICB0aGlzLmRlcGFydG1lbnRzTGlzdCA9IERyb3Bkb3duc1Jlc3BvbnNlTW9kZWwuZGVwYXJ0bWVudHM7XHJcbiAgICAgIHRoaXMuY291bnRyaWVzTGlzdCA9IERyb3Bkb3duc1Jlc3BvbnNlTW9kZWwuY291bnRyaWVzO1xyXG5cclxuICAgICAgdGhpcy5BZGRVc2VyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cclxuICAgICAgdGhpcy5BZGRVc2VyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRVc2VyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5BZGRVc2VyRm9ybVxyXG4gICAgICB0aGlzLkFkZFVzZXJGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRVc2VyTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkVXNlckZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkVXNlckZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkFkZFVzZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuXHJcbiAgICAgIHRoaXMuQWRkTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGROYW1lLk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuQWRkTW9iaWxlTnVtYmVyID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZE1vYmlsZU51bWJlci5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkTW9iaWxlTnVtYmVyLk5hbWUgPSBcIlBob25lSW5wdXRNb2JpbGVcIlxyXG4gICAgICB0aGlzLkFkZE1vYmlsZU51bWJlci5MYWJlbEtleSA9IFwiTW9iaWxlTnVtYmVyXCJcclxuICAgICAgdGhpcy5BZGRNb2JpbGVOdW1iZXIuRXh0cmFDbGFzc2VzID0gXCJmb3JtLWNvbnRyb2wgYm5zaWdodHMtY29udHJvbFwiXHJcbiAgICAgIHRoaXMuQWRkTW9iaWxlTnVtYmVyLlNlbGVjdGVkQ291bnRyeUlTTyA9IENvdW50cnkuVW5pdGVkQXJhYkVtaXJhdGVzXHJcbiAgICAgIHRoaXMuQWRkTW9iaWxlTnVtYmVyLlBob25lVmFsaWRhdGlvbiA9IHRydWVcclxuICAgICAgdGhpcy5BZGRNb2JpbGVOdW1iZXIuQWxsb3dTZWFyY2ggPSB0cnVlXHJcblxyXG4gICAgICB0aGlzLkFkZFVzZXJuYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkVXNlcm5hbWUuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZFVzZXJuYW1lLk5hbWUgPSBcIlVzZXJuYW1lXCI7XHJcbiAgICAgIHRoaXMuQWRkVXNlcm5hbWUuTGFiZWxLZXkgPSBcIlVzZXJuYW1lXCI7XHJcbiAgICAgIHRoaXMuQWRkVXNlcm5hbWUuVHlwZSA9IElucHV0VHlwZS5FbWFpbDtcclxuICAgICAgdGhpcy5BZGRVc2VybmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRVc2VybmFtZS5NYXhMZW5ndGggPSAyNTY7XHJcblxyXG4gICAgICB0aGlzLkFkZFNhbUFjY291bnQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRTYW1BY2NvdW50LlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRTYW1BY2NvdW50Lk5hbWUgPSBcIlNhbUFjY291bnRcIjtcclxuICAgICAgdGhpcy5BZGRTYW1BY2NvdW50LkxhYmVsS2V5ID0gXCJTYW1BY2NvdW50XCI7XHJcbiAgICAgIHRoaXMuQWRkU2FtQWNjb3VudC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuQWRkU2FtQWNjb3VudC5NYXhMZW5ndGggPSAyNTY7XHJcblxyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50Lk5hbWUgPSBcIkRlcGFydG1lbnRJRF9HVUlEXCJcclxuICAgICAgdGhpcy5BZGRVc2VyRGVwYXJ0bWVudC5MYWJlbEtleSA9IFwiRGVwYXJ0bWVudFwiXHJcbiAgICAgIHRoaXMuQWRkVXNlckRlcGFydG1lbnQuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkVXNlckRlcGFydG1lbnQuRGF0YVNvdXJjZSA9IHRoaXMuZGVwYXJ0bWVudHNMaXN0XHJcbiAgICAgIHRoaXMuQWRkVXNlckRlcGFydG1lbnQuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRVc2VyRGVwYXJ0bWVudC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZFNlbmRBY3RpdmF0aW9uRW1haWwgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkU2VuZEFjdGl2YXRpb25FbWFpbC5OYW1lID0gXCJTZW5kQWN0aXZhdGlvbk1haWxcIlxyXG4gICAgICB0aGlzLkFkZFNlbmRBY3RpdmF0aW9uRW1haWwuTGFiZWxLZXkgPSBcIlNlbmRBY3RpdmF0aW9uRW1haWxcIlxyXG4gICAgICB0aGlzLkFkZFNlbmRBY3RpdmF0aW9uRW1haWwuVmFsdWUgPSBmYWxzZVxyXG4gICAgICB0aGlzLkFkZFNlbmRBY3RpdmF0aW9uRW1haWwuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWxcclxuXHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25TZXQuTmFtZSA9IFwiUGVybWlzc2lvblNldHNcIlxyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9uU2V0LkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0c1wiXHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25TZXQuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25TZXQuRGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvblNldExpc3RcclxuICAgICAgdGhpcy5BZGRVc2VyUGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5BZGRVc2VyUGVybWlzc2lvblNldC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25TZXQuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRVc2VyUGVybWlzc2lvbnMuTmFtZSA9IFwiUGVybWlzc2lvbnNcIlxyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9ucy5MYWJlbEtleSA9IFwiUGVybWlzc2lvbnNcIlxyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9ucy5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRVc2VyUGVybWlzc2lvbnMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRVc2VyUGVybWlzc2lvbnMuSXNSZXF1aXJlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5BZGRVc2VyTmF0aW9uYWxpdHkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkVXNlck5hdGlvbmFsaXR5Lk5hbWUgPSBcIk5hdGlvbmFsaXR5XCI7XHJcbiAgICAgIHRoaXMuQWRkVXNlck5hdGlvbmFsaXR5LkxhYmVsS2V5ID0gXCJOYXRpb25hbGl0eVwiO1xyXG4gICAgICB0aGlzLkFkZFVzZXJOYXRpb25hbGl0eS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgIHRoaXMuQWRkVXNlck5hdGlvbmFsaXR5LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkVXNlck5hdGlvbmFsaXR5LlNob3dDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkFkZFVzZXJOYXRpb25hbGl0eS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkVXNlck5hdGlvbmFsaXR5LkRhdGFTb3VyY2UgPSB0aGlzLmNvdW50cmllc0xpc3Q7XHJcblxyXG4gICAgICB0aGlzLkFkZFVzZXJFSUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRVc2VyRUlELk5hbWUgPSBcIkVJRFwiO1xyXG4gICAgICB0aGlzLkFkZFVzZXJFSUQuTGFiZWxLZXkgPSBcIkVJRFwiO1xyXG4gICAgICB0aGlzLkFkZFVzZXJFSUQuVHlwZSA9IElucHV0VHlwZS5FSUQ7XHJcbiAgICAgIHRoaXMuQWRkVXNlckVJRC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcblxyXG4gICAgICB0aGlzLkFkZFByb2ZpbGVJbWFnZSA9IG5ldyBQcm9maWxlSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkUHJvZmlsZUltYWdlLk5hbWUgPSBcIkltYWdlXCJcclxuICAgICAgdGhpcy5BZGRQcm9maWxlSW1hZ2UuTGFiZWxWYWx1ZSA9IFwiUHJvZmlsZUltYWdlXCJcclxuICAgICAgdGhpcy5BZGRQcm9maWxlSW1hZ2UuSXNSZXF1aXJlZCA9IGZhbHNlXHJcbiAgICAgIHRoaXMuQWRkUHJvZmlsZUltYWdlLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbFxyXG4gICAgICB0aGlzLkFkZFByb2ZpbGVJbWFnZS5JbWFnZVVwbG9hZEFjY2VwdHNUeXBlcyA9IFtJbWFnZVR5cGUuSW1hZ2VUeXBlc11cclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oYWRkVXNlck1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0QWRkVXNlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZFVzZXJGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCBBZGRNb2RlbCA9IG5ldyBBZGRVc2VyTW9kZWwoKTtcclxuICAgIEFkZE1vZGVsLlVzZXJuYW1lID0gUmVzdWx0TW9kZWwuVXNlcm5hbWU7XHJcbiAgICBBZGRNb2RlbC5OYW1lID0gUmVzdWx0TW9kZWwuTmFtZTtcclxuICAgIEFkZE1vZGVsLk5hdGlvbmFsaXR5ID0gUmVzdWx0TW9kZWwuTmF0aW9uYWxpdHk7XHJcbiAgICBBZGRNb2RlbC5FSUQgPSBSZXN1bHRNb2RlbC5FSUQ7XHJcbiAgICBBZGRNb2RlbC5TYW1BY2NvdW50ID0gUmVzdWx0TW9kZWwuU2FtQWNjb3VudDtcclxuICAgIEFkZE1vZGVsLk9yZ2FuaXphdGlvbklEX0dVSUQgPSBDb25zdGFudHMuT3JnYW5pemF0aW9uSURfR1VJRDtcclxuICAgIGlmIChSZXN1bHRNb2RlbC5EZXBhcnRtZW50SURfR1VJRCAhPSB1bmRlZmluZWQpXHJcbiAgICAgIEFkZE1vZGVsLkRlcGFydG1lbnRJRF9HVUlEID0gUmVzdWx0TW9kZWwuRGVwYXJ0bWVudElEX0dVSUQ7XHJcblxyXG4gICAgbGV0IFBlcm1pc3Npb25TZXRzID0gUmVzdWx0TW9kZWwuUGVybWlzc2lvblNldHMgYXMgc3RyaW5nW11cclxuICAgIEFkZE1vZGVsLlBlcm1pc3Npb25TZXRzID0gUGVybWlzc2lvblNldHM7XHJcbiAgICBsZXQgUGVybWlzc2lvbnMgPSBSZXN1bHRNb2RlbC5QZXJtaXNzaW9ucyBhcyBzdHJpbmdbXVxyXG4gICAgQWRkTW9kZWwuUGVybWlzc2lvbnMgPSBQZXJtaXNzaW9ucztcclxuICAgIEFkZE1vZGVsLlNlbmRBY3RpdmF0aW9uTWFpbCA9IFJlc3VsdE1vZGVsLlNlbmRBY3RpdmF0aW9uTWFpbDtcclxuICAgIGxldCBpbnRlcm5hdGlvbmFsTnVtYmVyOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgaWYgKFJlc3VsdE1vZGVsLlBob25lSW5wdXRNb2JpbGUgIT0gbnVsbCkge1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gUmVzdWx0TW9kZWwuUGhvbmVJbnB1dE1vYmlsZS5pbnRlcm5hdGlvbmFsTnVtYmVyIGFzIHN0cmluZztcclxuICAgICAgaW50ZXJuYXRpb25hbE51bWJlciA9IGludGVybmF0aW9uYWxOdW1iZXIucmVwbGFjZSgvXFxzL2csIFwiXCIpO1xyXG4gICAgfVxyXG4gICAgQWRkTW9kZWwuUGhvbmVJbnB1dE1vYmlsZSA9IGludGVybmF0aW9uYWxOdW1iZXI7XHJcbiAgICBBZGRNb2RlbC5Qcm9maWxlSW1hZ2UgPSBSZXN1bHRNb2RlbC5JbWFnZTtcclxuICAgIHBhcmFtQXJyYXkucHVzaChBZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEFkZFVzZXJGdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5BZGRVc2VyKEFkZE1vZGVsKVxyXG4gIH1cclxuXHJcblxyXG4gIC8vRWRpdCBVc2VyXHJcbiAgc2hvd0VkaXRVc2VyTW9kYWwodXNlcklEOiBzdHJpbmcsIEVkaXRVc2VyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLlVzZXJJZCA9IHVzZXJJRFxyXG5cclxuICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0RWRpdFVzZXIodXNlcklEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IHVzZXIgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIGxldCBsaXN0cyA9IHJlc3VsdE9iai5saXN0cztcclxuXHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSBsaXN0cy5wZXJtZXNzaW9uc2V0cztcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uc0xpc3QgPSBsaXN0cy5wZXJtZXNzaW9ucztcclxuICAgICAgdGhpcy5kZXBhcnRtZW50c0xpc3QgPSBsaXN0cy5kZXBhcnRtZW50cztcclxuICAgICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gbGlzdHMuY291bnRyaWVzO1xyXG5cclxuICAgICAgdGhpcy5FZGl0VXNlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5FZGl0VXNlckZvcm1cclxuICAgICAgdGhpcy5FZGl0VXNlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRVc2VyTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRVc2VyRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGU7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5vblN1Ym1pdFN1Y2Nlc3M7XHJcblxyXG4gICAgICBsZXQgTmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIE5hbWUuRW5nbGlzaCA9IHVzZXIubmFtZS5lbmdsaXNoO1xyXG4gICAgICBOYW1lLkFyYWJpYyA9IHVzZXIubmFtZS5hcmFiaWM7XHJcblxyXG4gICAgICB0aGlzLkVkaXROYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5WYWx1ZSA9IE5hbWU7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuTWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgdGhpcy5FZGl0TW9iaWxlTnVtYmVyID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuVmFsdWUgPSB1c2VyLm1vYmlsZSBhcyBzdHJpbmc7XHJcbiAgICAgIHRoaXMuRWRpdE1vYmlsZU51bWJlci5OYW1lID0gXCJQaG9uZUlucHV0TW9iaWxlXCJcclxuICAgICAgdGhpcy5FZGl0TW9iaWxlTnVtYmVyLkxhYmVsS2V5ID0gXCJNb2JpbGVOdW1iZXJcIlxyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuRXh0cmFDbGFzc2VzID0gXCJmb3JtLWNvbnRyb2wgYm5zaWdodHMtY29udHJvbFwiXHJcbiAgICAgIHRoaXMuRWRpdE1vYmlsZU51bWJlci5TZWxlY3RlZENvdW50cnlJU08gPSBDb3VudHJ5LlVuaXRlZEFyYWJFbWlyYXRlc1xyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuUGhvbmVWYWxpZGF0aW9uID0gdHJ1ZVxyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuQWxsb3dTZWFyY2ggPSB0cnVlXHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUuVmFsdWUgPSB1c2VyLnVzZXJuYW1lO1xyXG4gICAgICB0aGlzLkVkaXRVc2VybmFtZS5OYW1lID0gXCJVc2VybmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXRVc2VybmFtZS5MYWJlbEtleSA9IFwiVXNlcm5hbWVcIjtcclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUuVHlwZSA9IElucHV0VHlwZS5FbWFpbDtcclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJuYW1lLk1heExlbmd0aCA9IDI1NjtcclxuXHJcbiAgICAgIHRoaXMuRWRpdEVtYWlsID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEVtYWlsLlZhbHVlID0gdXNlci5lbWFpbDtcclxuICAgICAgdGhpcy5FZGl0RW1haWwuTmFtZSA9IFwiRW1haWxcIjtcclxuICAgICAgdGhpcy5FZGl0RW1haWwuTGFiZWxLZXkgPSBcIkVtYWlsXCI7XHJcbiAgICAgIHRoaXMuRWRpdEVtYWlsLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgIHRoaXMuRWRpdEVtYWlsLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRFbWFpbC5NYXhMZW5ndGggPSAyNTY7XHJcblxyXG4gICAgICB0aGlzLkVkaXRTYW1BY2NvdW50ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFNhbUFjY291bnQuVmFsdWUgPSB1c2VyLnNhbUFjY291bnQ7XHJcbiAgICAgIHRoaXMuRWRpdFNhbUFjY291bnQuTmFtZSA9IFwiU2FtQWNjb3VudFwiO1xyXG4gICAgICB0aGlzLkVkaXRTYW1BY2NvdW50LkxhYmVsS2V5ID0gXCJTYW1BY2NvdW50XCI7XHJcbiAgICAgIHRoaXMuRWRpdFNhbUFjY291bnQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXRTYW1BY2NvdW50Lk1heExlbmd0aCA9IDI1NjtcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRVc2VyRGVwYXJ0bWVudCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0VXNlckRlcGFydG1lbnQuTmFtZSA9IFwiRGVwYXJ0bWVudElEX0dVSURcIlxyXG4gICAgICB0aGlzLkVkaXRVc2VyRGVwYXJ0bWVudC5MYWJlbEtleSA9IFwiRGVwYXJ0bWVudFwiXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJEZXBhcnRtZW50LlNlbGVjdGVkSXRlbXMgPSB1c2VyLmRlcGFydG1lbnRJRF9HVUlEPy50b0xvd2VyQ2FzZSgpXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJEZXBhcnRtZW50LkRhdGFTb3VyY2UgPSB0aGlzLmRlcGFydG1lbnRzTGlzdFxyXG4gICAgICB0aGlzLkVkaXRVc2VyRGVwYXJ0bWVudC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyRGVwYXJ0bWVudC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0VXNlclBlcm1pc3Npb25TZXQuTmFtZSA9IFwiUGVybWlzc2lvblNldHNcIlxyXG4gICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldHNcIlxyXG4gICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvblNldC5TZWxlY3RlZEl0ZW1zID0gdXNlci5wZXJtaXNzaW9uU2V0SURzLm1hcCgoaXRlbSkgPT4gaXRlbS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvblNldC5EYXRhU291cmNlID0gdGhpcy5wZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5FZGl0VXNlclBlcm1pc3Npb25TZXQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvblNldC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0VXNlclBlcm1pc3Npb25zLk5hbWUgPSBcIlBlcm1pc3Npb25zXCJcclxuICAgICAgdGhpcy5FZGl0VXNlclBlcm1pc3Npb25zLkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uc1wiXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucy5TZWxlY3RlZEl0ZW1zID0gdXNlci5wZXJtaXNzaW9uSURzLm1hcCgoaXRlbSkgPT4gaXRlbS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvbnMuRGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvbnNMaXN0XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5FZGl0VXNlclBlcm1pc3Npb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VXNlclBlcm1pc3Npb25zLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJOYXRpb25hbGl0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0VXNlck5hdGlvbmFsaXR5Lk5hbWUgPSBcIk5hdGlvbmFsaXR5XCI7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJOYXRpb25hbGl0eS5MYWJlbEtleSA9IFwiTmF0aW9uYWxpdHlcIjtcclxuICAgICAgdGhpcy5FZGl0VXNlck5hdGlvbmFsaXR5LlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgdGhpcy5FZGl0VXNlck5hdGlvbmFsaXR5LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJOYXRpb25hbGl0eS5TaG93Q2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5FZGl0VXNlck5hdGlvbmFsaXR5LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VXNlck5hdGlvbmFsaXR5LkRhdGFTb3VyY2UgPSB0aGlzLmNvdW50cmllc0xpc3Q7XHJcbiAgICAgIGlmICh1c2VyLm5hdGlvbmFsaXR5KVxyXG4gICAgICAgIHRoaXMuRWRpdFVzZXJOYXRpb25hbGl0eS5TZWxlY3RlZEl0ZW1zID0gdXNlci5uYXRpb25hbGl0eTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJFSUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0VXNlckVJRC5OYW1lID0gXCJFSURcIjtcclxuICAgICAgdGhpcy5FZGl0VXNlckVJRC5MYWJlbEtleSA9IFwiRUlEXCI7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJFSUQuVHlwZSA9IElucHV0VHlwZS5FSUQ7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJFSUQuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyRUlELlZhbHVlID0gdXNlci5laWQ7XHJcblxyXG4gICAgICB0aGlzLkVkaXRQcm9maWxlSW1hZ2UgPSBuZXcgUHJvZmlsZUltYWdlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRQcm9maWxlSW1hZ2UuTmFtZSA9IFwiSW1hZ2VcIlxyXG4gICAgICB0aGlzLkVkaXRQcm9maWxlSW1hZ2UuTGFiZWxWYWx1ZSA9IFwiUHJvZmlsZUltYWdlXCJcclxuICAgICAgdGhpcy5FZGl0UHJvZmlsZUltYWdlLklzUmVxdWlyZWQgPSBmYWxzZVxyXG4gICAgICB0aGlzLkVkaXRQcm9maWxlSW1hZ2UuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsXHJcbiAgICAgIHRoaXMuRWRpdFByb2ZpbGVJbWFnZS5JbWFnZVVwbG9hZEFjY2VwdHNUeXBlcyA9IFtJbWFnZVR5cGUuSW1hZ2VUeXBlc11cclxuICAgICAgdGhpcy5FZGl0UHJvZmlsZUltYWdlLlZhbHVlID0gdXNlci5wcm9maWxlSW1hZ2U7XHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEVkaXRVc2VyTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gIH1cclxuICBnZXRFZGl0VXNlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRVc2VyRm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBsZXQgRWRpdE1vZGVsID0gbmV3IEVkaXRVc2VyTW9kZWwoKTtcclxuICAgIEVkaXRNb2RlbC5JRF9HVUlEID0gdGhpcy5Vc2VySWQ7XHJcbiAgICBFZGl0TW9kZWwuVXNlcm5hbWUgPSBSZXN1bHRNb2RlbC5Vc2VybmFtZTtcclxuICAgIEVkaXRNb2RlbC5FbWFpbCA9IFJlc3VsdE1vZGVsLkVtYWlsO1xyXG4gICAgRWRpdE1vZGVsLk5hbWUgPSBSZXN1bHRNb2RlbC5OYW1lO1xyXG4gICAgRWRpdE1vZGVsLk5hdGlvbmFsaXR5ID0gUmVzdWx0TW9kZWwuTmF0aW9uYWxpdHk7XHJcbiAgICBFZGl0TW9kZWwuRUlEID0gUmVzdWx0TW9kZWwuRUlEO1xyXG4gICAgRWRpdE1vZGVsLlNhbUFjY291bnQgPSBSZXN1bHRNb2RlbC5TYW1BY2NvdW50O1xyXG4gICAgaWYgKFJlc3VsdE1vZGVsLkRlcGFydG1lbnRJRF9HVUlEICE9IHVuZGVmaW5lZClcclxuICAgICAgRWRpdE1vZGVsLkRlcGFydG1lbnRJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5EZXBhcnRtZW50SURfR1VJRCk7XHJcblxyXG4gICAgbGV0IFBlcm1pc3Npb25TZXRzID0gUmVzdWx0TW9kZWwuUGVybWlzc2lvblNldHMgYXMgc3RyaW5nW11cclxuICAgIEVkaXRNb2RlbC5QZXJtaXNzaW9uU2V0SURzID0gUGVybWlzc2lvblNldHM7XHJcbiAgICBsZXQgUGVybWlzc2lvbnMgPSBSZXN1bHRNb2RlbC5QZXJtaXNzaW9ucyBhcyBzdHJpbmdbXVxyXG4gICAgRWRpdE1vZGVsLlBlcm1pc3Npb25JRHMgPSBQZXJtaXNzaW9ucztcclxuXHJcbiAgICBsZXQgaW50ZXJuYXRpb25hbE51bWJlcjogc3RyaW5nID0gbnVsbDtcclxuICAgIGlmIChSZXN1bHRNb2RlbC5QaG9uZUlucHV0TW9iaWxlICE9IG51bGwpIHtcclxuICAgICAgaW50ZXJuYXRpb25hbE51bWJlciA9IFJlc3VsdE1vZGVsLlBob25lSW5wdXRNb2JpbGUuaW50ZXJuYXRpb25hbE51bWJlciBhcyBzdHJpbmc7XHJcbiAgICAgIGludGVybmF0aW9uYWxOdW1iZXIgPSBpbnRlcm5hdGlvbmFsTnVtYmVyLnJlcGxhY2UoL1xccy9nLCBcIlwiKTtcclxuICAgIH1cclxuICAgIEVkaXRNb2RlbC5Nb2JpbGUgPSBpbnRlcm5hdGlvbmFsTnVtYmVyO1xyXG4gICAgRWRpdE1vZGVsLlByb2ZpbGVJbWFnZSA9IFJlc3VsdE1vZGVsLkltYWdlO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKEVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRVc2VyRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLkVkaXRVc2VyKEVkaXRNb2RlbClcclxuICB9XHJcblxyXG4gIGNoYW5nZVBlcm1pc3Npb25TZXQoaWRzLCBpc0FkZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5Mb2FkUGVybWlzc2lvbnNEcm9wRG93bihpZHMpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBkZGwgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25zTGlzdCA9IGRkbDtcclxuICAgICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgICAgdGhpcy5BZGRVc2VyUGVybWlzc2lvbnMuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5BZGRVc2VyUGVybWlzc2lvbnMuRGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvbnNMaXN0O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucy5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvbnMuRGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvbnNMaXN0O1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy9FeHBvcnQgdXNlcnMgZXhjZWxcclxuICBleHBvcnRFeGNlbCgpIHtcclxuICAgIGxldCBmaWx0ZXJzID0ge307XHJcbiAgICBmaWx0ZXJzID0gdGhpcy5wYWdpbmdFbGVtZW50LmdldEZpbHRlcnNWYWx1ZSgpO1xyXG5cclxuICAgIHRoaXMudXNlclNlcnZpY2UuRXhwb3J0KGZpbHRlcnMpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICBsZXQgRmlsZURUTyA9IHJlc3VsdCBhcyBhbnlcclxuICAgICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtGaWxlRFRPXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnIH0pO1xyXG4gICAgICBsZXQgZmlsZU5hbWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJVc2Vyc1wiKSArIFwiLnhsc3hcIjtcclxuICAgICAgc2F2ZUFzKGZpbGUsIGZpbGVOYW1lKTtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG5cclxuXHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIC8vT25lIHVzZXIgZnVuY3Rpb25zXHJcblxyXG4gIC8vQWN0aXZhdGlvbiBhbmQgZGVhY3RpdmF0aW9uIGZ1bmN0aW9uc1xyXG4gIHNob3dBY3RpdmF0ZVVzZXJNb2RhbChVc2VyOiBhbnksIGlzQWN0aXZhdGVNb2RlbDogYm9vbGVhbiwgQWN0aXZhdGVVc2VyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIHRoaXMuQWN0aXZhdG9yRGVhY3RpdmF0ZVVzZXJMaXN0ID0gW11cclxuICAgIHRoaXMuQWN0aXZhdG9yRGVhY3RpdmF0ZVVzZXJMaXN0LnB1c2goVXNlcik7XHJcbiAgICB0aGlzLk5hbWUgPSBVc2VyLm5hbWVTdHI7XHJcbiAgICB0aGlzLkVtYWlsID0gVXNlci5lbWFpbDtcclxuICAgIHRoaXMuU2hvd0FjdGl2YXRlTW9kZWxEYXRhID0gaXNBY3RpdmF0ZU1vZGVsXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFjdGl2YXRlVXNlck1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuXHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZSgpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuQWN0aXZhdGVVc2Vycyh0aGlzLkFjdGl2YXRvckRlYWN0aXZhdGVVc2VyTGlzdCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICAgIGVsZW1lbnQuVXBkYXRlUGFnaW5nKCk7XHJcbiAgICAgIHRoaXMucmVzZXRVc2Vyc0NvdW50KCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMoKTtcclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkZWFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5EZWFjdGl2YXRlVXNlcnModGhpcy5BY3RpdmF0b3JEZWFjdGl2YXRlVXNlckxpc3QpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLnBhZ2luZ0VsZW1lbnQgYXMgYW55O1xyXG4gICAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICB0aGlzLnJlc2V0VXNlcnNDb3VudCgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy9SZXNldCBQYXNzd29yZCBmdW5jdGlvblxyXG4gIHNob3dSZXNldFBhc3N3b3JkVXNlck1vZGFsKFVzZXI6IGFueSwgUmVzZXRQYXNzd29yZFVzZXJNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKVxyXG4gICAgdGhpcy5SZXNldFBhc3N3b3JkVXNlckxpc3QgPSBbXVxyXG4gICAgdGhpcy5SZXNldFBhc3N3b3JkVXNlckxpc3QucHVzaChVc2VyKTtcclxuICAgIHRoaXMuTmFtZSA9IFVzZXIubmFtZVN0cjtcclxuICAgIHRoaXMuRW1haWwgPSBVc2VyLmVtYWlsXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFJlc2V0UGFzc3dvcmRVc2VyTW9kYWwpO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICByZXNldFBhc3N3b3JkKCkge1xyXG5cclxuICAgIHRoaXMudXNlclNlcnZpY2UuUmVzZXRVc2Vyc1Bhc3N3b3JkKHRoaXMuUmVzZXRQYXNzd29yZFVzZXJMaXN0KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5wYWdpbmdFbGVtZW50IGFzIGFueTtcclxuICAgICAgZWxlbWVudC5VcGRhdGVQYWdpbmcoKTtcclxuICAgICAgdGhpcy5yZXNldFVzZXJzQ291bnQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9ucygpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcblxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICAvL1NlbmQgYWN0aXZhdGlvbiBtYWlsIGZ1bmN0aW9uXHJcbiAgc2hvd1NlbmRBY3RpdmF0aW9uRW1haWxNb2RhbChVc2VyOiBhbnksIFNlbmRBY3RpdmF0aW9uRW1haWxNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKVxyXG4gICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0ID0gW11cclxuICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdC5wdXNoKFVzZXIpO1xyXG4gICAgdGhpcy5OYW1lID0gVXNlci5uYW1lU3RyO1xyXG4gICAgdGhpcy5FbWFpbCA9IFVzZXIuZW1haWxcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oU2VuZEFjdGl2YXRpb25FbWFpbE1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuXHJcbiAgfVxyXG5cclxuICBzZW5kQWN0aXZhdGlvbkVtYWlsRm9yVXNlcigpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuU2VuZEFjdGl2YXRpb25FbWFpbEZvclVzZXIodGhpcy5TZWxlY3RlZFVzZXJMaXN0KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCA9IFtdO1xyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICAgIGVsZW1lbnQuVXBkYXRlUGFnaW5nKCk7XHJcbiAgICAgIHRoaXMucmVzZXRVc2Vyc0NvdW50KCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMoKTtcclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG5cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgLy9TZXQgcGFzc3dvcmQgZnVuY3Rpb25cclxuXHJcbiAgc2hvd3NldFBhc3N3b3JkVXNlck1vZGFsKFVzZXI6IGFueSwgc2V0UGFzc3dvcmRVc2VyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgIHRoaXMuU2V0VXNlclBhc3N3b3JkRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgIHRoaXMuU2V0VXNlclBhc3N3b3JkRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtXHJcbiAgICB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldFNldFBBc3N3b3JkTW9kZWw7XHJcbiAgICB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0U2V0UGFzc3dvcmRGdW5jdGlvbjtcclxuICAgIHRoaXMuU2V0VXNlclBhc3N3b3JkRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG4gICAgdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGU7XHJcbiAgICB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zLk9uU3VjY2Vzc0hhbmRsZXIgPSB0aGlzLm9uU3VibWl0U3VjY2VzcztcclxuXHJcbiAgICB0aGlzLnNldFBhc3N3b3JkVXNlckxpc3QgPSBbXTtcclxuICAgIHRoaXMuc2V0UGFzc3dvcmRVc2VyTGlzdC5wdXNoKFVzZXIpO1xyXG4gICAgdGhpcy5OYW1lID0gVXNlci5uYW1lU3RyO1xyXG4gICAgdGhpcy5FbWFpbCA9IFVzZXIuZW1haWw7XHJcblxyXG4gICAgdGhpcy5QYXNzd29yZCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5QYXNzd29yZC5OYW1lID0gXCJQYXNzd29yZFwiO1xyXG4gICAgdGhpcy5QYXNzd29yZC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5QYXNzd29yZC5UeXBlID0gSW5wdXRUeXBlLlBhc3N3b3JkO1xyXG4gICAgdGhpcy5QYXNzd29yZC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmN1c3RvbVZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5ID0gKGNvbnRyb2wpID0+IHtcclxuICAgICAgbGV0IFBhc3N3b3JkID0gdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtLmNvbnRyb2xzW1wiUGFzc3dvcmRcIl0udmFsdWU7XHJcbiAgICAgIGlmIChjb250cm9sLnZhbHVlICE9IFBhc3N3b3JkKVxyXG4gICAgICAgIHJldHVybiB7ICdjdXN0b21lckVycm9yJzogdHJ1ZSB9O1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgICB0aGlzLmN1c3RvbVZhbGlkYXRpb24ubWFzc2FnZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBhc3N3b3JkTm90TWF0Y2hcIik7XHJcblxyXG4gICAgdGhpcy5QYXNzd29yZENvbmZpcm1hdGlvbiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5QYXNzd29yZENvbmZpcm1hdGlvbi5OYW1lID0gXCJQYXNzd29yZENvbmZpcm1hdGlvblwiO1xyXG4gICAgdGhpcy5QYXNzd29yZENvbmZpcm1hdGlvbi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5QYXNzd29yZENvbmZpcm1hdGlvbi5UeXBlID0gSW5wdXRUeXBlLlBhc3N3b3JkO1xyXG4gICAgdGhpcy5QYXNzd29yZENvbmZpcm1hdGlvbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIHRoaXMuUGFzc3dvcmRDb25maXJtYXRpb24uQ3VzdG9tVmFsaWRhdGlvbiA9IFt0aGlzLmN1c3RvbVZhbGlkYXRpb25dO1xyXG5cclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oc2V0UGFzc3dvcmRVc2VyTW9kYWwpO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gIH1cclxuICBnZXRTZXRQQXNzd29yZE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IHVwZGF0ZXNVc2VycyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuc2V0UGFzc3dvcmRVc2VyTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLnNldFBhc3N3b3JkVXNlckxpc3RbaW5kZXhdO1xyXG4gICAgICBlbGVtZW50LlBhc3N3b3JkID0gUmVzdWx0TW9kZWwuUGFzc3dvcmQ7XHJcbiAgICAgIGVsZW1lbnQuUGFzc3dvcmRDb25maXJtYXRpb24gPSBSZXN1bHRNb2RlbC5QYXNzd29yZENvbmZpcm1hdGlvbjtcclxuICAgICAgdXBkYXRlc1VzZXJzLnB1c2goZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICBwYXJhbUFycmF5LnB1c2godXBkYXRlc1VzZXJzKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0U2V0UGFzc3dvcmRGdW5jdGlvbiA9IChwYXNzd29yZExpc3RNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5TZXRVc2Vyc1Bhc3N3b3JkKHBhc3N3b3JkTGlzdE1vZGVsKTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0U3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMucmVzZXRVc2Vyc0NvdW50KCk7XHJcbiAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgLy9Vc2VycyBMaXN0IEZ1bmN0aW9uc1xyXG5cclxuICAvL1Nob3cgYWN0aXZhdGUsZGVhY3RpdmF0ZSxyZXNldFBhc3N3b3JkLHNlbmRhY3RpdmF0aW9uZW1haWwgbW9kYWxzXHJcbiAgc2hvd0NvbmZpcm1hdGlvbk1vZGFsKHR5cGU6IG51bWJlciwgQ29uZmlybWF0aW9uTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHRoaXMuQ29uZmlybWF0aW9uTWVzc2FnZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2YXRlQ29uZmlybWF0aW9uXCIpO1xyXG4gICAgICAgIHRoaXMuQ29uZmlybWF0aW9uTW9kYWxUeXBlID0gMVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgdGhpcy5Db25maXJtYXRpb25NZXNzYWdlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVhY3RpdmF0ZUNvbmZpcm1hdGlvblwiKTtcclxuICAgICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsVHlwZSA9IDJcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAzOlxyXG4gICAgICAgIHRoaXMuQ29uZmlybWF0aW9uTWVzc2FnZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJlc2V0UGFzc3dvcmRDb25maXJtYXRpb25cIik7XHJcbiAgICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbFR5cGUgPSAzXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNDpcclxuICAgICAgICB0aGlzLkNvbmZpcm1hdGlvbk1lc3NhZ2UgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kQWN0aXZhdGlvbk1haWxDb25maXJtYXRpb25cIik7XHJcbiAgICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbFR5cGUgPSA0XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihDb25maXJtYXRpb25Nb2RhbCk7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gIH1cclxuICAvL0FjdGl2YXRlIHVzZXJzIGxpc3RcclxuICBhY3RpdmF0ZVVzZXJMaXN0KCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5BY3RpdmF0ZVVzZXJzKHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QgPSBbXTtcclxuICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLnBhZ2luZ0VsZW1lbnQgYXMgYW55O1xyXG4gICAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICB0aGlzLnJlc2V0VXNlcnNDb3VudCgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy9EZWFjdGl2YXRlIHVzZXJzIGxpc3RcclxuICBkZWFjdGl2YXRlVXNlckxpc3QoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLkRlYWN0aXZhdGVVc2Vycyh0aGlzLlNlbGVjdGVkVXNlckxpc3QpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0ID0gW107XHJcbiAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5wYWdpbmdFbGVtZW50IGFzIGFueTtcclxuICAgICAgZWxlbWVudC5VcGRhdGVQYWdpbmcoKTtcclxuICAgICAgdGhpcy5yZXNldFVzZXJzQ291bnQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9ucygpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vUmVzZXQgcGFzc3dvcmRzIHVzZXJzIGxpc3RcclxuICByZXNldFVzZXJQYXNzd29yZExpc3QoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLlJlc2V0VXNlcnNQYXNzd29yZCh0aGlzLlNlbGVjdGVkVXNlckxpc3QpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0ID0gW107XHJcbiAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5wYWdpbmdFbGVtZW50IGFzIGFueTtcclxuICAgICAgZWxlbWVudC5VcGRhdGVQYWdpbmcoKTtcclxuICAgICAgdGhpcy5yZXNldFVzZXJzQ291bnQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9ucygpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjxkaXYgKm5nSWY9XCJTaG93UGFnZUNvbnRlbnRcIiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDwhLS0gYmVnaW46OkhlYWRlciAtLT5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIlVzZXJzRm9ybVwiPlxyXG4gICAgICAgICAgPCEtLSAoT25DaGFuZ2UpPVwic2VhcmNoQ2xpZW50U2lkZSgkZXZlbnQpXCIgLS0+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiVXNlcnNGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgIDwhLS0gYmVnaW46Ok1lbnUgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dHZW5lcmFsQnRuc1wiIG5nYkRyb3Bkb3duIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBTaG93UGFnZUNvbnRlbnQ9PXRydWU/J2Jsb2NrJzonbm9uZSd9XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2FkTGlzdHMoKVwiIG5nYkRyb3Bkb3duVG9nZ2xlIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIlxyXG4gICAgICAgICAgICBpZD1cIkZpbHRlcnNEcm9wZG93blwiIHRpdGxlPVwiRmlsdGVyXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJGaWx0ZXJcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiRmlsdGVyc0Ryb3Bkb3duXCJcclxuICAgICAgICAgICAgY2xhc3M9XCIgZmlsdGVyLWNvbnRhaW5lciBtZW51IG1lbnUtc3ViIG1lbnUtc3ViLWRyb3Bkb3duIG1lbnUtY29sdW1uIG1lbnUtcm91bmRlZCBtZW51LWdyYXktODAwIG1lbnUtc3RhdGUtYmctbGlnaHQtcHJpbWFyeSAgdy0yNTBweCB3LW1kLTUwMHB4IGZ3LWJvbGQgcHktMyBkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIj5cclxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJVc2Vyc0Zvcm1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNyBweS01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICNwZXJtaXNzaW9uU2V0RERMIFtvcHRpb25zXT1cInBlcm1pc3Npb25TZXRzT3B0aW9uc1wiIFtncm91cF09XCJVc2Vyc0Zvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2FjY291bnRTdGF0dXNEREwgW29wdGlvbnNdPVwiYWNjb3VudFN0YXR1c09wdGlvbnNcIiBbZ3JvdXBdPVwiVXNlcnNGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICNsb2NrZWRTdGF0dXNEREwgW29wdGlvbnNdPVwibG9ja2VkU3RhdHVzT3B0aW9uc1wiIFtncm91cF09XCJVc2Vyc0Zvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2RlcGFydG1lbnRzRERMIFtvcHRpb25zXT1cImRlcGFydG1lbnRzT3B0aW9uc1wiIFtncm91cF09XCJVc2Vyc0Zvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeSBwdi1yZXNldCBidG4tc21cIiBuYW1lPVwidXNlcnNGaWx0ZXJzQnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRcIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0dlbmVyYWxCdG5zXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhwb3J0RXhjZWwoKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtMyBibnNpZ2h0cy1idG4tZXhwb3J0XCIgdGl0bGU9XCJFeHBvcnRcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWRvd25sb2FkIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFeHBvcnRcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93QWN0aXZhdGVCdG5cIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidG5BY3RpdmF0ZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd0NvbmZpcm1hdGlvbk1vZGFsKDEsIENvbmZpcm1hdGlvbk1vZGFsKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1oaXN0b3J5XCI+PC9pPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmF0ZVwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dEZWFjdGl2YXRlQnRuXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwiYnRuRGVhY3RpdmF0ZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd0NvbmZpcm1hdGlvbk1vZGFsKDIsIENvbmZpcm1hdGlvbk1vZGFsKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wb3dlci1vZmZcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVhY3RpdmF0ZVwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dSZXNldFBhc3NCdG5cIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidG5SZXNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNob3dDb25maXJtYXRpb25Nb2RhbCgzLCBDb25maXJtYXRpb25Nb2RhbClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nXCI+PC9pPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJlc2V0UGFzc3dvcmRcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93U2VuZEVtYWlsQnRuXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwiYnRuUmVzZW5kQWN0aXZhdGlvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd0NvbmZpcm1hdGlvbk1vZGFsKDQgLCBDb25maXJtYXRpb25Nb2RhbClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGVcIj48L2k+IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRBY3RpdmF0aW9uRW1haWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93R2VuZXJhbEJ0bnNcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgdGl0bGU9XCJBZGRcIiAoY2xpY2spPVwic2hvd0FkZFVzZXJNb2RhbChhZGRVc2VyTW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwhLS0gZW5kOjpNZW51IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBlbmQ6OkhlYWRlciAtLT5cclxuICAgIDwhLS0gYmVnaW46OkJvZHkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPCEtLSBiZWdpbjo6VGFibGUgY29udGFpbmVyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHVzZXJzLXRhYmxlXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidy01MHB4XCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLXNtIGZvcm0tY2hlY2stY3VzdG9tIGZvcm0tY2hlY2stc29saWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwic2VsZWN0QWxsVXNlckxpc3QoJGV2ZW50LGNsaWVudFNpZGVQYWdpbmdSZXN1bHQpXCIgW2NoZWNrZWRdPVwiYWxsU2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIChjaGFuZ2UpPVwic2VsZWN0QWxsVXNlckxpc3QoJGV2ZW50LFVzZXJQYWdpbmdSZXN1bHQpXCIgaWQ9XCJjaGtfU2VsZWN0QWxsXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgJm5ic3A7PHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW1haWxcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJNb2JpbGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSb2xlc1wiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlN0YXR1c1wiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHVzZXIgb2YgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1zbSBmb3JtLWNoZWNrLWN1c3RvbSBmb3JtLWNoZWNrLXNvbGlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLTxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAoY2hhbmdlKT1cInVwZGF0ZVVzZXJMaXN0KCRldmVudCx1c2VyKVwiIGlkPVwiVXNlci17e3VzZXIuaWR9fVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwidXBkYXRlVXNlckxpc3QoJGV2ZW50LHVzZXIpXCIgWyhuZ01vZGVsKV09XCJ1c2VyLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwic3ltYm9sLWxhYmVsIGZvbnQtc2l6ZS1oNSBmb250LXdlaWdodC1ib2xkIGJnLWxpZ2h0LXByaW1hcnkgbWwtMiBtYi0wIG1lLTNcIj5BPC9oNj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNob3dFZGl0VXNlck1vZGFsKHVzZXIuaURfR1VJRCxFZGl0VXNlck1vZGFsKVwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhcmsgZnctYm9sZGVyIHRleHQtaG92ZXItcHJpbWFyeSBmcy02XCI+e3t1c2VyLm5hbWVTdHJ9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57e3VzZXIudXNlcm5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7dXNlci5tb2JpbGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7dXNlci5wZXJtaXNzaW9uc2V0fX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiICpuZ0lmPVwidXNlci5pc0FjdGl2ZT09dHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVcIil9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXJcIiAqbmdJZj1cInVzZXIuaXNBY3RpdmU9PWZhbHNlJiYgdXNlci5hY3RpdmF0aW9uRGF0ZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWFjdGl2YXRlZFwiKX19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmdcIiAqbmdJZj1cInVzZXIuaXNBY3RpdmU9PWZhbHNlJiYgdXNlci5hY3RpdmF0aW9uRGF0ZT09bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQZW5kaW5nQWN0aXZhdGlvblwiKX19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1lbnUtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJzaG93RWRpdFVzZXJNb2RhbCh1c2VyLmlEX0dVSUQsRWRpdFVzZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJtZW51LWl0ZW0gcHgtM1wiICpuZ0lmPVwidXNlci5pc0FjdGl2ZVwiIGlkPVwiYnRuRGVhY3RpdmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0FjdGl2YXRlVXNlck1vZGFsKHVzZXIsZmFsc2UsQWN0aXZhdGVVc2VyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVhY3RpdmF0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwibWVudS1pdGVtIHB4LTNcIiBpZD1cImJ0bmFjdGl2YXRlXCIgKGNsaWNrKT1cInNob3dBY3RpdmF0ZVVzZXJNb2RhbCh1c2VyLHRydWUsQWN0aXZhdGVVc2VyTW9kYWwpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXVzZXIuaXNBY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmF0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwibWVudS1pdGVtIHB4LTNcIiBpZD1cImJ0blJlc2V0UGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1Jlc2V0UGFzc3dvcmRVc2VyTW9kYWwodXNlciAsIFJlc2V0UGFzc3dvcmRVc2VyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRQYXNzd29yZFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwibWVudS1pdGVtIHB4LTNcIiBpZD1cImJ0blJlc2V0UGFzc1wiIChjbGljayk9XCJzaG93c2V0UGFzc3dvcmRVc2VyTW9kYWwodXNlciwgc2V0UGFzc3dvcmRVc2VyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2V0UGFzc3dvcmRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cIm1lbnUtaXRlbSBweC0zXCIgaWQ9XCJidG5SZXNldFBhc3NcIiAqbmdJZj1cIiF1c2VyLmlzQWN0aXZlJiZ1c2VyLmFjdGl2YXRpb25EYXRlPT1udWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93U2VuZEFjdGl2YXRpb25FbWFpbE1vZGFsKHVzZXIgLCBTZW5kQWN0aXZhdGlvbkVtYWlsTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VuZEFjdGl2YXRpb25FbWFpbFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNlwiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8IS0tIGVuZDo6VGFibGUgLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIGVuZDo6VGFibGUgY29udGFpbmVyIC0tPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgIDwhLS0gYmVnaW4gcGFnaW5nLS0+XHJcbiAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0VXNlcnNMaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCIgW29wdGlvbnNdPVwiVXNlclBhZ2luZ1wiIFtncm91cF09XCJVc2Vyc0Zvcm1cIiAjVXNlclBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICA8IS0tIEVuZCBwYWdpbmctLT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gYWRkIHVzZXItLT5cclxuPG5nLXRlbXBsYXRlICNhZGRVc2VyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFVzZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiQWRkVXNlckZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiQWRkTmFtZVwiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkFkZFVzZXJuYW1lXCIgW2dyb3VwXT1cIkFkZFVzZXJGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiQWRkU2FtQWNjb3VudFwiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkFkZFVzZXJFSURcIiBbZ3JvdXBdPVwiQWRkVXNlckZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZFVzZXJOYXRpb25hbGl0eVwiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIDxCQlNGLVBob25lIFtvcHRpb25zXT1cIkFkZE1vYmlsZU51bWJlclwiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1QaG9uZT5cclxuICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZFVzZXJEZXBhcnRtZW50XCIgW2dyb3VwXT1cIkFkZFVzZXJGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiQWRkU2VuZEFjdGl2YXRpb25FbWFpbFwiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IChPbkNoYW5nZSk9XCJjaGFuZ2VQZXJtaXNzaW9uU2V0KCRldmVudCx0cnVlKVwiIFtvcHRpb25zXT1cIkFkZFVzZXJQZXJtaXNzaW9uU2V0XCIgW2dyb3VwXT1cIkFkZFVzZXJGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZFVzZXJQZXJtaXNzaW9uc1wiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIDxCQlNGLVByb2ZpbGVJbWFnZVVwbG9hZGVyIFtvcHRpb25zXT1cIkFkZFByb2ZpbGVJbWFnZVwiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1Qcm9maWxlSW1hZ2VVcGxvYWRlcj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI0Nsb3NlVXNlck1vZGFsIGlkPVwiQ2xvc2VVc2VyTW9kYWxcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fSA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRWRpdCB1c2VyLS0+XHJcbjxuZy10ZW1wbGF0ZSAjRWRpdFVzZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFVzZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdFVzZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkVkaXROYW1lXCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICA8QkJTRi1QaG9uZSBbb3B0aW9uc109XCJFZGl0TW9iaWxlTnVtYmVyXCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1QaG9uZT5cclxuICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0VXNlcm5hbWVcIiBbZ3JvdXBdPVwiRWRpdFVzZXJGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdEVtYWlsXCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRTYW1BY2NvdW50XCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRVc2VyRUlEXCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFVzZXJOYXRpb25hbGl0eVwiIFtncm91cF09XCJFZGl0VXNlckZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFVzZXJEZXBhcnRtZW50XCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAoT25DaGFuZ2UpPVwiY2hhbmdlUGVybWlzc2lvblNldCgkZXZlbnQsZmFsc2UpXCIgW29wdGlvbnNdPVwiRWRpdFVzZXJQZXJtaXNzaW9uU2V0XCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0VXNlclBlcm1pc3Npb25zXCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIDxCQlNGLVByb2ZpbGVJbWFnZVVwbG9hZGVyIFtvcHRpb25zXT1cIkVkaXRQcm9maWxlSW1hZ2VcIiBbZ3JvdXBdPVwiRWRpdFVzZXJGb3JtXCI+PC9CQlNGLVByb2ZpbGVJbWFnZVVwbG9hZGVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgI0Nsb3NlRWRpdFVzZXJNb2RhbCBpZD1cIkNsb3NlRWRpdFVzZXJNb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcblxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tIERlYWN0aXZhdGUvQWN0aXZhdGUgVXNlciBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNBY3RpdmF0ZVVzZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCIgKm5nSWY9XCIhU2hvd0FjdGl2YXRlTW9kZWxEYXRhXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlYWN0aXZhdGVcIil9fVxyXG4gICAgICA8L2gxPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCIgKm5nSWY9XCJTaG93QWN0aXZhdGVNb2RlbERhdGFcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZhdGVcIil9fVxyXG4gICAgICA8L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aWNlIGQtZmxleCBiZy1saWdodC13YXJuaW5nIHJvdW5kZWQgYm9yZGVyLXdhcm5pbmcgYm9yZGVyIGJvcmRlci1kYXNoZWQgbWItMTAgcC02XCI+XHJcbiAgICAgIDwhLS1iZWdpbjo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OlN2ZyBJY29uIHwgcGF0aDogaWNvbnMvZHVvdHVuZS9nZW5lcmFsL2dlbjA0NC5zdmctLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24td2FybmluZyBtZS00XCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9nZW4wNDQuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8IS0tZW5kOjpTdmcgSWNvbi0tPlxyXG4gICAgICA8IS0tZW5kOjpJY29uLS0+XHJcbiAgICAgIDwhLS1iZWdpbjo6V3JhcHBlci0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgZmxleC1ncm93LTFcIj5cclxuICAgICAgICA8IS0tYmVnaW46OkNvbnRlbnQtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiICpuZ0lmPVwiIVNob3dBY3RpdmF0ZU1vZGVsRGF0YVwiPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWFjdGl2YXRlQ29uZmlybWF0aW9uXCIpfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiICpuZ0lmPVwiU2hvd0FjdGl2YXRlTW9kZWxEYXRhXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2YXRlQ29uZmlybWF0aW9uXCIpfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1lbmQ6OkNvbnRlbnQtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS1lbmQ6OldyYXBwZXItLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBpZD1cIlwiIGNsYXNzPVwiXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGlkPVwidGFibGVDb25maXJtYXRpb25cIiBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVtYWlsXCIpfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ckl0ZW1cIj5cclxuICAgICAgICAgICAgICA8dGQ+e3tOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57e0VtYWlsfX08L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI0Nsb3NlQWN0aXZhdGVVc2VyTW9kYWwgaWQ9XCJDbG9zZUFjdGl2YXRlVXNlck1vZGFsXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19IDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIiFTaG93QWN0aXZhdGVNb2RlbERhdGFcIiAoY2xpY2spPVwiZGVhY3RpdmF0ZSgpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiU2hvd0FjdGl2YXRlTW9kZWxEYXRhXCIgKGNsaWNrKT1cImFjdGl2YXRlKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSBSZXNldFBhc3N3b3JkIFVzZXIgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjUmVzZXRQYXNzd29yZFVzZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRQYXNzd29yZFwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm5vdGljZSBkLWZsZXggYmctbGlnaHQtd2FybmluZyByb3VuZGVkIGJvcmRlci13YXJuaW5nIGJvcmRlciBib3JkZXItZGFzaGVkIG1iLTEwIHAtNlwiPlxyXG4gICAgICA8IS0tYmVnaW46Okljb24tLT5cclxuICAgICAgPCEtLWJlZ2luOjpTdmcgSWNvbiB8IHBhdGg6IGljb25zL2R1b3R1bmUvZ2VuZXJhbC9nZW4wNDQuc3ZnLS0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLXdhcm5pbmcgbWUtNFwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvZ2VuMDQ0LnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPCEtLWVuZDo6U3ZnIEljb24tLT5cclxuICAgICAgPCEtLWVuZDo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OldyYXBwZXItLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPCEtLWJlZ2luOjpDb250ZW50LS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IHRleHQtZ3JheS03MDBcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRQYXNzd29yZENvbmZpcm1hdGlvblwiKX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tZW5kOjpDb250ZW50LS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tZW5kOjpXcmFwcGVyLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTIwMFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTIwMFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVtYWlsXCIpfX08L3RoPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgPHRyIGNsYXNzPVwidHJJdGVtXCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZGFya1wiPnt7TmFtZX19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7RW1haWx9fTwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICA8YnV0dG9uIGlkPVwiQ2xvc2VSZXNldFBhc3N3b3JkVXNlck1vZGFsXCIgI0Nsb3NlUmVzZXRQYXNzd29yZFVzZXJNb2RhbCB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19PC9idXR0b24+XHJcblxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzZXRQYXNzd29yZCgpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gc2V0UGFzc3dvcmQgVXNlciBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNzZXRQYXNzd29yZFVzZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2V0UGFzc3dvcmRcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJub3RpY2UgZC1mbGV4IGJnLWxpZ2h0LXdhcm5pbmcgcm91bmRlZCBib3JkZXItd2FybmluZyBib3JkZXIgYm9yZGVyLWRhc2hlZCBtYi0xMCBwLTZcIj5cclxuICAgICAgPCEtLWJlZ2luOjpJY29uLS0+XHJcbiAgICAgIDwhLS1iZWdpbjo6U3ZnIEljb24gfCBwYXRoOiBpY29ucy9kdW90dW5lL2dlbmVyYWwvZ2VuMDQ0LnN2Zy0tPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJ0eCBzdmctaWNvbi13YXJuaW5nIG1lLTRcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2dlbjA0NC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDwhLS1lbmQ6OlN2ZyBJY29uLS0+XHJcbiAgICAgIDwhLS1lbmQ6Okljb24tLT5cclxuICAgICAgPCEtLWJlZ2luOjpXcmFwcGVyLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgIDwhLS1iZWdpbjo6Q29udGVudC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNiB0ZXh0LWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNldFBhc3N3b3JkQ29uZmlybWF0aW9uXCIpfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1lbmQ6OkNvbnRlbnQtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS1lbmQ6OldyYXBwZXItLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIlNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGlkPVwidGFibGVDb25maXJtYXRpb25cIiBjbGFzcz1cInRhYmxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBcIj4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MFwiPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbWFpbFwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFzc3dvcmRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvbmZpcm1QYXNzd29yZFwiKX19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidHJJdGVtXCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWxpZ24tbWlkZGxlXCI+e3tOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFsaWduLW1pZGRsZVwiPnt7RW1haWx9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJQYXNzd29yZFwiIFtncm91cF09XCJTZXRVc2VyUGFzc3dvcmRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlBhc3N3b3JkQ29uZmlybWF0aW9uXCIgW2dyb3VwXT1cIlNldFVzZXJQYXNzd29yZEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uIGlkPVwiQ2xvc2VzZXRQYXNzd29yZFVzZXJNb2RhbFwiICNDbG9zZXNldFBhc3N3b3JkVXNlck1vZGFsIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG5cclxuXHJcblxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBTZW5kIEFjdGl2YXRpb24gRW1haWwgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjU2VuZEFjdGl2YXRpb25FbWFpbE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kQWN0aXZhdGlvbkVtYWlsXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aWNlIGQtZmxleCBiZy1saWdodC13YXJuaW5nIHJvdW5kZWQgYm9yZGVyLXdhcm5pbmcgYm9yZGVyIGJvcmRlci1kYXNoZWQgbWItMTAgcC02XCI+XHJcbiAgICAgIDwhLS1iZWdpbjo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OlN2ZyBJY29uIHwgcGF0aDogaWNvbnMvZHVvdHVuZS9nZW5lcmFsL2dlbjA0NC5zdmctLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24td2FybmluZyBtZS00XCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9nZW4wNDQuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8IS0tZW5kOjpTdmcgSWNvbi0tPlxyXG4gICAgICA8IS0tZW5kOjpJY29uLS0+XHJcbiAgICAgIDwhLS1iZWdpbjo6V3JhcHBlci0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgZmxleC1ncm93LTFcIj5cclxuICAgICAgICA8IS0tYmVnaW46OkNvbnRlbnQtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmF0ZUNvbmZpcm1hdGlvblwiKX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tZW5kOjpDb250ZW50LS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tZW5kOjpXcmFwcGVyLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJub3RlIG5vdGUtd2FybmluZyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgPHRhYmxlIGlkPVwidGFibGVDb25maXJtYXRpb25cIiBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW1haWxcIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwXCIgKm5nSWY9XCJTZWxlY3RlZFVzZXJMaXN0Lmxlbmd0aD4xXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB1c2VyIG9mIFNlbGVjdGVkVXNlckxpc3RcIiBjbGFzcz1cInRySXRlbVwiPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e3VzZXIubmFtZVN0cn19PC90ZD5cclxuXHJcbiAgICAgICAgICAgIDx0ZD57e3VzZXIudXNlcm5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlNlbGVjdGVkVXNlckxpc3QubGVuZ3RoPjFcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZGVsZXRlVXNlckZyb21MaXN0KHVzZXIpXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0LWRhbmdlciBidG4taWNvbiBidG4tc21cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRyYXNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgPGJ1dHRvbiAjQ2xvc2VBY3RpdmF0aW9uRW1haWxNb2RhbCBpZD1cIkNsb3NlQWN0aXZhdGlvbkVtYWlsTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIlxyXG4gICAgICAgIChjbGljayk9XCJzZW5kQWN0aXZhdGlvbkVtYWlsRm9yVXNlcigpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBjb25maXJtYXRpb24gTWVzc2FnZSAgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjQ29uZmlybWF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvbmZpcm1hdGlvbk1lc3NhZ2VcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJub3RpY2UgZC1mbGV4IGJnLWxpZ2h0LXdhcm5pbmcgcm91bmRlZCBib3JkZXItd2FybmluZyBib3JkZXIgYm9yZGVyLWRhc2hlZCBtYi0xMCBwLTZcIj5cclxuICAgICAgPCEtLWJlZ2luOjpJY29uLS0+XHJcbiAgICAgIDwhLS1iZWdpbjo6U3ZnIEljb24gfCBwYXRoOiBpY29ucy9kdW90dW5lL2dlbmVyYWwvZ2VuMDQ0LnN2Zy0tPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJ0eCBzdmctaWNvbi13YXJuaW5nIG1lLTRcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2dlbjA0NC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDwhLS1lbmQ6OlN2ZyBJY29uLS0+XHJcbiAgICAgIDwhLS1lbmQ6Okljb24tLT5cclxuICAgICAgPCEtLWJlZ2luOjpXcmFwcGVyLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgIDwhLS1iZWdpbjo6Q29udGVudC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNiB0ZXh0LWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgIHt7Q29uZmlybWF0aW9uTWVzc2FnZX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tZW5kOjpDb250ZW50LS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tZW5kOjpXcmFwcGVyLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICA8dGFibGUgaWQ9XCJ0YWJsZUNvbmZpcm1hdGlvblwiIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbWFpbFwiKX19PC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBcIiAqbmdJZj1cIlNlbGVjdGVkVXNlckxpc3QubGVuZ3RoPjFcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHVzZXIgb2YgU2VsZWN0ZWRVc2VyTGlzdFwiIGNsYXNzPVwidHJJdGVtXCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZGFya1wiPnt7dXNlci5uYW1lU3RyfX08L3RkPlxyXG5cclxuICAgICAgICAgICAgPHRkPnt7dXNlci51c2VybmFtZX19PC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiU2VsZWN0ZWRVc2VyTGlzdC5sZW5ndGg+MVwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkZWxldGVVc2VyRnJvbUxpc3QodXNlcilcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQtZGFuZ2VyIGJ0bi1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10cmFzaFwiPjwvaT5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgIDxidXR0b24gI0Nsb3NlQ29uZmlybWF0aW9uTW9kYWwgaWQ9XCJDbG9zZUNvbmZpcm1hdGlvbk1vZGFsXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIkNvbmZpcm1hdGlvbk1vZGFsVHlwZT09MVwiIChjbGljayk9XCJhY3RpdmF0ZVVzZXJMaXN0KClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJDb25maXJtYXRpb25Nb2RhbFR5cGU9PTJcIiAoY2xpY2spPVwiZGVhY3RpdmF0ZVVzZXJMaXN0KClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJDb25maXJtYXRpb25Nb2RhbFR5cGU9PTNcIiAoY2xpY2spPVwicmVzZXRVc2VyUGFzc3dvcmRMaXN0KClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJDb25maXJtYXRpb25Nb2RhbFR5cGU9PTRcIiAoY2xpY2spPVwic2VuZEFjdGl2YXRpb25FbWFpbEZvclVzZXIoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|