ca-components 1.1.6 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/scss/icons.scss +12 -0
- package/assets/scss/styles.scss +4 -0
- package/assets/scss/text-selection.scss +42 -0
- package/esm2022/lib/components/ca-activity-log-list/ca-activity-log-list.component.mjs +3 -3
- package/esm2022/lib/components/ca-collapsible-filter/ca-collapsible-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-comment/ca-comment.component.mjs +2 -2
- package/esm2022/lib/components/ca-comment/modals/comment-modal/comment-modal.component.mjs +3 -3
- package/esm2022/lib/components/ca-custom-scrollbar/ca-custom-scrollbar.component.mjs +3 -3
- package/esm2022/lib/components/ca-details-dropdown/ca-details-dropdown.component.mjs +2 -2
- package/esm2022/lib/components/ca-dropdown-menu/ca-dropdown-menu.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/ca-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-dispatcher-filter/ca-dispatcher-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-location-filter/ca-location-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-pm-filter/ca-pm-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-state-filter/ca-state-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-status-filter/ca-status-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-time-filter/ca-time-filter.component.mjs +3 -3
- package/esm2022/lib/components/ca-filters/components/ca-trailer-type-filter/ca-trailer-type-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-truck-type-filter/ca-truck-type-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-user-filter/ca-user-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-violation-filter/ca-violation-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-input/ca-input.component.mjs +2 -2
- package/esm2022/lib/components/ca-input/input-test/input-test.component.mjs +3 -3
- package/esm2022/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.mjs +2 -2
- package/esm2022/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +2 -2
- package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +26 -20
- package/esm2022/lib/components/ca-input-note/ca-input-note.component.mjs +2 -2
- package/esm2022/lib/components/ca-logo-change/ca-logo-change.component.mjs +3 -3
- package/esm2022/lib/components/ca-map/ca-map.component.mjs +47 -60
- package/esm2022/lib/components/ca-map/models/index.mjs +2 -0
- package/esm2022/lib/components/ca-map/models/map.model.mjs +1 -1
- package/esm2022/lib/components/ca-map/utils/constants/index.mjs +2 -1
- package/esm2022/lib/components/ca-map/utils/constants/map-options.constants.mjs +2 -2
- package/esm2022/lib/components/ca-map/utils/constants/map.constants.mjs +436 -0
- package/esm2022/lib/components/ca-map/utils/helpers/map.helper.mjs +1 -1
- package/esm2022/lib/components/ca-map/utils/services/map-marker-icon.service.mjs +1 -1
- package/esm2022/lib/components/ca-map-dropdown/ca-map-dropdown.component.mjs +5 -5
- package/esm2022/lib/components/ca-map-dropdown/enums/map-dropdown-string.enum.mjs +17 -17
- package/esm2022/lib/components/ca-modal-button/ca-modal-button.component.mjs +5 -5
- package/esm2022/lib/components/ca-modal-button/enums/modal-button-class-type.enum.mjs +12 -10
- package/esm2022/lib/components/ca-modal-button/enums/modal-button-size.enum.mjs +6 -6
- package/esm2022/lib/components/ca-modal-button/pipes/modal-button-class.pipe.mjs +1 -1
- package/esm2022/lib/components/ca-ngx-slider/ca-ngx-slider.component.mjs +2 -2
- package/esm2022/lib/components/ca-note/ca-note.component.mjs +2 -2
- package/esm2022/lib/components/ca-note-container/ca-note-container.component.mjs +2 -2
- package/esm2022/lib/components/ca-payroll-list-summary-overview/ca-payroll-list-summary-overview.component.mjs +2 -2
- package/esm2022/lib/components/ca-period-content/ca-period-content.component.mjs +2 -2
- package/esm2022/lib/components/ca-period-content/components/ca-period-content-extra-info/ca-period-content-extra-info.component.mjs +3 -3
- package/esm2022/lib/components/ca-period-content/components/ca-period-content-payment/ca-period-content-payment.component.mjs +2 -2
- package/esm2022/lib/components/ca-period-content/components/ca-period-content-user-info/ca-period-content-user-info.component.mjs +3 -3
- package/esm2022/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.mjs +3 -3
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/ca-load.component.mjs +3 -3
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-list/ca-load-list.component.mjs +3 -3
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-single/ca-load-single.component.mjs +3 -3
- package/esm2022/lib/components/ca-profile-image/ca-profile-image.component.mjs +3 -3
- package/esm2022/lib/components/ca-progress-bar/ca-progress-bar.component.mjs +40 -75
- package/esm2022/lib/components/ca-progress-bar/models/gps-progress.model.mjs +1 -1
- package/esm2022/lib/components/ca-progress-expiration/ca-progress-expiration.component.mjs +2 -2
- package/esm2022/lib/components/ca-rating-review/ca-rating-review.component.mjs +2 -2
- package/esm2022/lib/components/ca-rating-review/components/ca-rating-review-user/ca-rating-review-user.component.mjs +2 -2
- package/esm2022/lib/components/ca-rating-review/components/ca-ratings-reviews-popup/ca-ratings-reviews-popup.component.mjs +2 -2
- package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-company/ca-right-side-panel-company.component.mjs +3 -3
- package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-menu/ca-right-side-panel-menu.component.mjs +3 -3
- package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-top-bar/ca-right-side-panel-top-bar.component.mjs +3 -3
- package/esm2022/lib/components/ca-search-multiple-states/ca-search-multiple-states.component.mjs +2 -2
- package/esm2022/lib/components/ca-sort-dropdown/ca-sort-dropdown.component.mjs +2 -2
- package/esm2022/lib/components/ca-spinner/ca-spinner.component.mjs +2 -2
- package/esm2022/lib/components/ca-tab-switch/ca-tab-switch.component.mjs +3 -3
- package/esm2022/lib/components/ca-todo/ca-todo.component.mjs +3 -3
- package/esm2022/lib/components/ca-todo/components/ca-todo-card.component.mjs +3 -3
- package/esm2022/lib/components/ca-tooltip-list/ca-tooltip-list.component.mjs +3 -3
- package/esm2022/lib/components/ca-truck-trailer-progress-bar/ca-truck-trailer-progress-bar.component.mjs +2 -2
- package/esm2022/lib/components/ca-upload-files/ca-upload-files.component.mjs +3 -3
- package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/ca-upload-dropzone.component.mjs +3 -3
- package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/ca-upload-file.component.mjs +2 -2
- package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/ca-upload-files-carousel.component.mjs +3 -3
- package/esm2022/lib/models/index.mjs +2 -2
- package/esm2022/lib/models/long-lat.model.mjs +2 -0
- package/esm2022/public-api.mjs +3 -2
- package/fesm2022/ca-components.mjs +262 -301
- package/fesm2022/ca-components.mjs.map +1 -1
- package/lib/components/ca-input-dropdown/ca-input-dropdown.component.d.ts +2 -2
- package/lib/components/ca-map/ca-map.component.d.ts +9 -9
- package/lib/components/ca-map/models/index.d.ts +1 -0
- package/lib/components/ca-map/models/map.model.d.ts +5 -0
- package/lib/components/ca-map/utils/constants/index.d.ts +1 -0
- package/lib/components/ca-map/utils/constants/map-options.constants.d.ts +1 -1
- package/lib/components/ca-map/utils/helpers/map.helper.d.ts +1 -1
- package/lib/components/ca-map/utils/services/map-marker-icon.service.d.ts +1 -1
- package/lib/components/ca-map-dropdown/ca-map-dropdown.component.d.ts +2 -2
- package/lib/components/ca-map-dropdown/enums/map-dropdown-string.enum.d.ts +1 -1
- package/lib/components/ca-modal-button/ca-modal-button.component.d.ts +3 -3
- package/lib/components/ca-modal-button/enums/modal-button-class-type.enum.d.ts +4 -2
- package/lib/components/ca-modal-button/enums/modal-button-size.enum.d.ts +1 -1
- package/lib/components/ca-modal-button/pipes/modal-button-class.pipe.d.ts +2 -2
- package/lib/components/ca-progress-bar/ca-progress-bar.component.d.ts +18 -24
- package/lib/components/ca-progress-bar/models/gps-progress.model.d.ts +2 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/models/long-lat.model.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -1
- package/esm2022/lib/constants/map.constant.mjs +0 -436
- /package/lib/{constants/map.constant.d.ts → components/ca-map/utils/constants/map.constants.d.ts} +0 -0
|
@@ -14,8 +14,7 @@ import { MapMarkerStringEnum } from './enums';
|
|
|
14
14
|
// Helpers
|
|
15
15
|
import { MapHelper } from '../ca-map/utils/helpers/map.helper';
|
|
16
16
|
// Constants
|
|
17
|
-
import { MapOptionsConstants, } from './utils/constants';
|
|
18
|
-
import { MapConstants } from '../../constants/map.constant';
|
|
17
|
+
import { MapOptionsConstants, MapConstants } from './utils/constants';
|
|
19
18
|
import * as i0 from "@angular/core";
|
|
20
19
|
import * as i1 from "./utils/services";
|
|
21
20
|
import * as i2 from "@angular/google-maps";
|
|
@@ -37,24 +36,24 @@ export class CaMapComponent {
|
|
|
37
36
|
this.boundsChanged = new EventEmitter();
|
|
38
37
|
this.openInMapEvent = new EventEmitter();
|
|
39
38
|
this.destroy$ = new Subject();
|
|
40
|
-
this.isCurrentlyOpenWindow = false;
|
|
41
|
-
this.directionService = new google.maps.DirectionsService();
|
|
42
39
|
this.directionsRenderers = [];
|
|
43
40
|
this.mapOptions = MapOptionsConstants.defaultMapOptions;
|
|
44
41
|
this.mapZoom = MapOptionsConstants.defaultMapZoom;
|
|
45
42
|
this.mapCenter = MapOptionsConstants.defaultMapCenter;
|
|
46
43
|
this.map = null;
|
|
47
|
-
this.
|
|
44
|
+
this.mapStyleId = 'd681904a390a8402';
|
|
48
45
|
this.mapData = {};
|
|
49
46
|
this.openedInfoWindowData = null;
|
|
50
47
|
this.areaFilterData = MapOptionsConstants.areaFilterData;
|
|
51
|
-
this.isAreaFilterActive = false;
|
|
52
48
|
this.clusterMarkerIds = [];
|
|
53
49
|
this.routingMarkerIds = [];
|
|
50
|
+
this.routePolylines = [];
|
|
54
51
|
this.isMarkerDropdownOpen = false;
|
|
55
52
|
this.isClusterDropdownOpen = false;
|
|
53
|
+
this.isCurrentlyOpenWindow = false;
|
|
54
|
+
this.isMapCenterSet = false;
|
|
55
|
+
this.isAreaFilterActive = false;
|
|
56
56
|
this.openDropdownTimeout = 0;
|
|
57
|
-
this.mapStyleId = 'd681904a390a8402';
|
|
58
57
|
}
|
|
59
58
|
set data(values) {
|
|
60
59
|
this.handleMapData(values);
|
|
@@ -97,47 +96,35 @@ export class CaMapComponent {
|
|
|
97
96
|
// Clear previous directions renderers
|
|
98
97
|
this.directionsRenderers.forEach((renderer) => renderer.setMap(null));
|
|
99
98
|
this.directionsRenderers = [];
|
|
100
|
-
this.
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
MapOptionsConstants.routingDashedLineIcon)
|
|
128
|
-
: null,
|
|
129
|
-
},
|
|
130
|
-
});
|
|
131
|
-
directionsRenderer.setDirections(result);
|
|
132
|
-
this.directionsRenderers.push(directionsRenderer);
|
|
133
|
-
this.setDirectionsOnMap();
|
|
134
|
-
}
|
|
135
|
-
});
|
|
99
|
+
this.routePolylines = [];
|
|
100
|
+
this.mapData.routePaths.forEach((route, index) => {
|
|
101
|
+
if (route.decodedShape) {
|
|
102
|
+
const polyLineCoordinates = route.decodedShape?.map((item) => {
|
|
103
|
+
const coordinates = {
|
|
104
|
+
lat: item.latitude,
|
|
105
|
+
lng: item.longitude,
|
|
106
|
+
};
|
|
107
|
+
return coordinates;
|
|
108
|
+
});
|
|
109
|
+
const routePolyline = {
|
|
110
|
+
path: polyLineCoordinates,
|
|
111
|
+
geodesic: true,
|
|
112
|
+
strokeColor: route.strokeColor || GoogleMapEnum.STROKE_COLOR,
|
|
113
|
+
strokeOpacity: !route.isDashed
|
|
114
|
+
? route.strokeOpacity ||
|
|
115
|
+
GoogleMapEnum.STROKE_OPACITY
|
|
116
|
+
: 0,
|
|
117
|
+
strokeWeight: route.strokeWeight || GoogleMapEnum.STROKE_WEIGHT,
|
|
118
|
+
icons: route.isDashed
|
|
119
|
+
? (route.dashedLineStyle ??
|
|
120
|
+
MapOptionsConstants.routingDashedLineIcon)
|
|
121
|
+
: null,
|
|
122
|
+
zIndex: index,
|
|
123
|
+
};
|
|
124
|
+
this.routePolylines.push(routePolyline);
|
|
125
|
+
}
|
|
136
126
|
});
|
|
137
127
|
}
|
|
138
|
-
else {
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
128
|
}
|
|
142
129
|
resetMarkersIcons() {
|
|
143
130
|
this.mapData.markers?.map((marker, index) => {
|
|
@@ -352,9 +339,9 @@ export class CaMapComponent {
|
|
|
352
339
|
this.destroy$.complete();
|
|
353
340
|
}
|
|
354
341
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaMapComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.MapMarkerIconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
355
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaMapComponent, isStandalone: true, selector: "app-ca-map", inputs: { data: "data" }, outputs: { resetSelectedMarkerItem: "resetSelectedMarkerItem", clusterMarkerClick: "clusterMarkerClick", clusterListScrollEvent: "clusterListScrollEvent", getInfoWindowData: "getInfoWindowData", boundsChanged: "boundsChanged", openInMapEvent: "openInMapEvent" }, viewQueries: [{ propertyName: "maps", first: true, predicate: GoogleMap, descendants: true }, { propertyName: "markerDropdown", first: true, predicate: ["markerDropdown"], descendants: true }, { propertyName: "clusterDropdown", first: true, predicate: ["clusterDropdown"], descendants: true }], ngImport: i0, template: "<google-map\n class=\"position-relative\"\n [class.dark-mode-map]=\"mapData.darkMode\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"mapZoom\"\n [center]=\"mapCenter\"\n [options]=\"mapOptions\"\n (mapInitialized)=\"onMapReady($event)\"\n [mapId]=\"mapStyleId\"\n>\n @for (marker of mapData.markers; let i = $index; track marker.data.id) {\n <map-advanced-marker\n [position]=\"marker.position\"\n [content]=\"marker.content\"\n [zIndex]=\"\n openedInfoWindowData?.data?.id === marker.data.id ? 999 : i\n \"\n (mapClick)=\"onMarkerClick(marker)\"\n >\n </map-advanced-marker>\n }\n\n <div\n #markerDropdown\n class=\"marker-dropdown dropdown-hidden\"\n [ngClass]=\"{ 'dropdown-hidden': !isMarkerDropdownOpen }\"\n >\n <app-ca-map-dropdown\n [infoWindowContent]=\"\n !isClusterDropdownOpen\n ? openedInfoWindowData?.infoWindowContent\n : null\n \"\n [markerData]=\"openedInfoWindowData?.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </div>\n\n @for (\n clusterMarker of mapData.clusterMarkers;\n let i = $index;\n track trackByPosition($index, clusterMarker)\n ) {\n <map-advanced-marker\n [position]=\"clusterMarker.position\"\n [content]=\"clusterMarker.content\"\n [zIndex]=\"\n checkInfoWindowPosition(clusterMarker, openedInfoWindowData)\n ? 999\n : i\n \"\n (mapClick)=\"onClusterMarkerClick(clusterMarker)\"\n >\n </map-advanced-marker>\n }\n\n <div\n #clusterDropdown\n class=\"marker-dropdown cluster-dropdown dropdown-hidden\"\n [ngClass]=\"{ 'dropdown-hidden': !isClusterDropdownOpen }\"\n >\n <app-ca-map-dropdown\n [infoWindowContent]=\"\n !isMarkerDropdownOpen\n ? openedInfoWindowData?.infoWindowContent\n : null\n \"\n [markerData]=\"openedInfoWindowData?.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </div>\n\n @if (isAreaFilterActive) {\n <map-circle\n [options]=\"areaFilterData.options\"\n [center]=\"areaFilterData.center\"\n [radius]=\"areaFilterData.radius\"\n ></map-circle>\n }\n\n @for (\n routingMarker of mapData.routingMarkers;\n let i = $index;\n track trackByPosition($index, routingMarker)\n ) {\n <map-advanced-marker\n [position]=\"routingMarker.position\"\n [content]=\"routingMarker.content\"\n >\n </map-advanced-marker>\n }\n\n @if (mapData.isOpenInMapShown) {\n <div\n class=\"open-in-map-container d-flex align-items-center justify-content-center\"\n ngbTooltip\n mainCaTooltip=\"Open in Map\"\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n (click)=\"onOpenInMap()\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_location_map.svg\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n }\n\n @if (mapData.isZoomShown) {\n <div\n class=\"map-zoom-container d-flex flex-column align-items-end gap-1\"\n [ngClass]=\"{\n 'flex-column': !mapData.isVerticalZoom,\n 'vertical-zoom-buttons': mapData.isVerticalZoom,\n }\"\n >\n <div\n class=\"map-zoom-buttons d-flex align-items-center\"\n [class.flex-column]=\"mapData.isVerticalZoom\"\n >\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(true)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/popup/Minus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(false)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_plus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n </div>\n <div class=\"map-zoom-range d-flex align-items-center\">\n <div class=\"range-line\"></div>\n <div class=\"range-text ca-font-medium\">50 mi</div>\n <div class=\"range-line\"></div>\n </div>\n </div>\n }\n</google-map>\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.gm-style-iw-a .gm-style-iw-t .gm-style-iw.gm-style-iw-c{padding:0!important;border-radius:3px!important;top:70px!important;transform:translate(-50%)!important}.gm-style-iw-a .gm-style-iw-t .gm-style-iw-tc{display:none!important}.gm-style div[aria-hidden=true],.marker-label{position:absolute;left:100%;top:50%;transform:translateY(-50%);width:100px;opacity:1;transition:opacity .2s ease-in-out;text-shadow:1px 1px 0px #ffffff,1px -1px 0px #ffffff,-1px -1px 0px #ffffff,-1px 1px 0px #ffffff;font-size:11px;line-height:12px;text-align:left;font-weight:500;font-family:Montserrat,sans-serif!important;color:#424242;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-user-select:none;user-select:none}@supports (-webkit-line-clamp: 2){.gm-style div[aria-hidden=true],.marker-label{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.map-zoom-container{position:absolute;right:8px;bottom:16px}.map-zoom-container .map-zoom-buttons{width:52px;min-height:26px;background:#fff;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-buttons .zoom-button-container{height:100%}.map-zoom-container .map-zoom-buttons .zoom-button-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#919191}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover{cursor:pointer}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover svg-icon svg path{fill:#424242}.map-zoom-container .map-zoom-range{gap:2px;background:#fff;padding:0 4px;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-range .range-text{min-width:fit-content;font-size:8px;line-height:10px;color:#424242;-webkit-user-select:none;user-select:none}.map-zoom-container .map-zoom-range .range-line{width:38px;height:2px;border-radius:1px;background:#919191}.map-zoom-container.vertical-zoom-buttons .map-zoom-range{order:1}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons{order:2;width:26px;min-height:52px}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons .zoom-button-container:first-child{order:2}.open-in-map-container{position:absolute;top:4px;right:4px;width:30px;height:30px;background:#6c6c6ce6;border-radius:1px}.open-in-map-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#dadada}.open-in-map-container:hover{cursor:pointer}.open-in-map-container:hover svg-icon svg path{fill:#fff}.dark-mode-map .map-zoom-container .map-zoom-buttons,.dark-mode-map .map-zoom-range{background:#2f2f2f;border-color:#1d1d1d}.dark-mode-map .map-zoom-range .range-text{color:#fff}.marker-icon{position:relative}.marker-icon .marker-svg{transform:scale(1);transform-origin:center 30px;transition:transform .2s ease-in-out}.marker-icon .marker-svg .outside-circle,.marker-icon .marker-svg .white-circle,.marker-icon .marker-svg .inside-shape{transform-origin:center;transition:transform .2s ease-in-out}.marker-icon .marker-svg .shadow-circle{transition:transform .2s ease-in-out;transform-origin:14px 30px}.marker-icon.selected .marker-svg,.marker-icon.selected-permanently .marker-svg{transform:scale(1.5);transition:transform .2s ease-in-out}.marker-icon.selected .marker-svg .outside-circle,.marker-icon.selected-permanently .marker-svg .outside-circle{transform:scale(1.074)}.marker-icon.selected .marker-svg .white-circle,.marker-icon.selected-permanently .marker-svg .white-circle{transform:scale(.8665)}.marker-icon.selected .marker-svg .shadow-circle,.marker-icon.selected-permanently .marker-svg .shadow-circle{transform:scale(.889,.667)}.marker-icon.selected .marker-label,.marker-icon.selected-permanently .marker-label{opacity:0;pointer-events:none!important}.marker-icon.selected-permanently .marker-label{top:8px;left:calc(100% + 4px)}.marker-icon.selected-permanently:hover .marker-label{opacity:1!important}.marker-dropdown{position:absolute;top:35px;left:50%;transition:transform .2s ease-in-out,opacity .2s ease-in-out;transform:translate(-50%) scale(1);opacity:1;width:360px;min-height:64px;padding:0;background:#fff;box-shadow:0 0 4px #00000026;border-radius:3px;pointer-events:none}.marker-dropdown.dropdown-hidden{transform:translate(-50%) scale(.5);opacity:0;pointer-events:none!important}.marker-dropdown.cluster-dropdown{top:55px}.cluster-icon{position:relative}.cluster-icon .marker-svg g path{fill:#fff;transition:all .2s ease-in-out}.cluster-icon.selected .marker-svg g path{fill:#fab15c}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
342
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaMapComponent, isStandalone: true, selector: "app-ca-map", inputs: { data: "data" }, outputs: { resetSelectedMarkerItem: "resetSelectedMarkerItem", clusterMarkerClick: "clusterMarkerClick", clusterListScrollEvent: "clusterListScrollEvent", getInfoWindowData: "getInfoWindowData", boundsChanged: "boundsChanged", openInMapEvent: "openInMapEvent" }, viewQueries: [{ propertyName: "maps", first: true, predicate: GoogleMap, descendants: true }, { propertyName: "markerDropdown", first: true, predicate: ["markerDropdown"], descendants: true }, { propertyName: "clusterDropdown", first: true, predicate: ["clusterDropdown"], descendants: true }], ngImport: i0, template: "<google-map\n class=\"position-relative\"\n [class.dark-mode-map]=\"mapData.darkMode\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"mapZoom\"\n [center]=\"mapCenter\"\n [options]=\"mapOptions\"\n (mapInitialized)=\"onMapReady($event)\"\n [mapId]=\"mapStyleId\"\n>\n @for (marker of mapData.markers; let i = $index; track marker.data.id) {\n <map-advanced-marker\n [position]=\"marker.position\"\n [content]=\"marker.content\"\n [zIndex]=\"\n openedInfoWindowData?.data?.id === marker.data.id ? 999 : i\n \"\n (mapClick)=\"onMarkerClick(marker)\"\n >\n </map-advanced-marker>\n }\n\n <div\n #markerDropdown\n class=\"marker-dropdown dropdown-hidden\"\n [ngClass]=\"{ 'dropdown-hidden': !isMarkerDropdownOpen }\"\n >\n <app-ca-map-dropdown\n [infoWindowContent]=\"\n !isClusterDropdownOpen\n ? openedInfoWindowData?.infoWindowContent\n : null\n \"\n [markerData]=\"openedInfoWindowData?.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </div>\n\n @for (\n clusterMarker of mapData.clusterMarkers;\n let i = $index;\n track trackByPosition($index, clusterMarker)\n ) {\n <map-advanced-marker\n [position]=\"clusterMarker.position\"\n [content]=\"clusterMarker.content\"\n [zIndex]=\"\n checkInfoWindowPosition(clusterMarker, openedInfoWindowData)\n ? 999\n : i\n \"\n (mapClick)=\"onClusterMarkerClick(clusterMarker)\"\n >\n </map-advanced-marker>\n }\n\n @for (route of routePolylines; let i = $index; track i) {\n <map-polyline [options]=\"route\"></map-polyline>\n }\n\n <div\n #clusterDropdown\n class=\"marker-dropdown cluster-dropdown dropdown-hidden\"\n [ngClass]=\"{ 'dropdown-hidden': !isClusterDropdownOpen }\"\n >\n <app-ca-map-dropdown\n [infoWindowContent]=\"\n !isMarkerDropdownOpen\n ? openedInfoWindowData?.infoWindowContent\n : null\n \"\n [markerData]=\"openedInfoWindowData?.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </div>\n\n @if (isAreaFilterActive) {\n <map-circle\n [options]=\"areaFilterData.options\"\n [center]=\"areaFilterData.center\"\n [radius]=\"areaFilterData.radius\"\n ></map-circle>\n }\n\n @for (\n routingMarker of mapData.routingMarkers;\n let i = $index;\n track trackByPosition($index, routingMarker)\n ) {\n <map-advanced-marker\n [position]=\"routingMarker.position\"\n [content]=\"routingMarker.content\"\n >\n </map-advanced-marker>\n }\n\n @if (mapData.isOpenInMapShown) {\n <div\n class=\"open-in-map-container d-flex align-items-center justify-content-center\"\n ngbTooltip\n mainCaTooltip=\"Open in Map\"\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n (click)=\"onOpenInMap()\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_location_map.svg\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n }\n\n @if (mapData.isZoomShown) {\n <div\n class=\"map-zoom-container d-flex flex-column align-items-end gap-1\"\n [ngClass]=\"{\n 'flex-column': !mapData.isVerticalZoom,\n 'vertical-zoom-buttons': mapData.isVerticalZoom,\n }\"\n >\n <div\n class=\"map-zoom-buttons d-flex align-items-center\"\n [class.flex-column]=\"mapData.isVerticalZoom\"\n >\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(true)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/popup/Minus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(false)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_plus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n </div>\n <div class=\"map-zoom-range d-flex align-items-center\">\n <div class=\"range-line\"></div>\n <div class=\"range-text ca-font-medium\">50 mi</div>\n <div class=\"range-line\"></div>\n </div>\n </div>\n }\n</google-map>\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.gm-style-iw-a .gm-style-iw-t .gm-style-iw.gm-style-iw-c{padding:0!important;border-radius:3px!important;top:70px!important;transform:translate(-50%)!important}.gm-style-iw-a .gm-style-iw-t .gm-style-iw-tc{display:none!important}.gm-style div[aria-hidden=true],.marker-label{position:absolute;left:100%;top:50%;transform:translateY(-50%);width:100px;opacity:1;transition:opacity .2s ease-in-out;text-shadow:1px 1px 0px #ffffff,1px -1px 0px #ffffff,-1px -1px 0px #ffffff,-1px 1px 0px #ffffff;font-size:11px;line-height:12px;text-align:left;font-weight:500;font-family:Montserrat,sans-serif!important;color:#424242;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-user-select:none;user-select:none}@supports (-webkit-line-clamp: 2){.gm-style div[aria-hidden=true],.marker-label{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.map-zoom-container{position:absolute;right:8px;bottom:16px}.map-zoom-container .map-zoom-buttons{width:52px;min-height:26px;background:#fff;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-buttons .zoom-button-container{height:100%}.map-zoom-container .map-zoom-buttons .zoom-button-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#919191}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover{cursor:pointer}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover svg-icon svg path{fill:#424242}.map-zoom-container .map-zoom-range{gap:2px;background:#fff;padding:0 4px;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-range .range-text{min-width:fit-content;font-size:8px;line-height:10px;color:#424242;-webkit-user-select:none;user-select:none}.map-zoom-container .map-zoom-range .range-line{width:38px;height:2px;border-radius:1px;background:#919191}.map-zoom-container.vertical-zoom-buttons .map-zoom-range{order:1}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons{order:2;width:26px;min-height:52px}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons .zoom-button-container:first-child{order:2}.open-in-map-container{position:absolute;top:4px;right:4px;width:30px;height:30px;background:#6c6c6ce6;border-radius:1px}.open-in-map-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#dadada}.open-in-map-container:hover{cursor:pointer}.open-in-map-container:hover svg-icon svg path{fill:#fff}.dark-mode-map .map-zoom-container .map-zoom-buttons,.dark-mode-map .map-zoom-range{background:#2f2f2f;border-color:#1d1d1d}.dark-mode-map .map-zoom-range .range-text{color:#fff}.marker-icon{position:relative}.marker-icon .marker-svg{transform:scale(1);transform-origin:center 30px;transition:transform .2s ease-in-out}.marker-icon .marker-svg .outside-circle,.marker-icon .marker-svg .white-circle,.marker-icon .marker-svg .inside-shape{transform-origin:center;transition:transform .2s ease-in-out}.marker-icon .marker-svg .shadow-circle{transition:transform .2s ease-in-out;transform-origin:14px 30px}.marker-icon.selected .marker-svg,.marker-icon.selected-permanently .marker-svg{transform:scale(1.5);transition:transform .2s ease-in-out}.marker-icon.selected .marker-svg .outside-circle,.marker-icon.selected-permanently .marker-svg .outside-circle{transform:scale(1.074)}.marker-icon.selected .marker-svg .white-circle,.marker-icon.selected-permanently .marker-svg .white-circle{transform:scale(.8665)}.marker-icon.selected .marker-svg .shadow-circle,.marker-icon.selected-permanently .marker-svg .shadow-circle{transform:scale(.889,.667)}.marker-icon.selected .marker-label,.marker-icon.selected-permanently .marker-label{opacity:0;pointer-events:none!important}.marker-icon.selected-permanently .marker-label{top:8px;left:calc(100% + 4px)}.marker-icon.selected-permanently:hover .marker-label{opacity:1!important}.marker-dropdown{position:absolute;top:35px;left:50%;transition:transform .2s ease-in-out,opacity .2s ease-in-out;transform:translate(-50%) scale(1);opacity:1;width:360px;min-height:64px;padding:0;background:#fff;box-shadow:0 0 4px #00000026;border-radius:3px;pointer-events:none}.marker-dropdown.dropdown-hidden{transform:translate(-50%) scale(.5);opacity:0;pointer-events:none!important}.marker-dropdown.cluster-dropdown{top:55px}.cluster-icon{position:relative}.cluster-icon .marker-svg g path{fill:#fff;transition:all .2s ease-in-out}.cluster-icon.selected .marker-svg g path{fill:#fab15c}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
356
343
|
// Modules
|
|
357
|
-
GoogleMapsModule }, { kind: "component", type: i2.GoogleMap, selector: "google-map", inputs: ["height", "width", "mapId", "mapTypeId", "center", "zoom", "options"], outputs: ["mapInitialized", "authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { kind: "directive", type: i2.MapCircle, selector: "map-circle", inputs: ["options", "center", "radius"], outputs: ["centerChanged", "circleClick", "circleDblclick", "circleDrag", "circleDragend", "circleDragstart", "circleMousedown", "circleMousemove", "circleMouseout", "circleMouseover", "circleMouseup", "radiusChanged", "circleRightclick", "circleInitialized"], exportAs: ["mapCircle"] }, { kind: "directive", type: i2.MapAdvancedMarker, selector: "map-advanced-marker", inputs: ["title", "position", "content", "gmpDraggable", "options", "zIndex"], outputs: ["mapClick", "mapDrag", "mapDragend", "mapDragstart", "markerInitialized"], exportAs: ["mapAdvancedMarker"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "component", type: i4.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type:
|
|
344
|
+
GoogleMapsModule }, { kind: "component", type: i2.GoogleMap, selector: "google-map", inputs: ["height", "width", "mapId", "mapTypeId", "center", "zoom", "options"], outputs: ["mapInitialized", "authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { kind: "directive", type: i2.MapCircle, selector: "map-circle", inputs: ["options", "center", "radius"], outputs: ["centerChanged", "circleClick", "circleDblclick", "circleDrag", "circleDragend", "circleDragstart", "circleMousedown", "circleMousemove", "circleMouseout", "circleMouseover", "circleMouseup", "radiusChanged", "circleRightclick", "circleInitialized"], exportAs: ["mapCircle"] }, { kind: "directive", type: i2.MapAdvancedMarker, selector: "map-advanced-marker", inputs: ["title", "position", "content", "gmpDraggable", "options", "zIndex"], outputs: ["mapClick", "mapDrag", "mapDragend", "mapDragstart", "markerInitialized"], exportAs: ["mapAdvancedMarker"] }, { kind: "directive", type: i2.MapPolyline, selector: "map-polyline", inputs: ["options", "path"], outputs: ["polylineClick", "polylineDblclick", "polylineDrag", "polylineDragend", "polylineDragstart", "polylineMousedown", "polylineMousemove", "polylineMouseout", "polylineMouseover", "polylineMouseup", "polylineRightclick", "polylineInitialized"], exportAs: ["mapPolyline"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "component", type: i4.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type:
|
|
358
345
|
// Components
|
|
359
346
|
CaMapDropdownComponent, selector: "app-ca-map-dropdown", inputs: ["infoWindowContent", "markerData"], outputs: ["onClusterItemClick", "onClusterListScrollToEnd", "onBackButtonClick", "bodyActions"] }, { kind: "component", type: CaAppTooltipV2Component, selector: "mainCaTooltip, [mainCaTooltip]", inputs: ["mainCaTooltip", "position", "openTooltipDelay", "tooltipBackground", "tooltipColor", "tooltipTextAlign", "tooltipMarginTop", "disableTooltip"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
360
347
|
}
|
|
@@ -369,8 +356,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
369
356
|
// Components
|
|
370
357
|
CaMapDropdownComponent,
|
|
371
358
|
CaAppTooltipV2Component,
|
|
372
|
-
], encapsulation: ViewEncapsulation.None, template: "<google-map\n class=\"position-relative\"\n [class.dark-mode-map]=\"mapData.darkMode\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"mapZoom\"\n [center]=\"mapCenter\"\n [options]=\"mapOptions\"\n (mapInitialized)=\"onMapReady($event)\"\n [mapId]=\"mapStyleId\"\n>\n @for (marker of mapData.markers; let i = $index; track marker.data.id) {\n <map-advanced-marker\n [position]=\"marker.position\"\n [content]=\"marker.content\"\n [zIndex]=\"\n openedInfoWindowData?.data?.id === marker.data.id ? 999 : i\n \"\n (mapClick)=\"onMarkerClick(marker)\"\n >\n </map-advanced-marker>\n }\n\n <div\n #markerDropdown\n class=\"marker-dropdown dropdown-hidden\"\n [ngClass]=\"{ 'dropdown-hidden': !isMarkerDropdownOpen }\"\n >\n <app-ca-map-dropdown\n [infoWindowContent]=\"\n !isClusterDropdownOpen\n ? openedInfoWindowData?.infoWindowContent\n : null\n \"\n [markerData]=\"openedInfoWindowData?.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </div>\n\n @for (\n clusterMarker of mapData.clusterMarkers;\n let i = $index;\n track trackByPosition($index, clusterMarker)\n ) {\n <map-advanced-marker\n [position]=\"clusterMarker.position\"\n [content]=\"clusterMarker.content\"\n [zIndex]=\"\n checkInfoWindowPosition(clusterMarker, openedInfoWindowData)\n ? 999\n : i\n \"\n (mapClick)=\"onClusterMarkerClick(clusterMarker)\"\n >\n </map-advanced-marker>\n }\n\n <div\n #clusterDropdown\n class=\"marker-dropdown cluster-dropdown dropdown-hidden\"\n [ngClass]=\"{ 'dropdown-hidden': !isClusterDropdownOpen }\"\n >\n <app-ca-map-dropdown\n [infoWindowContent]=\"\n !isMarkerDropdownOpen\n ? openedInfoWindowData?.infoWindowContent\n : null\n \"\n [markerData]=\"openedInfoWindowData?.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </div>\n\n @if (isAreaFilterActive) {\n <map-circle\n [options]=\"areaFilterData.options\"\n [center]=\"areaFilterData.center\"\n [radius]=\"areaFilterData.radius\"\n ></map-circle>\n }\n\n @for (\n routingMarker of mapData.routingMarkers;\n let i = $index;\n track trackByPosition($index, routingMarker)\n ) {\n <map-advanced-marker\n [position]=\"routingMarker.position\"\n [content]=\"routingMarker.content\"\n >\n </map-advanced-marker>\n }\n\n @if (mapData.isOpenInMapShown) {\n <div\n class=\"open-in-map-container d-flex align-items-center justify-content-center\"\n ngbTooltip\n mainCaTooltip=\"Open in Map\"\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n (click)=\"onOpenInMap()\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_location_map.svg\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n }\n\n @if (mapData.isZoomShown) {\n <div\n class=\"map-zoom-container d-flex flex-column align-items-end gap-1\"\n [ngClass]=\"{\n 'flex-column': !mapData.isVerticalZoom,\n 'vertical-zoom-buttons': mapData.isVerticalZoom,\n }\"\n >\n <div\n class=\"map-zoom-buttons d-flex align-items-center\"\n [class.flex-column]=\"mapData.isVerticalZoom\"\n >\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(true)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/popup/Minus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(false)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_plus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n </div>\n <div class=\"map-zoom-range d-flex align-items-center\">\n <div class=\"range-line\"></div>\n <div class=\"range-text ca-font-medium\">50 mi</div>\n <div class=\"range-line\"></div>\n </div>\n </div>\n }\n</google-map>\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.gm-style-iw-a .gm-style-iw-t .gm-style-iw.gm-style-iw-c{padding:0!important;border-radius:3px!important;top:70px!important;transform:translate(-50%)!important}.gm-style-iw-a .gm-style-iw-t .gm-style-iw-tc{display:none!important}.gm-style div[aria-hidden=true],.marker-label{position:absolute;left:100%;top:50%;transform:translateY(-50%);width:100px;opacity:1;transition:opacity .2s ease-in-out;text-shadow:1px 1px 0px #ffffff,1px -1px 0px #ffffff,-1px -1px 0px #ffffff,-1px 1px 0px #ffffff;font-size:11px;line-height:12px;text-align:left;font-weight:500;font-family:Montserrat,sans-serif!important;color:#424242;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-user-select:none;user-select:none}@supports (-webkit-line-clamp: 2){.gm-style div[aria-hidden=true],.marker-label{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.map-zoom-container{position:absolute;right:8px;bottom:16px}.map-zoom-container .map-zoom-buttons{width:52px;min-height:26px;background:#fff;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-buttons .zoom-button-container{height:100%}.map-zoom-container .map-zoom-buttons .zoom-button-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#919191}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover{cursor:pointer}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover svg-icon svg path{fill:#424242}.map-zoom-container .map-zoom-range{gap:2px;background:#fff;padding:0 4px;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-range .range-text{min-width:fit-content;font-size:8px;line-height:10px;color:#424242;-webkit-user-select:none;user-select:none}.map-zoom-container .map-zoom-range .range-line{width:38px;height:2px;border-radius:1px;background:#919191}.map-zoom-container.vertical-zoom-buttons .map-zoom-range{order:1}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons{order:2;width:26px;min-height:52px}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons .zoom-button-container:first-child{order:2}.open-in-map-container{position:absolute;top:4px;right:4px;width:30px;height:30px;background:#6c6c6ce6;border-radius:1px}.open-in-map-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#dadada}.open-in-map-container:hover{cursor:pointer}.open-in-map-container:hover svg-icon svg path{fill:#fff}.dark-mode-map .map-zoom-container .map-zoom-buttons,.dark-mode-map .map-zoom-range{background:#2f2f2f;border-color:#1d1d1d}.dark-mode-map .map-zoom-range .range-text{color:#fff}.marker-icon{position:relative}.marker-icon .marker-svg{transform:scale(1);transform-origin:center 30px;transition:transform .2s ease-in-out}.marker-icon .marker-svg .outside-circle,.marker-icon .marker-svg .white-circle,.marker-icon .marker-svg .inside-shape{transform-origin:center;transition:transform .2s ease-in-out}.marker-icon .marker-svg .shadow-circle{transition:transform .2s ease-in-out;transform-origin:14px 30px}.marker-icon.selected .marker-svg,.marker-icon.selected-permanently .marker-svg{transform:scale(1.5);transition:transform .2s ease-in-out}.marker-icon.selected .marker-svg .outside-circle,.marker-icon.selected-permanently .marker-svg .outside-circle{transform:scale(1.074)}.marker-icon.selected .marker-svg .white-circle,.marker-icon.selected-permanently .marker-svg .white-circle{transform:scale(.8665)}.marker-icon.selected .marker-svg .shadow-circle,.marker-icon.selected-permanently .marker-svg .shadow-circle{transform:scale(.889,.667)}.marker-icon.selected .marker-label,.marker-icon.selected-permanently .marker-label{opacity:0;pointer-events:none!important}.marker-icon.selected-permanently .marker-label{top:8px;left:calc(100% + 4px)}.marker-icon.selected-permanently:hover .marker-label{opacity:1!important}.marker-dropdown{position:absolute;top:35px;left:50%;transition:transform .2s ease-in-out,opacity .2s ease-in-out;transform:translate(-50%) scale(1);opacity:1;width:360px;min-height:64px;padding:0;background:#fff;box-shadow:0 0 4px #00000026;border-radius:3px;pointer-events:none}.marker-dropdown.dropdown-hidden{transform:translate(-50%) scale(.5);opacity:0;pointer-events:none!important}.marker-dropdown.cluster-dropdown{top:55px}.cluster-icon{position:relative}.cluster-icon .marker-svg g path{fill:#fff;transition:all .2s ease-in-out}.cluster-icon.selected .marker-svg g path{fill:#fab15c}\n"] }]
|
|
373
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.MapMarkerIconService }], propDecorators: {
|
|
359
|
+
], encapsulation: ViewEncapsulation.None, template: "<google-map\n class=\"position-relative\"\n [class.dark-mode-map]=\"mapData.darkMode\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"mapZoom\"\n [center]=\"mapCenter\"\n [options]=\"mapOptions\"\n (mapInitialized)=\"onMapReady($event)\"\n [mapId]=\"mapStyleId\"\n>\n @for (marker of mapData.markers; let i = $index; track marker.data.id) {\n <map-advanced-marker\n [position]=\"marker.position\"\n [content]=\"marker.content\"\n [zIndex]=\"\n openedInfoWindowData?.data?.id === marker.data.id ? 999 : i\n \"\n (mapClick)=\"onMarkerClick(marker)\"\n >\n </map-advanced-marker>\n }\n\n <div\n #markerDropdown\n class=\"marker-dropdown dropdown-hidden\"\n [ngClass]=\"{ 'dropdown-hidden': !isMarkerDropdownOpen }\"\n >\n <app-ca-map-dropdown\n [infoWindowContent]=\"\n !isClusterDropdownOpen\n ? openedInfoWindowData?.infoWindowContent\n : null\n \"\n [markerData]=\"openedInfoWindowData?.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </div>\n\n @for (\n clusterMarker of mapData.clusterMarkers;\n let i = $index;\n track trackByPosition($index, clusterMarker)\n ) {\n <map-advanced-marker\n [position]=\"clusterMarker.position\"\n [content]=\"clusterMarker.content\"\n [zIndex]=\"\n checkInfoWindowPosition(clusterMarker, openedInfoWindowData)\n ? 999\n : i\n \"\n (mapClick)=\"onClusterMarkerClick(clusterMarker)\"\n >\n </map-advanced-marker>\n }\n\n @for (route of routePolylines; let i = $index; track i) {\n <map-polyline [options]=\"route\"></map-polyline>\n }\n\n <div\n #clusterDropdown\n class=\"marker-dropdown cluster-dropdown dropdown-hidden\"\n [ngClass]=\"{ 'dropdown-hidden': !isClusterDropdownOpen }\"\n >\n <app-ca-map-dropdown\n [infoWindowContent]=\"\n !isMarkerDropdownOpen\n ? openedInfoWindowData?.infoWindowContent\n : null\n \"\n [markerData]=\"openedInfoWindowData?.data\"\n (onClusterItemClick)=\"getMarkerInfoWindow($event)\"\n (onClusterListScrollToEnd)=\"onClusterListScrollToEnd()\"\n (onBackButtonClick)=\"onClusterBackButtonClick()\"\n ></app-ca-map-dropdown>\n </div>\n\n @if (isAreaFilterActive) {\n <map-circle\n [options]=\"areaFilterData.options\"\n [center]=\"areaFilterData.center\"\n [radius]=\"areaFilterData.radius\"\n ></map-circle>\n }\n\n @for (\n routingMarker of mapData.routingMarkers;\n let i = $index;\n track trackByPosition($index, routingMarker)\n ) {\n <map-advanced-marker\n [position]=\"routingMarker.position\"\n [content]=\"routingMarker.content\"\n >\n </map-advanced-marker>\n }\n\n @if (mapData.isOpenInMapShown) {\n <div\n class=\"open-in-map-container d-flex align-items-center justify-content-center\"\n ngbTooltip\n mainCaTooltip=\"Open in Map\"\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n (click)=\"onOpenInMap()\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_location_map.svg\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n }\n\n @if (mapData.isZoomShown) {\n <div\n class=\"map-zoom-container d-flex flex-column align-items-end gap-1\"\n [ngClass]=\"{\n 'flex-column': !mapData.isVerticalZoom,\n 'vertical-zoom-buttons': mapData.isVerticalZoom,\n }\"\n >\n <div\n class=\"map-zoom-buttons d-flex align-items-center\"\n [class.flex-column]=\"mapData.isVerticalZoom\"\n >\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(true)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/popup/Minus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n <div\n class=\"zoom-button-container d-flex align-items-center justify-content-center flex-1\"\n (click)=\"onZoomChange(false)\"\n >\n <svg-icon\n class=\"d-flex\"\n src=\"assets/ca-components/svg/common/ic_plus.svg\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n </div>\n </div>\n <div class=\"map-zoom-range d-flex align-items-center\">\n <div class=\"range-line\"></div>\n <div class=\"range-text ca-font-medium\">50 mi</div>\n <div class=\"range-line\"></div>\n </div>\n </div>\n }\n</google-map>\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.gm-style-iw-a .gm-style-iw-t .gm-style-iw.gm-style-iw-c{padding:0!important;border-radius:3px!important;top:70px!important;transform:translate(-50%)!important}.gm-style-iw-a .gm-style-iw-t .gm-style-iw-tc{display:none!important}.gm-style div[aria-hidden=true],.marker-label{position:absolute;left:100%;top:50%;transform:translateY(-50%);width:100px;opacity:1;transition:opacity .2s ease-in-out;text-shadow:1px 1px 0px #ffffff,1px -1px 0px #ffffff,-1px -1px 0px #ffffff,-1px 1px 0px #ffffff;font-size:11px;line-height:12px;text-align:left;font-weight:500;font-family:Montserrat,sans-serif!important;color:#424242;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-user-select:none;user-select:none}@supports (-webkit-line-clamp: 2){.gm-style div[aria-hidden=true],.marker-label{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.map-zoom-container{position:absolute;right:8px;bottom:16px}.map-zoom-container .map-zoom-buttons{width:52px;min-height:26px;background:#fff;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-buttons .zoom-button-container{height:100%}.map-zoom-container .map-zoom-buttons .zoom-button-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#919191}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover{cursor:pointer}.map-zoom-container .map-zoom-buttons .zoom-button-container:hover svg-icon svg path{fill:#424242}.map-zoom-container .map-zoom-range{gap:2px;background:#fff;padding:0 4px;border-width:3px;border-style:solid;border-color:#eee;border-radius:2px}.map-zoom-container .map-zoom-range .range-text{min-width:fit-content;font-size:8px;line-height:10px;color:#424242;-webkit-user-select:none;user-select:none}.map-zoom-container .map-zoom-range .range-line{width:38px;height:2px;border-radius:1px;background:#919191}.map-zoom-container.vertical-zoom-buttons .map-zoom-range{order:1}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons{order:2;width:26px;min-height:52px}.map-zoom-container.vertical-zoom-buttons .map-zoom-buttons .zoom-button-container:first-child{order:2}.open-in-map-container{position:absolute;top:4px;right:4px;width:30px;height:30px;background:#6c6c6ce6;border-radius:1px}.open-in-map-container svg-icon svg path{transition:fill .2s ease-in-out;fill:#dadada}.open-in-map-container:hover{cursor:pointer}.open-in-map-container:hover svg-icon svg path{fill:#fff}.dark-mode-map .map-zoom-container .map-zoom-buttons,.dark-mode-map .map-zoom-range{background:#2f2f2f;border-color:#1d1d1d}.dark-mode-map .map-zoom-range .range-text{color:#fff}.marker-icon{position:relative}.marker-icon .marker-svg{transform:scale(1);transform-origin:center 30px;transition:transform .2s ease-in-out}.marker-icon .marker-svg .outside-circle,.marker-icon .marker-svg .white-circle,.marker-icon .marker-svg .inside-shape{transform-origin:center;transition:transform .2s ease-in-out}.marker-icon .marker-svg .shadow-circle{transition:transform .2s ease-in-out;transform-origin:14px 30px}.marker-icon.selected .marker-svg,.marker-icon.selected-permanently .marker-svg{transform:scale(1.5);transition:transform .2s ease-in-out}.marker-icon.selected .marker-svg .outside-circle,.marker-icon.selected-permanently .marker-svg .outside-circle{transform:scale(1.074)}.marker-icon.selected .marker-svg .white-circle,.marker-icon.selected-permanently .marker-svg .white-circle{transform:scale(.8665)}.marker-icon.selected .marker-svg .shadow-circle,.marker-icon.selected-permanently .marker-svg .shadow-circle{transform:scale(.889,.667)}.marker-icon.selected .marker-label,.marker-icon.selected-permanently .marker-label{opacity:0;pointer-events:none!important}.marker-icon.selected-permanently .marker-label{top:8px;left:calc(100% + 4px)}.marker-icon.selected-permanently:hover .marker-label{opacity:1!important}.marker-dropdown{position:absolute;top:35px;left:50%;transition:transform .2s ease-in-out,opacity .2s ease-in-out;transform:translate(-50%) scale(1);opacity:1;width:360px;min-height:64px;padding:0;background:#fff;box-shadow:0 0 4px #00000026;border-radius:3px;pointer-events:none}.marker-dropdown.dropdown-hidden{transform:translate(-50%) scale(.5);opacity:0;pointer-events:none!important}.marker-dropdown.cluster-dropdown{top:55px}.cluster-icon{position:relative}.cluster-icon .marker-svg g path{fill:#fff;transition:all .2s ease-in-out}.cluster-icon.selected .marker-svg g path{fill:#fab15c}\n"] }]
|
|
360
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.MapMarkerIconService }], propDecorators: { maps: [{
|
|
361
|
+
type: ViewChild,
|
|
362
|
+
args: [GoogleMap, { static: false }]
|
|
363
|
+
}], markerDropdown: [{
|
|
364
|
+
type: ViewChild,
|
|
365
|
+
args: ['markerDropdown']
|
|
366
|
+
}], clusterDropdown: [{
|
|
367
|
+
type: ViewChild,
|
|
368
|
+
args: ['clusterDropdown']
|
|
369
|
+
}], data: [{
|
|
374
370
|
type: Input
|
|
375
371
|
}], resetSelectedMarkerItem: [{
|
|
376
372
|
type: Output
|
|
@@ -384,14 +380,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
384
380
|
type: Output
|
|
385
381
|
}], openInMapEvent: [{
|
|
386
382
|
type: Output
|
|
387
|
-
}], maps: [{
|
|
388
|
-
type: ViewChild,
|
|
389
|
-
args: [GoogleMap, { static: false }]
|
|
390
|
-
}], markerDropdown: [{
|
|
391
|
-
type: ViewChild,
|
|
392
|
-
args: ['markerDropdown']
|
|
393
|
-
}], clusterDropdown: [{
|
|
394
|
-
type: ViewChild,
|
|
395
|
-
args: ['clusterDropdown']
|
|
396
383
|
}] } });
|
|
397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW1hcC9jYS1tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwL2NhLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLFVBQVU7QUFDVixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsYUFBYTtBQUNiLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTNGLFFBQVE7QUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBYTlDLFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFL0QsWUFBWTtBQUNaLE9BQU8sRUFFSCxtQkFBbUIsR0FD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b2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbi8vIE1vZHVsZXNcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JUb29sdGlwTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgR29vZ2xlTWFwLCBHb29nbGVNYXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZ29vZ2xlLW1hcHMnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYU1hcERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtbWFwLWRyb3Bkb3duL2NhLW1hcC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBFbnVtc1xuaW1wb3J0IHsgR29vZ2xlTWFwRW51bSB9IGZyb20gJy4uL2NhLW1hcC9lbnVtcy9nb29nbGUtbWFwLmVudW0nO1xuaW1wb3J0IHsgTWFwTWFya2VyU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMnO1xuXG4vLyBNb2RlbHNcbmltcG9ydCB7XG4gICAgSU1hcE1hcmtlcnMsXG4gICAgSU1hcFJvdXRlUGF0aCxcbiAgICBJQ2FNYXBQcm9wcyxcbiAgICBJTWFwT3B0aW9ucyxcbiAgICBJUm91dGVQYXRoLFxuICAgIElNYXBCb3VuZHNab29tLFxuICAgIElNYXBTZWxlY3RlZE1hcmtlckRhdGEsXG59IGZyb20gJy4uL2NhLW1hcC9tb2RlbHMvbWFwLm1vZGVsJztcblxuLy8gSGVscGVyc1xuaW1wb3J0IHsgTWFwSGVscGVyIH0gZnJvbSAnLi4vY2EtbWFwL3V0aWxzL2hlbHBlcnMvbWFwLmhlbHBlcic7XG5cbi8vIENvbnN0YW50c1xuaW1wb3J0IHtcbiAgICBNYXBJbmZvV2luZG93T3B0aW9uc0NvbnN0YW50cyxcbiAgICBNYXBPcHRpb25zQ29uc3RhbnRzLFxufSBmcm9tICcuL3V0aWxzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNYXBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbWFwLmNvbnN0YW50JztcblxuLy8gU2VydmljZXNcbmltcG9ydCB7IE1hcE1hcmtlckljb25TZXJ2aWNlIH0gZnJvbSAnLi91dGlscy9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWNhLW1hcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLW1hcC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2EtbWFwLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC8vIE1vZHVsZXNcbiAgICAgICAgR29vZ2xlTWFwc01vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgTmdiVG9vbHRpcE1vZHVsZSxcblxuICAgICAgICAvLyBDb21wb25lbnRzXG4gICAgICAgIENhTWFwRHJvcGRvd25Db21wb25lbnQsXG4gICAgICAgIENhQXBwVG9vbHRpcFYyQ29tcG9uZW50LFxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FNYXBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG5cbiAgICAgICAgLy8gU2VydmljZXNcbiAgICAgICAgcHJpdmF0ZSBtYXJrZXJJY29uU2VydmljZTogTWFwTWFya2VySWNvblNlcnZpY2VcbiAgICApIHt9XG4gICAgQElucHV0KCkgc2V0IGRhdGEodmFsdWVzOiBJQ2FNYXBQcm9wcykge1xuICAgICAgICB0aGlzLmhhbmRsZU1hcERhdGEodmFsdWVzKTtcbiAgICB9XG4gICAgQE91dHB1dCgpIHJlc2V0U2VsZWN0ZWRNYXJrZXJJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBjbHVzdGVyTWFya2VyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElNYXBNYXJrZXJzPigpO1xuICAgIEBPdXRwdXQoKSBjbHVzdGVyTGlzdFNjcm9sbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFwTWFya2Vycz4oKTtcbiAgICBAT3V0cHV0KCkgZ2V0SW5mb1dpbmRvd0RhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCkgYm91bmRzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hcEJvdW5kc1pvb20+KCk7XG4gICAgQE91dHB1dCgpIG9wZW5Jbk1hcEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBWaWV3Q2hpbGQoR29vZ2xlTWFwLCB7IHN0YXRpYzogZmFsc2UgfSkgbWFwcyE6IEdvb2dsZU1hcDtcbiAgICBAVmlld0NoaWxkKCdtYXJrZXJEcm9wZG93bicpIG1hcmtlckRyb3Bkb3duITogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdjbHVzdGVyRHJvcGRvd24nKSBjbHVzdGVyRHJvcGRvd24hOiBFbGVtZW50UmVmO1xuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHB1YmxpYyBpc0N1cnJlbnRseU9wZW5XaW5kb3c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIGRpcmVjdGlvblNlcnZpY2UgPSBuZXcgZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1NlcnZpY2UoKTtcbiAgICBwdWJsaWMgZGlyZWN0aW9uc1JlbmRlcmVyczogZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1JlbmRlcmVyW10gPSBbXTtcbiAgICBwdWJsaWMgbWFwT3B0aW9uczogSU1hcE9wdGlvbnMgPSBNYXBPcHRpb25zQ29uc3RhbnRzLmRlZmF1bHRNYXBPcHRpb25zO1xuICAgIHB1YmxpYyBtYXBab29tOiBudW1iZXIgPSBNYXBPcHRpb25zQ29uc3RhbnRzLmRlZmF1bHRNYXBab29tO1xuICAgIHB1YmxpYyBtYXBDZW50ZXI6IElSb3V0ZVBhdGggPSBNYXBPcHRpb25zQ29uc3RhbnRzLmRlZmF1bHRNYXBDZW50ZXI7XG4gICAgcHVibGljIG1hcDogZ29vZ2xlLm1hcHMuTWFwIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGlzTWFwQ2VudGVyU2V0OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIG1hcERhdGE6IElDYU1hcFByb3BzID0ge307XG4gICAgcHVibGljIG9wZW5lZEluZm9XaW5kb3dEYXRhOiBJTWFwTWFya2VycyB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBhcmVhRmlsdGVyRGF0YSA9IE1hcE9wdGlvbnNDb25zdGFudHMuYXJlYUZpbHRlckRhdGE7XG4gICAgcHVibGljIGlzQXJlYUZpbHRlckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBjbHVzdGVyTWFya2VySWRzOiBJTWFwTWFya2Vyc1tdID0gW107XG4gICAgcHVibGljIHJvdXRpbmdNYXJrZXJJZHM6IElNYXBNYXJrZXJzW10gPSBbXTtcbiAgICBwdWJsaWMgaXNNYXJrZXJEcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNDbHVzdGVyRHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIG9wZW5Ecm9wZG93blRpbWVvdXQ6IE5vZGVKUy5UaW1lb3V0IHwgbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgbWFwU3R5bGVJZDogc3RyaW5nID0gJ2Q2ODE5MDRhMzkwYTg0MDInO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIFJlc2V0IGFsbCBpY29ucyB0byB0aGVpciBpbml0aWFsIHN0YXRlIG9uIHBhZ2UgbG9hZFxuICAgICAgICB0aGlzLnJlc2V0TWFya2Vyc0ljb25zKCk7XG5cbiAgICAgICAgdGhpcy5nZXRTZXJ2aWNlRGF0YSgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5tYXBzLmdvb2dsZU1hcD8uYWRkTGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2x1c3Rlck1hcmtlckNsaWNrKG1hcmtlckl0ZW06IElNYXBNYXJrZXJzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzSW5mb1dpbmRvd09wZW5lZCA9IHRoaXMuY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICAgICAgICBtYXJrZXJJdGVtLFxuICAgICAgICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghaXNJbmZvV2luZG93T3BlbmVkKSB0aGlzLmNsdXN0ZXJNYXJrZXJDbGljay5lbWl0KG1hcmtlckl0ZW0pO1xuICAgICAgICBlbHNlIHRoaXMuY2xvc2VJbmZvV2luZG93KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1hcmtlckluZm9XaW5kb3cobWFya2VySWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAobWFya2VySWQpIHRoaXMuZ2V0SW5mb1dpbmRvd0RhdGEuZW1pdChtYXJrZXJJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWFya2VyQ2xpY2sobWFya2VySXRlbTogSU1hcE1hcmtlcnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNJbmZvV2luZG93T3BlbmVkID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihcbiAgICAgICAgICAgIG1hcmtlckl0ZW0sXG4gICAgICAgICAgICB0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFpc0luZm9XaW5kb3dPcGVuZWQpIHRoaXMuZ2V0TWFya2VySW5mb1dpbmRvdyhtYXJrZXJJdGVtLmRhdGEuaWQpO1xuICAgICAgICBlbHNlIHRoaXMuY2xvc2VJbmZvV2luZG93KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpcmVjdGlvbnNPbk1hcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWFwcz8uZ29vZ2xlTWFwKSB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbnNSZW5kZXJlcnMuZm9yRWFjaCgocmVuZGVyZXIpID0+XG4gICAgICAgICAgICAgICAgcmVuZGVyZXIuc2V0TWFwKHRoaXMubWFwcz8uZ29vZ2xlTWFwISlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlQW5kRGlzcGxheVJvdXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYXBEYXRhLnJvdXRlUGF0aHMpIHtcbiAgICAgICAgICAgIC8vIENsZWFyIHByZXZpb3VzIGRpcmVjdGlvbnMgcmVuZGVyZXJzXG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbnNSZW5kZXJlcnMuZm9yRWFjaCgocmVuZGVyZXIpID0+XG4gICAgICAgICAgICAgICAgcmVuZGVyZXIuc2V0TWFwKG51bGwpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb25zUmVuZGVyZXJzID0gW107XG5cbiAgICAgICAgICAgIHRoaXMubWFwRGF0YS5yb3V0ZVBhdGhzIS5mb3JFYWNoKChyb3V0ZTogSU1hcFJvdXRlUGF0aCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3Q6IGdvb2dsZS5tYXBzLkRpcmVjdGlvbnNSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IHJvdXRlLnBhdGhbMF0sXG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiByb3V0ZS5wYXRoW3JvdXRlLnBhdGgubGVuZ3RoIC0gMV0sXG4gICAgICAgICAgICAgICAgICAgIHdheXBvaW50czogcm91dGUucGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDEsIHJvdXRlLnBhdGgubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHBvc2l0aW9uKSA9PiAoeyBsb2NhdGlvbjogcG9zaXRpb24gfSkpLFxuICAgICAgICAgICAgICAgICAgICB0cmF2ZWxNb2RlOiBnb29nbGUubWFwcy5UcmF2ZWxNb2RlLkRSSVZJTkcsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uU2VydmljZS5yb3V0ZShyZXF1ZXN0LCAocmVzdWx0LCBzdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID09PSBnb29nbGUubWFwcy5EaXJlY3Rpb25zU3RhdHVzLk9LICYmXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ/LnJvdXRlc1swXVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbnNSZW5kZXJlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGdvb2dsZS5tYXBzLkRpcmVjdGlvbnNSZW5kZXJlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzSW5mb1dpbmRvd3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzTWFya2VyczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVWaWV3cG9ydDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9seWxpbmVPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VDb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZS5zdHJva2VDb2xvciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdvb2dsZU1hcEVudW0uU1RST0tFX0NPTE9SLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlT3BhY2l0eTogIXJvdXRlLmlzRGFzaGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByb3V0ZS5zdHJva2VPcGFjaXR5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHb29nbGVNYXBFbnVtLlNUUk9LRV9PUEFDSVRZXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2VpZ2h0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlLnN0cm9rZVdlaWdodCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdvb2dsZU1hcEVudW0uU1RST0tFX1dFSUdIVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25zOiByb3V0ZS5pc0Rhc2hlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKHJvdXRlLmRhc2hlZExpbmVTdHlsZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwT3B0aW9uc0NvbnN0YW50cy5yb3V0aW5nRGFzaGVkTGluZUljb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uc1JlbmRlcmVyLnNldERpcmVjdGlvbnMocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uc1JlbmRlcmVycy5wdXNoKGRpcmVjdGlvbnNSZW5kZXJlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERpcmVjdGlvbnNPbk1hcCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZXNldE1hcmtlcnNJY29ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXBEYXRhLm1hcmtlcnM/Lm1hcCgobWFya2VyOiBJTWFwTWFya2VycywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWFya2VySWNvbiA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICcjbWFya2VyLScgKyBtYXJrZXIuaWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobWFya2VySWNvbilcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uLFxuICAgICAgICAgICAgICAgICAgICBNYXBNYXJrZXJTdHJpbmdFbnVtLlNFTEVDVEVEXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuaXNNYXJrZXJEcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5tYXJrZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogeyB6SW5kZXg6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5tYXBEYXRhLmNsdXN0ZXJNYXJrZXJzPy5tYXAoXG4gICAgICAgICAgICAoY2x1c3Rlck1hcmtlcjogSU1hcE1hcmtlcnMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbHVzdGVySWQgPSB0aGlzLmdldENsdXN0ZXJJZChjbHVzdGVyTWFya2VyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXJrZXJJY29uID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICcjY2x1c3Rlci0nICsgY2x1c3RlcklkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAobWFya2VySWNvbilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXBNYXJrZXJTdHJpbmdFbnVtLlNFTEVDVEVEXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NsdXN0ZXJEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25NYXBSZWFkeShtYXBJbnN0YW5jZTogZ29vZ2xlLm1hcHMuTWFwKToge1xuICAgICAgICBmaWxsQ29sb3I/OiBzdHJpbmc7XG4gICAgICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgICAgICBzdHJva2VXZWlnaHQ/OiBudW1iZXI7XG4gICAgICAgIGZpbGxPcGFjaXR5PzogbnVtYmVyO1xuICAgIH0gfCB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXAgPSBtYXBJbnN0YW5jZTtcblxuICAgICAgICBpZiAodGhpcy5tYXBEYXRhPy5kYXJrTW9kZSkge1xuICAgICAgICAgICAgY29uc3Qgc3R5bGVkTWFwVHlwZSA9IG5ldyBnb29nbGUubWFwcy5TdHlsZWRNYXBUeXBlKFxuICAgICAgICAgICAgICAgIE1hcENvbnN0YW50cy5HT09HTEVfTUFQX0RBUktfU1RZTEVTXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5tYXAhLm1hcFR5cGVzLnNldChHb29nbGVNYXBFbnVtLkRBUktfTUFQLCBzdHlsZWRNYXBUeXBlKTtcbiAgICAgICAgICAgIHRoaXMubWFwIS5zZXRNYXBUeXBlSWQoR29vZ2xlTWFwRW51bS5EQVJLX01BUCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXBEYXRhLnN0YXRlQm91bmRhcmllc1VybCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGVCb3VuZGFyaWVzVXJsID0gdGhpcy5tYXBEYXRhLnN0YXRlQm91bmRhcmllc1VybC51cmw7XG4gICAgICAgICAgICB0aGlzLm1hcHMuZ29vZ2xlTWFwPy5kYXRhLmxvYWRHZW9Kc29uKHN0YXRlQm91bmRhcmllc1VybCk7XG5cbiAgICAgICAgICAgIHRoaXMubWFwcy5nb29nbGVNYXA/LmRhdGEuc2V0U3R5bGUoKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZURlbnNpdHkgPSBmZWF0dXJlLmdldFByb3BlcnR5KCdkZW5zaXR5Jyk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmaWxsQ29sb3IsIGZpbGxPcGFjaXR5IH0gPVxuICAgICAgICAgICAgICAgICAgICBNYXBIZWxwZXIuZ2V0RmlsbENvbG9yRm9yU3RhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZURlbnNpdHkgYXMgbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBEYXRhLnZpZXcgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6IGZpbGxDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlQ29sb3I6ICcjRUVFRUVFJyxcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2VpZ2h0OiAwLjYsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiBmaWxsT3BhY2l0eSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbmRCb3VuZHNDaGFuZ2VkRXZlbnQoKTtcbiAgICAgICAgdGhpcy5zZXRNYXBTdHlsZXMoKTtcbiAgICAgICAgdGhpcy5nZXRNYXBJZGxlRXZlbnQobWFwSW5zdGFuY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNYXBTdHlsZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1hcERhdGE/LmRhcmtNb2RlKVxuICAgICAgICAgICAgdGhpcy5tYXBPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMubWFwT3B0aW9ucyxcbiAgICAgICAgICAgICAgICBzdHlsZXM6IE1hcENvbnN0YW50cy5HT09HTEVfTUFQX0RBUktfU1RZTEVTLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBhbGxNYXJrZXJzQ29tYmluZWQgPSBbXG4gICAgICAgICAgICAuLi4odGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzID8/IFtdKSxcbiAgICAgICAgICAgIC4uLih0aGlzLm1hcERhdGEuY2x1c3Rlck1hcmtlcnMgPz8gW10pLFxuICAgICAgICAgICAgLi4uKHRoaXMubWFwRGF0YS5tYXJrZXJzID8/IFtdKSxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoYWxsTWFya2Vyc0NvbWJpbmVkPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcENlbnRlckFuZEJvdW5kcyA9XG4gICAgICAgICAgICAgICAgTWFwSGVscGVyLmdldE1hcENlbnRlckFuZFpvb20oYWxsTWFya2Vyc0NvbWJpbmVkKTtcblxuICAgICAgICAgICAgdGhpcy5tYXAhLnBhblRvKG1hcENlbnRlckFuZEJvdW5kcy5tYXBDZW50ZXIpO1xuICAgICAgICAgICAgaWYgKG1hcENlbnRlckFuZEJvdW5kcy5ib3VuZHMpXG4gICAgICAgICAgICAgICAgdGhpcy5tYXA/LmZpdEJvdW5kcyhtYXBDZW50ZXJBbmRCb3VuZHMuYm91bmRzKTtcbiAgICAgICAgICAgIGlmIChtYXBDZW50ZXJBbmRCb3VuZHMubWFwWm9vbSlcbiAgICAgICAgICAgICAgICB0aGlzLm1hcD8uc2V0Wm9vbShtYXBDZW50ZXJBbmRCb3VuZHMubWFwWm9vbSk7XG5cbiAgICAgICAgICAgIHRoaXMuaXNNYXBDZW50ZXJTZXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1hcElkbGVFdmVudChtYXA6IGdvb2dsZS5tYXBzLk1hcCk6IHZvaWQge1xuICAgICAgICBtYXAuYWRkTGlzdGVuZXIoJ2lkbGUnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbmRCb3VuZHNDaGFuZ2VkRXZlbnQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbmRCb3VuZHNDaGFuZ2VkRXZlbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1hcCkge1xuICAgICAgICAgICAgY29uc3QgbWFwQm91bmRzID0gdGhpcy5tYXAuZ2V0Qm91bmRzKCk7XG4gICAgICAgICAgICBjb25zdCBtYXBab29tID0gdGhpcy5tYXAuZ2V0Wm9vbSgpO1xuXG4gICAgICAgICAgICBpZiAobWFwQm91bmRzICYmIG1hcFpvb20pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBib3VuZHNPYmplY3QgPSB7IGJvdW5kczogbWFwQm91bmRzLCB6b29tOiBtYXBab29tIH07XG4gICAgICAgICAgICAgICAgdGhpcy5ib3VuZHNDaGFuZ2VkLmVtaXQoYm91bmRzT2JqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsdXN0ZXJCYWNrQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRTZWxlY3RlZE1hcmtlckl0ZW0uZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3Blbk1hcmtlckluZm9XaW5kb3cobWFya2VySXRlbTogSU1hcFNlbGVjdGVkTWFya2VyRGF0YSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpc0luZm9XaW5kb3dPcGVuZWQgPSB0aGlzLmNoZWNrSW5mb1dpbmRvd1Bvc2l0aW9uKFxuICAgICAgICAgICAgbWFya2VySXRlbSxcbiAgICAgICAgICAgIHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGFcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb21iaW5lZE1hcmtlcnMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLm1hcERhdGEubWFya2VycyEsXG4gICAgICAgICAgICAuLi50aGlzLm1hcERhdGEuY2x1c3Rlck1hcmtlcnMhLFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbWJpbmVkTWFya2Vycy5mb3JFYWNoKChpdGVtOiBJTWFwTWFya2VycywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZE1hcmtlciA9IHRoaXMuY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICBtYXJrZXJJdGVtXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBpc0NsdXN0ZXJNYXJrZXIgPSBpdGVtPy5kYXRhPy5jb3VudCA+IDE7XG5cbiAgICAgICAgICAgIGNvbnN0IGNsdXN0ZXJJZCA9IGlzQ2x1c3Rlck1hcmtlciA/IHRoaXMuZ2V0Q2x1c3RlcklkKGl0ZW0pIDogbnVsbDtcblxuICAgICAgICAgICAgY29uc3QgbWFya2VySWNvbklkID0gaXNDbHVzdGVyTWFya2VyXG4gICAgICAgICAgICAgICAgPyAnI2NsdXN0ZXItJyArIGNsdXN0ZXJJZFxuICAgICAgICAgICAgICAgIDogJyNtYXJrZXItJyArIGl0ZW0uaWQ7XG5cbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudCA9IGlzQ2x1c3Rlck1hcmtlclxuICAgICAgICAgICAgICAgID8gdGhpcy5jbHVzdGVyRHJvcGRvd24ubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgIDogdGhpcy5tYXJrZXJEcm9wZG93bi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoaXNTZWxlY3RlZE1hcmtlcikge1xuICAgICAgICAgICAgICAgIGl0ZW0ub3B0aW9ucyA9IHsgekluZGV4OiA5OTkgfTtcblxuICAgICAgICAgICAgICAgIGlmIChpc0NsdXN0ZXJNYXJrZXIpIHRoaXMuaXNNYXJrZXJEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBlbHNlIHRoaXMuaXNDbHVzdGVyRHJvcGRvd25PcGVuID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5vcGVuRHJvcGRvd25UaW1lb3V0KTtcblxuICAgICAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJrZXJJY29uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKG1hcmtlckljb25JZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEobWFya2VySWNvbj8ucHJldmlvdXNTaWJsaW5nID09PSBkcm9wZG93bkVsZW1lbnQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VySWNvbj8ucGFyZW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wZG93bkVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VySWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhbWFya2VySWNvbi5jbGFzc0xpc3Q/LmNvbnRhaW5zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcE1hcmtlclN0cmluZ0VudW0uU0VMRUNURURcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcE1hcmtlclN0cmluZ0VudW0uU0VMRUNURURcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc01hcmtlckRyb3Bkb3duT3BlbiA9ICFpc0NsdXN0ZXJNYXJrZXI7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDbHVzdGVyRHJvcGRvd25PcGVuID0gaXNDbHVzdGVyTWFya2VyO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0sIDUwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFya2VySWNvbiA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKG1hcmtlckljb25JZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIG1hcmtlckljb24/LmNsYXNzTGlzdD8uY29udGFpbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXBNYXJrZXJTdHJpbmdFbnVtLlNFTEVDVEVEXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ub3B0aW9ucyA9IHsgekluZGV4OiBpbmRleCArIDEgfTtcbiAgICAgICAgICAgICAgICB9LCA1MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaXNDdXJyZW50bHlPcGVuV2luZG93ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YSA9IG1hcmtlckl0ZW07XG5cbiAgICAgICAgaWYgKCFpc0luZm9XaW5kb3dPcGVuZWQpIHRoaXMubWFwIS5wYW5UbyhtYXJrZXJJdGVtLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICAgIG1hcmtlckl0ZW06IElNYXBNYXJrZXJzLFxuICAgICAgICBtYXJrZXJJdGVtMj86IElNYXBNYXJrZXJzIHwgbnVsbFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgbWFya2VySXRlbS5wb3NpdGlvbi5sYXQgPT09IG1hcmtlckl0ZW0yPy5wb3NpdGlvbj8ubGF0ICYmXG4gICAgICAgICAgICBtYXJrZXJJdGVtLnBvc2l0aW9uLmxuZyA9PT0gbWFya2VySXRlbTI/LnBvc2l0aW9uPy5sbmdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2VJbmZvV2luZG93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2V0TWFya2Vyc0ljb25zKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YSA9IG51bGwpLCAyNTApO1xuXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm9wZW5Ecm9wZG93blRpbWVvdXQpO1xuICAgICAgICB0aGlzLmlzTWFya2VyRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNDbHVzdGVyRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNDdXJyZW50bHlPcGVuV2luZG93ID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVzZXRTZWxlY3RlZE1hcmtlckl0ZW0uZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVNYXBEYXRhKG5ld0RhdGE6IElDYU1hcFByb3BzKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFwRGF0YSA9IHsgLi4ubmV3RGF0YSB9O1xuXG4gICAgICAgIGlmICh0aGlzLm1hcERhdGEuc2VsZWN0ZWRNYXJrZXJEYXRhKVxuICAgICAgICAgICAgdGhpcy5vcGVuTWFya2VySW5mb1dpbmRvdyh0aGlzLm1hcERhdGEuc2VsZWN0ZWRNYXJrZXJEYXRhKTtcblxuICAgICAgICBpZiAobmV3RGF0YSAmJiAhdGhpcy5pc01hcENlbnRlclNldCAmJiB0aGlzLm1hcCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG5ld0RhdGEubWFya2Vycz8ubGVuZ3RoIHx8XG4gICAgICAgICAgICAgICAgbmV3RGF0YS5jbHVzdGVyTWFya2Vycz8ubGVuZ3RoIHx8XG4gICAgICAgICAgICAgICAgbmV3RGF0YS5yb3V0aW5nTWFya2Vycz8ubGVuZ3RoXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNYXBTdHlsZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc3BsYXkgcm91dGVzIGZvciByb3V0aW5nTWFya2Vyc1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZUFuZERpc3BsYXlSb3V0ZSgpO1xuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDbHVzdGVySWQoY2x1c3RlckRhdGE6IElNYXBNYXJrZXJzKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNsdXN0ZXJJZCA9IHRoaXMuY2x1c3Rlck1hcmtlcklkcy5maW5kKFxuICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgY2x1c3RlckRhdGEucG9zaXRpb24ubGF0ID09PSBpdGVtLnBvc2l0aW9uLmxhdCAmJlxuICAgICAgICAgICAgICAgIGNsdXN0ZXJEYXRhLnBvc2l0aW9uLmxuZyA9PT0gaXRlbS5wb3NpdGlvbi5sbmdcbiAgICAgICAgKT8uaWQ7XG5cbiAgICAgICAgcmV0dXJuIGNsdXN0ZXJJZCB8fCBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSb3V0aW5nSWQobWFya2VyRGF0YTogSU1hcE1hcmtlcnMpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgY29uc3Qgcm91dGluZ0lkID0gdGhpcy5yb3V0aW5nTWFya2VySWRzLmZpbmQoXG4gICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICBtYXJrZXJEYXRhLnBvc2l0aW9uLmxhdCA9PT0gaXRlbS5wb3NpdGlvbi5sYXQgJiZcbiAgICAgICAgICAgICAgICBtYXJrZXJEYXRhLnBvc2l0aW9uLmxuZyA9PT0gaXRlbS5wb3NpdGlvbi5sbmdcbiAgICAgICAgKT8uaWQ7XG5cbiAgICAgICAgcmV0dXJuIHJvdXRpbmdJZCB8fCBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsdXN0ZXJMaXN0U2Nyb2xsVG9FbmQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhKVxuICAgICAgICAgICAgdGhpcy5jbHVzdGVyTGlzdFNjcm9sbEV2ZW50LmVtaXQodGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uWm9vbUNoYW5nZShpc01pbnVzQ2xpY2s/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRab29tTGV2ZWwgPSB0aGlzLm1hcD8uZ2V0Wm9vbSgpO1xuXG4gICAgICAgIGlmIChjdXJyZW50Wm9vbUxldmVsKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0Wm9vbUxldmVsID0gaXNNaW51c0NsaWNrXG4gICAgICAgICAgICAgICAgPyBjdXJyZW50Wm9vbUxldmVsIC0gMVxuICAgICAgICAgICAgICAgIDogY3VycmVudFpvb21MZXZlbCArIDE7XG4gICAgICAgICAgICB0aGlzLm1hcD8uc2V0Wm9vbShuZXh0Wm9vbUxldmVsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbk9wZW5Jbk1hcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuSW5NYXBFdmVudC5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlcnZpY2VEYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1hcmtlckljb25TZXJ2aWNlLmNsdXN0ZXJNYXJrZXJJZHMkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjbHVzdGVySWRzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbHVzdGVyTWFya2VySWRzID0gY2x1c3RlcklkcztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubWFya2VySWNvblNlcnZpY2Uucm91dGluZ01hcmtlcklkcyRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJvdXRpbmdJZHMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdNYXJrZXJJZHMgPSByb3V0aW5nSWRzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYWNrQnlJZChpbmRleDogbnVtYmVyLCBtYXJrZXI6IElNYXBNYXJrZXJzKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIG1hcmtlci5kYXRhLmlkO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5UG9zaXRpb24oaW5kZXg6IG51bWJlciwgbWFya2VyOiBJTWFwTWFya2Vycyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBtYXJrZXIucG9zaXRpb24ubGF0ICsgbWFya2VyLnBvc2l0aW9uLmxuZztcbiAgICB9XG5cbiAgICBwdWJsaWMgaWRlbnRpdHkoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kaXJlY3Rpb25zUmVuZGVyZXJzLmZvckVhY2goKHJlbmRlcmVyKSA9PiByZW5kZXJlci5zZXRNYXAobnVsbCkpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxnb29nbGUtbWFwXG4gICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gICAgW2NsYXNzLmRhcmstbW9kZS1tYXBdPVwibWFwRGF0YS5kYXJrTW9kZVwiXG4gICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgd2lkdGg9XCIxMDAlXCJcbiAgICBbem9vbV09XCJtYXBab29tXCJcbiAgICBbY2VudGVyXT1cIm1hcENlbnRlclwiXG4gICAgW29wdGlvbnNdPVwibWFwT3B0aW9uc1wiXG4gICAgKG1hcEluaXRpYWxpemVkKT1cIm9uTWFwUmVhZHkoJGV2ZW50KVwiXG4gICAgW21hcElkXT1cIm1hcFN0eWxlSWRcIlxuPlxuICAgIEBmb3IgKG1hcmtlciBvZiBtYXBEYXRhLm1hcmtlcnM7IGxldCBpID0gJGluZGV4OyB0cmFjayBtYXJrZXIuZGF0YS5pZCkge1xuICAgICAgICA8bWFwLWFkdmFuY2VkLW1hcmtlclxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cIm1hcmtlci5wb3NpdGlvblwiXG4gICAgICAgICAgICBbY29udGVudF09XCJtYXJrZXIuY29udGVudFwiXG4gICAgICAgICAgICBbekluZGV4XT1cIlxuICAgICAgICAgICAgICAgIG9wZW5lZEluZm9XaW5kb3dEYXRhPy5kYXRhPy5pZCA9PT0gbWFya2VyLmRhdGEuaWQgPyA5OTkgOiBpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKG1hcENsaWNrKT1cIm9uTWFya2VyQ2xpY2sobWFya2VyKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9tYXAtYWR2YW5jZWQtbWFya2VyPlxuICAgIH1cblxuICAgIDxkaXZcbiAgICAgICAgI21hcmtlckRyb3Bkb3duXG4gICAgICAgIGNsYXNzPVwibWFya2VyLWRyb3Bkb3duIGRyb3Bkb3duLWhpZGRlblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Ryb3Bkb3duLWhpZGRlbic6ICFpc01hcmtlckRyb3Bkb3duT3BlbiB9XCJcbiAgICA+XG4gICAgICAgIDxhcHAtY2EtbWFwLWRyb3Bkb3duXG4gICAgICAgICAgICBbaW5mb1dpbmRvd0NvbnRlbnRdPVwiXG4gICAgICAgICAgICAgICAgIWlzQ2x1c3RlckRyb3Bkb3duT3BlblxuICAgICAgICAgICAgICAgICAgICA/IG9wZW5lZEluZm9XaW5kb3dEYXRhPy5pbmZvV2luZG93Q29udGVudFxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbWFya2VyRGF0YV09XCJvcGVuZWRJbmZvV2luZG93RGF0YT8uZGF0YVwiXG4gICAgICAgICAgICAob25DbHVzdGVySXRlbUNsaWNrKT1cImdldE1hcmtlckluZm9XaW5kb3coJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kKT1cIm9uQ2x1c3Rlckxpc3RTY3JvbGxUb0VuZCgpXCJcbiAgICAgICAgICAgIChvbkJhY2tCdXR0b25DbGljayk9XCJvbkNsdXN0ZXJCYWNrQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgID48L2FwcC1jYS1tYXAtZHJvcGRvd24+XG4gICAgPC9kaXY+XG5cbiAgICBAZm9yIChcbiAgICAgICAgY2x1c3Rlck1hcmtlciBvZiBtYXBEYXRhLmNsdXN0ZXJNYXJrZXJzO1xuICAgICAgICBsZXQgaSA9ICRpbmRleDtcbiAgICAgICAgdHJhY2sgdHJhY2tCeVBvc2l0aW9uKCRpbmRleCwgY2x1c3Rlck1hcmtlcilcbiAgICApIHtcbiAgICAgICAgPG1hcC1hZHZhbmNlZC1tYXJrZXJcbiAgICAgICAgICAgIFtwb3NpdGlvbl09XCJjbHVzdGVyTWFya2VyLnBvc2l0aW9uXCJcbiAgICAgICAgICAgIFtjb250ZW50XT1cImNsdXN0ZXJNYXJrZXIuY29udGVudFwiXG4gICAgICAgICAgICBbekluZGV4XT1cIlxuICAgICAgICAgICAgICAgIGNoZWNrSW5mb1dpbmRvd1Bvc2l0aW9uKGNsdXN0ZXJNYXJrZXIsIG9wZW5lZEluZm9XaW5kb3dEYXRhKVxuICAgICAgICAgICAgICAgICAgICA/IDk5OVxuICAgICAgICAgICAgICAgICAgICA6IGlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAobWFwQ2xpY2spPVwib25DbHVzdGVyTWFya2VyQ2xpY2soY2x1c3Rlck1hcmtlcilcIlxuICAgICAgICA+XG4gICAgICAgIDwvbWFwLWFkdmFuY2VkLW1hcmtlcj5cbiAgICB9XG5cbiAgICA8ZGl2XG4gICAgICAgICNjbHVzdGVyRHJvcGRvd25cbiAgICAgICAgY2xhc3M9XCJtYXJrZXItZHJvcGRvd24gY2x1c3Rlci1kcm9wZG93biBkcm9wZG93bi1oaWRkZW5cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdkcm9wZG93bi1oaWRkZW4nOiAhaXNDbHVzdGVyRHJvcGRvd25PcGVuIH1cIlxuICAgID5cbiAgICAgICAgPGFwcC1jYS1tYXAtZHJvcGRvd25cbiAgICAgICAgICAgIFtpbmZvV2luZG93Q29udGVudF09XCJcbiAgICAgICAgICAgICAgICAhaXNNYXJrZXJEcm9wZG93bk9wZW5cbiAgICAgICAgICAgICAgICAgICAgPyBvcGVuZWRJbmZvV2luZG93RGF0YT8uaW5mb1dpbmRvd0NvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW21hcmtlckRhdGFdPVwib3BlbmVkSW5mb1dpbmRvd0RhdGE/LmRhdGFcIlxuICAgICAgICAgICAgKG9uQ2x1c3Rlckl0ZW1DbGljayk9XCJnZXRNYXJrZXJJbmZvV2luZG93KCRldmVudClcIlxuICAgICAgICAgICAgKG9uQ2x1c3Rlckxpc3RTY3JvbGxUb0VuZCk9XCJvbkNsdXN0ZXJMaXN0U2Nyb2xsVG9FbmQoKVwiXG4gICAgICAgICAgICAob25CYWNrQnV0dG9uQ2xpY2spPVwib25DbHVzdGVyQmFja0J1dHRvbkNsaWNrKClcIlxuICAgICAgICA+PC9hcHAtY2EtbWFwLWRyb3Bkb3duPlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0FyZWFGaWx0ZXJBY3RpdmUpIHtcbiAgICAgICAgPG1hcC1jaXJjbGVcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImFyZWFGaWx0ZXJEYXRhLm9wdGlvbnNcIlxuICAgICAgICAgICAgW2NlbnRlcl09XCJhcmVhRmlsdGVyRGF0YS5jZW50ZXJcIlxuICAgICAgICAgICAgW3JhZGl1c109XCJhcmVhRmlsdGVyRGF0YS5yYWRpdXNcIlxuICAgICAgICA+PC9tYXAtY2lyY2xlPlxuICAgIH1cblxuICAgIEBmb3IgKFxuICAgICAgICByb3V0aW5nTWFya2VyIG9mIG1hcERhdGEucm91dGluZ01hcmtlcnM7XG4gICAgICAgIGxldCBpID0gJGluZGV4O1xuICAgICAgICB0cmFjayB0cmFja0J5UG9zaXRpb24oJGluZGV4LCByb3V0aW5nTWFya2VyKVxuICAgICkge1xuICAgICAgICA8bWFwLWFkdmFuY2VkLW1hcmtlclxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cInJvdXRpbmdNYXJrZXIucG9zaXRpb25cIlxuICAgICAgICAgICAgW2NvbnRlbnRdPVwicm91dGluZ01hcmtlci5jb250ZW50XCJcbiAgICAgICAgPlxuICAgICAgICA8L21hcC1hZHZhbmNlZC1tYXJrZXI+XG4gICAgfVxuXG4gICAgQGlmIChtYXBEYXRhLmlzT3BlbkluTWFwU2hvd24pIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJvcGVuLWluLW1hcC1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgIG1haW5DYVRvb2x0aXA9XCJPcGVuIGluIE1hcFwiXG4gICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZD1cIiM0MjQyNDJcIlxuICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uT3BlbkluTWFwKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2NhLWNvbXBvbmVudHMvc3ZnL2NvbW1vbi9pY19sb2NhdGlvbl9tYXAuc3ZnXCJcbiAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxOCwgJ2hlaWdodC5weCc6IDE4IH1cIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAobWFwRGF0YS5pc1pvb21TaG93bikge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1hcC16b29tLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtZW5kIGdhcC0xXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnZmxleC1jb2x1bW4nOiAhbWFwRGF0YS5pc1ZlcnRpY2FsWm9vbSxcbiAgICAgICAgICAgICAgICAndmVydGljYWwtem9vbS1idXR0b25zJzogbWFwRGF0YS5pc1ZlcnRpY2FsWm9vbSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXAtem9vbS1idXR0b25zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LWNvbHVtbl09XCJtYXBEYXRhLmlzVmVydGljYWxab29tXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiem9vbS1idXR0b24tY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LTFcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25ab29tQ2hhbmdlKHRydWUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2NhLWNvbXBvbmVudHMvc3ZnL3BvcHVwL01pbnVzLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxNCwgJ2hlaWdodC5weCc6IDE0IH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiem9vbS1idXR0b24tY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LTFcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25ab29tQ2hhbmdlKGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9jYS1jb21wb25lbnRzL3N2Zy9jb21tb24vaWNfcGx1cy5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTQsICdoZWlnaHQucHgnOiAxNCB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXAtem9vbS1yYW5nZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWxpbmVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtdGV4dCBjYS1mb250LW1lZGl1bVwiPjUwIG1pPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWxpbmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2dvb2dsZS1tYXA+XG4iXX0=
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW1hcC9jYS1tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwL2NhLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLFVBQVU7QUFDVixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsYUFBYTtBQUNiLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTNGLFFBQVE7QUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBWTlDLFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFL0QsWUFBWTtBQUNaLE9BQU8sRUFBRSxtQkFBbUIsRUFB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QUFJOzBLQVdJLElBQUk7c0JBQTVDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDVixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDRyxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFFZixJQUFJO3NCQUFoQixLQUFLO2dCQUlJLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbi8vIE1vZHVsZXNcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JUb29sdGlwTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgR29vZ2xlTWFwLCBHb29nbGVNYXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZ29vZ2xlLW1hcHMnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYU1hcERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtbWFwLWRyb3Bkb3duL2NhLW1hcC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBFbnVtc1xuaW1wb3J0IHsgR29vZ2xlTWFwRW51bSB9IGZyb20gJy4uL2NhLW1hcC9lbnVtcy9nb29nbGUtbWFwLmVudW0nO1xuaW1wb3J0IHsgTWFwTWFya2VyU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMnO1xuXG4vLyBNb2RlbHNcbmltcG9ydCB7XG4gICAgSU1hcE1hcmtlcnMsXG4gICAgSUNhTWFwUHJvcHMsXG4gICAgSU1hcE9wdGlvbnMsXG4gICAgSVJvdXRlUGF0aCxcbiAgICBJTWFwQm91bmRzWm9vbSxcbiAgICBJTWFwU2VsZWN0ZWRNYXJrZXJEYXRhLFxufSBmcm9tICcuLi9jYS1tYXAvbW9kZWxzJztcblxuLy8gSGVscGVyc1xuaW1wb3J0IHsgTWFwSGVscGVyIH0gZnJvbSAnLi4vY2EtbWFwL3V0aWxzL2hlbHBlcnMvbWFwLmhlbHBlcic7XG5cbi8vIENvbnN0YW50c1xuaW1wb3J0IHsgTWFwT3B0aW9uc0NvbnN0YW50cywgTWFwQ29uc3RhbnRzIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnO1xuXG4vLyBTZXJ2aWNlc1xuaW1wb3J0IHsgTWFwTWFya2VySWNvblNlcnZpY2UgfSBmcm9tICcuL3V0aWxzL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtY2EtbWFwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYS1tYXAuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlc1xuICAgICAgICBHb29nbGVNYXBzTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBOZ2JUb29sdGlwTW9kdWxlLFxuXG4gICAgICAgIC8vIENvbXBvbmVudHNcbiAgICAgICAgQ2FNYXBEcm9wZG93bkNvbXBvbmVudCxcbiAgICAgICAgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQsXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBDYU1hcENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcblxuICAgICAgICAvLyBTZXJ2aWNlc1xuICAgICAgICBwcml2YXRlIG1hcmtlckljb25TZXJ2aWNlOiBNYXBNYXJrZXJJY29uU2VydmljZVxuICAgICkge31cbiAgICBAVmlld0NoaWxkKEdvb2dsZU1hcCwgeyBzdGF0aWM6IGZhbHNlIH0pIG1hcHMhOiBHb29nbGVNYXA7XG4gICAgQFZpZXdDaGlsZCgnbWFya2VyRHJvcGRvd24nKSBtYXJrZXJEcm9wZG93biE6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnY2x1c3RlckRyb3Bkb3duJykgY2x1c3RlckRyb3Bkb3duITogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpIHNldCBkYXRhKHZhbHVlczogSUNhTWFwUHJvcHMpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVNYXBEYXRhKHZhbHVlcyk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHJlc2V0U2VsZWN0ZWRNYXJrZXJJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBjbHVzdGVyTWFya2VyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElNYXBNYXJrZXJzPigpO1xuICAgIEBPdXRwdXQoKSBjbHVzdGVyTGlzdFNjcm9sbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFwTWFya2Vycz4oKTtcbiAgICBAT3V0cHV0KCkgZ2V0SW5mb1dpbmRvd0RhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCkgYm91bmRzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hcEJvdW5kc1pvb20+KCk7XG4gICAgQE91dHB1dCgpIG9wZW5Jbk1hcEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwdWJsaWMgZGlyZWN0aW9uc1JlbmRlcmVyczogZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1JlbmRlcmVyW10gPSBbXTtcblxuICAgIHB1YmxpYyBtYXBPcHRpb25zOiBJTWFwT3B0aW9ucyA9IE1hcE9wdGlvbnNDb25zdGFudHMuZGVmYXVsdE1hcE9wdGlvbnM7XG4gICAgcHVibGljIG1hcFpvb206IG51bWJlciA9IE1hcE9wdGlvbnNDb25zdGFudHMuZGVmYXVsdE1hcFpvb207XG4gICAgcHVibGljIG1hcENlbnRlcjogSVJvdXRlUGF0aCA9IE1hcE9wdGlvbnNDb25zdGFudHMuZGVmYXVsdE1hcENlbnRlcjtcbiAgICBwdWJsaWMgbWFwOiBnb29nbGUubWFwcy5NYXAgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgbWFwU3R5bGVJZDogc3RyaW5nID0gJ2Q2ODE5MDRhMzkwYTg0MDInO1xuICAgIHB1YmxpYyBtYXBEYXRhOiBJQ2FNYXBQcm9wcyA9IHt9O1xuXG4gICAgcHVibGljIG9wZW5lZEluZm9XaW5kb3dEYXRhOiBJTWFwTWFya2VycyB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBhcmVhRmlsdGVyRGF0YSA9IE1hcE9wdGlvbnNDb25zdGFudHMuYXJlYUZpbHRlckRhdGE7XG5cbiAgICBwdWJsaWMgY2x1c3Rlck1hcmtlcklkczogSU1hcE1hcmtlcnNbXSA9IFtdO1xuICAgIHB1YmxpYyByb3V0aW5nTWFya2VySWRzOiBJTWFwTWFya2Vyc1tdID0gW107XG4gICAgcHVibGljIHJvdXRlUG9seWxpbmVzOiBnb29nbGUubWFwcy5Qb2x5bGluZU9wdGlvbnNbXSA9IFtdO1xuXG4gICAgcHVibGljIGlzTWFya2VyRHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzQ2x1c3RlckRyb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0N1cnJlbnRseU9wZW5XaW5kb3c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNNYXBDZW50ZXJTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNBcmVhRmlsdGVyQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgb3BlbkRyb3Bkb3duVGltZW91dDogTm9kZUpTLlRpbWVvdXQgfCBudW1iZXIgPSAwO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIFJlc2V0IGFsbCBpY29ucyB0byB0aGVpciBpbml0aWFsIHN0YXRlIG9uIHBhZ2UgbG9hZFxuICAgICAgICB0aGlzLnJlc2V0TWFya2Vyc0ljb25zKCk7XG5cbiAgICAgICAgdGhpcy5nZXRTZXJ2aWNlRGF0YSgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5tYXBzLmdvb2dsZU1hcD8uYWRkTGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2x1c3Rlck1hcmtlckNsaWNrKG1hcmtlckl0ZW06IElNYXBNYXJrZXJzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzSW5mb1dpbmRvd09wZW5lZCA9IHRoaXMuY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICAgICAgICBtYXJrZXJJdGVtLFxuICAgICAgICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghaXNJbmZvV2luZG93T3BlbmVkKSB0aGlzLmNsdXN0ZXJNYXJrZXJDbGljay5lbWl0KG1hcmtlckl0ZW0pO1xuICAgICAgICBlbHNlIHRoaXMuY2xvc2VJbmZvV2luZG93KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1hcmtlckluZm9XaW5kb3cobWFya2VySWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAobWFya2VySWQpIHRoaXMuZ2V0SW5mb1dpbmRvd0RhdGEuZW1pdChtYXJrZXJJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWFya2VyQ2xpY2sobWFya2VySXRlbTogSU1hcE1hcmtlcnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNJbmZvV2luZG93T3BlbmVkID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihcbiAgICAgICAgICAgIG1hcmtlckl0ZW0sXG4gICAgICAgICAgICB0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFpc0luZm9XaW5kb3dPcGVuZWQpIHRoaXMuZ2V0TWFya2VySW5mb1dpbmRvdyhtYXJrZXJJdGVtLmRhdGEuaWQpO1xuICAgICAgICBlbHNlIHRoaXMuY2xvc2VJbmZvV2luZG93KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpcmVjdGlvbnNPbk1hcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWFwcz8uZ29vZ2xlTWFwKSB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbnNSZW5kZXJlcnMuZm9yRWFjaCgocmVuZGVyZXIpID0+XG4gICAgICAgICAgICAgICAgcmVuZGVyZXIuc2V0TWFwKHRoaXMubWFwcz8uZ29vZ2xlTWFwISlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlQW5kRGlzcGxheVJvdXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYXBEYXRhLnJvdXRlUGF0aHMpIHtcbiAgICAgICAgICAgIC8vIENsZWFyIHByZXZpb3VzIGRpcmVjdGlvbnMgcmVuZGVyZXJzXG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbnNSZW5kZXJlcnMuZm9yRWFjaCgocmVuZGVyZXIpID0+XG4gICAgICAgICAgICAgICAgcmVuZGVyZXIuc2V0TWFwKG51bGwpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb25zUmVuZGVyZXJzID0gW107XG5cbiAgICAgICAgICAgIHRoaXMucm91dGVQb2x5bGluZXMgPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5tYXBEYXRhLnJvdXRlUGF0aHMhLmZvckVhY2goKHJvdXRlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZS5kZWNvZGVkU2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9seUxpbmVDb29yZGluYXRlcyA9IHJvdXRlLmRlY29kZWRTaGFwZT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0OiBpdGVtLmxhdGl0dWRlISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG5nOiBpdGVtLmxvbmdpdHVkZSEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm91dGVQb2x5bGluZTogZ29vZ2xlLm1hcHMuUG9seWxpbmVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogcG9seUxpbmVDb29yZGluYXRlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdlb2Rlc2ljOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlQ29sb3I6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGUuc3Ryb2tlQ29sb3IgfHwgR29vZ2xlTWFwRW51bS5TVFJPS0VfQ09MT1IsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VPcGFjaXR5OiAhcm91dGUuaXNEYXNoZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHJvdXRlLnN0cm9rZU9wYWNpdHkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdvb2dsZU1hcEVudW0uU1RST0tFX09QQUNJVFlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXZWlnaHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGUuc3Ryb2tlV2VpZ2h0IHx8IEdvb2dsZU1hcEVudW0uU1RST0tFX1dFSUdIVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25zOiByb3V0ZS5pc0Rhc2hlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKHJvdXRlLmRhc2hlZExpbmVTdHlsZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwT3B0aW9uc0NvbnN0YW50cy5yb3V0aW5nRGFzaGVkTGluZUljb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlUG9seWxpbmVzLnB1c2gocm91dGVQb2x5bGluZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRNYXJrZXJzSWNvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFwRGF0YS5tYXJrZXJzPy5tYXAoKG1hcmtlcjogSU1hcE1hcmtlcnMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmtlckljb24gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICAnI21hcmtlci0nICsgbWFya2VyLmlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1hcmtlckljb24pXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICAgICAgbWFya2VySWNvbixcbiAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmlzTWFya2VyRHJvcGRvd25PcGVuID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4ubWFya2VyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgekluZGV4OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubWFwRGF0YS5jbHVzdGVyTWFya2Vycz8ubWFwKFxuICAgICAgICAgICAgKGNsdXN0ZXJNYXJrZXI6IElNYXBNYXJrZXJzLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2x1c3RlcklkID0gdGhpcy5nZXRDbHVzdGVySWQoY2x1c3Rlck1hcmtlcik7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFya2VySWNvbiA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAnI2NsdXN0ZXItJyArIGNsdXN0ZXJJZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKG1hcmtlckljb24pXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDbHVzdGVyRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWFwUmVhZHkobWFwSW5zdGFuY2U6IGdvb2dsZS5tYXBzLk1hcCk6IHtcbiAgICAgICAgZmlsbENvbG9yPzogc3RyaW5nO1xuICAgICAgICBzdHJva2VDb2xvcj86IHN0cmluZztcbiAgICAgICAgc3Ryb2tlV2VpZ2h0PzogbnVtYmVyO1xuICAgICAgICBmaWxsT3BhY2l0eT86IG51bWJlcjtcbiAgICB9IHwgdm9pZCB7XG4gICAgICAgIHRoaXMubWFwID0gbWFwSW5zdGFuY2U7XG5cbiAgICAgICAgaWYgKHRoaXMubWFwRGF0YT8uZGFya01vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlZE1hcFR5cGUgPSBuZXcgZ29vZ2xlLm1hcHMuU3R5bGVkTWFwVHlwZShcbiAgICAgICAgICAgICAgICBNYXBDb25zdGFudHMuR09PR0xFX01BUF9EQVJLX1NUWUxFU1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMubWFwIS5tYXBUeXBlcy5zZXQoR29vZ2xlTWFwRW51bS5EQVJLX01BUCwgc3R5bGVkTWFwVHlwZSk7XG4gICAgICAgICAgICB0aGlzLm1hcCEuc2V0TWFwVHlwZUlkKEdvb2dsZU1hcEVudW0uREFSS19NQVApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWFwRGF0YS5zdGF0ZUJvdW5kYXJpZXNVcmwpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlQm91bmRhcmllc1VybCA9IHRoaXMubWFwRGF0YS5zdGF0ZUJvdW5kYXJpZXNVcmwudXJsO1xuICAgICAgICAgICAgdGhpcy5tYXBzLmdvb2dsZU1hcD8uZGF0YS5sb2FkR2VvSnNvbihzdGF0ZUJvdW5kYXJpZXNVcmwpO1xuXG4gICAgICAgICAgICB0aGlzLm1hcHMuZ29vZ2xlTWFwPy5kYXRhLnNldFN0eWxlKChmZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVEZW5zaXR5ID0gZmVhdHVyZS5nZXRQcm9wZXJ0eSgnZGVuc2l0eScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsbENvbG9yLCBmaWxsT3BhY2l0eSB9ID1cbiAgICAgICAgICAgICAgICAgICAgTWFwSGVscGVyLmdldEZpbGxDb2xvckZvclN0YXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVEZW5zaXR5IGFzIG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwRGF0YS52aWV3IHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiBmaWxsQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZUNvbG9yOiAnI0VFRUVFRScsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZVdlaWdodDogMC42LFxuICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogZmlsbE9wYWNpdHksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZW5kQm91bmRzQ2hhbmdlZEV2ZW50KCk7XG4gICAgICAgIHRoaXMuc2V0TWFwU3R5bGVzKCk7XG4gICAgICAgIHRoaXMuZ2V0TWFwSWRsZUV2ZW50KG1hcEluc3RhbmNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TWFwU3R5bGVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYXBEYXRhPy5kYXJrTW9kZSlcbiAgICAgICAgICAgIHRoaXMubWFwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1hcE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgc3R5bGVzOiBNYXBDb25zdGFudHMuR09PR0xFX01BUF9EQVJLX1NUWUxFUyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYWxsTWFya2Vyc0NvbWJpbmVkID0gW1xuICAgICAgICAgICAgLi4uKHRoaXMubWFwRGF0YS5yb3V0aW5nTWFya2VycyA/PyBbXSksXG4gICAgICAgICAgICAuLi4odGhpcy5tYXBEYXRhLmNsdXN0ZXJNYXJrZXJzID8/IFtdKSxcbiAgICAgICAgICAgIC4uLih0aGlzLm1hcERhdGEubWFya2VycyA/PyBbXSksXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKGFsbE1hcmtlcnNDb21iaW5lZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBDZW50ZXJBbmRCb3VuZHMgPVxuICAgICAgICAgICAgICAgIE1hcEhlbHBlci5nZXRNYXBDZW50ZXJBbmRab29tKGFsbE1hcmtlcnNDb21iaW5lZCk7XG5cbiAgICAgICAgICAgIHRoaXMubWFwIS5wYW5UbyhtYXBDZW50ZXJBbmRCb3VuZHMubWFwQ2VudGVyKTtcbiAgICAgICAgICAgIGlmIChtYXBDZW50ZXJBbmRCb3VuZHMuYm91bmRzKVxuICAgICAgICAgICAgICAgIHRoaXMubWFwPy5maXRCb3VuZHMobWFwQ2VudGVyQW5kQm91bmRzLmJvdW5kcyk7XG4gICAgICAgICAgICBpZiAobWFwQ2VudGVyQW5kQm91bmRzLm1hcFpvb20pXG4gICAgICAgICAgICAgICAgdGhpcy5tYXA/LnNldFpvb20obWFwQ2VudGVyQW5kQm91bmRzLm1hcFpvb20pO1xuXG4gICAgICAgICAgICB0aGlzLmlzTWFwQ2VudGVyU2V0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNYXBJZGxlRXZlbnQobWFwOiBnb29nbGUubWFwcy5NYXApOiB2b2lkIHtcbiAgICAgICAgbWFwLmFkZExpc3RlbmVyKCdpZGxlJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZW5kQm91bmRzQ2hhbmdlZEV2ZW50KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kQm91bmRzQ2hhbmdlZEV2ZW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcEJvdW5kcyA9IHRoaXMubWFwLmdldEJvdW5kcygpO1xuICAgICAgICAgICAgY29uc3QgbWFwWm9vbSA9IHRoaXMubWFwLmdldFpvb20oKTtcblxuICAgICAgICAgICAgaWYgKG1hcEJvdW5kcyAmJiBtYXBab29tKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYm91bmRzT2JqZWN0ID0geyBib3VuZHM6IG1hcEJvdW5kcywgem9vbTogbWFwWm9vbSB9O1xuICAgICAgICAgICAgICAgIHRoaXMuYm91bmRzQ2hhbmdlZC5lbWl0KGJvdW5kc09iamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbHVzdGVyQmFja0J1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2V0U2VsZWN0ZWRNYXJrZXJJdGVtLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5NYXJrZXJJbmZvV2luZG93KG1hcmtlckl0ZW06IElNYXBTZWxlY3RlZE1hcmtlckRhdGEpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNJbmZvV2luZG93T3BlbmVkID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihcbiAgICAgICAgICAgIG1hcmtlckl0ZW0sXG4gICAgICAgICAgICB0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY29tYmluZWRNYXJrZXJzID0gW1xuICAgICAgICAgICAgLi4udGhpcy5tYXBEYXRhLm1hcmtlcnMhLFxuICAgICAgICAgICAgLi4udGhpcy5tYXBEYXRhLmNsdXN0ZXJNYXJrZXJzISxcbiAgICAgICAgXTtcblxuICAgICAgICBjb21iaW5lZE1hcmtlcnMuZm9yRWFjaCgoaXRlbTogSU1hcE1hcmtlcnMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWRNYXJrZXIgPSB0aGlzLmNoZWNrSW5mb1dpbmRvd1Bvc2l0aW9uKFxuICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgbWFya2VySXRlbVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgaXNDbHVzdGVyTWFya2VyID0gaXRlbT8uZGF0YT8uY291bnQgPiAxO1xuXG4gICAgICAgICAgICBjb25zdCBjbHVzdGVySWQgPSBpc0NsdXN0ZXJNYXJrZXIgPyB0aGlzLmdldENsdXN0ZXJJZChpdGVtKSA6IG51bGw7XG5cbiAgICAgICAgICAgIGNvbnN0IG1hcmtlckljb25JZCA9IGlzQ2x1c3Rlck1hcmtlclxuICAgICAgICAgICAgICAgID8gJyNjbHVzdGVyLScgKyBjbHVzdGVySWRcbiAgICAgICAgICAgICAgICA6ICcjbWFya2VyLScgKyBpdGVtLmlkO1xuXG4gICAgICAgICAgICBjb25zdCBkcm9wZG93bkVsZW1lbnQgPSBpc0NsdXN0ZXJNYXJrZXJcbiAgICAgICAgICAgICAgICA/IHRoaXMuY2x1c3RlckRyb3Bkb3duLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgICAgICA6IHRoaXMubWFya2VyRHJvcGRvd24ubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWRNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBpdGVtLm9wdGlvbnMgPSB7IHpJbmRleDogOTk5IH07XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNDbHVzdGVyTWFya2VyKSB0aGlzLmlzTWFya2VyRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLmlzQ2x1c3RlckRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMub3BlbkRyb3Bkb3duVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93blRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFya2VySWNvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihtYXJrZXJJY29uSWQpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghKG1hcmtlckljb24/LnByZXZpb3VzU2libGluZyA9PT0gZHJvcGRvd25FbGVtZW50KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckljb24/LnBhcmVudE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25FbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VySWNvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIW1hcmtlckljb24uY2xhc3NMaXN0Py5jb250YWlucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBNYXJrZXJTdHJpbmdFbnVtLlNFTEVDVEVEXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VySWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBNYXJrZXJTdHJpbmdFbnVtLlNFTEVDVEVEXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNNYXJrZXJEcm9wZG93bk9wZW4gPSAhaXNDbHVzdGVyTWFya2VyO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ2x1c3RlckRyb3Bkb3duT3BlbiA9IGlzQ2x1c3Rlck1hcmtlcjtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LCA1MCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcmtlckljb24gPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihtYXJrZXJJY29uSWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uPy5jbGFzc0xpc3Q/LmNvbnRhaW5zKFxuICAgICAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VySWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIE1hcE1hcmtlclN0cmluZ0VudW0uU0VMRUNURURcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLm9wdGlvbnMgPSB7IHpJbmRleDogaW5kZXggKyAxIH07XG4gICAgICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmlzQ3VycmVudGx5T3BlbldpbmRvdyA9IHRydWU7XG4gICAgICAgIHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEgPSBtYXJrZXJJdGVtO1xuXG4gICAgICAgIGlmICghaXNJbmZvV2luZG93T3BlbmVkKSB0aGlzLm1hcCEucGFuVG8obWFya2VySXRlbS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrSW5mb1dpbmRvd1Bvc2l0aW9uKFxuICAgICAgICBtYXJrZXJJdGVtOiBJTWFwTWFya2VycyxcbiAgICAgICAgbWFya2VySXRlbTI/OiBJTWFwTWFya2VycyB8IG51bGxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIG1hcmtlckl0ZW0ucG9zaXRpb24ubGF0ID09PSBtYXJrZXJJdGVtMj8ucG9zaXRpb24/LmxhdCAmJlxuICAgICAgICAgICAgbWFya2VySXRlbS5wb3NpdGlvbi5sbmcgPT09IG1hcmtlckl0ZW0yPy5wb3NpdGlvbj8ubG5nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlSW5mb1dpbmRvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldE1hcmtlcnNJY29ucygpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEgPSBudWxsKSwgMjUwKTtcblxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5vcGVuRHJvcGRvd25UaW1lb3V0KTtcbiAgICAgICAgdGhpcy5pc01hcmtlckRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ2x1c3RlckRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ3VycmVudGx5T3BlbldpbmRvdyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlc2V0U2VsZWN0ZWRNYXJrZXJJdGVtLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlTWFwRGF0YShuZXdEYXRhOiBJQ2FNYXBQcm9wcyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1hcERhdGEgPSB7IC4uLm5ld0RhdGEgfTtcblxuICAgICAgICBpZiAodGhpcy5tYXBEYXRhLnNlbGVjdGVkTWFya2VyRGF0YSlcbiAgICAgICAgICAgIHRoaXMub3Blbk1hcmtlckluZm9XaW5kb3codGhpcy5tYXBEYXRhLnNlbGVjdGVkTWFya2VyRGF0YSk7XG5cbiAgICAgICAgaWYgKG5ld0RhdGEgJiYgIXRoaXMuaXNNYXBDZW50ZXJTZXQgJiYgdGhpcy5tYXApIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBuZXdEYXRhLm1hcmtlcnM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgICAgIG5ld0RhdGEuY2x1c3Rlck1hcmtlcnM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgICAgIG5ld0RhdGEucm91dGluZ01hcmtlcnM/Lmxlbmd0aFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TWFwU3R5bGVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNwbGF5IHJvdXRlcyBmb3Igcm91dGluZ01hcmtlcnNcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVBbmREaXNwbGF5Um91dGUoKTtcblxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2x1c3RlcklkKGNsdXN0ZXJEYXRhOiBJTWFwTWFya2Vycyk6IG51bWJlciB8IG51bGwge1xuICAgICAgICBjb25zdCBjbHVzdGVySWQgPSB0aGlzLmNsdXN0ZXJNYXJrZXJJZHMuZmluZChcbiAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICAgIGNsdXN0ZXJEYXRhLnBvc2l0aW9uLmxhdCA9PT0gaXRlbS5wb3NpdGlvbi5sYXQgJiZcbiAgICAgICAgICAgICAgICBjbHVzdGVyRGF0YS5wb3NpdGlvbi5sbmcgPT09IGl0ZW0ucG9zaXRpb24ubG5nXG4gICAgICAgICk/LmlkO1xuXG4gICAgICAgIHJldHVybiBjbHVzdGVySWQgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Um91dGluZ0lkKG1hcmtlckRhdGE6IElNYXBNYXJrZXJzKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHJvdXRpbmdJZCA9IHRoaXMucm91dGluZ01hcmtlcklkcy5maW5kKFxuICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgbWFya2VyRGF0YS5wb3NpdGlvbi5sYXQgPT09IGl0ZW0ucG9zaXRpb24ubGF0ICYmXG4gICAgICAgICAgICAgICAgbWFya2VyRGF0YS5wb3NpdGlvbi5sbmcgPT09IGl0ZW0ucG9zaXRpb24ubG5nXG4gICAgICAgICk/LmlkO1xuXG4gICAgICAgIHJldHVybiByb3V0aW5nSWQgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YSlcbiAgICAgICAgICAgIHRoaXMuY2x1c3Rlckxpc3RTY3JvbGxFdmVudC5lbWl0KHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblpvb21DaGFuZ2UoaXNNaW51c0NsaWNrPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50Wm9vbUxldmVsID0gdGhpcy5tYXA/LmdldFpvb20oKTtcblxuICAgICAgICBpZiAoY3VycmVudFpvb21MZXZlbCkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFpvb21MZXZlbCA9IGlzTWludXNDbGlja1xuICAgICAgICAgICAgICAgID8gY3VycmVudFpvb21MZXZlbCAtIDFcbiAgICAgICAgICAgICAgICA6IGN1cnJlbnRab29tTGV2ZWwgKyAxO1xuICAgICAgICAgICAgdGhpcy5tYXA/LnNldFpvb20obmV4dFpvb21MZXZlbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25PcGVuSW5NYXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbkluTWFwRXZlbnQuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTZXJ2aWNlRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXJrZXJJY29uU2VydmljZS5jbHVzdGVyTWFya2VySWRzJFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY2x1c3RlcklkcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2x1c3Rlck1hcmtlcklkcyA9IGNsdXN0ZXJJZHM7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1hcmtlckljb25TZXJ2aWNlLnJvdXRpbmdNYXJrZXJJZHMkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyb3V0aW5nSWRzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nTWFya2VySWRzID0gcm91dGluZ0lkcztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgbWFya2VyOiBJTWFwTWFya2Vycyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBtYXJrZXIuZGF0YS5pZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhY2tCeVBvc2l0aW9uKGluZGV4OiBudW1iZXIsIG1hcmtlcjogSU1hcE1hcmtlcnMpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gbWFya2VyLnBvc2l0aW9uLmxhdCArIG1hcmtlci5wb3NpdGlvbi5sbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGlkZW50aXR5KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uc1JlbmRlcmVycy5mb3JFYWNoKChyZW5kZXJlcikgPT4gcmVuZGVyZXIuc2V0TWFwKG51bGwpKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8Z29vZ2xlLW1hcFxuICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIlxuICAgIFtjbGFzcy5kYXJrLW1vZGUtbWFwXT1cIm1hcERhdGEuZGFya01vZGVcIlxuICAgIGhlaWdodD1cIjEwMCVcIlxuICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgW3pvb21dPVwibWFwWm9vbVwiXG4gICAgW2NlbnRlcl09XCJtYXBDZW50ZXJcIlxuICAgIFtvcHRpb25zXT1cIm1hcE9wdGlvbnNcIlxuICAgIChtYXBJbml0aWFsaXplZCk9XCJvbk1hcFJlYWR5KCRldmVudClcIlxuICAgIFttYXBJZF09XCJtYXBTdHlsZUlkXCJcbj5cbiAgICBAZm9yIChtYXJrZXIgb2YgbWFwRGF0YS5tYXJrZXJzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgbWFya2VyLmRhdGEuaWQpIHtcbiAgICAgICAgPG1hcC1hZHZhbmNlZC1tYXJrZXJcbiAgICAgICAgICAgIFtwb3NpdGlvbl09XCJtYXJrZXIucG9zaXRpb25cIlxuICAgICAgICAgICAgW2NvbnRlbnRdPVwibWFya2VyLmNvbnRlbnRcIlxuICAgICAgICAgICAgW3pJbmRleF09XCJcbiAgICAgICAgICAgICAgICBvcGVuZWRJbmZvV2luZG93RGF0YT8uZGF0YT8uaWQgPT09IG1hcmtlci5kYXRhLmlkID8gOTk5IDogaVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChtYXBDbGljayk9XCJvbk1hcmtlckNsaWNrKG1hcmtlcilcIlxuICAgICAgICA+XG4gICAgICAgIDwvbWFwLWFkdmFuY2VkLW1hcmtlcj5cbiAgICB9XG5cbiAgICA8ZGl2XG4gICAgICAgICNtYXJrZXJEcm9wZG93blxuICAgICAgICBjbGFzcz1cIm1hcmtlci1kcm9wZG93biBkcm9wZG93bi1oaWRkZW5cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdkcm9wZG93bi1oaWRkZW4nOiAhaXNNYXJrZXJEcm9wZG93bk9wZW4gfVwiXG4gICAgPlxuICAgICAgICA8YXBwLWNhLW1hcC1kcm9wZG93blxuICAgICAgICAgICAgW2luZm9XaW5kb3dDb250ZW50XT1cIlxuICAgICAgICAgICAgICAgICFpc0NsdXN0ZXJEcm9wZG93bk9wZW5cbiAgICAgICAgICAgICAgICAgICAgPyBvcGVuZWRJbmZvV2luZG93RGF0YT8uaW5mb1dpbmRvd0NvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW21hcmtlckRhdGFdPVwib3BlbmVkSW5mb1dpbmRvd0RhdGE/LmRhdGFcIlxuICAgICAgICAgICAgKG9uQ2x1c3Rlckl0ZW1DbGljayk9XCJnZXRNYXJrZXJJbmZvV2luZG93KCRldmVudClcIlxuICAgICAgICAgICAgKG9uQ2x1c3Rlckxpc3RTY3JvbGxUb0VuZCk9XCJvbkNsdXN0ZXJMaXN0U2Nyb2xsVG9FbmQoKVwiXG4gICAgICAgICAgICAob25CYWNrQnV0dG9uQ2xpY2spPVwib25DbHVzdGVyQmFja0J1dHRvbkNsaWNrKClcIlxuICAgICAgICA+PC9hcHAtY2EtbWFwLWRyb3Bkb3duPlxuICAgIDwvZGl2PlxuXG4gICAgQGZvciAoXG4gICAgICAgIGNsdXN0ZXJNYXJrZXIgb2YgbWFwRGF0YS5jbHVzdGVyTWFya2VycztcbiAgICAgICAgbGV0IGkgPSAkaW5kZXg7XG4gICAgICAgIHRyYWNrIHRyYWNrQnlQb3NpdGlvbigkaW5kZXgsIGNsdXN0ZXJNYXJrZXIpXG4gICAgKSB7XG4gICAgICAgIDxtYXAtYWR2YW5jZWQtbWFya2VyXG4gICAgICAgICAgICBbcG9zaXRpb25dPVwiY2x1c3Rlck1hcmtlci5wb3NpdGlvblwiXG4gICAgICAgICAgICBbY29udGVudF09XCJjbHVzdGVyTWFya2VyLmNvbnRlbnRcIlxuICAgICAgICAgICAgW3pJbmRleF09XCJcbiAgICAgICAgICAgICAgICBjaGVja0luZm9XaW5kb3dQb3NpdGlvbihjbHVzdGVyTWFya2VyLCBvcGVuZWRJbmZvV2luZG93RGF0YSlcbiAgICAgICAgICAgICAgICAgICAgPyA5OTlcbiAgICAgICAgICAgICAgICAgICAgOiBpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKG1hcENsaWNrKT1cIm9uQ2x1c3Rlck1hcmtlckNsaWNrKGNsdXN0ZXJNYXJrZXIpXCJcbiAgICAgICAgPlxuICAgICAgICA8L21hcC1hZHZhbmNlZC1tYXJrZXI+XG4gICAgfVxuXG4gICAgQGZvciAocm91dGUgb2Ygcm91dGVQb2x5bGluZXM7IGxldCBpID0gJGluZGV4OyB0cmFjayBpKSB7XG4gICAgICAgIDxtYXAtcG9seWxpbmUgW29wdGlvbnNdPVwicm91dGVcIj48L21hcC1wb2x5bGluZT5cbiAgICB9XG5cbiAgICA8ZGl2XG4gICAgICAgICNjbHVzdGVyRHJvcGRvd25cbiAgICAgICAgY2xhc3M9XCJtYXJrZXItZHJvcGRvd24gY2x1c3Rlci1kcm9wZG93biBkcm9wZG93bi1oaWRkZW5cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdkcm9wZG93bi1oaWRkZW4nOiAhaXNDbHVzdGVyRHJvcGRvd25PcGVuIH1cIlxuICAgID5cbiAgICAgICAgPGFwcC1jYS1tYXAtZHJvcGRvd25cbiAgICAgICAgICAgIFtpbmZvV2luZG93Q29udGVudF09XCJcbiAgICAgICAgICAgICAgICAhaXNNYXJrZXJEcm9wZG93bk9wZW5cbiAgICAgICAgICAgICAgICAgICAgPyBvcGVuZWRJbmZvV2luZG93RGF0YT8uaW5mb1dpbmRvd0NvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW21hcmtlckRhdGFdPVwib3BlbmVkSW5mb1dpbmRvd0RhdGE/LmRhdGFcIlxuICAgICAgICAgICAgKG9uQ2x1c3Rlckl0ZW1DbGljayk9XCJnZXRNYXJrZXJJbmZvV2luZG93KCRldmVudClcIlxuICAgICAgICAgICAgKG9uQ2x1c3Rlckxpc3RTY3JvbGxUb0VuZCk9XCJvbkNsdXN0ZXJMaXN0U2Nyb2xsVG9FbmQoKVwiXG4gICAgICAgICAgICAob25CYWNrQnV0dG9uQ2xpY2spPVwib25DbHVzdGVyQmFja0J1dHRvbkNsaWNrKClcIlxuICAgICAgICA+PC9hcHAtY2EtbWFwLWRyb3Bkb3duPlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0FyZWFGaWx0ZXJBY3RpdmUpIHtcbiAgICAgICAgPG1hcC1jaXJjbGVcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImFyZWFGaWx0ZXJEYXRhLm9wdGlvbnNcIlxuICAgICAgICAgICAgW2NlbnRlcl09XCJhcmVhRmlsdGVyRGF0YS5jZW50ZXJcIlxuICAgICAgICAgICAgW3JhZGl1c109XCJhcmVhRmlsdGVyRGF0YS5yYWRpdXNcIlxuICAgICAgICA+PC9tYXAtY2lyY2xlPlxuICAgIH1cblxuICAgIEBmb3IgKFxuICAgICAgICByb3V0aW5nTWFya2VyIG9mIG1hcERhdGEucm91dGluZ01hcmtlcnM7XG4gICAgICAgIGxldCBpID0gJGluZGV4O1xuICAgICAgICB0cmFjayB0cmFja0J5UG9zaXRpb24oJGluZGV4LCByb3V0aW5nTWFya2VyKVxuICAgICkge1xuICAgICAgICA8bWFwLWFkdmFuY2VkLW1hcmtlclxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cInJvdXRpbmdNYXJrZXIucG9zaXRpb25cIlxuICAgICAgICAgICAgW2NvbnRlbnRdPVwicm91dGluZ01hcmtlci5jb250ZW50XCJcbiAgICAgICAgPlxuICAgICAgICA8L21hcC1hZHZhbmNlZC1tYXJrZXI+XG4gICAgfVxuXG4gICAgQGlmIChtYXBEYXRhLmlzT3BlbkluTWFwU2hvd24pIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJvcGVuLWluLW1hcC1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgIG1haW5DYVRvb2x0aXA9XCJPcGVuIGluIE1hcFwiXG4gICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZD1cIiM0MjQyNDJcIlxuICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uT3BlbkluTWFwKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2NhLWNvbXBvbmVudHMvc3ZnL2NvbW1vbi9pY19sb2NhdGlvbl9tYXAuc3ZnXCJcbiAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxOCwgJ2hlaWdodC5weCc6IDE4IH1cIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAobWFwRGF0YS5pc1pvb21TaG93bikge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1hcC16b29tLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtZW5kIGdhcC0xXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnZmxleC1jb2x1bW4nOiAhbWFwRGF0YS5pc1ZlcnRpY2FsWm9vbSxcbiAgICAgICAgICAgICAgICAndmVydGljYWwtem9vbS1idXR0b25zJzogbWFwRGF0YS5pc1ZlcnRpY2FsWm9vbSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXAtem9vbS1idXR0b25zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LWNvbHVtbl09XCJtYXBEYXRhLmlzVmVydGljYWxab29tXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiem9vbS1idXR0b24tY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LTFcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25ab29tQ2hhbmdlKHRydWUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2NhLWNvbXBvbmVudHMvc3ZnL3BvcHVwL01pbnVzLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxNCwgJ2hlaWdodC5weCc6IDE0IH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiem9vbS1idXR0b24tY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LTFcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25ab29tQ2hhbmdlKGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9jYS1jb21wb25lbnRzL3N2Zy9jb21tb24vaWNfcGx1cy5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTQsICdoZWlnaHQucHgnOiAxNCB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXAtem9vbS1yYW5nZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWxpbmVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtdGV4dCBjYS1mb250LW1lZGl1bVwiPjUwIG1pPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWxpbmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2dvb2dsZS1tYXA+XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './map.model';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1tYXAvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYXAubW9kZWwnO1xuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwL21vZGVscy9tYXAubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hcERyb3Bkb3duQ29udGVudCB9IGZyb20gJy4uLy4uL2NhLW1hcC1kcm9wZG93bi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZVBhdGgge1xuICAgIGxhdDogbnVtYmVyO1xuICAgIGxuZzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBJUm91dGVMb2NhdGlvbiB7XG4gICAgbGF0aXR1ZGU/OiBudW1iZXIgfCBudWxsO1xuICAgIGxvbmdpdHVkZT86IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNhTWFwUHJvcHMge1xuICAgIGNsdXN0ZXJNYXJrZXJzPzogSU1hcE1hcmtlcnNbXTtcbiAgICByb3V0aW5nTWFya2Vycz86IElNYXBNYXJrZXJzW107XG4gICAgcm91dGVQYXRocz86IElNYXBSb3V0ZVBhdGhbXTtcbiAgICBzZWxlY3RlZE1hcmtlckRhdGE/OiBJTWFwU2VsZWN0ZWRNYXJrZXJEYXRhO1xuICAgIGlzQWNjaWRlbnRNYXA/OiBib29sZWFuO1xuICAgIHN0YXRlQm91bmRhcmllc1VybD86IHsgdXJsOiBzdHJpbmcgfTtcbiAgICBtYXJrZXJzPzogSU1hcE1hcmtlcnNbXTtcbiAgICB2aWV3Pzogc3RyaW5nO1xuICAgIGlzVW5pdFZpZXdTdG9wcz86IGJvb2xlYW47XG4gICAgaXNEcml2ZXJNaWxlcz86IGJvb2xlYW47XG4gICAgbWFwVHlwZT86IHN0cmluZztcbiAgICBkYXJrTW9kZT86IGJvb2xlYW47XG4gICAgaXNab29tU2hvd24/OiBib29sZWFuO1xuICAgIGlzVmVydGljYWxab29tPzogYm9vbGVhbjtcbiAgICBpc09wZW5Jbk1hcFNob3duPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWFwT3B0aW9ucyB7XG4gICAgZnVsbHNjcmVlbkNvbnRyb2w6IGJvb2xlYW47XG4gICAgZGlzYWJsZURlZmF1bHRVSTogYm9vbGVhbjtcbiAgICByZXN0cmljdGlvbjoge1xuICAgICAgICBsYXRMbmdCb3VuZHM6IHtcbiAgICAgICAgICAgIG5vcnRoOiBudW1iZXI7XG4gICAgICAgICAgICBzb3V0aDogbnVtYmVyO1xuICAgICAgICAgICAgZWFzdDogbnVtYmVyO1xuICAgICAgICAgICAgd2VzdDogbnVtYmVyO1xuICAgICAgICB9O1xuICAgICAgICBzdHJpY3RCb3VuZHM6IGJvb2xlYW47XG4gICAgfTtcbiAgICBzdHJlZXRWaWV3Q29udHJvbDogYm9vbGVhbjtcbiAgICBzdHlsZXM/OiBJTWFwU3R5bGVzW107XG4gICAga2V5Ym9hcmRTaG9ydGN1dHM6IGJvb2xlYW47XG4gICAgcGFuQ29udHJvbDogYm9vbGVhbjtcbiAgICBnZXN0dXJlSGFuZGxpbmc6IHN0cmluZztcbiAgICBtYXBUeXBlQ29udHJvbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hcFN0eWxlcyB7XG4gICAgZWxlbWVudFR5cGU/OiBzdHJpbmcgfCBudWxsO1xuICAgIGZlYXR1cmVUeXBlPzogc3RyaW5nIHwgbnVsbDtcbiAgICBzdHlsZXJzOiBJTWFwQ29sb3JbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWFwQ29sb3Ige1xuICAgIGNvbG9yPzogc3RyaW5nO1xuICAgIHZpc2liaWxpdHk/OiBzdHJpbmc7XG4gICAgd2VpZ2h0PzogbnVtYmVyO1xuICAgIHNhdHVyYXRpb24/OiBudW1iZXI7XG4gICAgbGlnaHRuZXNzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXBNYXJrZXJzIHtcbiAgICBwb3NpdGlvbjogSVJvdXRlUGF0aDtcbiAgICBpY29uPzogSU1hcE1hcmtlcnNJY29uO1xuICAgIGluZm9XaW5kb3dDb250ZW50PzogTWFwRHJvcGRvd25Db250ZW50O1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGxhYmVsT3JpZ2luPzogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xuICAgIGRhdGE/OiBhbnk7XG4gICAgb3B0aW9ucz86IHsgekluZGV4PzogbnVtYmVyIH07XG4gICAgaXNMYXJnZU1hcmtlcj86IGJvb2xlYW47XG4gICAgaXNGYXZvcml0ZT86IGJvb2xlYW47XG4gICAgaXNDbG9zZWQ/OiBib29sZWFuO1xuICAgIGlzU2hvd0xhYmVsT25Ib3Zlcj86IGJvb2xlYW47XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgY29udGVudD86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWFwTWFya2Vyc0ljb24ge1xuICAgIHVybDogc3RyaW5nO1xuICAgIGxhYmVsT3JpZ2luPzogZ29vZ2xlLm1hcHMuUG9pbnQ7XG4gICAgc2NhbGVkU2l6ZT86IGdvb2dsZS5tYXBzLlNpemU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hcmtlckxhYmVsIHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgZm9udFNpemU/OiBzdHJpbmc7XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gICAgZm9udFdlaWdodD86IHN0cmluZztcbiAgICBpc1Nob3dPbkhvdmVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWFwUm91dGVQYXRoIHtcbiAgICBwYXRoOiBJUm91dGVQYXRoW107XG4gICAgZGVjb2RlZFNoYXBlPzogSVJvdXRlTG9jYXRpb25bXTtcbiAgICBzdHJva2VDb2xvcjogc3RyaW5nO1xuICAgIHN0cm9rZU9wYWNpdHk/OiBudW1iZXI7XG4gICAgc3Ryb2tlV2VpZ2h0PzogbnVtYmVyO1xuICAgIGlzRGFzaGVkPzogYm9vbGVhbjtcbiAgICBkYXNoZWRMaW5lU3R5bGU/OiBJTWFwRGFzaGVkUm91dGVTdHlsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXBCb3VuZHNab29tIHtcbiAgICBib3VuZHM6IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcztcbiAgICB6b29tOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hcFNlbGVjdGVkTWFya2VyRGF0YSBleHRlbmRzIElNYXBNYXJrZXJzIHtcbiAgICBpc0NsdXN0ZXJNYXJrZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXBEYXNoZWRSb3V0ZVN0eWxlIHtcbiAgICBpY29uOiBJTWFwRGFzaGVkUm91dGVJY29uO1xuICAgIG9mZnNldDogc3RyaW5nO1xuICAgIHJlcGVhdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXBEYXNoZWRSb3V0ZUljb24ge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBzdHJva2VPcGFjaXR5OiBudW1iZXI7XG4gICAgc3Ryb2tlQ29sb3I6IHN0cmluZztcbiAgICBzY2FsZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXBQYWdpbmF0aW9uIHtcbiAgICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYXBCb3VuZHMge1xuICAgIG5vcnRoRWFzdExhdGl0dWRlOiBudW1iZXI7XG4gICAgbm9ydGhFYXN0TG9uZ2l0dWRlOiBudW1iZXI7XG4gICAgc291dGhXZXN0TGF0aXR1ZGU6IG51bWJlcjtcbiAgICBzb3V0aFdlc3RMb25naXR1ZGU6IG51bWJlcjtcbiAgICB6b29tTGV2ZWw6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWFwTGlzdCB7XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBpZD86IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './map-info-window-options.constants';
|
|
2
2
|
export * from './map-options.constants';
|
|
3
3
|
export * from './map-marker-icons.constants';
|
|
4
|
-
|
|
4
|
+
export * from './map.constants';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1tYXAvdXRpbHMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21hcC1pbmZvLXdpbmRvdy1vcHRpb25zLmNvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL21hcC1vcHRpb25zLmNvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL21hcC1tYXJrZXItaWNvbnMuY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwLmNvbnN0YW50cyc7XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Constants
|
|
2
|
-
import { MapConstants } from '
|
|
2
|
+
import { MapConstants } from './map.constants';
|
|
3
3
|
export class MapOptionsConstants {
|
|
4
4
|
static { this.defaultMapOptions = {
|
|
5
5
|
fullscreenControl: false,
|
|
@@ -76,4 +76,4 @@ export class MapOptionsConstants {
|
|
|
76
76
|
light: '#EEEEEE',
|
|
77
77
|
}; }
|
|
78
78
|
}
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLW9wdGlvbnMuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwL3V0aWxzL2NvbnN0YW50cy9tYXAtb3B0aW9ucy5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsWUFBWTtBQUNaLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxNQUFNLE9BQU8sbUJBQW1CO2FBQ3JCLHNCQUFpQixHQUFnQjtRQUNwQyxpQkFBaUIsRUFBRSxLQUFLO1FBQ3hCLFdBQVcsRUFBRTtZQUNULFlBQVksRUFBRSxZQUFZLENBQUMsb0JBQW9CO1lBQy9DLFlBQVksRUFBRSxJQUFJO1NBQ3JCO1FBQ0QsaUJBQWlCLEVBQUUsS0FBSztRQUN4QixpQkFBaUIsRUFBRSxLQUFLO1FBQ3hCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLGVBQWUsRUFBRSxRQUFRO1FBQ3pCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLGdCQUFnQixFQUFFLElBQUk7S0FDekIsQ0FBQzthQUVLLHFCQUFnQixHQUFnQjtRQUNuQyxPQUFPLEVBQUUsRUFBRTtRQUNYLGNBQWMsRUFBRSxFQUFFO1FBQ2xCLGNBQWMsRUFBRSxFQUFFO0tBQ3JCLENBQUM7YUFFSyxtQkFBYyxHQUFXLENBQUMsQ0FBQzthQUUzQixxQkFBZ0IsR0FBZSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7YUFFbkUsc0JBQWlCLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFFakQsb0JBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUUvQyxzQkFBaUIsR0FHcEIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQzthQUU1QixtQkFBYyxHQUFHO1FBQ3BCLE9BQU8sRUFBRTtZQUNMLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFlBQVksRUFBRSxDQUFDO1lBQ2YsV0FBVyxFQUFFLEdBQUc7WUFDaEIsUUFBUSxFQUFFLEtBQUs7WUFDZixTQUFTLEVBQUUsS0FBSztZQUNoQixTQUFTLEVBQUUsS0FBSztTQUNuQjtRQUNELE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFO1FBQzNDLE1BQU0sRUFBRSxNQUFNO0tBQ2pCLENBQUM7YUFFSyw0QkFBdUIsR0FBRztRQUM3QixNQUFNLEVBQUUsU0FBUztRQUNqQixRQUFRLEVBQUUsU0FBUztRQUNuQixRQUFRLEVBQUUsU0FBUztLQUN0QixDQUFDO2FBRUssNkJBQXdCLEdBQUc7UUFDOUIsTUFBTSxFQUFFLFNBQVM7UUFDakIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsUUFBUSxFQUFFLFNBQVM7S0FDdEIsQ0FBQzthQUVLLHNCQUFpQixHQUFHO1FBQ3ZCLGVBQWUsRUFBRSxTQUFTO1FBQzFCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUM7YUFFSywwQkFBcUIsR0FBRztRQUMzQixJQUFJLEVBQUUsaUNBQWlDO1FBQ3ZDLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLEtBQUssRUFBRSxDQUFDO0tBQ1gsQ0FBQzthQUVLLDBCQUFxQixHQUFHO1FBQzNCO1lBQ0ksSUFBSSxFQUFFLElBQUksQ0FBQyxxQkFBcUI7WUFDaEMsTUFBTSxFQUFFLEdBQUc7WUFDWCxNQUFNLEVBQUUsTUFBTTtTQUNqQjtLQUNKLENBQUM7YUFFSywrQkFBMEIsR0FBRztRQUNoQyxNQUFNLEVBQUUsU0FBUztRQUNqQixRQUFRLEVBQUUsU0FBUztRQUNuQixRQUFRLEVBQUUsU0FBUztRQUNuQixLQUFLLEVBQUUsU0FBUztLQUNuQixDQUFDO2FBRUssMkJBQXNCLEdBQUc7UUFDNUIsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsU0FBUztLQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTW9kZWxzXG5pbXBvcnQgeyBJQ2FNYXBQcm9wcywgSU1hcE9wdGlvbnMsIElSb3V0ZVBhdGggfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG4vLyBDb25zdGFudHNcbmltcG9ydCB7IE1hcENvbnN0YW50cyB9IGZyb20gJy4vbWFwLmNvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBNYXBPcHRpb25zQ29uc3RhbnRzIHtcbiAgICBzdGF0aWMgZGVmYXVsdE1hcE9wdGlvbnM6IElNYXBPcHRpb25zID0ge1xuICAgICAgICBmdWxsc2NyZWVuQ29udHJvbDogZmFsc2UsXG4gICAgICAgIHJlc3RyaWN0aW9uOiB7XG4gICAgICAgICAgICBsYXRMbmdCb3VuZHM6IE1hcENvbnN0YW50cy5OT1JUSF9BTUVSSUNBX0JPVU5EUyxcbiAgICAgICAgICAgIHN0cmljdEJvdW5kczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RyZWV0Vmlld0NvbnRyb2w6IGZhbHNlLFxuICAgICAgICBrZXlib2FyZFNob3J0Y3V0czogZmFsc2UsXG4gICAgICAgIHBhbkNvbnRyb2w6IHRydWUsXG4gICAgICAgIGdlc3R1cmVIYW5kbGluZzogJ2dyZWVkeScsXG4gICAgICAgIG1hcFR5cGVDb250cm9sOiBmYWxzZSxcbiAgICAgICAgZGlzYWJsZURlZmF1bHRVSTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRNYXBDb25maWc6IElDYU1hcFByb3BzID0ge1xuICAgICAgICBtYXJrZXJzOiBbXSxcbiAgICAgICAgY2x1c3Rlck1hcmtlcnM6IFtdLFxuICAgICAgICByb3V0aW5nTWFya2VyczogW10sXG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0TWFwWm9vbTogbnVtYmVyID0gMTtcblxuICAgIHN0YXRpYyBkZWZhdWx0TWFwQ2VudGVyOiBJUm91dGVQYXRoID0geyBsYXQ6IDQxLjg2MDExOSwgbG5nOiAtODcuNjYwMTU2IH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdE1hcmtlclNpemUgPSBuZXcgZ29vZ2xlLm1hcHMuU2l6ZSgzMCwgMzMpO1xuXG4gICAgc3RhdGljIGxhcmdlTWFya2VyU2l6ZSA9IG5ldyBnb29nbGUubWFwcy5TaXplKDQ1LCA1MCk7XG5cbiAgICBzdGF0aWMgbWFwTGlzdFBhZ2luYXRpb246IHtcbiAgICAgICAgcGFnZUluZGV4OiBudW1iZXI7XG4gICAgICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgfSA9IHsgcGFnZUluZGV4OiAxLCBwYWdlU2l6ZTogMjUgfTtcblxuICAgIHN0YXRpYyBhcmVhRmlsdGVyRGF0YSA9IHtcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgZmlsbENvbG9yOiAnIzNCNzNFRCcsXG4gICAgICAgICAgICBzdHJva2VXZWlnaHQ6IDAsXG4gICAgICAgICAgICBmaWxsT3BhY2l0eTogMC4yLFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZHJhZ2dhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNsaWNrYWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGNlbnRlcjogeyBsYXQ6IDQxLjg2MDExOSwgbG5nOiAtODcuNjYwMTU2IH0sXG4gICAgICAgIHJhZGl1czogMTI0MDAwLFxuICAgIH07XG5cbiAgICBzdGF0aWMgcm91dGluZ01hcmtlckRhcmtDb2xvcnMgPSB7XG4gICAgICAgIHBpY2t1cDogJyMyNTlGOTQnLFxuICAgICAgICBkZWxpdmVyeTogJyNERjNDM0MnLFxuICAgICAgICBkZWFkaGVhZDogJyM2QzZDNkMnLFxuICAgIH07XG5cbiAgICBzdGF0aWMgcm91dGluZ01hcmtlckxpZ2h0Q29sb3JzID0ge1xuICAgICAgICBwaWNrdXA6ICcjNTZCNEFDJyxcbiAgICAgICAgZGVsaXZlcnk6ICcjRTY2NzY3JyxcbiAgICAgICAgZGVhZGhlYWQ6ICcjOTE5MTkxJyxcbiAgICB9O1xuXG4gICAgc3RhdGljIHJvdXRpbmdQYXRoQ29sb3JzID0ge1xuICAgICAgICBjdXJyZW50TG9jYXRpb246ICcjRTVFNUU1JyxcbiAgICAgICAgZGVhZGhlYWQ6ICcjMkYyRjJGJyxcbiAgICAgICAgZGVmYXVsdDogJyM2QzZDNkMnLFxuICAgICAgICBncmF5OiAnIzkxOTE5MScsXG4gICAgfTtcblxuICAgIHN0YXRpYyByb3V0aW5nRGFzaGVkTGluZVBhdGggPSB7XG4gICAgICAgIHBhdGg6ICdNIDAuMywwIC0wLjMsMCAtMC4zLDAuNSAwLjMsMC41JyxcbiAgICAgICAgc3Ryb2tlT3BhY2l0eTogMSxcbiAgICAgICAgc3Ryb2tlQ29sb3I6ICcjOTE5MTkxJyxcbiAgICAgICAgc2NhbGU6IDQsXG4gICAgfTtcblxuICAgIHN0YXRpYyByb3V0aW5nRGFzaGVkTGluZUljb24gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246IHRoaXMucm91dGluZ0Rhc2hlZExpbmVQYXRoLFxuICAgICAgICAgICAgb2Zmc2V0OiAnMCcsXG4gICAgICAgICAgICByZXBlYXQ6ICcxMHB4JyxcbiAgICAgICAgfSxcbiAgICBdO1xuXG4gICAgc3RhdGljIHJvdXRpbmdNYXJrZXJPdXRsaW5lQ29sb3JzID0ge1xuICAgICAgICBwaWNrdXA6ICcjODZDOUMzJyxcbiAgICAgICAgZGVsaXZlcnk6ICcjRUQ5MjkyJyxcbiAgICAgICAgZGVhZGhlYWQ6ICcjQ0NDQ0NDJyxcbiAgICAgICAgd2hpdGU6ICcjRkZGRkZGJyxcbiAgICB9O1xuXG4gICAgc3RhdGljIHJvdXRpbmdNYXJrZXJEb3RDb2xvcnMgPSB7XG4gICAgICAgIGRhcms6ICcjMkYyRjJGJyxcbiAgICAgICAgbGlnaHQ6ICcjRUVFRUVFJyxcbiAgICB9O1xufVxuIl19
|