@bnsights/bbsf-admin-portal 1.0.3 → 1.0.4

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 (132) hide show
  1. package/bundles/bnsights-bbsf-admin-portal.umd.js +19591 -20432
  2. package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
  3. package/esm2015/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.js +2 -2
  4. package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +407 -421
  5. package/esm2015/lib/Pages/departments/department/department.component.js +45 -83
  6. package/esm2015/lib/Pages/departments/department-info/department-info.component.js +85 -94
  7. package/esm2015/lib/Pages/departments/departments.module.js +4 -1
  8. package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +224 -223
  9. package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +137 -146
  10. package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +136 -153
  11. package/esm2015/lib/Pages/home/home.component.js +32 -26
  12. package/esm2015/lib/Pages/home/home.module.js +5 -10
  13. package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +336 -317
  14. package/esm2015/lib/Pages/jobs/jobs/jobs.component.js +168 -227
  15. package/esm2015/lib/Pages/license/license/license.component.js +68 -99
  16. package/esm2015/lib/Pages/localizations/localizations.component.js +379 -341
  17. package/esm2015/lib/Pages/logs/log/log.component.js +18 -27
  18. package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +297 -288
  19. package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +143 -165
  20. package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +234 -233
  21. package/esm2015/lib/Pages/lookups/lookups-routing.module.js +2 -2
  22. package/esm2015/lib/Pages/notifications/add/add.component.js +83 -76
  23. package/esm2015/lib/Pages/notifications/edit/edit.component.js +60 -63
  24. package/esm2015/lib/Pages/notifications/edit-email/edit-email.component.js +128 -126
  25. package/esm2015/lib/Pages/notifications/edit-sms/edit-sms.component.js +87 -85
  26. package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +57 -58
  27. package/esm2015/lib/Pages/notifications/notifications-routing.module.js +1 -3
  28. package/esm2015/lib/Pages/notifications/notifications.module.js +3 -4
  29. package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +232 -228
  30. package/esm2015/lib/Pages/notifications/templates/templates.component.js +347 -310
  31. package/esm2015/lib/Pages/providers/provider/provider.component.js +53 -52
  32. package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +268 -270
  33. package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +136 -152
  34. package/esm2015/lib/Pages/roles/permissions/permissions.component.js +182 -218
  35. package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +219 -254
  36. package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +134 -142
  37. package/esm2015/lib/Pages/sectors/sector/sector.component.js +127 -144
  38. package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +123 -139
  39. package/esm2015/lib/Pages/shared/Enums/ParticipantType.js +8 -0
  40. package/esm2015/lib/Pages/shared/Services/ConfigurationsService.service.js +15 -12
  41. package/esm2015/lib/Pages/shared/Services/DepartmentService.service.js +4 -5
  42. package/esm2015/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.js +10 -9
  43. package/esm2015/lib/Pages/shared/Services/HelpCenterService.service.js +10 -7
  44. package/esm2015/lib/Pages/shared/Services/ImpersonationRuleService.service.js +14 -8
  45. package/esm2015/lib/Pages/shared/Services/LicenseService.service.js +3 -3
  46. package/esm2015/lib/Pages/shared/Services/LogsService.js +1 -1
  47. package/esm2015/lib/Pages/shared/Services/LookupGroupsService.service.js +11 -5
  48. package/esm2015/lib/Pages/shared/Services/LookupService.service.js +31 -15
  49. package/esm2015/lib/Pages/shared/Services/PermissionSetService.service.js +18 -8
  50. package/esm2015/lib/Pages/shared/Services/PermissionsService.service.js +12 -9
  51. package/esm2015/lib/Pages/shared/Services/PublicHolidayService.service.js +9 -3
  52. package/esm2015/lib/Pages/shared/Services/SectorService.service.js +18 -13
  53. package/esm2015/lib/Pages/shared/Services/TemplateService.service.js +36 -29
  54. package/esm2015/lib/Pages/shared/Services/localizationsService.service .js +23 -13
  55. package/esm2015/lib/Pages/shared/Services/provider.service.js +5 -7
  56. package/esm2015/lib/Pages/shared/Services/userService.service.js +10 -2
  57. package/esm2015/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.js +1 -1
  58. package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.js +1 -1
  59. package/esm2015/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.js +1 -1
  60. package/esm2015/lib/Pages/shared/models/Lookups/LookupItem.js +1 -1
  61. package/esm2015/lib/Pages/shared/models/Lookups/LookupModel.js +1 -2
  62. package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.js +1 -1
  63. package/esm2015/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.js +1 -1
  64. package/esm2015/lib/Pages/users/users.component.js +397 -409
  65. package/esm2015/lib/masterlayout-routing.module.js +5 -4
  66. package/esm2015/lib/masterlayout.component.js +23 -32
  67. package/esm2015/lib/masterlayout.module.js +25 -19
  68. package/fesm2015/bnsights-bbsf-admin-portal.js +17328 -17584
  69. package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
  70. package/lib/Pages/configurations/configuration/configuration.component.d.ts +31 -27
  71. package/lib/Pages/departments/department/department.component.d.ts +12 -11
  72. package/lib/Pages/departments/department-info/department-info.component.d.ts +31 -28
  73. package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +34 -32
  74. package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +31 -34
  75. package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +30 -35
  76. package/lib/Pages/home/home.component.d.ts +4 -4
  77. package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +43 -42
  78. package/lib/Pages/jobs/jobs/jobs.component.d.ts +56 -62
  79. package/lib/Pages/license/license/license.component.d.ts +25 -23
  80. package/lib/Pages/localizations/localizations.component.d.ts +77 -65
  81. package/lib/Pages/logs/log/log.component.d.ts +7 -11
  82. package/lib/Pages/lookups/lookup/lookup.component.d.ts +64 -59
  83. package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +44 -45
  84. package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +62 -56
  85. package/lib/Pages/notifications/add/add.component.d.ts +13 -11
  86. package/lib/Pages/notifications/edit/edit.component.d.ts +14 -14
  87. package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +18 -20
  88. package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +15 -16
  89. package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +24 -25
  90. package/lib/Pages/notifications/notifications.module.d.ts +15 -16
  91. package/lib/Pages/notifications/template-info/template-info.component.d.ts +32 -32
  92. package/lib/Pages/notifications/templates/templates.component.d.ts +54 -46
  93. package/lib/Pages/providers/provider/provider.component.d.ts +13 -12
  94. package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +29 -27
  95. package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +39 -40
  96. package/lib/Pages/roles/permissions/permissions.component.d.ts +49 -54
  97. package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +53 -55
  98. package/lib/Pages/sectors/department-info/department-info.component.d.ts +41 -44
  99. package/lib/Pages/sectors/sector/sector.component.d.ts +35 -33
  100. package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +40 -44
  101. package/lib/Pages/shared/Enums/ParticipantType.d.ts +6 -0
  102. package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +7 -8
  103. package/lib/Pages/shared/Services/DepartmentService.service.d.ts +2 -2
  104. package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +5 -5
  105. package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +2 -1
  106. package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +5 -5
  107. package/lib/Pages/shared/Services/LicenseService.service.d.ts +2 -2
  108. package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +4 -4
  109. package/lib/Pages/shared/Services/LookupService.service.d.ts +14 -11
  110. package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +8 -7
  111. package/lib/Pages/shared/Services/PermissionsService.service.d.ts +5 -6
  112. package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +2 -2
  113. package/lib/Pages/shared/Services/SectorService.service.d.ts +7 -7
  114. package/lib/Pages/shared/Services/TemplateService.service.d.ts +20 -19
  115. package/lib/Pages/shared/Services/localizationsService.service .d.ts +12 -11
  116. package/lib/Pages/shared/Services/provider.service.d.ts +1 -1
  117. package/lib/Pages/shared/Services/userService.service.d.ts +2 -0
  118. package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +0 -1
  119. package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +1 -1
  120. package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +0 -2
  121. package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +1 -1
  122. package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +1 -1
  123. package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +1 -1
  124. package/lib/Pages/users/users.component.d.ts +54 -68
  125. package/lib/masterlayout.component.d.ts +4 -5
  126. package/lib/masterlayout.module.d.ts +8 -9
  127. package/package.json +3 -3
  128. package/src/lib/assets/sass/custom-styles.scss +115 -0
  129. package/src/lib/assets/sass/style-rtl.scss +2 -0
  130. package/src/lib/assets/sass/style.scss +2 -2
  131. package/esm2015/lib/Pages/notifications/edit-template/edit-template.component.js +0 -35
  132. package/lib/Pages/notifications/edit-template/edit-template.component.d.ts +0 -35
@@ -1,51 +1,91 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Component, ViewChild } from '@angular/core';
3
3
  import { FormGroup } from '@angular/forms';
4
- import { CheckBoxOptions, DropdownOptions, EnglishArabicDTO, FilterItem, FilterType, ForceDirection, InputType, MultiLingualTextBoxOptions, PagingOptions, TextAreaOptions, TextBoxOptions } from '@bnsights/bbsf-controls';
4
+ import { CheckBoxOptions, ConfirmationModalOptions, DropdownOptions, EnglishArabicDTO, FilterItem, FilterType, ForceDirection, FormOptions, InputType, MultiLingualTextBoxOptions, PagingActionMode, PagingOptions, TextAreaOptions, TextBoxOptions } from '@bnsights/bbsf-controls';
5
5
  import { PublicHolidayModel } from '../../shared/models/PublicHolidayModels/PublicHolidayModel';
6
- import { UsersIDRequestModel } from '../../shared/models/UserModels/UsersIDRequestModel';
7
6
  import { PageInfoService } from '../../../_metronic/core/services/page-info.service';
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 "../../shared/Services/data.service";
12
- import * as i4 from "../../shared/Services/PublicHolidayService.service";
13
- import * as i5 from "@ng-bootstrap/ng-bootstrap";
14
- import * as i6 from "ng-block-ui";
15
- import * as i7 from "@bnsights/bbsf-controls";
16
- import * as i8 from "@angular/material/menu";
17
- import * as i9 from "../../empty-data/empty-data.component";
18
- import * as i10 from "@angular/common";
19
- import * as i11 from "@angular/forms";
20
- import * as i12 from "ng-inline-svg";
10
+ import * as i3 from "../../shared/Services/PublicHolidayService.service";
11
+ import * as i4 from "@ng-bootstrap/ng-bootstrap";
12
+ import * as i5 from "ng-block-ui";
13
+ import * as i6 from "@bnsights/bbsf-controls";
14
+ import * as i7 from "@angular/material/menu";
15
+ import * as i8 from "../../empty-data/empty-data.component";
16
+ import * as i9 from "@angular/common";
17
+ import * as i10 from "@angular/forms";
18
+ import * as i11 from "ng-inline-svg";
21
19
  export class PublicHolidayComponent {
22
- constructor(pageInfoService, utilityService, bbsfTranslateService, environmentService, dataServices, authService, PublicHolidayService, modalService) {
20
+ constructor(pageInfoService, utilityService, bbsfTranslateService, authService, PublicHolidayService, modalService, requestHandlerService) {
23
21
  this.pageInfoService = pageInfoService;
24
22
  this.utilityService = utilityService;
25
23
  this.bbsfTranslateService = bbsfTranslateService;
26
- this.environmentService = environmentService;
27
- this.dataServices = dataServices;
28
24
  this.authService = authService;
29
25
  this.PublicHolidayService = PublicHolidayService;
30
26
  this.modalService = modalService;
27
+ this.requestHandlerService = requestHandlerService;
28
+ //Page requirements
29
+ this.ShowPageContent = false;
31
30
  this.ApiUrl = "/api/admin/PublicHoliday/";
32
31
  this.CountriesList = [];
33
32
  this.MonthsList = [];
34
33
  this.DaysList = [];
35
34
  this.PublicHolidayForm = new FormGroup({});
36
- this.showFilter = false;
37
35
  this.PublicHolidayPagingResult = [];
36
+ this.clientSidePagingResult = [];
38
37
  this.IsFilterLoaded = false;
39
- this.ProductionMode = false;
40
38
  //Add Model Controls
41
39
  this.AddPublicHolidayForm = new FormGroup({});
40
+ this.AddPublicHolidayFormOptions = new FormOptions;
42
41
  //Edit Model Controls
43
42
  this.EditPublicHolidayForm = new FormGroup({});
44
- //delete Model Controls
45
- this.deletePublicHolidayList = [];
46
- this.language = "";
47
- // Decorator wires up blockUI instance
48
- this.ShowPageContent = false;
43
+ this.EditPublicHolidayFormOptions = new FormOptions;
44
+ this.deleteControlLoaded = false;
45
+ this.getAddPublicHolidayModel = () => {
46
+ let paramArray = [];
47
+ let ResultModel = this.AddPublicHolidayForm.value;
48
+ let AddModel = new PublicHolidayModel();
49
+ if (!this.ProductionMode)
50
+ AddModel.SysName = ResultModel.SysName;
51
+ AddModel.Name.Arabic = ResultModel.AddName.ArabicValue;
52
+ AddModel.Name.English = ResultModel.AddName.EnglishValue;
53
+ AddModel.Description.Arabic = ResultModel.DescriptionInArabic;
54
+ AddModel.Description.English = ResultModel.DescriptionInEnglish;
55
+ AddModel.CountryID = ResultModel.CountryOptions != null ? Number(ResultModel.CountryOptions) : null;
56
+ AddModel.IsActive = ResultModel.IsActive;
57
+ AddModel.Day = ResultModel.DayOptions != null ? Number(ResultModel.DayOptions) : 0;
58
+ AddModel.Month = ResultModel.MonthOptions != null ? Number(ResultModel.MonthOptions) : 0;
59
+ paramArray.push(AddModel);
60
+ return paramArray;
61
+ };
62
+ this.getAddPublicHolidayFunction = (AddModel) => {
63
+ return this.PublicHolidayService.AddPublicHoliday(AddModel);
64
+ };
65
+ this.getEditPublicHolidayModel = () => {
66
+ let paramArray = [];
67
+ let ResultModel = this.EditPublicHolidayForm.value;
68
+ let EditModel = new PublicHolidayModel();
69
+ EditModel.ID = Number(this.PublicHolidayId);
70
+ EditModel.Name.Arabic = ResultModel.Name.ArabicValue;
71
+ EditModel.Name.English = ResultModel.Name.EnglishValue;
72
+ if (!this.ProductionMode)
73
+ EditModel.SysName = ResultModel.EditSysName;
74
+ EditModel.Description.English = ResultModel.EditDescriptionInEnglish;
75
+ EditModel.Description.Arabic = ResultModel.EditDescriptionInArabic;
76
+ EditModel.IsActive = ResultModel.EditIsActive;
77
+ EditModel.CountryID = ResultModel.EditCountryOptions != null ? Number(ResultModel.EditCountryOptions) : null;
78
+ EditModel.Day = ResultModel.EditDayOptions != null ? Number(ResultModel.EditDayOptions) : 0;
79
+ EditModel.Month = ResultModel.EditMonthOptions != null ? Number(ResultModel.EditMonthOptions) : 0;
80
+ paramArray.push(EditModel);
81
+ return paramArray;
82
+ };
83
+ this.getEditPublicHolidayFunction = (EditModel) => {
84
+ return this.PublicHolidayService.EditPublicHoliday(EditModel);
85
+ };
86
+ this.deletePublicHoliday = (id) => {
87
+ return this.PublicHolidayService.DeletePublicHoliday(id);
88
+ };
49
89
  }
50
90
  ngOnInit() {
51
91
  return __awaiter(this, void 0, void 0, function* () {
@@ -59,288 +99,246 @@ export class PublicHolidayComponent {
59
99
  this.pageInfoService.calculateBreadcrumbs();
60
100
  this.bbsfTranslateService.onLangChange.subscribe((event) => {
61
101
  this.ShowPageContent = false;
62
- this.language = event.lang;
63
102
  this.ngOnInit();
64
103
  });
65
- this.language = yield this.utilityService.getCurrentLanguage();
66
- this.ProductionMode = this.environmentService.getProductionMode();
67
- this.LoadList();
68
- });
69
- }
70
- //initialize filters and load any drop down list
71
- LoadList() {
72
- this.PublicHolidayService.Loaddropdowns().subscribe((result) => {
73
- let DropdownLists = result;
74
- this.CountriesList = DropdownLists.countries;
75
- this.MonthsList = DropdownLists.months;
76
- this.DaysList = DropdownLists.days;
77
- // TextBox inti
78
- this.searchTextBox = new TextBoxOptions();
79
- this.searchTextBox.Name = "searchTextBox";
80
- this.searchTextBox.Type = InputType.Text;
81
- this.searchTextBox.Placeholder = this.utilityService.getResourceValue("SearchByName");
82
- this.searchTextBox.HideLabel = true;
83
- this.TextInputFilter = new FilterItem();
84
- this.TextInputFilter.FormControlName = "searchTextBox";
85
- this.TextInputFilter.ActionParameterName = "searchText";
86
- this.TextInputFilter.IsFormControl = true;
87
- this.TextInputFilter.FilterType = FilterType.TextBox;
88
- this.PublicHolidayPaging = new PagingOptions();
89
- this.PublicHolidayPaging.ActionPostURL = this.environmentService.getApiUrl() + this.ApiUrl + 'GetPublicHolidaysByFilter';
90
- this.PublicHolidayPaging.OnKeyPressFiltersControlNames = ["searchTextBox"];
91
- this.PublicHolidayPaging.Filters = [this.TextInputFilter];
92
- this.PublicHolidayPaging.ValidationToken = this.authService.authorizationHeaderValue();
93
- this.IsFilterLoaded = true;
104
+ this.initializePage();
94
105
  });
95
106
  }
96
- ReinitializePublicHolidayPaging() {
97
- let element = this.input;
98
- element.ReinitializePaging();
99
- }
100
- UpdatePublicHolidayPaging() {
101
- let element = this.input;
102
- element.UpdatePaging();
107
+ //initialize filters and paging
108
+ initializePage() {
109
+ // TextBox inti
110
+ this.searchTextBox = new TextBoxOptions();
111
+ this.searchTextBox.Name = "searchTextBox";
112
+ this.searchTextBox.Type = InputType.Text;
113
+ this.searchTextBox.Placeholder = this.utilityService.getResourceValue("SearchByName");
114
+ this.searchTextBox.HideLabel = true;
115
+ this.TextInputFilter = new FilterItem();
116
+ this.TextInputFilter.FormControlName = "searchTextBox";
117
+ this.TextInputFilter.ActionParameterName = "searchText";
118
+ this.TextInputFilter.IsFormControl = true;
119
+ this.TextInputFilter.FilterType = FilterType.TextBox;
120
+ this.PublicHolidayPaging = new PagingOptions();
121
+ this.PublicHolidayPaging.ActionPostURL = this.ApiUrl + 'GetPublicHolidaysByFilter';
122
+ this.PublicHolidayPaging.OnKeyPressFiltersControlNames = ["searchTextBox"];
123
+ this.PublicHolidayPaging.Filters = [this.TextInputFilter];
124
+ this.PublicHolidayPaging.ValidationToken = this.authService.authorizationHeaderValue();
125
+ this.IsFilterLoaded = true;
103
126
  }
127
+ //Paging functions
104
128
  setPublicHolidayListResult(result) {
105
129
  this.PublicHolidayPagingResult = result;
130
+ this.clientSidePagingResult = result;
106
131
  this.ShowPageContent = true;
107
132
  this.utilityService.stopBlockUI();
108
133
  }
109
- resetFilters() {
110
- this.PublicHolidayForm.controls["searchTextBox"].setValue(null);
111
- let element = this.input;
112
- element.ReinitializePaging();
113
- }
114
- showAddPublicHolidayModal(AddPublicHolidayModal) {
115
- this.utilityService.startBlockUI();
116
- this.AddPublicHolidayForm = new FormGroup({});
117
- this.MultiLingualName = new MultiLingualTextBoxOptions();
118
- this.MultiLingualName.Name = "Name";
119
- this.MultiLingualName.ArabicLabelKey = "NameInArabic";
120
- this.MultiLingualName.EnglishLabelKey = "NameInEnglish";
121
- this.MultiLingualName.IsRequired = true;
122
- this.MultiLingualName.Value = null;
123
- this.SysName = new TextBoxOptions();
124
- this.SysName.Name = "SysName";
125
- this.SysName.LabelKey = "SysName";
126
- this.SysName.Type = InputType.Text;
127
- this.SysName.Value = null;
128
- this.SysName.IsRequired = true;
129
- this.DescriptionInEnglish = new TextAreaOptions();
130
- this.DescriptionInEnglish.Name = "DescriptionInEnglish";
131
- this.DescriptionInEnglish.LabelKey = "DescriptionInEnglish";
132
- this.DescriptionInEnglish.Value = null;
133
- this.DescriptionInEnglish.IsRequired = true;
134
- this.DescriptionInArabic = new TextAreaOptions();
135
- this.DescriptionInArabic.Name = "DescriptionInArabic";
136
- this.DescriptionInArabic.LabelKey = "DescriptionInArabic";
137
- this.DescriptionInArabic.Value = null;
138
- this.DescriptionInArabic.IsRequired = true;
139
- this.DescriptionInArabic.ForceDirection = ForceDirection.Arabic;
140
- this.CountryOptions = new DropdownOptions();
141
- this.CountryOptions.Name = "CountryOptions";
142
- this.CountryOptions.LabelKey = "Country";
143
- this.CountryOptions.DataSource = this.CountriesList;
144
- this.CountryOptions.SingleSelection = true;
145
- this.CountryOptions.AllowSearchFilter = true;
146
- this.CountryOptions.Placeholder = "";
147
- this.CountryOptions.IsRequired = true;
148
- //Months init
149
- this.MonthOptions = new DropdownOptions();
150
- this.MonthOptions.Name = "MonthOptions";
151
- this.MonthOptions.LabelKey = "Month";
152
- this.MonthOptions.DataSource = this.MonthsList;
153
- this.MonthOptions.SingleSelection = true;
154
- this.MonthOptions.AllowSearchFilter = true;
155
- this.MonthOptions.Placeholder = "";
156
- this.MonthOptions.IsRequired = true;
157
- //Days init
158
- this.DayOptions = new DropdownOptions();
159
- this.DayOptions.Name = "DayOptions";
160
- this.DayOptions.LabelKey = "Day";
161
- this.DayOptions.DataSource = this.DaysList;
162
- this.DayOptions.SingleSelection = true;
163
- this.DayOptions.AllowSearchFilter = true;
164
- this.DayOptions.Placeholder = "";
165
- this.DayOptions.IsRequired = true;
166
- this.IsActive = new CheckBoxOptions();
167
- this.IsActive.Name = "IsActive";
168
- this.IsActive.LabelKey = "Active";
169
- this.IsActive.Value = false;
170
- this.modalService.open(AddPublicHolidayModal);
171
- this.utilityService.stopBlockUI();
172
- }
173
- addPublicHoliday() {
174
- if (this.AddPublicHolidayForm.invalid) {
175
- return;
176
- }
177
- else {
178
- let ResultModel = this.AddPublicHolidayForm.value;
179
- let AddModel = new PublicHolidayModel();
180
- AddModel.SysName = ResultModel.SysName;
181
- AddModel.Name.Arabic = ResultModel.Name.ArabicValue;
182
- AddModel.Name.English = ResultModel.Name.EnglishValue;
183
- AddModel.Description.Arabic = ResultModel.DescriptionInArabic;
184
- AddModel.Description.English = ResultModel.DescriptionInEnglish;
185
- AddModel.CountryID = ResultModel.CountryOptions != null ? Number(ResultModel.CountryOptions) : null;
186
- AddModel.IsActive = ResultModel.IsActive;
187
- AddModel.Day = ResultModel.DayOptions != null ? Number(ResultModel.DayOptions) : 0;
188
- AddModel.Month = ResultModel.MonthOptions != null ? Number(ResultModel.MonthOptions) : 0;
189
- this.PublicHolidayService.AddPublicHoliday(AddModel).subscribe((result) => {
190
- this.modalService.dismissAll();
191
- let element = this.input;
192
- element.ReinitializePaging();
193
- }, (error) => {
194
- });
195
- }
196
- }
197
- showEditPublicHolidayModal(PublicHoliday, EditPublicHolidayModal) {
198
- this.utilityService.startBlockUI();
199
- this.EditPublicHolidayForm = new FormGroup({});
200
- this.PublicHolidayId = PublicHoliday.id;
201
- let Name = new EnglishArabicDTO();
202
- Name.Arabic = PublicHoliday.name.arabic;
203
- Name.English = PublicHoliday.name.english;
204
- this.EditMultiLingualName = new MultiLingualTextBoxOptions();
205
- this.EditMultiLingualName.Name = "Name";
206
- this.EditMultiLingualName.ArabicLabelKey = "NameInArabic";
207
- this.EditMultiLingualName.EnglishLabelKey = "NameInEnglish";
208
- this.EditMultiLingualName.IsRequired = true;
209
- this.EditMultiLingualName.Value = Name;
210
- this.EditSysName = new TextBoxOptions();
211
- this.EditSysName.Name = "EditSysName";
212
- this.EditSysName.LabelKey = "SysName";
213
- this.EditSysName.Type = InputType.Text;
214
- this.EditSysName.Value = PublicHoliday.sysName;
215
- this.EditSysName.IsRequired = true;
216
- this.EditDescriptionInEnglish = new TextAreaOptions();
217
- this.EditDescriptionInEnglish.Name = "EditDescriptionInEnglish";
218
- this.EditDescriptionInEnglish.LabelKey = "DescriptionInEnglish";
219
- this.EditDescriptionInEnglish.Value = PublicHoliday.description.english;
220
- this.EditDescriptionInEnglish.IsRequired = false;
221
- this.EditDescriptionInArabic = new TextAreaOptions();
222
- this.EditDescriptionInArabic.Name = "EditDescriptionInArabic";
223
- this.EditDescriptionInArabic.LabelKey = "DescriptionInArabic";
224
- this.EditDescriptionInArabic.Value = PublicHoliday.description.arabic;
225
- this.EditDescriptionInArabic.ForceDirection = ForceDirection.Arabic;
226
- this.EditCountryOptions = new DropdownOptions();
227
- this.EditCountryOptions.Name = "EditCountryOptions";
228
- this.EditCountryOptions.LabelKey = "Country";
229
- this.EditCountryOptions.DataSource = this.CountriesList;
230
- this.EditCountryOptions.SingleSelection = true;
231
- this.EditCountryOptions.AllowSearchFilter = true;
232
- this.EditCountryOptions.Placeholder = "";
233
- this.EditCountryOptions.SelectedItems = this.CountriesList.filter((item) => { return parseInt(item.key) == PublicHoliday.countryID; }).map((item) => item.key)[0];
234
- ;
235
- //Months init
236
- this.EditMonthOptions = new DropdownOptions();
237
- this.EditMonthOptions.Name = "EditMonthOptions";
238
- this.EditMonthOptions.LabelKey = "Month";
239
- this.EditMonthOptions.DataSource = this.MonthsList;
240
- this.EditMonthOptions.SingleSelection = true;
241
- this.EditMonthOptions.AllowSearchFilter = true;
242
- this.EditMonthOptions.Placeholder = "";
243
- this.EditMonthOptions.IsRequired = true;
244
- this.EditMonthOptions.SelectedItems = this.MonthsList.filter((item) => { return parseInt(item.key) == PublicHoliday.month; }).map((item) => item.key)[0];
245
- ;
246
- //Days init
247
- this.EditDayOptions = new DropdownOptions();
248
- this.EditDayOptions.Name = "EditDayOptions";
249
- this.EditDayOptions.LabelKey = "Day";
250
- this.EditDayOptions.DataSource = this.DaysList;
251
- this.EditDayOptions.SingleSelection = true;
252
- this.EditDayOptions.AllowSearchFilter = true;
253
- this.EditDayOptions.Placeholder = "";
254
- this.EditDayOptions.IsRequired = true;
255
- this.EditDayOptions.SelectedItems = this.MonthsList.filter((item) => { return parseInt(item.key) == PublicHoliday.day; }).map((item) => item.key)[0];
256
- ;
257
- this.EditIsActive = new CheckBoxOptions();
258
- this.EditIsActive.Name = "EditIsActive";
259
- this.EditIsActive.LabelKey = "Active";
260
- this.EditIsActive.Value = PublicHoliday.isActive;
261
- this.modalService.open(EditPublicHolidayModal);
262
- this.utilityService.stopBlockUI();
263
- }
264
- editPublicHoliday() {
265
- if (this.EditPublicHolidayForm.invalid) {
266
- return;
267
- }
268
- else {
269
- let ResultModel = this.EditPublicHolidayForm.value;
270
- let EditModel = new PublicHolidayModel();
271
- EditModel.ID = Number(this.PublicHolidayId);
272
- EditModel.Name.Arabic = ResultModel.Name.ArabicValue;
273
- EditModel.Name.English = ResultModel.Name.EnglishValue;
274
- EditModel.SysName = ResultModel.EditSysName;
275
- EditModel.Description.English = ResultModel.EditDescriptionInEnglish;
276
- EditModel.Description.Arabic = ResultModel.EditDescriptionInArabic;
277
- EditModel.IsActive = ResultModel.EditIsActive;
278
- EditModel.CountryID = ResultModel.EditCountryOptions != null ? Number(ResultModel.EditCountryOptions) : null;
279
- EditModel.Day = ResultModel.EditDayOptions != null ? Number(ResultModel.EditDayOptions) : 0;
280
- EditModel.Month = ResultModel.EditMonthOptions != null ? Number(ResultModel.EditMonthOptions) : 0;
281
- this.PublicHolidayService.EditPublicHoliday(EditModel).subscribe((result) => {
282
- this.modalService.dismissAll();
283
- let element = this.input;
284
- element.UpdatePaging();
285
- }, (error) => {
134
+ searchClientSide(searchValue) {
135
+ if (searchValue)
136
+ this.clientSidePagingResult = this.PublicHolidayPagingResult.filter(function (item) {
137
+ return (item.name.english.toLowerCase().includes(searchValue.toLowerCase())
138
+ || item.name.arabic.toLowerCase().includes(searchValue.toLowerCase()));
286
139
  });
287
- }
140
+ else
141
+ this.clientSidePagingResult = this.PublicHolidayPagingResult;
288
142
  }
289
- showDeletePublicHolidayModal(Resource, deletePublicHolidayModal) {
290
- this.deletePublicHolidayList = [];
291
- this.deletePublicHolidayList.push(Resource);
143
+ //Add Public Holiday
144
+ showAddPublicHolidayModal(AddPublicHolidayModal) {
292
145
  this.utilityService.startBlockUI();
293
- this.modalService.open(deletePublicHolidayModal);
294
- this.utilityService.stopBlockUI();
146
+ this.PublicHolidayService.Loaddropdowns().subscribe((result) => {
147
+ let DropdownLists = result;
148
+ this.CountriesList = DropdownLists.countries;
149
+ this.MonthsList = DropdownLists.months;
150
+ this.DaysList = DropdownLists.days;
151
+ this.AddPublicHolidayForm = new FormGroup({});
152
+ this.AddPublicHolidayFormOptions = new FormOptions();
153
+ this.AddPublicHolidayFormOptions.FormGroup = this.AddPublicHolidayForm;
154
+ this.AddPublicHolidayFormOptions.GetModelFunction = this.getAddPublicHolidayModel;
155
+ this.AddPublicHolidayFormOptions.ServiceSubmitFunction = this.getAddPublicHolidayFunction;
156
+ this.AddPublicHolidayFormOptions.PagingReference = this.pagingElement;
157
+ this.AddName = new MultiLingualTextBoxOptions();
158
+ this.AddName.Name = "AddName";
159
+ this.AddName.ArabicLabelKey = "NameInArabic";
160
+ this.AddName.EnglishLabelKey = "NameInEnglish";
161
+ this.AddName.IsRequired = true;
162
+ this.AddName.Value = null;
163
+ this.AddName.MaxLength = 100;
164
+ this.SysName = new TextBoxOptions();
165
+ this.SysName.Name = "SysName";
166
+ this.SysName.LabelKey = "SysName";
167
+ this.SysName.Type = InputType.Text;
168
+ this.SysName.Value = null;
169
+ this.SysName.IsRequired = true;
170
+ this.DescriptionInEnglish = new TextAreaOptions();
171
+ this.DescriptionInEnglish.Name = "DescriptionInEnglish";
172
+ this.DescriptionInEnglish.LabelKey = "DescriptionInEnglish";
173
+ this.DescriptionInEnglish.Value = null;
174
+ this.DescriptionInEnglish.IsRequired = true;
175
+ this.DescriptionInEnglish.MaxLength = 2000;
176
+ this.DescriptionInArabic = new TextAreaOptions();
177
+ this.DescriptionInArabic.Name = "DescriptionInArabic";
178
+ this.DescriptionInArabic.LabelKey = "DescriptionInArabic";
179
+ this.DescriptionInArabic.Value = null;
180
+ this.DescriptionInArabic.IsRequired = true;
181
+ this.DescriptionInArabic.ForceDirection = ForceDirection.Arabic;
182
+ this.DescriptionInArabic.MaxLength = 2000;
183
+ this.CountryOptions = new DropdownOptions();
184
+ this.CountryOptions.Name = "CountryOptions";
185
+ this.CountryOptions.LabelKey = "Country";
186
+ this.CountryOptions.DataSource = this.CountriesList;
187
+ this.CountryOptions.SingleSelection = true;
188
+ this.CountryOptions.AllowSearchFilter = true;
189
+ this.CountryOptions.Placeholder = "";
190
+ this.CountryOptions.IsRequired = true;
191
+ //Months init
192
+ this.MonthOptions = new DropdownOptions();
193
+ this.MonthOptions.Name = "MonthOptions";
194
+ this.MonthOptions.LabelKey = "Month";
195
+ this.MonthOptions.DataSource = this.MonthsList;
196
+ this.MonthOptions.SingleSelection = true;
197
+ this.MonthOptions.AllowSearchFilter = true;
198
+ this.MonthOptions.Placeholder = "";
199
+ this.MonthOptions.IsRequired = true;
200
+ //Days init
201
+ this.DayOptions = new DropdownOptions();
202
+ this.DayOptions.Name = "DayOptions";
203
+ this.DayOptions.LabelKey = "Day";
204
+ this.DayOptions.DataSource = this.DaysList;
205
+ this.DayOptions.SingleSelection = true;
206
+ this.DayOptions.AllowSearchFilter = true;
207
+ this.DayOptions.Placeholder = "";
208
+ this.DayOptions.IsRequired = true;
209
+ this.IsActive = new CheckBoxOptions();
210
+ this.IsActive.Name = "IsActive";
211
+ this.IsActive.LabelKey = "Active";
212
+ this.IsActive.Value = false;
213
+ this.modalService.open(AddPublicHolidayModal);
214
+ this.utilityService.stopBlockUI();
215
+ });
295
216
  }
296
- deletePublicHoliday() {
297
- let UsersIDModel = new UsersIDRequestModel();
298
- for (let index = 0; index < this.deletePublicHolidayList.length; index++) {
299
- const element = this.deletePublicHolidayList[index];
300
- UsersIDModel.UsersIDs.push(element.id);
301
- }
302
- this.PublicHolidayService.DeletePublicHoliday(UsersIDModel).subscribe((result) => {
303
- this.deletePublicHolidayList = [];
304
- this.modalService.dismissAll();
305
- let element = this.input;
306
- element.ReinitializePaging();
307
- }, (error) => {
217
+ //Edit Public Holiday
218
+ showEditPublicHolidayModal(publicHolidayID, PublicHolidayIDEnc, EditPublicHolidayModal) {
219
+ this.PublicHolidayId = publicHolidayID;
220
+ this.PublicHolidayService.GetEditPublicHolidayData(PublicHolidayIDEnc).subscribe((result) => {
221
+ let resultObj = result;
222
+ let publicHoliday = resultObj.model;
223
+ let lists = resultObj.lists;
224
+ this.CountriesList = lists.countries;
225
+ this.MonthsList = lists.months;
226
+ this.DaysList = lists.days;
227
+ this.EditPublicHolidayForm = new FormGroup({});
228
+ this.EditPublicHolidayFormOptions = new FormOptions();
229
+ this.EditPublicHolidayFormOptions.FormGroup = this.EditPublicHolidayForm;
230
+ this.EditPublicHolidayFormOptions.GetModelFunction = this.getEditPublicHolidayModel;
231
+ this.EditPublicHolidayFormOptions.ServiceSubmitFunction = this.getEditPublicHolidayFunction;
232
+ this.EditPublicHolidayFormOptions.PagingReference = this.pagingElement;
233
+ this.EditPublicHolidayFormOptions.PagingActionMode = PagingActionMode.Update;
234
+ let Name = new EnglishArabicDTO();
235
+ Name.Arabic = publicHoliday.name.arabic;
236
+ Name.English = publicHoliday.name.english;
237
+ this.EditMultiLingualName = new MultiLingualTextBoxOptions();
238
+ this.EditMultiLingualName.Name = "Name";
239
+ this.EditMultiLingualName.ArabicLabelKey = "NameInArabic";
240
+ this.EditMultiLingualName.EnglishLabelKey = "NameInEnglish";
241
+ this.EditMultiLingualName.IsRequired = true;
242
+ this.EditMultiLingualName.Value = Name;
243
+ this.EditSysName = new TextBoxOptions();
244
+ this.EditSysName.Name = "EditSysName";
245
+ this.EditSysName.LabelKey = "SysName";
246
+ this.EditSysName.Type = InputType.Text;
247
+ this.EditSysName.Value = publicHoliday.sysName;
248
+ this.EditSysName.IsRequired = true;
249
+ this.EditDescriptionInEnglish = new TextAreaOptions();
250
+ this.EditDescriptionInEnglish.Name = "EditDescriptionInEnglish";
251
+ this.EditDescriptionInEnglish.LabelKey = "DescriptionInEnglish";
252
+ this.EditDescriptionInEnglish.Value = publicHoliday.description.english;
253
+ this.EditDescriptionInEnglish.IsRequired = false;
254
+ this.EditDescriptionInArabic = new TextAreaOptions();
255
+ this.EditDescriptionInArabic.Name = "EditDescriptionInArabic";
256
+ this.EditDescriptionInArabic.LabelKey = "DescriptionInArabic";
257
+ this.EditDescriptionInArabic.Value = publicHoliday.description.arabic;
258
+ this.EditDescriptionInArabic.ForceDirection = ForceDirection.Arabic;
259
+ this.EditCountryOptions = new DropdownOptions();
260
+ this.EditCountryOptions.Name = "EditCountryOptions";
261
+ this.EditCountryOptions.LabelKey = "Country";
262
+ this.EditCountryOptions.DataSource = this.CountriesList;
263
+ this.EditCountryOptions.SingleSelection = true;
264
+ this.EditCountryOptions.AllowSearchFilter = true;
265
+ this.EditCountryOptions.Placeholder = "";
266
+ this.EditCountryOptions.SelectedItems = this.CountriesList.filter((item) => { return parseInt(item.key) == publicHoliday.countryID; }).map((item) => item.key)[0];
267
+ ;
268
+ //Months init
269
+ this.EditMonthOptions = new DropdownOptions();
270
+ this.EditMonthOptions.Name = "EditMonthOptions";
271
+ this.EditMonthOptions.LabelKey = "Month";
272
+ this.EditMonthOptions.DataSource = this.MonthsList;
273
+ this.EditMonthOptions.SingleSelection = true;
274
+ this.EditMonthOptions.AllowSearchFilter = true;
275
+ this.EditMonthOptions.Placeholder = "";
276
+ this.EditMonthOptions.IsRequired = true;
277
+ this.EditMonthOptions.SelectedItems = this.MonthsList.filter((item) => { return parseInt(item.key) == publicHoliday.month; }).map((item) => item.key)[0];
278
+ ;
279
+ //Days init
280
+ this.EditDayOptions = new DropdownOptions();
281
+ this.EditDayOptions.Name = "EditDayOptions";
282
+ this.EditDayOptions.LabelKey = "Day";
283
+ this.EditDayOptions.DataSource = this.DaysList;
284
+ this.EditDayOptions.SingleSelection = true;
285
+ this.EditDayOptions.AllowSearchFilter = true;
286
+ this.EditDayOptions.Placeholder = "";
287
+ this.EditDayOptions.IsRequired = true;
288
+ this.EditDayOptions.SelectedItems = this.MonthsList.filter((item) => { return parseInt(item.key) == publicHoliday.day; }).map((item) => item.key)[0];
289
+ ;
290
+ this.EditIsActive = new CheckBoxOptions();
291
+ this.EditIsActive.Name = "EditIsActive";
292
+ this.EditIsActive.LabelKey = "Active";
293
+ this.EditIsActive.Value = publicHoliday.isActive;
294
+ this.modalService.open(EditPublicHolidayModal);
308
295
  });
309
296
  }
297
+ //Delete Public Holiday
298
+ showDeletePublicHolidayModal(publicHolidayIdEnc) {
299
+ this.deletePublicHolidayId = publicHolidayIdEnc;
300
+ //array sent to service function
301
+ let paramArray = [];
302
+ paramArray.push(this.deletePublicHolidayId);
303
+ this.DeleteConfirmationOptions = new ConfirmationModalOptions();
304
+ this.DeleteConfirmationOptions.ServiceSubmitFunction = this.deletePublicHoliday;
305
+ this.DeleteConfirmationOptions.ServiceSubmitModel = paramArray;
306
+ this.DeleteConfirmationOptions.PagingReference = this.pagingElement;
307
+ this.deleteControlLoaded = true;
308
+ setTimeout(() => {
309
+ this.ConfirmationModalControl.showModal();
310
+ }, 200);
311
+ }
312
+ //Generate UAE Public Holiday
310
313
  showGenerateUAEPublicHolidayModal(GenerateUAEPublicHolidaysModal) {
311
314
  this.modalService.open(GenerateUAEPublicHolidaysModal);
312
315
  }
313
316
  generateUAEPublicHoliday() {
314
317
  this.PublicHolidayService.GenerateUAEPublicHoliday().subscribe((result) => {
315
318
  this.modalService.dismissAll();
316
- let element = this.input;
319
+ let element = this.pagingElement;
317
320
  element.ReinitializePaging();
318
321
  }, (error) => {
319
322
  });
320
323
  }
324
+ //On destroy
325
+ ngOnDestroy() {
326
+ this.requestHandlerService.destroyHandler();
327
+ }
321
328
  }
322
- PublicHolidayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PublicHolidayComponent, deps: [{ token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i2.BBSFTranslateService }, { token: i2.EnvironmentService }, { token: i3.DataSecretService }, { token: i2.AuthService }, { token: i4.PublicHolidayService }, { token: i5.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
323
- PublicHolidayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: PublicHolidayComponent, selector: "lib-public-holiday", viewQueries: [{ propertyName: "input", first: true, predicate: ["PublicHolidayPagingViewElement"], descendants: true }, { propertyName: "ClosePublicHolidayModal", first: true, predicate: ["ClosePublicHolidayModal"], descendants: true }, { propertyName: "CloseEditPublicHolidayModal", first: true, predicate: ["CloseEditPublicHolidayModal"], descendants: true }, { propertyName: "CloseDeletePublicHolidayModal", first: true, predicate: ["CloseDeletePublicHolidayModal"], descendants: true }, { propertyName: "CloseGeneratePublicHolidayModal", first: true, predicate: ["CloseGeneratePublicHolidayModal"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n <!-- Page Content -->\r\n <div *ngIf=\"ShowPageContent\" 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\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"PublicHolidayForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"PublicHolidayForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <!-- begin::Menu -->\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-sm btn-primary me-3\" (click)=\"showAddPublicHolidayModal(AddPublicHolidayModal)\">\r\n <i class=\"me-1 fas fa-plus\"></i>\r\n {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n <button type=\"button\" title=\"{{utilityService.getResourceValue('PublicHolidaysCreateUAE')}}\" class=\"btn btn-sm btn-light-primary me-3 \" (click)=\"showGenerateUAEPublicHolidayModal(GenerateUAEPublicHolidaysModal)\">\r\n <i class=\"me-1 fa fa-calendar-alt\"></i>\r\n {{utilityService.getResourceValue('PublicHolidaysCreateUAE')}}\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 <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Country\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Date\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Status\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Name\")}}</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\r\n <tr *ngFor=\"let PublicHoliday of PublicHolidayPagingResult\">\r\n <td>\r\n <div class=\"text-dark\" *ngIf=\"language=='en'\">{{PublicHoliday.name.english}}</div>\r\n <div class=\"text-dark\" *ngIf=\"language=='ar'\">{{PublicHoliday.name.arabic}}</div>\r\n </td>\r\n <td>{{PublicHoliday.countryName}}</td>\r\n <td>{{PublicHoliday.date}}</td>\r\n <td>\r\n <span class=\"badge badge-light-primary\" *ngIf=\"PublicHoliday.isActive;else other_content\">\r\n {{utilityService.getResourceValue(\"Active\")}}\r\n </span>\r\n <ng-template #other_content>\r\n <span class=\"badge badge-light-danger\">\r\n {{utilityService.getResourceValue(\"Inactive\")}}\r\n </span>\r\n </ng-template>\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 class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditPublicHolidayModal(PublicHoliday, EditPublicHolidayModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\"\r\n (click)=\"showDeletePublicHolidayModal(PublicHoliday , deletePublicHolidayModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"PublicHolidayPagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!--end::Permission list-->\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setPublicHolidayListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"PublicHolidayPaging\" [group]=\"PublicHolidayForm\" #PublicHolidayPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!--add Modal-->\r\n <ng-template #AddPublicHolidayModal 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(\"Add\")}} {{utilityService.getResourceValue(\"PublicHoliday\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"AddPublicHolidayForm\"\r\n (ngSubmit)=\"addPublicHoliday()\">\r\n <div class=\"row\" *ngIf=\"!ProductionMode\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"SysName\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"MultiLingualName\" [group]=\"AddPublicHolidayForm\"></BBSF-MultiLingualTextBox>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"DescriptionInEnglish\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"DescriptionInArabic\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"CountryOptions\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"DayOptions\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"MonthOptions\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"IsActive\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #ClosePublicHolidayModal id=\"ClosePublicHolidayModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3 \" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n\r\n </div>\r\n </form>\r\n\r\n </div>\r\n </ng-template>\r\n <!--edit Modal-->\r\n <ng-template #EditPublicHolidayModal 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(\"Edit\")}} {{utilityService.getResourceValue(\"PublicHoliday\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"EditPublicHolidayForm\" (ngSubmit)=\"editPublicHoliday()\">\r\n <div class=\"row\" *ngIf=\"!ProductionMode\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditSysName\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditMultiLingualName\" [group]=\"EditPublicHolidayForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"EditDescriptionInEnglish\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"EditDescriptionInArabic\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditCountryOptions\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditDayOptions\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditMonthOptions\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsActive\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditPublicHolidayModal id=\"CloseEditPublicHolidayModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3 \" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n\r\n </div>\r\n </form>\r\n\r\n </div>\r\n </ng-template>\r\n <!--delete Modal-->\r\n <ng-template #deletePublicHolidayModal 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(\"Delete\")}} {{utilityService.getResourceValue(\"PublicHoliday\")}}</h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-danger rounded border-danger border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"Delete_Question\")}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseDeletePublicHolidayModal id=\"CloseDeletePublicHolidayModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3 \" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"deletePublicHoliday()\"\r\n class=\"btn btn-light-danger btn-sm \">\r\n {{utilityService.getResourceValue(\"Delete\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Generate UAE public holidays Modal -->\r\n <ng-template #GenerateUAEPublicHolidaysModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"PublicHolidaysCreateUAEConfirmation\")}}\r\n </h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-danger rounded border-danger border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"PublicHolidaysCreateUAEConfirmation\")}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseGeneratePublicHolidayModal id=\"CloseGeneratePublicHolidayModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3 \" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"No\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"generateUAEPublicHoliday()\"\r\n class=\"btn btn-primary btn-sm \">\r\n {{utilityService.getResourceValue(\"Yes\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n", components: [{ type: i6.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i7.ɵd, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i7.ɵs, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i7.ɵc, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.ɵe, selector: "BBSF-TextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.ɵh, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i7.ɵg, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i11.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i5.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i12.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
329
+ PublicHolidayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PublicHolidayComponent, deps: [{ token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i2.BBSFTranslateService }, { token: i2.AuthService }, { token: i3.PublicHolidayService }, { token: i4.NgbModal }, { token: i2.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
330
+ PublicHolidayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: PublicHolidayComponent, selector: "lib-public-holiday", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["PublicHolidayPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div *ngIf=\"ShowPageContent\" 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\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"PublicHolidayForm\">\r\n <BBSF-TextBox (OnChange)=\"searchClientSide($event)\" [options]=\"searchTextBox\" [group]=\"PublicHolidayForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <!-- begin::Menu -->\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-sm btn-primary me-3\" (click)=\"showAddPublicHolidayModal(AddPublicHolidayModal)\">\r\n <i class=\"me-1 fas fa-plus\"></i>\r\n {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n <button type=\"button\" title=\"{{utilityService.getResourceValue('PublicHolidaysCreateUAE')}}\" class=\"btn btn-sm btn-light-primary me-3 \" (click)=\"showGenerateUAEPublicHolidayModal(GenerateUAEPublicHolidaysModal)\">\r\n <i class=\"me-1 fa fa-calendar-alt\"></i>\r\n {{utilityService.getResourceValue('PublicHolidaysCreateUAE')}}\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 <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Country\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Date\")}}</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\r\n <tr *ngFor=\"let PublicHoliday of clientSidePagingResult\">\r\n <td>\r\n <div class=\"text-dark\">{{PublicHoliday.nameStr}}</div>\r\n </td>\r\n <td>{{PublicHoliday.countryName}}</td>\r\n <td>{{PublicHoliday.date}}</td>\r\n <td>\r\n <span class=\"badge badge-light-primary\" *ngIf=\"PublicHoliday.isActive;else other_content\">\r\n {{utilityService.getResourceValue(\"Active\")}}\r\n </span>\r\n <ng-template #other_content>\r\n <span class=\"badge badge-light-danger\">\r\n {{utilityService.getResourceValue(\"Inactive\")}}\r\n </span>\r\n </ng-template>\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 class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditPublicHolidayModal(PublicHoliday.id,PublicHoliday.idEncrypted, EditPublicHolidayModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\"\r\n (click)=\"showDeletePublicHolidayModal(PublicHoliday.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!--end::Permission list-->\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setPublicHolidayListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"PublicHolidayPaging\" [group]=\"PublicHolidayForm\" #PublicHolidayPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!--add Modal-->\r\n<ng-template #AddPublicHolidayModal 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(\"Add\")}} {{utilityService.getResourceValue(\"PublicHoliday\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"AddPublicHolidayFormOptions\">\r\n <div class=\"row\" *ngIf=\"!ProductionMode\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"SysName\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddName\" [group]=\"AddPublicHolidayForm\"></BBSF-MultiLingualTextBox>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"DescriptionInEnglish\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"DescriptionInArabic\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"CountryOptions\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"DayOptions\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"MonthOptions\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"IsActive\" [group]=\"AddPublicHolidayForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #ClosePublicHolidayModal id=\"ClosePublicHolidayModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3 \" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n\r\n </div>\r\n </BBSF-Form>\r\n\r\n </div>\r\n</ng-template>\r\n<!--edit Modal-->\r\n<ng-template #EditPublicHolidayModal 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(\"Edit\")}} {{utilityService.getResourceValue(\"PublicHoliday\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditPublicHolidayFormOptions\">\r\n <div class=\"row\" *ngIf=\"!ProductionMode\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditSysName\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditMultiLingualName\" [group]=\"EditPublicHolidayForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"EditDescriptionInEnglish\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"EditDescriptionInArabic\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditCountryOptions\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditDayOptions\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditMonthOptions\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsActive\" [group]=\"EditPublicHolidayForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditPublicHolidayModal id=\"CloseEditPublicHolidayModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3 \" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n\r\n </div>\r\n </BBSF-Form>\r\n\r\n </div>\r\n</ng-template>\r\n<!--delete Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\" #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n<!-- Generate UAE public holidays Modal -->\r\n<ng-template #GenerateUAEPublicHolidaysModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"PublicHolidaysCreateUAEConfirmation\")}}\r\n </h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-danger rounded border-danger border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"PublicHolidaysCreateUAEConfirmation\")}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseGeneratePublicHolidayModal id=\"CloseGeneratePublicHolidayModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3 \" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"No\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"generateUAEPublicHoliday()\"\r\n class=\"btn btn-primary btn-sm \">\r\n {{utilityService.getResourceValue(\"Yes\")}}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", components: [{ type: i5.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i6.ɵd, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i6.ɵs, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i6.ɵv, selector: "BBSF-Form", inputs: ["options"] }, { type: i6.ɵc, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i6.ɵe, selector: "BBSF-TextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i6.ɵh, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i6.ɵg, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i6.ɵw, selector: "BBSF-ConfirmationModal", inputs: ["options"] }], 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"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
324
331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PublicHolidayComponent, decorators: [{
325
332
  type: Component,
326
333
  args: [{
327
334
  selector: 'lib-public-holiday',
328
335
  templateUrl: './public-holiday.component.html'
329
336
  }]
330
- }], ctorParameters: function () { return [{ type: i1.PageInfoService }, { type: i2.UtilityService }, { type: i2.BBSFTranslateService }, { type: i2.EnvironmentService }, { type: i3.DataSecretService }, { type: i2.AuthService }, { type: i4.PublicHolidayService }, { type: i5.NgbModal }]; }, propDecorators: { input: [{
337
+ }], ctorParameters: function () { return [{ type: i1.PageInfoService }, { type: i2.UtilityService }, { type: i2.BBSFTranslateService }, { type: i2.AuthService }, { type: i3.PublicHolidayService }, { type: i4.NgbModal }, { type: i2.RequestHandlerService }]; }, propDecorators: { pagingElement: [{
331
338
  type: ViewChild,
332
339
  args: ['PublicHolidayPagingViewElement', { static: false }]
333
- }], ClosePublicHolidayModal: [{
334
- type: ViewChild,
335
- args: ['ClosePublicHolidayModal', { static: false }]
336
- }], CloseEditPublicHolidayModal: [{
337
- type: ViewChild,
338
- args: ['CloseEditPublicHolidayModal', { static: false }]
339
- }], CloseDeletePublicHolidayModal: [{
340
- type: ViewChild,
341
- args: ['CloseDeletePublicHolidayModal', { static: false }]
342
- }], CloseGeneratePublicHolidayModal: [{
340
+ }], ConfirmationModalControl: [{
343
341
  type: ViewChild,
344
- args: ['CloseGeneratePublicHolidayModal', { static: false }]
342
+ args: ['ConfirmationModalControl', { static: false }]
345
343
  }] } });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWhvbGlkYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9wdWJsaWNIb2xpZGF5cy9wdWJsaWMtaG9saWRheS9wdWJsaWMtaG9saWRheS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3B1YmxpY0hvbGlkYXlzL3B1YmxpYy1ob2xpZGF5L3B1YmxpYy1ob2xpZGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFzQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzVOLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFRckYsTUFBTSxPQUFPLHNCQUFzQjtJQXVEakMsWUFBb0IsZUFBK0IsRUFBUyxjQUE2QixFQUFTLG9CQUF5QyxFQUFTLGtCQUFxQyxFQUFTLFlBQStCLEVBQVUsV0FBd0IsRUFBVSxvQkFBMEMsRUFBVSxZQUFzQjtRQUFuVSxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFBUyxtQkFBYyxHQUFk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QUMsNkJBQTZCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUlJLDZCQUE2QjtzQkFBM0YsU0FBUzt1QkFBQywrQkFBK0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR0ksK0JBQStCO3NCQUEvRixTQUFTO3VCQUFDLGlDQUFpQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDaGVja0JveE9wdGlvbnMsIERyb3Bkb3duT3B0aW9ucywgRW5nbGlzaEFyYWJpY0RUTywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgRm9yY2VEaXJlY3Rpb24sIElucHV0VHlwZSwgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsIFBhZ2luZ09wdGlvbnMsIFRleHRBcmVhT3B0aW9ucywgVGV4dEJveE9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IERhdGFTZWNyZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IFB1YmxpY0hvbGlkYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL1B1YmxpY0hvbGlkYXlTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQdWJsaWNIb2xpZGF5TW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL1B1YmxpY0hvbGlkYXlNb2RlbHMvUHVibGljSG9saWRheU1vZGVsJztcclxuaW1wb3J0IHsgVXNlcnNJRFJlcXVlc3RNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvVXNlck1vZGVscy9Vc2Vyc0lEUmVxdWVzdE1vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXB1YmxpYy1ob2xpZGF5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHVibGljLWhvbGlkYXkuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQdWJsaWNIb2xpZGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vUHVibGljSG9saWRheS9cIlxyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIENvdW50cmllc0xpc3QgPSBbXTtcclxuICBNb250aHNMaXN0ID0gW107XHJcbiAgRGF5c0xpc3QgPSBbXTtcclxuICBQdWJsaWNIb2xpZGF5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNob3dGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBQdWJsaWNIb2xpZGF5UGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIFB1YmxpY0hvbGlkYXlQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgUHJvZHVjdGlvbk1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdQdWJsaWNIb2xpZGF5UGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXQ6IEVsZW1lbnRSZWY7XHJcblxyXG5cclxuICAvL0FkZCBNb2RlbCBDb250cm9sc1xyXG4gIEFkZFB1YmxpY0hvbGlkYXlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgTXVsdGlMaW5ndWFsTmFtZTpNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9uc1xyXG4gIERlc2NyaXB0aW9uSW5FbmdsaXNoOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgRGVzY3JpcHRpb25JbkFyYWJpYzogVGV4dEFyZWFPcHRpb25zO1xyXG4gIENvdW50cnlPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTW9udGhPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRGF5T3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIFN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIElzQWN0aXZlOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgQFZpZXdDaGlsZCgnQ2xvc2VQdWJsaWNIb2xpZGF5TW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ2xvc2VQdWJsaWNIb2xpZGF5TW9kYWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vRWRpdCBNb2RlbCBDb250cm9sc1xyXG4gIEVkaXRQdWJsaWNIb2xpZGF5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEVkaXRNdWx0aUxpbmd1YWxOYW1lOk11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zXHJcbiAgRWRpdERlc2NyaXB0aW9uSW5FbmdsaXNoOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgRWRpdERlc2NyaXB0aW9uSW5BcmFiaWM6IFRleHRBcmVhT3B0aW9ucztcclxuICBFZGl0Q291bnRyeU9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0TW9udGhPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdERheU9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0U3lzTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgRWRpdElzQWN0aXZlOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgSXNFZGl0UHVibGljSG9saWRheU1vZGVsTG9hZGVkOiBib29sZWFuO1xyXG4gIFB1YmxpY0hvbGlkYXlJZDogbnVtYmVyO1xyXG4gIEBWaWV3Q2hpbGQoJ0Nsb3NlRWRpdFB1YmxpY0hvbGlkYXlNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDbG9zZUVkaXRQdWJsaWNIb2xpZGF5TW9kYWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZVB1YmxpY0hvbGlkYXlMaXN0OiBhbnlbXSA9IFtdXHJcbiAgQFZpZXdDaGlsZCgnQ2xvc2VEZWxldGVQdWJsaWNIb2xpZGF5TW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ2xvc2VEZWxldGVQdWJsaWNIb2xpZGF5TW9kYWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vZ2VuZXJhdGUgVUFFIHB1YmxpYyBob2xpZGF5c1xyXG4gIEBWaWV3Q2hpbGQoJ0Nsb3NlR2VuZXJhdGVQdWJsaWNIb2xpZGF5TW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ2xvc2VHZW5lcmF0ZVB1YmxpY0hvbGlkYXlNb2RhbDogRWxlbWVudFJlZjtcclxuXHJcblxyXG4gIGxhbmd1YWdlOiBzdHJpbmcgPSBcIlwiXHJcbiAgLy8gRGVjb3JhdG9yIHdpcmVzIHVwIGJsb2NrVUkgaW5zdGFuY2VcclxuXHJcbiAgU2hvd1BhZ2VDb250ZW50OmJvb2xlYW49ZmFsc2VcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6UGFnZUluZm9TZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6VXRpbGl0eVNlcnZpY2UscHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTpCQlNGVHJhbnNsYXRlU2VydmljZSxwcml2YXRlIGVudmlyb25tZW50U2VydmljZTpFbnZpcm9ubWVudFNlcnZpY2UscHJpdmF0ZSBkYXRhU2VydmljZXM6IERhdGFTZWNyZXRTZXJ2aWNlLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSBQdWJsaWNIb2xpZGF5U2VydmljZTogUHVibGljSG9saWRheVNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkge1xyXG4gIH1cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50PXRydWU7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlPXRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlB1YmxpY0hvbGlkYXlzXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzPVtcclxuICAgICAgIHt0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSAsIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlfSxcclxuICAgICAgIHt0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlfVxyXG5cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpPT57XHJcbiAgICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50PWZhbHNlO1xyXG4gICAgICB0aGlzLmxhbmd1YWdlID0gZXZlbnQubGFuZztcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuICAgIHRoaXMubGFuZ3VhZ2UgPSAgYXdhaXQgdGhpcy51dGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKTtcclxuICAgIHRoaXMuUHJvZHVjdGlvbk1vZGUgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRQcm9kdWN0aW9uTW9kZSgpXHJcbiAgICB0aGlzLkxvYWRMaXN0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy9pbml0aWFsaXplIGZpbHRlcnMgYW5kIGxvYWQgYW55IGRyb3AgZG93biBsaXN0XHJcbiAgTG9hZExpc3QoKSB7XHJcbiAgICB0aGlzLlB1YmxpY0hvbGlkYXlTZXJ2aWNlLkxvYWRkcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgRHJvcGRvd25MaXN0cyA9IHJlc3VsdCBhcyBhbnlcclxuICAgICAgdGhpcy5Db3VudHJpZXNMaXN0ID0gRHJvcGRvd25MaXN0cy5jb3VudHJpZXM7XHJcbiAgICAgIHRoaXMuTW9udGhzTGlzdCA9IERyb3Bkb3duTGlzdHMubW9udGhzO1xyXG4gICAgICB0aGlzLkRheXNMaXN0ID0gRHJvcGRvd25MaXN0cy5kYXlzO1xyXG4gICAgICAgLy8gVGV4dEJveCBpbnRpXHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHRCb3guTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlXHJcblxyXG4gICAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgICB0aGlzLlB1YmxpY0hvbGlkYXlQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlB1YmxpY0hvbGlkYXlQYWdpbmcuQWN0aW9uUG9zdFVSTCA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgdGhpcy5BcGlVcmwgKyAnR2V0UHVibGljSG9saWRheXNCeUZpbHRlcic7XHJcbiAgICAgIHRoaXMuUHVibGljSG9saWRheVBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl1cclxuICAgICAgdGhpcy5QdWJsaWNIb2xpZGF5UGFnaW5nLkZpbHRlcnMgPSBbdGhpcy5UZXh0SW5wdXRGaWx0ZXJdXHJcbiAgICAgIHRoaXMuUHVibGljSG9saWRheVBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcbiAgICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gIFxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcbiAgUmVpbml0aWFsaXplUHVibGljSG9saWRheVBhZ2luZygpIHtcclxuICAgIGxldCBlbGVtZW50ID0gdGhpcy5pbnB1dCBhcyBhbnk7XHJcbiAgICBlbGVtZW50LlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG4gIH1cclxuXHJcbiAgVXBkYXRlUHVibGljSG9saWRheVBhZ2luZygpIHtcclxuICAgIGxldCBlbGVtZW50ID0gdGhpcy5pbnB1dCBhcyBhbnk7XHJcbiAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gIH1cclxuXHJcbiAgc2V0UHVibGljSG9saWRheUxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLlB1YmxpY0hvbGlkYXlQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudD10cnVlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5QdWJsaWNIb2xpZGF5Rm9ybS5jb250cm9sc1tcInNlYXJjaFRleHRCb3hcIl0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuaW5wdXQgYXMgYW55O1xyXG4gICAgZWxlbWVudC5SZWluaXRpYWxpemVQYWdpbmcoKTtcclxuICB9XHJcblxyXG5cclxuICBzaG93QWRkUHVibGljSG9saWRheU1vZGFsKEFkZFB1YmxpY0hvbGlkYXlNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMuQWRkUHVibGljSG9saWRheUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG5cclxuICAgIHRoaXMuTXVsdGlMaW5ndWFsTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5NdWx0aUxpbmd1YWxOYW1lLk5hbWUgPSBcIk5hbWVcIjtcclxuICAgIHRoaXMuTXVsdGlMaW5ndWFsTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbE5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbE5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbE5hbWUuVmFsdWUgPSBudWxsO1xyXG5cclxuICAgIHRoaXMuU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5TeXNOYW1lLk5hbWUgPSBcIlN5c05hbWVcIjtcclxuICAgIHRoaXMuU3lzTmFtZS5MYWJlbEtleSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgdGhpcy5TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuU3lzTmFtZS5WYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLlN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5EZXNjcmlwdGlvbkluRW5nbGlzaCA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgIHRoaXMuRGVzY3JpcHRpb25JbkVuZ2xpc2guTmFtZSA9IFwiRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgIHRoaXMuRGVzY3JpcHRpb25JbkVuZ2xpc2guTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICB0aGlzLkRlc2NyaXB0aW9uSW5FbmdsaXNoLlZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuRGVzY3JpcHRpb25JbkVuZ2xpc2guSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5EZXNjcmlwdGlvbkluQXJhYmljID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZXNjcmlwdGlvbkluQXJhYmljLk5hbWUgPSBcIkRlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgIHRoaXMuRGVzY3JpcHRpb25JbkFyYWJpYy5MYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkFyYWJpY1wiO1xyXG4gICAgdGhpcy5EZXNjcmlwdGlvbkluQXJhYmljLlZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuRGVzY3JpcHRpb25JbkFyYWJpYy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIHRoaXMuRGVzY3JpcHRpb25JbkFyYWJpYy5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkFyYWJpYztcclxuXHJcbiAgICB0aGlzLkNvdW50cnlPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgdGhpcy5Db3VudHJ5T3B0aW9ucy5OYW1lID0gXCJDb3VudHJ5T3B0aW9uc1wiXHJcbiAgICB0aGlzLkNvdW50cnlPcHRpb25zLkxhYmVsS2V5ID0gXCJDb3VudHJ5XCJcclxuICAgIHRoaXMuQ291bnRyeU9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuQ291bnRyaWVzTGlzdFxyXG4gICAgdGhpcy5Db3VudHJ5T3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5Db3VudHJ5T3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICB0aGlzLkNvdW50cnlPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgIHRoaXMuQ291bnRyeU9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAvL01vbnRocyBpbml0XHJcbiAgIHRoaXMuTW9udGhPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICB0aGlzLk1vbnRoT3B0aW9ucy5OYW1lID0gXCJNb250aE9wdGlvbnNcIlxyXG4gICB0aGlzLk1vbnRoT3B0aW9ucy5MYWJlbEtleSA9IFwiTW9udGhcIlxyXG4gICB0aGlzLk1vbnRoT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5Nb250aHNMaXN0XHJcbiAgIHRoaXMuTW9udGhPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgIHRoaXMuTW9udGhPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgdGhpcy5Nb250aE9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICB0aGlzLk1vbnRoT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgIC8vRGF5cyBpbml0XHJcbiAgIHRoaXMuRGF5T3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgdGhpcy5EYXlPcHRpb25zLk5hbWUgPSBcIkRheU9wdGlvbnNcIlxyXG4gICB0aGlzLkRheU9wdGlvbnMuTGFiZWxLZXkgPSBcIkRheVwiXHJcbiAgIHRoaXMuRGF5T3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5EYXlzTGlzdFxyXG4gICB0aGlzLkRheU9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgdGhpcy5EYXlPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgdGhpcy5EYXlPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgdGhpcy5EYXlPcHRpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuSXNBY3RpdmUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLklzQWN0aXZlLk5hbWUgPSBcIklzQWN0aXZlXCJcclxuICAgdGhpcy5Jc0FjdGl2ZS5MYWJlbEtleSA9IFwiQWN0aXZlXCJcclxuICAgdGhpcy5Jc0FjdGl2ZS5WYWx1ZSA9IGZhbHNlXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZFB1YmxpY0hvbGlkYXlNb2RhbCk7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG4gIGFkZFB1YmxpY0hvbGlkYXkoKSB7XHJcbiAgICBpZiAodGhpcy5BZGRQdWJsaWNIb2xpZGF5Rm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZFB1YmxpY0hvbGlkYXlGb3JtLnZhbHVlO1xyXG4gICAgICBsZXQgQWRkTW9kZWw6UHVibGljSG9saWRheU1vZGVsPSBuZXcgUHVibGljSG9saWRheU1vZGVsKCk7XHJcbiAgICAgIEFkZE1vZGVsLlN5c05hbWUgPSBSZXN1bHRNb2RlbC5TeXNOYW1lO1xyXG4gICAgICBBZGRNb2RlbC5OYW1lLkFyYWJpYyA9IFJlc3VsdE1vZGVsLk5hbWUuQXJhYmljVmFsdWU7XHJcbiAgICAgIEFkZE1vZGVsLk5hbWUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLk5hbWUuRW5nbGlzaFZhbHVlO1xyXG4gICAgICBBZGRNb2RlbC5EZXNjcmlwdGlvbi5BcmFiaWMgPSBSZXN1bHRNb2RlbC5EZXNjcmlwdGlvbkluQXJhYmljO1xyXG4gICAgICBBZGRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb25JbkVuZ2xpc2g7XHJcbiAgICAgIEFkZE1vZGVsLkNvdW50cnlJRCA9IFJlc3VsdE1vZGVsLkNvdW50cnlPcHRpb25zIT1udWxsP051bWJlcihSZXN1bHRNb2RlbC5Db3VudHJ5T3B0aW9ucyk6bnVsbDtcclxuICAgICAgQWRkTW9kZWwuSXNBY3RpdmUgPSBSZXN1bHRNb2RlbC5Jc0FjdGl2ZTtcclxuICAgICAgQWRkTW9kZWwuRGF5ID0gUmVzdWx0TW9kZWwuRGF5T3B0aW9ucyAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLkRheU9wdGlvbnMpIDogMDtcclxuICAgICAgQWRkTW9kZWwuTW9udGggPSBSZXN1bHRNb2RlbC5Nb250aE9wdGlvbnMgIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5Nb250aE9wdGlvbnMpIDogMDtcclxuXHJcblxyXG4gICAgICB0aGlzLlB1YmxpY0hvbGlkYXlTZXJ2aWNlLkFkZFB1YmxpY0hvbGlkYXkoQWRkTW9kZWwpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5pbnB1dCBhcyBhbnk7XHJcbiAgICAgICAgZWxlbWVudC5SZWluaXRpYWxpemVQYWdpbmcoKTtcclxuICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgc2hvd0VkaXRQdWJsaWNIb2xpZGF5TW9kYWwoUHVibGljSG9saWRheTogYW55LCBFZGl0UHVibGljSG9saWRheU1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgIHRoaXMuRWRpdFB1YmxpY0hvbGlkYXlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgIHRoaXMuUHVibGljSG9saWRheUlkID0gUHVibGljSG9saWRheS5pZFxyXG5cclxuICAgIGxldCBOYW1lPW5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICBOYW1lLkFyYWJpYz1QdWJsaWNIb2xpZGF5Lm5hbWUuYXJhYmljO1xyXG4gICAgTmFtZS5FbmdsaXNoPVB1YmxpY0hvbGlkYXkubmFtZS5lbmdsaXNoO1xyXG5cclxuICAgIHRoaXMuRWRpdE11bHRpTGluZ3VhbE5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuRWRpdE11bHRpTGluZ3VhbE5hbWUuTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgdGhpcy5FZGl0TXVsdGlMaW5ndWFsTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICB0aGlzLkVkaXRNdWx0aUxpbmd1YWxOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgdGhpcy5FZGl0TXVsdGlMaW5ndWFsTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIHRoaXMuRWRpdE11bHRpTGluZ3VhbE5hbWUuVmFsdWUgPSBOYW1lO1xyXG5cclxuICAgIHRoaXMuRWRpdFN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuRWRpdFN5c05hbWUuTmFtZSA9IFwiRWRpdFN5c05hbWVcIjtcclxuICAgIHRoaXMuRWRpdFN5c05hbWUuTGFiZWxLZXkgPSBcIlN5c05hbWVcIjtcclxuICAgIHRoaXMuRWRpdFN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5FZGl0U3lzTmFtZS5WYWx1ZSA9IFB1YmxpY0hvbGlkYXkuc3lzTmFtZTtcclxuICAgIHRoaXMuRWRpdFN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5FZGl0RGVzY3JpcHRpb25JbkVuZ2xpc2ggPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICB0aGlzLkVkaXREZXNjcmlwdGlvbkluRW5nbGlzaC5OYW1lID0gXCJFZGl0RGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uSW5FbmdsaXNoLkxhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgdGhpcy5FZGl0RGVzY3JpcHRpb25JbkVuZ2xpc2guVmFsdWUgPSBQdWJsaWNIb2xpZGF5LmRlc2NyaXB0aW9uLmVuZ2xpc2g7XHJcbiAgICB0aGlzLkVkaXREZXNjcmlwdGlvbkluRW5nbGlzaC5Jc1JlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5FZGl0RGVzY3JpcHRpb25JbkFyYWJpYyA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uSW5BcmFiaWMuTmFtZSA9IFwiRWRpdERlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uSW5BcmFiaWMuTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uSW5BcmFiaWMuVmFsdWUgPSBQdWJsaWNIb2xpZGF5LmRlc2NyaXB0aW9uLmFyYWJpYztcclxuICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uSW5BcmFiaWMuRm9yY2VEaXJlY3Rpb24gPSBGb3JjZURpcmVjdGlvbi5BcmFiaWM7XHJcblxyXG4gICAgdGhpcy5FZGl0Q291bnRyeU9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLkVkaXRDb3VudHJ5T3B0aW9ucy5OYW1lID0gXCJFZGl0Q291bnRyeU9wdGlvbnNcIlxyXG4gICAgdGhpcy5FZGl0Q291bnRyeU9wdGlvbnMuTGFiZWxLZXkgPSBcIkNvdW50cnlcIlxyXG4gICAgdGhpcy5FZGl0Q291bnRyeU9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuQ291bnRyaWVzTGlzdFxyXG4gICAgdGhpcy5FZGl0Q291bnRyeU9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuRWRpdENvdW50cnlPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuRWRpdENvdW50cnlPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgIHRoaXMuRWRpdENvdW50cnlPcHRpb25zLlNlbGVjdGVkSXRlbXMgPSB0aGlzLkNvdW50cmllc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0gUHVibGljSG9saWRheS5jb3VudHJ5SUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdOztcclxuXHJcbiAgICAvL01vbnRocyBpbml0XHJcbiAgICB0aGlzLkVkaXRNb250aE9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLkVkaXRNb250aE9wdGlvbnMuTmFtZSA9IFwiRWRpdE1vbnRoT3B0aW9uc1wiXHJcbiAgICB0aGlzLkVkaXRNb250aE9wdGlvbnMuTGFiZWxLZXkgPSBcIk1vbnRoXCJcclxuICAgIHRoaXMuRWRpdE1vbnRoT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5Nb250aHNMaXN0XHJcbiAgICB0aGlzLkVkaXRNb250aE9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuRWRpdE1vbnRoT3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICB0aGlzLkVkaXRNb250aE9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgdGhpcy5FZGl0TW9udGhPcHRpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5FZGl0TW9udGhPcHRpb25zLlNlbGVjdGVkSXRlbXMgPSB0aGlzLk1vbnRoc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0gUHVibGljSG9saWRheS5tb250aDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07O1xyXG5cclxuICAgIC8vRGF5cyBpbml0XHJcbiAgICB0aGlzLkVkaXREYXlPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgdGhpcy5FZGl0RGF5T3B0aW9ucy5OYW1lID0gXCJFZGl0RGF5T3B0aW9uc1wiXHJcbiAgICB0aGlzLkVkaXREYXlPcHRpb25zLkxhYmVsS2V5ID0gXCJEYXlcIlxyXG4gICAgdGhpcy5FZGl0RGF5T3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5EYXlzTGlzdFxyXG4gICAgdGhpcy5FZGl0RGF5T3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5FZGl0RGF5T3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICB0aGlzLkVkaXREYXlPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgIHRoaXMuRWRpdERheU9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLkVkaXREYXlPcHRpb25zLlNlbGVjdGVkSXRlbXMgPSB0aGlzLk1vbnRoc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0gUHVibGljSG9saWRheS5kYXk7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdOztcclxuXHJcblxyXG4gICAgdGhpcy5FZGl0SXNBY3RpdmUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLkVkaXRJc0FjdGl2ZS5OYW1lID0gXCJFZGl0SXNBY3RpdmVcIlxyXG4gICAgdGhpcy5FZGl0SXNBY3RpdmUuTGFiZWxLZXkgPSBcIkFjdGl2ZVwiXHJcbiAgICB0aGlzLkVkaXRJc0FjdGl2ZS5WYWx1ZSA9IFB1YmxpY0hvbGlkYXkuaXNBY3RpdmVcclxuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEVkaXRQdWJsaWNIb2xpZGF5TW9kYWwpO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICBcclxuICB9XHJcblxyXG4gIGVkaXRQdWJsaWNIb2xpZGF5KCkge1xyXG4gICAgaWYgKHRoaXMuRWRpdFB1YmxpY0hvbGlkYXlGb3JtLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdFB1YmxpY0hvbGlkYXlGb3JtLnZhbHVlO1xyXG4gICAgICBsZXQgRWRpdE1vZGVsID0gbmV3IFB1YmxpY0hvbGlkYXlNb2RlbCgpO1xyXG4gICAgICBFZGl0TW9kZWwuSUQgPSBOdW1iZXIodGhpcy5QdWJsaWNIb2xpZGF5SWQpO1xyXG4gICAgICBFZGl0TW9kZWwuTmFtZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5OYW1lLkFyYWJpY1ZhbHVlO1xyXG4gICAgICBFZGl0TW9kZWwuTmFtZS5FbmdsaXNoID0gUmVzdWx0TW9kZWwuTmFtZS5FbmdsaXNoVmFsdWU7XHJcbiAgICAgIEVkaXRNb2RlbC5TeXNOYW1lID0gUmVzdWx0TW9kZWwuRWRpdFN5c05hbWU7XHJcbiAgICAgIEVkaXRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoID0gUmVzdWx0TW9kZWwuRWRpdERlc2NyaXB0aW9uSW5FbmdsaXNoXHJcbiAgICAgIEVkaXRNb2RlbC5EZXNjcmlwdGlvbi5BcmFiaWMgPSBSZXN1bHRNb2RlbC5FZGl0RGVzY3JpcHRpb25JbkFyYWJpY1xyXG4gICAgICBFZGl0TW9kZWwuSXNBY3RpdmUgPSBSZXN1bHRNb2RlbC5FZGl0SXNBY3RpdmU7XHJcbiAgICAgIEVkaXRNb2RlbC5Db3VudHJ5SUQgPSBSZXN1bHRNb2RlbC5FZGl0Q291bnRyeU9wdGlvbnMhPW51bGw/IE51bWJlcihSZXN1bHRNb2RlbC5FZGl0Q291bnRyeU9wdGlvbnMpOiBudWxsXHJcbiAgICAgIEVkaXRNb2RlbC5EYXkgPSBSZXN1bHRNb2RlbC5FZGl0RGF5T3B0aW9ucyAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXREYXlPcHRpb25zKSA6IDA7XHJcbiAgICAgIEVkaXRNb2RlbC5Nb250aCA9IFJlc3VsdE1vZGVsLkVkaXRNb250aE9wdGlvbnMgIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5FZGl0TW9udGhPcHRpb25zKSA6IDA7XHJcblxyXG4gICAgICB0aGlzLlB1YmxpY0hvbGlkYXlTZXJ2aWNlLkVkaXRQdWJsaWNIb2xpZGF5KEVkaXRNb2RlbCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLmlucHV0IGFzIGFueTtcclxuICAgICAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dEZWxldGVQdWJsaWNIb2xpZGF5TW9kYWwoUmVzb3VyY2U6IGFueSwgZGVsZXRlUHVibGljSG9saWRheU1vZGFsKSB7XHJcbiAgICB0aGlzLmRlbGV0ZVB1YmxpY0hvbGlkYXlMaXN0ID0gW11cclxuICAgIHRoaXMuZGVsZXRlUHVibGljSG9saWRheUxpc3QucHVzaChSZXNvdXJjZSk7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpOyBcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oZGVsZXRlUHVibGljSG9saWRheU1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVB1YmxpY0hvbGlkYXkoKSB7XHJcbiAgICBsZXQgVXNlcnNJRE1vZGVsOiBVc2Vyc0lEUmVxdWVzdE1vZGVsID0gbmV3IFVzZXJzSURSZXF1ZXN0TW9kZWwoKTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmRlbGV0ZVB1YmxpY0hvbGlkYXlMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5kZWxldGVQdWJsaWNIb2xpZGF5TGlzdFtpbmRleF07XHJcbiAgICAgIFVzZXJzSURNb2RlbC5Vc2Vyc0lEcy5wdXNoKGVsZW1lbnQuaWQpXHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5QdWJsaWNIb2xpZGF5U2VydmljZS5EZWxldGVQdWJsaWNIb2xpZGF5KFVzZXJzSURNb2RlbCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5kZWxldGVQdWJsaWNIb2xpZGF5TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5pbnB1dCBhcyBhbnk7XHJcbiAgICAgIGVsZW1lbnQuUmVpbml0aWFsaXplUGFnaW5nKCk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuICBzaG93R2VuZXJhdGVVQUVQdWJsaWNIb2xpZGF5TW9kYWwoR2VuZXJhdGVVQUVQdWJsaWNIb2xpZGF5c01vZGFsKSB7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEdlbmVyYXRlVUFFUHVibGljSG9saWRheXNNb2RhbCk7XHJcbiAgfVxyXG4gIGdlbmVyYXRlVUFFUHVibGljSG9saWRheSgpIHtcclxuICAgIHRoaXMuUHVibGljSG9saWRheVNlcnZpY2UuR2VuZXJhdGVVQUVQdWJsaWNIb2xpZGF5KCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMuaW5wdXQgYXMgYW55O1xyXG4gICAgICBlbGVtZW50LlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgXHJcbiAgICB9KVxyXG4gICBcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuXHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG4gIDwhLS0gUGFnZSBDb250ZW50IC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJTaG93UGFnZUNvbnRlbnRcIiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJQdWJsaWNIb2xpZGF5Rm9ybVwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiUHVibGljSG9saWRheUZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpNZW51IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJBZGRcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgbWUtM1wiIChjbGljayk9XCJzaG93QWRkUHVibGljSG9saWRheU1vZGFsKEFkZFB1YmxpY0hvbGlkYXlNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtZS0xIGZhcyBmYS1wbHVzXCI+PC9pPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cInt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnUHVibGljSG9saWRheXNDcmVhdGVVQUUnKX19XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTMgXCIgKGNsaWNrKT1cInNob3dHZW5lcmF0ZVVBRVB1YmxpY0hvbGlkYXlNb2RhbChHZW5lcmF0ZVVBRVB1YmxpY0hvbGlkYXlzTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWUtMSBmYSBmYS1jYWxlbmRhci1hbHRcIj48L2k+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnUHVibGljSG9saWRheXNDcmVhdGVVQUUnKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwhLS0gZW5kOjpNZW51IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBlbmQ6OkhlYWRlciAtLT5cclxuICAgICAgPCEtLSBiZWdpbjo6Qm9keSAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvdW50cnlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRhdGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlN0YXR1c1wiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcblxyXG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgUHVibGljSG9saWRheSBvZiBQdWJsaWNIb2xpZGF5UGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhcmtcIiAqbmdJZj1cImxhbmd1YWdlPT0nZW4nXCI+e3tQdWJsaWNIb2xpZGF5Lm5hbWUuZW5nbGlzaH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhcmtcIiAqbmdJZj1cImxhbmd1YWdlPT0nYXInXCI+e3tQdWJsaWNIb2xpZGF5Lm5hbWUuYXJhYmljfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3tQdWJsaWNIb2xpZGF5LmNvdW50cnlOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7UHVibGljSG9saWRheS5kYXRlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIiAqbmdJZj1cIlB1YmxpY0hvbGlkYXkuaXNBY3RpdmU7ZWxzZSBvdGhlcl9jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlXCIpfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI290aGVyX2NvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluYWN0aXZlXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdFB1YmxpY0hvbGlkYXlNb2RhbChQdWJsaWNIb2xpZGF5LCBFZGl0UHVibGljSG9saWRheU1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgaWQ9XCJidG5SZXNldFBhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0RlbGV0ZVB1YmxpY0hvbGlkYXlNb2RhbChQdWJsaWNIb2xpZGF5ICwgZGVsZXRlUHVibGljSG9saWRheU1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVsZXRlXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiUHVibGljSG9saWRheVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwhLS1lbmQ6OlBlcm1pc3Npb24gbGlzdC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0UHVibGljSG9saWRheUxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJQdWJsaWNIb2xpZGF5UGFnaW5nXCIgW2dyb3VwXT1cIlB1YmxpY0hvbGlkYXlGb3JtXCIgI1B1YmxpY0hvbGlkYXlQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPCEtLWFkZCBNb2RhbC0tPlxyXG4gIDxuZy10ZW1wbGF0ZSAjQWRkUHVibGljSG9saWRheU1vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGljSG9saWRheVwiKX19PC9oMT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiQWRkUHVibGljSG9saWRheUZvcm1cIlxyXG4gICAgICAgICAgICAobmdTdWJtaXQpPVwiYWRkUHVibGljSG9saWRheSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiU3lzTmFtZVwiIFtncm91cF09XCJBZGRQdWJsaWNIb2xpZGF5Rm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiTXVsdGlMaW5ndWFsTmFtZVwiIFtncm91cF09XCJBZGRQdWJsaWNIb2xpZGF5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiIFtncm91cF09XCJBZGRQdWJsaWNIb2xpZGF5Rm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJEZXNjcmlwdGlvbkluQXJhYmljXCIgW2dyb3VwXT1cIkFkZFB1YmxpY0hvbGlkYXlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0QXJlYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiQ291bnRyeU9wdGlvbnNcIiBbZ3JvdXBdPVwiQWRkUHVibGljSG9saWRheUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJEYXlPcHRpb25zXCIgW2dyb3VwXT1cIkFkZFB1YmxpY0hvbGlkYXlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiTW9udGhPcHRpb25zXCIgW2dyb3VwXT1cIkFkZFB1YmxpY0hvbGlkYXlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJJc0FjdGl2ZVwiIFtncm91cF09XCJBZGRQdWJsaWNIb2xpZGF5Rm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiAjQ2xvc2VQdWJsaWNIb2xpZGF5TW9kYWwgaWQ9XCJDbG9zZVB1YmxpY0hvbGlkYXlNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIG1lLTMgXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZm9ybT5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDwhLS1lZGl0IE1vZGFsLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNFZGl0UHVibGljSG9saWRheU1vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlB1YmxpY0hvbGlkYXlcIil9fTwvaDE+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkVkaXRQdWJsaWNIb2xpZGF5Rm9ybVwiIChuZ1N1Ym1pdCk9XCJlZGl0UHVibGljSG9saWRheSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdFN5c05hbWVcIiBbZ3JvdXBdPVwiRWRpdFB1YmxpY0hvbGlkYXlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJFZGl0TXVsdGlMaW5ndWFsTmFtZVwiIFtncm91cF09XCJFZGl0UHVibGljSG9saWRheUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEFyZWEgW29wdGlvbnNdPVwiRWRpdERlc2NyaXB0aW9uSW5FbmdsaXNoXCIgW2dyb3VwXT1cIkVkaXRQdWJsaWNIb2xpZGF5Rm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJFZGl0RGVzY3JpcHRpb25JbkFyYWJpY1wiIFtncm91cF09XCJFZGl0UHVibGljSG9saWRheUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRDb3VudHJ5T3B0aW9uc1wiIFtncm91cF09XCJFZGl0UHVibGljSG9saWRheUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0RGF5T3B0aW9uc1wiIFtncm91cF09XCJFZGl0UHVibGljSG9saWRheUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0TW9udGhPcHRpb25zXCIgW2dyb3VwXT1cIkVkaXRQdWJsaWNIb2xpZGF5Rm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiRWRpdElzQWN0aXZlXCIgW2dyb3VwXT1cIkVkaXRQdWJsaWNIb2xpZGF5Rm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICAgIDxidXR0b24gI0Nsb3NlRWRpdFB1YmxpY0hvbGlkYXlNb2RhbCBpZD1cIkNsb3NlRWRpdFB1YmxpY0hvbGlkYXlNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIG1lLTMgXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZm9ybT5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDwhLS1kZWxldGUgTW9kYWwtLT5cclxuICA8bmctdGVtcGxhdGUgI2RlbGV0ZVB1YmxpY0hvbGlkYXlNb2RhbCBsZXQtbW9kYWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZVwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlB1YmxpY0hvbGlkYXlcIil9fTwvaDE+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibm90aWNlIGQtZmxleCBiZy1saWdodC1kYW5nZXIgcm91bmRlZCBib3JkZXItZGFuZ2VyIGJvcmRlciBib3JkZXItZGFzaGVkIG1iLTEwIHAtNlwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLWRhbmdlciBtZS00XCI+XHJcbiAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2dlbjA0NC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNiB0ZXh0LWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVsZXRlX1F1ZXN0aW9uXCIpfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VEZWxldGVQdWJsaWNIb2xpZGF5TW9kYWwgaWQ9XCJDbG9zZURlbGV0ZVB1YmxpY0hvbGlkYXlNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBtZS0zIFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkZWxldGVQdWJsaWNIb2xpZGF5KClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0LWRhbmdlciBidG4tc20gXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgXHJcbiAgPCEtLSBHZW5lcmF0ZSBVQUUgcHVibGljIGhvbGlkYXlzICBNb2RhbCAtLT5cclxuICA8bmctdGVtcGxhdGUgI0dlbmVyYXRlVUFFUHVibGljSG9saWRheXNNb2RhbCBsZXQtbW9kYWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgPGgxIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGljSG9saWRheXNDcmVhdGVVQUVDb25maXJtYXRpb25cIil9fVxyXG4gICAgICAgIDwvaDE+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibm90aWNlIGQtZmxleCBiZy1saWdodC1kYW5nZXIgcm91bmRlZCBib3JkZXItZGFuZ2VyIGJvcmRlciBib3JkZXItZGFzaGVkIG1iLTEwIHAtNlwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLWRhbmdlciBtZS00XCI+XHJcbiAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2dlbjA0NC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNiB0ZXh0LWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGljSG9saWRheXNDcmVhdGVVQUVDb25maXJtYXRpb25cIil9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUdlbmVyYXRlUHVibGljSG9saWRheU1vZGFsIGlkPVwiQ2xvc2VHZW5lcmF0ZVB1YmxpY0hvbGlkYXlNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBtZS0zIFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm9cIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnZW5lcmF0ZVVBRVB1YmxpY0hvbGlkYXkoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJZZXNcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWhvbGlkYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9wdWJsaWNIb2xpZGF5cy9wdWJsaWMtaG9saWRheS9wdWJsaWMtaG9saWRheS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3B1YmxpY0hvbGlkYXlzL3B1YmxpYy1ob2xpZGF5L3B1YmxpYy1ob2xpZGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJSLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVdyRixNQUFNLE9BQU8sc0JBQXNCO0lBb0RqQyxZQUFvQixlQUFnQyxFQUFTLGNBQThCLEVBQ2pGLG9CQUEwQyxFQUFTLFdBQXdCLEVBQVUsb0JBQTBDLEVBQy9ILFlBQXNCLEVBQVUscUJBQTRDO1FBRmxFLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFTLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUNqRix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQy9ILGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQVUsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXJEdEYsbUJBQW1CO1FBQ25CLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLFdBQU0sR0FBRywyQkFBMkIsQ0FBQTtRQUtwQyxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxzQkFBaUIsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0Qyw4QkFBeUIsR0FBVSxFQUFFLENBQUM7UUFDdEMsMkJBQXNCLEdBQVUsRUFBRSxDQUFDO1FBR25DLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBSWhDLG9CQUFvQjtRQUNwQix5QkFBb0IsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxnQ0FBMkIsR0FBRSxJQUFJLFdBQVcsQ0FBQztRQVU3QyxxQkFBcUI7UUFDckIsMEJBQXFCLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsaUNBQTRCLEdBQUcsSUFBSSxXQUFXLENBQUM7UUFlL0Msd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBdUpyQyw2QkFBd0IsR0FBRyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxVQUFVLEdBQVUsRUFBRSxDQUFDO1lBQzNCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7WUFDbEQsSUFBSSxRQUFRLEdBQXVCLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7Z0JBQ3RCLFFBQVEsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUN6QyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUN2RCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUN6RCxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsbUJBQW1CLENBQUM7WUFDOUQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLG9CQUFvQixDQUFDO1lBQ2hFLFFBQVEsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNwRyxRQUFRLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7WUFDekMsUUFBUSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25GLFFBQVEsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV6RixVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUMsQ0FBQTtRQUVELGdDQUEyQixHQUFHLENBQUMsUUFBUSxFQUFtQixFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzdELENBQUMsQ0FBQTtRQTZGRCw4QkFBeUIsR0FBRyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxVQUFVLEdBQVUsRUFBRSxDQUFDO1lBQzNCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7WUFDbkQsSUFBSSxTQUFTLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3pDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM1QyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNyRCxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7Z0JBQ3RCLFNBQVMsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztZQUM5QyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsd0JBQXdCLENBQUE7WUFDcEUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLHVCQUF1QixDQUFBO1lBQ2xFLFNBQVMsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztZQUM5QyxTQUFTLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1lBQzVHLFNBQVMsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RixTQUFTLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWxHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0IsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFBO1FBRUQsaUNBQTRCLEdBQUcsQ0FBQyxTQUFTLEVBQW1CLEVBQUU7WUFDNUQsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDL0QsQ0FBQyxDQUFBO1FBcUJELHdCQUFtQixHQUFHLENBQUMsRUFBVSxFQUFtQixFQUFFO1lBQ3BELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQTtJQWhURCxDQUFDO0lBQ0ssUUFBUTs7WUFDWixJQUFJLENBQUMsZUFBZSxHQUFDLElBQUksQ0FBQztZQUMxQixlQUFlLENBQUMsU0FBUyxHQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtZQUNoRixlQUFlLENBQUMsZUFBZSxHQUFDO2dCQUM3QixFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFHLElBQUksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDO2dCQUNoSCxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7YUFFM0QsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxlQUFlLEdBQUMsS0FBSyxDQUFDO2dCQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztLQUFBO0lBR0QsK0JBQStCO0lBQy9CLGNBQWM7UUFDWixlQUFlO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQTtRQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFBO1FBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDckYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFBO1FBRW5DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUE7UUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsR0FBRyxZQUFZLENBQUE7UUFDdkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFFcEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsR0FBSSxJQUFJLENBQUMsTUFBTSxHQUFHLDJCQUEyQixDQUFDO1FBQ3BGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw2QkFBNkIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQzFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDekQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUE7UUFDdEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiwwQkFBMEIsQ0FBQyxNQUFNO1FBQy9CLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxNQUFNLENBQUM7UUFDeEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFDLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxXQUFXO1FBQzFCLElBQUksV0FBVztZQUNiLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUNqRSxVQUFVLElBQUk7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7dUJBQ3RFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzNFLENBQUMsQ0FBQyxDQUFBOztZQUVKLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUM7SUFDakUsQ0FBQztJQUVELG9CQUFvQjtJQUNwQix5QkFBeUIsQ0FBQyxxQkFBcUI7UUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDN0QsSUFBSSxhQUFhLEdBQUcsTUFBYSxDQUFBO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztZQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBR25DLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQTtZQUN0RSxJQUFJLENBQUMsMkJBQTJCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1lBQ2xGLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUM7WUFDMUYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFBO1lBRXZFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7WUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1lBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1lBRS9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUUvQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO1lBQ3hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEdBQUcsc0JBQXNCLENBQUM7WUFDNUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDckMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDNUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFHN0MsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQztZQUN0RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDO1lBQzFELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztZQUM5RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUU1QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUE7WUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFBO1lBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUE7WUFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzdDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFFcEMsYUFBYTtZQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFBO1lBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQTtZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFBO1lBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRXBDLFdBQVc7WUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFBO1lBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFBO1lBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRWpDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUE7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBd0JELHFCQUFxQjtJQUNyQiwwQkFBMEIsQ0FBQyxlQUF1QixFQUFDLGtCQUF1QixFQUFFLHNCQUFzQjtRQUNoRyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsd0JBQXdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMxRixJQUFJLFNBQVMsR0FBRyxNQUFhLENBQUM7WUFDOUIsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUNwQyxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBRTVCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBRTNCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsNEJBQTRCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQTtZQUN4RSxJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDO1lBQ3BGLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUM7WUFDNUYsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFBO1lBQ3RFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7WUFFN0UsSUFBSSxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUUxQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1lBQzFELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1lBQzVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQzVDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBRXZDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7WUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFFbkMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksR0FBRywwQkFBMEIsQ0FBQztZQUNoRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxHQUFHLHNCQUFzQixDQUFDO1lBQ2hFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFDeEUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFFakQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksR0FBRyx5QkFBeUIsQ0FBQztZQUM5RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDO1lBQzlELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDdEUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBRXBFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUE7WUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUE7WUFDNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFBO1lBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDakQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFBLENBQUM7WUFFbkssYUFBYTtZQUNiLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUE7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFBO1lBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFBLENBQUM7WUFFMUosV0FBVztZQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQTtZQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7WUFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtZQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFBLENBQUM7WUFHdEosSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQTtZQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7WUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQTtZQUVoRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRWpELENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQXlCRCx1QkFBdUI7SUFDdkIsNEJBQTRCLENBQUMsa0JBQXVCO1FBQ2xELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxrQkFBa0IsQ0FBQztRQUVoRCxnQ0FBZ0M7UUFDaEMsSUFBSSxVQUFVLEdBQVUsRUFBRSxDQUFDO1FBQzNCLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMseUJBQXlCLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ2hGLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUM7UUFDL0QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRXBFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBTUQsNkJBQTZCO0lBQzdCLGlDQUFpQyxDQUFDLDhCQUE4QjtRQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHdCQUF3QixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDeEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBb0IsQ0FBQztZQUN4QyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQixDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUViLENBQUMsQ0FBQyxDQUFBO0lBRUosQ0FBQztJQUVELFlBQVk7SUFDWixXQUFXO1FBQ1QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7O29IQTNYVSxzQkFBc0I7d0dBQXRCLHNCQUFzQixrVENoQm5DLHFzYUFnVEE7NEZEaFNhLHNCQUFzQjtrQkFKbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixXQUFXLEVBQUUsaUNBQWlDO2lCQUMvQzs4UkFrQmlFLGFBQWE7c0JBQTVFLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQWlDSix3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBEcm9wZG93bk9wdGlvbnMsIEVuZ2xpc2hBcmFiaWNEVE8sIEZpbHRlckl0ZW0sIEZpbHRlclR5cGUsIEZvcmNlRGlyZWN0aW9uLCBGb3JtT3B0aW9ucywgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucywgUGFnaW5nQWN0aW9uTW9kZSwgUGFnaW5nT3B0aW9ucywgVGV4dEFyZWFPcHRpb25zLCBUZXh0Qm94T3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgUHVibGljSG9saWRheVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvUHVibGljSG9saWRheVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFB1YmxpY0hvbGlkYXlNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvUHVibGljSG9saWRheU1vZGVscy9QdWJsaWNIb2xpZGF5TW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL0NvbmZpcm1hdGlvbk1vZGFsL0NvbmZpcm1hdGlvbk1vZGFsLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wdWJsaWMtaG9saWRheScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3B1YmxpYy1ob2xpZGF5LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHVibGljSG9saWRheUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFNob3dQYWdlQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEFwaVVybCA9IFwiL2FwaS9hZG1pbi9QdWJsaWNIb2xpZGF5L1wiXHJcbiAgUHJvZHVjdGlvbk1vZGU6IGJvb2xlYW47XHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIENvdW50cmllc0xpc3QgPSBbXTtcclxuICBNb250aHNMaXN0ID0gW107XHJcbiAgRGF5c0xpc3QgPSBbXTtcclxuICBQdWJsaWNIb2xpZGF5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFB1YmxpY0hvbGlkYXlQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBQdWJsaWNIb2xpZGF5UGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIFRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBJc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ1B1YmxpY0hvbGlkYXlQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ7XHJcblxyXG5cclxuICAvL0FkZCBNb2RlbCBDb250cm9sc1xyXG4gIEFkZFB1YmxpY0hvbGlkYXlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQWRkUHVibGljSG9saWRheUZvcm1PcHRpb25zPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgQWRkTmFtZTpNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9uc1xyXG4gIERlc2NyaXB0aW9uSW5FbmdsaXNoOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgRGVzY3JpcHRpb25JbkFyYWJpYzogVGV4dEFyZWFPcHRpb25zO1xyXG4gIENvdW50cnlPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTW9udGhPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRGF5T3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIFN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIElzQWN0aXZlOiBDaGVja0JveE9wdGlvbnM7XHJcblxyXG4gIC8vRWRpdCBNb2RlbCBDb250cm9sc1xyXG4gIEVkaXRQdWJsaWNIb2xpZGF5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEVkaXRQdWJsaWNIb2xpZGF5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgRWRpdE11bHRpTGluZ3VhbE5hbWU6TXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnNcclxuICBFZGl0RGVzY3JpcHRpb25JbkVuZ2xpc2g6IFRleHRBcmVhT3B0aW9ucztcclxuICBFZGl0RGVzY3JpcHRpb25JbkFyYWJpYzogVGV4dEFyZWFPcHRpb25zO1xyXG4gIEVkaXRDb3VudHJ5T3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRNb250aE9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0RGF5T3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBFZGl0SXNBY3RpdmU6IENoZWNrQm94T3B0aW9ucztcclxuICBJc0VkaXRQdWJsaWNIb2xpZGF5TW9kZWxMb2FkZWQ6IGJvb2xlYW47XHJcbiAgUHVibGljSG9saWRheUlkOiBudW1iZXI7XHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZVB1YmxpY0hvbGlkYXlJZDogc3RyaW5nO1xyXG4gIERlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBkZWxldGVDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSBQdWJsaWNIb2xpZGF5U2VydmljZTogUHVibGljSG9saWRheVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICB9XHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudD10cnVlO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZT10aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQdWJsaWNIb2xpZGF5c1wiKVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icz1bXHJcbiAgICAgICB7dGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIikgLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZX0sXHJcbiAgICAgICB7dGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZX1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KT0+e1xyXG4gICAgICB0aGlzLlNob3dQYWdlQ29udGVudD1mYWxzZTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcblxyXG5cclxuICAvL2luaXRpYWxpemUgZmlsdGVycyBhbmQgcGFnaW5nXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICAvLyBUZXh0Qm94IGludGlcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5QdWJsaWNIb2xpZGF5UGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuUHVibGljSG9saWRheVBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gIHRoaXMuQXBpVXJsICsgJ0dldFB1YmxpY0hvbGlkYXlzQnlGaWx0ZXInO1xyXG4gICAgdGhpcy5QdWJsaWNIb2xpZGF5UGFnaW5nLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wic2VhcmNoVGV4dEJveFwiXVxyXG4gICAgdGhpcy5QdWJsaWNIb2xpZGF5UGFnaW5nLkZpbHRlcnMgPSBbdGhpcy5UZXh0SW5wdXRGaWx0ZXJdXHJcbiAgICB0aGlzLlB1YmxpY0hvbGlkYXlQYWdpbmcuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG4gICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvL1BhZ2luZyBmdW5jdGlvbnNcclxuICBzZXRQdWJsaWNIb2xpZGF5TGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuUHVibGljSG9saWRheVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50PXRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG4gIHNlYXJjaENsaWVudFNpZGUoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5QdWJsaWNIb2xpZGF5UGFnaW5nUmVzdWx0LmZpbHRlcihcclxuICAgICAgICBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgcmV0dXJuIChpdGVtLm5hbWUuZW5nbGlzaC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGl0ZW0ubmFtZS5hcmFiaWMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgfSlcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5QdWJsaWNIb2xpZGF5UGFnaW5nUmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy9BZGQgUHVibGljIEhvbGlkYXlcclxuICBzaG93QWRkUHVibGljSG9saWRheU1vZGFsKEFkZFB1YmxpY0hvbGlkYXlNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMuUHVibGljSG9saWRheVNlcnZpY2UuTG9hZGRyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7IFxyXG4gICAgICBsZXQgRHJvcGRvd25MaXN0cyA9IHJlc3VsdCBhcyBhbnlcclxuICAgICAgdGhpcy5Db3VudHJpZXNMaXN0ID0gRHJvcGRvd25MaXN0cy5jb3VudHJpZXM7XHJcbiAgICAgIHRoaXMuTW9udGhzTGlzdCA9IERyb3Bkb3duTGlzdHMubW9udGhzO1xyXG4gICAgICB0aGlzLkRheXNMaXN0ID0gRHJvcGRvd25MaXN0cy5kYXlzO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuQWRkUHVibGljSG9saWRheUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgdGhpcy5BZGRQdWJsaWNIb2xpZGF5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRQdWJsaWNIb2xpZGF5Rm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5BZGRQdWJsaWNIb2xpZGF5Rm9ybVxyXG4gICAgICB0aGlzLkFkZFB1YmxpY0hvbGlkYXlGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRQdWJsaWNIb2xpZGF5TW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkUHVibGljSG9saWRheUZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkUHVibGljSG9saWRheUZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkFkZFB1YmxpY0hvbGlkYXlGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuXHJcbiAgICB0aGlzLkFkZE5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGROYW1lLk5hbWUgPSBcIkFkZE5hbWVcIjtcclxuICAgIHRoaXMuQWRkTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICB0aGlzLkFkZE5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICB0aGlzLkFkZE5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgdGhpcy5TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLlN5c05hbWUuTmFtZSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgdGhpcy5TeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICB0aGlzLlN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5TeXNOYW1lLlZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuU3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLkRlc2NyaXB0aW9uSW5FbmdsaXNoID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZXNjcmlwdGlvbkluRW5nbGlzaC5OYW1lID0gXCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgdGhpcy5EZXNjcmlwdGlvbkluRW5nbGlzaC5MYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgIHRoaXMuRGVzY3JpcHRpb25JbkVuZ2xpc2guVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLkRlc2NyaXB0aW9uSW5FbmdsaXNoLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkRlc2NyaXB0aW9uSW5FbmdsaXNoLk1heExlbmd0aCA9IDIwMDA7XHJcblxyXG5cclxuICAgIHRoaXMuRGVzY3JpcHRpb25JbkFyYWJpYyA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgIHRoaXMuRGVzY3JpcHRpb25JbkFyYWJpYy5OYW1lID0gXCJEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICB0aGlzLkRlc2NyaXB0aW9uSW5BcmFiaWMuTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgIHRoaXMuRGVzY3JpcHRpb25JbkFyYWJpYy5WYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLkRlc2NyaXB0aW9uSW5BcmFiaWMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLkRlc2NyaXB0aW9uSW5BcmFiaWMuRm9yY2VEaXJlY3Rpb24gPSBGb3JjZURpcmVjdGlvbi5BcmFiaWM7XHJcbiAgICAgIHRoaXMuRGVzY3JpcHRpb25JbkFyYWJpYy5NYXhMZW5ndGggPSAyMDAwO1xyXG5cclxuICAgIHRoaXMuQ291bnRyeU9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLkNvdW50cnlPcHRpb25zLk5hbWUgPSBcIkNvdW50cnlPcHRpb25zXCJcclxuICAgIHRoaXMuQ291bnRyeU9wdGlvbnMuTGFiZWxLZXkgPSBcIkNvdW50cnlcIlxyXG4gICAgdGhpcy5Db3VudHJ5T3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5Db3VudHJpZXNMaXN0XHJcbiAgICB0aGlzLkNvdW50cnlPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLkNvdW50cnlPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuQ291bnRyeU9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgdGhpcy5Db3VudHJ5T3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIC8vTW9udGhzIGluaXRcclxuICAgdGhpcy5Nb250aE9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgIHRoaXMuTW9udGhPcHRpb25zLk5hbWUgPSBcIk1vbnRoT3B0aW9uc1wiXHJcbiAgIHRoaXMuTW9udGhPcHRpb25zLkxhYmVsS2V5ID0gXCJNb250aFwiXHJcbiAgIHRoaXMuTW9udGhPcHRpb25zLkRhdGFTb3VyY2UgPSB0aGlzLk1vbnRoc0xpc3RcclxuICAgdGhpcy5Nb250aE9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgdGhpcy5Nb250aE9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICB0aGlzLk1vbnRoT3B0aW9ucy5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgIHRoaXMuTW9udGhPcHRpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgLy9EYXlzIGluaXRcclxuICAgdGhpcy5EYXlPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICB0aGlzLkRheU9wdGlvbnMuTmFtZSA9IFwiRGF5T3B0aW9uc1wiXHJcbiAgIHRoaXMuRGF5T3B0aW9ucy5MYWJlbEtleSA9IFwiRGF5XCJcclxuICAgdGhpcy5EYXlPcHRpb25zLkRhdGFTb3VyY2UgPSB0aGlzLkRheXNMaXN0XHJcbiAgIHRoaXMuRGF5T3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICB0aGlzLkRheU9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICB0aGlzLkRheU9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICB0aGlzLkRheU9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5Jc0FjdGl2ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuSXNBY3RpdmUuTmFtZSA9IFwiSXNBY3RpdmVcIlxyXG4gICB0aGlzLklzQWN0aXZlLkxhYmVsS2V5ID0gXCJBY3RpdmVcIlxyXG4gICB0aGlzLklzQWN0aXZlLlZhbHVlID0gZmFsc2VcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkUHVibGljSG9saWRheU1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldEFkZFB1YmxpY0hvbGlkYXlNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5BZGRQdWJsaWNIb2xpZGF5Rm9ybS52YWx1ZTtcclxuICAgIGxldCBBZGRNb2RlbDogUHVibGljSG9saWRheU1vZGVsID0gbmV3IFB1YmxpY0hvbGlkYXlNb2RlbCgpO1xyXG4gICAgaWYgKCF0aGlzLlByb2R1Y3Rpb25Nb2RlKVxyXG4gICAgICBBZGRNb2RlbC5TeXNOYW1lID0gUmVzdWx0TW9kZWwuU3lzTmFtZTtcclxuICAgIEFkZE1vZGVsLk5hbWUuQXJhYmljID0gUmVzdWx0TW9kZWwuQWRkTmFtZS5BcmFiaWNWYWx1ZTtcclxuICAgIEFkZE1vZGVsLk5hbWUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLkFkZE5hbWUuRW5nbGlzaFZhbHVlO1xyXG4gICAgQWRkTW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb25JbkFyYWJpYztcclxuICAgIEFkZE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5EZXNjcmlwdGlvbkluRW5nbGlzaDtcclxuICAgIEFkZE1vZGVsLkNvdW50cnlJRCA9IFJlc3VsdE1vZGVsLkNvdW50cnlPcHRpb25zICE9IG51bGwgPyBOdW1iZXIoUmVzdWx0TW9kZWwuQ291bnRyeU9wdGlvbnMpIDogbnVsbDtcclxuICAgIEFkZE1vZGVsLklzQWN0aXZlID0gUmVzdWx0TW9kZWwuSXNBY3RpdmU7XHJcbiAgICBBZGRNb2RlbC5EYXkgPSBSZXN1bHRNb2RlbC5EYXlPcHRpb25zICE9IG51bGwgPyBOdW1iZXIoUmVzdWx0TW9kZWwuRGF5T3B0aW9ucykgOiAwO1xyXG4gICAgQWRkTW9kZWwuTW9udGggPSBSZXN1bHRNb2RlbC5Nb250aE9wdGlvbnMgIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5Nb250aE9wdGlvbnMpIDogMDtcclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goQWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRQdWJsaWNIb2xpZGF5RnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuUHVibGljSG9saWRheVNlcnZpY2UuQWRkUHVibGljSG9saWRheShBZGRNb2RlbClcclxuICB9XHJcblxyXG4gIC8vRWRpdCBQdWJsaWMgSG9saWRheVxyXG4gIHNob3dFZGl0UHVibGljSG9saWRheU1vZGFsKHB1YmxpY0hvbGlkYXlJRDogbnVtYmVyLFB1YmxpY0hvbGlkYXlJREVuYzogYW55LCBFZGl0UHVibGljSG9saWRheU1vZGFsKSB7XHJcbiAgICB0aGlzLlB1YmxpY0hvbGlkYXlJZCA9IHB1YmxpY0hvbGlkYXlJRDtcclxuICAgIHRoaXMuUHVibGljSG9saWRheVNlcnZpY2UuR2V0RWRpdFB1YmxpY0hvbGlkYXlEYXRhKFB1YmxpY0hvbGlkYXlJREVuYykuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIGxldCBwdWJsaWNIb2xpZGF5ID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICBsZXQgbGlzdHMgPSByZXN1bHRPYmoubGlzdHM7XHJcblxyXG4gICAgICB0aGlzLkNvdW50cmllc0xpc3QgPSBsaXN0cy5jb3VudHJpZXM7XHJcbiAgICAgIHRoaXMuTW9udGhzTGlzdCA9IGxpc3RzLm1vbnRocztcclxuICAgICAgdGhpcy5EYXlzTGlzdCA9IGxpc3RzLmRheXM7XHJcblxyXG4gICAgICB0aGlzLkVkaXRQdWJsaWNIb2xpZGF5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLkVkaXRQdWJsaWNIb2xpZGF5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0UHVibGljSG9saWRheUZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuRWRpdFB1YmxpY0hvbGlkYXlGb3JtXHJcbiAgICAgIHRoaXMuRWRpdFB1YmxpY0hvbGlkYXlGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0UHVibGljSG9saWRheU1vZGVsO1xyXG4gICAgICB0aGlzLkVkaXRQdWJsaWNIb2xpZGF5Rm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0UHVibGljSG9saWRheUZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkVkaXRQdWJsaWNIb2xpZGF5Rm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcbiAgICAgIHRoaXMuRWRpdFB1YmxpY0hvbGlkYXlGb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGU7XHJcblxyXG4gICAgICBsZXQgTmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIE5hbWUuQXJhYmljID0gcHVibGljSG9saWRheS5uYW1lLmFyYWJpYztcclxuICAgICAgTmFtZS5FbmdsaXNoID0gcHVibGljSG9saWRheS5uYW1lLmVuZ2xpc2g7XHJcblxyXG4gICAgICB0aGlzLkVkaXRNdWx0aUxpbmd1YWxOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE11bHRpTGluZ3VhbE5hbWUuTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXRNdWx0aUxpbmd1YWxOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5FZGl0TXVsdGlMaW5ndWFsTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5FZGl0TXVsdGlMaW5ndWFsTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TXVsdGlMaW5ndWFsTmFtZS5WYWx1ZSA9IE5hbWU7XHJcblxyXG4gICAgICB0aGlzLkVkaXRTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWUuTmFtZSA9IFwiRWRpdFN5c05hbWVcIjtcclxuICAgICAgdGhpcy5FZGl0U3lzTmFtZS5MYWJlbEtleSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXRTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5FZGl0U3lzTmFtZS5WYWx1ZSA9IHB1YmxpY0hvbGlkYXkuc3lzTmFtZTtcclxuICAgICAgdGhpcy5FZGl0U3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uSW5FbmdsaXNoID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbkluRW5nbGlzaC5OYW1lID0gXCJFZGl0RGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb25JbkVuZ2xpc2guTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uSW5FbmdsaXNoLlZhbHVlID0gcHVibGljSG9saWRheS5kZXNjcmlwdGlvbi5lbmdsaXNoO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbkluRW5nbGlzaC5Jc1JlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbkluQXJhYmljID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbkluQXJhYmljLk5hbWUgPSBcIkVkaXREZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uSW5BcmFiaWMuTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb25JbkFyYWJpYy5WYWx1ZSA9IHB1YmxpY0hvbGlkYXkuZGVzY3JpcHRpb24uYXJhYmljO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbkluQXJhYmljLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uQXJhYmljO1xyXG5cclxuICAgICAgdGhpcy5FZGl0Q291bnRyeU9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdENvdW50cnlPcHRpb25zLk5hbWUgPSBcIkVkaXRDb3VudHJ5T3B0aW9uc1wiXHJcbiAgICAgIHRoaXMuRWRpdENvdW50cnlPcHRpb25zLkxhYmVsS2V5ID0gXCJDb3VudHJ5XCJcclxuICAgICAgdGhpcy5FZGl0Q291bnRyeU9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuQ291bnRyaWVzTGlzdFxyXG4gICAgICB0aGlzLkVkaXRDb3VudHJ5T3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRDb3VudHJ5T3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdENvdW50cnlPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5FZGl0Q291bnRyeU9wdGlvbnMuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuQ291bnRyaWVzTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSBwdWJsaWNIb2xpZGF5LmNvdW50cnlJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07O1xyXG5cclxuICAgICAgLy9Nb250aHMgaW5pdFxyXG4gICAgICB0aGlzLkVkaXRNb250aE9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE1vbnRoT3B0aW9ucy5OYW1lID0gXCJFZGl0TW9udGhPcHRpb25zXCJcclxuICAgICAgdGhpcy5FZGl0TW9udGhPcHRpb25zLkxhYmVsS2V5ID0gXCJNb250aFwiXHJcbiAgICAgIHRoaXMuRWRpdE1vbnRoT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5Nb250aHNMaXN0XHJcbiAgICAgIHRoaXMuRWRpdE1vbnRoT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRNb250aE9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRNb250aE9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRNb250aE9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE1vbnRoT3B0aW9ucy5TZWxlY3RlZEl0ZW1zID0gdGhpcy5Nb250aHNMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IHB1YmxpY0hvbGlkYXkubW9udGg7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdOztcclxuXHJcbiAgICAgIC8vRGF5cyBpbml0XHJcbiAgICAgIHRoaXMuRWRpdERheU9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdERheU9wdGlvbnMuTmFtZSA9IFwiRWRpdERheU9wdGlvbnNcIlxyXG4gICAgICB0aGlzLkVkaXREYXlPcHRpb25zLkxhYmVsS2V5ID0gXCJEYXlcIlxyXG4gICAgICB0aGlzLkVkaXREYXlPcHRpb25zLkRhdGFTb3VyY2UgPSB0aGlzLkRheXNMaXN0XHJcbiAgICAgIHRoaXMuRWRpdERheU9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0RGF5T3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdERheU9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXREYXlPcHRpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXREYXlPcHRpb25zLlNlbGVjdGVkSXRlbXMgPSB0aGlzLk1vbnRoc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0gcHVibGljSG9saWRheS5kYXk7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdOztcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRJc0FjdGl2ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SXNBY3RpdmUuTmFtZSA9IFwiRWRpdElzQWN0aXZlXCJcclxuICAgICAgdGhpcy5FZGl0SXNBY3RpdmUuTGFiZWxLZXkgPSBcIkFjdGl2ZVwiXHJcbiAgICAgIHRoaXMuRWRpdElzQWN0aXZlLlZhbHVlID0gcHVibGljSG9saWRheS5pc0FjdGl2ZVxyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihFZGl0UHVibGljSG9saWRheU1vZGFsKTtcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXRFZGl0UHVibGljSG9saWRheU1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRQdWJsaWNIb2xpZGF5Rm9ybS52YWx1ZTtcclxuICAgIGxldCBFZGl0TW9kZWwgPSBuZXcgUHVibGljSG9saWRheU1vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSUQgPSBOdW1iZXIodGhpcy5QdWJsaWNIb2xpZGF5SWQpO1xyXG4gICAgRWRpdE1vZGVsLk5hbWUuQXJhYmljID0gUmVzdWx0TW9kZWwuTmFtZS5BcmFiaWNWYWx1ZTtcclxuICAgIEVkaXRNb2RlbC5OYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5OYW1lLkVuZ2xpc2hWYWx1ZTtcclxuICAgIGlmICghdGhpcy5Qcm9kdWN0aW9uTW9kZSlcclxuICAgICAgRWRpdE1vZGVsLlN5c05hbWUgPSBSZXN1bHRNb2RlbC5FZGl0U3lzTmFtZTtcclxuICAgIEVkaXRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoID0gUmVzdWx0TW9kZWwuRWRpdERlc2NyaXB0aW9uSW5FbmdsaXNoXHJcbiAgICBFZGl0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gUmVzdWx0TW9kZWwuRWRpdERlc2NyaXB0aW9uSW5BcmFiaWNcclxuICAgIEVkaXRNb2RlbC5Jc0FjdGl2ZSA9IFJlc3VsdE1vZGVsLkVkaXRJc0FjdGl2ZTtcclxuICAgIEVkaXRNb2RlbC5Db3VudHJ5SUQgPSBSZXN1bHRNb2RlbC5FZGl0Q291bnRyeU9wdGlvbnMgIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5FZGl0Q291bnRyeU9wdGlvbnMpIDogbnVsbFxyXG4gICAgRWRpdE1vZGVsLkRheSA9IFJlc3VsdE1vZGVsLkVkaXREYXlPcHRpb25zICE9IG51bGwgPyBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdERheU9wdGlvbnMpIDogMDtcclxuICAgIEVkaXRNb2RlbC5Nb250aCA9IFJlc3VsdE1vZGVsLkVkaXRNb250aE9wdGlvbnMgIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5FZGl0TW9udGhPcHRpb25zKSA6IDA7XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRQdWJsaWNIb2xpZGF5RnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLlB1YmxpY0hvbGlkYXlTZXJ2aWNlLkVkaXRQdWJsaWNIb2xpZGF5KEVkaXRNb2RlbClcclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIFB1YmxpYyBIb2xpZGF5XHJcbiAgc2hvd0RlbGV0ZVB1YmxpY0hvbGlkYXlNb2RhbChwdWJsaWNIb2xpZGF5SWRFbmM6IGFueSkge1xyXG4gICAgdGhpcy5kZWxldGVQdWJsaWNIb2xpZGF5SWQgPSBwdWJsaWNIb2xpZGF5SWRFbmM7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuZGVsZXRlUHVibGljSG9saWRheUlkKTtcclxuXHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5kZWxldGVQdWJsaWNIb2xpZGF5O1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG5cclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlUHVibGljSG9saWRheSA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLlB1YmxpY0hvbGlkYXlTZXJ2aWNlLkRlbGV0ZVB1YmxpY0hvbGlkYXkoaWQpO1xyXG4gIH1cclxuXHJcbiAgLy9HZW5lcmF0ZSBVQUUgUHVibGljIEhvbGlkYXlcclxuICBzaG93R2VuZXJhdGVVQUVQdWJsaWNIb2xpZGF5TW9kYWwoR2VuZXJhdGVVQUVQdWJsaWNIb2xpZGF5c01vZGFsKSB7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEdlbmVyYXRlVUFFUHVibGljSG9saWRheXNNb2RhbCk7XHJcbiAgfVxyXG4gIGdlbmVyYXRlVUFFUHVibGljSG9saWRheSgpIHtcclxuICAgIHRoaXMuUHVibGljSG9saWRheVNlcnZpY2UuR2VuZXJhdGVVQUVQdWJsaWNIb2xpZGF5KCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICAgIGVsZW1lbnQuUmVpbml0aWFsaXplUGFnaW5nKCk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICBcclxuICAgIH0pXHJcbiAgIFxyXG4gIH1cclxuXHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiAqbmdJZj1cIlNob3dQYWdlQ29udGVudFwiIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJQdWJsaWNIb2xpZGF5Rm9ybVwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCAoT25DaGFuZ2UpPVwic2VhcmNoQ2xpZW50U2lkZSgkZXZlbnQpXCIgW29wdGlvbnNdPVwic2VhcmNoVGV4dEJveFwiIFtncm91cF09XCJQdWJsaWNIb2xpZGF5Rm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICA8IS0tIGJlZ2luOjpNZW51IC0tPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiQWRkXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IG1lLTNcIiAoY2xpY2spPVwic2hvd0FkZFB1YmxpY0hvbGlkYXlNb2RhbChBZGRQdWJsaWNIb2xpZGF5TW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cIm1lLTEgZmFzIGZhLXBsdXNcIj48L2k+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwie3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdQdWJsaWNIb2xpZGF5c0NyZWF0ZVVBRScpfX1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtMyBcIiAoY2xpY2spPVwic2hvd0dlbmVyYXRlVUFFUHVibGljSG9saWRheU1vZGFsKEdlbmVyYXRlVUFFUHVibGljSG9saWRheXNNb2RhbClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwibWUtMSBmYSBmYS1jYWxlbmRhci1hbHRcIj48L2k+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1B1YmxpY0hvbGlkYXlzQ3JlYXRlVUFFJyl9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwhLS0gZW5kOjpNZW51IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBlbmQ6OkhlYWRlciAtLT5cclxuICAgIDwhLS0gYmVnaW46OkJvZHkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvdW50cnlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEYXRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU3RhdHVzXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcblxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IFB1YmxpY0hvbGlkYXkgb2YgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e1B1YmxpY0hvbGlkYXkubmFtZVN0cn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3tQdWJsaWNIb2xpZGF5LmNvdW50cnlOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57e1B1YmxpY0hvbGlkYXkuZGF0ZX19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIiAqbmdJZj1cIlB1YmxpY0hvbGlkYXkuaXNBY3RpdmU7ZWxzZSBvdGhlcl9jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZVwiKX19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI290aGVyX2NvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW5hY3RpdmVcIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0VkaXRQdWJsaWNIb2xpZGF5TW9kYWwoUHVibGljSG9saWRheS5pZCxQdWJsaWNIb2xpZGF5LmlkRW5jcnlwdGVkLCBFZGl0UHVibGljSG9saWRheU1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlUHVibGljSG9saWRheU1vZGFsKFB1YmxpY0hvbGlkYXkuaWRFbmNyeXB0ZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVsZXRlXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8IS0tZW5kOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRQdWJsaWNIb2xpZGF5TGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJQdWJsaWNIb2xpZGF5UGFnaW5nXCIgW2dyb3VwXT1cIlB1YmxpY0hvbGlkYXlGb3JtXCIgI1B1YmxpY0hvbGlkYXlQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG48IS0tYWRkIE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjQWRkUHVibGljSG9saWRheU1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQdWJsaWNIb2xpZGF5XCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkFkZFB1YmxpY0hvbGlkYXlGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhUHJvZHVjdGlvbk1vZGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlN5c05hbWVcIiBbZ3JvdXBdPVwiQWRkUHVibGljSG9saWRheUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkFkZE5hbWVcIiBbZ3JvdXBdPVwiQWRkUHVibGljSG9saWRheUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiIFtncm91cF09XCJBZGRQdWJsaWNIb2xpZGF5Rm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJEZXNjcmlwdGlvbkluQXJhYmljXCIgW2dyb3VwXT1cIkFkZFB1YmxpY0hvbGlkYXlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiQ291bnRyeU9wdGlvbnNcIiBbZ3JvdXBdPVwiQWRkUHVibGljSG9saWRheUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJEYXlPcHRpb25zXCIgW2dyb3VwXT1cIkFkZFB1YmxpY0hvbGlkYXlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiTW9udGhPcHRpb25zXCIgW2dyb3VwXT1cIkFkZFB1YmxpY0hvbGlkYXlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJJc0FjdGl2ZVwiIFtncm91cF09XCJBZGRQdWJsaWNIb2xpZGF5Rm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZVB1YmxpY0hvbGlkYXlNb2RhbCBpZD1cIkNsb3NlUHVibGljSG9saWRheU1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIG1lLTMgXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcblxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tZWRpdCBNb2RhbC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRQdWJsaWNIb2xpZGF5TW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQdWJsaWNIb2xpZGF5XCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRQdWJsaWNIb2xpZGF5Rm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0U3lzTmFtZVwiIFtncm91cF09XCJFZGl0UHVibGljSG9saWRheUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRNdWx0aUxpbmd1YWxOYW1lXCIgW2dyb3VwXT1cIkVkaXRQdWJsaWNIb2xpZGF5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRBcmVhIFtvcHRpb25zXT1cIkVkaXREZXNjcmlwdGlvbkluRW5nbGlzaFwiIFtncm91cF09XCJFZGl0UHVibGljSG9saWRheUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEFyZWEgW29wdGlvbnNdPVwiRWRpdERlc2NyaXB0aW9uSW5BcmFiaWNcIiBbZ3JvdXBdPVwiRWRpdFB1YmxpY0hvbGlkYXlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0Q291bnRyeU9wdGlvbnNcIiBbZ3JvdXBdPVwiRWRpdFB1YmxpY0hvbGlkYXlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdERheU9wdGlvbnNcIiBbZ3JvdXBdPVwiRWRpdFB1YmxpY0hvbGlkYXlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdE1vbnRoT3B0aW9uc1wiIFtncm91cF09XCJFZGl0UHVibGljSG9saWRheUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIkVkaXRJc0FjdGl2ZVwiIFtncm91cF09XCJFZGl0UHVibGljSG9saWRheUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlRWRpdFB1YmxpY0hvbGlkYXlNb2RhbCBpZD1cIkNsb3NlRWRpdFB1YmxpY0hvbGlkYXlNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBtZS0zIFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLWRlbGV0ZSBNb2RhbC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cImRlbGV0ZUNvbnRyb2xMb2FkZWRcIiBbb3B0aW9uc109XCJEZWxldGVDb25maXJtYXRpb25PcHRpb25zXCIgaWQ9XCJDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIiAjQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuXHJcbjwhLS0gR2VuZXJhdGUgVUFFIHB1YmxpYyBob2xpZGF5cyAgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjR2VuZXJhdGVVQUVQdWJsaWNIb2xpZGF5c01vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQdWJsaWNIb2xpZGF5c0NyZWF0ZVVBRUNvbmZpcm1hdGlvblwiKX19XHJcbiAgICAgIDwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJub3RpY2UgZC1mbGV4IGJnLWxpZ2h0LWRhbmdlciByb3VuZGVkIGJvcmRlci1kYW5nZXIgYm9yZGVyIGJvcmRlci1kYXNoZWQgbWItMTAgcC02XCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLWRhbmdlciBtZS00XCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9nZW4wNDQuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IHRleHQtZ3JheS03MDBcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGljSG9saWRheXNDcmVhdGVVQUVDb25maXJtYXRpb25cIil9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICA8YnV0dG9uICNDbG9zZUdlbmVyYXRlUHVibGljSG9saWRheU1vZGFsIGlkPVwiQ2xvc2VHZW5lcmF0ZVB1YmxpY0hvbGlkYXlNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gbWUtMyBcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOb1wiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZ2VuZXJhdGVVQUVQdWJsaWNIb2xpZGF5KClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBcIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJZZXNcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=