@bnsights/bbsf-admin-portal 1.0.26 → 1.0.30

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 (163) hide show
  1. package/README.md +11 -3
  2. package/bnsights-bbsf-admin-portal-1.0.30.tgz +0 -0
  3. package/bundles/bnsights-bbsf-admin-portal.umd.js +1945 -1154
  4. package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
  5. package/esm2015/lib/Pages/ActiveDirectories/active-directory/active-directory.component.js +1 -2
  6. package/esm2015/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.js +1 -2
  7. package/esm2015/lib/Pages/_layout/components/footer/footer.component.js +11 -2
  8. package/esm2015/lib/Pages/authentication/auth-callback/auth-callback.component.js +1 -2
  9. package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +61 -66
  10. package/esm2015/lib/Pages/departments/department/department.component.js +5 -5
  11. package/esm2015/lib/Pages/departments/department-info/department-info.component.js +3 -3
  12. package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +20 -23
  13. package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +6 -6
  14. package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +6 -6
  15. package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +51 -55
  16. package/esm2015/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.js +204 -0
  17. package/esm2015/lib/Pages/localizations/localizations.component.js +4 -3
  18. package/esm2015/lib/Pages/localizations/localizations.module.js +6 -6
  19. package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +9 -8
  20. package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +4 -4
  21. package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +7 -9
  22. package/esm2015/lib/Pages/notifications/edit/edit.component.js +5 -5
  23. package/esm2015/lib/Pages/notifications/edit-email/edit-email.component.js +16 -20
  24. package/esm2015/lib/Pages/notifications/edit-sms/edit-sms.component.js +11 -14
  25. package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +2 -2
  26. package/esm2015/lib/Pages/notifications/notifications-routing.module.js +5 -3
  27. package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +20 -24
  28. package/esm2015/lib/Pages/notifications/templates/templates.component.js +18 -21
  29. package/esm2015/lib/Pages/providers/provider/provider.component.js +112 -28
  30. package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +11 -11
  31. package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +3 -3
  32. package/esm2015/lib/Pages/roles/permissions/permissions.component.js +8 -7
  33. package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +11 -10
  34. package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +2 -2
  35. package/esm2015/lib/Pages/sectors/sector/sector.component.js +4 -5
  36. package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +3 -3
  37. package/esm2015/lib/Pages/shared/Enums/ProviderType.js +7 -0
  38. package/esm2015/lib/Pages/shared/Services/WorkflowActivityService.service.js +1 -1
  39. package/esm2015/lib/Pages/shared/Services/localizationsService.service .js +7 -1
  40. package/esm2015/lib/Pages/shared/Services/provider.service.js +7 -1
  41. package/esm2015/lib/Pages/shared/config/environment.js +2 -2
  42. package/esm2015/lib/Pages/shared/constants.js +130 -0
  43. package/esm2015/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.js +1 -1
  44. package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentModel.js +2 -5
  45. package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.js +1 -1
  46. package/esm2015/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.js +1 -1
  47. package/esm2015/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.js +1 -1
  48. package/esm2015/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.js +1 -1
  49. package/esm2015/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.js +6 -0
  50. package/esm2015/lib/Pages/shared/models/Lookups/LookupGroupModel.js +1 -1
  51. package/esm2015/lib/Pages/shared/models/Lookups/LookupItem.js +1 -1
  52. package/esm2015/lib/Pages/shared/models/Lookups/LookupModel.js +1 -1
  53. package/esm2015/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.js +1 -1
  54. package/esm2015/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.js +1 -1
  55. package/esm2015/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.js +1 -1
  56. package/esm2015/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.js +1 -1
  57. package/esm2015/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.js +1 -1
  58. package/esm2015/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.js +1 -1
  59. package/esm2015/lib/Pages/shared/models/NotificationsModels/TemplateDTO.js +1 -1
  60. package/esm2015/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.js +1 -1
  61. package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionModel.js +1 -1
  62. package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.js +1 -1
  63. package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.js +1 -1
  64. package/esm2015/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.js +1 -1
  65. package/esm2015/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.js +3 -0
  66. package/esm2015/lib/Pages/shared/models/ProviderModels/ProviderModel.js +1 -1
  67. package/esm2015/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.js +3 -0
  68. package/esm2015/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.js +1 -1
  69. package/esm2015/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.js +1 -1
  70. package/esm2015/lib/Pages/shared/models/SectorModels/SectorModel.js +1 -1
  71. package/esm2015/lib/Pages/shared/models/UserModels/AddUserModel.js +1 -3
  72. package/esm2015/lib/Pages/shared/models/UserModels/EditUserModel.js +1 -1
  73. package/esm2015/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.js +1 -1
  74. package/esm2015/lib/Pages/shared/models/WorkflowModels/WFActivityModel.js +1 -1
  75. package/esm2015/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.js +1 -1
  76. package/esm2015/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.js +1 -1
  77. package/esm2015/lib/Pages/shared/models/WorkflowModels/WFCreationModel.js +1 -1
  78. package/esm2015/lib/Pages/shared/models/WorkflowModels/WFVariableModel.js +1 -1
  79. package/esm2015/lib/Pages/users/users.component.js +14 -15
  80. package/esm2015/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.js +33 -32
  81. package/esm2015/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.js +75 -99
  82. package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +25 -25
  83. package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +5 -5
  84. package/fesm2015/bnsights-bbsf-admin-portal.js +1754 -1109
  85. package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
  86. package/lib/Pages/_layout/components/footer/footer.component.d.ts +2 -0
  87. package/lib/Pages/configurations/configuration/configuration.component.d.ts +5 -6
  88. package/lib/Pages/departments/department/department.component.d.ts +2 -2
  89. package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +2 -2
  90. package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +2 -2
  91. package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +2 -2
  92. package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +4 -4
  93. package/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.d.ts +51 -0
  94. package/lib/Pages/localizations/localizations.module.d.ts +12 -11
  95. package/lib/Pages/lookups/lookup/lookup.component.d.ts +1 -1
  96. package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +1 -1
  97. package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +1 -2
  98. package/lib/Pages/notifications/edit/edit.component.d.ts +1 -2
  99. package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +1 -2
  100. package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +1 -2
  101. package/lib/Pages/notifications/template-info/template-info.component.d.ts +1 -1
  102. package/lib/Pages/notifications/templates/templates.component.d.ts +2 -2
  103. package/lib/Pages/providers/provider/provider.component.d.ts +28 -6
  104. package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +2 -2
  105. package/lib/Pages/roles/permissions/permissions.component.d.ts +1 -1
  106. package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +1 -1
  107. package/lib/Pages/sectors/sector/sector.component.d.ts +1 -1
  108. package/lib/Pages/shared/Enums/ProviderType.d.ts +5 -0
  109. package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +2 -2
  110. package/lib/Pages/shared/Services/localizationsService.service .d.ts +3 -0
  111. package/lib/Pages/shared/Services/provider.service.d.ts +4 -0
  112. package/lib/Pages/shared/constants.d.ts +129 -0
  113. package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +8 -9
  114. package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +1 -2
  115. package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +1 -1
  116. package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +3 -5
  117. package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +1 -1
  118. package/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.d.ts +4 -4
  119. package/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.d.ts +9 -0
  120. package/lib/Pages/shared/models/Lookups/LookupGroupModel.d.ts +1 -2
  121. package/lib/Pages/shared/models/Lookups/LookupItem.d.ts +3 -4
  122. package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +3 -4
  123. package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +1 -2
  124. package/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.d.ts +3 -3
  125. package/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.d.ts +1 -1
  126. package/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.d.ts +2 -2
  127. package/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.d.ts +1 -1
  128. package/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.d.ts +1 -1
  129. package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +5 -6
  130. package/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.d.ts +1 -2
  131. package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +2 -2
  132. package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +3 -3
  133. package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +1 -1
  134. package/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.d.ts +2 -2
  135. package/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.d.ts +7 -0
  136. package/lib/Pages/shared/models/ProviderModels/ProviderModel.d.ts +3 -3
  137. package/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.d.ts +6 -0
  138. package/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.d.ts +2 -3
  139. package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +1 -1
  140. package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +1 -2
  141. package/lib/Pages/shared/models/UserModels/AddUserModel.d.ts +3 -3
  142. package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +2 -2
  143. package/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.d.ts +2 -3
  144. package/lib/Pages/shared/models/WorkflowModels/WFActivityModel.d.ts +10 -11
  145. package/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.d.ts +3 -3
  146. package/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.d.ts +3 -3
  147. package/lib/Pages/shared/models/WorkflowModels/WFCreationModel.d.ts +1 -3
  148. package/lib/Pages/shared/models/WorkflowModels/WFVariableModel.d.ts +3 -3
  149. package/lib/Pages/users/users.component.d.ts +2 -2
  150. package/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.d.ts +1 -1
  151. package/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.d.ts +3 -4
  152. package/lib/Pages/workflows/tabs/tabs.component.d.ts +4 -4
  153. package/lib/Pages/workflows/workflow/workflow.component.d.ts +2 -2
  154. package/package.json +3 -3
  155. package/bnsights-bbsf-admin-portal-1.0.26.tgz +0 -0
  156. package/esm2015/lib/Pages/shared/Enums/ConfigurationScope.js +0 -8
  157. package/esm2015/lib/Pages/shared/Enums/ConfigurationType.js +0 -8
  158. package/esm2015/lib/Pages/shared/Enums/ConfigurationValueSource.js +0 -6
  159. package/esm2015/lib/Pages/shared/Enums/ParticipantType.js +0 -8
  160. package/lib/Pages/shared/Enums/ConfigurationScope.d.ts +0 -5
  161. package/lib/Pages/shared/Enums/ConfigurationType.d.ts +0 -6
  162. package/lib/Pages/shared/Enums/ConfigurationValueSource.d.ts +0 -4
  163. package/lib/Pages/shared/Enums/ParticipantType.d.ts +0 -6
@@ -52,7 +52,7 @@ export class HelpCenterSecondlevelComponent {
52
52
  AddModel.Description.Arabic = ResultModel.AddDescription.Arabic;
53
53
  AddModel.Description.English = ResultModel.AddDescription.English;
54
54
  AddModel.IsHidden = ResultModel.AddIsHidden;
55
- AddModel.ParentIDEncrypted = this.ParentId;
55
+ AddModel.ParentID_GUID = this.ParentId;
56
56
  paramArray.push(AddModel);
57
57
  return paramArray;
58
58
  };
@@ -63,7 +63,7 @@ export class HelpCenterSecondlevelComponent {
63
63
  let paramArray = [];
64
64
  let ResultModel = this.EditHelpCenterForm.value;
65
65
  let EditModel = new HelpCenterItemModel();
66
- EditModel.ID = Number(this.HelpCenterItemId);
66
+ EditModel.ID_GUID = this.HelpCenterItemId;
67
67
  EditModel.Title.English = ResultModel.EditTitle.English;
68
68
  EditModel.Title.Arabic = ResultModel.EditTitle.Arabic;
69
69
  EditModel.Description.English = ResultModel.EditDescription.English;
@@ -178,10 +178,10 @@ export class HelpCenterSecondlevelComponent {
178
178
  this.utilityService.stopBlockUI();
179
179
  }
180
180
  //Edit HelpCenter Item
181
- showEditHelpCenterModal(helpCenterID, helpCenterIDEnc, EditHelpCenterModal) {
181
+ showEditHelpCenterModal(helpCenterID, EditHelpCenterModal) {
182
182
  this.utilityService.startBlockUI();
183
183
  this.HelpCenterItemId = helpCenterID;
184
- this.HelpCenterService.getEditHelpCenterData(helpCenterIDEnc).subscribe((result) => {
184
+ this.HelpCenterService.getEditHelpCenterData(helpCenterID).subscribe((result) => {
185
185
  let resultObj = result;
186
186
  let helpCenter = resultObj.model;
187
187
  this.EditHelpCenterForm = new FormGroup({});
@@ -233,7 +233,7 @@ export class HelpCenterSecondlevelComponent {
233
233
  }
234
234
  }
235
235
  HelpCenterSecondlevelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HelpCenterSecondlevelComponent, deps: [{ token: i1.AuthService }, { token: i2.PageInfoService }, { token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i1.EnvironmentService }, { token: i3.ActivatedRoute }, { token: i4.HelpCenterService }, { token: i5.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
236
- HelpCenterSecondlevelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: HelpCenterSecondlevelComponent, selector: "lib-help-center-secondlevel", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["HelpCenterPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div class=\"container-fluid\" >\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"HelpCenterForm\">\r\n <BBSF-TextBox (OnChange)=\"searchClientSide($event)\" [options]=\"searchTextBox\" [group]=\"HelpCenterForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"ParentIdTextBox\" [group]=\"HelpCenterForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-sm btn-primary\" (click)=\"showAddHelpCenterModal(AddHelpCenterModal)\">\r\n <i class=\" fa fa-plus\"></i>{{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\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(\"Title\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Description\")}}</th>\r\n <th class=\"text-center min-w-150px\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th class=\"text-center min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let Item of clientSidePagingResult\">\r\n <td>\r\n <a (click)=\"SaveName(Item.titleStr)\" [routerLink]=\"['/Admin/HelpCenter/ThirdLevel',Item.idEncrypted]\"\r\n routerLinkActive=\"router-link-active\" class=\"text-dark\">{{Item.titleStr}}</a>\r\n </td>\r\n <td>\r\n <div>{{Item.descriptionStr}}</div>\r\n </td>\r\n\r\n <td class=\"text-center\">\r\n <span *ngIf=\"Item.isHidden;else other_content\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <ng-template #other_content>\r\n <i class=\"fa fa-check\"></i>\r\n </ng-template>\r\n </td>\r\n <td class=\"text-center\">\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)=\"showEditHelpCenterModal(Item.id,Item.idEncrypted,EditHelpCenterModal)\">\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\" (click)=\"showDeleteHelpCenterModal(Item.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 </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"4\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!--end:: list-->\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setHelpCenterItemListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"HelpCenterPaging\" [group]=\"HelpCenterForm\" #HelpCenterPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--add Modal-->\r\n<ng-template #AddHelpCenterModal 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(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"AddHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddTitle\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"AddDescription\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextArea>\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]=\"AddIsHidden\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseHelpCenterModal id=\"CloseAddHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Edit Modal-->\r\n<ng-template #EditHelpCenterModal 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(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditTitle\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"EditDescription\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextArea>\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]=\"EditIsHidden\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditHelpCenterModal id=\"CloseEditHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!--delete Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\" #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n\r\n\r\n", components: [{ type: i6.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i7.TextboxComponent, 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.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i7.FormComponent, selector: "BBSF-Form", inputs: ["options"] }, { type: i7.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }], 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: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { 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"] }] });
236
+ HelpCenterSecondlevelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: HelpCenterSecondlevelComponent, selector: "lib-help-center-secondlevel", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["HelpCenterPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"HelpCenterForm\">\r\n <BBSF-TextBox (OnChange)=\"searchClientSide($event)\" [options]=\"searchTextBox\" [group]=\"HelpCenterForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"ParentIdTextBox\" [group]=\"HelpCenterForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-sm btn-primary\" (click)=\"showAddHelpCenterModal(AddHelpCenterModal)\">\r\n <i class=\" fa fa-plus\"></i>{{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\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(\"Title\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Description\")}}</th>\r\n <th class=\"text-center min-w-150px\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th class=\"text-center min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let Item of clientSidePagingResult\">\r\n <td>\r\n <a (click)=\"SaveName(Item.titleStr)\" [routerLink]=\"['/Admin/HelpCenter/ThirdLevel',Item.iD_GUID]\"\r\n routerLinkActive=\"router-link-active\" class=\"text-dark\">{{Item.titleStr}}</a>\r\n </td>\r\n <td>\r\n <div>{{Item.descriptionStr}}</div>\r\n </td>\r\n\r\n <td class=\"text-center\">\r\n <span *ngIf=\"Item.isHidden;else other_content\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <ng-template #other_content>\r\n <i class=\"fa fa-check\"></i>\r\n </ng-template>\r\n </td>\r\n <td class=\"text-center\">\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)=\"showEditHelpCenterModal(Item.iD_GUID,EditHelpCenterModal)\">\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\" (click)=\"showDeleteHelpCenterModal(Item.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"4\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!--end:: list-->\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setHelpCenterItemListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"HelpCenterPaging\" [group]=\"HelpCenterForm\" #HelpCenterPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--add Modal-->\r\n<ng-template #AddHelpCenterModal 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(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"AddHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddTitle\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"AddDescription\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextArea>\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]=\"AddIsHidden\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseHelpCenterModal id=\"CloseAddHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Edit Modal-->\r\n<ng-template #EditHelpCenterModal 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(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditTitle\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"EditDescription\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextArea>\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]=\"EditIsHidden\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditHelpCenterModal id=\"CloseEditHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!--delete Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\" #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n\r\n\r\n", components: [{ type: i6.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i7.TextboxComponent, 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.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i7.FormComponent, selector: "BBSF-Form", inputs: ["options"] }, { type: i7.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }], 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: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { 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"] }] });
237
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HelpCenterSecondlevelComponent, decorators: [{
238
238
  type: Component,
239
239
  args: [{
@@ -247,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
247
247
  type: ViewChild,
248
248
  args: ['ConfirmationModalControl', { static: false }]
249
249
  }] } });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1jZW50ZXItc2Vjb25kbGV2ZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9oZWxwQ2VudGVyL2hlbHAtY2VudGVyLXNlY29uZGxldmVsL2hlbHAtY2VudGVyLXNlY29uZGxldmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaGVscENlbnRlci9oZWxwLWNlbnRlci1zZWNvbmRsZXZlbC9oZWxwLWNlbnRlci1zZWNvbmRsZXZlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoUSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUcvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBVXJGLE1BQU0sT0FBTyw4QkFBOEI7SUEwQ3pDLFlBQW9CLFdBQXVCLEVBQVMsZUFBK0IsRUFBUyxjQUE2QixFQUFTLG9CQUF5QyxFQUFTLGtCQUFxQyxFQUFTLGNBQThCLEVBQVUsaUJBQW9DLEVBQVUsWUFBc0I7UUFBMVQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBUyxvQkFB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UzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxXQUFXLEVBQUUsMENBQTBDO2lCQUN4RDtxVEFrQjhELGFBQWE7c0JBQXpFLFNBQVM7dUJBQUMsNkJBQTZCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXNCRCx3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBGb3JtT3B0aW9ucywgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQYWdpbmdBY3Rpb25Nb2RlLCBQYWdpbmdPcHRpb25zLCBUZXh0Qm94T3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgSGVscENlbnRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvSGVscENlbnRlclNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEhlbHBDZW50ZXJJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0hlbHBDZW50ZXJNb2RlbHMvSGVscENlbnRlckl0ZW1Nb2RlbCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzL2xpYi9jb250cm9scy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGVscC1jZW50ZXItc2Vjb25kbGV2ZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWxwLWNlbnRlci1zZWNvbmRsZXZlbC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlbHBDZW50ZXJTZWNvbmRsZXZlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFBhcmVudElkOiBzdHJpbmcgPSBcIlwiXHJcbiAgUGFyZW50TmFtZTogc3RyaW5nID0gXCJcIlxyXG4gIFBhZ2VOYW1lOiBzdHJpbmcgPSBcIlwiXHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL0hlbHBDZW50ZXIvXCJcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBjb21wb25lbnRzXHJcbiAgc2VhcmNoVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgUGFyZW50SWRUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgUGFyZW50SURGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBIZWxwQ2VudGVyUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgSGVscENlbnRlclBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBJc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0hlbHBDZW50ZXJQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBBZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgQWRkVGl0bGU6TXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnNcclxuICBBZGREZXNjcmlwdGlvbjpNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnNcclxuICBBZGRJc0hpZGRlbjogQ2hlY2tCb3hPcHRpb25zO1xyXG5cclxuICAvL0VkaXQgTW9kZWwgQ29udHJvbHNcclxuICBFZGl0SGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFZGl0SGVscENlbnRlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIEVkaXRUaXRsZTpNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9uc1xyXG4gIEVkaXREZXNjcmlwdGlvbjpNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnNcclxuICBFZGl0SXNIaWRkZW46IENoZWNrQm94T3B0aW9ucztcclxuICBIZWxwQ2VudGVySXRlbUlkOiBudW1iZXI7XHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZUhlbHBDZW50ZXJJZDogc3RyaW5nO1xyXG4gIERlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBkZWxldGVDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOkF1dGhTZXJ2aWNlLHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOlBhZ2VJbmZvU2VydmljZSwgcHVibGljIHV0aWxpdHlTZXJ2aWNlOlV0aWxpdHlTZXJ2aWNlLHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6QkJTRlRyYW5zbGF0ZVNlcnZpY2UscHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6RW52aXJvbm1lbnRTZXJ2aWNlLHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIEhlbHBDZW50ZXJTZXJ2aWNlOiBIZWxwQ2VudGVyU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5QYXJlbnRJZCA9IHBhcmFtc1sncGFyZW50SUQnXTtcclxuICAgIH0pOyAgICBcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5QYXJlbnROYW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJQYXJlbnROYW1lXCIpO1xyXG4gICAgdGhpcy5QYWdlTmFtZSA9IHRoaXMuUGFyZW50TmFtZVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZT10aGlzLlBhZ2VOYW1lXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzPVtcclxuICAgICAgIHt0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSAsIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlfSxcclxuICAgICAgIHt0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlfSxcclxuICAgICAgIHt0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSGVscENlbnRlclwiKSAsIHBhdGg6ICcvQWRtaW4vSGVscENlbnRlci9IZWxwQ2VudGVyJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2V9LFxyXG4gICAgICAge3RpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2V9LFxyXG4gICAgICBcclxuICBcclxuICAgIF07IFxyXG5cclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCk9PntcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuICAgIFxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuIFxyXG4gIC8vaW5pdGlhbGl6ZSBQYWdlIGZpbHRlcnMgXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICAvLyBUZXh0Qm94IGluaXRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuICAgIHRoaXMuUGFyZW50SWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLlBhcmVudElkVGV4dEJveC5OYW1lID0gXCJQYXJlbnRJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5QYXJlbnRJZFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy5QYXJlbnRJZFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLlBhcmVudElkVGV4dEJveC5WYWx1ZSA9IHRoaXMuUGFyZW50SWQ7XHJcblxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLlBhcmVudElERmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuUGFyZW50SURGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJQYXJlbnRJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5QYXJlbnRJREZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJwYXJlbnRJRFwiXHJcbiAgICB0aGlzLlBhcmVudElERmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlBhcmVudElERmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcblxyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0SGVscENlbnRlckl0ZW1zQnlGaWx0ZXInO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wic2VhcmNoVGV4dEJveFwiXVxyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLkZpbHRlcnMgPSBbdGhpcy5UZXh0SW5wdXRGaWx0ZXIsIHRoaXMuUGFyZW50SURGaWx0ZXJdXHJcbiAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG5cclxuICB9XHJcblxyXG4gIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldEhlbHBDZW50ZXJJdGVtTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKVxyXG4gIH1cclxuICBzZWFyY2hDbGllbnRTaWRlKHNlYXJjaFZhbHVlKSB7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUpXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5maWx0ZXIoXHJcbiAgICAgICAgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybiAoaXRlbS50aXRsZS5lbmdsaXNoLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgfHwgaXRlbS50aXRsZS5hcmFiaWMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgfSlcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5IZWxwQ2VudGVyUGFnaW5nUmVzdWx0O1xyXG4gIH1cclxuICAvL1NhdmUgSGVscENlbnRlciBOYW1lIGZvciBpbmZvIHBhZ2VcclxuICBTYXZlTmFtZShuYW1lKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIlBhcmVudE5hbWVcIiwgbmFtZSk7XHJcbiAgfVxyXG4gIC8vQWRkIGhlbHBjZW50ZXIgaXRlbVxyXG4gIHNob3dBZGRIZWxwQ2VudGVyTW9kYWwoQWRkSGVscENlbnRlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgdGhpcy5BZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuQWRkSGVscENlbnRlckZvcm1cclxuICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZEhlbHBDZW50ZXJNb2RlbDtcclxuICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkSGVscENlbnRlckZ1bmN0aW9uO1xyXG4gICAgdGhpcy5BZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcblxyXG4gICAgdGhpcy5BZGRUaXRsZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5BZGRUaXRsZS5OYW1lID0gXCJBZGRUaXRsZVwiO1xyXG4gICAgdGhpcy5BZGRUaXRsZS5BcmFiaWNMYWJlbEtleSA9ICBcIlRpdGxlSW5BcmFiaWNcIjtcclxuICAgIHRoaXMuQWRkVGl0bGUuRW5nbGlzaExhYmVsS2V5ID0gXCJUaXRsZUluRW5nbGlzaFwiO1xyXG4gICAgdGhpcy5BZGRUaXRsZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIHRoaXMuQWRkVGl0bGUuVmFsdWUgPSBudWxsO1xyXG5cclxuICAgIHRoaXMuQWRkRGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICB0aGlzLkFkZERlc2NyaXB0aW9uLk5hbWUgPSBcIkFkZERlc2NyaXB0aW9uXCI7XHJcbiAgICB0aGlzLkFkZERlc2NyaXB0aW9uLkFyYWJpY0xhYmVsS2V5ID0gIFwiRGVzY3JpcHRpb25JbkFyYWJpY1wiO1xyXG4gICAgdGhpcy5BZGREZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICB0aGlzLkFkZERlc2NyaXB0aW9uLlZhbHVlID0gbnVsbDtcclxuXHJcblxyXG4gICAgdGhpcy5BZGRJc0hpZGRlbiA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuQWRkSXNIaWRkZW4uTmFtZSA9IFwiQWRkSXNIaWRkZW5cIlxyXG4gICAgdGhpcy5BZGRJc0hpZGRlbi5MYWJlbEtleSA9IFwiSGlkZGVuXCJcclxuICAgIHRoaXMuQWRkSXNIaWRkZW4uVmFsdWUgPSBmYWxzZVxyXG5cclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkSGVscENlbnRlck1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRBZGRIZWxwQ2VudGVyTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuQWRkSGVscENlbnRlckZvcm0udmFsdWU7XHJcbiAgICBsZXQgQWRkTW9kZWw6IEhlbHBDZW50ZXJJdGVtTW9kZWwgPSBuZXcgSGVscENlbnRlckl0ZW1Nb2RlbCgpO1xyXG4gICAgQWRkTW9kZWwuVGl0bGUuQXJhYmljID0gUmVzdWx0TW9kZWwuQWRkVGl0bGUuQXJhYmljO1xyXG4gICAgQWRkTW9kZWwuVGl0bGUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLkFkZFRpdGxlLkVuZ2xpc2g7XHJcbiAgICBBZGRNb2RlbC5EZXNjcmlwdGlvbi5BcmFiaWMgPSBSZXN1bHRNb2RlbC5BZGREZXNjcmlwdGlvbi5BcmFiaWM7XHJcbiAgICBBZGRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoID0gUmVzdWx0TW9kZWwuQWRkRGVzY3JpcHRpb24uRW5nbGlzaDtcclxuICAgIEFkZE1vZGVsLklzSGlkZGVuID0gUmVzdWx0TW9kZWwuQWRkSXNIaWRkZW47XHJcbiAgICBBZGRNb2RlbC5QYXJlbnRJREVuY3J5cHRlZCA9IHRoaXMuUGFyZW50SWQ7IFxyXG4gIFxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkSGVscENlbnRlckZ1bmN0aW9uID0gKEFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkFkZEhlbHBDZW50ZXIoQWRkTW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL0VkaXQgSGVscENlbnRlciBJdGVtXHJcbiAgc2hvd0VkaXRIZWxwQ2VudGVyTW9kYWwoaGVscENlbnRlcklEOiBudW1iZXIsIGhlbHBDZW50ZXJJREVuYzogc3RyaW5nLCBFZGl0SGVscENlbnRlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVySXRlbUlkID0gaGVscENlbnRlcklEO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyU2VydmljZS5nZXRFZGl0SGVscENlbnRlckRhdGEoaGVscENlbnRlcklERW5jKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IGhlbHBDZW50ZXIgPSByZXN1bHRPYmoubW9kZWw7XHJcblxyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5FZGl0SGVscENlbnRlckZvcm1cclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRIZWxwQ2VudGVyTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRIZWxwQ2VudGVyRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlVwZGF0ZVxyXG5cclxuICAgICAgbGV0IFRpdGxlID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgVGl0bGUuQXJhYmljID0gaGVscENlbnRlci50aXRsZS5hcmFiaWM7XHJcbiAgICAgIFRpdGxlLkVuZ2xpc2ggPSBoZWxwQ2VudGVyLnRpdGxlLmVuZ2xpc2g7XHJcblxyXG4gICAgICB0aGlzLkVkaXRUaXRsZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5OYW1lID0gXCJFZGl0VGl0bGVcIjtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuQXJhYmljTGFiZWxLZXkgPSBcIlRpdGxlSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuRW5nbGlzaExhYmVsS2V5ID0gXCJUaXRsZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuVmFsdWUgPSBUaXRsZTtcclxuXHJcbiAgICAgIGxldCBEZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIERlc2NyaXB0aW9uLkFyYWJpYyA9IGhlbHBDZW50ZXIuZGVzY3JpcHRpb24uYXJhYmljO1xyXG4gICAgICBEZXNjcmlwdGlvbi5FbmdsaXNoID0gaGVscENlbnRlci5kZXNjcmlwdGlvbi5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLk5hbWUgPSBcIkVkaXREZXNjcmlwdGlvblwiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLlZhbHVlID0gRGVzY3JpcHRpb247XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0SXNIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuLk5hbWUgPSBcIkVkaXRJc0hpZGRlblwiXHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuLkxhYmVsS2V5ID0gXCJIaWRkZW5cIlxyXG4gICAgICB0aGlzLkVkaXRJc0hpZGRlbi5WYWx1ZSA9IGhlbHBDZW50ZXIuaXNIaWRkZW5cclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRWRpdEhlbHBDZW50ZXJNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEhlbHBDZW50ZXJNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5FZGl0SGVscENlbnRlckZvcm0udmFsdWU7XHJcbiAgICBsZXQgRWRpdE1vZGVsID0gbmV3IEhlbHBDZW50ZXJJdGVtTW9kZWwoKTtcclxuICAgIEVkaXRNb2RlbC5JRCA9IE51bWJlcih0aGlzLkhlbHBDZW50ZXJJdGVtSWQpO1xyXG4gICAgRWRpdE1vZGVsLlRpdGxlLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5FZGl0VGl0bGUuRW5nbGlzaDsgXHJcbiAgICBFZGl0TW9kZWwuVGl0bGUuQXJhYmljID0gUmVzdWx0TW9kZWwuRWRpdFRpdGxlLkFyYWJpYztcclxuICAgIEVkaXRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoID0gUmVzdWx0TW9kZWwuRWRpdERlc2NyaXB0aW9uLkVuZ2xpc2g7XHJcbiAgICBFZGl0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gUmVzdWx0TW9kZWwuRWRpdERlc2NyaXB0aW9uLkFyYWJpYztcclxuICAgIEVkaXRNb2RlbC5Jc0hpZGRlbiA9IFJlc3VsdE1vZGVsLkVkaXRJc0hpZGRlbjtcclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEhlbHBDZW50ZXJGdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSGVscENlbnRlclNlcnZpY2UuRWRpdEhlbHBDZW50ZXIoRWRpdE1vZGVsKVxyXG4gIH1cclxuXHJcbiAgLy9EZWxldGUgSGVscENlbnRlclxyXG4gIHNob3dEZWxldGVIZWxwQ2VudGVyTW9kYWwoaGVscENlbnRlcklEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGVsZXRlSGVscENlbnRlcklkID0gaGVscENlbnRlcklEO1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaCh0aGlzLmRlbGV0ZUhlbHBDZW50ZXJJZCk7XHJcblxyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZGVsZXRlSGVscENlbnRlcjtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLmRlbGV0ZUNvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUhlbHBDZW50ZXIgPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5IZWxwQ2VudGVyU2VydmljZS5EZWxldGVIZWxwQ2VudGVyKGlkKTtcclxuICB9XHJcbiB9XHJcblxyXG5cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjwhLS0gUGFnZSBDb250ZW50IC0tPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiSGVscENlbnRlckZvcm1cIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggKE9uQ2hhbmdlKT1cInNlYXJjaENsaWVudFNpZGUoJGV2ZW50KVwiIFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiSGVscENlbnRlckZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiUGFyZW50SWRUZXh0Qm94XCIgW2dyb3VwXT1cIkhlbHBDZW50ZXJGb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiQWRkXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInNob3dBZGRIZWxwQ2VudGVyTW9kYWwoQWRkSGVscENlbnRlck1vZGFsKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtcGx1c1wiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRpdGxlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVzY3JpcHRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXIgbWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWaXNpYmxlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyIG1pbi13LTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgSXRlbSBvZiBjbGllbnRTaWRlUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cIlNhdmVOYW1lKEl0ZW0udGl0bGVTdHIpXCIgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vSGVscENlbnRlci9UaGlyZExldmVsJyxJdGVtLmlkRW5jcnlwdGVkXVwiXHJcbiAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCIgY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e0l0ZW0udGl0bGVTdHJ9fTwvYT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXY+e3tJdGVtLmRlc2NyaXB0aW9uU3RyfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJJdGVtLmlzSGlkZGVuO2Vsc2Ugb3RoZXJfY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvdGhlcl9jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZWNrXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdEhlbHBDZW50ZXJNb2RhbChJdGVtLmlkLEl0ZW0uaWRFbmNyeXB0ZWQsRWRpdEhlbHBDZW50ZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIGlkPVwiYnRuUmVzZXRQYXNzXCIgKGNsaWNrKT1cInNob3dEZWxldGVIZWxwQ2VudGVyTW9kYWwoSXRlbS5pZEVuY3J5cHRlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImNsaWVudFNpZGVQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPCEtLWVuZDo6IGxpc3QtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldEhlbHBDZW50ZXJJdGVtTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJIZWxwQ2VudGVyUGFnaW5nXCIgW2dyb3VwXT1cIkhlbHBDZW50ZXJGb3JtXCIgI0hlbHBDZW50ZXJQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS1hZGQgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNBZGRIZWxwQ2VudGVyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhlbHBDZW50ZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiQWRkSGVscENlbnRlckZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkFkZFRpdGxlXCIgW2dyb3VwXT1cIkFkZEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cIkFkZERlc2NyaXB0aW9uXCIgW2dyb3VwXT1cIkFkZEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJBZGRJc0hpZGRlblwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUhlbHBDZW50ZXJNb2RhbCBpZD1cIkNsb3NlQWRkSGVscENlbnRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtICBtZS0zXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1FZGl0IE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjRWRpdEhlbHBDZW50ZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhlbHBDZW50ZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJFZGl0VGl0bGVcIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWEgW29wdGlvbnNdPVwiRWRpdERlc2NyaXB0aW9uXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiRWRpdElzSGlkZGVuXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRIZWxwQ2VudGVyTW9kYWwgaWQ9XCJDbG9zZUVkaXRIZWxwQ2VudGVyTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLWRlbGV0ZSBNb2RhbC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cImRlbGV0ZUNvbnRyb2xMb2FkZWRcIiBbb3B0aW9uc109XCJEZWxldGVDb25maXJtYXRpb25PcHRpb25zXCIgaWQ9XCJDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIiAjQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuXHJcblxyXG5cclxuIl19
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1jZW50ZXItc2Vjb25kbGV2ZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9oZWxwQ2VudGVyL2hlbHAtY2VudGVyLXNlY29uZGxldmVsL2hlbHAtY2VudGVyLXNlY29uZGxldmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaGVscENlbnRlci9oZWxwLWNlbnRlci1zZWNvbmRsZXZlbC9oZWxwLWNlbnRlci1zZWNvbmRsZXZlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoUSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUcvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBVXJGLE1BQU0sT0FBTyw4QkFBOEI7SUEwQ3pDLFlBQW9CLFdBQXdCLEVBQVUsZUFBZ0MsRUFBUyxjQUE4QixFQUFVLG9CQUEwQyxFQUFVLGtCQUFzQyxFQUFVLGNBQThCLEVBQVUsaUJBQW9DLEVBQVUsWUFBc0I7UUFBblUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxvQkFB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QTZCO29CQUN2QyxXQUFXLEVBQUUsMENBQTBDO2lCQUN4RDtxVEFrQjhELGFBQWE7c0JBQXpFLFNBQVM7dUJBQUMsNkJBQTZCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXNCRCx3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBGb3JtT3B0aW9ucywgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQYWdpbmdBY3Rpb25Nb2RlLCBQYWdpbmdPcHRpb25zLCBUZXh0Qm94T3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgSGVscENlbnRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvSGVscENlbnRlclNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEhlbHBDZW50ZXJJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0hlbHBDZW50ZXJNb2RlbHMvSGVscENlbnRlckl0ZW1Nb2RlbCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzL2xpYi9jb250cm9scy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGVscC1jZW50ZXItc2Vjb25kbGV2ZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWxwLWNlbnRlci1zZWNvbmRsZXZlbC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlbHBDZW50ZXJTZWNvbmRsZXZlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFBhcmVudElkOiBzdHJpbmcgPSBcIlwiXHJcbiAgUGFyZW50TmFtZTogc3RyaW5nID0gXCJcIlxyXG4gIFBhZ2VOYW1lOiBzdHJpbmcgPSBcIlwiXHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL0hlbHBDZW50ZXIvXCJcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBjb21wb25lbnRzXHJcbiAgc2VhcmNoVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgUGFyZW50SWRUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgUGFyZW50SURGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBIZWxwQ2VudGVyUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgSGVscENlbnRlclBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBJc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0hlbHBDZW50ZXJQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBBZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgQWRkVGl0bGU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zXHJcbiAgQWRkRGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9uc1xyXG4gIEFkZElzSGlkZGVuOiBDaGVja0JveE9wdGlvbnM7XHJcblxyXG4gIC8vRWRpdCBNb2RlbCBDb250cm9sc1xyXG4gIEVkaXRIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgRWRpdFRpdGxlOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9uc1xyXG4gIEVkaXREZXNjcmlwdGlvbjogTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zXHJcbiAgRWRpdElzSGlkZGVuOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgSGVscENlbnRlckl0ZW1JZDogc3RyaW5nO1xyXG5cclxuICAvL2RlbGV0ZSAgTW9kZWwgQ29udHJvbHNcclxuICBkZWxldGVIZWxwQ2VudGVySWQ6IHN0cmluZztcclxuICBEZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLCBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBIZWxwQ2VudGVyU2VydmljZTogSGVscENlbnRlclNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkge1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMuUGFyZW50SWQgPSBwYXJhbXNbJ3BhcmVudElEJ107XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5QYXJlbnROYW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJQYXJlbnROYW1lXCIpO1xyXG4gICAgdGhpcy5QYWdlTmFtZSA9IHRoaXMuUGFyZW50TmFtZVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMuUGFnZU5hbWVcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIZWxwQ2VudGVyXCIpLCBwYXRoOiAnL0FkbWluL0hlbHBDZW50ZXIvSGVscENlbnRlcicsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG5cclxuXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcblxyXG4gIC8vaW5pdGlhbGl6ZSBQYWdlIGZpbHRlcnMgXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICAvLyBUZXh0Qm94IGluaXRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuICAgIHRoaXMuUGFyZW50SWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLlBhcmVudElkVGV4dEJveC5OYW1lID0gXCJQYXJlbnRJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5QYXJlbnRJZFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy5QYXJlbnRJZFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLlBhcmVudElkVGV4dEJveC5WYWx1ZSA9IHRoaXMuUGFyZW50SWQ7XHJcblxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLlBhcmVudElERmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuUGFyZW50SURGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJQYXJlbnRJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5QYXJlbnRJREZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJwYXJlbnRJRFwiXHJcbiAgICB0aGlzLlBhcmVudElERmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlBhcmVudElERmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcblxyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0SGVscENlbnRlckl0ZW1zQnlGaWx0ZXInO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wic2VhcmNoVGV4dEJveFwiXVxyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLkZpbHRlcnMgPSBbdGhpcy5UZXh0SW5wdXRGaWx0ZXIsIHRoaXMuUGFyZW50SURGaWx0ZXJdXHJcbiAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG5cclxuICB9XHJcblxyXG4gIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldEhlbHBDZW50ZXJJdGVtTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKVxyXG4gIH1cclxuICBzZWFyY2hDbGllbnRTaWRlKHNlYXJjaFZhbHVlKSB7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUpXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5maWx0ZXIoXHJcbiAgICAgICAgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybiAoaXRlbS50aXRsZS5lbmdsaXNoLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgfHwgaXRlbS50aXRsZS5hcmFiaWMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgfSlcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5IZWxwQ2VudGVyUGFnaW5nUmVzdWx0O1xyXG4gIH1cclxuICAvL1NhdmUgSGVscENlbnRlciBOYW1lIGZvciBpbmZvIHBhZ2VcclxuICBTYXZlTmFtZShuYW1lKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIlBhcmVudE5hbWVcIiwgbmFtZSk7XHJcbiAgfVxyXG4gIC8vQWRkIGhlbHBjZW50ZXIgaXRlbVxyXG4gIHNob3dBZGRIZWxwQ2VudGVyTW9kYWwoQWRkSGVscENlbnRlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgdGhpcy5BZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuQWRkSGVscENlbnRlckZvcm1cclxuICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZEhlbHBDZW50ZXJNb2RlbDtcclxuICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkSGVscENlbnRlckZ1bmN0aW9uO1xyXG4gICAgdGhpcy5BZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcblxyXG4gICAgdGhpcy5BZGRUaXRsZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5BZGRUaXRsZS5OYW1lID0gXCJBZGRUaXRsZVwiO1xyXG4gICAgdGhpcy5BZGRUaXRsZS5BcmFiaWNMYWJlbEtleSA9IFwiVGl0bGVJbkFyYWJpY1wiO1xyXG4gICAgdGhpcy5BZGRUaXRsZS5FbmdsaXNoTGFiZWxLZXkgPSBcIlRpdGxlSW5FbmdsaXNoXCI7XHJcbiAgICB0aGlzLkFkZFRpdGxlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5BZGRUaXRsZS5WYWx1ZSA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5BZGREZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uTmFtZSA9IFwiQWRkRGVzY3JpcHRpb25cIjtcclxuICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgdGhpcy5BZGREZXNjcmlwdGlvbi5WYWx1ZSA9IG51bGw7XHJcblxyXG5cclxuICAgIHRoaXMuQWRkSXNIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLkFkZElzSGlkZGVuLk5hbWUgPSBcIkFkZElzSGlkZGVuXCJcclxuICAgIHRoaXMuQWRkSXNIaWRkZW4uTGFiZWxLZXkgPSBcIkhpZGRlblwiXHJcbiAgICB0aGlzLkFkZElzSGlkZGVuLlZhbHVlID0gZmFsc2VcclxuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZEhlbHBDZW50ZXJNb2RhbCk7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0QWRkSGVscENlbnRlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtLnZhbHVlO1xyXG4gICAgbGV0IEFkZE1vZGVsOiBIZWxwQ2VudGVySXRlbU1vZGVsID0gbmV3IEhlbHBDZW50ZXJJdGVtTW9kZWwoKTtcclxuICAgIEFkZE1vZGVsLlRpdGxlLkFyYWJpYyA9IFJlc3VsdE1vZGVsLkFkZFRpdGxlLkFyYWJpYztcclxuICAgIEFkZE1vZGVsLlRpdGxlLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5BZGRUaXRsZS5FbmdsaXNoO1xyXG4gICAgQWRkTW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gUmVzdWx0TW9kZWwuQWRkRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgQWRkTW9kZWwuRGVzY3JpcHRpb24uRW5nbGlzaCA9IFJlc3VsdE1vZGVsLkFkZERlc2NyaXB0aW9uLkVuZ2xpc2g7XHJcbiAgICBBZGRNb2RlbC5Jc0hpZGRlbiA9IFJlc3VsdE1vZGVsLkFkZElzSGlkZGVuO1xyXG4gICAgQWRkTW9kZWwuUGFyZW50SURfR1VJRCA9IHRoaXMuUGFyZW50SWQ7XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkSGVscENlbnRlckZ1bmN0aW9uID0gKEFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkFkZEhlbHBDZW50ZXIoQWRkTW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL0VkaXQgSGVscENlbnRlciBJdGVtXHJcbiAgc2hvd0VkaXRIZWxwQ2VudGVyTW9kYWwoaGVscENlbnRlcklEOiBzdHJpbmcsIEVkaXRIZWxwQ2VudGVyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJJdGVtSWQgPSBoZWxwQ2VudGVySUQ7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLmdldEVkaXRIZWxwQ2VudGVyRGF0YShoZWxwQ2VudGVySUQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgaGVscENlbnRlciA9IHJlc3VsdE9iai5tb2RlbDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybVxyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEhlbHBDZW50ZXJNb2RlbDtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEhlbHBDZW50ZXJGdW5jdGlvbjtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlXHJcblxyXG4gICAgICBsZXQgVGl0bGUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBUaXRsZS5BcmFiaWMgPSBoZWxwQ2VudGVyLnRpdGxlLmFyYWJpYztcclxuICAgICAgVGl0bGUuRW5nbGlzaCA9IGhlbHBDZW50ZXIudGl0bGUuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlLk5hbWUgPSBcIkVkaXRUaXRsZVwiO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5BcmFiaWNMYWJlbEtleSA9IFwiVGl0bGVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5FbmdsaXNoTGFiZWxLZXkgPSBcIlRpdGxlSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5WYWx1ZSA9IFRpdGxlO1xyXG5cclxuICAgICAgbGV0IERlc2NyaXB0aW9uID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgRGVzY3JpcHRpb24uQXJhYmljID0gaGVscENlbnRlci5kZXNjcmlwdGlvbi5hcmFiaWM7XHJcbiAgICAgIERlc2NyaXB0aW9uLkVuZ2xpc2ggPSBoZWxwQ2VudGVyLmRlc2NyaXB0aW9uLmVuZ2xpc2g7XHJcblxyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uTmFtZSA9IFwiRWRpdERlc2NyaXB0aW9uXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLkFyYWJpY0xhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uVmFsdWUgPSBEZXNjcmlwdGlvbjtcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRJc0hpZGRlbiA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SXNIaWRkZW4uTmFtZSA9IFwiRWRpdElzSGlkZGVuXCJcclxuICAgICAgdGhpcy5FZGl0SXNIaWRkZW4uTGFiZWxLZXkgPSBcIkhpZGRlblwiXHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuLlZhbHVlID0gaGVscENlbnRlci5pc0hpZGRlblxyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihFZGl0SGVscENlbnRlck1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0SGVscENlbnRlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybS52YWx1ZTtcclxuICAgIGxldCBFZGl0TW9kZWwgPSBuZXcgSGVscENlbnRlckl0ZW1Nb2RlbCgpO1xyXG4gICAgRWRpdE1vZGVsLklEX0dVSUQgPSB0aGlzLkhlbHBDZW50ZXJJdGVtSWQ7XHJcbiAgICBFZGl0TW9kZWwuVGl0bGUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLkVkaXRUaXRsZS5FbmdsaXNoO1xyXG4gICAgRWRpdE1vZGVsLlRpdGxlLkFyYWJpYyA9IFJlc3VsdE1vZGVsLkVkaXRUaXRsZS5BcmFiaWM7XHJcbiAgICBFZGl0TW9kZWwuRGVzY3JpcHRpb24uRW5nbGlzaCA9IFJlc3VsdE1vZGVsLkVkaXREZXNjcmlwdGlvbi5FbmdsaXNoO1xyXG4gICAgRWRpdE1vZGVsLkRlc2NyaXB0aW9uLkFyYWJpYyA9IFJlc3VsdE1vZGVsLkVkaXREZXNjcmlwdGlvbi5BcmFiaWM7XHJcbiAgICBFZGl0TW9kZWwuSXNIaWRkZW4gPSBSZXN1bHRNb2RlbC5FZGl0SXNIaWRkZW47XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRIZWxwQ2VudGVyRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkVkaXRIZWxwQ2VudGVyKEVkaXRNb2RlbClcclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIEhlbHBDZW50ZXJcclxuICBzaG93RGVsZXRlSGVscENlbnRlck1vZGFsKGhlbHBDZW50ZXJJRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUhlbHBDZW50ZXJJZCA9IGhlbHBDZW50ZXJJRDtcclxuXHJcbiAgICAvL2FycmF5IHNlbnQgdG8gc2VydmljZSBmdW5jdGlvblxyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBwYXJhbUFycmF5LnB1c2godGhpcy5kZWxldGVIZWxwQ2VudGVySWQpO1xyXG5cclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZUhlbHBDZW50ZXI7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuU2VydmljZVN1Ym1pdE1vZGVsID0gcGFyYW1BcnJheTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5kZWxldGVDb250cm9sTG9hZGVkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93TW9kYWwoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVIZWxwQ2VudGVyID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSGVscENlbnRlclNlcnZpY2UuRGVsZXRlSGVscENlbnRlcihpZCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjwhLS0gUGFnZSBDb250ZW50IC0tPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCAoT25DaGFuZ2UpPVwic2VhcmNoQ2xpZW50U2lkZSgkZXZlbnQpXCIgW29wdGlvbnNdPVwic2VhcmNoVGV4dEJveFwiIFtncm91cF09XCJIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJQYXJlbnRJZFRleHRCb3hcIiBbZ3JvdXBdPVwiSGVscENlbnRlckZvcm1cIiBbaGlkZGVuXT1cInRydWVcIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJBZGRcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2hvd0FkZEhlbHBDZW50ZXJNb2RhbChBZGRIZWxwQ2VudGVyTW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cIiBmYSBmYS1wbHVzXCI+PC9pPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGl0bGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZXNjcmlwdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlciBtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZpc2libGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXIgbWluLXctNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBJdGVtIG9mIGNsaWVudFNpZGVQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiU2F2ZU5hbWUoSXRlbS50aXRsZVN0cilcIiBbcm91dGVyTGlua109XCJbJy9BZG1pbi9IZWxwQ2VudGVyL1RoaXJkTGV2ZWwnLEl0ZW0uaURfR1VJRF1cIlxyXG4gICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiIGNsYXNzPVwidGV4dC1kYXJrXCI+e3tJdGVtLnRpdGxlU3RyfX08L2E+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7SXRlbS5kZXNjcmlwdGlvblN0cn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiSXRlbS5pc0hpZGRlbjtlbHNlIG90aGVyX2NvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJfY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0VkaXRIZWxwQ2VudGVyTW9kYWwoSXRlbS5pRF9HVUlELEVkaXRIZWxwQ2VudGVyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBpZD1cImJ0blJlc2V0UGFzc1wiIChjbGljayk9XCJzaG93RGVsZXRlSGVscENlbnRlck1vZGFsKEl0ZW0uaURfR1VJRClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImNsaWVudFNpZGVQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPCEtLWVuZDo6IGxpc3QtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldEhlbHBDZW50ZXJJdGVtTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJIZWxwQ2VudGVyUGFnaW5nXCIgW2dyb3VwXT1cIkhlbHBDZW50ZXJGb3JtXCIgI0hlbHBDZW50ZXJQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS1hZGQgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNBZGRIZWxwQ2VudGVyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhlbHBDZW50ZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiQWRkSGVscENlbnRlckZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkFkZFRpdGxlXCIgW2dyb3VwXT1cIkFkZEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cIkFkZERlc2NyaXB0aW9uXCIgW2dyb3VwXT1cIkFkZEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJBZGRJc0hpZGRlblwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUhlbHBDZW50ZXJNb2RhbCBpZD1cIkNsb3NlQWRkSGVscENlbnRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtICBtZS0zXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1FZGl0IE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjRWRpdEhlbHBDZW50ZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhlbHBDZW50ZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJFZGl0VGl0bGVcIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWEgW29wdGlvbnNdPVwiRWRpdERlc2NyaXB0aW9uXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiRWRpdElzSGlkZGVuXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRIZWxwQ2VudGVyTW9kYWwgaWQ9XCJDbG9zZUVkaXRIZWxwQ2VudGVyTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLWRlbGV0ZSBNb2RhbC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cImRlbGV0ZUNvbnRyb2xMb2FkZWRcIiBbb3B0aW9uc109XCJEZWxldGVDb25maXJtYXRpb25PcHRpb25zXCIgaWQ9XCJDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIiAjQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuXHJcblxyXG5cclxuIl19