Socket
Socket
Sign inDemoInstall

@angular/google-maps

Package Overview
Dependencies
Maintainers
2
Versions
395
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@angular/google-maps - npm Package Compare versions

Comparing version 9.0.0-rc.0 to 9.0.0-rc.1

24

bundles/google-maps.umd.js

@@ -5,3 +5,3 @@ (function (global, factory) {

(global = global || self, factory((global.ng = global.ng || {}, global.ng.googleMaps = {}), global.tslib, global.ng.core, global.rxjs, global.rxjs.operators));
}(this, function (exports, tslib, core, rxjs, operators) { 'use strict';
}(this, (function (exports, tslib, core, rxjs, operators) { 'use strict';

@@ -422,3 +422,2 @@ /**

{ type: core.Component, args: [{
moduleId: module.id,
selector: 'google-map',

@@ -481,4 +480,4 @@ changeDetection: core.ChangeDetectionStrategy.OnPush,

var MapMarker = /** @class */ (function () {
function MapMarker(googleMap) {
this.googleMap = googleMap;
function MapMarker(_googleMap) {
this._googleMap = _googleMap;
/**

@@ -637,3 +636,3 @@ * See

_this._marker = new google.maps.Marker(options);
_this._marker.setMap(_this.googleMap._googleMap);
_this._marker.setMap(_this._googleMap._googleMap);
_this._initializeEventHandlers();

@@ -757,3 +756,3 @@ });

var _b = tslib.__read(_a, 5), options = _b[0], title = _b[1], position = _b[2], label = _b[3], clickable = _b[4];
var combinedOptions = tslib.__assign(tslib.__assign({}, options), { title: title || options.title, position: position || options.position, label: label || options.label, clickable: clickable !== undefined ? clickable : options.clickable, map: _this.googleMap._googleMap || null });
var combinedOptions = tslib.__assign(tslib.__assign({}, options), { title: title || options.title, position: position || options.position, label: label || options.label, clickable: clickable !== undefined ? clickable : options.clickable, map: _this._googleMap._googleMap || null });
return combinedOptions;

@@ -846,3 +845,2 @@ }));

{ type: core.Component, args: [{
moduleId: module.id,
selector: 'map-marker',

@@ -901,4 +899,4 @@ template: '<ng-content></ng-content>',

var MapInfoWindow = /** @class */ (function () {
function MapInfoWindow(googleMap, _elementRef) {
this.googleMap = googleMap;
function MapInfoWindow(_googleMap, _elementRef) {
this._googleMap = _googleMap;
this._elementRef = _elementRef;

@@ -1019,5 +1017,5 @@ /**

var marker = anchor ? anchor._marker : undefined;
if (this.googleMap._googleMap) {
if (this._googleMap._googleMap) {
this._elementRef.nativeElement.style.display = '';
this._infoWindow.open(this.googleMap._googleMap, marker);
this._infoWindow.open(this._googleMap._googleMap, marker);
}

@@ -1110,9 +1108,9 @@ };

exports.GoogleMap = GoogleMap;
exports.MapMarker = MapMarker;
exports.GoogleMapsModule = GoogleMapsModule;
exports.MapInfoWindow = MapInfoWindow;
exports.MapMarker = MapMarker;
Object.defineProperty(exports, '__esModule', { value: true });
}));
})));
//# sourceMappingURL=google-maps.umd.js.map

@@ -1,2 +0,2 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("tslib"),require("@angular/core"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@angular/google-maps",["exports","tslib","@angular/core","rxjs","rxjs/operators"],e):e(((t=t||self).ng=t.ng||{},t.ng.googleMaps={}),t.tslib,t.ng.core,t.rxjs,t.rxjs.operators)}(this,function(t,e,n,i,o){"use strict";
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("tslib"),require("@angular/core"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@angular/google-maps",["exports","tslib","@angular/core","rxjs","rxjs/operators"],e):e(((t=t||self).ng=t.ng||{},t.ng.googleMaps={}),t.tslib,t.ng.core,t.rxjs,t.rxjs.operators)}(this,(function(t,e,n,i,o){"use strict";
/**

@@ -8,3 +8,3 @@ * @license

* found in the LICENSE file at https://angular.io/license
*/var r={center:{lat:37.421995,lng:-122.084092},zoom:17},a="500px",s="500px",p=function(){function t(t){if(this._elementRef=t,this.height=a,this.width=s,this.boundsChanged=new n.EventEmitter,this.centerChanged=new n.EventEmitter,this.mapClick=new n.EventEmitter,this.mapDblclick=new n.EventEmitter,this.mapDrag=new n.EventEmitter,this.mapDragend=new n.EventEmitter,this.mapDragstart=new n.EventEmitter,this.headingChanged=new n.EventEmitter,this.idle=new n.EventEmitter,this.maptypeidChanged=new n.EventEmitter,this.mapMousemove=new n.EventEmitter,this.mapMouseout=new n.EventEmitter,this.mapMouseover=new n.EventEmitter,this.projectionChanged=new n.EventEmitter,this.mapRightclick=new n.EventEmitter,this.tilesloaded=new n.EventEmitter,this.tiltChanged=new n.EventEmitter,this.zoomChanged=new n.EventEmitter,this._listeners=[],this._options=new i.BehaviorSubject(r),this._center=new i.BehaviorSubject(void 0),this._zoom=new i.BehaviorSubject(void 0),this._destroy=new i.Subject,!window.google)throw Error("Namespace google not found, cannot construct embedded google map. Please install the Google Maps JavaScript API: https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API")}return Object.defineProperty(t.prototype,"center",{set:function(t){this._center.next(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"zoom",{set:function(t){this._zoom.next(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"options",{set:function(t){this._options.next(t||r)},enumerable:!0,configurable:!0}),t.prototype.ngOnChanges=function(){this._setSize()},t.prototype.ngOnInit=function(){var t=this;this._mapEl=this._elementRef.nativeElement.querySelector(".map-container"),this._setSize();var e=this._combineOptions();this._googleMapChanges=this._initializeMap(e),this._googleMapChanges.subscribe(function(e){t._googleMap=e,t._initializeEventHandlers()}),this._watchForOptionsChanges(),this._watchForCenterChanges(),this._watchForZoomChanges()},t.prototype.ngOnDestroy=function(){var t,n;this._destroy.next(),this._destroy.complete();try{for(var i=e.__values(this._listeners),o=i.next();!o.done;o=i.next())o.value.remove()}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},t.prototype.fitBounds=function(t,e){this._googleMap.fitBounds(t,e)},t.prototype.panBy=function(t,e){this._googleMap.panBy(t,e)},t.prototype.panTo=function(t){this._googleMap.panTo(t)},t.prototype.panToBounds=function(t,e){this._googleMap.panToBounds(t,e)},t.prototype.getBounds=function(){return this._googleMap.getBounds()||null},t.prototype.getCenter=function(){return this._googleMap.getCenter()},t.prototype.getClickableIcons=function(){return this._googleMap.getClickableIcons()},t.prototype.getHeading=function(){return this._googleMap.getHeading()},t.prototype.getMapTypeId=function(){return this._googleMap.getMapTypeId()},t.prototype.getProjection=function(){return this._googleMap.getProjection()},t.prototype.getStreetView=function(){return this._googleMap.getStreetView()},t.prototype.getTilt=function(){return this._googleMap.getTilt()},t.prototype.getZoom=function(){return this._googleMap.getZoom()},Object.defineProperty(t.prototype,"controls",{get:function(){return this._googleMap.controls},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"data",{get:function(){return this._googleMap.data},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"mapTypes",{get:function(){return this._googleMap.mapTypes},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"overlayMapTypes",{get:function(){return this._googleMap.overlayMapTypes},enumerable:!0,configurable:!0}),t.prototype._setSize=function(){this._mapEl&&(this._mapEl.style.height=this.height||a,this._mapEl.style.width=this.width||s)},t.prototype._combineOptions=function(){return i.combineLatest([this._options,this._center,this._zoom]).pipe(o.map(function(t){var n=e.__read(t,3),i=n[0],o=n[1],r=n[2];return e.__assign(e.__assign({},i),{center:o||i.center,zoom:void 0!==r?r:i.zoom})}))},t.prototype._initializeMap=function(t){var e=this;return t.pipe(o.take(1),o.map(function(t){return new google.maps.Map(e._mapEl,t)}),o.shareReplay(1))},t.prototype._watchForOptionsChanges=function(){i.combineLatest([this._googleMapChanges,this._options]).pipe(o.takeUntil(this._destroy)).subscribe(function(t){var n=e.__read(t,2);n[0].setOptions(n[1])})},t.prototype._watchForCenterChanges=function(){i.combineLatest([this._googleMapChanges,this._center]).pipe(o.takeUntil(this._destroy)).subscribe(function(t){var n=e.__read(t,2),i=n[1];i&&n[0].setCenter(i)})},t.prototype._watchForZoomChanges=function(){i.combineLatest([this._googleMapChanges,this._zoom]).pipe(o.takeUntil(this._destroy)).subscribe(function(t){var n=e.__read(t,2),i=n[1];void 0!==i&&n[0].setZoom(i)})},t.prototype._initializeEventHandlers=function(){var t=this,e=new Map([["bounds_changed",this.boundsChanged],["center_changed",this.centerChanged],["drag",this.mapDrag],["dragend",this.mapDragend],["dragstart",this.mapDragstart],["heading_changed",this.headingChanged],["idle",this.idle],["maptypeid_changed",this.maptypeidChanged],["projection_changed",this.projectionChanged],["tilesloaded",this.tilesloaded],["tilt_changed",this.tiltChanged],["zoomChanged",this.zoomChanged]]),n=new Map([["dblclick",this.mapDblclick],["mousemove",this.mapMousemove],["mouseout",this.mapMouseout],["mouseover",this.mapMouseover],["rightclick",this.mapRightclick]]);e.forEach(function(e,n){e.observers.length>0&&t._listeners.push(t._googleMap.addListener(n,function(){e.emit()}))}),n.forEach(function(e,n){e.observers.length>0&&t._listeners.push(t._googleMap.addListener(n,function(t){e.emit(t)}))}),this.mapClick.observers.length>0&&this._listeners.push(this._googleMap.addListener("click",function(e){t.mapClick.emit(e)}))},t.decorators=[{type:n.Component,args:[{moduleId:module.id,selector:"google-map",changeDetection:n.ChangeDetectionStrategy.OnPush,template:'<div class="map-container"></div><ng-content></ng-content>',encapsulation:n.ViewEncapsulation.None}]}],t.ctorParameters=function(){return[{type:n.ElementRef}]},t.propDecorators={height:[{type:n.Input}],width:[{type:n.Input}],center:[{type:n.Input}],zoom:[{type:n.Input}],options:[{type:n.Input}],boundsChanged:[{type:n.Output}],centerChanged:[{type:n.Output}],mapClick:[{type:n.Output}],mapDblclick:[{type:n.Output}],mapDrag:[{type:n.Output}],mapDragend:[{type:n.Output}],mapDragstart:[{type:n.Output}],headingChanged:[{type:n.Output}],idle:[{type:n.Output}],maptypeidChanged:[{type:n.Output}],mapMousemove:[{type:n.Output}],mapMouseout:[{type:n.Output}],mapMouseover:[{type:n.Output}],projectionChanged:[{type:n.Output}],mapRightclick:[{type:n.Output}],tilesloaded:[{type:n.Output}],tiltChanged:[{type:n.Output}],zoomChanged:[{type:n.Output}]},t}(),h={position:{lat:37.421995,lng:-122.084092}},u=function(){function t(t){this.googleMap=t,this.animationChanged=new n.EventEmitter,this.mapClick=new n.EventEmitter,this.clickableChanged=new n.EventEmitter,this.cursorChanged=new n.EventEmitter,this.mapDblclick=new n.EventEmitter,this.mapDrag=new n.EventEmitter,this.mapDragend=new n.EventEmitter,this.draggableChanged=new n.EventEmitter,this.mapDragstart=new n.EventEmitter,this.flatChanged=new n.EventEmitter,this.iconChanged=new n.EventEmitter,this.mapMousedown=new n.EventEmitter,this.mapMouseout=new n.EventEmitter,this.mapMouseover=new n.EventEmitter,this.mapMouseup=new n.EventEmitter,this.positionChanged=new n.EventEmitter,this.mapRightclick=new n.EventEmitter,this.shapeChanged=new n.EventEmitter,this.titleChanged=new n.EventEmitter,this.visibleChanged=new n.EventEmitter,this.zindexChanged=new n.EventEmitter,this._options=new i.BehaviorSubject(h),this._title=new i.BehaviorSubject(void 0),this._position=new i.BehaviorSubject(void 0),this._label=new i.BehaviorSubject(void 0),this._clickable=new i.BehaviorSubject(void 0),this._destroy=new i.Subject,this._listeners=[]}return Object.defineProperty(t.prototype,"options",{set:function(t){this._options.next(t||h)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"title",{set:function(t){this._title.next(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"position",{set:function(t){this._position.next(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"label",{set:function(t){this._label.next(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"clickable",{set:function(t){this._clickable.next(t)},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this._combineOptions().pipe(o.take(1)).subscribe(function(e){t._marker=new google.maps.Marker(e),t._marker.setMap(t.googleMap._googleMap),t._initializeEventHandlers()}),this._watchForOptionsChanges(),this._watchForTitleChanges(),this._watchForPositionChanges(),this._watchForLabelChanges(),this._watchForClickableChanges()},t.prototype.ngOnDestroy=function(){var t,n;this._destroy.next(),this._destroy.complete();try{for(var i=e.__values(this._listeners),o=i.next();!o.done;o=i.next())o.value.remove()}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}this._marker&&this._marker.setMap(null)},t.prototype.getAnimation=function(){return this._marker.getAnimation()||null},t.prototype.getClickable=function(){return this._marker.getClickable()},t.prototype.getCursor=function(){return this._marker.getCursor()||null},t.prototype.getDraggable=function(){return!!this._marker.getDraggable()},t.prototype.getIcon=function(){return this._marker.getIcon()||null},t.prototype.getLabel=function(){return this._marker.getLabel()||null},t.prototype.getOpacity=function(){return this._marker.getOpacity()||null},t.prototype.getPosition=function(){return this._marker.getPosition()||null},t.prototype.getShape=function(){return this._marker.getShape()||null},t.prototype.getTitle=function(){return this._marker.getTitle()||null},t.prototype.getVisible=function(){return this._marker.getVisible()},t.prototype.getZIndex=function(){return this._marker.getZIndex()||null},t.prototype._combineOptions=function(){var t=this;return i.combineLatest([this._options,this._title,this._position,this._label,this._clickable]).pipe(o.map(function(n){var i=e.__read(n,5),o=i[0],r=i[1],a=i[2],s=i[3],p=i[4];return e.__assign(e.__assign({},o),{title:r||o.title,position:a||o.position,label:s||o.label,clickable:void 0!==p?p:o.clickable,map:t.googleMap._googleMap||null})}))},t.prototype._watchForOptionsChanges=function(){var t=this;this._options.pipe(o.takeUntil(this._destroy)).subscribe(function(e){t._marker&&t._marker.setOptions(e)})},t.prototype._watchForTitleChanges=function(){var t=this;this._title.pipe(o.takeUntil(this._destroy)).subscribe(function(e){t._marker&&void 0!==e&&t._marker.setTitle(e)})},t.prototype._watchForPositionChanges=function(){var t=this;this._position.pipe(o.takeUntil(this._destroy)).subscribe(function(e){t._marker&&e&&t._marker.setPosition(e)})},t.prototype._watchForLabelChanges=function(){var t=this;this._label.pipe(o.takeUntil(this._destroy)).subscribe(function(e){t._marker&&void 0!==e&&t._marker.setLabel(e)})},t.prototype._watchForClickableChanges=function(){var t=this;this._clickable.pipe(o.takeUntil(this._destroy)).subscribe(function(e){t._marker&&void 0!==e&&t._marker.setClickable(e)})},t.prototype._initializeEventHandlers=function(){var t=this,e=new Map([["animation_changed",this.animationChanged],["clickable_changed",this.clickableChanged],["cursor_changed",this.cursorChanged],["draggable_changed",this.draggableChanged],["flat_changed",this.flatChanged],["icon_changed",this.iconChanged],["position_changed",this.positionChanged],["shape_changed",this.shapeChanged],["title_changed",this.titleChanged],["visible_changed",this.visibleChanged],["zindex_changed",this.zindexChanged]]),n=new Map([["click",this.mapClick],["dblclick",this.mapDblclick],["drag",this.mapDrag],["dragend",this.mapDragend],["dragstart",this.mapDragstart],["mousedown",this.mapMousedown],["mouseout",this.mapMouseout],["mouseover",this.mapMouseover],["mouseup",this.mapMouseup],["rightclick",this.mapRightclick]]);e.forEach(function(e,n){e.observers.length>0&&t._listeners.push(t._marker.addListener(n,function(){e.emit()}))}),n.forEach(function(e,n){e.observers.length>0&&t._listeners.push(t._marker.addListener(n,function(t){e.emit(t)}))})},t.decorators=[{type:n.Component,args:[{moduleId:module.id,selector:"map-marker",template:"<ng-content></ng-content>",changeDetection:n.ChangeDetectionStrategy.OnPush,encapsulation:n.ViewEncapsulation.None}]}],t.ctorParameters=function(){return[{type:p}]},t.propDecorators={options:[{type:n.Input}],title:[{type:n.Input}],position:[{type:n.Input}],label:[{type:n.Input}],clickable:[{type:n.Input}],animationChanged:[{type:n.Output}],mapClick:[{type:n.Output}],clickableChanged:[{type:n.Output}],cursorChanged:[{type:n.Output}],mapDblclick:[{type:n.Output}],mapDrag:[{type:n.Output}],mapDragend:[{type:n.Output}],draggableChanged:[{type:n.Output}],mapDragstart:[{type:n.Output}],flatChanged:[{type:n.Output}],iconChanged:[{type:n.Output}],mapMousedown:[{type:n.Output}],mapMouseout:[{type:n.Output}],mapMouseover:[{type:n.Output}],mapMouseup:[{type:n.Output}],positionChanged:[{type:n.Output}],mapRightclick:[{type:n.Output}],shapeChanged:[{type:n.Output}],titleChanged:[{type:n.Output}],visibleChanged:[{type:n.Output}],zindexChanged:[{type:n.Output}]},t}(),c=function(){function t(t,e){this.googleMap=t,this._elementRef=e,this.closeclick=new n.EventEmitter,this.contentChanged=new n.EventEmitter,this.domready=new n.EventEmitter,this.positionChanged=new n.EventEmitter,this.zindexChanged=new n.EventEmitter,this._options=new i.BehaviorSubject({}),this._position=new i.BehaviorSubject(void 0),this._listeners=[],this._destroy=new i.Subject}return Object.defineProperty(t.prototype,"options",{set:function(t){this._options.next(t||{})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"position",{set:function(t){this._position.next(t)},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this._combineOptions().pipe(o.takeUntil(this._destroy)).subscribe(function(e){t._infoWindow?t._infoWindow.setOptions(e):(t._infoWindow=new google.maps.InfoWindow(e),t._initializeEventHandlers())})},t.prototype.ngOnDestroy=function(){var t,n;this._destroy.next(),this._destroy.complete();try{for(var i=e.__values(this._listeners),o=i.next();!o.done;o=i.next())o.value.remove()}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}this.close()},t.prototype.close=function(){this._infoWindow&&this._infoWindow.close()},t.prototype.getContent=function(){return this._infoWindow.getContent()},t.prototype.getPosition=function(){return this._infoWindow.getPosition()||null},t.prototype.getZIndex=function(){return this._infoWindow.getZIndex()},t.prototype.open=function(t){var e=t?t._marker:void 0;this.googleMap._googleMap&&(this._elementRef.nativeElement.style.display="",this._infoWindow.open(this.googleMap._googleMap,e))},t.prototype._combineOptions=function(){var t=this;return i.combineLatest([this._options,this._position]).pipe(o.map(function(n){var i=e.__read(n,2),o=i[0],r=i[1];return e.__assign(e.__assign({},o),{position:r||o.position,content:t._elementRef.nativeElement})}))},t.prototype._initializeEventHandlers=function(){var t=this;new Map([["closeclick",this.closeclick],["content_changed",this.contentChanged],["domready",this.domready],["position_changed",this.positionChanged],["zindex_changed",this.zindexChanged]]).forEach(function(e,n){e.observers.length>0&&t._listeners.push(t._infoWindow.addListener(n,function(){e.emit()}))})},t.decorators=[{type:n.Directive,args:[{selector:"map-info-window",host:{style:"display: none"}}]}],t.ctorParameters=function(){return[{type:p},{type:n.ElementRef}]},t.propDecorators={options:[{type:n.Input}],position:[{type:n.Input}],closeclick:[{type:n.Output}],contentChanged:[{type:n.Output}],domready:[{type:n.Output}],positionChanged:[{type:n.Output}],zindexChanged:[{type:n.Output}]},t}(),l=[p,c,u],g=function(){function t(){}return t.decorators=[{type:n.NgModule,args:[{declarations:l,exports:l}]}],t}();
*/var r={center:{lat:37.421995,lng:-122.084092},zoom:17},a="500px",s="500px",p=function(){function t(t){if(this._elementRef=t,this.height=a,this.width=s,this.boundsChanged=new n.EventEmitter,this.centerChanged=new n.EventEmitter,this.mapClick=new n.EventEmitter,this.mapDblclick=new n.EventEmitter,this.mapDrag=new n.EventEmitter,this.mapDragend=new n.EventEmitter,this.mapDragstart=new n.EventEmitter,this.headingChanged=new n.EventEmitter,this.idle=new n.EventEmitter,this.maptypeidChanged=new n.EventEmitter,this.mapMousemove=new n.EventEmitter,this.mapMouseout=new n.EventEmitter,this.mapMouseover=new n.EventEmitter,this.projectionChanged=new n.EventEmitter,this.mapRightclick=new n.EventEmitter,this.tilesloaded=new n.EventEmitter,this.tiltChanged=new n.EventEmitter,this.zoomChanged=new n.EventEmitter,this._listeners=[],this._options=new i.BehaviorSubject(r),this._center=new i.BehaviorSubject(void 0),this._zoom=new i.BehaviorSubject(void 0),this._destroy=new i.Subject,!window.google)throw Error("Namespace google not found, cannot construct embedded google map. Please install the Google Maps JavaScript API: https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API")}return Object.defineProperty(t.prototype,"center",{set:function(t){this._center.next(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"zoom",{set:function(t){this._zoom.next(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"options",{set:function(t){this._options.next(t||r)},enumerable:!0,configurable:!0}),t.prototype.ngOnChanges=function(){this._setSize()},t.prototype.ngOnInit=function(){var t=this;this._mapEl=this._elementRef.nativeElement.querySelector(".map-container"),this._setSize();var e=this._combineOptions();this._googleMapChanges=this._initializeMap(e),this._googleMapChanges.subscribe((function(e){t._googleMap=e,t._initializeEventHandlers()})),this._watchForOptionsChanges(),this._watchForCenterChanges(),this._watchForZoomChanges()},t.prototype.ngOnDestroy=function(){var t,n;this._destroy.next(),this._destroy.complete();try{for(var i=e.__values(this._listeners),o=i.next();!o.done;o=i.next())o.value.remove()}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},t.prototype.fitBounds=function(t,e){this._googleMap.fitBounds(t,e)},t.prototype.panBy=function(t,e){this._googleMap.panBy(t,e)},t.prototype.panTo=function(t){this._googleMap.panTo(t)},t.prototype.panToBounds=function(t,e){this._googleMap.panToBounds(t,e)},t.prototype.getBounds=function(){return this._googleMap.getBounds()||null},t.prototype.getCenter=function(){return this._googleMap.getCenter()},t.prototype.getClickableIcons=function(){return this._googleMap.getClickableIcons()},t.prototype.getHeading=function(){return this._googleMap.getHeading()},t.prototype.getMapTypeId=function(){return this._googleMap.getMapTypeId()},t.prototype.getProjection=function(){return this._googleMap.getProjection()},t.prototype.getStreetView=function(){return this._googleMap.getStreetView()},t.prototype.getTilt=function(){return this._googleMap.getTilt()},t.prototype.getZoom=function(){return this._googleMap.getZoom()},Object.defineProperty(t.prototype,"controls",{get:function(){return this._googleMap.controls},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"data",{get:function(){return this._googleMap.data},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"mapTypes",{get:function(){return this._googleMap.mapTypes},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"overlayMapTypes",{get:function(){return this._googleMap.overlayMapTypes},enumerable:!0,configurable:!0}),t.prototype._setSize=function(){this._mapEl&&(this._mapEl.style.height=this.height||a,this._mapEl.style.width=this.width||s)},t.prototype._combineOptions=function(){return i.combineLatest([this._options,this._center,this._zoom]).pipe(o.map((function(t){var n=e.__read(t,3),i=n[0],o=n[1],r=n[2];return e.__assign(e.__assign({},i),{center:o||i.center,zoom:void 0!==r?r:i.zoom})})))},t.prototype._initializeMap=function(t){var e=this;return t.pipe(o.take(1),o.map((function(t){return new google.maps.Map(e._mapEl,t)})),o.shareReplay(1))},t.prototype._watchForOptionsChanges=function(){i.combineLatest([this._googleMapChanges,this._options]).pipe(o.takeUntil(this._destroy)).subscribe((function(t){var n=e.__read(t,2);n[0].setOptions(n[1])}))},t.prototype._watchForCenterChanges=function(){i.combineLatest([this._googleMapChanges,this._center]).pipe(o.takeUntil(this._destroy)).subscribe((function(t){var n=e.__read(t,2),i=n[1];i&&n[0].setCenter(i)}))},t.prototype._watchForZoomChanges=function(){i.combineLatest([this._googleMapChanges,this._zoom]).pipe(o.takeUntil(this._destroy)).subscribe((function(t){var n=e.__read(t,2),i=n[1];void 0!==i&&n[0].setZoom(i)}))},t.prototype._initializeEventHandlers=function(){var t=this,e=new Map([["bounds_changed",this.boundsChanged],["center_changed",this.centerChanged],["drag",this.mapDrag],["dragend",this.mapDragend],["dragstart",this.mapDragstart],["heading_changed",this.headingChanged],["idle",this.idle],["maptypeid_changed",this.maptypeidChanged],["projection_changed",this.projectionChanged],["tilesloaded",this.tilesloaded],["tilt_changed",this.tiltChanged],["zoomChanged",this.zoomChanged]]),n=new Map([["dblclick",this.mapDblclick],["mousemove",this.mapMousemove],["mouseout",this.mapMouseout],["mouseover",this.mapMouseover],["rightclick",this.mapRightclick]]);e.forEach((function(e,n){e.observers.length>0&&t._listeners.push(t._googleMap.addListener(n,(function(){e.emit()})))})),n.forEach((function(e,n){e.observers.length>0&&t._listeners.push(t._googleMap.addListener(n,(function(t){e.emit(t)})))})),this.mapClick.observers.length>0&&this._listeners.push(this._googleMap.addListener("click",(function(e){t.mapClick.emit(e)})))},t.decorators=[{type:n.Component,args:[{selector:"google-map",changeDetection:n.ChangeDetectionStrategy.OnPush,template:'<div class="map-container"></div><ng-content></ng-content>',encapsulation:n.ViewEncapsulation.None}]}],t.ctorParameters=function(){return[{type:n.ElementRef}]},t.propDecorators={height:[{type:n.Input}],width:[{type:n.Input}],center:[{type:n.Input}],zoom:[{type:n.Input}],options:[{type:n.Input}],boundsChanged:[{type:n.Output}],centerChanged:[{type:n.Output}],mapClick:[{type:n.Output}],mapDblclick:[{type:n.Output}],mapDrag:[{type:n.Output}],mapDragend:[{type:n.Output}],mapDragstart:[{type:n.Output}],headingChanged:[{type:n.Output}],idle:[{type:n.Output}],maptypeidChanged:[{type:n.Output}],mapMousemove:[{type:n.Output}],mapMouseout:[{type:n.Output}],mapMouseover:[{type:n.Output}],projectionChanged:[{type:n.Output}],mapRightclick:[{type:n.Output}],tilesloaded:[{type:n.Output}],tiltChanged:[{type:n.Output}],zoomChanged:[{type:n.Output}]},t}(),h={position:{lat:37.421995,lng:-122.084092}},u=function(){function t(t){this._googleMap=t,this.animationChanged=new n.EventEmitter,this.mapClick=new n.EventEmitter,this.clickableChanged=new n.EventEmitter,this.cursorChanged=new n.EventEmitter,this.mapDblclick=new n.EventEmitter,this.mapDrag=new n.EventEmitter,this.mapDragend=new n.EventEmitter,this.draggableChanged=new n.EventEmitter,this.mapDragstart=new n.EventEmitter,this.flatChanged=new n.EventEmitter,this.iconChanged=new n.EventEmitter,this.mapMousedown=new n.EventEmitter,this.mapMouseout=new n.EventEmitter,this.mapMouseover=new n.EventEmitter,this.mapMouseup=new n.EventEmitter,this.positionChanged=new n.EventEmitter,this.mapRightclick=new n.EventEmitter,this.shapeChanged=new n.EventEmitter,this.titleChanged=new n.EventEmitter,this.visibleChanged=new n.EventEmitter,this.zindexChanged=new n.EventEmitter,this._options=new i.BehaviorSubject(h),this._title=new i.BehaviorSubject(void 0),this._position=new i.BehaviorSubject(void 0),this._label=new i.BehaviorSubject(void 0),this._clickable=new i.BehaviorSubject(void 0),this._destroy=new i.Subject,this._listeners=[]}return Object.defineProperty(t.prototype,"options",{set:function(t){this._options.next(t||h)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"title",{set:function(t){this._title.next(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"position",{set:function(t){this._position.next(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"label",{set:function(t){this._label.next(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"clickable",{set:function(t){this._clickable.next(t)},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this._combineOptions().pipe(o.take(1)).subscribe((function(e){t._marker=new google.maps.Marker(e),t._marker.setMap(t._googleMap._googleMap),t._initializeEventHandlers()})),this._watchForOptionsChanges(),this._watchForTitleChanges(),this._watchForPositionChanges(),this._watchForLabelChanges(),this._watchForClickableChanges()},t.prototype.ngOnDestroy=function(){var t,n;this._destroy.next(),this._destroy.complete();try{for(var i=e.__values(this._listeners),o=i.next();!o.done;o=i.next())o.value.remove()}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}this._marker&&this._marker.setMap(null)},t.prototype.getAnimation=function(){return this._marker.getAnimation()||null},t.prototype.getClickable=function(){return this._marker.getClickable()},t.prototype.getCursor=function(){return this._marker.getCursor()||null},t.prototype.getDraggable=function(){return!!this._marker.getDraggable()},t.prototype.getIcon=function(){return this._marker.getIcon()||null},t.prototype.getLabel=function(){return this._marker.getLabel()||null},t.prototype.getOpacity=function(){return this._marker.getOpacity()||null},t.prototype.getPosition=function(){return this._marker.getPosition()||null},t.prototype.getShape=function(){return this._marker.getShape()||null},t.prototype.getTitle=function(){return this._marker.getTitle()||null},t.prototype.getVisible=function(){return this._marker.getVisible()},t.prototype.getZIndex=function(){return this._marker.getZIndex()||null},t.prototype._combineOptions=function(){var t=this;return i.combineLatest([this._options,this._title,this._position,this._label,this._clickable]).pipe(o.map((function(n){var i=e.__read(n,5),o=i[0],r=i[1],a=i[2],s=i[3],p=i[4];return e.__assign(e.__assign({},o),{title:r||o.title,position:a||o.position,label:s||o.label,clickable:void 0!==p?p:o.clickable,map:t._googleMap._googleMap||null})})))},t.prototype._watchForOptionsChanges=function(){var t=this;this._options.pipe(o.takeUntil(this._destroy)).subscribe((function(e){t._marker&&t._marker.setOptions(e)}))},t.prototype._watchForTitleChanges=function(){var t=this;this._title.pipe(o.takeUntil(this._destroy)).subscribe((function(e){t._marker&&void 0!==e&&t._marker.setTitle(e)}))},t.prototype._watchForPositionChanges=function(){var t=this;this._position.pipe(o.takeUntil(this._destroy)).subscribe((function(e){t._marker&&e&&t._marker.setPosition(e)}))},t.prototype._watchForLabelChanges=function(){var t=this;this._label.pipe(o.takeUntil(this._destroy)).subscribe((function(e){t._marker&&void 0!==e&&t._marker.setLabel(e)}))},t.prototype._watchForClickableChanges=function(){var t=this;this._clickable.pipe(o.takeUntil(this._destroy)).subscribe((function(e){t._marker&&void 0!==e&&t._marker.setClickable(e)}))},t.prototype._initializeEventHandlers=function(){var t=this,e=new Map([["animation_changed",this.animationChanged],["clickable_changed",this.clickableChanged],["cursor_changed",this.cursorChanged],["draggable_changed",this.draggableChanged],["flat_changed",this.flatChanged],["icon_changed",this.iconChanged],["position_changed",this.positionChanged],["shape_changed",this.shapeChanged],["title_changed",this.titleChanged],["visible_changed",this.visibleChanged],["zindex_changed",this.zindexChanged]]),n=new Map([["click",this.mapClick],["dblclick",this.mapDblclick],["drag",this.mapDrag],["dragend",this.mapDragend],["dragstart",this.mapDragstart],["mousedown",this.mapMousedown],["mouseout",this.mapMouseout],["mouseover",this.mapMouseover],["mouseup",this.mapMouseup],["rightclick",this.mapRightclick]]);e.forEach((function(e,n){e.observers.length>0&&t._listeners.push(t._marker.addListener(n,(function(){e.emit()})))})),n.forEach((function(e,n){e.observers.length>0&&t._listeners.push(t._marker.addListener(n,(function(t){e.emit(t)})))}))},t.decorators=[{type:n.Component,args:[{selector:"map-marker",template:"<ng-content></ng-content>",changeDetection:n.ChangeDetectionStrategy.OnPush,encapsulation:n.ViewEncapsulation.None}]}],t.ctorParameters=function(){return[{type:p}]},t.propDecorators={options:[{type:n.Input}],title:[{type:n.Input}],position:[{type:n.Input}],label:[{type:n.Input}],clickable:[{type:n.Input}],animationChanged:[{type:n.Output}],mapClick:[{type:n.Output}],clickableChanged:[{type:n.Output}],cursorChanged:[{type:n.Output}],mapDblclick:[{type:n.Output}],mapDrag:[{type:n.Output}],mapDragend:[{type:n.Output}],draggableChanged:[{type:n.Output}],mapDragstart:[{type:n.Output}],flatChanged:[{type:n.Output}],iconChanged:[{type:n.Output}],mapMousedown:[{type:n.Output}],mapMouseout:[{type:n.Output}],mapMouseover:[{type:n.Output}],mapMouseup:[{type:n.Output}],positionChanged:[{type:n.Output}],mapRightclick:[{type:n.Output}],shapeChanged:[{type:n.Output}],titleChanged:[{type:n.Output}],visibleChanged:[{type:n.Output}],zindexChanged:[{type:n.Output}]},t}(),c=function(){function t(t,e){this._googleMap=t,this._elementRef=e,this.closeclick=new n.EventEmitter,this.contentChanged=new n.EventEmitter,this.domready=new n.EventEmitter,this.positionChanged=new n.EventEmitter,this.zindexChanged=new n.EventEmitter,this._options=new i.BehaviorSubject({}),this._position=new i.BehaviorSubject(void 0),this._listeners=[],this._destroy=new i.Subject}return Object.defineProperty(t.prototype,"options",{set:function(t){this._options.next(t||{})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"position",{set:function(t){this._position.next(t)},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this._combineOptions().pipe(o.takeUntil(this._destroy)).subscribe((function(e){t._infoWindow?t._infoWindow.setOptions(e):(t._infoWindow=new google.maps.InfoWindow(e),t._initializeEventHandlers())}))},t.prototype.ngOnDestroy=function(){var t,n;this._destroy.next(),this._destroy.complete();try{for(var i=e.__values(this._listeners),o=i.next();!o.done;o=i.next())o.value.remove()}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}this.close()},t.prototype.close=function(){this._infoWindow&&this._infoWindow.close()},t.prototype.getContent=function(){return this._infoWindow.getContent()},t.prototype.getPosition=function(){return this._infoWindow.getPosition()||null},t.prototype.getZIndex=function(){return this._infoWindow.getZIndex()},t.prototype.open=function(t){var e=t?t._marker:void 0;this._googleMap._googleMap&&(this._elementRef.nativeElement.style.display="",this._infoWindow.open(this._googleMap._googleMap,e))},t.prototype._combineOptions=function(){var t=this;return i.combineLatest([this._options,this._position]).pipe(o.map((function(n){var i=e.__read(n,2),o=i[0],r=i[1];return e.__assign(e.__assign({},o),{position:r||o.position,content:t._elementRef.nativeElement})})))},t.prototype._initializeEventHandlers=function(){var t=this;new Map([["closeclick",this.closeclick],["content_changed",this.contentChanged],["domready",this.domready],["position_changed",this.positionChanged],["zindex_changed",this.zindexChanged]]).forEach((function(e,n){e.observers.length>0&&t._listeners.push(t._infoWindow.addListener(n,(function(){e.emit()})))}))},t.decorators=[{type:n.Directive,args:[{selector:"map-info-window",host:{style:"display: none"}}]}],t.ctorParameters=function(){return[{type:p},{type:n.ElementRef}]},t.propDecorators={options:[{type:n.Input}],position:[{type:n.Input}],closeclick:[{type:n.Output}],contentChanged:[{type:n.Output}],domready:[{type:n.Output}],positionChanged:[{type:n.Output}],zindexChanged:[{type:n.Output}]},t}(),l=[p,c,u],g=function(){function t(){}return t.decorators=[{type:n.NgModule,args:[{declarations:l,exports:l}]}],t}();
/**

@@ -17,2 +17,2 @@ * @license

*/
t.GoogleMap=p,t.MapMarker=u,t.GoogleMapsModule=g,t.MapInfoWindow=c,Object.defineProperty(t,"__esModule",{value:!0})});
t.GoogleMap=p,t.GoogleMapsModule=g,t.MapInfoWindow=c,t.MapMarker=u,Object.defineProperty(t,"__esModule",{value:!0})}));

@@ -534,3 +534,2 @@ /**

{ type: Component, args: [{
moduleId: module.id,
selector: 'google-map',

@@ -727,2 +726,2 @@ changeDetection: ChangeDetectionStrategy.OnPush,

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9nb29nbGUtbWFwcy9nb29nbGUtbWFwL2dvb2dsZS1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVNBLG9DQUFvQzs7Ozs7Ozs7OztBQUVwQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFakUsK0JBRUM7OztJQURDLGtDQUF1Qjs7Ozs7OztBQVF6QixzQ0FFQzs7O0lBREMsNkNBQWlDOzs7Ozs7QUFJbkMsTUFBTSxPQUFPLGVBQWUsR0FBMkI7SUFDckQsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUM7SUFDMUMsSUFBSSxFQUFFLEVBQUU7Q0FDVDs7Ozs7QUFHRCxNQUFNLE9BQU8sY0FBYyxHQUFHLE9BQU87Ozs7O0FBRXJDLE1BQU0sT0FBTyxhQUFhLEdBQUcsT0FBTzs7Ozs7O0FBY3BDLE1BQU0sT0FBTyxTQUFTOzs7O0lBNElwQixZQUE2QixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQTNJM0MsV0FBTSxHQUFHLGNBQWMsQ0FBQztRQUV4QixVQUFLLEdBQUcsYUFBYSxDQUFDOzs7OztRQW1CckIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDOzs7OztRQU16QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7Ozs7O1FBTXpDLGFBQVEsR0FBRyxJ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LE1BQU07MEJBTU4sTUFBTTswQkFNTixNQUFNOzs7O0lBM0hQLDJCQUFpQzs7SUFFakMsMEJBQStCOzs7Ozs7SUFtQi9CLGtDQUFtRDs7Ozs7O0lBTW5ELGtDQUFtRDs7Ozs7O0lBTW5ELDZCQUEyRjs7Ozs7O0lBTTNGLGdDQUFtRTs7Ozs7O0lBTW5FLDRCQUE2Qzs7Ozs7O0lBTTdDLCtCQUFnRDs7Ozs7O0lBTWhELGlDQUFrRDs7Ozs7O0lBTWxELG1DQUFvRDs7Ozs7O0lBTXBELHlCQUEwQzs7Ozs7O0lBTTFDLHFDQUFzRDs7Ozs7O0lBTXRELGlDQUFvRTs7Ozs7O0lBTXBFLGdDQUFtRTs7Ozs7O0lBTW5FLGlDQUFvRTs7Ozs7O0lBTXBFLHNDQUF1RDs7Ozs7O0lBTXZELGtDQUFxRTs7Ozs7O0lBTXJFLGdDQUFpRDs7Ozs7O0lBTWpELGdDQUFpRDs7Ozs7O0lBTWpELGdDQUFpRDs7Ozs7SUFFakQsMkJBQTRCOztJQUM1QiwrQkFBOEI7Ozs7O0lBRTlCLHNDQUF3RDs7Ozs7SUFFeEQsK0JBQWtFOzs7OztJQUVsRSw2QkFBeUY7Ozs7O0lBQ3pGLDRCQUMyRjs7Ozs7SUFDM0YsMEJBQTBFOzs7OztJQUUxRSw2QkFBZ0Q7Ozs7O0lBRXBDLGdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vLyBXb3JrYXJvdW5kIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2JhemVsYnVpbGQvcnVsZXNfbm9kZWpzL2lzc3Vlcy8xMjY1XG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cImdvb2dsZW1hcHNcIiAvPlxuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBzaGFyZVJlcGxheSwgdGFrZSwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmludGVyZmFjZSBHb29nbGVNYXBzV2luZG93IGV4dGVuZHMgV2luZG93IHtcbiAgZ29vZ2xlPzogdHlwZW9mIGdvb2dsZTtcbn1cblxuLy8gVE9ETyhtYmVocmxpY2gpOiBVcGRhdGUgdGhpcyB0byB1c2Ugb3JpZ2luYWwgbWFwIGFmdGVyIHVwZGF0aW5nIERlZmluaXRlbHlUeXBlZFxuLyoqXG4gKiBFeHRlbmRzIHRoZSBHb29nbGUgTWFwIGludGVyZmFjZSBkdWUgdG8gdGhlIERlZmluaXRlbHkgVHlwZWQgaW1wbGVtZW50YXRpb25cbiAqIG1pc3NpbmcgXCJnZXRDbGlja2FibGVJY29uc1wiLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRHb29nbGVNYXAgZXh0ZW5kcyBnb29nbGUubWFwcy5NYXAge1xuICBnZXRDbGlja2FibGVJY29uczogKCkgPT4gYm9vbGVhbjtcbn1cblxuLyoqIGRlZmF1bHQgb3B0aW9ucyBzZXQgdG8gdGhlIEdvb2dsZXBsZXggKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX09QVElPTlM6IGdvb2dsZS5tYXBzLk1hcE9wdGlvbnMgPSB7XG4gIGNlbnRlcjoge2xhdDogMzcuNDIxOTk1LCBsbmc6IC0xMjIuMDg0MDkyfSxcbiAgem9vbTogMTcsXG59O1xuXG4vKiogQXJiaXRyYXJ5IGRlZmF1bHQgaGVpZ2h0IGZvciB0aGUgbWFwIGVsZW1lbnQgKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFSUdIVCA9ICc1MDBweCc7XG4vKiogQXJiaXRyYXJ5IGRlZmF1bHQgd2lkdGggZm9yIHRoZSBtYXAgZWxlbWVudCAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0lEVEggPSAnNTAwcHgnO1xuXG4vKipcbiAqIEFuZ3VsYXIgY29tcG9uZW50IHRoYXQgcmVuZGVycyBhIEdvb2dsZSBNYXAgdmlhIHRoZSBHb29nbGUgTWFwcyBKYXZhU2NyaXB0XG4gKiBBUEkuXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9cbiAqL1xuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiAnZ29vZ2xlLW1hcCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJtYXAtY29udGFpbmVyXCI+PC9kaXY+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEdvb2dsZU1hcCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBoZWlnaHQgPSBERUZBVUxUX0hFSUdIVDtcblxuICBASW5wdXQoKSB3aWR0aCA9IERFRkFVTFRfV0lEVEg7XG5cbiAgQElucHV0KClcbiAgc2V0IGNlbnRlcihjZW50ZXI6IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWx8Z29vZ2xlLm1hcHMuTGF0TG5nKSB7XG4gICAgdGhpcy5fY2VudGVyLm5leHQoY2VudGVyKTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgem9vbSh6b29tOiBudW1iZXIpIHtcbiAgICB0aGlzLl96b29tLm5leHQoem9vbSk7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IG9wdGlvbnMob3B0aW9uczogZ29vZ2xlLm1hcHMuTWFwT3B0aW9ucykge1xuICAgIHRoaXMuX29wdGlvbnMubmV4dChvcHRpb25zIHx8IERFRkFVTFRfT1BUSU9OUyk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmJvdW5kc19jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgYm91bmRzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmNlbnRlcl9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgY2VudGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmNsaWNrXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnR8Z29vZ2xlLm1hcHMuSWNvbk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5kYmxjbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcERibGNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZHJhZ1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcERyYWcgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5kcmFnZW5kXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwRHJhZ2VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmRyYWdzdGFydFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcERyYWdzdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmhlYWRpbmdfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGhlYWRpbmdDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuaWRsZVxuICAgKi9cbiAgQE91dHB1dCgpIGlkbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5tYXB0eXBlaWRfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcHR5cGVpZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5tb3VzZW1vdmVcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBNb3VzZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5tb3VzZW91dFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcE1vdXNlb3V0ID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAubW91c2VvdmVyXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwTW91c2VvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLnByb2plY3Rpb25fY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHByb2plY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAucmlnaHRjbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcFJpZ2h0Y2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC50aWxlc2xvYWRlZFxuICAgKi9cbiAgQE91dHB1dCgpIHRpbGVzbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAudGlsdF9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgdGlsdENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC56b29tX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSB6b29tQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIF9tYXBFbDogSFRNTEVsZW1lbnQ7XG4gIF9nb29nbGVNYXAhOiBVcGRhdGVkR29vZ2xlTWFwO1xuXG4gIHByaXZhdGUgX2dvb2dsZU1hcENoYW5nZXMhOiBPYnNlcnZhYmxlPGdvb2dsZS5tYXBzLk1hcD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiBnb29nbGUubWFwcy5NYXBzRXZlbnRMaXN0ZW5lcltdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Z29vZ2xlLm1hcHMuTWFwT3B0aW9ucz4oREVGQVVMVF9PUFRJT05TKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2VudGVyID1cbiAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Z29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbHxnb29nbGUubWFwcy5MYXRMbmd8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF96b29tID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXJ8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICBjb25zdCBnb29nbGVNYXBzV2luZG93OiBHb29nbGVNYXBzV2luZG93ID0gd2luZG93O1xuICAgIGlmICghZ29vZ2xlTWFwc1dpbmRvdy5nb29nbGUpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICdOYW1lc3BhY2UgZ29vZ2xlIG5vdCBmb3VuZCwgY2Fubm90IGNvbnN0cnVjdCBlbWJlZGRlZCBnb29nbGUgJyArXG4gICAgICAgICAgJ21hcC4gUGxlYXNlIGluc3RhbGwgdGhlIEdvb2dsZSBNYXBzIEphdmFTY3JpcHQgQVBJOiAnICtcbiAgICAgICAgICAnaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvJyArXG4gICAgICAgICAgJ3R1dG9yaWFsI0xvYWRpbmdfdGhlX01hcHNfQVBJJyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5fc2V0U2l6ZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fbWFwRWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1hcC1jb250YWluZXInKSE7XG4gICAgdGhpcy5fc2V0U2l6ZSgpO1xuXG4gICAgY29uc3QgY29tYmluZWRPcHRpb25zQ2hhbmdlcyA9IHRoaXMuX2NvbWJpbmVPcHRpb25zKCk7XG5cbiAgICB0aGlzLl9nb29nbGVNYXBDaGFuZ2VzID0gdGhpcy5faW5pdGlhbGl6ZU1hcChjb21iaW5lZE9wdGlvbnNDaGFuZ2VzKTtcbiAgICB0aGlzLl9nb29nbGVNYXBDaGFuZ2VzLnN1YnNjcmliZSgoZ29vZ2xlTWFwOiBnb29nbGUubWFwcy5NYXApID0+IHtcbiAgICAgIHRoaXMuX2dvb2dsZU1hcCA9IGdvb2dsZU1hcCBhcyBVcGRhdGVkR29vZ2xlTWFwO1xuXG4gICAgICB0aGlzLl9pbml0aWFsaXplRXZlbnRIYW5kbGVycygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fd2F0Y2hGb3JPcHRpb25zQ2hhbmdlcygpO1xuICAgIHRoaXMuX3dhdGNoRm9yQ2VudGVyQ2hhbmdlcygpO1xuICAgIHRoaXMuX3dhdGNoRm9yWm9vbUNoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiB0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyLnJlbW92ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZml0Qm91bmRzXG4gICAqL1xuICBmaXRCb3VuZHMoXG4gICAgICBib3VuZHM6IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kc3xnb29nbGUubWFwcy5MYXRMbmdCb3VuZHNMaXRlcmFsLFxuICAgICAgcGFkZGluZz86IG51bWJlcnxnb29nbGUubWFwcy5QYWRkaW5nKSB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwLmZpdEJvdW5kcyhib3VuZHMsIHBhZGRpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5wYW5CeVxuICAgKi9cbiAgcGFuQnkoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICB0aGlzLl9nb29nbGVNYXAucGFuQnkoeCwgeSk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLnBhblRvXG4gICAqL1xuICBwYW5UbyhsYXRMbmc6IGdvb2dsZS5tYXBzLkxhdExuZ3xnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsKSB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwLnBhblRvKGxhdExuZyk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLnBhblRvQm91bmRzXG4gICAqL1xuICBwYW5Ub0JvdW5kcyhcbiAgICAgIGxhdExuZ0JvdW5kczogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzfGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kc0xpdGVyYWwsXG4gICAgICBwYWRkaW5nPzogbnVtYmVyfGdvb2dsZS5tYXBzLlBhZGRpbmcpIHtcbiAgICB0aGlzLl9nb29nbGVNYXAucGFuVG9Cb3VuZHMobGF0TG5nQm91bmRzLCBwYWRkaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0Qm91bmRzXG4gICAqL1xuICBnZXRCb3VuZHMoKTogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0Qm91bmRzKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0Q2VudGVyXG4gICAqL1xuICBnZXRDZW50ZXIoKTogZ29vZ2xlLm1hcHMuTGF0TG5nIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldENlbnRlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRDbGlja2FibGVJY29uc1xuICAgKi9cbiAgZ2V0Q2xpY2thYmxlSWNvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRDbGlja2FibGVJY29ucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRIZWFkaW5nXG4gICAqL1xuICBnZXRIZWFkaW5nKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRIZWFkaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldE1hcFR5cGVJZFxuICAgKi9cbiAgZ2V0TWFwVHlwZUlkKCk6IGdvb2dsZS5tYXBzLk1hcFR5cGVJZHxzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0TWFwVHlwZUlkKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldFByb2plY3Rpb25cbiAgICovXG4gIGdldFByb2plY3Rpb24oKTogZ29vZ2xlLm1hcHMuUHJvamVjdGlvbnxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldFByb2plY3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0U3RyZWV0Vmlld1xuICAgKi9cbiAgZ2V0U3RyZWV0VmlldygpOiBnb29nbGUubWFwcy5TdHJlZXRWaWV3UGFub3JhbWEge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0U3RyZWV0VmlldygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRUaWx0XG4gICAqL1xuICBnZXRUaWx0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRUaWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldFpvb21cbiAgICovXG4gIGdldFpvb20oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldFpvb20oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuY29udHJvbHNcbiAgICovXG4gIGdldCBjb250cm9scygpOiBBcnJheTxnb29nbGUubWFwcy5NVkNBcnJheTxOb2RlPj4ge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuY29udHJvbHM7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmRhdGFcbiAgICovXG4gIGdldCBkYXRhKCk6IGdvb2dsZS5tYXBzLkRhdGEge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAubWFwVHlwZXNcbiAgICovXG4gIGdldCBtYXBUeXBlcygpOiBnb29nbGUubWFwcy5NYXBUeXBlUmVnaXN0cnkge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAubWFwVHlwZXM7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLm92ZXJsYXlNYXBUeXBlc1xuICAgKi9cbiAgZ2V0IG92ZXJsYXlNYXBUeXBlcygpOiBnb29nbGUubWFwcy5NVkNBcnJheTxnb29nbGUubWFwcy5NYXBUeXBlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5vdmVybGF5TWFwVHlwZXM7XG4gIH1cblxuICBwcml2YXRlIF9zZXRTaXplKCkge1xuICAgIGlmICh0aGlzLl9tYXBFbCkge1xuICAgICAgdGhpcy5fbWFwRWwuc3R5bGUuaGVpZ2h0ID0gdGhpcy5oZWlnaHQgfHwgREVGQVVMVF9IRUlHSFQ7XG4gICAgICB0aGlzLl9tYXBFbC5zdHlsZS53aWR0aCA9IHRoaXMud2lkdGggfHwgREVGQVVMVF9XSURUSDtcbiAgICB9XG4gIH1cblxuICAvKiogQ29tYmluZXMgdGhlIGNlbnRlciBhbmQgem9vbSBhbmQgdGhlIG90aGVyIG1hcCBvcHRpb25zIGludG8gYSBzaW5nbGUgb2JqZWN0ICovXG4gIHByaXZhdGUgX2NvbWJpbmVPcHRpb25zKCk6IE9ic2VydmFibGU8Z29vZ2xlLm1hcHMuTWFwT3B0aW9ucz4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLl9vcHRpb25zLCB0aGlzLl9jZW50ZXIsIHRoaXMuX3pvb21dKVxuICAgICAgICAucGlwZShtYXAoKFtvcHRpb25zLCBjZW50ZXIsIHpvb21dKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tYmluZWRPcHRpb25zOiBnb29nbGUubWFwcy5NYXBPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIGNlbnRlcjogY2VudGVyIHx8IG9wdGlvbnMuY2VudGVyLFxuICAgICAgICAgICAgem9vbTogem9vbSAhPT0gdW5kZWZpbmVkID8gem9vbSA6IG9wdGlvbnMuem9vbSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBjb21iaW5lZE9wdGlvbnM7XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVNYXAob3B0aW9uc0NoYW5nZXM6IE9ic2VydmFibGU8Z29vZ2xlLm1hcHMuTWFwT3B0aW9ucz4pOlxuICAgICAgT2JzZXJ2YWJsZTxnb29nbGUubWFwcy5NYXA+IHtcbiAgICByZXR1cm4gb3B0aW9uc0NoYW5nZXMucGlwZShcbiAgICAgICAgdGFrZSgxKSwgbWFwKG9wdGlvbnMgPT4ge1xuICAgICAgICAgIHJldHVybiBuZXcgZ29vZ2xlLm1hcHMuTWFwKHRoaXMuX21hcEVsLCBvcHRpb25zKTtcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3dhdGNoRm9yT3B0aW9uc0NoYW5nZXMoKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fZ29vZ2xlTWFwQ2hhbmdlcywgdGhpcy5fb3B0aW9uc10pXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSlcbiAgICAgICAgLnN1YnNjcmliZSgoW2dvb2dsZU1hcCwgb3B0aW9uc10pID0+IHtcbiAgICAgICAgICBnb29nbGVNYXAuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvckNlbnRlckNoYW5nZXMoKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fZ29vZ2xlTWFwQ2hhbmdlcywgdGhpcy5fY2VudGVyXSlcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZ29vZ2xlTWFwLCBjZW50ZXJdKSA9PiB7XG4gICAgICAgICAgaWYgKGNlbnRlcikge1xuICAgICAgICAgICAgZ29vZ2xlTWFwLnNldENlbnRlcihjZW50ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvclpvb21DaGFuZ2VzKCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2dvb2dsZU1hcENoYW5nZXMsIHRoaXMuX3pvb21dKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKFtnb29nbGVNYXAsIHpvb21dKSA9PiB7XG4gICAgICAgICAgaWYgKHpvb20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZ29vZ2xlTWFwLnNldFpvb20oem9vbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVFdmVudEhhbmRsZXJzKCkge1xuICAgIGNvbnN0IGV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgRXZlbnRFbWl0dGVyPHZvaWQ+PihbXG4gICAgICBbJ2JvdW5kc19jaGFuZ2VkJywgdGhpcy5ib3VuZHNDaGFuZ2VkXSxcbiAgICAgIFsnY2VudGVyX2NoYW5nZWQnLCB0aGlzLmNlbnRlckNoYW5nZWRdLFxuICAgICAgWydkcmFnJywgdGhpcy5tYXBEcmFnXSxcbiAgICAgIFsnZHJhZ2VuZCcsIHRoaXMubWFwRHJhZ2VuZF0sXG4gICAgICBbJ2RyYWdzdGFydCcsIHRoaXMubWFwRHJhZ3N0YXJ0XSxcbiAgICAgIFsnaGVhZGluZ19jaGFuZ2VkJywgdGhpcy5oZWFkaW5nQ2hhbmdlZF0sXG4gICAgICBbJ2lkbGUnLCB0aGlzLmlkbGVdLFxuICAgICAgWydtYXB0eXBlaWRfY2hhbmdlZCcsIHRoaXMubWFwdHlwZWlkQ2hhbmdlZF0sXG4gICAgICBbJ3Byb2plY3Rpb25fY2hhbmdlZCcsIHRoaXMucHJvamVjdGlvbkNoYW5nZWRdLFxuICAgICAgWyd0aWxlc2xvYWRlZCcsIHRoaXMudGlsZXNsb2FkZWRdLFxuICAgICAgWyd0aWx0X2NoYW5nZWQnLCB0aGlzLnRpbHRDaGFuZ2VkXSxcbiAgICAgIFsnem9vbUNoYW5nZWQnLCB0aGlzLnpvb21DaGFuZ2VkXSxcbiAgICBdKTtcbiAgICBjb25zdCBtb3VzZUV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+PihbXG4gICAgICBbJ2RibGNsaWNrJywgdGhpcy5tYXBEYmxjbGlja10sXG4gICAgICBbJ21vdXNlbW92ZScsIHRoaXMubWFwTW91c2Vtb3ZlXSxcbiAgICAgIFsnbW91c2VvdXQnLCB0aGlzLm1hcE1vdXNlb3V0XSxcbiAgICAgIFsnbW91c2VvdmVyJywgdGhpcy5tYXBNb3VzZW92ZXJdLFxuICAgICAgWydyaWdodGNsaWNrJywgdGhpcy5tYXBSaWdodGNsaWNrXSxcbiAgICBdKTtcbiAgICBldmVudEhhbmRsZXJzLmZvckVhY2goKGV2ZW50SGFuZGxlcjogRXZlbnRFbWl0dGVyPHZvaWQ+LCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChldmVudEhhbmRsZXIub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2godGhpcy5fZ29vZ2xlTWFwLmFkZExpc3RlbmVyKG5hbWUsICgpID0+IHtcbiAgICAgICAgICBldmVudEhhbmRsZXIuZW1pdCgpO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbW91c2VFdmVudEhhbmRsZXJzLmZvckVhY2goXG4gICAgICAgIChldmVudEhhbmRsZXI6IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PiwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50SGFuZGxlci5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5fZ29vZ2xlTWFwLmFkZExpc3RlbmVyKG5hbWUsIChldmVudDogZ29vZ2xlLm1hcHMuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgZXZlbnRIYW5kbGVyLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIGlmICh0aGlzLm1hcENsaWNrLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaCh0aGlzLl9nb29nbGVNYXAuYWRkTGlzdGVuZXIoXG4gICAgICAgICAgJ2NsaWNrJywgKGV2ZW50OiBnb29nbGUubWFwcy5Nb3VzZUV2ZW50fGdvb2dsZS5tYXBzLkljb25Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1hcENsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgICAgIH0pKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9nb29nbGUtbWFwcy9nb29nbGUtbWFwL2dvb2dsZS1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVNBLG9DQUFvQzs7Ozs7Ozs7OztBQUVwQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFakUsK0JBRUM7OztJQURDLGtDQUF1Qjs7Ozs7OztBQVF6QixzQ0FFQzs7O0lBREMsNkNBQWlDOzs7Ozs7QUFJbkMsTUFBTSxPQUFPLGVBQWUsR0FBMkI7SUFDckQsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUM7SUFDMUMsSUFBSSxFQUFFLEVBQUU7Q0FDVDs7Ozs7QUFHRCxNQUFNLE9BQU8sY0FBYyxHQUFHLE9BQU87Ozs7O0FBRXJDLE1BQU0sT0FBTyxhQUFhLEdBQUcsT0FBTzs7Ozs7O0FBYXBDLE1BQU0sT0FBTyxTQUFTOzs7O0lBNElwQixZQUE2QixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQTNJM0MsV0FBTSxHQUFHLGNBQWMsQ0FBQztRQUV4QixVQUFLLEdBQUcsYUFBYSxDQUFDOzs7OztRQW1CckIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDOzs7OztRQU16QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7Ozs7O1FBTXpDLGFBQVEsR0FBRyxJ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QTNIUCwyQkFBaUM7O0lBRWpDLDBCQUErQjs7Ozs7O0lBbUIvQixrQ0FBbUQ7Ozs7OztJQU1uRCxrQ0FBbUQ7Ozs7OztJQU1uRCw2QkFBMkY7Ozs7OztJQU0zRixnQ0FBbUU7Ozs7OztJQU1uRSw0QkFBNkM7Ozs7OztJQU03QywrQkFBZ0Q7Ozs7OztJQU1oRCxpQ0FBa0Q7Ozs7OztJQU1sRCxtQ0FBb0Q7Ozs7OztJQU1wRCx5QkFBMEM7Ozs7OztJQU0xQyxxQ0FBc0Q7Ozs7OztJQU10RCxpQ0FBb0U7Ozs7OztJQU1wRSxnQ0FBbUU7Ozs7OztJQU1uRSxpQ0FBb0U7Ozs7OztJQU1wRSxzQ0FBdUQ7Ozs7OztJQU12RCxrQ0FBcUU7Ozs7OztJQU1yRSxnQ0FBaUQ7Ozs7OztJQU1qRCxnQ0FBaUQ7Ozs7OztJQU1qRCxnQ0FBaUQ7Ozs7O0lBRWpELDJCQUE0Qjs7SUFDNUIsK0JBQThCOzs7OztJQUU5QixzQ0FBd0Q7Ozs7O0lBRXhELCtCQUFrRTs7Ozs7SUFFbEUsNkJBQXlGOzs7OztJQUN6Riw0QkFDMkY7Ozs7O0lBQzNGLDBCQUEwRTs7Ozs7SUFFMUUsNkJBQWdEOzs7OztJQUVwQyxnQ0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gV29ya2Fyb3VuZCBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYXplbGJ1aWxkL3J1bGVzX25vZGVqcy9pc3N1ZXMvMTI2NVxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJnb29nbGVtYXBzXCIgLz5cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgc2hhcmVSZXBsYXksIHRha2UsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbnRlcmZhY2UgR29vZ2xlTWFwc1dpbmRvdyBleHRlbmRzIFdpbmRvdyB7XG4gIGdvb2dsZT86IHR5cGVvZiBnb29nbGU7XG59XG5cbi8vIFRPRE8obWJlaHJsaWNoKTogVXBkYXRlIHRoaXMgdG8gdXNlIG9yaWdpbmFsIG1hcCBhZnRlciB1cGRhdGluZyBEZWZpbml0ZWx5VHlwZWRcbi8qKlxuICogRXh0ZW5kcyB0aGUgR29vZ2xlIE1hcCBpbnRlcmZhY2UgZHVlIHRvIHRoZSBEZWZpbml0ZWx5IFR5cGVkIGltcGxlbWVudGF0aW9uXG4gKiBtaXNzaW5nIFwiZ2V0Q2xpY2thYmxlSWNvbnNcIi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkR29vZ2xlTWFwIGV4dGVuZHMgZ29vZ2xlLm1hcHMuTWFwIHtcbiAgZ2V0Q2xpY2thYmxlSWNvbnM6ICgpID0+IGJvb2xlYW47XG59XG5cbi8qKiBkZWZhdWx0IG9wdGlvbnMgc2V0IHRvIHRoZSBHb29nbGVwbGV4ICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9PUFRJT05TOiBnb29nbGUubWFwcy5NYXBPcHRpb25zID0ge1xuICBjZW50ZXI6IHtsYXQ6IDM3LjQyMTk5NSwgbG5nOiAtMTIyLjA4NDA5Mn0sXG4gIHpvb206IDE3LFxufTtcblxuLyoqIEFyYml0cmFyeSBkZWZhdWx0IGhlaWdodCBmb3IgdGhlIG1hcCBlbGVtZW50ICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9IRUlHSFQgPSAnNTAwcHgnO1xuLyoqIEFyYml0cmFyeSBkZWZhdWx0IHdpZHRoIGZvciB0aGUgbWFwIGVsZW1lbnQgKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1dJRFRIID0gJzUwMHB4JztcblxuLyoqXG4gKiBBbmd1bGFyIGNvbXBvbmVudCB0aGF0IHJlbmRlcnMgYSBHb29nbGUgTWFwIHZpYSB0aGUgR29vZ2xlIE1hcHMgSmF2YVNjcmlwdFxuICogQVBJLlxuICogQHNlZSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dvb2dsZS1tYXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwibWFwLWNvbnRhaW5lclwiPjwvZGl2PjxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBHb29nbGVNYXAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaGVpZ2h0ID0gREVGQVVMVF9IRUlHSFQ7XG5cbiAgQElucHV0KCkgd2lkdGggPSBERUZBVUxUX1dJRFRIO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBjZW50ZXIoY2VudGVyOiBnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsfGdvb2dsZS5tYXBzLkxhdExuZykge1xuICAgIHRoaXMuX2NlbnRlci5uZXh0KGNlbnRlcik7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHpvb20oem9vbTogbnVtYmVyKSB7XG4gICAgdGhpcy5fem9vbS5uZXh0KHpvb20pO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IGdvb2dsZS5tYXBzLk1hcE9wdGlvbnMpIHtcbiAgICB0aGlzLl9vcHRpb25zLm5leHQob3B0aW9ucyB8fCBERUZBVUxUX09QVElPTlMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5ib3VuZHNfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGJvdW5kc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5jZW50ZXJfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGNlbnRlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5jbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50fGdvb2dsZS5tYXBzLkljb25Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZGJsY2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEYmxjbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmRyYWdcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEcmFnID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZHJhZ2VuZFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcERyYWdlbmQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5kcmFnc3RhcnRcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEcmFnc3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5oZWFkaW5nX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBoZWFkaW5nQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmlkbGVcbiAgICovXG4gIEBPdXRwdXQoKSBpZGxlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAubWFwdHlwZWlkX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBtYXB0eXBlaWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAubW91c2Vtb3ZlXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwTW91c2Vtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAubW91c2VvdXRcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBNb3VzZW91dCA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLm1vdXNlb3ZlclxuICAgKi9cbiAgQE91dHB1dCgpIG1hcE1vdXNlb3ZlciA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5wcm9qZWN0aW9uX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBwcm9qZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLnJpZ2h0Y2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBSaWdodGNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAudGlsZXNsb2FkZWRcbiAgICovXG4gIEBPdXRwdXQoKSB0aWxlc2xvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLnRpbHRfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHRpbHRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuem9vbV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgem9vbUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfbWFwRWw6IEhUTUxFbGVtZW50O1xuICBfZ29vZ2xlTWFwITogVXBkYXRlZEdvb2dsZU1hcDtcblxuICBwcml2YXRlIF9nb29nbGVNYXBDaGFuZ2VzITogT2JzZXJ2YWJsZTxnb29nbGUubWFwcy5NYXA+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RlbmVyczogZ29vZ2xlLm1hcHMuTWFwc0V2ZW50TGlzdGVuZXJbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGdvb2dsZS5tYXBzLk1hcE9wdGlvbnM+KERFRkFVTFRfT1BUSU9OUyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NlbnRlciA9XG4gICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWx8Z29vZ2xlLm1hcHMuTGF0TG5nfHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfem9vbSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyfHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgY29uc3QgZ29vZ2xlTWFwc1dpbmRvdzogR29vZ2xlTWFwc1dpbmRvdyA9IHdpbmRvdztcbiAgICBpZiAoIWdvb2dsZU1hcHNXaW5kb3cuZ29vZ2xlKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAnTmFtZXNwYWNlIGdvb2dsZSBub3QgZm91bmQsIGNhbm5vdCBjb25zdHJ1Y3QgZW1iZWRkZWQgZ29vZ2xlICcgK1xuICAgICAgICAgICdtYXAuIFBsZWFzZSBpbnN0YWxsIHRoZSBHb29nbGUgTWFwcyBKYXZhU2NyaXB0IEFQSTogJyArXG4gICAgICAgICAgJ2h0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0LycgK1xuICAgICAgICAgICd0dXRvcmlhbCNMb2FkaW5nX3RoZV9NYXBzX0FQSScpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuX3NldFNpemUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX21hcEVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXAtY29udGFpbmVyJykhO1xuICAgIHRoaXMuX3NldFNpemUoKTtcblxuICAgIGNvbnN0IGNvbWJpbmVkT3B0aW9uc0NoYW5nZXMgPSB0aGlzLl9jb21iaW5lT3B0aW9ucygpO1xuXG4gICAgdGhpcy5fZ29vZ2xlTWFwQ2hhbmdlcyA9IHRoaXMuX2luaXRpYWxpemVNYXAoY29tYmluZWRPcHRpb25zQ2hhbmdlcyk7XG4gICAgdGhpcy5fZ29vZ2xlTWFwQ2hhbmdlcy5zdWJzY3JpYmUoKGdvb2dsZU1hcDogZ29vZ2xlLm1hcHMuTWFwKSA9PiB7XG4gICAgICB0aGlzLl9nb29nbGVNYXAgPSBnb29nbGVNYXAgYXMgVXBkYXRlZEdvb2dsZU1hcDtcblxuICAgICAgdGhpcy5faW5pdGlhbGl6ZUV2ZW50SGFuZGxlcnMoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3dhdGNoRm9yT3B0aW9uc0NoYW5nZXMoKTtcbiAgICB0aGlzLl93YXRjaEZvckNlbnRlckNoYW5nZXMoKTtcbiAgICB0aGlzLl93YXRjaEZvclpvb21DaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgZm9yIChsZXQgbGlzdGVuZXIgb2YgdGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgICBsaXN0ZW5lci5yZW1vdmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmZpdEJvdW5kc1xuICAgKi9cbiAgZml0Qm91bmRzKFxuICAgICAgYm91bmRzOiBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHN8Z29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzTGl0ZXJhbCxcbiAgICAgIHBhZGRpbmc/OiBudW1iZXJ8Z29vZ2xlLm1hcHMuUGFkZGluZykge1xuICAgIHRoaXMuX2dvb2dsZU1hcC5maXRCb3VuZHMoYm91bmRzLCBwYWRkaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAucGFuQnlcbiAgICovXG4gIHBhbkJ5KHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwLnBhbkJ5KHgsIHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5wYW5Ub1xuICAgKi9cbiAgcGFuVG8obGF0TG5nOiBnb29nbGUubWFwcy5MYXRMbmd8Z29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbCkge1xuICAgIHRoaXMuX2dvb2dsZU1hcC5wYW5UbyhsYXRMbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5wYW5Ub0JvdW5kc1xuICAgKi9cbiAgcGFuVG9Cb3VuZHMoXG4gICAgICBsYXRMbmdCb3VuZHM6IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kc3xnb29nbGUubWFwcy5MYXRMbmdCb3VuZHNMaXRlcmFsLFxuICAgICAgcGFkZGluZz86IG51bWJlcnxnb29nbGUubWFwcy5QYWRkaW5nKSB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwLnBhblRvQm91bmRzKGxhdExuZ0JvdW5kcywgcGFkZGluZyk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldEJvdW5kc1xuICAgKi9cbiAgZ2V0Qm91bmRzKCk6IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kc3xudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldEJvdW5kcygpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldENlbnRlclxuICAgKi9cbiAgZ2V0Q2VudGVyKCk6IGdvb2dsZS5tYXBzLkxhdExuZyB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRDZW50ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0Q2xpY2thYmxlSWNvbnNcbiAgICovXG4gIGdldENsaWNrYWJsZUljb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0Q2xpY2thYmxlSWNvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0SGVhZGluZ1xuICAgKi9cbiAgZ2V0SGVhZGluZygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0SGVhZGluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRNYXBUeXBlSWRcbiAgICovXG4gIGdldE1hcFR5cGVJZCgpOiBnb29nbGUubWFwcy5NYXBUeXBlSWR8c3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldE1hcFR5cGVJZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRQcm9qZWN0aW9uXG4gICAqL1xuICBnZXRQcm9qZWN0aW9uKCk6IGdvb2dsZS5tYXBzLlByb2plY3Rpb258bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRQcm9qZWN0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldFN0cmVldFZpZXdcbiAgICovXG4gIGdldFN0cmVldFZpZXcoKTogZ29vZ2xlLm1hcHMuU3RyZWV0Vmlld1Bhbm9yYW1hIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldFN0cmVldFZpZXcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0VGlsdFxuICAgKi9cbiAgZ2V0VGlsdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0VGlsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRab29tXG4gICAqL1xuICBnZXRab29tKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRab29tKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmNvbnRyb2xzXG4gICAqL1xuICBnZXQgY29udHJvbHMoKTogQXJyYXk8Z29vZ2xlLm1hcHMuTVZDQXJyYXk8Tm9kZT4+IHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmNvbnRyb2xzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5kYXRhXG4gICAqL1xuICBnZXQgZGF0YSgpOiBnb29nbGUubWFwcy5EYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmRhdGE7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLm1hcFR5cGVzXG4gICAqL1xuICBnZXQgbWFwVHlwZXMoKTogZ29vZ2xlLm1hcHMuTWFwVHlwZVJlZ2lzdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLm1hcFR5cGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5vdmVybGF5TWFwVHlwZXNcbiAgICovXG4gIGdldCBvdmVybGF5TWFwVHlwZXMoKTogZ29vZ2xlLm1hcHMuTVZDQXJyYXk8Z29vZ2xlLm1hcHMuTWFwVHlwZT4ge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAub3ZlcmxheU1hcFR5cGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0U2l6ZSgpIHtcbiAgICBpZiAodGhpcy5fbWFwRWwpIHtcbiAgICAgIHRoaXMuX21hcEVsLnN0eWxlLmhlaWdodCA9IHRoaXMuaGVpZ2h0IHx8IERFRkFVTFRfSEVJR0hUO1xuICAgICAgdGhpcy5fbWFwRWwuc3R5bGUud2lkdGggPSB0aGlzLndpZHRoIHx8IERFRkFVTFRfV0lEVEg7XG4gICAgfVxuICB9XG5cbiAgLyoqIENvbWJpbmVzIHRoZSBjZW50ZXIgYW5kIHpvb20gYW5kIHRoZSBvdGhlciBtYXAgb3B0aW9ucyBpbnRvIGEgc2luZ2xlIG9iamVjdCAqL1xuICBwcml2YXRlIF9jb21iaW5lT3B0aW9ucygpOiBPYnNlcnZhYmxlPGdvb2dsZS5tYXBzLk1hcE9wdGlvbnM+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5fb3B0aW9ucywgdGhpcy5fY2VudGVyLCB0aGlzLl96b29tXSlcbiAgICAgICAgLnBpcGUobWFwKChbb3B0aW9ucywgY2VudGVyLCB6b29tXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbWJpbmVkT3B0aW9uczogZ29vZ2xlLm1hcHMuTWFwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBjZW50ZXI6IGNlbnRlciB8fCBvcHRpb25zLmNlbnRlcixcbiAgICAgICAgICAgIHpvb206IHpvb20gIT09IHVuZGVmaW5lZCA/IHpvb20gOiBvcHRpb25zLnpvb20sXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gY29tYmluZWRPcHRpb25zO1xuICAgICAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplTWFwKG9wdGlvbnNDaGFuZ2VzOiBPYnNlcnZhYmxlPGdvb2dsZS5tYXBzLk1hcE9wdGlvbnM+KTpcbiAgICAgIE9ic2VydmFibGU8Z29vZ2xlLm1hcHMuTWFwPiB7XG4gICAgcmV0dXJuIG9wdGlvbnNDaGFuZ2VzLnBpcGUoXG4gICAgICAgIHRha2UoMSksIG1hcChvcHRpb25zID0+IHtcbiAgICAgICAgICByZXR1cm4gbmV3IGdvb2dsZS5tYXBzLk1hcCh0aGlzLl9tYXBFbCwgb3B0aW9ucyk7XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvck9wdGlvbnNDaGFuZ2VzKCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2dvb2dsZU1hcENoYW5nZXMsIHRoaXMuX29wdGlvbnNdKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKFtnb29nbGVNYXAsIG9wdGlvbnNdKSA9PiB7XG4gICAgICAgICAgZ29vZ2xlTWFwLnNldE9wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2F0Y2hGb3JDZW50ZXJDaGFuZ2VzKCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2dvb2dsZU1hcENoYW5nZXMsIHRoaXMuX2NlbnRlcl0pXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSlcbiAgICAgICAgLnN1YnNjcmliZSgoW2dvb2dsZU1hcCwgY2VudGVyXSkgPT4ge1xuICAgICAgICAgIGlmIChjZW50ZXIpIHtcbiAgICAgICAgICAgIGdvb2dsZU1hcC5zZXRDZW50ZXIoY2VudGVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2F0Y2hGb3Jab29tQ2hhbmdlcygpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9nb29nbGVNYXBDaGFuZ2VzLCB0aGlzLl96b29tXSlcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZ29vZ2xlTWFwLCB6b29tXSkgPT4ge1xuICAgICAgICAgIGlmICh6b29tICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGdvb2dsZU1hcC5zZXRab29tKHpvb20pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplRXZlbnRIYW5kbGVycygpIHtcbiAgICBjb25zdCBldmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50RW1pdHRlcjx2b2lkPj4oW1xuICAgICAgWydib3VuZHNfY2hhbmdlZCcsIHRoaXMuYm91bmRzQ2hhbmdlZF0sXG4gICAgICBbJ2NlbnRlcl9jaGFuZ2VkJywgdGhpcy5jZW50ZXJDaGFuZ2VkXSxcbiAgICAgIFsnZHJhZycsIHRoaXMubWFwRHJhZ10sXG4gICAgICBbJ2RyYWdlbmQnLCB0aGlzLm1hcERyYWdlbmRdLFxuICAgICAgWydkcmFnc3RhcnQnLCB0aGlzLm1hcERyYWdzdGFydF0sXG4gICAgICBbJ2hlYWRpbmdfY2hhbmdlZCcsIHRoaXMuaGVhZGluZ0NoYW5nZWRdLFxuICAgICAgWydpZGxlJywgdGhpcy5pZGxlXSxcbiAgICAgIFsnbWFwdHlwZWlkX2NoYW5nZWQnLCB0aGlzLm1hcHR5cGVpZENoYW5nZWRdLFxuICAgICAgWydwcm9qZWN0aW9uX2NoYW5nZWQnLCB0aGlzLnByb2plY3Rpb25DaGFuZ2VkXSxcbiAgICAgIFsndGlsZXNsb2FkZWQnLCB0aGlzLnRpbGVzbG9hZGVkXSxcbiAgICAgIFsndGlsdF9jaGFuZ2VkJywgdGhpcy50aWx0Q2hhbmdlZF0sXG4gICAgICBbJ3pvb21DaGFuZ2VkJywgdGhpcy56b29tQ2hhbmdlZF0sXG4gICAgXSk7XG4gICAgY29uc3QgbW91c2VFdmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50Pj4oW1xuICAgICAgWydkYmxjbGljaycsIHRoaXMubWFwRGJsY2xpY2tdLFxuICAgICAgWydtb3VzZW1vdmUnLCB0aGlzLm1hcE1vdXNlbW92ZV0sXG4gICAgICBbJ21vdXNlb3V0JywgdGhpcy5tYXBNb3VzZW91dF0sXG4gICAgICBbJ21vdXNlb3ZlcicsIHRoaXMubWFwTW91c2VvdmVyXSxcbiAgICAgIFsncmlnaHRjbGljaycsIHRoaXMubWFwUmlnaHRjbGlja10sXG4gICAgXSk7XG4gICAgZXZlbnRIYW5kbGVycy5mb3JFYWNoKChldmVudEhhbmRsZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoZXZlbnRIYW5kbGVyLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKHRoaXMuX2dvb2dsZU1hcC5hZGRMaXN0ZW5lcihuYW1lLCAoKSA9PiB7XG4gICAgICAgICAgZXZlbnRIYW5kbGVyLmVtaXQoKTtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG1vdXNlRXZlbnRIYW5kbGVycy5mb3JFYWNoKFxuICAgICAgICAoZXZlbnRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmIChldmVudEhhbmRsZXIub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuX2dvb2dsZU1hcC5hZGRMaXN0ZW5lcihuYW1lLCAoZXZlbnQ6IGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxlci5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICBpZiAodGhpcy5tYXBDbGljay5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2godGhpcy5fZ29vZ2xlTWFwLmFkZExpc3RlbmVyKFxuICAgICAgICAgICdjbGljaycsIChldmVudDogZ29vZ2xlLm1hcHMuTW91c2VFdmVudHxnb29nbGUubWFwcy5JY29uTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tYXBDbGljay5lbWl0KGV2ZW50KTtcbiAgICAgICAgICB9KSk7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -25,7 +25,7 @@ /**

/**
* @param {?} googleMap
* @param {?} _googleMap
* @param {?} _elementRef
*/
constructor(googleMap, _elementRef) {
this.googleMap = googleMap;
constructor(_googleMap, _elementRef) {
this._googleMap = _googleMap;
this._elementRef = _elementRef;

@@ -151,5 +151,5 @@ /**

const marker = anchor ? anchor._marker : undefined;
if (this.googleMap._googleMap) {
if (this._googleMap._googleMap) {
this._elementRef.nativeElement.style.display = '';
(/** @type {?} */ (this._infoWindow)).open(this.googleMap._googleMap, marker);
(/** @type {?} */ (this._infoWindow)).open(this._googleMap._googleMap, marker);
}

@@ -285,3 +285,3 @@ }

*/
MapInfoWindow.prototype.googleMap;
MapInfoWindow.prototype._googleMap;
/**

@@ -293,2 +293,2 @@ * @type {?}

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWluZm8td2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2dvb2dsZS1tYXBzL21hcC1pbmZvLXdpbmRvdy9tYXAtaW5mby13aW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVNBLG9DQUFvQzs7Ozs7Ozs7OztBQUVwQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBV25ELE1BQU0sT0FBTyxhQUFhOzs7OztJQXNEeEIsWUFBNkIsU0FBb0IsRUFBVSxXQUFvQztRQUFsRSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQXlCOzs7OztRQXZDckYsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7Ozs7OztRQU90QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7Ozs7O1FBTTFDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDOzs7Ozs7UUFPcEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDOzs7Ozs7UUFPM0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBZ0MsRUFBRSxDQUFDLENBQUM7UUFDbEUsY0FBUyxHQUN0QixJQUFJLGVBQWUsQ0FBeUQsU0FBUyxDQUFDLENBQUM7UUFFMUUsZUFBVSxHQUFvQyxFQUFFLENBQUM7UUFFakQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENB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SUFFbEUsaUNBQWdEOzs7OztJQUVoRCxvQ0FBNkM7Ozs7O0lBRWpDLGtDQUFxQzs7Ozs7SUFBRSxvQ0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gV29ya2Fyb3VuZCBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYXplbGJ1aWxkL3J1bGVzX25vZGVqcy9pc3N1ZXMvMTI2NVxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJnb29nbGVtYXBzXCIgLz5cblxuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtHb29nbGVNYXB9IGZyb20gJy4uL2dvb2dsZS1tYXAvZ29vZ2xlLW1hcCc7XG5pbXBvcnQge01hcE1hcmtlcn0gZnJvbSAnLi4vbWFwLW1hcmtlci9tYXAtbWFya2VyJztcblxuLyoqXG4gKiBBbmd1bGFyIGNvbXBvbmVudCB0aGF0IHJlbmRlcnMgYSBHb29nbGUgTWFwcyBpbmZvIHdpbmRvdyB2aWEgdGhlIEdvb2dsZSBNYXBzIEphdmFTY3JpcHQgQVBJLlxuICogQHNlZSBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL2luZm8td2luZG93XG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ21hcC1pbmZvLXdpbmRvdycsXG4gIGhvc3Q6IHsnc3R5bGUnOiAnZGlzcGxheTogbm9uZSd9LFxufSlcbmV4cG9ydCBjbGFzcyBNYXBJbmZvV2luZG93IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyhvcHRpb25zOiBnb29nbGUubWFwcy5JbmZvV2luZG93T3B0aW9ucykge1xuICAgIHRoaXMuX29wdGlvbnMubmV4dChvcHRpb25zIHx8IHt9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwb3NpdGlvbihwb3NpdGlvbjogZ29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbHxnb29nbGUubWFwcy5MYXRMbmcpIHtcbiAgICB0aGlzLl9wb3NpdGlvbi5uZXh0KHBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvdyNJbmZvV2luZG93LmNsb3NlY2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBjbG9zZWNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvd1xuICAgKiAjSW5mb1dpbmRvdy5jb250ZW50X2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBjb250ZW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvaW5mby13aW5kb3cjSW5mb1dpbmRvdy5kb21yZWFkeVxuICAgKi9cbiAgQE91dHB1dCgpIGRvbXJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvd1xuICAgKiAjSW5mb1dpbmRvdy5wb3NpdGlvbl9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcG9zaXRpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvd1xuICAgKiAjSW5mb1dpbmRvdy56aW5kZXhfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHppbmRleENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Z29vZ2xlLm1hcHMuSW5mb1dpbmRvd09wdGlvbnM+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcG9zaXRpb24gPVxuICAgICAgbmV3IEJlaGF2aW9yU3ViamVjdDxnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsfGdvb2dsZS5tYXBzLkxhdExuZ3x1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiBnb29nbGUubWFwcy5NYXBzRXZlbnRMaXN0ZW5lcltdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfaW5mb1dpbmRvdz86IGdvb2dsZS5tYXBzLkluZm9XaW5kb3c7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBnb29nbGVNYXA6IEdvb2dsZU1hcCwgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2NvbWJpbmVPcHRpb25zKCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgIGlmICh0aGlzLl9pbmZvV2luZG93KSB7XG4gICAgICAgIHRoaXMuX2luZm9XaW5kb3cuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2luZm9XaW5kb3cgPSBuZXcgZ29vZ2xlLm1hcHMuSW5mb1dpbmRvdyhvcHRpb25zKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUV2ZW50SGFuZGxlcnMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiB0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyLnJlbW92ZSgpO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvaW5mby13aW5kb3cjSW5mb1dpbmRvdy5jbG9zZVxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuX2luZm9XaW5kb3cpIHtcbiAgICAgIHRoaXMuX2luZm9XaW5kb3cuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvaW5mby13aW5kb3cjSW5mb1dpbmRvdy5nZXRDb250ZW50XG4gICAqL1xuICBnZXRDb250ZW50KCk6IHN0cmluZ3xOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5faW5mb1dpbmRvdyEuZ2V0Q29udGVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL2luZm8td2luZG93XG4gICAqICNJbmZvV2luZG93LmdldFBvc2l0aW9uXG4gICAqL1xuICBnZXRQb3NpdGlvbigpOiBnb29nbGUubWFwcy5MYXRMbmd8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2luZm9XaW5kb3chLmdldFBvc2l0aW9uKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvdyNJbmZvV2luZG93LmdldFpJbmRleFxuICAgKi9cbiAgZ2V0WkluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2luZm9XaW5kb3chLmdldFpJbmRleCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBNYXBJbmZvV2luZG93IHVzaW5nIHRoZSBwcm92aWRlZCBNYXBNYXJrZXIgYXMgdGhlIGFuY2hvci4gSWYgdGhlIGFuY2hvciBpcyBub3Qgc2V0LFxuICAgKiB0aGVuIHRoZSBwb3NpdGlvbiBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9ucyBpbnB1dCBpcyB1c2VkIGluc3RlYWQuXG4gICAqL1xuICBvcGVuKGFuY2hvcj86IE1hcE1hcmtlcikge1xuICAgIGNvbnN0IG1hcmtlciA9IGFuY2hvciA/IGFuY2hvci5fbWFya2VyIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLmdvb2dsZU1hcC5fZ29vZ2xlTWFwKSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICcnO1xuICAgICAgdGhpcy5faW5mb1dpbmRvdyEub3Blbih0aGlzLmdvb2dsZU1hcC5fZ29vZ2xlTWFwLCBtYXJrZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbWJpbmVPcHRpb25zKCk6IE9ic2VydmFibGU8Z29vZ2xlLm1hcHMuSW5mb1dpbmRvd09wdGlvbnM+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5fb3B0aW9ucywgdGhpcy5fcG9zaXRpb25dKS5waXBlKG1hcCgoW29wdGlvbnMsIHBvc2l0aW9uXSkgPT4ge1xuICAgICAgY29uc3QgY29tYmluZWRPcHRpb25zOiBnb29nbGUubWFwcy5JbmZvV2luZG93T3B0aW9ucyA9IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uIHx8IG9wdGlvbnMucG9zaXRpb24sXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIH07XG4gICAgICByZXR1cm4gY29tYmluZWRPcHRpb25zO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVFdmVudEhhbmRsZXJzKCkge1xuICAgIGNvbnN0IGV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgRXZlbnRFbWl0dGVyPHZvaWQ+PihbXG4gICAgICBbJ2Nsb3NlY2xpY2snLCB0aGlzLmNsb3NlY2xpY2tdLFxuICAgICAgWydjb250ZW50X2NoYW5nZWQnLCB0aGlzLmNvbnRlbnRDaGFuZ2VkXSxcbiAgICAgIFsnZG9tcmVhZHknLCB0aGlzLmRvbXJlYWR5XSxcbiAgICAgIFsncG9zaXRpb25fY2hhbmdlZCcsIHRoaXMucG9zaXRpb25DaGFuZ2VkXSxcbiAgICAgIFsnemluZGV4X2NoYW5nZWQnLCB0aGlzLnppbmRleENoYW5nZWRdLFxuICAgIF0pO1xuICAgIGV2ZW50SGFuZGxlcnMuZm9yRWFjaCgoZXZlbnRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGV2ZW50SGFuZGxlci5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaCh0aGlzLl9pbmZvV2luZG93IS5hZGRMaXN0ZW5lcihuYW1lLCAoKSA9PiB7XG4gICAgICAgICAgZXZlbnRIYW5kbGVyLmVtaXQoKTtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWluZm8td2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2dvb2dsZS1tYXBzL21hcC1pbmZvLXdpbmRvdy9tYXAtaW5mby13aW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVNBLG9DQUFvQzs7Ozs7Ozs7OztBQUVwQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBV25ELE1BQU0sT0FBTyxhQUFhOzs7OztJQXNEeEIsWUFBNkIsVUFBcUIsRUFDOUIsV0FBb0M7UUFEM0IsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7Ozs7O1FBeEM5QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQzs7Ozs7O1FBT3RDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQzs7Ozs7UUFNMUMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7Ozs7OztRQU9wQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7Ozs7OztRQU8zQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbEMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFnQyxFQUFFLENBQUMsQ0FBQztRQUNsRSxjQUFTLEdBQ3RCLElBQUksZUFBZSxDQUF5RCxTQUFTLENBQUMsQ0FBQztRQUUxRSxlQUFVLEdBQW9DLEVBQUUsQ0FBQztRQUVqRCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEs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OztJQUVsRSxpQ0FBZ0Q7Ozs7O0lBRWhELG9DQUE2Qzs7Ozs7SUFFakMsbUNBQXNDOzs7OztJQUN0QyxvQ0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gV29ya2Fyb3VuZCBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYXplbGJ1aWxkL3J1bGVzX25vZGVqcy9pc3N1ZXMvMTI2NVxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJnb29nbGVtYXBzXCIgLz5cblxuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtHb29nbGVNYXB9IGZyb20gJy4uL2dvb2dsZS1tYXAvZ29vZ2xlLW1hcCc7XG5pbXBvcnQge01hcE1hcmtlcn0gZnJvbSAnLi4vbWFwLW1hcmtlci9tYXAtbWFya2VyJztcblxuLyoqXG4gKiBBbmd1bGFyIGNvbXBvbmVudCB0aGF0IHJlbmRlcnMgYSBHb29nbGUgTWFwcyBpbmZvIHdpbmRvdyB2aWEgdGhlIEdvb2dsZSBNYXBzIEphdmFTY3JpcHQgQVBJLlxuICogQHNlZSBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL2luZm8td2luZG93XG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ21hcC1pbmZvLXdpbmRvdycsXG4gIGhvc3Q6IHsnc3R5bGUnOiAnZGlzcGxheTogbm9uZSd9LFxufSlcbmV4cG9ydCBjbGFzcyBNYXBJbmZvV2luZG93IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyhvcHRpb25zOiBnb29nbGUubWFwcy5JbmZvV2luZG93T3B0aW9ucykge1xuICAgIHRoaXMuX29wdGlvbnMubmV4dChvcHRpb25zIHx8IHt9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwb3NpdGlvbihwb3NpdGlvbjogZ29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbHxnb29nbGUubWFwcy5MYXRMbmcpIHtcbiAgICB0aGlzLl9wb3NpdGlvbi5uZXh0KHBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvdyNJbmZvV2luZG93LmNsb3NlY2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBjbG9zZWNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvd1xuICAgKiAjSW5mb1dpbmRvdy5jb250ZW50X2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBjb250ZW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvaW5mby13aW5kb3cjSW5mb1dpbmRvdy5kb21yZWFkeVxuICAgKi9cbiAgQE91dHB1dCgpIGRvbXJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvd1xuICAgKiAjSW5mb1dpbmRvdy5wb3NpdGlvbl9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcG9zaXRpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvd1xuICAgKiAjSW5mb1dpbmRvdy56aW5kZXhfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHppbmRleENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Z29vZ2xlLm1hcHMuSW5mb1dpbmRvd09wdGlvbnM+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcG9zaXRpb24gPVxuICAgICAgbmV3IEJlaGF2aW9yU3ViamVjdDxnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsfGdvb2dsZS5tYXBzLkxhdExuZ3x1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiBnb29nbGUubWFwcy5NYXBzRXZlbnRMaXN0ZW5lcltdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfaW5mb1dpbmRvdz86IGdvb2dsZS5tYXBzLkluZm9XaW5kb3c7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfZ29vZ2xlTWFwOiBHb29nbGVNYXAsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2NvbWJpbmVPcHRpb25zKCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgIGlmICh0aGlzLl9pbmZvV2luZG93KSB7XG4gICAgICAgIHRoaXMuX2luZm9XaW5kb3cuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2luZm9XaW5kb3cgPSBuZXcgZ29vZ2xlLm1hcHMuSW5mb1dpbmRvdyhvcHRpb25zKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUV2ZW50SGFuZGxlcnMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiB0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyLnJlbW92ZSgpO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvaW5mby13aW5kb3cjSW5mb1dpbmRvdy5jbG9zZVxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuX2luZm9XaW5kb3cpIHtcbiAgICAgIHRoaXMuX2luZm9XaW5kb3cuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvaW5mby13aW5kb3cjSW5mb1dpbmRvdy5nZXRDb250ZW50XG4gICAqL1xuICBnZXRDb250ZW50KCk6IHN0cmluZ3xOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5faW5mb1dpbmRvdyEuZ2V0Q29udGVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL2luZm8td2luZG93XG4gICAqICNJbmZvV2luZG93LmdldFBvc2l0aW9uXG4gICAqL1xuICBnZXRQb3NpdGlvbigpOiBnb29nbGUubWFwcy5MYXRMbmd8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2luZm9XaW5kb3chLmdldFBvc2l0aW9uKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvdyNJbmZvV2luZG93LmdldFpJbmRleFxuICAgKi9cbiAgZ2V0WkluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2luZm9XaW5kb3chLmdldFpJbmRleCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBNYXBJbmZvV2luZG93IHVzaW5nIHRoZSBwcm92aWRlZCBNYXBNYXJrZXIgYXMgdGhlIGFuY2hvci4gSWYgdGhlIGFuY2hvciBpcyBub3Qgc2V0LFxuICAgKiB0aGVuIHRoZSBwb3NpdGlvbiBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9ucyBpbnB1dCBpcyB1c2VkIGluc3RlYWQuXG4gICAqL1xuICBvcGVuKGFuY2hvcj86IE1hcE1hcmtlcikge1xuICAgIGNvbnN0IG1hcmtlciA9IGFuY2hvciA/IGFuY2hvci5fbWFya2VyIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLl9nb29nbGVNYXAuX2dvb2dsZU1hcCkge1xuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgIHRoaXMuX2luZm9XaW5kb3chLm9wZW4odGhpcy5fZ29vZ2xlTWFwLl9nb29nbGVNYXAsIG1hcmtlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29tYmluZU9wdGlvbnMoKTogT2JzZXJ2YWJsZTxnb29nbGUubWFwcy5JbmZvV2luZG93T3B0aW9ucz4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLl9vcHRpb25zLCB0aGlzLl9wb3NpdGlvbl0pLnBpcGUobWFwKChbb3B0aW9ucywgcG9zaXRpb25dKSA9PiB7XG4gICAgICBjb25zdCBjb21iaW5lZE9wdGlvbnM6IGdvb2dsZS5tYXBzLkluZm9XaW5kb3dPcHRpb25zID0ge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24gfHwgb3B0aW9ucy5wb3NpdGlvbixcbiAgICAgICAgY29udGVudDogdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgfTtcbiAgICAgIHJldHVybiBjb21iaW5lZE9wdGlvbnM7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUV2ZW50SGFuZGxlcnMoKSB7XG4gICAgY29uc3QgZXZlbnRIYW5kbGVycyA9IG5ldyBNYXA8c3RyaW5nLCBFdmVudEVtaXR0ZXI8dm9pZD4+KFtcbiAgICAgIFsnY2xvc2VjbGljaycsIHRoaXMuY2xvc2VjbGlja10sXG4gICAgICBbJ2NvbnRlbnRfY2hhbmdlZCcsIHRoaXMuY29udGVudENoYW5nZWRdLFxuICAgICAgWydkb21yZWFkeScsIHRoaXMuZG9tcmVhZHldLFxuICAgICAgWydwb3NpdGlvbl9jaGFuZ2VkJywgdGhpcy5wb3NpdGlvbkNoYW5nZWRdLFxuICAgICAgWyd6aW5kZXhfY2hhbmdlZCcsIHRoaXMuemluZGV4Q2hhbmdlZF0sXG4gICAgXSk7XG4gICAgZXZlbnRIYW5kbGVycy5mb3JFYWNoKChldmVudEhhbmRsZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoZXZlbnRIYW5kbGVyLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKHRoaXMuX2luZm9XaW5kb3chLmFkZExpc3RlbmVyKG5hbWUsICgpID0+IHtcbiAgICAgICAgICBldmVudEhhbmRsZXIuZW1pdCgpO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==

@@ -33,6 +33,6 @@ /**

/**
* @param {?} googleMap
* @param {?} _googleMap
*/
constructor(googleMap) {
this.googleMap = googleMap;
constructor(_googleMap) {
this._googleMap = _googleMap;
/**

@@ -198,3 +198,3 @@ * See

this._marker = new google.maps.Marker(options);
this._marker.setMap(this.googleMap._googleMap);
this._marker.setMap(this._googleMap._googleMap);
this._initializeEventHandlers();

@@ -329,3 +329,3 @@ }));

/** @type {?} */
const combinedOptions = Object.assign(Object.assign({}, options), { title: title || options.title, position: position || options.position, label: label || options.label, clickable: clickable !== undefined ? clickable : options.clickable, map: this.googleMap._googleMap || null });
const combinedOptions = Object.assign(Object.assign({}, options), { title: title || options.title, position: position || options.position, label: label || options.label, clickable: clickable !== undefined ? clickable : options.clickable, map: this._googleMap._googleMap || null });
return combinedOptions;

@@ -476,3 +476,2 @@ })));

{ type: Component, args: [{
moduleId: module.id,
selector: 'map-marker',

@@ -684,4 +683,4 @@ template: '<ng-content></ng-content>',

*/
MapMarker.prototype.googleMap;
MapMarker.prototype._googleMap;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLW1hcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9nb29nbGUtbWFwcy9tYXAtbWFya2VyL21hcC1tYXJrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVNBLG9DQUFvQzs7Ozs7Ozs7OztBQUVwQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBTW5ELE1BQU0sT0FBTyxzQkFBc0IsR0FBRztJQUNwQyxRQUFRLEVBQUUsRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBQztDQUM3Qzs7Ozs7QUFhRCxNQUFNLE9BQU8sU0FBUzs7OztJQXVLcEIsWUFBNkIsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVzs7Ozs7UUF6SXZDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7Ozs7O1FBTTVDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQzs7Ozs7UUFNdEQscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQzs7Ozs7UUFNNUMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDOzs7OztRQU16QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDOzs7OztRQU16RCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7Ozs7O1FBTXJELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBMEIs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Ozs7O0lBTXRELDZCQUFnRTs7Ozs7O0lBTWhFLHFDQUFzRDs7Ozs7O0lBTXRELGtDQUFtRDs7Ozs7O0lBTW5ELGdDQUFtRTs7Ozs7O0lBTW5FLDRCQUErRDs7Ozs7O0lBTS9ELCtCQUFrRTs7Ozs7O0lBTWxFLHFDQUFzRDs7Ozs7O0lBTXRELGlDQUFvRTs7Ozs7O0lBTXBFLGdDQUFpRDs7Ozs7O0lBTWpELGdDQUFpRDs7Ozs7O0lBTWpELGlDQUFvRTs7Ozs7O0lBTXBFLGdDQUFtRTs7Ozs7O0lBTW5FLGlDQUFvRTs7Ozs7O0lBTXBFLCtCQUFrRTs7Ozs7O0lBTWxFLG9DQUFxRDs7Ozs7O0lBTXJELGtDQUFxRTs7Ozs7O0lBTXJFLGlDQUFrRDs7Ozs7O0lBTWxELGlDQUFrRDs7Ozs7O0lBTWxELG1DQUFvRDs7Ozs7O0lBTXBELGtDQUFtRDs7Ozs7SUFFbkQsNkJBQzJFOzs7OztJQUMzRSwyQkFBMkU7Ozs7O0lBQzNFLDhCQUMyRjs7Ozs7SUFDM0YsMkJBQzZFOzs7OztJQUM3RSwrQkFBZ0Y7Ozs7O0lBRWhGLDZCQUFnRDs7Ozs7SUFFaEQsK0JBQWtFOztJQUVsRSw0QkFBNkI7Ozs7O0lBRWpCLDhCQUFxQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vLyBXb3JrYXJvdW5kIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2JhemVsYnVpbGQvcnVsZXNfbm9kZWpzL2lzc3Vlcy8xMjY1XG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cImdvb2dsZW1hcHNcIiAvPlxuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YWtlLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtHb29nbGVNYXB9IGZyb20gJy4uL2dvb2dsZS1tYXAvZ29vZ2xlLW1hcCc7XG5cbi8qKlxuICogRGVmYXVsdCBvcHRpb25zIGZvciB0aGUgR29vZ2xlIE1hcHMgbWFya2VyIGNvbXBvbmVudC4gRGlzcGxheXMgYSBtYXJrZXJcbiAqIGF0IHRoZSBHb29nbGVwbGV4LlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVJLRVJfT1BUSU9OUyA9IHtcbiAgcG9zaXRpb246IHtsYXQ6IDM3LjQyMTk5NSwgbG5nOiAtMTIyLjA4NDA5Mn0sXG59O1xuXG4vKipcbiAqIEFuZ3VsYXIgY29tcG9uZW50IHRoYXQgcmVuZGVycyBhIEdvb2dsZSBNYXBzIG1hcmtlciB2aWEgdGhlIEdvb2dsZSBNYXBzIEphdmFTY3JpcHQgQVBJLlxuICogQHNlZSBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlclxuICovXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6ICdtYXAtbWFya2VyJyxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE1hcE1hcmtlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgc2V0IG9wdGlvbnMob3B0aW9uczogZ29vZ2xlLm1hcHMuTWFya2VyT3B0aW9ucykge1xuICAgIHRoaXMuX29wdGlvbnMubmV4dChvcHRpb25zIHx8IERFRkFVTFRfTUFSS0VSX09QVElPTlMpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHRpdGxlKHRpdGxlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90aXRsZS5uZXh0KHRpdGxlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwb3NpdGlvbihwb3NpdGlvbjogZ29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbHxnb29nbGUubWFwcy5MYXRMbmcpIHtcbiAgICB0aGlzLl9wb3NpdGlvbi5uZXh0KHBvc2l0aW9uKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBsYWJlbChsYWJlbDogc3RyaW5nfGdvb2dsZS5tYXBzLk1hcmtlckxhYmVsKSB7XG4gICAgdGhpcy5fbGFiZWwubmV4dChsYWJlbCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgY2xpY2thYmxlKGNsaWNrYWJsZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2NsaWNrYWJsZS5uZXh0KGNsaWNrYWJsZSk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5hbmltYXRpb25fY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGFuaW1hdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuY2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5jbGlja2FibGVfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGNsaWNrYWJsZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuY3Vyc29yX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBjdXJzb3JDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmRibGNsaWNrXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwRGJsY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZHJhZ1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcERyYWcgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZHJhZ2VuZFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcERyYWdlbmQgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZHJhZ2dhYmxlX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBkcmFnZ2FibGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmRyYWdzdGFydFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcERyYWdzdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5mbGF0X2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBmbGF0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5pY29uX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBpY29uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5tb3VzZWRvd25cbiAgICovXG4gIEBPdXRwdXQoKSBtYXBNb3VzZWRvd24gPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIubW91c2VvdXRcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBNb3VzZW91dCA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5tb3VzZW92ZXJcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBNb3VzZW92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIubW91c2V1cFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcE1vdXNldXAgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIucG9zaXRpb25fY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHBvc2l0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5yaWdodGNsaWNrXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwUmlnaHRjbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5zaGFwZV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgc2hhcGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLnRpdGxlX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSB0aXRsZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIudmlzaWJsZV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuemluZGV4X2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSB6aW5kZXhDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnMgPVxuICAgICAgbmV3IEJlaGF2aW9yU3ViamVjdDxnb29nbGUubWFwcy5NYXJrZXJPcHRpb25zPihERUZBVUxUX01BUktFUl9PUFRJT05TKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGl0bGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ3x1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Bvc2l0aW9uID1cbiAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Z29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbHxnb29nbGUubWFwcy5MYXRMbmd8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sYWJlbCA9XG4gICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ3xnb29nbGUubWFwcy5NYXJrZXJMYWJlbHx1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NsaWNrYWJsZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbnx1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiBnb29nbGUubWFwcy5NYXBzRXZlbnRMaXN0ZW5lcltdID0gW107XG5cbiAgX21hcmtlcj86IGdvb2dsZS5tYXBzLk1hcmtlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGdvb2dsZU1hcDogR29vZ2xlTWFwKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGNvbWJpbmVkT3B0aW9uc0NoYW5nZXMgPSB0aGlzLl9jb21iaW5lT3B0aW9ucygpO1xuXG4gICAgY29tYmluZWRPcHRpb25zQ2hhbmdlcy5waXBlKHRha2UoMSkpLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgIHRoaXMuX21hcmtlciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIob3B0aW9ucyk7XG4gICAgICB0aGlzLl9tYXJrZXIuc2V0TWFwKHRoaXMuZ29vZ2xlTWFwLl9nb29nbGVNYXApO1xuICAgICAgdGhpcy5faW5pdGlhbGl6ZUV2ZW50SGFuZGxlcnMoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3dhdGNoRm9yT3B0aW9uc0NoYW5nZXMoKTtcbiAgICB0aGlzLl93YXRjaEZvclRpdGxlQ2hhbmdlcygpO1xuICAgIHRoaXMuX3dhdGNoRm9yUG9zaXRpb25DaGFuZ2VzKCk7XG4gICAgdGhpcy5fd2F0Y2hGb3JMYWJlbENoYW5nZXMoKTtcbiAgICB0aGlzLl93YXRjaEZvckNsaWNrYWJsZUNoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiB0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyLnJlbW92ZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbWFya2VyKSB7XG4gICAgICB0aGlzLl9tYXJrZXIuc2V0TWFwKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldEFuaW1hdGlvblxuICAgKi9cbiAgZ2V0QW5pbWF0aW9uKCk6IGdvb2dsZS5tYXBzLkFuaW1hdGlvbnxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRBbmltYXRpb24oKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0Q2xpY2thYmxlXG4gICAqL1xuICBnZXRDbGlja2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0Q2xpY2thYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRDdXJzb3JcbiAgICovXG4gIGdldEN1cnNvcigpOiBzdHJpbmd8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0Q3Vyc29yKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldERyYWdnYWJsZVxuICAgKi9cbiAgZ2V0RHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX21hcmtlciEuZ2V0RHJhZ2dhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRJY29uXG4gICAqL1xuICBnZXRJY29uKCk6IHN0cmluZ3xnb29nbGUubWFwcy5JY29ufGdvb2dsZS5tYXBzLlN5bWJvbHxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRJY29uKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldExhYmVsXG4gICAqL1xuICBnZXRMYWJlbCgpOiBnb29nbGUubWFwcy5NYXJrZXJMYWJlbHxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRMYWJlbCgpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRPcGFjaXR5XG4gICAqL1xuICBnZXRPcGFjaXR5KCk6IG51bWJlcnxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRPcGFjaXR5KCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldFBvc2l0aW9uXG4gICAqL1xuICBnZXRQb3NpdGlvbigpOiBnb29nbGUubWFwcy5MYXRMbmd8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0UG9zaXRpb24oKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0U2hhcGVcbiAgICovXG4gIGdldFNoYXBlKCk6IGdvb2dsZS5tYXBzLk1hcmtlclNoYXBlfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldFNoYXBlKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldFRpdGxlXG4gICAqL1xuICBnZXRUaXRsZSgpOiBzdHJpbmd8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0VGl0bGUoKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0VmlzaWJsZVxuICAgKi9cbiAgZ2V0VmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRWaXNpYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRaSW5kZXhcbiAgICovXG4gIGdldFpJbmRleCgpOiBudW1iZXJ8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0WkluZGV4KCkgfHwgbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbWJpbmVPcHRpb25zKCk6IE9ic2VydmFibGU8Z29vZ2xlLm1hcHMuTWFya2VyT3B0aW9ucz4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLl9vcHRpb25zLCB0aGlzLl90aXRsZSwgdGhpcy5fcG9zaXRpb24sIHRoaXMuX2xhYmVsLCB0aGlzLl9jbGlja2FibGVdKVxuICAgICAgICAucGlwZShtYXAoKFtvcHRpb25zLCB0aXRsZSwgcG9zaXRpb24sIGxhYmVsLCBjbGlja2FibGVdKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tYmluZWRPcHRpb25zOiBnb29nbGUubWFwcy5NYXJrZXJPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSB8fCBvcHRpb25zLnRpdGxlLFxuICAgICAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uIHx8IG9wdGlvbnMucG9zaXRpb24sXG4gICAgICAgICAgICBsYWJlbDogbGFiZWwgfHwgb3B0aW9ucy5sYWJlbCxcbiAgICAgICAgICAgIGNsaWNrYWJsZTogY2xpY2thYmxlICE9PSB1bmRlZmluZWQgPyBjbGlja2FibGUgOiBvcHRpb25zLmNsaWNrYWJsZSxcbiAgICAgICAgICAgIG1hcDogdGhpcy5nb29nbGVNYXAuX2dvb2dsZU1hcCB8fCBudWxsLFxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIGNvbWJpbmVkT3B0aW9ucztcbiAgICAgICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2F0Y2hGb3JPcHRpb25zQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9vcHRpb25zLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUob3B0aW9ucyA9PiB7XG4gICAgICBpZiAodGhpcy5fbWFya2VyKSB7XG4gICAgICAgIHRoaXMuX21hcmtlci5zZXRPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2F0Y2hGb3JUaXRsZUNoYW5nZXMoKSB7XG4gICAgdGhpcy5fdGl0bGUucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSh0aXRsZSA9PiB7XG4gICAgICBpZiAodGhpcy5fbWFya2VyICYmIHRpdGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbWFya2VyLnNldFRpdGxlKHRpdGxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3dhdGNoRm9yUG9zaXRpb25DaGFuZ2VzKCkge1xuICAgIHRoaXMuX3Bvc2l0aW9uLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUocG9zaXRpb24gPT4ge1xuICAgICAgaWYgKHRoaXMuX21hcmtlciAmJiBwb3NpdGlvbikge1xuICAgICAgICB0aGlzLl9tYXJrZXIuc2V0UG9zaXRpb24ocG9zaXRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2F0Y2hGb3JMYWJlbENoYW5nZXMoKSB7XG4gICAgdGhpcy5fbGFiZWwucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShsYWJlbCA9PiB7XG4gICAgICBpZiAodGhpcy5fbWFya2VyICYmIGxhYmVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbWFya2VyLnNldExhYmVsKGxhYmVsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3dhdGNoRm9yQ2xpY2thYmxlQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9jbGlja2FibGUucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShjbGlja2FibGUgPT4ge1xuICAgICAgaWYgKHRoaXMuX21hcmtlciAmJiBjbGlja2FibGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9tYXJrZXIuc2V0Q2xpY2thYmxlKGNsaWNrYWJsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplRXZlbnRIYW5kbGVycygpIHtcbiAgICBjb25zdCBldmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50RW1pdHRlcjx2b2lkPj4oW1xuICAgICAgWydhbmltYXRpb25fY2hhbmdlZCcsIHRoaXMuYW5pbWF0aW9uQ2hhbmdlZF0sXG4gICAgICBbJ2NsaWNrYWJsZV9jaGFuZ2VkJywgdGhpcy5jbGlja2FibGVDaGFuZ2VkXSxcbiAgICAgIFsnY3Vyc29yX2NoYW5nZWQnLCB0aGlzLmN1cnNvckNoYW5nZWRdLFxuICAgICAgWydkcmFnZ2FibGVfY2hhbmdlZCcsIHRoaXMuZHJhZ2dhYmxlQ2hhbmdlZF0sXG4gICAgICBbJ2ZsYXRfY2hhbmdlZCcsIHRoaXMuZmxhdENoYW5nZWRdLFxuICAgICAgWydpY29uX2NoYW5nZWQnLCB0aGlzLmljb25DaGFuZ2VkXSxcbiAgICAgIFsncG9zaXRpb25fY2hhbmdlZCcsIHRoaXMucG9zaXRpb25DaGFuZ2VkXSxcbiAgICAgIFsnc2hhcGVfY2hhbmdlZCcsIHRoaXMuc2hhcGVDaGFuZ2VkXSxcbiAgICAgIFsndGl0bGVfY2hhbmdlZCcsIHRoaXMudGl0bGVDaGFuZ2VkXSxcbiAgICAgIFsndmlzaWJsZV9jaGFuZ2VkJywgdGhpcy52aXNpYmxlQ2hhbmdlZF0sXG4gICAgICBbJ3ppbmRleF9jaGFuZ2VkJywgdGhpcy56aW5kZXhDaGFuZ2VkXSxcbiAgICBdKTtcbiAgICBjb25zdCBtb3VzZUV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+PihbXG4gICAgICBbJ2NsaWNrJywgdGhpcy5tYXBDbGlja10sXG4gICAgICBbJ2RibGNsaWNrJywgdGhpcy5tYXBEYmxjbGlja10sXG4gICAgICBbJ2RyYWcnLCB0aGlzLm1hcERyYWddLFxuICAgICAgWydkcmFnZW5kJywgdGhpcy5tYXBEcmFnZW5kXSxcbiAgICAgIFsnZHJhZ3N0YXJ0JywgdGhpcy5tYXBEcmFnc3RhcnRdLFxuICAgICAgWydtb3VzZWRvd24nLCB0aGlzLm1hcE1vdXNlZG93bl0sXG4gICAgICBbJ21vdXNlb3V0JywgdGhpcy5tYXBNb3VzZW91dF0sXG4gICAgICBbJ21vdXNlb3ZlcicsIHRoaXMubWFwTW91c2VvdmVyXSxcbiAgICAgIFsnbW91c2V1cCcsIHRoaXMubWFwTW91c2V1cF0sXG4gICAgICBbJ3JpZ2h0Y2xpY2snLCB0aGlzLm1hcFJpZ2h0Y2xpY2tdLFxuICAgIF0pO1xuXG4gICAgZXZlbnRIYW5kbGVycy5mb3JFYWNoKChldmVudEhhbmRsZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoZXZlbnRIYW5kbGVyLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKHRoaXMuX21hcmtlciEuYWRkTGlzdGVuZXIobmFtZSwgKCkgPT4ge1xuICAgICAgICAgIGV2ZW50SGFuZGxlci5lbWl0KCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBtb3VzZUV2ZW50SGFuZGxlcnMuZm9yRWFjaChcbiAgICAgICAgKGV2ZW50SGFuZGxlcjogRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+LCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnRIYW5kbGVyLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXJrZXIhLmFkZExpc3RlbmVyKG5hbWUsIChldmVudDogZ29vZ2xlLm1hcHMuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgZXZlbnRIYW5kbGVyLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLW1hcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9nb29nbGUtbWFwcy9tYXAtbWFya2VyL21hcC1tYXJrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVNBLG9DQUFvQzs7Ozs7Ozs7OztBQUVwQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBTW5ELE1BQU0sT0FBTyxzQkFBc0IsR0FBRztJQUNwQyxRQUFRLEVBQUUsRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBQztDQUM3Qzs7Ozs7QUFZRCxNQUFNLE9BQU8sU0FBUzs7OztJQXVLcEIsWUFBNkIsVUFBcUI7UUFBckIsZUFBVSxHQUFWLFVBQVUsQ0FBVzs7Ozs7UUF6SXhDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7Ozs7O1FBTTVDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQzs7Ozs7UUFNdEQscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQzs7Ozs7UUFNNUMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDOzs7OztRQU16QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDOzs7OztRQU16RCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7Ozs7O1FBTXJELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBMEIs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c0Q7Ozs7OztJQU10RCxrQ0FBbUQ7Ozs7OztJQU1uRCxnQ0FBbUU7Ozs7OztJQU1uRSw0QkFBK0Q7Ozs7OztJQU0vRCwrQkFBa0U7Ozs7OztJQU1sRSxxQ0FBc0Q7Ozs7OztJQU10RCxpQ0FBb0U7Ozs7OztJQU1wRSxnQ0FBaUQ7Ozs7OztJQU1qRCxnQ0FBaUQ7Ozs7OztJQU1qRCxpQ0FBb0U7Ozs7OztJQU1wRSxnQ0FBbUU7Ozs7OztJQU1uRSxpQ0FBb0U7Ozs7OztJQU1wRSwrQkFBa0U7Ozs7OztJQU1sRSxvQ0FBcUQ7Ozs7OztJQU1yRCxrQ0FBcUU7Ozs7OztJQU1yRSxpQ0FBa0Q7Ozs7OztJQU1sRCxpQ0FBa0Q7Ozs7OztJQU1sRCxtQ0FBb0Q7Ozs7OztJQU1wRCxrQ0FBbUQ7Ozs7O0lBRW5ELDZCQUMyRTs7Ozs7SUFDM0UsMkJBQTJFOzs7OztJQUMzRSw4QkFDMkY7Ozs7O0lBQzNGLDJCQUM2RTs7Ozs7SUFDN0UsK0JBQWdGOzs7OztJQUVoRiw2QkFBZ0Q7Ozs7O0lBRWhELCtCQUFrRTs7SUFFbEUsNEJBQTZCOzs7OztJQUVqQiwrQkFBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gV29ya2Fyb3VuZCBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYXplbGJ1aWxkL3J1bGVzX25vZGVqcy9pc3N1ZXMvMTI2NVxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJnb29nbGVtYXBzXCIgLz5cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgdGFrZSwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7R29vZ2xlTWFwfSBmcm9tICcuLi9nb29nbGUtbWFwL2dvb2dsZS1tYXAnO1xuXG4vKipcbiAqIERlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIEdvb2dsZSBNYXBzIG1hcmtlciBjb21wb25lbnQuIERpc3BsYXlzIGEgbWFya2VyXG4gKiBhdCB0aGUgR29vZ2xlcGxleC5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFSS0VSX09QVElPTlMgPSB7XG4gIHBvc2l0aW9uOiB7bGF0OiAzNy40MjE5OTUsIGxuZzogLTEyMi4wODQwOTJ9LFxufTtcblxuLyoqXG4gKiBBbmd1bGFyIGNvbXBvbmVudCB0aGF0IHJlbmRlcnMgYSBHb29nbGUgTWFwcyBtYXJrZXIgdmlhIHRoZSBHb29nbGUgTWFwcyBKYXZhU2NyaXB0IEFQSS5cbiAqIEBzZWUgZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXJcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFwLW1hcmtlcicsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBNYXJrZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IGdvb2dsZS5tYXBzLk1hcmtlck9wdGlvbnMpIHtcbiAgICB0aGlzLl9vcHRpb25zLm5leHQob3B0aW9ucyB8fCBERUZBVUxUX01BUktFUl9PUFRJT05TKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB0aXRsZSh0aXRsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGl0bGUubmV4dCh0aXRsZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcG9zaXRpb24ocG9zaXRpb246IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWx8Z29vZ2xlLm1hcHMuTGF0TG5nKSB7XG4gICAgdGhpcy5fcG9zaXRpb24ubmV4dChwb3NpdGlvbik7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgbGFiZWwobGFiZWw6IHN0cmluZ3xnb29nbGUubWFwcy5NYXJrZXJMYWJlbCkge1xuICAgIHRoaXMuX2xhYmVsLm5leHQobGFiZWwpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGNsaWNrYWJsZShjbGlja2FibGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jbGlja2FibGUubmV4dChjbGlja2FibGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuYW5pbWF0aW9uX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBhbmltYXRpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmNsaWNrXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuY2xpY2thYmxlX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBjbGlja2FibGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmN1cnNvcl9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgY3Vyc29yQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5kYmxjbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcERibGNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmRyYWdcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEcmFnID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmRyYWdlbmRcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEcmFnZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmRyYWdnYWJsZV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgZHJhZ2dhYmxlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5kcmFnc3RhcnRcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEcmFnc3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZmxhdF9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgZmxhdENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuaWNvbl9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgaWNvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIubW91c2Vkb3duXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwTW91c2Vkb3duID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLm1vdXNlb3V0XG4gICAqL1xuICBAT3V0cHV0KCkgbWFwTW91c2VvdXQgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIubW91c2VvdmVyXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwTW91c2VvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLm1vdXNldXBcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBNb3VzZXVwID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLnBvc2l0aW9uX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBwb3NpdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIucmlnaHRjbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcFJpZ2h0Y2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuc2hhcGVfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHNoYXBlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci50aXRsZV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgdGl0bGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLnZpc2libGVfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLnppbmRleF9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgemluZGV4Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zID1cbiAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Z29vZ2xlLm1hcHMuTWFya2VyT3B0aW9ucz4oREVGQVVMVF9NQVJLRVJfT1BUSU9OUyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpdGxlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmd8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wb3NpdGlvbiA9XG4gICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWx8Z29vZ2xlLm1hcHMuTGF0TG5nfHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGFiZWwgPVxuICAgICAgbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmd8Z29vZ2xlLm1hcHMuTWFya2VyTGFiZWx8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jbGlja2FibGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW58dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RlbmVyczogZ29vZ2xlLm1hcHMuTWFwc0V2ZW50TGlzdGVuZXJbXSA9IFtdO1xuXG4gIF9tYXJrZXI/OiBnb29nbGUubWFwcy5NYXJrZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfZ29vZ2xlTWFwOiBHb29nbGVNYXApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgY29tYmluZWRPcHRpb25zQ2hhbmdlcyA9IHRoaXMuX2NvbWJpbmVPcHRpb25zKCk7XG5cbiAgICBjb21iaW5lZE9wdGlvbnNDaGFuZ2VzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgdGhpcy5fbWFya2VyID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcihvcHRpb25zKTtcbiAgICAgIHRoaXMuX21hcmtlci5zZXRNYXAodGhpcy5fZ29vZ2xlTWFwLl9nb29nbGVNYXApO1xuICAgICAgdGhpcy5faW5pdGlhbGl6ZUV2ZW50SGFuZGxlcnMoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3dhdGNoRm9yT3B0aW9uc0NoYW5nZXMoKTtcbiAgICB0aGlzLl93YXRjaEZvclRpdGxlQ2hhbmdlcygpO1xuICAgIHRoaXMuX3dhdGNoRm9yUG9zaXRpb25DaGFuZ2VzKCk7XG4gICAgdGhpcy5fd2F0Y2hGb3JMYWJlbENoYW5nZXMoKTtcbiAgICB0aGlzLl93YXRjaEZvckNsaWNrYWJsZUNoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiB0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyLnJlbW92ZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbWFya2VyKSB7XG4gICAgICB0aGlzLl9tYXJrZXIuc2V0TWFwKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldEFuaW1hdGlvblxuICAgKi9cbiAgZ2V0QW5pbWF0aW9uKCk6IGdvb2dsZS5tYXBzLkFuaW1hdGlvbnxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRBbmltYXRpb24oKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0Q2xpY2thYmxlXG4gICAqL1xuICBnZXRDbGlja2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0Q2xpY2thYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRDdXJzb3JcbiAgICovXG4gIGdldEN1cnNvcigpOiBzdHJpbmd8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0Q3Vyc29yKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldERyYWdnYWJsZVxuICAgKi9cbiAgZ2V0RHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX21hcmtlciEuZ2V0RHJhZ2dhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRJY29uXG4gICAqL1xuICBnZXRJY29uKCk6IHN0cmluZ3xnb29nbGUubWFwcy5JY29ufGdvb2dsZS5tYXBzLlN5bWJvbHxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRJY29uKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldExhYmVsXG4gICAqL1xuICBnZXRMYWJlbCgpOiBnb29nbGUubWFwcy5NYXJrZXJMYWJlbHxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRMYWJlbCgpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRPcGFjaXR5XG4gICAqL1xuICBnZXRPcGFjaXR5KCk6IG51bWJlcnxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRPcGFjaXR5KCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldFBvc2l0aW9uXG4gICAqL1xuICBnZXRQb3NpdGlvbigpOiBnb29nbGUubWFwcy5MYXRMbmd8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0UG9zaXRpb24oKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0U2hhcGVcbiAgICovXG4gIGdldFNoYXBlKCk6IGdvb2dsZS5tYXBzLk1hcmtlclNoYXBlfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldFNoYXBlKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldFRpdGxlXG4gICAqL1xuICBnZXRUaXRsZSgpOiBzdHJpbmd8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0VGl0bGUoKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0VmlzaWJsZVxuICAgKi9cbiAgZ2V0VmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRWaXNpYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRaSW5kZXhcbiAgICovXG4gIGdldFpJbmRleCgpOiBudW1iZXJ8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0WkluZGV4KCkgfHwgbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbWJpbmVPcHRpb25zKCk6IE9ic2VydmFibGU8Z29vZ2xlLm1hcHMuTWFya2VyT3B0aW9ucz4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLl9vcHRpb25zLCB0aGlzLl90aXRsZSwgdGhpcy5fcG9zaXRpb24sIHRoaXMuX2xhYmVsLCB0aGlzLl9jbGlja2FibGVdKVxuICAgICAgICAucGlwZShtYXAoKFtvcHRpb25zLCB0aXRsZSwgcG9zaXRpb24sIGxhYmVsLCBjbGlja2FibGVdKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tYmluZWRPcHRpb25zOiBnb29nbGUubWFwcy5NYXJrZXJPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSB8fCBvcHRpb25zLnRpdGxlLFxuICAgICAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uIHx8IG9wdGlvbnMucG9zaXRpb24sXG4gICAgICAgICAgICBsYWJlbDogbGFiZWwgfHwgb3B0aW9ucy5sYWJlbCxcbiAgICAgICAgICAgIGNsaWNrYWJsZTogY2xpY2thYmxlICE9PSB1bmRlZmluZWQgPyBjbGlja2FibGUgOiBvcHRpb25zLmNsaWNrYWJsZSxcbiAgICAgICAgICAgIG1hcDogdGhpcy5fZ29vZ2xlTWFwLl9nb29nbGVNYXAgfHwgbnVsbCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBjb21iaW5lZE9wdGlvbnM7XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3dhdGNoRm9yT3B0aW9uc0NoYW5nZXMoKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgaWYgKHRoaXMuX21hcmtlcikge1xuICAgICAgICB0aGlzLl9tYXJrZXIuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3dhdGNoRm9yVGl0bGVDaGFuZ2VzKCkge1xuICAgIHRoaXMuX3RpdGxlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodGl0bGUgPT4ge1xuICAgICAgaWYgKHRoaXMuX21hcmtlciAmJiB0aXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX21hcmtlci5zZXRUaXRsZSh0aXRsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvclBvc2l0aW9uQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9wb3NpdGlvbi5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHBvc2l0aW9uID0+IHtcbiAgICAgIGlmICh0aGlzLl9tYXJrZXIgJiYgcG9zaXRpb24pIHtcbiAgICAgICAgdGhpcy5fbWFya2VyLnNldFBvc2l0aW9uKHBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3dhdGNoRm9yTGFiZWxDaGFuZ2VzKCkge1xuICAgIHRoaXMuX2xhYmVsLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUobGFiZWwgPT4ge1xuICAgICAgaWYgKHRoaXMuX21hcmtlciAmJiBsYWJlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX21hcmtlci5zZXRMYWJlbChsYWJlbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvckNsaWNrYWJsZUNoYW5nZXMoKSB7XG4gICAgdGhpcy5fY2xpY2thYmxlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoY2xpY2thYmxlID0+IHtcbiAgICAgIGlmICh0aGlzLl9tYXJrZXIgJiYgY2xpY2thYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbWFya2VyLnNldENsaWNrYWJsZShjbGlja2FibGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUV2ZW50SGFuZGxlcnMoKSB7XG4gICAgY29uc3QgZXZlbnRIYW5kbGVycyA9IG5ldyBNYXA8c3RyaW5nLCBFdmVudEVtaXR0ZXI8dm9pZD4+KFtcbiAgICAgIFsnYW5pbWF0aW9uX2NoYW5nZWQnLCB0aGlzLmFuaW1hdGlvbkNoYW5nZWRdLFxuICAgICAgWydjbGlja2FibGVfY2hhbmdlZCcsIHRoaXMuY2xpY2thYmxlQ2hhbmdlZF0sXG4gICAgICBbJ2N1cnNvcl9jaGFuZ2VkJywgdGhpcy5jdXJzb3JDaGFuZ2VkXSxcbiAgICAgIFsnZHJhZ2dhYmxlX2NoYW5nZWQnLCB0aGlzLmRyYWdnYWJsZUNoYW5nZWRdLFxuICAgICAgWydmbGF0X2NoYW5nZWQnLCB0aGlzLmZsYXRDaGFuZ2VkXSxcbiAgICAgIFsnaWNvbl9jaGFuZ2VkJywgdGhpcy5pY29uQ2hhbmdlZF0sXG4gICAgICBbJ3Bvc2l0aW9uX2NoYW5nZWQnLCB0aGlzLnBvc2l0aW9uQ2hhbmdlZF0sXG4gICAgICBbJ3NoYXBlX2NoYW5nZWQnLCB0aGlzLnNoYXBlQ2hhbmdlZF0sXG4gICAgICBbJ3RpdGxlX2NoYW5nZWQnLCB0aGlzLnRpdGxlQ2hhbmdlZF0sXG4gICAgICBbJ3Zpc2libGVfY2hhbmdlZCcsIHRoaXMudmlzaWJsZUNoYW5nZWRdLFxuICAgICAgWyd6aW5kZXhfY2hhbmdlZCcsIHRoaXMuemluZGV4Q2hhbmdlZF0sXG4gICAgXSk7XG4gICAgY29uc3QgbW91c2VFdmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50Pj4oW1xuICAgICAgWydjbGljaycsIHRoaXMubWFwQ2xpY2tdLFxuICAgICAgWydkYmxjbGljaycsIHRoaXMubWFwRGJsY2xpY2tdLFxuICAgICAgWydkcmFnJywgdGhpcy5tYXBEcmFnXSxcbiAgICAgIFsnZHJhZ2VuZCcsIHRoaXMubWFwRHJhZ2VuZF0sXG4gICAgICBbJ2RyYWdzdGFydCcsIHRoaXMubWFwRHJhZ3N0YXJ0XSxcbiAgICAgIFsnbW91c2Vkb3duJywgdGhpcy5tYXBNb3VzZWRvd25dLFxuICAgICAgWydtb3VzZW91dCcsIHRoaXMubWFwTW91c2VvdXRdLFxuICAgICAgWydtb3VzZW92ZXInLCB0aGlzLm1hcE1vdXNlb3Zlcl0sXG4gICAgICBbJ21vdXNldXAnLCB0aGlzLm1hcE1vdXNldXBdLFxuICAgICAgWydyaWdodGNsaWNrJywgdGhpcy5tYXBSaWdodGNsaWNrXSxcbiAgICBdKTtcblxuICAgIGV2ZW50SGFuZGxlcnMuZm9yRWFjaCgoZXZlbnRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGV2ZW50SGFuZGxlci5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaCh0aGlzLl9tYXJrZXIhLmFkZExpc3RlbmVyKG5hbWUsICgpID0+IHtcbiAgICAgICAgICBldmVudEhhbmRsZXIuZW1pdCgpO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbW91c2VFdmVudEhhbmRsZXJzLmZvckVhY2goXG4gICAgICAgIChldmVudEhhbmRsZXI6IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PiwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50SGFuZGxlci5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5fbWFya2VyIS5hZGRMaXN0ZW5lcihuYW1lLCAoZXZlbnQ6IGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxlci5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgfVxufVxuIl19

@@ -421,3 +421,2 @@ /**

{ type: Component, args: [{
moduleId: module.id,
selector: 'google-map',

@@ -461,2 +460,2 @@ changeDetection: ChangeDetectionStrategy.OnPush,

export { GoogleMap };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9nb29nbGUtbWFwcy9nb29nbGUtbWFwL2dvb2dsZS1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILHlFQUF5RTtBQUN6RSxvQ0FBb0M7QUFFcEMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBZWpFLDRDQUE0QztBQUM1QyxNQUFNLENBQUMsSUFBTSxlQUFlLEdBQTJCO0lBQ3JELE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFDO0lBQzFDLElBQUksRUFBRSxFQUFFO0NBQ1QsQ0FBQztBQUVGLG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsSUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBQ3RDLGtEQUFrRDtBQUNsRCxNQUFNLENBQUMsSUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBRXJDOzs7O0dBSUc7QUFDSDtJQW1KRSxtQkFBNkIsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUEzSTNDLFdBQU0sR0FBRyxjQUFjLENBQUM7UUFFeEIsVUFBSyxHQUFHLGFBQWEsQ0FBQztRQWUvQjs7O1dBR0c7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbkQ7OztXQUdHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxD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Q0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDVDtJQUNILENBQUM7O2dCQTdhRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO29CQUNuQixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRSw0REFBNEQ7b0JBQ3RFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN0Qzs7OztnQkEvQ0MsVUFBVTs7O3lCQWlEVCxLQUFLO3dCQUVMLEtBQUs7eUJBRUwsS0FBSzt1QkFJTCxLQUFLOzBCQUlMLEtBQUs7Z0NBU0wsTUFBTTtnQ0FNTixNQUFNOzJCQU1OLE1BQU07OEJBTU4sTUFBTTswQkFNTixNQUFNOzZCQU1OLE1BQU07K0JBTU4sTUFBTTtpQ0FNTixNQUFNO3VCQU1OLE1BQU07bUNBTU4sTUFBTTsrQkFNTixNQUFNOzhCQU1OLE1BQU07K0JBTU4sTUFBTTtvQ0FNTixNQUFNO2dDQU1OLE1BQU07OEJBTU4sTUFBTTs4QkFNTixNQUFNOzhCQU1OLE1BQU07O0lBMlNULGdCQUFDO0NBQUEsQUE5YUQsSUE4YUM7U0F2YVksU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vLyBXb3JrYXJvdW5kIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2JhemVsYnVpbGQvcnVsZXNfbm9kZWpzL2lzc3Vlcy8xMjY1XG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cImdvb2dsZW1hcHNcIiAvPlxuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBzaGFyZVJlcGxheSwgdGFrZSwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmludGVyZmFjZSBHb29nbGVNYXBzV2luZG93IGV4dGVuZHMgV2luZG93IHtcbiAgZ29vZ2xlPzogdHlwZW9mIGdvb2dsZTtcbn1cblxuLy8gVE9ETyhtYmVocmxpY2gpOiBVcGRhdGUgdGhpcyB0byB1c2Ugb3JpZ2luYWwgbWFwIGFmdGVyIHVwZGF0aW5nIERlZmluaXRlbHlUeXBlZFxuLyoqXG4gKiBFeHRlbmRzIHRoZSBHb29nbGUgTWFwIGludGVyZmFjZSBkdWUgdG8gdGhlIERlZmluaXRlbHkgVHlwZWQgaW1wbGVtZW50YXRpb25cbiAqIG1pc3NpbmcgXCJnZXRDbGlja2FibGVJY29uc1wiLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRHb29nbGVNYXAgZXh0ZW5kcyBnb29nbGUubWFwcy5NYXAge1xuICBnZXRDbGlja2FibGVJY29uczogKCkgPT4gYm9vbGVhbjtcbn1cblxuLyoqIGRlZmF1bHQgb3B0aW9ucyBzZXQgdG8gdGhlIEdvb2dsZXBsZXggKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX09QVElPTlM6IGdvb2dsZS5tYXBzLk1hcE9wdGlvbnMgPSB7XG4gIGNlbnRlcjoge2xhdDogMzcuNDIxOTk1LCBsbmc6IC0xMjIuMDg0MDkyfSxcbiAgem9vbTogMTcsXG59O1xuXG4vKiogQXJiaXRyYXJ5IGRlZmF1bHQgaGVpZ2h0IGZvciB0aGUgbWFwIGVsZW1lbnQgKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFSUdIVCA9ICc1MDBweCc7XG4vKiogQXJiaXRyYXJ5IGRlZmF1bHQgd2lkdGggZm9yIHRoZSBtYXAgZWxlbWVudCAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0lEVEggPSAnNTAwcHgnO1xuXG4vKipcbiAqIEFuZ3VsYXIgY29tcG9uZW50IHRoYXQgcmVuZGVycyBhIEdvb2dsZSBNYXAgdmlhIHRoZSBHb29nbGUgTWFwcyBKYXZhU2NyaXB0XG4gKiBBUEkuXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9cbiAqL1xuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiAnZ29vZ2xlLW1hcCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJtYXAtY29udGFpbmVyXCI+PC9kaXY+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEdvb2dsZU1hcCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBoZWlnaHQgPSBERUZBVUxUX0hFSUdIVDtcblxuICBASW5wdXQoKSB3aWR0aCA9IERFRkFVTFRfV0lEVEg7XG5cbiAgQElucHV0KClcbiAgc2V0IGNlbnRlcihjZW50ZXI6IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWx8Z29vZ2xlLm1hcHMuTGF0TG5nKSB7XG4gICAgdGhpcy5fY2VudGVyLm5leHQoY2VudGVyKTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgem9vbSh6b29tOiBudW1iZXIpIHtcbiAgICB0aGlzLl96b29tLm5leHQoem9vbSk7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IG9wdGlvbnMob3B0aW9uczogZ29vZ2xlLm1hcHMuTWFwT3B0aW9ucykge1xuICAgIHRoaXMuX29wdGlvbnMubmV4dChvcHRpb25zIHx8IERFRkFVTFRfT1BUSU9OUyk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmJvdW5kc19jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgYm91bmRzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmNlbnRlcl9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgY2VudGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmNsaWNrXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnR8Z29vZ2xlLm1hcHMuSWNvbk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5kYmxjbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcERibGNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZHJhZ1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcERyYWcgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5kcmFnZW5kXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwRHJhZ2VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmRyYWdzdGFydFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcERyYWdzdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmhlYWRpbmdfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGhlYWRpbmdDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuaWRsZVxuICAgKi9cbiAgQE91dHB1dCgpIGlkbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5tYXB0eXBlaWRfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcHR5cGVpZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5tb3VzZW1vdmVcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBNb3VzZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5tb3VzZW91dFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcE1vdXNlb3V0ID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAubW91c2VvdmVyXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwTW91c2VvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLnByb2plY3Rpb25fY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHByb2plY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAucmlnaHRjbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcFJpZ2h0Y2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC50aWxlc2xvYWRlZFxuICAgKi9cbiAgQE91dHB1dCgpIHRpbGVzbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAudGlsdF9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgdGlsdENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC56b29tX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSB6b29tQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIF9tYXBFbDogSFRNTEVsZW1lbnQ7XG4gIF9nb29nbGVNYXAhOiBVcGRhdGVkR29vZ2xlTWFwO1xuXG4gIHByaXZhdGUgX2dvb2dsZU1hcENoYW5nZXMhOiBPYnNlcnZhYmxlPGdvb2dsZS5tYXBzLk1hcD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiBnb29nbGUubWFwcy5NYXBzRXZlbnRMaXN0ZW5lcltdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Z29vZ2xlLm1hcHMuTWFwT3B0aW9ucz4oREVGQVVMVF9PUFRJT05TKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2VudGVyID1cbiAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Z29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbHxnb29nbGUubWFwcy5MYXRMbmd8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF96b29tID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXJ8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICBjb25zdCBnb29nbGVNYXBzV2luZG93OiBHb29nbGVNYXBzV2luZG93ID0gd2luZG93O1xuICAgIGlmICghZ29vZ2xlTWFwc1dpbmRvdy5nb29nbGUpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICdOYW1lc3BhY2UgZ29vZ2xlIG5vdCBmb3VuZCwgY2Fubm90IGNvbnN0cnVjdCBlbWJlZGRlZCBnb29nbGUgJyArXG4gICAgICAgICAgJ21hcC4gUGxlYXNlIGluc3RhbGwgdGhlIEdvb2dsZSBNYXBzIEphdmFTY3JpcHQgQVBJOiAnICtcbiAgICAgICAgICAnaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvJyArXG4gICAgICAgICAgJ3R1dG9yaWFsI0xvYWRpbmdfdGhlX01hcHNfQVBJJyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5fc2V0U2l6ZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fbWFwRWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1hcC1jb250YWluZXInKSE7XG4gICAgdGhpcy5fc2V0U2l6ZSgpO1xuXG4gICAgY29uc3QgY29tYmluZWRPcHRpb25zQ2hhbmdlcyA9IHRoaXMuX2NvbWJpbmVPcHRpb25zKCk7XG5cbiAgICB0aGlzLl9nb29nbGVNYXBDaGFuZ2VzID0gdGhpcy5faW5pdGlhbGl6ZU1hcChjb21iaW5lZE9wdGlvbnNDaGFuZ2VzKTtcbiAgICB0aGlzLl9nb29nbGVNYXBDaGFuZ2VzLnN1YnNjcmliZSgoZ29vZ2xlTWFwOiBnb29nbGUubWFwcy5NYXApID0+IHtcbiAgICAgIHRoaXMuX2dvb2dsZU1hcCA9IGdvb2dsZU1hcCBhcyBVcGRhdGVkR29vZ2xlTWFwO1xuXG4gICAgICB0aGlzLl9pbml0aWFsaXplRXZlbnRIYW5kbGVycygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fd2F0Y2hGb3JPcHRpb25zQ2hhbmdlcygpO1xuICAgIHRoaXMuX3dhdGNoRm9yQ2VudGVyQ2hhbmdlcygpO1xuICAgIHRoaXMuX3dhdGNoRm9yWm9vbUNoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiB0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyLnJlbW92ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZml0Qm91bmRzXG4gICAqL1xuICBmaXRCb3VuZHMoXG4gICAgICBib3VuZHM6IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kc3xnb29nbGUubWFwcy5MYXRMbmdCb3VuZHNMaXRlcmFsLFxuICAgICAgcGFkZGluZz86IG51bWJlcnxnb29nbGUubWFwcy5QYWRkaW5nKSB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwLmZpdEJvdW5kcyhib3VuZHMsIHBhZGRpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5wYW5CeVxuICAgKi9cbiAgcGFuQnkoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICB0aGlzLl9nb29nbGVNYXAucGFuQnkoeCwgeSk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLnBhblRvXG4gICAqL1xuICBwYW5UbyhsYXRMbmc6IGdvb2dsZS5tYXBzLkxhdExuZ3xnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsKSB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwLnBhblRvKGxhdExuZyk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLnBhblRvQm91bmRzXG4gICAqL1xuICBwYW5Ub0JvdW5kcyhcbiAgICAgIGxhdExuZ0JvdW5kczogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzfGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kc0xpdGVyYWwsXG4gICAgICBwYWRkaW5nPzogbnVtYmVyfGdvb2dsZS5tYXBzLlBhZGRpbmcpIHtcbiAgICB0aGlzLl9nb29nbGVNYXAucGFuVG9Cb3VuZHMobGF0TG5nQm91bmRzLCBwYWRkaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0Qm91bmRzXG4gICAqL1xuICBnZXRCb3VuZHMoKTogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0Qm91bmRzKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0Q2VudGVyXG4gICAqL1xuICBnZXRDZW50ZXIoKTogZ29vZ2xlLm1hcHMuTGF0TG5nIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldENlbnRlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRDbGlja2FibGVJY29uc1xuICAgKi9cbiAgZ2V0Q2xpY2thYmxlSWNvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRDbGlja2FibGVJY29ucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRIZWFkaW5nXG4gICAqL1xuICBnZXRIZWFkaW5nKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRIZWFkaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldE1hcFR5cGVJZFxuICAgKi9cbiAgZ2V0TWFwVHlwZUlkKCk6IGdvb2dsZS5tYXBzLk1hcFR5cGVJZHxzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0TWFwVHlwZUlkKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldFByb2plY3Rpb25cbiAgICovXG4gIGdldFByb2plY3Rpb24oKTogZ29vZ2xlLm1hcHMuUHJvamVjdGlvbnxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldFByb2plY3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0U3RyZWV0Vmlld1xuICAgKi9cbiAgZ2V0U3RyZWV0VmlldygpOiBnb29nbGUubWFwcy5TdHJlZXRWaWV3UGFub3JhbWEge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0U3RyZWV0VmlldygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRUaWx0XG4gICAqL1xuICBnZXRUaWx0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRUaWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldFpvb21cbiAgICovXG4gIGdldFpvb20oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldFpvb20oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuY29udHJvbHNcbiAgICovXG4gIGdldCBjb250cm9scygpOiBBcnJheTxnb29nbGUubWFwcy5NVkNBcnJheTxOb2RlPj4ge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuY29udHJvbHM7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmRhdGFcbiAgICovXG4gIGdldCBkYXRhKCk6IGdvb2dsZS5tYXBzLkRhdGEge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAubWFwVHlwZXNcbiAgICovXG4gIGdldCBtYXBUeXBlcygpOiBnb29nbGUubWFwcy5NYXBUeXBlUmVnaXN0cnkge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAubWFwVHlwZXM7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLm92ZXJsYXlNYXBUeXBlc1xuICAgKi9cbiAgZ2V0IG92ZXJsYXlNYXBUeXBlcygpOiBnb29nbGUubWFwcy5NVkNBcnJheTxnb29nbGUubWFwcy5NYXBUeXBlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5vdmVybGF5TWFwVHlwZXM7XG4gIH1cblxuICBwcml2YXRlIF9zZXRTaXplKCkge1xuICAgIGlmICh0aGlzLl9tYXBFbCkge1xuICAgICAgdGhpcy5fbWFwRWwuc3R5bGUuaGVpZ2h0ID0gdGhpcy5oZWlnaHQgfHwgREVGQVVMVF9IRUlHSFQ7XG4gICAgICB0aGlzLl9tYXBFbC5zdHlsZS53aWR0aCA9IHRoaXMud2lkdGggfHwgREVGQVVMVF9XSURUSDtcbiAgICB9XG4gIH1cblxuICAvKiogQ29tYmluZXMgdGhlIGNlbnRlciBhbmQgem9vbSBhbmQgdGhlIG90aGVyIG1hcCBvcHRpb25zIGludG8gYSBzaW5nbGUgb2JqZWN0ICovXG4gIHByaXZhdGUgX2NvbWJpbmVPcHRpb25zKCk6IE9ic2VydmFibGU8Z29vZ2xlLm1hcHMuTWFwT3B0aW9ucz4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLl9vcHRpb25zLCB0aGlzLl9jZW50ZXIsIHRoaXMuX3pvb21dKVxuICAgICAgICAucGlwZShtYXAoKFtvcHRpb25zLCBjZW50ZXIsIHpvb21dKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tYmluZWRPcHRpb25zOiBnb29nbGUubWFwcy5NYXBPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIGNlbnRlcjogY2VudGVyIHx8IG9wdGlvbnMuY2VudGVyLFxuICAgICAgICAgICAgem9vbTogem9vbSAhPT0gdW5kZWZpbmVkID8gem9vbSA6IG9wdGlvbnMuem9vbSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBjb21iaW5lZE9wdGlvbnM7XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVNYXAob3B0aW9uc0NoYW5nZXM6IE9ic2VydmFibGU8Z29vZ2xlLm1hcHMuTWFwT3B0aW9ucz4pOlxuICAgICAgT2JzZXJ2YWJsZTxnb29nbGUubWFwcy5NYXA+IHtcbiAgICByZXR1cm4gb3B0aW9uc0NoYW5nZXMucGlwZShcbiAgICAgICAgdGFrZSgxKSwgbWFwKG9wdGlvbnMgPT4ge1xuICAgICAgICAgIHJldHVybiBuZXcgZ29vZ2xlLm1hcHMuTWFwKHRoaXMuX21hcEVsLCBvcHRpb25zKTtcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3dhdGNoRm9yT3B0aW9uc0NoYW5nZXMoKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fZ29vZ2xlTWFwQ2hhbmdlcywgdGhpcy5fb3B0aW9uc10pXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSlcbiAgICAgICAgLnN1YnNjcmliZSgoW2dvb2dsZU1hcCwgb3B0aW9uc10pID0+IHtcbiAgICAgICAgICBnb29nbGVNYXAuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvckNlbnRlckNoYW5nZXMoKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fZ29vZ2xlTWFwQ2hhbmdlcywgdGhpcy5fY2VudGVyXSlcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZ29vZ2xlTWFwLCBjZW50ZXJdKSA9PiB7XG4gICAgICAgICAgaWYgKGNlbnRlcikge1xuICAgICAgICAgICAgZ29vZ2xlTWFwLnNldENlbnRlcihjZW50ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvclpvb21DaGFuZ2VzKCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2dvb2dsZU1hcENoYW5nZXMsIHRoaXMuX3pvb21dKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKFtnb29nbGVNYXAsIHpvb21dKSA9PiB7XG4gICAgICAgICAgaWYgKHpvb20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZ29vZ2xlTWFwLnNldFpvb20oem9vbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVFdmVudEhhbmRsZXJzKCkge1xuICAgIGNvbnN0IGV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgRXZlbnRFbWl0dGVyPHZvaWQ+PihbXG4gICAgICBbJ2JvdW5kc19jaGFuZ2VkJywgdGhpcy5ib3VuZHNDaGFuZ2VkXSxcbiAgICAgIFsnY2VudGVyX2NoYW5nZWQnLCB0aGlzLmNlbnRlckNoYW5nZWRdLFxuICAgICAgWydkcmFnJywgdGhpcy5tYXBEcmFnXSxcbiAgICAgIFsnZHJhZ2VuZCcsIHRoaXMubWFwRHJhZ2VuZF0sXG4gICAgICBbJ2RyYWdzdGFydCcsIHRoaXMubWFwRHJhZ3N0YXJ0XSxcbiAgICAgIFsnaGVhZGluZ19jaGFuZ2VkJywgdGhpcy5oZWFkaW5nQ2hhbmdlZF0sXG4gICAgICBbJ2lkbGUnLCB0aGlzLmlkbGVdLFxuICAgICAgWydtYXB0eXBlaWRfY2hhbmdlZCcsIHRoaXMubWFwdHlwZWlkQ2hhbmdlZF0sXG4gICAgICBbJ3Byb2plY3Rpb25fY2hhbmdlZCcsIHRoaXMucHJvamVjdGlvbkNoYW5nZWRdLFxuICAgICAgWyd0aWxlc2xvYWRlZCcsIHRoaXMudGlsZXNsb2FkZWRdLFxuICAgICAgWyd0aWx0X2NoYW5nZWQnLCB0aGlzLnRpbHRDaGFuZ2VkXSxcbiAgICAgIFsnem9vbUNoYW5nZWQnLCB0aGlzLnpvb21DaGFuZ2VkXSxcbiAgICBdKTtcbiAgICBjb25zdCBtb3VzZUV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+PihbXG4gICAgICBbJ2RibGNsaWNrJywgdGhpcy5tYXBEYmxjbGlja10sXG4gICAgICBbJ21vdXNlbW92ZScsIHRoaXMubWFwTW91c2Vtb3ZlXSxcbiAgICAgIFsnbW91c2VvdXQnLCB0aGlzLm1hcE1vdXNlb3V0XSxcbiAgICAgIFsnbW91c2VvdmVyJywgdGhpcy5tYXBNb3VzZW92ZXJdLFxuICAgICAgWydyaWdodGNsaWNrJywgdGhpcy5tYXBSaWdodGNsaWNrXSxcbiAgICBdKTtcbiAgICBldmVudEhhbmRsZXJzLmZvckVhY2goKGV2ZW50SGFuZGxlcjogRXZlbnRFbWl0dGVyPHZvaWQ+LCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChldmVudEhhbmRsZXIub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2godGhpcy5fZ29vZ2xlTWFwLmFkZExpc3RlbmVyKG5hbWUsICgpID0+IHtcbiAgICAgICAgICBldmVudEhhbmRsZXIuZW1pdCgpO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbW91c2VFdmVudEhhbmRsZXJzLmZvckVhY2goXG4gICAgICAgIChldmVudEhhbmRsZXI6IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PiwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50SGFuZGxlci5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5fZ29vZ2xlTWFwLmFkZExpc3RlbmVyKG5hbWUsIChldmVudDogZ29vZ2xlLm1hcHMuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgZXZlbnRIYW5kbGVyLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIGlmICh0aGlzLm1hcENsaWNrLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaCh0aGlzLl9nb29nbGVNYXAuYWRkTGlzdGVuZXIoXG4gICAgICAgICAgJ2NsaWNrJywgKGV2ZW50OiBnb29nbGUubWFwcy5Nb3VzZUV2ZW50fGdvb2dsZS5tYXBzLkljb25Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1hcENsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgICAgIH0pKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9nb29nbGUtbWFwcy9nb29nbGUtbWFwL2dvb2dsZS1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILHlFQUF5RTtBQUN6RSxvQ0FBb0M7QUFFcEMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBZWpFLDRDQUE0QztBQUM1QyxNQUFNLENBQUMsSUFBTSxlQUFlLEdBQTJCO0lBQ3JELE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFDO0lBQzFDLElBQUksRUFBRSxFQUFFO0NBQ1QsQ0FBQztBQUVGLG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsSUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBQ3RDLGtEQUFrRDtBQUNsRCxNQUFNLENBQUMsSUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBRXJDOzs7O0dBSUc7QUFDSDtJQWtKRSxtQkFBNkIsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUEzSTNDLFdBQU0sR0FBRyxjQUFjLENBQUM7UUFFeEIsVUFBSyxHQUFHLGFBQWEsQ0FBQztRQWUvQjs7O1dBR0c7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbkQ7OztXQUdHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxD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Q0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDVDtJQUNILENBQUM7O2dCQTVhRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUUsNERBQTREO29CQUN0RSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7Ozs7Z0JBOUNDLFVBQVU7Ozt5QkFnRFQsS0FBSzt3QkFFTCxLQUFLO3lCQUVMLEtBQUs7dUJBSUwsS0FBSzswQkFJTCxLQUFLO2dDQVNMLE1BQU07Z0NBTU4sTUFBTTsyQkFNTixNQUFNOzhCQU1OLE1BQU07MEJBTU4sTUFBTTs2QkFNTixNQUFNOytCQU1OLE1BQU07aUNBTU4sTUFBTTt1QkFNTixNQUFNO21DQU1OLE1BQU07K0JBTU4sTUFBTTs4QkFNTixNQUFNOytCQU1OLE1BQU07b0NBTU4sTUFBTTtnQ0FNTixNQUFNOzhCQU1OLE1BQU07OEJBTU4sTUFBTTs4QkFNTixNQUFNOztJQTJTVCxnQkFBQztDQUFBLEFBN2FELElBNmFDO1NBdmFZLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gV29ya2Fyb3VuZCBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYXplbGJ1aWxkL3J1bGVzX25vZGVqcy9pc3N1ZXMvMTI2NVxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJnb29nbGVtYXBzXCIgLz5cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgc2hhcmVSZXBsYXksIHRha2UsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbnRlcmZhY2UgR29vZ2xlTWFwc1dpbmRvdyBleHRlbmRzIFdpbmRvdyB7XG4gIGdvb2dsZT86IHR5cGVvZiBnb29nbGU7XG59XG5cbi8vIFRPRE8obWJlaHJsaWNoKTogVXBkYXRlIHRoaXMgdG8gdXNlIG9yaWdpbmFsIG1hcCBhZnRlciB1cGRhdGluZyBEZWZpbml0ZWx5VHlwZWRcbi8qKlxuICogRXh0ZW5kcyB0aGUgR29vZ2xlIE1hcCBpbnRlcmZhY2UgZHVlIHRvIHRoZSBEZWZpbml0ZWx5IFR5cGVkIGltcGxlbWVudGF0aW9uXG4gKiBtaXNzaW5nIFwiZ2V0Q2xpY2thYmxlSWNvbnNcIi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkR29vZ2xlTWFwIGV4dGVuZHMgZ29vZ2xlLm1hcHMuTWFwIHtcbiAgZ2V0Q2xpY2thYmxlSWNvbnM6ICgpID0+IGJvb2xlYW47XG59XG5cbi8qKiBkZWZhdWx0IG9wdGlvbnMgc2V0IHRvIHRoZSBHb29nbGVwbGV4ICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9PUFRJT05TOiBnb29nbGUubWFwcy5NYXBPcHRpb25zID0ge1xuICBjZW50ZXI6IHtsYXQ6IDM3LjQyMTk5NSwgbG5nOiAtMTIyLjA4NDA5Mn0sXG4gIHpvb206IDE3LFxufTtcblxuLyoqIEFyYml0cmFyeSBkZWZhdWx0IGhlaWdodCBmb3IgdGhlIG1hcCBlbGVtZW50ICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9IRUlHSFQgPSAnNTAwcHgnO1xuLyoqIEFyYml0cmFyeSBkZWZhdWx0IHdpZHRoIGZvciB0aGUgbWFwIGVsZW1lbnQgKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1dJRFRIID0gJzUwMHB4JztcblxuLyoqXG4gKiBBbmd1bGFyIGNvbXBvbmVudCB0aGF0IHJlbmRlcnMgYSBHb29nbGUgTWFwIHZpYSB0aGUgR29vZ2xlIE1hcHMgSmF2YVNjcmlwdFxuICogQVBJLlxuICogQHNlZSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dvb2dsZS1tYXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwibWFwLWNvbnRhaW5lclwiPjwvZGl2PjxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBHb29nbGVNYXAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaGVpZ2h0ID0gREVGQVVMVF9IRUlHSFQ7XG5cbiAgQElucHV0KCkgd2lkdGggPSBERUZBVUxUX1dJRFRIO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBjZW50ZXIoY2VudGVyOiBnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsfGdvb2dsZS5tYXBzLkxhdExuZykge1xuICAgIHRoaXMuX2NlbnRlci5uZXh0KGNlbnRlcik7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHpvb20oem9vbTogbnVtYmVyKSB7XG4gICAgdGhpcy5fem9vbS5uZXh0KHpvb20pO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IGdvb2dsZS5tYXBzLk1hcE9wdGlvbnMpIHtcbiAgICB0aGlzLl9vcHRpb25zLm5leHQob3B0aW9ucyB8fCBERUZBVUxUX09QVElPTlMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5ib3VuZHNfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGJvdW5kc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5jZW50ZXJfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGNlbnRlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5jbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50fGdvb2dsZS5tYXBzLkljb25Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZGJsY2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEYmxjbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmRyYWdcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEcmFnID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZHJhZ2VuZFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcERyYWdlbmQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5kcmFnc3RhcnRcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEcmFnc3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5oZWFkaW5nX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBoZWFkaW5nQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmlkbGVcbiAgICovXG4gIEBPdXRwdXQoKSBpZGxlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAubWFwdHlwZWlkX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBtYXB0eXBlaWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAubW91c2Vtb3ZlXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwTW91c2Vtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAubW91c2VvdXRcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBNb3VzZW91dCA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLm1vdXNlb3ZlclxuICAgKi9cbiAgQE91dHB1dCgpIG1hcE1vdXNlb3ZlciA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5wcm9qZWN0aW9uX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBwcm9qZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLnJpZ2h0Y2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBSaWdodGNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAudGlsZXNsb2FkZWRcbiAgICovXG4gIEBPdXRwdXQoKSB0aWxlc2xvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLnRpbHRfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHRpbHRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuem9vbV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgem9vbUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfbWFwRWw6IEhUTUxFbGVtZW50O1xuICBfZ29vZ2xlTWFwITogVXBkYXRlZEdvb2dsZU1hcDtcblxuICBwcml2YXRlIF9nb29nbGVNYXBDaGFuZ2VzITogT2JzZXJ2YWJsZTxnb29nbGUubWFwcy5NYXA+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RlbmVyczogZ29vZ2xlLm1hcHMuTWFwc0V2ZW50TGlzdGVuZXJbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGdvb2dsZS5tYXBzLk1hcE9wdGlvbnM+KERFRkFVTFRfT1BUSU9OUyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NlbnRlciA9XG4gICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWx8Z29vZ2xlLm1hcHMuTGF0TG5nfHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfem9vbSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyfHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgY29uc3QgZ29vZ2xlTWFwc1dpbmRvdzogR29vZ2xlTWFwc1dpbmRvdyA9IHdpbmRvdztcbiAgICBpZiAoIWdvb2dsZU1hcHNXaW5kb3cuZ29vZ2xlKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAnTmFtZXNwYWNlIGdvb2dsZSBub3QgZm91bmQsIGNhbm5vdCBjb25zdHJ1Y3QgZW1iZWRkZWQgZ29vZ2xlICcgK1xuICAgICAgICAgICdtYXAuIFBsZWFzZSBpbnN0YWxsIHRoZSBHb29nbGUgTWFwcyBKYXZhU2NyaXB0IEFQSTogJyArXG4gICAgICAgICAgJ2h0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0LycgK1xuICAgICAgICAgICd0dXRvcmlhbCNMb2FkaW5nX3RoZV9NYXBzX0FQSScpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuX3NldFNpemUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX21hcEVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXAtY29udGFpbmVyJykhO1xuICAgIHRoaXMuX3NldFNpemUoKTtcblxuICAgIGNvbnN0IGNvbWJpbmVkT3B0aW9uc0NoYW5nZXMgPSB0aGlzLl9jb21iaW5lT3B0aW9ucygpO1xuXG4gICAgdGhpcy5fZ29vZ2xlTWFwQ2hhbmdlcyA9IHRoaXMuX2luaXRpYWxpemVNYXAoY29tYmluZWRPcHRpb25zQ2hhbmdlcyk7XG4gICAgdGhpcy5fZ29vZ2xlTWFwQ2hhbmdlcy5zdWJzY3JpYmUoKGdvb2dsZU1hcDogZ29vZ2xlLm1hcHMuTWFwKSA9PiB7XG4gICAgICB0aGlzLl9nb29nbGVNYXAgPSBnb29nbGVNYXAgYXMgVXBkYXRlZEdvb2dsZU1hcDtcblxuICAgICAgdGhpcy5faW5pdGlhbGl6ZUV2ZW50SGFuZGxlcnMoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3dhdGNoRm9yT3B0aW9uc0NoYW5nZXMoKTtcbiAgICB0aGlzLl93YXRjaEZvckNlbnRlckNoYW5nZXMoKTtcbiAgICB0aGlzLl93YXRjaEZvclpvb21DaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgZm9yIChsZXQgbGlzdGVuZXIgb2YgdGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgICBsaXN0ZW5lci5yZW1vdmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmZpdEJvdW5kc1xuICAgKi9cbiAgZml0Qm91bmRzKFxuICAgICAgYm91bmRzOiBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHN8Z29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzTGl0ZXJhbCxcbiAgICAgIHBhZGRpbmc/OiBudW1iZXJ8Z29vZ2xlLm1hcHMuUGFkZGluZykge1xuICAgIHRoaXMuX2dvb2dsZU1hcC5maXRCb3VuZHMoYm91bmRzLCBwYWRkaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAucGFuQnlcbiAgICovXG4gIHBhbkJ5KHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwLnBhbkJ5KHgsIHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5wYW5Ub1xuICAgKi9cbiAgcGFuVG8obGF0TG5nOiBnb29nbGUubWFwcy5MYXRMbmd8Z29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbCkge1xuICAgIHRoaXMuX2dvb2dsZU1hcC5wYW5UbyhsYXRMbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5wYW5Ub0JvdW5kc1xuICAgKi9cbiAgcGFuVG9Cb3VuZHMoXG4gICAgICBsYXRMbmdCb3VuZHM6IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kc3xnb29nbGUubWFwcy5MYXRMbmdCb3VuZHNMaXRlcmFsLFxuICAgICAgcGFkZGluZz86IG51bWJlcnxnb29nbGUubWFwcy5QYWRkaW5nKSB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwLnBhblRvQm91bmRzKGxhdExuZ0JvdW5kcywgcGFkZGluZyk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldEJvdW5kc1xuICAgKi9cbiAgZ2V0Qm91bmRzKCk6IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kc3xudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldEJvdW5kcygpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldENlbnRlclxuICAgKi9cbiAgZ2V0Q2VudGVyKCk6IGdvb2dsZS5tYXBzLkxhdExuZyB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRDZW50ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0Q2xpY2thYmxlSWNvbnNcbiAgICovXG4gIGdldENsaWNrYWJsZUljb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0Q2xpY2thYmxlSWNvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0SGVhZGluZ1xuICAgKi9cbiAgZ2V0SGVhZGluZygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0SGVhZGluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRNYXBUeXBlSWRcbiAgICovXG4gIGdldE1hcFR5cGVJZCgpOiBnb29nbGUubWFwcy5NYXBUeXBlSWR8c3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldE1hcFR5cGVJZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRQcm9qZWN0aW9uXG4gICAqL1xuICBnZXRQcm9qZWN0aW9uKCk6IGdvb2dsZS5tYXBzLlByb2plY3Rpb258bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRQcm9qZWN0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmdldFN0cmVldFZpZXdcbiAgICovXG4gIGdldFN0cmVldFZpZXcoKTogZ29vZ2xlLm1hcHMuU3RyZWV0Vmlld1Bhbm9yYW1hIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmdldFN0cmVldFZpZXcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcCNNYXAuZ2V0VGlsdFxuICAgKi9cbiAgZ2V0VGlsdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAuZ2V0VGlsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5nZXRab29tXG4gICAqL1xuICBnZXRab29tKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2dvb2dsZU1hcC5nZXRab29tKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLmNvbnRyb2xzXG4gICAqL1xuICBnZXQgY29udHJvbHMoKTogQXJyYXk8Z29vZ2xlLm1hcHMuTVZDQXJyYXk8Tm9kZT4+IHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmNvbnRyb2xzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5kYXRhXG4gICAqL1xuICBnZXQgZGF0YSgpOiBnb29nbGUubWFwcy5EYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLmRhdGE7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXAjTWFwLm1hcFR5cGVzXG4gICAqL1xuICBnZXQgbWFwVHlwZXMoKTogZ29vZ2xlLm1hcHMuTWFwVHlwZVJlZ2lzdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwLm1hcFR5cGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFwI01hcC5vdmVybGF5TWFwVHlwZXNcbiAgICovXG4gIGdldCBvdmVybGF5TWFwVHlwZXMoKTogZ29vZ2xlLm1hcHMuTVZDQXJyYXk8Z29vZ2xlLm1hcHMuTWFwVHlwZT4ge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXAub3ZlcmxheU1hcFR5cGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0U2l6ZSgpIHtcbiAgICBpZiAodGhpcy5fbWFwRWwpIHtcbiAgICAgIHRoaXMuX21hcEVsLnN0eWxlLmhlaWdodCA9IHRoaXMuaGVpZ2h0IHx8IERFRkFVTFRfSEVJR0hUO1xuICAgICAgdGhpcy5fbWFwRWwuc3R5bGUud2lkdGggPSB0aGlzLndpZHRoIHx8IERFRkFVTFRfV0lEVEg7XG4gICAgfVxuICB9XG5cbiAgLyoqIENvbWJpbmVzIHRoZSBjZW50ZXIgYW5kIHpvb20gYW5kIHRoZSBvdGhlciBtYXAgb3B0aW9ucyBpbnRvIGEgc2luZ2xlIG9iamVjdCAqL1xuICBwcml2YXRlIF9jb21iaW5lT3B0aW9ucygpOiBPYnNlcnZhYmxlPGdvb2dsZS5tYXBzLk1hcE9wdGlvbnM+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5fb3B0aW9ucywgdGhpcy5fY2VudGVyLCB0aGlzLl96b29tXSlcbiAgICAgICAgLnBpcGUobWFwKChbb3B0aW9ucywgY2VudGVyLCB6b29tXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbWJpbmVkT3B0aW9uczogZ29vZ2xlLm1hcHMuTWFwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBjZW50ZXI6IGNlbnRlciB8fCBvcHRpb25zLmNlbnRlcixcbiAgICAgICAgICAgIHpvb206IHpvb20gIT09IHVuZGVmaW5lZCA/IHpvb20gOiBvcHRpb25zLnpvb20sXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gY29tYmluZWRPcHRpb25zO1xuICAgICAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplTWFwKG9wdGlvbnNDaGFuZ2VzOiBPYnNlcnZhYmxlPGdvb2dsZS5tYXBzLk1hcE9wdGlvbnM+KTpcbiAgICAgIE9ic2VydmFibGU8Z29vZ2xlLm1hcHMuTWFwPiB7XG4gICAgcmV0dXJuIG9wdGlvbnNDaGFuZ2VzLnBpcGUoXG4gICAgICAgIHRha2UoMSksIG1hcChvcHRpb25zID0+IHtcbiAgICAgICAgICByZXR1cm4gbmV3IGdvb2dsZS5tYXBzLk1hcCh0aGlzLl9tYXBFbCwgb3B0aW9ucyk7XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvck9wdGlvbnNDaGFuZ2VzKCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2dvb2dsZU1hcENoYW5nZXMsIHRoaXMuX29wdGlvbnNdKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKFtnb29nbGVNYXAsIG9wdGlvbnNdKSA9PiB7XG4gICAgICAgICAgZ29vZ2xlTWFwLnNldE9wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2F0Y2hGb3JDZW50ZXJDaGFuZ2VzKCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2dvb2dsZU1hcENoYW5nZXMsIHRoaXMuX2NlbnRlcl0pXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSlcbiAgICAgICAgLnN1YnNjcmliZSgoW2dvb2dsZU1hcCwgY2VudGVyXSkgPT4ge1xuICAgICAgICAgIGlmIChjZW50ZXIpIHtcbiAgICAgICAgICAgIGdvb2dsZU1hcC5zZXRDZW50ZXIoY2VudGVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2F0Y2hGb3Jab29tQ2hhbmdlcygpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9nb29nbGVNYXBDaGFuZ2VzLCB0aGlzLl96b29tXSlcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZ29vZ2xlTWFwLCB6b29tXSkgPT4ge1xuICAgICAgICAgIGlmICh6b29tICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGdvb2dsZU1hcC5zZXRab29tKHpvb20pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplRXZlbnRIYW5kbGVycygpIHtcbiAgICBjb25zdCBldmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50RW1pdHRlcjx2b2lkPj4oW1xuICAgICAgWydib3VuZHNfY2hhbmdlZCcsIHRoaXMuYm91bmRzQ2hhbmdlZF0sXG4gICAgICBbJ2NlbnRlcl9jaGFuZ2VkJywgdGhpcy5jZW50ZXJDaGFuZ2VkXSxcbiAgICAgIFsnZHJhZycsIHRoaXMubWFwRHJhZ10sXG4gICAgICBbJ2RyYWdlbmQnLCB0aGlzLm1hcERyYWdlbmRdLFxuICAgICAgWydkcmFnc3RhcnQnLCB0aGlzLm1hcERyYWdzdGFydF0sXG4gICAgICBbJ2hlYWRpbmdfY2hhbmdlZCcsIHRoaXMuaGVhZGluZ0NoYW5nZWRdLFxuICAgICAgWydpZGxlJywgdGhpcy5pZGxlXSxcbiAgICAgIFsnbWFwdHlwZWlkX2NoYW5nZWQnLCB0aGlzLm1hcHR5cGVpZENoYW5nZWRdLFxuICAgICAgWydwcm9qZWN0aW9uX2NoYW5nZWQnLCB0aGlzLnByb2plY3Rpb25DaGFuZ2VkXSxcbiAgICAgIFsndGlsZXNsb2FkZWQnLCB0aGlzLnRpbGVzbG9hZGVkXSxcbiAgICAgIFsndGlsdF9jaGFuZ2VkJywgdGhpcy50aWx0Q2hhbmdlZF0sXG4gICAgICBbJ3pvb21DaGFuZ2VkJywgdGhpcy56b29tQ2hhbmdlZF0sXG4gICAgXSk7XG4gICAgY29uc3QgbW91c2VFdmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50Pj4oW1xuICAgICAgWydkYmxjbGljaycsIHRoaXMubWFwRGJsY2xpY2tdLFxuICAgICAgWydtb3VzZW1vdmUnLCB0aGlzLm1hcE1vdXNlbW92ZV0sXG4gICAgICBbJ21vdXNlb3V0JywgdGhpcy5tYXBNb3VzZW91dF0sXG4gICAgICBbJ21vdXNlb3ZlcicsIHRoaXMubWFwTW91c2VvdmVyXSxcbiAgICAgIFsncmlnaHRjbGljaycsIHRoaXMubWFwUmlnaHRjbGlja10sXG4gICAgXSk7XG4gICAgZXZlbnRIYW5kbGVycy5mb3JFYWNoKChldmVudEhhbmRsZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoZXZlbnRIYW5kbGVyLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKHRoaXMuX2dvb2dsZU1hcC5hZGRMaXN0ZW5lcihuYW1lLCAoKSA9PiB7XG4gICAgICAgICAgZXZlbnRIYW5kbGVyLmVtaXQoKTtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG1vdXNlRXZlbnRIYW5kbGVycy5mb3JFYWNoKFxuICAgICAgICAoZXZlbnRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmIChldmVudEhhbmRsZXIub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuX2dvb2dsZU1hcC5hZGRMaXN0ZW5lcihuYW1lLCAoZXZlbnQ6IGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxlci5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICBpZiAodGhpcy5tYXBDbGljay5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2godGhpcy5fZ29vZ2xlTWFwLmFkZExpc3RlbmVyKFxuICAgICAgICAgICdjbGljaycsIChldmVudDogZ29vZ2xlLm1hcHMuTW91c2VFdmVudHxnb29nbGUubWFwcy5JY29uTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tYXBDbGljay5lbWl0KGV2ZW50KTtcbiAgICAgICAgICB9KSk7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -20,4 +20,4 @@ /**

var MapInfoWindow = /** @class */ (function () {
function MapInfoWindow(googleMap, _elementRef) {
this.googleMap = googleMap;
function MapInfoWindow(_googleMap, _elementRef) {
this._googleMap = _googleMap;
this._elementRef = _elementRef;

@@ -138,5 +138,5 @@ /**

var marker = anchor ? anchor._marker : undefined;
if (this.googleMap._googleMap) {
if (this._googleMap._googleMap) {
this._elementRef.nativeElement.style.display = '';
this._infoWindow.open(this.googleMap._googleMap, marker);
this._infoWindow.open(this._googleMap._googleMap, marker);
}

@@ -192,2 +192,2 @@ };

export { MapInfoWindow };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWluZm8td2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2dvb2dsZS1tYXBzL21hcC1pbmZvLXdpbmRvdy9tYXAtaW5mby13aW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILHlFQUF5RTtBQUN6RSxvQ0FBb0M7QUFFcEMsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBR25EOzs7R0FHRztBQUNIO0lBMERFLHVCQUE2QixTQUFvQixFQUFVLFdBQW9DO1FBQWxFLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUEzQy9GOzs7V0FHRztRQUNPLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWhEOzs7O1dBSUc7UUFDTyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFcEQ7OztXQUdHO1FBQ08sYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFOUM7Ozs7V0FJRztRQUNPLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVyRDs7OztXQUlHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBZ0MsRUFBRSxDQUFDLENBQUM7UUFDbEUsY0FBUyxHQUN0QixJQUFJLGVBQWUsQ0FBeUQsU0FBUyxDQUFDLENBQUM7UUFFMUUs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T04sTUFBTTtnQ0FPTixNQUFNOztJQTRHVCxvQkFBQztDQUFBLEFBMUpELElBMEpDO1NBdEpZLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gV29ya2Fyb3VuZCBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYXplbGJ1aWxkL3J1bGVzX25vZGVqcy9pc3N1ZXMvMTI2NVxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJnb29nbGVtYXBzXCIgLz5cblxuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtHb29nbGVNYXB9IGZyb20gJy4uL2dvb2dsZS1tYXAvZ29vZ2xlLW1hcCc7XG5pbXBvcnQge01hcE1hcmtlcn0gZnJvbSAnLi4vbWFwLW1hcmtlci9tYXAtbWFya2VyJztcblxuLyoqXG4gKiBBbmd1bGFyIGNvbXBvbmVudCB0aGF0IHJlbmRlcnMgYSBHb29nbGUgTWFwcyBpbmZvIHdpbmRvdyB2aWEgdGhlIEdvb2dsZSBNYXBzIEphdmFTY3JpcHQgQVBJLlxuICogQHNlZSBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL2luZm8td2luZG93XG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ21hcC1pbmZvLXdpbmRvdycsXG4gIGhvc3Q6IHsnc3R5bGUnOiAnZGlzcGxheTogbm9uZSd9LFxufSlcbmV4cG9ydCBjbGFzcyBNYXBJbmZvV2luZG93IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyhvcHRpb25zOiBnb29nbGUubWFwcy5JbmZvV2luZG93T3B0aW9ucykge1xuICAgIHRoaXMuX29wdGlvbnMubmV4dChvcHRpb25zIHx8IHt9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwb3NpdGlvbihwb3NpdGlvbjogZ29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbHxnb29nbGUubWFwcy5MYXRMbmcpIHtcbiAgICB0aGlzLl9wb3NpdGlvbi5uZXh0KHBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvdyNJbmZvV2luZG93LmNsb3NlY2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBjbG9zZWNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvd1xuICAgKiAjSW5mb1dpbmRvdy5jb250ZW50X2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBjb250ZW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvaW5mby13aW5kb3cjSW5mb1dpbmRvdy5kb21yZWFkeVxuICAgKi9cbiAgQE91dHB1dCgpIGRvbXJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvd1xuICAgKiAjSW5mb1dpbmRvdy5wb3NpdGlvbl9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcG9zaXRpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvd1xuICAgKiAjSW5mb1dpbmRvdy56aW5kZXhfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHppbmRleENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Z29vZ2xlLm1hcHMuSW5mb1dpbmRvd09wdGlvbnM+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcG9zaXRpb24gPVxuICAgICAgbmV3IEJlaGF2aW9yU3ViamVjdDxnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsfGdvb2dsZS5tYXBzLkxhdExuZ3x1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiBnb29nbGUubWFwcy5NYXBzRXZlbnRMaXN0ZW5lcltdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfaW5mb1dpbmRvdz86IGdvb2dsZS5tYXBzLkluZm9XaW5kb3c7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBnb29nbGVNYXA6IEdvb2dsZU1hcCwgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2NvbWJpbmVPcHRpb25zKCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgIGlmICh0aGlzLl9pbmZvV2luZG93KSB7XG4gICAgICAgIHRoaXMuX2luZm9XaW5kb3cuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2luZm9XaW5kb3cgPSBuZXcgZ29vZ2xlLm1hcHMuSW5mb1dpbmRvdyhvcHRpb25zKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUV2ZW50SGFuZGxlcnMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiB0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyLnJlbW92ZSgpO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvaW5mby13aW5kb3cjSW5mb1dpbmRvdy5jbG9zZVxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuX2luZm9XaW5kb3cpIHtcbiAgICAgIHRoaXMuX2luZm9XaW5kb3cuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvaW5mby13aW5kb3cjSW5mb1dpbmRvdy5nZXRDb250ZW50XG4gICAqL1xuICBnZXRDb250ZW50KCk6IHN0cmluZ3xOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5faW5mb1dpbmRvdyEuZ2V0Q29udGVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL2luZm8td2luZG93XG4gICAqICNJbmZvV2luZG93LmdldFBvc2l0aW9uXG4gICAqL1xuICBnZXRQb3NpdGlvbigpOiBnb29nbGUubWFwcy5MYXRMbmd8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2luZm9XaW5kb3chLmdldFBvc2l0aW9uKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvdyNJbmZvV2luZG93LmdldFpJbmRleFxuICAgKi9cbiAgZ2V0WkluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2luZm9XaW5kb3chLmdldFpJbmRleCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBNYXBJbmZvV2luZG93IHVzaW5nIHRoZSBwcm92aWRlZCBNYXBNYXJrZXIgYXMgdGhlIGFuY2hvci4gSWYgdGhlIGFuY2hvciBpcyBub3Qgc2V0LFxuICAgKiB0aGVuIHRoZSBwb3NpdGlvbiBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9ucyBpbnB1dCBpcyB1c2VkIGluc3RlYWQuXG4gICAqL1xuICBvcGVuKGFuY2hvcj86IE1hcE1hcmtlcikge1xuICAgIGNvbnN0IG1hcmtlciA9IGFuY2hvciA/IGFuY2hvci5fbWFya2VyIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLmdvb2dsZU1hcC5fZ29vZ2xlTWFwKSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICcnO1xuICAgICAgdGhpcy5faW5mb1dpbmRvdyEub3Blbih0aGlzLmdvb2dsZU1hcC5fZ29vZ2xlTWFwLCBtYXJrZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbWJpbmVPcHRpb25zKCk6IE9ic2VydmFibGU8Z29vZ2xlLm1hcHMuSW5mb1dpbmRvd09wdGlvbnM+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5fb3B0aW9ucywgdGhpcy5fcG9zaXRpb25dKS5waXBlKG1hcCgoW29wdGlvbnMsIHBvc2l0aW9uXSkgPT4ge1xuICAgICAgY29uc3QgY29tYmluZWRPcHRpb25zOiBnb29nbGUubWFwcy5JbmZvV2luZG93T3B0aW9ucyA9IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uIHx8IG9wdGlvbnMucG9zaXRpb24sXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIH07XG4gICAgICByZXR1cm4gY29tYmluZWRPcHRpb25zO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVFdmVudEhhbmRsZXJzKCkge1xuICAgIGNvbnN0IGV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgRXZlbnRFbWl0dGVyPHZvaWQ+PihbXG4gICAgICBbJ2Nsb3NlY2xpY2snLCB0aGlzLmNsb3NlY2xpY2tdLFxuICAgICAgWydjb250ZW50X2NoYW5nZWQnLCB0aGlzLmNvbnRlbnRDaGFuZ2VkXSxcbiAgICAgIFsnZG9tcmVhZHknLCB0aGlzLmRvbXJlYWR5XSxcbiAgICAgIFsncG9zaXRpb25fY2hhbmdlZCcsIHRoaXMucG9zaXRpb25DaGFuZ2VkXSxcbiAgICAgIFsnemluZGV4X2NoYW5nZWQnLCB0aGlzLnppbmRleENoYW5nZWRdLFxuICAgIF0pO1xuICAgIGV2ZW50SGFuZGxlcnMuZm9yRWFjaCgoZXZlbnRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGV2ZW50SGFuZGxlci5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaCh0aGlzLl9pbmZvV2luZG93IS5hZGRMaXN0ZW5lcihuYW1lLCAoKSA9PiB7XG4gICAgICAgICAgZXZlbnRIYW5kbGVyLmVtaXQoKTtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWluZm8td2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2dvb2dsZS1tYXBzL21hcC1pbmZvLXdpbmRvdy9tYXAtaW5mby13aW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILHlFQUF5RTtBQUN6RSxvQ0FBb0M7QUFFcEMsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBR25EOzs7R0FHRztBQUNIO0lBMERFLHVCQUE2QixVQUFxQixFQUM5QixXQUFvQztRQUQzQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQTVDeEQ7OztXQUdHO1FBQ08sZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFaEQ7Ozs7V0FJRztRQUNPLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVwRDs7O1dBR0c7UUFDTyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU5Qzs7OztXQUlHO1FBQ08sb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXJEOzs7O1dBSUc7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbEMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFnQyxFQUFFLENBQUMsQ0FBQztRQUNsRSxjQUFTLEdBQ3RCLElBQUksZUFBZSxDQUF5RCxTQUFTLENBQUMsQ0FBQztRQUUx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Q0FPTixNQUFNO2dDQU9OLE1BQU07O0lBNEdULG9CQUFDO0NBQUEsQUExSkQsSUEwSkM7U0F0SlksYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vLyBXb3JrYXJvdW5kIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2JhemVsYnVpbGQvcnVsZXNfbm9kZWpzL2lzc3Vlcy8xMjY1XG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cImdvb2dsZW1hcHNcIiAvPlxuXG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0dvb2dsZU1hcH0gZnJvbSAnLi4vZ29vZ2xlLW1hcC9nb29nbGUtbWFwJztcbmltcG9ydCB7TWFwTWFya2VyfSBmcm9tICcuLi9tYXAtbWFya2VyL21hcC1tYXJrZXInO1xuXG4vKipcbiAqIEFuZ3VsYXIgY29tcG9uZW50IHRoYXQgcmVuZGVycyBhIEdvb2dsZSBNYXBzIGluZm8gd2luZG93IHZpYSB0aGUgR29vZ2xlIE1hcHMgSmF2YVNjcmlwdCBBUEkuXG4gKiBAc2VlIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvaW5mby13aW5kb3dcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbWFwLWluZm8td2luZG93JyxcbiAgaG9zdDogeydzdHlsZSc6ICdkaXNwbGF5OiBub25lJ30sXG59KVxuZXhwb3J0IGNsYXNzIE1hcEluZm9XaW5kb3cgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IGdvb2dsZS5tYXBzLkluZm9XaW5kb3dPcHRpb25zKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5uZXh0KG9wdGlvbnMgfHwge30pO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHBvc2l0aW9uKHBvc2l0aW9uOiBnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsfGdvb2dsZS5tYXBzLkxhdExuZykge1xuICAgIHRoaXMuX3Bvc2l0aW9uLm5leHQocG9zaXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL2luZm8td2luZG93I0luZm9XaW5kb3cuY2xvc2VjbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIGNsb3NlY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL2luZm8td2luZG93XG4gICAqICNJbmZvV2luZG93LmNvbnRlbnRfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGNvbnRlbnRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvdyNJbmZvV2luZG93LmRvbXJlYWR5XG4gICAqL1xuICBAT3V0cHV0KCkgZG9tcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL2luZm8td2luZG93XG4gICAqICNJbmZvV2luZG93LnBvc2l0aW9uX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBwb3NpdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL2luZm8td2luZG93XG4gICAqICNJbmZvV2luZG93LnppbmRleF9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgemluZGV4Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxnb29nbGUubWFwcy5JbmZvV2luZG93T3B0aW9ucz4oe30pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wb3NpdGlvbiA9XG4gICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWx8Z29vZ2xlLm1hcHMuTGF0TG5nfHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6IGdvb2dsZS5tYXBzLk1hcHNFdmVudExpc3RlbmVyW10gPSBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9pbmZvV2luZG93PzogZ29vZ2xlLm1hcHMuSW5mb1dpbmRvdztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9nb29nbGVNYXA6IEdvb2dsZU1hcCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fY29tYmluZU9wdGlvbnMoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgaWYgKHRoaXMuX2luZm9XaW5kb3cpIHtcbiAgICAgICAgdGhpcy5faW5mb1dpbmRvdy5zZXRPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faW5mb1dpbmRvdyA9IG5ldyBnb29nbGUubWFwcy5JbmZvV2luZG93KG9wdGlvbnMpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplRXZlbnRIYW5kbGVycygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIGZvciAobGV0IGxpc3RlbmVyIG9mIHRoaXMuX2xpc3RlbmVycykge1xuICAgICAgbGlzdGVuZXIucmVtb3ZlKCk7XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWUgZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvdyNJbmZvV2luZG93LmNsb3NlXG4gICAqL1xuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5faW5mb1dpbmRvdykge1xuICAgICAgdGhpcy5faW5mb1dpbmRvdy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9pbmZvLXdpbmRvdyNJbmZvV2luZG93LmdldENvbnRlbnRcbiAgICovXG4gIGdldENvbnRlbnQoKTogc3RyaW5nfE5vZGUge1xuICAgIHJldHVybiB0aGlzLl9pbmZvV2luZG93IS5nZXRDb250ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvaW5mby13aW5kb3dcbiAgICogI0luZm9XaW5kb3cuZ2V0UG9zaXRpb25cbiAgICovXG4gIGdldFBvc2l0aW9uKCk6IGdvb2dsZS5tYXBzLkxhdExuZ3xudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faW5mb1dpbmRvdyEuZ2V0UG9zaXRpb24oKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL2luZm8td2luZG93I0luZm9XaW5kb3cuZ2V0WkluZGV4XG4gICAqL1xuICBnZXRaSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5faW5mb1dpbmRvdyEuZ2V0WkluZGV4KCk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIE1hcEluZm9XaW5kb3cgdXNpbmcgdGhlIHByb3ZpZGVkIE1hcE1hcmtlciBhcyB0aGUgYW5jaG9yLiBJZiB0aGUgYW5jaG9yIGlzIG5vdCBzZXQsXG4gICAqIHRoZW4gdGhlIHBvc2l0aW9uIHByb3BlcnR5IG9mIHRoZSBvcHRpb25zIGlucHV0IGlzIHVzZWQgaW5zdGVhZC5cbiAgICovXG4gIG9wZW4oYW5jaG9yPzogTWFwTWFya2VyKSB7XG4gICAgY29uc3QgbWFya2VyID0gYW5jaG9yID8gYW5jaG9yLl9tYXJrZXIgOiB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuX2dvb2dsZU1hcC5fZ29vZ2xlTWFwKSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICcnO1xuICAgICAgdGhpcy5faW5mb1dpbmRvdyEub3Blbih0aGlzLl9nb29nbGVNYXAuX2dvb2dsZU1hcCwgbWFya2VyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb21iaW5lT3B0aW9ucygpOiBPYnNlcnZhYmxlPGdvb2dsZS5tYXBzLkluZm9XaW5kb3dPcHRpb25zPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuX29wdGlvbnMsIHRoaXMuX3Bvc2l0aW9uXSkucGlwZShtYXAoKFtvcHRpb25zLCBwb3NpdGlvbl0pID0+IHtcbiAgICAgIGNvbnN0IGNvbWJpbmVkT3B0aW9uczogZ29vZ2xlLm1hcHMuSW5mb1dpbmRvd09wdGlvbnMgPSB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbiB8fCBvcHRpb25zLnBvc2l0aW9uLFxuICAgICAgICBjb250ZW50OiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGNvbWJpbmVkT3B0aW9ucztcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplRXZlbnRIYW5kbGVycygpIHtcbiAgICBjb25zdCBldmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50RW1pdHRlcjx2b2lkPj4oW1xuICAgICAgWydjbG9zZWNsaWNrJywgdGhpcy5jbG9zZWNsaWNrXSxcbiAgICAgIFsnY29udGVudF9jaGFuZ2VkJywgdGhpcy5jb250ZW50Q2hhbmdlZF0sXG4gICAgICBbJ2RvbXJlYWR5JywgdGhpcy5kb21yZWFkeV0sXG4gICAgICBbJ3Bvc2l0aW9uX2NoYW5nZWQnLCB0aGlzLnBvc2l0aW9uQ2hhbmdlZF0sXG4gICAgICBbJ3ppbmRleF9jaGFuZ2VkJywgdGhpcy56aW5kZXhDaGFuZ2VkXSxcbiAgICBdKTtcbiAgICBldmVudEhhbmRsZXJzLmZvckVhY2goKGV2ZW50SGFuZGxlcjogRXZlbnRFbWl0dGVyPHZvaWQ+LCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChldmVudEhhbmRsZXIub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2godGhpcy5faW5mb1dpbmRvdyEuYWRkTGlzdGVuZXIobmFtZSwgKCkgPT4ge1xuICAgICAgICAgIGV2ZW50SGFuZGxlci5lbWl0KCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19

@@ -27,4 +27,4 @@ /**

var MapMarker = /** @class */ (function () {
function MapMarker(googleMap) {
this.googleMap = googleMap;
function MapMarker(_googleMap) {
this._googleMap = _googleMap;
/**

@@ -183,3 +183,3 @@ * See

_this._marker = new google.maps.Marker(options);
_this._marker.setMap(_this.googleMap._googleMap);
_this._marker.setMap(_this._googleMap._googleMap);
_this._initializeEventHandlers();

@@ -303,3 +303,3 @@ });

var _b = __read(_a, 5), options = _b[0], title = _b[1], position = _b[2], label = _b[3], clickable = _b[4];
var combinedOptions = __assign(__assign({}, options), { title: title || options.title, position: position || options.position, label: label || options.label, clickable: clickable !== undefined ? clickable : options.clickable, map: _this.googleMap._googleMap || null });
var combinedOptions = __assign(__assign({}, options), { title: title || options.title, position: position || options.position, label: label || options.label, clickable: clickable !== undefined ? clickable : options.clickable, map: _this._googleMap._googleMap || null });
return combinedOptions;

@@ -392,3 +392,2 @@ }));

{ type: Component, args: [{
moduleId: module.id,
selector: 'map-marker',

@@ -435,2 +434,2 @@ template: '<ng-content></ng-content>',

export { MapMarker };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLW1hcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9nb29nbGUtbWFwcy9tYXAtbWFya2VyL21hcC1tYXJrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILHlFQUF5RTtBQUN6RSxvQ0FBb0M7QUFFcEMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLElBQU0sc0JBQXNCLEdBQUc7SUFDcEMsUUFBUSxFQUFFLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUM7Q0FDN0MsQ0FBQztBQUVGOzs7R0FHRztBQUNIO0lBOEtFLG1CQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBN0lqRDs7O1dBR0c7UUFDTyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXREOzs7V0FHRztRQUNPLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUVoRTs7O1dBR0c7UUFDTyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXREOzs7V0FHRztRQUNPLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVuRDs7O1dBR0c7UUFDTyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBRW5F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QUMsSUFBSTtpQkFDdEM7Ozs7Z0JBcEJPLFNBQVM7OzswQkFzQmQsS0FBSzt3QkFLTCxLQUFLOzJCQUtMLEtBQUs7d0JBS0wsS0FBSzs0QkFLTCxLQUFLO21DQVNMLE1BQU07MkJBTU4sTUFBTTttQ0FNTixNQUFNO2dDQU1OLE1BQU07OEJBTU4sTUFBTTswQkFNTixNQUFNOzZCQU1OLE1BQU07bUNBTU4sTUFBTTsrQkFNTixNQUFNOzhCQU1OLE1BQU07OEJBTU4sTUFBTTsrQkFNTixNQUFNOzhCQU1OLE1BQU07K0JBTU4sTUFBTTs2QkFNTixNQUFNO2tDQU1OLE1BQU07Z0NBTU4sTUFBTTsrQkFNTixNQUFNOytCQU1OLE1BQU07aUNBTU4sTUFBTTtnQ0FNTixNQUFNOztJQWlQVCxnQkFBQztDQUFBLEFBOVlELElBOFlDO1NBdllZLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gV29ya2Fyb3VuZCBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYXplbGJ1aWxkL3J1bGVzX25vZGVqcy9pc3N1ZXMvMTI2NVxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJnb29nbGVtYXBzXCIgLz5cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgdGFrZSwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7R29vZ2xlTWFwfSBmcm9tICcuLi9nb29nbGUtbWFwL2dvb2dsZS1tYXAnO1xuXG4vKipcbiAqIERlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIEdvb2dsZSBNYXBzIG1hcmtlciBjb21wb25lbnQuIERpc3BsYXlzIGEgbWFya2VyXG4gKiBhdCB0aGUgR29vZ2xlcGxleC5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFSS0VSX09QVElPTlMgPSB7XG4gIHBvc2l0aW9uOiB7bGF0OiAzNy40MjE5OTUsIGxuZzogLTEyMi4wODQwOTJ9LFxufTtcblxuLyoqXG4gKiBBbmd1bGFyIGNvbXBvbmVudCB0aGF0IHJlbmRlcnMgYSBHb29nbGUgTWFwcyBtYXJrZXIgdmlhIHRoZSBHb29nbGUgTWFwcyBKYXZhU2NyaXB0IEFQSS5cbiAqIEBzZWUgZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXJcbiAqL1xuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiAnbWFwLW1hcmtlcicsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBNYXJrZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IGdvb2dsZS5tYXBzLk1hcmtlck9wdGlvbnMpIHtcbiAgICB0aGlzLl9vcHRpb25zLm5leHQob3B0aW9ucyB8fCBERUZBVUxUX01BUktFUl9PUFRJT05TKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB0aXRsZSh0aXRsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGl0bGUubmV4dCh0aXRsZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcG9zaXRpb24ocG9zaXRpb246IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWx8Z29vZ2xlLm1hcHMuTGF0TG5nKSB7XG4gICAgdGhpcy5fcG9zaXRpb24ubmV4dChwb3NpdGlvbik7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgbGFiZWwobGFiZWw6IHN0cmluZ3xnb29nbGUubWFwcy5NYXJrZXJMYWJlbCkge1xuICAgIHRoaXMuX2xhYmVsLm5leHQobGFiZWwpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGNsaWNrYWJsZShjbGlja2FibGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jbGlja2FibGUubmV4dChjbGlja2FibGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuYW5pbWF0aW9uX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBhbmltYXRpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmNsaWNrXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuY2xpY2thYmxlX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBjbGlja2FibGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmN1cnNvcl9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgY3Vyc29yQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5kYmxjbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcERibGNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmRyYWdcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEcmFnID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmRyYWdlbmRcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEcmFnZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmRyYWdnYWJsZV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgZHJhZ2dhYmxlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5kcmFnc3RhcnRcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEcmFnc3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZmxhdF9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgZmxhdENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuaWNvbl9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgaWNvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIubW91c2Vkb3duXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwTW91c2Vkb3duID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLm1vdXNlb3V0XG4gICAqL1xuICBAT3V0cHV0KCkgbWFwTW91c2VvdXQgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIubW91c2VvdmVyXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwTW91c2VvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLm1vdXNldXBcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBNb3VzZXVwID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLnBvc2l0aW9uX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBwb3NpdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIucmlnaHRjbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcFJpZ2h0Y2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuc2hhcGVfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHNoYXBlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci50aXRsZV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgdGl0bGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLnZpc2libGVfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLnppbmRleF9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgemluZGV4Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zID1cbiAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Z29vZ2xlLm1hcHMuTWFya2VyT3B0aW9ucz4oREVGQVVMVF9NQVJLRVJfT1BUSU9OUyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpdGxlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmd8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wb3NpdGlvbiA9XG4gICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWx8Z29vZ2xlLm1hcHMuTGF0TG5nfHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGFiZWwgPVxuICAgICAgbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmd8Z29vZ2xlLm1hcHMuTWFya2VyTGFiZWx8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jbGlja2FibGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW58dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RlbmVyczogZ29vZ2xlLm1hcHMuTWFwc0V2ZW50TGlzdGVuZXJbXSA9IFtdO1xuXG4gIF9tYXJrZXI/OiBnb29nbGUubWFwcy5NYXJrZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBnb29nbGVNYXA6IEdvb2dsZU1hcCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjb21iaW5lZE9wdGlvbnNDaGFuZ2VzID0gdGhpcy5fY29tYmluZU9wdGlvbnMoKTtcblxuICAgIGNvbWJpbmVkT3B0aW9uc0NoYW5nZXMucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUob3B0aW9ucyA9PiB7XG4gICAgICB0aGlzLl9tYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKG9wdGlvbnMpO1xuICAgICAgdGhpcy5fbWFya2VyLnNldE1hcCh0aGlzLmdvb2dsZU1hcC5fZ29vZ2xlTWFwKTtcbiAgICAgIHRoaXMuX2luaXRpYWxpemVFdmVudEhhbmRsZXJzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl93YXRjaEZvck9wdGlvbnNDaGFuZ2VzKCk7XG4gICAgdGhpcy5fd2F0Y2hGb3JUaXRsZUNoYW5nZXMoKTtcbiAgICB0aGlzLl93YXRjaEZvclBvc2l0aW9uQ2hhbmdlcygpO1xuICAgIHRoaXMuX3dhdGNoRm9yTGFiZWxDaGFuZ2VzKCk7XG4gICAgdGhpcy5fd2F0Y2hGb3JDbGlja2FibGVDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgZm9yIChsZXQgbGlzdGVuZXIgb2YgdGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgICBsaXN0ZW5lci5yZW1vdmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21hcmtlcikge1xuICAgICAgdGhpcy5fbWFya2VyLnNldE1hcChudWxsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRBbmltYXRpb25cbiAgICovXG4gIGdldEFuaW1hdGlvbigpOiBnb29nbGUubWFwcy5BbmltYXRpb258bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0QW5pbWF0aW9uKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldENsaWNrYWJsZVxuICAgKi9cbiAgZ2V0Q2xpY2thYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldENsaWNrYWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0Q3Vyc29yXG4gICAqL1xuICBnZXRDdXJzb3IoKTogc3RyaW5nfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldEN1cnNvcigpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXREcmFnZ2FibGVcbiAgICovXG4gIGdldERyYWdnYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9tYXJrZXIhLmdldERyYWdnYWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0SWNvblxuICAgKi9cbiAgZ2V0SWNvbigpOiBzdHJpbmd8Z29vZ2xlLm1hcHMuSWNvbnxnb29nbGUubWFwcy5TeW1ib2x8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0SWNvbigpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRMYWJlbFxuICAgKi9cbiAgZ2V0TGFiZWwoKTogZ29vZ2xlLm1hcHMuTWFya2VyTGFiZWx8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0TGFiZWwoKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0T3BhY2l0eVxuICAgKi9cbiAgZ2V0T3BhY2l0eSgpOiBudW1iZXJ8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0T3BhY2l0eSgpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRQb3NpdGlvblxuICAgKi9cbiAgZ2V0UG9zaXRpb24oKTogZ29vZ2xlLm1hcHMuTGF0TG5nfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldFBvc2l0aW9uKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldFNoYXBlXG4gICAqL1xuICBnZXRTaGFwZSgpOiBnb29nbGUubWFwcy5NYXJrZXJTaGFwZXxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRTaGFwZSgpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRUaXRsZVxuICAgKi9cbiAgZ2V0VGl0bGUoKTogc3RyaW5nfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldFRpdGxlKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldFZpc2libGVcbiAgICovXG4gIGdldFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0VmlzaWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0WkluZGV4XG4gICAqL1xuICBnZXRaSW5kZXgoKTogbnVtYmVyfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldFpJbmRleCgpIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jb21iaW5lT3B0aW9ucygpOiBPYnNlcnZhYmxlPGdvb2dsZS5tYXBzLk1hcmtlck9wdGlvbnM+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5fb3B0aW9ucywgdGhpcy5fdGl0bGUsIHRoaXMuX3Bvc2l0aW9uLCB0aGlzLl9sYWJlbCwgdGhpcy5fY2xpY2thYmxlXSlcbiAgICAgICAgLnBpcGUobWFwKChbb3B0aW9ucywgdGl0bGUsIHBvc2l0aW9uLCBsYWJlbCwgY2xpY2thYmxlXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbWJpbmVkT3B0aW9uczogZ29vZ2xlLm1hcHMuTWFya2VyT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUgfHwgb3B0aW9ucy50aXRsZSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbiB8fCBvcHRpb25zLnBvc2l0aW9uLFxuICAgICAgICAgICAgbGFiZWw6IGxhYmVsIHx8IG9wdGlvbnMubGFiZWwsXG4gICAgICAgICAgICBjbGlja2FibGU6IGNsaWNrYWJsZSAhPT0gdW5kZWZpbmVkID8gY2xpY2thYmxlIDogb3B0aW9ucy5jbGlja2FibGUsXG4gICAgICAgICAgICBtYXA6IHRoaXMuZ29vZ2xlTWFwLl9nb29nbGVNYXAgfHwgbnVsbCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBjb21iaW5lZE9wdGlvbnM7XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3dhdGNoRm9yT3B0aW9uc0NoYW5nZXMoKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgaWYgKHRoaXMuX21hcmtlcikge1xuICAgICAgICB0aGlzLl9tYXJrZXIuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3dhdGNoRm9yVGl0bGVDaGFuZ2VzKCkge1xuICAgIHRoaXMuX3RpdGxlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodGl0bGUgPT4ge1xuICAgICAgaWYgKHRoaXMuX21hcmtlciAmJiB0aXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX21hcmtlci5zZXRUaXRsZSh0aXRsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvclBvc2l0aW9uQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9wb3NpdGlvbi5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHBvc2l0aW9uID0+IHtcbiAgICAgIGlmICh0aGlzLl9tYXJrZXIgJiYgcG9zaXRpb24pIHtcbiAgICAgICAgdGhpcy5fbWFya2VyLnNldFBvc2l0aW9uKHBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3dhdGNoRm9yTGFiZWxDaGFuZ2VzKCkge1xuICAgIHRoaXMuX2xhYmVsLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUobGFiZWwgPT4ge1xuICAgICAgaWYgKHRoaXMuX21hcmtlciAmJiBsYWJlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX21hcmtlci5zZXRMYWJlbChsYWJlbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvckNsaWNrYWJsZUNoYW5nZXMoKSB7XG4gICAgdGhpcy5fY2xpY2thYmxlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoY2xpY2thYmxlID0+IHtcbiAgICAgIGlmICh0aGlzLl9tYXJrZXIgJiYgY2xpY2thYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbWFya2VyLnNldENsaWNrYWJsZShjbGlja2FibGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUV2ZW50SGFuZGxlcnMoKSB7XG4gICAgY29uc3QgZXZlbnRIYW5kbGVycyA9IG5ldyBNYXA8c3RyaW5nLCBFdmVudEVtaXR0ZXI8dm9pZD4+KFtcbiAgICAgIFsnYW5pbWF0aW9uX2NoYW5nZWQnLCB0aGlzLmFuaW1hdGlvbkNoYW5nZWRdLFxuICAgICAgWydjbGlja2FibGVfY2hhbmdlZCcsIHRoaXMuY2xpY2thYmxlQ2hhbmdlZF0sXG4gICAgICBbJ2N1cnNvcl9jaGFuZ2VkJywgdGhpcy5jdXJzb3JDaGFuZ2VkXSxcbiAgICAgIFsnZHJhZ2dhYmxlX2NoYW5nZWQnLCB0aGlzLmRyYWdnYWJsZUNoYW5nZWRdLFxuICAgICAgWydmbGF0X2NoYW5nZWQnLCB0aGlzLmZsYXRDaGFuZ2VkXSxcbiAgICAgIFsnaWNvbl9jaGFuZ2VkJywgdGhpcy5pY29uQ2hhbmdlZF0sXG4gICAgICBbJ3Bvc2l0aW9uX2NoYW5nZWQnLCB0aGlzLnBvc2l0aW9uQ2hhbmdlZF0sXG4gICAgICBbJ3NoYXBlX2NoYW5nZWQnLCB0aGlzLnNoYXBlQ2hhbmdlZF0sXG4gICAgICBbJ3RpdGxlX2NoYW5nZWQnLCB0aGlzLnRpdGxlQ2hhbmdlZF0sXG4gICAgICBbJ3Zpc2libGVfY2hhbmdlZCcsIHRoaXMudmlzaWJsZUNoYW5nZWRdLFxuICAgICAgWyd6aW5kZXhfY2hhbmdlZCcsIHRoaXMuemluZGV4Q2hhbmdlZF0sXG4gICAgXSk7XG4gICAgY29uc3QgbW91c2VFdmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50Pj4oW1xuICAgICAgWydjbGljaycsIHRoaXMubWFwQ2xpY2tdLFxuICAgICAgWydkYmxjbGljaycsIHRoaXMubWFwRGJsY2xpY2tdLFxuICAgICAgWydkcmFnJywgdGhpcy5tYXBEcmFnXSxcbiAgICAgIFsnZHJhZ2VuZCcsIHRoaXMubWFwRHJhZ2VuZF0sXG4gICAgICBbJ2RyYWdzdGFydCcsIHRoaXMubWFwRHJhZ3N0YXJ0XSxcbiAgICAgIFsnbW91c2Vkb3duJywgdGhpcy5tYXBNb3VzZWRvd25dLFxuICAgICAgWydtb3VzZW91dCcsIHRoaXMubWFwTW91c2VvdXRdLFxuICAgICAgWydtb3VzZW92ZXInLCB0aGlzLm1hcE1vdXNlb3Zlcl0sXG4gICAgICBbJ21vdXNldXAnLCB0aGlzLm1hcE1vdXNldXBdLFxuICAgICAgWydyaWdodGNsaWNrJywgdGhpcy5tYXBSaWdodGNsaWNrXSxcbiAgICBdKTtcblxuICAgIGV2ZW50SGFuZGxlcnMuZm9yRWFjaCgoZXZlbnRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGV2ZW50SGFuZGxlci5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaCh0aGlzLl9tYXJrZXIhLmFkZExpc3RlbmVyKG5hbWUsICgpID0+IHtcbiAgICAgICAgICBldmVudEhhbmRsZXIuZW1pdCgpO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbW91c2VFdmVudEhhbmRsZXJzLmZvckVhY2goXG4gICAgICAgIChldmVudEhhbmRsZXI6IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PiwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50SGFuZGxlci5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5fbWFya2VyIS5hZGRMaXN0ZW5lcihuYW1lLCAoZXZlbnQ6IGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxlci5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLW1hcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9nb29nbGUtbWFwcy9tYXAtbWFya2VyL21hcC1tYXJrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILHlFQUF5RTtBQUN6RSxvQ0FBb0M7QUFFcEMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLElBQU0sc0JBQXNCLEdBQUc7SUFDcEMsUUFBUSxFQUFFLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUM7Q0FDN0MsQ0FBQztBQUVGOzs7R0FHRztBQUNIO0lBNktFLG1CQUE2QixVQUFxQjtRQUFyQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBN0lsRDs7O1dBR0c7UUFDTyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXREOzs7V0FHRztRQUNPLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUVoRTs7O1dBR0c7UUFDTyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXREOzs7V0FHRztRQUNPLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVuRDs7O1dBR0c7UUFDTyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBRW5F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MEJBcUJkLEtBQUs7d0JBS0wsS0FBSzsyQkFLTCxLQUFLO3dCQUtMLEtBQUs7NEJBS0wsS0FBSzttQ0FTTCxNQUFNOzJCQU1OLE1BQU07bUNBTU4sTUFBTTtnQ0FNTixNQUFNOzhCQU1OLE1BQU07MEJBTU4sTUFBTTs2QkFNTixNQUFNO21DQU1OLE1BQU07K0JBTU4sTUFBTTs4QkFNTixNQUFNOzhCQU1OLE1BQU07K0JBTU4sTUFBTTs4QkFNTixNQUFNOytCQU1OLE1BQU07NkJBTU4sTUFBTTtrQ0FNTixNQUFNO2dDQU1OLE1BQU07K0JBTU4sTUFBTTsrQkFNTixNQUFNO2lDQU1OLE1BQU07Z0NBTU4sTUFBTTs7SUFpUFQsZ0JBQUM7Q0FBQSxBQTdZRCxJQTZZQztTQXZZWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8vIFdvcmthcm91bmQgZm9yOiBodHRwczovL2dpdGh1Yi5jb20vYmF6ZWxidWlsZC9ydWxlc19ub2RlanMvaXNzdWVzLzEyNjVcbi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiZ29vZ2xlbWFwc1wiIC8+XG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2UsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0dvb2dsZU1hcH0gZnJvbSAnLi4vZ29vZ2xlLW1hcC9nb29nbGUtbWFwJztcblxuLyoqXG4gKiBEZWZhdWx0IG9wdGlvbnMgZm9yIHRoZSBHb29nbGUgTWFwcyBtYXJrZXIgY29tcG9uZW50LiBEaXNwbGF5cyBhIG1hcmtlclxuICogYXQgdGhlIEdvb2dsZXBsZXguXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUktFUl9PUFRJT05TID0ge1xuICBwb3NpdGlvbjoge2xhdDogMzcuNDIxOTk1LCBsbmc6IC0xMjIuMDg0MDkyfSxcbn07XG5cbi8qKlxuICogQW5ndWxhciBjb21wb25lbnQgdGhhdCByZW5kZXJzIGEgR29vZ2xlIE1hcHMgbWFya2VyIHZpYSB0aGUgR29vZ2xlIE1hcHMgSmF2YVNjcmlwdCBBUEkuXG4gKiBAc2VlIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hcC1tYXJrZXInLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTWFwTWFya2VyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyhvcHRpb25zOiBnb29nbGUubWFwcy5NYXJrZXJPcHRpb25zKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5uZXh0KG9wdGlvbnMgfHwgREVGQVVMVF9NQVJLRVJfT1BUSU9OUyk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgdGl0bGUodGl0bGU6IHN0cmluZykge1xuICAgIHRoaXMuX3RpdGxlLm5leHQodGl0bGUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHBvc2l0aW9uKHBvc2l0aW9uOiBnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsfGdvb2dsZS5tYXBzLkxhdExuZykge1xuICAgIHRoaXMuX3Bvc2l0aW9uLm5leHQocG9zaXRpb24pO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGxhYmVsKGxhYmVsOiBzdHJpbmd8Z29vZ2xlLm1hcHMuTWFya2VyTGFiZWwpIHtcbiAgICB0aGlzLl9sYWJlbC5uZXh0KGxhYmVsKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjbGlja2FibGUoY2xpY2thYmxlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2xpY2thYmxlLm5leHQoY2xpY2thYmxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmFuaW1hdGlvbl9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgYW5pbWF0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5jbGlja1xuICAgKi9cbiAgQE91dHB1dCgpIG1hcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmNsaWNrYWJsZV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgY2xpY2thYmxlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5jdXJzb3JfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGN1cnNvckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZGJsY2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBEYmxjbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5kcmFnXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwRHJhZyA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5kcmFnZW5kXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwRHJhZ2VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5kcmFnZ2FibGVfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGRyYWdnYWJsZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZHJhZ3N0YXJ0XG4gICAqL1xuICBAT3V0cHV0KCkgbWFwRHJhZ3N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmZsYXRfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGZsYXRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmljb25fY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGljb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLm1vdXNlZG93blxuICAgKi9cbiAgQE91dHB1dCgpIG1hcE1vdXNlZG93biA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5tb3VzZW91dFxuICAgKi9cbiAgQE91dHB1dCgpIG1hcE1vdXNlb3V0ID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLm1vdXNlb3ZlclxuICAgKi9cbiAgQE91dHB1dCgpIG1hcE1vdXNlb3ZlciA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5tb3VzZXVwXG4gICAqL1xuICBAT3V0cHV0KCkgbWFwTW91c2V1cCA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5wb3NpdGlvbl9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcG9zaXRpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLnJpZ2h0Y2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBtYXBSaWdodGNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxnb29nbGUubWFwcy5Nb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLnNoYXBlX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBzaGFwZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIudGl0bGVfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHRpdGxlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci52aXNpYmxlX2NoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci56aW5kZXhfY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHppbmRleENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucyA9XG4gICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PGdvb2dsZS5tYXBzLk1hcmtlck9wdGlvbnM+KERFRkFVTFRfTUFSS0VSX09QVElPTlMpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aXRsZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nfHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcG9zaXRpb24gPVxuICAgICAgbmV3IEJlaGF2aW9yU3ViamVjdDxnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsfGdvb2dsZS5tYXBzLkxhdExuZ3x1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhYmVsID1cbiAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nfGdvb2dsZS5tYXBzLk1hcmtlckxhYmVsfHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2xpY2thYmxlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFufHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6IGdvb2dsZS5tYXBzLk1hcHNFdmVudExpc3RlbmVyW10gPSBbXTtcblxuICBfbWFya2VyPzogZ29vZ2xlLm1hcHMuTWFya2VyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2dvb2dsZU1hcDogR29vZ2xlTWFwKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGNvbWJpbmVkT3B0aW9uc0NoYW5nZXMgPSB0aGlzLl9jb21iaW5lT3B0aW9ucygpO1xuXG4gICAgY29tYmluZWRPcHRpb25zQ2hhbmdlcy5waXBlKHRha2UoMSkpLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgIHRoaXMuX21hcmtlciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIob3B0aW9ucyk7XG4gICAgICB0aGlzLl9tYXJrZXIuc2V0TWFwKHRoaXMuX2dvb2dsZU1hcC5fZ29vZ2xlTWFwKTtcbiAgICAgIHRoaXMuX2luaXRpYWxpemVFdmVudEhhbmRsZXJzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl93YXRjaEZvck9wdGlvbnNDaGFuZ2VzKCk7XG4gICAgdGhpcy5fd2F0Y2hGb3JUaXRsZUNoYW5nZXMoKTtcbiAgICB0aGlzLl93YXRjaEZvclBvc2l0aW9uQ2hhbmdlcygpO1xuICAgIHRoaXMuX3dhdGNoRm9yTGFiZWxDaGFuZ2VzKCk7XG4gICAgdGhpcy5fd2F0Y2hGb3JDbGlja2FibGVDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgZm9yIChsZXQgbGlzdGVuZXIgb2YgdGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgICBsaXN0ZW5lci5yZW1vdmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21hcmtlcikge1xuICAgICAgdGhpcy5fbWFya2VyLnNldE1hcChudWxsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRBbmltYXRpb25cbiAgICovXG4gIGdldEFuaW1hdGlvbigpOiBnb29nbGUubWFwcy5BbmltYXRpb258bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0QW5pbWF0aW9uKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldENsaWNrYWJsZVxuICAgKi9cbiAgZ2V0Q2xpY2thYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldENsaWNrYWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0Q3Vyc29yXG4gICAqL1xuICBnZXRDdXJzb3IoKTogc3RyaW5nfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldEN1cnNvcigpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXREcmFnZ2FibGVcbiAgICovXG4gIGdldERyYWdnYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9tYXJrZXIhLmdldERyYWdnYWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0SWNvblxuICAgKi9cbiAgZ2V0SWNvbigpOiBzdHJpbmd8Z29vZ2xlLm1hcHMuSWNvbnxnb29nbGUubWFwcy5TeW1ib2x8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0SWNvbigpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRMYWJlbFxuICAgKi9cbiAgZ2V0TGFiZWwoKTogZ29vZ2xlLm1hcHMuTWFya2VyTGFiZWx8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0TGFiZWwoKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0T3BhY2l0eVxuICAgKi9cbiAgZ2V0T3BhY2l0eSgpOiBudW1iZXJ8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0T3BhY2l0eSgpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRQb3NpdGlvblxuICAgKi9cbiAgZ2V0UG9zaXRpb24oKTogZ29vZ2xlLm1hcHMuTGF0TG5nfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldFBvc2l0aW9uKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldFNoYXBlXG4gICAqL1xuICBnZXRTaGFwZSgpOiBnb29nbGUubWFwcy5NYXJrZXJTaGFwZXxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2VyIS5nZXRTaGFwZSgpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIGRldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvbWFya2VyI01hcmtlci5nZXRUaXRsZVxuICAgKi9cbiAgZ2V0VGl0bGUoKTogc3RyaW5nfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldFRpdGxlKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9tYXJrZXIjTWFya2VyLmdldFZpc2libGVcbiAgICovXG4gIGdldFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlciEuZ2V0VmlzaWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBkZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL21hcmtlciNNYXJrZXIuZ2V0WkluZGV4XG4gICAqL1xuICBnZXRaSW5kZXgoKTogbnVtYmVyfG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXIhLmdldFpJbmRleCgpIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jb21iaW5lT3B0aW9ucygpOiBPYnNlcnZhYmxlPGdvb2dsZS5tYXBzLk1hcmtlck9wdGlvbnM+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5fb3B0aW9ucywgdGhpcy5fdGl0bGUsIHRoaXMuX3Bvc2l0aW9uLCB0aGlzLl9sYWJlbCwgdGhpcy5fY2xpY2thYmxlXSlcbiAgICAgICAgLnBpcGUobWFwKChbb3B0aW9ucywgdGl0bGUsIHBvc2l0aW9uLCBsYWJlbCwgY2xpY2thYmxlXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbWJpbmVkT3B0aW9uczogZ29vZ2xlLm1hcHMuTWFya2VyT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUgfHwgb3B0aW9ucy50aXRsZSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbiB8fCBvcHRpb25zLnBvc2l0aW9uLFxuICAgICAgICAgICAgbGFiZWw6IGxhYmVsIHx8IG9wdGlvbnMubGFiZWwsXG4gICAgICAgICAgICBjbGlja2FibGU6IGNsaWNrYWJsZSAhPT0gdW5kZWZpbmVkID8gY2xpY2thYmxlIDogb3B0aW9ucy5jbGlja2FibGUsXG4gICAgICAgICAgICBtYXA6IHRoaXMuX2dvb2dsZU1hcC5fZ29vZ2xlTWFwIHx8IG51bGwsXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gY29tYmluZWRPcHRpb25zO1xuICAgICAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvck9wdGlvbnNDaGFuZ2VzKCkge1xuICAgIHRoaXMuX29wdGlvbnMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgIGlmICh0aGlzLl9tYXJrZXIpIHtcbiAgICAgICAgdGhpcy5fbWFya2VyLnNldE9wdGlvbnMob3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvclRpdGxlQ2hhbmdlcygpIHtcbiAgICB0aGlzLl90aXRsZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHRpdGxlID0+IHtcbiAgICAgIGlmICh0aGlzLl9tYXJrZXIgJiYgdGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9tYXJrZXIuc2V0VGl0bGUodGl0bGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2F0Y2hGb3JQb3NpdGlvbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5fcG9zaXRpb24ucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShwb3NpdGlvbiA9PiB7XG4gICAgICBpZiAodGhpcy5fbWFya2VyICYmIHBvc2l0aW9uKSB7XG4gICAgICAgIHRoaXMuX21hcmtlci5zZXRQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF93YXRjaEZvckxhYmVsQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9sYWJlbC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKGxhYmVsID0+IHtcbiAgICAgIGlmICh0aGlzLl9tYXJrZXIgJiYgbGFiZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9tYXJrZXIuc2V0TGFiZWwobGFiZWwpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2F0Y2hGb3JDbGlja2FibGVDaGFuZ2VzKCkge1xuICAgIHRoaXMuX2NsaWNrYWJsZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKGNsaWNrYWJsZSA9PiB7XG4gICAgICBpZiAodGhpcy5fbWFya2VyICYmIGNsaWNrYWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX21hcmtlci5zZXRDbGlja2FibGUoY2xpY2thYmxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVFdmVudEhhbmRsZXJzKCkge1xuICAgIGNvbnN0IGV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgRXZlbnRFbWl0dGVyPHZvaWQ+PihbXG4gICAgICBbJ2FuaW1hdGlvbl9jaGFuZ2VkJywgdGhpcy5hbmltYXRpb25DaGFuZ2VkXSxcbiAgICAgIFsnY2xpY2thYmxlX2NoYW5nZWQnLCB0aGlzLmNsaWNrYWJsZUNoYW5nZWRdLFxuICAgICAgWydjdXJzb3JfY2hhbmdlZCcsIHRoaXMuY3Vyc29yQ2hhbmdlZF0sXG4gICAgICBbJ2RyYWdnYWJsZV9jaGFuZ2VkJywgdGhpcy5kcmFnZ2FibGVDaGFuZ2VkXSxcbiAgICAgIFsnZmxhdF9jaGFuZ2VkJywgdGhpcy5mbGF0Q2hhbmdlZF0sXG4gICAgICBbJ2ljb25fY2hhbmdlZCcsIHRoaXMuaWNvbkNoYW5nZWRdLFxuICAgICAgWydwb3NpdGlvbl9jaGFuZ2VkJywgdGhpcy5wb3NpdGlvbkNoYW5nZWRdLFxuICAgICAgWydzaGFwZV9jaGFuZ2VkJywgdGhpcy5zaGFwZUNoYW5nZWRdLFxuICAgICAgWyd0aXRsZV9jaGFuZ2VkJywgdGhpcy50aXRsZUNoYW5nZWRdLFxuICAgICAgWyd2aXNpYmxlX2NoYW5nZWQnLCB0aGlzLnZpc2libGVDaGFuZ2VkXSxcbiAgICAgIFsnemluZGV4X2NoYW5nZWQnLCB0aGlzLnppbmRleENoYW5nZWRdLFxuICAgIF0pO1xuICAgIGNvbnN0IG1vdXNlRXZlbnRIYW5kbGVycyA9IG5ldyBNYXA8c3RyaW5nLCBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4+KFtcbiAgICAgIFsnY2xpY2snLCB0aGlzLm1hcENsaWNrXSxcbiAgICAgIFsnZGJsY2xpY2snLCB0aGlzLm1hcERibGNsaWNrXSxcbiAgICAgIFsnZHJhZycsIHRoaXMubWFwRHJhZ10sXG4gICAgICBbJ2RyYWdlbmQnLCB0aGlzLm1hcERyYWdlbmRdLFxuICAgICAgWydkcmFnc3RhcnQnLCB0aGlzLm1hcERyYWdzdGFydF0sXG4gICAgICBbJ21vdXNlZG93bicsIHRoaXMubWFwTW91c2Vkb3duXSxcbiAgICAgIFsnbW91c2VvdXQnLCB0aGlzLm1hcE1vdXNlb3V0XSxcbiAgICAgIFsnbW91c2VvdmVyJywgdGhpcy5tYXBNb3VzZW92ZXJdLFxuICAgICAgWydtb3VzZXVwJywgdGhpcy5tYXBNb3VzZXVwXSxcbiAgICAgIFsncmlnaHRjbGljaycsIHRoaXMubWFwUmlnaHRjbGlja10sXG4gICAgXSk7XG5cbiAgICBldmVudEhhbmRsZXJzLmZvckVhY2goKGV2ZW50SGFuZGxlcjogRXZlbnRFbWl0dGVyPHZvaWQ+LCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChldmVudEhhbmRsZXIub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2godGhpcy5fbWFya2VyIS5hZGRMaXN0ZW5lcihuYW1lLCAoKSA9PiB7XG4gICAgICAgICAgZXZlbnRIYW5kbGVyLmVtaXQoKTtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG1vdXNlRXZlbnRIYW5kbGVycy5mb3JFYWNoKFxuICAgICAgICAoZXZlbnRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTW91c2VFdmVudD4sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmIChldmVudEhhbmRsZXIub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuX21hcmtlciEuYWRkTGlzdGVuZXIobmFtZSwgKGV2ZW50OiBnb29nbGUubWFwcy5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICBldmVudEhhbmRsZXIuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==

@@ -525,3 +525,2 @@ import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, Input, Output, Directive, NgModule } from '@angular/core';

{ type: Component, args: [{
moduleId: module.id,
selector: 'google-map',

@@ -737,6 +736,6 @@ changeDetection: ChangeDetectionStrategy.OnPush,

/**
* @param {?} googleMap
* @param {?} _googleMap
*/
constructor(googleMap) {
this.googleMap = googleMap;
constructor(_googleMap) {
this._googleMap = _googleMap;
/**

@@ -902,3 +901,3 @@ * See

this._marker = new google.maps.Marker(options);
this._marker.setMap(this.googleMap._googleMap);
this._marker.setMap(this._googleMap._googleMap);
this._initializeEventHandlers();

@@ -1033,3 +1032,3 @@ }));

/** @type {?} */
const combinedOptions = Object.assign(Object.assign({}, options), { title: title || options.title, position: position || options.position, label: label || options.label, clickable: clickable !== undefined ? clickable : options.clickable, map: this.googleMap._googleMap || null });
const combinedOptions = Object.assign(Object.assign({}, options), { title: title || options.title, position: position || options.position, label: label || options.label, clickable: clickable !== undefined ? clickable : options.clickable, map: this._googleMap._googleMap || null });
return combinedOptions;

@@ -1180,3 +1179,2 @@ })));

{ type: Component, args: [{
moduleId: module.id,
selector: 'map-marker',

@@ -1388,3 +1386,3 @@ template: '<ng-content></ng-content>',

*/
MapMarker.prototype.googleMap;
MapMarker.prototype._googleMap;
}

@@ -1402,7 +1400,7 @@

/**
* @param {?} googleMap
* @param {?} _googleMap
* @param {?} _elementRef
*/
constructor(googleMap, _elementRef) {
this.googleMap = googleMap;
constructor(_googleMap, _elementRef) {
this._googleMap = _googleMap;
this._elementRef = _elementRef;

@@ -1528,5 +1526,5 @@ /**

const marker = anchor ? anchor._marker : undefined;
if (this.googleMap._googleMap) {
if (this._googleMap._googleMap) {
this._elementRef.nativeElement.style.display = '';
(/** @type {?} */ (this._infoWindow)).open(this.googleMap._googleMap, marker);
(/** @type {?} */ (this._infoWindow)).open(this._googleMap._googleMap, marker);
}

@@ -1662,3 +1660,3 @@ }

*/
MapInfoWindow.prototype.googleMap;
MapInfoWindow.prototype._googleMap;
/**

@@ -1699,3 +1697,3 @@ * @type {?}

export { GoogleMap, MapMarker, GoogleMapsModule, MapInfoWindow };
export { GoogleMap, GoogleMapsModule, MapInfoWindow, MapMarker };
//# sourceMappingURL=google-maps.js.map

@@ -420,3 +420,2 @@ import { __values, __read, __assign } from 'tslib';

{ type: Component, args: [{
moduleId: module.id,
selector: 'google-map',

@@ -479,4 +478,4 @@ changeDetection: ChangeDetectionStrategy.OnPush,

var MapMarker = /** @class */ (function () {
function MapMarker(googleMap) {
this.googleMap = googleMap;
function MapMarker(_googleMap) {
this._googleMap = _googleMap;
/**

@@ -635,3 +634,3 @@ * See

_this._marker = new google.maps.Marker(options);
_this._marker.setMap(_this.googleMap._googleMap);
_this._marker.setMap(_this._googleMap._googleMap);
_this._initializeEventHandlers();

@@ -755,3 +754,3 @@ });

var _b = __read(_a, 5), options = _b[0], title = _b[1], position = _b[2], label = _b[3], clickable = _b[4];
var combinedOptions = __assign(__assign({}, options), { title: title || options.title, position: position || options.position, label: label || options.label, clickable: clickable !== undefined ? clickable : options.clickable, map: _this.googleMap._googleMap || null });
var combinedOptions = __assign(__assign({}, options), { title: title || options.title, position: position || options.position, label: label || options.label, clickable: clickable !== undefined ? clickable : options.clickable, map: _this._googleMap._googleMap || null });
return combinedOptions;

@@ -844,3 +843,2 @@ }));

{ type: Component, args: [{
moduleId: module.id,
selector: 'map-marker',

@@ -899,4 +897,4 @@ template: '<ng-content></ng-content>',

var MapInfoWindow = /** @class */ (function () {
function MapInfoWindow(googleMap, _elementRef) {
this.googleMap = googleMap;
function MapInfoWindow(_googleMap, _elementRef) {
this._googleMap = _googleMap;
this._elementRef = _elementRef;

@@ -1017,5 +1015,5 @@ /**

var marker = anchor ? anchor._marker : undefined;
if (this.googleMap._googleMap) {
if (this._googleMap._googleMap) {
this._elementRef.nativeElement.style.display = '';
this._infoWindow.open(this.googleMap._googleMap, marker);
this._infoWindow.open(this._googleMap._googleMap, marker);
}

@@ -1107,3 +1105,3 @@ };

export { GoogleMap, MapMarker, GoogleMapsModule, MapInfoWindow };
export { GoogleMap, GoogleMapsModule, MapInfoWindow, MapMarker };
//# sourceMappingURL=google-maps.js.map

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"GoogleMap":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":55,"character":1},"arguments":[{"moduleId":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"module"},"member":"id"},"selector":"google-map","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":58,"character":19},"member":"OnPush"},"template":"<div class=\"map-container\"></div><ng-content></ng-content>","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":60,"character":17},"member":"None"}}]}],"members":{"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"center":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"zoom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"boundsChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":84,"character":3}}]}],"centerChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":90,"character":3}}]}],"mapClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":96,"character":3}}]}],"mapDblclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":102,"character":3}}]}],"mapDrag":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":108,"character":3}}]}],"mapDragend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":114,"character":3}}]}],"mapDragstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":120,"character":3}}]}],"headingChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":126,"character":3}}]}],"idle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":132,"character":3}}]}],"maptypeidChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":138,"character":3}}]}],"mapMousemove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":144,"character":3}}]}],"mapMouseout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":150,"character":3}}]}],"mapMouseover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":156,"character":3}}]}],"projectionChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":162,"character":3}}]}],"mapRightclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":168,"character":3}}]}],"tilesloaded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":174,"character":3}}]}],"tiltChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":180,"character":3}}]}],"zoomChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":186,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":202,"character":44}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"fitBounds":[{"__symbolic":"method"}],"panBy":[{"__symbolic":"method"}],"panTo":[{"__symbolic":"method"}],"panToBounds":[{"__symbolic":"method"}],"getBounds":[{"__symbolic":"method"}],"getCenter":[{"__symbolic":"method"}],"getClickableIcons":[{"__symbolic":"method"}],"getHeading":[{"__symbolic":"method"}],"getMapTypeId":[{"__symbolic":"method"}],"getProjection":[{"__symbolic":"method"}],"getStreetView":[{"__symbolic":"method"}],"getTilt":[{"__symbolic":"method"}],"getZoom":[{"__symbolic":"method"}],"_setSize":[{"__symbolic":"method"}],"_combineOptions":[{"__symbolic":"method"}],"_initializeMap":[{"__symbolic":"method"}],"_watchForOptionsChanges":[{"__symbolic":"method"}],"_watchForCenterChanges":[{"__symbolic":"method"}],"_watchForZoomChanges":[{"__symbolic":"method"}],"_initializeEventHandlers":[{"__symbolic":"method"}]}},"MapMarker":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":38,"character":1},"arguments":[{"moduleId":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"module"},"member":"id"},"selector":"map-marker","template":"<ng-content></ng-content>","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":42,"character":19},"member":"OnPush"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":43,"character":17},"member":"None"}}]}],"members":{"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"clickable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"animationChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":75,"character":3}}]}],"mapClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":81,"character":3}}]}],"clickableChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":87,"character":3}}]}],"cursorChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":93,"character":3}}]}],"mapDblclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":99,"character":3}}]}],"mapDrag":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":105,"character":3}}]}],"mapDragend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":111,"character":3}}]}],"draggableChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":117,"character":3}}]}],"mapDragstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":123,"character":3}}]}],"flatChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":129,"character":3}}]}],"iconChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":135,"character":3}}]}],"mapMousedown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":141,"character":3}}]}],"mapMouseout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":147,"character":3}}]}],"mapMouseover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":153,"character":3}}]}],"mapMouseup":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":159,"character":3}}]}],"positionChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":165,"character":3}}]}],"mapRightclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":171,"character":3}}]}],"shapeChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":177,"character":3}}]}],"titleChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":183,"character":3}}]}],"visibleChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":189,"character":3}}]}],"zindexChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":195,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"GoogleMap"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getAnimation":[{"__symbolic":"method"}],"getClickable":[{"__symbolic":"method"}],"getCursor":[{"__symbolic":"method"}],"getDraggable":[{"__symbolic":"method"}],"getIcon":[{"__symbolic":"method"}],"getLabel":[{"__symbolic":"method"}],"getOpacity":[{"__symbolic":"method"}],"getPosition":[{"__symbolic":"method"}],"getShape":[{"__symbolic":"method"}],"getTitle":[{"__symbolic":"method"}],"getVisible":[{"__symbolic":"method"}],"getZIndex":[{"__symbolic":"method"}],"_combineOptions":[{"__symbolic":"method"}],"_watchForOptionsChanges":[{"__symbolic":"method"}],"_watchForTitleChanges":[{"__symbolic":"method"}],"_watchForPositionChanges":[{"__symbolic":"method"}],"_watchForLabelChanges":[{"__symbolic":"method"}],"_watchForClickableChanges":[{"__symbolic":"method"}],"_initializeEventHandlers":[{"__symbolic":"method"}]}},"GoogleMapsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":20,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"GoogleMap"},{"__symbolic":"reference","name":"MapInfoWindow"},{"__symbolic":"reference","name":"MapMarker"}],"exports":[{"__symbolic":"reference","name":"GoogleMap"},{"__symbolic":"reference","name":"MapInfoWindow"},{"__symbolic":"reference","name":"MapMarker"}]}]}],"members":{}},"MapInfoWindow":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":30,"character":1},"arguments":[{"selector":"map-info-window","host":{"style":"display: none","$quoted$":["style"]}}]}],"members":{"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"closeclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":49,"character":3}}]}],"contentChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":56,"character":3}}]}],"domready":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":62,"character":3}}]}],"positionChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":69,"character":3}}]}],"zindexChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":76,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"GoogleMap"},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":88,"character":85,"context":{"typeName":"HTMLElement"},"module":"./map-info-window/map-info-window"}]}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"getContent":[{"__symbolic":"method"}],"getPosition":[{"__symbolic":"method"}],"getZIndex":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}],"_combineOptions":[{"__symbolic":"method"}],"_initializeEventHandlers":[{"__symbolic":"method"}]}}},"origins":{"GoogleMap":"./google-map/google-map","MapMarker":"./map-marker/map-marker","GoogleMapsModule":"./google-maps-module","MapInfoWindow":"./map-info-window/map-info-window"},"importAs":"@angular/google-maps"}
{"__symbolic":"module","version":4,"metadata":{"GoogleMap":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":55,"character":1},"arguments":[{"selector":"google-map","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":57,"character":19},"member":"OnPush"},"template":"<div class=\"map-container\"></div><ng-content></ng-content>","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":59,"character":17},"member":"None"}}]}],"members":{"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"center":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"zoom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"boundsChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":83,"character":3}}]}],"centerChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":89,"character":3}}]}],"mapClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":95,"character":3}}]}],"mapDblclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":101,"character":3}}]}],"mapDrag":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":107,"character":3}}]}],"mapDragend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":113,"character":3}}]}],"mapDragstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":119,"character":3}}]}],"headingChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":125,"character":3}}]}],"idle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":131,"character":3}}]}],"maptypeidChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":137,"character":3}}]}],"mapMousemove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":143,"character":3}}]}],"mapMouseout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":149,"character":3}}]}],"mapMouseover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":155,"character":3}}]}],"projectionChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":161,"character":3}}]}],"mapRightclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":167,"character":3}}]}],"tilesloaded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":173,"character":3}}]}],"tiltChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":179,"character":3}}]}],"zoomChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":185,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":201,"character":44}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"fitBounds":[{"__symbolic":"method"}],"panBy":[{"__symbolic":"method"}],"panTo":[{"__symbolic":"method"}],"panToBounds":[{"__symbolic":"method"}],"getBounds":[{"__symbolic":"method"}],"getCenter":[{"__symbolic":"method"}],"getClickableIcons":[{"__symbolic":"method"}],"getHeading":[{"__symbolic":"method"}],"getMapTypeId":[{"__symbolic":"method"}],"getProjection":[{"__symbolic":"method"}],"getStreetView":[{"__symbolic":"method"}],"getTilt":[{"__symbolic":"method"}],"getZoom":[{"__symbolic":"method"}],"_setSize":[{"__symbolic":"method"}],"_combineOptions":[{"__symbolic":"method"}],"_initializeMap":[{"__symbolic":"method"}],"_watchForOptionsChanges":[{"__symbolic":"method"}],"_watchForCenterChanges":[{"__symbolic":"method"}],"_watchForZoomChanges":[{"__symbolic":"method"}],"_initializeEventHandlers":[{"__symbolic":"method"}]}},"MapMarker":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":38,"character":1},"arguments":[{"selector":"map-marker","template":"<ng-content></ng-content>","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":41,"character":19},"member":"OnPush"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":42,"character":17},"member":"None"}}]}],"members":{"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"clickable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"animationChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":74,"character":3}}]}],"mapClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":80,"character":3}}]}],"clickableChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":86,"character":3}}]}],"cursorChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":92,"character":3}}]}],"mapDblclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":98,"character":3}}]}],"mapDrag":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":104,"character":3}}]}],"mapDragend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":110,"character":3}}]}],"draggableChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":116,"character":3}}]}],"mapDragstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":122,"character":3}}]}],"flatChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":128,"character":3}}]}],"iconChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":134,"character":3}}]}],"mapMousedown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":140,"character":3}}]}],"mapMouseout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":146,"character":3}}]}],"mapMouseover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":152,"character":3}}]}],"mapMouseup":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":158,"character":3}}]}],"positionChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":164,"character":3}}]}],"mapRightclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":170,"character":3}}]}],"shapeChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":176,"character":3}}]}],"titleChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":182,"character":3}}]}],"visibleChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":188,"character":3}}]}],"zindexChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":194,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"GoogleMap"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getAnimation":[{"__symbolic":"method"}],"getClickable":[{"__symbolic":"method"}],"getCursor":[{"__symbolic":"method"}],"getDraggable":[{"__symbolic":"method"}],"getIcon":[{"__symbolic":"method"}],"getLabel":[{"__symbolic":"method"}],"getOpacity":[{"__symbolic":"method"}],"getPosition":[{"__symbolic":"method"}],"getShape":[{"__symbolic":"method"}],"getTitle":[{"__symbolic":"method"}],"getVisible":[{"__symbolic":"method"}],"getZIndex":[{"__symbolic":"method"}],"_combineOptions":[{"__symbolic":"method"}],"_watchForOptionsChanges":[{"__symbolic":"method"}],"_watchForTitleChanges":[{"__symbolic":"method"}],"_watchForPositionChanges":[{"__symbolic":"method"}],"_watchForLabelChanges":[{"__symbolic":"method"}],"_watchForClickableChanges":[{"__symbolic":"method"}],"_initializeEventHandlers":[{"__symbolic":"method"}]}},"GoogleMapsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":20,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"GoogleMap"},{"__symbolic":"reference","name":"MapInfoWindow"},{"__symbolic":"reference","name":"MapMarker"}],"exports":[{"__symbolic":"reference","name":"GoogleMap"},{"__symbolic":"reference","name":"MapInfoWindow"},{"__symbolic":"reference","name":"MapMarker"}]}]}],"members":{}},"MapInfoWindow":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":30,"character":1},"arguments":[{"selector":"map-info-window","host":{"style":"display: none","$quoted$":["style"]}}]}],"members":{"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"closeclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":49,"character":3}}]}],"contentChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":56,"character":3}}]}],"domready":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":62,"character":3}}]}],"positionChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":69,"character":3}}]}],"zindexChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":76,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"GoogleMap"},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":89,"character":46,"context":{"typeName":"HTMLElement"},"module":"./map-info-window/map-info-window"}]}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"getContent":[{"__symbolic":"method"}],"getPosition":[{"__symbolic":"method"}],"getZIndex":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}],"_combineOptions":[{"__symbolic":"method"}],"_initializeEventHandlers":[{"__symbolic":"method"}]}}},"origins":{"GoogleMap":"./google-map/google-map","MapMarker":"./map-marker/map-marker","GoogleMapsModule":"./google-maps-module","MapInfoWindow":"./map-info-window/map-info-window"},"importAs":"@angular/google-maps"}

@@ -17,3 +17,3 @@ /**

export declare class MapInfoWindow implements OnInit, OnDestroy {
private readonly googleMap;
private readonly _googleMap;
private _elementRef;

@@ -55,3 +55,3 @@ options: google.maps.InfoWindowOptions;

private _infoWindow?;
constructor(googleMap: GoogleMap, _elementRef: ElementRef<HTMLElement>);
constructor(_googleMap: GoogleMap, _elementRef: ElementRef<HTMLElement>);
ngOnInit(): void;

@@ -58,0 +58,0 @@ ngOnDestroy(): void;

@@ -26,3 +26,3 @@ /**

export declare class MapMarker implements OnInit, OnDestroy {
private readonly googleMap;
private readonly _googleMap;
options: google.maps.MarkerOptions;

@@ -146,3 +146,3 @@ title: string;

_marker?: google.maps.Marker;
constructor(googleMap: GoogleMap);
constructor(_googleMap: GoogleMap);
ngOnInit(): void;

@@ -149,0 +149,0 @@ ngOnDestroy(): void;

{
"name": "@angular/google-maps",
"version": "9.0.0-rc.0",
"version": "9.0.0-rc.1",
"description": "Angular Google Maps",

@@ -34,3 +34,6 @@ "main": "./bundles/google-maps.umd.js",

},
"sideEffects": false
"sideEffects": false,
"publishConfig": {
"registry": "https://wombat-dressing-room.appspot.com"
}
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc