ngx-bimplus-components 0.0.128 → 0.0.129

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.
@@ -2320,7 +2320,7 @@
2320
2320
  "_Error_report_header": "Following problem found:",
2321
2321
  "_Overlays_deleted_error_report": "Overlay/ Overlay document deleted",
2322
2322
  "_Overlays_no_access_error_report":"Overlay with no access",
2323
- "_Add_from_Bluebeam": "Add document from Bluebeam",
2323
+ "_Add_from_Bluebeam": "Add Document from Bluebeam",
2324
2324
  "_Connection_designer": "Connection Designer",
2325
2325
  "_Connexis": "Connexis",
2326
2326
  "_Add_bluebeam_documents": "Add bluebeam documents",
@@ -2371,13 +2371,13 @@
2371
2371
  "_Model_Viewer": "Model Viewer",
2372
2372
  "_View_Project_Library": "View Project Library",
2373
2373
  "_Current_Project_Details": "Current Project Details",
2374
- "_Select_source": "Select source",
2375
- "_Local_filesystem": "Local filesystem",
2374
+ "_Select_source": "Select a source to add documents",
2375
+ "_Local_filesystem": "Local File System",
2376
2376
  "_Bluebeam": "Bluebeam",
2377
2377
  "_Exchange": "Exchange",
2378
- "_Add_from_Exchange": "Add document from Exchange",
2378
+ "_Add_from_Exchange": "Add Document from Exchange",
2379
2379
  "_Exchange_Transfer_note":" NOTE: The import has started and may take several minutes depending on the file size. You will be notified when the import is completed.",
2380
- "_No_data_available_title": "No documents were found.",
2380
+ "_No_data_available_title": "No documents found.",
2381
2381
  "_No_data_available_body": "Please ensure that the connected environment contains documents ready for transfer.",
2382
2382
  "_All_companies": "All companies",
2383
2383
  "_Session_expired_title_two": "Session Expired",
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation, inject, DestroyRef } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { TranslateService, TranslateModule } from '@ngx-translate/core';
4
4
  import { BimplusLocalizedWidgetComponent } from "./../bimplus-localized-widget/bimplus-localized-widget.component";
@@ -10,6 +10,7 @@ import { BimplusFloatingBarBodyComponent } from '../bimplus-floating-bar-body/bi
10
10
  import { ProjectModelsComponent } from '../project-models/project-models.component';
11
11
  import { BimplusPanelToolbarComponent } from '../bimplus-panel-toolbar/bimplus-panel-toolbar.component';
12
12
  import { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component';
13
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
13
14
  import * as i0 from "@angular/core";
14
15
  import * as i1 from "@ngx-translate/core";
15
16
  import * as i2 from "../../services/layout-manager.service";
@@ -45,13 +46,14 @@ export class BimplusFloatingBarProjectNavigatorComponent extends BimplusLocalize
45
46
  this.toggleVisibilityOfModel = new EventEmitter();
46
47
  this.toggleVisibilityOfLayer = new EventEmitter();
47
48
  this.logoClicked = new EventEmitter();
49
+ this.destroyRef = inject(DestroyRef);
48
50
  }
49
51
  ngAfterViewInit() {
50
52
  this.layoutManagerService.registerObject(this.element, this.componentId, '.floating-panel.visible', true, DEFAULT_POSITION_LEFT, DEFAULT_POSITION_TOP);
51
- this.layoutManagerService.registeredItems$.subscribe((items) => {
52
- const layoutManagerItem = items.find((item) => item.id === this.componentId);
53
- this.isCollapsed = !!(layoutManagerItem?.isCollapsed);
54
- });
53
+ this.layoutManagerService.registeredItems$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({ next: (items) => {
54
+ const layoutManagerItem = items.find((item) => item.id === this.componentId);
55
+ this.isCollapsed = !!(layoutManagerItem?.isCollapsed);
56
+ }, complete: () => console.log('completed') });
55
57
  }
56
58
  // #region General bar handling
57
59
  ngAfterViewChecked() {
@@ -116,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
116
118
  }], logoClicked: [{
117
119
  type: Output
118
120
  }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IvYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IvYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBaUUsTUFBTSxlQUFlLENBQUM7QUFDekosT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQTtBQUNsSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUM1SCxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQztBQUNoSixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUN2SSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FB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LE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyx1QkFBdUI7c0JBQWhDLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgRWxlbWVudFJlZixBZnRlclZpZXdDaGVja2VkLEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmICB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlLCBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgfSBmcm9tIFwiLi8uLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudFwiXHJcbmltcG9ydCB7IEJpbXBsdXNGbG9hdGluZ0JhckNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyL2JpbXBsdXMtZmxvYXRpbmctYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJpbXBsdXNGbG9hdGluZ0JhckRyYWdnZXJDb21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLWZsb2F0aW5nLWJhci1kcmFnZ2VyL2JpbXBsdXMtZmxvYXRpbmctYmFyLWRyYWdnZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c0Zsb2F0aW5nQmFySGVhZGVyQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyLWhlYWRlci1jb250ZW50L2JpbXBsdXMtZmxvYXRpbmctYmFyLWhlYWRlci1jb250ZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJpbXBsdXNGbG9hdGluZ0JhckhlYWRlckxvZ29Db21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItbG9nby9iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItbG9nby5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzRmxvYXRpbmdCYXJCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1mbG9hdGluZy1iYXItYm9keS9iaW1wbHVzLWZsb2F0aW5nLWJhci1ib2R5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZsb2F0aW5nQmFySXRlbSB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyL2JpbXBsdXMtZmxvYXRpbmctYmFyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFByb2plY3ROYXZpZ2F0b3JNb2RlbCwgUHJvamVjdE5hdmlnYXRvckxheWVyLCBQcm9qZWN0TmF2aWdhdG9yUHJvamVjdCB9IGZyb20gJy4uL3Byb2plY3QtbW9kZWxzL3Byb2plY3QtbW9kZWxzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFByb2plY3RNb2RlbHNDb21wb25lbnQgfSBmcm9tICcuLi9wcm9qZWN0LW1vZGVscy9wcm9qZWN0LW1vZGVscy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzUGFuZWxUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1wYW5lbC10b29sYmFyL2JpbXBsdXMtcGFuZWwtdG9vbGJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXIvYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lci5jb21wb25lbnQnXHJcbmltcG9ydCB7IExheW91dE1hbmFnZXJJdGVtLCBMYXlvdXRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xheW91dC1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5cclxuXHJcbmNvbnN0IERFRkFVTFRfUE9TSVRJT05fTEVGVCA9IDM1NTtcclxuY29uc3QgREVGQVVMVF9QT1NJVElPTl9UT1AgPTIwO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1wcm9qZWN0LW5hdmlnYXRvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBCaW1wbHVzRmxvYXRpbmdCYXJDb21wb25lbnQsXHJcbiAgICBCaW1wbHVzRmxvYXRpbmdCYXJEcmFnZ2VyQ29tcG9uZW50LFxyXG4gICAgQmltcGx1c0Zsb2F0aW5nQmFySGVhZGVyQ29udGVudENvbXBvbmVudCxcclxuICAgIEJpbXBsdXNGbG9hdGluZ0JhckhlYWRlckxvZ29Db21wb25lbnQsXHJcbiAgICBCaW1wbHVzRmxvYXRpbmdCYXJCb2R5Q29tcG9uZW50LFxyXG4gICAgQmltcGx1c1BhbmVsVG9vbGJhckNvbXBvbmVudCxcclxuICAgIFByb2plY3RNb2RlbHNDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBCaW1wbHVzU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbVHJhbnNsYXRlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JpbXBsdXMtZmxvYXRpbmctYmFyLXByb2plY3QtbmF2aWdhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50Lmxlc3MnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c0Zsb2F0aW5nQmFyUHJvamVjdE5hdmlnYXRvckNvbXBvbmVudCBleHRlbmRzIEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyAgIEFmdGVyVmlld0luaXQsQWZ0ZXJWaWV3Q2hlY2tlZHtcclxuICBjb25zdHJ1Y3Rvcih0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbGF5b3V0TWFuYWdlclNlcnZpY2U6IExheW91dE1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICAgICAgXHJcbiAgfVxyXG4gIHByaXZhdGUgaGFzVmlld0NoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuXHJcbiAgLy8gR2VuZXJhbCBiYXIgaGFuZGxpbmdcclxuICBASW5wdXQoKSBub0JvZHk6IGJvb2xlYW4gPSBmYWxzZTsgLy8gUHJvamVjdCBuYXZpZ2F0b3IgaGFzIGEgYm9keVxyXG4gIEBJbnB1dCgpIGlzQ29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbm9Nb2RlbHNNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbG9hZGluZ0RhdGFNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgXHJcbiAgaWNvbiA9ICd1aS1pY29uLXByb2plY3QtbmF2aWdhdG9yJztcclxuICB0aXRsZTogc3RyaW5nID0gJ19Qcm9qZWN0X25hdmlnYXRvcic7XHJcbiAgY29tcG9uZW50SWQgPSAncHJvamVjdC1uYXZpZ2F0b3ItZnAtaWQnO1xyXG4gIC8vIEhlYWRlciBjb250ZW50IChsaWtlIElGQyBleHBvcnQgYnV0dG9uKVxyXG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxGbG9hdGluZ0Jhckl0ZW0+ID0gW107XHJcblxyXG4gIEBPdXRwdXQoKSBhY3Rpb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8vIEJvZHkgY29udGVudFxyXG4gIEBJbnB1dCgpIGlzUGFuZWxUb29sYmFyVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGV4cGFuZGVkTW9kZWxUcmVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHJvamVjdDogUHJvamVjdE5hdmlnYXRvclByb2plY3QgPSB7IGlkOiBcIlwiLCBuYW1lOiBcIlwiLCB0ZWFtU2x1ZzogXCJcIiwgbW9kZWxzOiBbXSB9O1xyXG4gIEBPdXRwdXQoKSBjbGlja2VkTW9kZWwgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2plY3ROYXZpZ2F0b3JNb2RlbD4oKTtcclxuICBAT3V0cHV0KCkgY2xpY2tlZExheWVyID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9qZWN0TmF2aWdhdG9yTGF5ZXI+KCk7XHJcbiAgQE91dHB1dCgpIHRvZ2dsZU9wYWNpdHlPZk1vZGVsID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9qZWN0TmF2aWdhdG9yTW9kZWw+KCk7XHJcbiAgQE91dHB1dCgpIHRvZ2dsZU9wYWNpdHlPZkxheWVyID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9qZWN0TmF2aWdhdG9yTGF5ZXI+KCk7XHJcbiAgQE91dHB1dCgpIHRvZ2dsZVZpc2liaWxpdHlPZk1vZGVsID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9qZWN0TmF2aWdhdG9yTW9kZWw+KCk7XHJcbiAgQE91dHB1dCgpIHRvZ2dsZVZpc2liaWxpdHlPZkxheWVyID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9qZWN0TmF2aWdhdG9yTGF5ZXI+KCk7XHJcbiAgQE91dHB1dCgpIGxvZ29DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpOyAgXHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpe1xyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5yZWdpc3Rlck9iamVjdCh0aGlzLmVsZW1lbnQsdGhpcy5jb21wb25lbnRJZCwnLmZsb2F0aW5nLXBhbmVsLnZpc2libGUnLHRydWUsREVGQVVMVF9QT1NJVElPTl9MRUZULERFRkFVTFRfUE9TSVRJT05fVE9QKTtcclxuICAgIHRoaXMubGF5b3V0TWFuYWdlclNlcnZpY2UucmVnaXN0ZXJlZEl0ZW1zJC5zdWJzY3JpYmUoKGl0ZW1zOiBMYXlvdXRNYW5hZ2VySXRlbVtdKSA9PiB7XHJcbiAgICAgIGNvbnN0IGxheW91dE1hbmFnZXJJdGVtID0gaXRlbXMuZmluZCgoaXRlbTogTGF5b3V0TWFuYWdlckl0ZW0pID0+IGl0ZW0uaWQgPT09IHRoaXMuY29tcG9uZW50SWQpOyAgICAgICAgXHJcbiAgICAgIHRoaXMuaXNDb2xsYXBzZWQgPSAhIShsYXlvdXRNYW5hZ2VySXRlbT8uaXNDb2xsYXBzZWQpOyAgICAgIFxyXG4gICAgfSk7ICAgIFxyXG4gIH1cclxuICAvLyAjcmVnaW9uIEdlbmVyYWwgYmFyIGhhbmRsaW5nIFxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICAvL2lmICghdGhpcy5oYXNWaWV3Q2hlY2tlZCAmJiAhdGhpcy5pc0NvbGxhcHNlZCkge1xyXG4gICAgaWYgKCF0aGlzLmhhc1ZpZXdDaGVja2VkKSB7ICAgICAgXHJcbiAgICAgIHRoaXMuaGFzVmlld0NoZWNrZWQgPSB0cnVlOyAvLyBTZXQgdGhlIGZsYWcgdG8gcHJldmVudCByZXBlYXRlZCBleGVjdXRpb25cclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gICAgXHJcbiAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICB0aGlzLmxheW91dE1hbmFnZXJTZXJ2aWNlLmNoZWNrUG9zaXRpb24odGhpcy5jb21wb25lbnRJZCwnLmZsb2F0aW5nLXBhbmVsLnZpc2libGUnLHVuZGVmaW5lZCwwLDAsdHJ1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uXHJcbn1cclxuIiwiPGxpYi1iaW1wbHVzLWZsb2F0aW5nLWJhclxyXG4gIGlkPVwicHJvamVjdC1uYXZpZ2F0b3ItZnAtaWRcIlxyXG4gIFtpZF0gPSBcImNvbXBvbmVudElkXCJcclxuICBjbGFzcz1cInByb2plY3QtbmF2aWdhdG9yLWZwIGZsb2F0aW5nLXBhbmVsXCJcclxuICBbc2VsZWN0ZWRMYW5ndWFnZV09XCJzZWxlY3RlZExhbmd1YWdlXCJcclxuICBbbG9jYWxpemVkU3RyaW5nc109XCJsb2NhbGl6ZWRTdHJpbmdzXCJcclxuICBbbm9Cb2R5XT1cIm5vQm9keVwiICBcclxuICBbcmVzaXplRW5hYmxlZF09XCJ0cnVlXCJcclxuICBbaXNWaXNpYmxlXT1cInRydWVcIiAgICAgIFxyXG4+XHJcbiAgPGxpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItbG9nb1xyXG4gICAgY2xhc3M9XCJmbG9hdGluZy1iYXItaGVhZGVyLWxvZ29cIlxyXG4gICAgW3BhcmVudElkXSA9IFwiY29tcG9uZW50SWRcIlxyXG4gICAgW3NlbGVjdGVkTGFuZ3VhZ2VdPVwic2VsZWN0ZWRMYW5ndWFnZVwiXHJcbiAgICBbbG9jYWxpemVkU3RyaW5nc109XCJsb2NhbGl6ZWRTdHJpbmdzXCJcclxuICAgIFtpY29uXT1cImljb25cIlxyXG4gICAgW3RpdGxlXT1cInRpdGxlXCIgICAgXHJcbiAgPlxyXG4gIDwvbGliLWJpbXBsdXMtZmxvYXRpbmctYmFyLWhlYWRlci1sb2dvPlxyXG5cclxuICA8bGliLWJpbXBsdXMtZmxvYXRpbmctYmFyLWhlYWRlci1jb250ZW50XHJcbiAgICBjbGFzcz1cImZsb2F0aW5nLWJhci1oZWFkZXItY29udGVudFwiXHJcbiAgICBbc2VsZWN0ZWRMYW5ndWFnZV09XCJzZWxlY3RlZExhbmd1YWdlXCJcclxuICAgIFtsb2NhbGl6ZWRTdHJpbmdzXT1cImxvY2FsaXplZFN0cmluZ3NcIlxyXG4gICAgW2l0ZW1zXT1cIml0ZW1zXCJcclxuICAgIChhY3Rpb25DbGlja2VkKT1cImFjdGlvbkNsaWNrZWQuZW1pdCgkZXZlbnQpXCIgICAgXHJcbiAgICBbcGFyZW50SWRdID0gXCJjb21wb25lbnRJZFwiXHJcbiAgPlxyXG4gIDwvbGliLWJpbXBsdXMtZmxvYXRpbmctYmFyLWhlYWRlci1jb250ZW50PlxyXG5cclxuICA8bGliLWJpbXBsdXMtZmxvYXRpbmctYmFyLWRyYWdnZXJcclxuICAgIGNsYXNzPVwiZmxvYXRpbmctYmFyLWRyYWdnZXJcIlxyXG4gICAgW3BhcmVudElkXSA9IFwiY29tcG9uZW50SWRcIlxyXG4gID5cclxuICA8L2xpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1kcmFnZ2VyPlxyXG5cclxuICA8bGliLWJpbXBsdXMtZmxvYXRpbmctYmFyLWJvZHlcclxuICAgIGNsYXNzPVwiZmxvYXRpbmctYmFyLWJvZHlcIlxyXG4gICAgW3BhcmVudElkXSA9IFwiY29tcG9uZW50SWRcIlxyXG4gID5cclxuICAgIDxsaWItYmltcGx1cy1wYW5lbC10b29sYmFyXHJcbiAgICAgIFtpc1BhbmVsVG9vbGJhclZpc2libGVdPVwiaXNQYW5lbFRvb2xiYXJWaXNpYmxlXCJcclxuICAgID48L2xpYi1iaW1wbHVzLXBhbmVsLXRvb2xiYXI+XHJcblxyXG4gICAgQGlmKGlzTG9hZGluZyAmJiBsb2FkaW5nRGF0YU1lc3NhZ2Upe1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5saW5lLW1lc3NhZ2VcIiBbaW5uZXJIdG1sXT1cImxvYWRpbmdEYXRhTWVzc2FnZSB8IHRyYW5zbGF0ZVwiPjwvc3Bhbj5cclxuICAgIH1cclxuICAgIEBlbHNleyBcclxuICAgIEBpZihwcm9qZWN0Lm1vZGVscy5sZW5ndGggPT09IDAgJiYgbm9Nb2RlbHNNZXNzYWdlKXtcclxuICAgICAgPHNwYW4gY2xhc3M9XCJpbmxpbmUtbWVzc2FnZVwiIFtpbm5lckh0bWxdPVwibm9Nb2RlbHNNZXNzYWdlIHwgdHJhbnNsYXRlXCI+PC9zcGFuPlxyXG4gICAgfUBlbHNle1xyXG4gICAgICA8bGliLWJpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXI+XHJcbiAgICAgICAgPGxpYi1wcm9qZWN0LW1vZGVsc1xyXG4gICAgICAgICAgW3NlbGVjdGVkTGFuZ3VhZ2VdPVwic2VsZWN0ZWRMYW5ndWFnZVwiXHJcbiAgICAgICAgICBbbG9jYWxpemVkU3RyaW5nc109XCJsb2NhbGl6ZWRTdHJpbmdzXCJcclxuICAgICAgICAgIFttb2RlbHNdPVwicHJvamVjdC5tb2RlbHNcIlxyXG4gICAgICAgICAgW21vZGVsVHJlZVJvb3RUaXRsZV09XCJwcm9qZWN0Lm5hbWUgKyAnIC0gJyArIHByb2plY3QudGVhbVNsdWdcIlxyXG4gICAgICAgICAgW2V4cGFuZGVkTW9kZWxUcmVlXT1cImV4cGFuZGVkTW9kZWxUcmVlXCJcclxuICAgICAgICAgIChjbGlja2VkTW9kZWwpPVwiY2xpY2tlZE1vZGVsLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2xpY2tlZExheWVyKT1cImNsaWNrZWRMYXllci5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgKHRvZ2dsZU9wYWNpdHlPZk1vZGVsKT1cInRvZ2dsZU9wYWNpdHlPZk1vZGVsLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAodG9nZ2xlT3BhY2l0eU9mTGF5ZXIpPVwidG9nZ2xlT3BhY2l0eU9mTGF5ZXIuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICh0b2dnbGVWaXNpYmlsaXR5T2ZNb2RlbCk9XCJ0b2dnbGVWaXNpYmlsaXR5T2ZNb2RlbC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgKHRvZ2dsZVZpc2liaWxpdHlPZkxheWVyKT1cInRvZ2dsZVZpc2liaWxpdHlPZkxheWVyLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvbGliLXByb2plY3QtbW9kZWxzPlxyXG4gICAgICA8L2xpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gICAgfVxyXG4gIH1cclxuICA8L2xpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1ib2R5PlxyXG48L2xpYi1iaW1wbHVzLWZsb2F0aW5nLWJhcj5cclxuIl19
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IvYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IvYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBZ0UsTUFBTSxFQUFFLFVBQVUsRUFBRyxNQUFNLGVBQWUsQ0FBQztBQUM3SyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFBO0FBQ2xILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQzVILE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHNGQUFzRixDQUFDO0FBQ2hKLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQ3ZJLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBR25ILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHdFQUF3RSxDQUFBO0FBRTVILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBR2hFLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBQ2xDLE1BQU0sb0JBQW9CLEdBQUUsRUFBRSxDQUFDO0FBcUIvQixNQUFNLE9BQU8sMkNBQTRDLFNBQVEsK0JBQStCO0lBQzlGLFlBQVksZ0JBQWtDLEVBQzFCLG9CQUEwQyxFQUN6QyxPQUFtQixFQUNuQixHQUFzQjtRQUN6QyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUhOLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDekMsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUluQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUd4Qyx1QkFBdUI7UUFDZCxXQUFNLEdBQVksS0FBSyxDQUFDLENBQUMsK0JBQStCO1FBQ3hELGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLG9CQUFlLEdBQXVCLFNBQVMsQ0FBQztRQUNoRCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLHVCQUFrQixHQUF1QixTQUFTLENBQUM7UUFFNUQsU0FBSSxHQUFHLDJCQUEyQixDQUFDO1FBQ25DLFVBQUssR0FBVyxvQkFBb0IsQ0FBQztRQUNyQyxnQkFBVyxHQUFHLHlCQUF5QixDQUFDO1FBQ3hDLDBDQUEwQztRQUNqQyxVQUFLLEdBQTJCLEVBQUUsQ0FBQztRQUVsQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFckQsZUFBZTtRQUNOLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMsWUFBTyxHQUE0QixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNqRixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBQ3pELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFDekQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFDakUseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFDakUsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFDcEUsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFDcEUsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ3ZELGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUE5Qi9CLENBQUM7SUFnQ0QsZUFBZTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsV0FBVyxFQUFDLHlCQUF5QixFQUFDLElBQUksRUFBQyxxQkFBcUIsRUFBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRWxKLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsS0FBMEIsRUFBRSxFQUFFO2dCQUNsSSxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUF1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDaEcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN4RCxDQUFDLEVBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxnQ0FBZ0M7SUFFaEMsa0JBQWtCO1FBQ2hCLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUMsNkNBQTZDO1lBQ3pFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQywrQkFBK0I7WUFDekQsVUFBVSxDQUFDLEdBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUMseUJBQXlCLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDekcsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs4R0ExRFUsMkNBQTJDO2tHQUEzQywyQ0FBMkMsOHJCQUwzQyxDQUFDLGdCQUFnQixDQUFDLGlEQ3BDL0IsNnBGQXVFQSxvMHhCRDlDSSxZQUFZLCtCQUNaLDJCQUEyQiwyS0FDM0Isa0NBQWtDLGtIQUNsQyx3Q0FBd0MsOEpBQ3hDLHFDQUFxQyx1SUFDckMsK0JBQStCLCtHQUMvQiw0QkFBNEIseUdBQzVCLHNCQUFzQixtU0FDdEIsZUFBZSw0RkFDZixtQ0FBbUM7OzJGQU8xQiwyQ0FBMkM7a0JBcEJ2RCxTQUFTOytCQUNFLDRDQUE0QyxjQUMxQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWiwyQkFBMkI7d0JBQzNCLGtDQUFrQzt3QkFDbEMsd0NBQXdDO3dCQUN4QyxxQ0FBcUM7d0JBQ3JDLCtCQUErQjt3QkFDL0IsNEJBQTRCO3dCQUM1QixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsbUNBQW1DO3FCQUNwQyxhQUNVLENBQUMsZ0JBQWdCLENBQUMsaUJBR2QsaUJBQWlCLENBQUMsU0FBUztpTEFjakMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFNRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFHRSxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyx1QkFBdUI7c0JBQWhDLE1BQU07Z0JBQ0csdUJBQXVCO3NCQUFoQyxNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIEVsZW1lbnRSZWYsQWZ0ZXJWaWV3Q2hlY2tlZCxBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgaW5qZWN0LCBEZXN0cm95UmVmICB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlLCBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgfSBmcm9tIFwiLi8uLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudFwiXHJcbmltcG9ydCB7IEJpbXBsdXNGbG9hdGluZ0JhckNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyL2JpbXBsdXMtZmxvYXRpbmctYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJpbXBsdXNGbG9hdGluZ0JhckRyYWdnZXJDb21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLWZsb2F0aW5nLWJhci1kcmFnZ2VyL2JpbXBsdXMtZmxvYXRpbmctYmFyLWRyYWdnZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c0Zsb2F0aW5nQmFySGVhZGVyQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyLWhlYWRlci1jb250ZW50L2JpbXBsdXMtZmxvYXRpbmctYmFyLWhlYWRlci1jb250ZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJpbXBsdXNGbG9hdGluZ0JhckhlYWRlckxvZ29Db21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItbG9nby9iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItbG9nby5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzRmxvYXRpbmdCYXJCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1mbG9hdGluZy1iYXItYm9keS9iaW1wbHVzLWZsb2F0aW5nLWJhci1ib2R5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZsb2F0aW5nQmFySXRlbSB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyL2JpbXBsdXMtZmxvYXRpbmctYmFyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFByb2plY3ROYXZpZ2F0b3JNb2RlbCwgUHJvamVjdE5hdmlnYXRvckxheWVyLCBQcm9qZWN0TmF2aWdhdG9yUHJvamVjdCB9IGZyb20gJy4uL3Byb2plY3QtbW9kZWxzL3Byb2plY3QtbW9kZWxzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFByb2plY3RNb2RlbHNDb21wb25lbnQgfSBmcm9tICcuLi9wcm9qZWN0LW1vZGVscy9wcm9qZWN0LW1vZGVscy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzUGFuZWxUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1wYW5lbC10b29sYmFyL2JpbXBsdXMtcGFuZWwtdG9vbGJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXIvYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lci5jb21wb25lbnQnXHJcbmltcG9ydCB7IExheW91dE1hbmFnZXJJdGVtLCBMYXlvdXRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xheW91dC1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5cclxuY29uc3QgREVGQVVMVF9QT1NJVElPTl9MRUZUID0gMzU1O1xyXG5jb25zdCBERUZBVUxUX1BPU0lUSU9OX1RPUCA9MjA7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJpbXBsdXMtZmxvYXRpbmctYmFyLXByb2plY3QtbmF2aWdhdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEJpbXBsdXNGbG9hdGluZ0JhckNvbXBvbmVudCxcclxuICAgIEJpbXBsdXNGbG9hdGluZ0JhckRyYWdnZXJDb21wb25lbnQsXHJcbiAgICBCaW1wbHVzRmxvYXRpbmdCYXJIZWFkZXJDb250ZW50Q29tcG9uZW50LFxyXG4gICAgQmltcGx1c0Zsb2F0aW5nQmFySGVhZGVyTG9nb0NvbXBvbmVudCxcclxuICAgIEJpbXBsdXNGbG9hdGluZ0JhckJvZHlDb21wb25lbnQsXHJcbiAgICBCaW1wbHVzUGFuZWxUb29sYmFyQ29tcG9uZW50LFxyXG4gICAgUHJvamVjdE1vZGVsc0NvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIEJpbXBsdXNTY3JvbGxhYmxlQ29udGFpbmVyQ29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtUcmFuc2xhdGVTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy1mbG9hdGluZy1iYXItcHJvamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9iaW1wbHVzLWZsb2F0aW5nLWJhci1wcm9qZWN0LW5hdmlnYXRvci5jb21wb25lbnQubGVzcycsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCaW1wbHVzRmxvYXRpbmdCYXJQcm9qZWN0TmF2aWdhdG9yQ29tcG9uZW50IGV4dGVuZHMgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzICAgQWZ0ZXJWaWV3SW5pdCxBZnRlclZpZXdDaGVja2Vke1xyXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsYXlvdXRNYW5hZ2VyU2VydmljZTogTGF5b3V0TWFuYWdlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcclxuICAgICAgICAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICBzdXBlcih0cmFuc2xhdGVTZXJ2aWNlKTtcclxuICAgICAgICBcclxuICB9XHJcbiAgcHJpdmF0ZSBoYXNWaWV3Q2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG5cclxuICAvLyBHZW5lcmFsIGJhciBoYW5kbGluZ1xyXG4gIEBJbnB1dCgpIG5vQm9keTogYm9vbGVhbiA9IGZhbHNlOyAvLyBQcm9qZWN0IG5hdmlnYXRvciBoYXMgYSBib2R5XHJcbiAgQElucHV0KCkgaXNDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBub01vZGVsc01lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBsb2FkaW5nRGF0YU1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBcclxuICBpY29uID0gJ3VpLWljb24tcHJvamVjdC1uYXZpZ2F0b3InO1xyXG4gIHRpdGxlOiBzdHJpbmcgPSAnX1Byb2plY3RfbmF2aWdhdG9yJztcclxuICBjb21wb25lbnRJZCA9ICdwcm9qZWN0LW5hdmlnYXRvci1mcC1pZCc7XHJcbiAgLy8gSGVhZGVyIGNvbnRlbnQgKGxpa2UgSUZDIGV4cG9ydCBidXR0b24pXHJcbiAgQElucHV0KCkgaXRlbXM6IEFycmF5PEZsb2F0aW5nQmFySXRlbT4gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgLy8gQm9keSBjb250ZW50XHJcbiAgQElucHV0KCkgaXNQYW5lbFRvb2xiYXJWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXhwYW5kZWRNb2RlbFRyZWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwcm9qZWN0OiBQcm9qZWN0TmF2aWdhdG9yUHJvamVjdCA9IHsgaWQ6IFwiXCIsIG5hbWU6IFwiXCIsIHRlYW1TbHVnOiBcIlwiLCBtb2RlbHM6IFtdIH07XHJcbiAgQE91dHB1dCgpIGNsaWNrZWRNb2RlbCA9IG5ldyBFdmVudEVtaXR0ZXI8UHJvamVjdE5hdmlnYXRvck1vZGVsPigpO1xyXG4gIEBPdXRwdXQoKSBjbGlja2VkTGF5ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2plY3ROYXZpZ2F0b3JMYXllcj4oKTtcclxuICBAT3V0cHV0KCkgdG9nZ2xlT3BhY2l0eU9mTW9kZWwgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2plY3ROYXZpZ2F0b3JNb2RlbD4oKTtcclxuICBAT3V0cHV0KCkgdG9nZ2xlT3BhY2l0eU9mTGF5ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2plY3ROYXZpZ2F0b3JMYXllcj4oKTtcclxuICBAT3V0cHV0KCkgdG9nZ2xlVmlzaWJpbGl0eU9mTW9kZWwgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2plY3ROYXZpZ2F0b3JNb2RlbD4oKTtcclxuICBAT3V0cHV0KCkgdG9nZ2xlVmlzaWJpbGl0eU9mTGF5ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2plY3ROYXZpZ2F0b3JMYXllcj4oKTtcclxuICBAT3V0cHV0KCkgbG9nb0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7ICBcclxuICBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpXHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpe1xyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5yZWdpc3Rlck9iamVjdCh0aGlzLmVsZW1lbnQsdGhpcy5jb21wb25lbnRJZCwnLmZsb2F0aW5nLXBhbmVsLnZpc2libGUnLHRydWUsREVGQVVMVF9QT1NJVElPTl9MRUZULERFRkFVTFRfUE9TSVRJT05fVE9QKTtcclxuICAgIFxyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5yZWdpc3RlcmVkSXRlbXMkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh7bmV4dDooaXRlbXM6IExheW91dE1hbmFnZXJJdGVtW10pID0+IHtcclxuICAgICAgY29uc3QgbGF5b3V0TWFuYWdlckl0ZW0gPSBpdGVtcy5maW5kKChpdGVtOiBMYXlvdXRNYW5hZ2VySXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5jb21wb25lbnRJZCk7ICAgICAgICBcclxuICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9ICEhKGxheW91dE1hbmFnZXJJdGVtPy5pc0NvbGxhcHNlZCk7ICAgICAgXHJcbiAgICB9LGNvbXBsZXRlOiAoKSA9PiBjb25zb2xlLmxvZygnY29tcGxldGVkJyl9KTtcclxuICB9XHJcbiAgLy8gI3JlZ2lvbiBHZW5lcmFsIGJhciBoYW5kbGluZyBcclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgLy9pZiAoIXRoaXMuaGFzVmlld0NoZWNrZWQgJiYgIXRoaXMuaXNDb2xsYXBzZWQpIHtcclxuICAgIGlmICghdGhpcy5oYXNWaWV3Q2hlY2tlZCkgeyAgICAgIFxyXG4gICAgICB0aGlzLmhhc1ZpZXdDaGVja2VkID0gdHJ1ZTsgLy8gU2V0IHRoZSBmbGFnIHRvIHByZXZlbnQgcmVwZWF0ZWQgZXhlY3V0aW9uXHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uICAgIFxyXG4gICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5jaGVja1Bvc2l0aW9uKHRoaXMuY29tcG9uZW50SWQsJy5mbG9hdGluZy1wYW5lbC52aXNpYmxlJyx1bmRlZmluZWQsMCwwLHRydWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvblxyXG59XHJcbiIsIjxsaWItYmltcGx1cy1mbG9hdGluZy1iYXJcclxuICBpZD1cInByb2plY3QtbmF2aWdhdG9yLWZwLWlkXCJcclxuICBbaWRdID0gXCJjb21wb25lbnRJZFwiXHJcbiAgY2xhc3M9XCJwcm9qZWN0LW5hdmlnYXRvci1mcCBmbG9hdGluZy1wYW5lbFwiXHJcbiAgW3NlbGVjdGVkTGFuZ3VhZ2VdPVwic2VsZWN0ZWRMYW5ndWFnZVwiXHJcbiAgW2xvY2FsaXplZFN0cmluZ3NdPVwibG9jYWxpemVkU3RyaW5nc1wiXHJcbiAgW25vQm9keV09XCJub0JvZHlcIiAgXHJcbiAgW3Jlc2l6ZUVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgW2lzVmlzaWJsZV09XCJ0cnVlXCIgICAgICBcclxuPlxyXG4gIDxsaWItYmltcGx1cy1mbG9hdGluZy1iYXItaGVhZGVyLWxvZ29cclxuICAgIGNsYXNzPVwiZmxvYXRpbmctYmFyLWhlYWRlci1sb2dvXCJcclxuICAgIFtwYXJlbnRJZF0gPSBcImNvbXBvbmVudElkXCJcclxuICAgIFtzZWxlY3RlZExhbmd1YWdlXT1cInNlbGVjdGVkTGFuZ3VhZ2VcIlxyXG4gICAgW2xvY2FsaXplZFN0cmluZ3NdPVwibG9jYWxpemVkU3RyaW5nc1wiXHJcbiAgICBbaWNvbl09XCJpY29uXCJcclxuICAgIFt0aXRsZV09XCJ0aXRsZVwiICAgIFxyXG4gID5cclxuICA8L2xpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItbG9nbz5cclxuXHJcbiAgPGxpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItY29udGVudFxyXG4gICAgY2xhc3M9XCJmbG9hdGluZy1iYXItaGVhZGVyLWNvbnRlbnRcIlxyXG4gICAgW3NlbGVjdGVkTGFuZ3VhZ2VdPVwic2VsZWN0ZWRMYW5ndWFnZVwiXHJcbiAgICBbbG9jYWxpemVkU3RyaW5nc109XCJsb2NhbGl6ZWRTdHJpbmdzXCJcclxuICAgIFtpdGVtc109XCJpdGVtc1wiXHJcbiAgICAoYWN0aW9uQ2xpY2tlZCk9XCJhY3Rpb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiICAgIFxyXG4gICAgW3BhcmVudElkXSA9IFwiY29tcG9uZW50SWRcIlxyXG4gID5cclxuICA8L2xpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItY29udGVudD5cclxuXHJcbiAgPGxpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1kcmFnZ2VyXHJcbiAgICBjbGFzcz1cImZsb2F0aW5nLWJhci1kcmFnZ2VyXCJcclxuICAgIFtwYXJlbnRJZF0gPSBcImNvbXBvbmVudElkXCJcclxuICA+XHJcbiAgPC9saWItYmltcGx1cy1mbG9hdGluZy1iYXItZHJhZ2dlcj5cclxuXHJcbiAgPGxpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1ib2R5XHJcbiAgICBjbGFzcz1cImZsb2F0aW5nLWJhci1ib2R5XCJcclxuICAgIFtwYXJlbnRJZF0gPSBcImNvbXBvbmVudElkXCJcclxuICA+XHJcbiAgICA8bGliLWJpbXBsdXMtcGFuZWwtdG9vbGJhclxyXG4gICAgICBbaXNQYW5lbFRvb2xiYXJWaXNpYmxlXT1cImlzUGFuZWxUb29sYmFyVmlzaWJsZVwiXHJcbiAgICA+PC9saWItYmltcGx1cy1wYW5lbC10b29sYmFyPlxyXG5cclxuICAgIEBpZihpc0xvYWRpbmcgJiYgbG9hZGluZ0RhdGFNZXNzYWdlKXtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImlubGluZS1tZXNzYWdlXCIgW2lubmVySHRtbF09XCJsb2FkaW5nRGF0YU1lc3NhZ2UgfCB0cmFuc2xhdGVcIj48L3NwYW4+XHJcbiAgICB9XHJcbiAgICBAZWxzZXsgXHJcbiAgICBAaWYocHJvamVjdC5tb2RlbHMubGVuZ3RoID09PSAwICYmIG5vTW9kZWxzTWVzc2FnZSl7XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaW5saW5lLW1lc3NhZ2VcIiBbaW5uZXJIdG1sXT1cIm5vTW9kZWxzTWVzc2FnZSB8IHRyYW5zbGF0ZVwiPjwvc3Bhbj5cclxuICAgIH1AZWxzZXtcclxuICAgICAgPGxpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gICAgICAgIDxsaWItcHJvamVjdC1tb2RlbHNcclxuICAgICAgICAgIFtzZWxlY3RlZExhbmd1YWdlXT1cInNlbGVjdGVkTGFuZ3VhZ2VcIlxyXG4gICAgICAgICAgW2xvY2FsaXplZFN0cmluZ3NdPVwibG9jYWxpemVkU3RyaW5nc1wiXHJcbiAgICAgICAgICBbbW9kZWxzXT1cInByb2plY3QubW9kZWxzXCJcclxuICAgICAgICAgIFttb2RlbFRyZWVSb290VGl0bGVdPVwicHJvamVjdC5uYW1lICsgJyAtICcgKyBwcm9qZWN0LnRlYW1TbHVnXCJcclxuICAgICAgICAgIFtleHBhbmRlZE1vZGVsVHJlZV09XCJleHBhbmRlZE1vZGVsVHJlZVwiXHJcbiAgICAgICAgICAoY2xpY2tlZE1vZGVsKT1cImNsaWNrZWRNb2RlbC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgKGNsaWNrZWRMYXllcik9XCJjbGlja2VkTGF5ZXIuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICh0b2dnbGVPcGFjaXR5T2ZNb2RlbCk9XCJ0b2dnbGVPcGFjaXR5T2ZNb2RlbC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgKHRvZ2dsZU9wYWNpdHlPZkxheWVyKT1cInRvZ2dsZU9wYWNpdHlPZkxheWVyLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAodG9nZ2xlVmlzaWJpbGl0eU9mTW9kZWwpPVwidG9nZ2xlVmlzaWJpbGl0eU9mTW9kZWwuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICh0b2dnbGVWaXNpYmlsaXR5T2ZMYXllcik9XCJ0b2dnbGVWaXNpYmlsaXR5T2ZMYXllci5lbWl0KCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2xpYi1wcm9qZWN0LW1vZGVscz5cclxuICAgICAgPC9saWItYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lcj5cclxuICAgIH1cclxuICB9XHJcbiAgPC9saWItYmltcGx1cy1mbG9hdGluZy1iYXItYm9keT5cclxuPC9saWItYmltcGx1cy1mbG9hdGluZy1iYXI+XHJcbiJdfQ==
@@ -279,7 +279,7 @@ export class BimplusToolHubComponent extends BimplusLocalizedWidgetComponent {
279
279
  this.layoutManagerService.registerObject(this.element, this.componentId, '#center-menu-fp-id', true, DEFAULT_POSITION_LEFT, DEFAULT_POSITION_TOP);
280
280
  this.layoutManagerService.registeredItems$.subscribe(items => {
281
281
  const layoutManagerItem = items.find(item => item.id === this.componentId);
282
- this.isCollapsed = !!layoutManagerItem?.isCollapsed;
282
+ this.isCollapsed = Boolean(layoutManagerItem?.isCollapsed);
283
283
  });
284
284
  }
285
285
  ngAfterViewInit() {
@@ -304,7 +304,7 @@ export class BimplusToolHubComponent extends BimplusLocalizedWidgetComponent {
304
304
  return SVGGenerator.getSVGCenterSubMenuItemPath(this._subMenuUnits);
305
305
  }
306
306
  toggleMenu() {
307
- this.isCollapsed = !this.isCollapsed;
307
+ this.layoutManagerService.updateCollapsed(!this.isCollapsed, this.componentId);
308
308
  setTimeout(() => {
309
309
  this.layoutManagerService.checkPosition('center-menu-fp-id', this.getSelector(), undefined, 0, 0, true);
310
310
  });
@@ -448,4 +448,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
448
448
  }], subItemClicked: [{
449
449
  type: Output
450
450
  }] } });
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy10b29sLWh1Yi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9iaW1wbHVzLXRvb2wtaHViL2JpbXBsdXMtdG9vbC1odWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy10b29sLWh1Yi9iaW1wbHVzLXRvb2wtaHViLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFzQyxNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQTtBQUNsSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBOzs7Ozs7QUFJekUsZ0RBQWdEO0FBRWhELFNBQVMsMkJBQTJCO0lBQ2xDLE1BQU0sUUFBUSxHQUEwQjtRQUN0QyxpQkFBaUIsRUFBRSxFQUFFO1FBQ3JCLGVBQWUsRUFBRSxHQUFHO1FBQ3BCLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLFNBQVMsRUFBRSxLQUFL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VSxDQUFDLGdCQUFnQixDQUFDLGlCQUdkLGlCQUFpQixDQUFDLFNBQVM7cUxBd0I3QixVQUFVO3NCQUF0QixLQUFLO2dCQXlCTyxLQUFLO3NCQUFqQixLQUFLO2dCQXdCRixXQUFXO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBeUJFLFVBQVU7c0JBQWpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUM1QixXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIGJvb2xlYW5BdHRyaWJ1dGUsIEVsZW1lbnRSZWYsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCB9IGZyb20gXCIuLy4uL2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQuY29tcG9uZW50XCJcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTVkdHZW5lcmF0b3IgfSBmcm9tICcuL3N2Z0dlbmVyYXRvcic7XHJcbmltcG9ydCB7IFRvb2xIdWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90b29sLWh1Yi1pdGVtL3Rvb2wtaHViLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbEh1YlN1Ykl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Rvb2wtaHViLXN1Yi1pdGVtL3Rvb2wtaHViLXN1Yi1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyYWdnYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLmRpcmVjdGl2ZSdcclxuaW1wb3J0IHsgVG9vbEh1Ykl0ZW0sIFRvb2xIdWJTdWJJdGVtLCBUb29sSHViVmlzdWFsU2V0dGluZ3MsIFRvb2xIdWJJdGVtVW5pdHMsIFRvb2xIdWJJdGVtU3RhdGVzIH0gZnJvbSAnLi9iaW1wbHVzLXRvb2wtaHViLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IExheW91dE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlJztcclxuLy9pbXBvcnQgeyBmaXJlRXZlbnQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVEZWZhdWx0VmlzdWFsU2V0dGluZ3MoKTogVG9vbEh1YlZpc3VhbFNldHRpbmdzIHtcclxuICBjb25zdCBzZXR0aW5nczogVG9vbEh1YlZpc3VhbFNldHRpbmdzID0ge1xyXG4gICAgc3ViTWVudVN0YXJ0QW5nbGU6IDUwLFxyXG4gICAgc3ViTWVudUVuZEFuZ2xlOiAxMzAsXHJcbiAgICBzdmdSYWRpdXNJbm5lcjogNS43NSxcclxuICAgIHN2Z1JhZGl1czogMTAuMjUsXHJcbiAgICBzdWJNZW51Q2VudGVyOiBbMTcuMjUsIDE3LjVdLFxyXG4gICAgc3ViTWVudVJhZGl1czogMTUuNSxcclxuICAgIHN1Yk1lbnVXaWR0aDogNTIsXHJcbiAgICBkZWFkWm9uZUNlbnRlcjogWzE3LCAxOF0sXHJcbiAgICBkZWFkWm9uZVdpZHRoOiAxNDAsXHJcbiAgICBkZWFkWm9uZVJhZGl1czogMjIsXHJcbiAgICBkZWFkWm9uZVN0YXJ0QW5nbGU6IDQ1LFxyXG4gICAgZGVhZFpvbmVFbmRBbmdsZTogMTM1XHJcbiAgfVxyXG4gIHJldHVybiBzZXR0aW5ncztcclxufVxyXG5cclxuLy8gVXNlIHdoZW4gaW1wbGVtZW50aW5nIGVtYmVkZGVkIG1vZGVcclxuLy8gZnVuY3Rpb24gY3JlYXRlRW1iZWRkZWRTZXR0aW5ncygpIDogVG9vbEh1YlZpc3VhbFNldHRpbmdze1xyXG4vLyAgIGNvbnN0IHNldHRpbmdzIDogVG9vbEh1YlZpc3VhbFNldHRpbmdzID0ge1xyXG4vLyAgICAgc3ViTWVudVN0YXJ0QW5nbGUgOiA1MCxcclxuLy8gICAgIHN1Yk1lbnVFbmRBbmdsZSA6IDEzMCxcclxuLy8gICAgIHN2Z1JhZGl1c0lubmVyIDogNCxcclxuLy8gICAgIHN2Z1JhZGl1cyA6IDcuMjUsXHJcbi8vICAgICBzdWJNZW51Q2VudGVyIDogWzE3LjI1LCAxNy4zXSxcclxuLy8gICAgIHN1Yk1lbnVSYWRpdXMgOiAxNi4yLFxyXG4vLyAgICAgc3ViTWVudVdpZHRoIDogNjIsXHJcbi8vICAgICBkZWFkWm9uZUNlbnRlciA6IFsxNi41LCAxNl0sXHJcbi8vICAgICBkZWFkWm9uZVdpZHRoIDogMTIwLFxyXG4vLyAgICAgZGVhZFpvbmVSYWRpdXMgOiAxOCxcclxuLy8gICAgIGRlYWRab25lU3RhcnRBbmdsZSA6IDM1LFxyXG4vLyAgICAgZGVhZFpvbmVFbmRBbmdsZSA6IDE0NVxyXG4vLyAgIH1cclxuLy8gICByZXR1cm4gc2V0dGluZ3M7XHJcbi8vIH1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRJdGVtcygpOiBBcnJheTxUb29sSHViSXRlbT4ge1xyXG4gIGNvbnN0IGl0ZW1zOiBBcnJheTxUb29sSHViSXRlbT4gPSBbXHJcbiAgICAvLy0tLSBjcmVhdGUgdGFzayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIHtcclxuICAgICAgYnV0dG9uSWQ6ICdjbUJ1dENyZWF0ZVRhc2snLFxyXG4gICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLWNyZWF0ZS10YXNrJyxcclxuICAgICAgdGV4dDogJ19DcmVhdGVfaXNzdWVfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfQ3JlYXRlX2lzc3VlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfQ3JlYXRlX2lzc3VlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuXHJcbiAgICAvLy0tLSBxdWFudGl0eSB0YWtlb2ZmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0UXVhbnRpdHlUYWtlT2ZmJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1xdWFudGl0eS10YWtlLW9mZicsXHJcbiAgICAgIHRleHQ6ICdfUXVhbnRpdHlfdGFrZV9PZmZfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfUXVhbnRpdHlfdGFrZV9PZmZfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19RdWFudGl0eV90YWtlX09mZl9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gbWFya3VwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0TWFya3VwJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1tYXJrdXAnLFxyXG4gICAgICB0ZXh0OiAnX01hcmt1cHNfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfTWFya3Vwc19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX01hcmt1cHNfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICB9LFxyXG5cclxuICAgIC8vLS0tIHNlY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRTZWN0aW9uJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1zZWN0aW9uJyxcclxuICAgICAgdGV4dDogJ19TZWN0aW9uaW5nX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX1NlY3Rpb25pbmdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19TZWN0aW9uaW5nX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuXHJcbiAgICAvLy0tLSBoaWRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0T2JqVHJhbnNwTWVudScsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tb2JqLXRyYW5zcCcsXHJcbiAgICAgIHRleHQ6ICdfSGlkZV9vYmplY3RzX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX0hpZGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX0hpZGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gaXNvbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIHtcclxuICAgICAgYnV0dG9uSWQ6ICdjbUJ1dE9ialNlbCcsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tb2JqLXNlbGVjdCcsXHJcbiAgICAgIHRleHQ6ICdfSXNvbGF0ZV9vYmplY3RzX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX0lzb2xhdGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX0lzb2xhdGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gbmF2aWdhdGlvbiBtYXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXROYXZpZ2F0aW9uTWFwJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1uYXZpZ2F0aW9uLW1hcCcsXHJcbiAgICAgIHRleHQ6ICdfTmF2aWdhdGlvbl9uYXBfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfTmF2aWdhdGlvbl9uYXBfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19OYXZpZ2F0aW9uX25hcF9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gZnVsbHNjcmVlbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRGdWxsU2NyZWVuJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1mdWxsc2NyZWVuJyxcclxuICAgICAgdGV4dDogJ19GdWxsc2NyZWVuX25vZGVfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfRnVsbHNjcmVlbl9ub2RlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfRnVsbHNjcmVlbl9ub2RlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuICAgIC8vLS0tIHByb2plY3QgbmF2aWdhdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0UHJvamVjdE5hdmlnYXRvcicsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tcHJvamVjdC1uYXZpZ2F0b3InLFxyXG4gICAgICB0ZXh0OiAnX1Byb2plY3RfbmF2aWdhdG9yX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX1Byb2plY3RfbmF2aWdhdG9yX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfUHJvamVjdF9uYXZpZ2F0b3JfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICB9LFxyXG5cclxuICAgIC8vLS0tIHJlc2V0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLW9iai1yZXNldCcsXHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRSZXNldE9iaicsXHJcbiAgICAgIHRleHQ6ICdfUmVzZXRfdmlld3BvcnRfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfUmVzZXRfdmlld3BvcnRfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19SZXNldF92aWV3cG9ydF9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcbiAgICAvLy0tLSB2aWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0UmVzZXRWcCcsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tcmVzZXQtdnAnLFxyXG4gICAgICB0ZXh0OiAnX1NlbGVjdF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX1NlbGVjdF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfU2VsZWN0X3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHN1Yk1lbnVJZDogJ2NtYi12aWV3LXN1Ym1lbnUnLFxyXG4gICAgICBzdWJJdGVtczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJ1dHRvbklkOiAnY21CdXRGcm9udFZpZXcnLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1mcm9udC12aWV3JyxcclxuICAgICAgICAgIHRleHQ6ICdfRnJvbnRfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICdfRnJvbnRfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19Gcm9udF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICAgICAgYWN0aW9uQ2xpY2s6ICdjZW50ZXJNZW51RnJvbnRWaWV3Q2xpY2snLFxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIC8vLS0tIFRvcCBWaWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJ1dHRvbklkOiAnY21CdXRUb3BWaWV3JyxcclxuICAgICAgICAgIGljb25DbGFzczogJ3VpLWljb24tdG9wLXZpZXcnLFxyXG4gICAgICAgICAgdGV4dDogJ19Ub3Bfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICdfVG9wX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfVG9wX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICBhY3Rpb25DbGljazogJ2NlbnRlck1lbnVUb3BWaWV3Q2xpY2snLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8tLS0gU2lkZSBWaWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJ1dHRvbklkOiAnY21CdXRTaWRlVmlldycsXHJcbiAgICAgICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLXNpZGUtdmlldycsXHJcbiAgICAgICAgICB0ZXh0OiAnX1NpZGVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICdfU2lkZV92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICAgICAgdG9vbHRpcERpc2FibGVkOiAnX1NpZGVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIGFjdGlvbkNsaWNrOiAnY2VudGVyTWVudVNpZGVWaWV3Q2xpY2snLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8tLS0gUGVyc3BlY3RpdmUgVmlldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICB7XHJcbiAgICAgICAgICBidXR0b25JZDogJ2NtQnV0UGVyc3BlY3RpdmVWaWV3JyxcclxuICAgICAgICAgIGljb25DbGFzczogJ3VpLWljb24tcGVyc3BlY3RpdmUtdmlldycsXHJcbiAgICAgICAgICB0ZXh0OiAnX1BlcnNwZWN0aXZlX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwOiAnX1BlcnNwZWN0aXZlX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfUGVyc3BlY3RpdmVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIGFjdGlvbkNsaWNrOiAnY2VudGVyTWVudVBlcnNwZWN0aXZlVmlld0NsaWNrJyxcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICBdXHJcblxyXG4gIC8vIFNldCBhbGwgdG9vbCBodWIgaXRlbXMgc3RhdGVzIHRvIGluYWN0aXZlIGFuZCBkaXNhYmxlZC4gSG9zdCBBcHAgbXVzdCBkZWZpbmUgc3RhdGVzXHJcbiAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHsgaXRlbS5hY3RpdmUgPSBmYWxzZTsgaXRlbS5kaXNhYmxlZCA9IHRydWUgfSlcclxuXHJcbiAgcmV0dXJuIGl0ZW1zO1xyXG59XHJcblxyXG5jb25zdCBERUZBVUxUX1BPU0lUSU9OX0xFRlQgPSAzNTA7XHJcbmNvbnN0IERFRkFVTFRfUE9TSVRJT05fVE9QICA9IDY3MDtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYmltcGx1cy10b29sLWh1YicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUb29sSHViSXRlbUNvbXBvbmVudCxcclxuICAgIFRvb2xIdWJTdWJJdGVtQ29tcG9uZW50LFxyXG4gICAgRHJhZ2dhYmxlRGlyZWN0aXZlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtUcmFuc2xhdGVTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy10b29sLWh1Yi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JpbXBsdXMtdG9vbC1odWIuY29tcG9uZW50Lmxlc3MnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c1Rvb2xIdWJDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LEFmdGVyVmlld0luaXQge1xyXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsYXlvdXRNYW5hZ2VyU2VydmljZTogTGF5b3V0TWFuYWdlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6UmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICAgICAgICAgXHJcbiAgICB0aGlzLml0ZW1zID0gY3JlYXRlRGVmYXVsdEl0ZW1zKCk7XHJcbiAgICB0aGlzLl92aXN1YWxTZXR0aW5ncyA9IGNyZWF0ZURlZmF1bHRWaXN1YWxTZXR0aW5ncygpO1xyXG4gICAgdGhpcy5fdW5pdHMgPSB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRNZW51SXRlbVVuaXRzKCk7XHJcbiAgICB0aGlzLl9zdWJNZW51VW5pdHMgPSB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRTdWJNZW51SXRlbVVuaXRzKCk7XHJcbiAgICB0aGlzLl9hbm51bGFyU2VjdG9yID0gU1ZHR2VuZXJhdG9yLmdlbmVyYXRlQW5udWxhclNlY3Rvcih0aGlzLl92aXN1YWxTZXR0aW5ncyk7XHJcbiAgICB0aGlzLl9hbm51bGFyU2VjdG9yQm9yZGVyID0gU1ZHR2VuZXJhdG9yLmdlbmVyYXRlQW5udWxhclNlY3RvckJvcmRlcih0aGlzLl92aXN1YWxTZXR0aW5ncyk7XHJcbiAgICB0aGlzLl9kZWFkWm9uZUFubnVsYXJTZWN0b3IgPSBTVkdHZW5lcmF0b3IuZ2VuZXJhdGVEZWFkWm9uZUFubnVsYXJTZWN0b3IodGhpcy5fdmlzdWFsU2V0dGluZ3MpO1xyXG5cclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gcHVibGljIGZpZWxkc1xyXG4gIFxyXG4gIGdldCBpdGVtU3RhdGVzKCk6IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbVN0YXRlcztcclxuICB9XHJcbiAgQElucHV0KCkgc2V0IGl0ZW1TdGF0ZXModmFsdWU6IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPikge1xyXG4gICAgdGhpcy5faXRlbVN0YXRlcyA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZXRJdGVtU3RhdGVzKHRoaXMuX2l0ZW1TdGF0ZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0SXRlbVN0YXRlcyhpdGVtU3RhdGVzOiBBcnJheTxUb29sSHViSXRlbVN0YXRlcz4pIHtcclxuICAgIGZvciAoY29uc3QgaXRlbVN0YXRlIG9mIGl0ZW1TdGF0ZXMpIHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuX2l0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmJ1dHRvbklkID09PSBpdGVtU3RhdGUuYnV0dG9uSWQpO1xyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIGlmIChpdGVtU3RhdGUuYWN0aXZlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgaXRlbS5hY3RpdmUgPSBpdGVtU3RhdGUuYWN0aXZlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbVN0YXRlLmRpc2FibGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSBpdGVtU3RhdGUuZGlzYWJsZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdXBkYXRlQWN0aXZhdGlvblN0YXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IGl0ZW1zKCk6IEFycmF5PFRvb2xIdWJJdGVtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBpdGVtcyh2YWx1ZTogQXJyYXk8VG9vbEh1Ykl0ZW0+KSB7XHJcbiAgICB0aGlzLl9pdGVtcyA9IHZhbHVlO1xyXG5cclxuICAgIGNvbnN0IGJ1dHRvbnNMZW5ndGggPSAodGhpcy5faXRlbXM/Lmxlbmd0aCkgPiAwID8gdGhpcy5faXRlbXMubGVuZ3RoIDogMTtcclxuICAgIGNvbnN0IHJvb3RTdHlsZSA9IGRvY3VtZW50Py5kb2N1bWVudEVsZW1lbnQ/LnN0eWxlO1xyXG4gICAgaWYgKHJvb3RTdHlsZSkge1xyXG4gICAgICBjb25zdCBtZW51SXRlbXMgPSByb290U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcIi0tbWVudS1pdGVtc1wiKTtcclxuICAgICAgaWYgKHBhcnNlSW50KG1lbnVJdGVtcykgIT09IGJ1dHRvbnNMZW5ndGgpIHtcclxuICAgICAgICByb290U3R5bGUuc2V0UHJvcGVydHkoXCItLW1lbnUtaXRlbXNcIiwgYnV0dG9uc0xlbmd0aC50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRyYW5zZmVyIGRpc2FibGVkIHN0YXRlcywgd2hpY2ggY2FuIGRlZmluZWQgYnkgaG9zdCBhcHBcclxuICAgIHRoaXMuc2V0SXRlbVN0YXRlcyh0aGlzLl9pdGVtU3RhdGVzKTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVTdWJJdGVtcygpOiBBcnJheTxUb29sSHViU3ViSXRlbT4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdWJJdGVtcztcclxuICB9XHJcblxyXG4gIGdldCBpc0NvbGxhcHNlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0NvbGxhcHNlZDtcclxuICB9XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXHJcbiAgc2V0IGlzQ29sbGFwc2VkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc0NvbGxhcHNlZCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVuaXRzKCk6IFRvb2xIdWJJdGVtVW5pdHMge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VuaXRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN1Yk1lbnVVbml0cygpOiBUb29sSHViSXRlbVVuaXRzIHtcclxuICAgIHJldHVybiB0aGlzLl9zdWJNZW51VW5pdHM7XHJcbiAgfVxyXG5cclxuICBnZXQgYW5udWxhclNlY3RvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FubnVsYXJTZWN0b3I7XHJcbiAgfVxyXG5cclxuICBnZXQgYW5udWxhclNlY3RvckJvcmRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FubnVsYXJTZWN0b3JCb3JkZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVhZFpvbmVBbm51bGFyU2VjdG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVhZFpvbmVBbm51bGFyU2VjdG9yO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRW1iZWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNGb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzQWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBAT3V0cHV0KCkgaXRlbUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgc3ViSXRlbUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBcclxuICAvLyBEZWZpbmUgZXZlbnQgaGFuZGxlciBmb3IgcmV1c2luZyBkcmFnZ2FibGUgYWxzbyBmcm9tIHJlc2l6ZSBwYXJlbnQgXHJcbiAgLy9AT3V0cHV0KCkgcmVzaXplZHJhZ2dpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPFtudW1iZXIsbnVtYmVyXT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBjb21wb25lbnRJZCA9ICdjZW50ZXItbWVudS1mcC1pZCc7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsOyAgLy8gSW5pdGlhbGl6ZSB0byBudWxsXHJcblxyXG4gIG5nT25Jbml0KCk6dm9pZHsgICBcclxuICAgIHRoaXMubGF5b3V0TWFuYWdlclNlcnZpY2UucmVnaXN0ZXJPYmplY3QodGhpcy5lbGVtZW50LHRoaXMuY29tcG9uZW50SWQsJyNjZW50ZXItbWVudS1mcC1pZCcsdHJ1ZSxERUZBVUxUX1BPU0lUSU9OX0xFRlQsREVGQVVMVF9QT1NJVElPTl9UT1ApO1xyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5yZWdpc3RlcmVkSXRlbXMkLnN1YnNjcmliZShpdGVtcyA9PiB7XHJcbiAgICAgIGNvbnN0IGxheW91dE1hbmFnZXJJdGVtID0gaXRlbXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHRoaXMuY29tcG9uZW50SWQpO1xyXG4gICAgICB0aGlzLmlzQ29sbGFwc2VkID0gISFsYXlvdXRNYW5hZ2VySXRlbT8uaXNDb2xsYXBzZWQ7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gIH1cclxuICBcclxuICBuZ0FmdGVyVmlld0luaXQoKTp2b2lke1xyXG4gICAvLyBpZiB0aGUgY29tcG9uZW50IHdhbnRzIHRvIGJlIHJlZ2lzdGVyZWQgaW4gbGF5b3V0IG1hbmFnZXIgc3lzdGVtXHJcbiAgIC8vIFN1YnNjcmliZSB0byB0aGUgb2JzZXJ2YWJsZVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5wYXJlbnRBcHBSZWN0JC5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZVBhcmVudEFwcFJlY3RTaXplQ2hhbmdlKHZhbHVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICAvLyAjZW5kcmVnaW9uIHB1YmxpYyBmaWVsZHNcclxuIFxyXG4gIC8vICNyZWdpb24gcHVibGljIG1ldGhvZHNcclxuICBwdWJsaWMgZ2V0U1ZHVmlld0JveCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNWR0dlbmVyYXRvci5nZXRTVkdWaWV3Qm94KHRoaXMuX3VuaXRzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTVkdDZW50ZXJNZW51UGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNWR0dlbmVyYXRvci5nZXRTVkdDZW50ZXJNZW51UGF0aCh0aGlzLl91bml0cyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U1ZHQ2VudGVyTWVudUl0ZW1QYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU1ZHR2VuZXJhdG9yLmdldFNWR0NlbnRlck1lbnVJdGVtUGF0aCh0aGlzLl91bml0cyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U1ZHQ2VudGVyU3ViTWVudUl0ZW1QYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU1ZHR2VuZXJhdG9yLmdldFNWR0NlbnRlclN1Yk1lbnVJdGVtUGF0aCh0aGlzLl9zdWJNZW51VW5pdHMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZU1lbnUoKSB7XHJcbiAgICB0aGlzLmlzQ29sbGFwc2VkID0gIXRoaXMuaXNDb2xsYXBzZWQ7XHJcbiAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgIHRoaXMubGF5b3V0TWFuYWdlclNlcnZpY2UuY2hlY2tQb3NpdGlvbignY2VudGVyLW1lbnUtZnAtaWQnLHRoaXMuZ2V0U2VsZWN0b3IoKSx1bmRlZmluZWQsMCwwLHRydWUpOyAgICAgIFxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZmluZFRvb2xIdWJJdGVtQnlJZChpZDogc3RyaW5nKTogVG9vbEh1Ykl0ZW0gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmZpbmQoeCA9PiB4LmJ1dHRvbklkID09PSBpZCk7XHJcbiAgfVxyXG5cclxuICBjbGlja1Rvb2xIdWJJdGVtKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5maW5kVG9vbEh1Ykl0ZW1CeUlkKGFjdGlvbik7XHJcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbT8uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXRlbUNsaWNrZWQuZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgY2xpY2tUb29sSHViU3ViSXRlbShhY3Rpb246IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLl9hY3RpdmVTdWJJdGVtcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zLmZpbmQoeCA9PiB4LmJ1dHRvbklkID09PSBhY3Rpb24pO1xyXG4gICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1Ykl0ZW1DbGlja2VkLmVtaXQoYWN0aW9uKTtcclxuICAgIHRoaXMuY2xvc2VBY3RpdmVTdWJJdGVtc1ZpZXcoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVRvb2xIdWJJdGVtQWN0aXZlKGJ1dHRvbklkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbmRUb29sSHViSXRlbUJ5SWQoYnV0dG9uSWQpO1xyXG4gICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGl0ZW0uYWN0aXZlID0gIWl0ZW0uYWN0aXZlO1xyXG5cclxuICAgIHRoaXMuX3VwZGF0ZUFjdGl2YXRpb25TdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU3ViSXRlbXNWaWV3KGJ1dHRvbklkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbmRUb29sSHViSXRlbUJ5SWQoYnV0dG9uSWQpO1xyXG4gICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGlzYWJsZWQgfHwgIWl0ZW0uc3ViSXRlbXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGl0ZW0uYWN0aXZlID0gIWl0ZW0uYWN0aXZlO1xyXG4gICAgaWYgKGl0ZW0uYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zVmlldyA9IGl0ZW07XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zID0gaXRlbS5zdWJJdGVtcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zVmlldyA9IG51bGw7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlQWN0aXZlU3ViSXRlbXNWaWV3KCkge1xyXG4gICAgaWYgKHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zVmlldykge1xyXG4gICAgICB0aGlzLl9hY3RpdmVTdWJJdGVtc1ZpZXcuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zVmlldyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9hY3RpdmVTdWJJdGVtcyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBzZXRIb3ZlcmVkU3RhdGUoZWxlbWVudDogc3RyaW5nLCBob3ZlcmVkOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX2hvdmVyZWRFbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpO1xyXG4gICAgY29uc3Qgc3RvcmVkQ291bnRIb3ZlcmQgPSB0aGlzLl9ob3ZlcmVkRWxlbWVudHMubGVuZ3RoO1xyXG5cclxuICAgIGlmIChpbmRleCA+PSAwICYmICFob3ZlcmVkKSB7XHJcbiAgICAgIHRoaXMuX2hvdmVyZWRFbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpbmRleCA8IDAgJiYgaG92ZXJlZCkge1xyXG4gICAgICB0aGlzLl9ob3ZlcmVkRWxlbWVudHMucHVzaChlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RvcmVkQ291bnRIb3ZlcmQgPiAwICYmIHRoaXMuX2hvdmVyZWRFbGVtZW50cy5sZW5ndGggPT09IDApIHtcclxuXHJcbiAgICAgIC8vIElmIGhvdmVyZWQgZWxlbWVudHMgY291bnQgcmVhY2hlcyB6ZXJvLCBjaGVjayBhZ2FpbiBhIGJpdCBkZWxheWVkLiBJZiBub3RoaW5nIGhvdmVyZWQgYXQgdGhhdCB0aW1lLCBjbG9zZSBzdWJtZW51XHJcbiAgICAgIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5faG92ZXJlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZUFjdGl2ZVN1Ykl0ZW1zVmlldygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlbGVjdG9yKCk6c3RyaW5ne1xyXG4gICAgcmV0dXJuIHRoaXMuaXNDb2xsYXBzZWQgPyAnI2NlbnRlci1tZW51LWNvbnRyb2xsZXInOicuY2VudGVyLW1lbnUtZnAnO1xyXG4gIH1cclxuXHJcbiAgZHJhZ0VsZW1lbnQoZXZlbnQ6IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcclxuICAgIGNvbnN0IGRlbHRhWDEgPSBldmVudFswXTtcclxuICAgIGNvbnN0IGRlbHRhWTEgPSBldmVudFsxXTsgICAgICAgIFxyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5jaGVja1Bvc2l0aW9uKCdjZW50ZXItbWVudS1mcC1pZCcsdGhpcy5nZXRTZWxlY3RvcigpLHVuZGVmaW5lZCxkZWx0YVgxLGRlbHRhWTEpICAgIFxyXG4gIH1cclxuXHJcbiAgb25EcmFnRW5kKCl7XHJcbiAgICB0aGlzLmxheW91dE1hbmFnZXJTZXJ2aWNlLmhhbmRsZURyYWdFbmQoJ2NlbnRlci1tZW51LWZwLWlkJyk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIHB1YmxpYyBtZXRob2RzXHJcblxyXG4gIC8vICNyZWdpb24gcHJpdmF0ZSBmaWVsZHNcclxuICBwcml2YXRlIF9pc0NvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2l0ZW1TdGF0ZXM6IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPiA9IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPigpO1xyXG4gIHByaXZhdGUgX2l0ZW1zOiBBcnJheTxUb29sSHViSXRlbT4gPSBBcnJheTxUb29sSHViSXRlbT4oKTtcclxuICBwcml2YXRlIF9hY3RpdmVTdWJJdGVtc1ZpZXc6IFRvb2xIdWJJdGVtIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfYWN0aXZlU3ViSXRlbXM6IEFycmF5PFRvb2xIdWJTdWJJdGVtPiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX3Zpc3VhbFNldHRpbmdzOiBUb29sSHViVmlzdWFsU2V0dGluZ3M7XHJcbiAgcHJpdmF0ZSBfdW5pdHM6IFRvb2xIdWJJdGVtVW5pdHM7XHJcbiAgcHJpdmF0ZSBfc3ViTWVudVVuaXRzOiBUb29sSHViSXRlbVVuaXRzO1xyXG4gIHByaXZhdGUgX2FubnVsYXJTZWN0b3I6IHN0cmluZztcclxuICBwcml2YXRlIF9hbm51bGFyU2VjdG9yQm9yZGVyOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfZGVhZFpvbmVBbm51bGFyU2VjdG9yOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfaG92ZXJlZEVsZW1lbnRzOiBBcnJheTxzdHJpbmc+ID0gQXJyYXk8c3RyaW5nPigpO1xyXG4gIC8vICNlbmRyZWdpb24gcHJpdmF0ZSBmaWVsZHNcclxuXHJcbiAgLy8gI3JlZ2lvbiBwcml2YXRlIG1ldGhvZHNcclxuICBwcml2YXRlIGNhbGN1bGF0ZUN1cnJlbnRNZW51SXRlbVVuaXRzKCk6IFRvb2xIdWJJdGVtVW5pdHMge1xyXG4gICAgcmV0dXJuIFNWR0dlbmVyYXRvci5kcmF3TWVudUl0ZW1TdmcodGhpcy5fdmlzdWFsU2V0dGluZ3Muc3ZnUmFkaXVzLCB0aGlzLl92aXN1YWxTZXR0aW5ncy5zdmdSYWRpdXNJbm5lciwgdGhpcy5faXRlbXMubGVuZ3RoLCB0aGlzLmlzRW1iZWRkZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVDdXJyZW50U3ViTWVudUl0ZW1Vbml0cygpOiBUb29sSHViSXRlbVVuaXRzIHtcclxuICAgIHJldHVybiBTVkdHZW5lcmF0b3IuZHJhd01lbnVJdGVtU3ZnKHRoaXMuX3Zpc3VhbFNldHRpbmdzLnN2Z1JhZGl1cywgdGhpcy5fdmlzdWFsU2V0dGluZ3Muc3ZnUmFkaXVzSW5uZXIsIDIwLCB0aGlzLmlzRW1iZWRkZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVQYXJlbnRBcHBSZWN0U2l6ZUNoYW5nZShwYXJlbnRSZWN0OkRPTVJlY3QgfCB1bmRlZmluZWQpOnZvaWR7XHJcbiAgICB0aGlzLmxheW91dE1hbmFnZXJTZXJ2aWNlLmNoZWNrUG9zaXRpb24odGhpcy5jb21wb25lbnRJZCx0aGlzLmdldFNlbGVjdG9yKCkscGFyZW50UmVjdCwwLDAsdHJ1ZSk7ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb25lT3JNb3JlSXRlbXNBY3RpdmUoKXtcclxuICAgIGZvcihjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpe1xyXG4gICAgICBpZihpdGVtLmFjdGl2ZSA9PT0gdHJ1ZSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVBY3RpdmF0aW9uU3RhdGUoKXtcclxuICAgIGlmKHRoaXMuX29uZU9yTW9yZUl0ZW1zQWN0aXZlKCkpe1xyXG4gICAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vICNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNlbnRlci1tZW51XCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjZW50ZXItbWVudS1mcFwiXHJcbiAgICBpZD1cImNlbnRlci1tZW51LWZwLWlkXCJcclxuICAgIFtuZ0NsYXNzXT1cImFjdGl2ZVN1Ykl0ZW1zID8gJ3N1Ym1lbnUtYWN0aXZlJyA6ICcnXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGxpYkRyYWdnYWJsZVxyXG4gICAgICBpZD1cImNlbnRlci1tZW51LWNvbnRyb2xsZXJcIlxyXG4gICAgICBjbGFzcz1cImNlbnRlci1tZW51LWNvbnRyb2xsZXIgZHJhZ2dlclwiXHJcbiAgICAgIGRhdGEtdGVzdD1cInRvb2xodWJfY29udHJvbGxlclwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICBvcGVuZWQ6ICFpc0NvbGxhcHNlZCxcclxuICAgICAgICBhY3RpdmU6IGlzQWN0aXZlXHJcbiAgICAgIH1cIlxyXG4gICAgICBbdGl0bGVdPVwiXHJcbiAgICAgICAgaXNDb2xsYXBzZWRcclxuICAgICAgICAgID8gKCdfU2hvd190b29saHViX3Rvb2x0aXAnIHwgdHJhbnNsYXRlKVxyXG4gICAgICAgICAgOiAoJ19NaW5pbWl6ZV90b29saHViX3Rvb2x0aXAnIHwgdHJhbnNsYXRlKSAgICAgICAgICBcclxuICAgICAgXCJcclxuICAgICAgKGNsaWNrZWQpPVwidG9nZ2xlTWVudSgpXCJcclxuICAgICAgKGRyYWdnaW5nKT1cImRyYWdFbGVtZW50KCRldmVudClcIlxyXG4gICAgICAoZHJhZ0VuZCkgPVwib25EcmFnRW5kKClcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNlbnRlci1tZW51LWNpcmNsZS1ib3JkZXItaW5uZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNlbnRlci1tZW51LWNpcmNsZS1ib3JkZXItb3V0ZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ21lbnVDaXJjbGVCb3JkZXJPdXRlcicsIGZhbHNlKVwiXHJcbiAgICAgIChtb3VzZWVudGVyKT1cInNldEhvdmVyZWRTdGF0ZSgnbWVudUNpcmNsZUJvcmRlck91dGVyJywgdHJ1ZSlcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBsaWJEcmFnZ2FibGVcclxuICAgICAgY2xhc3M9XCJjZW50ZXItbWVudS1jaXJjbGVcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ21lbnVDaXJjbGUnLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ21lbnVDaXJjbGUnLCB0cnVlKVwiXHJcbiAgICAgIChkcmFnZ2luZyk9XCJkcmFnRWxlbWVudCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPGxpYi10b29sLWh1Yi1pdGVtXHJcbiAgICAgICAgbGliRHJhZ2dhYmxlXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIlxyXG4gICAgICAgIFthdHRyLmRhdGEtdGVzdF09XCIndG9vbGh1Yl9pdGVtXycgKyBpdGVtLmJ1dHRvbklkXCJcclxuICAgICAgICBbdGl0bGVdPVwiaXRlbS50b29sdGlwIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgICBbYWN0aXZlXT1cIiEhaXRlbS5hY3RpdmVcIlxyXG4gICAgICAgIFtpc0VuYWJsZWRdPVwiIWl0ZW0uZGlzYWJsZWRcIlxyXG4gICAgICAgIChjbGlja2VkKT1cImNsaWNrVG9vbEh1Ykl0ZW0oaXRlbS5idXR0b25JZClcIlxyXG4gICAgICA+PC9saWItdG9vbC1odWItaXRlbT5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNlbnRlcm1lbnUtYnV0dG9uLXN2Z1wiXHJcbiAgICAgICAgW2F0dHIudmlld0JveF09XCJnZXRTVkdWaWV3Qm94KClcIlxyXG4gICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjbGlwUGF0aCBpZD1cInN2Z0NlbnRlck1lbnVcIiBjbGlwUGF0aFVuaXRzPVwib2JqZWN0Qm91bmRpbmdCb3hcIj5cclxuICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwiZ2V0U1ZHQ2VudGVyTWVudVBhdGgoKVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICA8Y2xpcFBhdGggaWQ9XCJzdmdDZW50ZXJNZW51SXRlbVwiIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJnZXRTVkdDZW50ZXJNZW51SXRlbVBhdGgoKVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICA8Y2xpcFBhdGggaWQ9XCJzdmdDZW50ZXJTdWJNZW51SXRlbVwiIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJnZXRTVkdDZW50ZXJTdWJNZW51SXRlbVBhdGgoKVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICA8Y2xpcFBhdGggaWQ9XCJzdmdDZW50ZXJNZW51U3ViTWVudVwiIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJhbm51bGFyU2VjdG9yXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgPGNsaXBQYXRoXHJcbiAgICAgICAgICBpZD1cInN2Z0NlbnRlck1lbnVTdWJNZW51Qm9yZGVyXCJcclxuICAgICAgICAgIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJhbm51bGFyU2VjdG9yQm9yZGVyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgPGNsaXBQYXRoXHJcbiAgICAgICAgICBpZD1cInN2Z0NlbnRlck1lbnVTdWJNZW51RGVhZFpvbmVcIlxyXG4gICAgICAgICAgY2xpcFBhdGhVbml0cz1cIm9iamVjdEJvdW5kaW5nQm94XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8cGF0aCBbYXR0ci5kXT1cImRlYWRab25lQW5udWxhclNlY3RvclwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAoYWN0aXZlU3ViSXRlbXMpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjZW50ZXItbWVudS1zdWItbWVudS1ib3JkZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnVCb3JkZXInLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnVCb3JkZXInLCB0cnVlKVwiXHJcbiAgICA+PC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiY2VudGVyLW1lbnUtc3ViLW1lbnVcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnUnLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnUnLCB0cnVlKVwiXHJcbiAgICA+XHJcbiAgICAgIDxsaWItdG9vbC1odWItc3ViLWl0ZW1cclxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhY3RpdmVTdWJJdGVtc1wiXHJcbiAgICAgICAgW2F0dHIuZGF0YS10ZXN0XT1cIid0b29saHViX3N1Yml0ZW1fJyArIGl0ZW0uYnV0dG9uSWRcIlxyXG4gICAgICAgIFt0aXRsZV09XCJpdGVtLnRvb2x0aXAgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJjbGlja1Rvb2xIdWJTdWJJdGVtKGl0ZW0uYnV0dG9uSWQpXCJcclxuICAgICAgICAoa2V5cHJlc3MpPVwiY2xpY2tUb29sSHViU3ViSXRlbShpdGVtLmJ1dHRvbklkKVwiXHJcbiAgICAgID48L2xpYi10b29sLWh1Yi1zdWItaXRlbT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNlbnRlci1tZW51LXN1Yi1tZW51LWRlYWQtem9uZVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImlzQ29sbGFwc2VkID8gJ2hpZGRlbicgOiAnJ1wiXHJcbiAgICAgIChtb3VzZWxlYXZlKT1cInNldEhvdmVyZWRTdGF0ZSgnZGVhZFpvbmUnLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ2RlYWRab25lJywgdHJ1ZSlcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
451
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy10b29sLWh1Yi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9iaW1wbHVzLXRvb2wtaHViL2JpbXBsdXMtdG9vbC1odWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy10b29sLWh1Yi9iaW1wbHVzLXRvb2wtaHViLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFzQyxNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQTtBQUNsSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBOzs7Ozs7QUFJekUsZ0RBQWdEO0FBRWhELFNBQVMsMkJBQTJCO0lBQ2xDLE1BQU0sUUFBUSxHQUEwQjtRQUN0QyxpQkFBaUIsRUFBRSxFQUFFO1FBQ3JCLGVBQWUsRUFBRSxHQUFHO1FBQ3BCLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7UUFDNUIsYUFBYSxFQUFFLElBQUk7UUFDbkIsWUFBWSxFQUFFLEVBQUU7UUFDaEIsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN4QixhQUFhLEVBQUUsR0FBRztRQUNsQixjQUFjLEVBQUUsRUFBRTtRQUNsQixrQkFBa0IsRUFBRSxFQUFFO1FBQ3RCLGdCQUFnQixFQUFFLEdBQUc7S0FDdEIsQ0FBQTtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsNkRBQTZEO0FBQzdELCtDQUErQztBQUMvQyw4QkFBOEI7QUFDOUIsNkJBQTZCO0FBQzdCLDBCQUEwQjtBQUMxQix3QkFBd0I7QUFDeEIscUNBQXFDO0FBQ3JDLDRCQUE0QjtBQUM1Qix5QkFBeUI7QUFDekIsbUNBQW1DO0FBQ25DLDJCQUEyQjtBQUMzQiwyQkFBMkI7QUFDM0IsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3QixNQUFNO0FBQ04scUJBQXFCO0FBQ3JCLElBQUk7QUFFSixTQUFTLGtCQUFrQjtJQUN6QixNQUFNLEtBQUssR0FBdUI7UUFDaEMscUVBQXFFO1FBQ3JFO1lBQ0UsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUUscUJBQXFCO1lBQ2hDLElBQUksRUFBRSxtQ0FBbUM7WUFDekMsT0FBTyxFQUFFLG1DQUFtQztZQUM1QyxlQUFlLEVBQUUsbUNBQW1DO1NBQ3JEO1FBRUQsMEVBQTBFO1FBQzFFO1lBQ0UsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLElBQUksRUFBRSx3Q0FBd0M7WUFDOUMsT0FBTyxFQUFFLHdDQUF3QztZQUNqRCxlQUFlLEVBQUUsd0NBQXdDO1NBQzFEO1FBRUQsZ0VBQWdFO1FBQ2hFO1lBQ0UsUUFBUSxFQUFFLGFBQWE7WUFDdkIsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixJQUFJLEVBQUUsOEJBQThCO1lBQ3BDLE9BQU8sRUFBRSw4QkFBOEI7WUFDdkMsZUFBZSxFQUFFLDhCQUE4QjtTQUNoRDtRQUVELGlFQUFpRTtRQUNqRTtZQUNFLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRSxpQkFBaUI7WUFDNUIsSUFBSSxFQUFFLGlDQUFpQztZQUN2QyxPQUFPLEVBQUUsaUNBQWlDO1lBQzFDLGVBQWUsRUFBRSxpQ0FBaUM7U0FDbkQ7UUFFRCw4REFBOEQ7UUFDOUQ7WUFDRSxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsSUFBSSxFQUFFLG1DQUFtQztZQUN6QyxPQUFPLEVBQUUsbUNBQW1DO1lBQzVDLGVBQWUsRUFBRSxtQ0FBbUM7U0FDckQ7UUFFRCxpRUFBaUU7UUFDakU7WUFDRSxRQUFRLEVBQUUsYUFBYTtZQUN2QixTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLElBQUksRUFBRSxzQ0FBc0M7WUFDNUMsT0FBTyxFQUFFLHNDQUFzQztZQUMvQyxlQUFlLEVBQUUsc0NBQXNDO1NBQ3hEO1FBRUQsd0VBQXdFO1FBQ3hFO1lBQ0UsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixTQUFTLEVBQUUsd0JBQXdCO1lBQ25DLElBQUksRUFBRSxxQ0FBcUM7WUFDM0MsT0FBTyxFQUFFLHFDQUFxQztZQUM5QyxlQUFlLEVBQUUscUNBQXFDO1NBQ3ZEO1FBRUQsK0RBQStEO1FBQy9EO1lBQ0UsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLElBQUksRUFBRSxzQ0FBc0M7WUFDNUMsT0FBTyxFQUFFLHNDQUFzQztZQUMvQyxlQUFlLEVBQUUsc0NBQXNDO1NBQ3hEO1FBQ0QsK0RBQStEO1FBQy9EO1lBQ0UsUUFBUSxFQUFFLHVCQUF1QjtZQUNqQyxTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLElBQUksRUFBRSx3Q0FBd0M7WUFDOUMsT0FBTyxFQUFFLHdDQUF3QztZQUNqRCxlQUFlLEVBQUUsd0NBQXdDO1NBQzFEO1FBRUQsK0RBQStEO1FBQy9EO1lBQ0UsU0FBUyxFQUFFLG1CQUFtQjtZQUM5QixRQUFRLEVBQUUsZUFBZTtZQUN6QixJQUFJLEVBQUUscUNBQXFDO1lBQzNDLE9BQU8sRUFBRSxxQ0FBcUM7WUFDOUMsZUFBZSxFQUFFLHFDQUFxQztTQUN2RDtRQUNELDhEQUE4RDtRQUM5RDtZQUNFLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRSxrQkFBa0I7WUFDN0IsSUFBSSxFQUFFLGtDQUFrQztZQUN4QyxPQUFPLEVBQUUsa0NBQWtDO1lBQzNDLGVBQWUsRUFBRSxrQ0FBa0M7WUFDbkQsU0FBUyxFQUFFLGtCQUFrQjtZQUM3QixRQUFRLEVBQUU7Z0JBQ1I7b0JBQ0UsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsU0FBUyxFQUFFLG9CQUFvQjtvQkFDL0IsSUFBSSxFQUFFLGlDQUFpQztvQkFDdkMsT0FBTyxFQUFFLGlDQUFpQztvQkFDMUMsZUFBZSxFQUFFLGlDQUFpQztvQkFDbEQsV0FBVyxFQUFFLDBCQUEwQjtpQkFDeEM7Z0JBRUQsa0VBQWtFO2dCQUNsRTtvQkFDRSxRQUFRLEVBQUUsY0FBYztvQkFDeEIsU0FBUyxFQUFFLGtCQUFrQjtvQkFDN0IsSUFBSSxFQUFFLCtCQUErQjtvQkFDckMsT0FBTyxFQUFFLCtCQUErQjtvQkFDeEMsZUFBZSxFQUFFLCtCQUErQjtvQkFDaEQsV0FBVyxFQUFFLHdCQUF3QjtpQkFDdEM7Z0JBQ0QsbUVBQW1FO2dCQUNuRTtvQkFDRSxRQUFRLEVBQUUsZUFBZTtvQkFDekIsU0FBUyxFQUFFLG1CQUFtQjtvQkFDOUIsSUFBSSxFQUFFLGdDQUFnQztvQkFDdEMsT0FBTyxFQUFFLGdDQUFnQztvQkFDekMsZUFBZSxFQUFFLGdDQUFnQztvQkFDakQsV0FBVyxFQUFFLHlCQUF5QjtpQkFDdkM7Z0JBQ0QsMEVBQTBFO2dCQUMxRTtvQkFDRSxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxTQUFTLEVBQUUsMEJBQTBCO29CQUNyQyxJQUFJLEVBQUUsdUNBQXVDO29CQUM3QyxPQUFPLEVBQUUsdUNBQXVDO29CQUNoRCxlQUFlLEVBQUUsdUNBQXVDO29CQUN4RCxXQUFXLEVBQUUsZ0NBQWdDO2lCQUM5QzthQUNGO1NBQ0Y7S0FDRixDQUFBO0lBRUQsc0ZBQXNGO0lBQ3RGLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFcEUsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFDbEMsTUFBTSxvQkFBb0IsR0FBSSxHQUFHLENBQUM7QUFnQmxDLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSwrQkFBK0I7SUFDMUUsWUFBWSxnQkFBa0MsRUFDMUIsb0JBQTBDLEVBQzFDLHFCQUEyQyxFQUMzQyxPQUFtQjtRQUNyQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUhOLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQjtRQUMzQyxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBMkZDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3ZELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN6QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFdEQsc0VBQXNFO1FBQ3RFLGlFQUFpRTtRQUV6RCxnQkFBVyxHQUFHLG1CQUFtQixDQUFDO1FBQ2xDLGlCQUFZLEdBQXdCLElBQUksQ0FBQyxDQUFFLHFCQUFxQjtRQWdKeEUsNEJBQTRCO1FBRTVCLHlCQUF5QjtRQUNqQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixnQkFBVyxHQUE2QixLQUFLLEVBQXFCLENBQUM7UUFDbkUsV0FBTSxHQUF1QixLQUFLLEVBQWUsQ0FBQztRQUNsRCx3QkFBbUIsR0FBdUIsSUFBSSxDQUFDO1FBQy9DLG9CQUFlLEdBQWlDLElBQUksQ0FBQztRQU9yRCxxQkFBZ0IsR0FBa0IsS0FBSyxFQUFVLENBQUM7UUFoUXhELElBQUksQ0FBQyxLQUFLLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLDJCQUEyQixFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsWUFBWSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsWUFBWSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVqRyxDQUFDO0lBRUQsd0JBQXdCO0lBRXhCLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBYSxVQUFVLENBQUMsS0FBK0I7UUFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFvQztRQUNoRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDakMsQ0FBQztnQkFDRCxJQUFJLFNBQVMsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztnQkFDckMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUdELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsS0FBeUI7UUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxNQUFNLFNBQVMsR0FBRyxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssQ0FBQztRQUNuRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzdELElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLGFBQWEsRUFBRSxDQUFDO2dCQUMxQyxTQUFTLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0gsQ0FBQztRQUVELDBEQUEwRDtRQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUNJLFdBQVcsQ0FBQyxLQUFjO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQWNELFFBQVE7UUFDTixJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBQyxvQkFBb0IsRUFBQyxJQUFJLEVBQUMscUJBQXFCLEVBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM3SSxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNELE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVELGVBQWU7UUFDZCxtRUFBbUU7UUFDbkUsOEJBQThCO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDJCQUEyQjtJQUUzQix5QkFBeUI7SUFDbEIsYUFBYTtRQUNsQixPQUFPLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxvQkFBb0I7UUFDekIsT0FBTyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsT0FBTyxZQUFZLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSwyQkFBMkI7UUFDaEMsT0FBTyxZQUFZLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlFLFVBQVUsQ0FBQyxHQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUNuRyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxFQUFVO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUM1QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFjO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsUUFBZ0I7UUFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFM0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLFFBQWdCO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0MsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN4QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQWUsRUFBRSxPQUFnQjtRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUV2RCxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFFaEUsb0hBQW9IO1lBQ3BILFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN2QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFBLENBQUMsQ0FBQSxpQkFBaUIsQ0FBQztJQUN4RSxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXVCO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxPQUFPLENBQUMsQ0FBQTtJQUMzRyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBaUJELDRCQUE0QjtJQUU1QiwwQkFBMEI7SUFDbEIsNkJBQTZCO1FBQ25DLE9BQU8sWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEosQ0FBQztJQUVPLGdDQUFnQztRQUN0QyxPQUFPLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoSSxDQUFDO0lBRU8sNkJBQTZCLENBQUMsVUFBOEI7UUFDbEUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxVQUFVLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLEtBQUksTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDO1lBQzVCLElBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJO2dCQUNyQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO2FBQUksQ0FBQztZQUNKLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDOzhHQXRTVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix3SkFzRWQsZ0JBQWdCLDRDQXlCaEIsZ0JBQWdCLHlDQUNoQixnQkFBZ0Isc0NBQ2hCLGdCQUFnQiwyRkF0R3pCLENBQUMsZ0JBQWdCLENBQUMsaURDaE4vQiwyeElBb0hBLDY3cUNEc0ZJLGVBQWUsMkZBQ2YsWUFBWSwwUEFDWixvQkFBb0IsdUdBQ3BCLHVCQUF1QiwyR0FDdkIsa0JBQWtCOzsyRkFPVCx1QkFBdUI7a0JBZm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLGtCQUFrQjtxQkFDbkIsYUFDVSxDQUFDLGdCQUFnQixDQUFDLGlCQUdkLGlCQUFpQixDQUFDLFNBQVM7cUxBd0I3QixVQUFVO3NCQUF0QixLQUFLO2dCQXlCTyxLQUFLO3NCQUFqQixLQUFLO2dCQXdCRixXQUFXO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBeUJFLFVBQVU7c0JBQWpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUM1QixXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIGJvb2xlYW5BdHRyaWJ1dGUsIEVsZW1lbnRSZWYsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCB9IGZyb20gXCIuLy4uL2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQuY29tcG9uZW50XCJcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTVkdHZW5lcmF0b3IgfSBmcm9tICcuL3N2Z0dlbmVyYXRvcic7XHJcbmltcG9ydCB7IFRvb2xIdWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90b29sLWh1Yi1pdGVtL3Rvb2wtaHViLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbEh1YlN1Ykl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Rvb2wtaHViLXN1Yi1pdGVtL3Rvb2wtaHViLXN1Yi1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyYWdnYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLmRpcmVjdGl2ZSdcclxuaW1wb3J0IHsgVG9vbEh1Ykl0ZW0sIFRvb2xIdWJTdWJJdGVtLCBUb29sSHViVmlzdWFsU2V0dGluZ3MsIFRvb2xIdWJJdGVtVW5pdHMsIFRvb2xIdWJJdGVtU3RhdGVzIH0gZnJvbSAnLi9iaW1wbHVzLXRvb2wtaHViLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IExheW91dE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlJztcclxuLy9pbXBvcnQgeyBmaXJlRXZlbnQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVEZWZhdWx0VmlzdWFsU2V0dGluZ3MoKTogVG9vbEh1YlZpc3VhbFNldHRpbmdzIHtcclxuICBjb25zdCBzZXR0aW5nczogVG9vbEh1YlZpc3VhbFNldHRpbmdzID0ge1xyXG4gICAgc3ViTWVudVN0YXJ0QW5nbGU6IDUwLFxyXG4gICAgc3ViTWVudUVuZEFuZ2xlOiAxMzAsXHJcbiAgICBzdmdSYWRpdXNJbm5lcjogNS43NSxcclxuICAgIHN2Z1JhZGl1czogMTAuMjUsXHJcbiAgICBzdWJNZW51Q2VudGVyOiBbMTcuMjUsIDE3LjVdLFxyXG4gICAgc3ViTWVudVJhZGl1czogMTUuNSxcclxuICAgIHN1Yk1lbnVXaWR0aDogNTIsXHJcbiAgICBkZWFkWm9uZUNlbnRlcjogWzE3LCAxOF0sXHJcbiAgICBkZWFkWm9uZVdpZHRoOiAxNDAsXHJcbiAgICBkZWFkWm9uZVJhZGl1czogMjIsXHJcbiAgICBkZWFkWm9uZVN0YXJ0QW5nbGU6IDQ1LFxyXG4gICAgZGVhZFpvbmVFbmRBbmdsZTogMTM1XHJcbiAgfVxyXG4gIHJldHVybiBzZXR0aW5ncztcclxufVxyXG5cclxuLy8gVXNlIHdoZW4gaW1wbGVtZW50aW5nIGVtYmVkZGVkIG1vZGVcclxuLy8gZnVuY3Rpb24gY3JlYXRlRW1iZWRkZWRTZXR0aW5ncygpIDogVG9vbEh1YlZpc3VhbFNldHRpbmdze1xyXG4vLyAgIGNvbnN0IHNldHRpbmdzIDogVG9vbEh1YlZpc3VhbFNldHRpbmdzID0ge1xyXG4vLyAgICAgc3ViTWVudVN0YXJ0QW5nbGUgOiA1MCxcclxuLy8gICAgIHN1Yk1lbnVFbmRBbmdsZSA6IDEzMCxcclxuLy8gICAgIHN2Z1JhZGl1c0lubmVyIDogNCxcclxuLy8gICAgIHN2Z1JhZGl1cyA6IDcuMjUsXHJcbi8vICAgICBzdWJNZW51Q2VudGVyIDogWzE3LjI1LCAxNy4zXSxcclxuLy8gICAgIHN1Yk1lbnVSYWRpdXMgOiAxNi4yLFxyXG4vLyAgICAgc3ViTWVudVdpZHRoIDogNjIsXHJcbi8vICAgICBkZWFkWm9uZUNlbnRlciA6IFsxNi41LCAxNl0sXHJcbi8vICAgICBkZWFkWm9uZVdpZHRoIDogMTIwLFxyXG4vLyAgICAgZGVhZFpvbmVSYWRpdXMgOiAxOCxcclxuLy8gICAgIGRlYWRab25lU3RhcnRBbmdsZSA6IDM1LFxyXG4vLyAgICAgZGVhZFpvbmVFbmRBbmdsZSA6IDE0NVxyXG4vLyAgIH1cclxuLy8gICByZXR1cm4gc2V0dGluZ3M7XHJcbi8vIH1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRJdGVtcygpOiBBcnJheTxUb29sSHViSXRlbT4ge1xyXG4gIGNvbnN0IGl0ZW1zOiBBcnJheTxUb29sSHViSXRlbT4gPSBbXHJcbiAgICAvLy0tLSBjcmVhdGUgdGFzayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIHtcclxuICAgICAgYnV0dG9uSWQ6ICdjbUJ1dENyZWF0ZVRhc2snLFxyXG4gICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLWNyZWF0ZS10YXNrJyxcclxuICAgICAgdGV4dDogJ19DcmVhdGVfaXNzdWVfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfQ3JlYXRlX2lzc3VlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfQ3JlYXRlX2lzc3VlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuXHJcbiAgICAvLy0tLSBxdWFudGl0eSB0YWtlb2ZmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0UXVhbnRpdHlUYWtlT2ZmJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1xdWFudGl0eS10YWtlLW9mZicsXHJcbiAgICAgIHRleHQ6ICdfUXVhbnRpdHlfdGFrZV9PZmZfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfUXVhbnRpdHlfdGFrZV9PZmZfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19RdWFudGl0eV90YWtlX09mZl9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gbWFya3VwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0TWFya3VwJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1tYXJrdXAnLFxyXG4gICAgICB0ZXh0OiAnX01hcmt1cHNfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfTWFya3Vwc19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX01hcmt1cHNfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICB9LFxyXG5cclxuICAgIC8vLS0tIHNlY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRTZWN0aW9uJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1zZWN0aW9uJyxcclxuICAgICAgdGV4dDogJ19TZWN0aW9uaW5nX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX1NlY3Rpb25pbmdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19TZWN0aW9uaW5nX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuXHJcbiAgICAvLy0tLSBoaWRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0T2JqVHJhbnNwTWVudScsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tb2JqLXRyYW5zcCcsXHJcbiAgICAgIHRleHQ6ICdfSGlkZV9vYmplY3RzX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX0hpZGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX0hpZGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gaXNvbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIHtcclxuICAgICAgYnV0dG9uSWQ6ICdjbUJ1dE9ialNlbCcsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tb2JqLXNlbGVjdCcsXHJcbiAgICAgIHRleHQ6ICdfSXNvbGF0ZV9vYmplY3RzX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX0lzb2xhdGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX0lzb2xhdGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gbmF2aWdhdGlvbiBtYXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXROYXZpZ2F0aW9uTWFwJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1uYXZpZ2F0aW9uLW1hcCcsXHJcbiAgICAgIHRleHQ6ICdfTmF2aWdhdGlvbl9uYXBfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfTmF2aWdhdGlvbl9uYXBfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19OYXZpZ2F0aW9uX25hcF9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gZnVsbHNjcmVlbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRGdWxsU2NyZWVuJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1mdWxsc2NyZWVuJyxcclxuICAgICAgdGV4dDogJ19GdWxsc2NyZWVuX25vZGVfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfRnVsbHNjcmVlbl9ub2RlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfRnVsbHNjcmVlbl9ub2RlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuICAgIC8vLS0tIHByb2plY3QgbmF2aWdhdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0UHJvamVjdE5hdmlnYXRvcicsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tcHJvamVjdC1uYXZpZ2F0b3InLFxyXG4gICAgICB0ZXh0OiAnX1Byb2plY3RfbmF2aWdhdG9yX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX1Byb2plY3RfbmF2aWdhdG9yX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfUHJvamVjdF9uYXZpZ2F0b3JfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICB9LFxyXG5cclxuICAgIC8vLS0tIHJlc2V0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLW9iai1yZXNldCcsXHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRSZXNldE9iaicsXHJcbiAgICAgIHRleHQ6ICdfUmVzZXRfdmlld3BvcnRfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfUmVzZXRfdmlld3BvcnRfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19SZXNldF92aWV3cG9ydF9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcbiAgICAvLy0tLSB2aWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0UmVzZXRWcCcsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tcmVzZXQtdnAnLFxyXG4gICAgICB0ZXh0OiAnX1NlbGVjdF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX1NlbGVjdF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfU2VsZWN0X3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHN1Yk1lbnVJZDogJ2NtYi12aWV3LXN1Ym1lbnUnLFxyXG4gICAgICBzdWJJdGVtczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJ1dHRvbklkOiAnY21CdXRGcm9udFZpZXcnLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1mcm9udC12aWV3JyxcclxuICAgICAgICAgIHRleHQ6ICdfRnJvbnRfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICdfRnJvbnRfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19Gcm9udF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICAgICAgYWN0aW9uQ2xpY2s6ICdjZW50ZXJNZW51RnJvbnRWaWV3Q2xpY2snLFxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIC8vLS0tIFRvcCBWaWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJ1dHRvbklkOiAnY21CdXRUb3BWaWV3JyxcclxuICAgICAgICAgIGljb25DbGFzczogJ3VpLWljb24tdG9wLXZpZXcnLFxyXG4gICAgICAgICAgdGV4dDogJ19Ub3Bfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICdfVG9wX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfVG9wX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICBhY3Rpb25DbGljazogJ2NlbnRlck1lbnVUb3BWaWV3Q2xpY2snLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8tLS0gU2lkZSBWaWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJ1dHRvbklkOiAnY21CdXRTaWRlVmlldycsXHJcbiAgICAgICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLXNpZGUtdmlldycsXHJcbiAgICAgICAgICB0ZXh0OiAnX1NpZGVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICdfU2lkZV92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICAgICAgdG9vbHRpcERpc2FibGVkOiAnX1NpZGVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIGFjdGlvbkNsaWNrOiAnY2VudGVyTWVudVNpZGVWaWV3Q2xpY2snLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8tLS0gUGVyc3BlY3RpdmUgVmlldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICB7XHJcbiAgICAgICAgICBidXR0b25JZDogJ2NtQnV0UGVyc3BlY3RpdmVWaWV3JyxcclxuICAgICAgICAgIGljb25DbGFzczogJ3VpLWljb24tcGVyc3BlY3RpdmUtdmlldycsXHJcbiAgICAgICAgICB0ZXh0OiAnX1BlcnNwZWN0aXZlX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwOiAnX1BlcnNwZWN0aXZlX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfUGVyc3BlY3RpdmVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIGFjdGlvbkNsaWNrOiAnY2VudGVyTWVudVBlcnNwZWN0aXZlVmlld0NsaWNrJyxcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICBdXHJcblxyXG4gIC8vIFNldCBhbGwgdG9vbCBodWIgaXRlbXMgc3RhdGVzIHRvIGluYWN0aXZlIGFuZCBkaXNhYmxlZC4gSG9zdCBBcHAgbXVzdCBkZWZpbmUgc3RhdGVzXHJcbiAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHsgaXRlbS5hY3RpdmUgPSBmYWxzZTsgaXRlbS5kaXNhYmxlZCA9IHRydWUgfSlcclxuXHJcbiAgcmV0dXJuIGl0ZW1zO1xyXG59XHJcblxyXG5jb25zdCBERUZBVUxUX1BPU0lUSU9OX0xFRlQgPSAzNTA7XHJcbmNvbnN0IERFRkFVTFRfUE9TSVRJT05fVE9QICA9IDY3MDtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYmltcGx1cy10b29sLWh1YicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUb29sSHViSXRlbUNvbXBvbmVudCxcclxuICAgIFRvb2xIdWJTdWJJdGVtQ29tcG9uZW50LFxyXG4gICAgRHJhZ2dhYmxlRGlyZWN0aXZlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtUcmFuc2xhdGVTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy10b29sLWh1Yi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JpbXBsdXMtdG9vbC1odWIuY29tcG9uZW50Lmxlc3MnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c1Rvb2xIdWJDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LEFmdGVyVmlld0luaXQge1xyXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsYXlvdXRNYW5hZ2VyU2VydmljZTogTGF5b3V0TWFuYWdlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6UmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICAgICAgICAgXHJcbiAgICB0aGlzLml0ZW1zID0gY3JlYXRlRGVmYXVsdEl0ZW1zKCk7XHJcbiAgICB0aGlzLl92aXN1YWxTZXR0aW5ncyA9IGNyZWF0ZURlZmF1bHRWaXN1YWxTZXR0aW5ncygpO1xyXG4gICAgdGhpcy5fdW5pdHMgPSB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRNZW51SXRlbVVuaXRzKCk7XHJcbiAgICB0aGlzLl9zdWJNZW51VW5pdHMgPSB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRTdWJNZW51SXRlbVVuaXRzKCk7XHJcbiAgICB0aGlzLl9hbm51bGFyU2VjdG9yID0gU1ZHR2VuZXJhdG9yLmdlbmVyYXRlQW5udWxhclNlY3Rvcih0aGlzLl92aXN1YWxTZXR0aW5ncyk7XHJcbiAgICB0aGlzLl9hbm51bGFyU2VjdG9yQm9yZGVyID0gU1ZHR2VuZXJhdG9yLmdlbmVyYXRlQW5udWxhclNlY3RvckJvcmRlcih0aGlzLl92aXN1YWxTZXR0aW5ncyk7XHJcbiAgICB0aGlzLl9kZWFkWm9uZUFubnVsYXJTZWN0b3IgPSBTVkdHZW5lcmF0b3IuZ2VuZXJhdGVEZWFkWm9uZUFubnVsYXJTZWN0b3IodGhpcy5fdmlzdWFsU2V0dGluZ3MpO1xyXG5cclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gcHVibGljIGZpZWxkc1xyXG4gIFxyXG4gIGdldCBpdGVtU3RhdGVzKCk6IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbVN0YXRlcztcclxuICB9XHJcbiAgQElucHV0KCkgc2V0IGl0ZW1TdGF0ZXModmFsdWU6IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPikge1xyXG4gICAgdGhpcy5faXRlbVN0YXRlcyA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZXRJdGVtU3RhdGVzKHRoaXMuX2l0ZW1TdGF0ZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0SXRlbVN0YXRlcyhpdGVtU3RhdGVzOiBBcnJheTxUb29sSHViSXRlbVN0YXRlcz4pIHtcclxuICAgIGZvciAoY29uc3QgaXRlbVN0YXRlIG9mIGl0ZW1TdGF0ZXMpIHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuX2l0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmJ1dHRvbklkID09PSBpdGVtU3RhdGUuYnV0dG9uSWQpO1xyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIGlmIChpdGVtU3RhdGUuYWN0aXZlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgaXRlbS5hY3RpdmUgPSBpdGVtU3RhdGUuYWN0aXZlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbVN0YXRlLmRpc2FibGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSBpdGVtU3RhdGUuZGlzYWJsZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdXBkYXRlQWN0aXZhdGlvblN0YXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IGl0ZW1zKCk6IEFycmF5PFRvb2xIdWJJdGVtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBpdGVtcyh2YWx1ZTogQXJyYXk8VG9vbEh1Ykl0ZW0+KSB7XHJcbiAgICB0aGlzLl9pdGVtcyA9IHZhbHVlO1xyXG5cclxuICAgIGNvbnN0IGJ1dHRvbnNMZW5ndGggPSAodGhpcy5faXRlbXM/Lmxlbmd0aCkgPiAwID8gdGhpcy5faXRlbXMubGVuZ3RoIDogMTtcclxuICAgIGNvbnN0IHJvb3RTdHlsZSA9IGRvY3VtZW50Py5kb2N1bWVudEVsZW1lbnQ/LnN0eWxlO1xyXG4gICAgaWYgKHJvb3RTdHlsZSkge1xyXG4gICAgICBjb25zdCBtZW51SXRlbXMgPSByb290U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcIi0tbWVudS1pdGVtc1wiKTtcclxuICAgICAgaWYgKHBhcnNlSW50KG1lbnVJdGVtcykgIT09IGJ1dHRvbnNMZW5ndGgpIHtcclxuICAgICAgICByb290U3R5bGUuc2V0UHJvcGVydHkoXCItLW1lbnUtaXRlbXNcIiwgYnV0dG9uc0xlbmd0aC50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRyYW5zZmVyIGRpc2FibGVkIHN0YXRlcywgd2hpY2ggY2FuIGRlZmluZWQgYnkgaG9zdCBhcHBcclxuICAgIHRoaXMuc2V0SXRlbVN0YXRlcyh0aGlzLl9pdGVtU3RhdGVzKTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVTdWJJdGVtcygpOiBBcnJheTxUb29sSHViU3ViSXRlbT4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdWJJdGVtcztcclxuICB9XHJcblxyXG4gIGdldCBpc0NvbGxhcHNlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0NvbGxhcHNlZDtcclxuICB9XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXHJcbiAgc2V0IGlzQ29sbGFwc2VkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc0NvbGxhcHNlZCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVuaXRzKCk6IFRvb2xIdWJJdGVtVW5pdHMge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VuaXRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN1Yk1lbnVVbml0cygpOiBUb29sSHViSXRlbVVuaXRzIHtcclxuICAgIHJldHVybiB0aGlzLl9zdWJNZW51VW5pdHM7XHJcbiAgfVxyXG5cclxuICBnZXQgYW5udWxhclNlY3RvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FubnVsYXJTZWN0b3I7XHJcbiAgfVxyXG5cclxuICBnZXQgYW5udWxhclNlY3RvckJvcmRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FubnVsYXJTZWN0b3JCb3JkZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVhZFpvbmVBbm51bGFyU2VjdG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVhZFpvbmVBbm51bGFyU2VjdG9yO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRW1iZWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNGb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzQWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBAT3V0cHV0KCkgaXRlbUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgc3ViSXRlbUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBcclxuICAvLyBEZWZpbmUgZXZlbnQgaGFuZGxlciBmb3IgcmV1c2luZyBkcmFnZ2FibGUgYWxzbyBmcm9tIHJlc2l6ZSBwYXJlbnQgXHJcbiAgLy9AT3V0cHV0KCkgcmVzaXplZHJhZ2dpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPFtudW1iZXIsbnVtYmVyXT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBjb21wb25lbnRJZCA9ICdjZW50ZXItbWVudS1mcC1pZCc7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsOyAgLy8gSW5pdGlhbGl6ZSB0byBudWxsXHJcblxyXG4gIG5nT25Jbml0KCk6dm9pZHsgICBcclxuICAgIHRoaXMubGF5b3V0TWFuYWdlclNlcnZpY2UucmVnaXN0ZXJPYmplY3QodGhpcy5lbGVtZW50LHRoaXMuY29tcG9uZW50SWQsJyNjZW50ZXItbWVudS1mcC1pZCcsdHJ1ZSxERUZBVUxUX1BPU0lUSU9OX0xFRlQsREVGQVVMVF9QT1NJVElPTl9UT1ApO1xyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5yZWdpc3RlcmVkSXRlbXMkLnN1YnNjcmliZShpdGVtcyA9PiB7XHJcbiAgICAgIGNvbnN0IGxheW91dE1hbmFnZXJJdGVtID0gaXRlbXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHRoaXMuY29tcG9uZW50SWQpO1xyXG4gICAgICB0aGlzLmlzQ29sbGFwc2VkID0gQm9vbGVhbihsYXlvdXRNYW5hZ2VySXRlbT8uaXNDb2xsYXBzZWQpOyAgICAgIFxyXG4gICAgfSk7XHJcbiAgICBcclxuICB9XHJcbiAgXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6dm9pZHtcclxuICAgLy8gaWYgdGhlIGNvbXBvbmVudCB3YW50cyB0byBiZSByZWdpc3RlcmVkIGluIGxheW91dCBtYW5hZ2VyIHN5c3RlbVxyXG4gICAvLyBTdWJzY3JpYmUgdG8gdGhlIG9ic2VydmFibGVcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UucGFyZW50QXBwUmVjdCQuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgdGhpcy5oYW5kbGVQYXJlbnRBcHBSZWN0U2l6ZUNoYW5nZSh2YWx1ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbiAgLy8gI2VuZHJlZ2lvbiBwdWJsaWMgZmllbGRzXHJcbiBcclxuICAvLyAjcmVnaW9uIHB1YmxpYyBtZXRob2RzXHJcbiAgcHVibGljIGdldFNWR1ZpZXdCb3goKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTVkdHZW5lcmF0b3IuZ2V0U1ZHVmlld0JveCh0aGlzLl91bml0cyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U1ZHQ2VudGVyTWVudVBhdGgoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTVkdHZW5lcmF0b3IuZ2V0U1ZHQ2VudGVyTWVudVBhdGgodGhpcy5fdW5pdHMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNWR0NlbnRlck1lbnVJdGVtUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNWR0dlbmVyYXRvci5nZXRTVkdDZW50ZXJNZW51SXRlbVBhdGgodGhpcy5fdW5pdHMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNWR0NlbnRlclN1Yk1lbnVJdGVtUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNWR0dlbmVyYXRvci5nZXRTVkdDZW50ZXJTdWJNZW51SXRlbVBhdGgodGhpcy5fc3ViTWVudVVuaXRzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVNZW51KCkge1xyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS51cGRhdGVDb2xsYXBzZWQoIXRoaXMuaXNDb2xsYXBzZWQsdGhpcy5jb21wb25lbnRJZCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgIHRoaXMubGF5b3V0TWFuYWdlclNlcnZpY2UuY2hlY2tQb3NpdGlvbignY2VudGVyLW1lbnUtZnAtaWQnLHRoaXMuZ2V0U2VsZWN0b3IoKSx1bmRlZmluZWQsMCwwLHRydWUpOyAgICAgIFxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZmluZFRvb2xIdWJJdGVtQnlJZChpZDogc3RyaW5nKTogVG9vbEh1Ykl0ZW0gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmZpbmQoeCA9PiB4LmJ1dHRvbklkID09PSBpZCk7XHJcbiAgfVxyXG5cclxuICBjbGlja1Rvb2xIdWJJdGVtKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5maW5kVG9vbEh1Ykl0ZW1CeUlkKGFjdGlvbik7XHJcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbT8uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXRlbUNsaWNrZWQuZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgY2xpY2tUb29sSHViU3ViSXRlbShhY3Rpb246IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLl9hY3RpdmVTdWJJdGVtcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zLmZpbmQoeCA9PiB4LmJ1dHRvbklkID09PSBhY3Rpb24pO1xyXG4gICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1Ykl0ZW1DbGlja2VkLmVtaXQoYWN0aW9uKTtcclxuICAgIHRoaXMuY2xvc2VBY3RpdmVTdWJJdGVtc1ZpZXcoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVRvb2xIdWJJdGVtQWN0aXZlKGJ1dHRvbklkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbmRUb29sSHViSXRlbUJ5SWQoYnV0dG9uSWQpO1xyXG4gICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGl0ZW0uYWN0aXZlID0gIWl0ZW0uYWN0aXZlO1xyXG5cclxuICAgIHRoaXMuX3VwZGF0ZUFjdGl2YXRpb25TdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU3ViSXRlbXNWaWV3KGJ1dHRvbklkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbmRUb29sSHViSXRlbUJ5SWQoYnV0dG9uSWQpO1xyXG4gICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGlzYWJsZWQgfHwgIWl0ZW0uc3ViSXRlbXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGl0ZW0uYWN0aXZlID0gIWl0ZW0uYWN0aXZlO1xyXG4gICAgaWYgKGl0ZW0uYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zVmlldyA9IGl0ZW07XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zID0gaXRlbS5zdWJJdGVtcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zVmlldyA9IG51bGw7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlQWN0aXZlU3ViSXRlbXNWaWV3KCkge1xyXG4gICAgaWYgKHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zVmlldykge1xyXG4gICAgICB0aGlzLl9hY3RpdmVTdWJJdGVtc1ZpZXcuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zVmlldyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9hY3RpdmVTdWJJdGVtcyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBzZXRIb3ZlcmVkU3RhdGUoZWxlbWVudDogc3RyaW5nLCBob3ZlcmVkOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX2hvdmVyZWRFbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpO1xyXG4gICAgY29uc3Qgc3RvcmVkQ291bnRIb3ZlcmQgPSB0aGlzLl9ob3ZlcmVkRWxlbWVudHMubGVuZ3RoO1xyXG5cclxuICAgIGlmIChpbmRleCA+PSAwICYmICFob3ZlcmVkKSB7XHJcbiAgICAgIHRoaXMuX2hvdmVyZWRFbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpbmRleCA8IDAgJiYgaG92ZXJlZCkge1xyXG4gICAgICB0aGlzLl9ob3ZlcmVkRWxlbWVudHMucHVzaChlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RvcmVkQ291bnRIb3ZlcmQgPiAwICYmIHRoaXMuX2hvdmVyZWRFbGVtZW50cy5sZW5ndGggPT09IDApIHtcclxuXHJcbiAgICAgIC8vIElmIGhvdmVyZWQgZWxlbWVudHMgY291bnQgcmVhY2hlcyB6ZXJvLCBjaGVjayBhZ2FpbiBhIGJpdCBkZWxheWVkLiBJZiBub3RoaW5nIGhvdmVyZWQgYXQgdGhhdCB0aW1lLCBjbG9zZSBzdWJtZW51XHJcbiAgICAgIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5faG92ZXJlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZUFjdGl2ZVN1Ykl0ZW1zVmlldygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlbGVjdG9yKCk6c3RyaW5ne1xyXG4gICAgcmV0dXJuIHRoaXMuaXNDb2xsYXBzZWQgPyAnI2NlbnRlci1tZW51LWNvbnRyb2xsZXInOicuY2VudGVyLW1lbnUtZnAnO1xyXG4gIH1cclxuXHJcbiAgZHJhZ0VsZW1lbnQoZXZlbnQ6IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcclxuICAgIGNvbnN0IGRlbHRhWDEgPSBldmVudFswXTtcclxuICAgIGNvbnN0IGRlbHRhWTEgPSBldmVudFsxXTsgICAgICAgIFxyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5jaGVja1Bvc2l0aW9uKCdjZW50ZXItbWVudS1mcC1pZCcsdGhpcy5nZXRTZWxlY3RvcigpLHVuZGVmaW5lZCxkZWx0YVgxLGRlbHRhWTEpICAgIFxyXG4gIH1cclxuXHJcbiAgb25EcmFnRW5kKCl7XHJcbiAgICB0aGlzLmxheW91dE1hbmFnZXJTZXJ2aWNlLmhhbmRsZURyYWdFbmQoJ2NlbnRlci1tZW51LWZwLWlkJyk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIHB1YmxpYyBtZXRob2RzXHJcblxyXG4gIC8vICNyZWdpb24gcHJpdmF0ZSBmaWVsZHNcclxuICBwcml2YXRlIF9pc0NvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2l0ZW1TdGF0ZXM6IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPiA9IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPigpO1xyXG4gIHByaXZhdGUgX2l0ZW1zOiBBcnJheTxUb29sSHViSXRlbT4gPSBBcnJheTxUb29sSHViSXRlbT4oKTtcclxuICBwcml2YXRlIF9hY3RpdmVTdWJJdGVtc1ZpZXc6IFRvb2xIdWJJdGVtIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfYWN0aXZlU3ViSXRlbXM6IEFycmF5PFRvb2xIdWJTdWJJdGVtPiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX3Zpc3VhbFNldHRpbmdzOiBUb29sSHViVmlzdWFsU2V0dGluZ3M7XHJcbiAgcHJpdmF0ZSBfdW5pdHM6IFRvb2xIdWJJdGVtVW5pdHM7XHJcbiAgcHJpdmF0ZSBfc3ViTWVudVVuaXRzOiBUb29sSHViSXRlbVVuaXRzO1xyXG4gIHByaXZhdGUgX2FubnVsYXJTZWN0b3I6IHN0cmluZztcclxuICBwcml2YXRlIF9hbm51bGFyU2VjdG9yQm9yZGVyOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfZGVhZFpvbmVBbm51bGFyU2VjdG9yOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfaG92ZXJlZEVsZW1lbnRzOiBBcnJheTxzdHJpbmc+ID0gQXJyYXk8c3RyaW5nPigpO1xyXG4gIC8vICNlbmRyZWdpb24gcHJpdmF0ZSBmaWVsZHNcclxuXHJcbiAgLy8gI3JlZ2lvbiBwcml2YXRlIG1ldGhvZHNcclxuICBwcml2YXRlIGNhbGN1bGF0ZUN1cnJlbnRNZW51SXRlbVVuaXRzKCk6IFRvb2xIdWJJdGVtVW5pdHMge1xyXG4gICAgcmV0dXJuIFNWR0dlbmVyYXRvci5kcmF3TWVudUl0ZW1TdmcodGhpcy5fdmlzdWFsU2V0dGluZ3Muc3ZnUmFkaXVzLCB0aGlzLl92aXN1YWxTZXR0aW5ncy5zdmdSYWRpdXNJbm5lciwgdGhpcy5faXRlbXMubGVuZ3RoLCB0aGlzLmlzRW1iZWRkZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVDdXJyZW50U3ViTWVudUl0ZW1Vbml0cygpOiBUb29sSHViSXRlbVVuaXRzIHtcclxuICAgIHJldHVybiBTVkdHZW5lcmF0b3IuZHJhd01lbnVJdGVtU3ZnKHRoaXMuX3Zpc3VhbFNldHRpbmdzLnN2Z1JhZGl1cywgdGhpcy5fdmlzdWFsU2V0dGluZ3Muc3ZnUmFkaXVzSW5uZXIsIDIwLCB0aGlzLmlzRW1iZWRkZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVQYXJlbnRBcHBSZWN0U2l6ZUNoYW5nZShwYXJlbnRSZWN0OkRPTVJlY3QgfCB1bmRlZmluZWQpOnZvaWR7XHJcbiAgICB0aGlzLmxheW91dE1hbmFnZXJTZXJ2aWNlLmNoZWNrUG9zaXRpb24odGhpcy5jb21wb25lbnRJZCx0aGlzLmdldFNlbGVjdG9yKCkscGFyZW50UmVjdCwwLDAsdHJ1ZSk7ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb25lT3JNb3JlSXRlbXNBY3RpdmUoKXtcclxuICAgIGZvcihjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpe1xyXG4gICAgICBpZihpdGVtLmFjdGl2ZSA9PT0gdHJ1ZSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVBY3RpdmF0aW9uU3RhdGUoKXtcclxuICAgIGlmKHRoaXMuX29uZU9yTW9yZUl0ZW1zQWN0aXZlKCkpe1xyXG4gICAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vICNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNlbnRlci1tZW51XCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjZW50ZXItbWVudS1mcFwiXHJcbiAgICBpZD1cImNlbnRlci1tZW51LWZwLWlkXCJcclxuICAgIFtuZ0NsYXNzXT1cImFjdGl2ZVN1Ykl0ZW1zID8gJ3N1Ym1lbnUtYWN0aXZlJyA6ICcnXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGxpYkRyYWdnYWJsZVxyXG4gICAgICBpZD1cImNlbnRlci1tZW51LWNvbnRyb2xsZXJcIlxyXG4gICAgICBjbGFzcz1cImNlbnRlci1tZW51LWNvbnRyb2xsZXIgZHJhZ2dlclwiXHJcbiAgICAgIGRhdGEtdGVzdD1cInRvb2xodWJfY29udHJvbGxlclwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICBvcGVuZWQ6ICFpc0NvbGxhcHNlZCxcclxuICAgICAgICBhY3RpdmU6IGlzQWN0aXZlXHJcbiAgICAgIH1cIlxyXG4gICAgICBbdGl0bGVdPVwiXHJcbiAgICAgICAgaXNDb2xsYXBzZWRcclxuICAgICAgICAgID8gKCdfU2hvd190b29saHViX3Rvb2x0aXAnIHwgdHJhbnNsYXRlKVxyXG4gICAgICAgICAgOiAoJ19NaW5pbWl6ZV90b29saHViX3Rvb2x0aXAnIHwgdHJhbnNsYXRlKSAgICAgICAgICBcclxuICAgICAgXCJcclxuICAgICAgKGNsaWNrZWQpPVwidG9nZ2xlTWVudSgpXCJcclxuICAgICAgKGRyYWdnaW5nKT1cImRyYWdFbGVtZW50KCRldmVudClcIlxyXG4gICAgICAoZHJhZ0VuZCkgPVwib25EcmFnRW5kKClcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNlbnRlci1tZW51LWNpcmNsZS1ib3JkZXItaW5uZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNlbnRlci1tZW51LWNpcmNsZS1ib3JkZXItb3V0ZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ21lbnVDaXJjbGVCb3JkZXJPdXRlcicsIGZhbHNlKVwiXHJcbiAgICAgIChtb3VzZWVudGVyKT1cInNldEhvdmVyZWRTdGF0ZSgnbWVudUNpcmNsZUJvcmRlck91dGVyJywgdHJ1ZSlcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBsaWJEcmFnZ2FibGVcclxuICAgICAgY2xhc3M9XCJjZW50ZXItbWVudS1jaXJjbGVcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ21lbnVDaXJjbGUnLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ21lbnVDaXJjbGUnLCB0cnVlKVwiXHJcbiAgICAgIChkcmFnZ2luZyk9XCJkcmFnRWxlbWVudCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPGxpYi10b29sLWh1Yi1pdGVtXHJcbiAgICAgICAgbGliRHJhZ2dhYmxlXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIlxyXG4gICAgICAgIFthdHRyLmRhdGEtdGVzdF09XCIndG9vbGh1Yl9pdGVtXycgKyBpdGVtLmJ1dHRvbklkXCJcclxuICAgICAgICBbdGl0bGVdPVwiaXRlbS50b29sdGlwIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgICBbYWN0aXZlXT1cIiEhaXRlbS5hY3RpdmVcIlxyXG4gICAgICAgIFtpc0VuYWJsZWRdPVwiIWl0ZW0uZGlzYWJsZWRcIlxyXG4gICAgICAgIChjbGlja2VkKT1cImNsaWNrVG9vbEh1Ykl0ZW0oaXRlbS5idXR0b25JZClcIlxyXG4gICAgICA+PC9saWItdG9vbC1odWItaXRlbT5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNlbnRlcm1lbnUtYnV0dG9uLXN2Z1wiXHJcbiAgICAgICAgW2F0dHIudmlld0JveF09XCJnZXRTVkdWaWV3Qm94KClcIlxyXG4gICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjbGlwUGF0aCBpZD1cInN2Z0NlbnRlck1lbnVcIiBjbGlwUGF0aFVuaXRzPVwib2JqZWN0Qm91bmRpbmdCb3hcIj5cclxuICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwiZ2V0U1ZHQ2VudGVyTWVudVBhdGgoKVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICA8Y2xpcFBhdGggaWQ9XCJzdmdDZW50ZXJNZW51SXRlbVwiIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJnZXRTVkdDZW50ZXJNZW51SXRlbVBhdGgoKVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICA8Y2xpcFBhdGggaWQ9XCJzdmdDZW50ZXJTdWJNZW51SXRlbVwiIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJnZXRTVkdDZW50ZXJTdWJNZW51SXRlbVBhdGgoKVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICA8Y2xpcFBhdGggaWQ9XCJzdmdDZW50ZXJNZW51U3ViTWVudVwiIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJhbm51bGFyU2VjdG9yXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgPGNsaXBQYXRoXHJcbiAgICAgICAgICBpZD1cInN2Z0NlbnRlck1lbnVTdWJNZW51Qm9yZGVyXCJcclxuICAgICAgICAgIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJhbm51bGFyU2VjdG9yQm9yZGVyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgPGNsaXBQYXRoXHJcbiAgICAgICAgICBpZD1cInN2Z0NlbnRlck1lbnVTdWJNZW51RGVhZFpvbmVcIlxyXG4gICAgICAgICAgY2xpcFBhdGhVbml0cz1cIm9iamVjdEJvdW5kaW5nQm94XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8cGF0aCBbYXR0ci5kXT1cImRlYWRab25lQW5udWxhclNlY3RvclwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAoYWN0aXZlU3ViSXRlbXMpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjZW50ZXItbWVudS1zdWItbWVudS1ib3JkZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnVCb3JkZXInLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnVCb3JkZXInLCB0cnVlKVwiXHJcbiAgICA+PC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiY2VudGVyLW1lbnUtc3ViLW1lbnVcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnUnLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnUnLCB0cnVlKVwiXHJcbiAgICA+XHJcbiAgICAgIDxsaWItdG9vbC1odWItc3ViLWl0ZW1cclxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhY3RpdmVTdWJJdGVtc1wiXHJcbiAgICAgICAgW2F0dHIuZGF0YS10ZXN0XT1cIid0b29saHViX3N1Yml0ZW1fJyArIGl0ZW0uYnV0dG9uSWRcIlxyXG4gICAgICAgIFt0aXRsZV09XCJpdGVtLnRvb2x0aXAgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJjbGlja1Rvb2xIdWJTdWJJdGVtKGl0ZW0uYnV0dG9uSWQpXCJcclxuICAgICAgICAoa2V5cHJlc3MpPVwiY2xpY2tUb29sSHViU3ViSXRlbShpdGVtLmJ1dHRvbklkKVwiXHJcbiAgICAgID48L2xpYi10b29sLWh1Yi1zdWItaXRlbT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNlbnRlci1tZW51LXN1Yi1tZW51LWRlYWQtem9uZVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImlzQ29sbGFwc2VkID8gJ2hpZGRlbicgOiAnJ1wiXHJcbiAgICAgIChtb3VzZWxlYXZlKT1cInNldEhvdmVyZWRTdGF0ZSgnZGVhZFpvbmUnLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ2RlYWRab25lJywgdHJ1ZSlcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -330,10 +330,6 @@ export class LayoutManagerService {
330
330
  setTimeout(() => {
331
331
  this.checkPosition(foundItem.id, "", undefined, 0, 0, true);
332
332
  });
333
- let s1 = '';
334
- this.registeredItems.forEach((item) => {
335
- s1 = s1 + `${item.id}:<${item.isCollapsed ? 1 : 0}> `;
336
- });
337
333
  }
338
334
  handleDragEnd(id) {
339
335
  this.finalizeObjectChanges(id);
@@ -366,4 +362,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
366
362
  providedIn: 'root'
367
363
  }]
368
364
  }], ctorParameters: () => [{ type: i1.ResizeObserverService }, { type: i2.LocalStorageService }] });
369
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9sYXlvdXQtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQWlDdkMsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUFvQixxQkFBMkMsRUFDM0MsbUJBQXdDO1FBRHhDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUY1RCxxQkFBZ0IsR0FBeUMsSUFBSSxlQUFlLENBQXNCLEVBQUUsQ0FBQyxDQUFBO1FBSTdGLG9CQUFlLEdBQXVCLEVBQUUsQ0FBQztRQUtqRCxXQUFNLEdBQVUscUJBQXFCLENBQUM7SUFObEMsQ0FBQztJQUdMLElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUlIOztrRkFFOEU7SUFDNUUsY0FBYyxDQUFDLEdBQWMsRUFBRSxFQUFTLEVBQUUsUUFBMkIsRUFBRSxnQkFBd0IsRUFBQyxPQUFjLEdBQUcsRUFBRSxNQUFhLEdBQUcsRUFBQyxRQUFlLENBQUMsRUFBRSxTQUFnQixDQUFDO1FBQ3JLLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBRyxNQUFNLEVBQUMsQ0FBQztnQkFDVCxVQUFVLEdBQUcsS0FB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RSxDQUFDLENBQUM7UUFDdEQsSUFBRyxDQUFDLElBQUksRUFBQyxDQUFDO1lBQ1IsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBRyxDQUFDLE9BQU8sRUFBQyxDQUFDO1lBQ1gsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFOUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEdBQUcsRUFDYixXQUFXLElBQUksV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFBLENBQUMsRUFDMUQsV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDOzhHQWxZVSxvQkFBb0I7a0hBQXBCLG9CQUFvQixjQUZuQixNQUFNOzsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZixJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4vcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gICBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG4vL2ltcG9ydCB7IEl0ZW1zTGlzdCB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0L2xpYi9pdGVtcy1saXN0JztcclxuLy9pbXBvcnQgeyBOb3RGb3VuZEVycm9yIH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXRNYW5hZ2VySXRlbSB7XHJcbiAgZWxlbWVudDpFbGVtZW50UmVmO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgc2VsZWN0b3I/OnN0cmluZztcclxuICBpc0NvbGxhcHNlZDpib29sZWFuO1xyXG4gIHJlbWVtYmVyUG9zaXRpb24/OmJvb2xlYW5cclxuICBsZWZ0PzogbnVtYmVyO1xyXG4gIHRvcD86bnVtYmVyO1xyXG4gIHdpZHRoPzpudW1iZXI7XHJcbiAgaGVpZ2h0PzpudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGF5b3V0TWFuYWdlckNvbmZpZ0l0ZW0ge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgaXNDb2xsYXBzZWQ6Ym9vbGVhbjsgIFxyXG4gIGxlZnQ/OiBudW1iZXI7XHJcbiAgdG9wPzpudW1iZXI7ICBcclxuICB3aWR0aD86bnVtYmVyO1xyXG4gIGhlaWdodD86bnVtYmVyO1xyXG59XHJcblxyXG5cclxuaW50ZXJmYWNlIExheW91dE1hbmFnZXJDb25maWcge1xyXG4gIFtrZXk6c3RyaW5nXTogTGF5b3V0TWFuYWdlckNvbmZpZ0l0ZW1cclxufVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRNYW5hZ2VyU2VydmljZSB7XHJcblxyXG4gIHJlZ2lzdGVyZWRJdGVtcyQ6IEJlaGF2aW9yU3ViamVjdDxMYXlvdXRNYW5hZ2VySXRlbVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF5b3V0TWFuYWdlckl0ZW1bXT4oW10pXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6UmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlU2VydmljZSA6TG9jYWxTdG9yYWdlU2VydmljZSBcclxuICApIHsgfVxyXG4gIHByaXZhdGUgcmVnaXN0ZXJlZEl0ZW1zOkxheW91dE1hbmFnZXJJdGVtW10gPSBbXTtcclxuICBcclxuICBnZXQgUmVnaXN0ZXJlZEl0ZW1zKCk6IExheW91dE1hbmFnZXJJdGVtW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJlZEl0ZW1zO1xyXG4gIH1cclxuICBDT05GSUc6c3RyaW5nID0gJ2xheW91dE1hbmFnZXJDb25maWcnO1xyXG5cclxuICBcclxuLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIHJlZ2lzdGVyIG9iamVjdC4gb2JqZWN0IG11c3QgaGF2ZSB1bmlxdWUgaWQgb3IgZWxlbWVudElkXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIHJlZ2lzdGVyT2JqZWN0KG9iajpFbGVtZW50UmVmLCBpZDpzdHJpbmcsIHNlbGVjdG9yOnN0cmluZyB8IHVuZGVmaW5lZCwgcmVtZW1iZXJQb3NpdGlvbjpib29sZWFuLGxlZnQ6bnVtYmVyID0gMTAwLCB0b3A6bnVtYmVyID0gMTAwLHdpZHRoOm51bWJlciA9IDAsIGhlaWdodDpudW1iZXIgPSAwKSB7XHJcbiAgICBsZXQgZm91bmRJbmRleCA9IC0xO1xyXG4gICAgaWYodGhpcy5yZWdpc3RlcmVkSXRlbXMuc29tZSgoaXRlbSxpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJldHZhbCA9IGl0ZW0uaWQgPT09IGlkO1xyXG4gICAgICAgIGlmKHJldHZhbCl7XHJcbiAgICAgICAgICBmb3VuZEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXR2YWw7XHJcbiAgICAgIH0pKXtcclxuICAgICAgaWYoZm91bmRJbmRleCA+PSAwKXtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcy5zcGxpY2UoZm91bmRJbmRleCwxKTtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfVxyXG4gICAgY29uc3QgbmV3SXRlbTogTGF5b3V0TWFuYWdlckl0ZW0gPSB7IFxyXG4gICAgICBlbGVtZW50Om9iaixcclxuICAgICAgaWQ6aWQsXHJcbiAgICAgIHNlbGVjdG9yOnNlbGVjdG9yLFxyXG4gICAgICByZW1lbWJlclBvc2l0aW9uOiEhcmVtZW1iZXJQb3NpdGlvbixcclxuICAgICAgbGVmdDpsZWZ0LFxyXG4gICAgICB0b3A6dG9wLFxyXG4gICAgICB3aWR0aDp3aWR0aCxcclxuICAgICAgaGVpZ2h0OmhlaWdodCxcclxuICAgICAgaXNDb2xsYXBzZWQ6IGZhbHNlICAgIFxyXG4gICAgIH07XHJcblxyXG4gICAgdGhpcy5yZWdpc3RlcmVkSXRlbXMucHVzaChuZXdJdGVtKTtcclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zJC5uZXh0KHRoaXMucmVnaXN0ZXJlZEl0ZW1zKTtcclxuICAgIHRoaXMuX2luaXRPYmplY3QobmV3SXRlbSk7XHJcbiAgfVxyXG4gIFxyXG4gIF9pbml0T2JqZWN0KG9iajpMYXlvdXRNYW5hZ2VySXRlbSl7XHJcbiAgICB0aGlzLl9hZGp1c3RPYmplY3RCeUNvbmZpZyhvYmopO1xyXG4gICAgdGhpcy5fYWRqdXN0T2JqZWN0QnlXaW5kb3dTaXplKG9iaik7XHJcbiAgICBcclxuICB9XHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGdldCBvYmplY3QgY29uZmlndXJhdGlvblxyXG4gICogcmV0dXJuIHtsZWZ0LCB0b3AsIHdpZHRoLCBoZWlndGh9XHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9nZXRPYmplY3RDb25maWcob2JqOkxheW91dE1hbmFnZXJJdGVtKTpMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbXxudWxsIHtcclxuICAgIGlmKCFvYmope1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbmZpZ1ZhbHVlID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5DT05GSUcpO1xyXG4gICAgY29uc3QgIGNvbmZpZyA9IGNvbmZpZ1ZhbHVlID8gSlNPTi5wYXJzZShjb25maWdWYWx1ZSkgOiB7fTtcclxuICAgIGNvbnN0ICBvYmpJZCA9IG9iai5pZCA7XHJcbiAgICBsZXQgY29uZmlnT2JqID0gY29uZmlnW29iaklkXTtcclxuICAgIGlmKCFjb25maWdPYmopIHtcclxuICAgICAgY29uZmlnT2JqID0ge2lkOm9iaklkLGxlZnQ6b2JqLmxlZnQsdG9wOm9iai50b3Asd2lkdGg6b2JqLndpZHRoLGhlaWdodDpvYmouaGVpZ2h0fTsgICAgICAgIFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbmZpZ09iajtcclxuICB9XHJcblxyXG4gIF9hZGp1c3RPYmplY3RCeUNvbmZpZyhvYmo6TGF5b3V0TWFuYWdlckl0ZW0pe1xyXG4gICAgY29uc3QgY29uZmlnOkxheW91dE1hbmFnZXJDb25maWdJdGVtfG51bGwgPSB0aGlzLl9nZXRPYmplY3RDb25maWcob2JqKTtcclxuICAgIGlmKCFjb25maWcpe1xyXG4gICAgICByZXR1cm47ICAgICAgXHJcbiAgICB9XHJcbiAgICBjb25zdCAgcGFyZW50RWxlbWVudCA9IHRoaXMuX2dldERvbVBhcmVudEVsZW1lbnQob2JqKTtcclxuICAgIGNvbnN0ICBpbnRlcm5hbEVsZW1lbnQgPSB0aGlzLl9nZXREb21JbnRlcm5hbEVsZW1lbnQob2JqLCcnKTtcclxuICAgIGlmKCFwYXJlbnRFbGVtZW50IHx8ICFpbnRlcm5hbEVsZW1lbnQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBwYXJlbnRFbGVtZW50LnN0eWxlLmxlZnQgPSAoY29uZmlnLmxlZnQpICsgJ3B4JztcclxuICAgIHBhcmVudEVsZW1lbnQuc3R5bGUudG9wID0gKGNvbmZpZy50b3ApICsgJ3B4JztcclxuICAgIGlmKGNvbmZpZy53aWR0aCAmJiBjb25maWcud2lkdGggPiAwKXtcclxuICAgICAgaW50ZXJuYWxFbGVtZW50LnN0eWxlLndpZHRoID0gY29uZmlnLndpZHRoICsgJ3B4JztcclxuICAgIH1cclxuICAgIGlmKGNvbmZpZy5oZWlnaHQgJiYgY29uZmlnLmhlaWdodCA+IDApe1xyXG4gICAgICBpbnRlcm5hbEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gY29uZmlnLmhlaWdodCArICdweCc7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuY2hlY2tQb3NpdGlvbihvYmouaWQsXCJcIix1bmRlZmluZWQsMCwwLHRydWUpOyAgICBcclxuICB9XHJcblxyXG4gIF9hZGp1c3RPYmplY3RCeVdpbmRvd1NpemUob2JqOkxheW91dE1hbmFnZXJJdGVtKXtcclxuICAgIHRoaXMuY2hlY2tQb3NpdGlvbihvYmouaWQsXCJcIix1bmRlZmluZWQsMCwwLHRydWUpOyAgXHJcbiAgfVxyXG4gIFxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiByZXR1cm5zIG9iamVjdCAgcmVnaXN0ZXJlZCBpbiB0aGUgbGF5b3V0IG1hbmFnZXIgXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIGdldEl0ZW0oaWQ6IHN0cmluZyApOkxheW91dE1hbmFnZXJJdGVtfG51bGwgeyAgIFxyXG4gICAgbGV0IGZvdW5kSXRlbTpMYXlvdXRNYW5hZ2VySXRlbXxudWxsID0gbnVsbDtcclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zLmZvckVhY2goaXRlbSA9PntcclxuICAgICAgaWYoaXRlbS5pZCA9PT0gaWQpe1xyXG4gICAgICAgIGZvdW5kSXRlbSA9IGl0ZW07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZvdW5kSXRlbTtcclxuICB9XHJcblxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBzZXQgb2JqZWN0IGNvbmZpZ3VyYXRpb25cclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX3NldE9iamVjdENvbmZpZyhvYmo6TGF5b3V0TWFuYWdlckl0ZW0sIGxlZnQ6bnVtYmVyLHRvcDpudW1iZXIsd2lkdGg6bnVtYmVyLGhlaWdodDpudW1iZXIpIHtcclxuICAgIGNvbnN0IG9iaklkID0gb2JqPy5pZCA7XHJcbiAgICBpZiAoIW9iaklkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBjb25maWcgPSB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0T2JqZWN0KHRoaXMuQ09ORklHKSBhcyBMYXlvdXRNYW5hZ2VyQ29uZmlnO1xyXG4gICAgLy9sZXQgY29uZmlnID0gY29uZmlnVmFsdWUgJiYgSlNPTi5wYXJzZShjb25maWdWYWx1ZSkgYXMgTGF5b3V0TWFuYWdlckNvbmZpZztcclxuICAgIGlmICghY29uZmlnKSB7XHJcbiAgICAgIGNvbmZpZyA9IHt9O1xyXG4gICAgfVxyXG4gICAgaWYob2JqPy5pc0NvbGxhcHNlZCl7ICAvLyBkbyBub3Qgb3ZlcnRha2UgY29sbGFwc2VkIHNpemVcclxuICAgICAgaWYgKCFjb25maWdbb2JqSWRdKSB7ICAgICAgICBcclxuICAgICAgICBjb25maWdbb2JqSWRdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbmZpZ1tvYmpJZF0ubGVmdCA9IGxlZnQ7XHJcbiAgICAgIGNvbmZpZ1tvYmpJZF0udG9wICA9IHRvcDtcclxuICAgICAgLy9jb25maWdbb2JqSWRdLndpZHRoID0gd2lkdGg7XHJcbiAgICAgIC8vY29uZmlnW29iaklkXS5oZWlnaHQgPSBoZWlnaHQgO1xyXG4gICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0T2JqZWN0KHRoaXMuQ09ORklHLCBjb25maWcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3SXRlbSA6TGF5b3V0TWFuYWdlckNvbmZpZ0l0ZW0gPSB7XHJcbiAgICAgIGlkOiBvYmpJZCxcclxuICAgICAgaXNDb2xsYXBzZWQ6IGZhbHNlLFxyXG4gICAgICBsZWZ0OiBsZWZ0LFxyXG4gICAgICB0b3A6IHRvcCxcclxuICAgICAgd2lkdGg6IHdpZHRoLFxyXG4gICAgICBoZWlnaHQ6IGhlaWdodFxyXG4gICAgfTtcclxuICAgIGNvbmZpZ1tvYmpJZF0gPSBuZXdJdGVtO1xyXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldE9iamVjdCh0aGlzLkNPTkZJRyxjb25maWcpO1xyXG4gIH1cclxuICBcclxuICBnZXREb21QYXJlbnRFbGVtZW50KGlkOnN0cmluZyApOkhUTUxFbGVtZW50fG51bGwge1xyXG4gICAgY29uc3QgaXRlbTpMYXlvdXRNYW5hZ2VySXRlbXxudWxsID0gdGhpcy5nZXRJdGVtKGlkKTtcclxuICAgIGlmKGl0ZW0pe1xyXG4gICAgICByZXR1cm4gdGhpcy5fZ2V0RG9tUGFyZW50RWxlbWVudChpdGVtKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgX2dldERvbVBhcmVudEVsZW1lbnQoaXRlbTpMYXlvdXRNYW5hZ2VySXRlbSApOkhUTUxFbGVtZW50fG51bGwge1xyXG4gICAgbGV0IGVsZW1lbnQ6SFRNTEVsZW1lbnQ7XHJcbiAgICBpZihpdGVtLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnNoYWRvd1Jvb3Qpe1xyXG4gICAgICBlbGVtZW50ID0gaXRlbS5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoaXRlbS5zZWxlY3Rvcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlbGVtZW50ID0gaXRlbS5lbGVtZW50Py5uYXRpdmVFbGVtZW50OyBcclxuICAgIH1cclxuICAgIGlmKCFlbGVtZW50KXtcclxuICAgICAgY29uc29sZS5lcnJvcignX2dldERvbVBhcmVudEVsZW1lbnQ6IG1pc3NpbmcgZWxlbWVudCcpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBlbGVtZW50OyAgICBcclxuICB9XHJcblxyXG4gIF9nZXREb21JbnRlcm5hbEVsZW1lbnQoaXRlbTpMYXlvdXRNYW5hZ2VySXRlbSxzZWxlY3RvcjpzdHJpbmcgfCB1bmRlZmluZWQgKTpIVE1MRWxlbWVudHxudWxsIHtcclxuICAgIGNvbnN0IGVsZW1lbnQ6SFRNTEVsZW1lbnQgPSBpdGVtLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnNoYWRvd1Jvb3QgfHwgaXRlbS5lbGVtZW50Py5uYXRpdmVFbGVtZW50OyAgICBcclxuICAgIGlmKCFlbGVtZW50KXtcclxuICAgICAgY29uc29sZS5lcnJvcignX2dldERvbUludGVybmFsRWxlbWVudDogbWlzc2luZyBlbGVtZW50Jyk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbXlTZWxlY3RvciA9c2VsZWN0b3IgJiYgc2VsZWN0b3I/Lmxlbmd0aCA+IDAgP3NlbGVjdG9yOml0ZW0uc2VsZWN0b3I7ICAgXHJcbiAgICBjb25zdCByZXR2YWw6IEhUTUxFbGVtZW50fG51bGw9IG15U2VsZWN0b3I/ZWxlbWVudC5xdWVyeVNlbGVjdG9yKG15U2VsZWN0b3IpOmVsZW1lbnQ7XHJcbiAgICBpZighcmV0dmFsKXtcclxuICAgICAgY29uc29sZS5lcnJvcihgX2dldERvbUludGVybmFsRWxlbWVudDogc2VsZWN0aW9uIG9mIGVsZW1lbnQgJHtlbGVtZW50fSAgZmFpbGVkIHdpdGggc2VsZWN0b3IgJHtteVNlbGVjdG9yfWApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldHZhbDtcclxuICB9XHJcblxyXG5cclxuICBfZ2V0RWxlbWVudFJlY3QoaXRlbTpMYXlvdXRNYW5hZ2VySXRlbSxzZWxlY3RvcjpzdHJpbmcgfCB1bmRlZmluZWQgLHBhcmVudFJlY3RhbmdsZTpET01SZWN0IHx1bmRlZmluZWQgKTpET01SZWN0IHwgbnVsbHtcclxuICAgIGNvbnN0IHNlbGVjdGVkT2JqIDogSFRNTEVsZW1lbnR8bnVsbCA9IHRoaXMuX2dldERvbUludGVybmFsRWxlbWVudChpdGVtLHNlbGVjdG9yKTtcclxuICAgIGlmKCFzZWxlY3RlZE9iail7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ19nZXRFbGVtZW50UmVjdDogbWlzc2luZyBzZWxlY3RlZCBvYmplY3QnKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFyZW50UmVjdDpET01SZWN0ID0gIHBhcmVudFJlY3RhbmdsZSB8fCAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UuZ2V0UGFyZW50QXBwUmVjdCgpO1xyXG4gICAgaWYoICFwYXJlbnRSZWN0IHx8ICBwYXJlbnRSZWN0Py53aWR0aDw9MSB8fCBwYXJlbnRSZWN0Py5oZWlnaHQ8PTEgKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdfZ2V0RWxlbWVudFJlY3Q6IG1pc3NpbmcgcGFyZW50IHJlY3QnKTtcclxuICAgIH1cclxuICAgIGNvbnN0ICBlbGVtZW50UmVjdDpET01SZWN0fG51bGwgPSBzZWxlY3RlZE9iai5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGlmKCFlbGVtZW50UmVjdCl7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ19nZXRFbGVtZW50UmVjdDogbWlzc2luZyBib3VuZGluZyByZWN0Jyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZWxlbWVudFJlY3Q7XHJcbiAgfVxyXG5cclxuICAvLyBjaGVja3Mgd2hldGhlciBlbGVtZW50IG9yIGVsZW1lbnQgd2l0aCBhZGRpdGlvbmFsIHNlbGVjdGlvbiBvZiBzdWJlbGVtZW50IGlzIHBsYWNlZCB3aXRoaW4gdGhlIGdpdmUgcmVjdGFuZ2xlXHJcbiAgLy8gaWYgbm90IHRoZW4gY2FsY3VsYXRlcyB0aGUgb2Zmc2V0IHRvIGJlIG1vdmVkIHRvIGZpdCBpblxyXG4gIGNoZWNrUG9zaXRpb24oaWQ6c3RyaW5nLHNlbGVjdG9yOnN0cmluZyxwYXJlbnRSZWN0YW5nbGU6RE9NUmVjdHx1bmRlZmluZWQgLGRlbHRhWDpudW1iZXIsZGVsdGFZOm51bWJlcixmb3JjZUNoZWNrOmJvb2xlYW4gPSBmYWxzZSl7XHJcbiAgICBpZighaWQpe1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH1cclxuICAgIGNvbnN0IGUxID0gdGhpcy5nZXRJdGVtKGlkKTtcclxuICAgIGlmKCFlMSl7XHJcbiAgICAgIHJldHVybiB7ZGVsdGFYOjAsZGVsdGFZOjB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFyZW50UmVjdDpET01SZWN0ID0gIHBhcmVudFJlY3RhbmdsZSB8fCAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UuZ2V0UGFyZW50QXBwUmVjdCgpO1xyXG4gICAgY29uc3QgZWxlbWVudFJlY3Q6RE9NUmVjdCB8IG51bGwgPSB0aGlzLl9nZXRFbGVtZW50UmVjdChlMSxzZWxlY3RvcixwYXJlbnRSZWN0KTtcclxuICAgIGlmKCFlbGVtZW50UmVjdCl7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2NoZWNrUG9zaXRpb246IG1pc3NpbmcgZWxlbWVudFJlY3QnKTtcclxuICAgICAgcmV0dXJuIHtkZWx0YVg6MCxkZWx0YVk6MH07XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKCFlbGVtZW50UmVjdD8ud2lkdGggfHwgIWVsZW1lbnRSZWN0Py5oZWlnaHQpe1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdjaGVja1Bvc2l0aW9uOmVsZW1lbnQgcmVjdCBlbXB0eSAnKTtcclxuICAgICAgcmV0dXJuIHtkZWx0YVg6MCxkZWx0YVk6MH07XHJcbiAgICB9IFxyXG4gICAgXHJcbiAgICBsZXQgY2hlY2tBbGwgPSB0cnVlO1xyXG4gICAgaWYocGFyZW50UmVjdD8ud2lkdGggPCAyICB8fCBwYXJlbnRSZWN0Py5oZWlnaHQgPCAyKXsgIC8vIGVtcHR5IHBhcmVudCByZWN0ICwgKGFmdGVyIGluaXQgYmVmb3JlIGZpcnN0IHVzZWZ1bGwgaW5mbykgbm90aGluZyB0byBjaGVjayAgICAgICBcclxuICAgICAgY2hlY2tBbGwgPSBmYWxzZTsgICAgICBcclxuICAgIH0gXHJcbiAgICBpZihjaGVja0FsbCl7XHJcbiAgICAgIGxldCBjaGVja0JvdW5kYXJpZXMgPSB0cnVlO1xyXG4gICAgICBpZih0aGlzLl9pc0luc2lkZVJlY3QoZWxlbWVudFJlY3QsIHBhcmVudFJlY3QpID09PSBmYWxzZSAmJiAhZm9yY2VDaGVjaykge1xyXG4gICAgICAgIGNoZWNrQm91bmRhcmllcyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIC8vIGNvcHkgb2YgcmVhbCBlbGVtZW50IHJlY3RhbmdsZSB0byBwZXJmb3JtIGNhbGN1bGF0aW9uIG92ZXIgYmVmb3JlIHNldCB0byB0aGUgcmVhbCBlbGVtZW50XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRET01SZWN0ID0gRE9NUmVjdC5mcm9tUmVjdChlbGVtZW50UmVjdCk7XHJcblxyXG4gICAgICAvL3NldCB0aGUgZWxlbWVudCByZWN0YW5nbGUgYnkgZGVsdGFzXHJcbiAgICAgIHRoaXMuX3RyYW5zbGF0ZVJlY3RhbmdsZShlbGVtZW50RE9NUmVjdCwgZGVsdGFYLCBkZWx0YVkpO1xyXG5cclxuICAgICAgaWYoY2hlY2tCb3VuZGFyaWVzKSB7XHJcbiAgICAgICAgaWYodGhpcy5faXNJbnNpZGVSZWN0KGVsZW1lbnRET01SZWN0LCBwYXJlbnRSZWN0KSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgIGNvbnN0ICBuZXdFbGVtZW50UG9zID0gdGhpcy5nZXRBbGlnbmVkUG9zaXRpb24oZWxlbWVudERPTVJlY3QsIHBhcmVudFJlY3QpO1xyXG4gICAgICAgICAgZGVsdGFYID0gbmV3RWxlbWVudFBvcy54IC0gZWxlbWVudFJlY3QueDtcclxuICAgICAgICAgIGRlbHRhWSA9IG5ld0VsZW1lbnRQb3MueSAtIGVsZW1lbnRSZWN0Lnk7XHJcbiAgICAgICAgICB0aGlzLl90cmFuc2xhdGVSZWN0YW5nbGUoZWxlbWVudERPTVJlY3QsIGRlbHRhWCwgZGVsdGFZKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzSW5zaWRlTGVmdFRvcFJlY3QocGFyZW50UmVjdCwgZWxlbWVudERPTVJlY3QpID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgY29uc3QgbmV3RWxlbWVudFBvcyA9IHRoaXMuX2dldEFsaWduZWRMZWZ0VG9wUG9zaXRpb24oZWxlbWVudERPTVJlY3QsIHBhcmVudFJlY3QpO1xyXG4gICAgICAgICAgZGVsdGFYID0gbmV3RWxlbWVudFBvcy54IC0gZWxlbWVudFJlY3QueDtcclxuICAgICAgICAgIGRlbHRhWSA9IG5ld0VsZW1lbnRQb3MueSAtIGVsZW1lbnRSZWN0Lnk7XHJcbiAgICAgICAgICB0aGlzLl90cmFuc2xhdGVSZWN0YW5nbGUoZWxlbWVudERPTVJlY3QsIGRlbHRhWCwgZGVsdGFZKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSB0aGlzLl9nZXREb21QYXJlbnRFbGVtZW50KGUxKTtcclxuICAgIGlmKCFzZWxlY3RlZEVsZW1lbnQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoc2VsZWN0ZWRFbGVtZW50KTtcclxuICAgIGNvbnN0IHRvcCA9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUudG9wLCAxMCk7XHJcbiAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5sZWZ0LCAxMCk7XHJcbiAgICBzZWxlY3RlZEVsZW1lbnQuc3R5bGUudG9wID0gKHRvcCArIGRlbHRhWSkgKyAncHgnO1xyXG4gICAgc2VsZWN0ZWRFbGVtZW50LnN0eWxlLmxlZnQgPSAobGVmdCArIGRlbHRhWCkgKyAncHgnO1xyXG4gICAgcmV0dXJuIHtkZWx0YVgsZGVsdGFZfTtcclxuICB9XHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGZpbmQgaWYgcmVjdGFuZ2xlIDEgaXMgaW5zaWRlIHJlY3RhbmdsZSAyXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9pc0luc2lkZVJlY3QocjE6RE9NUmVjdCwgcjI6RE9NUmVjdCkge1xyXG4gICAgaWYoIXIxIHx8ICFyMikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIHIyLmxlZnQgPD0gcjEubGVmdCAgJiYgcjIudG9wIDw9IHIxLnRvcCAmJiByMi5yaWdodCA+PSByMS5yaWdodCAmJiByMi5ib3R0b20gPj0gcjEuYm90dG9tO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGZpbmQgaWYgcmVjdGFuZ2xlcyBkbyBub3Qgb3ZlcmxhcCB0aGUgbGVmdCBhbmQgdG9wIHNpZGVzXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9pc0luc2lkZUxlZnRUb3BSZWN0KHIxOkRPTVJlY3QsIHIyOkRPTVJlY3QpIHtcclxuICAgIGlmKCFyMSB8fCAhcjIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgIHIxSW5zaWRlID0gcjIubGVmdCA8PSByMS5sZWZ0ICAmJiByMi50b3AgPD0gcjEudG9wO1xyXG4gICAgY29uc3QgIHIySW5zaWRlID0gcjEubGVmdCA8PSByMi5sZWZ0ICAmJiByMS50b3AgPD0gcjIudG9wO1xyXG4gICAgcmV0dXJuIHIxSW5zaWRlIHx8IHIySW5zaWRlO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGdldCBwb3NpdGlvbiBvZiByMSBhbGlnbmVkIHdpdGggdGhlIHIyIHNpZGVzXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIGdldEFsaWduZWRQb3NpdGlvbihyMTpET01SZWN0LCByMjpET01SZWN0KSB7XHJcbiAgICBpZighcjEgfHwgIXIyKSB7XHJcbiAgICAgIHJldHVybiB7eDowLHk6MH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB0byA9IHsgeDogcjEueCwgeTogcjEueSB9O1xyXG4gICAgLy9hbGlnbiBsZWZ0IG9yIHJpZ2h0IHNpZGVzLiBwcmVmZXJhYmx5IGxlZnRcclxuICAgIGlmKHIxLmxlZnQgPCByMi5sZWZ0KSB7XHJcbiAgICAgIHRvLnggPSByMi54O1xyXG4gICAgfSBlbHNlIGlmKHIxLnJpZ2h0ID4gcjIucmlnaHQpIHtcclxuICAgICAgdG8ueCA9IHIyLnJpZ2h0IC0gcjEud2lkdGg7XHJcbiAgICB9XHJcbiAgICAvL2FsaWduIHRvcCBvciBib3R0b20uIHByZWZlcmFibHkgdG9wXHJcbiAgICBpZihyMS50b3AgPCByMi50b3ApIHtcclxuICAgICAgdG8ueSA9IHIyLnk7XHJcbiAgICB9IGVsc2UgaWYocjEuYm90dG9tID4gcjIuYm90dG9tKSB7XHJcbiAgICAgIHRvLnkgPSByMi5ib3R0b20gLSByMS5oZWlnaHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG87XHJcbiAgfVxyXG4gIFxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBnZXQgcG9zaXRpb24gb2YgcjEgYWxpZ25lZCB3aXRoIHRoZSByMiBsZWZ0LCB0b3Agc2lkZXNcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2dldEFsaWduZWRMZWZ0VG9wUG9zaXRpb24ocjE6RE9NUmVjdCwgcjI6RE9NUmVjdCkge1xyXG4gICAgaWYoIXIxIHx8ICFyMikge1xyXG4gICAgICByZXR1cm4gIHt4OjAseTowfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCAgdG8gPSB7IHg6IHIxLngsIHk6IHIxLnkgfTtcclxuICAgIC8vYWxpZ24gbGVmdFxyXG4gICAgaWYocjEubGVmdCA8IHIyLmxlZnQpIHtcclxuICAgICAgdG8ueCA9IHIyLng7XHJcbiAgICB9XHJcbiAgICAvL2FsaWduIHRvcFxyXG4gICAgaWYocjEudG9wIDwgcjIudG9wKSB7XHJcbiAgICAgIHRvLnkgPSByMi55O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvO1xyXG4gIH1cclxuXHJcbiAgIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiB0cmFuc2xhdGUgcmVjdGFuZ2xlIGJ5IHgsIHlcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX3RyYW5zbGF0ZVJlY3RhbmdsZShyZWN0OkRPTVJlY3QsIHRyYW5zbGF0ZVg6bnVtYmVyLCB0cmFuc2xhdGVZOm51bWJlcikge1xyXG4gICAgaWYoIXJlY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcmVjdC54ICs9IHRyYW5zbGF0ZVg7XHJcbiAgICByZWN0LnkgKz0gdHJhbnNsYXRlWTtcclxuICAgIHJldHVybiByZWN0O1xyXG4gIH1cclxuICBcclxuICB1cGRhdGVDb2xsYXBzZWQodmFsdWU6Ym9vbGVhbiwgaWQ6c3RyaW5nID0gJycpOnZvaWR7ICAgIFxyXG4gICAgY29uc3QgIGZvdW5kSXRlbSA9IHRoaXMuZ2V0SXRlbShpZCk7XHJcbiAgICBpZighZm91bmRJdGVtKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZm91bmRJdGVtLmlzQ29sbGFwc2VkID0gdmFsdWU7XHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcyQubmV4dCh0aGlzLnJlZ2lzdGVyZWRJdGVtcyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpPT57ICAgICAgXHJcbiAgICAgIHRoaXMuY2hlY2tQb3NpdGlvbihmb3VuZEl0ZW0uaWQsXCJcIix1bmRlZmluZWQsMCwwLHRydWUpOyAgICAgIFxyXG4gICAgfSk7XHJcbiAgICBsZXQgczE6c3RyaW5nID0nJztcclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW0pPT57XHJcbiAgICAgIHMxID0gczEgKyBgJHtpdGVtLmlkfTo8JHtpdGVtLmlzQ29sbGFwc2VkPzE6MH0+IGA7XHJcbiAgICB9KTtcclxuICB9ICBcclxuXHJcblxyXG4gIGhhbmRsZURyYWdFbmQoaWQ6c3RyaW5nKXsvL30sbGVmdDpudW1iZXIsdG9wOm51bWJlcil7XHJcbiAgICB0aGlzLmZpbmFsaXplT2JqZWN0Q2hhbmdlcyhpZCk7XHJcbiAgfVxyXG5cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZmluYWxpemUgb2JqZWN0IGNoYW5nZXMgKHBvc2l0aW9uKS4gb2JqZWN0IG11c3QgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgbGF5b3V0IG1hbmFnZXJcclxuICAqIG9iamVjdDogb2JqZWN0IHRvIGZpbmFsaXplICBcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgZmluYWxpemVPYmplY3RDaGFuZ2VzKGlkOnN0cmluZyk6dm9pZCB7XHJcbiAgICBjb25zdCBpdGVtOkxheW91dE1hbmFnZXJJdGVtfG51bGwgID0gdGhpcy5nZXRJdGVtKGlkKTtcclxuICAgIGlmKCFpdGVtKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2dldERvbVBhcmVudEVsZW1lbnQoaXRlbSk7XHJcbiAgICBpZighZWxlbWVudCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTsgIFxyXG4gICAgY29uc3QgdG9wID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS50b3AsIDEwKTtcclxuICAgIGNvbnN0IGxlZnQgPSBwYXJzZUludChjb21wdXRlZFN0eWxlLmxlZnQsIDEwKTtcclxuICAgIFxyXG4gICAgY29uc3QgZWxlbWVudFJlY3QgPSB0aGlzLl9nZXRFbGVtZW50UmVjdChpdGVtLHVuZGVmaW5lZCx1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5fc2V0T2JqZWN0Q29uZmlnKGl0ZW0sbGVmdCx0b3AsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFJlY3QgJiYgZWxlbWVudFJlY3Qud2lkdGggPiAwID8gZWxlbWVudFJlY3Qud2lkdGg6MCAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFJlY3QgJiYgZWxlbWVudFJlY3QuaGVpZ2h0ID4gMCA/IGVsZW1lbnRSZWN0LmhlaWdodDowKTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9sYXlvdXQtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQWlDdkMsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUFvQixxQkFBMkMsRUFDM0MsbUJBQXdDO1FBRHhDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUY1RCxxQkFBZ0IsR0FBeUMsSUFBSSxlQUFlLENBQXNCLEVBQUUsQ0FBQyxDQUFBO1FBSTdGLG9CQUFlLEdBQXVCLEVBQUUsQ0FBQztRQUtqRCxXQUFNLEdBQVUscUJBQXFCLENBQUM7SUFObEMsQ0FBQztJQUdMLElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUlIOztrRkFFOEU7SUFDNUUsY0FBYyxDQUFDLEdBQWMsRUFBRSxFQUFTLEVBQUUsUUFBMkIsRUFBRSxnQkFBd0IsRUFBQyxPQUFjLEdBQUcsRUFBRSxNQUFhLEdBQUcsRUFBQyxRQUFlLENBQUMsRUFBRSxTQUFnQixDQUFDO1FBQ3JLLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBRyxNQUFNLEVBQUMsQ0FBQztnQkFDVCxVQUFVLEdBQUcsS0FB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Q0FBQztRQUN2RCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU5QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBQyxTQUFTLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsR0FBRyxFQUNiLFdBQVcsSUFBSSxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQSxDQUFDLENBQUEsQ0FBQyxFQUMxRCxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7OEdBOVhVLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzJGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXNpemUtb2JzZXJ2ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSAgIGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbi8vaW1wb3J0IHsgSXRlbXNMaXN0IH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QvbGliL2l0ZW1zLWxpc3QnO1xyXG4vL2ltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExheW91dE1hbmFnZXJJdGVtIHtcclxuICBlbGVtZW50OkVsZW1lbnRSZWY7XHJcbiAgaWQ6IHN0cmluZztcclxuICBzZWxlY3Rvcj86c3RyaW5nO1xyXG4gIGlzQ29sbGFwc2VkOmJvb2xlYW47XHJcbiAgcmVtZW1iZXJQb3NpdGlvbj86Ym9vbGVhblxyXG4gIGxlZnQ/OiBudW1iZXI7XHJcbiAgdG9wPzpudW1iZXI7XHJcbiAgd2lkdGg/Om51bWJlcjtcclxuICBoZWlnaHQ/Om51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBpc0NvbGxhcHNlZDpib29sZWFuOyAgXHJcbiAgbGVmdD86IG51bWJlcjtcclxuICB0b3A/Om51bWJlcjsgIFxyXG4gIHdpZHRoPzpudW1iZXI7XHJcbiAgaGVpZ2h0PzpudW1iZXI7XHJcbn1cclxuXHJcblxyXG5pbnRlcmZhY2UgTGF5b3V0TWFuYWdlckNvbmZpZyB7XHJcbiAgW2tleTpzdHJpbmddOiBMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbVxyXG59XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExheW91dE1hbmFnZXJTZXJ2aWNlIHtcclxuXHJcbiAgcmVnaXN0ZXJlZEl0ZW1zJDogQmVoYXZpb3JTdWJqZWN0PExheW91dE1hbmFnZXJJdGVtW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXlvdXRNYW5hZ2VySXRlbVtdPihbXSlcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc2l6ZU9ic2VydmVyU2VydmljZTpSZXNpemVPYnNlcnZlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VTZXJ2aWNlIDpMb2NhbFN0b3JhZ2VTZXJ2aWNlIFxyXG4gICkgeyB9XHJcbiAgcHJpdmF0ZSByZWdpc3RlcmVkSXRlbXM6TGF5b3V0TWFuYWdlckl0ZW1bXSA9IFtdO1xyXG4gIFxyXG4gIGdldCBSZWdpc3RlcmVkSXRlbXMoKTogTGF5b3V0TWFuYWdlckl0ZW1bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlcmVkSXRlbXM7XHJcbiAgfVxyXG4gIENPTkZJRzpzdHJpbmcgPSAnbGF5b3V0TWFuYWdlckNvbmZpZyc7XHJcblxyXG4gIFxyXG4vKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogcmVnaXN0ZXIgb2JqZWN0LiBvYmplY3QgbXVzdCBoYXZlIHVuaXF1ZSBpZCBvciBlbGVtZW50SWRcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgcmVnaXN0ZXJPYmplY3Qob2JqOkVsZW1lbnRSZWYsIGlkOnN0cmluZywgc2VsZWN0b3I6c3RyaW5nIHwgdW5kZWZpbmVkLCByZW1lbWJlclBvc2l0aW9uOmJvb2xlYW4sbGVmdDpudW1iZXIgPSAxMDAsIHRvcDpudW1iZXIgPSAxMDAsd2lkdGg6bnVtYmVyID0gMCwgaGVpZ2h0Om51bWJlciA9IDApIHtcclxuICAgIGxldCBmb3VuZEluZGV4ID0gLTE7XHJcbiAgICBpZih0aGlzLnJlZ2lzdGVyZWRJdGVtcy5zb21lKChpdGVtLGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmV0dmFsID0gaXRlbS5pZCA9PT0gaWQ7XHJcbiAgICAgICAgaWYocmV0dmFsKXtcclxuICAgICAgICAgIGZvdW5kSW5kZXggPSBpbmRleDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJldHZhbDtcclxuICAgICAgfSkpe1xyXG4gICAgICBpZihmb3VuZEluZGV4ID49IDApe1xyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zLnNwbGljZShmb3VuZEluZGV4LDEpO1xyXG4gICAgICB9ICAgICAgXHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdJdGVtOiBMYXlvdXRNYW5hZ2VySXRlbSA9IHsgXHJcbiAgICAgIGVsZW1lbnQ6b2JqLFxyXG4gICAgICBpZDppZCxcclxuICAgICAgc2VsZWN0b3I6c2VsZWN0b3IsXHJcbiAgICAgIHJlbWVtYmVyUG9zaXRpb246ISFyZW1lbWJlclBvc2l0aW9uLFxyXG4gICAgICBsZWZ0OmxlZnQsXHJcbiAgICAgIHRvcDp0b3AsXHJcbiAgICAgIHdpZHRoOndpZHRoLFxyXG4gICAgICBoZWlnaHQ6aGVpZ2h0LFxyXG4gICAgICBpc0NvbGxhcHNlZDogZmFsc2UgICAgXHJcbiAgICAgfTtcclxuXHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcy5wdXNoKG5ld0l0ZW0pO1xyXG4gICAgdGhpcy5yZWdpc3RlcmVkSXRlbXMkLm5leHQodGhpcy5yZWdpc3RlcmVkSXRlbXMpO1xyXG4gICAgdGhpcy5faW5pdE9iamVjdChuZXdJdGVtKTtcclxuICB9XHJcbiAgXHJcbiAgX2luaXRPYmplY3Qob2JqOkxheW91dE1hbmFnZXJJdGVtKXtcclxuICAgIHRoaXMuX2FkanVzdE9iamVjdEJ5Q29uZmlnKG9iaik7XHJcbiAgICB0aGlzLl9hZGp1c3RPYmplY3RCeVdpbmRvd1NpemUob2JqKTtcclxuICAgIFxyXG4gIH1cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZ2V0IG9iamVjdCBjb25maWd1cmF0aW9uXHJcbiAgKiByZXR1cm4ge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWd0aH1cclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2dldE9iamVjdENvbmZpZyhvYmo6TGF5b3V0TWFuYWdlckl0ZW0pOkxheW91dE1hbmFnZXJDb25maWdJdGVtfG51bGwge1xyXG4gICAgaWYoIW9iail7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlnVmFsdWUgPSB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLkNPTkZJRyk7XHJcbiAgICBjb25zdCAgY29uZmlnID0gY29uZmlnVmFsdWUgPyBKU09OLnBhcnNlKGNvbmZpZ1ZhbHVlKSA6IHt9O1xyXG4gICAgY29uc3QgIG9iaklkID0gb2JqLmlkIDtcclxuICAgIGxldCBjb25maWdPYmogPSBjb25maWdbb2JqSWRdO1xyXG4gICAgaWYoIWNvbmZpZ09iaikge1xyXG4gICAgICBjb25maWdPYmogPSB7aWQ6b2JqSWQsbGVmdDpvYmoubGVmdCx0b3A6b2JqLnRvcCx3aWR0aDpvYmoud2lkdGgsaGVpZ2h0Om9iai5oZWlnaHR9OyAgICAgICAgXHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29uZmlnT2JqO1xyXG4gIH1cclxuXHJcbiAgX2FkanVzdE9iamVjdEJ5Q29uZmlnKG9iajpMYXlvdXRNYW5hZ2VySXRlbSl7XHJcbiAgICBjb25zdCBjb25maWc6TGF5b3V0TWFuYWdlckNvbmZpZ0l0ZW18bnVsbCA9IHRoaXMuX2dldE9iamVjdENvbmZpZyhvYmopO1xyXG4gICAgaWYoIWNvbmZpZyl7XHJcbiAgICAgIHJldHVybjsgICAgICBcclxuICAgIH1cclxuICAgIGNvbnN0ICBwYXJlbnRFbGVtZW50ID0gdGhpcy5fZ2V0RG9tUGFyZW50RWxlbWVudChvYmopO1xyXG4gICAgY29uc3QgIGludGVybmFsRWxlbWVudCA9IHRoaXMuX2dldERvbUludGVybmFsRWxlbWVudChvYmosJycpO1xyXG4gICAgaWYoIXBhcmVudEVsZW1lbnQgfHwgIWludGVybmFsRWxlbWVudCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHBhcmVudEVsZW1lbnQuc3R5bGUubGVmdCA9IChjb25maWcubGVmdCkgKyAncHgnO1xyXG4gICAgcGFyZW50RWxlbWVudC5zdHlsZS50b3AgPSAoY29uZmlnLnRvcCkgKyAncHgnO1xyXG4gICAgaWYoY29uZmlnLndpZHRoICYmIGNvbmZpZy53aWR0aCA+IDApe1xyXG4gICAgICBpbnRlcm5hbEVsZW1lbnQuc3R5bGUud2lkdGggPSBjb25maWcud2lkdGggKyAncHgnO1xyXG4gICAgfVxyXG4gICAgaWYoY29uZmlnLmhlaWdodCAmJiBjb25maWcuaGVpZ2h0ID4gMCl7XHJcbiAgICAgIGludGVybmFsRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBjb25maWcuaGVpZ2h0ICsgJ3B4JztcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5jaGVja1Bvc2l0aW9uKG9iai5pZCxcIlwiLHVuZGVmaW5lZCwwLDAsdHJ1ZSk7ICAgIFxyXG4gIH1cclxuXHJcbiAgX2FkanVzdE9iamVjdEJ5V2luZG93U2l6ZShvYmo6TGF5b3V0TWFuYWdlckl0ZW0pe1xyXG4gICAgdGhpcy5jaGVja1Bvc2l0aW9uKG9iai5pZCxcIlwiLHVuZGVmaW5lZCwwLDAsdHJ1ZSk7ICBcclxuICB9XHJcbiAgXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIHJldHVybnMgb2JqZWN0ICByZWdpc3RlcmVkIGluIHRoZSBsYXlvdXQgbWFuYWdlciBcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgZ2V0SXRlbShpZDogc3RyaW5nICk6TGF5b3V0TWFuYWdlckl0ZW18bnVsbCB7ICAgXHJcbiAgICBsZXQgZm91bmRJdGVtOkxheW91dE1hbmFnZXJJdGVtfG51bGwgPSBudWxsO1xyXG4gICAgdGhpcy5yZWdpc3RlcmVkSXRlbXMuZm9yRWFjaChpdGVtID0+e1xyXG4gICAgICBpZihpdGVtLmlkID09PSBpZCl7XHJcbiAgICAgICAgZm91bmRJdGVtID0gaXRlbTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZm91bmRJdGVtO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIHNldCBvYmplY3QgY29uZmlndXJhdGlvblxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfc2V0T2JqZWN0Q29uZmlnKG9iajpMYXlvdXRNYW5hZ2VySXRlbSwgbGVmdDpudW1iZXIsdG9wOm51bWJlcix3aWR0aDpudW1iZXIsaGVpZ2h0Om51bWJlcikge1xyXG4gICAgY29uc3Qgb2JqSWQgPSBvYmo/LmlkIDtcclxuICAgIGlmICghb2JqSWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGNvbmZpZyA9IHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5nZXRPYmplY3QodGhpcy5DT05GSUcpIGFzIExheW91dE1hbmFnZXJDb25maWc7XHJcbiAgICAvL2xldCBjb25maWcgPSBjb25maWdWYWx1ZSAmJiBKU09OLnBhcnNlKGNvbmZpZ1ZhbHVlKSBhcyBMYXlvdXRNYW5hZ2VyQ29uZmlnO1xyXG4gICAgaWYgKCFjb25maWcpIHtcclxuICAgICAgY29uZmlnID0ge307XHJcbiAgICB9XHJcbiAgICBpZihvYmo/LmlzQ29sbGFwc2VkKXsgIC8vIGRvIG5vdCBvdmVydGFrZSBjb2xsYXBzZWQgc2l6ZVxyXG4gICAgICBpZiAoIWNvbmZpZ1tvYmpJZF0pIHsgICAgICAgIFxyXG4gICAgICAgIGNvbmZpZ1tvYmpJZF0gPSBvYmo7XHJcbiAgICAgIH1cclxuICAgICAgY29uZmlnW29iaklkXS5sZWZ0ID0gbGVmdDtcclxuICAgICAgY29uZmlnW29iaklkXS50b3AgID0gdG9wO1xyXG4gICAgICAvL2NvbmZpZ1tvYmpJZF0ud2lkdGggPSB3aWR0aDtcclxuICAgICAgLy9jb25maWdbb2JqSWRdLmhlaWdodCA9IGhlaWdodCA7XHJcbiAgICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5zZXRPYmplY3QodGhpcy5DT05GSUcsIGNvbmZpZyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXdJdGVtIDpMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbSA9IHtcclxuICAgICAgaWQ6IG9iaklkLFxyXG4gICAgICBpc0NvbGxhcHNlZDogZmFsc2UsXHJcbiAgICAgIGxlZnQ6IGxlZnQsXHJcbiAgICAgIHRvcDogdG9wLFxyXG4gICAgICB3aWR0aDogd2lkdGgsXHJcbiAgICAgIGhlaWdodDogaGVpZ2h0XHJcbiAgICB9O1xyXG4gICAgY29uZmlnW29iaklkXSA9IG5ld0l0ZW07XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0T2JqZWN0KHRoaXMuQ09ORklHLGNvbmZpZyk7XHJcbiAgfVxyXG4gIFxyXG4gIGdldERvbVBhcmVudEVsZW1lbnQoaWQ6c3RyaW5nICk6SFRNTEVsZW1lbnR8bnVsbCB7XHJcbiAgICBjb25zdCBpdGVtOkxheW91dE1hbmFnZXJJdGVtfG51bGwgPSB0aGlzLmdldEl0ZW0oaWQpO1xyXG4gICAgaWYoaXRlbSl7XHJcbiAgICAgIHJldHVybiB0aGlzLl9nZXREb21QYXJlbnRFbGVtZW50KGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBfZ2V0RG9tUGFyZW50RWxlbWVudChpdGVtOkxheW91dE1hbmFnZXJJdGVtICk6SFRNTEVsZW1lbnR8bnVsbCB7XHJcbiAgICBsZXQgZWxlbWVudDpIVE1MRWxlbWVudDtcclxuICAgIGlmKGl0ZW0uZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uc2hhZG93Um9vdCl7XHJcbiAgICAgIGVsZW1lbnQgPSBpdGVtLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihpdGVtLnNlbGVjdG9yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVsZW1lbnQgPSBpdGVtLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7IFxyXG4gICAgfVxyXG4gICAgaWYoIWVsZW1lbnQpe1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdfZ2V0RG9tUGFyZW50RWxlbWVudDogbWlzc2luZyBlbGVtZW50Jyk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVsZW1lbnQ7ICAgIFxyXG4gIH1cclxuXHJcbiAgX2dldERvbUludGVybmFsRWxlbWVudChpdGVtOkxheW91dE1hbmFnZXJJdGVtLHNlbGVjdG9yOnN0cmluZyB8IHVuZGVmaW5lZCApOkhUTUxFbGVtZW50fG51bGwge1xyXG4gICAgY29uc3QgZWxlbWVudDpIVE1MRWxlbWVudCA9IGl0ZW0uZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uc2hhZG93Um9vdCB8fCBpdGVtLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7ICAgIFxyXG4gICAgaWYoIWVsZW1lbnQpe1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdfZ2V0RG9tSW50ZXJuYWxFbGVtZW50OiBtaXNzaW5nIGVsZW1lbnQnKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBteVNlbGVjdG9yID1zZWxlY3RvciAmJiBzZWxlY3Rvcj8ubGVuZ3RoID4gMCA/c2VsZWN0b3I6aXRlbS5zZWxlY3RvcjsgICBcclxuICAgIGNvbnN0IHJldHZhbDogSFRNTEVsZW1lbnR8bnVsbD0gbXlTZWxlY3Rvcj9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IobXlTZWxlY3Rvcik6ZWxlbWVudDtcclxuICAgIGlmKCFyZXR2YWwpe1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBfZ2V0RG9tSW50ZXJuYWxFbGVtZW50OiBzZWxlY3Rpb24gb2YgZWxlbWVudCAke2VsZW1lbnR9ICBmYWlsZWQgd2l0aCBzZWxlY3RvciAke215U2VsZWN0b3J9YCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0dmFsO1xyXG4gIH1cclxuXHJcblxyXG4gIF9nZXRFbGVtZW50UmVjdChpdGVtOkxheW91dE1hbmFnZXJJdGVtLHNlbGVjdG9yOnN0cmluZyB8IHVuZGVmaW5lZCAscGFyZW50UmVjdGFuZ2xlOkRPTVJlY3QgfHVuZGVmaW5lZCApOkRPTVJlY3QgfCBudWxse1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRPYmogOiBIVE1MRWxlbWVudHxudWxsID0gdGhpcy5fZ2V0RG9tSW50ZXJuYWxFbGVtZW50KGl0ZW0sc2VsZWN0b3IpO1xyXG4gICAgaWYoIXNlbGVjdGVkT2JqKXtcclxuICAgICAgY29uc29sZS5lcnJvcignX2dldEVsZW1lbnRSZWN0OiBtaXNzaW5nIHNlbGVjdGVkIG9iamVjdCcpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJlbnRSZWN0OkRPTVJlY3QgPSAgcGFyZW50UmVjdGFuZ2xlIHx8ICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5nZXRQYXJlbnRBcHBSZWN0KCk7XHJcbiAgICBpZiggIXBhcmVudFJlY3QgfHwgIHBhcmVudFJlY3Q/LndpZHRoPD0xIHx8IHBhcmVudFJlY3Q/LmhlaWdodDw9MSApIHtcclxuICAgICAgY29uc29sZS5sb2coJ19nZXRFbGVtZW50UmVjdDogbWlzc2luZyBwYXJlbnQgcmVjdCcpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgIGVsZW1lbnRSZWN0OkRPTVJlY3R8bnVsbCA9IHNlbGVjdGVkT2JqLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgaWYoIWVsZW1lbnRSZWN0KXtcclxuICAgICAgY29uc29sZS5lcnJvcignX2dldEVsZW1lbnRSZWN0OiBtaXNzaW5nIGJvdW5kaW5nIHJlY3QnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBlbGVtZW50UmVjdDtcclxuICB9XHJcblxyXG4gIC8vIGNoZWNrcyB3aGV0aGVyIGVsZW1lbnQgb3IgZWxlbWVudCB3aXRoIGFkZGl0aW9uYWwgc2VsZWN0aW9uIG9mIHN1YmVsZW1lbnQgaXMgcGxhY2VkIHdpdGhpbiB0aGUgZ2l2ZSByZWN0YW5nbGVcclxuICAvLyBpZiBub3QgdGhlbiBjYWxjdWxhdGVzIHRoZSBvZmZzZXQgdG8gYmUgbW92ZWQgdG8gZml0IGluXHJcbiAgY2hlY2tQb3NpdGlvbihpZDpzdHJpbmcsc2VsZWN0b3I6c3RyaW5nLHBhcmVudFJlY3RhbmdsZTpET01SZWN0fHVuZGVmaW5lZCAsZGVsdGFYOm51bWJlcixkZWx0YVk6bnVtYmVyLGZvcmNlQ2hlY2s6Ym9vbGVhbiA9IGZhbHNlKXtcclxuICAgIGlmKCFpZCl7XHJcbiAgICAgIHJldHVybiB7ZGVsdGFYOjAsZGVsdGFZOjB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgZTEgPSB0aGlzLmdldEl0ZW0oaWQpO1xyXG4gICAgaWYoIWUxKXtcclxuICAgICAgcmV0dXJuIHtkZWx0YVg6MCxkZWx0YVk6MH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXJlbnRSZWN0OkRPTVJlY3QgPSAgcGFyZW50UmVjdGFuZ2xlIHx8ICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5nZXRQYXJlbnRBcHBSZWN0KCk7XHJcbiAgICBjb25zdCBlbGVtZW50UmVjdDpET01SZWN0IHwgbnVsbCA9IHRoaXMuX2dldEVsZW1lbnRSZWN0KGUxLHNlbGVjdG9yLHBhcmVudFJlY3QpO1xyXG4gICAgaWYoIWVsZW1lbnRSZWN0KXtcclxuICAgICAgY29uc29sZS5lcnJvcignY2hlY2tQb3NpdGlvbjogbWlzc2luZyBlbGVtZW50UmVjdCcpO1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYoIWVsZW1lbnRSZWN0Py53aWR0aCB8fCAhZWxlbWVudFJlY3Q/LmhlaWdodCl7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2NoZWNrUG9zaXRpb246ZWxlbWVudCByZWN0IGVtcHR5ICcpO1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH0gXHJcbiAgICBcclxuICAgIGxldCBjaGVja0FsbCA9IHRydWU7XHJcbiAgICBpZihwYXJlbnRSZWN0Py53aWR0aCA8IDIgIHx8IHBhcmVudFJlY3Q/LmhlaWdodCA8IDIpeyAgLy8gZW1wdHkgcGFyZW50IHJlY3QgLCAoYWZ0ZXIgaW5pdCBiZWZvcmUgZmlyc3QgdXNlZnVsbCBpbmZvKSBub3RoaW5nIHRvIGNoZWNrICAgICAgIFxyXG4gICAgICBjaGVja0FsbCA9IGZhbHNlOyAgICAgIFxyXG4gICAgfSBcclxuICAgIGlmKGNoZWNrQWxsKXtcclxuICAgICAgbGV0IGNoZWNrQm91bmRhcmllcyA9IHRydWU7XHJcbiAgICAgIGlmKHRoaXMuX2lzSW5zaWRlUmVjdChlbGVtZW50UmVjdCwgcGFyZW50UmVjdCkgPT09IGZhbHNlICYmICFmb3JjZUNoZWNrKSB7XHJcbiAgICAgICAgY2hlY2tCb3VuZGFyaWVzID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgLy8gY29weSBvZiByZWFsIGVsZW1lbnQgcmVjdGFuZ2xlIHRvIHBlcmZvcm0gY2FsY3VsYXRpb24gb3ZlciBiZWZvcmUgc2V0IHRvIHRoZSByZWFsIGVsZW1lbnRcclxuICAgICAgY29uc3QgZWxlbWVudERPTVJlY3QgPSBET01SZWN0LmZyb21SZWN0KGVsZW1lbnRSZWN0KTtcclxuXHJcbiAgICAgIC8vc2V0IHRoZSBlbGVtZW50IHJlY3RhbmdsZSBieSBkZWx0YXNcclxuICAgICAgdGhpcy5fdHJhbnNsYXRlUmVjdGFuZ2xlKGVsZW1lbnRET01SZWN0LCBkZWx0YVgsIGRlbHRhWSk7XHJcblxyXG4gICAgICBpZihjaGVja0JvdW5kYXJpZXMpIHtcclxuICAgICAgICBpZih0aGlzLl9pc0luc2lkZVJlY3QoZWxlbWVudERPTVJlY3QsIHBhcmVudFJlY3QpID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgY29uc3QgIG5ld0VsZW1lbnRQb3MgPSB0aGlzLmdldEFsaWduZWRQb3NpdGlvbihlbGVtZW50RE9NUmVjdCwgcGFyZW50UmVjdCk7XHJcbiAgICAgICAgICBkZWx0YVggPSBuZXdFbGVtZW50UG9zLnggLSBlbGVtZW50UmVjdC54O1xyXG4gICAgICAgICAgZGVsdGFZID0gbmV3RWxlbWVudFBvcy55IC0gZWxlbWVudFJlY3QueTtcclxuICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVJlY3RhbmdsZShlbGVtZW50RE9NUmVjdCwgZGVsdGFYLCBkZWx0YVkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5faXNJbnNpZGVMZWZ0VG9wUmVjdChwYXJlbnRSZWN0LCBlbGVtZW50RE9NUmVjdCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICBjb25zdCBuZXdFbGVtZW50UG9zID0gdGhpcy5fZ2V0QWxpZ25lZExlZnRUb3BQb3NpdGlvbihlbGVtZW50RE9NUmVjdCwgcGFyZW50UmVjdCk7XHJcbiAgICAgICAgICBkZWx0YVggPSBuZXdFbGVtZW50UG9zLnggLSBlbGVtZW50UmVjdC54O1xyXG4gICAgICAgICAgZGVsdGFZID0gbmV3RWxlbWVudFBvcy55IC0gZWxlbWVudFJlY3QueTtcclxuICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVJlY3RhbmdsZShlbGVtZW50RE9NUmVjdCwgZGVsdGFYLCBkZWx0YVkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IHRoaXMuX2dldERvbVBhcmVudEVsZW1lbnQoZTEpO1xyXG4gICAgaWYoIXNlbGVjdGVkRWxlbWVudCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShzZWxlY3RlZEVsZW1lbnQpO1xyXG4gICAgY29uc3QgdG9wID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS50b3AsIDEwKTtcclxuICAgIGNvbnN0IGxlZnQgPSBwYXJzZUludChjb21wdXRlZFN0eWxlLmxlZnQsIDEwKTtcclxuICAgIHNlbGVjdGVkRWxlbWVudC5zdHlsZS50b3AgPSAodG9wICsgZGVsdGFZKSArICdweCc7XHJcbiAgICBzZWxlY3RlZEVsZW1lbnQuc3R5bGUubGVmdCA9IChsZWZ0ICsgZGVsdGFYKSArICdweCc7XHJcbiAgICByZXR1cm4ge2RlbHRhWCxkZWx0YVl9O1xyXG4gIH1cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZmluZCBpZiByZWN0YW5nbGUgMSBpcyBpbnNpZGUgcmVjdGFuZ2xlIDJcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2lzSW5zaWRlUmVjdChyMTpET01SZWN0LCByMjpET01SZWN0KSB7XHJcbiAgICBpZighcjEgfHwgIXIyKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiAgcjIubGVmdCA8PSByMS5sZWZ0ICAmJiByMi50b3AgPD0gcjEudG9wICYmIHIyLnJpZ2h0ID49IHIxLnJpZ2h0ICYmIHIyLmJvdHRvbSA+PSByMS5ib3R0b207XHJcbiAgfVxyXG5cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZmluZCBpZiByZWN0YW5nbGVzIGRvIG5vdCBvdmVybGFwIHRoZSBsZWZ0IGFuZCB0b3Agc2lkZXNcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2lzSW5zaWRlTGVmdFRvcFJlY3QocjE6RE9NUmVjdCwgcjI6RE9NUmVjdCkge1xyXG4gICAgaWYoIXIxIHx8ICFyMikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCAgcjFJbnNpZGUgPSByMi5sZWZ0IDw9IHIxLmxlZnQgICYmIHIyLnRvcCA8PSByMS50b3A7XHJcbiAgICBjb25zdCAgcjJJbnNpZGUgPSByMS5sZWZ0IDw9IHIyLmxlZnQgICYmIHIxLnRvcCA8PSByMi50b3A7XHJcbiAgICByZXR1cm4gcjFJbnNpZGUgfHwgcjJJbnNpZGU7XHJcbiAgfVxyXG5cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZ2V0IHBvc2l0aW9uIG9mIHIxIGFsaWduZWQgd2l0aCB0aGUgcjIgc2lkZXNcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgZ2V0QWxpZ25lZFBvc2l0aW9uKHIxOkRPTVJlY3QsIHIyOkRPTVJlY3QpIHtcclxuICAgIGlmKCFyMSB8fCAhcjIpIHtcclxuICAgICAgcmV0dXJuIHt4OjAseTowfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRvID0geyB4OiByMS54LCB5OiByMS55IH07XHJcbiAgICAvL2FsaWduIGxlZnQgb3IgcmlnaHQgc2lkZXMuIHByZWZlcmFibHkgbGVmdFxyXG4gICAgaWYocjEubGVmdCA8IHIyLmxlZnQpIHtcclxuICAgICAgdG8ueCA9IHIyLng7XHJcbiAgICB9IGVsc2UgaWYocjEucmlnaHQgPiByMi5yaWdodCkge1xyXG4gICAgICB0by54ID0gcjIucmlnaHQgLSByMS53aWR0aDtcclxuICAgIH1cclxuICAgIC8vYWxpZ24gdG9wIG9yIGJvdHRvbS4gcHJlZmVyYWJseSB0b3BcclxuICAgIGlmKHIxLnRvcCA8IHIyLnRvcCkge1xyXG4gICAgICB0by55ID0gcjIueTtcclxuICAgIH0gZWxzZSBpZihyMS5ib3R0b20gPiByMi5ib3R0b20pIHtcclxuICAgICAgdG8ueSA9IHIyLmJvdHRvbSAtIHIxLmhlaWdodDtcclxuICAgIH1cclxuICAgIHJldHVybiB0bztcclxuICB9XHJcbiAgXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGdldCBwb3NpdGlvbiBvZiByMSBhbGlnbmVkIHdpdGggdGhlIHIyIGxlZnQsIHRvcCBzaWRlc1xyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfZ2V0QWxpZ25lZExlZnRUb3BQb3NpdGlvbihyMTpET01SZWN0LCByMjpET01SZWN0KSB7XHJcbiAgICBpZighcjEgfHwgIXIyKSB7XHJcbiAgICAgIHJldHVybiAge3g6MCx5OjB9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0ICB0byA9IHsgeDogcjEueCwgeTogcjEueSB9O1xyXG4gICAgLy9hbGlnbiBsZWZ0XHJcbiAgICBpZihyMS5sZWZ0IDwgcjIubGVmdCkge1xyXG4gICAgICB0by54ID0gcjIueDtcclxuICAgIH1cclxuICAgIC8vYWxpZ24gdG9wXHJcbiAgICBpZihyMS50b3AgPCByMi50b3ApIHtcclxuICAgICAgdG8ueSA9IHIyLnk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG87XHJcbiAgfVxyXG5cclxuICAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIHRyYW5zbGF0ZSByZWN0YW5nbGUgYnkgeCwgeVxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfdHJhbnNsYXRlUmVjdGFuZ2xlKHJlY3Q6RE9NUmVjdCwgdHJhbnNsYXRlWDpudW1iZXIsIHRyYW5zbGF0ZVk6bnVtYmVyKSB7XHJcbiAgICBpZighcmVjdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZWN0LnggKz0gdHJhbnNsYXRlWDtcclxuICAgIHJlY3QueSArPSB0cmFuc2xhdGVZO1xyXG4gICAgcmV0dXJuIHJlY3Q7XHJcbiAgfVxyXG4gIFxyXG4gIHVwZGF0ZUNvbGxhcHNlZCh2YWx1ZTpib29sZWFuLCBpZDpzdHJpbmcgPSAnJyk6dm9pZHsgICAgXHJcbiAgICBjb25zdCAgZm91bmRJdGVtID0gdGhpcy5nZXRJdGVtKGlkKTtcclxuICAgIGlmKCFmb3VuZEl0ZW0pe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBmb3VuZEl0ZW0uaXNDb2xsYXBzZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zJC5uZXh0KHRoaXMucmVnaXN0ZXJlZEl0ZW1zKTtcclxuICAgIHNldFRpbWVvdXQoKCk9PnsgICAgICBcclxuICAgICAgdGhpcy5jaGVja1Bvc2l0aW9uKGZvdW5kSXRlbS5pZCxcIlwiLHVuZGVmaW5lZCwwLDAsdHJ1ZSk7ICAgICAgXHJcbiAgICB9KTtcclxuIH0gIFxyXG5cclxuXHJcbiAgaGFuZGxlRHJhZ0VuZChpZDpzdHJpbmcpey8vfSxsZWZ0Om51bWJlcix0b3A6bnVtYmVyKXtcclxuICAgIHRoaXMuZmluYWxpemVPYmplY3RDaGFuZ2VzKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBmaW5hbGl6ZSBvYmplY3QgY2hhbmdlcyAocG9zaXRpb24pLiBvYmplY3QgbXVzdCBiZSByZWdpc3RlcmVkIGluIHRoZSBsYXlvdXQgbWFuYWdlclxyXG4gICogb2JqZWN0OiBvYmplY3QgdG8gZmluYWxpemUgIFxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBmaW5hbGl6ZU9iamVjdENoYW5nZXMoaWQ6c3RyaW5nKTp2b2lkIHtcclxuICAgIGNvbnN0IGl0ZW06TGF5b3V0TWFuYWdlckl0ZW18bnVsbCAgPSB0aGlzLmdldEl0ZW0oaWQpO1xyXG4gICAgaWYoIWl0ZW0pe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZ2V0RG9tUGFyZW50RWxlbWVudChpdGVtKTtcclxuICAgIGlmKCFlbGVtZW50KXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpOyAgXHJcbiAgICBjb25zdCB0b3AgPSBwYXJzZUludChjb21wdXRlZFN0eWxlLnRvcCwgMTApO1xyXG4gICAgY29uc3QgbGVmdCA9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUubGVmdCwgMTApO1xyXG4gICAgXHJcbiAgICBjb25zdCBlbGVtZW50UmVjdCA9IHRoaXMuX2dldEVsZW1lbnRSZWN0KGl0ZW0sdW5kZWZpbmVkLHVuZGVmaW5lZCk7XHJcbiAgICB0aGlzLl9zZXRPYmplY3RDb25maWcoaXRlbSxsZWZ0LHRvcCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50UmVjdCAmJiBlbGVtZW50UmVjdC53aWR0aCA+IDAgPyBlbGVtZW50UmVjdC53aWR0aDowICxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50UmVjdCAmJiBlbGVtZW50UmVjdC5oZWlnaHQgPiAwID8gZWxlbWVudFJlY3QuaGVpZ2h0OjApO1xyXG4gIH1cclxufVxyXG5cclxuIl19