ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
270 lines • 20.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: directives/amap-bezier-curve/amap-bezier-curve.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, Input, Output, EventEmitter, NgZone, } from '@angular/core';
import { zip } from 'rxjs';
import { PathOverlayOptions, AMapPathOverlay } from '../../base/amap-path-overlay';
import { AmapBezierCurveService } from './amap-bezier-curve.service';
import { LoggerService } from '../../shared/logger/logger.service';
import { EventBinderService } from '../../shared/event-binder.service';
import { getOptions, ChangeFilter } from '../../utils';
/** @type {?} */
const TAG = 'amap-bezier-curve';
/** @type {?} */
const BezierCurveOptions = [
...PathOverlayOptions,
'isOutline',
'outlineColor',
'dirColor',
'borderWeight',
'showDir',
'path',
];
export class AmapBezierCurveDirective extends AMapPathOverlay {
/**
* @param {?} os
* @param {?} binder
* @param {?} logger
* @param {?} ngZone
*/
constructor(os, binder, logger, ngZone) {
super(os, binder);
this.os = os;
this.binder = binder;
this.logger = logger;
this.ngZone = ngZone;
/**
* 额外: 是否隐藏
*/
this.hidden = false;
/**
* 额外: 是否开启曲线编辑器
*/
this.editor = false;
/**
* 额外: 是否开启折线编辑器
*/
this.polyEditor = false;
// directive events:
this.naReady = new EventEmitter();
this.inited = false;
/** @type {?} */
const editor = this.os.getEditor();
/** @type {?} */
const polyEditor = this.os.getPolyEditor();
this.naEditorAddNode = this.binder.bindEvent(editor, 'addnode');
this.naEditorRemoveNode = this.binder.bindEvent(editor, 'removenode');
this.naEditorAdjust = this.binder.bindEvent(editor, 'adjust');
this.naEditorEnd = this.binder.bindEvent(editor, 'end');
this.naPolyEditorAddNode = this.binder.bindEvent(polyEditor, 'addnode');
this.naPolyEditorRemoveNode = this.binder.bindEvent(polyEditor, 'removenode');
this.naPolyEditorAdjust = this.binder.bindEvent(polyEditor, 'adjust');
this.naPolyEditorEnd = this.binder.bindEvent(polyEditor, 'end');
}
/**
* @return {?}
*/
ngOnDestroy() {
this.os.destroy();
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
/** @type {?} */
const filter = ChangeFilter.of(changes);
/** @type {?} */
const bezierCurve = this.get();
if (!this.inited) {
this.logger.d(TAG, 'initializing ...');
/** @type {?} */
const options = this.options || getOptions(this, BezierCurveOptions);
this.logger.d(TAG, 'options:', options);
this.os.create(options).subscribe((/**
* @param {?} m
* @return {?}
*/
m => {
this.ngZone.run((/**
* @return {?}
*/
() => this.naReady.emit(m)));
this.logger.d(TAG, 'bezierCurve is ready.');
}));
this.inited = true;
}
else {
zip(filter.has('path'), bezierCurve).subscribe((/**
* @param {?} __0
* @return {?}
*/
([v, p]) => p.setPath(v)));
zip(filter.has('options'), bezierCurve).subscribe((/**
* @param {?} __0
* @return {?}
*/
([v, p]) => p.setOptions(v || {})));
zip(filter.has('extData'), bezierCurve).subscribe((/**
* @param {?} __0
* @return {?}
*/
([v, p]) => p.setExtData(v)));
}
zip(filter.has('hidden'), bezierCurve).subscribe((/**
* @param {?} __0
* @return {?}
*/
([v, p]) => v ? p.hide() : p.show()));
filter.has('editor').subscribe((/**
* @param {?} v
* @return {?}
*/
v => this.os.toggleEditor(v)));
filter.has('polyEditor').subscribe((/**
* @param {?} v
* @return {?}
*/
v => this.os.togglePolyEditor(v)));
}
/**
* 获取已创建的 AMap.BezierCurve 对象
* @return {?}
*/
get() {
return this.os.get();
}
}
AmapBezierCurveDirective.decorators = [
{ type: Directive, args: [{
selector: 'amap-bezier-curve',
exportAs: 'bezier-curve',
providers: [AmapBezierCurveService],
},] }
];
/** @nocollapse */
AmapBezierCurveDirective.ctorParameters = () => [
{ type: AmapBezierCurveService },
{ type: EventBinderService },
{ type: LoggerService },
{ type: NgZone }
];
AmapBezierCurveDirective.propDecorators = {
isOutline: [{ type: Input }],
outlineColor: [{ type: Input }],
dirColor: [{ type: Input }],
borderWeight: [{ type: Input }],
showDir: [{ type: Input }],
path: [{ type: Input }],
hidden: [{ type: Input }],
editor: [{ type: Input }],
polyEditor: [{ type: Input }],
options: [{ type: Input }],
naReady: [{ type: Output }],
naEditorAddNode: [{ type: Output }],
naEditorRemoveNode: [{ type: Output }],
naEditorAdjust: [{ type: Output }],
naEditorEnd: [{ type: Output }],
naPolyEditorAddNode: [{ type: Output }],
naPolyEditorRemoveNode: [{ type: Output }],
naPolyEditorAdjust: [{ type: Output }],
naPolyEditorEnd: [{ type: Output }]
};
if (false) {
/**
* 线条是否带描边
* @type {?}
*/
AmapBezierCurveDirective.prototype.isOutline;
/**
* 线条描边颜色
* @type {?}
*/
AmapBezierCurveDirective.prototype.outlineColor;
/**
* 方向箭头颜色
* @type {?}
*/
AmapBezierCurveDirective.prototype.dirColor;
/**
* 描边的宽度
* @type {?}
*/
AmapBezierCurveDirective.prototype.borderWeight;
/**
* 是否延路径显示方向箭头
* @type {?}
*/
AmapBezierCurveDirective.prototype.showDir;
/**
* 贝瑟尔曲线的路径
* @type {?}
*/
AmapBezierCurveDirective.prototype.path;
/**
* 额外: 是否隐藏
* @type {?}
*/
AmapBezierCurveDirective.prototype.hidden;
/**
* 额外: 是否开启曲线编辑器
* @type {?}
*/
AmapBezierCurveDirective.prototype.editor;
/**
* 额外: 是否开启折线编辑器
* @type {?}
*/
AmapBezierCurveDirective.prototype.polyEditor;
/**
* 额外: 会覆盖其他属性的配置方式
* @type {?}
*/
AmapBezierCurveDirective.prototype.options;
/** @type {?} */
AmapBezierCurveDirective.prototype.naReady;
/** @type {?} */
AmapBezierCurveDirective.prototype.naEditorAddNode;
/** @type {?} */
AmapBezierCurveDirective.prototype.naEditorRemoveNode;
/** @type {?} */
AmapBezierCurveDirective.prototype.naEditorAdjust;
/** @type {?} */
AmapBezierCurveDirective.prototype.naEditorEnd;
/** @type {?} */
AmapBezierCurveDirective.prototype.naPolyEditorAddNode;
/** @type {?} */
AmapBezierCurveDirective.prototype.naPolyEditorRemoveNode;
/** @type {?} */
AmapBezierCurveDirective.prototype.naPolyEditorAdjust;
/** @type {?} */
AmapBezierCurveDirective.prototype.naPolyEditorEnd;
/**
* @type {?}
* @private
*/
AmapBezierCurveDirective.prototype.inited;
/**
* @type {?}
* @protected
*/
AmapBezierCurveDirective.prototype.os;
/**
* @type {?}
* @protected
*/
AmapBezierCurveDirective.prototype.binder;
/**
* @type {?}
* @private
*/
AmapBezierCurveDirective.prototype.logger;
/**
* @type {?}
* @private
*/
AmapBezierCurveDirective.prototype.ngZone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1iZXppZXItY3VydmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWFtYXAvIiwic291cmNlcyI6WyJkaXJlY3RpdmVzL2FtYXAtYmV6aWVyLWN1cnZlL2FtYXAtYmV6aWVyLWN1cnZlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBR1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7TUFFakQsR0FBRyxHQUFHLG1CQUFtQjs7TUFDekIsa0JBQWtCLEdBQUc7SUFDekIsR0FBRyxrQkFBa0I7SUFDckIsV0FBVztJQUNYLGNBQWM7SUFDZCxVQUFVO0lBQ1YsY0FBYztJQUNkLFNBQVM7SUFDVCxNQUFNO0NBQ1A7QUFPRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZUFBaUM7Ozs7Ozs7SUEyRDdFLFlBQ1ksRUFBMEIsRUFDMUIsTUFBMEIsRUFDNUIsTUFBcUIsRUFDckIsTUFBYztRQUV0QixLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBTFIsT0FBRSxHQUFGLEVBQUUsQ0FBd0I7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4s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WUEzSEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRSxjQUFjO2dCQUN4QixTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzthQUNwQzs7OztZQXBCUSxzQkFBc0I7WUFFdEIsa0JBQWtCO1lBRGxCLGFBQWE7WUFMcEIsTUFBTTs7O3dCQStCTCxLQUFLOzJCQUlMLEtBQUs7dUJBSUwsS0FBSzsyQkFJTCxLQUFLO3NCQUlMLEtBQUs7bUJBSUwsS0FBSztxQkFJTCxLQUFLO3FCQUlMLEtBQUs7eUJBSUwsS0FBSztzQkFJTCxLQUFLO3NCQUdMLE1BQU07OEJBR04sTUFBTTtpQ0FDTixNQUFNOzZCQUNOLE1BQU07MEJBQ04sTUFBTTtrQ0FDTixNQUFNO3FDQUNOLE1BQU07aUNBQ04sTUFBTTs4QkFDTixNQUFNOzs7Ozs7O0lBakRQLDZDQUE0Qjs7Ozs7SUFJNUIsZ0RBQThCOzs7OztJQUk5Qiw0Q0FBMEI7Ozs7O0lBSTFCLGdEQUE4Qjs7Ozs7SUFJOUIsMkNBQTBCOzs7OztJQUkxQix3Q0FBc0U7Ozs7O0lBSXRFLDBDQUF3Qjs7Ozs7SUFJeEIsMENBQXdCOzs7OztJQUl4Qiw4Q0FBNEI7Ozs7O0lBSTVCLDJDQUEyQzs7SUFHM0MsMkNBQXVDOztJQUd2QyxtREFBNkM7O0lBQzdDLHNEQUFnRDs7SUFDaEQsa0RBQTRDOztJQUM1QywrQ0FBeUM7O0lBQ3pDLHVEQUFpRDs7SUFDakQsMERBQW9EOztJQUNwRCxzREFBZ0Q7O0lBQ2hELG1EQUE2Qzs7Ozs7SUFFN0MsMENBQXVCOzs7OztJQUdyQixzQ0FBb0M7Ozs7O0lBQ3BDLDBDQUFvQzs7Ozs7SUFDcEMsMENBQTZCOzs7OztJQUM3QiwwQ0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXMsXG4gIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhdGhPdmVybGF5T3B0aW9ucywgQU1hcFBhdGhPdmVybGF5IH0gZnJvbSAnLi4vLi4vYmFzZS9hbWFwLXBhdGgtb3ZlcmxheSc7XG5pbXBvcnQgeyBBbWFwQmV6aWVyQ3VydmVTZXJ2aWNlIH0gZnJvbSAnLi9hbWFwLWJlemllci1jdXJ2ZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEV2ZW50QmluZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9ldmVudC1iaW5kZXIuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRPcHRpb25zLCBDaGFuZ2VGaWx0ZXIgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmNvbnN0IFRBRyA9ICdhbWFwLWJlemllci1jdXJ2ZSc7XG5jb25zdCBCZXppZXJDdXJ2ZU9wdGlvbnMgPSBbXG4gIC4uLlBhdGhPdmVybGF5T3B0aW9ucyxcbiAgJ2lzT3V0bGluZScsXG4gICdvdXRsaW5lQ29sb3InLFxuICAnZGlyQ29sb3InLFxuICAnYm9yZGVyV2VpZ2h0JyxcbiAgJ3Nob3dEaXInLFxuICAncGF0aCcsXG5dO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdhbWFwLWJlemllci1jdXJ2ZScsXG4gIGV4cG9ydEFzOiAnYmV6aWVyLWN1cnZlJyxcbiAgcHJvdmlkZXJzOiBbQW1hcEJlemllckN1cnZlU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFtYXBCZXppZXJDdXJ2ZURpcmVjdGl2ZSBleHRlbmRzIEFNYXBQYXRoT3ZlcmxheTxBTWFwLkJlemllckN1cnZlPlxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLy8gLS0tLSBPcHRpb25zIC0tLS1cbiAgLyoqXG4gICAqIOe6v+adoeaYr+WQpuW4puaPj+i+uVxuICAgKi9cbiAgQElucHV0KCkgaXNPdXRsaW5lOiBib29sZWFuO1xuICAvKipcbiAgICog57q/5p2h5o+P6L656aKc6ImyXG4gICAqL1xuICBASW5wdXQoKSBvdXRsaW5lQ29sb3I6IHN0cmluZztcbiAgLyoqXG4gICAqIOaWueWQkeeureWktOminOiJslxuICAgKi9cbiAgQElucHV0KCkgZGlyQ29sb3I6IHN0cmluZztcbiAgLyoqXG4gICAqIOaPj+i+ueeahOWuveW6plxuICAgKi9cbiAgQElucHV0KCkgYm9yZGVyV2VpZ2h0OiBudW1iZXI7XG4gIC8qKlxuICAgKiDmmK/lkKblu7bot6/lvoTmmL7npLrmlrnlkJHnrq3lpLRcbiAgICovXG4gIEBJbnB1dCgpIHNob3dEaXI6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDotJ3nkZ/lsJTmm7Lnur/nmoTot6/lvoRcbiAgICovXG4gIEBJbnB1dCgpIHBhdGg6IEFycmF5PEFycmF5PG51bWJlciB8IHN0cmluZyB8IEFycmF5PHN0cmluZyB8IG51bWJlcj4+PjtcbiAgLyoqXG4gICAqIOmineWkljog5piv5ZCm6ZqQ6JePXG4gICAqL1xuICBASW5wdXQoKSBoaWRkZW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIOmineWkljog5piv5ZCm5byA5ZCv5puy57q/57yW6L6R5ZmoXG4gICAqL1xuICBASW5wdXQoKSBlZGl0b3IgPSBmYWxzZTtcbiAgLyoqXG4gICAqIOmineWkljog5piv5ZCm5byA5ZCv5oqY57q/57yW6L6R5ZmoXG4gICAqL1xuICBASW5wdXQoKSBwb2x5RWRpdG9yID0gZmFsc2U7XG4gIC8qKlxuICAgKiDpop3lpJY6IOS8muimhuebluWFtuS7luWxnuaAp+eahOmFjee9ruaWueW8j1xuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uczogQU1hcC5CZXppZXJDdXJ2ZS5PcHRpb25zO1xuXG4gIC8vIGRpcmVjdGl2ZSBldmVudHM6XG4gIEBPdXRwdXQoKSBuYVJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vIGVkaXRvciBldmVudHM6XG4gIEBPdXRwdXQoKSBuYUVkaXRvckFkZE5vZGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFFZGl0b3JSZW1vdmVOb2RlOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hRWRpdG9yQWRqdXN0OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hRWRpdG9yRW5kOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hUG9seUVkaXRvckFkZE5vZGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFQb2x5RWRpdG9yUmVtb3ZlTm9kZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoKSBuYVBvbHlFZGl0b3JBZGp1c3Q6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFQb2x5RWRpdG9yRW5kOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBwcml2YXRlIGluaXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvczogQW1hcEJlemllckN1cnZlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYmluZGVyOiBFdmVudEJpbmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgc3VwZXIob3MsIGJpbmRlcik7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5vcy5nZXRFZGl0b3IoKTtcbiAgICBjb25zdCBwb2x5RWRpdG9yID0gdGhpcy5vcy5nZXRQb2x5RWRpdG9yKCk7XG4gICAgdGhpcy5uYUVkaXRvckFkZE5vZGUgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQoZWRpdG9yLCAnYWRkbm9kZScpO1xuICAgIHRoaXMubmFFZGl0b3JSZW1vdmVOb2RlID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KGVkaXRvciwgJ3JlbW92ZW5vZGUnKTtcbiAgICB0aGlzLm5hRWRpdG9yQWRqdXN0ID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KGVkaXRvciwgJ2FkanVzdCcpO1xuICAgIHRoaXMubmFFZGl0b3JFbmQgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQoZWRpdG9yLCAnZW5kJyk7XG4gICAgdGhpcy5uYVBvbHlFZGl0b3JBZGROb2RlID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHBvbHlFZGl0b3IsICdhZGRub2RlJyk7XG4gICAgdGhpcy5uYVBvbHlFZGl0b3JSZW1vdmVOb2RlID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHBvbHlFZGl0b3IsICdyZW1vdmVub2RlJyk7XG4gICAgdGhpcy5uYVBvbHlFZGl0b3JBZGp1c3QgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQocG9seUVkaXRvciwgJ2FkanVzdCcpO1xuICAgIHRoaXMubmFQb2x5RWRpdG9yRW5kID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHBvbHlFZGl0b3IsICdlbmQnKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMub3MuZGVzdHJveSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IGZpbHRlciA9IENoYW5nZUZpbHRlci5vZihjaGFuZ2VzKTtcbiAgICBjb25zdCBiZXppZXJDdXJ2ZSA9IHRoaXMuZ2V0KCk7XG4gICAgaWYgKCF0aGlzLmluaXRlZCkge1xuICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICdpbml0aWFsaXppbmcgLi4uJyk7XG4gICAgICBjb25zdCBvcHRpb25zID1cbiAgICAgICAgdGhpcy5vcHRpb25zIHx8IGdldE9wdGlvbnM8QU1hcC5CZXppZXJDdXJ2ZS5PcHRpb25zPih0aGlzLCBCZXppZXJDdXJ2ZU9wdGlvbnMpO1xuICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICdvcHRpb25zOicsIG9wdGlvbnMpO1xuICAgICAgdGhpcy5vcy5jcmVhdGUob3B0aW9ucykuc3Vic2NyaWJlKG0gPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5uYVJlYWR5LmVtaXQobSkpO1xuICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ2JlemllckN1cnZlIGlzIHJlYWR5LicpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmluaXRlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHppcChcbiAgICAgICAgZmlsdGVyLmhhczxBcnJheTxBcnJheTxudW1iZXIgfCBzdHJpbmcgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+Pj4+KCdwYXRoJyksXG4gICAgICAgIGJlemllckN1cnZlLFxuICAgICAgKS5zdWJzY3JpYmUoKFt2LCBwXSkgPT4gcC5zZXRQYXRoKHYpKTtcbiAgICAgIHppcChmaWx0ZXIuaGFzPEFNYXAuQmV6aWVyQ3VydmUuT3B0aW9ucz4oJ29wdGlvbnMnKSwgYmV6aWVyQ3VydmUpLnN1YnNjcmliZSgoW3YsIHBdKSA9PlxuICAgICAgICBwLnNldE9wdGlvbnModiB8fCB7fSksXG4gICAgICApO1xuICAgICAgemlwKGZpbHRlci5oYXM8YW55PignZXh0RGF0YScpLCBiZXppZXJDdXJ2ZSkuc3Vic2NyaWJlKChbdiwgcF0pID0+IHAuc2V0RXh0RGF0YSh2KSk7XG4gICAgfVxuXG4gICAgemlwKGZpbHRlci5oYXM8Ym9vbGVhbj4oJ2hpZGRlbicpLCBiZXppZXJDdXJ2ZSkuc3Vic2NyaWJlKChbdiwgcF0pID0+XG4gICAgICB2ID8gcC5oaWRlKCkgOiBwLnNob3coKSxcbiAgICApO1xuICAgIGZpbHRlci5oYXM8Ym9vbGVhbj4oJ2VkaXRvcicpLnN1YnNjcmliZSh2ID0+IHRoaXMub3MudG9nZ2xlRWRpdG9yKHYpKTtcbiAgICBmaWx0ZXIuaGFzPGJvb2xlYW4+KCdwb2x5RWRpdG9yJykuc3Vic2NyaWJlKHYgPT4gdGhpcy5vcy50b2dnbGVQb2x5RWRpdG9yKHYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blt7LliJvlu7rnmoQgQU1hcC5CZXppZXJDdXJ2ZSDlr7nosaFcbiAgICovXG4gIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcy5nZXQoKTtcbiAgfVxufVxuIl19