@wizishop/wizi-block 14.1.19-beta → 14.1.20-beta

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.
@@ -2,7 +2,6 @@ import { Component, ElementRef, ViewChild } from '@angular/core';
2
2
  import { FORM_NAME_ID_FORM } from '../../../dtos/forms/forms.dto';
3
3
  import { StructuresComponent } from '../../structures.component';
4
4
  import { icon, latLng, marker, tileLayer } from 'leaflet';
5
- import places from 'places.js';
6
5
  import { ApiService } from '../../../services/utils/api.service';
7
6
  import { MapBackgroundFormLeftService } from '../../../services/blocks/map/map-background-form-left.service';
8
7
  import * as i0 from "@angular/core";
@@ -14,14 +13,17 @@ import * as i5 from "../../../shared/components/structure-select/structure-selec
14
13
  import * as i6 from "../../../shared/components/loader/loader.component";
15
14
  import * as i7 from "@wizishop/wizi-editor";
16
15
  import * as i8 from "@asymmetrik/ngx-leaflet";
17
- import * as i9 from "../../../shared/pipes/answer-type/answer-type.pipe";
18
- import * as i10 from "@ngx-translate/core";
16
+ import * as i9 from "ngx-google-places-autocomplete";
17
+ import * as i10 from "../../../shared/pipes/answer-type/answer-type.pipe";
18
+ import * as i11 from "@ngx-translate/core";
19
19
  export class MapBackgroundFormLeftComponent extends StructuresComponent {
20
20
  constructor(apiService) {
21
21
  super();
22
22
  this.apiService = apiService;
23
23
  this.address = '';
24
+ this.triggerAddress = '';
24
25
  this.editPlaceMap = null;
26
+ this.firstTimeTrigger = false;
25
27
  this.options = {};
26
28
  this.layers = [];
27
29
  this.showMap = false;
@@ -44,27 +46,17 @@ export class MapBackgroundFormLeftComponent extends StructuresComponent {
44
46
  }
45
47
  });
46
48
  }
47
- ngAfterViewInit() {
48
- const placesAutocomplete = places({
49
- appId: 'pl9OI1NPY62Y',
50
- apiKey: '290e5a0e33e751c85c36690d502991fc',
51
- container: this.input.nativeElement,
52
- });
53
- placesAutocomplete.on('change', (algoliaReturnElement) => {
54
- this.setCoordinateOnPlaces(algoliaReturnElement);
55
- });
56
- }
57
- setCoordinateOnPlaces(algoliaReturnElement) {
49
+ setCoordinateOnPlaces(googleResults) {
58
50
  this.showMap = false;
59
51
  this.options = {
60
- layers: [tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 16, attribution: 'WiziShop' })],
52
+ layers: [tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 18, attribution: 'WiziShop' })],
61
53
  zoom: 18,
62
54
  zoomControl: false,
63
- center: latLng(algoliaReturnElement.suggestion.latlng.lat, algoliaReturnElement.suggestion.latlng.lng),
55
+ center: latLng(googleResults.suggestion.latlng.lat, googleResults.suggestion.latlng.lng),
64
56
  };
65
- this.center = latLng(algoliaReturnElement.suggestion.latlng.lat, algoliaReturnElement.suggestion.latlng.lng);
57
+ this.center = latLng(googleResults.suggestion.latlng.lat, googleResults.suggestion.latlng.lng);
66
58
  this.layers = [
67
- marker([algoliaReturnElement.suggestion.latlng.lat, algoliaReturnElement.suggestion.latlng.lng], {
59
+ marker([googleResults.suggestion.latlng.lat, googleResults.suggestion.latlng.lng], {
68
60
  icon: icon({
69
61
  iconSize: [25, 41],
70
62
  iconAnchor: [13, 41],
@@ -73,23 +65,32 @@ export class MapBackgroundFormLeftComponent extends StructuresComponent {
73
65
  }),
74
66
  }),
75
67
  ];
76
- this.contentBlock[this.FORM_NAME_COORDINATE_Y] = algoliaReturnElement.suggestion.latlng.lat;
77
- this.contentBlock[this.FORM_NAME_COORDINATE_X] = algoliaReturnElement.suggestion.latlng.lng;
78
- this.address = algoliaReturnElement.suggestion.value;
68
+ this.contentBlock[this.FORM_NAME_COORDINATE_Y] = googleResults.suggestion.latlng.lat;
69
+ this.contentBlock[this.FORM_NAME_COORDINATE_X] = googleResults.suggestion.latlng.lng;
70
+ this.address = googleResults.suggestion.value;
79
71
  this.showMap = true;
80
72
  this.persist();
81
73
  }
82
- createEditAlgoliaInput() {
83
- if (this.editPlaceMap === null) {
84
- this.editPlaceMap = places({
85
- appId: 'pl9OI1NPY62Y',
86
- apiKey: '290e5a0e33e751c85c36690d502991fc',
87
- container: document.querySelector('#address-input-edit' + this.uuid),
88
- });
89
- this.editPlaceMap.on('change', (algoliaReturnElement) => {
90
- this.setCoordinateOnPlaces(algoliaReturnElement);
91
- });
92
- }
74
+ handleAddressChange(event) {
75
+ this.googleMapReturnElement = {
76
+ suggestion: {
77
+ latlng: {
78
+ lat: event.geometry.location.lat(),
79
+ lng: event.geometry.location.lng(),
80
+ },
81
+ value: event.name,
82
+ },
83
+ };
84
+ this.setCoordinateOnPlaces(this.googleMapReturnElement);
85
+ }
86
+ /**
87
+ * Avoid partial map loaded at the initialization
88
+ * @param map
89
+ */
90
+ onMapReady(map) {
91
+ setTimeout(() => {
92
+ map.invalidateSize();
93
+ }, 0);
93
94
  }
94
95
  selectThisForm() {
95
96
  if (this.selectedValue === null) {
@@ -101,23 +102,14 @@ export class MapBackgroundFormLeftComponent extends StructuresComponent {
101
102
  this.contentBlock[FORM_NAME_ID_FORM] = this.selectedValue.id;
102
103
  this.persist();
103
104
  }
104
- /**
105
- * Avoid partial map loaded at the initialization
106
- * @param map
107
- */
108
- onMapReady(map) {
109
- setTimeout(() => {
110
- map.invalidateSize();
111
- }, 0);
112
- }
113
105
  }
114
106
  MapBackgroundFormLeftComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MapBackgroundFormLeftComponent, deps: [{ token: i1.ApiService }], target: i0.ɵɵFactoryTarget.Component });
115
- MapBackgroundFormLeftComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: MapBackgroundFormLeftComponent, selector: "wb-map-background-form-left", viewQueries: [{ propertyName: "input", first: true, predicate: ["myInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"wb-map-background-form-left\">\n <div class=\"wb-map-background-form-left__container__config\" *ngIf=\"showMap\">\n <wb-structure-config\n [blockUUID]=\"uuid\"\n [position]=\"TYPE_CONFIG_POSITION_RIGHT_TOP\"\n (click)=\"createEditAlgoliaInput()\"\n [isFullwidth]=\"true\"\n >\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input id=\"address-input-edit{{ uuid }}\" type=\"text\" [(ngModel)]=\"address\" #myInputEdit (click)=\"myInputEdit.select()\" />\n </wb-structure-config>\n </div>\n <div class=\"wb-map-background-form-left__selector\" *ngIf=\"!showMap\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input id=\"address-input{{ uuid }}\" type=\"text\" [(ngModel)]=\"address\" #myInput (click)=\"myInput.select()\" />\n </div>\n <div class=\"columns is-gapless\" *ngIf=\"showMap\">\n <div class=\"column\">\n <div *ngIf=\"selectedDetailForm.length === 0\">\n <div *ngIf=\"forms.length === 0\" class=\"wb-map-background-form-left__loader\">\n <wb-loader></wb-loader>\n </div>\n <div class=\"wb-map-background-form-left__selector-form\" *ngIf=\"forms.length > 0\">\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n </div>\n </div>\n <div *ngIf=\"selectedDetailForm.length > 0\" class=\"wb-map-background-form-left__container-form\">\n <div class=\"wb-map-background-form-left__container-form__editor\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n <div class=\"wb-map-background-form-left__container-form__content\">\n <div *ngFor=\"let select of selectedDetailForm\">\n <p [innerHTML]=\"select.title\"></p>\n <p>{{ select.type | answerPipe | translate }}</p>\n </div>\n <div>\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n &nbsp;&nbsp;&nbsp;\n <button>{{ selectedValue.submit_label }}</button>\n </div>\n </div>\n </div>\n <div class=\"wb-map-background-form-left__container\">\n <div>\n <div class=\"wb-map-background-form-left__cover\"></div>\n <div\n class=\"wb-map-background-form-left__container__map\"\n leaflet\n [leafletOptions]=\"options\"\n [leafletLayers]=\"layers\"\n [(leafletCenter)]=\"center\"\n (leafletMapReady)=\"onMapReady($event)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.StructureConfigComponent, selector: "wb-structure-config", inputs: ["isActive", "blockUUID", "position", "isFullwidth", "small", "extraSmall"] }, { kind: "component", type: i5.StructureSelectComponent, selector: "wb-structure-select", inputs: ["selectedValue", "forms", "large", "icon", "label"], outputs: ["changed"] }, { kind: "component", type: i6.LoaderComponent, selector: "wb-loader" }, { kind: "component", type: i7.WiziEditorComponent, selector: "wz-editor", inputs: ["placeholder", "position"] }, { kind: "directive", type: i8.LeafletDirective, selector: "[leaflet]", inputs: ["leafletFitBoundsOptions", "leafletPanOptions", "leafletZoomOptions", "leafletZoomPanOptions", "leafletOptions", "leafletZoom", "leafletCenter", "leafletFitBounds", "leafletMaxBounds", "leafletMinZoom", "leafletMaxZoom"], outputs: ["leafletMapReady", "leafletZoomChange", "leafletCenterChange", "leafletClick", "leafletDoubleClick", "leafletMouseDown", "leafletMouseUp", "leafletMouseMove", "leafletMouseOver", "leafletMouseOut", "leafletMapMove", "leafletMapMoveStart", "leafletMapMoveEnd", "leafletMapZoom", "leafletMapZoomStart", "leafletMapZoomEnd"] }, { kind: "directive", type: i8.LeafletLayersDirective, selector: "[leafletLayers]", inputs: ["leafletLayers"] }, { kind: "pipe", type: i9.AnswerTypePipe, name: "answerPipe" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
107
+ MapBackgroundFormLeftComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: MapBackgroundFormLeftComponent, selector: "wb-map-background-form-left", viewQueries: [{ propertyName: "input", first: true, predicate: ["myInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"wb-map-background-form-left\">\n <div class=\"wb-map-background-form-left__container__config\" *ngIf=\"showMap\">\n <wb-structure-config [blockUUID]=\"uuid\" [position]=\"TYPE_CONFIG_POSITION_RIGHT_TOP\" [isFullwidth]=\"true\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input\n id=\"address-input-edit{{ uuid }}\"\n type=\"text\"\n [(ngModel)]=\"address\"\n #myInputEdit\n (click)=\"myInputEdit.select()\"\n ngx-google-places-autocomplete\n (onAddressChange)=\"handleAddressChange($event)\"\n />\n </wb-structure-config>\n </div>\n <div class=\"wb-map-background-form-left__selector\" *ngIf=\"!showMap\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input\n id=\"address-input{{ uuid }}\"\n type=\"text\"\n [(ngModel)]=\"address\"\n #myInput\n (click)=\"myInput.select()\"\n ngx-google-places-autocomplete\n (onAddressChange)=\"handleAddressChange($event)\"\n />\n </div>\n <div class=\"columns is-gapless\" *ngIf=\"showMap\">\n <div class=\"column\">\n <div *ngIf=\"selectedDetailForm.length === 0\">\n <div *ngIf=\"forms.length === 0\" class=\"wb-map-background-form-left__loader\">\n <wb-loader></wb-loader>\n </div>\n <div class=\"wb-map-background-form-left__selector-form\" *ngIf=\"forms.length > 0\">\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n </div>\n </div>\n <div *ngIf=\"selectedDetailForm.length > 0\" class=\"wb-map-background-form-left__container-form\">\n <div class=\"wb-map-background-form-left__container-form__editor\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n <div class=\"wb-map-background-form-left__container-form__content\">\n <div *ngFor=\"let select of selectedDetailForm\">\n <p [innerHTML]=\"select.title\"></p>\n <p>{{ select.type | answerPipe | translate }}</p>\n </div>\n <div>\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n &nbsp;&nbsp;&nbsp;\n <button>{{ selectedValue.submit_label }}</button>\n </div>\n </div>\n </div>\n <div class=\"wb-map-background-form-left__container\">\n <div>\n <div class=\"wb-map-background-form-left__cover\"></div>\n <div\n class=\"wb-map-background-form-left__container__map\"\n leaflet\n [leafletOptions]=\"options\"\n [leafletLayers]=\"layers\"\n [(leafletCenter)]=\"center\"\n (leafletMapReady)=\"onMapReady($event)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.StructureConfigComponent, selector: "wb-structure-config", inputs: ["isActive", "blockUUID", "position", "isFullwidth", "small", "extraSmall"] }, { kind: "component", type: i5.StructureSelectComponent, selector: "wb-structure-select", inputs: ["selectedValue", "forms", "large", "icon", "label"], outputs: ["changed"] }, { kind: "component", type: i6.LoaderComponent, selector: "wb-loader" }, { kind: "component", type: i7.WiziEditorComponent, selector: "wz-editor", inputs: ["placeholder", "position"] }, { kind: "directive", type: i8.LeafletDirective, selector: "[leaflet]", inputs: ["leafletFitBoundsOptions", "leafletPanOptions", "leafletZoomOptions", "leafletZoomPanOptions", "leafletOptions", "leafletZoom", "leafletCenter", "leafletFitBounds", "leafletMaxBounds", "leafletMinZoom", "leafletMaxZoom"], outputs: ["leafletMapReady", "leafletZoomChange", "leafletCenterChange", "leafletClick", "leafletDoubleClick", "leafletMouseDown", "leafletMouseUp", "leafletMouseMove", "leafletMouseOver", "leafletMouseOut", "leafletMapMove", "leafletMapMoveStart", "leafletMapMoveEnd", "leafletMapZoom", "leafletMapZoomStart", "leafletMapZoomEnd"] }, { kind: "directive", type: i8.LeafletLayersDirective, selector: "[leafletLayers]", inputs: ["leafletLayers"] }, { kind: "directive", type: i9.GooglePlaceDirective, selector: "[ngx-google-places-autocomplete]", inputs: ["options"], outputs: ["onAddressChange"], exportAs: ["ngx-places"] }, { kind: "pipe", type: i10.AnswerTypePipe, name: "answerPipe" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
116
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MapBackgroundFormLeftComponent, decorators: [{
117
109
  type: Component,
118
- args: [{ selector: MapBackgroundFormLeftService.selector(), template: "<div class=\"wb-map-background-form-left\">\n <div class=\"wb-map-background-form-left__container__config\" *ngIf=\"showMap\">\n <wb-structure-config\n [blockUUID]=\"uuid\"\n [position]=\"TYPE_CONFIG_POSITION_RIGHT_TOP\"\n (click)=\"createEditAlgoliaInput()\"\n [isFullwidth]=\"true\"\n >\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input id=\"address-input-edit{{ uuid }}\" type=\"text\" [(ngModel)]=\"address\" #myInputEdit (click)=\"myInputEdit.select()\" />\n </wb-structure-config>\n </div>\n <div class=\"wb-map-background-form-left__selector\" *ngIf=\"!showMap\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input id=\"address-input{{ uuid }}\" type=\"text\" [(ngModel)]=\"address\" #myInput (click)=\"myInput.select()\" />\n </div>\n <div class=\"columns is-gapless\" *ngIf=\"showMap\">\n <div class=\"column\">\n <div *ngIf=\"selectedDetailForm.length === 0\">\n <div *ngIf=\"forms.length === 0\" class=\"wb-map-background-form-left__loader\">\n <wb-loader></wb-loader>\n </div>\n <div class=\"wb-map-background-form-left__selector-form\" *ngIf=\"forms.length > 0\">\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n </div>\n </div>\n <div *ngIf=\"selectedDetailForm.length > 0\" class=\"wb-map-background-form-left__container-form\">\n <div class=\"wb-map-background-form-left__container-form__editor\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n <div class=\"wb-map-background-form-left__container-form__content\">\n <div *ngFor=\"let select of selectedDetailForm\">\n <p [innerHTML]=\"select.title\"></p>\n <p>{{ select.type | answerPipe | translate }}</p>\n </div>\n <div>\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n &nbsp;&nbsp;&nbsp;\n <button>{{ selectedValue.submit_label }}</button>\n </div>\n </div>\n </div>\n <div class=\"wb-map-background-form-left__container\">\n <div>\n <div class=\"wb-map-background-form-left__cover\"></div>\n <div\n class=\"wb-map-background-form-left__container__map\"\n leaflet\n [leafletOptions]=\"options\"\n [leafletLayers]=\"layers\"\n [(leafletCenter)]=\"center\"\n (leafletMapReady)=\"onMapReady($event)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
110
+ args: [{ selector: MapBackgroundFormLeftService.selector(), template: "<div class=\"wb-map-background-form-left\">\n <div class=\"wb-map-background-form-left__container__config\" *ngIf=\"showMap\">\n <wb-structure-config [blockUUID]=\"uuid\" [position]=\"TYPE_CONFIG_POSITION_RIGHT_TOP\" [isFullwidth]=\"true\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input\n id=\"address-input-edit{{ uuid }}\"\n type=\"text\"\n [(ngModel)]=\"address\"\n #myInputEdit\n (click)=\"myInputEdit.select()\"\n ngx-google-places-autocomplete\n (onAddressChange)=\"handleAddressChange($event)\"\n />\n </wb-structure-config>\n </div>\n <div class=\"wb-map-background-form-left__selector\" *ngIf=\"!showMap\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input\n id=\"address-input{{ uuid }}\"\n type=\"text\"\n [(ngModel)]=\"address\"\n #myInput\n (click)=\"myInput.select()\"\n ngx-google-places-autocomplete\n (onAddressChange)=\"handleAddressChange($event)\"\n />\n </div>\n <div class=\"columns is-gapless\" *ngIf=\"showMap\">\n <div class=\"column\">\n <div *ngIf=\"selectedDetailForm.length === 0\">\n <div *ngIf=\"forms.length === 0\" class=\"wb-map-background-form-left__loader\">\n <wb-loader></wb-loader>\n </div>\n <div class=\"wb-map-background-form-left__selector-form\" *ngIf=\"forms.length > 0\">\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n </div>\n </div>\n <div *ngIf=\"selectedDetailForm.length > 0\" class=\"wb-map-background-form-left__container-form\">\n <div class=\"wb-map-background-form-left__container-form__editor\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n <div class=\"wb-map-background-form-left__container-form__content\">\n <div *ngFor=\"let select of selectedDetailForm\">\n <p [innerHTML]=\"select.title\"></p>\n <p>{{ select.type | answerPipe | translate }}</p>\n </div>\n <div>\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n &nbsp;&nbsp;&nbsp;\n <button>{{ selectedValue.submit_label }}</button>\n </div>\n </div>\n </div>\n <div class=\"wb-map-background-form-left__container\">\n <div>\n <div class=\"wb-map-background-form-left__cover\"></div>\n <div\n class=\"wb-map-background-form-left__container__map\"\n leaflet\n [leafletOptions]=\"options\"\n [leafletLayers]=\"layers\"\n [(leafletCenter)]=\"center\"\n (leafletMapReady)=\"onMapReady($event)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
119
111
  }], ctorParameters: function () { return [{ type: i1.ApiService }]; }, propDecorators: { input: [{
120
112
  type: ViewChild,
121
113
  args: ['myInput']
122
114
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWJhY2tncm91bmQtZm9ybS1sZWZ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9zdHJ1Y3R1cmVzL21hcC9iYWNrZ3JvdW5kLWZvcm0tbGVmdC9tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3N0cnVjdHVyZXMvbWFwL2JhY2tncm91bmQtZm9ybS1sZWZ0L21hcC1iYWNrZ3JvdW5kLWZvcm0tbGVmdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFELE9BQU8sTUFBTSxNQUFNLFdBQVcsQ0FBQztBQUUvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFakUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0RBQStELENBQUM7Ozs7Ozs7Ozs7OztBQU83RyxNQUFNLE9BQU8sOEJBQ1QsU0FBUSxtQkFBNkM7SUFtQnJELFlBQW9CLFVBQXNCO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRFEsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWhCMUMsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUdiLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXBCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRVosWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixVQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUUxQixrQkFBYSxHQUFnQixJQUFJLENBQUM7UUFFbEMsdUJBQWtCLEdBQW9CLEVBQUUsQ0FBQztRQUlyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUM5RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUVuQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDckIsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsRUFBRTt3QkFDL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztxQkFDekI7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDTjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztZQUM5QixLQUFLLEVBQUUsY0FBYztZQUNyQixNQUFNLEVBQUUsa0NBQWtDO1lBQzFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7U0FDdEMsQ0FBQyxDQUFDO1FBRUgsa0JBQWtCLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLG9CQUFnQyxFQUFFLEVBQUU7WUFDakUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQscUJBQXFCLENBQUMsb0JBQWdDO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDWCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsbURBQW1ELEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ2xILElBQUksRUFBRSxFQUFFO1lBQ1IsV0FBVyxFQUFFLEtBQUs7WUFDbEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUN6RyxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3RyxJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1YsTUFBTSxDQUFDLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDN0YsSUFBSSxFQUFFLElBQUksQ0FBQztvQkFDUCxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUNsQixVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUNwQixPQUFPLEVBQUUsMkNBQTJDO29CQUNwRCxTQUFTLEVBQUUsNkNBQTZDO2lCQUMzRCxDQUFDO2FBQ0wsQ0FBQztTQUNMLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzVGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsb0JBQW9CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFFNUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXBCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsc0JBQXNCO1FBQ2xCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7Z0JBQ3ZCLEtBQUssRUFBRSxjQUFjO2dCQUNyQixNQUFNLEVBQUUsa0NBQWtDO2dCQUMxQyxTQUFTLEVBQW9CLFFBQVEsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQzthQUN6RixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxvQkFBZ0MsRUFBRSxFQUFFO2dCQUNoRSxJQUFJLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQzdCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFO1lBQ3ZGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsR0FBRztRQUNWLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzs7MkhBcEhRLDhCQUE4QjsrR0FBOUIsOEJBQThCLDRMQ2hCM0MseWdJQWlGQTsyRkRqRWEsOEJBQThCO2tCQUoxQyxTQUFTOytCQUNJLDRCQUE0QixDQUFDLFFBQVEsRUFBRTtpR0FNM0IsS0FBSztzQkFBMUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGT1JNX05BTUVfSURfRk9STSB9IGZyb20gJy4uLy4uLy4uL2R0b3MvZm9ybXMvZm9ybXMuZHRvJztcbmltcG9ydCB7IFN0cnVjdHVyZXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zdHJ1Y3R1cmVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcGVuTWFwRHRvIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9hcGlzL21hcHMvb3Blbi1tYXAuZHRvJztcbmltcG9ydCB7IGljb24sIGxhdExuZywgbWFya2VyLCB0aWxlTGF5ZXIgfSBmcm9tICdsZWFmbGV0JztcbmltcG9ydCBwbGFjZXMgZnJvbSAncGxhY2VzLmpzJztcbmltcG9ydCB7IEZvcm1MaXN0RHRvIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9hcGlzL2Zvcm1zL2Zvcm0tbGlzdC5kdG8nO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hcEJhY2tncm91bmRGb3JtTGVmdER0byB9IGZyb20gJy4uLy4uLy4uL2R0b3MvYmxvY2tzL21hcC9tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnQuZHRvJztcbmltcG9ydCB7IE1hcEJhY2tncm91bmRGb3JtTGVmdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ibG9ja3MvbWFwL21hcC1iYWNrZ3JvdW5kLWZvcm0tbGVmdC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1EZXRhaWxEdG8gfSBmcm9tICcuLi8uLi8uLi9kdG9zL2FwaXMvZm9ybXMvZm9ybS1kZXRhaWwuZHRvJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IE1hcEJhY2tncm91bmRGb3JtTGVmdFNlcnZpY2Uuc2VsZWN0b3IoKSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFwLWJhY2tncm91bmQtZm9ybS1sZWZ0LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwQmFja2dyb3VuZEZvcm1MZWZ0Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBTdHJ1Y3R1cmVzQ29tcG9uZW50PE1hcEJhY2tncm91bmRGb3JtTGVmdER0bz5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKCdteUlucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWY7XG4gICAgYWRkcmVzcyA9ICcnO1xuICAgIGNlbnRlcjtcblxuICAgIGVkaXRQbGFjZU1hcCA9IG51bGw7XG5cbiAgICBvcHRpb25zID0ge307XG4gICAgbGF5ZXJzID0gW107XG5cbiAgICBzaG93TWFwID0gZmFsc2U7XG5cbiAgICBmb3JtczogRm9ybUxpc3REdG9bXSA9IFtdO1xuXG4gICAgc2VsZWN0ZWRWYWx1ZTogRm9ybUxpc3REdG8gPSBudWxsO1xuXG4gICAgc2VsZWN0ZWREZXRhaWxGb3JtOiBGb3JtRGV0YWlsRHRvW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnNldENvbXBvbmVudFNlcnZpY2UoTWFwQmFja2dyb3VuZEZvcm1MZWZ0U2VydmljZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLmdldEZvcm1zTGlzdCgpLnN1YnNjcmliZSgobGlzdHM6IEZvcm1MaXN0RHRvW10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybXMgPSBsaXN0cztcblxuICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9JRF9GT1JNXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodi5pZCA9PT0gdGhpcy5jb250ZW50QmxvY2tbRk9STV9OQU1FX0lEX0ZPUk1dKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RUaGlzRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGxhY2VzQXV0b2NvbXBsZXRlID0gcGxhY2VzKHtcbiAgICAgICAgICAgIGFwcElkOiAncGw5T0kxTlBZNjJZJyxcbiAgICAgICAgICAgIGFwaUtleTogJzI5MGU1YTBlMzNlNzUxYzg1YzM2NjkwZDUwMjk5MWZjJyxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LFxuICAgICAgICB9KTtcblxuICAgICAgICBwbGFjZXNBdXRvY29tcGxldGUub24oJ2NoYW5nZScsIChhbGdvbGlhUmV0dXJuRWxlbWVudDogT3Blbk1hcER0bykgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRDb29yZGluYXRlT25QbGFjZXMoYWxnb2xpYVJldHVybkVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRDb29yZGluYXRlT25QbGFjZXMoYWxnb2xpYVJldHVybkVsZW1lbnQ6IE9wZW5NYXBEdG8pIHtcbiAgICAgICAgdGhpcy5zaG93TWFwID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGxheWVyczogW3RpbGVMYXllcignaHR0cDovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsIHsgbWF4Wm9vbTogMTYsIGF0dHJpYnV0aW9uOiAnV2l6aVNob3AnIH0pXSxcbiAgICAgICAgICAgIHpvb206IDE4LFxuICAgICAgICAgICAgem9vbUNvbnRyb2w6IGZhbHNlLFxuICAgICAgICAgICAgY2VudGVyOiBsYXRMbmcoYWxnb2xpYVJldHVybkVsZW1lbnQuc3VnZ2VzdGlvbi5sYXRsbmcubGF0LCBhbGdvbGlhUmV0dXJuRWxlbWVudC5zdWdnZXN0aW9uLmxhdGxuZy5sbmcpLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNlbnRlciA9IGxhdExuZyhhbGdvbGlhUmV0dXJuRWxlbWVudC5zdWdnZXN0aW9uLmxhdGxuZy5sYXQsIGFsZ29saWFSZXR1cm5FbGVtZW50LnN1Z2dlc3Rpb24ubGF0bG5nLmxuZyk7XG4gICAgICAgIHRoaXMubGF5ZXJzID0gW1xuICAgICAgICAgICAgbWFya2VyKFthbGdvbGlhUmV0dXJuRWxlbWVudC5zdWdnZXN0aW9uLmxhdGxuZy5sYXQsIGFsZ29saWFSZXR1cm5FbGVtZW50LnN1Z2dlc3Rpb24ubGF0bG5nLmxuZ10sIHtcbiAgICAgICAgICAgICAgICBpY29uOiBpY29uKHtcbiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsyNSwgNDFdLFxuICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMTMsIDQxXSxcbiAgICAgICAgICAgICAgICAgICAgaWNvblVybDogJ2Fzc2V0cy9ibG9ja3MvaW1hZ2VzL21hcHMvbWFya2VyLWljb24ucG5nJyxcbiAgICAgICAgICAgICAgICAgICAgc2hhZG93VXJsOiAnYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvbWFwcy9tYXJrZXItc2hhZG93LnBuZycsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRCbG9ja1t0aGlzLkZPUk1fTkFNRV9DT09SRElOQVRFX1ldID0gYWxnb2xpYVJldHVybkVsZW1lbnQuc3VnZ2VzdGlvbi5sYXRsbmcubGF0O1xuICAgICAgICB0aGlzLmNvbnRlbnRCbG9ja1t0aGlzLkZPUk1fTkFNRV9DT09SRElOQVRFX1hdID0gYWxnb2xpYVJldHVybkVsZW1lbnQuc3VnZ2VzdGlvbi5sYXRsbmcubG5nO1xuXG4gICAgICAgIHRoaXMuYWRkcmVzcyA9IGFsZ29saWFSZXR1cm5FbGVtZW50LnN1Z2dlc3Rpb24udmFsdWU7XG4gICAgICAgIHRoaXMuc2hvd01hcCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5wZXJzaXN0KCk7XG4gICAgfVxuXG4gICAgY3JlYXRlRWRpdEFsZ29saWFJbnB1dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdFBsYWNlTWFwID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRQbGFjZU1hcCA9IHBsYWNlcyh7XG4gICAgICAgICAgICAgICAgYXBwSWQ6ICdwbDlPSTFOUFk2MlknLFxuICAgICAgICAgICAgICAgIGFwaUtleTogJzI5MGU1YTBlMzNlNzUxYzg1YzM2NjkwZDUwMjk5MWZjJyxcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNhZGRyZXNzLWlucHV0LWVkaXQnICsgdGhpcy51dWlkKSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmVkaXRQbGFjZU1hcC5vbignY2hhbmdlJywgKGFsZ29saWFSZXR1cm5FbGVtZW50OiBPcGVuTWFwRHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDb29yZGluYXRlT25QbGFjZXMoYWxnb2xpYVJldHVybkVsZW1lbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RUaGlzRm9ybSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBpU2VydmljZS5nZXRGb3Jtc0RldGFpbCh0aGlzLnNlbGVjdGVkVmFsdWUuaWQpLnN1YnNjcmliZSgobGlzdHM6IEZvcm1EZXRhaWxEdG9bXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERldGFpbEZvcm0gPSBsaXN0cztcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9JRF9GT1JNXSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZS5pZDtcbiAgICAgICAgdGhpcy5wZXJzaXN0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXZvaWQgcGFydGlhbCBtYXAgbG9hZGVkIGF0IHRoZSBpbml0aWFsaXphdGlvblxuICAgICAqIEBwYXJhbSBtYXBcbiAgICAgKi9cbiAgICBvbk1hcFJlYWR5KG1hcCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIG1hcC5pbnZhbGlkYXRlU2l6ZSgpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1sZWZ0XCI+XG4gICAgPGRpdiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tbGVmdF9fY29udGFpbmVyX19jb25maWdcIiAqbmdJZj1cInNob3dNYXBcIj5cbiAgICAgICAgPHdiLXN0cnVjdHVyZS1jb25maWdcbiAgICAgICAgICAgIFtibG9ja1VVSURdPVwidXVpZFwiXG4gICAgICAgICAgICBbcG9zaXRpb25dPVwiVFlQRV9DT05GSUdfUE9TSVRJT05fUklHSFRfVE9QXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGVFZGl0QWxnb2xpYUlucHV0KClcIlxuICAgICAgICAgICAgW2lzRnVsbHdpZHRoXT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8cD57eyAnd2Iuc3RydWN0dXJlcy50ZW1wbGF0ZS4xOScgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJhZGRyZXNzLWlucHV0LWVkaXR7eyB1dWlkIH19XCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3NcIiAjbXlJbnB1dEVkaXQgKGNsaWNrKT1cIm15SW5wdXRFZGl0LnNlbGVjdCgpXCIgLz5cbiAgICAgICAgPC93Yi1zdHJ1Y3R1cmUtY29uZmlnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnRfX3NlbGVjdG9yXCIgKm5nSWY9XCIhc2hvd01hcFwiPlxuICAgICAgICA8cD57eyAnd2Iuc3RydWN0dXJlcy50ZW1wbGF0ZS4xOScgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxpbnB1dCBpZD1cImFkZHJlc3MtaW5wdXR7eyB1dWlkIH19XCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3NcIiAjbXlJbnB1dCAoY2xpY2spPVwibXlJbnB1dC5zZWxlY3QoKVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtZ2FwbGVzc1wiICpuZ0lmPVwic2hvd01hcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWREZXRhaWxGb3JtLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmb3Jtcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tbGVmdF9fbG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDx3Yi1sb2FkZXI+PC93Yi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tbGVmdF9fc2VsZWN0b3ItZm9ybVwiICpuZ0lmPVwiZm9ybXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8d2Itc3RydWN0dXJlLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybXNdPVwiZm9ybXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWQpPVwic2VsZWN0ZWRWYWx1ZSA9ICRldmVudDsgc2VsZWN0VGhpc0Zvcm0oKVwiXG4gICAgICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZERldGFpbEZvcm0ubGVuZ3RoID4gMFwiIGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1sZWZ0X19jb250YWluZXItZm9ybVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnRfX2NvbnRhaW5lci1mb3JtX19lZGl0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3ei1lZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX1RJVExFXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicGVyc2lzdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3diLnNoYXJlZC5jb21wb25lbnRzLnF1aWxsLjEnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3otZWRpdG9yPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3ei1lZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0NPTlRFTlRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwZXJzaXN0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2Iuc2hhcmVkLmNvbXBvbmVudHMucXVpbGwuMScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC93ei1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnRfX2NvbnRhaW5lci1mb3JtX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlbGVjdCBvZiBzZWxlY3RlZERldGFpbEZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwic2VsZWN0LnRpdGxlXCI+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgc2VsZWN0LnR5cGUgfCBhbnN3ZXJQaXBlIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3Yi1zdHJ1Y3R1cmUtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1zXT1cImZvcm1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlZCk9XCJzZWxlY3RlZFZhbHVlID0gJGV2ZW50OyBzZWxlY3RUaGlzRm9ybSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24+e3sgc2VsZWN0ZWRWYWx1ZS5zdWJtaXRfbGFiZWwgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnRfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnRfX2NvdmVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1sZWZ0X19jb250YWluZXJfX21hcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWFmbGV0XG4gICAgICAgICAgICAgICAgICAgICAgICBbbGVhZmxldE9wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGVhZmxldExheWVyc109XCJsYXllcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhsZWFmbGV0Q2VudGVyKV09XCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGxlYWZsZXRNYXBSZWFkeSk9XCJvbk1hcFJlYWR5KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWJhY2tncm91bmQtZm9ybS1sZWZ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9zdHJ1Y3R1cmVzL21hcC9iYWNrZ3JvdW5kLWZvcm0tbGVmdC9tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3N0cnVjdHVyZXMvbWFwL2JhY2tncm91bmQtZm9ybS1sZWZ0L21hcC1iYWNrZ3JvdW5kLWZvcm0tbGVmdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDOzs7Ozs7Ozs7Ozs7O0FBTzdHLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxtQkFBNkM7SUFxQjdGLFlBQW9CLFVBQXNCO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRFEsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQW5CMUMsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBSXBCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztR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dCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZPUk1fTkFNRV9JRF9GT1JNIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9mb3Jtcy9mb3Jtcy5kdG8nO1xuaW1wb3J0IHsgU3RydWN0dXJlc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3N0cnVjdHVyZXMuY29tcG9uZW50JztcbmltcG9ydCB7IE9wZW5NYXBEdG8gfSBmcm9tICcuLi8uLi8uLi9kdG9zL2FwaXMvbWFwcy9vcGVuLW1hcC5kdG8nO1xuaW1wb3J0IHsgaWNvbiwgbGF0TG5nLCBtYXJrZXIsIHRpbGVMYXllciB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHBsYWNlcyBmcm9tICdwbGFjZXMuanMnO1xuaW1wb3J0IHsgRm9ybUxpc3REdG8gfSBmcm9tICcuLi8uLi8uLi9kdG9zL2FwaXMvZm9ybXMvZm9ybS1saXN0LmR0byc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFwQmFja2dyb3VuZEZvcm1MZWZ0RHRvIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9ibG9ja3MvbWFwL21hcC1iYWNrZ3JvdW5kLWZvcm0tbGVmdC5kdG8nO1xuaW1wb3J0IHsgTWFwQmFja2dyb3VuZEZvcm1MZWZ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Jsb2Nrcy9tYXAvbWFwLWJhY2tncm91bmQtZm9ybS1sZWZ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybURldGFpbER0byB9IGZyb20gJy4uLy4uLy4uL2R0b3MvYXBpcy9mb3Jtcy9mb3JtLWRldGFpbC5kdG8nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogTWFwQmFja2dyb3VuZEZvcm1MZWZ0U2VydmljZS5zZWxlY3RvcigpLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBCYWNrZ3JvdW5kRm9ybUxlZnRDb21wb25lbnQgZXh0ZW5kcyBTdHJ1Y3R1cmVzQ29tcG9uZW50PE1hcEJhY2tncm91bmRGb3JtTGVmdER0bz4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgnbXlJbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuICAgIGFkZHJlc3MgPSAnJztcbiAgICB0cmlnZ2VyQWRkcmVzcyA9ICcnO1xuICAgIGNlbnRlcjtcbiAgICBnb29nbGVNYXBSZXR1cm5FbGVtZW50OiBPcGVuTWFwRHRvO1xuXG4gICAgZWRpdFBsYWNlTWFwID0gbnVsbDtcbiAgICBmaXJzdFRpbWVUcmlnZ2VyID0gZmFsc2U7XG5cbiAgICBvcHRpb25zID0ge307XG4gICAgbGF5ZXJzID0gW107XG5cbiAgICBzaG93TWFwID0gZmFsc2U7XG5cbiAgICBmb3JtczogRm9ybUxpc3REdG9bXSA9IFtdO1xuXG4gICAgc2VsZWN0ZWRWYWx1ZTogRm9ybUxpc3REdG8gPSBudWxsO1xuXG4gICAgc2VsZWN0ZWREZXRhaWxGb3JtOiBGb3JtRGV0YWlsRHRvW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnNldENvbXBvbmVudFNlcnZpY2UoTWFwQmFja2dyb3VuZEZvcm1MZWZ0U2VydmljZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLmdldEZvcm1zTGlzdCgpLnN1YnNjcmliZSgobGlzdHM6IEZvcm1MaXN0RHRvW10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybXMgPSBsaXN0cztcblxuICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9JRF9GT1JNXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodi5pZCA9PT0gdGhpcy5jb250ZW50QmxvY2tbRk9STV9OQU1FX0lEX0ZPUk1dKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RUaGlzRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldENvb3JkaW5hdGVPblBsYWNlcyhnb29nbGVSZXN1bHRzOiBPcGVuTWFwRHRvKSB7XG4gICAgICAgIHRoaXMuc2hvd01hcCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAgICAgICBsYXllcnM6IFt0aWxlTGF5ZXIoJ2h0dHA6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLCB7IG1heFpvb206IDE4LCBhdHRyaWJ1dGlvbjogJ1dpemlTaG9wJyB9KV0sXG4gICAgICAgICAgICB6b29tOiAxOCxcbiAgICAgICAgICAgIHpvb21Db250cm9sOiBmYWxzZSxcbiAgICAgICAgICAgIGNlbnRlcjogbGF0TG5nKGdvb2dsZVJlc3VsdHMuc3VnZ2VzdGlvbi5sYXRsbmcubGF0LCBnb29nbGVSZXN1bHRzLnN1Z2dlc3Rpb24ubGF0bG5nLmxuZyksXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY2VudGVyID0gbGF0TG5nKGdvb2dsZVJlc3VsdHMuc3VnZ2VzdGlvbi5sYXRsbmcubGF0LCBnb29nbGVSZXN1bHRzLnN1Z2dlc3Rpb24ubGF0bG5nLmxuZyk7XG4gICAgICAgIHRoaXMubGF5ZXJzID0gW1xuICAgICAgICAgICAgbWFya2VyKFtnb29nbGVSZXN1bHRzLnN1Z2dlc3Rpb24ubGF0bG5nLmxhdCwgZ29vZ2xlUmVzdWx0cy5zdWdnZXN0aW9uLmxhdGxuZy5sbmddLCB7XG4gICAgICAgICAgICAgICAgaWNvbjogaWNvbih7XG4gICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMjUsIDQxXSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzEzLCA0MV0sXG4gICAgICAgICAgICAgICAgICAgIGljb25Vcmw6ICdhc3NldHMvYmxvY2tzL2ltYWdlcy9tYXBzL21hcmtlci1pY29uLnBuZycsXG4gICAgICAgICAgICAgICAgICAgIHNoYWRvd1VybDogJ2Fzc2V0cy9ibG9ja3MvaW1hZ2VzL21hcHMvbWFya2VyLXNoYWRvdy5wbmcnLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5jb250ZW50QmxvY2tbdGhpcy5GT1JNX05BTUVfQ09PUkRJTkFURV9ZXSA9IGdvb2dsZVJlc3VsdHMuc3VnZ2VzdGlvbi5sYXRsbmcubGF0O1xuICAgICAgICB0aGlzLmNvbnRlbnRCbG9ja1t0aGlzLkZPUk1fTkFNRV9DT09SRElOQVRFX1hdID0gZ29vZ2xlUmVzdWx0cy5zdWdnZXN0aW9uLmxhdGxuZy5sbmc7XG5cbiAgICAgICAgdGhpcy5hZGRyZXNzID0gZ29vZ2xlUmVzdWx0cy5zdWdnZXN0aW9uLnZhbHVlO1xuICAgICAgICB0aGlzLnNob3dNYXAgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMucGVyc2lzdCgpO1xuICAgIH1cblxuICAgIGhhbmRsZUFkZHJlc3NDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5nb29nbGVNYXBSZXR1cm5FbGVtZW50ID0ge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbjoge1xuICAgICAgICAgICAgICAgIGxhdGxuZzoge1xuICAgICAgICAgICAgICAgICAgICBsYXQ6IGV2ZW50Lmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpLFxuICAgICAgICAgICAgICAgICAgICBsbmc6IGV2ZW50Lmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGV2ZW50Lm5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNldENvb3JkaW5hdGVPblBsYWNlcyh0aGlzLmdvb2dsZU1hcFJldHVybkVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF2b2lkIHBhcnRpYWwgbWFwIGxvYWRlZCBhdCB0aGUgaW5pdGlhbGl6YXRpb25cbiAgICAgKiBAcGFyYW0gbWFwXG4gICAgICovXG4gICAgb25NYXBSZWFkeShtYXApIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBtYXAuaW52YWxpZGF0ZVNpemUoKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgc2VsZWN0VGhpc0Zvcm0oKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0Rm9ybXNEZXRhaWwodGhpcy5zZWxlY3RlZFZhbHVlLmlkKS5zdWJzY3JpYmUoKGxpc3RzOiBGb3JtRGV0YWlsRHRvW10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXRhaWxGb3JtID0gbGlzdHM7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfSURfRk9STV0gPSB0aGlzLnNlbGVjdGVkVmFsdWUuaWQ7XG4gICAgICAgIHRoaXMucGVyc2lzdCgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1sZWZ0X19jb250YWluZXJfX2NvbmZpZ1wiICpuZ0lmPVwic2hvd01hcFwiPlxuICAgICAgICA8d2Itc3RydWN0dXJlLWNvbmZpZyBbYmxvY2tVVUlEXT1cInV1aWRcIiBbcG9zaXRpb25dPVwiVFlQRV9DT05GSUdfUE9TSVRJT05fUklHSFRfVE9QXCIgW2lzRnVsbHdpZHRoXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxwPnt7ICd3Yi5zdHJ1Y3R1cmVzLnRlbXBsYXRlLjE5JyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwiYWRkcmVzcy1pbnB1dC1lZGl0e3sgdXVpZCB9fVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgI215SW5wdXRFZGl0XG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm15SW5wdXRFZGl0LnNlbGVjdCgpXCJcbiAgICAgICAgICAgICAgICBuZ3gtZ29vZ2xlLXBsYWNlcy1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICAob25BZGRyZXNzQ2hhbmdlKT1cImhhbmRsZUFkZHJlc3NDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3diLXN0cnVjdHVyZS1jb25maWc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tbGVmdF9fc2VsZWN0b3JcIiAqbmdJZj1cIiFzaG93TWFwXCI+XG4gICAgICAgIDxwPnt7ICd3Yi5zdHJ1Y3R1cmVzLnRlbXBsYXRlLjE5JyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImFkZHJlc3MtaW5wdXR7eyB1dWlkIH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYWRkcmVzc1wiXG4gICAgICAgICAgICAjbXlJbnB1dFxuICAgICAgICAgICAgKGNsaWNrKT1cIm15SW5wdXQuc2VsZWN0KClcIlxuICAgICAgICAgICAgbmd4LWdvb2dsZS1wbGFjZXMtYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAob25BZGRyZXNzQ2hhbmdlKT1cImhhbmRsZUFkZHJlc3NDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtZ2FwbGVzc1wiICpuZ0lmPVwic2hvd01hcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWREZXRhaWxGb3JtLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmb3Jtcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tbGVmdF9fbG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDx3Yi1sb2FkZXI+PC93Yi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tbGVmdF9fc2VsZWN0b3ItZm9ybVwiICpuZ0lmPVwiZm9ybXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8d2Itc3RydWN0dXJlLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybXNdPVwiZm9ybXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWQpPVwic2VsZWN0ZWRWYWx1ZSA9ICRldmVudDsgc2VsZWN0VGhpc0Zvcm0oKVwiXG4gICAgICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZERldGFpbEZvcm0ubGVuZ3RoID4gMFwiIGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1sZWZ0X19jb250YWluZXItZm9ybVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnRfX2NvbnRhaW5lci1mb3JtX19lZGl0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3ei1lZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX1RJVExFXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicGVyc2lzdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3diLnNoYXJlZC5jb21wb25lbnRzLnF1aWxsLjEnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3otZWRpdG9yPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3ei1lZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0NPTlRFTlRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwZXJzaXN0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2Iuc2hhcmVkLmNvbXBvbmVudHMucXVpbGwuMScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC93ei1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnRfX2NvbnRhaW5lci1mb3JtX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlbGVjdCBvZiBzZWxlY3RlZERldGFpbEZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwic2VsZWN0LnRpdGxlXCI+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgc2VsZWN0LnR5cGUgfCBhbnN3ZXJQaXBlIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3Yi1zdHJ1Y3R1cmUtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1zXT1cImZvcm1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlZCk9XCJzZWxlY3RlZFZhbHVlID0gJGV2ZW50OyBzZWxlY3RUaGlzRm9ybSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24+e3sgc2VsZWN0ZWRWYWx1ZS5zdWJtaXRfbGFiZWwgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnRfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLWxlZnRfX2NvdmVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1sZWZ0X19jb250YWluZXJfX21hcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWFmbGV0XG4gICAgICAgICAgICAgICAgICAgICAgICBbbGVhZmxldE9wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGVhZmxldExheWVyc109XCJsYXllcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhsZWFmbGV0Q2VudGVyKV09XCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGxlYWZsZXRNYXBSZWFkeSk9XCJvbk1hcFJlYWR5KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -2,7 +2,6 @@ import { Component, ElementRef, ViewChild } from '@angular/core';
2
2
  import { FORM_NAME_ID_FORM } from '../../../dtos/forms/forms.dto';
3
3
  import { StructuresComponent } from '../../structures.component';
4
4
  import { icon, latLng, marker, tileLayer } from 'leaflet';
5
- import places from 'places.js';
6
5
  import { ApiService } from '../../../services/utils/api.service';
7
6
  import { MapBackgroundFormRightService } from '../../../services/blocks/map/map-background-form-right.service';
8
7
  import * as i0 from "@angular/core";
@@ -14,14 +13,17 @@ import * as i5 from "../../../shared/components/structure-select/structure-selec
14
13
  import * as i6 from "../../../shared/components/loader/loader.component";
15
14
  import * as i7 from "@wizishop/wizi-editor";
16
15
  import * as i8 from "@asymmetrik/ngx-leaflet";
17
- import * as i9 from "../../../shared/pipes/answer-type/answer-type.pipe";
18
- import * as i10 from "@ngx-translate/core";
16
+ import * as i9 from "ngx-google-places-autocomplete";
17
+ import * as i10 from "../../../shared/pipes/answer-type/answer-type.pipe";
18
+ import * as i11 from "@ngx-translate/core";
19
19
  export class MapBackgroundFormRightComponent extends StructuresComponent {
20
20
  constructor(apiService) {
21
21
  super();
22
22
  this.apiService = apiService;
23
23
  this.address = '';
24
+ this.triggerAddress = '';
24
25
  this.editPlaceMap = null;
26
+ this.firstTimeTrigger = false;
25
27
  this.options = {};
26
28
  this.layers = [];
27
29
  this.showMap = false;
@@ -44,27 +46,17 @@ export class MapBackgroundFormRightComponent extends StructuresComponent {
44
46
  }
45
47
  });
46
48
  }
47
- ngAfterViewInit() {
48
- const placesAutocomplete = places({
49
- appId: 'pl9OI1NPY62Y',
50
- apiKey: '290e5a0e33e751c85c36690d502991fc',
51
- container: this.input.nativeElement,
52
- });
53
- placesAutocomplete.on('change', (algoliaReturnElement) => {
54
- this.setCoordinateOnPlaces(algoliaReturnElement);
55
- });
56
- }
57
- setCoordinateOnPlaces(algoliaReturnElement) {
49
+ setCoordinateOnPlaces(googleResults) {
58
50
  this.showMap = false;
59
51
  this.options = {
60
- layers: [tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 16, attribution: 'WiziShop' })],
52
+ layers: [tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 18, attribution: 'WiziShop' })],
61
53
  zoom: 18,
62
54
  zoomControl: false,
63
- center: latLng(algoliaReturnElement.suggestion.latlng.lat, algoliaReturnElement.suggestion.latlng.lng),
55
+ center: latLng(googleResults.suggestion.latlng.lat, googleResults.suggestion.latlng.lng),
64
56
  };
65
- this.center = latLng(algoliaReturnElement.suggestion.latlng.lat, algoliaReturnElement.suggestion.latlng.lng);
57
+ this.center = latLng(googleResults.suggestion.latlng.lat, googleResults.suggestion.latlng.lng);
66
58
  this.layers = [
67
- marker([algoliaReturnElement.suggestion.latlng.lat, algoliaReturnElement.suggestion.latlng.lng], {
59
+ marker([googleResults.suggestion.latlng.lat, googleResults.suggestion.latlng.lng], {
68
60
  icon: icon({
69
61
  iconSize: [25, 41],
70
62
  iconAnchor: [13, 41],
@@ -73,23 +65,32 @@ export class MapBackgroundFormRightComponent extends StructuresComponent {
73
65
  }),
74
66
  }),
75
67
  ];
76
- this.contentBlock[this.FORM_NAME_COORDINATE_Y] = algoliaReturnElement.suggestion.latlng.lat;
77
- this.contentBlock[this.FORM_NAME_COORDINATE_X] = algoliaReturnElement.suggestion.latlng.lng;
78
- this.address = algoliaReturnElement.suggestion.value;
68
+ this.contentBlock[this.FORM_NAME_COORDINATE_Y] = googleResults.suggestion.latlng.lat;
69
+ this.contentBlock[this.FORM_NAME_COORDINATE_X] = googleResults.suggestion.latlng.lng;
70
+ this.address = googleResults.suggestion.value;
79
71
  this.showMap = true;
80
72
  this.persist();
81
73
  }
82
- createEditAlgoliaInput() {
83
- if (this.editPlaceMap === null) {
84
- this.editPlaceMap = places({
85
- appId: 'pl9OI1NPY62Y',
86
- apiKey: '290e5a0e33e751c85c36690d502991fc',
87
- container: document.querySelector('#address-input-edit' + this.uuid),
88
- });
89
- this.editPlaceMap.on('change', (algoliaReturnElement) => {
90
- this.setCoordinateOnPlaces(algoliaReturnElement);
91
- });
92
- }
74
+ handleAddressChange(event) {
75
+ this.googleMapReturnElement = {
76
+ suggestion: {
77
+ latlng: {
78
+ lat: event.geometry.location.lat(),
79
+ lng: event.geometry.location.lng(),
80
+ },
81
+ value: event.name,
82
+ },
83
+ };
84
+ this.setCoordinateOnPlaces(this.googleMapReturnElement);
85
+ }
86
+ /**
87
+ * Avoid partial map loaded at the initialization
88
+ * @param map
89
+ */
90
+ onMapReady(map) {
91
+ setTimeout(() => {
92
+ map.invalidateSize();
93
+ }, 0);
93
94
  }
94
95
  selectThisForm() {
95
96
  if (this.selectedValue === null) {
@@ -101,23 +102,14 @@ export class MapBackgroundFormRightComponent extends StructuresComponent {
101
102
  this.contentBlock[FORM_NAME_ID_FORM] = this.selectedValue.id;
102
103
  this.persist();
103
104
  }
104
- /**
105
- * Avoid partial map loaded at the initialization
106
- * @param map
107
- */
108
- onMapReady(map) {
109
- setTimeout(() => {
110
- map.invalidateSize();
111
- }, 0);
112
- }
113
105
  }
114
106
  MapBackgroundFormRightComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MapBackgroundFormRightComponent, deps: [{ token: i1.ApiService }], target: i0.ɵɵFactoryTarget.Component });
115
- MapBackgroundFormRightComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: MapBackgroundFormRightComponent, selector: "wb-map-background-form-right", viewQueries: [{ propertyName: "input", first: true, predicate: ["myInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"wb-map-background-form-right\">\n <div class=\"wb-map-background-form-right__container__config\" *ngIf=\"showMap\">\n <wb-structure-config\n [blockUUID]=\"uuid\"\n [position]=\"TYPE_CONFIG_POSITION_LEFT_TOP\"\n (click)=\"createEditAlgoliaInput()\"\n [isFullwidth]=\"true\"\n >\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input id=\"address-input-edit{{ uuid }}\" type=\"text\" [(ngModel)]=\"address\" #myInputEdit (click)=\"myInputEdit.select()\" />\n </wb-structure-config>\n </div>\n <div class=\"wb-map-background-form-right__selector\" *ngIf=\"!showMap\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input id=\"address-input{{ uuid }}\" type=\"text\" [(ngModel)]=\"address\" #myInput (click)=\"myInput.select()\" />\n </div>\n <div class=\"columns is-gapless\" *ngIf=\"showMap\">\n <div class=\"column\">\n <div class=\"wb-map-background-form-right__container\">\n <div *ngIf=\"showMap\">\n <div class=\"wb-map-background-form-right__cover\"></div>\n <div\n class=\"wb-map-background-form-right__container__map\"\n leaflet\n [leafletOptions]=\"options\"\n [leafletLayers]=\"layers\"\n [(leafletCenter)]=\"center\"\n (leafletMapReady)=\"onMapReady($event)\"\n ></div>\n </div>\n </div>\n </div>\n <div class=\"column\">\n <div *ngIf=\"selectedDetailForm.length === 0\">\n <div *ngIf=\"forms.length === 0\" class=\"wb-map-background-form-right__loader\">\n <wb-loader></wb-loader>\n </div>\n <div class=\"wb-map-background-form-right__selector\" *ngIf=\"forms.length > 0\">\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n </div>\n </div>\n <div *ngIf=\"selectedDetailForm.length > 0\" class=\"wb-map-background-form-right__container-form\">\n <div class=\"wb-map-background-form-right__container-form__editor\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n <div class=\"wb-map-background-form-right__container-form__content\">\n <div *ngFor=\"let select of selectedDetailForm\">\n <p [innerHTML]=\"select.title\"></p>\n <p>{{ select.type | answerPipe | translate }}</p>\n </div>\n <div>\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n &nbsp;&nbsp;&nbsp;\n <button>{{ selectedValue.submit_label }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.StructureConfigComponent, selector: "wb-structure-config", inputs: ["isActive", "blockUUID", "position", "isFullwidth", "small", "extraSmall"] }, { kind: "component", type: i5.StructureSelectComponent, selector: "wb-structure-select", inputs: ["selectedValue", "forms", "large", "icon", "label"], outputs: ["changed"] }, { kind: "component", type: i6.LoaderComponent, selector: "wb-loader" }, { kind: "component", type: i7.WiziEditorComponent, selector: "wz-editor", inputs: ["placeholder", "position"] }, { kind: "directive", type: i8.LeafletDirective, selector: "[leaflet]", inputs: ["leafletFitBoundsOptions", "leafletPanOptions", "leafletZoomOptions", "leafletZoomPanOptions", "leafletOptions", "leafletZoom", "leafletCenter", "leafletFitBounds", "leafletMaxBounds", "leafletMinZoom", "leafletMaxZoom"], outputs: ["leafletMapReady", "leafletZoomChange", "leafletCenterChange", "leafletClick", "leafletDoubleClick", "leafletMouseDown", "leafletMouseUp", "leafletMouseMove", "leafletMouseOver", "leafletMouseOut", "leafletMapMove", "leafletMapMoveStart", "leafletMapMoveEnd", "leafletMapZoom", "leafletMapZoomStart", "leafletMapZoomEnd"] }, { kind: "directive", type: i8.LeafletLayersDirective, selector: "[leafletLayers]", inputs: ["leafletLayers"] }, { kind: "pipe", type: i9.AnswerTypePipe, name: "answerPipe" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
107
+ MapBackgroundFormRightComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: MapBackgroundFormRightComponent, selector: "wb-map-background-form-right", viewQueries: [{ propertyName: "input", first: true, predicate: ["myInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"wb-map-background-form-right\">\n <div class=\"wb-map-background-form-right__container__config\" *ngIf=\"showMap\">\n <wb-structure-config [blockUUID]=\"uuid\" [position]=\"TYPE_CONFIG_POSITION_LEFT_TOP\" [isFullwidth]=\"true\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input\n id=\"address-input-edit{{ uuid }}\"\n type=\"text\"\n [(ngModel)]=\"address\"\n #myInputEdit\n (click)=\"myInputEdit.select()\"\n ngx-google-places-autocomplete\n (onAddressChange)=\"handleAddressChange($event)\"\n />\n </wb-structure-config>\n </div>\n <div class=\"wb-map-background-form-right__selector\" *ngIf=\"!showMap\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input\n id=\"address-input{{ uuid }}\"\n type=\"text\"\n [(ngModel)]=\"address\"\n #myInput\n (click)=\"myInput.select()\"\n ngx-google-places-autocomplete\n (onAddressChange)=\"handleAddressChange($event)\"\n />\n </div>\n <div class=\"columns is-gapless\" *ngIf=\"showMap\">\n <div class=\"column\">\n <div class=\"wb-map-background-form-right__container\">\n <div *ngIf=\"showMap\">\n <div class=\"wb-map-background-form-right__cover\"></div>\n <div\n class=\"wb-map-background-form-right__container__map\"\n leaflet\n [leafletOptions]=\"options\"\n [leafletLayers]=\"layers\"\n [(leafletCenter)]=\"center\"\n (leafletMapReady)=\"onMapReady($event)\"\n ></div>\n </div>\n </div>\n </div>\n <div class=\"column\">\n <div *ngIf=\"selectedDetailForm.length === 0\">\n <div *ngIf=\"forms.length === 0\" class=\"wb-map-background-form-right__loader\">\n <wb-loader></wb-loader>\n </div>\n <div class=\"wb-map-background-form-right__selector\" *ngIf=\"forms.length > 0\">\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n </div>\n </div>\n <div *ngIf=\"selectedDetailForm.length > 0\" class=\"wb-map-background-form-right__container-form\">\n <div class=\"wb-map-background-form-right__container-form__editor\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n <div class=\"wb-map-background-form-right__container-form__content\">\n <div *ngFor=\"let select of selectedDetailForm\">\n <p [innerHTML]=\"select.title\"></p>\n <p>{{ select.type | answerPipe | translate }}</p>\n </div>\n <div>\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n &nbsp;&nbsp;&nbsp;\n <button>{{ selectedValue.submit_label }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.StructureConfigComponent, selector: "wb-structure-config", inputs: ["isActive", "blockUUID", "position", "isFullwidth", "small", "extraSmall"] }, { kind: "component", type: i5.StructureSelectComponent, selector: "wb-structure-select", inputs: ["selectedValue", "forms", "large", "icon", "label"], outputs: ["changed"] }, { kind: "component", type: i6.LoaderComponent, selector: "wb-loader" }, { kind: "component", type: i7.WiziEditorComponent, selector: "wz-editor", inputs: ["placeholder", "position"] }, { kind: "directive", type: i8.LeafletDirective, selector: "[leaflet]", inputs: ["leafletFitBoundsOptions", "leafletPanOptions", "leafletZoomOptions", "leafletZoomPanOptions", "leafletOptions", "leafletZoom", "leafletCenter", "leafletFitBounds", "leafletMaxBounds", "leafletMinZoom", "leafletMaxZoom"], outputs: ["leafletMapReady", "leafletZoomChange", "leafletCenterChange", "leafletClick", "leafletDoubleClick", "leafletMouseDown", "leafletMouseUp", "leafletMouseMove", "leafletMouseOver", "leafletMouseOut", "leafletMapMove", "leafletMapMoveStart", "leafletMapMoveEnd", "leafletMapZoom", "leafletMapZoomStart", "leafletMapZoomEnd"] }, { kind: "directive", type: i8.LeafletLayersDirective, selector: "[leafletLayers]", inputs: ["leafletLayers"] }, { kind: "directive", type: i9.GooglePlaceDirective, selector: "[ngx-google-places-autocomplete]", inputs: ["options"], outputs: ["onAddressChange"], exportAs: ["ngx-places"] }, { kind: "pipe", type: i10.AnswerTypePipe, name: "answerPipe" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
116
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MapBackgroundFormRightComponent, decorators: [{
117
109
  type: Component,
118
- args: [{ selector: MapBackgroundFormRightService.selector(), template: "<div class=\"wb-map-background-form-right\">\n <div class=\"wb-map-background-form-right__container__config\" *ngIf=\"showMap\">\n <wb-structure-config\n [blockUUID]=\"uuid\"\n [position]=\"TYPE_CONFIG_POSITION_LEFT_TOP\"\n (click)=\"createEditAlgoliaInput()\"\n [isFullwidth]=\"true\"\n >\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input id=\"address-input-edit{{ uuid }}\" type=\"text\" [(ngModel)]=\"address\" #myInputEdit (click)=\"myInputEdit.select()\" />\n </wb-structure-config>\n </div>\n <div class=\"wb-map-background-form-right__selector\" *ngIf=\"!showMap\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input id=\"address-input{{ uuid }}\" type=\"text\" [(ngModel)]=\"address\" #myInput (click)=\"myInput.select()\" />\n </div>\n <div class=\"columns is-gapless\" *ngIf=\"showMap\">\n <div class=\"column\">\n <div class=\"wb-map-background-form-right__container\">\n <div *ngIf=\"showMap\">\n <div class=\"wb-map-background-form-right__cover\"></div>\n <div\n class=\"wb-map-background-form-right__container__map\"\n leaflet\n [leafletOptions]=\"options\"\n [leafletLayers]=\"layers\"\n [(leafletCenter)]=\"center\"\n (leafletMapReady)=\"onMapReady($event)\"\n ></div>\n </div>\n </div>\n </div>\n <div class=\"column\">\n <div *ngIf=\"selectedDetailForm.length === 0\">\n <div *ngIf=\"forms.length === 0\" class=\"wb-map-background-form-right__loader\">\n <wb-loader></wb-loader>\n </div>\n <div class=\"wb-map-background-form-right__selector\" *ngIf=\"forms.length > 0\">\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n </div>\n </div>\n <div *ngIf=\"selectedDetailForm.length > 0\" class=\"wb-map-background-form-right__container-form\">\n <div class=\"wb-map-background-form-right__container-form__editor\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n <div class=\"wb-map-background-form-right__container-form__content\">\n <div *ngFor=\"let select of selectedDetailForm\">\n <p [innerHTML]=\"select.title\"></p>\n <p>{{ select.type | answerPipe | translate }}</p>\n </div>\n <div>\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n &nbsp;&nbsp;&nbsp;\n <button>{{ selectedValue.submit_label }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
110
+ args: [{ selector: MapBackgroundFormRightService.selector(), template: "<div class=\"wb-map-background-form-right\">\n <div class=\"wb-map-background-form-right__container__config\" *ngIf=\"showMap\">\n <wb-structure-config [blockUUID]=\"uuid\" [position]=\"TYPE_CONFIG_POSITION_LEFT_TOP\" [isFullwidth]=\"true\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input\n id=\"address-input-edit{{ uuid }}\"\n type=\"text\"\n [(ngModel)]=\"address\"\n #myInputEdit\n (click)=\"myInputEdit.select()\"\n ngx-google-places-autocomplete\n (onAddressChange)=\"handleAddressChange($event)\"\n />\n </wb-structure-config>\n </div>\n <div class=\"wb-map-background-form-right__selector\" *ngIf=\"!showMap\">\n <p>{{ 'wb.structures.template.19' | translate }}</p>\n <input\n id=\"address-input{{ uuid }}\"\n type=\"text\"\n [(ngModel)]=\"address\"\n #myInput\n (click)=\"myInput.select()\"\n ngx-google-places-autocomplete\n (onAddressChange)=\"handleAddressChange($event)\"\n />\n </div>\n <div class=\"columns is-gapless\" *ngIf=\"showMap\">\n <div class=\"column\">\n <div class=\"wb-map-background-form-right__container\">\n <div *ngIf=\"showMap\">\n <div class=\"wb-map-background-form-right__cover\"></div>\n <div\n class=\"wb-map-background-form-right__container__map\"\n leaflet\n [leafletOptions]=\"options\"\n [leafletLayers]=\"layers\"\n [(leafletCenter)]=\"center\"\n (leafletMapReady)=\"onMapReady($event)\"\n ></div>\n </div>\n </div>\n </div>\n <div class=\"column\">\n <div *ngIf=\"selectedDetailForm.length === 0\">\n <div *ngIf=\"forms.length === 0\" class=\"wb-map-background-form-right__loader\">\n <wb-loader></wb-loader>\n </div>\n <div class=\"wb-map-background-form-right__selector\" *ngIf=\"forms.length > 0\">\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n </div>\n </div>\n <div *ngIf=\"selectedDetailForm.length > 0\" class=\"wb-map-background-form-right__container-form\">\n <div class=\"wb-map-background-form-right__container-form__editor\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n <div class=\"wb-map-background-form-right__container-form__content\">\n <div *ngFor=\"let select of selectedDetailForm\">\n <p [innerHTML]=\"select.title\"></p>\n <p>{{ select.type | answerPipe | translate }}</p>\n </div>\n <div>\n <wb-structure-select\n [selectedValue]=\"selectedValue\"\n [forms]=\"forms\"\n (changed)=\"selectedValue = $event; selectThisForm()\"\n ></wb-structure-select>\n &nbsp;&nbsp;&nbsp;\n <button>{{ selectedValue.submit_label }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
119
111
  }], ctorParameters: function () { return [{ type: i1.ApiService }]; }, propDecorators: { input: [{
120
112
  type: ViewChild,
121
113
  args: ['myInput']
122
114
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWJhY2tncm91bmQtZm9ybS1yaWdodC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvc3RydWN0dXJlcy9tYXAvYmFja2dyb3VuZC1mb3JtLXJpZ2h0L21hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3N0cnVjdHVyZXMvbWFwL2JhY2tncm91bmQtZm9ybS1yaWdodC9tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUQsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUS9HLE1BQU0sT0FBTywrQkFDVCxTQUFRLG1CQUE4QztJQW1CdEQsWUFBb0IsVUFBc0I7UUFDdEMsS0FBSyxFQUFFLENBQUM7UUFEUSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBaEIxQyxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBR2IsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFcEIsWUFBTyxHQUFHLEVBQUUs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QUFDLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxHQUFHO1FBQ1YsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDOzs0SEFwSFEsK0JBQStCO2dIQUEvQiwrQkFBK0IsNkxDaEI1QyxnbElBbUZBOzJGRG5FYSwrQkFBK0I7a0JBSjNDLFNBQVM7K0JBQ0ksNkJBQTZCLENBQUMsUUFBUSxFQUFFO2lHQU01QixLQUFLO3NCQUExQixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZPUk1fTkFNRV9JRF9GT1JNIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9mb3Jtcy9mb3Jtcy5kdG8nO1xuaW1wb3J0IHsgU3RydWN0dXJlc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3N0cnVjdHVyZXMuY29tcG9uZW50JztcbmltcG9ydCB7IE9wZW5NYXBEdG8gfSBmcm9tICcuLi8uLi8uLi9kdG9zL2FwaXMvbWFwcy9vcGVuLW1hcC5kdG8nO1xuaW1wb3J0IHsgaWNvbiwgbGF0TG5nLCBtYXJrZXIsIHRpbGVMYXllciB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHBsYWNlcyBmcm9tICdwbGFjZXMuanMnO1xuaW1wb3J0IHsgRm9ybUxpc3REdG8gfSBmcm9tICcuLi8uLi8uLi9kdG9zL2FwaXMvZm9ybXMvZm9ybS1saXN0LmR0byc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFwQmFja2dyb3VuZEZvcm1SaWdodFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ibG9ja3MvbWFwL21hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHQuc2VydmljZSc7XG5pbXBvcnQgeyBNYXBCYWNrZ3JvdW5kRm9ybVJpZ2h0RHRvIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9ibG9ja3MvbWFwL21hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHQuZHRvJztcbmltcG9ydCB7IEZvcm1EZXRhaWxEdG8gfSBmcm9tICcuLi8uLi8uLi9kdG9zL2FwaXMvZm9ybXMvZm9ybS1kZXRhaWwuZHRvJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IE1hcEJhY2tncm91bmRGb3JtUmlnaHRTZXJ2aWNlLnNlbGVjdG9yKCksXG4gICAgdGVtcGxhdGVVcmw6ICcuL21hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBCYWNrZ3JvdW5kRm9ybVJpZ2h0Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBTdHJ1Y3R1cmVzQ29tcG9uZW50PE1hcEJhY2tncm91bmRGb3JtUmlnaHREdG8+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnbXlJbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuICAgIGFkZHJlc3MgPSAnJztcbiAgICBjZW50ZXI7XG5cbiAgICBlZGl0UGxhY2VNYXAgPSBudWxsO1xuXG4gICAgb3B0aW9ucyA9IHt9O1xuICAgIGxheWVycyA9IFtdO1xuXG4gICAgc2hvd01hcCA9IGZhbHNlO1xuXG4gICAgZm9ybXM6IEZvcm1MaXN0RHRvW10gPSBbXTtcblxuICAgIHNlbGVjdGVkVmFsdWU6IEZvcm1MaXN0RHRvID0gbnVsbDtcblxuICAgIHNlbGVjdGVkRGV0YWlsRm9ybTogRm9ybURldGFpbER0b1tdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zZXRDb21wb25lbnRTZXJ2aWNlKE1hcEJhY2tncm91bmRGb3JtUmlnaHRTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0Rm9ybXNMaXN0KCkuc3Vic2NyaWJlKChsaXN0czogRm9ybUxpc3REdG9bXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JtcyA9IGxpc3RzO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZW50QmxvY2tbRk9STV9OQU1FX0lEX0ZPUk1dKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3Jtcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2LmlkID09PSB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfSURfRk9STV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHY7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFRoaXNGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwbGFjZXNBdXRvY29tcGxldGUgPSBwbGFjZXMoe1xuICAgICAgICAgICAgYXBwSWQ6ICdwbDlPSTFOUFk2MlknLFxuICAgICAgICAgICAgYXBpS2V5OiAnMjkwZTVhMGUzM2U3NTFjODVjMzY2OTBkNTAyOTkxZmMnLFxuICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHBsYWNlc0F1dG9jb21wbGV0ZS5vbignY2hhbmdlJywgKGFsZ29saWFSZXR1cm5FbGVtZW50OiBPcGVuTWFwRHRvKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldENvb3JkaW5hdGVPblBsYWNlcyhhbGdvbGlhUmV0dXJuRWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldENvb3JkaW5hdGVPblBsYWNlcyhhbGdvbGlhUmV0dXJuRWxlbWVudDogT3Blbk1hcER0bykge1xuICAgICAgICB0aGlzLnNob3dNYXAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgICAgICAgbGF5ZXJzOiBbdGlsZUxheWVyKCdodHRwOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywgeyBtYXhab29tOiAxNiwgYXR0cmlidXRpb246ICdXaXppU2hvcCcgfSldLFxuICAgICAgICAgICAgem9vbTogMTgsXG4gICAgICAgICAgICB6b29tQ29udHJvbDogZmFsc2UsXG4gICAgICAgICAgICBjZW50ZXI6IGxhdExuZyhhbGdvbGlhUmV0dXJuRWxlbWVudC5zdWdnZXN0aW9uLmxhdGxuZy5sYXQsIGFsZ29saWFSZXR1cm5FbGVtZW50LnN1Z2dlc3Rpb24ubGF0bG5nLmxuZyksXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY2VudGVyID0gbGF0TG5nKGFsZ29saWFSZXR1cm5FbGVtZW50LnN1Z2dlc3Rpb24ubGF0bG5nLmxhdCwgYWxnb2xpYVJldHVybkVsZW1lbnQuc3VnZ2VzdGlvbi5sYXRsbmcubG5nKTtcbiAgICAgICAgdGhpcy5sYXllcnMgPSBbXG4gICAgICAgICAgICBtYXJrZXIoW2FsZ29saWFSZXR1cm5FbGVtZW50LnN1Z2dlc3Rpb24ubGF0bG5nLmxhdCwgYWxnb2xpYVJldHVybkVsZW1lbnQuc3VnZ2VzdGlvbi5sYXRsbmcubG5nXSwge1xuICAgICAgICAgICAgICAgIGljb246IGljb24oe1xuICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzI1LCA0MV0sXG4gICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsxMywgNDFdLFxuICAgICAgICAgICAgICAgICAgICBpY29uVXJsOiAnYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvbWFwcy9tYXJrZXItaWNvbi5wbmcnLFxuICAgICAgICAgICAgICAgICAgICBzaGFkb3dVcmw6ICdhc3NldHMvYmxvY2tzL2ltYWdlcy9tYXBzL21hcmtlci1zaGFkb3cucG5nJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuY29udGVudEJsb2NrW3RoaXMuRk9STV9OQU1FX0NPT1JESU5BVEVfWV0gPSBhbGdvbGlhUmV0dXJuRWxlbWVudC5zdWdnZXN0aW9uLmxhdGxuZy5sYXQ7XG4gICAgICAgIHRoaXMuY29udGVudEJsb2NrW3RoaXMuRk9STV9OQU1FX0NPT1JESU5BVEVfWF0gPSBhbGdvbGlhUmV0dXJuRWxlbWVudC5zdWdnZXN0aW9uLmxhdGxuZy5sbmc7XG5cbiAgICAgICAgdGhpcy5hZGRyZXNzID0gYWxnb2xpYVJldHVybkVsZW1lbnQuc3VnZ2VzdGlvbi52YWx1ZTtcbiAgICAgICAgdGhpcy5zaG93TWFwID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnBlcnNpc3QoKTtcbiAgICB9XG5cbiAgICBjcmVhdGVFZGl0QWxnb2xpYUlucHV0KCkge1xuICAgICAgICBpZiAodGhpcy5lZGl0UGxhY2VNYXAgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdFBsYWNlTWFwID0gcGxhY2VzKHtcbiAgICAgICAgICAgICAgICBhcHBJZDogJ3BsOU9JMU5QWTYyWScsXG4gICAgICAgICAgICAgICAgYXBpS2V5OiAnMjkwZTVhMGUzM2U3NTFjODVjMzY2OTBkNTAyOTkxZmMnLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2FkZHJlc3MtaW5wdXQtZWRpdCcgKyB0aGlzLnV1aWQpLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZWRpdFBsYWNlTWFwLm9uKCdjaGFuZ2UnLCAoYWxnb2xpYVJldHVybkVsZW1lbnQ6IE9wZW5NYXBEdG8pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvb3JkaW5hdGVPblBsYWNlcyhhbGdvbGlhUmV0dXJuRWxlbWVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdFRoaXNGb3JtKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLmdldEZvcm1zRGV0YWlsKHRoaXMuc2VsZWN0ZWRWYWx1ZS5pZCkuc3Vic2NyaWJlKChsaXN0czogRm9ybURldGFpbER0b1tdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGV0YWlsRm9ybSA9IGxpc3RzO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb250ZW50QmxvY2tbRk9STV9OQU1FX0lEX0ZPUk1dID0gdGhpcy5zZWxlY3RlZFZhbHVlLmlkO1xuICAgICAgICB0aGlzLnBlcnNpc3QoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdm9pZCBwYXJ0aWFsIG1hcCBsb2FkZWQgYXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgICogQHBhcmFtIG1hcFxuICAgICAqL1xuICAgIG9uTWFwUmVhZHkobWFwKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbWFwLmludmFsaWRhdGVTaXplKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0XCI+XG4gICAgPGRpdiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHRfX2NvbnRhaW5lcl9fY29uZmlnXCIgKm5nSWY9XCJzaG93TWFwXCI+XG4gICAgICAgIDx3Yi1zdHJ1Y3R1cmUtY29uZmlnXG4gICAgICAgICAgICBbYmxvY2tVVUlEXT1cInV1aWRcIlxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cIlRZUEVfQ09ORklHX1BPU0lUSU9OX0xFRlRfVE9QXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGVFZGl0QWxnb2xpYUlucHV0KClcIlxuICAgICAgICAgICAgW2lzRnVsbHdpZHRoXT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8cD57eyAnd2Iuc3RydWN0dXJlcy50ZW1wbGF0ZS4xOScgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJhZGRyZXNzLWlucHV0LWVkaXR7eyB1dWlkIH19XCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3NcIiAjbXlJbnB1dEVkaXQgKGNsaWNrKT1cIm15SW5wdXRFZGl0LnNlbGVjdCgpXCIgLz5cbiAgICAgICAgPC93Yi1zdHJ1Y3R1cmUtY29uZmlnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0X19zZWxlY3RvclwiICpuZ0lmPVwiIXNob3dNYXBcIj5cbiAgICAgICAgPHA+e3sgJ3diLnN0cnVjdHVyZXMudGVtcGxhdGUuMTknIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8aW5wdXQgaWQ9XCJhZGRyZXNzLWlucHV0e3sgdXVpZCB9fVwiIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJhZGRyZXNzXCIgI215SW5wdXQgKGNsaWNrKT1cIm15SW5wdXQuc2VsZWN0KClcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLWdhcGxlc3NcIiAqbmdJZj1cInNob3dNYXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHRfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93TWFwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0X19jb3ZlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHRfX2NvbnRhaW5lcl9fbWFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlYWZsZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsZWFmbGV0T3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsZWFmbGV0TGF5ZXJzXT1cImxheWVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKGxlYWZsZXRDZW50ZXIpXT1cImNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobGVhZmxldE1hcFJlYWR5KT1cIm9uTWFwUmVhZHkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkRGV0YWlsRm9ybS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybXMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0X19sb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHdiLWxvYWRlcj48L3diLWxvYWRlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1yaWdodF9fc2VsZWN0b3JcIiAqbmdJZj1cImZvcm1zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHdiLXN0cnVjdHVyZS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cInNlbGVjdGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1zXT1cImZvcm1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VkKT1cInNlbGVjdGVkVmFsdWUgPSAkZXZlbnQ7IHNlbGVjdFRoaXNGb3JtKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC93Yi1zdHJ1Y3R1cmUtc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWREZXRhaWxGb3JtLmxlbmd0aCA+IDBcIiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHRfX2NvbnRhaW5lci1mb3JtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHRfX2NvbnRhaW5lci1mb3JtX19lZGl0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3ei1lZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX1RJVExFXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicGVyc2lzdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3diLnNoYXJlZC5jb21wb25lbnRzLnF1aWxsLjEnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3otZWRpdG9yPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3ei1lZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0NPTlRFTlRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwZXJzaXN0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2Iuc2hhcmVkLmNvbXBvbmVudHMucXVpbGwuMScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC93ei1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0X19jb250YWluZXItZm9ybV9fY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWxlY3Qgb2Ygc2VsZWN0ZWREZXRhaWxGb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cInNlbGVjdC50aXRsZVwiPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHNlbGVjdC50eXBlIHwgYW5zd2VyUGlwZSB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d2Itc3RydWN0dXJlLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cInNlbGVjdGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3Jtc109XCJmb3Jtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWQpPVwic2VsZWN0ZWRWYWx1ZSA9ICRldmVudDsgc2VsZWN0VGhpc0Zvcm0oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC93Yi1zdHJ1Y3R1cmUtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uPnt7IHNlbGVjdGVkVmFsdWUuc3VibWl0X2xhYmVsIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWJhY2tncm91bmQtZm9ybS1yaWdodC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvc3RydWN0dXJlcy9tYXAvYmFja2dyb3VuZC1mb3JtLXJpZ2h0L21hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3N0cnVjdHVyZXMvbWFwL2JhY2tncm91bmQtZm9ybS1yaWdodC9tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFakUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRL0csTUFBTSxPQUFPLCtCQUFnQyxTQUFRLG1CQUE4QztJQXFCL0YsWUFBb0IsVUFBc0I7UUFDdEMsS0FBSyxFQUFFLENBQUM7UUFEUSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBbkIxQyxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFJcEIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIscUJBQWdCLEdBQUcsS0FBSyxD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bnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGT1JNX05BTUVfSURfRk9STSB9IGZyb20gJy4uLy4uLy4uL2R0b3MvZm9ybXMvZm9ybXMuZHRvJztcbmltcG9ydCB7IFN0cnVjdHVyZXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zdHJ1Y3R1cmVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcGVuTWFwRHRvIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9hcGlzL21hcHMvb3Blbi1tYXAuZHRvJztcbmltcG9ydCB7IGljb24sIGxhdExuZywgbWFya2VyLCB0aWxlTGF5ZXIgfSBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7IEZvcm1MaXN0RHRvIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9hcGlzL2Zvcm1zL2Zvcm0tbGlzdC5kdG8nO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hcEJhY2tncm91bmRGb3JtUmlnaHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmxvY2tzL21hcC9tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFwQmFja2dyb3VuZEZvcm1SaWdodER0byB9IGZyb20gJy4uLy4uLy4uL2R0b3MvYmxvY2tzL21hcC9tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0LmR0byc7XG5pbXBvcnQgeyBGb3JtRGV0YWlsRHRvIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9hcGlzL2Zvcm1zL2Zvcm0tZGV0YWlsLmR0byc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBNYXBCYWNrZ3JvdW5kRm9ybVJpZ2h0U2VydmljZS5zZWxlY3RvcigpLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwQmFja2dyb3VuZEZvcm1SaWdodENvbXBvbmVudCBleHRlbmRzIFN0cnVjdHVyZXNDb21wb25lbnQ8TWFwQmFja2dyb3VuZEZvcm1SaWdodER0bz4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgnbXlJbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuICAgIGFkZHJlc3MgPSAnJztcbiAgICB0cmlnZ2VyQWRkcmVzcyA9ICcnO1xuICAgIGNlbnRlcjtcbiAgICBnb29nbGVNYXBSZXR1cm5FbGVtZW50OiBPcGVuTWFwRHRvO1xuXG4gICAgZWRpdFBsYWNlTWFwID0gbnVsbDtcbiAgICBmaXJzdFRpbWVUcmlnZ2VyID0gZmFsc2U7XG5cbiAgICBvcHRpb25zID0ge307XG4gICAgbGF5ZXJzID0gW107XG5cbiAgICBzaG93TWFwID0gZmFsc2U7XG5cbiAgICBmb3JtczogRm9ybUxpc3REdG9bXSA9IFtdO1xuXG4gICAgc2VsZWN0ZWRWYWx1ZTogRm9ybUxpc3REdG8gPSBudWxsO1xuXG4gICAgc2VsZWN0ZWREZXRhaWxGb3JtOiBGb3JtRGV0YWlsRHRvW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnNldENvbXBvbmVudFNlcnZpY2UoTWFwQmFja2dyb3VuZEZvcm1SaWdodFNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMuYXBpU2VydmljZS5nZXRGb3Jtc0xpc3QoKS5zdWJzY3JpYmUoKGxpc3RzOiBGb3JtTGlzdER0b1tdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm1zID0gbGlzdHM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfSURfRk9STV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1zLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYuaWQgPT09IHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9JRF9GT1JNXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0VGhpc0Zvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRDb29yZGluYXRlT25QbGFjZXMoZ29vZ2xlUmVzdWx0czogT3Blbk1hcER0bykge1xuICAgICAgICB0aGlzLnNob3dNYXAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgICAgICAgbGF5ZXJzOiBbdGlsZUxheWVyKCdodHRwOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywgeyBtYXhab29tOiAxOCwgYXR0cmlidXRpb246ICdXaXppU2hvcCcgfSldLFxuICAgICAgICAgICAgem9vbTogMTgsXG4gICAgICAgICAgICB6b29tQ29udHJvbDogZmFsc2UsXG4gICAgICAgICAgICBjZW50ZXI6IGxhdExuZyhnb29nbGVSZXN1bHRzLnN1Z2dlc3Rpb24ubGF0bG5nLmxhdCwgZ29vZ2xlUmVzdWx0cy5zdWdnZXN0aW9uLmxhdGxuZy5sbmcpLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNlbnRlciA9IGxhdExuZyhnb29nbGVSZXN1bHRzLnN1Z2dlc3Rpb24ubGF0bG5nLmxhdCwgZ29vZ2xlUmVzdWx0cy5zdWdnZXN0aW9uLmxhdGxuZy5sbmcpO1xuICAgICAgICB0aGlzLmxheWVycyA9IFtcbiAgICAgICAgICAgIG1hcmtlcihbZ29vZ2xlUmVzdWx0cy5zdWdnZXN0aW9uLmxhdGxuZy5sYXQsIGdvb2dsZVJlc3VsdHMuc3VnZ2VzdGlvbi5sYXRsbmcubG5nXSwge1xuICAgICAgICAgICAgICAgIGljb246IGljb24oe1xuICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzI1LCA0MV0sXG4gICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsxMywgNDFdLFxuICAgICAgICAgICAgICAgICAgICBpY29uVXJsOiAnYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvbWFwcy9tYXJrZXItaWNvbi5wbmcnLFxuICAgICAgICAgICAgICAgICAgICBzaGFkb3dVcmw6ICdhc3NldHMvYmxvY2tzL2ltYWdlcy9tYXBzL21hcmtlci1zaGFkb3cucG5nJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuY29udGVudEJsb2NrW3RoaXMuRk9STV9OQU1FX0NPT1JESU5BVEVfWV0gPSBnb29nbGVSZXN1bHRzLnN1Z2dlc3Rpb24ubGF0bG5nLmxhdDtcbiAgICAgICAgdGhpcy5jb250ZW50QmxvY2tbdGhpcy5GT1JNX05BTUVfQ09PUkRJTkFURV9YXSA9IGdvb2dsZVJlc3VsdHMuc3VnZ2VzdGlvbi5sYXRsbmcubG5nO1xuXG4gICAgICAgIHRoaXMuYWRkcmVzcyA9IGdvb2dsZVJlc3VsdHMuc3VnZ2VzdGlvbi52YWx1ZTtcbiAgICAgICAgdGhpcy5zaG93TWFwID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnBlcnNpc3QoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVBZGRyZXNzQ2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZ29vZ2xlTWFwUmV0dXJuRWxlbWVudCA9IHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb246IHtcbiAgICAgICAgICAgICAgICBsYXRsbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgbGF0OiBldmVudC5nZW9tZXRyeS5sb2NhdGlvbi5sYXQoKSxcbiAgICAgICAgICAgICAgICAgICAgbG5nOiBldmVudC5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBldmVudC5uYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZXRDb29yZGluYXRlT25QbGFjZXModGhpcy5nb29nbGVNYXBSZXR1cm5FbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdm9pZCBwYXJ0aWFsIG1hcCBsb2FkZWQgYXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgICogQHBhcmFtIG1hcFxuICAgICAqL1xuICAgIG9uTWFwUmVhZHkobWFwKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbWFwLmludmFsaWRhdGVTaXplKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIHNlbGVjdFRoaXNGb3JtKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLmdldEZvcm1zRGV0YWlsKHRoaXMuc2VsZWN0ZWRWYWx1ZS5pZCkuc3Vic2NyaWJlKChsaXN0czogRm9ybURldGFpbER0b1tdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGV0YWlsRm9ybSA9IGxpc3RzO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb250ZW50QmxvY2tbRk9STV9OQU1FX0lEX0ZPUk1dID0gdGhpcy5zZWxlY3RlZFZhbHVlLmlkO1xuICAgICAgICB0aGlzLnBlcnNpc3QoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1yaWdodFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0X19jb250YWluZXJfX2NvbmZpZ1wiICpuZ0lmPVwic2hvd01hcFwiPlxuICAgICAgICA8d2Itc3RydWN0dXJlLWNvbmZpZyBbYmxvY2tVVUlEXT1cInV1aWRcIiBbcG9zaXRpb25dPVwiVFlQRV9DT05GSUdfUE9TSVRJT05fTEVGVF9UT1BcIiBbaXNGdWxsd2lkdGhdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHA+e3sgJ3diLnN0cnVjdHVyZXMudGVtcGxhdGUuMTknIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJhZGRyZXNzLWlucHV0LWVkaXR7eyB1dWlkIH19XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAjbXlJbnB1dEVkaXRcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibXlJbnB1dEVkaXQuc2VsZWN0KClcIlxuICAgICAgICAgICAgICAgIG5neC1nb29nbGUtcGxhY2VzLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgIChvbkFkZHJlc3NDaGFuZ2UpPVwiaGFuZGxlQWRkcmVzc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvd2Itc3RydWN0dXJlLWNvbmZpZz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1yaWdodF9fc2VsZWN0b3JcIiAqbmdJZj1cIiFzaG93TWFwXCI+XG4gICAgICAgIDxwPnt7ICd3Yi5zdHJ1Y3R1cmVzLnRlbXBsYXRlLjE5JyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImFkZHJlc3MtaW5wdXR7eyB1dWlkIH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYWRkcmVzc1wiXG4gICAgICAgICAgICAjbXlJbnB1dFxuICAgICAgICAgICAgKGNsaWNrKT1cIm15SW5wdXQuc2VsZWN0KClcIlxuICAgICAgICAgICAgbmd4LWdvb2dsZS1wbGFjZXMtYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAob25BZGRyZXNzQ2hhbmdlKT1cImhhbmRsZUFkZHJlc3NDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtZ2FwbGVzc1wiICpuZ0lmPVwic2hvd01hcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1yaWdodF9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dNYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHRfX2NvdmVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1yaWdodF9fY29udGFpbmVyX19tYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGVhZmxldFxuICAgICAgICAgICAgICAgICAgICAgICAgW2xlYWZsZXRPcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xlYWZsZXRMYXllcnNdPVwibGF5ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobGVhZmxldENlbnRlcildPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZWFmbGV0TWFwUmVhZHkpPVwib25NYXBSZWFkeSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWREZXRhaWxGb3JtLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmb3Jtcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHRfX2xvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8d2ItbG9hZGVyPjwvd2ItbG9hZGVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1tYXAtYmFja2dyb3VuZC1mb3JtLXJpZ2h0X19zZWxlY3RvclwiICpuZ0lmPVwiZm9ybXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8d2Itc3RydWN0dXJlLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybXNdPVwiZm9ybXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWQpPVwic2VsZWN0ZWRWYWx1ZSA9ICRldmVudDsgc2VsZWN0VGhpc0Zvcm0oKVwiXG4gICAgICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZERldGFpbEZvcm0ubGVuZ3RoID4gMFwiIGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1yaWdodF9fY29udGFpbmVyLWZvcm1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItbWFwLWJhY2tncm91bmQtZm9ybS1yaWdodF9fY29udGFpbmVyLWZvcm1fX2VkaXRvclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHd6LWVkaXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfVElUTEVdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwZXJzaXN0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2Iuc2hhcmVkLmNvbXBvbmVudHMucXVpbGwuMScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC93ei1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHd6LWVkaXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfQ09OVEVOVF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInBlcnNpc3QoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3Yi5zaGFyZWQuY29tcG9uZW50cy5xdWlsbC4xJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3d6LWVkaXRvcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLW1hcC1iYWNrZ3JvdW5kLWZvcm0tcmlnaHRfX2NvbnRhaW5lci1mb3JtX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlbGVjdCBvZiBzZWxlY3RlZERldGFpbEZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwic2VsZWN0LnRpdGxlXCI+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgc2VsZWN0LnR5cGUgfCBhbnN3ZXJQaXBlIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3Yi1zdHJ1Y3R1cmUtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1zXT1cImZvcm1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlZCk9XCJzZWxlY3RlZFZhbHVlID0gJGV2ZW50OyBzZWxlY3RUaGlzRm9ybSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24+e3sgc2VsZWN0ZWRWYWx1ZS5zdWJtaXRfbGFiZWwgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==