angular-monaco-editor
Advanced tools
Comparing version 1.4.1 to 1.5.0
@@ -6,2 +6,3 @@ /** | ||
export { AngularMonacoEditorComponent as ɵb, CODE_EDITOR_INPUT_VALUE_ACCESSOR as ɵa } from './lib/editor/angular-monaco-editor/angular-monaco-editor.component'; | ||
export { CodeEditorEventService as ɵc } from './lib/editor/services/code-editor.event.service'; | ||
export { BaseMonacoEditor as ɵc } from './lib/editor/base-monaco-editor'; | ||
export { CodeEditorEventService as ɵd } from './lib/editor/services/code-editor.event.service'; |
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"metadata":{"AngularMonacoEditorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵb"}],"exports":[{"__symbolic":"reference","name":"ɵb"}],"providers":[]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"AngularMonacoEditorModule"},"providers":[{"provide":{"__symbolic":"reference","name":"ANGULAR_MONACO_EDITOR_CONFIG"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"ANGULAR_MONACO_EDITOR_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":4,"character":48},"arguments":["ANGULAR_MONACO_EDITOR_CONFIG"]},"AngularMonacoEditorConfig":{"__symbolic":"interface"},"AngularEditorModel":{"__symbolic":"interface"},"ɵa":{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":19,"character":11},"useExisting":{"__symbolic":"reference","name":"ɵb"},"multi":true},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":24,"character":1},"arguments":[{"selector":"angular-monaco-editor","template":"<div class=\"editor\" #codeEditor></div>","styles":[":host{display:block;min-height:200px}.editor{width:100%;height:98%}"],"providers":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"}]}]}],"members":{"_editorComponent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":42,"character":3},"arguments":["codeEditor"]}]}],"onInit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":44,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3},"arguments":["options"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":69,"character":37},"arguments":[{"__symbolic":"reference","name":"ANGULAR_MONACO_EDITOR_CONFIG"}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":69,"character":28},{"__symbolic":"reference","name":"AngularMonacoEditorConfig"},{"__symbolic":"reference","name":"ɵc"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"initMonaco":[{"__symbolic":"method"}],"onChangeModelContentHandler":[{"__symbolic":"method"}],"onBlurEditorTextHandler":[{"__symbolic":"method"}],"onLayoutChangeHandler":[{"__symbolic":"method"}],"localEditor":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"addEvent":[{"__symbolic":"method"}],"fireEvent":[{"__symbolic":"method"}]}}},"origins":{"AngularMonacoEditorModule":"./lib/editor/editor.module","ANGULAR_MONACO_EDITOR_CONFIG":"./lib/editor/config","AngularMonacoEditorConfig":"./lib/editor/config","AngularEditorModel":"./lib/editor/types","ɵa":"./lib/editor/angular-monaco-editor/angular-monaco-editor.component","ɵb":"./lib/editor/angular-monaco-editor/angular-monaco-editor.component","ɵc":"./lib/editor/services/code-editor.event.service"},"importAs":"angular-monaco-editor"} | ||
{"__symbolic":"module","version":4,"metadata":{"AngularMonacoEditorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵb"}],"exports":[{"__symbolic":"reference","name":"ɵb"}],"providers":[]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"AngularMonacoEditorModule"},"providers":[{"provide":{"__symbolic":"reference","name":"ANGULAR_MONACO_EDITOR_CONFIG"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"ANGULAR_MONACO_EDITOR_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":4,"character":48},"arguments":["ANGULAR_MONACO_EDITOR_CONFIG"]},"AngularMonacoEditorConfig":{"__symbolic":"interface"},"AngularEditorModel":{"__symbolic":"interface"},"ɵa":{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":16,"character":11},"useExisting":{"__symbolic":"reference","name":"ɵb"},"multi":true},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵc"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":21,"character":1},"arguments":[{"selector":"angular-monaco-editor","template":"<div class=\"editor\" #codeEditor></div>","styles":[":host{display:block;min-height:200px}.editor{width:100%;height:100%}"],"providers":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵd"}]}]}],"members":{"model":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["model"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":48,"character":89},"arguments":[{"__symbolic":"reference","name":"ANGULAR_MONACO_EDITOR_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":48,"character":28},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"AngularMonacoEditorConfig"}]}],"initMonaco":[{"__symbolic":"method"}],"onChangeModelContentHandler":[{"__symbolic":"method"}],"onBlurEditorTextHandler":[{"__symbolic":"method"}],"onLayoutChangeHandler":[{"__symbolic":"method"}],"localEditor":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","members":{"_editorComponent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":16,"character":3},"arguments":["codeEditor"]}]}],"onInit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":19,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3},"arguments":["options"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"AngularMonacoEditorConfig"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"initMonaco":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"addEvent":[{"__symbolic":"method"}],"fireEvent":[{"__symbolic":"method"}]}}},"origins":{"AngularMonacoEditorModule":"./lib/editor/editor.module","ANGULAR_MONACO_EDITOR_CONFIG":"./lib/editor/config","AngularMonacoEditorConfig":"./lib/editor/config","AngularEditorModel":"./lib/editor/types","ɵa":"./lib/editor/angular-monaco-editor/angular-monaco-editor.component","ɵb":"./lib/editor/angular-monaco-editor/angular-monaco-editor.component","ɵc":"./lib/editor/base-monaco-editor","ɵd":"./lib/editor/services/code-editor.event.service"},"importAs":"angular-monaco-editor"} |
@@ -15,2 +15,31 @@ (function (global, factory) { | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use | ||
this file except in compliance with the License. You may obtain a copy of the | ||
License at http://www.apache.org/licenses/LICENSE-2.0 | ||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED | ||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, | ||
MERCHANTABLITY OR NON-INFRINGEMENT. | ||
See the Apache Version 2.0 License for specific language governing permissions | ||
and limitations under the License. | ||
***************************************************************************** */ | ||
/* global Reflect, Promise */ | ||
var extendStatics = function (d, b) { | ||
extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) | ||
if (b.hasOwnProperty(p)) | ||
d[p] = b[p]; }; | ||
return extendStatics(d, b); | ||
}; | ||
function __extends(d, b) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
} | ||
/** | ||
@@ -75,31 +104,9 @@ * @fileoverview added by tsickle | ||
var /** @type {?} */ loadPromise; | ||
// 自定义输入控件:1.封装ControlValueAccessor | ||
// https://code-examples.net/zh-CN/q/2154761 | ||
var /** @type {?} */ CODE_EDITOR_INPUT_VALUE_ACCESSOR = { | ||
// https://blog.csdn.net/wangdan_2013/article/details/81314959 | ||
provide: forms.NG_VALUE_ACCESSOR, | ||
useExisting: core.forwardRef(function () { return AngularMonacoEditorComponent; }), | ||
multi: true | ||
}; | ||
var AngularMonacoEditorComponent = (function () { | ||
// @Input('model') | ||
// set model(model: AngularEditorModel) { | ||
// this.options.model = model; | ||
// if (this._editor) { | ||
// this._editor.dispose(); | ||
// this.initMonaco(this.options); | ||
// } | ||
// } | ||
// 注入AngularMonacoEditorConfig,在创建Editor实例时设置config | ||
function AngularMonacoEditorComponent(zone, config, codeEditorEventService) { | ||
this.zone = zone; | ||
/** | ||
* @abstract | ||
*/ | ||
var BaseMonacoEditor = (function () { | ||
function BaseMonacoEditor(codeEditorEventService, config) { | ||
this.codeEditorEventService = codeEditorEventService; | ||
this.config = config; | ||
this.codeEditorEventService = codeEditorEventService; | ||
this._value = ''; | ||
// ControlValueAccessor提供的事件回调 | ||
this.onControlValueChange = function (_) { | ||
}; | ||
// ControlValueAccessor提供的事件回调 | ||
this.onControlTouched = function () { | ||
}; | ||
// 初始化自定义事件 | ||
@@ -114,3 +121,3 @@ var /** @type {?} */ self = this; | ||
} | ||
Object.defineProperty(AngularMonacoEditorComponent.prototype, "options", { | ||
Object.defineProperty(BaseMonacoEditor.prototype, "options", { | ||
get: /** | ||
@@ -138,3 +145,3 @@ * @return {?} | ||
*/ | ||
AngularMonacoEditorComponent.prototype.ngAfterViewInit = /** | ||
BaseMonacoEditor.prototype.ngAfterViewInit = /** | ||
* @return {?} | ||
@@ -186,9 +193,6 @@ */ | ||
*/ | ||
AngularMonacoEditorComponent.prototype.ngOnDestroy = /** | ||
BaseMonacoEditor.prototype.ngOnDestroy = /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
// if (this._windowResizeSubscription) { | ||
// this._windowResizeSubscription.unsubscribe(); | ||
// } | ||
if (this._editor) { | ||
@@ -199,2 +203,53 @@ this._editor.dispose(); | ||
}; | ||
BaseMonacoEditor.propDecorators = { | ||
"_editorComponent": [{ type: core.ViewChild, args: ['codeEditor',] },], | ||
"onInit": [{ type: core.Output },], | ||
"options": [{ type: core.Input, args: ['options',] },], | ||
}; | ||
return BaseMonacoEditor; | ||
}()); | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes} checked by tsc | ||
*/ | ||
// 自定义输入控件:1.封装ControlValueAccessor | ||
// https://code-examples.net/zh-CN/q/2154761 | ||
var /** @type {?} */ CODE_EDITOR_INPUT_VALUE_ACCESSOR = { | ||
// https://blog.csdn.net/wangdan_2013/article/details/81314959 | ||
provide: forms.NG_VALUE_ACCESSOR, | ||
useExisting: core.forwardRef(function () { return AngularMonacoEditorComponent; }), | ||
multi: true | ||
}; | ||
var AngularMonacoEditorComponent = (function (_super) { | ||
__extends(AngularMonacoEditorComponent, _super); | ||
// tslint:disable-next-line:max-line-length | ||
function AngularMonacoEditorComponent(zone, editorEventService, angularEditorconfig) { | ||
var _this = _super.call(this, editorEventService, angularEditorconfig) || this; | ||
_this.zone = zone; | ||
_this.editorEventService = editorEventService; | ||
_this.angularEditorconfig = angularEditorconfig; | ||
_this._value = ''; | ||
// ControlValueAccessor提供的事件回调 | ||
_this.onControlValueChange = function (_) { | ||
}; | ||
// ControlValueAccessor提供的事件回调 | ||
_this.onControlTouched = function () { | ||
}; | ||
return _this; | ||
} | ||
Object.defineProperty(AngularMonacoEditorComponent.prototype, "model", { | ||
set: /** | ||
* @param {?} model | ||
* @return {?} | ||
*/ function (model) { | ||
this.options.model = model; | ||
if (this._editor) { | ||
this._editor.dispose(); | ||
this.initMonaco(this.options); | ||
} | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
/** | ||
@@ -210,8 +265,8 @@ * @param {?} options | ||
var _this = this; | ||
console.log('Init the custom monaco code editor'); | ||
// if (hasModel) { | ||
// options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri); | ||
// } | ||
var /** @type {?} */ hasModel = !!options.model; | ||
if (hasModel) { | ||
options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri); | ||
} | ||
this._editor = monaco.editor.create(this._editorComponent.nativeElement, options); | ||
{ | ||
if (!hasModel) { | ||
this._editor.setValue(this._value); | ||
@@ -228,4 +283,3 @@ } | ||
// this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor.layout()); | ||
// this.onInit.emit(this._editor); | ||
this.codeEditorEventService.fireEvent({ | ||
this.editorEventService.fireEvent({ | ||
eventName: CODE_EDITOR_EVENTS.onInit, | ||
@@ -250,3 +304,2 @@ target: this, | ||
this.zone.run(function () { return _this.value = _value; }); // value is not propagated to parent when executing outside zone. | ||
// console.log("write from the monaco:" + this._value); | ||
}; | ||
@@ -354,5 +407,6 @@ /** | ||
{ type: core.Component, args: [{ | ||
// tslint:disable-next-line:component-selector | ||
selector: 'angular-monaco-editor', | ||
template: "<div class=\"editor\" #codeEditor></div>", | ||
styles: [":host{display:block;min-height:200px}.editor{width:100%;height:98%}"], | ||
styles: [":host{display:block;min-height:200px}.editor{width:100%;height:100%}"], | ||
// 自定义输入控件:2.引入依赖服务ControlValueAccessor | ||
@@ -366,13 +420,11 @@ providers: [CODE_EDITOR_INPUT_VALUE_ACCESSOR, CodeEditorEventService] | ||
{ type: core.NgZone, }, | ||
{ type: CodeEditorEventService, }, | ||
{ type: undefined, decorators: [{ type: core.Inject, args: [ANGULAR_MONACO_EDITOR_CONFIG,] },] }, | ||
{ type: CodeEditorEventService, }, | ||
]; | ||
}; | ||
AngularMonacoEditorComponent.propDecorators = { | ||
"_editorComponent": [{ type: core.ViewChild, args: ['codeEditor',] },], | ||
"onInit": [{ type: core.Output },], | ||
"options": [{ type: core.Input, args: ['options',] },], | ||
"model": [{ type: core.Input, args: ['model',] },], | ||
}; | ||
return AngularMonacoEditorComponent; | ||
}()); | ||
}(BaseMonacoEditor)); | ||
@@ -436,3 +488,4 @@ /** | ||
exports.ɵa = CODE_EDITOR_INPUT_VALUE_ACCESSOR; | ||
exports.ɵc = CodeEditorEventService; | ||
exports.ɵc = BaseMonacoEditor; | ||
exports.ɵd = CodeEditorEventService; | ||
@@ -443,2 +496,2 @@ Object.defineProperty(exports, '__esModule', { value: true }); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLnVtZC5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yL2xpYi9lZGl0b3IvY29uZmlnLnRzIiwibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvbGliL2VkaXRvci9jb25zdGFudHMvZXZlbnRzLnRzIiwibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvbGliL2VkaXRvci9zZXJ2aWNlcy9jb2RlLWVkaXRvci5ldmVudC5zZXJ2aWNlLnRzIiwibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvbGliL2VkaXRvci9hbmd1bGFyLW1vbmFjby1lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yLmNvbXBvbmVudC50cyIsIm5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yL2xpYi9lZGl0b3IvZWRpdG9yLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBpbmplY3Rpb25Ub2tlbsOkwr3CnMOnwpTCqMOowq/CtMOmwpjCjlxuLy8gaHR0cHM6Ly9zZWdtZW50ZmF1bHQuY29tL2EvMTE5MDAwMDAwODYyNjM0OFxuZXhwb3J0IGNvbnN0IEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0FOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcnKTtcblxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnIHtcbiAgYmFzZVVybD86IHN0cmluZztcbiAgZGVmYXVsdE9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueTsgfSxcbiAgb25Nb25hY29Mb2FkPzogRnVuY3Rpb247XG59IiwiZXhwb3J0IGNvbnN0IENPREVfRURJVE9SX0VWRU5UUyA9IHtcbiAgICBvbkluaXQ6ICdvbkluaXQnXG59IiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgQ09ERV9FRElUT1JfRVZFTlRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2V2ZW50cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlIHtcbiAgICBwdWJsaWMgZXZlbnROYW1lcyA9IE9iamVjdC5rZXlzKENPREVfRURJVE9SX0VWRU5UUyk7XG4gICAgcHJpdmF0ZSBfZXZlbnRzOiBhbnkgPSB7fTsgLy8gw6TCvcK/w6fClMKow6TCusKLw6TCu8K2XG5cbiAgICAvKipcbiAgICAgKiDDqMKuwr7Dp8K9wq7DpcKQwq/Dp8KUwqjDpMK6wovDpMK7wrZcbiAgICAgKiBAcGFyYW0gIMOkwrrCi8OkwrvCtlxuICAgICAqL1xuICAgIGFkZEV2ZW50KGV2ZW50KXtcbiAgICAgICAgYXNzaWduKHRoaXMuX2V2ZW50cywgZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmV2ZW50cyk7XG4gICAgfVxuXG4gICAgZmlyZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuX2V2ZW50c1tldmVudC5ldmVudE5hbWVdLmVtaXQoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkVtaXQgRXZlbnQ6XCIgKyBldmVudCk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIEluamVjdCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IHBpY2sgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHLCBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IENvZGVFZGl0b3JFdmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb2RlLWVkaXRvci5ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENPREVfRURJVE9SX0VWRU5UUyB9IGZyb20gJy4uL2NvbnN0YW50cy9ldmVudHMnO1xuXG5kZWNsYXJlIGNvbnN0IG1vbmFjbzogYW55O1xuXG5sZXQgbG9hZGVkTW9uYWNvID0gZmFsc2U7XG5sZXQgbG9hZFByb21pc2U6IFByb21pc2U8dm9pZD47XG5cbi8vIMOowofCqsOlwq7CmsOkwrnCicOowr7Ck8OlwoXCpcOmwo7Cp8OkwrvCtjoxLsOlwrDCgcOowqPChUNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4vLyBodHRwczovL2NvZGUtZXhhbXBsZXMubmV0L3poLUNOL3EvMjE1NDc2MVxuZXhwb3J0IGNvbnN0IENPREVfRURJVE9SX0lOUFVUX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIC8vIGh0dHBzOi8vYmxvZy5jc2RuLm5ldC93YW5nZGFuXzIwMTMvYXJ0aWNsZS9kZXRhaWxzLzgxMzE0OTU5XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FuZ3VsYXItbW9uYWNvLWVkaXRvcicsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImVkaXRvclwiICNjb2RlRWRpdG9yPjwvZGl2PmAsXG4gIHN0eWxlczogW2A6aG9zdHtkaXNwbGF5OmJsb2NrO21pbi1oZWlnaHQ6MjAwcHh9LmVkaXRvcnt3aWR0aDoxMDAlO2hlaWdodDo5OCV9YF0sXG4gIC8vIMOowofCqsOlwq7CmsOkwrnCicOowr7Ck8OlwoXCpcOmwo7Cp8OkwrvCtjoyLsOlwrzClcOlwoXCpcOkwr7CncOowrXClsOmwpzCjcOlworCoUNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHByb3ZpZGVyczogW0NPREVfRURJVE9SX0lOUFVUX1ZBTFVFX0FDQ0VTU09SLCBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlXVxufSlcblxuLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2IDwtPiBNb25hY28gRWR0b3JcblxuLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2OjMuMSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG5leHBvcnQgY2xhc3MgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCBfZWRpdG9yOiBhbnk7XG4gIHByaXZhdGUgX29wdGlvbnM6IGFueTtcbiAgLy8gcHJvdGVjdGVkIF93aW5kb3dSZXNpemVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfdmFsdWUgPSAnJztcblxuICBAVmlld0NoaWxkKCdjb2RlRWRpdG9yJykgX2VkaXRvckNvbXBvbmVudDogRWxlbWVudFJlZjsgLy8gw6XCisKow6bCgMKBw6bCt8K7w6XCisKgw6TCu8Kjw6fCoMKBw6fCvMKWw6jCvsKRw6XCmcKoXG5cbiAgQE91dHB1dCgpIG9uSW5pdDtcblxuICBASW5wdXQoJ29wdGlvbnMnKVxuICBzZXQgb3B0aW9ucyhvcHRpb25zOiBhbnkpIHtcbiAgICAvLyDDqcK7wpjDqMKuwqRvcHRpb25zKHRoaXMuY29uZmlnLmRlZmF1bHRPcHRpb25zKSArIMOowofCqsOlwq7CmsOkwrnCiW9wdGlvbnMob3B0aW9ucylcbiAgICB0aGlzLl9vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWcuZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpO1xuICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmluaXRNb25hY28ob3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGdldCBvcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICAvLyBASW5wdXQoJ21vZGVsJylcbiAgLy8gc2V0IG1vZGVsKG1vZGVsOiBBbmd1bGFyRWRpdG9yTW9kZWwpIHtcbiAgLy8gICB0aGlzLm9wdGlvbnMubW9kZWwgPSBtb2RlbDtcbiAgLy8gICBpZiAodGhpcy5fZWRpdG9yKSB7XG4gIC8vICAgICB0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xuICAvLyAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMub3B0aW9ucyk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLy8gw6bCs8Kow6XChcKlQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZ8OvwrzCjMOlwpzCqMOlwojCm8OlwrvCukVkaXRvcsOlwq7CnsOkwr7Ci8OmwpfCtsOowq7CvsOnwr3CrmNvbmZpZ1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSwgQEluamVjdChBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZywgcHJpdmF0ZSBjb2RlRWRpdG9yRXZlbnRTZXJ2aWNlOiBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlKSB7XG5cbiAgICAvLyDDpcKIwp3DpcKnwovDpcKMwpbDqMKHwqrDpcKuwprDpMK5wonDpMK6wovDpMK7wrZcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb2RlRWRpdG9yRXZlbnRTZXJ2aWNlLmV2ZW50TmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgLy8gw6XCiMKbw6XCu8K6w6jCh8Kqw6XCrsKaw6TCucKJw6TCusKLw6TCu8K2w6/CvMKMw6bCrcKkw6XCpMKEw6TCvcKcw6fClMKow6fCrcKJw6bClcKIw6TCusKOOiBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCkgXG4gICAgICBzZWxmW25hbWVdID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgICBjb25zdCBldmVudFBhaXIgPSBwaWNrKHNlbGYsIG5hbWUpO1xuICAgICAgY29kZUVkaXRvckV2ZW50U2VydmljZS5hZGRFdmVudChldmVudFBhaXIpO1xuICAgIH0pO1xuXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKGxvYWRlZE1vbmFjbykge1xuICAgICAgLy8gV2FpdCB1bnRpbCBtb25hY28gZWRpdG9yIGlzIGF2YWlsYWJsZVxuICAgICAgbG9hZFByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLm9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvYWRlZE1vbmFjbyA9IHRydWU7XG4gICAgICBsb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnLmJhc2VVcmwgfHwgJy9hc3NldHMnO1xuICAgICAgICAvLyBpZiAodHlwZW9mKCg8YW55PndpbmRvdykubW9uYWNvKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gICByZXNvbHZlKCk7XG4gICAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgICAvLyB9XG4gICAgICAgIGNvbnN0IG9uR290QW1kTG9hZGVyOiBhbnkgPSAoKSA9PiB7XG4gICAgICAgICAgLy8gTG9hZCBtb25hY29cbiAgICAgICAgICAoPGFueT53aW5kb3cpLnJlcXVpcmUuY29uZmlnKHsgcGF0aHM6IHsgJ3ZzJzogYCR7YmFzZVVybH0vbW9uYWNvL3ZzYCB9IH0pO1xuICAgICAgICAgICg8YW55PndpbmRvdykucmVxdWlyZShbJ3ZzL2VkaXRvci9lZGl0b3IubWFpbiddLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLm9uTW9uYWNvTG9hZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5vbk1vbmFjb0xvYWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIExvYWQgQU1EIGxvYWRlciBpZiBuZWNlc3NhcnlcbiAgICAgICAgaWYgKCEoPGFueT53aW5kb3cpLnJlcXVpcmUpIHtcbiAgICAgICAgICBjb25zdCBsb2FkZXJTY3JpcHQ6IEhUTUxTY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgICAgbG9hZGVyU2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgICBsb2FkZXJTY3JpcHQuc3JjID0gYCR7YmFzZVVybH0vbW9uYWNvL3ZzL2xvYWRlci5qc2A7XG4gICAgICAgICAgbG9hZGVyU2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkdvdEFtZExvYWRlcik7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsb2FkZXJTY3JpcHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uR290QW1kTG9hZGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIGlmICh0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24pIHtcbiAgICAvLyAgIHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIC8vIH1cbiAgICBpZiAodGhpcy5fZWRpdG9yKSB7XG4gICAgICB0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fZWRpdG9yID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0TW9uYWNvKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdJbml0IHRoZSBjdXN0b20gbW9uYWNvIGNvZGUgZWRpdG9yJyk7XG5cbiAgICAvLyBjb25zdCBoYXNNb2RlbCA9ICEhb3B0aW9ucy5tb2RlbDtcbiAgICBjb25zdCBoYXNNb2RlbCA9IGZhbHNlO1xuXG4gICAgLy8gaWYgKGhhc01vZGVsKSB7XG4gICAgLy8gICBvcHRpb25zLm1vZGVsID0gbW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbChvcHRpb25zLm1vZGVsLnZhbHVlLCBvcHRpb25zLm1vZGVsLmxhbmd1YWdlLCBvcHRpb25zLm1vZGVsLnVyaSk7XG4gICAgLy8gfVxuXG4gICAgdGhpcy5fZWRpdG9yID0gbW9uYWNvLmVkaXRvci5jcmVhdGUodGhpcy5fZWRpdG9yQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFoYXNNb2RlbCkge1xuICAgICAgdGhpcy5fZWRpdG9yLnNldFZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBtb25hY28gZWRpdG9yIC0+IG91dHNpZGUgY29tcG9uZW50XG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkQ2hhbmdlTW9kZWxDb250ZW50KChlOiBhbnkpID0+IHRoaXMub25DaGFuZ2VNb2RlbENvbnRlbnRIYW5kbGVyKGUpKTtcblxuICAgIHRoaXMuX2VkaXRvci5vbkRpZEJsdXJFZGl0b3JUZXh0KChlOiBhbnkpID0+IHRoaXMub25CbHVyRWRpdG9yVGV4dEhhbmRsZXIoZSkpO1xuXG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkTGF5b3V0Q2hhbmdlKChlOiBhbnkpID0+IHRoaXMub25MYXlvdXRDaGFuZ2VIYW5kbGVyKGUpKTtcblxuICAgIC8vIHJlZnJlc2ggbGF5b3V0IG9uIHJlc2l6ZSBldmVudC5cbiAgICAvLyBpZiAodGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uKSB7XG4gICAgLy8gICB0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9lZGl0b3IubGF5b3V0KCkpO1xuICAgIC8vIHRoaXMub25Jbml0LmVtaXQodGhpcy5fZWRpdG9yKTtcbiAgICB0aGlzLmNvZGVFZGl0b3JFdmVudFNlcnZpY2UuZmlyZUV2ZW50KHtcbiAgICAgIGV2ZW50TmFtZTogQ09ERV9FRElUT1JfRVZFTlRTLm9uSW5pdCxcbiAgICAgIHRhcmdldDogdGhpcyxcbiAgICAgIGVkaXRvcjogdGhpcy5fZWRpdG9yXG4gICAgfSk7XG5cbiAgfVxuXG4gIG9uQ2hhbmdlTW9kZWxDb250ZW50SGFuZGxlcihlKSB7XG4gICAgY29uc3QgX3ZhbHVlID0gdGhpcy5fZWRpdG9yLmdldFZhbHVlKCk7XG5cbiAgICAvLyBtb25hY28gZWRpdG9yIC0+IG91dHNpZGUgY29tcG9uZW50XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0pUYW5nbWluZy90bS9pc3N1ZXMvNCBuZ1pvbmXDqMKvwqbDqMKnwqNcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMudmFsdWUgPSBfdmFsdWUpOyAvLyB2YWx1ZSBpcyBub3QgcHJvcGFnYXRlZCB0byBwYXJlbnQgd2hlbiBleGVjdXRpbmcgb3V0c2lkZSB6b25lLlxuICAgIC8vIGNvbnNvbGUubG9nKFwid3JpdGUgZnJvbSB0aGUgbW9uYWNvOlwiICsgdGhpcy5fdmFsdWUpO1xuICB9XG5cbiAgb25CbHVyRWRpdG9yVGV4dEhhbmRsZXIoZSkge1xuXG4gICAgdGhpcy5vbkNvbnRyb2xUb3VjaGVkKCk7XG4gIH1cblxuICBvbkxheW91dENoYW5nZUhhbmRsZXIoZSkge1xuICAgIGNvbnNvbGUubG9nKCdMYXlvdXQgY2hhbmdlZDpcXG4nICsgZSk7XG4gIH1cblxuXG5cblxuICAvLyBnZXQgYWNjZXNzb3JcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgLy8gc2V0IGFjY2Vzc29yIGluY2x1ZGluZyBjYWxsIHRoZSBvbmNoYW5nZSBjYWxsYmFja1xuICBzZXQgdmFsdWUodjogYW55KSB7XG4gICAgaWYgKHYgIT09IHRoaXMudmFsdWUpIHsvLyDDpsKzwqjDpsKEwo/DqMK/wpnDp8Knwo3DpcKGwpnDpsKzwpXDr8K8wozDpcKAwrzDpcK+wpfDpcKtwqbDpMK5wqBcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ29udHJvbFZhbHVlQ2hhbmdlKHRoaXMudmFsdWUpOyAvLyDDpcKcwqjDpcKxwp7DpsKAwqfDpMK/wq7DqcKlwrDDpcKZwqjDqcKHwozDqMKwwoPDp8KUwqhvbkNvbnRyb2xWYWx1ZUNoYW5nZcOmwpbCucOmwrPClVxuICB9XG5cbiAgbG9jYWxFZGl0b3IoKSB7Ly8gRGVtbzogb3V0c2lkZSBjb21wb25lbnQgLT4gbW9uYWNvIGVkaXRvclxuICAgIHRoaXMud3JpdGVWYWx1ZSgndGVzdCcpO1xuICB9XG5cbiAgLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2OjMuMiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29cblxuICAvLyBvdXRzaWRlIGNvbXBvbmVudCAtPiBtb25hY28gZWRpdG9yXG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuXG4gICAgLy8gRml4IGZvciB2YWx1ZSBjaGFuZ2Ugd2hpbGUgZGlzcG9zZSBpbiBwcm9jZXNzLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2VkaXRvciAvKiYmICF0aGlzLm9wdGlvbnMubW9kZWwqLykge1xuICAgICAgICB0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIndyaXRlIHRvIHRoZSBlZGl0b3I6XCIgKyB0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ29udHJvbFZhbHVlQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vbkNvbnRyb2xUb3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvcsOmwo/CkMOkwr7Cm8OnwprChMOkwrrCi8OkwrvCtsOlwpvCnsOowrDCg1xuICBvbkNvbnRyb2xWYWx1ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yw6bCj8KQw6TCvsKbw6fCmsKEw6TCusKLw6TCu8K2w6XCm8Kew6jCsMKDXG4gIG9uQ29udHJvbFRvdWNoZWQgPSAoKSA9PiB7XG4gIH1cblxufVxuIiwiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcsIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyLW1vbmFjby1lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCAgXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICBdXG59KVxuXG5leHBvcnQgY2xhc3MgQW5ndWxhck1vbmFjb0VkaXRvck1vZHVsZSB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChjb25maWc6IEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcgPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQW5ndWxhck1vbmFjb0VkaXRvck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJJbmplY3Rpb25Ub2tlbiIsImFzc2lnbiIsIkluamVjdGFibGUiLCJOR19WQUxVRV9BQ0NFU1NPUiIsImZvcndhcmRSZWYiLCJFdmVudEVtaXR0ZXIiLCJwaWNrIiwiQ29tcG9uZW50IiwiTmdab25lIiwiSW5qZWN0IiwiVmlld0NoaWxkIiwiT3V0cHV0IiwiSW5wdXQiLCJOZ01vZHVsZSIsIkNvbW1vbk1vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUlBLHlCQUFhLDRCQUE0QixHQUFHLElBQUlBLG1CQUFjLENBQUMsOEJBQThCLENBQUM7Ozs7OztBQ0o5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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLnVtZC5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yL2xpYi9lZGl0b3IvY29uZmlnLnRzIixudWxsLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2NvbnN0YW50cy9ldmVudHMudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2Jhc2UtbW9uYWNvLWVkaXRvci50cyIsIm5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yL2xpYi9lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2VkaXRvci5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gaW5qZWN0aW9uVG9rZW7DpMK9wpzDp8KUwqjDqMKvwrTDpsKYwo5cbi8vIGh0dHBzOi8vc2VnbWVudGZhdWx0LmNvbS9hLzExOTAwMDAwMDg2MjYzNDhcbmV4cG9ydCBjb25zdCBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuKCdBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyB7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIGRlZmF1bHRPcHRpb25zPzogeyBba2V5OiBzdHJpbmddOiBhbnk7IH07XG4gIG9uTW9uYWNvTG9hZD86IEZ1bmN0aW9uO1xufVxuIiwiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2VcclxudGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGVcclxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuXHJcblRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcclxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxyXG5XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxyXG5NRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULlxyXG5cclxuU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXHJcbmFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIGlmIChlLmluZGV4T2YocFtpXSkgPCAwKVxyXG4gICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHJlc3VsdC52YWx1ZSk7IH0pLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIGV4cG9ydHMpIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKCFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xyXG4gICAgcmVzdWx0LmRlZmF1bHQgPSBtb2Q7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG4iLCJleHBvcnQgY29uc3QgQ09ERV9FRElUT1JfRVZFTlRTID0ge1xuICAgIG9uSW5pdDogJ29uSW5pdCdcbn07XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IENPREVfRURJVE9SX0VWRU5UUyB9IGZyb20gJy4uL2NvbnN0YW50cy9ldmVudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29kZUVkaXRvckV2ZW50U2VydmljZSB7XG4gICAgcHVibGljIGV2ZW50TmFtZXMgPSBPYmplY3Qua2V5cyhDT0RFX0VESVRPUl9FVkVOVFMpO1xuICAgIHByaXZhdGUgX2V2ZW50czogYW55ID0ge307IC8vIMOkwr3Cv8OnwpTCqMOkwrrCi8OkwrvCtlxuXG4gICAgLyoqXG4gICAgICogw6jCrsK+w6fCvcKuw6XCkMKvw6fClMKow6TCusKLw6TCu8K2XG4gICAgICogQHBhcmFtICDDpMK6wovDpMK7wrZcbiAgICAgKi9cbiAgICBhZGRFdmVudChldmVudCkge1xuICAgICAgICBhc3NpZ24odGhpcy5fZXZlbnRzLCBldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZXZlbnRzKTtcbiAgICB9XG5cbiAgICBmaXJlRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzW2V2ZW50LmV2ZW50TmFtZV0uZW1pdChldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRW1pdCBFdmVudDpcIiArIGV2ZW50KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IHBpY2sgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgQ29kZUVkaXRvckV2ZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29kZS1lZGl0b3IuZXZlbnQuc2VydmljZSc7XG5cbmxldCBsb2FkZWRNb25hY28gPSBmYWxzZTtcbmxldCBsb2FkUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VNb25hY29FZGl0b3IgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCBfZWRpdG9yOiBhbnk7XG4gIHByaXZhdGUgX29wdGlvbnM6IGFueTtcbiAgLy8gcHJvdGVjdGVkIF93aW5kb3dSZXNpemVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBAVmlld0NoaWxkKCdjb2RlRWRpdG9yJykgX2VkaXRvckNvbXBvbmVudDogRWxlbWVudFJlZjsgLy8gw6XCisKow6bCgMKBw6bCt8K7w6XCisKgw6TCu8Kjw6fCoMKBw6fCvMKWw6jCvsKRw6XCmcKoXG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW91dHB1dC1vbi1wcmVmaXhcbiAgQE91dHB1dCgpIG9uSW5pdDtcblxuICBASW5wdXQoJ29wdGlvbnMnKVxuICBzZXQgb3B0aW9ucyhvcHRpb25zOiBhbnkpIHtcbiAgICAvLyDDqcK7wpjDqMKuwqRvcHRpb25zKHRoaXMuY29uZmlnLmRlZmF1bHRPcHRpb25zKSArIMOowofCqsOlwq7CmsOkwrnCiW9wdGlvbnMob3B0aW9ucylcbiAgICB0aGlzLl9vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWcuZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpO1xuICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmluaXRNb25hY28ob3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGdldCBvcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvZGVFZGl0b3JFdmVudFNlcnZpY2U6IENvZGVFZGl0b3JFdmVudFNlcnZpY2UsIHByaXZhdGUgY29uZmlnOiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnKSB7XG4gICAgICAgIC8vIMOlwojCncOlwqfCi8OlwozClsOowofCqsOlwq7CmsOkwrnCicOkwrrCi8OkwrvCtlxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29kZUVkaXRvckV2ZW50U2VydmljZS5ldmVudE5hbWVzLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAvLyDDpcKIwpvDpcK7wrrDqMKHwqrDpcKuwprDpMK5wonDpMK6wovDpMK7wrbDr8K8wozDpsKtwqTDpcKkwoTDpMK9wpzDp8KUwqjDp8KtwonDpsKVwojDpMK6wo46IEBPdXRwdXQoKSBvbkluaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICAgICAgICAgIHNlbGZbbmFtZV0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAgICAgICBjb25zdCBldmVudFBhaXIgPSBwaWNrKHNlbGYsIG5hbWUpO1xuICAgICAgICAgIGNvZGVFZGl0b3JFdmVudFNlcnZpY2UuYWRkRXZlbnQoZXZlbnRQYWlyKTtcbiAgICAgICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKGxvYWRlZE1vbmFjbykge1xuICAgICAgLy8gV2FpdCB1bnRpbCBtb25hY28gZWRpdG9yIGlzIGF2YWlsYWJsZVxuICAgICAgbG9hZFByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLm9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvYWRlZE1vbmFjbyA9IHRydWU7XG4gICAgICBsb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnLmJhc2VVcmwgfHwgJy9hc3NldHMnO1xuICAgICAgICAvLyBpZiAodHlwZW9mKCg8YW55PndpbmRvdykubW9uYWNvKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gICByZXNvbHZlKCk7XG4gICAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgICAvLyB9XG4gICAgICAgIGNvbnN0IG9uR290QW1kTG9hZGVyOiBhbnkgPSAoKSA9PiB7XG4gICAgICAgICAgLy8gTG9hZCBtb25hY29cbiAgICAgICAgICAoPGFueT53aW5kb3cpLnJlcXVpcmUuY29uZmlnKHsgcGF0aHM6IHsgJ3ZzJzogYCR7YmFzZVVybH0vbW9uYWNvL3ZzYCB9IH0pO1xuICAgICAgICAgICg8YW55PndpbmRvdykucmVxdWlyZShbJ3ZzL2VkaXRvci9lZGl0b3IubWFpbiddLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLm9uTW9uYWNvTG9hZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5vbk1vbmFjb0xvYWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIExvYWQgQU1EIGxvYWRlciBpZiBuZWNlc3NhcnlcbiAgICAgICAgaWYgKCEoPGFueT53aW5kb3cpLnJlcXVpcmUpIHtcbiAgICAgICAgICBjb25zdCBsb2FkZXJTY3JpcHQ6IEhUTUxTY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgICAgbG9hZGVyU2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgICBsb2FkZXJTY3JpcHQuc3JjID0gYCR7YmFzZVVybH0vbW9uYWNvL3ZzL2xvYWRlci5qc2A7XG4gICAgICAgICAgbG9hZGVyU2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkdvdEFtZExvYWRlcik7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsb2FkZXJTY3JpcHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uR290QW1kTG9hZGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1vbmFjbyBFZGl0b3IgSW5pdGlhbGl6ZXJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRNb25hY28ob3B0aW9uczogYW55KTogdm9pZCA7XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX2VkaXRvcikge1xuICAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX2VkaXRvciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIEluamVjdCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcsIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgQ29kZUVkaXRvckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09ERV9FRElUT1JfRVZFTlRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2V2ZW50cyc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yTW9kZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBCYXNlTW9uYWNvRWRpdG9yIH0gZnJvbSAnLi4vYmFzZS1tb25hY28tZWRpdG9yJztcblxuZGVjbGFyZSBjb25zdCBtb25hY286IGFueTtcblxuLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2OjEuw6XCsMKBw6jCo8KFQ29udHJvbFZhbHVlQWNjZXNzb3Jcbi8vIGh0dHBzOi8vY29kZS1leGFtcGxlcy5uZXQvemgtQ04vcS8yMTU0NzYxXG5leHBvcnQgY29uc3QgQ09ERV9FRElUT1JfSU5QVVRfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgLy8gaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdkYW5fMjAxMy9hcnRpY2xlL2RldGFpbHMvODEzMTQ5NTlcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdhbmd1bGFyLW1vbmFjby1lZGl0b3InLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJlZGl0b3JcIiAjY29kZUVkaXRvcj48L2Rpdj5gLFxuICBzdHlsZXM6IFtgOmhvc3R7ZGlzcGxheTpibG9jazttaW4taGVpZ2h0OjIwMHB4fS5lZGl0b3J7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX1gXSxcbiAgLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2OjIuw6XCvMKVw6XChcKlw6TCvsKdw6jCtcKWw6bCnMKNw6XCisKhQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcHJvdmlkZXJzOiBbQ09ERV9FRElUT1JfSU5QVVRfVkFMVUVfQUNDRVNTT1IsIENvZGVFZGl0b3JFdmVudFNlcnZpY2VdXG59KVxuXG4vLyDDqMKHwqrDpcKuwprDpMK5wonDqMK+wpPDpcKFwqXDpsKOwqfDpMK7wrYgPC0+IE1vbmFjbyBFZHRvclxuXG4vLyDDqMKHwqrDpcKuwprDpMK5wonDqMK+wpPDpcKFwqXDpsKOwqfDpMK7wrY6My4xIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3JcbmV4cG9ydCBjbGFzcyBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgQmFzZU1vbmFjb0VkaXRvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoJ21vZGVsJylcbiAgc2V0IG1vZGVsKG1vZGVsOiBBbmd1bGFyRWRpdG9yTW9kZWwpIHtcbiAgICB0aGlzLm9wdGlvbnMubW9kZWwgPSBtb2RlbDtcbiAgICBpZiAodGhpcy5fZWRpdG9yKSB7XG4gICAgICB0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgLy8gcHJvdGVjdGVkIF93aW5kb3dSZXNpemVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfdmFsdWUgPSAnJztcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBwcml2YXRlIGVkaXRvckV2ZW50U2VydmljZTogQ29kZUVkaXRvckV2ZW50U2VydmljZSwgQEluamVjdChBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHKSBwcml2YXRlIGFuZ3VsYXJFZGl0b3Jjb25maWc6IEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcpIHtcbiAgICBzdXBlcihlZGl0b3JFdmVudFNlcnZpY2UsIGFuZ3VsYXJFZGl0b3Jjb25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRNb25hY28ob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaGFzTW9kZWwgPSAhIW9wdGlvbnMubW9kZWw7XG5cbiAgICBpZiAoaGFzTW9kZWwpIHtcbiAgICAgIG9wdGlvbnMubW9kZWwgPSBtb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKG9wdGlvbnMubW9kZWwudmFsdWUsIG9wdGlvbnMubW9kZWwubGFuZ3VhZ2UsIG9wdGlvbnMubW9kZWwudXJpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9lZGl0b3IgPSBtb25hY28uZWRpdG9yLmNyZWF0ZSh0aGlzLl9lZGl0b3JDb21wb25lbnQubmF0aXZlRWxlbWVudCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWhhc01vZGVsKSB7XG4gICAgICB0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIG1vbmFjbyBlZGl0b3IgLT4gb3V0c2lkZSBjb21wb25lbnRcbiAgICB0aGlzLl9lZGl0b3Iub25EaWRDaGFuZ2VNb2RlbENvbnRlbnQoKGU6IGFueSkgPT4gdGhpcy5vbkNoYW5nZU1vZGVsQ29udGVudEhhbmRsZXIoZSkpO1xuXG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkQmx1ckVkaXRvclRleHQoKGU6IGFueSkgPT4gdGhpcy5vbkJsdXJFZGl0b3JUZXh0SGFuZGxlcihlKSk7XG5cbiAgICB0aGlzLl9lZGl0b3Iub25EaWRMYXlvdXRDaGFuZ2UoKGU6IGFueSkgPT4gdGhpcy5vbkxheW91dENoYW5nZUhhbmRsZXIoZSkpO1xuXG4gICAgLy8gcmVmcmVzaCBsYXlvdXQgb24gcmVzaXplIGV2ZW50LlxuICAgIC8vIGlmICh0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24pIHtcbiAgICAvLyAgIHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIC8vIH1cbiAgICAvLyB0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2VkaXRvci5sYXlvdXQoKSk7XG4gICAgdGhpcy5lZGl0b3JFdmVudFNlcnZpY2UuZmlyZUV2ZW50KHtcbiAgICAgIGV2ZW50TmFtZTogQ09ERV9FRElUT1JfRVZFTlRTLm9uSW5pdCxcbiAgICAgIHRhcmdldDogdGhpcyxcbiAgICAgIGVkaXRvcjogdGhpcy5fZWRpdG9yXG4gICAgfSk7XG5cbiAgfVxuXG4gIG9uQ2hhbmdlTW9kZWxDb250ZW50SGFuZGxlcihlKSB7XG4gICAgY29uc3QgX3ZhbHVlID0gdGhpcy5fZWRpdG9yLmdldFZhbHVlKCk7XG5cbiAgICAvLyBtb25hY28gZWRpdG9yIC0+IG91dHNpZGUgY29tcG9uZW50XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0pUYW5nbWluZy90bS9pc3N1ZXMvNCBuZ1pvbmXDqMKvwqbDqMKnwqNcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMudmFsdWUgPSBfdmFsdWUpOyAvLyB2YWx1ZSBpcyBub3QgcHJvcGFnYXRlZCB0byBwYXJlbnQgd2hlbiBleGVjdXRpbmcgb3V0c2lkZSB6b25lLlxuICB9XG5cbiAgb25CbHVyRWRpdG9yVGV4dEhhbmRsZXIoZSkge1xuXG4gICAgdGhpcy5vbkNvbnRyb2xUb3VjaGVkKCk7XG4gIH1cblxuICBvbkxheW91dENoYW5nZUhhbmRsZXIoZSkge1xuICAgIGNvbnNvbGUubG9nKCdMYXlvdXQgY2hhbmdlZDpcXG4nICsgZSk7XG4gIH1cblxuICAvLyBnZXQgYWNjZXNzb3JcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgLy8gc2V0IGFjY2Vzc29yIGluY2x1ZGluZyBjYWxsIHRoZSBvbmNoYW5nZSBjYWxsYmFja1xuICBzZXQgdmFsdWUodjogYW55KSB7XG4gICAgaWYgKHYgIT09IHRoaXMudmFsdWUpIHsvLyDDpsKzwqjDpsKEwo/DqMK/wpnDp8Knwo3DpcKGwpnDpsKzwpXDr8K8wozDpcKAwrzDpcK+wpfDpcKtwqbDpMK5wqBcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ29udHJvbFZhbHVlQ2hhbmdlKHRoaXMudmFsdWUpOyAvLyDDpcKcwqjDpcKxwp7DpsKAwqfDpMK/wq7DqcKlwrDDpcKZwqjDqcKHwozDqMKwwoPDp8KUwqhvbkNvbnRyb2xWYWx1ZUNoYW5nZcOmwpbCucOmwrPClVxuICB9XG5cbiAgbG9jYWxFZGl0b3IoKSB7Ly8gRGVtbzogb3V0c2lkZSBjb21wb25lbnQgLT4gbW9uYWNvIGVkaXRvclxuICAgIHRoaXMud3JpdGVWYWx1ZSgndGVzdCcpO1xuICB9XG5cbiAgLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2OjMuMiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29cblxuICAvLyBvdXRzaWRlIGNvbXBvbmVudCAtPiBtb25hY28gZWRpdG9yXG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuXG4gICAgLy8gRml4IGZvciB2YWx1ZSBjaGFuZ2Ugd2hpbGUgZGlzcG9zZSBpbiBwcm9jZXNzLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2VkaXRvciAvKiYmICF0aGlzLm9wdGlvbnMubW9kZWwqLykge1xuICAgICAgICB0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIndyaXRlIHRvIHRoZSBlZGl0b3I6XCIgKyB0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ29udHJvbFZhbHVlQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vbkNvbnRyb2xUb3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvcsOmwo/CkMOkwr7Cm8OnwprChMOkwrrCi8OkwrvCtsOlwpvCnsOowrDCg1xuICBvbkNvbnRyb2xWYWx1ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yw6bCj8KQw6TCvsKbw6fCmsKEw6TCusKLw6TCu8K2w6XCm8Kew6jCsMKDXG4gIG9uQ29udHJvbFRvdWNoZWQgPSAoKSA9PiB7XG4gIH1cblxufVxuIiwiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcsIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyLW1vbmFjby1lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJNb25hY29FZGl0b3JNb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoY29uZmlnOiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFuZ3VsYXJNb25hY29FZGl0b3JNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHLCB1c2VWYWx1ZTogY29uZmlnIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXSwibmFtZXMiOlsiSW5qZWN0aW9uVG9rZW4iLCJhc3NpZ24iLCJJbmplY3RhYmxlIiwiRXZlbnRFbWl0dGVyIiwicGljayIsIlZpZXdDaGlsZCIsIk91dHB1dCIsIklucHV0IiwiTkdfVkFMVUVfQUNDRVNTT1IiLCJmb3J3YXJkUmVmIiwidHNsaWJfMS5fX2V4dGVuZHMiLCJDb21wb25lbnQiLCJOZ1pvbmUiLCJJbmplY3QiLCJOZ01vZHVsZSIsIkNvbW1vbk1vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUlBLHlCQUFhLDRCQUE0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 |
@@ -1,2 +0,2 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("lodash"),require("@angular/forms"),require("@angular/common")):"function"==typeof define&&define.amd?define("angular-monaco-editor",["exports","@angular/core","lodash","@angular/forms","@angular/common"],e):e(t["angular-monaco-editor"]={},t.ng.core,null,t.ng.forms,t.ng.common)}(this,function(t,i,r,e,o){"use strict";var n,a=new i.InjectionToken("ANGULAR_MONACO_EDITOR_CONFIG"),s={onInit:"onInit"},u=function(){function t(){this.eventNames=Object.keys(s),this._events={}}return t.prototype.addEvent=function(t){r.assign(this._events,t)},t.prototype.fireEvent=function(t){this._events[t.eventName].emit(t)},t.decorators=[{type:i.Injectable}],t}(),d=!1,c={provide:e.NG_VALUE_ACCESSOR,useExisting:i.forwardRef(function(){return l}),multi:!0},l=function(){function t(t,e,o){this.zone=t,this.config=e,this.codeEditorEventService=o,this._value="",this.onControlValueChange=function(t){},this.onControlTouched=function(){};var n=this;o.eventNames.forEach(function(t){n[t]=new i.EventEmitter;var e=r.pick(n,t);o.addEvent(e)})}return Object.defineProperty(t.prototype,"options",{get:function(){return this._options},set:function(t){this._options=Object.assign({},this.config.defaultOptions,t),this._editor&&(this._editor.dispose(),this.initMonaco(t))},enumerable:!0,configurable:!0}),t.prototype.ngAfterViewInit=function(){var i=this;d?n.then(function(){i.initMonaco(i.options)}):(d=!0,n=new Promise(function(t){var e=i.config.baseUrl||"/assets",o=function(){window.require.config({paths:{vs:e+"/monaco/vs"}}),window.require(["vs/editor/editor.main"],function(){"function"==typeof i.config.onMonacoLoad&&i.config.onMonacoLoad(),i.initMonaco(i.options),t()})};if(window.require)o();else{var n=document.createElement("script");n.type="text/javascript",n.src=e+"/monaco/vs/loader.js",n.addEventListener("load",o),document.body.appendChild(n)}}))},t.prototype.ngOnDestroy=function(){this._editor&&(this._editor.dispose(),this._editor=undefined)},t.prototype.initMonaco=function(t){var e=this;console.log("Init the custom monaco code editor"),this._editor=monaco.editor.create(this._editorComponent.nativeElement,t),this._editor.setValue(this._value),this._editor.onDidChangeModelContent(function(t){return e.onChangeModelContentHandler(t)}),this._editor.onDidBlurEditorText(function(t){return e.onBlurEditorTextHandler(t)}),this._editor.onDidLayoutChange(function(t){return e.onLayoutChangeHandler(t)}),this.codeEditorEventService.fireEvent({eventName:s.onInit,target:this,editor:this._editor})},t.prototype.onChangeModelContentHandler=function(t){var e=this,o=this._editor.getValue();this.zone.run(function(){return e.value=o})},t.prototype.onBlurEditorTextHandler=function(t){this.onControlTouched()},t.prototype.onLayoutChangeHandler=function(t){console.log("Layout changed:\n"+t)},Object.defineProperty(t.prototype,"value",{get:function(){return this._value},set:function(t){t!==this.value&&(this._value=t),this.onControlValueChange(this.value)},enumerable:!0,configurable:!0}),t.prototype.localEditor=function(){this.writeValue("test")},t.prototype.writeValue=function(t){var e=this;this.value=t||"",setTimeout(function(){e._editor&&e._editor.setValue(e._value)})},t.prototype.registerOnChange=function(t){this.onControlValueChange=t},t.prototype.registerOnTouched=function(t){this.onControlTouched=t},t.decorators=[{type:i.Component,args:[{selector:"angular-monaco-editor",template:'<div class="editor" #codeEditor></div>',styles:[":host{display:block;min-height:200px}.editor{width:100%;height:98%}"],providers:[c,u]}]}],t.ctorParameters=function(){return[{type:i.NgZone},{type:undefined,decorators:[{type:i.Inject,args:[a]}]},{type:u}]},t.propDecorators={_editorComponent:[{type:i.ViewChild,args:["codeEditor"]}],onInit:[{type:i.Output}],options:[{type:i.Input,args:["options"]}]},t}(),p=function(){function e(){}return e.forRoot=function(t){return void 0===t&&(t={}),{ngModule:e,providers:[{provide:a,useValue:t}]}},e.decorators=[{type:i.NgModule,args:[{imports:[o.CommonModule],declarations:[l],exports:[l],providers:[]}]}],e}();t.AngularMonacoEditorModule=p,t.ANGULAR_MONACO_EDITOR_CONFIG=a,t.ɵb=l,t.ɵa=c,t.ɵc=u,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("lodash"),require("@angular/forms"),require("@angular/common")):"function"==typeof define&&define.amd?define("angular-monaco-editor",["exports","@angular/core","lodash","@angular/forms","@angular/common"],e):e(t["angular-monaco-editor"]={},t.ng.core,null,t.ng.forms,t.ng.common)}(this,function(t,r,i,e,o){"use strict";var a=new r.InjectionToken("ANGULAR_MONACO_EDITOR_CONFIG"),s=function(t,e){return(s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])})(t,e)};var n,u={onInit:"onInit"},c=function(){function t(){this.eventNames=Object.keys(u),this._events={}}return t.prototype.addEvent=function(t){i.assign(this._events,t)},t.prototype.fireEvent=function(t){this._events[t.eventName].emit(t)},t.decorators=[{type:r.Injectable}],t}(),d=!1,l=function(){function t(o,t){this.codeEditorEventService=o,this.config=t;var n=this;o.eventNames.forEach(function(t){n[t]=new r.EventEmitter;var e=i.pick(n,t);o.addEvent(e)})}return Object.defineProperty(t.prototype,"options",{get:function(){return this._options},set:function(t){this._options=Object.assign({},this.config.defaultOptions,t),this._editor&&(this._editor.dispose(),this.initMonaco(t))},enumerable:!0,configurable:!0}),t.prototype.ngAfterViewInit=function(){var i=this;d?n.then(function(){i.initMonaco(i.options)}):(d=!0,n=new Promise(function(t){var e=i.config.baseUrl||"/assets",o=function(){window.require.config({paths:{vs:e+"/monaco/vs"}}),window.require(["vs/editor/editor.main"],function(){"function"==typeof i.config.onMonacoLoad&&i.config.onMonacoLoad(),i.initMonaco(i.options),t()})};if(window.require)o();else{var n=document.createElement("script");n.type="text/javascript",n.src=e+"/monaco/vs/loader.js",n.addEventListener("load",o),document.body.appendChild(n)}}))},t.prototype.ngOnDestroy=function(){this._editor&&(this._editor.dispose(),this._editor=undefined)},t.propDecorators={_editorComponent:[{type:r.ViewChild,args:["codeEditor"]}],onInit:[{type:r.Output}],options:[{type:r.Input,args:["options"]}]},t}(),p={provide:e.NG_VALUE_ACCESSOR,useExisting:r.forwardRef(function(){return f}),multi:!0},f=function(i){function t(t,e,o){var n=i.call(this,e,o)||this;return n.zone=t,n.editorEventService=e,n.angularEditorconfig=o,n._value="",n.onControlValueChange=function(t){},n.onControlTouched=function(){},n}return function n(t,e){function o(){this.constructor=t}s(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)}(t,i),Object.defineProperty(t.prototype,"model",{set:function(t){this.options.model=t,this._editor&&(this._editor.dispose(),this.initMonaco(this.options))},enumerable:!0,configurable:!0}),t.prototype.initMonaco=function(t){var e=this,o=!!t.model;o&&(t.model=monaco.editor.createModel(t.model.value,t.model.language,t.model.uri)),this._editor=monaco.editor.create(this._editorComponent.nativeElement,t),o||this._editor.setValue(this._value),this._editor.onDidChangeModelContent(function(t){return e.onChangeModelContentHandler(t)}),this._editor.onDidBlurEditorText(function(t){return e.onBlurEditorTextHandler(t)}),this._editor.onDidLayoutChange(function(t){return e.onLayoutChangeHandler(t)}),this.editorEventService.fireEvent({eventName:u.onInit,target:this,editor:this._editor})},t.prototype.onChangeModelContentHandler=function(t){var e=this,o=this._editor.getValue();this.zone.run(function(){return e.value=o})},t.prototype.onBlurEditorTextHandler=function(t){this.onControlTouched()},t.prototype.onLayoutChangeHandler=function(t){console.log("Layout changed:\n"+t)},Object.defineProperty(t.prototype,"value",{get:function(){return this._value},set:function(t){t!==this.value&&(this._value=t),this.onControlValueChange(this.value)},enumerable:!0,configurable:!0}),t.prototype.localEditor=function(){this.writeValue("test")},t.prototype.writeValue=function(t){var e=this;this.value=t||"",setTimeout(function(){e._editor&&e._editor.setValue(e._value)})},t.prototype.registerOnChange=function(t){this.onControlValueChange=t},t.prototype.registerOnTouched=function(t){this.onControlTouched=t},t.decorators=[{type:r.Component,args:[{selector:"angular-monaco-editor",template:'<div class="editor" #codeEditor></div>',styles:[":host{display:block;min-height:200px}.editor{width:100%;height:100%}"],providers:[p,c]}]}],t.ctorParameters=function(){return[{type:r.NgZone},{type:c},{type:undefined,decorators:[{type:r.Inject,args:[a]}]}]},t.propDecorators={model:[{type:r.Input,args:["model"]}]},t}(l),h=function(){function e(){}return e.forRoot=function(t){return void 0===t&&(t={}),{ngModule:e,providers:[{provide:a,useValue:t}]}},e.decorators=[{type:r.NgModule,args:[{imports:[o.CommonModule],declarations:[f],exports:[f],providers:[]}]}],e}();t.AngularMonacoEditorModule=h,t.ANGULAR_MONACO_EDITOR_CONFIG=a,t.ɵb=f,t.ɵa=p,t.ɵc=l,t.ɵd=c,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=angular-monaco-editor.umd.min.js.map |
@@ -10,4 +10,5 @@ /** | ||
export { AngularMonacoEditorComponent as ɵb, CODE_EDITOR_INPUT_VALUE_ACCESSOR as ɵa } from './lib/editor/angular-monaco-editor/angular-monaco-editor.component'; | ||
export { CodeEditorEventService as ɵc } from './lib/editor/services/code-editor.event.service'; | ||
export { BaseMonacoEditor as ɵc } from './lib/editor/base-monaco-editor'; | ||
export { CodeEditorEventService as ɵd } from './lib/editor/services/code-editor.event.service'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsiYW5ndWxhci1tb25hY28tZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSx3RUFBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLDRCQUE0QixJQUFJLEVBQUUsRUFBQyxnQ0FBZ0MsSUFBSSxFQUFFLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUM3SixPQUFPLEVBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFDLE1BQU0saURBQWlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7QW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCBhcyDJtWIsQ09ERV9FRElUT1JfSU5QVVRfVkFMVUVfQUNDRVNTT1IgYXMgybVhfSBmcm9tICcuL2xpYi9lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0IHtDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlIGFzIMm1Y30gZnJvbSAnLi9saWIvZWRpdG9yL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UnOyJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsiYW5ndWxhci1tb25hY28tZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSx3RUFBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLDRCQUE0QixJQUFJLEVBQUUsRUFBQyxnQ0FBZ0MsSUFBSSxFQUFFLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUM3SixPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFDLHNCQUFzQixJQUFJLEVBQUUsRUFBQyxNQUFNLGlEQUFpRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0FuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnQgYXMgybViLENPREVfRURJVE9SX0lOUFVUX1ZBTFVFX0FDQ0VTU09SIGFzIMm1YX0gZnJvbSAnLi9saWIvZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9hbmd1bGFyLW1vbmFjby1lZGl0b3IuY29tcG9uZW50JztcbmV4cG9ydCB7QmFzZU1vbmFjb0VkaXRvciBhcyDJtWN9IGZyb20gJy4vbGliL2VkaXRvci9iYXNlLW1vbmFjby1lZGl0b3InO1xuZXhwb3J0IHtDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlIGFzIMm1ZH0gZnJvbSAnLi9saWIvZWRpdG9yL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UnOyJdfQ== |
@@ -5,11 +5,9 @@ /** | ||
*/ | ||
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core'; | ||
import { Component, Input } from '@angular/core'; | ||
import { forwardRef, Inject, NgZone } from '@angular/core'; | ||
import { NG_VALUE_ACCESSOR } from '@angular/forms'; | ||
import { pick } from 'lodash'; | ||
import { ANGULAR_MONACO_EDITOR_CONFIG } from '../config'; | ||
import { CodeEditorEventService } from '../services/code-editor.event.service'; | ||
import { CODE_EDITOR_EVENTS } from '../constants/events'; | ||
let /** @type {?} */ loadedMonaco = false; | ||
let /** @type {?} */ loadPromise; | ||
import { BaseMonacoEditor } from '../base-monaco-editor'; | ||
// 自定义输入控件:1.封装ControlValueAccessor | ||
@@ -25,12 +23,13 @@ // https://code-examples.net/zh-CN/q/2154761 | ||
// 自定义输入控件:3.1 implements ControlValueAccessor | ||
export class AngularMonacoEditorComponent { | ||
export class AngularMonacoEditorComponent extends BaseMonacoEditor { | ||
/** | ||
* @param {?} zone | ||
* @param {?} config | ||
* @param {?} codeEditorEventService | ||
* @param {?} editorEventService | ||
* @param {?} angularEditorconfig | ||
*/ | ||
constructor(zone, config, codeEditorEventService) { | ||
constructor(zone, editorEventService, angularEditorconfig) { | ||
super(editorEventService, angularEditorconfig); | ||
this.zone = zone; | ||
this.config = config; | ||
this.codeEditorEventService = codeEditorEventService; | ||
this.editorEventService = editorEventService; | ||
this.angularEditorconfig = angularEditorconfig; | ||
this._value = ''; | ||
@@ -43,85 +42,15 @@ // ControlValueAccessor提供的事件回调 | ||
}; | ||
// 初始化自定义事件 | ||
const /** @type {?} */ self = this; | ||
codeEditorEventService.eventNames.forEach((name) => { | ||
// 创建自定义事件,此处作用等效于: @Output() onInit = new EventEmitter<any>() | ||
self[name] = new EventEmitter(); | ||
const /** @type {?} */ eventPair = pick(self, name); | ||
codeEditorEventService.addEvent(eventPair); | ||
}); | ||
} | ||
/** | ||
* @param {?} options | ||
* @param {?} model | ||
* @return {?} | ||
*/ | ||
set options(options) { | ||
// 默认options(this.config.defaultOptions) + 自定义options(options) | ||
this._options = Object.assign({}, this.config.defaultOptions, options); | ||
set model(model) { | ||
this.options.model = model; | ||
if (this._editor) { | ||
this._editor.dispose(); | ||
this.initMonaco(options); | ||
this.initMonaco(this.options); | ||
} | ||
} | ||
/** | ||
* @return {?} | ||
*/ | ||
get options() { | ||
return this._options; | ||
} | ||
/** | ||
* @return {?} | ||
*/ | ||
ngAfterViewInit() { | ||
if (loadedMonaco) { | ||
// Wait until monaco editor is available | ||
loadPromise.then(() => { | ||
this.initMonaco(this.options); | ||
}); | ||
} | ||
else { | ||
loadedMonaco = true; | ||
loadPromise = new Promise((resolve) => { | ||
const /** @type {?} */ baseUrl = this.config.baseUrl || '/assets'; | ||
// if (typeof((<any>window).monaco) === 'object') { | ||
// resolve(); | ||
// return; | ||
// } | ||
const /** @type {?} */ onGotAmdLoader = () => { | ||
// Load monaco | ||
(/** @type {?} */ (window)).require.config({ paths: { 'vs': `${baseUrl}/monaco/vs` } }); | ||
(/** @type {?} */ (window)).require(['vs/editor/editor.main'], () => { | ||
if (typeof this.config.onMonacoLoad === 'function') { | ||
this.config.onMonacoLoad(); | ||
} | ||
this.initMonaco(this.options); | ||
resolve(); | ||
}); | ||
}; | ||
// Load AMD loader if necessary | ||
if (!(/** @type {?} */ (window)).require) { | ||
const /** @type {?} */ loaderScript = document.createElement('script'); | ||
loaderScript.type = 'text/javascript'; | ||
loaderScript.src = `${baseUrl}/monaco/vs/loader.js`; | ||
loaderScript.addEventListener('load', onGotAmdLoader); | ||
document.body.appendChild(loaderScript); | ||
} | ||
else { | ||
onGotAmdLoader(); | ||
} | ||
}); | ||
} | ||
} | ||
/** | ||
* @return {?} | ||
*/ | ||
ngOnDestroy() { | ||
// if (this._windowResizeSubscription) { | ||
// this._windowResizeSubscription.unsubscribe(); | ||
// } | ||
if (this._editor) { | ||
this._editor.dispose(); | ||
this._editor = undefined; | ||
} | ||
} | ||
/** | ||
* @param {?} options | ||
@@ -131,8 +60,6 @@ * @return {?} | ||
initMonaco(options) { | ||
console.log('Init the custom monaco code editor'); | ||
// const hasModel = !!options.model; | ||
const /** @type {?} */ hasModel = false; | ||
// if (hasModel) { | ||
// options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri); | ||
// } | ||
const /** @type {?} */ hasModel = !!options.model; | ||
if (hasModel) { | ||
options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri); | ||
} | ||
this._editor = monaco.editor.create(this._editorComponent.nativeElement, options); | ||
@@ -151,4 +78,3 @@ if (!hasModel) { | ||
// this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor.layout()); | ||
// this.onInit.emit(this._editor); | ||
this.codeEditorEventService.fireEvent({ | ||
this.editorEventService.fireEvent({ | ||
eventName: CODE_EDITOR_EVENTS.onInit, | ||
@@ -168,3 +94,2 @@ target: this, | ||
this.zone.run(() => this.value = _value); // value is not propagated to parent when executing outside zone. | ||
// console.log("write from the monaco:" + this._value); | ||
} | ||
@@ -240,5 +165,6 @@ /** | ||
{ type: Component, args: [{ | ||
// tslint:disable-next-line:component-selector | ||
selector: 'angular-monaco-editor', | ||
template: `<div class="editor" #codeEditor></div>`, | ||
styles: [`:host{display:block;min-height:200px}.editor{width:100%;height:98%}`], | ||
styles: [`:host{display:block;min-height:200px}.editor{width:100%;height:100%}`], | ||
// 自定义输入控件:2.引入依赖服务ControlValueAccessor | ||
@@ -251,9 +177,7 @@ providers: [CODE_EDITOR_INPUT_VALUE_ACCESSOR, CodeEditorEventService] | ||
{ type: NgZone, }, | ||
{ type: CodeEditorEventService, }, | ||
{ type: undefined, decorators: [{ type: Inject, args: [ANGULAR_MONACO_EDITOR_CONFIG,] },] }, | ||
{ type: CodeEditorEventService, }, | ||
]; | ||
AngularMonacoEditorComponent.propDecorators = { | ||
"_editorComponent": [{ type: ViewChild, args: ['codeEditor',] },], | ||
"onInit": [{ type: Output },], | ||
"options": [{ type: Input, args: ['options',] },], | ||
"model": [{ type: Input, args: ['model',] },], | ||
}; | ||
@@ -271,12 +195,4 @@ function AngularMonacoEditorComponent_tsickle_Closure_declarations() { | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype._editor; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype._options; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype._value; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype._editorComponent; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype.onInit; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype.onControlValueChange; | ||
@@ -288,7 +204,7 @@ /** @type {?} */ | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype.config; | ||
AngularMonacoEditorComponent.prototype.editorEventService; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype.codeEditorEventService; | ||
AngularMonacoEditorComponent.prototype.angularEditorconfig; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE9BQU8sRUFBRSw0QkFBNEIsRUFBNkIsTUFBTSxXQUFXLENBQUM7QUFDcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJekQscUJBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztBQUN6QixxQkFBSSxXQUEwQixDQUFDOzs7QUFJL0IsTUFBTSxDQUFDLHVCQUFNLGdDQUFnQyxHQUFROztJQUVuRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNEJBQTRCLENBQUM7SUFDM0QsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUY7O0FBV0EsTUFBTTs7Ozs7O0lBa0NKLFlBQW9CLElBQVksRUFBZ0QsUUFBMkMsc0JBQThDO1FBQXJKLFNBQUksR0FBSixJQUFJLENBQVE7UUFBZ0QsV0FBTSxHQUFOLE1BQU07UUFBcUMsMkJBQXNCLEdB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QUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7O2FBRXBDO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7Ozs7O0lBR0QsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0tBQ2hDOzs7OztJQUdELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztLQUM1Qjs7O1lBak5GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxRQUFRLEVBQUUsd0NBQXdDO2dCQUNsRCxNQUFNLEVBQUUsQ0FBQyxxRUFBcUUsQ0FBQzs7Z0JBRS9FLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLHNCQUFzQixDQUFDO2FBQ3RFOzs7O1lBN0I0QixNQUFNOzRDQW9FRSxNQUFNLFNBQUMsNEJBQTRCO1lBOUQvRCxzQkFBc0I7OztpQ0FtQzVCLFNBQVMsU0FBQyxZQUFZO3VCQUV0QixNQUFNO3dCQUVOLEtBQUssU0FBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIEluamVjdCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IHBpY2sgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHLCBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IENvZGVFZGl0b3JFdmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb2RlLWVkaXRvci5ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENPREVfRURJVE9SX0VWRU5UUyB9IGZyb20gJy4uL2NvbnN0YW50cy9ldmVudHMnO1xuXG5kZWNsYXJlIGNvbnN0IG1vbmFjbzogYW55O1xuXG5sZXQgbG9hZGVkTW9uYWNvID0gZmFsc2U7XG5sZXQgbG9hZFByb21pc2U6IFByb21pc2U8dm9pZD47XG5cbi8vIOiHquWumuS5iei+k+WFpeaOp+S7tjoxLuWwgeijhUNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4vLyBodHRwczovL2NvZGUtZXhhbXBsZXMubmV0L3poLUNOL3EvMjE1NDc2MVxuZXhwb3J0IGNvbnN0IENPREVfRURJVE9SX0lOUFVUX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIC8vIGh0dHBzOi8vYmxvZy5jc2RuLm5ldC93YW5nZGFuXzIwMTMvYXJ0aWNsZS9kZXRhaWxzLzgxMzE0OTU5XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FuZ3VsYXItbW9uYWNvLWVkaXRvcicsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImVkaXRvclwiICNjb2RlRWRpdG9yPjwvZGl2PmAsXG4gIHN0eWxlczogW2A6aG9zdHtkaXNwbGF5OmJsb2NrO21pbi1oZWlnaHQ6MjAwcHh9LmVkaXRvcnt3aWR0aDoxMDAlO2hlaWdodDo5OCV9YF0sXG4gIC8vIOiHquWumuS5iei+k+WFpeaOp+S7tjoyLuW8leWFpeS+nei1luacjeWKoUNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHByb3ZpZGVyczogW0NPREVfRURJVE9SX0lOUFVUX1ZBTFVFX0FDQ0VTU09SLCBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlXVxufSlcblxuLy8g6Ieq5a6a5LmJ6L6T5YWl5o6n5Lu2IDwtPiBNb25hY28gRWR0b3JcblxuLy8g6Ieq5a6a5LmJ6L6T5YWl5o6n5Lu2OjMuMSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG5leHBvcnQgY2xhc3MgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCBfZWRpdG9yOiBhbnk7XG4gIHByaXZhdGUgX29wdGlvbnM6IGFueTtcbiAgLy8gcHJvdGVjdGVkIF93aW5kb3dSZXNpemVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfdmFsdWUgPSAnJztcblxuICBAVmlld0NoaWxkKCdjb2RlRWRpdG9yJykgX2VkaXRvckNvbXBvbmVudDogRWxlbWVudFJlZjsgLy8g5Yqo5oCB5re75Yqg5Luj56CB57yW6L6R5ZmoXG5cbiAgQE91dHB1dCgpIG9uSW5pdDtcblxuICBASW5wdXQoJ29wdGlvbnMnKVxuICBzZXQgb3B0aW9ucyhvcHRpb25zOiBhbnkpIHtcbiAgICAvLyDpu5jorqRvcHRpb25zKHRoaXMuY29uZmlnLmRlZmF1bHRPcHRpb25zKSArIOiHquWumuS5iW9wdGlvbnMob3B0aW9ucylcbiAgICB0aGlzLl9vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWcuZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpO1xuICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmluaXRNb25hY28ob3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGdldCBvcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICAvLyBASW5wdXQoJ21vZGVsJylcbiAgLy8gc2V0IG1vZGVsKG1vZGVsOiBBbmd1bGFyRWRpdG9yTW9kZWwpIHtcbiAgLy8gICB0aGlzLm9wdGlvbnMubW9kZWwgPSBtb2RlbDtcbiAgLy8gICBpZiAodGhpcy5fZWRpdG9yKSB7XG4gIC8vICAgICB0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xuICAvLyAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMub3B0aW9ucyk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLy8g5rOo5YWlQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZ++8jOWcqOWIm+W7ukVkaXRvcuWunuS+i+aXtuiuvue9rmNvbmZpZ1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSwgQEluamVjdChBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZywgcHJpdmF0ZSBjb2RlRWRpdG9yRXZlbnRTZXJ2aWNlOiBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlKSB7XG5cbiAgICAvLyDliJ3lp4vljJboh6rlrprkuYnkuovku7ZcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb2RlRWRpdG9yRXZlbnRTZXJ2aWNlLmV2ZW50TmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgLy8g5Yib5bu66Ieq5a6a5LmJ5LqL5Lu277yM5q2k5aSE5L2c55So562J5pWI5LqOOiBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCkgXG4gICAgICBzZWxmW25hbWVdID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgICBjb25zdCBldmVudFBhaXIgPSBwaWNrKHNlbGYsIG5hbWUpO1xuICAgICAgY29kZUVkaXRvckV2ZW50U2VydmljZS5hZGRFdmVudChldmVudFBhaXIpO1xuICAgIH0pO1xuXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKGxvYWRlZE1vbmFjbykge1xuICAgICAgLy8gV2FpdCB1bnRpbCBtb25hY28gZWRpdG9yIGlzIGF2YWlsYWJsZVxuICAgICAgbG9hZFByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLm9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvYWRlZE1vbmFjbyA9IHRydWU7XG4gICAgICBsb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnLmJhc2VVcmwgfHwgJy9hc3NldHMnO1xuICAgICAgICAvLyBpZiAodHlwZW9mKCg8YW55PndpbmRvdykubW9uYWNvKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gICByZXNvbHZlKCk7XG4gICAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgICAvLyB9XG4gICAgICAgIGNvbnN0IG9uR290QW1kTG9hZGVyOiBhbnkgPSAoKSA9PiB7XG4gICAgICAgICAgLy8gTG9hZCBtb25hY29cbiAgICAgICAgICAoPGFueT53aW5kb3cpLnJlcXVpcmUuY29uZmlnKHsgcGF0aHM6IHsgJ3ZzJzogYCR7YmFzZVVybH0vbW9uYWNvL3ZzYCB9IH0pO1xuICAgICAgICAgICg8YW55PndpbmRvdykucmVxdWlyZShbJ3ZzL2VkaXRvci9lZGl0b3IubWFpbiddLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLm9uTW9uYWNvTG9hZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5vbk1vbmFjb0xvYWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIExvYWQgQU1EIGxvYWRlciBpZiBuZWNlc3NhcnlcbiAgICAgICAgaWYgKCEoPGFueT53aW5kb3cpLnJlcXVpcmUpIHtcbiAgICAgICAgICBjb25zdCBsb2FkZXJTY3JpcHQ6IEhUTUxTY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgICAgbG9hZGVyU2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgICBsb2FkZXJTY3JpcHQuc3JjID0gYCR7YmFzZVVybH0vbW9uYWNvL3ZzL2xvYWRlci5qc2A7XG4gICAgICAgICAgbG9hZGVyU2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkdvdEFtZExvYWRlcik7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsb2FkZXJTY3JpcHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uR290QW1kTG9hZGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIGlmICh0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24pIHtcbiAgICAvLyAgIHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIC8vIH1cbiAgICBpZiAodGhpcy5fZWRpdG9yKSB7XG4gICAgICB0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fZWRpdG9yID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0TW9uYWNvKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdJbml0IHRoZSBjdXN0b20gbW9uYWNvIGNvZGUgZWRpdG9yJyk7XG5cbiAgICAvLyBjb25zdCBoYXNNb2RlbCA9ICEhb3B0aW9ucy5tb2RlbDtcbiAgICBjb25zdCBoYXNNb2RlbCA9IGZhbHNlO1xuXG4gICAgLy8gaWYgKGhhc01vZGVsKSB7XG4gICAgLy8gICBvcHRpb25zLm1vZGVsID0gbW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbChvcHRpb25zLm1vZGVsLnZhbHVlLCBvcHRpb25zLm1vZGVsLmxhbmd1YWdlLCBvcHRpb25zLm1vZGVsLnVyaSk7XG4gICAgLy8gfVxuXG4gICAgdGhpcy5fZWRpdG9yID0gbW9uYWNvLmVkaXRvci5jcmVhdGUodGhpcy5fZWRpdG9yQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFoYXNNb2RlbCkge1xuICAgICAgdGhpcy5fZWRpdG9yLnNldFZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBtb25hY28gZWRpdG9yIC0+IG91dHNpZGUgY29tcG9uZW50XG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkQ2hhbmdlTW9kZWxDb250ZW50KChlOiBhbnkpID0+IHRoaXMub25DaGFuZ2VNb2RlbENvbnRlbnRIYW5kbGVyKGUpKTtcblxuICAgIHRoaXMuX2VkaXRvci5vbkRpZEJsdXJFZGl0b3JUZXh0KChlOiBhbnkpID0+IHRoaXMub25CbHVyRWRpdG9yVGV4dEhhbmRsZXIoZSkpO1xuXG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkTGF5b3V0Q2hhbmdlKChlOiBhbnkpID0+IHRoaXMub25MYXlvdXRDaGFuZ2VIYW5kbGVyKGUpKTtcblxuICAgIC8vIHJlZnJlc2ggbGF5b3V0IG9uIHJlc2l6ZSBldmVudC5cbiAgICAvLyBpZiAodGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uKSB7XG4gICAgLy8gICB0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9lZGl0b3IubGF5b3V0KCkpO1xuICAgIC8vIHRoaXMub25Jbml0LmVtaXQodGhpcy5fZWRpdG9yKTtcbiAgICB0aGlzLmNvZGVFZGl0b3JFdmVudFNlcnZpY2UuZmlyZUV2ZW50KHtcbiAgICAgIGV2ZW50TmFtZTogQ09ERV9FRElUT1JfRVZFTlRTLm9uSW5pdCxcbiAgICAgIHRhcmdldDogdGhpcyxcbiAgICAgIGVkaXRvcjogdGhpcy5fZWRpdG9yXG4gICAgfSk7XG5cbiAgfVxuXG4gIG9uQ2hhbmdlTW9kZWxDb250ZW50SGFuZGxlcihlKSB7XG4gICAgY29uc3QgX3ZhbHVlID0gdGhpcy5fZWRpdG9yLmdldFZhbHVlKCk7XG5cbiAgICAvLyBtb25hY28gZWRpdG9yIC0+IG91dHNpZGUgY29tcG9uZW50XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0pUYW5nbWluZy90bS9pc3N1ZXMvNCBuZ1pvbmXor6bop6NcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMudmFsdWUgPSBfdmFsdWUpOyAvLyB2YWx1ZSBpcyBub3QgcHJvcGFnYXRlZCB0byBwYXJlbnQgd2hlbiBleGVjdXRpbmcgb3V0c2lkZSB6b25lLlxuICAgIC8vIGNvbnNvbGUubG9nKFwid3JpdGUgZnJvbSB0aGUgbW9uYWNvOlwiICsgdGhpcy5fdmFsdWUpO1xuICB9XG5cbiAgb25CbHVyRWRpdG9yVGV4dEhhbmRsZXIoZSkge1xuXG4gICAgdGhpcy5vbkNvbnRyb2xUb3VjaGVkKCk7XG4gIH1cblxuICBvbkxheW91dENoYW5nZUhhbmRsZXIoZSkge1xuICAgIGNvbnNvbGUubG9nKCdMYXlvdXQgY2hhbmdlZDpcXG4nICsgZSk7XG4gIH1cblxuXG5cblxuICAvLyBnZXQgYWNjZXNzb3JcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgLy8gc2V0IGFjY2Vzc29yIGluY2x1ZGluZyBjYWxsIHRoZSBvbmNoYW5nZSBjYWxsYmFja1xuICBzZXQgdmFsdWUodjogYW55KSB7XG4gICAgaWYgKHYgIT09IHRoaXMudmFsdWUpIHsvLyDms6jmhI/ov5nnp43lhpnms5XvvIzlgLzlvpflrabkuaBcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ29udHJvbFZhbHVlQ2hhbmdlKHRoaXMudmFsdWUpOyAvLyDlnKjlsZ7mgKfkv67ppbDlmajph4zosIPnlKhvbkNvbnRyb2xWYWx1ZUNoYW5nZeaWueazlVxuICB9XG5cbiAgbG9jYWxFZGl0b3IoKSB7Ly8gRGVtbzogb3V0c2lkZSBjb21wb25lbnQgLT4gbW9uYWNvIGVkaXRvclxuICAgIHRoaXMud3JpdGVWYWx1ZSgndGVzdCcpO1xuICB9XG5cbiAgLy8g6Ieq5a6a5LmJ6L6T5YWl5o6n5Lu2OjMuMiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29cblxuICAvLyBvdXRzaWRlIGNvbXBvbmVudCAtPiBtb25hY28gZWRpdG9yXG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuXG4gICAgLy8gRml4IGZvciB2YWx1ZSBjaGFuZ2Ugd2hpbGUgZGlzcG9zZSBpbiBwcm9jZXNzLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2VkaXRvciAvKiYmICF0aGlzLm9wdGlvbnMubW9kZWwqLykge1xuICAgICAgICB0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIndyaXRlIHRvIHRoZSBlZGl0b3I6XCIgKyB0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ29udHJvbFZhbHVlQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vbkNvbnRyb2xUb3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvcuaPkOS+m+eahOS6i+S7tuWbnuiwg1xuICBvbkNvbnRyb2xWYWx1ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29y5o+Q5L6b55qE5LqL5Lu25Zue6LCDXG4gIG9uQ29udHJvbFRvdWNoZWQgPSAoKSA9PiB7XG4gIH1cblxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLDRCQUE0QixFQUE2QixNQUFNLFdBQVcsQ0FBQztBQUNwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBTXpELE1BQU0sQ0FBQyx1QkFBTSxnQ0FBZ0MsR0FBUTs7SUFFbkQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDRCQUE0QixDQUFDO0lBQzNELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGOztBQVlBLE1BQU0sbUNBQW9DLFNBQVEsZ0JBQWdCOzs7Ozs7SUFlaEUsWUFBb0IsSUFBWSxFQUFVLGtCQUEwQyxFQUFnRDtRQUNsSSxLQUFLLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUQ3QixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QjtRQUFnRCx3QkFBbUIsR0FBbkIsbUJBQW1CO3NCQUh0SSxF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QUFDLENBQUM7S0FDdkM7Ozs7SUFFRCxXQUFXOztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDekI7Ozs7O0lBT0QsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDOztRQUd6QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sMkJBQTJCLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7O2FBRXBDO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7Ozs7O0lBR0QsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0tBQ2hDOzs7OztJQUdELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztLQUM1Qjs7O1lBNUhGLFNBQVMsU0FBQzs7Z0JBRVQsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsUUFBUSxFQUFFLHdDQUF3QztnQkFDbEQsTUFBTSxFQUFFLENBQUMsc0VBQXNFLENBQUM7O2dCQUVoRixTQUFTLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxzQkFBc0IsQ0FBQzthQUN0RTs7OztZQTNCNEIsTUFBTTtZQUkxQixzQkFBc0I7NENBMkMwRCxNQUFNLFNBQUMsNEJBQTRCOzs7c0JBYnpILEtBQUssU0FBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgSW5qZWN0LCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRywgQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29kZS1lZGl0b3IuZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDT0RFX0VESVRPUl9FVkVOVFMgfSBmcm9tICcuLi9jb25zdGFudHMvZXZlbnRzJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JNb2RlbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEJhc2VNb25hY29FZGl0b3IgfSBmcm9tICcuLi9iYXNlLW1vbmFjby1lZGl0b3InO1xuXG5kZWNsYXJlIGNvbnN0IG1vbmFjbzogYW55O1xuXG4vLyDoh6rlrprkuYnovpPlhaXmjqfku7Y6MS7lsIHoo4VDb250cm9sVmFsdWVBY2Nlc3NvclxuLy8gaHR0cHM6Ly9jb2RlLWV4YW1wbGVzLm5ldC96aC1DTi9xLzIxNTQ3NjFcbmV4cG9ydCBjb25zdCBDT0RFX0VESVRPUl9JTlBVVF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAvLyBodHRwczovL2Jsb2cuY3Nkbi5uZXQvd2FuZ2Rhbl8yMDEzL2FydGljbGUvZGV0YWlscy84MTMxNDk1OVxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2FuZ3VsYXItbW9uYWNvLWVkaXRvcicsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImVkaXRvclwiICNjb2RlRWRpdG9yPjwvZGl2PmAsXG4gIHN0eWxlczogW2A6aG9zdHtkaXNwbGF5OmJsb2NrO21pbi1oZWlnaHQ6MjAwcHh9LmVkaXRvcnt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfWBdLFxuICAvLyDoh6rlrprkuYnovpPlhaXmjqfku7Y6Mi7lvJXlhaXkvp3otZbmnI3liqFDb250cm9sVmFsdWVBY2Nlc3NvclxuICBwcm92aWRlcnM6IFtDT0RFX0VESVRPUl9JTlBVVF9WQUxVRV9BQ0NFU1NPUiwgQ29kZUVkaXRvckV2ZW50U2VydmljZV1cbn0pXG5cbi8vIOiHquWumuS5iei+k+WFpeaOp+S7tiA8LT4gTW9uYWNvIEVkdG9yXG5cbi8vIOiHquWumuS5iei+k+WFpeaOp+S7tjozLjEgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvclxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlTW9uYWNvRWRpdG9yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIEBJbnB1dCgnbW9kZWwnKVxuICBzZXQgbW9kZWwobW9kZWw6IEFuZ3VsYXJFZGl0b3JNb2RlbCkge1xuICAgIHRoaXMub3B0aW9ucy5tb2RlbCA9IG1vZGVsO1xuICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmluaXRNb25hY28odGhpcy5vcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvLyBwcm90ZWN0ZWQgX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF92YWx1ZSA9ICcnO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBOZ1pvbmUsIHByaXZhdGUgZWRpdG9yRXZlbnRTZXJ2aWNlOiBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlLCBASW5qZWN0KEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcpIHByaXZhdGUgYW5ndWxhckVkaXRvcmNvbmZpZzogQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZykge1xuICAgIHN1cGVyKGVkaXRvckV2ZW50U2VydmljZSwgYW5ndWxhckVkaXRvcmNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdE1vbmFjbyhvcHRpb25zOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBoYXNNb2RlbCA9ICEhb3B0aW9ucy5tb2RlbDtcblxuICAgIGlmIChoYXNNb2RlbCkge1xuICAgICAgb3B0aW9ucy5tb2RlbCA9IG1vbmFjby5lZGl0b3IuY3JlYXRlTW9kZWwob3B0aW9ucy5tb2RlbC52YWx1ZSwgb3B0aW9ucy5tb2RlbC5sYW5ndWFnZSwgb3B0aW9ucy5tb2RlbC51cmkpO1xuICAgIH1cblxuICAgIHRoaXMuX2VkaXRvciA9IG1vbmFjby5lZGl0b3IuY3JlYXRlKHRoaXMuX2VkaXRvckNvbXBvbmVudC5uYXRpdmVFbGVtZW50LCBvcHRpb25zKTtcblxuICAgIGlmICghaGFzTW9kZWwpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5zZXRWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gbW9uYWNvIGVkaXRvciAtPiBvdXRzaWRlIGNvbXBvbmVudFxuICAgIHRoaXMuX2VkaXRvci5vbkRpZENoYW5nZU1vZGVsQ29udGVudCgoZTogYW55KSA9PiB0aGlzLm9uQ2hhbmdlTW9kZWxDb250ZW50SGFuZGxlcihlKSk7XG5cbiAgICB0aGlzLl9lZGl0b3Iub25EaWRCbHVyRWRpdG9yVGV4dCgoZTogYW55KSA9PiB0aGlzLm9uQmx1ckVkaXRvclRleHRIYW5kbGVyKGUpKTtcblxuICAgIHRoaXMuX2VkaXRvci5vbkRpZExheW91dENoYW5nZSgoZTogYW55KSA9PiB0aGlzLm9uTGF5b3V0Q2hhbmdlSGFuZGxlcihlKSk7XG5cbiAgICAvLyByZWZyZXNoIGxheW91dCBvbiByZXNpemUgZXZlbnQuXG4gICAgLy8gaWYgKHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbikge1xuICAgIC8vICAgdGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgLy8gfVxuICAgIC8vIHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZWRpdG9yLmxheW91dCgpKTtcbiAgICB0aGlzLmVkaXRvckV2ZW50U2VydmljZS5maXJlRXZlbnQoe1xuICAgICAgZXZlbnROYW1lOiBDT0RFX0VESVRPUl9FVkVOVFMub25Jbml0LFxuICAgICAgdGFyZ2V0OiB0aGlzLFxuICAgICAgZWRpdG9yOiB0aGlzLl9lZGl0b3JcbiAgICB9KTtcblxuICB9XG5cbiAgb25DaGFuZ2VNb2RlbENvbnRlbnRIYW5kbGVyKGUpIHtcbiAgICBjb25zdCBfdmFsdWUgPSB0aGlzLl9lZGl0b3IuZ2V0VmFsdWUoKTtcblxuICAgIC8vIG1vbmFjbyBlZGl0b3IgLT4gb3V0c2lkZSBjb21wb25lbnRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vSlRhbmdtaW5nL3RtL2lzc3Vlcy80IG5nWm9uZeivpuino1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy52YWx1ZSA9IF92YWx1ZSk7IC8vIHZhbHVlIGlzIG5vdCBwcm9wYWdhdGVkIHRvIHBhcmVudCB3aGVuIGV4ZWN1dGluZyBvdXRzaWRlIHpvbmUuXG4gIH1cblxuICBvbkJsdXJFZGl0b3JUZXh0SGFuZGxlcihlKSB7XG5cbiAgICB0aGlzLm9uQ29udHJvbFRvdWNoZWQoKTtcbiAgfVxuXG4gIG9uTGF5b3V0Q2hhbmdlSGFuZGxlcihlKSB7XG4gICAgY29uc29sZS5sb2coJ0xheW91dCBjaGFuZ2VkOlxcbicgKyBlKTtcbiAgfVxuXG4gIC8vIGdldCBhY2Nlc3NvclxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICAvLyBzZXQgYWNjZXNzb3IgaW5jbHVkaW5nIGNhbGwgdGhlIG9uY2hhbmdlIGNhbGxiYWNrXG4gIHNldCB2YWx1ZSh2OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdGhpcy52YWx1ZSkgey8vIOazqOaEj+i/meenjeWGmeazle+8jOWAvOW+l+WtpuS5oFxuICAgICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgIH1cblxuICAgIHRoaXMub25Db250cm9sVmFsdWVDaGFuZ2UodGhpcy52YWx1ZSk7IC8vIOWcqOWxnuaAp+S/rumlsOWZqOmHjOiwg+eUqG9uQ29udHJvbFZhbHVlQ2hhbmdl5pa55rOVXG4gIH1cblxuICBsb2NhbEVkaXRvcigpIHsvLyBEZW1vOiBvdXRzaWRlIGNvbXBvbmVudCAtPiBtb25hY28gZWRpdG9yXG4gICAgdGhpcy53cml0ZVZhbHVlKCd0ZXN0Jyk7XG4gIH1cblxuICAvLyDoh6rlrprkuYnovpPlhaXmjqfku7Y6My4yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb1xuXG4gIC8vIG91dHNpZGUgY29tcG9uZW50IC0+IG1vbmFjbyBlZGl0b3JcblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgJyc7XG5cbiAgICAvLyBGaXggZm9yIHZhbHVlIGNoYW5nZSB3aGlsZSBkaXNwb3NlIGluIHByb2Nlc3MuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fZWRpdG9yIC8qJiYgIXRoaXMub3B0aW9ucy5tb2RlbCovKSB7XG4gICAgICAgIHRoaXMuX2VkaXRvci5zZXRWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwid3JpdGUgdG8gdGhlIGVkaXRvcjpcIiArIHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25Db250cm9sVmFsdWVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ29udHJvbFRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29y5o+Q5L6b55qE5LqL5Lu25Zue6LCDXG4gIG9uQ29udHJvbFZhbHVlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3Lmj5DkvpvnmoTkuovku7blm57osINcbiAgb25Db250cm9sVG91Y2hlZCA9ICgpID0+IHtcbiAgfVxuXG59XG4iXX0= |
@@ -22,2 +22,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2VkaXRvci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkvQyxNQUFNLENBQUMsdUJBQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQUMsOEJBQThCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGluamVjdGlvblRva2Vu5L2c55So6K+05piOXG4vLyBodHRwczovL3NlZ21lbnRmYXVsdC5jb20vYS8xMTkwMDAwMDA4NjI2MzQ4XG5leHBvcnQgY29uc3QgQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbignQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcge1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICBkZWZhdWx0T3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55OyB9LFxuICBvbk1vbmFjb0xvYWQ/OiBGdW5jdGlvbjtcbn0iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2VkaXRvci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkvQyxNQUFNLENBQUMsdUJBQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQUMsOEJBQThCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGluamVjdGlvblRva2Vu5L2c55So6K+05piOXG4vLyBodHRwczovL3NlZ21lbnRmYXVsdC5jb20vYS8xMTkwMDAwMDA4NjI2MzQ4XG5leHBvcnQgY29uc3QgQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbignQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcge1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICBkZWZhdWx0T3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55OyB9O1xuICBvbk1vbmFjb0xvYWQ/OiBGdW5jdGlvbjtcbn1cbiJdfQ== |
@@ -9,2 +9,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2VkaXRvci9jb25zdGFudHMvZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNLENBQUMsdUJBQU0sa0JBQWtCLEdBQUc7SUFDOUIsTUFBTSxFQUFFLFFBQVE7Q0FDbkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDT0RFX0VESVRPUl9FVkVOVFMgPSB7XG4gICAgb25Jbml0OiAnb25Jbml0J1xufSJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2VkaXRvci9jb25zdGFudHMvZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNLENBQUMsdUJBQU0sa0JBQWtCLEdBQUc7SUFDOUIsTUFBTSxFQUFFLFFBQVE7Q0FDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDT0RFX0VESVRPUl9FVkVOVFMgPSB7XG4gICAgb25Jbml0OiAnb25Jbml0J1xufTtcbiJdfQ== |
@@ -47,2 +47,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3IvZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSw0QkFBNEIsRUFBNkIsTUFBTSxVQUFVLENBQUM7QUFDbkYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFnQnZHLE1BQU07Ozs7O0lBQ0csTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFvQyxFQUFFO1FBQzFELE1BQU0sQ0FBQztZQUNMLFFBQVEsRUFBRSx5QkFBeUI7WUFDbkMsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7YUFDNUQ7U0FDRixDQUFDOzs7O1lBckJMLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtpQkFDYjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osNEJBQTRCO2lCQUM3QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsNEJBQTRCO2lCQUM3QjtnQkFDRCxTQUFTLEVBQUUsRUFDVjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcsIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyLW1vbmFjby1lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCAgXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICBdXG59KVxuXG5leHBvcnQgY2xhc3MgQW5ndWxhck1vbmFjb0VkaXRvck1vZHVsZSB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChjb25maWc6IEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcgPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQW5ndWxhck1vbmFjb0VkaXRvck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3IvZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSw0QkFBNEIsRUFBNkIsTUFBTSxVQUFVLENBQUM7QUFDbkYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFnQnZHLE1BQU07Ozs7O0lBQ0csTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFvQyxFQUFFO1FBQzFELE1BQU0sQ0FBQztZQUNMLFFBQVEsRUFBRSx5QkFBeUI7WUFDbkMsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7YUFDNUQ7U0FDRixDQUFDOzs7O1lBckJMLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtpQkFDYjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osNEJBQTRCO2lCQUM3QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsNEJBQTRCO2lCQUM3QjtnQkFDRCxTQUFTLEVBQUUsRUFDVjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcsIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyLW1vbmFjby1lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJNb25hY29FZGl0b3JNb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoY29uZmlnOiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFuZ3VsYXJNb25hY29FZGl0b3JNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHLCB1c2VWYWx1ZTogY29uZmlnIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0= |
@@ -48,2 +48,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IuZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3Ivc2VydmljZXMvY29kZS1lZGl0b3IuZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUdoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd6RCxNQUFNOzswQkFDa0IsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQzt1QkFDNUIsRUFBRTs7Ozs7OztJQU16QixRQUFRLENBQUMsS0FBSztRQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDOztLQUUvQjs7Ozs7SUFFRCxTQUFTLENBQUMsS0FBSztRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs7S0FFN0M7OztZQWpCSixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgQ09ERV9FRElUT1JfRVZFTlRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2V2ZW50cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlIHtcbiAgICBwdWJsaWMgZXZlbnROYW1lcyA9IE9iamVjdC5rZXlzKENPREVfRURJVE9SX0VWRU5UUyk7XG4gICAgcHJpdmF0ZSBfZXZlbnRzOiBhbnkgPSB7fTsgLy8g5L2/55So5LqL5Lu2XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7lkK/nlKjkuovku7ZcbiAgICAgKiBAcGFyYW0gIOS6i+S7tlxuICAgICAqL1xuICAgIGFkZEV2ZW50KGV2ZW50KXtcbiAgICAgICAgYXNzaWduKHRoaXMuX2V2ZW50cywgZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmV2ZW50cyk7XG4gICAgfVxuXG4gICAgZmlyZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuX2V2ZW50c1tldmVudC5ldmVudE5hbWVdLmVtaXQoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkVtaXQgRXZlbnQ6XCIgKyBldmVudCk7XG4gICAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IuZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3Ivc2VydmljZXMvY29kZS1lZGl0b3IuZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3pELE1BQU07OzBCQUNrQixNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO3VCQUM1QixFQUFFOzs7Ozs7O0lBTXpCLFFBQVEsQ0FBQyxLQUFLO1FBQ1YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7O0tBRS9COzs7OztJQUVELFNBQVMsQ0FBQyxLQUFLO1FBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDOztLQUU3Qzs7O1lBakJKLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IENPREVfRURJVE9SX0VWRU5UUyB9IGZyb20gJy4uL2NvbnN0YW50cy9ldmVudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29kZUVkaXRvckV2ZW50U2VydmljZSB7XG4gICAgcHVibGljIGV2ZW50TmFtZXMgPSBPYmplY3Qua2V5cyhDT0RFX0VESVRPUl9FVkVOVFMpO1xuICAgIHByaXZhdGUgX2V2ZW50czogYW55ID0ge307IC8vIOS9v+eUqOS6i+S7tlxuXG4gICAgLyoqXG4gICAgICog6K6+572u5ZCv55So5LqL5Lu2XG4gICAgICogQHBhcmFtICDkuovku7ZcbiAgICAgKi9cbiAgICBhZGRFdmVudChldmVudCkge1xuICAgICAgICBhc3NpZ24odGhpcy5fZXZlbnRzLCBldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZXZlbnRzKTtcbiAgICB9XG5cbiAgICBmaXJlRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzW2V2ZW50LmV2ZW50TmFtZV0uZW1pdChldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRW1pdCBFdmVudDpcIiArIGV2ZW50KTtcbiAgICB9XG59XG4iXX0= |
@@ -18,2 +18,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvIiwic291cmNlcyI6WyJsaWIvZWRpdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJEaWZmRWRpdG9yTW9kZWwge1xuLy8gICAgIGNvZGU6IHN0cmluZztcbi8vICAgICBsYW5ndWFnZTogc3RyaW5nO1xuLy8gfVxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRWRpdG9yTW9kZWwge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmc7XG4gICAgdXJpPzogYW55O1xufSJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvIiwic291cmNlcyI6WyJsaWIvZWRpdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJEaWZmRWRpdG9yTW9kZWwge1xuLy8gICAgIGNvZGU6IHN0cmluZztcbi8vICAgICBsYW5ndWFnZTogc3RyaW5nO1xuLy8gfVxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRWRpdG9yTW9kZWwge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmc7XG4gICAgdXJpPzogYW55O1xufVxuIl19 |
@@ -10,4 +10,5 @@ /** | ||
export { AngularMonacoEditorComponent as ɵb, CODE_EDITOR_INPUT_VALUE_ACCESSOR as ɵa } from './lib/editor/angular-monaco-editor/angular-monaco-editor.component'; | ||
export { CodeEditorEventService as ɵc } from './lib/editor/services/code-editor.event.service'; | ||
export { BaseMonacoEditor as ɵc } from './lib/editor/base-monaco-editor'; | ||
export { CodeEditorEventService as ɵd } from './lib/editor/services/code-editor.event.service'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsiYW5ndWxhci1tb25hY28tZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSx3RUFBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLDRCQUE0QixJQUFJLEVBQUUsRUFBQyxnQ0FBZ0MsSUFBSSxFQUFFLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUM3SixPQUFPLEVBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFDLE1BQU0saURBQWlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7QW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCBhcyDJtWIsQ09ERV9FRElUT1JfSU5QVVRfVkFMVUVfQUNDRVNTT1IgYXMgybVhfSBmcm9tICcuL2xpYi9lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0IHtDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlIGFzIMm1Y30gZnJvbSAnLi9saWIvZWRpdG9yL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UnOyJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsiYW5ndWxhci1tb25hY28tZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSx3RUFBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLDRCQUE0QixJQUFJLEVBQUUsRUFBQyxnQ0FBZ0MsSUFBSSxFQUFFLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUM3SixPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFDLHNCQUFzQixJQUFJLEVBQUUsRUFBQyxNQUFNLGlEQUFpRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0FuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnQgYXMgybViLENPREVfRURJVE9SX0lOUFVUX1ZBTFVFX0FDQ0VTU09SIGFzIMm1YX0gZnJvbSAnLi9saWIvZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9hbmd1bGFyLW1vbmFjby1lZGl0b3IuY29tcG9uZW50JztcbmV4cG9ydCB7QmFzZU1vbmFjb0VkaXRvciBhcyDJtWN9IGZyb20gJy4vbGliL2VkaXRvci9iYXNlLW1vbmFjby1lZGl0b3InO1xuZXhwb3J0IHtDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlIGFzIMm1ZH0gZnJvbSAnLi9saWIvZWRpdG9yL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UnOyJdfQ== |
@@ -5,11 +5,10 @@ /** | ||
*/ | ||
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core'; | ||
import * as tslib_1 from "tslib"; | ||
import { Component, Input } from '@angular/core'; | ||
import { forwardRef, Inject, NgZone } from '@angular/core'; | ||
import { NG_VALUE_ACCESSOR } from '@angular/forms'; | ||
import { pick } from 'lodash'; | ||
import { ANGULAR_MONACO_EDITOR_CONFIG } from '../config'; | ||
import { CodeEditorEventService } from '../services/code-editor.event.service'; | ||
import { CODE_EDITOR_EVENTS } from '../constants/events'; | ||
var /** @type {?} */ loadedMonaco = false; | ||
var /** @type {?} */ loadPromise; | ||
import { BaseMonacoEditor } from '../base-monaco-editor'; | ||
// 自定义输入控件:1.封装ControlValueAccessor | ||
@@ -23,49 +22,29 @@ // https://code-examples.net/zh-CN/q/2154761 | ||
}; | ||
var AngularMonacoEditorComponent = /** @class */ (function () { | ||
// @Input('model') | ||
// set model(model: AngularEditorModel) { | ||
// this.options.model = model; | ||
// if (this._editor) { | ||
// this._editor.dispose(); | ||
// this.initMonaco(this.options); | ||
// } | ||
// } | ||
// 注入AngularMonacoEditorConfig,在创建Editor实例时设置config | ||
function AngularMonacoEditorComponent(zone, config, codeEditorEventService) { | ||
this.zone = zone; | ||
this.config = config; | ||
this.codeEditorEventService = codeEditorEventService; | ||
this._value = ''; | ||
var AngularMonacoEditorComponent = /** @class */ (function (_super) { | ||
tslib_1.__extends(AngularMonacoEditorComponent, _super); | ||
// tslint:disable-next-line:max-line-length | ||
function AngularMonacoEditorComponent(zone, editorEventService, angularEditorconfig) { | ||
var _this = _super.call(this, editorEventService, angularEditorconfig) || this; | ||
_this.zone = zone; | ||
_this.editorEventService = editorEventService; | ||
_this.angularEditorconfig = angularEditorconfig; | ||
_this._value = ''; | ||
// ControlValueAccessor提供的事件回调 | ||
this.onControlValueChange = function (_) { | ||
_this.onControlValueChange = function (_) { | ||
}; | ||
// ControlValueAccessor提供的事件回调 | ||
this.onControlTouched = function () { | ||
_this.onControlTouched = function () { | ||
}; | ||
// 初始化自定义事件 | ||
var /** @type {?} */ self = this; | ||
codeEditorEventService.eventNames.forEach(function (name) { | ||
// 创建自定义事件,此处作用等效于: @Output() onInit = new EventEmitter<any>() | ||
self[name] = new EventEmitter(); | ||
var /** @type {?} */ eventPair = pick(self, name); | ||
codeEditorEventService.addEvent(eventPair); | ||
}); | ||
return _this; | ||
} | ||
Object.defineProperty(AngularMonacoEditorComponent.prototype, "options", { | ||
get: /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
return this._options; | ||
}, | ||
Object.defineProperty(AngularMonacoEditorComponent.prototype, "model", { | ||
set: /** | ||
* @param {?} options | ||
* @param {?} model | ||
* @return {?} | ||
*/ | ||
function (options) { | ||
// 默认options(this.config.defaultOptions) + 自定义options(options) | ||
this._options = Object.assign({}, this.config.defaultOptions, options); | ||
function (model) { | ||
this.options.model = model; | ||
if (this._editor) { | ||
this._editor.dispose(); | ||
this.initMonaco(options); | ||
this.initMonaco(this.options); | ||
} | ||
@@ -77,64 +56,2 @@ }, | ||
/** | ||
* @return {?} | ||
*/ | ||
AngularMonacoEditorComponent.prototype.ngAfterViewInit = /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
var _this = this; | ||
if (loadedMonaco) { | ||
// Wait until monaco editor is available | ||
loadPromise.then(function () { | ||
_this.initMonaco(_this.options); | ||
}); | ||
} | ||
else { | ||
loadedMonaco = true; | ||
loadPromise = new Promise(function (resolve) { | ||
var /** @type {?} */ baseUrl = _this.config.baseUrl || '/assets'; | ||
// if (typeof((<any>window).monaco) === 'object') { | ||
// resolve(); | ||
// return; | ||
// } | ||
var /** @type {?} */ onGotAmdLoader = function () { | ||
// Load monaco | ||
(/** @type {?} */ (window)).require.config({ paths: { 'vs': baseUrl + "/monaco/vs" } }); | ||
(/** @type {?} */ (window)).require(['vs/editor/editor.main'], function () { | ||
if (typeof _this.config.onMonacoLoad === 'function') { | ||
_this.config.onMonacoLoad(); | ||
} | ||
_this.initMonaco(_this.options); | ||
resolve(); | ||
}); | ||
}; | ||
// Load AMD loader if necessary | ||
if (!(/** @type {?} */ (window)).require) { | ||
var /** @type {?} */ loaderScript = document.createElement('script'); | ||
loaderScript.type = 'text/javascript'; | ||
loaderScript.src = baseUrl + "/monaco/vs/loader.js"; | ||
loaderScript.addEventListener('load', onGotAmdLoader); | ||
document.body.appendChild(loaderScript); | ||
} | ||
else { | ||
onGotAmdLoader(); | ||
} | ||
}); | ||
} | ||
}; | ||
/** | ||
* @return {?} | ||
*/ | ||
AngularMonacoEditorComponent.prototype.ngOnDestroy = /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
// if (this._windowResizeSubscription) { | ||
// this._windowResizeSubscription.unsubscribe(); | ||
// } | ||
if (this._editor) { | ||
this._editor.dispose(); | ||
this._editor = undefined; | ||
} | ||
}; | ||
/** | ||
* @param {?} options | ||
@@ -149,8 +66,6 @@ * @return {?} | ||
var _this = this; | ||
console.log('Init the custom monaco code editor'); | ||
// const hasModel = !!options.model; | ||
var /** @type {?} */ hasModel = false; | ||
// if (hasModel) { | ||
// options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri); | ||
// } | ||
var /** @type {?} */ hasModel = !!options.model; | ||
if (hasModel) { | ||
options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri); | ||
} | ||
this._editor = monaco.editor.create(this._editorComponent.nativeElement, options); | ||
@@ -169,4 +84,3 @@ if (!hasModel) { | ||
// this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor.layout()); | ||
// this.onInit.emit(this._editor); | ||
this.codeEditorEventService.fireEvent({ | ||
this.editorEventService.fireEvent({ | ||
eventName: CODE_EDITOR_EVENTS.onInit, | ||
@@ -191,3 +105,2 @@ target: this, | ||
this.zone.run(function () { return _this.value = _value; }); // value is not propagated to parent when executing outside zone. | ||
// console.log("write from the monaco:" + this._value); | ||
}; | ||
@@ -297,5 +210,6 @@ /** | ||
{ type: Component, args: [{ | ||
// tslint:disable-next-line:component-selector | ||
selector: 'angular-monaco-editor', | ||
template: "<div class=\"editor\" #codeEditor></div>", | ||
styles: [":host{display:block;min-height:200px}.editor{width:100%;height:98%}"], | ||
styles: [":host{display:block;min-height:200px}.editor{width:100%;height:100%}"], | ||
// 自定义输入控件:2.引入依赖服务ControlValueAccessor | ||
@@ -308,12 +222,10 @@ providers: [CODE_EDITOR_INPUT_VALUE_ACCESSOR, CodeEditorEventService] | ||
{ type: NgZone, }, | ||
{ type: CodeEditorEventService, }, | ||
{ type: undefined, decorators: [{ type: Inject, args: [ANGULAR_MONACO_EDITOR_CONFIG,] },] }, | ||
{ type: CodeEditorEventService, }, | ||
]; }; | ||
AngularMonacoEditorComponent.propDecorators = { | ||
"_editorComponent": [{ type: ViewChild, args: ['codeEditor',] },], | ||
"onInit": [{ type: Output },], | ||
"options": [{ type: Input, args: ['options',] },], | ||
"model": [{ type: Input, args: ['model',] },], | ||
}; | ||
return AngularMonacoEditorComponent; | ||
}()); | ||
}(BaseMonacoEditor)); | ||
export { AngularMonacoEditorComponent }; | ||
@@ -331,12 +243,4 @@ function AngularMonacoEditorComponent_tsickle_Closure_declarations() { | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype._editor; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype._options; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype._value; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype._editorComponent; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype.onInit; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype.onControlValueChange; | ||
@@ -348,7 +252,7 @@ /** @type {?} */ | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype.config; | ||
AngularMonacoEditorComponent.prototype.editorEventService; | ||
/** @type {?} */ | ||
AngularMonacoEditorComponent.prototype.codeEditorEventService; | ||
AngularMonacoEditorComponent.prototype.angularEditorconfig; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE9BQU8sRUFBRSw0QkFBNEIsRUFBNkIsTUFBTSxXQUFXLENBQUM7QUFDcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJekQscUJBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztBQUN6QixxQkFBSSxXQUEwQixDQUFDOzs7QUFJL0IsTUFBTSxDQUFDLHFCQUFNLGdDQUFnQyxHQUFROztJQUVuRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLDRCQUE0QixFQUE1QixDQUE0QixDQUFDO0lBQzNELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQzs7SUFxQ0Esa0JBQWtCO0lBQ2xCLHlDQUF5QztJQUN6QyxnQ0FBZ0M7SUFDaEMsd0JBQXdCO0lBQ3hCLDhCQUE4QjtJQUM5QixxQ0FBcUM7SUFDckMsTUFBTTtJQUNOLElBQUk7SUFFSixtREFBbUQ7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RCw2Q0FBNkM7SUFFN0MscUNBQXFDO0lBRXJDLHNDQUFzQzs7Ozs7SUFDdEMsaURBQVU7Ozs7SUFBVixVQUFXLEtBQVU7UUFBckIsaUJBVUM7UUFUQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7O1FBR3pCLFVBQVUsQ0FBQztZQUNULEVBQUUsQ0FBQyxDQUFDLEtBQUksQ0FBQyxPQUFPLDJCQUEyQixDQUFDLENBQUMsQ0FBQztnQkFDNUMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDOzthQUVwQztTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQsc0NBQXNDOzs7OztJQUN0Qyx1REFBZ0I7Ozs7SUFBaEIsVUFBaUIsRUFBTztRQUN0QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0tBQ2hDO0lBRUQsc0NBQXNDOzs7OztJQUN0Qyx3REFBaUI7Ozs7SUFBakIsVUFBa0IsRUFBTztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0tBQzVCOztnQkFqTkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSwwQ0FBd0M7b0JBQ2xELE1BQU0sRUFBRSxDQUFDLHFFQUFxRSxDQUFDOztvQkFFL0UsU0FBUyxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsc0JBQXNCLENBQUM7aUJBQ3RFOzs7O2dCQTdCNEIsTUFBTTtnREFvRUUsTUFBTSxTQUFDLDRCQUE0QjtnQkE5RC9ELHNCQUFzQjs7O3FDQW1DNUIsU0FBUyxTQUFDLFlBQVk7MkJBRXRCLE1BQU07NEJBRU4sS0FBSyxTQUFDLFNBQVM7O3VDQTlDbEI7O1NBbUNhLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCBJbmplY3QsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRywgQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29kZS1lZGl0b3IuZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDT0RFX0VESVRPUl9FVkVOVFMgfSBmcm9tICcuLi9jb25zdGFudHMvZXZlbnRzJztcblxuZGVjbGFyZSBjb25zdCBtb25hY286IGFueTtcblxubGV0IGxvYWRlZE1vbmFjbyA9IGZhbHNlO1xubGV0IGxvYWRQcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuXG4vLyDoh6rlrprkuYnovpPlhaXmjqfku7Y6MS7lsIHoo4VDb250cm9sVmFsdWVBY2Nlc3NvclxuLy8gaHR0cHM6Ly9jb2RlLWV4YW1wbGVzLm5ldC96aC1DTi9xLzIxNTQ3NjFcbmV4cG9ydCBjb25zdCBDT0RFX0VESVRPUl9JTlBVVF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAvLyBodHRwczovL2Jsb2cuY3Nkbi5uZXQvd2FuZ2Rhbl8yMDEzL2FydGljbGUvZGV0YWlscy84MTMxNDk1OVxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbmd1bGFyLW1vbmFjby1lZGl0b3InLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJlZGl0b3JcIiAjY29kZUVkaXRvcj48L2Rpdj5gLFxuICBzdHlsZXM6IFtgOmhvc3R7ZGlzcGxheTpibG9jazttaW4taGVpZ2h0OjIwMHB4fS5lZGl0b3J7d2lkdGg6MTAwJTtoZWlnaHQ6OTglfWBdLFxuICAvLyDoh6rlrprkuYnovpPlhaXmjqfku7Y6Mi7lvJXlhaXkvp3otZbmnI3liqFDb250cm9sVmFsdWVBY2Nlc3NvclxuICBwcm92aWRlcnM6IFtDT0RFX0VESVRPUl9JTlBVVF9WQUxVRV9BQ0NFU1NPUiwgQ29kZUVkaXRvckV2ZW50U2VydmljZV1cbn0pXG5cbi8vIOiHquWumuS5iei+k+WFpeaOp+S7tiA8LT4gTW9uYWNvIEVkdG9yXG5cbi8vIOiHquWumuS5iei+k+WFpeaOp+S7tjozLjEgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvclxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgX2VkaXRvcjogYW55O1xuICBwcml2YXRlIF9vcHRpb25zOiBhbnk7XG4gIC8vIHByb3RlY3RlZCBfd2luZG93UmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX3ZhbHVlID0gJyc7XG5cbiAgQFZpZXdDaGlsZCgnY29kZUVkaXRvcicpIF9lZGl0b3JDb21wb25lbnQ6IEVsZW1lbnRSZWY7IC8vIOWKqOaAgea3u+WKoOS7o+eggee8lui+keWZqFxuXG4gIEBPdXRwdXQoKSBvbkluaXQ7XG5cbiAgQElucHV0KCdvcHRpb25zJylcbiAgc2V0IG9wdGlvbnMob3B0aW9uczogYW55KSB7XG4gICAgLy8g6buY6K6kb3B0aW9ucyh0aGlzLmNvbmZpZy5kZWZhdWx0T3B0aW9ucykgKyDoh6rlrprkuYlvcHRpb25zKG9wdGlvbnMpXG4gICAgdGhpcy5fb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29uZmlnLmRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcbiAgICBpZiAodGhpcy5fZWRpdG9yKSB7XG4gICAgICB0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5pbml0TW9uYWNvKG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuICBnZXQgb3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgLy8gQElucHV0KCdtb2RlbCcpXG4gIC8vIHNldCBtb2RlbChtb2RlbDogQW5ndWxhckVkaXRvck1vZGVsKSB7XG4gIC8vICAgdGhpcy5vcHRpb25zLm1vZGVsID0gbW9kZWw7XG4gIC8vICAgaWYgKHRoaXMuX2VkaXRvcikge1xuICAvLyAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgLy8gICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLm9wdGlvbnMpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC8vIOazqOWFpUFuZ3VsYXJNb25hY29FZGl0b3JDb25maWfvvIzlnKjliJvlu7pFZGl0b3Llrp7kvovml7borr7nva5jb25maWdcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBOZ1pvbmUsIEBJbmplY3QoQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcsIHByaXZhdGUgY29kZUVkaXRvckV2ZW50U2VydmljZTogQ29kZUVkaXRvckV2ZW50U2VydmljZSkge1xuXG4gICAgLy8g5Yid5aeL5YyW6Ieq5a6a5LmJ5LqL5Lu2XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29kZUVkaXRvckV2ZW50U2VydmljZS5ldmVudE5hbWVzLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgIC8vIOWIm+W7uuiHquWumuS5ieS6i+S7tu+8jOatpOWkhOS9nOeUqOetieaViOS6jjogQE91dHB1dCgpIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpIFxuICAgICAgc2VsZltuYW1lXSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgICAgY29uc3QgZXZlbnRQYWlyID0gcGljayhzZWxmLCBuYW1lKTtcbiAgICAgIGNvZGVFZGl0b3JFdmVudFNlcnZpY2UuYWRkRXZlbnQoZXZlbnRQYWlyKTtcbiAgICB9KTtcblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmIChsb2FkZWRNb25hY28pIHtcbiAgICAgIC8vIFdhaXQgdW50aWwgbW9uYWNvIGVkaXRvciBpcyBhdmFpbGFibGVcbiAgICAgIGxvYWRQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmluaXRNb25hY28odGhpcy5vcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkZWRNb25hY28gPSB0cnVlO1xuICAgICAgbG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvbmZpZy5iYXNlVXJsIHx8ICcvYXNzZXRzJztcbiAgICAgICAgLy8gaWYgKHR5cGVvZigoPGFueT53aW5kb3cpLm1vbmFjbykgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vICAgcmVzb2x2ZSgpO1xuICAgICAgICAvLyAgIHJldHVybjtcbiAgICAgICAgLy8gfVxuICAgICAgICBjb25zdCBvbkdvdEFtZExvYWRlcjogYW55ID0gKCkgPT4ge1xuICAgICAgICAgIC8vIExvYWQgbW9uYWNvXG4gICAgICAgICAgKDxhbnk+d2luZG93KS5yZXF1aXJlLmNvbmZpZyh7IHBhdGhzOiB7ICd2cyc6IGAke2Jhc2VVcmx9L21vbmFjby92c2AgfSB9KTtcbiAgICAgICAgICAoPGFueT53aW5kb3cpLnJlcXVpcmUoWyd2cy9lZGl0b3IvZWRpdG9yLm1haW4nXSwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZy5vbk1vbmFjb0xvYWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcub25Nb25hY29Mb2FkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmluaXRNb25hY28odGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBMb2FkIEFNRCBsb2FkZXIgaWYgbmVjZXNzYXJ5XG4gICAgICAgIGlmICghKDxhbnk+d2luZG93KS5yZXF1aXJlKSB7XG4gICAgICAgICAgY29uc3QgbG9hZGVyU2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgIGxvYWRlclNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgICAgICAgbG9hZGVyU2NyaXB0LnNyYyA9IGAke2Jhc2VVcmx9L21vbmFjby92cy9sb2FkZXIuanNgO1xuICAgICAgICAgIGxvYWRlclNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgb25Hb3RBbWRMb2FkZXIpO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobG9hZGVyU2NyaXB0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvbkdvdEFtZExvYWRlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICAvLyBpZiAodGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uKSB7XG4gICAgLy8gICB0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAvLyB9XG4gICAgaWYgKHRoaXMuX2VkaXRvcikge1xuICAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX2VkaXRvciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdE1vbmFjbyhvcHRpb25zOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnSW5pdCB0aGUgY3VzdG9tIG1vbmFjbyBjb2RlIGVkaXRvcicpO1xuXG4gICAgLy8gY29uc3QgaGFzTW9kZWwgPSAhIW9wdGlvbnMubW9kZWw7XG4gICAgY29uc3QgaGFzTW9kZWwgPSBmYWxzZTtcblxuICAgIC8vIGlmIChoYXNNb2RlbCkge1xuICAgIC8vICAgb3B0aW9ucy5tb2RlbCA9IG1vbmFjby5lZGl0b3IuY3JlYXRlTW9kZWwob3B0aW9ucy5tb2RlbC52YWx1ZSwgb3B0aW9ucy5tb2RlbC5sYW5ndWFnZSwgb3B0aW9ucy5tb2RlbC51cmkpO1xuICAgIC8vIH1cblxuICAgIHRoaXMuX2VkaXRvciA9IG1vbmFjby5lZGl0b3IuY3JlYXRlKHRoaXMuX2VkaXRvckNvbXBvbmVudC5uYXRpdmVFbGVtZW50LCBvcHRpb25zKTtcblxuICAgIGlmICghaGFzTW9kZWwpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5zZXRWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gbW9uYWNvIGVkaXRvciAtPiBvdXRzaWRlIGNvbXBvbmVudFxuICAgIHRoaXMuX2VkaXRvci5vbkRpZENoYW5nZU1vZGVsQ29udGVudCgoZTogYW55KSA9PiB0aGlzLm9uQ2hhbmdlTW9kZWxDb250ZW50SGFuZGxlcihlKSk7XG5cbiAgICB0aGlzLl9lZGl0b3Iub25EaWRCbHVyRWRpdG9yVGV4dCgoZTogYW55KSA9PiB0aGlzLm9uQmx1ckVkaXRvclRleHRIYW5kbGVyKGUpKTtcblxuICAgIHRoaXMuX2VkaXRvci5vbkRpZExheW91dENoYW5nZSgoZTogYW55KSA9PiB0aGlzLm9uTGF5b3V0Q2hhbmdlSGFuZGxlcihlKSk7XG5cbiAgICAvLyByZWZyZXNoIGxheW91dCBvbiByZXNpemUgZXZlbnQuXG4gICAgLy8gaWYgKHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbikge1xuICAgIC8vICAgdGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgLy8gfVxuICAgIC8vIHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZWRpdG9yLmxheW91dCgpKTtcbiAgICAvLyB0aGlzLm9uSW5pdC5lbWl0KHRoaXMuX2VkaXRvcik7XG4gICAgdGhpcy5jb2RlRWRpdG9yRXZlbnRTZXJ2aWNlLmZpcmVFdmVudCh7XG4gICAgICBldmVudE5hbWU6IENPREVfRURJVE9SX0VWRU5UUy5vbkluaXQsXG4gICAgICB0YXJnZXQ6IHRoaXMsXG4gICAgICBlZGl0b3I6IHRoaXMuX2VkaXRvclxuICAgIH0pO1xuXG4gIH1cblxuICBvbkNoYW5nZU1vZGVsQ29udGVudEhhbmRsZXIoZSkge1xuICAgIGNvbnN0IF92YWx1ZSA9IHRoaXMuX2VkaXRvci5nZXRWYWx1ZSgpO1xuXG4gICAgLy8gbW9uYWNvIGVkaXRvciAtPiBvdXRzaWRlIGNvbXBvbmVudFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9KVGFuZ21pbmcvdG0vaXNzdWVzLzQgbmdab25l6K+m6KejXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLnZhbHVlID0gX3ZhbHVlKTsgLy8gdmFsdWUgaXMgbm90IHByb3BhZ2F0ZWQgdG8gcGFyZW50IHdoZW4gZXhlY3V0aW5nIG91dHNpZGUgem9uZS5cbiAgICAvLyBjb25zb2xlLmxvZyhcIndyaXRlIGZyb20gdGhlIG1vbmFjbzpcIiArIHRoaXMuX3ZhbHVlKTtcbiAgfVxuXG4gIG9uQmx1ckVkaXRvclRleHRIYW5kbGVyKGUpIHtcblxuICAgIHRoaXMub25Db250cm9sVG91Y2hlZCgpO1xuICB9XG5cbiAgb25MYXlvdXRDaGFuZ2VIYW5kbGVyKGUpIHtcbiAgICBjb25zb2xlLmxvZygnTGF5b3V0IGNoYW5nZWQ6XFxuJyArIGUpO1xuICB9XG5cblxuXG5cbiAgLy8gZ2V0IGFjY2Vzc29yXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8vIHNldCBhY2Nlc3NvciBpbmNsdWRpbmcgY2FsbCB0aGUgb25jaGFuZ2UgY2FsbGJhY2tcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIGlmICh2ICE9PSB0aGlzLnZhbHVlKSB7Ly8g5rOo5oSP6L+Z56eN5YaZ5rOV77yM5YC85b6X5a2m5LmgXG4gICAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgfVxuXG4gICAgdGhpcy5vbkNvbnRyb2xWYWx1ZUNoYW5nZSh0aGlzLnZhbHVlKTsgLy8g5Zyo5bGe5oCn5L+u6aWw5Zmo6YeM6LCD55Sob25Db250cm9sVmFsdWVDaGFuZ2Xmlrnms5VcbiAgfVxuXG4gIGxvY2FsRWRpdG9yKCkgey8vIERlbW86IG91dHNpZGUgY29tcG9uZW50IC0+IG1vbmFjbyBlZGl0b3JcbiAgICB0aGlzLndyaXRlVmFsdWUoJ3Rlc3QnKTtcbiAgfVxuXG4gIC8vIOiHquWumuS5iei+k+WFpeaOp+S7tjozLjIgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvXG5cbiAgLy8gb3V0c2lkZSBjb21wb25lbnQgLT4gbW9uYWNvIGVkaXRvclxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSB8fCAnJztcblxuICAgIC8vIEZpeCBmb3IgdmFsdWUgY2hhbmdlIHdoaWxlIGRpc3Bvc2UgaW4gcHJvY2Vzcy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9lZGl0b3IgLyomJiAhdGhpcy5vcHRpb25zLm1vZGVsKi8pIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yLnNldFZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJ3cml0ZSB0byB0aGUgZWRpdG9yOlwiICsgdGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNvbnRyb2xWYWx1ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Db250cm9sVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3Lmj5DkvpvnmoTkuovku7blm57osINcbiAgb25Db250cm9sVmFsdWVDaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvcuaPkOS+m+eahOS6i+S7tuWbnuiwg1xuICBvbkNvbnRyb2xUb3VjaGVkID0gKCkgPT4ge1xuICB9XG5cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSw0QkFBNEIsRUFBNkIsTUFBTSxXQUFXLENBQUM7QUFDcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQU16RCxNQUFNLENBQUMscUJBQU0sZ0NBQWdDLEdBQVE7O0lBRW5ELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEsNEJBQTRCLEVBQTVCLENBQTRCLENBQUM7SUFDM0QsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDOztJQWNnRCx3REFBZ0I7SUFjaEUsMkNBQTJDO0lBQzNDLHNDQUFvQixJQUFZLEVBQVUsa0JBQTBDLEVBQWdEO1FBQXBJLFlBQ0Usa0JBQU0sa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsU0FDL0M7UUFGbUIsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUFVLHdCQUFrQixHQUFsQixrQkFBa0IsQ0FBd0I7UUFBZ0QseUJBQW1CLEdBQW5CLG1CQUFtQjt1QkFIdEksRUFB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Tzs7dUNBbkNoQjtFQWlDa0QsZ0JBQWdCO1NBQXJELDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIEluamVjdCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcsIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgQ29kZUVkaXRvckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09ERV9FRElUT1JfRVZFTlRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2V2ZW50cyc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yTW9kZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBCYXNlTW9uYWNvRWRpdG9yIH0gZnJvbSAnLi4vYmFzZS1tb25hY28tZWRpdG9yJztcblxuZGVjbGFyZSBjb25zdCBtb25hY286IGFueTtcblxuLy8g6Ieq5a6a5LmJ6L6T5YWl5o6n5Lu2OjEu5bCB6KOFQ29udHJvbFZhbHVlQWNjZXNzb3Jcbi8vIGh0dHBzOi8vY29kZS1leGFtcGxlcy5uZXQvemgtQ04vcS8yMTU0NzYxXG5leHBvcnQgY29uc3QgQ09ERV9FRElUT1JfSU5QVVRfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgLy8gaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdkYW5fMjAxMy9hcnRpY2xlL2RldGFpbHMvODEzMTQ5NTlcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdhbmd1bGFyLW1vbmFjby1lZGl0b3InLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJlZGl0b3JcIiAjY29kZUVkaXRvcj48L2Rpdj5gLFxuICBzdHlsZXM6IFtgOmhvc3R7ZGlzcGxheTpibG9jazttaW4taGVpZ2h0OjIwMHB4fS5lZGl0b3J7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX1gXSxcbiAgLy8g6Ieq5a6a5LmJ6L6T5YWl5o6n5Lu2OjIu5byV5YWl5L6d6LWW5pyN5YqhQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcHJvdmlkZXJzOiBbQ09ERV9FRElUT1JfSU5QVVRfVkFMVUVfQUNDRVNTT1IsIENvZGVFZGl0b3JFdmVudFNlcnZpY2VdXG59KVxuXG4vLyDoh6rlrprkuYnovpPlhaXmjqfku7YgPC0+IE1vbmFjbyBFZHRvclxuXG4vLyDoh6rlrprkuYnovpPlhaXmjqfku7Y6My4xIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3JcbmV4cG9ydCBjbGFzcyBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgQmFzZU1vbmFjb0VkaXRvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoJ21vZGVsJylcbiAgc2V0IG1vZGVsKG1vZGVsOiBBbmd1bGFyRWRpdG9yTW9kZWwpIHtcbiAgICB0aGlzLm9wdGlvbnMubW9kZWwgPSBtb2RlbDtcbiAgICBpZiAodGhpcy5fZWRpdG9yKSB7XG4gICAgICB0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgLy8gcHJvdGVjdGVkIF93aW5kb3dSZXNpemVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfdmFsdWUgPSAnJztcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBwcml2YXRlIGVkaXRvckV2ZW50U2VydmljZTogQ29kZUVkaXRvckV2ZW50U2VydmljZSwgQEluamVjdChBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHKSBwcml2YXRlIGFuZ3VsYXJFZGl0b3Jjb25maWc6IEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcpIHtcbiAgICBzdXBlcihlZGl0b3JFdmVudFNlcnZpY2UsIGFuZ3VsYXJFZGl0b3Jjb25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRNb25hY28ob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaGFzTW9kZWwgPSAhIW9wdGlvbnMubW9kZWw7XG5cbiAgICBpZiAoaGFzTW9kZWwpIHtcbiAgICAgIG9wdGlvbnMubW9kZWwgPSBtb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKG9wdGlvbnMubW9kZWwudmFsdWUsIG9wdGlvbnMubW9kZWwubGFuZ3VhZ2UsIG9wdGlvbnMubW9kZWwudXJpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9lZGl0b3IgPSBtb25hY28uZWRpdG9yLmNyZWF0ZSh0aGlzLl9lZGl0b3JDb21wb25lbnQubmF0aXZlRWxlbWVudCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWhhc01vZGVsKSB7XG4gICAgICB0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIG1vbmFjbyBlZGl0b3IgLT4gb3V0c2lkZSBjb21wb25lbnRcbiAgICB0aGlzLl9lZGl0b3Iub25EaWRDaGFuZ2VNb2RlbENvbnRlbnQoKGU6IGFueSkgPT4gdGhpcy5vbkNoYW5nZU1vZGVsQ29udGVudEhhbmRsZXIoZSkpO1xuXG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkQmx1ckVkaXRvclRleHQoKGU6IGFueSkgPT4gdGhpcy5vbkJsdXJFZGl0b3JUZXh0SGFuZGxlcihlKSk7XG5cbiAgICB0aGlzLl9lZGl0b3Iub25EaWRMYXlvdXRDaGFuZ2UoKGU6IGFueSkgPT4gdGhpcy5vbkxheW91dENoYW5nZUhhbmRsZXIoZSkpO1xuXG4gICAgLy8gcmVmcmVzaCBsYXlvdXQgb24gcmVzaXplIGV2ZW50LlxuICAgIC8vIGlmICh0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24pIHtcbiAgICAvLyAgIHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIC8vIH1cbiAgICAvLyB0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2VkaXRvci5sYXlvdXQoKSk7XG4gICAgdGhpcy5lZGl0b3JFdmVudFNlcnZpY2UuZmlyZUV2ZW50KHtcbiAgICAgIGV2ZW50TmFtZTogQ09ERV9FRElUT1JfRVZFTlRTLm9uSW5pdCxcbiAgICAgIHRhcmdldDogdGhpcyxcbiAgICAgIGVkaXRvcjogdGhpcy5fZWRpdG9yXG4gICAgfSk7XG5cbiAgfVxuXG4gIG9uQ2hhbmdlTW9kZWxDb250ZW50SGFuZGxlcihlKSB7XG4gICAgY29uc3QgX3ZhbHVlID0gdGhpcy5fZWRpdG9yLmdldFZhbHVlKCk7XG5cbiAgICAvLyBtb25hY28gZWRpdG9yIC0+IG91dHNpZGUgY29tcG9uZW50XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0pUYW5nbWluZy90bS9pc3N1ZXMvNCBuZ1pvbmXor6bop6NcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMudmFsdWUgPSBfdmFsdWUpOyAvLyB2YWx1ZSBpcyBub3QgcHJvcGFnYXRlZCB0byBwYXJlbnQgd2hlbiBleGVjdXRpbmcgb3V0c2lkZSB6b25lLlxuICB9XG5cbiAgb25CbHVyRWRpdG9yVGV4dEhhbmRsZXIoZSkge1xuXG4gICAgdGhpcy5vbkNvbnRyb2xUb3VjaGVkKCk7XG4gIH1cblxuICBvbkxheW91dENoYW5nZUhhbmRsZXIoZSkge1xuICAgIGNvbnNvbGUubG9nKCdMYXlvdXQgY2hhbmdlZDpcXG4nICsgZSk7XG4gIH1cblxuICAvLyBnZXQgYWNjZXNzb3JcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgLy8gc2V0IGFjY2Vzc29yIGluY2x1ZGluZyBjYWxsIHRoZSBvbmNoYW5nZSBjYWxsYmFja1xuICBzZXQgdmFsdWUodjogYW55KSB7XG4gICAgaWYgKHYgIT09IHRoaXMudmFsdWUpIHsvLyDms6jmhI/ov5nnp43lhpnms5XvvIzlgLzlvpflrabkuaBcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ29udHJvbFZhbHVlQ2hhbmdlKHRoaXMudmFsdWUpOyAvLyDlnKjlsZ7mgKfkv67ppbDlmajph4zosIPnlKhvbkNvbnRyb2xWYWx1ZUNoYW5nZeaWueazlVxuICB9XG5cbiAgbG9jYWxFZGl0b3IoKSB7Ly8gRGVtbzogb3V0c2lkZSBjb21wb25lbnQgLT4gbW9uYWNvIGVkaXRvclxuICAgIHRoaXMud3JpdGVWYWx1ZSgndGVzdCcpO1xuICB9XG5cbiAgLy8g6Ieq5a6a5LmJ6L6T5YWl5o6n5Lu2OjMuMiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29cblxuICAvLyBvdXRzaWRlIGNvbXBvbmVudCAtPiBtb25hY28gZWRpdG9yXG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuXG4gICAgLy8gRml4IGZvciB2YWx1ZSBjaGFuZ2Ugd2hpbGUgZGlzcG9zZSBpbiBwcm9jZXNzLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2VkaXRvciAvKiYmICF0aGlzLm9wdGlvbnMubW9kZWwqLykge1xuICAgICAgICB0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIndyaXRlIHRvIHRoZSBlZGl0b3I6XCIgKyB0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ29udHJvbFZhbHVlQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vbkNvbnRyb2xUb3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvcuaPkOS+m+eahOS6i+S7tuWbnuiwg1xuICBvbkNvbnRyb2xWYWx1ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29y5o+Q5L6b55qE5LqL5Lu25Zue6LCDXG4gIG9uQ29udHJvbFRvdWNoZWQgPSAoKSA9PiB7XG4gIH1cblxufVxuIl19 |
@@ -22,2 +22,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2VkaXRvci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkvQyxNQUFNLENBQUMscUJBQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQUMsOEJBQThCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGluamVjdGlvblRva2Vu5L2c55So6K+05piOXG4vLyBodHRwczovL3NlZ21lbnRmYXVsdC5jb20vYS8xMTkwMDAwMDA4NjI2MzQ4XG5leHBvcnQgY29uc3QgQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbignQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcge1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICBkZWZhdWx0T3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55OyB9LFxuICBvbk1vbmFjb0xvYWQ/OiBGdW5jdGlvbjtcbn0iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2VkaXRvci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkvQyxNQUFNLENBQUMscUJBQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQUMsOEJBQThCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGluamVjdGlvblRva2Vu5L2c55So6K+05piOXG4vLyBodHRwczovL3NlZ21lbnRmYXVsdC5jb20vYS8xMTkwMDAwMDA4NjI2MzQ4XG5leHBvcnQgY29uc3QgQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbignQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcge1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICBkZWZhdWx0T3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55OyB9O1xuICBvbk1vbmFjb0xvYWQ/OiBGdW5jdGlvbjtcbn1cbiJdfQ== |
@@ -9,2 +9,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2VkaXRvci9jb25zdGFudHMvZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNLENBQUMscUJBQU0sa0JBQWtCLEdBQUc7SUFDOUIsTUFBTSxFQUFFLFFBQVE7Q0FDbkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDT0RFX0VESVRPUl9FVkVOVFMgPSB7XG4gICAgb25Jbml0OiAnb25Jbml0J1xufSJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2VkaXRvci9jb25zdGFudHMvZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNLENBQUMscUJBQU0sa0JBQWtCLEdBQUc7SUFDOUIsTUFBTSxFQUFFLFFBQVE7Q0FDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDT0RFX0VESVRPUl9FVkVOVFMgPSB7XG4gICAgb25Jbml0OiAnb25Jbml0J1xufTtcbiJdfQ== |
@@ -56,2 +56,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3IvZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSw0QkFBNEIsRUFBNkIsTUFBTSxVQUFVLENBQUM7QUFDbkYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7Ozs7Ozs7O0lBaUJ2RixpQ0FBTzs7OztjQUFDLE1BQXNDO1FBQXRDLHVCQUFBLEVBQUEsV0FBc0M7UUFDMUQsTUFBTSxDQUFDO1lBQ0wsUUFBUSxFQUFFLHlCQUF5QjtZQUNuQyxTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTthQUM1RDtTQUNGLENBQUM7OztnQkFyQkwsUUFBUSxTQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELFlBQVksRUFBRTt3QkFDWiw0QkFBNEI7cUJBQzdCO29CQUNELE9BQU8sRUFBRTt3QkFDUCw0QkFBNEI7cUJBQzdCO29CQUNELFNBQVMsRUFBRSxFQUNWO2lCQUNGOztvQ0FsQkQ7O1NBb0JhLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHLCBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnQgIFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJNb25hY29FZGl0b3JNb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoY29uZmlnOiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFuZ3VsYXJNb25hY29FZGl0b3JNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHLCB1c2VWYWx1ZTogY29uZmlnIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3IvZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSw0QkFBNEIsRUFBNkIsTUFBTSxVQUFVLENBQUM7QUFDbkYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7Ozs7Ozs7O0lBaUJ2RixpQ0FBTzs7OztjQUFDLE1BQXNDO1FBQXRDLHVCQUFBLEVBQUEsV0FBc0M7UUFDMUQsTUFBTSxDQUFDO1lBQ0wsUUFBUSxFQUFFLHlCQUF5QjtZQUNuQyxTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTthQUM1RDtTQUNGLENBQUM7OztnQkFyQkwsUUFBUSxTQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELFlBQVksRUFBRTt3QkFDWiw0QkFBNEI7cUJBQzdCO29CQUNELE9BQU8sRUFBRTt3QkFDUCw0QkFBNEI7cUJBQzdCO29CQUNELFNBQVMsRUFBRSxFQUNWO2lCQUNGOztvQ0FsQkQ7O1NBb0JhLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHLCBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyTW9uYWNvRWRpdG9yTW9kdWxlIHtcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFyTW9uYWNvRWRpdG9yTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl19 |
@@ -63,2 +63,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IuZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3Ivc2VydmljZXMvY29kZS1lZGl0b3IuZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUdoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OzBCQUlqQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO3VCQUM1QixFQUFFOztJQUV6Qjs7O09BR0c7Ozs7OztJQUNILHlDQUFROzs7OztJQUFSLFVBQVMsS0FBSztRQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDOztLQUUvQjs7Ozs7SUFFRCwwQ0FBUzs7OztJQUFULFVBQVUsS0FBSztRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs7S0FFN0M7O2dCQWpCSixVQUFVOztpQ0FQWDs7U0FRYSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgYXNzaWduIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHBpY2sgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBDT0RFX0VESVRPUl9FVkVOVFMgfSBmcm9tICcuLi9jb25zdGFudHMvZXZlbnRzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvZGVFZGl0b3JFdmVudFNlcnZpY2Uge1xuICAgIHB1YmxpYyBldmVudE5hbWVzID0gT2JqZWN0LmtleXMoQ09ERV9FRElUT1JfRVZFTlRTKTtcbiAgICBwcml2YXRlIF9ldmVudHM6IGFueSA9IHt9OyAvLyDkvb/nlKjkuovku7ZcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWQr+eUqOS6i+S7tlxuICAgICAqIEBwYXJhbSAg5LqL5Lu2XG4gICAgICovXG4gICAgYWRkRXZlbnQoZXZlbnQpe1xuICAgICAgICBhc3NpZ24odGhpcy5fZXZlbnRzLCBldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZXZlbnRzKTtcbiAgICB9XG5cbiAgICBmaXJlRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzW2V2ZW50LmV2ZW50TmFtZV0uZW1pdChldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRW1pdCBFdmVudDpcIiArIGV2ZW50KTtcbiAgICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IuZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci8iLCJzb3VyY2VzIjpbImxpYi9lZGl0b3Ivc2VydmljZXMvY29kZS1lZGl0b3IuZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7MEJBSWpDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7dUJBQzVCLEVBQUU7O0lBRXpCOzs7T0FHRzs7Ozs7O0lBQ0gseUNBQVE7Ozs7O0lBQVIsVUFBUyxLQUFLO1FBQ1YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7O0tBRS9COzs7OztJQUVELDBDQUFTOzs7O0lBQVQsVUFBVSxLQUFLO1FBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDOztLQUU3Qzs7Z0JBakJKLFVBQVU7O2lDQU5YOztTQU9hLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgYXNzaWduIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgQ09ERV9FRElUT1JfRVZFTlRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2V2ZW50cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlIHtcbiAgICBwdWJsaWMgZXZlbnROYW1lcyA9IE9iamVjdC5rZXlzKENPREVfRURJVE9SX0VWRU5UUyk7XG4gICAgcHJpdmF0ZSBfZXZlbnRzOiBhbnkgPSB7fTsgLy8g5L2/55So5LqL5Lu2XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7lkK/nlKjkuovku7ZcbiAgICAgKiBAcGFyYW0gIOS6i+S7tlxuICAgICAqL1xuICAgIGFkZEV2ZW50KGV2ZW50KSB7XG4gICAgICAgIGFzc2lnbih0aGlzLl9ldmVudHMsIGV2ZW50KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5ldmVudHMpO1xuICAgIH1cblxuICAgIGZpcmVFdmVudChldmVudCkge1xuICAgICAgICB0aGlzLl9ldmVudHNbZXZlbnQuZXZlbnROYW1lXS5lbWl0KGV2ZW50KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJFbWl0IEV2ZW50OlwiICsgZXZlbnQpO1xuICAgIH1cbn1cbiJdfQ== |
@@ -18,2 +18,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvIiwic291cmNlcyI6WyJsaWIvZWRpdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJEaWZmRWRpdG9yTW9kZWwge1xuLy8gICAgIGNvZGU6IHN0cmluZztcbi8vICAgICBsYW5ndWFnZTogc3RyaW5nO1xuLy8gfVxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRWRpdG9yTW9kZWwge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmc7XG4gICAgdXJpPzogYW55O1xufSJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvIiwic291cmNlcyI6WyJsaWIvZWRpdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJEaWZmRWRpdG9yTW9kZWwge1xuLy8gICAgIGNvZGU6IHN0cmluZztcbi8vICAgICBsYW5ndWFnZTogc3RyaW5nO1xuLy8gfVxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRWRpdG9yTW9kZWwge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmc7XG4gICAgdXJpPzogYW55O1xufVxuIl19 |
@@ -1,2 +0,2 @@ | ||
import { InjectionToken, Injectable, Component, EventEmitter, Input, Output, ViewChild, forwardRef, Inject, NgZone, NgModule } from '@angular/core'; | ||
import { InjectionToken, Injectable, Input, Output, ViewChild, EventEmitter, Component, forwardRef, Inject, NgZone, NgModule } from '@angular/core'; | ||
import { assign, pick } from 'lodash'; | ||
@@ -59,29 +59,13 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms'; | ||
let /** @type {?} */ loadPromise; | ||
// 自定义输入控件:1.封装ControlValueAccessor | ||
// https://code-examples.net/zh-CN/q/2154761 | ||
const /** @type {?} */ CODE_EDITOR_INPUT_VALUE_ACCESSOR = { | ||
// https://blog.csdn.net/wangdan_2013/article/details/81314959 | ||
provide: NG_VALUE_ACCESSOR, | ||
useExisting: forwardRef(() => AngularMonacoEditorComponent), | ||
multi: true | ||
}; | ||
// 自定义输入控件 <-> Monaco Edtor | ||
// 自定义输入控件:3.1 implements ControlValueAccessor | ||
class AngularMonacoEditorComponent { | ||
/** | ||
* @abstract | ||
*/ | ||
class BaseMonacoEditor { | ||
/** | ||
* @param {?} zone | ||
* @param {?} codeEditorEventService | ||
* @param {?} config | ||
* @param {?} codeEditorEventService | ||
*/ | ||
constructor(zone, config, codeEditorEventService) { | ||
this.zone = zone; | ||
constructor(codeEditorEventService, config) { | ||
this.codeEditorEventService = codeEditorEventService; | ||
this.config = config; | ||
this.codeEditorEventService = codeEditorEventService; | ||
this._value = ''; | ||
// ControlValueAccessor提供的事件回调 | ||
this.onControlValueChange = (_) => { | ||
}; | ||
// ControlValueAccessor提供的事件回调 | ||
this.onControlTouched = () => { | ||
}; | ||
// 初始化自定义事件 | ||
@@ -161,5 +145,2 @@ const /** @type {?} */ self = this; | ||
ngOnDestroy() { | ||
// if (this._windowResizeSubscription) { | ||
// this._windowResizeSubscription.unsubscribe(); | ||
// } | ||
if (this._editor) { | ||
@@ -170,3 +151,54 @@ this._editor.dispose(); | ||
} | ||
} | ||
BaseMonacoEditor.propDecorators = { | ||
"_editorComponent": [{ type: ViewChild, args: ['codeEditor',] },], | ||
"onInit": [{ type: Output },], | ||
"options": [{ type: Input, args: ['options',] },], | ||
}; | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes} checked by tsc | ||
*/ | ||
// 自定义输入控件:1.封装ControlValueAccessor | ||
// https://code-examples.net/zh-CN/q/2154761 | ||
const /** @type {?} */ CODE_EDITOR_INPUT_VALUE_ACCESSOR = { | ||
// https://blog.csdn.net/wangdan_2013/article/details/81314959 | ||
provide: NG_VALUE_ACCESSOR, | ||
useExisting: forwardRef(() => AngularMonacoEditorComponent), | ||
multi: true | ||
}; | ||
// 自定义输入控件 <-> Monaco Edtor | ||
// 自定义输入控件:3.1 implements ControlValueAccessor | ||
class AngularMonacoEditorComponent extends BaseMonacoEditor { | ||
/** | ||
* @param {?} zone | ||
* @param {?} editorEventService | ||
* @param {?} angularEditorconfig | ||
*/ | ||
constructor(zone, editorEventService, angularEditorconfig) { | ||
super(editorEventService, angularEditorconfig); | ||
this.zone = zone; | ||
this.editorEventService = editorEventService; | ||
this.angularEditorconfig = angularEditorconfig; | ||
this._value = ''; | ||
// ControlValueAccessor提供的事件回调 | ||
this.onControlValueChange = (_) => { | ||
}; | ||
// ControlValueAccessor提供的事件回调 | ||
this.onControlTouched = () => { | ||
}; | ||
} | ||
/** | ||
* @param {?} model | ||
* @return {?} | ||
*/ | ||
set model(model) { | ||
this.options.model = model; | ||
if (this._editor) { | ||
this._editor.dispose(); | ||
this.initMonaco(this.options); | ||
} | ||
} | ||
/** | ||
* @param {?} options | ||
@@ -176,8 +208,8 @@ * @return {?} | ||
initMonaco(options) { | ||
console.log('Init the custom monaco code editor'); | ||
// if (hasModel) { | ||
// options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri); | ||
// } | ||
const /** @type {?} */ hasModel = !!options.model; | ||
if (hasModel) { | ||
options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri); | ||
} | ||
this._editor = monaco.editor.create(this._editorComponent.nativeElement, options); | ||
{ | ||
if (!hasModel) { | ||
this._editor.setValue(this._value); | ||
@@ -194,4 +226,3 @@ } | ||
// this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor.layout()); | ||
// this.onInit.emit(this._editor); | ||
this.codeEditorEventService.fireEvent({ | ||
this.editorEventService.fireEvent({ | ||
eventName: CODE_EDITOR_EVENTS.onInit, | ||
@@ -211,3 +242,2 @@ target: this, | ||
this.zone.run(() => this.value = _value); // value is not propagated to parent when executing outside zone. | ||
// console.log("write from the monaco:" + this._value); | ||
} | ||
@@ -283,5 +313,6 @@ /** | ||
{ type: Component, args: [{ | ||
// tslint:disable-next-line:component-selector | ||
selector: 'angular-monaco-editor', | ||
template: `<div class="editor" #codeEditor></div>`, | ||
styles: [`:host{display:block;min-height:200px}.editor{width:100%;height:98%}`], | ||
styles: [`:host{display:block;min-height:200px}.editor{width:100%;height:100%}`], | ||
// 自定义输入控件:2.引入依赖服务ControlValueAccessor | ||
@@ -294,9 +325,7 @@ providers: [CODE_EDITOR_INPUT_VALUE_ACCESSOR, CodeEditorEventService] | ||
{ type: NgZone, }, | ||
{ type: CodeEditorEventService, }, | ||
{ type: undefined, decorators: [{ type: Inject, args: [ANGULAR_MONACO_EDITOR_CONFIG,] },] }, | ||
{ type: CodeEditorEventService, }, | ||
]; | ||
AngularMonacoEditorComponent.propDecorators = { | ||
"_editorComponent": [{ type: ViewChild, args: ['codeEditor',] },], | ||
"onInit": [{ type: Output },], | ||
"options": [{ type: Input, args: ['options',] },], | ||
"model": [{ type: Input, args: ['model',] },], | ||
}; | ||
@@ -347,4 +376,4 @@ | ||
export { AngularMonacoEditorModule, ANGULAR_MONACO_EDITOR_CONFIG, AngularMonacoEditorComponent as ɵb, CODE_EDITOR_INPUT_VALUE_ACCESSOR as ɵa, CodeEditorEventService as ɵc }; | ||
export { AngularMonacoEditorModule, ANGULAR_MONACO_EDITOR_CONFIG, AngularMonacoEditorComponent as ɵb, CODE_EDITOR_INPUT_VALUE_ACCESSOR as ɵa, BaseMonacoEditor as ɵc, CodeEditorEventService as ɵd }; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvbGliL2VkaXRvci9jb25maWcudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2NvbnN0YW50cy9ldmVudHMudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9hbmd1bGFyLW1vbmFjby1lZGl0b3IuY29tcG9uZW50LnRzIiwibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvbGliL2VkaXRvci9lZGl0b3IubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGluamVjdGlvblRva2Vuw6TCvcKcw6fClMKow6jCr8K0w6bCmMKOXG4vLyBodHRwczovL3NlZ21lbnRmYXVsdC5jb20vYS8xMTkwMDAwMDA4NjI2MzQ4XG5leHBvcnQgY29uc3QgQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbignQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcge1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICBkZWZhdWx0T3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55OyB9LFxuICBvbk1vbmFjb0xvYWQ/OiBGdW5jdGlvbjtcbn0iLCJleHBvcnQgY29uc3QgQ09ERV9FRElUT1JfRVZFTlRTID0ge1xuICAgIG9uSW5pdDogJ29uSW5pdCdcbn0iLCJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgYXNzaWduIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHBpY2sgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBDT0RFX0VESVRPUl9FVkVOVFMgfSBmcm9tICcuLi9jb25zdGFudHMvZXZlbnRzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvZGVFZGl0b3JFdmVudFNlcnZpY2Uge1xuICAgIHB1YmxpYyBldmVudE5hbWVzID0gT2JqZWN0LmtleXMoQ09ERV9FRElUT1JfRVZFTlRTKTtcbiAgICBwcml2YXRlIF9ldmVudHM6IGFueSA9IHt9OyAvLyDDpMK9wr/Dp8KUwqjDpMK6wovDpMK7wrZcblxuICAgIC8qKlxuICAgICAqIMOowq7CvsOnwr3CrsOlwpDCr8OnwpTCqMOkwrrCi8OkwrvCtlxuICAgICAqIEBwYXJhbSAgw6TCusKLw6TCu8K2XG4gICAgICovXG4gICAgYWRkRXZlbnQoZXZlbnQpe1xuICAgICAgICBhc3NpZ24odGhpcy5fZXZlbnRzLCBldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZXZlbnRzKTtcbiAgICB9XG5cbiAgICBmaXJlRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzW2V2ZW50LmV2ZW50TmFtZV0uZW1pdChldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRW1pdCBFdmVudDpcIiArIGV2ZW50KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgSW5qZWN0LCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgcGljayB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcsIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgQ29kZUVkaXRvckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09ERV9FRElUT1JfRVZFTlRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2V2ZW50cyc7XG5cbmRlY2xhcmUgY29uc3QgbW9uYWNvOiBhbnk7XG5cbmxldCBsb2FkZWRNb25hY28gPSBmYWxzZTtcbmxldCBsb2FkUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcblxuLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2OjEuw6XCsMKBw6jCo8KFQ29udHJvbFZhbHVlQWNjZXNzb3Jcbi8vIGh0dHBzOi8vY29kZS1leGFtcGxlcy5uZXQvemgtQ04vcS8yMTU0NzYxXG5leHBvcnQgY29uc3QgQ09ERV9FRElUT1JfSU5QVVRfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgLy8gaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdkYW5fMjAxMy9hcnRpY2xlL2RldGFpbHMvODEzMTQ5NTlcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYW5ndWxhci1tb25hY28tZWRpdG9yJyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiZWRpdG9yXCIgI2NvZGVFZGl0b3I+PC9kaXY+YCxcbiAgc3R5bGVzOiBbYDpob3N0e2Rpc3BsYXk6YmxvY2s7bWluLWhlaWdodDoyMDBweH0uZWRpdG9ye3dpZHRoOjEwMCU7aGVpZ2h0Ojk4JX1gXSxcbiAgLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2OjIuw6XCvMKVw6XChcKlw6TCvsKdw6jCtcKWw6bCnMKNw6XCisKhQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcHJvdmlkZXJzOiBbQ09ERV9FRElUT1JfSU5QVVRfVkFMVUVfQUNDRVNTT1IsIENvZGVFZGl0b3JFdmVudFNlcnZpY2VdXG59KVxuXG4vLyDDqMKHwqrDpcKuwprDpMK5wonDqMK+wpPDpcKFwqXDpsKOwqfDpMK7wrYgPC0+IE1vbmFjbyBFZHRvclxuXG4vLyDDqMKHwqrDpcKuwprDpMK5wonDqMK+wpPDpcKFwqXDpsKOwqfDpMK7wrY6My4xIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3JcbmV4cG9ydCBjbGFzcyBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9lZGl0b3I6IGFueTtcbiAgcHJpdmF0ZSBfb3B0aW9uczogYW55O1xuICAvLyBwcm90ZWN0ZWQgX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF92YWx1ZSA9ICcnO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvZGVFZGl0b3InKSBfZWRpdG9yQ29tcG9uZW50OiBFbGVtZW50UmVmOyAvLyDDpcKKwqjDpsKAwoHDpsK3wrvDpcKKwqDDpMK7wqPDp8KgwoHDp8K8wpbDqMK+wpHDpcKZwqhcblxuICBAT3V0cHV0KCkgb25Jbml0O1xuXG4gIEBJbnB1dCgnb3B0aW9ucycpXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IGFueSkge1xuICAgIC8vIMOpwrvCmMOowq7CpG9wdGlvbnModGhpcy5jb25maWcuZGVmYXVsdE9wdGlvbnMpICsgw6jCh8Kqw6XCrsKaw6TCucKJb3B0aW9ucyhvcHRpb25zKVxuICAgIHRoaXMuX29wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbmZpZy5kZWZhdWx0T3B0aW9ucywgb3B0aW9ucyk7XG4gICAgaWYgKHRoaXMuX2VkaXRvcikge1xuICAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuaW5pdE1vbmFjbyhvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgZ2V0IG9wdGlvbnMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIC8vIEBJbnB1dCgnbW9kZWwnKVxuICAvLyBzZXQgbW9kZWwobW9kZWw6IEFuZ3VsYXJFZGl0b3JNb2RlbCkge1xuICAvLyAgIHRoaXMub3B0aW9ucy5tb2RlbCA9IG1vZGVsO1xuICAvLyAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgLy8gICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gIC8vICAgICB0aGlzLmluaXRNb25hY28odGhpcy5vcHRpb25zKTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICAvLyDDpsKzwqjDpcKFwqVBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnw6/CvMKMw6XCnMKow6XCiMKbw6XCu8K6RWRpdG9yw6XCrsKew6TCvsKLw6bCl8K2w6jCrsK+w6fCvcKuY29uZmlnXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBASW5qZWN0KEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnLCBwcml2YXRlIGNvZGVFZGl0b3JFdmVudFNlcnZpY2U6IENvZGVFZGl0b3JFdmVudFNlcnZpY2UpIHtcblxuICAgIC8vIMOlwojCncOlwqfCi8OlwozClsOowofCqsOlwq7CmsOkwrnCicOkwrrCi8OkwrvCtlxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvZGVFZGl0b3JFdmVudFNlcnZpY2UuZXZlbnROYW1lcy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAvLyDDpcKIwpvDpcK7wrrDqMKHwqrDpcKuwprDpMK5wonDpMK6wovDpMK7wrbDr8K8wozDpsKtwqTDpcKkwoTDpMK9wpzDp8KUwqjDp8KtwonDpsKVwojDpMK6wo46IEBPdXRwdXQoKSBvbkluaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKSBcbiAgICAgIHNlbGZbbmFtZV0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAgIGNvbnN0IGV2ZW50UGFpciA9IHBpY2soc2VsZiwgbmFtZSk7XG4gICAgICBjb2RlRWRpdG9yRXZlbnRTZXJ2aWNlLmFkZEV2ZW50KGV2ZW50UGFpcik7XG4gICAgfSk7XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAobG9hZGVkTW9uYWNvKSB7XG4gICAgICAvLyBXYWl0IHVudGlsIG1vbmFjbyBlZGl0b3IgaXMgYXZhaWxhYmxlXG4gICAgICBsb2FkUHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMub3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZGVkTW9uYWNvID0gdHJ1ZTtcbiAgICAgIGxvYWRQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWcuYmFzZVVybCB8fCAnL2Fzc2V0cyc7XG4gICAgICAgIC8vIGlmICh0eXBlb2YoKDxhbnk+d2luZG93KS5tb25hY28pID09PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyAgIHJlc29sdmUoKTtcbiAgICAgICAgLy8gICByZXR1cm47XG4gICAgICAgIC8vIH1cbiAgICAgICAgY29uc3Qgb25Hb3RBbWRMb2FkZXI6IGFueSA9ICgpID0+IHtcbiAgICAgICAgICAvLyBMb2FkIG1vbmFjb1xuICAgICAgICAgICg8YW55PndpbmRvdykucmVxdWlyZS5jb25maWcoeyBwYXRoczogeyAndnMnOiBgJHtiYXNlVXJsfS9tb25hY28vdnNgIH0gfSk7XG4gICAgICAgICAgKDxhbnk+d2luZG93KS5yZXF1aXJlKFsndnMvZWRpdG9yL2VkaXRvci5tYWluJ10sICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWcub25Nb25hY29Mb2FkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLm9uTW9uYWNvTG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gTG9hZCBBTUQgbG9hZGVyIGlmIG5lY2Vzc2FyeVxuICAgICAgICBpZiAoISg8YW55PndpbmRvdykucmVxdWlyZSkge1xuICAgICAgICAgIGNvbnN0IGxvYWRlclNjcmlwdDogSFRNTFNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgICBsb2FkZXJTY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgICAgIGxvYWRlclNjcmlwdC5zcmMgPSBgJHtiYXNlVXJsfS9tb25hY28vdnMvbG9hZGVyLmpzYDtcbiAgICAgICAgICBsb2FkZXJTY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIG9uR290QW1kTG9hZGVyKTtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxvYWRlclNjcmlwdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25Hb3RBbWRMb2FkZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy8gaWYgKHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbikge1xuICAgIC8vICAgdGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgLy8gfVxuICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9lZGl0b3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRNb25hY28ob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0luaXQgdGhlIGN1c3RvbSBtb25hY28gY29kZSBlZGl0b3InKTtcblxuICAgIC8vIGNvbnN0IGhhc01vZGVsID0gISFvcHRpb25zLm1vZGVsO1xuICAgIGNvbnN0IGhhc01vZGVsID0gZmFsc2U7XG5cbiAgICAvLyBpZiAoaGFzTW9kZWwpIHtcbiAgICAvLyAgIG9wdGlvbnMubW9kZWwgPSBtb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKG9wdGlvbnMubW9kZWwudmFsdWUsIG9wdGlvbnMubW9kZWwubGFuZ3VhZ2UsIG9wdGlvbnMubW9kZWwudXJpKTtcbiAgICAvLyB9XG5cbiAgICB0aGlzLl9lZGl0b3IgPSBtb25hY28uZWRpdG9yLmNyZWF0ZSh0aGlzLl9lZGl0b3JDb21wb25lbnQubmF0aXZlRWxlbWVudCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWhhc01vZGVsKSB7XG4gICAgICB0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIG1vbmFjbyBlZGl0b3IgLT4gb3V0c2lkZSBjb21wb25lbnRcbiAgICB0aGlzLl9lZGl0b3Iub25EaWRDaGFuZ2VNb2RlbENvbnRlbnQoKGU6IGFueSkgPT4gdGhpcy5vbkNoYW5nZU1vZGVsQ29udGVudEhhbmRsZXIoZSkpO1xuXG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkQmx1ckVkaXRvclRleHQoKGU6IGFueSkgPT4gdGhpcy5vbkJsdXJFZGl0b3JUZXh0SGFuZGxlcihlKSk7XG5cbiAgICB0aGlzLl9lZGl0b3Iub25EaWRMYXlvdXRDaGFuZ2UoKGU6IGFueSkgPT4gdGhpcy5vbkxheW91dENoYW5nZUhhbmRsZXIoZSkpO1xuXG4gICAgLy8gcmVmcmVzaCBsYXlvdXQgb24gcmVzaXplIGV2ZW50LlxuICAgIC8vIGlmICh0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24pIHtcbiAgICAvLyAgIHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIC8vIH1cbiAgICAvLyB0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2VkaXRvci5sYXlvdXQoKSk7XG4gICAgLy8gdGhpcy5vbkluaXQuZW1pdCh0aGlzLl9lZGl0b3IpO1xuICAgIHRoaXMuY29kZUVkaXRvckV2ZW50U2VydmljZS5maXJlRXZlbnQoe1xuICAgICAgZXZlbnROYW1lOiBDT0RFX0VESVRPUl9FVkVOVFMub25Jbml0LFxuICAgICAgdGFyZ2V0OiB0aGlzLFxuICAgICAgZWRpdG9yOiB0aGlzLl9lZGl0b3JcbiAgICB9KTtcblxuICB9XG5cbiAgb25DaGFuZ2VNb2RlbENvbnRlbnRIYW5kbGVyKGUpIHtcbiAgICBjb25zdCBfdmFsdWUgPSB0aGlzLl9lZGl0b3IuZ2V0VmFsdWUoKTtcblxuICAgIC8vIG1vbmFjbyBlZGl0b3IgLT4gb3V0c2lkZSBjb21wb25lbnRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vSlRhbmdtaW5nL3RtL2lzc3Vlcy80IG5nWm9uZcOowq/CpsOowqfCo1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy52YWx1ZSA9IF92YWx1ZSk7IC8vIHZhbHVlIGlzIG5vdCBwcm9wYWdhdGVkIHRvIHBhcmVudCB3aGVuIGV4ZWN1dGluZyBvdXRzaWRlIHpvbmUuXG4gICAgLy8gY29uc29sZS5sb2coXCJ3cml0ZSBmcm9tIHRoZSBtb25hY286XCIgKyB0aGlzLl92YWx1ZSk7XG4gIH1cblxuICBvbkJsdXJFZGl0b3JUZXh0SGFuZGxlcihlKSB7XG5cbiAgICB0aGlzLm9uQ29udHJvbFRvdWNoZWQoKTtcbiAgfVxuXG4gIG9uTGF5b3V0Q2hhbmdlSGFuZGxlcihlKSB7XG4gICAgY29uc29sZS5sb2coJ0xheW91dCBjaGFuZ2VkOlxcbicgKyBlKTtcbiAgfVxuXG5cblxuXG4gIC8vIGdldCBhY2Nlc3NvclxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICAvLyBzZXQgYWNjZXNzb3IgaW5jbHVkaW5nIGNhbGwgdGhlIG9uY2hhbmdlIGNhbGxiYWNrXG4gIHNldCB2YWx1ZSh2OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdGhpcy52YWx1ZSkgey8vIMOmwrPCqMOmwoTCj8Oowr/CmcOnwqfCjcOlwobCmcOmwrPClcOvwrzCjMOlwoDCvMOlwr7Cl8Olwq3CpsOkwrnCoFxuICAgICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgIH1cblxuICAgIHRoaXMub25Db250cm9sVmFsdWVDaGFuZ2UodGhpcy52YWx1ZSk7IC8vIMOlwpzCqMOlwrHCnsOmwoDCp8Okwr/CrsOpwqXCsMOlwpnCqMOpwofCjMOowrDCg8OnwpTCqG9uQ29udHJvbFZhbHVlQ2hhbmdlw6bClsK5w6bCs8KVXG4gIH1cblxuICBsb2NhbEVkaXRvcigpIHsvLyBEZW1vOiBvdXRzaWRlIGNvbXBvbmVudCAtPiBtb25hY28gZWRpdG9yXG4gICAgdGhpcy53cml0ZVZhbHVlKCd0ZXN0Jyk7XG4gIH1cblxuICAvLyDDqMKHwqrDpcKuwprDpMK5wonDqMK+wpPDpcKFwqXDpsKOwqfDpMK7wrY6My4yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb1xuXG4gIC8vIG91dHNpZGUgY29tcG9uZW50IC0+IG1vbmFjbyBlZGl0b3JcblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgJyc7XG5cbiAgICAvLyBGaXggZm9yIHZhbHVlIGNoYW5nZSB3aGlsZSBkaXNwb3NlIGluIHByb2Nlc3MuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fZWRpdG9yIC8qJiYgIXRoaXMub3B0aW9ucy5tb2RlbCovKSB7XG4gICAgICAgIHRoaXMuX2VkaXRvci5zZXRWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwid3JpdGUgdG8gdGhlIGVkaXRvcjpcIiArIHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25Db250cm9sVmFsdWVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ29udHJvbFRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yw6bCj8KQw6TCvsKbw6fCmsKEw6TCusKLw6TCu8K2w6XCm8Kew6jCsMKDXG4gIG9uQ29udHJvbFZhbHVlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3LDpsKPwpDDpMK+wpvDp8KawoTDpMK6wovDpMK7wrbDpcKbwp7DqMKwwoNcbiAgb25Db250cm9sVG91Y2hlZCA9ICgpID0+IHtcbiAgfVxuXG59XG4iLCJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRywgQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9hbmd1bGFyLW1vbmFjby1lZGl0b3IuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50ICBcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyTW9uYWNvRWRpdG9yTW9kdWxlIHtcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFyTW9uYWNvRWRpdG9yTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUlBLHVCQUFhLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFDLDhCQUE4QixDQUFDOzs7Ozs7QUNKOUYsQUFBTyx1QkFBTSxrQkFBa0IsR0FBRztJQUM5QixNQUFNLEVBQUUsUUFBUTtDQUNuQixDQUFBOzs7Ozs7QUNGRDs7MEJBU3dCLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7dUJBQzVCLEVBQUU7Ozs7Ozs7SUFNekIsUUFBUSxDQUFDLEtBQUs7UUFDVixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFL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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvbGliL2VkaXRvci9jb25maWcudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2NvbnN0YW50cy9ldmVudHMudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2Jhc2UtbW9uYWNvLWVkaXRvci50cyIsIm5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yL2xpYi9lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2VkaXRvci5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gaW5qZWN0aW9uVG9rZW7DpMK9wpzDp8KUwqjDqMKvwrTDpsKYwo5cbi8vIGh0dHBzOi8vc2VnbWVudGZhdWx0LmNvbS9hLzExOTAwMDAwMDg2MjYzNDhcbmV4cG9ydCBjb25zdCBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuKCdBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyB7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIGRlZmF1bHRPcHRpb25zPzogeyBba2V5OiBzdHJpbmddOiBhbnk7IH07XG4gIG9uTW9uYWNvTG9hZD86IEZ1bmN0aW9uO1xufVxuIiwiZXhwb3J0IGNvbnN0IENPREVfRURJVE9SX0VWRU5UUyA9IHtcbiAgICBvbkluaXQ6ICdvbkluaXQnXG59O1xuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBDT0RFX0VESVRPUl9FVkVOVFMgfSBmcm9tICcuLi9jb25zdGFudHMvZXZlbnRzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvZGVFZGl0b3JFdmVudFNlcnZpY2Uge1xuICAgIHB1YmxpYyBldmVudE5hbWVzID0gT2JqZWN0LmtleXMoQ09ERV9FRElUT1JfRVZFTlRTKTtcbiAgICBwcml2YXRlIF9ldmVudHM6IGFueSA9IHt9OyAvLyDDpMK9wr/Dp8KUwqjDpMK6wovDpMK7wrZcblxuICAgIC8qKlxuICAgICAqIMOowq7CvsOnwr3CrsOlwpDCr8OnwpTCqMOkwrrCi8OkwrvCtlxuICAgICAqIEBwYXJhbSAgw6TCusKLw6TCu8K2XG4gICAgICovXG4gICAgYWRkRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgYXNzaWduKHRoaXMuX2V2ZW50cywgZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmV2ZW50cyk7XG4gICAgfVxuXG4gICAgZmlyZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuX2V2ZW50c1tldmVudC5ldmVudE5hbWVdLmVtaXQoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkVtaXQgRXZlbnQ6XCIgKyBldmVudCk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IENvZGVFZGl0b3JFdmVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UnO1xuXG5sZXQgbG9hZGVkTW9uYWNvID0gZmFsc2U7XG5sZXQgbG9hZFByb21pc2U6IFByb21pc2U8dm9pZD47XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTW9uYWNvRWRpdG9yIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgX2VkaXRvcjogYW55O1xuICBwcml2YXRlIF9vcHRpb25zOiBhbnk7XG4gIC8vIHByb3RlY3RlZCBfd2luZG93UmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgQFZpZXdDaGlsZCgnY29kZUVkaXRvcicpIF9lZGl0b3JDb21wb25lbnQ6IEVsZW1lbnRSZWY7IC8vIMOlworCqMOmwoDCgcOmwrfCu8OlworCoMOkwrvCo8OnwqDCgcOnwrzClsOowr7CkcOlwpnCqFxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1vdXRwdXQtb24tcHJlZml4XG4gIEBPdXRwdXQoKSBvbkluaXQ7XG5cbiAgQElucHV0KCdvcHRpb25zJylcbiAgc2V0IG9wdGlvbnMob3B0aW9uczogYW55KSB7XG4gICAgLy8gw6nCu8KYw6jCrsKkb3B0aW9ucyh0aGlzLmNvbmZpZy5kZWZhdWx0T3B0aW9ucykgKyDDqMKHwqrDpcKuwprDpMK5wolvcHRpb25zKG9wdGlvbnMpXG4gICAgdGhpcy5fb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29uZmlnLmRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcbiAgICBpZiAodGhpcy5fZWRpdG9yKSB7XG4gICAgICB0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5pbml0TW9uYWNvKG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuICBnZXQgb3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb2RlRWRpdG9yRXZlbnRTZXJ2aWNlOiBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlLCBwcml2YXRlIGNvbmZpZzogQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZykge1xuICAgICAgICAvLyDDpcKIwp3DpcKnwovDpcKMwpbDqMKHwqrDpcKuwprDpMK5wonDpMK6wovDpMK7wrZcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvZGVFZGl0b3JFdmVudFNlcnZpY2UuZXZlbnROYW1lcy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgLy8gw6XCiMKbw6XCu8K6w6jCh8Kqw6XCrsKaw6TCucKJw6TCusKLw6TCu8K2w6/CvMKMw6bCrcKkw6XCpMKEw6TCvcKcw6fClMKow6fCrcKJw6bClcKIw6TCusKOOiBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgICAgICAgICBzZWxmW25hbWVdID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgICAgICAgY29uc3QgZXZlbnRQYWlyID0gcGljayhzZWxmLCBuYW1lKTtcbiAgICAgICAgICBjb2RlRWRpdG9yRXZlbnRTZXJ2aWNlLmFkZEV2ZW50KGV2ZW50UGFpcik7XG4gICAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmIChsb2FkZWRNb25hY28pIHtcbiAgICAgIC8vIFdhaXQgdW50aWwgbW9uYWNvIGVkaXRvciBpcyBhdmFpbGFibGVcbiAgICAgIGxvYWRQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmluaXRNb25hY28odGhpcy5vcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkZWRNb25hY28gPSB0cnVlO1xuICAgICAgbG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvbmZpZy5iYXNlVXJsIHx8ICcvYXNzZXRzJztcbiAgICAgICAgLy8gaWYgKHR5cGVvZigoPGFueT53aW5kb3cpLm1vbmFjbykgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vICAgcmVzb2x2ZSgpO1xuICAgICAgICAvLyAgIHJldHVybjtcbiAgICAgICAgLy8gfVxuICAgICAgICBjb25zdCBvbkdvdEFtZExvYWRlcjogYW55ID0gKCkgPT4ge1xuICAgICAgICAgIC8vIExvYWQgbW9uYWNvXG4gICAgICAgICAgKDxhbnk+d2luZG93KS5yZXF1aXJlLmNvbmZpZyh7IHBhdGhzOiB7ICd2cyc6IGAke2Jhc2VVcmx9L21vbmFjby92c2AgfSB9KTtcbiAgICAgICAgICAoPGFueT53aW5kb3cpLnJlcXVpcmUoWyd2cy9lZGl0b3IvZWRpdG9yLm1haW4nXSwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZy5vbk1vbmFjb0xvYWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcub25Nb25hY29Mb2FkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmluaXRNb25hY28odGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBMb2FkIEFNRCBsb2FkZXIgaWYgbmVjZXNzYXJ5XG4gICAgICAgIGlmICghKDxhbnk+d2luZG93KS5yZXF1aXJlKSB7XG4gICAgICAgICAgY29uc3QgbG9hZGVyU2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgIGxvYWRlclNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgICAgICAgbG9hZGVyU2NyaXB0LnNyYyA9IGAke2Jhc2VVcmx9L21vbmFjby92cy9sb2FkZXIuanNgO1xuICAgICAgICAgIGxvYWRlclNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgb25Hb3RBbWRMb2FkZXIpO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobG9hZGVyU2NyaXB0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvbkdvdEFtZExvYWRlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBNb25hY28gRWRpdG9yIEluaXRpYWxpemVyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbml0TW9uYWNvKG9wdGlvbnM6IGFueSk6IHZvaWQgO1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9lZGl0b3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCBJbmplY3QsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHLCBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IENvZGVFZGl0b3JFdmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb2RlLWVkaXRvci5ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENPREVfRURJVE9SX0VWRU5UUyB9IGZyb20gJy4uL2NvbnN0YW50cy9ldmVudHMnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvck1vZGVsIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQmFzZU1vbmFjb0VkaXRvciB9IGZyb20gJy4uL2Jhc2UtbW9uYWNvLWVkaXRvcic7XG5cbmRlY2xhcmUgY29uc3QgbW9uYWNvOiBhbnk7XG5cbi8vIMOowofCqsOlwq7CmsOkwrnCicOowr7Ck8OlwoXCpcOmwo7Cp8OkwrvCtjoxLsOlwrDCgcOowqPChUNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4vLyBodHRwczovL2NvZGUtZXhhbXBsZXMubmV0L3poLUNOL3EvMjE1NDc2MVxuZXhwb3J0IGNvbnN0IENPREVfRURJVE9SX0lOUFVUX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIC8vIGh0dHBzOi8vYmxvZy5jc2RuLm5ldC93YW5nZGFuXzIwMTMvYXJ0aWNsZS9kZXRhaWxzLzgxMzE0OTU5XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYW5ndWxhci1tb25hY28tZWRpdG9yJyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiZWRpdG9yXCIgI2NvZGVFZGl0b3I+PC9kaXY+YCxcbiAgc3R5bGVzOiBbYDpob3N0e2Rpc3BsYXk6YmxvY2s7bWluLWhlaWdodDoyMDBweH0uZWRpdG9ye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9YF0sXG4gIC8vIMOowofCqsOlwq7CmsOkwrnCicOowr7Ck8OlwoXCpcOmwo7Cp8OkwrvCtjoyLsOlwrzClcOlwoXCpcOkwr7CncOowrXClsOmwpzCjcOlworCoUNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHByb3ZpZGVyczogW0NPREVfRURJVE9SX0lOUFVUX1ZBTFVFX0FDQ0VTU09SLCBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlXVxufSlcblxuLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2IDwtPiBNb25hY28gRWR0b3JcblxuLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2OjMuMSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG5leHBvcnQgY2xhc3MgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCBleHRlbmRzIEJhc2VNb25hY29FZGl0b3IgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgQElucHV0KCdtb2RlbCcpXG4gIHNldCBtb2RlbChtb2RlbDogQW5ndWxhckVkaXRvck1vZGVsKSB7XG4gICAgdGhpcy5vcHRpb25zLm1vZGVsID0gbW9kZWw7XG4gICAgaWYgKHRoaXMuX2VkaXRvcikge1xuICAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLm9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByb3RlY3RlZCBfd2luZG93UmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX3ZhbHVlID0gJyc7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSBlZGl0b3JFdmVudFNlcnZpY2U6IENvZGVFZGl0b3JFdmVudFNlcnZpY2UsIEBJbmplY3QoQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRykgcHJpdmF0ZSBhbmd1bGFyRWRpdG9yY29uZmlnOiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnKSB7XG4gICAgc3VwZXIoZWRpdG9yRXZlbnRTZXJ2aWNlLCBhbmd1bGFyRWRpdG9yY29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0TW9uYWNvKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGhhc01vZGVsID0gISFvcHRpb25zLm1vZGVsO1xuXG4gICAgaWYgKGhhc01vZGVsKSB7XG4gICAgICBvcHRpb25zLm1vZGVsID0gbW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbChvcHRpb25zLm1vZGVsLnZhbHVlLCBvcHRpb25zLm1vZGVsLmxhbmd1YWdlLCBvcHRpb25zLm1vZGVsLnVyaSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZWRpdG9yID0gbW9uYWNvLmVkaXRvci5jcmVhdGUodGhpcy5fZWRpdG9yQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFoYXNNb2RlbCkge1xuICAgICAgdGhpcy5fZWRpdG9yLnNldFZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBtb25hY28gZWRpdG9yIC0+IG91dHNpZGUgY29tcG9uZW50XG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkQ2hhbmdlTW9kZWxDb250ZW50KChlOiBhbnkpID0+IHRoaXMub25DaGFuZ2VNb2RlbENvbnRlbnRIYW5kbGVyKGUpKTtcblxuICAgIHRoaXMuX2VkaXRvci5vbkRpZEJsdXJFZGl0b3JUZXh0KChlOiBhbnkpID0+IHRoaXMub25CbHVyRWRpdG9yVGV4dEhhbmRsZXIoZSkpO1xuXG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkTGF5b3V0Q2hhbmdlKChlOiBhbnkpID0+IHRoaXMub25MYXlvdXRDaGFuZ2VIYW5kbGVyKGUpKTtcblxuICAgIC8vIHJlZnJlc2ggbGF5b3V0IG9uIHJlc2l6ZSBldmVudC5cbiAgICAvLyBpZiAodGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uKSB7XG4gICAgLy8gICB0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9lZGl0b3IubGF5b3V0KCkpO1xuICAgIHRoaXMuZWRpdG9yRXZlbnRTZXJ2aWNlLmZpcmVFdmVudCh7XG4gICAgICBldmVudE5hbWU6IENPREVfRURJVE9SX0VWRU5UUy5vbkluaXQsXG4gICAgICB0YXJnZXQ6IHRoaXMsXG4gICAgICBlZGl0b3I6IHRoaXMuX2VkaXRvclxuICAgIH0pO1xuXG4gIH1cblxuICBvbkNoYW5nZU1vZGVsQ29udGVudEhhbmRsZXIoZSkge1xuICAgIGNvbnN0IF92YWx1ZSA9IHRoaXMuX2VkaXRvci5nZXRWYWx1ZSgpO1xuXG4gICAgLy8gbW9uYWNvIGVkaXRvciAtPiBvdXRzaWRlIGNvbXBvbmVudFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9KVGFuZ21pbmcvdG0vaXNzdWVzLzQgbmdab25lw6jCr8Kmw6jCp8KjXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLnZhbHVlID0gX3ZhbHVlKTsgLy8gdmFsdWUgaXMgbm90IHByb3BhZ2F0ZWQgdG8gcGFyZW50IHdoZW4gZXhlY3V0aW5nIG91dHNpZGUgem9uZS5cbiAgfVxuXG4gIG9uQmx1ckVkaXRvclRleHRIYW5kbGVyKGUpIHtcblxuICAgIHRoaXMub25Db250cm9sVG91Y2hlZCgpO1xuICB9XG5cbiAgb25MYXlvdXRDaGFuZ2VIYW5kbGVyKGUpIHtcbiAgICBjb25zb2xlLmxvZygnTGF5b3V0IGNoYW5nZWQ6XFxuJyArIGUpO1xuICB9XG5cbiAgLy8gZ2V0IGFjY2Vzc29yXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8vIHNldCBhY2Nlc3NvciBpbmNsdWRpbmcgY2FsbCB0aGUgb25jaGFuZ2UgY2FsbGJhY2tcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIGlmICh2ICE9PSB0aGlzLnZhbHVlKSB7Ly8gw6bCs8Kow6bChMKPw6jCv8KZw6fCp8KNw6XChsKZw6bCs8KVw6/CvMKMw6XCgMK8w6XCvsKXw6XCrcKmw6TCucKgXG4gICAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgfVxuXG4gICAgdGhpcy5vbkNvbnRyb2xWYWx1ZUNoYW5nZSh0aGlzLnZhbHVlKTsgLy8gw6XCnMKow6XCscKew6bCgMKnw6TCv8Kuw6nCpcKww6XCmcKow6nCh8KMw6jCsMKDw6fClMKob25Db250cm9sVmFsdWVDaGFuZ2XDpsKWwrnDpsKzwpVcbiAgfVxuXG4gIGxvY2FsRWRpdG9yKCkgey8vIERlbW86IG91dHNpZGUgY29tcG9uZW50IC0+IG1vbmFjbyBlZGl0b3JcbiAgICB0aGlzLndyaXRlVmFsdWUoJ3Rlc3QnKTtcbiAgfVxuXG4gIC8vIMOowofCqsOlwq7CmsOkwrnCicOowr7Ck8OlwoXCpcOmwo7Cp8OkwrvCtjozLjIgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvXG5cbiAgLy8gb3V0c2lkZSBjb21wb25lbnQgLT4gbW9uYWNvIGVkaXRvclxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSB8fCAnJztcblxuICAgIC8vIEZpeCBmb3IgdmFsdWUgY2hhbmdlIHdoaWxlIGRpc3Bvc2UgaW4gcHJvY2Vzcy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9lZGl0b3IgLyomJiAhdGhpcy5vcHRpb25zLm1vZGVsKi8pIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yLnNldFZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJ3cml0ZSB0byB0aGUgZWRpdG9yOlwiICsgdGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNvbnRyb2xWYWx1ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Db250cm9sVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3LDpsKPwpDDpMK+wpvDp8KawoTDpMK6wovDpMK7wrbDpcKbwp7DqMKwwoNcbiAgb25Db250cm9sVmFsdWVDaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvcsOmwo/CkMOkwr7Cm8OnwprChMOkwrrCi8OkwrvCtsOlwpvCnsOowrDCg1xuICBvbkNvbnRyb2xUb3VjaGVkID0gKCkgPT4ge1xuICB9XG5cbn1cbiIsImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHLCBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyTW9uYWNvRWRpdG9yTW9kdWxlIHtcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFyTW9uYWNvRWRpdG9yTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUlBLHVCQUFhLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFDLDhCQUE4QixDQUFDOzs7Ozs7QUNKOUYsQUFBTyx1QkFBTSxrQkFBa0IsR0FBRztJQUM5QixNQUFNLEVBQUUsUUFBUTtDQUNuQixDQUFDOzs7Ozs7QUNGRjs7MEJBUXdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7dUJBQzVCLEVBQUU7Ozs7Ozs7SUFNekIsUUFBUSxDQUFDLEtBQUs7UUFDVixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQzs7S0FFL0I7Ozs7O0lBRUQsU0FBUyxDQUFDLEtBQUs7UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7O0tBRTdDOzs7WUFqQkosVUFBVTs7Ozs7OztBQ05YLEFBT0EscUJBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztBQUN6QixxQkFBSSxXQUEwQixDQUFDOzs7O0FBRS9COzs7OztJQXdCRSxZQUFvQixzQkFBOEMsRUFBVSxNQUFpQztRQUF6RiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBMkI7O1FBRXZHLHVCQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsc0JBQXNCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUk7O1lBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1lBQ3JDLHVCQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMs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 |
@@ -1,3 +0,4 @@ | ||
import { InjectionToken, Injectable, Component, EventEmitter, Input, Output, ViewChild, forwardRef, Inject, NgZone, NgModule } from '@angular/core'; | ||
import { InjectionToken, Injectable, Input, Output, ViewChild, EventEmitter, Component, forwardRef, Inject, NgZone, NgModule } from '@angular/core'; | ||
import { assign, pick } from 'lodash'; | ||
import { __extends } from 'tslib'; | ||
import { NG_VALUE_ACCESSOR } from '@angular/forms'; | ||
@@ -73,31 +74,9 @@ import { CommonModule } from '@angular/common'; | ||
var /** @type {?} */ loadPromise; | ||
// 自定义输入控件:1.封装ControlValueAccessor | ||
// https://code-examples.net/zh-CN/q/2154761 | ||
var /** @type {?} */ CODE_EDITOR_INPUT_VALUE_ACCESSOR = { | ||
// https://blog.csdn.net/wangdan_2013/article/details/81314959 | ||
provide: NG_VALUE_ACCESSOR, | ||
useExisting: forwardRef(function () { return AngularMonacoEditorComponent; }), | ||
multi: true | ||
}; | ||
var AngularMonacoEditorComponent = /** @class */ (function () { | ||
// @Input('model') | ||
// set model(model: AngularEditorModel) { | ||
// this.options.model = model; | ||
// if (this._editor) { | ||
// this._editor.dispose(); | ||
// this.initMonaco(this.options); | ||
// } | ||
// } | ||
// 注入AngularMonacoEditorConfig,在创建Editor实例时设置config | ||
function AngularMonacoEditorComponent(zone, config, codeEditorEventService) { | ||
this.zone = zone; | ||
/** | ||
* @abstract | ||
*/ | ||
var BaseMonacoEditor = /** @class */ (function () { | ||
function BaseMonacoEditor(codeEditorEventService, config) { | ||
this.codeEditorEventService = codeEditorEventService; | ||
this.config = config; | ||
this.codeEditorEventService = codeEditorEventService; | ||
this._value = ''; | ||
// ControlValueAccessor提供的事件回调 | ||
this.onControlValueChange = function (_) { | ||
}; | ||
// ControlValueAccessor提供的事件回调 | ||
this.onControlTouched = function () { | ||
}; | ||
// 初始化自定义事件 | ||
@@ -112,3 +91,3 @@ var /** @type {?} */ self = this; | ||
} | ||
Object.defineProperty(AngularMonacoEditorComponent.prototype, "options", { | ||
Object.defineProperty(BaseMonacoEditor.prototype, "options", { | ||
get: /** | ||
@@ -138,3 +117,3 @@ * @return {?} | ||
*/ | ||
AngularMonacoEditorComponent.prototype.ngAfterViewInit = /** | ||
BaseMonacoEditor.prototype.ngAfterViewInit = /** | ||
* @return {?} | ||
@@ -186,9 +165,6 @@ */ | ||
*/ | ||
AngularMonacoEditorComponent.prototype.ngOnDestroy = /** | ||
BaseMonacoEditor.prototype.ngOnDestroy = /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
// if (this._windowResizeSubscription) { | ||
// this._windowResizeSubscription.unsubscribe(); | ||
// } | ||
if (this._editor) { | ||
@@ -199,2 +175,54 @@ this._editor.dispose(); | ||
}; | ||
BaseMonacoEditor.propDecorators = { | ||
"_editorComponent": [{ type: ViewChild, args: ['codeEditor',] },], | ||
"onInit": [{ type: Output },], | ||
"options": [{ type: Input, args: ['options',] },], | ||
}; | ||
return BaseMonacoEditor; | ||
}()); | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes} checked by tsc | ||
*/ | ||
// 自定义输入控件:1.封装ControlValueAccessor | ||
// https://code-examples.net/zh-CN/q/2154761 | ||
var /** @type {?} */ CODE_EDITOR_INPUT_VALUE_ACCESSOR = { | ||
// https://blog.csdn.net/wangdan_2013/article/details/81314959 | ||
provide: NG_VALUE_ACCESSOR, | ||
useExisting: forwardRef(function () { return AngularMonacoEditorComponent; }), | ||
multi: true | ||
}; | ||
var AngularMonacoEditorComponent = /** @class */ (function (_super) { | ||
__extends(AngularMonacoEditorComponent, _super); | ||
// tslint:disable-next-line:max-line-length | ||
function AngularMonacoEditorComponent(zone, editorEventService, angularEditorconfig) { | ||
var _this = _super.call(this, editorEventService, angularEditorconfig) || this; | ||
_this.zone = zone; | ||
_this.editorEventService = editorEventService; | ||
_this.angularEditorconfig = angularEditorconfig; | ||
_this._value = ''; | ||
// ControlValueAccessor提供的事件回调 | ||
_this.onControlValueChange = function (_) { | ||
}; | ||
// ControlValueAccessor提供的事件回调 | ||
_this.onControlTouched = function () { | ||
}; | ||
return _this; | ||
} | ||
Object.defineProperty(AngularMonacoEditorComponent.prototype, "model", { | ||
set: /** | ||
* @param {?} model | ||
* @return {?} | ||
*/ | ||
function (model) { | ||
this.options.model = model; | ||
if (this._editor) { | ||
this._editor.dispose(); | ||
this.initMonaco(this.options); | ||
} | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
/** | ||
@@ -210,8 +238,8 @@ * @param {?} options | ||
var _this = this; | ||
console.log('Init the custom monaco code editor'); | ||
// if (hasModel) { | ||
// options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri); | ||
// } | ||
var /** @type {?} */ hasModel = !!options.model; | ||
if (hasModel) { | ||
options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri); | ||
} | ||
this._editor = monaco.editor.create(this._editorComponent.nativeElement, options); | ||
{ | ||
if (!hasModel) { | ||
this._editor.setValue(this._value); | ||
@@ -228,4 +256,3 @@ } | ||
// this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor.layout()); | ||
// this.onInit.emit(this._editor); | ||
this.codeEditorEventService.fireEvent({ | ||
this.editorEventService.fireEvent({ | ||
eventName: CODE_EDITOR_EVENTS.onInit, | ||
@@ -250,3 +277,2 @@ target: this, | ||
this.zone.run(function () { return _this.value = _value; }); // value is not propagated to parent when executing outside zone. | ||
// console.log("write from the monaco:" + this._value); | ||
}; | ||
@@ -356,5 +382,6 @@ /** | ||
{ type: Component, args: [{ | ||
// tslint:disable-next-line:component-selector | ||
selector: 'angular-monaco-editor', | ||
template: "<div class=\"editor\" #codeEditor></div>", | ||
styles: [":host{display:block;min-height:200px}.editor{width:100%;height:98%}"], | ||
styles: [":host{display:block;min-height:200px}.editor{width:100%;height:100%}"], | ||
// 自定义输入控件:2.引入依赖服务ControlValueAccessor | ||
@@ -367,12 +394,10 @@ providers: [CODE_EDITOR_INPUT_VALUE_ACCESSOR, CodeEditorEventService] | ||
{ type: NgZone, }, | ||
{ type: CodeEditorEventService, }, | ||
{ type: undefined, decorators: [{ type: Inject, args: [ANGULAR_MONACO_EDITOR_CONFIG,] },] }, | ||
{ type: CodeEditorEventService, }, | ||
]; }; | ||
AngularMonacoEditorComponent.propDecorators = { | ||
"_editorComponent": [{ type: ViewChild, args: ['codeEditor',] },], | ||
"onInit": [{ type: Output },], | ||
"options": [{ type: Input, args: ['options',] },], | ||
"model": [{ type: Input, args: ['model',] },], | ||
}; | ||
return AngularMonacoEditorComponent; | ||
}()); | ||
}(BaseMonacoEditor)); | ||
@@ -430,4 +455,4 @@ /** | ||
export { AngularMonacoEditorModule, ANGULAR_MONACO_EDITOR_CONFIG, AngularMonacoEditorComponent as ɵb, CODE_EDITOR_INPUT_VALUE_ACCESSOR as ɵa, CodeEditorEventService as ɵc }; | ||
export { AngularMonacoEditorModule, ANGULAR_MONACO_EDITOR_CONFIG, AngularMonacoEditorComponent as ɵb, CODE_EDITOR_INPUT_VALUE_ACCESSOR as ɵa, BaseMonacoEditor as ɵc, CodeEditorEventService as ɵd }; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvbGliL2VkaXRvci9jb25maWcudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2NvbnN0YW50cy9ldmVudHMudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9hbmd1bGFyLW1vbmFjby1lZGl0b3IuY29tcG9uZW50LnRzIiwibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvbGliL2VkaXRvci9lZGl0b3IubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGluamVjdGlvblRva2Vuw6TCvcKcw6fClMKow6jCr8K0w6bCmMKOXG4vLyBodHRwczovL3NlZ21lbnRmYXVsdC5jb20vYS8xMTkwMDAwMDA4NjI2MzQ4XG5leHBvcnQgY29uc3QgQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbignQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcge1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICBkZWZhdWx0T3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55OyB9LFxuICBvbk1vbmFjb0xvYWQ/OiBGdW5jdGlvbjtcbn0iLCJleHBvcnQgY29uc3QgQ09ERV9FRElUT1JfRVZFTlRTID0ge1xuICAgIG9uSW5pdDogJ29uSW5pdCdcbn0iLCJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgYXNzaWduIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHBpY2sgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBDT0RFX0VESVRPUl9FVkVOVFMgfSBmcm9tICcuLi9jb25zdGFudHMvZXZlbnRzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvZGVFZGl0b3JFdmVudFNlcnZpY2Uge1xuICAgIHB1YmxpYyBldmVudE5hbWVzID0gT2JqZWN0LmtleXMoQ09ERV9FRElUT1JfRVZFTlRTKTtcbiAgICBwcml2YXRlIF9ldmVudHM6IGFueSA9IHt9OyAvLyDDpMK9wr/Dp8KUwqjDpMK6wovDpMK7wrZcblxuICAgIC8qKlxuICAgICAqIMOowq7CvsOnwr3CrsOlwpDCr8OnwpTCqMOkwrrCi8OkwrvCtlxuICAgICAqIEBwYXJhbSAgw6TCusKLw6TCu8K2XG4gICAgICovXG4gICAgYWRkRXZlbnQoZXZlbnQpe1xuICAgICAgICBhc3NpZ24odGhpcy5fZXZlbnRzLCBldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZXZlbnRzKTtcbiAgICB9XG5cbiAgICBmaXJlRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzW2V2ZW50LmV2ZW50TmFtZV0uZW1pdChldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRW1pdCBFdmVudDpcIiArIGV2ZW50KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgSW5qZWN0LCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgcGljayB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcsIEFuZ3VsYXJNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgQ29kZUVkaXRvckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09ERV9FRElUT1JfRVZFTlRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2V2ZW50cyc7XG5cbmRlY2xhcmUgY29uc3QgbW9uYWNvOiBhbnk7XG5cbmxldCBsb2FkZWRNb25hY28gPSBmYWxzZTtcbmxldCBsb2FkUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcblxuLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2OjEuw6XCsMKBw6jCo8KFQ29udHJvbFZhbHVlQWNjZXNzb3Jcbi8vIGh0dHBzOi8vY29kZS1leGFtcGxlcy5uZXQvemgtQ04vcS8yMTU0NzYxXG5leHBvcnQgY29uc3QgQ09ERV9FRElUT1JfSU5QVVRfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgLy8gaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdkYW5fMjAxMy9hcnRpY2xlL2RldGFpbHMvODEzMTQ5NTlcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYW5ndWxhci1tb25hY28tZWRpdG9yJyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiZWRpdG9yXCIgI2NvZGVFZGl0b3I+PC9kaXY+YCxcbiAgc3R5bGVzOiBbYDpob3N0e2Rpc3BsYXk6YmxvY2s7bWluLWhlaWdodDoyMDBweH0uZWRpdG9ye3dpZHRoOjEwMCU7aGVpZ2h0Ojk4JX1gXSxcbiAgLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2OjIuw6XCvMKVw6XChcKlw6TCvsKdw6jCtcKWw6bCnMKNw6XCisKhQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcHJvdmlkZXJzOiBbQ09ERV9FRElUT1JfSU5QVVRfVkFMVUVfQUNDRVNTT1IsIENvZGVFZGl0b3JFdmVudFNlcnZpY2VdXG59KVxuXG4vLyDDqMKHwqrDpcKuwprDpMK5wonDqMK+wpPDpcKFwqXDpsKOwqfDpMK7wrYgPC0+IE1vbmFjbyBFZHRvclxuXG4vLyDDqMKHwqrDpcKuwprDpMK5wonDqMK+wpPDpcKFwqXDpsKOwqfDpMK7wrY6My4xIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3JcbmV4cG9ydCBjbGFzcyBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9lZGl0b3I6IGFueTtcbiAgcHJpdmF0ZSBfb3B0aW9uczogYW55O1xuICAvLyBwcm90ZWN0ZWQgX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF92YWx1ZSA9ICcnO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvZGVFZGl0b3InKSBfZWRpdG9yQ29tcG9uZW50OiBFbGVtZW50UmVmOyAvLyDDpcKKwqjDpsKAwoHDpsK3wrvDpcKKwqDDpMK7wqPDp8KgwoHDp8K8wpbDqMK+wpHDpcKZwqhcblxuICBAT3V0cHV0KCkgb25Jbml0O1xuXG4gIEBJbnB1dCgnb3B0aW9ucycpXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IGFueSkge1xuICAgIC8vIMOpwrvCmMOowq7CpG9wdGlvbnModGhpcy5jb25maWcuZGVmYXVsdE9wdGlvbnMpICsgw6jCh8Kqw6XCrsKaw6TCucKJb3B0aW9ucyhvcHRpb25zKVxuICAgIHRoaXMuX29wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbmZpZy5kZWZhdWx0T3B0aW9ucywgb3B0aW9ucyk7XG4gICAgaWYgKHRoaXMuX2VkaXRvcikge1xuICAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuaW5pdE1vbmFjbyhvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgZ2V0IG9wdGlvbnMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIC8vIEBJbnB1dCgnbW9kZWwnKVxuICAvLyBzZXQgbW9kZWwobW9kZWw6IEFuZ3VsYXJFZGl0b3JNb2RlbCkge1xuICAvLyAgIHRoaXMub3B0aW9ucy5tb2RlbCA9IG1vZGVsO1xuICAvLyAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgLy8gICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gIC8vICAgICB0aGlzLmluaXRNb25hY28odGhpcy5vcHRpb25zKTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICAvLyDDpsKzwqjDpcKFwqVBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnw6/CvMKMw6XCnMKow6XCiMKbw6XCu8K6RWRpdG9yw6XCrsKew6TCvsKLw6bCl8K2w6jCrsK+w6fCvcKuY29uZmlnXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBASW5qZWN0KEFOR1VMQVJfTU9OQUNPX0VESVRPUl9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnLCBwcml2YXRlIGNvZGVFZGl0b3JFdmVudFNlcnZpY2U6IENvZGVFZGl0b3JFdmVudFNlcnZpY2UpIHtcblxuICAgIC8vIMOlwojCncOlwqfCi8OlwozClsOowofCqsOlwq7CmsOkwrnCicOkwrrCi8OkwrvCtlxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvZGVFZGl0b3JFdmVudFNlcnZpY2UuZXZlbnROYW1lcy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAvLyDDpcKIwpvDpcK7wrrDqMKHwqrDpcKuwprDpMK5wonDpMK6wovDpMK7wrbDr8K8wozDpsKtwqTDpcKkwoTDpMK9wpzDp8KUwqjDp8KtwonDpsKVwojDpMK6wo46IEBPdXRwdXQoKSBvbkluaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKSBcbiAgICAgIHNlbGZbbmFtZV0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAgIGNvbnN0IGV2ZW50UGFpciA9IHBpY2soc2VsZiwgbmFtZSk7XG4gICAgICBjb2RlRWRpdG9yRXZlbnRTZXJ2aWNlLmFkZEV2ZW50KGV2ZW50UGFpcik7XG4gICAgfSk7XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAobG9hZGVkTW9uYWNvKSB7XG4gICAgICAvLyBXYWl0IHVudGlsIG1vbmFjbyBlZGl0b3IgaXMgYXZhaWxhYmxlXG4gICAgICBsb2FkUHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMub3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZGVkTW9uYWNvID0gdHJ1ZTtcbiAgICAgIGxvYWRQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWcuYmFzZVVybCB8fCAnL2Fzc2V0cyc7XG4gICAgICAgIC8vIGlmICh0eXBlb2YoKDxhbnk+d2luZG93KS5tb25hY28pID09PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyAgIHJlc29sdmUoKTtcbiAgICAgICAgLy8gICByZXR1cm47XG4gICAgICAgIC8vIH1cbiAgICAgICAgY29uc3Qgb25Hb3RBbWRMb2FkZXI6IGFueSA9ICgpID0+IHtcbiAgICAgICAgICAvLyBMb2FkIG1vbmFjb1xuICAgICAgICAgICg8YW55PndpbmRvdykucmVxdWlyZS5jb25maWcoeyBwYXRoczogeyAndnMnOiBgJHtiYXNlVXJsfS9tb25hY28vdnNgIH0gfSk7XG4gICAgICAgICAgKDxhbnk+d2luZG93KS5yZXF1aXJlKFsndnMvZWRpdG9yL2VkaXRvci5tYWluJ10sICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWcub25Nb25hY29Mb2FkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLm9uTW9uYWNvTG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gTG9hZCBBTUQgbG9hZGVyIGlmIG5lY2Vzc2FyeVxuICAgICAgICBpZiAoISg8YW55PndpbmRvdykucmVxdWlyZSkge1xuICAgICAgICAgIGNvbnN0IGxvYWRlclNjcmlwdDogSFRNTFNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgICBsb2FkZXJTY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgICAgIGxvYWRlclNjcmlwdC5zcmMgPSBgJHtiYXNlVXJsfS9tb25hY28vdnMvbG9hZGVyLmpzYDtcbiAgICAgICAgICBsb2FkZXJTY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIG9uR290QW1kTG9hZGVyKTtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxvYWRlclNjcmlwdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25Hb3RBbWRMb2FkZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy8gaWYgKHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbikge1xuICAgIC8vICAgdGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgLy8gfVxuICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9lZGl0b3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRNb25hY28ob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0luaXQgdGhlIGN1c3RvbSBtb25hY28gY29kZSBlZGl0b3InKTtcblxuICAgIC8vIGNvbnN0IGhhc01vZGVsID0gISFvcHRpb25zLm1vZGVsO1xuICAgIGNvbnN0IGhhc01vZGVsID0gZmFsc2U7XG5cbiAgICAvLyBpZiAoaGFzTW9kZWwpIHtcbiAgICAvLyAgIG9wdGlvbnMubW9kZWwgPSBtb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKG9wdGlvbnMubW9kZWwudmFsdWUsIG9wdGlvbnMubW9kZWwubGFuZ3VhZ2UsIG9wdGlvbnMubW9kZWwudXJpKTtcbiAgICAvLyB9XG5cbiAgICB0aGlzLl9lZGl0b3IgPSBtb25hY28uZWRpdG9yLmNyZWF0ZSh0aGlzLl9lZGl0b3JDb21wb25lbnQubmF0aXZlRWxlbWVudCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWhhc01vZGVsKSB7XG4gICAgICB0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIG1vbmFjbyBlZGl0b3IgLT4gb3V0c2lkZSBjb21wb25lbnRcbiAgICB0aGlzLl9lZGl0b3Iub25EaWRDaGFuZ2VNb2RlbENvbnRlbnQoKGU6IGFueSkgPT4gdGhpcy5vbkNoYW5nZU1vZGVsQ29udGVudEhhbmRsZXIoZSkpO1xuXG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkQmx1ckVkaXRvclRleHQoKGU6IGFueSkgPT4gdGhpcy5vbkJsdXJFZGl0b3JUZXh0SGFuZGxlcihlKSk7XG5cbiAgICB0aGlzLl9lZGl0b3Iub25EaWRMYXlvdXRDaGFuZ2UoKGU6IGFueSkgPT4gdGhpcy5vbkxheW91dENoYW5nZUhhbmRsZXIoZSkpO1xuXG4gICAgLy8gcmVmcmVzaCBsYXlvdXQgb24gcmVzaXplIGV2ZW50LlxuICAgIC8vIGlmICh0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24pIHtcbiAgICAvLyAgIHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIC8vIH1cbiAgICAvLyB0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2VkaXRvci5sYXlvdXQoKSk7XG4gICAgLy8gdGhpcy5vbkluaXQuZW1pdCh0aGlzLl9lZGl0b3IpO1xuICAgIHRoaXMuY29kZUVkaXRvckV2ZW50U2VydmljZS5maXJlRXZlbnQoe1xuICAgICAgZXZlbnROYW1lOiBDT0RFX0VESVRPUl9FVkVOVFMub25Jbml0LFxuICAgICAgdGFyZ2V0OiB0aGlzLFxuICAgICAgZWRpdG9yOiB0aGlzLl9lZGl0b3JcbiAgICB9KTtcblxuICB9XG5cbiAgb25DaGFuZ2VNb2RlbENvbnRlbnRIYW5kbGVyKGUpIHtcbiAgICBjb25zdCBfdmFsdWUgPSB0aGlzLl9lZGl0b3IuZ2V0VmFsdWUoKTtcblxuICAgIC8vIG1vbmFjbyBlZGl0b3IgLT4gb3V0c2lkZSBjb21wb25lbnRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vSlRhbmdtaW5nL3RtL2lzc3Vlcy80IG5nWm9uZcOowq/CpsOowqfCo1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy52YWx1ZSA9IF92YWx1ZSk7IC8vIHZhbHVlIGlzIG5vdCBwcm9wYWdhdGVkIHRvIHBhcmVudCB3aGVuIGV4ZWN1dGluZyBvdXRzaWRlIHpvbmUuXG4gICAgLy8gY29uc29sZS5sb2coXCJ3cml0ZSBmcm9tIHRoZSBtb25hY286XCIgKyB0aGlzLl92YWx1ZSk7XG4gIH1cblxuICBvbkJsdXJFZGl0b3JUZXh0SGFuZGxlcihlKSB7XG5cbiAgICB0aGlzLm9uQ29udHJvbFRvdWNoZWQoKTtcbiAgfVxuXG4gIG9uTGF5b3V0Q2hhbmdlSGFuZGxlcihlKSB7XG4gICAgY29uc29sZS5sb2coJ0xheW91dCBjaGFuZ2VkOlxcbicgKyBlKTtcbiAgfVxuXG5cblxuXG4gIC8vIGdldCBhY2Nlc3NvclxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICAvLyBzZXQgYWNjZXNzb3IgaW5jbHVkaW5nIGNhbGwgdGhlIG9uY2hhbmdlIGNhbGxiYWNrXG4gIHNldCB2YWx1ZSh2OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdGhpcy52YWx1ZSkgey8vIMOmwrPCqMOmwoTCj8Oowr/CmcOnwqfCjcOlwobCmcOmwrPClcOvwrzCjMOlwoDCvMOlwr7Cl8Olwq3CpsOkwrnCoFxuICAgICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgIH1cblxuICAgIHRoaXMub25Db250cm9sVmFsdWVDaGFuZ2UodGhpcy52YWx1ZSk7IC8vIMOlwpzCqMOlwrHCnsOmwoDCp8Okwr/CrsOpwqXCsMOlwpnCqMOpwofCjMOowrDCg8OnwpTCqG9uQ29udHJvbFZhbHVlQ2hhbmdlw6bClsK5w6bCs8KVXG4gIH1cblxuICBsb2NhbEVkaXRvcigpIHsvLyBEZW1vOiBvdXRzaWRlIGNvbXBvbmVudCAtPiBtb25hY28gZWRpdG9yXG4gICAgdGhpcy53cml0ZVZhbHVlKCd0ZXN0Jyk7XG4gIH1cblxuICAvLyDDqMKHwqrDpcKuwprDpMK5wonDqMK+wpPDpcKFwqXDpsKOwqfDpMK7wrY6My4yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb1xuXG4gIC8vIG91dHNpZGUgY29tcG9uZW50IC0+IG1vbmFjbyBlZGl0b3JcblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgJyc7XG5cbiAgICAvLyBGaXggZm9yIHZhbHVlIGNoYW5nZSB3aGlsZSBkaXNwb3NlIGluIHByb2Nlc3MuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fZWRpdG9yIC8qJiYgIXRoaXMub3B0aW9ucy5tb2RlbCovKSB7XG4gICAgICAgIHRoaXMuX2VkaXRvci5zZXRWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwid3JpdGUgdG8gdGhlIGVkaXRvcjpcIiArIHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25Db250cm9sVmFsdWVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ29udHJvbFRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yw6bCj8KQw6TCvsKbw6fCmsKEw6TCusKLw6TCu8K2w6XCm8Kew6jCsMKDXG4gIG9uQ29udHJvbFZhbHVlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3LDpsKPwpDDpMK+wpvDp8KawoTDpMK6wovDpMK7wrbDpcKbwp7DqMKwwoNcbiAgb25Db250cm9sVG91Y2hlZCA9ICgpID0+IHtcbiAgfVxuXG59XG4iLCJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRywgQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9hbmd1bGFyLW1vbmFjby1lZGl0b3IuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50ICBcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyTW9uYWNvRWRpdG9yTW9kdWxlIHtcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFyTW9uYWNvRWRpdG9yTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUlBLHFCQUFhLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFDLDhCQUE4QixDQUFDOzs7Ozs7QUNKOUYsQUFBTyxxQkFBTSxrQkFBa0IsR0FBRztJQUM5QixNQUFNLEVBQUUsUUFBUTtDQUNuQixDQUFBOzs7Ozs7QUNGRDs7MEJBU3dCLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7dUJBQzVCLEVBQUU7Ozs7Ozs7Ozs7O0lBTXpCLHlDQUFROzs7OztJQUFSLFVBQVMsS0FBSztRQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMs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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tb25hY28tZWRpdG9yLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9hbmd1bGFyLW1vbmFjby1lZGl0b3IvbGliL2VkaXRvci9jb25maWcudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2NvbnN0YW50cy9ldmVudHMudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2Jhc2UtbW9uYWNvLWVkaXRvci50cyIsIm5nOi8vYW5ndWxhci1tb25hY28tZWRpdG9yL2xpYi9lZGl0b3IvYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQudHMiLCJuZzovL2FuZ3VsYXItbW9uYWNvLWVkaXRvci9saWIvZWRpdG9yL2VkaXRvci5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gaW5qZWN0aW9uVG9rZW7DpMK9wpzDp8KUwqjDqMKvwrTDpsKYwo5cbi8vIGh0dHBzOi8vc2VnbWVudGZhdWx0LmNvbS9hLzExOTAwMDAwMDg2MjYzNDhcbmV4cG9ydCBjb25zdCBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuKCdBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyB7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIGRlZmF1bHRPcHRpb25zPzogeyBba2V5OiBzdHJpbmddOiBhbnk7IH07XG4gIG9uTW9uYWNvTG9hZD86IEZ1bmN0aW9uO1xufVxuIiwiZXhwb3J0IGNvbnN0IENPREVfRURJVE9SX0VWRU5UUyA9IHtcbiAgICBvbkluaXQ6ICdvbkluaXQnXG59O1xuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBDT0RFX0VESVRPUl9FVkVOVFMgfSBmcm9tICcuLi9jb25zdGFudHMvZXZlbnRzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvZGVFZGl0b3JFdmVudFNlcnZpY2Uge1xuICAgIHB1YmxpYyBldmVudE5hbWVzID0gT2JqZWN0LmtleXMoQ09ERV9FRElUT1JfRVZFTlRTKTtcbiAgICBwcml2YXRlIF9ldmVudHM6IGFueSA9IHt9OyAvLyDDpMK9wr/Dp8KUwqjDpMK6wovDpMK7wrZcblxuICAgIC8qKlxuICAgICAqIMOowq7CvsOnwr3CrsOlwpDCr8OnwpTCqMOkwrrCi8OkwrvCtlxuICAgICAqIEBwYXJhbSAgw6TCusKLw6TCu8K2XG4gICAgICovXG4gICAgYWRkRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgYXNzaWduKHRoaXMuX2V2ZW50cywgZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmV2ZW50cyk7XG4gICAgfVxuXG4gICAgZmlyZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuX2V2ZW50c1tldmVudC5ldmVudE5hbWVdLmVtaXQoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkVtaXQgRXZlbnQ6XCIgKyBldmVudCk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IENvZGVFZGl0b3JFdmVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvZGUtZWRpdG9yLmV2ZW50LnNlcnZpY2UnO1xuXG5sZXQgbG9hZGVkTW9uYWNvID0gZmFsc2U7XG5sZXQgbG9hZFByb21pc2U6IFByb21pc2U8dm9pZD47XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTW9uYWNvRWRpdG9yIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgX2VkaXRvcjogYW55O1xuICBwcml2YXRlIF9vcHRpb25zOiBhbnk7XG4gIC8vIHByb3RlY3RlZCBfd2luZG93UmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgQFZpZXdDaGlsZCgnY29kZUVkaXRvcicpIF9lZGl0b3JDb21wb25lbnQ6IEVsZW1lbnRSZWY7IC8vIMOlworCqMOmwoDCgcOmwrfCu8OlworCoMOkwrvCo8OnwqDCgcOnwrzClsOowr7CkcOlwpnCqFxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1vdXRwdXQtb24tcHJlZml4XG4gIEBPdXRwdXQoKSBvbkluaXQ7XG5cbiAgQElucHV0KCdvcHRpb25zJylcbiAgc2V0IG9wdGlvbnMob3B0aW9uczogYW55KSB7XG4gICAgLy8gw6nCu8KYw6jCrsKkb3B0aW9ucyh0aGlzLmNvbmZpZy5kZWZhdWx0T3B0aW9ucykgKyDDqMKHwqrDpcKuwprDpMK5wolvcHRpb25zKG9wdGlvbnMpXG4gICAgdGhpcy5fb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29uZmlnLmRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcbiAgICBpZiAodGhpcy5fZWRpdG9yKSB7XG4gICAgICB0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5pbml0TW9uYWNvKG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuICBnZXQgb3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb2RlRWRpdG9yRXZlbnRTZXJ2aWNlOiBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlLCBwcml2YXRlIGNvbmZpZzogQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZykge1xuICAgICAgICAvLyDDpcKIwp3DpcKnwovDpcKMwpbDqMKHwqrDpcKuwprDpMK5wonDpMK6wovDpMK7wrZcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvZGVFZGl0b3JFdmVudFNlcnZpY2UuZXZlbnROYW1lcy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgLy8gw6XCiMKbw6XCu8K6w6jCh8Kqw6XCrsKaw6TCucKJw6TCusKLw6TCu8K2w6/CvMKMw6bCrcKkw6XCpMKEw6TCvcKcw6fClMKow6fCrcKJw6bClcKIw6TCusKOOiBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgICAgICAgICBzZWxmW25hbWVdID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgICAgICAgY29uc3QgZXZlbnRQYWlyID0gcGljayhzZWxmLCBuYW1lKTtcbiAgICAgICAgICBjb2RlRWRpdG9yRXZlbnRTZXJ2aWNlLmFkZEV2ZW50KGV2ZW50UGFpcik7XG4gICAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmIChsb2FkZWRNb25hY28pIHtcbiAgICAgIC8vIFdhaXQgdW50aWwgbW9uYWNvIGVkaXRvciBpcyBhdmFpbGFibGVcbiAgICAgIGxvYWRQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmluaXRNb25hY28odGhpcy5vcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkZWRNb25hY28gPSB0cnVlO1xuICAgICAgbG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvbmZpZy5iYXNlVXJsIHx8ICcvYXNzZXRzJztcbiAgICAgICAgLy8gaWYgKHR5cGVvZigoPGFueT53aW5kb3cpLm1vbmFjbykgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vICAgcmVzb2x2ZSgpO1xuICAgICAgICAvLyAgIHJldHVybjtcbiAgICAgICAgLy8gfVxuICAgICAgICBjb25zdCBvbkdvdEFtZExvYWRlcjogYW55ID0gKCkgPT4ge1xuICAgICAgICAgIC8vIExvYWQgbW9uYWNvXG4gICAgICAgICAgKDxhbnk+d2luZG93KS5yZXF1aXJlLmNvbmZpZyh7IHBhdGhzOiB7ICd2cyc6IGAke2Jhc2VVcmx9L21vbmFjby92c2AgfSB9KTtcbiAgICAgICAgICAoPGFueT53aW5kb3cpLnJlcXVpcmUoWyd2cy9lZGl0b3IvZWRpdG9yLm1haW4nXSwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZy5vbk1vbmFjb0xvYWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcub25Nb25hY29Mb2FkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmluaXRNb25hY28odGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBMb2FkIEFNRCBsb2FkZXIgaWYgbmVjZXNzYXJ5XG4gICAgICAgIGlmICghKDxhbnk+d2luZG93KS5yZXF1aXJlKSB7XG4gICAgICAgICAgY29uc3QgbG9hZGVyU2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgIGxvYWRlclNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgICAgICAgbG9hZGVyU2NyaXB0LnNyYyA9IGAke2Jhc2VVcmx9L21vbmFjby92cy9sb2FkZXIuanNgO1xuICAgICAgICAgIGxvYWRlclNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgb25Hb3RBbWRMb2FkZXIpO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobG9hZGVyU2NyaXB0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvbkdvdEFtZExvYWRlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBNb25hY28gRWRpdG9yIEluaXRpYWxpemVyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbml0TW9uYWNvKG9wdGlvbnM6IGFueSk6IHZvaWQgO1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9lZGl0b3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCBJbmplY3QsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHLCBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IENvZGVFZGl0b3JFdmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb2RlLWVkaXRvci5ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENPREVfRURJVE9SX0VWRU5UUyB9IGZyb20gJy4uL2NvbnN0YW50cy9ldmVudHMnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvck1vZGVsIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQmFzZU1vbmFjb0VkaXRvciB9IGZyb20gJy4uL2Jhc2UtbW9uYWNvLWVkaXRvcic7XG5cbmRlY2xhcmUgY29uc3QgbW9uYWNvOiBhbnk7XG5cbi8vIMOowofCqsOlwq7CmsOkwrnCicOowr7Ck8OlwoXCpcOmwo7Cp8OkwrvCtjoxLsOlwrDCgcOowqPChUNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4vLyBodHRwczovL2NvZGUtZXhhbXBsZXMubmV0L3poLUNOL3EvMjE1NDc2MVxuZXhwb3J0IGNvbnN0IENPREVfRURJVE9SX0lOUFVUX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIC8vIGh0dHBzOi8vYmxvZy5jc2RuLm5ldC93YW5nZGFuXzIwMTMvYXJ0aWNsZS9kZXRhaWxzLzgxMzE0OTU5XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYW5ndWxhci1tb25hY28tZWRpdG9yJyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiZWRpdG9yXCIgI2NvZGVFZGl0b3I+PC9kaXY+YCxcbiAgc3R5bGVzOiBbYDpob3N0e2Rpc3BsYXk6YmxvY2s7bWluLWhlaWdodDoyMDBweH0uZWRpdG9ye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9YF0sXG4gIC8vIMOowofCqsOlwq7CmsOkwrnCicOowr7Ck8OlwoXCpcOmwo7Cp8OkwrvCtjoyLsOlwrzClcOlwoXCpcOkwr7CncOowrXClsOmwpzCjcOlworCoUNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHByb3ZpZGVyczogW0NPREVfRURJVE9SX0lOUFVUX1ZBTFVFX0FDQ0VTU09SLCBDb2RlRWRpdG9yRXZlbnRTZXJ2aWNlXVxufSlcblxuLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2IDwtPiBNb25hY28gRWR0b3JcblxuLy8gw6jCh8Kqw6XCrsKaw6TCucKJw6jCvsKTw6XChcKlw6bCjsKnw6TCu8K2OjMuMSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG5leHBvcnQgY2xhc3MgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCBleHRlbmRzIEJhc2VNb25hY29FZGl0b3IgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgQElucHV0KCdtb2RlbCcpXG4gIHNldCBtb2RlbChtb2RlbDogQW5ndWxhckVkaXRvck1vZGVsKSB7XG4gICAgdGhpcy5vcHRpb25zLm1vZGVsID0gbW9kZWw7XG4gICAgaWYgKHRoaXMuX2VkaXRvcikge1xuICAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLm9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByb3RlY3RlZCBfd2luZG93UmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX3ZhbHVlID0gJyc7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSBlZGl0b3JFdmVudFNlcnZpY2U6IENvZGVFZGl0b3JFdmVudFNlcnZpY2UsIEBJbmplY3QoQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRykgcHJpdmF0ZSBhbmd1bGFyRWRpdG9yY29uZmlnOiBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnKSB7XG4gICAgc3VwZXIoZWRpdG9yRXZlbnRTZXJ2aWNlLCBhbmd1bGFyRWRpdG9yY29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0TW9uYWNvKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGhhc01vZGVsID0gISFvcHRpb25zLm1vZGVsO1xuXG4gICAgaWYgKGhhc01vZGVsKSB7XG4gICAgICBvcHRpb25zLm1vZGVsID0gbW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbChvcHRpb25zLm1vZGVsLnZhbHVlLCBvcHRpb25zLm1vZGVsLmxhbmd1YWdlLCBvcHRpb25zLm1vZGVsLnVyaSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZWRpdG9yID0gbW9uYWNvLmVkaXRvci5jcmVhdGUodGhpcy5fZWRpdG9yQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFoYXNNb2RlbCkge1xuICAgICAgdGhpcy5fZWRpdG9yLnNldFZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBtb25hY28gZWRpdG9yIC0+IG91dHNpZGUgY29tcG9uZW50XG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkQ2hhbmdlTW9kZWxDb250ZW50KChlOiBhbnkpID0+IHRoaXMub25DaGFuZ2VNb2RlbENvbnRlbnRIYW5kbGVyKGUpKTtcblxuICAgIHRoaXMuX2VkaXRvci5vbkRpZEJsdXJFZGl0b3JUZXh0KChlOiBhbnkpID0+IHRoaXMub25CbHVyRWRpdG9yVGV4dEhhbmRsZXIoZSkpO1xuXG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkTGF5b3V0Q2hhbmdlKChlOiBhbnkpID0+IHRoaXMub25MYXlvdXRDaGFuZ2VIYW5kbGVyKGUpKTtcblxuICAgIC8vIHJlZnJlc2ggbGF5b3V0IG9uIHJlc2l6ZSBldmVudC5cbiAgICAvLyBpZiAodGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uKSB7XG4gICAgLy8gICB0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9lZGl0b3IubGF5b3V0KCkpO1xuICAgIHRoaXMuZWRpdG9yRXZlbnRTZXJ2aWNlLmZpcmVFdmVudCh7XG4gICAgICBldmVudE5hbWU6IENPREVfRURJVE9SX0VWRU5UUy5vbkluaXQsXG4gICAgICB0YXJnZXQ6IHRoaXMsXG4gICAgICBlZGl0b3I6IHRoaXMuX2VkaXRvclxuICAgIH0pO1xuXG4gIH1cblxuICBvbkNoYW5nZU1vZGVsQ29udGVudEhhbmRsZXIoZSkge1xuICAgIGNvbnN0IF92YWx1ZSA9IHRoaXMuX2VkaXRvci5nZXRWYWx1ZSgpO1xuXG4gICAgLy8gbW9uYWNvIGVkaXRvciAtPiBvdXRzaWRlIGNvbXBvbmVudFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9KVGFuZ21pbmcvdG0vaXNzdWVzLzQgbmdab25lw6jCr8Kmw6jCp8KjXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLnZhbHVlID0gX3ZhbHVlKTsgLy8gdmFsdWUgaXMgbm90IHByb3BhZ2F0ZWQgdG8gcGFyZW50IHdoZW4gZXhlY3V0aW5nIG91dHNpZGUgem9uZS5cbiAgfVxuXG4gIG9uQmx1ckVkaXRvclRleHRIYW5kbGVyKGUpIHtcblxuICAgIHRoaXMub25Db250cm9sVG91Y2hlZCgpO1xuICB9XG5cbiAgb25MYXlvdXRDaGFuZ2VIYW5kbGVyKGUpIHtcbiAgICBjb25zb2xlLmxvZygnTGF5b3V0IGNoYW5nZWQ6XFxuJyArIGUpO1xuICB9XG5cbiAgLy8gZ2V0IGFjY2Vzc29yXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8vIHNldCBhY2Nlc3NvciBpbmNsdWRpbmcgY2FsbCB0aGUgb25jaGFuZ2UgY2FsbGJhY2tcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIGlmICh2ICE9PSB0aGlzLnZhbHVlKSB7Ly8gw6bCs8Kow6bChMKPw6jCv8KZw6fCp8KNw6XChsKZw6bCs8KVw6/CvMKMw6XCgMK8w6XCvsKXw6XCrcKmw6TCucKgXG4gICAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgfVxuXG4gICAgdGhpcy5vbkNvbnRyb2xWYWx1ZUNoYW5nZSh0aGlzLnZhbHVlKTsgLy8gw6XCnMKow6XCscKew6bCgMKnw6TCv8Kuw6nCpcKww6XCmcKow6nCh8KMw6jCsMKDw6fClMKob25Db250cm9sVmFsdWVDaGFuZ2XDpsKWwrnDpsKzwpVcbiAgfVxuXG4gIGxvY2FsRWRpdG9yKCkgey8vIERlbW86IG91dHNpZGUgY29tcG9uZW50IC0+IG1vbmFjbyBlZGl0b3JcbiAgICB0aGlzLndyaXRlVmFsdWUoJ3Rlc3QnKTtcbiAgfVxuXG4gIC8vIMOowofCqsOlwq7CmsOkwrnCicOowr7Ck8OlwoXCpcOmwo7Cp8OkwrvCtjozLjIgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvXG5cbiAgLy8gb3V0c2lkZSBjb21wb25lbnQgLT4gbW9uYWNvIGVkaXRvclxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSB8fCAnJztcblxuICAgIC8vIEZpeCBmb3IgdmFsdWUgY2hhbmdlIHdoaWxlIGRpc3Bvc2UgaW4gcHJvY2Vzcy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9lZGl0b3IgLyomJiAhdGhpcy5vcHRpb25zLm1vZGVsKi8pIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yLnNldFZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJ3cml0ZSB0byB0aGUgZWRpdG9yOlwiICsgdGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNvbnRyb2xWYWx1ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Db250cm9sVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3LDpsKPwpDDpMK+wpvDp8KawoTDpMK6wovDpMK7wrbDpcKbwp7DqMKwwoNcbiAgb25Db250cm9sVmFsdWVDaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvcsOmwo/CkMOkwr7Cm8OnwprChMOkwrrCi8OkwrvCtsOlwpvCnsOowrDCg1xuICBvbkNvbnRyb2xUb3VjaGVkID0gKCkgPT4ge1xuICB9XG5cbn1cbiIsImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBTkdVTEFSX01PTkFDT19FRElUT1JfQ09ORklHLCBBbmd1bGFyTW9uYWNvRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgQW5ndWxhck1vbmFjb0VkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vYW5ndWxhci1tb25hY28tZWRpdG9yL2FuZ3VsYXItbW9uYWNvLWVkaXRvci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEFuZ3VsYXJNb25hY29FZGl0b3JDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyTW9uYWNvRWRpdG9yTW9kdWxlIHtcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQW5ndWxhck1vbmFjb0VkaXRvckNvbmZpZyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFyTW9uYWNvRWRpdG9yTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQU5HVUxBUl9NT05BQ09fRURJVE9SX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbInRzbGliXzEuX19leHRlbmRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7O0FBSUEscUJBQWEsNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQUMsOEJBQThCLENBQUM7Ozs7OztBQ0o5RixBQUFPLHFCQUFNLGtCQUFrQixHQUFHO0lBQzlCLE1BQU0sRUFBRSxRQUFRO0NBQ25CLENBQUM7Ozs7OztBQ0ZGOzswQkFRd0IsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQzt1QkFDNUIsRUFBRTs7Ozs7Ozs7Ozs7SUFNekIseUNBQVE7Ozs7O0lBQVIsVUFBUyxLQUFLO1FBQ1YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7O0tBRS9COzs7OztJQUVELDBDQUFTOzs7O0lBQVQsVUFBVSxLQUFLO1FBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDOztLQUU3Qzs7Z0JBakJKLFVBQVU7O2lDQU5YOzs7Ozs7O0FDQUEsQUFPQSxxQkFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLHFCQUFJLFdBQTBCLENBQUM7Ozs7O0lBMEI3QiwwQkFBb0Isc0JBQThDLEVBQVUsTUFBaUM7UUFBekYsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQTJCOztRQUV2RyxxQkFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJOztZQUU3QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxZQUFZ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 |
@@ -1,2 +0,1 @@ | ||
import { AfterViewInit, ElementRef, OnDestroy } from '@angular/core'; | ||
import { NgZone } from '@angular/core'; | ||
@@ -6,16 +5,12 @@ import { ControlValueAccessor } from '@angular/forms'; | ||
import { CodeEditorEventService } from '../services/code-editor.event.service'; | ||
import { AngularEditorModel } from '../types'; | ||
import { BaseMonacoEditor } from '../base-monaco-editor'; | ||
export declare const CODE_EDITOR_INPUT_VALUE_ACCESSOR: any; | ||
export declare class AngularMonacoEditorComponent implements AfterViewInit, ControlValueAccessor, OnDestroy { | ||
export declare class AngularMonacoEditorComponent extends BaseMonacoEditor implements ControlValueAccessor { | ||
private zone; | ||
private config; | ||
private codeEditorEventService; | ||
protected _editor: any; | ||
private _options; | ||
private editorEventService; | ||
private angularEditorconfig; | ||
model: AngularEditorModel; | ||
private _value; | ||
_editorComponent: ElementRef; | ||
onInit: any; | ||
options: any; | ||
constructor(zone: NgZone, config: AngularMonacoEditorConfig, codeEditorEventService: CodeEditorEventService); | ||
ngAfterViewInit(): void; | ||
ngOnDestroy(): void; | ||
constructor(zone: NgZone, editorEventService: CodeEditorEventService, angularEditorconfig: AngularMonacoEditorConfig); | ||
protected initMonaco(options: any): void; | ||
@@ -22,0 +17,0 @@ onChangeModelContentHandler(e: any): void; |
{ | ||
"name": "angular-monaco-editor", | ||
"version": "1.4.1", | ||
"version": "1.5.0", | ||
"description": "To utilize the Monaco Code Editor as an Angular Component.", | ||
@@ -5,0 +5,0 @@ "author": "courage007 <wang_xufa@163.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
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
322321
40
2408
1