ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
307 lines • 19.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: directives/amap-tool-bar/amap-tool-bar.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Directive, Input, Output, EventEmitter, NgZone, } from '@angular/core';
import { zip } from 'rxjs';
import { AmapToolBarService } from './amap-tool-bar.service';
import { LoggerService } from '../../shared/logger/logger.service';
import { EventBinderService } from '../../shared/event-binder.service';
import { getOptions, ChangeFilter } from '../../utils';
import { PixelService } from '../../shared/pixel.service';
import { AMapService } from '../../shared/amap.service';
/** @type {?} */
var TAG = 'amap-tool-bar';
/** @type {?} */
var ToolBarOptions = [
'offset',
'position',
'ruler',
'noIpLocate',
'locate',
'liteStyle',
'direction',
'autoPosition',
'locationMarker',
'useNative',
];
var AmapToolBarDirective = /** @class */ (function () {
function AmapToolBarDirective(os, binder, amaps, pixels, logger, ngZone) {
this.os = os;
this.binder = binder;
this.amaps = amaps;
this.pixels = pixels;
this.logger = logger;
this.ngZone = ngZone;
/**
* 额外: 是否隐藏
*/
this.hidden = false;
// amap-tool-bar events:
this.naReady = new EventEmitter();
this.inited = false;
/** @type {?} */
var target = this.os.get();
this.naShow = this.binder.bindEvent(target, 'show');
this.naHide = this.binder.bindEvent(target, 'hide');
this.naLocation = this.binder.bindEvent(target, 'location');
this.naZoomChanged = this.binder.bindEvent(target, 'zoomchanged');
}
/**
* @return {?}
*/
AmapToolBarDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.os.destroy();
};
/**
* @return {?}
*/
AmapToolBarDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.amaps.get().subscribe((/**
* @return {?}
*/
function () {
_this.logger.d(TAG, 'initializing ...');
/** @type {?} */
var options = getOptions(_this, ToolBarOptions);
if (_this.offset) {
options.offset = _this.pixels.create(_this.offset);
}
_this.logger.d(TAG, 'options:', options);
_this.os.create(options).subscribe((/**
* @param {?} m
* @return {?}
*/
function (m) {
_this.ngZone.run((/**
* @return {?}
*/
function () { return _this.naReady.emit(m); }));
_this.logger.d(TAG, 'toolbar is ready.');
}));
_this.inited = true;
_this.get().subscribe((/**
* @param {?} m
* @return {?}
*/
function (m) {
_this.hidden ? m.hide() : m.show();
}));
}));
};
/**
* @param {?} changes
* @return {?}
*/
AmapToolBarDirective.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
var _this = this;
/** @type {?} */
var filter = ChangeFilter.of(changes);
/** @type {?} */
var toolbar = this.get();
if (!this.inited) {
return;
}
zip(filter.notEmpty('offset'), toolbar).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], m = _b[1];
return m.setOffset(_this.pixels.create(v));
}));
zip(filter.has('hidden'), toolbar).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], m = _b[1];
return (v ? m.hide() : m.show());
}));
};
/**
* 获取已创建的 AMap.ToolBar 对象
*/
/**
* 获取已创建的 AMap.ToolBar 对象
* @return {?}
*/
AmapToolBarDirective.prototype.get = /**
* 获取已创建的 AMap.ToolBar 对象
* @return {?}
*/
function () {
return this.os.get();
};
/**
* @return {?}
*/
AmapToolBarDirective.prototype.doLocation = /**
* @return {?}
*/
function () {
this.os.get().subscribe((/**
* @param {?} toolbar
* @return {?}
*/
function (toolbar) {
toolbar.doLocation();
}));
};
AmapToolBarDirective.decorators = [
{ type: Directive, args: [{
selector: 'amap-tool-bar',
exportAs: 'tool-bar',
providers: [AmapToolBarService],
},] }
];
/** @nocollapse */
AmapToolBarDirective.ctorParameters = function () { return [
{ type: AmapToolBarService },
{ type: EventBinderService },
{ type: AMapService },
{ type: PixelService },
{ type: LoggerService },
{ type: NgZone }
]; };
AmapToolBarDirective.propDecorators = {
offset: [{ type: Input }],
position: [{ type: Input }],
ruler: [{ type: Input }],
noIpLocate: [{ type: Input }],
locate: [{ type: Input }],
liteStyle: [{ type: Input }],
direction: [{ type: Input }],
autoPosition: [{ type: Input }],
locationMarker: [{ type: Input }],
useNative: [{ type: Input }],
hidden: [{ type: Input }],
naReady: [{ type: Output }],
naShow: [{ type: Output }],
naHide: [{ type: Output }],
naLocation: [{ type: Output }],
naZoomChanged: [{ type: Output }]
};
return AmapToolBarDirective;
}());
export { AmapToolBarDirective };
if (false) {
/**
* 相对于地图容器左上角的偏移量
* @type {?}
*/
AmapToolBarDirective.prototype.offset;
/**
* 控件停靠位置
* LT: 左上角
* RT: 右上角
* LB: 左下角
* RB: 右下角
* @type {?}
*/
AmapToolBarDirective.prototype.position;
/**
* 标尺键盘是否可见
* @type {?}
*/
AmapToolBarDirective.prototype.ruler;
/**
* 定位失败后,是否开启 IP 定位
* @type {?}
*/
AmapToolBarDirective.prototype.noIpLocate;
/**
* 是否显示定位按钮
* @type {?}
*/
AmapToolBarDirective.prototype.locate;
/**
* 是否使用精简模式
* @type {?}
*/
AmapToolBarDirective.prototype.liteStyle;
/**
* 方向键盘是否可见
* @type {?}
*/
AmapToolBarDirective.prototype.direction;
/**
* 是否自动定位,即地图初始化加载完成后,是否自动定位的用户所在地,仅在支持 HTML5 的浏览器中有效
* @type {?}
*/
AmapToolBarDirective.prototype.autoPosition;
/**
* 自定义定位图标,值为 Marker 对象
* @type {?}
*/
AmapToolBarDirective.prototype.locationMarker;
/**
* 是否使用高德定位 SDK 用来辅助优化定位效果
* @type {?}
*/
AmapToolBarDirective.prototype.useNative;
/**
* 额外: 是否隐藏
* @type {?}
*/
AmapToolBarDirective.prototype.hidden;
/** @type {?} */
AmapToolBarDirective.prototype.naReady;
/** @type {?} */
AmapToolBarDirective.prototype.naShow;
/** @type {?} */
AmapToolBarDirective.prototype.naHide;
/** @type {?} */
AmapToolBarDirective.prototype.naLocation;
/** @type {?} */
AmapToolBarDirective.prototype.naZoomChanged;
/**
* @type {?}
* @private
*/
AmapToolBarDirective.prototype.inited;
/**
* @type {?}
* @protected
*/
AmapToolBarDirective.prototype.os;
/**
* @type {?}
* @protected
*/
AmapToolBarDirective.prototype.binder;
/**
* @type {?}
* @private
*/
AmapToolBarDirective.prototype.amaps;
/**
* @type {?}
* @private
*/
AmapToolBarDirective.prototype.pixels;
/**
* @type {?}
* @private
*/
AmapToolBarDirective.prototype.logger;
/**
* @type {?}
* @private
*/
AmapToolBarDirective.prototype.ngZone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC10b29sLWJhci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYW1hcC8iLCJzb3VyY2VzIjpbImRpcmVjdGl2ZXMvYW1hcC10b29sLWJhci9hbWFwLXRvb2wtYmFyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxNQUFNLEVBQ04sWUFBWSxFQUdaLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxrQkFBa0IsRUFBZSxNQUFNLHlCQUF5QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztJQUVsRCxHQUFHLEdBQUcsZUFBZTs7SUFDckIsY0FBYyxHQUFHO0lBQ3JCLFFBQVE7SUFDUixVQUFVO0lBQ1YsT0FBTztJQUNQLFlBQVk7SUFDWixRQUFRO0lBQ1IsV0FBVztJQUNYLFdBQVc7SUFDWCxjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLFdBQVc7Q0FDWjtBQUVEO0lBaUVFLDhCQUNZLEVBQXNCLEVBQ3RCLE1BQTBCLEVBQzVCLEtBQWtCLEVBQ2xCLE1BQW9CLEVBQ3BCLE1BQXFCLEVBQ3JCLE1BQWM7UUFMWixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUM1QixVQUFLLEdBQUwsS0FBSyxDQUFhO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQWM7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eUJBQ04sTUFBTTs2QkFDTixNQUFNO2dDQUNOLE1BQU07O0lBa0VULDJCQUFDO0NBQUEsQUEvSEQsSUErSEM7U0ExSFksb0JBQW9COzs7Ozs7SUFLL0Isc0NBQXFDOzs7Ozs7Ozs7SUFRckMsd0NBQXdDOzs7OztJQUl4QyxxQ0FBd0I7Ozs7O0lBSXhCLDBDQUE2Qjs7Ozs7SUFJN0Isc0NBQXlCOzs7OztJQUl6Qix5Q0FBNEI7Ozs7O0lBSTVCLHlDQUE0Qjs7Ozs7SUFJNUIsNENBQStCOzs7OztJQUkvQiw4Q0FBcUM7Ozs7O0lBSXJDLHlDQUE0Qjs7Ozs7SUFJNUIsc0NBQXdCOztJQUd4Qix1Q0FBdUM7O0lBQ3ZDLHNDQUFvQzs7SUFDcEMsc0NBQW9DOztJQUNwQywwQ0FBd0M7O0lBQ3hDLDZDQUEyQzs7Ozs7SUFFM0Msc0NBQXVCOzs7OztJQUdyQixrQ0FBZ0M7Ozs7O0lBQ2hDLHNDQUFvQzs7Ozs7SUFDcEMscUNBQTBCOzs7OztJQUMxQixzQ0FBNEI7Ozs7O0lBQzVCLHNDQUE2Qjs7Ozs7SUFDN0Isc0NBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXMsXG4gIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFtYXBUb29sQmFyU2VydmljZSwgQU1hcFRvb2xCYXIgfSBmcm9tICcuL2FtYXAtdG9vbC1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudEJpbmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXZlbnQtYmluZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0T3B0aW9ucywgQ2hhbmdlRmlsdGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgSVBpeGVsIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQaXhlbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvcGl4ZWwuc2VydmljZSc7XG5pbXBvcnQgeyBBTWFwU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbWFwLnNlcnZpY2UnO1xuXG5jb25zdCBUQUcgPSAnYW1hcC10b29sLWJhcic7XG5jb25zdCBUb29sQmFyT3B0aW9ucyA9IFtcbiAgJ29mZnNldCcsXG4gICdwb3NpdGlvbicsXG4gICdydWxlcicsXG4gICdub0lwTG9jYXRlJyxcbiAgJ2xvY2F0ZScsXG4gICdsaXRlU3R5bGUnLFxuICAnZGlyZWN0aW9uJyxcbiAgJ2F1dG9Qb3NpdGlvbicsXG4gICdsb2NhdGlvbk1hcmtlcicsXG4gICd1c2VOYXRpdmUnLFxuXTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYW1hcC10b29sLWJhcicsXG4gIGV4cG9ydEFzOiAndG9vbC1iYXInLFxuICBwcm92aWRlcnM6IFtBbWFwVG9vbEJhclNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBBbWFwVG9vbEJhckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvLyAtLS0tIE9wdGlvbnMgLS0tLVxuICAvKipcbiAgICog55u45a+55LqO5Zyw5Zu+5a655Zmo5bem5LiK6KeS55qE5YGP56e76YePXG4gICAqL1xuICBASW5wdXQoKSBvZmZzZXQ6IEFNYXAuUGl4ZWwgfCBJUGl4ZWw7XG4gIC8qKlxuICAgKiDmjqfku7blgZzpnaDkvY3nva5cbiAgICogTFQ6IOW3puS4iuinklxuICAgKiBSVDog5Y+z5LiK6KeSXG4gICAqIExCOiDlt6bkuIvop5JcbiAgICogUkI6IOWPs+S4i+inklxuICAgKi9cbiAgQElucHV0KCkgcG9zaXRpb246IEFNYXBUb29sQmFyLlBvc2l0aW9uO1xuICAvKipcbiAgICog5qCH5bC66ZSu55uY5piv5ZCm5Y+v6KeBXG4gICAqL1xuICBASW5wdXQoKSBydWxlcjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOWumuS9jeWksei0peWQju+8jOaYr+WQpuW8gOWQryBJUCDlrprkvY1cbiAgICovXG4gIEBJbnB1dCgpIG5vSXBMb2NhdGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLrlrprkvY3mjInpkq5cbiAgICovXG4gIEBJbnB1dCgpIGxvY2F0ZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOaYr+WQpuS9v+eUqOeyvueugOaooeW8j1xuICAgKi9cbiAgQElucHV0KCkgbGl0ZVN0eWxlOiBib29sZWFuO1xuICAvKipcbiAgICog5pa55ZCR6ZSu55uY5piv5ZCm5Y+v6KeBXG4gICAqL1xuICBASW5wdXQoKSBkaXJlY3Rpb246IGJvb2xlYW47XG4gIC8qKlxuICAgKiDmmK/lkKboh6rliqjlrprkvY3vvIzljbPlnLDlm77liJ3lp4vljJbliqDovb3lrozmiJDlkI7vvIzmmK/lkKboh6rliqjlrprkvY3nmoTnlKjmiLfmiYDlnKjlnLDvvIzku4XlnKjmlK/mjIEgSFRNTDUg55qE5rWP6KeI5Zmo5Lit5pyJ5pWIXG4gICAqL1xuICBASW5wdXQoKSBhdXRvUG9zaXRpb246IGJvb2xlYW47XG4gIC8qKlxuICAgKiDoh6rlrprkuYnlrprkvY3lm77moIfvvIzlgLzkuLogTWFya2VyIOWvueixoVxuICAgKi9cbiAgQElucHV0KCkgbG9jYXRpb25NYXJrZXI6IEFNYXAuTWFya2VyO1xuICAvKipcbiAgICog5piv5ZCm5L2/55So6auY5b635a6a5L2NIFNESyDnlKjmnaXovoXliqnkvJjljJblrprkvY3mlYjmnpxcbiAgICovXG4gIEBJbnB1dCgpIHVzZU5hdGl2ZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOmineWkljog5piv5ZCm6ZqQ6JePXG4gICAqL1xuICBASW5wdXQoKSBoaWRkZW4gPSBmYWxzZTtcblxuICAvLyBhbWFwLXRvb2wtYmFyIGV2ZW50czpcbiAgQE91dHB1dCgpIG5hUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBuYVNob3c6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFIaWRlOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hTG9jYXRpb246IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFab29tQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgcHJpdmF0ZSBpbml0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3M6IEFtYXBUb29sQmFyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYmluZGVyOiBFdmVudEJpbmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbWFwczogQU1hcFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwaXhlbHM6IFBpeGVsU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICApIHtcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLm9zLmdldCgpO1xuICAgIHRoaXMubmFTaG93ID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHRhcmdldCwgJ3Nob3cnKTtcbiAgICB0aGlzLm5hSGlkZSA9IHRoaXMuYmluZGVyLmJpbmRFdmVudCh0YXJnZXQsICdoaWRlJyk7XG4gICAgdGhpcy5uYUxvY2F0aW9uID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHRhcmdldCwgJ2xvY2F0aW9uJyk7XG4gICAgdGhpcy5uYVpvb21DaGFuZ2VkID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHRhcmdldCwgJ3pvb21jaGFuZ2VkJyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9zLmRlc3Ryb3koKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYW1hcHMuZ2V0KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnaW5pdGlhbGl6aW5nIC4uLicpO1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldE9wdGlvbnM8QU1hcFRvb2xCYXIuT3B0aW9ucz4odGhpcywgVG9vbEJhck9wdGlvbnMpO1xuICAgICAgaWYgKHRoaXMub2Zmc2V0KSB7XG4gICAgICAgIG9wdGlvbnMub2Zmc2V0ID0gdGhpcy5waXhlbHMuY3JlYXRlKHRoaXMub2Zmc2V0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnb3B0aW9uczonLCBvcHRpb25zKTtcbiAgICAgIHRoaXMub3MuY3JlYXRlKG9wdGlvbnMpLnN1YnNjcmliZShtID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMubmFSZWFkeS5lbWl0KG0pKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICd0b29sYmFyIGlzIHJlYWR5LicpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmluaXRlZCA9IHRydWU7XG4gICAgICB0aGlzLmdldCgpLnN1YnNjcmliZShtID0+IHtcbiAgICAgICAgdGhpcy5oaWRkZW4gPyBtLmhpZGUoKSA6IG0uc2hvdygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgZmlsdGVyID0gQ2hhbmdlRmlsdGVyLm9mKGNoYW5nZXMpO1xuICAgIGNvbnN0IHRvb2xiYXIgPSB0aGlzLmdldCgpO1xuICAgIGlmICghdGhpcy5pbml0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgemlwKGZpbHRlci5ub3RFbXB0eTxBTWFwLlBpeGVsIHwgSVBpeGVsPignb2Zmc2V0JyksIHRvb2xiYXIpLnN1YnNjcmliZSgoW3YsIG1dKSA9PlxuICAgICAgbS5zZXRPZmZzZXQodGhpcy5waXhlbHMuY3JlYXRlKHYpKSxcbiAgICApO1xuICAgIHppcChmaWx0ZXIuaGFzPGJvb2xlYW4+KCdoaWRkZW4nKSwgdG9vbGJhcikuc3Vic2NyaWJlKChbdiwgbV0pID0+ICh2ID8gbS5oaWRlKCkgOiBtLnNob3coKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluW3suWIm+W7uueahCBBTWFwLlRvb2xCYXIg5a+56LGhXG4gICAqL1xuICBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3MuZ2V0KCk7XG4gIH1cblxuICBkb0xvY2F0aW9uKCkge1xuICAgIHRoaXMub3MuZ2V0KCkuc3Vic2NyaWJlKHRvb2xiYXIgPT4ge1xuICAgICAgdG9vbGJhci5kb0xvY2F0aW9uKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==