@bnsights/bbsf-admin-portal 1.0.18 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bnsights-bbsf-admin-portal-1.0.21.tgz +0 -0
- package/bundles/bnsights-bbsf-admin-portal.umd.js +203 -123
- package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
- package/esm2015/lib/Pages/ActiveDirectories/active-directory/active-directory.component.js +1 -1
- package/esm2015/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.js +63 -23
- package/esm2015/lib/Pages/anonymouslayout/activation/activation.component.js +1 -1
- package/esm2015/lib/Pages/anonymouslayout/error/error.component.js +1 -1
- package/esm2015/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.js +1 -1
- package/esm2015/lib/Pages/anonymouslayout/rest-password/rest-password.component.js +1 -1
- package/esm2015/lib/Pages/anonymouslayout/upload-license/upload-license.component.js +1 -1
- package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +1 -1
- package/esm2015/lib/Pages/departments/department/department.component.js +1 -1
- package/esm2015/lib/Pages/departments/department-info/department-info.component.js +1 -1
- package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +1 -1
- package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +1 -1
- package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +1 -1
- package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +1 -1
- package/esm2015/lib/Pages/jobs/jobs/jobs.component.js +1 -1
- package/esm2015/lib/Pages/license/license/license.component.js +1 -1
- package/esm2015/lib/Pages/localizations/localizations.component.js +2 -2
- package/esm2015/lib/Pages/logs/log/log.component.js +1 -1
- package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +1 -1
- package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +1 -1
- package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +1 -1
- package/esm2015/lib/Pages/notifications/add/add.component.js +1 -1
- package/esm2015/lib/Pages/notifications/edit/edit.component.js +1 -1
- package/esm2015/lib/Pages/notifications/edit-email/edit-email.component.js +1 -1
- package/esm2015/lib/Pages/notifications/edit-sms/edit-sms.component.js +1 -1
- package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +1 -1
- package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +1 -1
- package/esm2015/lib/Pages/notifications/templates/templates.component.js +1 -1
- package/esm2015/lib/Pages/providers/provider/provider.component.js +1 -1
- package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +1 -1
- package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +1 -1
- package/esm2015/lib/Pages/roles/permissions/permissions.component.js +1 -1
- package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +1 -1
- package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +1 -1
- package/esm2015/lib/Pages/sectors/sector/sector.component.js +1 -1
- package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +1 -1
- package/esm2015/lib/Pages/users/users.component.js +1 -1
- package/esm2015/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.js +1 -1
- package/esm2015/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.js +1 -1
- package/esm2015/lib/Pages/workflows/instance-info/instance-info.component.js +1 -1
- package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +1 -1
- package/esm2015/lib/Pages/workflows/version-info/version-info.component.js +1 -1
- package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +1 -1
- package/fesm2015/bnsights-bbsf-admin-portal.js +203 -123
- package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
- package/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.d.ts +1 -0
- package/package.json +2 -2
- package/src/lib/assets/sass/custom-styles.scss +0 -3
- package/bnsights-bbsf-admin-portal-1.0.18.tgz +0 -0
package/esm2015/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.js
CHANGED
|
@@ -56,40 +56,43 @@ export class ActiveDirectoryAddComponent {
|
|
|
56
56
|
//Add Active directory functions
|
|
57
57
|
this.getAddADModel = () => {
|
|
58
58
|
let paramArray = [];
|
|
59
|
-
let
|
|
59
|
+
let resultModel = this.addActiveDirectoryForm.value;
|
|
60
60
|
//console.log(ResultModel);
|
|
61
61
|
let AddModel = new ActiveDirectoryAddEditModel();
|
|
62
|
-
AddModel.ConnectionName =
|
|
63
|
-
AddModel.ADTypeItemID =
|
|
64
|
-
AddModel.PermissionSetID =
|
|
65
|
-
AddModel.LangKey =
|
|
66
|
-
AddModel.WelcomeTemplateID =
|
|
67
|
-
AddModel.ImagesFileProviderName =
|
|
68
|
-
AddModel.MarkAsInactive =
|
|
69
|
-
AddModel.AddToDailyJob =
|
|
62
|
+
AddModel.ConnectionName = resultModel.addName;
|
|
63
|
+
AddModel.ADTypeItemID = resultModel.addTypeOptions != null ? Number(resultModel.addTypeOptions) : null;
|
|
64
|
+
AddModel.PermissionSetID = resultModel.addPermissionSet != null ? Number(resultModel.addPermissionSet) : null;
|
|
65
|
+
AddModel.LangKey = resultModel.addLanguage;
|
|
66
|
+
AddModel.WelcomeTemplateID = resultModel.addWelcomeMsgTemp != null ? Number(resultModel.addWelcomeMsgTemp) : null;
|
|
67
|
+
AddModel.ImagesFileProviderName = resultModel.addFileProvider;
|
|
68
|
+
AddModel.MarkAsInactive = resultModel.addMarkInactive;
|
|
69
|
+
AddModel.AddToDailyJob = resultModel.addDailyJob;
|
|
70
70
|
if (this.selectedType == Number(ADType.Windows)) {
|
|
71
71
|
AddModel.Identifier = this.identifier;
|
|
72
|
-
AddModel.Domain =
|
|
73
|
-
AddModel.SamAccount =
|
|
74
|
-
AddModel.Password =
|
|
75
|
-
AddModel.ShowBuiltInGroups =
|
|
76
|
-
AddModel.ADWindowsTypeItemID =
|
|
72
|
+
AddModel.Domain = resultModel.addDomain;
|
|
73
|
+
AddModel.SamAccount = resultModel.addSamAccount;
|
|
74
|
+
AddModel.Password = resultModel.addPassword;
|
|
75
|
+
AddModel.ShowBuiltInGroups = resultModel.addShowBuiltInGroups;
|
|
76
|
+
AddModel.ADWindowsTypeItemID = resultModel.addWindowsTypeOptions != null ? Number(resultModel.addWindowsTypeOptions) : null;
|
|
77
77
|
}
|
|
78
78
|
else {
|
|
79
|
-
AddModel.TenantID =
|
|
80
|
-
AddModel.ClientID =
|
|
81
|
-
AddModel.ClientSecret =
|
|
79
|
+
AddModel.TenantID = resultModel.addTenantID;
|
|
80
|
+
AddModel.ClientID = resultModel.addClientID;
|
|
81
|
+
AddModel.ClientSecret = resultModel.addClientSecret;
|
|
82
82
|
}
|
|
83
83
|
for (let j = 0; j < this.addMappingsCount; j++) {
|
|
84
|
-
let addMAppingType =
|
|
84
|
+
let addMAppingType = resultModel["ADMappingType" + j];
|
|
85
85
|
if (addMAppingType == undefined)
|
|
86
86
|
continue;
|
|
87
|
-
let editMAppingProperty =
|
|
88
|
-
let editMAppingPropertyName =
|
|
87
|
+
let editMAppingProperty = resultModel["ADMappingProperty" + j];
|
|
88
|
+
let editMAppingPropertyName = resultModel["ADMappingPropertyName" + j];
|
|
89
89
|
let adMAppingObj = new ADMappingModel();
|
|
90
90
|
adMAppingObj.ADMappingTypeItemID = Number(addMAppingType);
|
|
91
91
|
adMAppingObj.BBSFPropertyName = editMAppingProperty;
|
|
92
92
|
adMAppingObj.ADPropertyName = editMAppingPropertyName;
|
|
93
|
+
let adMAppingIncludeInUpdate = resultModel["ADMappingIncludeUpdate" + j];
|
|
94
|
+
let adMAppingHiddenIncludeInUpdate = resultModel["ADMappingHiddenIncludeUpdate" + j];
|
|
95
|
+
adMAppingObj.IncludeInUpdate = adMAppingIncludeInUpdate == undefined ? adMAppingHiddenIncludeInUpdate : adMAppingIncludeInUpdate;
|
|
93
96
|
AddModel.ADMappings.push(adMAppingObj);
|
|
94
97
|
}
|
|
95
98
|
paramArray.push(AddModel);
|
|
@@ -238,7 +241,12 @@ export class ActiveDirectoryAddComponent {
|
|
|
238
241
|
ADMappingIncludeUpdate.Name = "ADMappingIncludeUpdate" + i;
|
|
239
242
|
ADMappingIncludeUpdate.Value = ADMappings[i].includeInUpdate;
|
|
240
243
|
ADMappingIncludeUpdate.IsDisabled = true;
|
|
241
|
-
|
|
244
|
+
let ADMappingHiddenIncludeUpdate = new TextBoxOptions();
|
|
245
|
+
ADMappingHiddenIncludeUpdate.Name = "ADMappingHiddenIncludeUpdate" + i;
|
|
246
|
+
ADMappingHiddenIncludeUpdate.HideLabel = true;
|
|
247
|
+
ADMappingHiddenIncludeUpdate.Type = InputType.Text;
|
|
248
|
+
ADMappingHiddenIncludeUpdate.Value = ADMappings[i].includeInUpdate;
|
|
249
|
+
objectMappingOptions.push(ADMappingType, ADMappingProperty, ADMappingPropertyName, ADMappingIncludeUpdate, ADMappingHiddenIncludeUpdate);
|
|
242
250
|
ADMappingOptions.push(objectMappingOptions);
|
|
243
251
|
ADMappingCount += 1;
|
|
244
252
|
}
|
|
@@ -253,6 +261,38 @@ export class ActiveDirectoryAddComponent {
|
|
|
253
261
|
}
|
|
254
262
|
}
|
|
255
263
|
}
|
|
264
|
+
addADMapping() {
|
|
265
|
+
let index = this.addMappingsCount;
|
|
266
|
+
let objectMappingOptions = [];
|
|
267
|
+
let ADMappingType = new DropdownOptions();
|
|
268
|
+
ADMappingType.Name = "ADMappingType" + index;
|
|
269
|
+
ADMappingType.HideLabel = true;
|
|
270
|
+
ADMappingType.SingleSelection = true;
|
|
271
|
+
ADMappingType.ViewType = ControlLayout.Horizontal;
|
|
272
|
+
ADMappingType.DataSource = this.mappingTypesList;
|
|
273
|
+
let ADMappingProperty = new DropdownOptions();
|
|
274
|
+
ADMappingProperty.Name = "ADMappingProperty" + index;
|
|
275
|
+
ADMappingProperty.HideLabel = true;
|
|
276
|
+
ADMappingProperty.SingleSelection = true;
|
|
277
|
+
ADMappingProperty.ViewType = ControlLayout.Horizontal;
|
|
278
|
+
ADMappingProperty.DataSource = this.mappingPropertiesList;
|
|
279
|
+
let ADMappingPropertyName = new TextBoxOptions();
|
|
280
|
+
ADMappingPropertyName.Name = "ADMappingPropertyName" + index;
|
|
281
|
+
ADMappingPropertyName.HideLabel = true;
|
|
282
|
+
ADMappingPropertyName.Type = InputType.Text;
|
|
283
|
+
ADMappingPropertyName.IsRequired = false;
|
|
284
|
+
ADMappingPropertyName.ViewType = ControlLayout.Horizontal;
|
|
285
|
+
let ADMappingIncludeUpdate = new CheckBoxOptions();
|
|
286
|
+
ADMappingIncludeUpdate.Name = "ADMappingIncludeUpdate" + index;
|
|
287
|
+
ADMappingIncludeUpdate.Value = true;
|
|
288
|
+
let ADMappingHiddenIncludeUpdate = new TextBoxOptions();
|
|
289
|
+
ADMappingHiddenIncludeUpdate.Name = "ADMappingHiddenIncludeUpdate" + index;
|
|
290
|
+
ADMappingHiddenIncludeUpdate.HideLabel = true;
|
|
291
|
+
ADMappingHiddenIncludeUpdate.Type = InputType.Text;
|
|
292
|
+
objectMappingOptions.push(ADMappingType, ADMappingProperty, ADMappingPropertyName, ADMappingIncludeUpdate, ADMappingHiddenIncludeUpdate);
|
|
293
|
+
this.addMappingsOptions.push(objectMappingOptions);
|
|
294
|
+
this.addMappingsCount += 1;
|
|
295
|
+
}
|
|
256
296
|
//AD windows on type change (OU/Group)
|
|
257
297
|
windowsTypeChange(typeValue) {
|
|
258
298
|
if (typeValue == Number(ADWindowsType.Group)) {
|
|
@@ -468,7 +508,7 @@ export class ActiveDirectoryAddComponent {
|
|
|
468
508
|
}
|
|
469
509
|
}
|
|
470
510
|
ActiveDirectoryAddComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ActiveDirectoryAddComponent, deps: [{ token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i2.BBSFTranslateService }, { token: i3.ActiveDirectoryService }, { token: i4.Router }, { token: i2.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
471
|
-
ActiveDirectoryAddComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ActiveDirectoryAddComponent, selector: "lib-active-directory-add", viewQueries: [{ propertyName: "adTypeControl", first: true, predicate: ["adTypeControl"], descendants: true }, { propertyName: "adDomainControl", first: true, predicate: ["adDomainControl"], descendants: true }, { propertyName: "adWindowsTypeControl", first: true, predicate: ["adWindowsTypeControl"], descendants: true }, { propertyName: "tenantIDControl", first: true, predicate: ["tenantIDControl"], descendants: true }, { propertyName: "clientIDControl", first: true, predicate: ["clientIDControl"], descendants: true }, { propertyName: "clientSecretControl", first: true, predicate: ["clientSecretControl"], descendants: true }], ngImport: i0, template: "\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"stepper stepper-pills stepper-column d-flex flex-column flex-xl-row flex-row-fluid \" id=\"kt_create_account_stepper\">\r\n <div class=\"d-flex justify-content-center rounded justify-content-xl-start flex-row-auto me-9 card\">\r\n <div class=\"card-body px-6 px-lg-10 px-xxl-15 py-20\">\r\n <div class=\"stepper-nav\">\r\n <div class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 1 }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">1</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory\")}}</h3>\r\n\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab1Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showWindowsControls\" class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 2 && showWindowsControls}\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">2</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory_SelectContainer\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab2Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"stepper-item\" [ngClass]=\"{current: (currentStep$.value === formsCount ) }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">{{formsCount}}</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"Options\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab3Note\")}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n <div class=\"card d-flex flex-row-fluid flex-center rounded\">\r\n <div class=\"p-20 w-100 card-body\" *ngIf=\"isAddFormLoaded\">\r\n <BBSF-Form [options]=\"addActiveDirectoryFormOptions\">\r\n <div class=\"current\">\r\n <ng-container *ngIf=\"currentStep$.value === 1\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adTypeControl [options]=\"addTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"typeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div *ngIf=\"showWindowsControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adWindowsTypeControl [options]=\"addWindowsTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"windowsTypeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #adDomainControl [options]=\"addDomain\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n <div *ngIf=\"errorIsFound\" class=\"text-danger\">{{validationError}}</div>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addSamAccount\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addPassword\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\" *ngIf=\"addShowBuiltInGroupsVisible\">\r\n <BBSF-Toggleslide [options]=\"addShowBuiltInGroups\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showAzureControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #tenantIDControl [options]=\"addTenantID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientIDControl [options]=\"addClientID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientSecretControl [options]=\"addClientSecret\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === 2 && showWindowsControls\">\r\n <div id=\"treeDataContainer\" *ngIf=\"treeDataLoaded\">\r\n\r\n\r\n <!--------Helllllllllllllllllllo---------->\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;\" matTreeNodePadding>\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n\r\n <mat-checkbox class=\"checklist-leaf-node\" [checked]=\"selected === node.Index\" (change)=\"setIdentifier($event,node)\" [disabled]=\"node.selectable?false:true\">\r\n {{node.name}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding>\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\" class=\"btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-1 \">\r\n <i *ngIf=\"treeControl.isExpanded(node)\" class=\"fas fa-chevron-down\"></i>\r\n <i *ngIf=\"!treeControl.isExpanded(node)\" class=\"fas fa-chevron-right\"></i>\r\n\r\n </button>\r\n <mat-checkbox [disabled]=\"node.selectable?false:true\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <div class=\"form-group\">\r\n <BBSF-TextBox [options]=\"addName\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addPermissionSet\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addLanguage\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addWelcomeMsgTemp\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addFileProvider\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addMarkInactive\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addDailyJob\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Type\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Property\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"ADProperty\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"IncludeInUpdate\")}}</th>\r\n <th class=\"min-w-50px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of addMappingsOptions;let i=index;\">\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[0]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[1]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger\" (click)=\"deleteADMapping(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"d-flex flex-stack pt-10\">\r\n <div class=\"mr-2\">\r\n <ng-container *ngIf=\"currentStep$.value !== 1\">\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-light-primary me-3\"\r\n (click)=\"prevStep()\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr063.svg'\"\r\n class=\"svg-icon svg-icon-4 me-1\"></span>\r\n {{utilityService.getResourceValue(\"Previous\")}}\r\n </button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"currentStep$.value !== formsCount\">\r\n <div>\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-primary me-3\"\r\n (click)=\"nextStep()\">\r\n <span class=\"indicator-label\">\r\n <ng-container *ngIf=\"currentStep$.value < formsCount\">\r\n {{utilityService.getResourceValue(\"Next\")}} {{ \" \" }}\r\n <span [inlineSVG]=\"'./src/assets/images/arr064.svg'\"\r\n class=\"svg-icon svg-icon-3 ms-2 me-0\"></span>\r\n </ng-container>\r\n\r\n </span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <button type=\"submit\" class=\"btn btn-lg btn-primary me-3\">\r\n {{utilityService.getResourceValue(\"Submit\")}}\r\n </button>\r\n\r\n </ng-container>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n</div>\r\n", components: [{ type: i5.ɵv, selector: "BBSF-Form", inputs: ["options"] }, { type: i5.ɵh, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i5.ɵd, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i5.ɵj, selector: "BBSF-Toggleslide", inputs: ["group", "options"] }, { type: i6.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i5.ɵg, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { type: i6.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { type: i6.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { type: i6.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
|
|
511
|
+
ActiveDirectoryAddComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ActiveDirectoryAddComponent, selector: "lib-active-directory-add", viewQueries: [{ propertyName: "adTypeControl", first: true, predicate: ["adTypeControl"], descendants: true }, { propertyName: "adDomainControl", first: true, predicate: ["adDomainControl"], descendants: true }, { propertyName: "adWindowsTypeControl", first: true, predicate: ["adWindowsTypeControl"], descendants: true }, { propertyName: "tenantIDControl", first: true, predicate: ["tenantIDControl"], descendants: true }, { propertyName: "clientIDControl", first: true, predicate: ["clientIDControl"], descendants: true }, { propertyName: "clientSecretControl", first: true, predicate: ["clientSecretControl"], descendants: true }], ngImport: i0, template: "\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"stepper stepper-pills stepper-column d-flex flex-column flex-xl-row flex-row-fluid \" id=\"kt_create_account_stepper\">\r\n <div class=\"d-flex justify-content-center rounded justify-content-xl-start flex-row-auto me-9 card\">\r\n <div class=\"card-body px-6 px-lg-10 px-xxl-15 py-20\">\r\n <div class=\"stepper-nav\">\r\n <div class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 1 }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">1</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory\")}}</h3>\r\n\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab1Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showWindowsControls\" class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 2 && showWindowsControls}\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">2</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory_SelectContainer\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab2Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"stepper-item\" [ngClass]=\"{current: (currentStep$.value === formsCount ) }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">{{formsCount}}</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"Options\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab3Note\")}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n <div class=\"card d-flex flex-row-fluid flex-center rounded\">\r\n <div class=\"p-20 w-100 card-body\" *ngIf=\"isAddFormLoaded\">\r\n <BBSF-Form [options]=\"addActiveDirectoryFormOptions\">\r\n <div class=\"current\">\r\n <ng-container *ngIf=\"currentStep$.value === 1\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adTypeControl [options]=\"addTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"typeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div *ngIf=\"showWindowsControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adWindowsTypeControl [options]=\"addWindowsTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"windowsTypeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #adDomainControl [options]=\"addDomain\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n <div *ngIf=\"errorIsFound\" class=\"text-danger\">{{validationError}}</div>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addSamAccount\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addPassword\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\" *ngIf=\"addShowBuiltInGroupsVisible\">\r\n <BBSF-Toggleslide [options]=\"addShowBuiltInGroups\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showAzureControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #tenantIDControl [options]=\"addTenantID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientIDControl [options]=\"addClientID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientSecretControl [options]=\"addClientSecret\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === 2 && showWindowsControls\">\r\n <div id=\"treeDataContainer\" *ngIf=\"treeDataLoaded\">\r\n\r\n\r\n <!--------Helllllllllllllllllllo---------->\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;\" matTreeNodePadding>\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n\r\n <mat-checkbox class=\"checklist-leaf-node\" [checked]=\"selected === node.Index\" (change)=\"setIdentifier($event,node)\" [disabled]=\"node.selectable?false:true\">\r\n {{node.name}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding>\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\" class=\"btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-1 \">\r\n <i *ngIf=\"treeControl.isExpanded(node)\" class=\"fas fa-chevron-down\"></i>\r\n <i *ngIf=\"!treeControl.isExpanded(node)\" class=\"fas fa-chevron-right\"></i>\r\n\r\n </button>\r\n <mat-checkbox [disabled]=\"node.selectable?false:true\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <div class=\"form-group\">\r\n <BBSF-TextBox [options]=\"addName\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addPermissionSet\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addLanguage\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addWelcomeMsgTemp\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addFileProvider\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addMarkInactive\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addDailyJob\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Type\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Property\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"ADProperty\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"IncludeInUpdate\")}}</th>\r\n <th class=\"min-w-50px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of addMappingsOptions;let i=index;\">\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[0]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[1]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-CheckBox>\r\n <!--Hidden include in update value-->\r\n <BBSF-TextBox [options]=\"option[4]\" [group]=\"addActiveDirectoryForm\" [hidden]=\"true\">\r\n </BBSF-TextBox>\r\n </td>\r\n\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger\" (click)=\"deleteADMapping(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addADMapping()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"d-flex flex-stack pt-10\">\r\n <div class=\"mr-2\">\r\n <ng-container *ngIf=\"currentStep$.value !== 1\">\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-light-primary me-3\"\r\n (click)=\"prevStep()\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr063.svg'\"\r\n class=\"svg-icon svg-icon-4 me-1\"></span>\r\n {{utilityService.getResourceValue(\"Previous\")}}\r\n </button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"currentStep$.value !== formsCount\">\r\n <div>\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-primary me-3\"\r\n (click)=\"nextStep()\">\r\n <span class=\"indicator-label\">\r\n <ng-container *ngIf=\"currentStep$.value < formsCount\">\r\n {{utilityService.getResourceValue(\"Next\")}} {{ \" \" }}\r\n <span [inlineSVG]=\"'./src/assets/images/arr064.svg'\"\r\n class=\"svg-icon svg-icon-3 ms-2 me-0\"></span>\r\n </ng-container>\r\n\r\n </span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <button type=\"submit\" class=\"btn btn-lg btn-primary me-3\">\r\n {{utilityService.getResourceValue(\"Submit\")}}\r\n </button>\r\n\r\n </ng-container>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n</div>\r\n", components: [{ type: i5.FormComponent, selector: "BBSF-Form", inputs: ["options"] }, { type: i5.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i5.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i5.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i6.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i5.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { type: i6.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { type: i6.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { type: i6.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
|
|
472
512
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ActiveDirectoryAddComponent, decorators: [{
|
|
473
513
|
type: Component,
|
|
474
514
|
args: [{
|
|
@@ -494,4 +534,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
494
534
|
type: ViewChild,
|
|
495
535
|
args: ['clientSecretControl', { static: false }]
|
|
496
536
|
}] } });
|
|
497
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWRpcmVjdG9yeS1hZGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9BY3RpdmVEaXJlY3Rvcmllcy9hY3RpdmUtZGlyZWN0b3J5LWFkZC9hY3RpdmUtZGlyZWN0b3J5LWFkZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnktYWRkL2FjdGl2ZS1kaXJlY3RvcnktYWRkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXRKLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FB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Q0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBQ0QsWUFBWTtJQUNaLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7eUhBdmhCVSwyQkFBMkI7NkdBQTNCLDJCQUEyQiwyckJDdkN4QyxzaVpBd1BBOzRGRGpOYSwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsV0FBVyxFQUFFLHVDQUF1QztpQkFDckQ7b1FBZ0NnRCxhQUFhO3NCQUEzRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBVUksZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ08sb0JBQW9CO3NCQUF6RSxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFrQkgsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ00sbUJBQW1CO3NCQUF2RSxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRvZ2dsZVNsaWRlT3B0aW9ucywgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBJbnB1dFR5cGUsIFRleHRCb3hPcHRpb25zLCBDaGVja0JveE9wdGlvbnMsIEZvcm1PcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBBY3RpdmVEaXJlY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0FjdGl2ZURpcmVjdG9yeVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQURNb2RlbHMvQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsJztcclxuaW1wb3J0IHsgQURNYXBwaW5nTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0FETW9kZWxzL0FETWFwcGluZ01vZGVsJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSwgTWF0VHJlZUZsYXR0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveCwgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IEFEVHlwZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9FbnVtcy9BRFR5cGUnO1xyXG5pbXBvcnQgeyBBRFdpbmRvd3NUeXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL0VudW1zL0FEV2luZG93c1R5cGUnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkxpc3RDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvRHJvcGRvd25MaXN0L0Ryb3Bkb3duTGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0Ym94Q29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1RleHRCb3gvVGV4dEJveC5jb21wb25lbnQnO1xyXG5cclxuaW50ZXJmYWNlIEFETm9kZSB7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGNoaWxkcmVuPzogQUROb2RlW107XHJcbiAgZGF0YTogc3RyaW5nO1xyXG4gIHNlbGVjdGFibGU6IGJvb2xlYW47XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIHN0YXRlOiBhbnk7XHJcbiAgSW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuLyoqIEZsYXQgbm9kZSB3aXRoIGV4cGFuZGFibGUgYW5kIGxldmVsIGluZm9ybWF0aW9uICovXHJcbmludGVyZmFjZSBGbGF0Tm9kZSB7XHJcbiAgZXhwYW5kYWJsZTogYm9vbGVhbjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGV2ZWw6IG51bWJlcjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWN0aXZlLWRpcmVjdG9yeS1hZGQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3RpdmUtZGlyZWN0b3J5LWFkZC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjdGl2ZURpcmVjdG9yeUFkZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvL3dpemFyZFxyXG4gIGZvcm1zQ291bnQgPSAyO1xyXG4gIGN1cnJlbnRTdGVwJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDEpO1xyXG4gIC8vd2l6YXJkXHJcbiAgLy9SZXF1aXJlZCBMaXN0c1xyXG4gIHBlcm1pc3Npb25TZXRMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGxhbmd1YWdlc0xpc3Q6IGFueVtdID0gW107XHJcbiAgd2VsY29tZU1zZ1RlbXBMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGFkVHlwZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGZpbGVQcm92aWRlcnM6IGFueVtdID0gW107XHJcbiAgbWFwcGluZ1Byb3BlcnRpZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIG1hcHBpbmdUeXBlc0xpc3Q6IGFueVtdID0gW107XHJcbiAgLy9XaW5kb3dzXHJcbiAgYWRXaW5kb3dzVHlwZXM6IGFueVtdID0gW107O1xyXG5cclxuICAvL0FkZCBNb2RlbCBDb250cm9sc1xyXG4gIGFkZEFjdGl2ZURpcmVjdG9yeUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBhZGRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9uczogRm9ybU9wdGlvbnM7XHJcbiAgYWRkVHlwZU9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGROYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRQZXJtaXNzaW9uU2V0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkTGFuZ3VhZ2U6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRXZWxjb21lTXNnVGVtcDogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZEZpbGVQcm92aWRlcjogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZE1hcmtJbmFjdGl2ZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZERhaWx5Sm9iOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkTWFwcGluZ3NPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIGFkZE1hcHBpbmdzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgc2VsZWN0ZWRUeXBlOiBudW1iZXI7XHJcbiAgaXNBZGRGb3JtTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnYWRUeXBlQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBhZFR5cGVDb250cm9sOiBEcm9wZG93bkxpc3RDb21wb25lbnQ7XHJcblxyXG4gIC8vLy8vLy8vL1N0YXJ0IFdpbmRvd3MgY29udHJvbHMvLy8vL1xyXG4gIGFkZERvbWFpbjogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkU2FtQWNjb3VudDogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkUGFzc3dvcmQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFdpbmRvd3NUeXBlT3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZFNob3dCdWlsdEluR3JvdXBzOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkU2hvd0J1aWx0SW5Hcm91cHNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1dpbmRvd3NDb250cm9sczogYm9vbGVhbjtcclxuICBAVmlld0NoaWxkKCdhZERvbWFpbkNvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWREb21haW5Db250cm9sOiBUZXh0Ym94Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2FkV2luZG93c1R5cGVDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGFkV2luZG93c1R5cGVDb250cm9sOiBEcm9wZG93bkxpc3RDb21wb25lbnQ7XHJcbiAgLy9UcmVlXHJcbiAgdmFsaWRhdGlvbkVycm9yOiBzdHJpbmc7XHJcbiAgZXJyb3JJc0ZvdW5kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdHJlZU5vZGVEYXRhOiBhbnk7XHJcbiAgdHJlZUNvbnRyb2w6IGFueTtcclxuICB0cmVlRmxhdHRlbmVyOiBhbnk7XHJcbiAgZGF0YVNvdXJjZTogYW55O1xyXG4gIGhhc0NoaWxkOiBhbnk7XHJcbiAgdHJlZURhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZCA9IC0xO1xyXG4gIGlkZW50aWZpZXI6IHN0cmluZyA9IFwiXCI7XHJcbiAgaWRlbnRpZmllck5hbWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgICAvLy8vLy8vLy9FbmQgV2luZG93cyBjb250cm9scy8vLy8vXHJcbiAgLy9BenVyZVxyXG4gIGFkZFRlbmFudElEOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRDbGllbnRJRDogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkQ2xpZW50U2VjcmV0OiBUZXh0Qm94T3B0aW9ucztcclxuICBAVmlld0NoaWxkKCd0ZW5hbnRJRENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGVuYW50SURDb250cm9sOiBUZXh0Ym94Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2NsaWVudElEQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBjbGllbnRJRENvbnRyb2w6IFRleHRib3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnY2xpZW50U2VjcmV0Q29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBjbGllbnRTZWNyZXRDb250cm9sOiBUZXh0Ym94Q29tcG9uZW50O1xyXG5cclxuICBzaG93QXp1cmVDb250cm9sczogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSwgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIEFjdGl2ZURpcmVjdG9yeVNlcnZpY2U6IEFjdGl2ZURpcmVjdG9yeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRBY3RpdmVEaXJlY3RvcnlcIik7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQURDb25uZWN0aW9uXCIpLCBwYXRoOiAnL0FkbWluL0FEQ29ubmVjdGlvbicsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9Jbml0IHBhZ2VcclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIHRoaXMuQWN0aXZlRGlyZWN0b3J5U2VydmljZS5sb2FkZHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IHJldWx0T2JqID0gcmVzdWx0IGFzIGFueVxyXG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXRMaXN0ID0gcmV1bHRPYmoucGVybWlzc2lvblNldHM7XHJcbiAgICAgIHRoaXMuYWRUeXBlc0xpc3QgPSByZXVsdE9iai5hZFR5cGVzO1xyXG4gICAgICB0aGlzLmFkV2luZG93c1R5cGVzID0gcmV1bHRPYmouYWRXaW5kb3dzVHlwZXM7XHJcbiAgICAgIHRoaXMubGFuZ3VhZ2VzTGlzdCA9IHJldWx0T2JqLmxhbmd1YWdlcztcclxuICAgICAgdGhpcy53ZWxjb21lTXNnVGVtcExpc3QgPSByZXVsdE9iai50ZW1wbGF0ZXM7XHJcbiAgICAgIHRoaXMuZmlsZVByb3ZpZGVycyA9IHJldWx0T2JqLmZpbGVQcm92aWRlcnM7XHJcblxyXG4gICAgICB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdCA9IHJldWx0T2JqLm1hcHBpbmdQcm9wZXJ0aWVzO1xyXG4gICAgICB0aGlzLm1hcHBpbmdUeXBlc0xpc3QgPSByZXVsdE9iai5tYXBwaW5nVHlwZXM7XHJcblxyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVxyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZEFETW9kZWw7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRBREZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zLk9uU3VjY2Vzc0hhbmRsZXIgPSB0aGlzLmFkZEFET25TdWNjZXNzO1xyXG5cclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5OYW1lID0gXCJhZGRUeXBlT3B0aW9uc1wiXHJcbiAgICAgIHRoaXMuYWRkVHlwZU9wdGlvbnMuTGFiZWxLZXkgPSBcIlR5cGVcIlxyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsXHJcbiAgICAgIHRoaXMuYWRkVHlwZU9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuYWRUeXBlc0xpc3RcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuYWRkVHlwZU9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmFkZE5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGROYW1lLk5hbWUgPSBcImFkZE5hbWVcIjtcclxuICAgICAgdGhpcy5hZGROYW1lLkxhYmVsS2V5ID0gXCJOYW1lXCI7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0Lk5hbWUgPSBcImFkZFBlcm1pc3Npb25TZXRcIlxyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIlxyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQuRGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvblNldExpc3RcclxuICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldC5QbGFjZWhvbGRlciA9IFwiUGVybWlzc2lvblNldFwiO1xyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLk5hbWUgPSBcImFkZExhbmd1YWdlXCJcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5MYWJlbEtleSA9IFwiTGFuZ3VhZ2VcIlxyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLkRhdGFTb3VyY2UgPSB0aGlzLmxhbmd1YWdlc0xpc3RcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuYWRkTGFuZ3VhZ2UuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLk5hbWUgPSBcImFkZFdlbGNvbWVNc2dUZW1wXCJcclxuICAgICAgdGhpcy5hZGRXZWxjb21lTXNnVGVtcC5MYWJlbEtleSA9IFwiV2VsY29tZU1zZ1RlbXBsYXRlXCJcclxuICAgICAgdGhpcy5hZGRXZWxjb21lTXNnVGVtcC5EYXRhU291cmNlID0gdGhpcy53ZWxjb21lTXNnVGVtcExpc3RcclxuICAgICAgdGhpcy5hZGRXZWxjb21lTXNnVGVtcC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRXZWxjb21lTXNnVGVtcC5QbGFjZWhvbGRlciA9IFwiV2VsY29tZU1zZ1RlbXBsYXRlXCI7XHJcblxyXG4gICAgICB0aGlzLmFkZEZpbGVQcm92aWRlciA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRGaWxlUHJvdmlkZXIuTmFtZSA9IFwiYWRkRmlsZVByb3ZpZGVyXCJcclxuICAgICAgdGhpcy5hZGRGaWxlUHJvdmlkZXIuTGFiZWxLZXkgPSBcIkZpbGVQcm92aWRlclwiXHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLkRhdGFTb3VyY2UgPSB0aGlzLmZpbGVQcm92aWRlcnNcclxuICAgICAgdGhpcy5hZGRGaWxlUHJvdmlkZXIuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRGaWxlUHJvdmlkZXIuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZEZpbGVQcm92aWRlci5QbGFjZWhvbGRlciA9IFwiV2VsY29tZU1zZ1RlbXBsYXRlXCI7XHJcblxyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRNYXJrSW5hY3RpdmUuTmFtZSA9IFwiYWRkTWFya0luYWN0aXZlXCJcclxuICAgICAgdGhpcy5hZGRNYXJrSW5hY3RpdmUuTGFiZWxLZXkgPSBcIk1hcmtBc0luYWN0aXZlXCJcclxuICAgICAgdGhpcy5hZGRNYXJrSW5hY3RpdmUuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hZGRNYXJrSW5hY3RpdmUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG4gICAgICB0aGlzLmFkZERhaWx5Sm9iID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZERhaWx5Sm9iLk5hbWUgPSBcImFkZERhaWx5Sm9iXCJcclxuICAgICAgdGhpcy5hZGREYWlseUpvYi5MYWJlbEtleSA9IFwiQWRkVG9EYWlseUpvYlwiXHJcbiAgICAgIHRoaXMuYWRkRGFpbHlKb2IuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hZGREYWlseUpvYi5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIC8vc2V0IEFEIG1hcHBpbmdcclxuICAgICAgbGV0IGRhdGE6IGFueSA9IHRoaXMuZ2V0QURNYXBwaW5nT3B0aW9ucyhyZXVsdE9iai5hZE1hcHBpbmdzKTtcclxuICAgICAgdGhpcy5hZGRNYXBwaW5nc09wdGlvbnMgPSBkYXRhWzBdO1xyXG4gICAgICB0aGlzLmFkZE1hcHBpbmdzQ291bnQgPSBkYXRhWzFdO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0FkZEZvcm1Mb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LCA1MCk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0FkZCBBY3RpdmUgZGlyZWN0b3J5IGZ1bmN0aW9uc1xyXG4gIGdldEFkZEFETW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS52YWx1ZTtcclxuICAgIC8vY29uc29sZS5sb2coUmVzdWx0TW9kZWwpO1xyXG4gICAgbGV0IEFkZE1vZGVsOiBBY3RpdmVEaXJlY3RvcnlBZGRFZGl0TW9kZWwgPSBuZXcgQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsKCk7XHJcbiAgICBBZGRNb2RlbC5Db25uZWN0aW9uTmFtZSA9IFJlc3VsdE1vZGVsLmFkZE5hbWU7XHJcbiAgICBBZGRNb2RlbC5BRFR5cGVJdGVtSUQgPSBSZXN1bHRNb2RlbC5hZGRUeXBlT3B0aW9ucyAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLmFkZFR5cGVPcHRpb25zKSA6IG51bGxcclxuICAgIEFkZE1vZGVsLlBlcm1pc3Npb25TZXRJRCA9IFJlc3VsdE1vZGVsLmFkZFBlcm1pc3Npb25TZXQgIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5hZGRQZXJtaXNzaW9uU2V0KSA6IG51bGxcclxuICAgIEFkZE1vZGVsLkxhbmdLZXkgPSBSZXN1bHRNb2RlbC5hZGRMYW5ndWFnZTtcclxuICAgIEFkZE1vZGVsLldlbGNvbWVUZW1wbGF0ZUlEID0gUmVzdWx0TW9kZWwuYWRkV2VsY29tZU1zZ1RlbXAgIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5hZGRXZWxjb21lTXNnVGVtcCkgOiBudWxsXHJcbiAgICBBZGRNb2RlbC5JbWFnZXNGaWxlUHJvdmlkZXJOYW1lID0gUmVzdWx0TW9kZWwuYWRkRmlsZVByb3ZpZGVyXHJcbiAgICBBZGRNb2RlbC5NYXJrQXNJbmFjdGl2ZSA9IFJlc3VsdE1vZGVsLmFkZE1hcmtJbmFjdGl2ZVxyXG4gICAgQWRkTW9kZWwuQWRkVG9EYWlseUpvYiA9IFJlc3VsdE1vZGVsLmFkZERhaWx5Sm9iXHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09IE51bWJlcihBRFR5cGUuV2luZG93cykpIHtcclxuICAgICAgQWRkTW9kZWwuSWRlbnRpZmllciA9IHRoaXMuaWRlbnRpZmllcjtcclxuICAgICAgQWRkTW9kZWwuRG9tYWluID0gUmVzdWx0TW9kZWwuYWRkRG9tYWluO1xyXG4gICAgICBBZGRNb2RlbC5TYW1BY2NvdW50ID0gUmVzdWx0TW9kZWwuYWRkU2FtQWNjb3VudDtcclxuICAgICAgQWRkTW9kZWwuUGFzc3dvcmQgPSBSZXN1bHRNb2RlbC5hZGRQYXNzd29yZDtcclxuICAgICAgQWRkTW9kZWwuU2hvd0J1aWx0SW5Hcm91cHMgPSBSZXN1bHRNb2RlbC5hZGRTaG93QnVpbHRJbkdyb3VwcztcclxuICAgICAgQWRkTW9kZWwuQURXaW5kb3dzVHlwZUl0ZW1JRCA9IFJlc3VsdE1vZGVsLmFkZFdpbmRvd3NUeXBlT3B0aW9ucyAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLmFkZFdpbmRvd3NUeXBlT3B0aW9ucykgOiBudWxsXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgQWRkTW9kZWwuVGVuYW50SUQgPSBSZXN1bHRNb2RlbC5hZGRUZW5hbnRJRDtcclxuICAgICAgQWRkTW9kZWwuQ2xpZW50SUQgPSBSZXN1bHRNb2RlbC5hZGRDbGllbnRJRDtcclxuICAgICAgQWRkTW9kZWwuQ2xpZW50U2VjcmV0ID0gUmVzdWx0TW9kZWwuYWRkQ2xpZW50U2VjcmV0O1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmFkZE1hcHBpbmdzQ291bnQ7IGorKykge1xyXG4gICAgICBsZXQgYWRkTUFwcGluZ1R5cGUgPSBSZXN1bHRNb2RlbFtcIkFETWFwcGluZ1R5cGVcIiArIGpdO1xyXG4gICAgICBpZiAoYWRkTUFwcGluZ1R5cGUgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICBsZXQgZWRpdE1BcHBpbmdQcm9wZXJ0eSA9IFJlc3VsdE1vZGVsW1wiQURNYXBwaW5nUHJvcGVydHlcIiArIGpdO1xyXG4gICAgICBsZXQgZWRpdE1BcHBpbmdQcm9wZXJ0eU5hbWUgPSBSZXN1bHRNb2RlbFtcIkFETWFwcGluZ1Byb3BlcnR5TmFtZVwiICsgal07XHJcblxyXG4gICAgICBsZXQgYWRNQXBwaW5nT2JqOiBBRE1hcHBpbmdNb2RlbCA9IG5ldyBBRE1hcHBpbmdNb2RlbCgpO1xyXG4gICAgICBhZE1BcHBpbmdPYmouQURNYXBwaW5nVHlwZUl0ZW1JRCA9IE51bWJlcihhZGRNQXBwaW5nVHlwZSk7XHJcbiAgICAgIGFkTUFwcGluZ09iai5CQlNGUHJvcGVydHlOYW1lID0gZWRpdE1BcHBpbmdQcm9wZXJ0eTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkFEUHJvcGVydHlOYW1lID0gZWRpdE1BcHBpbmdQcm9wZXJ0eU5hbWU7XHJcbiAgICAgIEFkZE1vZGVsLkFETWFwcGluZ3MucHVzaChhZE1BcHBpbmdPYmopO1xyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuICBnZXRBZGRBREZ1bmN0aW9uID0gKGFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkFjdGl2ZURpcmVjdG9yeVNlcnZpY2UuYWRkQWN0aXZlRGlyZWN0b3J5KGFkZE1vZGVsKVxyXG4gIH1cclxuICBhZGRBRE9uU3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL0FEQ29ubmVjdGlvbiddKTtcclxuICB9XHJcblxyXG4gIC8vTWFwcGluZyBmdW5jdGlvbnNcclxuICBnZXRBRE1hcHBpbmdPcHRpb25zKEFETWFwcGluZ3M6IGFueVtdKSB7XHJcbiAgICBsZXQgQURNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBBRE1hcHBpbmdDb3VudDogbnVtYmVyID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQURNYXBwaW5ncy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgbGV0IG9iamVjdE1hcHBpbmdPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIGxldCBzZWxlY3RlZFR5cGUgPSB0aGlzLm1hcHBpbmdUeXBlc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBBRE1hcHBpbmdzW2ldLmFkTWFwcGluZ1R5cGVJdGVtSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLk5hbWUgPSBcIkFETWFwcGluZ1R5cGVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nVHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFR5cGU7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuRGF0YVNvdXJjZSA9IHRoaXMubWFwcGluZ1R5cGVzTGlzdDtcclxuICAgICAgQURNYXBwaW5nVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgbGV0IHNlbGVjdGVkUHJvcGVydHkgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IEFETWFwcGluZ3NbaV0uYmJzZlByb3BlcnR5TmFtZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5Lk5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRQcm9wZXJ0eTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5LkRhdGFTb3VyY2UgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1Byb3BlcnR5TmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuTmFtZSA9IFwiQURNYXBwaW5nUHJvcGVydHlOYW1lXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlZhbHVlID0gQURNYXBwaW5nc1tpXS5hZFByb3BlcnR5TmFtZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICBsZXQgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZS5OYW1lID0gXCJBRE1hcHBpbmdJbmNsdWRlVXBkYXRlXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLlZhbHVlID0gQURNYXBwaW5nc1tpXS5pbmNsdWRlSW5VcGRhdGU7XHJcbiAgICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUuSXNEaXNhYmxlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgb2JqZWN0TWFwcGluZ09wdGlvbnMucHVzaChBRE1hcHBpbmdUeXBlLCBBRE1hcHBpbmdQcm9wZXJ0eSwgQURNYXBwaW5nUHJvcGVydHlOYW1lLCBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlKTtcclxuICAgICAgQURNYXBwaW5nT3B0aW9ucy5wdXNoKG9iamVjdE1hcHBpbmdPcHRpb25zKTtcclxuICAgICAgQURNYXBwaW5nQ291bnQgKz0gMTtcclxuXHJcbiAgICB9XHJcbiAgICByZXR1cm4gW0FETWFwcGluZ09wdGlvbnMsIEFETWFwcGluZ0NvdW50XTtcclxuICB9XHJcbiAgZGVsZXRlQURNYXBwaW5nKGRlbGV0ZWRBRE1BcHBpbmc6IGFueSkge1xyXG4gICAgbGV0IGRlbGV0ZWRNYXBwaW5nSW5kZXg6IG51bWJlciA9IHRoaXMuYWRkTWFwcGluZ3NPcHRpb25zLmluZGV4T2YoZGVsZXRlZEFETUFwcGluZyk7XHJcbiAgICBpZiAoZGVsZXRlZE1hcHBpbmdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5hZGRNYXBwaW5nc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRNYXBwaW5nSW5kZXgsIDEpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRBRE1BcHBpbmcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkQURNQXBwaW5nW2ldLk5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0FEIHdpbmRvd3Mgb24gdHlwZSBjaGFuZ2UgKE9VL0dyb3VwKVxyXG4gIHdpbmRvd3NUeXBlQ2hhbmdlKHR5cGVWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVWYWx1ZSA9PSBOdW1iZXIoQURXaW5kb3dzVHlwZS5Hcm91cCkpIHtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3VwcyA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3Vwcy5OYW1lID0gXCJhZGRTaG93QnVpbHRJbkdyb3Vwc1wiXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHMuTGFiZWxWYWx1ZSA9IFwiU2hvd0J1aWx0SW5Hcm91cHNcIlxyXG4gICAgICB0aGlzLmFkZFNob3dCdWlsdEluR3JvdXBzLkxhYmVsS2V5ID0gXCJTaG93QnVpbHRJbkdyb3Vwc1wiXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHMuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3Vwcy5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0ucmVtb3ZlQ29udHJvbChcImFkZFNob3dCdWlsdEluR3JvdXBzXCIpO1xyXG4gICAgICB0aGlzLmFkZFNob3dCdWlsdEluR3JvdXBzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9BRCBvbiB0eXBlIGNoYW5nZXMgKFdpbmRvd3MvQXp1cmUpXHJcbiAgdHlwZUNoYW5nZSh0eXBlVmFsdWUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gdHlwZVZhbHVlO1xyXG4gICAgaWYgKHR5cGVWYWx1ZSA9PSBOdW1iZXIoQURUeXBlLldpbmRvd3MpKSB7XHJcbiAgICAgIHRoaXMuZm9ybXNDb3VudCA9IDM7XHJcbiAgICAgIC8vUmVtb3ZlIEF6dXJlIGNvbnRyb2xzIGlmIGZvdW5kXHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKFwiYWRkVGVuYW50SURcIik7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKFwiYWRkQ2xpZW50SURcIik7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKFwiYWRkQ2xpZW50U2VjcmV0XCIpO1xyXG5cclxuICAgICAgLy9Jbml0aWFsaXplIHdpbmRvd3MgY29udHJvbHNcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLk5hbWUgPSBcImFkZFdpbmRvd3NUeXBlT3B0aW9uc1wiXHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLkxhYmVsS2V5ID0gXCJXaW5kb3dzVHlwZVwiXHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsXHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLkRhdGFTb3VyY2UgPSB0aGlzLmFkV2luZG93c1R5cGVzXHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmFkZFdpbmRvd3NUeXBlT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkRG9tYWluID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRG9tYWluLk5hbWUgPSBcImFkZERvbWFpblwiO1xyXG4gICAgICB0aGlzLmFkZERvbWFpbi5MYWJlbEtleSA9IFwiRG9tYWluXCI7XHJcbiAgICAgIHRoaXMuYWRkRG9tYWluLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGREb21haW4uVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZERvbWFpbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkU2FtQWNjb3VudCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQuTmFtZSA9IFwiYWRkU2FtQWNjb3VudFwiO1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQuTGFiZWxLZXkgPSBcIlNhbUFjY291bnRcIjtcclxuICAgICAgdGhpcy5hZGRTYW1BY2NvdW50LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGRTYW1BY2NvdW50LlZhbHVlID0gbnVsbDtcclxuXHJcbiAgICAgIHRoaXMuYWRkUGFzc3dvcmQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5OYW1lID0gXCJhZGRQYXNzd29yZFwiO1xyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkLkxhYmVsS2V5ID0gXCJQYXNzd29yZFwiO1xyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkLlR5cGUgPSBJbnB1dFR5cGUuUGFzc3dvcmQ7XHJcbiAgICAgIHRoaXMuYWRkUGFzc3dvcmQuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkLlJlbW92ZURlZmF1bHRQYXNzd29yZFZhbGlkYXRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5zaG93QXp1cmVDb250cm9scyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dXaW5kb3dzQ29udHJvbHMgPSB0cnVlO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybXNDb3VudCA9IDI7XHJcbiAgICAgIC8vUmVtb3ZlIHdpbmRvd3MgY29udHJvbHMgaWYgZm91bmRcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGREb21haW5cIik7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKFwiYWRkU2FtQWNjb3VudFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRQYXNzd29yZFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRTaG93QnVpbHRJbkdyb3Vwc1wiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRXaW5kb3dzVHlwZU9wdGlvbnNcIik7XHJcblxyXG4gICAgICB0aGlzLmFkZFRlbmFudElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkVGVuYW50SUQuTmFtZSA9IFwiYWRkVGVuYW50SURcIjtcclxuICAgICAgdGhpcy5hZGRUZW5hbnRJRC5MYWJlbEtleSA9IFwiVGVuYW50SURcIjtcclxuICAgICAgdGhpcy5hZGRUZW5hbnRJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuYWRkVGVuYW50SUQuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZFRlbmFudElELklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hZGRDbGllbnRJRCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZENsaWVudElELk5hbWUgPSBcImFkZENsaWVudElEXCI7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQuTGFiZWxLZXkgPSBcIkNsaWVudElEXCI7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmFkZENsaWVudElELlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5hZGRDbGllbnRJRC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0Lk5hbWUgPSBcImFkZENsaWVudFNlY3JldFwiO1xyXG4gICAgICB0aGlzLmFkZENsaWVudFNlY3JldC5MYWJlbEtleSA9IFwiQ2xpZW50U2VjcmV0XCI7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGRDbGllbnRTZWNyZXQuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZENsaWVudFNlY3JldC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0F6dXJlQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dXaW5kb3dzQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vV2l6YXJkIGZ1bmN0aW9uc1xyXG4gIG5leHRTdGVwKCkge1xyXG4gICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwJC52YWx1ZTtcclxuICAgIGNvbnN0IG5leHRTdGVwID0gY3VycmVudFN0ZXAgKyAxO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnZhbHVlO1xyXG5cclxuICAgIC8vQ2hlY2sgcmVxdWlyZWQgZmllbGRzIGZvciBuZXh0IHN0ZXBcclxuICAgIGlmIChjdXJyZW50U3RlcCA9PSAxKSB7XHJcbiAgICAgIGlmIChSZXN1bHRNb2RlbC5hZGRUeXBlT3B0aW9ucykge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVHlwZSA9PSBOdW1iZXIoQURUeXBlLldpbmRvd3MpKSB7XHJcbiAgICAgICAgICBpZiAoIVJlc3VsdE1vZGVsLmFkZERvbWFpbiB8fCAhUmVzdWx0TW9kZWwuYWRkV2luZG93c1R5cGVPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWREb21haW5Db250cm9sLklzVmFsaWQoKTtcclxuICAgICAgICAgICAgdGhpcy5hZFdpbmRvd3NUeXBlQ29udHJvbC5Jc1ZhbGlkKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIVJlc3VsdE1vZGVsLmFkZFRlbmFudElEIHx8ICFSZXN1bHRNb2RlbC5hZGRDbGllbnRJRCB8fCAhUmVzdWx0TW9kZWwuYWRkQ2xpZW50U2VjcmV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50SURDb250cm9sLklzVmFsaWQoKTtcclxuICAgICAgICAgICAgdGhpcy5jbGllbnRJRENvbnRyb2wuSXNWYWxpZCgpO1xyXG4gICAgICAgICAgICB0aGlzLmNsaWVudFNlY3JldENvbnRyb2wuSXNWYWxpZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWRUeXBlQ29udHJvbC5Jc1ZhbGlkKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09IE51bWJlcihBRFR5cGUuV2luZG93cykpIHtcclxuXHJcbiAgICAgIGlmIChuZXh0U3RlcCA9PT0gMiAmJiBjdXJyZW50U3RlcCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMudHJlZURhdGFMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgLy9pZiAoIXRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5nZXQoJ2FkZERvbWFpbicpLnZhbGlkIHx8ICF0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0uZ2V0KCdhZGRUeXBlT3B0aW9ucycpLnZhbGlkKSB7XHJcbiAgICAgICAgLy8gIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhSZXN1bHRNb2RlbCk7XHJcblxyXG4gICAgICAgIGxldCBBZGRNb2RlbDogQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsID0gbmV3IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCgpO1xyXG4gICAgICAgIEFkZE1vZGVsLkNvbm5lY3Rpb25OYW1lID0gUmVzdWx0TW9kZWwuYWRkTmFtZTtcclxuICAgICAgICBBZGRNb2RlbC5Eb21haW4gPSBSZXN1bHRNb2RlbC5hZGREb21haW47XHJcbiAgICAgICAgbGV0IEFEVHlwZXMgPSBSZXN1bHRNb2RlbC5hZGRXaW5kb3dzVHlwZU9wdGlvbnM7XHJcbiAgICAgICAgbGV0IHR5cGVJdGVtSUQ6IG51bWJlcjtcclxuICAgICAgICB0eXBlSXRlbUlEID0gTnVtYmVyKEFEVHlwZXMpO1xyXG4gICAgICAgIEFkZE1vZGVsLkFEV2luZG93c1R5cGVJdGVtSUQgPSBBRFR5cGVzICE9IG51bGwgPyB0eXBlSXRlbUlEIDogbnVsbDtcclxuICAgICAgICBBZGRNb2RlbC5TYW1BY2NvdW50ID0gUmVzdWx0TW9kZWwuYWRkU2FtQWNjb3VudDtcclxuICAgICAgICBBZGRNb2RlbC5QYXNzd29yZCA9IFJlc3VsdE1vZGVsLmFkZFBhc3N3b3JkO1xyXG4gICAgICAgIEFkZE1vZGVsLlNob3dCdWlsdEluR3JvdXBzID0gUmVzdWx0TW9kZWwuYWRkU2hvd0J1aWx0SW5Hcm91cHM7XHJcblxyXG5cclxuICAgICAgICB0aGlzLkFjdGl2ZURpcmVjdG9yeVNlcnZpY2UuY2hlY2tWYWxpZGF0aW9uYW5kR2V0RGF0YShBZGRNb2RlbCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIHRoaXMsIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgICAgIHZhciBkYXRhID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgICAgIGlmIChkYXRhLnZhbCkge1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVOb2RlRGF0YSA9IGRhdGEudHJlZURhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JJc0ZvdW5kID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgICAgICAgICBsZXQgX3RyYW5zZm9ybWVyID0gKG5vZGU6IEFETm9kZSwgbGV2ZWw6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiAhIW5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogbm9kZS50ZXh0LFxyXG4gICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogbm9kZS5pY29uLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0YWJsZTogbm9kZS5zZWxlY3RhYmxlLFxyXG4gICAgICAgICAgICAgICAgSW5kZXg6IG5vZGUuSW5kZXgsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBub2RlLmRhdGFcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4oXHJcbiAgICAgICAgICAgICAgbm9kZSA9PiBub2RlLmxldmVsLCBub2RlID0+IG5vZGUuZXhwYW5kYWJsZSk7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxyXG4gICAgICAgICAgICAgIF90cmFuc2Zvcm1lciwgbm9kZSA9PiBub2RlLmxldmVsLCBub2RlID0+IG5vZGUuZXhwYW5kYWJsZSwgbm9kZSA9PiBub2RlLmNoaWxkcmVuKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSh0aGlzLnRyZWVDb250cm9sLCB0aGlzLnRyZWVGbGF0dGVuZXIpO1xyXG4gICAgICAgICAgICBsZXQganNvbkRhdGEgPSBKU09OLnBhcnNlKHRoaXMudHJlZU5vZGVEYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBqc29uRGF0YTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBub2RlOiBGbGF0Tm9kZSkgPT4gbm9kZS5leHBhbmRhYmxlO1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVEYXRhTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAkLm5leHQobmV4dFN0ZXApO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvciA9IGRhdGEuZXJyb3I7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JJc0ZvdW5kID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZSgpO1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9mb3Jtc1xyXG4gICAgICAgIC8vIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9mb3JtLXZhbGlkYXRpb25cclxuXHJcbiAgICAgICAgLy8gdmFsaWRhdGUgdGhlIGZvcm0gYW5kIHVzZSBiZWxvdyBmdW5jdGlvbiB0byBzdG9wIHRoZSB3aXphcmQncyBzdGVwXHJcbiAgICAgICAgLy8gd2l6YXJkT2JqLnN0b3AoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5pZGVudGlmaWVyID09IFwiXCIgfHwgdGhpcy5pZGVudGlmaWVyID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlXYXJuaW5nTWVzc2FnZSh0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWQUxfQXRMZWFzdE9uZUlzUmVxdWlyZWRcIikpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWRkTmFtZS5WYWx1ZSA9IHRoaXMuaWRlbnRpZmllck5hbWUgKyBcIiBjb25uZWN0aW9uXCI7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwJC5uZXh0KG5leHRTdGVwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRTdGVwJC5uZXh0KG5leHRTdGVwKTtcclxuICAgIH1cclxuICB9O1xyXG4gIHByZXZTdGVwKCkge1xyXG4gICAgbGV0IGN1cnJlbnRTdGVwID0gdGhpcy5jdXJyZW50U3RlcCQudmFsdWU7XHJcbiAgICBsZXQgcHJldlN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwJC52YWx1ZSAtIDE7XHJcbiAgICBpZiAocHJldlN0ZXAgPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50U3RlcCQubmV4dChwcmV2U3RlcCk7XHJcbiAgfVxyXG5cclxuICBzZXRJZGVudGlmaWVyKG9iajogTWF0Q2hlY2tib3hDaGFuZ2UsIHNlbGVjdGVkTm9kZTogQUROb2RlKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZE5vZGUuSW5kZXg7XHJcbiAgICBpZiAob2JqLmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5pZGVudGlmaWVyID0gc2VsZWN0ZWROb2RlLmRhdGE7XHJcbiAgICAgIHRoaXMuaWRlbnRpZmllck5hbWUgPSBzZWxlY3RlZE5vZGUudGV4dDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXJOYW1lID0gXCJcIjtcclxuICAgIH1cclxuICB9XHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiXHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInN0ZXBwZXIgc3RlcHBlci1waWxscyBzdGVwcGVyLWNvbHVtbiBkLWZsZXggZmxleC1jb2x1bW4gZmxleC14bC1yb3cgZmxleC1yb3ctZmx1aWQgXCIgaWQ9XCJrdF9jcmVhdGVfYWNjb3VudF9zdGVwcGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgcm91bmRlZCBqdXN0aWZ5LWNvbnRlbnQteGwtc3RhcnQgZmxleC1yb3ctYXV0byBtZS05IGNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC02IHB4LWxnLTEwIHB4LXh4bC0xNSBweS0yMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLW5hdlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaXRlbVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBjdXJyZW50U3RlcCQudmFsdWUgPT09IDEgfVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1saW5lIHctNDBweFwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaWNvbiB3LTQwcHggaC00MHB4XCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzdGVwcGVyLWNoZWNrIGZhcyBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItbnVtYmVyXCI+MTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cInN0ZXBwZXItdGl0bGVcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlcIil9fTwvaDM+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWRlc2MgZnctYm9sZFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZURpcmVjdG9yeV9UYWIxTm90ZVwiKX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dXaW5kb3dzQ29udHJvbHNcIiBjbGFzcz1cInN0ZXBwZXItaXRlbVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBjdXJyZW50U3RlcCQudmFsdWUgPT09IDIgJiYgc2hvd1dpbmRvd3NDb250cm9sc31cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGluZSB3LTQwcHhcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWljb24gdy00MHB4IGgtNDBweFwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic3RlcHBlci1jaGVjayBmYXMgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLW51bWJlclwiPjI8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGFiZWxcIj5cclxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJzdGVwcGVyLXRpdGxlXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5X1NlbGVjdENvbnRhaW5lclwiKX19PC9oMz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1kZXNjIGZ3LWJvbGRcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlfVGFiMk5vdGVcIil9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWl0ZW1cIiBbbmdDbGFzc109XCJ7Y3VycmVudDogKGN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gZm9ybXNDb3VudCApIH1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGluZSB3LTQwcHhcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWljb24gdy00MHB4IGgtNDBweFwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic3RlcHBlci1jaGVjayBmYXMgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLW51bWJlclwiPnt7Zm9ybXNDb3VudH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwic3RlcHBlci10aXRsZVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk9wdGlvbnNcIil9fTwvaDM+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItZGVzYyBmdy1ib2xkXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5X1RhYjNOb3RlXCIpfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGQtZmxleCBmbGV4LXJvdy1mbHVpZCBmbGV4LWNlbnRlciByb3VuZGVkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwLTIwIHctMTAwIGNhcmQtYm9keVwiICpuZ0lmPVwiaXNBZGRGb3JtTG9hZGVkXCI+XHJcbiAgICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnJlbnRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2FkVHlwZUNvbnRyb2wgW29wdGlvbnNdPVwiYWRkVHlwZU9wdGlvbnNcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiIChPbkNoYW5nZSk9XCJ0eXBlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dXaW5kb3dzQ29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjYWRXaW5kb3dzVHlwZUNvbnRyb2wgW29wdGlvbnNdPVwiYWRkV2luZG93c1R5cGVPcHRpb25zXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIiAoT25DaGFuZ2UpPVwid2luZG93c1R5cGVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94ICNhZERvbWFpbkNvbnRyb2wgW29wdGlvbnNdPVwiYWRkRG9tYWluXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlcnJvcklzRm91bmRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+e3t2YWxpZGF0aW9uRXJyb3J9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZFNhbUFjY291bnRcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRQYXNzd29yZFwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiICpuZ0lmPVwiYWRkU2hvd0J1aWx0SW5Hcm91cHNWaXNpYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImFkZFNob3dCdWlsdEluR3JvdXBzXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBenVyZUNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94ICN0ZW5hbnRJRENvbnRyb2wgW29wdGlvbnNdPVwiYWRkVGVuYW50SURcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCAjY2xpZW50SURDb250cm9sIFtvcHRpb25zXT1cImFkZENsaWVudElEXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggI2NsaWVudFNlY3JldENvbnRyb2wgW29wdGlvbnNdPVwiYWRkQ2xpZW50U2VjcmV0XCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IDIgJiYgc2hvd1dpbmRvd3NDb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cmVlRGF0YUNvbnRhaW5lclwiICpuZ0lmPVwidHJlZURhdGFMb2FkZWRcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLUhlbGxsbGxsbGxsbGxsbGxsbGxsbG8tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlO1wiIG1hdFRyZWVOb2RlUGFkZGluZz5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHVzZSBhIGRpc2FibGVkIGJ1dHRvbiB0byBwcm92aWRlIHBhZGRpbmcgZm9yIHRyZWUgbGVhZiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImNoZWNrbGlzdC1sZWFmLW5vZGVcIiBbY2hlY2tlZF09XCJzZWxlY3RlZCA9PT0gbm9kZS5JbmRleFwiIChjaGFuZ2UpPVwic2V0SWRlbnRpZmllcigkZXZlbnQsbm9kZSlcIiBbZGlzYWJsZWRdPVwibm9kZS5zZWxlY3RhYmxlP2ZhbHNlOnRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7bm9kZS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cclxuICAgICAgICAgICAgICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7d2hlbjogaGFzQ2hpbGRcIiBtYXRUcmVlTm9kZVBhZGRpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRyZWVOb2RlVG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUb2dnbGUgJyArIG5vZGUubmFtZVwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1iZy1saWdodCBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnkgYnRuLXNtIG1lLTEgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIiBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiF0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXCIgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodFwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbZGlzYWJsZWRdPVwibm9kZS5zZWxlY3RhYmxlP2ZhbHNlOnRydWVcIj57e25vZGUubmFtZX19PC9tYXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC10cmVlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IGZvcm1zQ291bnRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGROYW1lXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkUGVybWlzc2lvblNldFwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkTGFuZ3VhZ2VcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZFdlbGNvbWVNc2dUZW1wXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRGaWxlUHJvdmlkZXJcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkTWFya0luYWN0aXZlXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkRGFpbHlKb2JcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFEUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluY2x1ZGVJblVwZGF0ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFkZE1hcHBpbmdzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlclwiIChjbGljayk9XCJkZWxldGVBRE1hcHBpbmcob3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiIGZhIGZhLXRyYXNoIGhpZGRlblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBwdC0xMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXItMlwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgIT09IDFcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZTdGVwKClcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjMuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBtZS0xXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcmV2aW91c1wiKX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgIT09IGZvcm1zQ291bnRcIj5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxnIGJ0bi1wcmltYXJ5IG1lLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dFN0ZXAoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZGljYXRvci1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPCBmb3Jtc0NvdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOZXh0XCIpfX0ge3sgXCIgXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDY0LnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zIG1zLTIgbWUtMFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gZm9ybXNDb3VudFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTdWJtaXRcIil9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L0JCU0YtRm9ybT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|
|
537
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWRpcmVjdG9yeS1hZGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9BY3RpdmVEaXJlY3Rvcmllcy9hY3RpdmUtZGlyZWN0b3J5LWFkZC9hY3RpdmUtZGlyZWN0b3J5LWFkZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnktYWRkL2FjdGl2ZS1kaXJlY3RvcnktYWRkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXRKLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7QUF5QmpFLE1BQU0sT0FBTywyQkFBMkI7SUFrRXRDLFlBQW9CLGVBQWdDLEVBQVMsY0FBOEIsRUFDakYsb0JBQTBDLEVBQVUsc0JBQThDLEVBQ2xHLE1BQWMsRUFBVSxxQkFBNEM7UUFGMUQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2pGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFBVSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ2xHLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBbkU5RSxRQUFRO1FBQ1IsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGlCQUFZLEdBQTRCLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ELFFBQVE7UUFDUixnQkFBZ0I7UUFDaEIsc0JBQWlCLEdBQVUsRUFBRSxDQUFDO1FBQzlCLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLHVCQUFrQixHQUFVLEVBQUUsQ0FBQztRQUMvQixnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQiwwQkFBcUIsR0FBVSxFQUFFLENBQUM7UUFDbEMscUJBQWdCLEdBQVUsRUFBRSxDQUFDO1FBQzdCLFNBQVM7UUFDVCxtQkFBYyxHQUFVLEVBQUUsQ0FBQztRQUUzQixvQkFBb0I7UUFDcEIsMkJBQXNCLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFVM0MsdUJBQWtCLEdBQVUsRUFBRSxDQUFDO1FBQy9CLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUU3QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQVNqQyxnQ0FBMkIsR0FBWSxLQUFLLENBQUM7UUFNN0MsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFNOUIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsYUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2QsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQWtJNUIsZ0NBQWdDO1FBQ2hDLGtCQUFhLEdBQUcsR0FBRyxFQUFFO1lBQ25CLElBQUksVUFBVSxHQUFVLEVBQUUsQ0FBQztZQUMzQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDO1lBQ3BELDJCQUEyQjtZQUMzQixJQUFJLFFBQVEsR0FBZ0MsSUFBSSwyQkFBMkIsRUFBRSxDQUFDO1lBQzlFLFFBQVEsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUM5QyxRQUFRLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7WUFDdEcsUUFBUSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtZQUM3RyxRQUFRLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUM7WUFDM0MsUUFBUSxDQUFDLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1lBQ2pILFFBQVEsQ0FBQyxzQkFBc0IsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFBO1lBQzdELFFBQVEsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQTtZQUNyRCxRQUFRLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUE7WUFFaEQsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQy9DLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDdEMsUUFBUSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO2dCQUN4QyxRQUFRLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7Z0JBQ2hELFFBQVEsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztnQkFDNUMsUUFBUSxDQUFDLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDOUQsUUFBUSxDQUFDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO2FBQzVIO2lCQUNJO2dCQUNILFFBQVEsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztnQkFDNUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDO2dCQUM1QyxRQUFRLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUM7YUFDckQ7WUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLGNBQWMsR0FBRyxXQUFXLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLGNBQWMsSUFBSSxTQUFTO29CQUM3QixTQUFTO2dCQUNYLElBQUksbUJBQW1CLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLHVCQUF1QixHQUFHLFdBQVcsQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFFdkUsSUFBSSxZQUFZLEdBQW1CLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ3hELFlBQVksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzFELFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQztnQkFDcEQsWUFBWSxDQUFDLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQztnQkFDdEQsSUFBSSx3QkFBd0IsR0FBRyxXQUFXLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLElBQUksOEJBQThCLEdBQUcsV0FBVyxDQUFDLDhCQUE4QixHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNyRixZQUFZLENBQUMsZUFBZSxHQUFHLHdCQUF3QixJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDO2dCQUVqSSxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUN4QztZQUNELFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUIsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFBO1FBQ0QscUJBQWdCLEdBQUcsQ0FBQyxRQUFRLEVBQW1CLEVBQUU7WUFDL0MsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDakUsQ0FBQyxDQUFBO1FBQ0QsbUJBQWMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQTtJQXhLRCxDQUFDO0lBdkQwQixDQUFDO0lBeUR0QixRQUFROztZQUNaLGVBQWUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3ZGLGVBQWUsQ0FBQyxlQUFlLEdBQUc7Z0JBQ2hDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7Z0JBQ2pILEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtnQkFDM0QsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUNqSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7YUFFNUQsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixDQUFDLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDO0tBQUE7SUFFRCxXQUFXO0lBQ1gsY0FBYztRQUNaLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMvRCxJQUFJLFFBQVEsR0FBRyxNQUFhLENBQUE7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUM5QyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDeEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBRTVDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUM7WUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7WUFFOUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFBO1lBQzFFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3pFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDakYsSUFBSSxDQUFDLDZCQUE2QixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFFMUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFBO1lBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQTtZQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFBO1lBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUE7WUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzdDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFFdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRS9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUE7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUE7WUFDaEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUE7WUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQztZQUNwRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUV4QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFBO1lBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQTtZQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFBO1lBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRW5DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUE7WUFDakQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQTtZQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQTtZQUMzRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLENBQUM7WUFFMUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFBO1lBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQTtZQUM5QyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFBO1lBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5QyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQztZQUV4RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQTtZQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQTtZQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztZQUV6RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxhQUFhLENBQUE7WUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFBO1lBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBRXJELGdCQUFnQjtZQUNoQixJQUFJLElBQUksR0FBUSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzlCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQXlERCxtQkFBbUI7SUFDbkIsbUJBQW1CLENBQUMsVUFBaUI7UUFDbkMsSUFBSSxnQkFBZ0IsR0FBVSxFQUFFLENBQUM7UUFDakMsSUFBSSxjQUFjLEdBQVcsQ0FBQyxDQUFDO1FBQy9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBRTFDLElBQUksb0JBQW9CLEdBQVUsRUFBRSxDQUFDO1lBRXJDLElBQUksYUFBYSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDMUMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hKLGFBQWEsQ0FBQyxJQUFJLEdBQUcsZUFBZSxHQUFHLENBQUMsQ0FBQztZQUN6QyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUMvQixhQUFhLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUNyQyxhQUFhLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztZQUMzQyxhQUFhLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUM7WUFDbEQsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDakQsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFFaEMsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzlDLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RKLGlCQUFpQixDQUFDLElBQUksR0FBRyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7WUFDakQsaUJBQWlCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNuQyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ3pDLGlCQUFpQixDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztZQUNuRCxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztZQUN0RCxpQkFBaUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQzFELGlCQUFpQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFHcEMsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ2pELHFCQUFxQixDQUFDLElBQUksR0FBRyx1QkFBdUIsR0FBRyxDQUFDLENBQUM7WUFDekQscUJBQXFCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN2QyxxQkFBcUIsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztZQUM1QyxxQkFBcUIsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUMzRCxxQkFBcUIsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3pDLHFCQUFxQixDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQzFELHFCQUFxQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFFeEMsSUFBSSxzQkFBc0IsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ25ELHNCQUFzQixDQUFDLElBQUksR0FBRyx3QkFBd0IsR0FBRyxDQUFDLENBQUM7WUFDM0Qsc0JBQXNCLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7WUFDN0Qsc0JBQXNCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUV6QyxJQUFJLDRCQUE0QixHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7WUFDeEQsNEJBQTRCLENBQUMsSUFBSSxHQUFHLDhCQUE4QixHQUFHLENBQUMsQ0FBQztZQUN2RSw0QkFBNEIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQzlDLDRCQUE0QixDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ25ELDRCQUE0QixDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1lBRW5FLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztZQUN6SSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUM1QyxjQUFjLElBQUksQ0FBQyxDQUFDO1NBRXJCO1FBQ0QsT0FBTyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxlQUFlLENBQUMsZ0JBQXFCO1FBQ25DLElBQUksbUJBQW1CLEdBQVcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BGLElBQUksbUJBQW1CLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN2RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNoRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JFO1NBQ0Y7SUFDSCxDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUVsQyxJQUFJLG9CQUFvQixHQUFVLEVBQUUsQ0FBQztRQUVyQyxJQUFJLGFBQWEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUMvQixhQUFhLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNyQyxhQUFhLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFDbEQsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFFakQsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzlDLGlCQUFpQixDQUFDLElBQUksR0FBRyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDckQsaUJBQWlCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNuQyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO1FBQ3RELGlCQUFpQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFHMUQsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2pELHFCQUFxQixDQUFDLElBQUksR0FBRyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDN0QscUJBQXFCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN2QyxxQkFBcUIsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUM1QyxxQkFBcUIsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLHFCQUFxQixDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO1FBRTFELElBQUksc0JBQXNCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNuRCxzQkFBc0IsQ0FBQyxJQUFJLEdBQUcsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQy9ELHNCQUFzQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFcEMsSUFBSSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ3hELDRCQUE0QixDQUFDLElBQUksR0FBRyw4QkFBOEIsR0FBRyxLQUFLLENBQUM7UUFDM0UsNEJBQTRCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUM5Qyw0QkFBNEIsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUVuRCxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLDRCQUE0QixDQUFDLENBQUM7UUFFekksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUM7SUFFN0IsQ0FBQztJQUdELHNDQUFzQztJQUN0QyxpQkFBaUIsQ0FBQyxTQUFTO1FBQ3pCLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFBO1lBQ3ZELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUE7WUFDMUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQTtZQUN4RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUM7WUFFOUQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQztTQUN6QzthQUNJO1lBQ0gsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLFVBQVUsQ0FBQyxTQUFTO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDcEIsZ0NBQWdDO1lBQ2hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFFN0QsNkJBQTZCO1lBQzdCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUE7WUFDekQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUE7WUFDbkQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFBO1lBQzlELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQTtZQUMzRCxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUNsRCxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ3BELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRTdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7WUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUVqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDO1lBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQztZQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUVoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztZQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQztZQUV4RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7U0FFakM7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLGtDQUFrQztZQUNsQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBRW5FLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7WUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUVuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztZQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFFbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1lBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQztZQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFFdkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDNUMsTUFBTSxRQUFRLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDO1FBRXBELHFDQUFxQztRQUNyQyxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUU7WUFDcEIsSUFBSSxXQUFXLENBQUMsY0FBYyxFQUFFO2dCQUM5QixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUU7d0JBQ2hFLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQy9CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDcEMsT0FBTztxQkFDUjtpQkFDRjtxQkFDSTtvQkFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFO3dCQUN4RixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ25DLE9BQU87cUJBQ1I7aUJBQ0Y7YUFDRjtpQkFDSTtnQkFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixPQUFPO2FBQ1I7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBRS9DLElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztnQkFFNUIsd0hBQXdIO2dCQUN4SCxXQUFXO2dCQUVYLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBRXpCLElBQUksUUFBUSxHQUFnQyxJQUFJLDJCQUEyQixFQUFFLENBQUM7Z0JBQzlFLFFBQVEsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztnQkFDOUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO2dCQUN4QyxJQUFJLE9BQU8sR0FBRyxXQUFXLENBQUMscUJBQXFCLENBQUM7Z0JBQ2hELElBQUksVUFBa0IsQ0FBQztnQkFDdkIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDN0IsUUFBUSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuRSxRQUFRLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7Z0JBQ2hELFFBQVEsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztnQkFDNUMsUUFBUSxDQUFDLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQztnQkFHOUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNuRixJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxJQUFJLEdBQUcsTUFBYSxDQUFDO29CQUN6QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7d0JBQ1osSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQzt3QkFDMUIscUJBQXFCO3dCQUNyQixJQUFJLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsRUFBRTs0QkFDakQsT0FBTztnQ0FDTCxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQ0FDdkQsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dDQUNmLEtBQUssRUFBRSxLQUFLO2dDQUNaLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQ0FDZixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0NBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQ0FDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJOzZCQUNoQixDQUFDO3dCQUNKLENBQUMsQ0FBQTt3QkFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZUFBZSxDQUNwQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQy9DLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDdkMsWUFBWSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3BGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDbEYsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQzt3QkFFaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQVMsRUFBRSxJQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7d0JBQy9ELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO3dCQUMzQixxQkFBcUI7d0JBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUVsQzt5QkFDSTt3QkFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO3FCQUMxQjtnQkFFSCxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQ3pDLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUMsQ0FBQyxDQUFDO2dCQUNILGlDQUFpQztnQkFDakMsMkNBQTJDO2dCQUUzQyxxRUFBcUU7Z0JBQ3JFLG9CQUFvQjthQUNyQjtpQkFDSTtnQkFDSCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxFQUFFO29CQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO29CQUMzRyxPQUFPO2lCQUNSO3FCQUNJO29CQUNILElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO29CQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbEM7YUFDRjtTQUNGO2FBQ0k7WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFBQSxDQUFDO0lBQ0YsUUFBUTtRQUNOLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQzFDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFzQixFQUFFLFlBQW9CO1FBQ3hELFFBQVEsQ0FBQztRQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO1NBQ3pDO2FBQ0k7WUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFDRCxZQUFZO0lBQ1osV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM5QyxDQUFDOzt5SEEza0JVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLDJyQkN2Q3hDLGduYUFpUUE7NEZEMU5hLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxXQUFXLEVBQUUsdUNBQXVDO2lCQUNyRDtvUUFnQ2dELGFBQWE7c0JBQTNELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFVSSxlQUFlO3NCQUEvRCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDTyxvQkFBb0I7c0JBQXpFLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQWtCSCxlQUFlO3NCQUEvRCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRSxlQUFlO3NCQUEvRCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDTSxtQkFBbUI7c0JBQXZFLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVG9nZ2xlU2xpZGVPcHRpb25zLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bk9wdGlvbnMsIElucHV0VHlwZSwgVGV4dEJveE9wdGlvbnMsIENoZWNrQm94T3B0aW9ucywgRm9ybU9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEFjdGl2ZURpcmVjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvQWN0aXZlRGlyZWN0b3J5U2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9BRE1vZGVscy9BY3RpdmVEaXJlY3RvcnlBZGRFZGl0TW9kZWwnO1xyXG5pbXBvcnQgeyBBRE1hcHBpbmdNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQURNb2RlbHMvQURNYXBwaW5nTW9kZWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94LCBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgQURUeXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL0VudW1zL0FEVHlwZSc7XHJcbmltcG9ydCB7IEFEV2luZG93c1R5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvQURXaW5kb3dzVHlwZSc7XHJcbmltcG9ydCB7IERyb3Bkb3duTGlzdENvbXBvbmVudCB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRib3hDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvVGV4dEJveC9UZXh0Qm94LmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgQUROb2RlIHtcclxuICB0ZXh0OiBzdHJpbmc7XHJcbiAgY2hpbGRyZW4/OiBBRE5vZGVbXTtcclxuICBkYXRhOiBzdHJpbmc7XHJcbiAgc2VsZWN0YWJsZTogYm9vbGVhbjtcclxuICBpY29uOiBzdHJpbmc7XHJcbiAgc3RhdGU6IGFueTtcclxuICBJbmRleDogbnVtYmVyO1xyXG59XHJcblxyXG4vKiogRmxhdCBub2RlIHdpdGggZXhwYW5kYWJsZSBhbmQgbGV2ZWwgaW5mb3JtYXRpb24gKi9cclxuaW50ZXJmYWNlIEZsYXROb2RlIHtcclxuICBleHBhbmRhYmxlOiBib29sZWFuO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBsZXZlbDogbnVtYmVyO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hY3RpdmUtZGlyZWN0b3J5LWFkZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FjdGl2ZS1kaXJlY3RvcnktYWRkLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aXZlRGlyZWN0b3J5QWRkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8vd2l6YXJkXHJcbiAgZm9ybXNDb3VudCA9IDI7XHJcbiAgY3VycmVudFN0ZXAkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoMSk7XHJcbiAgLy93aXphcmRcclxuICAvL1JlcXVpcmVkIExpc3RzXHJcbiAgcGVybWlzc2lvblNldExpc3Q6IGFueVtdID0gW107XHJcbiAgbGFuZ3VhZ2VzTGlzdDogYW55W10gPSBbXTtcclxuICB3ZWxjb21lTXNnVGVtcExpc3Q6IGFueVtdID0gW107XHJcbiAgYWRUeXBlc0xpc3Q6IGFueVtdID0gW107XHJcbiAgZmlsZVByb3ZpZGVyczogYW55W10gPSBbXTtcclxuICBtYXBwaW5nUHJvcGVydGllc0xpc3Q6IGFueVtdID0gW107XHJcbiAgbWFwcGluZ1R5cGVzTGlzdDogYW55W10gPSBbXTtcclxuICAvL1dpbmRvd3NcclxuICBhZFdpbmRvd3NUeXBlczogYW55W10gPSBbXTs7XHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucztcclxuICBhZGRUeXBlT3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZE5hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFBlcm1pc3Npb25TZXQ6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRMYW5ndWFnZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZFdlbGNvbWVNc2dUZW1wOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkRmlsZVByb3ZpZGVyOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkTWFya0luYWN0aXZlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkRGFpbHlKb2I6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBhZGRNYXBwaW5nc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgYWRkTWFwcGluZ3NDb3VudDogbnVtYmVyID0gMDtcclxuICBzZWxlY3RlZFR5cGU6IG51bWJlcjtcclxuICBpc0FkZEZvcm1Mb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdhZFR5cGVDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGFkVHlwZUNvbnRyb2w6IERyb3Bkb3duTGlzdENvbXBvbmVudDtcclxuXHJcbiAgLy8vLy8vLy8vU3RhcnQgV2luZG93cyBjb250cm9scy8vLy8vXHJcbiAgYWRkRG9tYWluOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRTYW1BY2NvdW50OiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRQYXNzd29yZDogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkV2luZG93c1R5cGVPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkU2hvd0J1aWx0SW5Hcm91cHM6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBhZGRTaG93QnVpbHRJbkdyb3Vwc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93V2luZG93c0NvbnRyb2xzOiBib29sZWFuO1xyXG4gIEBWaWV3Q2hpbGQoJ2FkRG9tYWluQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBhZERvbWFpbkNvbnRyb2w6IFRleHRib3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnYWRXaW5kb3dzVHlwZUNvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWRXaW5kb3dzVHlwZUNvbnRyb2w6IERyb3Bkb3duTGlzdENvbXBvbmVudDtcclxuICAvL1RyZWVcclxuICB2YWxpZGF0aW9uRXJyb3I6IHN0cmluZztcclxuICBlcnJvcklzRm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0cmVlTm9kZURhdGE6IGFueTtcclxuICB0cmVlQ29udHJvbDogYW55O1xyXG4gIHRyZWVGbGF0dGVuZXI6IGFueTtcclxuICBkYXRhU291cmNlOiBhbnk7XHJcbiAgaGFzQ2hpbGQ6IGFueTtcclxuICB0cmVlRGF0YUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkID0gLTE7XHJcbiAgaWRlbnRpZmllcjogc3RyaW5nID0gXCJcIjtcclxuICBpZGVudGlmaWVyTmFtZTogc3RyaW5nID0gXCJcIjtcclxuICAgIC8vLy8vLy8vL0VuZCBXaW5kb3dzIGNvbnRyb2xzLy8vLy9cclxuICAvL0F6dXJlXHJcbiAgYWRkVGVuYW50SUQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZENsaWVudElEOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRDbGllbnRTZWNyZXQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIEBWaWV3Q2hpbGQoJ3RlbmFudElEQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZW5hbnRJRENvbnRyb2w6IFRleHRib3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnY2xpZW50SURDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNsaWVudElEQ29udHJvbDogVGV4dGJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdjbGllbnRTZWNyZXRDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNsaWVudFNlY3JldENvbnRyb2w6IFRleHRib3hDb21wb25lbnQ7XHJcblxyXG4gIHNob3dBenVyZUNvbnRyb2xzOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgQWN0aXZlRGlyZWN0b3J5U2VydmljZTogQWN0aXZlRGlyZWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZEFjdGl2ZURpcmVjdG9yeVwiKTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBRENvbm5lY3Rpb25cIiksIHBhdGg6ICcvQWRtaW4vQURDb25uZWN0aW9uJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXQgcGFnZVxyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgdGhpcy5BY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmxvYWRkcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmV1bHRPYmogPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSByZXVsdE9iai5wZXJtaXNzaW9uU2V0cztcclxuICAgICAgdGhpcy5hZFR5cGVzTGlzdCA9IHJldWx0T2JqLmFkVHlwZXM7XHJcbiAgICAgIHRoaXMuYWRXaW5kb3dzVHlwZXMgPSByZXVsdE9iai5hZFdpbmRvd3NUeXBlcztcclxuICAgICAgdGhpcy5sYW5ndWFnZXNMaXN0ID0gcmV1bHRPYmoubGFuZ3VhZ2VzO1xyXG4gICAgICB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdCA9IHJldWx0T2JqLnRlbXBsYXRlcztcclxuICAgICAgdGhpcy5maWxlUHJvdmlkZXJzID0gcmV1bHRPYmouZmlsZVByb3ZpZGVycztcclxuXHJcbiAgICAgIHRoaXMubWFwcGluZ1Byb3BlcnRpZXNMaXN0ID0gcmV1bHRPYmoubWFwcGluZ1Byb3BlcnRpZXM7XHJcbiAgICAgIHRoaXMubWFwcGluZ1R5cGVzTGlzdCA9IHJldWx0T2JqLm1hcHBpbmdUeXBlcztcclxuXHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtXHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkQURNb2RlbDtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZEFERnVuY3Rpb247XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9IHRoaXMuYWRkQURPblN1Y2Nlc3M7XHJcblxyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLk5hbWUgPSBcImFkZFR5cGVPcHRpb25zXCJcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5MYWJlbEtleSA9IFwiVHlwZVwiXHJcbiAgICAgIHRoaXMuYWRkVHlwZU9wdGlvbnMuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWxcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5hZFR5cGVzTGlzdFxyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkVHlwZU9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZE5hbWUuTmFtZSA9IFwiYWRkTmFtZVwiO1xyXG4gICAgICB0aGlzLmFkZE5hbWUuTGFiZWxLZXkgPSBcIk5hbWVcIjtcclxuICAgICAgdGhpcy5hZGROYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGROYW1lLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5hZGROYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQuTmFtZSA9IFwiYWRkUGVybWlzc2lvblNldFwiXHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiXHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldC5EYXRhU291cmNlID0gdGhpcy5wZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0LlBsYWNlaG9sZGVyID0gXCJQZXJtaXNzaW9uU2V0XCI7XHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkTGFuZ3VhZ2UgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkTGFuZ3VhZ2UuTmFtZSA9IFwiYWRkTGFuZ3VhZ2VcIlxyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLkxhYmVsS2V5ID0gXCJMYW5ndWFnZVwiXHJcbiAgICAgIHRoaXMuYWRkTGFuZ3VhZ2UuRGF0YVNvdXJjZSA9IHRoaXMubGFuZ3VhZ2VzTGlzdFxyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkTGFuZ3VhZ2UuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAuTmFtZSA9IFwiYWRkV2VsY29tZU1zZ1RlbXBcIlxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLkxhYmVsS2V5ID0gXCJXZWxjb21lTXNnVGVtcGxhdGVcIlxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLkRhdGFTb3VyY2UgPSB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdFxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLlBsYWNlaG9sZGVyID0gXCJXZWxjb21lTXNnVGVtcGxhdGVcIjtcclxuXHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZEZpbGVQcm92aWRlci5OYW1lID0gXCJhZGRGaWxlUHJvdmlkZXJcIlxyXG4gICAgICB0aGlzLmFkZEZpbGVQcm92aWRlci5MYWJlbEtleSA9IFwiRmlsZVByb3ZpZGVyXCJcclxuICAgICAgdGhpcy5hZGRGaWxlUHJvdmlkZXIuRGF0YVNvdXJjZSA9IHRoaXMuZmlsZVByb3ZpZGVyc1xyXG4gICAgICB0aGlzLmFkZEZpbGVQcm92aWRlci5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZEZpbGVQcm92aWRlci5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLlBsYWNlaG9sZGVyID0gXCJXZWxjb21lTXNnVGVtcGxhdGVcIjtcclxuXHJcbiAgICAgIHRoaXMuYWRkTWFya0luYWN0aXZlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5OYW1lID0gXCJhZGRNYXJrSW5hY3RpdmVcIlxyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5MYWJlbEtleSA9IFwiTWFya0FzSW5hY3RpdmVcIlxyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuYWRkRGFpbHlKb2IgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRGFpbHlKb2IuTmFtZSA9IFwiYWRkRGFpbHlKb2JcIlxyXG4gICAgICB0aGlzLmFkZERhaWx5Sm9iLkxhYmVsS2V5ID0gXCJBZGRUb0RhaWx5Sm9iXCJcclxuICAgICAgdGhpcy5hZGREYWlseUpvYi5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFkZERhaWx5Sm9iLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgICAgLy9zZXQgQUQgbWFwcGluZ1xyXG4gICAgICBsZXQgZGF0YTogYW55ID0gdGhpcy5nZXRBRE1hcHBpbmdPcHRpb25zKHJldWx0T2JqLmFkTWFwcGluZ3MpO1xyXG4gICAgICB0aGlzLmFkZE1hcHBpbmdzT3B0aW9ucyA9IGRhdGFbMF07XHJcbiAgICAgIHRoaXMuYWRkTWFwcGluZ3NDb3VudCA9IGRhdGFbMV07XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmlzQWRkRm9ybUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sIDUwKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vQWRkIEFjdGl2ZSBkaXJlY3RvcnkgZnVuY3Rpb25zXHJcbiAgZ2V0QWRkQURNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnZhbHVlO1xyXG4gICAgLy9jb25zb2xlLmxvZyhSZXN1bHRNb2RlbCk7XHJcbiAgICBsZXQgQWRkTW9kZWw6IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCA9IG5ldyBBY3RpdmVEaXJlY3RvcnlBZGRFZGl0TW9kZWwoKTtcclxuICAgIEFkZE1vZGVsLkNvbm5lY3Rpb25OYW1lID0gcmVzdWx0TW9kZWwuYWRkTmFtZTtcclxuICAgIEFkZE1vZGVsLkFEVHlwZUl0ZW1JRCA9IHJlc3VsdE1vZGVsLmFkZFR5cGVPcHRpb25zICE9IG51bGwgPyBOdW1iZXIocmVzdWx0TW9kZWwuYWRkVHlwZU9wdGlvbnMpIDogbnVsbFxyXG4gICAgQWRkTW9kZWwuUGVybWlzc2lvblNldElEID0gcmVzdWx0TW9kZWwuYWRkUGVybWlzc2lvblNldCAhPSBudWxsID8gTnVtYmVyKHJlc3VsdE1vZGVsLmFkZFBlcm1pc3Npb25TZXQpIDogbnVsbFxyXG4gICAgQWRkTW9kZWwuTGFuZ0tleSA9IHJlc3VsdE1vZGVsLmFkZExhbmd1YWdlO1xyXG4gICAgQWRkTW9kZWwuV2VsY29tZVRlbXBsYXRlSUQgPSByZXN1bHRNb2RlbC5hZGRXZWxjb21lTXNnVGVtcCAhPSBudWxsID8gTnVtYmVyKHJlc3VsdE1vZGVsLmFkZFdlbGNvbWVNc2dUZW1wKSA6IG51bGxcclxuICAgIEFkZE1vZGVsLkltYWdlc0ZpbGVQcm92aWRlck5hbWUgPSByZXN1bHRNb2RlbC5hZGRGaWxlUHJvdmlkZXJcclxuICAgIEFkZE1vZGVsLk1hcmtBc0luYWN0aXZlID0gcmVzdWx0TW9kZWwuYWRkTWFya0luYWN0aXZlXHJcbiAgICBBZGRNb2RlbC5BZGRUb0RhaWx5Sm9iID0gcmVzdWx0TW9kZWwuYWRkRGFpbHlKb2JcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFR5cGUgPT0gTnVtYmVyKEFEVHlwZS5XaW5kb3dzKSkge1xyXG4gICAgICBBZGRNb2RlbC5JZGVudGlmaWVyID0gdGhpcy5pZGVudGlmaWVyO1xyXG4gICAgICBBZGRNb2RlbC5Eb21haW4gPSByZXN1bHRNb2RlbC5hZGREb21haW47XHJcbiAgICAgIEFkZE1vZGVsLlNhbUFjY291bnQgPSByZXN1bHRNb2RlbC5hZGRTYW1BY2NvdW50O1xyXG4gICAgICBBZGRNb2RlbC5QYXNzd29yZCA9IHJlc3VsdE1vZGVsLmFkZFBhc3N3b3JkO1xyXG4gICAgICBBZGRNb2RlbC5TaG93QnVpbHRJbkdyb3VwcyA9IHJlc3VsdE1vZGVsLmFkZFNob3dCdWlsdEluR3JvdXBzO1xyXG4gICAgICBBZGRNb2RlbC5BRFdpbmRvd3NUeXBlSXRlbUlEID0gcmVzdWx0TW9kZWwuYWRkV2luZG93c1R5cGVPcHRpb25zICE9IG51bGwgPyBOdW1iZXIocmVzdWx0TW9kZWwuYWRkV2luZG93c1R5cGVPcHRpb25zKSA6IG51bGxcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBBZGRNb2RlbC5UZW5hbnRJRCA9IHJlc3VsdE1vZGVsLmFkZFRlbmFudElEO1xyXG4gICAgICBBZGRNb2RlbC5DbGllbnRJRCA9IHJlc3VsdE1vZGVsLmFkZENsaWVudElEO1xyXG4gICAgICBBZGRNb2RlbC5DbGllbnRTZWNyZXQgPSByZXN1bHRNb2RlbC5hZGRDbGllbnRTZWNyZXQ7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuYWRkTWFwcGluZ3NDb3VudDsgaisrKSB7XHJcbiAgICAgIGxldCBhZGRNQXBwaW5nVHlwZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nVHlwZVwiICsgal07XHJcbiAgICAgIGlmIChhZGRNQXBwaW5nVHlwZSA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIGxldCBlZGl0TUFwcGluZ1Byb3BlcnR5ID0gcmVzdWx0TW9kZWxbXCJBRE1hcHBpbmdQcm9wZXJ0eVwiICsgal07XHJcbiAgICAgIGxldCBlZGl0TUFwcGluZ1Byb3BlcnR5TmFtZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nUHJvcGVydHlOYW1lXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBhZE1BcHBpbmdPYmo6IEFETWFwcGluZ01vZGVsID0gbmV3IEFETWFwcGluZ01vZGVsKCk7XHJcbiAgICAgIGFkTUFwcGluZ09iai5BRE1hcHBpbmdUeXBlSXRlbUlEID0gTnVtYmVyKGFkZE1BcHBpbmdUeXBlKTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkJCU0ZQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5O1xyXG4gICAgICBhZE1BcHBpbmdPYmouQURQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5TmFtZTtcclxuICAgICAgbGV0IGFkTUFwcGluZ0luY2x1ZGVJblVwZGF0ZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgal07XHJcbiAgICAgIGxldCBhZE1BcHBpbmdIaWRkZW5JbmNsdWRlSW5VcGRhdGUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGVcIiArIGpdO1xyXG4gICAgICBhZE1BcHBpbmdPYmouSW5jbHVkZUluVXBkYXRlID0gYWRNQXBwaW5nSW5jbHVkZUluVXBkYXRlID09IHVuZGVmaW5lZCA/IGFkTUFwcGluZ0hpZGRlbkluY2x1ZGVJblVwZGF0ZSA6IGFkTUFwcGluZ0luY2x1ZGVJblVwZGF0ZTtcclxuXHJcbiAgICAgIEFkZE1vZGVsLkFETWFwcGluZ3MucHVzaChhZE1BcHBpbmdPYmopO1xyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuICBnZXRBZGRBREZ1bmN0aW9uID0gKGFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkFjdGl2ZURpcmVjdG9yeVNlcnZpY2UuYWRkQWN0aXZlRGlyZWN0b3J5KGFkZE1vZGVsKVxyXG4gIH1cclxuICBhZGRBRE9uU3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL0FEQ29ubmVjdGlvbiddKTtcclxuICB9XHJcblxyXG4gIC8vTWFwcGluZyBmdW5jdGlvbnNcclxuICBnZXRBRE1hcHBpbmdPcHRpb25zKEFETWFwcGluZ3M6IGFueVtdKSB7XHJcbiAgICBsZXQgQURNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBBRE1hcHBpbmdDb3VudDogbnVtYmVyID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQURNYXBwaW5ncy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgbGV0IG9iamVjdE1hcHBpbmdPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIGxldCBzZWxlY3RlZFR5cGUgPSB0aGlzLm1hcHBpbmdUeXBlc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBBRE1hcHBpbmdzW2ldLmFkTWFwcGluZ1R5cGVJdGVtSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLk5hbWUgPSBcIkFETWFwcGluZ1R5cGVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nVHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFR5cGU7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuRGF0YVNvdXJjZSA9IHRoaXMubWFwcGluZ1R5cGVzTGlzdDtcclxuICAgICAgQURNYXBwaW5nVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgbGV0IHNlbGVjdGVkUHJvcGVydHkgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IEFETWFwcGluZ3NbaV0uYmJzZlByb3BlcnR5TmFtZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5Lk5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRQcm9wZXJ0eTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5LkRhdGFTb3VyY2UgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1Byb3BlcnR5TmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuTmFtZSA9IFwiQURNYXBwaW5nUHJvcGVydHlOYW1lXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlZhbHVlID0gQURNYXBwaW5nc1tpXS5hZFByb3BlcnR5TmFtZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICBsZXQgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZS5OYW1lID0gXCJBRE1hcHBpbmdJbmNsdWRlVXBkYXRlXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLlZhbHVlID0gQURNYXBwaW5nc1tpXS5pbmNsdWRlSW5VcGRhdGU7XHJcbiAgICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUuSXNEaXNhYmxlZCA9IHRydWU7XHJcblxyXG4gICAgICBsZXQgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLk5hbWUgPSBcIkFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUuVmFsdWUgPSBBRE1hcHBpbmdzW2ldLmluY2x1ZGVJblVwZGF0ZTtcclxuXHJcbiAgICAgIG9iamVjdE1hcHBpbmdPcHRpb25zLnB1c2goQURNYXBwaW5nVHlwZSwgQURNYXBwaW5nUHJvcGVydHksIEFETWFwcGluZ1Byb3BlcnR5TmFtZSwgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSwgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZSk7XHJcbiAgICAgIEFETWFwcGluZ09wdGlvbnMucHVzaChvYmplY3RNYXBwaW5nT3B0aW9ucyk7XHJcbiAgICAgIEFETWFwcGluZ0NvdW50ICs9IDE7XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtBRE1hcHBpbmdPcHRpb25zLCBBRE1hcHBpbmdDb3VudF07XHJcbiAgfVxyXG4gIGRlbGV0ZUFETWFwcGluZyhkZWxldGVkQURNQXBwaW5nOiBhbnkpIHtcclxuICAgIGxldCBkZWxldGVkTWFwcGluZ0luZGV4OiBudW1iZXIgPSB0aGlzLmFkZE1hcHBpbmdzT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRBRE1BcHBpbmcpO1xyXG4gICAgaWYgKGRlbGV0ZWRNYXBwaW5nSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuYWRkTWFwcGluZ3NPcHRpb25zLnNwbGljZShkZWxldGVkTWFwcGluZ0luZGV4LCAxKTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVkQURNQXBwaW5nLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woZGVsZXRlZEFETUFwcGluZ1tpXS5OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBhZGRBRE1hcHBpbmcoKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmFkZE1hcHBpbmdzQ291bnQ7XHJcblxyXG4gICAgbGV0IG9iamVjdE1hcHBpbmdPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGxldCBBRE1hcHBpbmdUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgQURNYXBwaW5nVHlwZS5OYW1lID0gXCJBRE1hcHBpbmdUeXBlXCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ1R5cGUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIEFETWFwcGluZ1R5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIEFETWFwcGluZ1R5cGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICBBRE1hcHBpbmdUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLm1hcHBpbmdUeXBlc0xpc3Q7XHJcblxyXG4gICAgbGV0IEFETWFwcGluZ1Byb3BlcnR5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHkuTmFtZSA9IFwiQURNYXBwaW5nUHJvcGVydHlcIiArIGluZGV4O1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHkuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5LkRhdGFTb3VyY2UgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdDtcclxuXHJcblxyXG4gICAgbGV0IEFETWFwcGluZ1Byb3BlcnR5TmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLk5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5TmFtZVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuSXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgIGxldCBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZS5OYW1lID0gXCJBRE1hcHBpbmdJbmNsdWRlVXBkYXRlXCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUuVmFsdWUgPSB0cnVlO1xyXG5cclxuICAgIGxldCBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLk5hbWUgPSBcIkFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGVcIiArIGluZGV4O1xyXG4gICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgb2JqZWN0TWFwcGluZ09wdGlvbnMucHVzaChBRE1hcHBpbmdUeXBlLCBBRE1hcHBpbmdQcm9wZXJ0eSwgQURNYXBwaW5nUHJvcGVydHlOYW1lLCBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLCBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlKTtcclxuXHJcbiAgICB0aGlzLmFkZE1hcHBpbmdzT3B0aW9ucy5wdXNoKG9iamVjdE1hcHBpbmdPcHRpb25zKTtcclxuICAgIHRoaXMuYWRkTWFwcGluZ3NDb3VudCArPSAxO1xyXG5cclxuICB9XHJcblxyXG5cclxuICAvL0FEIHdpbmRvd3Mgb24gdHlwZSBjaGFuZ2UgKE9VL0dyb3VwKVxyXG4gIHdpbmRvd3NUeXBlQ2hhbmdlKHR5cGVWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVWYWx1ZSA9PSBOdW1iZXIoQURXaW5kb3dzVHlwZS5Hcm91cCkpIHtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3VwcyA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3Vwcy5OYW1lID0gXCJhZGRTaG93QnVpbHRJbkdyb3Vwc1wiXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHMuTGFiZWxWYWx1ZSA9IFwiU2hvd0J1aWx0SW5Hcm91cHNcIlxyXG4gICAgICB0aGlzLmFkZFNob3dCdWlsdEluR3JvdXBzLkxhYmVsS2V5ID0gXCJTaG93QnVpbHRJbkdyb3Vwc1wiXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHMuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3Vwcy5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0ucmVtb3ZlQ29udHJvbChcImFkZFNob3dCdWlsdEluR3JvdXBzXCIpO1xyXG4gICAgICB0aGlzLmFkZFNob3dCdWlsdEluR3JvdXBzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9BRCBvbiB0eXBlIGNoYW5nZXMgKFdpbmRvd3MvQXp1cmUpXHJcbiAgdHlwZUNoYW5nZSh0eXBlVmFsdWUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gdHlwZVZhbHVlO1xyXG4gICAgaWYgKHR5cGVWYWx1ZSA9PSBOdW1iZXIoQURUeXBlLldpbmRvd3MpKSB7XHJcbiAgICAgIHRoaXMuZm9ybXNDb3VudCA9IDM7XHJcbiAgICAgIC8vUmVtb3ZlIEF6dXJlIGNvbnRyb2xzIGlmIGZvdW5kXHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKFwiYWRkVGVuYW50SURcIik7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKFwiYWRkQ2xpZW50SURcIik7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKFwiYWRkQ2xpZW50U2VjcmV0XCIpO1xyXG5cclxuICAgICAgLy9Jbml0aWFsaXplIHdpbmRvd3MgY29udHJvbHNcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLk5hbWUgPSBcImFkZFdpbmRvd3NUeXBlT3B0aW9uc1wiXHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLkxhYmVsS2V5ID0gXCJXaW5kb3dzVHlwZVwiXHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsXHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLkRhdGFTb3VyY2UgPSB0aGlzLmFkV2luZG93c1R5cGVzXHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkV2luZG93c1R5cGVPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmFkZFdpbmRvd3NUeXBlT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkRG9tYWluID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRG9tYWluLk5hbWUgPSBcImFkZERvbWFpblwiO1xyXG4gICAgICB0aGlzLmFkZERvbWFpbi5MYWJlbEtleSA9IFwiRG9tYWluXCI7XHJcbiAgICAgIHRoaXMuYWRkRG9tYWluLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGREb21haW4uVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZERvbWFpbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkU2FtQWNjb3VudCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQuTmFtZSA9IFwiYWRkU2FtQWNjb3VudFwiO1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQuTGFiZWxLZXkgPSBcIlNhbUFjY291bnRcIjtcclxuICAgICAgdGhpcy5hZGRTYW1BY2NvdW50LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGRTYW1BY2NvdW50LlZhbHVlID0gbnVsbDtcclxuXHJcbiAgICAgIHRoaXMuYWRkUGFzc3dvcmQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5OYW1lID0gXCJhZGRQYXNzd29yZFwiO1xyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkLkxhYmVsS2V5ID0gXCJQYXNzd29yZFwiO1xyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkLlR5cGUgPSBJbnB1dFR5cGUuUGFzc3dvcmQ7XHJcbiAgICAgIHRoaXMuYWRkUGFzc3dvcmQuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkLlJlbW92ZURlZmF1bHRQYXNzd29yZFZhbGlkYXRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5zaG93QXp1cmVDb250cm9scyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dXaW5kb3dzQ29udHJvbHMgPSB0cnVlO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybXNDb3VudCA9IDI7XHJcbiAgICAgIC8vUmVtb3ZlIHdpbmRvd3MgY29udHJvbHMgaWYgZm91bmRcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGREb21haW5cIik7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKFwiYWRkU2FtQWNjb3VudFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRQYXNzd29yZFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRTaG93QnVpbHRJbkdyb3Vwc1wiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRXaW5kb3dzVHlwZU9wdGlvbnNcIik7XHJcblxyXG4gICAgICB0aGlzLmFkZFRlbmFudElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkVGVuYW50SUQuTmFtZSA9IFwiYWRkVGVuYW50SURcIjtcclxuICAgICAgdGhpcy5hZGRUZW5hbnRJRC5MYWJlbEtleSA9IFwiVGVuYW50SURcIjtcclxuICAgICAgdGhpcy5hZGRUZW5hbnRJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuYWRkVGVuYW50SUQuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZFRlbmFudElELklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hZGRDbGllbnRJRCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZENsaWVudElELk5hbWUgPSBcImFkZENsaWVudElEXCI7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQuTGFiZWxLZXkgPSBcIkNsaWVudElEXCI7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmFkZENsaWVudElELlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5hZGRDbGllbnRJRC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0Lk5hbWUgPSBcImFkZENsaWVudFNlY3JldFwiO1xyXG4gICAgICB0aGlzLmFkZENsaWVudFNlY3JldC5MYWJlbEtleSA9IFwiQ2xpZW50U2VjcmV0XCI7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGRDbGllbnRTZWNyZXQuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZENsaWVudFNlY3JldC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0F6dXJlQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dXaW5kb3dzQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vV2l6YXJkIGZ1bmN0aW9uc1xyXG4gIG5leHRTdGVwKCkge1xyXG4gICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwJC52YWx1ZTtcclxuICAgIGNvbnN0IG5leHRTdGVwID0gY3VycmVudFN0ZXAgKyAxO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnZhbHVlO1xyXG5cclxuICAgIC8vQ2hlY2sgcmVxdWlyZWQgZmllbGRzIGZvciBuZXh0IHN0ZXBcclxuICAgIGlmIChjdXJyZW50U3RlcCA9PSAxKSB7XHJcbiAgICAgIGlmIChSZXN1bHRNb2RlbC5hZGRUeXBlT3B0aW9ucykge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVHlwZSA9PSBOdW1iZXIoQURUeXBlLldpbmRvd3MpKSB7XHJcbiAgICAgICAgICBpZiAoIVJlc3VsdE1vZGVsLmFkZERvbWFpbiB8fCAhUmVzdWx0TW9kZWwuYWRkV2luZG93c1R5cGVPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWREb21haW5Db250cm9sLklzVmFsaWQoKTtcclxuICAgICAgICAgICAgdGhpcy5hZFdpbmRvd3NUeXBlQ29udHJvbC5Jc1ZhbGlkKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIVJlc3VsdE1vZGVsLmFkZFRlbmFudElEIHx8ICFSZXN1bHRNb2RlbC5hZGRDbGllbnRJRCB8fCAhUmVzdWx0TW9kZWwuYWRkQ2xpZW50U2VjcmV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50SURDb250cm9sLklzVmFsaWQoKTtcclxuICAgICAgICAgICAgdGhpcy5jbGllbnRJRENvbnRyb2wuSXNWYWxpZCgpO1xyXG4gICAgICAgICAgICB0aGlzLmNsaWVudFNlY3JldENvbnRyb2wuSXNWYWxpZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWRUeXBlQ29udHJvbC5Jc1ZhbGlkKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09IE51bWJlcihBRFR5cGUuV2luZG93cykpIHtcclxuXHJcbiAgICAgIGlmIChuZXh0U3RlcCA9PT0gMiAmJiBjdXJyZW50U3RlcCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMudHJlZURhdGFMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgLy9pZiAoIXRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5nZXQoJ2FkZERvbWFpbicpLnZhbGlkIHx8ICF0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0uZ2V0KCdhZGRUeXBlT3B0aW9ucycpLnZhbGlkKSB7XHJcbiAgICAgICAgLy8gIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhSZXN1bHRNb2RlbCk7XHJcblxyXG4gICAgICAgIGxldCBBZGRNb2RlbDogQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsID0gbmV3IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCgpO1xyXG4gICAgICAgIEFkZE1vZGVsLkNvbm5lY3Rpb25OYW1lID0gUmVzdWx0TW9kZWwuYWRkTmFtZTtcclxuICAgICAgICBBZGRNb2RlbC5Eb21haW4gPSBSZXN1bHRNb2RlbC5hZGREb21haW47XHJcbiAgICAgICAgbGV0IEFEVHlwZXMgPSBSZXN1bHRNb2RlbC5hZGRXaW5kb3dzVHlwZU9wdGlvbnM7XHJcbiAgICAgICAgbGV0IHR5cGVJdGVtSUQ6IG51bWJlcjtcclxuICAgICAgICB0eXBlSXRlbUlEID0gTnVtYmVyKEFEVHlwZXMpO1xyXG4gICAgICAgIEFkZE1vZGVsLkFEV2luZG93c1R5cGVJdGVtSUQgPSBBRFR5cGVzICE9IG51bGwgPyB0eXBlSXRlbUlEIDogbnVsbDtcclxuICAgICAgICBBZGRNb2RlbC5TYW1BY2NvdW50ID0gUmVzdWx0TW9kZWwuYWRkU2FtQWNjb3VudDtcclxuICAgICAgICBBZGRNb2RlbC5QYXNzd29yZCA9IFJlc3VsdE1vZGVsLmFkZFBhc3N3b3JkO1xyXG4gICAgICAgIEFkZE1vZGVsLlNob3dCdWlsdEluR3JvdXBzID0gUmVzdWx0TW9kZWwuYWRkU2hvd0J1aWx0SW5Hcm91cHM7XHJcblxyXG5cclxuICAgICAgICB0aGlzLkFjdGl2ZURpcmVjdG9yeVNlcnZpY2UuY2hlY2tWYWxpZGF0aW9uYW5kR2V0RGF0YShBZGRNb2RlbCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIHRoaXMsIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgICAgIHZhciBkYXRhID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgICAgIGlmIChkYXRhLnZhbCkge1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVOb2RlRGF0YSA9IGRhdGEudHJlZURhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JJc0ZvdW5kID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgICAgICAgICBsZXQgX3RyYW5zZm9ybWVyID0gKG5vZGU6IEFETm9kZSwgbGV2ZWw6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiAhIW5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogbm9kZS50ZXh0LFxyXG4gICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogbm9kZS5pY29uLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0YWJsZTogbm9kZS5zZWxlY3RhYmxlLFxyXG4gICAgICAgICAgICAgICAgSW5kZXg6IG5vZGUuSW5kZXgsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBub2RlLmRhdGFcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4oXHJcbiAgICAgICAgICAgICAgbm9kZSA9PiBub2RlLmxldmVsLCBub2RlID0+IG5vZGUuZXhwYW5kYWJsZSk7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxyXG4gICAgICAgICAgICAgIF90cmFuc2Zvcm1lciwgbm9kZSA9PiBub2RlLmxldmVsLCBub2RlID0+IG5vZGUuZXhwYW5kYWJsZSwgbm9kZSA9PiBub2RlLmNoaWxkcmVuKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSh0aGlzLnRyZWVDb250cm9sLCB0aGlzLnRyZWVGbGF0dGVuZXIpO1xyXG4gICAgICAgICAgICBsZXQganNvbkRhdGEgPSBKU09OLnBhcnNlKHRoaXMudHJlZU5vZGVEYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBqc29uRGF0YTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBub2RlOiBGbGF0Tm9kZSkgPT4gbm9kZS5leHBhbmRhYmxlO1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVEYXRhTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAkLm5leHQobmV4dFN0ZXApO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvciA9IGRhdGEuZXJyb3I7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JJc0ZvdW5kID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZSgpO1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9mb3Jtc1xyXG4gICAgICAgIC8vIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9mb3JtLXZhbGlkYXRpb25cclxuXHJcbiAgICAgICAgLy8gdmFsaWRhdGUgdGhlIGZvcm0gYW5kIHVzZSBiZWxvdyBmdW5jdGlvbiB0byBzdG9wIHRoZSB3aXphcmQncyBzdGVwXHJcbiAgICAgICAgLy8gd2l6YXJkT2JqLnN0b3AoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5pZGVudGlmaWVyID09IFwiXCIgfHwgdGhpcy5pZGVudGlmaWVyID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlXYXJuaW5nTWVzc2FnZSh0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWQUxfQXRMZWFzdE9uZUlzUmVxdWlyZWRcIikpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWRkTmFtZS5WYWx1ZSA9IHRoaXMuaWRlbnRpZmllck5hbWUgKyBcIiBjb25uZWN0aW9uXCI7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwJC5uZXh0KG5leHRTdGVwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRTdGVwJC5uZXh0KG5leHRTdGVwKTtcclxuICAgIH1cclxuICB9O1xyXG4gIHByZXZTdGVwKCkge1xyXG4gICAgbGV0IGN1cnJlbnRTdGVwID0gdGhpcy5jdXJyZW50U3RlcCQudmFsdWU7XHJcbiAgICBsZXQgcHJldlN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwJC52YWx1ZSAtIDE7XHJcbiAgICBpZiAocHJldlN0ZXAgPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50U3RlcCQubmV4dChwcmV2U3RlcCk7XHJcbiAgfVxyXG5cclxuICBzZXRJZGVudGlmaWVyKG9iajogTWF0Q2hlY2tib3hDaGFuZ2UsIHNlbGVjdGVkTm9kZTogQUROb2RlKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZE5vZGUuSW5kZXg7XHJcbiAgICBpZiAob2JqLmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5pZGVudGlmaWVyID0gc2VsZWN0ZWROb2RlLmRhdGE7XHJcbiAgICAgIHRoaXMuaWRlbnRpZmllck5hbWUgPSBzZWxlY3RlZE5vZGUudGV4dDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXJOYW1lID0gXCJcIjtcclxuICAgIH1cclxuICB9XHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiXHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInN0ZXBwZXIgc3RlcHBlci1waWxscyBzdGVwcGVyLWNvbHVtbiBkLWZsZXggZmxleC1jb2x1bW4gZmxleC14bC1yb3cgZmxleC1yb3ctZmx1aWQgXCIgaWQ9XCJrdF9jcmVhdGVfYWNjb3VudF9zdGVwcGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgcm91bmRlZCBqdXN0aWZ5LWNvbnRlbnQteGwtc3RhcnQgZmxleC1yb3ctYXV0byBtZS05IGNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC02IHB4LWxnLTEwIHB4LXh4bC0xNSBweS0yMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLW5hdlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaXRlbVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBjdXJyZW50U3RlcCQudmFsdWUgPT09IDEgfVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1saW5lIHctNDBweFwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaWNvbiB3LTQwcHggaC00MHB4XCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzdGVwcGVyLWNoZWNrIGZhcyBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItbnVtYmVyXCI+MTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cInN0ZXBwZXItdGl0bGVcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlcIil9fTwvaDM+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWRlc2MgZnctYm9sZFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZURpcmVjdG9yeV9UYWIxTm90ZVwiKX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dXaW5kb3dzQ29udHJvbHNcIiBjbGFzcz1cInN0ZXBwZXItaXRlbVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBjdXJyZW50U3RlcCQudmFsdWUgPT09IDIgJiYgc2hvd1dpbmRvd3NDb250cm9sc31cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGluZSB3LTQwcHhcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWljb24gdy00MHB4IGgtNDBweFwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic3RlcHBlci1jaGVjayBmYXMgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLW51bWJlclwiPjI8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGFiZWxcIj5cclxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJzdGVwcGVyLXRpdGxlXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5X1NlbGVjdENvbnRhaW5lclwiKX19PC9oMz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1kZXNjIGZ3LWJvbGRcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlfVGFiMk5vdGVcIil9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWl0ZW1cIiBbbmdDbGFzc109XCJ7Y3VycmVudDogKGN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gZm9ybXNDb3VudCApIH1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGluZSB3LTQwcHhcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWljb24gdy00MHB4IGgtNDBweFwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic3RlcHBlci1jaGVjayBmYXMgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLW51bWJlclwiPnt7Zm9ybXNDb3VudH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwic3RlcHBlci10aXRsZVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk9wdGlvbnNcIil9fTwvaDM+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItZGVzYyBmdy1ib2xkXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5X1RhYjNOb3RlXCIpfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGQtZmxleCBmbGV4LXJvdy1mbHVpZCBmbGV4LWNlbnRlciByb3VuZGVkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwLTIwIHctMTAwIGNhcmQtYm9keVwiICpuZ0lmPVwiaXNBZGRGb3JtTG9hZGVkXCI+XHJcbiAgICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnJlbnRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2FkVHlwZUNvbnRyb2wgW29wdGlvbnNdPVwiYWRkVHlwZU9wdGlvbnNcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiIChPbkNoYW5nZSk9XCJ0eXBlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dXaW5kb3dzQ29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjYWRXaW5kb3dzVHlwZUNvbnRyb2wgW29wdGlvbnNdPVwiYWRkV2luZG93c1R5cGVPcHRpb25zXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIiAoT25DaGFuZ2UpPVwid2luZG93c1R5cGVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94ICNhZERvbWFpbkNvbnRyb2wgW29wdGlvbnNdPVwiYWRkRG9tYWluXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlcnJvcklzRm91bmRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+e3t2YWxpZGF0aW9uRXJyb3J9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZFNhbUFjY291bnRcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRQYXNzd29yZFwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiICpuZ0lmPVwiYWRkU2hvd0J1aWx0SW5Hcm91cHNWaXNpYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImFkZFNob3dCdWlsdEluR3JvdXBzXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBenVyZUNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94ICN0ZW5hbnRJRENvbnRyb2wgW29wdGlvbnNdPVwiYWRkVGVuYW50SURcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCAjY2xpZW50SURDb250cm9sIFtvcHRpb25zXT1cImFkZENsaWVudElEXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggI2NsaWVudFNlY3JldENvbnRyb2wgW29wdGlvbnNdPVwiYWRkQ2xpZW50U2VjcmV0XCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IDIgJiYgc2hvd1dpbmRvd3NDb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cmVlRGF0YUNvbnRhaW5lclwiICpuZ0lmPVwidHJlZURhdGFMb2FkZWRcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLUhlbGxsbGxsbGxsbGxsbGxsbGxsbG8tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlO1wiIG1hdFRyZWVOb2RlUGFkZGluZz5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHVzZSBhIGRpc2FibGVkIGJ1dHRvbiB0byBwcm92aWRlIHBhZGRpbmcgZm9yIHRyZWUgbGVhZiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImNoZWNrbGlzdC1sZWFmLW5vZGVcIiBbY2hlY2tlZF09XCJzZWxlY3RlZCA9PT0gbm9kZS5JbmRleFwiIChjaGFuZ2UpPVwic2V0SWRlbnRpZmllcigkZXZlbnQsbm9kZSlcIiBbZGlzYWJsZWRdPVwibm9kZS5zZWxlY3RhYmxlP2ZhbHNlOnRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7bm9kZS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cclxuICAgICAgICAgICAgICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7d2hlbjogaGFzQ2hpbGRcIiBtYXRUcmVlTm9kZVBhZGRpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRyZWVOb2RlVG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUb2dnbGUgJyArIG5vZGUubmFtZVwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1iZy1saWdodCBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnkgYnRuLXNtIG1lLTEgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIiBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiF0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXCIgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodFwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbZGlzYWJsZWRdPVwibm9kZS5zZWxlY3RhYmxlP2ZhbHNlOnRydWVcIj57e25vZGUubmFtZX19PC9tYXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC10cmVlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IGZvcm1zQ291bnRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGROYW1lXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkUGVybWlzc2lvblNldFwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkTGFuZ3VhZ2VcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZFdlbGNvbWVNc2dUZW1wXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRGaWxlUHJvdmlkZXJcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkTWFya0luYWN0aXZlXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkRGFpbHlKb2JcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFEUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluY2x1ZGVJblVwZGF0ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFkZE1hcHBpbmdzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1IaWRkZW4gaW5jbHVkZSBpbiB1cGRhdGUgdmFsdWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bNF1cIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiIFtoaWRkZW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tbGlnaHQtZGFuZ2VyXCIgKGNsaWNrKT1cImRlbGV0ZUFETWFwcGluZyhvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZEFETWFwcGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkTmV3UmVjb3JkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgcHQtMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yLTJcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlICE9PSAxXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2U3RlcCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYzLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgbWUtMVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJldmlvdXNcIil9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlICE9PSBmb3Jtc0NvdW50XCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRTdGVwKClcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmRpY2F0b3ItbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlIDwgZm9ybXNDb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmV4dFwiKX19IHt7IFwiIFwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2NC5zdmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMyBtcy0yIG1lLTBcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IGZvcm1zQ291bnRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tbGcgYnRuLXByaW1hcnkgbWUtM1wiPlxyXG4gICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU3VibWl0XCIpfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcblxyXG48L2Rpdj5cclxuIl19
|