@bnsights/bbsf-admin-portal 1.0.0 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/bnsights-bbsf-admin-portal-1.0.5.tgz +0 -0
  2. package/bundles/bnsights-bbsf-admin-portal.umd.js +19694 -20386
  3. package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
  4. package/esm2015/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.js +2 -2
  5. package/esm2015/lib/Pages/account/account-routing.module.js +3 -1
  6. package/esm2015/lib/Pages/account/account.component.js +15 -6
  7. package/esm2015/lib/Pages/account/account.module.js +16 -8
  8. package/esm2015/lib/Pages/account/forgot-password/forgot-password.component.js +48 -0
  9. package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +392 -387
  10. package/esm2015/lib/Pages/core/authentication/auth.service.js +1 -2
  11. package/esm2015/lib/Pages/departments/department/department.component.js +59 -98
  12. package/esm2015/lib/Pages/departments/department-info/department-info.component.js +85 -94
  13. package/esm2015/lib/Pages/departments/departments.module.js +4 -1
  14. package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +224 -223
  15. package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +137 -146
  16. package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +136 -153
  17. package/esm2015/lib/Pages/home/home.component.js +32 -26
  18. package/esm2015/lib/Pages/home/home.module.js +5 -10
  19. package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +336 -317
  20. package/esm2015/lib/Pages/jobs/jobs/jobs.component.js +168 -227
  21. package/esm2015/lib/Pages/license/license/license.component.js +68 -99
  22. package/esm2015/lib/Pages/localizations/localizations.component.js +378 -341
  23. package/esm2015/lib/Pages/logs/log/log.component.js +18 -27
  24. package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +297 -288
  25. package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +143 -165
  26. package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +234 -233
  27. package/esm2015/lib/Pages/lookups/lookups-routing.module.js +2 -2
  28. package/esm2015/lib/Pages/notifications/add/add.component.js +83 -76
  29. package/esm2015/lib/Pages/notifications/edit/edit.component.js +60 -63
  30. package/esm2015/lib/Pages/notifications/edit-email/edit-email.component.js +128 -126
  31. package/esm2015/lib/Pages/notifications/edit-sms/edit-sms.component.js +87 -85
  32. package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +57 -58
  33. package/esm2015/lib/Pages/notifications/notifications-routing.module.js +1 -3
  34. package/esm2015/lib/Pages/notifications/notifications.module.js +3 -4
  35. package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +232 -228
  36. package/esm2015/lib/Pages/notifications/templates/templates.component.js +347 -310
  37. package/esm2015/lib/Pages/providers/provider/provider.component.js +54 -52
  38. package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +268 -270
  39. package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +136 -152
  40. package/esm2015/lib/Pages/roles/permissions/permissions.component.js +182 -218
  41. package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +219 -254
  42. package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +134 -142
  43. package/esm2015/lib/Pages/sectors/sector/sector.component.js +127 -144
  44. package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +123 -139
  45. package/esm2015/lib/Pages/shared/Enums/ConfigurationScope.js +8 -0
  46. package/esm2015/lib/Pages/shared/Enums/ConfigurationType.js +8 -0
  47. package/esm2015/lib/Pages/shared/Enums/ConfigurationValueSource.js +6 -0
  48. package/esm2015/lib/Pages/shared/Enums/ParticipantType.js +8 -0
  49. package/esm2015/lib/Pages/shared/Services/AccountService.service.js +21 -0
  50. package/esm2015/lib/Pages/shared/Services/ConfigurationsService.service.js +15 -12
  51. package/esm2015/lib/Pages/shared/Services/DepartmentService.service.js +5 -8
  52. package/esm2015/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.js +10 -9
  53. package/esm2015/lib/Pages/shared/Services/HelpCenterService.service.js +10 -7
  54. package/esm2015/lib/Pages/shared/Services/ImpersonationRuleService.service.js +14 -8
  55. package/esm2015/lib/Pages/shared/Services/LicenseService.service.js +3 -3
  56. package/esm2015/lib/Pages/shared/Services/LogsService.js +1 -1
  57. package/esm2015/lib/Pages/shared/Services/LookupGroupsService.service.js +11 -5
  58. package/esm2015/lib/Pages/shared/Services/LookupService.service.js +31 -15
  59. package/esm2015/lib/Pages/shared/Services/PermissionSetService.service.js +18 -8
  60. package/esm2015/lib/Pages/shared/Services/PermissionsService.service.js +12 -9
  61. package/esm2015/lib/Pages/shared/Services/PublicHolidayService.service.js +9 -3
  62. package/esm2015/lib/Pages/shared/Services/SectorService.service.js +18 -13
  63. package/esm2015/lib/Pages/shared/Services/TemplateService.service.js +36 -29
  64. package/esm2015/lib/Pages/shared/Services/localizationsService.service .js +23 -13
  65. package/esm2015/lib/Pages/shared/Services/provider.service.js +5 -7
  66. package/esm2015/lib/Pages/shared/Services/userService.service.js +10 -2
  67. package/esm2015/lib/Pages/shared/models/AccountModels/forgotPasswordModel.js +6 -0
  68. package/esm2015/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.js +1 -1
  69. package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.js +1 -1
  70. package/esm2015/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.js +1 -1
  71. package/esm2015/lib/Pages/shared/models/Lookups/LookupItem.js +1 -1
  72. package/esm2015/lib/Pages/shared/models/Lookups/LookupModel.js +1 -2
  73. package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.js +1 -1
  74. package/esm2015/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.js +1 -1
  75. package/esm2015/lib/Pages/users/users.component.js +398 -409
  76. package/esm2015/lib/masterlayout-routing.module.js +5 -4
  77. package/esm2015/lib/masterlayout.component.js +22 -32
  78. package/esm2015/lib/masterlayout.module.js +25 -19
  79. package/fesm2015/bnsights-bbsf-admin-portal.js +17295 -17401
  80. package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
  81. package/lib/Pages/account/account.component.d.ts +5 -1
  82. package/lib/Pages/account/account.module.d.ts +8 -6
  83. package/lib/Pages/account/forgot-password/forgot-password.component.d.ts +20 -0
  84. package/lib/Pages/configurations/configuration/configuration.component.d.ts +39 -31
  85. package/lib/Pages/departments/department/department.component.d.ts +19 -15
  86. package/lib/Pages/departments/department-info/department-info.component.d.ts +31 -28
  87. package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +34 -32
  88. package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +31 -34
  89. package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +30 -35
  90. package/lib/Pages/home/home.component.d.ts +4 -4
  91. package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +43 -42
  92. package/lib/Pages/jobs/jobs/jobs.component.d.ts +56 -62
  93. package/lib/Pages/license/license/license.component.d.ts +25 -23
  94. package/lib/Pages/localizations/localizations.component.d.ts +77 -65
  95. package/lib/Pages/logs/log/log.component.d.ts +7 -11
  96. package/lib/Pages/lookups/lookup/lookup.component.d.ts +64 -59
  97. package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +44 -45
  98. package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +62 -56
  99. package/lib/Pages/notifications/add/add.component.d.ts +13 -11
  100. package/lib/Pages/notifications/edit/edit.component.d.ts +14 -14
  101. package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +18 -20
  102. package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +15 -16
  103. package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +24 -25
  104. package/lib/Pages/notifications/notifications.module.d.ts +15 -16
  105. package/lib/Pages/notifications/template-info/template-info.component.d.ts +32 -32
  106. package/lib/Pages/notifications/templates/templates.component.d.ts +54 -46
  107. package/lib/Pages/providers/provider/provider.component.d.ts +13 -12
  108. package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +29 -27
  109. package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +39 -40
  110. package/lib/Pages/roles/permissions/permissions.component.d.ts +49 -54
  111. package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +53 -55
  112. package/lib/Pages/sectors/department-info/department-info.component.d.ts +41 -44
  113. package/lib/Pages/sectors/sector/sector.component.d.ts +35 -33
  114. package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +40 -44
  115. package/lib/Pages/shared/Enums/ConfigurationScope.d.ts +5 -0
  116. package/lib/Pages/shared/Enums/ConfigurationType.d.ts +6 -0
  117. package/lib/Pages/shared/Enums/ConfigurationValueSource.d.ts +4 -0
  118. package/lib/Pages/shared/Enums/ParticipantType.d.ts +6 -0
  119. package/lib/Pages/shared/Services/AccountService.service.d.ts +10 -0
  120. package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +7 -8
  121. package/lib/Pages/shared/Services/DepartmentService.service.d.ts +2 -2
  122. package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +5 -5
  123. package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +2 -1
  124. package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +5 -5
  125. package/lib/Pages/shared/Services/LicenseService.service.d.ts +2 -2
  126. package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +4 -4
  127. package/lib/Pages/shared/Services/LookupService.service.d.ts +14 -11
  128. package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +8 -7
  129. package/lib/Pages/shared/Services/PermissionsService.service.d.ts +5 -6
  130. package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +2 -2
  131. package/lib/Pages/shared/Services/SectorService.service.d.ts +7 -7
  132. package/lib/Pages/shared/Services/TemplateService.service.d.ts +20 -19
  133. package/lib/Pages/shared/Services/localizationsService.service .d.ts +12 -11
  134. package/lib/Pages/shared/Services/provider.service.d.ts +1 -1
  135. package/lib/Pages/shared/Services/userService.service.d.ts +2 -0
  136. package/lib/Pages/shared/models/AccountModels/forgotPasswordModel.d.ts +3 -0
  137. package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +0 -1
  138. package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +1 -1
  139. package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +0 -2
  140. package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +1 -1
  141. package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +1 -1
  142. package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +1 -1
  143. package/lib/Pages/users/users.component.d.ts +54 -68
  144. package/lib/masterlayout.component.d.ts +4 -5
  145. package/lib/masterlayout.module.d.ts +8 -9
  146. package/package.json +5 -3
  147. package/src/lib/assets/sass/core/components/_variables.scss +1 -1
  148. package/src/lib/assets/sass/custom-styles-rtl.scss +5 -0
  149. package/src/lib/assets/sass/custom-styles.scss +153 -0
  150. package/src/lib/assets/sass/style-rtl.scss +2 -0
  151. package/src/lib/assets/sass/style.scss +2 -2
  152. package/bnsights-bbsf-admin-portal-0.0.1.tgz +0 -0
  153. package/bnsights-bbsf-admin-portal-1.0.0.tgz +0 -0
  154. package/esm2015/lib/Pages/notifications/edit-template/edit-template.component.js +0 -35
  155. package/lib/Pages/notifications/edit-template/edit-template.component.d.ts +0 -35
@@ -1,164 +1,166 @@
1
- import { __awaiter, __decorate } from "tslib";
1
+ import { __awaiter } from "tslib";
2
2
  import { Component } from '@angular/core';
3
3
  import { FormGroup } from '@angular/forms';
4
- import { ForceDirection, HtmlEditorOptions, InputType, TextBoxOptions } from '@bnsights/bbsf-controls';
5
- import { BlockUI } from 'ng-block-ui';
4
+ import { ForceDirection, FormOptions, HtmlEditorOptions, InputType, TextBoxOptions } from '@bnsights/bbsf-controls';
6
5
  import { PageInfoService } from '../../../_metronic/core/services/page-info.service';
7
6
  import { TemplateEditViewModel } from './../../shared/models/NotificationsModels/TemplateEditViewModel';
8
7
  import * as i0 from "@angular/core";
9
8
  import * as i1 from "../../../_metronic/core/services/page-info.service";
10
9
  import * as i2 from "@bnsights/bbsf-utilities";
11
- import * as i3 from "ngx-clipboard";
12
- import * as i4 from "../../shared/Services/data.service";
13
- import * as i5 from "../../shared/Services/TemplateService.service";
14
- import * as i6 from "@angular/router";
15
- import * as i7 from "ng-block-ui";
16
- import * as i8 from "@bnsights/bbsf-controls";
17
- import * as i9 from "@angular/common";
18
- import * as i10 from "@angular/forms";
10
+ import * as i3 from "../../shared/Services/TemplateService.service";
11
+ import * as i4 from "@angular/router";
12
+ import * as i5 from "ng-block-ui";
13
+ import * as i6 from "@bnsights/bbsf-controls";
14
+ import * as i7 from "@angular/common";
19
15
  export class EditEmailComponent {
20
- constructor(pageInfoService, authService, utilityService, bbsfTranslateService, environmentService, _clipboardService, dataServices, templateService, activatedRoute, router) {
16
+ constructor(pageInfoService, utilityService, bbsfTranslateService, templateService, activatedRoute, router, requestHandlerService) {
21
17
  this.pageInfoService = pageInfoService;
22
- this.authService = authService;
23
18
  this.utilityService = utilityService;
24
19
  this.bbsfTranslateService = bbsfTranslateService;
25
- this.environmentService = environmentService;
26
- this._clipboardService = _clipboardService;
27
- this.dataServices = dataServices;
28
20
  this.templateService = templateService;
29
21
  this.activatedRoute = activatedRoute;
30
22
  this.router = router;
31
- this.PageName = "";
32
- this.TemplateId = "";
23
+ this.requestHandlerService = requestHandlerService;
24
+ //Page Requirements
25
+ this.TemplateIdEnc = "";
33
26
  this.Lang = "";
27
+ //Initialize form and controls
34
28
  this.EditEmailForm = new FormGroup({});
35
- this.language = "";
29
+ this.EditEmailFormOptions = new FormOptions;
30
+ this.getEditEmailModel = () => {
31
+ let paramArray = [];
32
+ let ResultModel = this.EditEmailForm.value;
33
+ let EditModel = new TemplateEditViewModel();
34
+ EditModel.ID = Number(this.TemplateId);
35
+ EditModel.IDEncrypted = this.TemplateInfo.idEncrypted;
36
+ EditModel.IsEmail = true;
37
+ EditModel.IsSms = false;
38
+ EditModel.TemplateName = this.TemplateInfo.templateName;
39
+ EditModel.Language = this.Lang;
40
+ EditModel.emailtemplateinfo.ID = this.TemplateInfo.emailtemplateinfo.id;
41
+ EditModel.emailtemplateinfo.EmailBody.Arabic = ResultModel.EmailBodyInArabic;
42
+ EditModel.emailtemplateinfo.EmailBody.English = ResultModel.EmailBodyInEnglish;
43
+ EditModel.emailtemplateinfo.EmailSubject.Arabic = ResultModel.EmailSubjectInArabic;
44
+ EditModel.emailtemplateinfo.EmailSubject.English = ResultModel.EmailSubjectInEnglish;
45
+ EditModel.emailtemplateinfo.EmailHtmlBodyTagAttributes.Arabic = ResultModel.HtmlBodyTagAttributesArabic;
46
+ EditModel.emailtemplateinfo.EmailHtmlBodyTagAttributes.English = ResultModel.HtmlBodyTagAttributesEnglish;
47
+ EditModel.emailtemplateinfo.EmailHtmlHeadSection.Arabic = ResultModel.HTMLHeadSectionInArabic;
48
+ EditModel.emailtemplateinfo.EmailHtmlHeadSection.English = ResultModel.HTMLHeadSectionInEnglish;
49
+ paramArray.push(EditModel);
50
+ return paramArray;
51
+ };
52
+ this.getEditEmailFunction = (EditModel) => {
53
+ return this.templateService.editEmailTemplateByLang(EditModel);
54
+ };
55
+ this.onEditEmailSuccess = (result) => {
56
+ this.cancelEdit();
57
+ };
36
58
  this.activatedRoute.params.subscribe(params => {
37
- this.TemplateId = params['id'];
59
+ this.TemplateIdEnc = params['id'];
38
60
  this.Lang = params['lang'];
39
61
  });
40
62
  }
41
63
  ngOnInit() {
42
64
  return __awaiter(this, void 0, void 0, function* () {
43
- this.IsAEditFormLoaded = false;
44
65
  this.bbsfTranslateService.onLangChange.subscribe((event) => {
45
- this.language = event.lang;
46
66
  this.ngOnInit();
47
67
  });
48
- this.language = yield this.utilityService.getCurrentLanguage();
49
- this.templateService.GetTemplateInfoByLang(Number(this.TemplateId), this.Lang).subscribe((result) => {
50
- let Result = result;
51
- this.TemplateInfo = Result.val;
52
- let TemplateName = this.language == 'en' ? this.TemplateInfo.emailtemplateinfo.emailSubject.english : this.TemplateInfo.emailtemplateinfo.emailSubject.arabic;
53
- if (TemplateName == null || TemplateName == undefined)
54
- TemplateName = "";
55
- PageInfoService.PageTitle = this.utilityService.getResourceValue("Edit");
56
- PageInfoService.PageBreadcrumbs = [
57
- { title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
58
- { title: '', path: '', isSeparator: true, isActive: false },
59
- { title: this.utilityService.getResourceValue("Templates"), path: '/Admin/Notifications/Templates', isSeparator: false, isActive: false },
60
- { title: '', path: '', isSeparator: true, isActive: false },
61
- { title: TemplateName != "" ? this.utilityService.getResourceValue(TemplateName) : "", path: "/Admin/Notifications/TemplateInfo/" + this.TemplateInfo.id, isSeparator: false, isActive: false },
62
- { title: '', path: '', isSeparator: true, isActive: false }
63
- ];
64
- this.pageInfoService.calculateTitle();
65
- this.pageInfoService.calculateBreadcrumbs();
66
- this.EmailBodyInEnglish = new HtmlEditorOptions();
67
- this.EmailBodyInEnglish.Name = "EmailBodyInEnglish";
68
- this.EmailBodyInEnglish.LabelKey = "EmailBodyInEnglish";
69
- this.EmailBodyInEnglish.IsRequired = true;
70
- this.EmailBodyInEnglish.Value = this.TemplateInfo.emailtemplateinfo.emailBody.english;
71
- this.EmailBodyInArabic = new HtmlEditorOptions();
72
- this.EmailBodyInArabic.Name = "EmailBodyInArabic";
73
- this.EmailBodyInArabic.LabelKey = "EmailBodyInArabic";
74
- this.EmailBodyInArabic.IsRequired = true;
75
- this.EmailBodyInArabic.ForceDirection = ForceDirection.Arabic;
76
- this.EmailBodyInArabic.Value = this.TemplateInfo.emailtemplateinfo.emailBody.arabic;
77
- this.EmailSubjectInEnglish = new TextBoxOptions();
78
- this.EmailSubjectInEnglish.Name = "EmailSubjectInEnglish";
79
- this.EmailSubjectInEnglish.LabelValue = "EmailSubjectInEnglish";
80
- this.EmailSubjectInEnglish.LabelKey = "EmailSubjectInEnglish";
81
- this.EmailSubjectInEnglish.Type = InputType.Text;
82
- this.EmailSubjectInEnglish.Value = this.TemplateInfo.emailtemplateinfo.emailSubject.english;
83
- this.EmailSubjectInArabic = new TextBoxOptions();
84
- this.EmailSubjectInArabic.Name = "EmailSubjectInArabic";
85
- this.EmailSubjectInArabic.LabelKey = "EmailSubjectInArabic";
86
- this.EmailSubjectInArabic.Type = InputType.Text;
87
- this.EmailSubjectInArabic.ForceDirection = ForceDirection.Arabic;
88
- this.EmailSubjectInArabic.Value = this.TemplateInfo.emailtemplateinfo.emailSubject.arabic;
89
- this.HtmlBodyTagAttributesEnglish = new TextBoxOptions();
90
- this.HtmlBodyTagAttributesEnglish.Name = "HtmlBodyTagAttributesEnglish";
91
- this.HtmlBodyTagAttributesEnglish.LabelKey = "HtmlBodyTagAttributesEnglish";
92
- this.HtmlBodyTagAttributesEnglish.Type = InputType.Text;
93
- this.HtmlBodyTagAttributesEnglish.Value = this.TemplateInfo.emailtemplateinfo.emailHtmlBodyTagAttributes.english;
94
- this.HtmlBodyTagAttributesArabic = new TextBoxOptions();
95
- this.HtmlBodyTagAttributesArabic.Name = "HtmlBodyTagAttributesArabic";
96
- this.HtmlBodyTagAttributesArabic.LabelKey = "HtmlBodyTagAttributesArabic";
97
- this.HtmlBodyTagAttributesArabic.Type = InputType.Text;
98
- this.HtmlBodyTagAttributesArabic.ForceDirection = ForceDirection.Arabic;
99
- this.HtmlBodyTagAttributesArabic.Value = this.TemplateInfo.emailtemplateinfo.emailHtmlBodyTagAttributes.arabic;
100
- this.HTMLHeadSectionInEnglish = new TextBoxOptions();
101
- this.HTMLHeadSectionInEnglish.Name = "HTMLHeadSectionInEnglish";
102
- this.HTMLHeadSectionInEnglish.LabelKey = "HTMLHeadSectionInEnglish";
103
- this.HTMLHeadSectionInEnglish.Type = InputType.Text;
104
- this.HTMLHeadSectionInEnglish.Value = this.TemplateInfo.emailtemplateinfo.emailHtmlHeadSection.english;
105
- this.HTMLHeadSectionInArabic = new TextBoxOptions();
106
- this.HTMLHeadSectionInArabic.Name = "HTMLHeadSectionInArabic";
107
- this.HTMLHeadSectionInArabic.LabelKey = "HTMLHeadSectionInArabic";
108
- this.HTMLHeadSectionInArabic.Type = InputType.Text;
109
- this.HTMLHeadSectionInArabic.ForceDirection = ForceDirection.Arabic;
110
- this.HTMLHeadSectionInArabic.Value = this.TemplateInfo.emailtemplateinfo.emailHtmlHeadSection.arabic;
111
- this.IsAEditFormLoaded = true;
112
- });
68
+ this.initializePage();
69
+ });
70
+ }
71
+ initializePage() {
72
+ this.templateService.getTemplateInfoByLang(this.TemplateIdEnc, this.Lang).subscribe((result) => {
73
+ let Result = result;
74
+ this.TemplateInfo = Result.val;
75
+ let TemplateName = this.TemplateInfo.emailtemplateinfo.emailSubjectStr;
76
+ if (TemplateName == null || TemplateName == undefined)
77
+ TemplateName = "";
78
+ PageInfoService.PageTitle = this.utilityService.getResourceValue("Edit");
79
+ PageInfoService.PageBreadcrumbs = [
80
+ { title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
81
+ { title: '', path: '', isSeparator: true, isActive: false },
82
+ { title: this.utilityService.getResourceValue("Templates"), path: '/Admin/Notifications/Templates', isSeparator: false, isActive: false },
83
+ { title: '', path: '', isSeparator: true, isActive: false },
84
+ { title: TemplateName != "" ? this.utilityService.getResourceValue(TemplateName) : "", path: "/Admin/Notifications/TemplateInfo/" + this.TemplateInfo.idEncrypted, isSeparator: false, isActive: false },
85
+ { title: '', path: '', isSeparator: true, isActive: false }
86
+ ];
87
+ this.pageInfoService.calculateTitle();
88
+ this.pageInfoService.calculateBreadcrumbs();
89
+ //Initialize form and controls
90
+ this.EditEmailForm = new FormGroup({});
91
+ this.EditEmailFormOptions = new FormOptions();
92
+ this.EditEmailFormOptions.FormGroup = this.EditEmailForm;
93
+ this.EditEmailFormOptions.GetModelFunction = this.getEditEmailModel;
94
+ this.EditEmailFormOptions.ServiceSubmitFunction = this.getEditEmailFunction;
95
+ this.EditEmailFormOptions.OnSuccessHandler = this.onEditEmailSuccess;
96
+ this.TemplateId = this.TemplateInfo.id;
97
+ this.EmailBodyInEnglish = new HtmlEditorOptions();
98
+ this.EmailBodyInEnglish.Name = "EmailBodyInEnglish";
99
+ this.EmailBodyInEnglish.LabelKey = "EmailBodyInEnglish";
100
+ this.EmailBodyInEnglish.IsRequired = true;
101
+ this.EmailBodyInEnglish.Value = this.TemplateInfo.emailtemplateinfo.emailBody.english;
102
+ this.EmailBodyInArabic = new HtmlEditorOptions();
103
+ this.EmailBodyInArabic.Name = "EmailBodyInArabic";
104
+ this.EmailBodyInArabic.LabelKey = "EmailBodyInArabic";
105
+ this.EmailBodyInArabic.IsRequired = true;
106
+ this.EmailBodyInArabic.ForceDirection = ForceDirection.Arabic;
107
+ this.EmailBodyInArabic.Value = this.TemplateInfo.emailtemplateinfo.emailBody.arabic;
108
+ this.EmailSubjectInEnglish = new TextBoxOptions();
109
+ this.EmailSubjectInEnglish.Name = "EmailSubjectInEnglish";
110
+ this.EmailSubjectInEnglish.LabelValue = "EmailSubjectInEnglish";
111
+ this.EmailSubjectInEnglish.LabelKey = "EmailSubjectInEnglish";
112
+ this.EmailSubjectInEnglish.Type = InputType.Text;
113
+ this.EmailSubjectInEnglish.Value = this.TemplateInfo.emailtemplateinfo.emailSubject.english;
114
+ this.EmailSubjectInArabic = new TextBoxOptions();
115
+ this.EmailSubjectInArabic.Name = "EmailSubjectInArabic";
116
+ this.EmailSubjectInArabic.LabelKey = "EmailSubjectInArabic";
117
+ this.EmailSubjectInArabic.Type = InputType.Text;
118
+ this.EmailSubjectInArabic.ForceDirection = ForceDirection.Arabic;
119
+ this.EmailSubjectInArabic.Value = this.TemplateInfo.emailtemplateinfo.emailSubject.arabic;
120
+ this.HtmlBodyTagAttributesEnglish = new TextBoxOptions();
121
+ this.HtmlBodyTagAttributesEnglish.Name = "HtmlBodyTagAttributesEnglish";
122
+ this.HtmlBodyTagAttributesEnglish.LabelKey = "HtmlBodyTagAttributesEnglish";
123
+ this.HtmlBodyTagAttributesEnglish.Type = InputType.Text;
124
+ this.HtmlBodyTagAttributesEnglish.Value = this.TemplateInfo.emailtemplateinfo.emailHtmlBodyTagAttributes.english;
125
+ this.HtmlBodyTagAttributesArabic = new TextBoxOptions();
126
+ this.HtmlBodyTagAttributesArabic.Name = "HtmlBodyTagAttributesArabic";
127
+ this.HtmlBodyTagAttributesArabic.LabelKey = "HtmlBodyTagAttributesArabic";
128
+ this.HtmlBodyTagAttributesArabic.Type = InputType.Text;
129
+ this.HtmlBodyTagAttributesArabic.ForceDirection = ForceDirection.Arabic;
130
+ this.HtmlBodyTagAttributesArabic.Value = this.TemplateInfo.emailtemplateinfo.emailHtmlBodyTagAttributes.arabic;
131
+ this.HTMLHeadSectionInEnglish = new TextBoxOptions();
132
+ this.HTMLHeadSectionInEnglish.Name = "HTMLHeadSectionInEnglish";
133
+ this.HTMLHeadSectionInEnglish.LabelKey = "HTMLHeadSectionInEnglish";
134
+ this.HTMLHeadSectionInEnglish.Type = InputType.Text;
135
+ this.HTMLHeadSectionInEnglish.Value = this.TemplateInfo.emailtemplateinfo.emailHtmlHeadSection.english;
136
+ this.HTMLHeadSectionInArabic = new TextBoxOptions();
137
+ this.HTMLHeadSectionInArabic.Name = "HTMLHeadSectionInArabic";
138
+ this.HTMLHeadSectionInArabic.LabelKey = "HTMLHeadSectionInArabic";
139
+ this.HTMLHeadSectionInArabic.Type = InputType.Text;
140
+ this.HTMLHeadSectionInArabic.ForceDirection = ForceDirection.Arabic;
141
+ this.HTMLHeadSectionInArabic.Value = this.TemplateInfo.emailtemplateinfo.emailHtmlHeadSection.arabic;
142
+ this.IsFormLoaded = true;
113
143
  });
114
144
  }
145
+ cancelEdit() {
146
+ this.router.navigate(['/Admin/Notifications/TemplateInfo', this.TemplateIdEnc]);
147
+ }
148
+ //Change Lang
115
149
  changeCurrentLanguage(lang) {
116
150
  this.Lang = lang;
117
151
  }
118
- editEmailTemplate() {
119
- if (this.EditEmailForm.invalid) {
120
- return;
121
- }
122
- else {
123
- let ResultModel = this.EditEmailForm.value;
124
- let EmailTemplateModel = new TemplateEditViewModel();
125
- EmailTemplateModel.ID = Number(this.TemplateId);
126
- EmailTemplateModel.IDEncrypted = this.TemplateInfo.idEncrypted;
127
- EmailTemplateModel.IsEmail = this.TemplateInfo.isEmail;
128
- EmailTemplateModel.IsSms = this.TemplateInfo.isSms;
129
- EmailTemplateModel.TemplateName = this.TemplateInfo.templateName;
130
- EmailTemplateModel.Language = this.Lang;
131
- EmailTemplateModel.emailtemplateinfo.ID = this.TemplateInfo.emailtemplateinfo.id;
132
- EmailTemplateModel.emailtemplateinfo.EmailBody.Arabic = ResultModel.EmailBodyInArabic;
133
- EmailTemplateModel.emailtemplateinfo.EmailBody.English = ResultModel.EmailBodyInEnglish;
134
- EmailTemplateModel.emailtemplateinfo.EmailSubject.Arabic = ResultModel.EmailSubjectInArabic;
135
- EmailTemplateModel.emailtemplateinfo.EmailSubject.English = ResultModel.EmailSubjectInEnglish;
136
- EmailTemplateModel.emailtemplateinfo.EmailHtmlBodyTagAttributes.Arabic = ResultModel.HtmlBodyTagAttributesArabic;
137
- EmailTemplateModel.emailtemplateinfo.EmailHtmlBodyTagAttributes.English = ResultModel.HtmlBodyTagAttributesEnglish;
138
- EmailTemplateModel.emailtemplateinfo.EmailHtmlHeadSection.Arabic = ResultModel.HTMLHeadSectionInArabic;
139
- EmailTemplateModel.emailtemplateinfo.EmailHtmlHeadSection.English = ResultModel.HTMLHeadSectionInEnglish;
140
- this.templateService.EditEmailTemplateByLang(EmailTemplateModel).subscribe((result) => {
141
- ;
142
- this.EditEmailForm.reset();
143
- this.close();
144
- }, (error) => {
145
- });
146
- }
147
- }
148
- close() {
149
- this.router.navigate(['/Admin/Notifications/TemplateInfo', this.TemplateId]);
152
+ //On destroy
153
+ ngOnDestroy() {
154
+ this.requestHandlerService.destroyHandler();
150
155
  }
151
156
  }
152
- EditEmailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: EditEmailComponent, deps: [{ token: i1.PageInfoService }, { token: i2.AuthService }, { token: i2.UtilityService }, { token: i2.BBSFTranslateService }, { token: i2.EnvironmentService }, { token: i3.ClipboardService }, { token: i4.DataSecretService }, { token: i5.TemplateService }, { token: i6.ActivatedRoute }, { token: i6.Router }], target: i0.ɵɵFactoryTarget.Component });
153
- EditEmailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: EditEmailComponent, selector: "lib-edit-email", ngImport: i0, template: "<block-ui></block-ui>\r\n <div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"subheadertoolbar\">\r\n <a class=\"btn btn-light-primary btn-sm\" (click)=\"changeCurrentLanguage('ar')\" *ngIf=\"Lang=='en'\">\r\n {{utilityService.getResourceValue(\"Arabic\")}}\r\n\r\n </a>\r\n <a class=\"btn btn-light-primary btn-sm\" (click)=\"changeCurrentLanguage('en')\" *ngIf=\"Lang=='ar'\">\r\n {{utilityService.getResourceValue(\"English\")}}\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"EditEmailForm\" *ngIf=\"IsAEditFormLoaded\" (ngSubmit)=\"editEmailTemplate()\">\r\n <div class=\"kt-form\">\r\n <div *ngIf=\"Lang=='ar'\">\r\n <div class=\"row\">\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"EmailSubjectInArabic\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group col-md-12\">\r\n <BBSF-HtmlEditor [options]=\"EmailBodyInArabic\" [group]=\"EditEmailForm\">\r\n </BBSF-HtmlEditor>\r\n </div>\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"HtmlBodyTagAttributesArabic\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"HTMLHeadSectionInArabic\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"Lang=='en'\">\r\n <div class=\"row\">\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"EmailSubjectInEnglish\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n\r\n\r\n <div class=\"form-group col-md-12\">\r\n <BBSF-HtmlEditor [options]=\"EmailBodyInEnglish\" [group]=\"EditEmailForm\">\r\n </BBSF-HtmlEditor>\r\n </div>\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"HtmlBodyTagAttributesEnglish\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"HTMLHeadSectionInEnglish\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\" kt-form__actions col-12 d-flex justify-content-end\">\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm \">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n \r\n\r\n", components: [{ type: i7.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i8d, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8k, selector: "BBSF-HtmlEditor", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
154
- __decorate([
155
- BlockUI()
156
- ], EditEmailComponent.prototype, "blockUI", void 0);
157
+ EditEmailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: EditEmailComponent, deps: [{ token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i2.BBSFTranslateService }, { token: i3.TemplateService }, { token: i4.ActivatedRoute }, { token: i4.Router }, { token: i2.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
158
+ EditEmailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: EditEmailComponent, selector: "lib-edit-email", ngImport: i0, template: "<block-ui></block-ui>\r\n <div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"subheadertoolbar\">\r\n <a class=\"btn btn-light-primary btn-sm\" (click)=\"changeCurrentLanguage('ar')\" *ngIf=\"Lang=='en'\">\r\n {{utilityService.getResourceValue(\"Arabic\")}}\r\n\r\n </a>\r\n <a class=\"btn btn-light-primary btn-sm\" (click)=\"changeCurrentLanguage('en')\" *ngIf=\"Lang=='ar'\">\r\n {{utilityService.getResourceValue(\"English\")}}\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <BBSF-Form [options]=\"EditEmailFormOptions\" *ngIf=\"IsFormLoaded\">\r\n <div class=\"kt-form\">\r\n <div *ngIf=\"Lang=='ar'\">\r\n <div class=\"row\">\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"EmailSubjectInArabic\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group col-md-12\">\r\n <BBSF-HtmlEditor [options]=\"EmailBodyInArabic\" [group]=\"EditEmailForm\">\r\n </BBSF-HtmlEditor>\r\n </div>\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"HtmlBodyTagAttributesArabic\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"HTMLHeadSectionInArabic\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"Lang=='en'\">\r\n <div class=\"row\">\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"EmailSubjectInEnglish\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n\r\n\r\n <div class=\"form-group col-md-12\">\r\n <BBSF-HtmlEditor [options]=\"EmailBodyInEnglish\" [group]=\"EditEmailForm\">\r\n </BBSF-HtmlEditor>\r\n </div>\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"HtmlBodyTagAttributesEnglish\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n\r\n <div class=\"form-group col-md-6\">\r\n <BBSF-TextBox [options]=\"HTMLHeadSectionInEnglish\" [group]=\"EditEmailForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button type=\"button\" class=\"btn btn-light-primary btn-sm me-3\" (click)=\"cancelEdit()\">{{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 </div>\r\n </div>\r\n\r\n\r\n </div>\r\n \r\n\r\n", components: [{ type: i5.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i6v, selector: "BBSF-Form", inputs: ["options"] }, { type: i6d, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i6.ɵk, selector: "BBSF-HtmlEditor", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
157
159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: EditEmailComponent, decorators: [{
158
160
  type: Component,
159
161
  args: [{
160
162
  selector: 'lib-edit-email',
161
163
  templateUrl: './edit-email.component.html'
162
164
  }]
163
- }], ctorParameters: function () { return [{ type: i1.PageInfoService }, { type: i2.AuthService }, { type: i2.UtilityService }, { type: i2.BBSFTranslateService }, { type: i2.EnvironmentService }, { type: i3.ClipboardService }, { type: i4.DataSecretService }, { type: i5.TemplateService }, { type: i6.ActivatedRoute }, { type: i6.Router }]; }, propDecorators: { blockUI: [] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbWFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL25vdGlmaWNhdGlvbnMvZWRpdC1lbWFpbC9lZGl0LWVtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvbm90aWZpY2F0aW9ucy9lZGl0LWVtYWlsL2VkaXQtZW1haWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxPQUFPLEVBQWEsTUFBTSxhQUFhLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBR3JGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDOzs7Ozs7Ozs7Ozs7QUFPeEcsTUFBTSxPQUFPLGtCQUFrQjtJQXFCN0IsWUFBb0IsZUFBK0IsRUFBVSxXQUF1QixFQUFTLGNBQTZCLEVBQVMsb0JBQXlDLEVBQVMsa0JBQXFDLEVBQVMsaUJBQW1DLEVBQVUsWUFBK0IsRUFBVSxlQUFnQyxFQUFVLGNBQThCLEVBQVUsTUFBYztRQUFyWSxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFTLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQVMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUFTLHVCQUFrQixHQUFsQixrQkFB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YSxDQUFDLEtBQUssRUFBRSxDQUFBO2dCQUMxQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUViLENBQUMsQ0FBQyxDQUFBO1NBQ0g7SUFDSCxDQUFDO0lBQ0QsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsbUNBQW1DLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQzs7Z0hBN0pVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLHNEQ2hCL0IsOHdHQWdGQTtBRDlDYTtJQUFWLE9BQU8sRUFBRTttREFBb0I7NEZBbEJuQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDZCQUE2QjtpQkFDM0M7Z1hBbUJZLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGb3JjZURpcmVjdGlvbiwgSHRtbEVkaXRvck9wdGlvbnMsIElucHV0VHlwZSwgVGV4dEJveE9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEJsb2NrVUksIE5nQmxvY2tVSSB9IGZyb20gJ25nLWJsb2NrLXVpJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkU2VydmljZSB9IGZyb20gJ25neC1jbGlwYm9hcmQnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFTZWNyZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9UZW1wbGF0ZVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlRWRpdFZpZXdNb2RlbCB9IGZyb20gJy4vLi4vLi4vc2hhcmVkL21vZGVscy9Ob3RpZmljYXRpb25zTW9kZWxzL1RlbXBsYXRlRWRpdFZpZXdNb2RlbCc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1lZGl0LWVtYWlsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1lbWFpbC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRFbWFpbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgUGFnZU5hbWU6IHN0cmluZyA9IFwiXCJcclxuICBUZW1wbGF0ZUlkOiBzdHJpbmcgPSBcIlwiXHJcbiAgTGFuZzogc3RyaW5nID0gXCJcIlxyXG4gIFRlbXBsYXRlSW5mbzogYW55XHJcbiAgSXNBRWRpdEZvcm1Mb2FkZWQ6Ym9vbGVhblxyXG5cclxuICBFZGl0RW1haWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRW1haWxTdWJqZWN0SW5FbmdsaXNoOiBUZXh0Qm94T3B0aW9ucztcclxuICBFbWFpbEJvZHlJbkVuZ2xpc2g6IEh0bWxFZGl0b3JPcHRpb25zO1xyXG4gIEh0bWxCb2R5VGFnQXR0cmlidXRlc0VuZ2xpc2g6IFRleHRCb3hPcHRpb25zO1xyXG4gIEhUTUxIZWFkU2VjdGlvbkluRW5nbGlzaDogVGV4dEJveE9wdGlvbnM7XHJcblxyXG4gIEVtYWlsU3ViamVjdEluQXJhYmljOiBUZXh0Qm94T3B0aW9ucztcclxuICBFbWFpbEJvZHlJbkFyYWJpYzogSHRtbEVkaXRvck9wdGlvbnM7XHJcbiAgSHRtbEJvZHlUYWdBdHRyaWJ1dGVzQXJhYmljOiBUZXh0Qm94T3B0aW9ucztcclxuICBIVE1MSGVhZFNlY3Rpb25JbkFyYWJpYzogVGV4dEJveE9wdGlvbnM7XHJcbiAgLy8gRGVjb3JhdG9yIHdpcmVzIHVwIGJsb2NrVUkgaW5zdGFuY2VcclxuICBAQmxvY2tVSSgpIGJsb2NrVUk6IE5nQmxvY2tVSTtcclxuICBsYW5ndWFnZTpzdHJpbmc9XCJcIlxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhZ2VJbmZvU2VydmljZTpQYWdlSW5mb1NlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6QXV0aFNlcnZpY2UsIHB1YmxpYyB1dGlsaXR5U2VydmljZTpVdGlsaXR5U2VydmljZSxwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOkJCU0ZUcmFuc2xhdGVTZXJ2aWNlLHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOkVudmlyb25tZW50U2VydmljZSxwcml2YXRlIF9jbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLCBwcml2YXRlIGRhdGFTZXJ2aWNlczogRGF0YVNlY3JldFNlcnZpY2UsIHByaXZhdGUgdGVtcGxhdGVTZXJ2aWNlOiBUZW1wbGF0ZVNlcnZpY2UsIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5UZW1wbGF0ZUlkID0gcGFyYW1zWydpZCddO1xyXG4gICAgICB0aGlzLkxhbmcgPSBwYXJhbXNbJ2xhbmcnXTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLklzQUVkaXRGb3JtTG9hZGVkPWZhbHNlXHJcblxyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCk9PntcclxuICAgICAgdGhpcy5sYW5ndWFnZSA9IGV2ZW50Lmxhbmc7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmxhbmd1YWdlID0gYXdhaXQgdGhpcy51dGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKTtcclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLkdldFRlbXBsYXRlSW5mb0J5TGFuZyggTnVtYmVyKHRoaXMuVGVtcGxhdGVJZCksIHRoaXMuTGFuZykuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IFJlc3VsdDogYW55ID0gcmVzdWx0XHJcbiAgICAgIHRoaXMuVGVtcGxhdGVJbmZvID0gUmVzdWx0LnZhbDtcclxuICAgICAgICBsZXQgVGVtcGxhdGVOYW1lOnN0cmluZz0gdGhpcy5sYW5ndWFnZT09J2VuJz90aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5lbWFpbFN1YmplY3QuZW5nbGlzaDp0aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5lbWFpbFN1YmplY3QuYXJhYmljXHJcbiAgICAgICBpZihUZW1wbGF0ZU5hbWU9PW51bGx8fFRlbXBsYXRlTmFtZT09dW5kZWZpbmVkKVxyXG4gICAgICAgVGVtcGxhdGVOYW1lPVwiXCJcclxuICAgICAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlPXRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIilcclxuICAgICAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzPVtcclxuICAgICAgICAge3RpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpICwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2V9LFxyXG4gICAgICAgICB7dGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZX0sXHJcbiAgICAgICAgIHt0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGVtcGxhdGVzXCIpLCBwYXRoOiAnL0FkbWluL05vdGlmaWNhdGlvbnMvVGVtcGxhdGVzJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2V9LFxyXG4gICAgICAgICB7dGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZX0sXHJcbiAgICAgICAgIHt0aXRsZTpUZW1wbGF0ZU5hbWUhPVwiXCI/dGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFRlbXBsYXRlTmFtZSk6XCJcIiAsIHBhdGg6IFwiL0FkbWluL05vdGlmaWNhdGlvbnMvVGVtcGxhdGVJbmZvL1wiK3RoaXMuVGVtcGxhdGVJbmZvLmlkLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZX0sXHJcbiAgICAgICAgIHt0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlfVxyXG4gIFxyXG4gIFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5FbWFpbEJvZHlJbkVuZ2xpc2ggPSBuZXcgSHRtbEVkaXRvck9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FbWFpbEJvZHlJbkVuZ2xpc2guTmFtZSA9IFwiRW1haWxCb2R5SW5FbmdsaXNoXCJcclxuICAgICAgdGhpcy5FbWFpbEJvZHlJbkVuZ2xpc2guTGFiZWxLZXkgPSBcIkVtYWlsQm9keUluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuRW1haWxCb2R5SW5FbmdsaXNoLklzUmVxdWlyZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuRW1haWxCb2R5SW5FbmdsaXNoLlZhbHVlID0gdGhpcy5UZW1wbGF0ZUluZm8uZW1haWx0ZW1wbGF0ZWluZm8uZW1haWxCb2R5LmVuZ2xpc2g7XHJcbiAgICBcclxuXHJcbiAgICAgIHRoaXMuRW1haWxCb2R5SW5BcmFiaWMgPSBuZXcgSHRtbEVkaXRvck9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FbWFpbEJvZHlJbkFyYWJpYy5OYW1lID0gXCJFbWFpbEJvZHlJbkFyYWJpY1wiXHJcbiAgICAgIHRoaXMuRW1haWxCb2R5SW5BcmFiaWMuTGFiZWxLZXkgPSBcIkVtYWlsQm9keUluQXJhYmljXCJcclxuICAgICAgdGhpcy5FbWFpbEJvZHlJbkFyYWJpYy5Jc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLkVtYWlsQm9keUluQXJhYmljLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uQXJhYmljXHJcbiAgICAgIHRoaXMuRW1haWxCb2R5SW5BcmFiaWMuVmFsdWUgPSB0aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5lbWFpbEJvZHkuYXJhYmljO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRW1haWxTdWJqZWN0SW5FbmdsaXNoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRW1haWxTdWJqZWN0SW5FbmdsaXNoLk5hbWUgPSBcIkVtYWlsU3ViamVjdEluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuRW1haWxTdWJqZWN0SW5FbmdsaXNoLkxhYmVsVmFsdWUgPSBcIkVtYWlsU3ViamVjdEluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuRW1haWxTdWJqZWN0SW5FbmdsaXNoLkxhYmVsS2V5ID0gXCJFbWFpbFN1YmplY3RJbkVuZ2xpc2hcIlxyXG4gICAgICB0aGlzLkVtYWlsU3ViamVjdEluRW5nbGlzaC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgICAgdGhpcy5FbWFpbFN1YmplY3RJbkVuZ2xpc2guVmFsdWUgPSB0aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5lbWFpbFN1YmplY3QuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuRW1haWxTdWJqZWN0SW5BcmFiaWMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FbWFpbFN1YmplY3RJbkFyYWJpYy5OYW1lID0gXCJFbWFpbFN1YmplY3RJbkFyYWJpY1wiXHJcbiAgICAgIHRoaXMuRW1haWxTdWJqZWN0SW5BcmFiaWMuTGFiZWxLZXkgPSBcIkVtYWlsU3ViamVjdEluQXJhYmljXCJcclxuICAgICAgdGhpcy5FbWFpbFN1YmplY3RJbkFyYWJpYy5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgICAgdGhpcy5FbWFpbFN1YmplY3RJbkFyYWJpYy5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkFyYWJpY1xyXG4gICAgICB0aGlzLkVtYWlsU3ViamVjdEluQXJhYmljLlZhbHVlID0gdGhpcy5UZW1wbGF0ZUluZm8uZW1haWx0ZW1wbGF0ZWluZm8uZW1haWxTdWJqZWN0LmFyYWJpYztcclxuXHJcbiAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuSHRtbEJvZHlUYWdBdHRyaWJ1dGVzRW5nbGlzaC5OYW1lID0gXCJIdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoXCJcclxuICAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoLkxhYmVsS2V5ID0gXCJIdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoXCJcclxuICAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLkh0bWxCb2R5VGFnQXR0cmlidXRlc0VuZ2xpc2guVmFsdWUgPSB0aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5lbWFpbEh0bWxCb2R5VGFnQXR0cmlidXRlcy5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNBcmFiaWMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNBcmFiaWMuTmFtZSA9IFwiSHRtbEJvZHlUYWdBdHRyaWJ1dGVzQXJhYmljXCJcclxuICAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNBcmFiaWMuTGFiZWxLZXkgPSBcIkh0bWxCb2R5VGFnQXR0cmlidXRlc0FyYWJpY1wiXHJcbiAgICAgIHRoaXMuSHRtbEJvZHlUYWdBdHRyaWJ1dGVzQXJhYmljLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLkh0bWxCb2R5VGFnQXR0cmlidXRlc0FyYWJpYy5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkFyYWJpY1xyXG4gICAgICB0aGlzLkh0bWxCb2R5VGFnQXR0cmlidXRlc0FyYWJpYy5WYWx1ZSA9IHRoaXMuVGVtcGxhdGVJbmZvLmVtYWlsdGVtcGxhdGVpbmZvLmVtYWlsSHRtbEJvZHlUYWdBdHRyaWJ1dGVzLmFyYWJpYztcclxuXHJcblxyXG4gICAgICB0aGlzLkhUTUxIZWFkU2VjdGlvbkluRW5nbGlzaCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkhUTUxIZWFkU2VjdGlvbkluRW5nbGlzaC5OYW1lID0gXCJIVE1MSGVhZFNlY3Rpb25JbkVuZ2xpc2hcIlxyXG4gICAgICB0aGlzLkhUTUxIZWFkU2VjdGlvbkluRW5nbGlzaC5MYWJlbEtleSA9IFwiSFRNTEhlYWRTZWN0aW9uSW5FbmdsaXNoXCJcclxuICAgICAgdGhpcy5IVE1MSGVhZFNlY3Rpb25JbkVuZ2xpc2guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICAgIHRoaXMuSFRNTEhlYWRTZWN0aW9uSW5FbmdsaXNoLlZhbHVlID0gdGhpcy5UZW1wbGF0ZUluZm8uZW1haWx0ZW1wbGF0ZWluZm8uZW1haWxIdG1sSGVhZFNlY3Rpb24uZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuSFRNTEhlYWRTZWN0aW9uSW5BcmFiaWMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5IVE1MSGVhZFNlY3Rpb25JbkFyYWJpYy5OYW1lID0gXCJIVE1MSGVhZFNlY3Rpb25JbkFyYWJpY1wiXHJcbiAgICAgIHRoaXMuSFRNTEhlYWRTZWN0aW9uSW5BcmFiaWMuTGFiZWxLZXkgPSBcIkhUTUxIZWFkU2VjdGlvbkluQXJhYmljXCJcclxuICAgICAgdGhpcy5IVE1MSGVhZFNlY3Rpb25JbkFyYWJpYy5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgICAgdGhpcy5IVE1MSGVhZFNlY3Rpb25JbkFyYWJpYy5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkFyYWJpY1xyXG4gICAgICB0aGlzLkhUTUxIZWFkU2VjdGlvbkluQXJhYmljLlZhbHVlID0gdGhpcy5UZW1wbGF0ZUluZm8uZW1haWx0ZW1wbGF0ZWluZm8uZW1haWxIdG1sSGVhZFNlY3Rpb24uYXJhYmljO1xyXG4gICAgICB0aGlzLklzQUVkaXRGb3JtTG9hZGVkPXRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gY2hhbmdlQ3VycmVudExhbmd1YWdlKGxhbmc6c3RyaW5nKVxyXG4ge1xyXG4gICB0aGlzLkxhbmc9bGFuZztcclxuIH1cclxuXHJcbiAgXHJcbiAgZWRpdEVtYWlsVGVtcGxhdGUoKXtcclxuICAgIGlmICh0aGlzLkVkaXRFbWFpbEZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5FZGl0RW1haWxGb3JtLnZhbHVlO1xyXG4gICAgICBsZXQgRW1haWxUZW1wbGF0ZU1vZGVsID0gbmV3IFRlbXBsYXRlRWRpdFZpZXdNb2RlbCgpO1xyXG4gICAgICBFbWFpbFRlbXBsYXRlTW9kZWwuSUQgPSBOdW1iZXIodGhpcy5UZW1wbGF0ZUlkKTtcclxuICAgICAgRW1haWxUZW1wbGF0ZU1vZGVsLklERW5jcnlwdGVkID0gdGhpcy5UZW1wbGF0ZUluZm8uaWRFbmNyeXB0ZWQ7XHJcbiAgICAgIEVtYWlsVGVtcGxhdGVNb2RlbC5Jc0VtYWlsID0gdGhpcy5UZW1wbGF0ZUluZm8uaXNFbWFpbDtcclxuICAgICAgRW1haWxUZW1wbGF0ZU1vZGVsLklzU21zID0gdGhpcy5UZW1wbGF0ZUluZm8uaXNTbXM7XHJcbiAgICAgIEVtYWlsVGVtcGxhdGVNb2RlbC5UZW1wbGF0ZU5hbWUgPSB0aGlzLlRlbXBsYXRlSW5mby50ZW1wbGF0ZU5hbWU7XHJcbiAgICAgIEVtYWlsVGVtcGxhdGVNb2RlbC5MYW5ndWFnZSA9IHRoaXMuTGFuZztcclxuICAgICAgRW1haWxUZW1wbGF0ZU1vZGVsLmVtYWlsdGVtcGxhdGVpbmZvLklEID10aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5pZCA7XHJcbiAgICAgIEVtYWlsVGVtcGxhdGVNb2RlbC5lbWFpbHRlbXBsYXRlaW5mby5FbWFpbEJvZHkuQXJhYmljID0gUmVzdWx0TW9kZWwuRW1haWxCb2R5SW5BcmFiaWNcclxuICAgICAgRW1haWxUZW1wbGF0ZU1vZGVsLmVtYWlsdGVtcGxhdGVpbmZvLkVtYWlsQm9keS5FbmdsaXNoID0gUmVzdWx0TW9kZWwuRW1haWxCb2R5SW5FbmdsaXNoXHJcbiAgICAgIEVtYWlsVGVtcGxhdGVNb2RlbC5lbWFpbHRlbXBsYXRlaW5mby5FbWFpbFN1YmplY3QuQXJhYmljID0gUmVzdWx0TW9kZWwuRW1haWxTdWJqZWN0SW5BcmFiaWNcclxuICAgICAgRW1haWxUZW1wbGF0ZU1vZGVsLmVtYWlsdGVtcGxhdGVpbmZvLkVtYWlsU3ViamVjdC5FbmdsaXNoID0gUmVzdWx0TW9kZWwuRW1haWxTdWJqZWN0SW5FbmdsaXNoXHJcbiAgICAgIEVtYWlsVGVtcGxhdGVNb2RlbC5lbWFpbHRlbXBsYXRlaW5mby5FbWFpbEh0bWxCb2R5VGFnQXR0cmlidXRlcy5BcmFiaWMgPSBSZXN1bHRNb2RlbC5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNBcmFiaWNcclxuICAgICAgRW1haWxUZW1wbGF0ZU1vZGVsLmVtYWlsdGVtcGxhdGVpbmZvLkVtYWlsSHRtbEJvZHlUYWdBdHRyaWJ1dGVzLkVuZ2xpc2ggPVJlc3VsdE1vZGVsLkh0bWxCb2R5VGFnQXR0cmlidXRlc0VuZ2xpc2hcclxuICAgICAgRW1haWxUZW1wbGF0ZU1vZGVsLmVtYWlsdGVtcGxhdGVpbmZvLkVtYWlsSHRtbEhlYWRTZWN0aW9uLkFyYWJpYyA9IFJlc3VsdE1vZGVsLkhUTUxIZWFkU2VjdGlvbkluQXJhYmljXHJcbiAgICAgIEVtYWlsVGVtcGxhdGVNb2RlbC5lbWFpbHRlbXBsYXRlaW5mby5FbWFpbEh0bWxIZWFkU2VjdGlvbi5FbmdsaXNoID0gUmVzdWx0TW9kZWwuSFRNTEhlYWRTZWN0aW9uSW5FbmdsaXNoXHJcblxyXG4gICAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5FZGl0RW1haWxUZW1wbGF0ZUJ5TGFuZyggRW1haWxUZW1wbGF0ZU1vZGVsKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgXHJcbiAgICAgICAgIDtcclxuICAgICAgICB0aGlzLkVkaXRFbWFpbEZvcm0ucmVzZXQoKVxyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICBcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbiAgY2xvc2UoKXtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL05vdGlmaWNhdGlvbnMvVGVtcGxhdGVJbmZvJyx0aGlzLlRlbXBsYXRlSWRdKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViaGVhZGVydG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tbGlnaHQtcHJpbWFyeSBidG4tc21cIiAoY2xpY2spPVwiY2hhbmdlQ3VycmVudExhbmd1YWdlKCdhcicpXCIgKm5nSWY9XCJMYW5nPT0nZW4nXCI+XHJcbiAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQXJhYmljXCIpfX1cclxuXHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWxpZ2h0LXByaW1hcnkgYnRuLXNtXCIgKGNsaWNrKT1cImNoYW5nZUN1cnJlbnRMYW5ndWFnZSgnZW4nKVwiICpuZ0lmPVwiTGFuZz09J2FyJ1wiPlxyXG4gICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVuZ2xpc2hcIil9fVxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkVkaXRFbWFpbEZvcm1cIiAqbmdJZj1cIklzQUVkaXRGb3JtTG9hZGVkXCIgKG5nU3VibWl0KT1cImVkaXRFbWFpbFRlbXBsYXRlKClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJrdC1mb3JtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJMYW5nPT0nYXInXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFbWFpbFN1YmplY3RJbkFyYWJpY1wiIFtncm91cF09XCJFZGl0RW1haWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtSHRtbEVkaXRvciBbb3B0aW9uc109XCJFbWFpbEJvZHlJbkFyYWJpY1wiIFtncm91cF09XCJFZGl0RW1haWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1IdG1sRWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkh0bWxCb2R5VGFnQXR0cmlidXRlc0FyYWJpY1wiIFtncm91cF09XCJFZGl0RW1haWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJIVE1MSGVhZFNlY3Rpb25JbkFyYWJpY1wiIFtncm91cF09XCJFZGl0RW1haWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIkxhbmc9PSdlbidcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVtYWlsU3ViamVjdEluRW5nbGlzaFwiIFtncm91cF09XCJFZGl0RW1haWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1IdG1sRWRpdG9yIFtvcHRpb25zXT1cIkVtYWlsQm9keUluRW5nbGlzaFwiIFtncm91cF09XCJFZGl0RW1haWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1IdG1sRWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkh0bWxCb2R5VGFnQXR0cmlidXRlc0VuZ2xpc2hcIiBbZ3JvdXBdPVwiRWRpdEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiSFRNTEhlYWRTZWN0aW9uSW5FbmdsaXNoXCIgW2dyb3VwXT1cIkVkaXRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGt0LWZvcm1fX2FjdGlvbnMgY29sLTEyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgPC9kaXY+XHJcbiAgXHJcblxyXG4iXX0=
165
+ }], ctorParameters: function () { return [{ type: i1.PageInfoService }, { type: i2.UtilityService }, { type: i2.BBSFTranslateService }, { type: i3.TemplateService }, { type: i4.ActivatedRoute }, { type: i4.Router }, { type: i2.RequestHandlerService }]; } });
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbWFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL25vdGlmaWNhdGlvbnMvZWRpdC1lbWFpbC9lZGl0LWVtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvbm90aWZpY2F0aW9ucy9lZGl0LWVtYWlsL2VkaXQtZW1haWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUVBQWlFLENBQUM7Ozs7Ozs7OztBQVF4RyxNQUFNLE9BQU8sa0JBQWtCO0lBcUI3QixZQUFvQixlQUFnQyxFQUFTLGNBQThCLEVBQ2pGLG9CQUEwQyxFQUFVLGVBQWdDLEVBQ3BGLGNBQThCLEVBQVUsTUFBYyxFQUFVLHFCQUE0QztRQUZsRyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDakYseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNwRixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtR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K0JELFVBQVU7UUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLG1DQUFtQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxhQUFhO0lBQ2IscUJBQXFCLENBQUMsSUFBWTtRQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBWTtJQUNaLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7Z0hBdEtVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLHNEQ2QvQixzNEdBaUZBOzRGRG5FYSxrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDZCQUE2QjtpQkFDM0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGb3JjZURpcmVjdGlvbiwgRm9ybU9wdGlvbnMsIEh0bWxFZGl0b3JPcHRpb25zLCBJbnB1dFR5cGUsIFRleHRCb3hPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9UZW1wbGF0ZVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlRWRpdFZpZXdNb2RlbCB9IGZyb20gJy4vLi4vLi4vc2hhcmVkL21vZGVscy9Ob3RpZmljYXRpb25zTW9kZWxzL1RlbXBsYXRlRWRpdFZpZXdNb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZWRpdC1lbWFpbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtZW1haWwuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0RW1haWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSBSZXF1aXJlbWVudHNcclxuICBUZW1wbGF0ZUlkRW5jOiBzdHJpbmcgPSBcIlwiXHJcbiAgVGVtcGxhdGVJZDogbnVtYmVyO1xyXG4gIExhbmc6IHN0cmluZyA9IFwiXCJcclxuICBUZW1wbGF0ZUluZm86IGFueVxyXG4gIElzRm9ybUxvYWRlZDpib29sZWFuXHJcblxyXG4gIC8vSW5pdGlhbGl6ZSBmb3JtIGFuZCBjb250cm9sc1xyXG4gIEVkaXRFbWFpbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFZGl0RW1haWxGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBFbWFpbFN1YmplY3RJbkVuZ2xpc2g6IFRleHRCb3hPcHRpb25zO1xyXG4gIEVtYWlsU3ViamVjdEluQXJhYmljOiBUZXh0Qm94T3B0aW9ucztcclxuICBFbWFpbEJvZHlJbkVuZ2xpc2g6IEh0bWxFZGl0b3JPcHRpb25zO1xyXG4gIEVtYWlsQm9keUluQXJhYmljOiBIdG1sRWRpdG9yT3B0aW9ucztcclxuICBIdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoOiBUZXh0Qm94T3B0aW9ucztcclxuICBIdG1sQm9keVRhZ0F0dHJpYnV0ZXNBcmFiaWM6IFRleHRCb3hPcHRpb25zO1xyXG4gIEhUTUxIZWFkU2VjdGlvbkluRW5nbGlzaDogVGV4dEJveE9wdGlvbnM7XHJcbiAgSFRNTEhlYWRTZWN0aW9uSW5BcmFiaWM6IFRleHRCb3hPcHRpb25zO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSwgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIHRlbXBsYXRlU2VydmljZTogVGVtcGxhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLlRlbXBsYXRlSWRFbmMgPSBwYXJhbXNbJ2lkJ107XHJcbiAgICAgIHRoaXMuTGFuZyA9IHBhcmFtc1snbGFuZyddO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpPT57XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlSW5mb0J5TGFuZyh0aGlzLlRlbXBsYXRlSWRFbmMsIHRoaXMuTGFuZykuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IFJlc3VsdDogYW55ID0gcmVzdWx0XHJcbiAgICAgIHRoaXMuVGVtcGxhdGVJbmZvID0gUmVzdWx0LnZhbDtcclxuICAgICAgbGV0IFRlbXBsYXRlTmFtZTogc3RyaW5nID0gdGhpcy5UZW1wbGF0ZUluZm8uZW1haWx0ZW1wbGF0ZWluZm8uZW1haWxTdWJqZWN0U3RyO1xyXG4gICAgICBpZiAoVGVtcGxhdGVOYW1lID09IG51bGwgfHwgVGVtcGxhdGVOYW1lID09IHVuZGVmaW5lZClcclxuICAgICAgICBUZW1wbGF0ZU5hbWUgPSBcIlwiXHJcbiAgICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpXHJcbiAgICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZW1wbGF0ZXNcIiksIHBhdGg6ICcvQWRtaW4vTm90aWZpY2F0aW9ucy9UZW1wbGF0ZXMnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6IFRlbXBsYXRlTmFtZSAhPSBcIlwiID8gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFRlbXBsYXRlTmFtZSkgOiBcIlwiLCBwYXRoOiBcIi9BZG1pbi9Ob3RpZmljYXRpb25zL1RlbXBsYXRlSW5mby9cIiArIHRoaXMuVGVtcGxhdGVJbmZvLmlkRW5jcnlwdGVkLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG5cclxuICAgICAgXTtcclxuICAgICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuXHJcbiAgICAgIC8vSW5pdGlhbGl6ZSBmb3JtIGFuZCBjb250cm9sc1xyXG4gICAgICB0aGlzLkVkaXRFbWFpbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgdGhpcy5FZGl0RW1haWxGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRFbWFpbEZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuRWRpdEVtYWlsRm9ybVxyXG4gICAgICB0aGlzLkVkaXRFbWFpbEZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRFbWFpbE1vZGVsO1xyXG4gICAgICB0aGlzLkVkaXRFbWFpbEZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEVtYWlsRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdEVtYWlsRm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25FZGl0RW1haWxTdWNjZXNzO1xyXG5cclxuICAgICAgdGhpcy5UZW1wbGF0ZUlkID0gdGhpcy5UZW1wbGF0ZUluZm8uaWQ7XHJcblxyXG4gICAgICB0aGlzLkVtYWlsQm9keUluRW5nbGlzaCA9IG5ldyBIdG1sRWRpdG9yT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVtYWlsQm9keUluRW5nbGlzaC5OYW1lID0gXCJFbWFpbEJvZHlJbkVuZ2xpc2hcIlxyXG4gICAgICB0aGlzLkVtYWlsQm9keUluRW5nbGlzaC5MYWJlbEtleSA9IFwiRW1haWxCb2R5SW5FbmdsaXNoXCJcclxuICAgICAgdGhpcy5FbWFpbEJvZHlJbkVuZ2xpc2guSXNSZXF1aXJlZCA9IHRydWVcclxuICAgICAgdGhpcy5FbWFpbEJvZHlJbkVuZ2xpc2guVmFsdWUgPSB0aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5lbWFpbEJvZHkuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuRW1haWxCb2R5SW5BcmFiaWMgPSBuZXcgSHRtbEVkaXRvck9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FbWFpbEJvZHlJbkFyYWJpYy5OYW1lID0gXCJFbWFpbEJvZHlJbkFyYWJpY1wiXHJcbiAgICAgIHRoaXMuRW1haWxCb2R5SW5BcmFiaWMuTGFiZWxLZXkgPSBcIkVtYWlsQm9keUluQXJhYmljXCJcclxuICAgICAgdGhpcy5FbWFpbEJvZHlJbkFyYWJpYy5Jc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLkVtYWlsQm9keUluQXJhYmljLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uQXJhYmljXHJcbiAgICAgIHRoaXMuRW1haWxCb2R5SW5BcmFiaWMuVmFsdWUgPSB0aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5lbWFpbEJvZHkuYXJhYmljO1xyXG5cclxuICAgICAgdGhpcy5FbWFpbFN1YmplY3RJbkVuZ2xpc2ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FbWFpbFN1YmplY3RJbkVuZ2xpc2guTmFtZSA9IFwiRW1haWxTdWJqZWN0SW5FbmdsaXNoXCJcclxuICAgICAgdGhpcy5FbWFpbFN1YmplY3RJbkVuZ2xpc2guTGFiZWxWYWx1ZSA9IFwiRW1haWxTdWJqZWN0SW5FbmdsaXNoXCJcclxuICAgICAgdGhpcy5FbWFpbFN1YmplY3RJbkVuZ2xpc2guTGFiZWxLZXkgPSBcIkVtYWlsU3ViamVjdEluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuRW1haWxTdWJqZWN0SW5FbmdsaXNoLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLkVtYWlsU3ViamVjdEluRW5nbGlzaC5WYWx1ZSA9IHRoaXMuVGVtcGxhdGVJbmZvLmVtYWlsdGVtcGxhdGVpbmZvLmVtYWlsU3ViamVjdC5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5FbWFpbFN1YmplY3RJbkFyYWJpYyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVtYWlsU3ViamVjdEluQXJhYmljLk5hbWUgPSBcIkVtYWlsU3ViamVjdEluQXJhYmljXCJcclxuICAgICAgdGhpcy5FbWFpbFN1YmplY3RJbkFyYWJpYy5MYWJlbEtleSA9IFwiRW1haWxTdWJqZWN0SW5BcmFiaWNcIlxyXG4gICAgICB0aGlzLkVtYWlsU3ViamVjdEluQXJhYmljLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLkVtYWlsU3ViamVjdEluQXJhYmljLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uQXJhYmljXHJcbiAgICAgIHRoaXMuRW1haWxTdWJqZWN0SW5BcmFiaWMuVmFsdWUgPSB0aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5lbWFpbFN1YmplY3QuYXJhYmljO1xyXG5cclxuICAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuSHRtbEJvZHlUYWdBdHRyaWJ1dGVzRW5nbGlzaC5OYW1lID0gXCJIdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoXCJcclxuICAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoLkxhYmVsS2V5ID0gXCJIdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoXCJcclxuICAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLkh0bWxCb2R5VGFnQXR0cmlidXRlc0VuZ2xpc2guVmFsdWUgPSB0aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5lbWFpbEh0bWxCb2R5VGFnQXR0cmlidXRlcy5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNBcmFiaWMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNBcmFiaWMuTmFtZSA9IFwiSHRtbEJvZHlUYWdBdHRyaWJ1dGVzQXJhYmljXCJcclxuICAgICAgdGhpcy5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNBcmFiaWMuTGFiZWxLZXkgPSBcIkh0bWxCb2R5VGFnQXR0cmlidXRlc0FyYWJpY1wiXHJcbiAgICAgIHRoaXMuSHRtbEJvZHlUYWdBdHRyaWJ1dGVzQXJhYmljLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLkh0bWxCb2R5VGFnQXR0cmlidXRlc0FyYWJpYy5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkFyYWJpY1xyXG4gICAgICB0aGlzLkh0bWxCb2R5VGFnQXR0cmlidXRlc0FyYWJpYy5WYWx1ZSA9IHRoaXMuVGVtcGxhdGVJbmZvLmVtYWlsdGVtcGxhdGVpbmZvLmVtYWlsSHRtbEJvZHlUYWdBdHRyaWJ1dGVzLmFyYWJpYztcclxuXHJcbiAgICAgIHRoaXMuSFRNTEhlYWRTZWN0aW9uSW5FbmdsaXNoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuSFRNTEhlYWRTZWN0aW9uSW5FbmdsaXNoLk5hbWUgPSBcIkhUTUxIZWFkU2VjdGlvbkluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuSFRNTEhlYWRTZWN0aW9uSW5FbmdsaXNoLkxhYmVsS2V5ID0gXCJIVE1MSGVhZFNlY3Rpb25JbkVuZ2xpc2hcIlxyXG4gICAgICB0aGlzLkhUTUxIZWFkU2VjdGlvbkluRW5nbGlzaC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgICAgdGhpcy5IVE1MSGVhZFNlY3Rpb25JbkVuZ2xpc2guVmFsdWUgPSB0aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5lbWFpbEh0bWxIZWFkU2VjdGlvbi5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5IVE1MSGVhZFNlY3Rpb25JbkFyYWJpYyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkhUTUxIZWFkU2VjdGlvbkluQXJhYmljLk5hbWUgPSBcIkhUTUxIZWFkU2VjdGlvbkluQXJhYmljXCJcclxuICAgICAgdGhpcy5IVE1MSGVhZFNlY3Rpb25JbkFyYWJpYy5MYWJlbEtleSA9IFwiSFRNTEhlYWRTZWN0aW9uSW5BcmFiaWNcIlxyXG4gICAgICB0aGlzLkhUTUxIZWFkU2VjdGlvbkluQXJhYmljLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLkhUTUxIZWFkU2VjdGlvbkluQXJhYmljLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uQXJhYmljXHJcbiAgICAgIHRoaXMuSFRNTEhlYWRTZWN0aW9uSW5BcmFiaWMuVmFsdWUgPSB0aGlzLlRlbXBsYXRlSW5mby5lbWFpbHRlbXBsYXRlaW5mby5lbWFpbEh0bWxIZWFkU2VjdGlvbi5hcmFiaWM7XHJcbiAgICAgIHRoaXMuSXNGb3JtTG9hZGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgZ2V0RWRpdEVtYWlsTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdEVtYWlsRm9ybS52YWx1ZTtcclxuICAgIGxldCBFZGl0TW9kZWwgPSBuZXcgVGVtcGxhdGVFZGl0Vmlld01vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSUQgPSBOdW1iZXIodGhpcy5UZW1wbGF0ZUlkKTtcclxuICAgIEVkaXRNb2RlbC5JREVuY3J5cHRlZCA9IHRoaXMuVGVtcGxhdGVJbmZvLmlkRW5jcnlwdGVkO1xyXG4gICAgRWRpdE1vZGVsLklzRW1haWwgPSB0cnVlO1xyXG4gICAgRWRpdE1vZGVsLklzU21zID0gZmFsc2U7XHJcbiAgICBFZGl0TW9kZWwuVGVtcGxhdGVOYW1lID0gdGhpcy5UZW1wbGF0ZUluZm8udGVtcGxhdGVOYW1lO1xyXG4gICAgRWRpdE1vZGVsLkxhbmd1YWdlID0gdGhpcy5MYW5nO1xyXG4gICAgRWRpdE1vZGVsLmVtYWlsdGVtcGxhdGVpbmZvLklEID0gdGhpcy5UZW1wbGF0ZUluZm8uZW1haWx0ZW1wbGF0ZWluZm8uaWQ7XHJcbiAgICBFZGl0TW9kZWwuZW1haWx0ZW1wbGF0ZWluZm8uRW1haWxCb2R5LkFyYWJpYyA9IFJlc3VsdE1vZGVsLkVtYWlsQm9keUluQXJhYmljXHJcbiAgICBFZGl0TW9kZWwuZW1haWx0ZW1wbGF0ZWluZm8uRW1haWxCb2R5LkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5FbWFpbEJvZHlJbkVuZ2xpc2hcclxuICAgIEVkaXRNb2RlbC5lbWFpbHRlbXBsYXRlaW5mby5FbWFpbFN1YmplY3QuQXJhYmljID0gUmVzdWx0TW9kZWwuRW1haWxTdWJqZWN0SW5BcmFiaWNcclxuICAgIEVkaXRNb2RlbC5lbWFpbHRlbXBsYXRlaW5mby5FbWFpbFN1YmplY3QuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLkVtYWlsU3ViamVjdEluRW5nbGlzaFxyXG4gICAgRWRpdE1vZGVsLmVtYWlsdGVtcGxhdGVpbmZvLkVtYWlsSHRtbEJvZHlUYWdBdHRyaWJ1dGVzLkFyYWJpYyA9IFJlc3VsdE1vZGVsLkh0bWxCb2R5VGFnQXR0cmlidXRlc0FyYWJpY1xyXG4gICAgRWRpdE1vZGVsLmVtYWlsdGVtcGxhdGVpbmZvLkVtYWlsSHRtbEJvZHlUYWdBdHRyaWJ1dGVzLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5IdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoXHJcbiAgICBFZGl0TW9kZWwuZW1haWx0ZW1wbGF0ZWluZm8uRW1haWxIdG1sSGVhZFNlY3Rpb24uQXJhYmljID0gUmVzdWx0TW9kZWwuSFRNTEhlYWRTZWN0aW9uSW5BcmFiaWNcclxuICAgIEVkaXRNb2RlbC5lbWFpbHRlbXBsYXRlaW5mby5FbWFpbEh0bWxIZWFkU2VjdGlvbi5FbmdsaXNoID0gUmVzdWx0TW9kZWwuSFRNTEhlYWRTZWN0aW9uSW5FbmdsaXNoXHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRFbWFpbEZ1bmN0aW9uID0gKEVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZWRpdEVtYWlsVGVtcGxhdGVCeUxhbmcoRWRpdE1vZGVsKVxyXG4gIH1cclxuICBvbkVkaXRFbWFpbFN1Y2Nlc3MgPSAocmVzdWx0KSA9PiB7XHJcbiAgICB0aGlzLmNhbmNlbEVkaXQoKTtcclxuICB9XHJcbiAgY2FuY2VsRWRpdCgpe1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvQWRtaW4vTm90aWZpY2F0aW9ucy9UZW1wbGF0ZUluZm8nLCB0aGlzLlRlbXBsYXRlSWRFbmNdKTtcclxuICB9XHJcblxyXG4gIC8vQ2hhbmdlIExhbmdcclxuICBjaGFuZ2VDdXJyZW50TGFuZ3VhZ2UobGFuZzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLkxhbmcgPSBsYW5nO1xyXG4gIH1cclxuXHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN1YmhlYWRlcnRvb2xiYXJcIj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWxpZ2h0LXByaW1hcnkgYnRuLXNtXCIgKGNsaWNrKT1cImNoYW5nZUN1cnJlbnRMYW5ndWFnZSgnYXInKVwiICpuZ0lmPVwiTGFuZz09J2VuJ1wiPlxyXG4gICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFyYWJpY1wiKX19XHJcblxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1saWdodC1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJjaGFuZ2VDdXJyZW50TGFuZ3VhZ2UoJ2VuJylcIiAqbmdJZj1cIkxhbmc9PSdhcidcIj5cclxuICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbmdsaXNoXCIpfX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJFZGl0RW1haWxGb3JtT3B0aW9uc1wiICpuZ0lmPVwiSXNGb3JtTG9hZGVkXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwia3QtZm9ybVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiTGFuZz09J2FyJ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRW1haWxTdWJqZWN0SW5BcmFiaWNcIiBbZ3JvdXBdPVwiRWRpdEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLUh0bWxFZGl0b3IgW29wdGlvbnNdPVwiRW1haWxCb2R5SW5BcmFiaWNcIiBbZ3JvdXBdPVwiRWRpdEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtSHRtbEVkaXRvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJIdG1sQm9keVRhZ0F0dHJpYnV0ZXNBcmFiaWNcIiBbZ3JvdXBdPVwiRWRpdEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiSFRNTEhlYWRTZWN0aW9uSW5BcmFiaWNcIiBbZ3JvdXBdPVwiRWRpdEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJMYW5nPT0nZW4nXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFbWFpbFN1YmplY3RJbkVuZ2xpc2hcIiBbZ3JvdXBdPVwiRWRpdEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtSHRtbEVkaXRvciBbb3B0aW9uc109XCJFbWFpbEJvZHlJbkVuZ2xpc2hcIiBbZ3JvdXBdPVwiRWRpdEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtSHRtbEVkaXRvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJIdG1sQm9keVRhZ0F0dHJpYnV0ZXNFbmdsaXNoXCIgW2dyb3VwXT1cIkVkaXRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkhUTUxIZWFkU2VjdGlvbkluRW5nbGlzaFwiIFtncm91cF09XCJFZGl0RW1haWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodC1wcmltYXJ5IGJ0bi1zbSBtZS0zXCIgKGNsaWNrKT1cImNhbmNlbEVkaXQoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L0JCU0YtRm9ybT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gIDwvZGl2PlxyXG4gIFxyXG5cclxuIl19