Socket
Socket
Sign inDemoInstall

ngx-markdown

Package Overview
Dependencies
Maintainers
1
Versions
92
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-markdown - npm Package Compare versions

Comparing version 7.1.3 to 7.1.4-beta.0

2

bundles/ngx-markdown.umd.min.js

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

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("marked"),require("@angular/common"),require("@angular/common/http"),require("@angular/platform-browser"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("ngx-markdown",["exports","@angular/core","marked","@angular/common","@angular/common/http","@angular/platform-browser","rxjs/operators"],t):t(e["ngx-markdown"]={},e.ng.core,null,e.ng.common,e.ng.common.http,e.ng.platformBrowser,e.rxjs.operators)}(this,function(e,o,a,n,t,r,i){"use strict";var s=function(){function e(){}return e.prototype.transform=function(e,t){return"string"!=typeof e?(console.error("LanguagePipe has been invoked with an invalid value type ["+e+"]"),e):"string"!=typeof t?(console.error("LanguagePipe has been invoked with an invalid parameter ["+t+"]"),e):"```"+t+"\n"+e+"\n```"},e.decorators=[{type:o.Pipe,args:[{name:"language"}]}],e}(),u=function(e,t){return(u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function p(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(r=o.next()).done;)a.push(r.value)}catch(s){i={error:s}}finally{try{r&&!r.done&&(n=o["return"])&&n.call(o)}finally{if(i)throw i.error}}return a}function l(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(p(arguments[t]));return e}var c=function w(){},h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return function r(e,t){function n(){this.constructor=e}u(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(t,e),t}(a.Renderer),f="[ngx-markdown] When using the [src] attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information",m=function(){function e(e,t,n,r){this.platform=e,this.http=t,this.domSanitizer=n,this.options=r}return Object.defineProperty(e.prototype,"options",{get:function(){return this._options},set:function(e){this._options=Object.assign({},{renderer:new h},this._options,e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"renderer",{get:function(){return this.options.renderer},set:function(e){this.options.renderer=e},enumerable:!0,configurable:!0}),e.prototype.compile=function(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=this.options);var r=this.precompile(e),i=a.parse(t?this.decodeHtml(r):r,n);return n.sanitize&&!n.sanitizer?this.domSanitizer.sanitize(o.SecurityContext.HTML,i):i},e.prototype.getSource=function(t){var n=this;if(!this.http)throw new Error(f);return this.http.get(t,{responseType:"text"}).pipe(i.map(function(e){return n.handleExtension(t,e)}))},e.prototype.highlight=function(e){n.isPlatformBrowser(this.platform)&&"undefined"!=typeof Prism&&(e?Prism.highlightAllUnder(e):Prism.highlightAll(!1))},e.prototype.decodeHtml=function(e){if(n.isPlatformBrowser(this.platform)){var t=document.createElement("textarea");return t.innerHTML=e,t.value}return e},e.prototype.handleExtension=function(e,t){var n=e?e.split("?")[0].split(".").splice(-1).join():null;return"md"!==n?"```"+n+"\n"+t+"\n```":t},e.prototype.precompile=function(e){return e?e.split("\n").map(function(e){var t=n;return 0<e.length&&(t=isNaN(t)?e.search(/\S|$/):Math.min(e.search(/\S|$/),t)),isNaN(n)&&(n=t),t?e.substring(t):e}).join("\n"):"";var n},e.decorators=[{type:o.Injectable}],e.ctorParameters=function(){return[{type:Object,decorators:[{type:o.Inject,args:[o.PLATFORM_ID]}]},{type:t.HttpClient,decorators:[{type:o.Optional}]},{type:r.DomSanitizer},{type:c}]},e}(),d={LineHighlight:"line-highlight",LineNumbers:"line-numbers"},g=function(){function e(e,t){this.element=e,this.markdownService=t,this._lineHighlight=!1,this._lineNumbers=!1,this.error=new o.EventEmitter,this.load=new o.EventEmitter}return Object.defineProperty(e.prototype,"_isTranscluded",{get:function(){return!this._data&&!this._src},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"data",{get:function(){return this._data},set:function(e){this._data=e,this.render(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"src",{get:function(){return this._src},set:function(e){var t=this;this._src=e,this.markdownService.getSource(e).subscribe(function(e){t.render(e),t.load.emit(e)},function(e){return t.error.emit(e)})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lineNumbers",{get:function(){return this._lineNumbers},set:function(e){this._lineNumbers=this.coerceBooleanProperty(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lineHighlight",{get:function(){return this._lineHighlight},set:function(e){this._lineHighlight=this.coerceBooleanProperty(e)},enumerable:!0,configurable:!0}),e.prototype.ngAfterViewInit=function(){this._isTranscluded&&this.render(this.element.nativeElement.innerHTML,!0)},e.prototype.render=function(e,t){void 0===t&&(t=!1),this.element.nativeElement.innerHTML=this.markdownService.compile(e,t),this.handlePlugins(),this.markdownService.highlight(this.element.nativeElement)},e.prototype.coerceBooleanProperty=function(e){return null!=e&&""+e!="false"},e.prototype.handlePlugins=function(){this.lineHighlight&&(this.setPluginClass(this.element.nativeElement,d.LineHighlight),this.setPluginOptions(this.element.nativeElement,{dataLine:this.line,dataLineOffset:this.lineOffset})),this.lineNumbers&&(this.setPluginClass(this.element.nativeElement,d.LineNumbers),this.setPluginOptions(this.element.nativeElement,{dataStart:this.start}))},e.prototype.setPluginClass=function(e,t){for(var n,r=e.querySelectorAll("pre"),i=0;i<r.length;i++){var o=t instanceof Array?t:[t];(n=r.item(i).classList).add.apply(n,l(o))}},e.prototype.setPluginOptions=function(e,i){for(var o=this,a=e.querySelectorAll("pre"),t=function(r){Object.keys(i).forEach(function(e){var t=i[e];if(t){var n=o.toLispCase(e);a.item(r).setAttribute(n,t.toString())}})},n=0;n<a.length;n++)t(n)},e.prototype.toLispCase=function(e){var t=e.match(/([A-Z])/g);if(!t)return e;for(var n=e.toString(),r=0,i=t.length;r<i;r++)n=n.replace(new RegExp(t[r]),"-"+t[r].toLowerCase());return"-"===n.slice(0,1)&&(n=n.slice(1)),n},e.decorators=[{type:o.Component,args:[{selector:"markdown, [markdown]",template:"<ng-content></ng-content>"}]}],e.ctorParameters=function(){return[{type:o.ElementRef},{type:m}]},e.propDecorators={data:[{type:o.Input}],src:[{type:o.Input}],lineNumbers:[{type:o.Input}],start:[{type:o.Input}],lineHighlight:[{type:o.Input}],line:[{type:o.Input}],lineOffset:[{type:o.Input}],error:[{type:o.Output}],load:[{type:o.Output}]},e}(),y=function(){function e(e,t,n){this.elementRef=e,this.markdownService=t,this.zone=n}return e.prototype.transform=function(e){var t=this;if(null==e)return"";if("string"!=typeof e)return console.error("MarkdownPipe has been invoked with an invalid value type ["+e+"]"),e;var n=this.markdownService.compile(e);return this.zone.onStable.pipe(i.first()).subscribe(function(){return t.markdownService.highlight(t.elementRef.nativeElement)}),n},e.decorators=[{type:o.Pipe,args:[{name:"markdown"}]}],e.ctorParameters=function(){return[{type:o.ElementRef},{type:m},{type:o.NgZone}]},e}(),v={provide:c,useValue:{gfm:!0,tables:!0,breaks:!1,pedantic:!1,sanitize:!1,smartLists:!0,smartypants:!1}},b=[s,g,y],P=function(){function t(){}return t.forRoot=function(e){return{ngModule:t,providers:l([m],e?[e.loader||[],e.markedOptions||v]:[v])}},t.forChild=function(){return{ngModule:t}},t.decorators=[{type:o.NgModule,args:[{exports:l(b),declarations:l(b)}]}],t}();e.LanguagePipe=s,e.MarkdownComponent=g,e.initialMarkedOptions=v,e.MarkdownModule=P,e.MarkdownPipe=y,e.errorSrcWithoutHttpClient=f,e.MarkdownService=m,e.MarkedOptions=c,e.MarkedRenderer=h,e.PrismPlugin=d,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("marked"),require("@angular/common"),require("@angular/common/http"),require("@angular/platform-browser"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("ngx-markdown",["exports","@angular/core","marked","@angular/common","@angular/common/http","@angular/platform-browser","rxjs/operators"],t):t(e["ngx-markdown"]={},e.ng.core,null,e.ng.common,e.ng.common.http,e.ng.platformBrowser,e.rxjs.operators)}(this,function(e,o,a,n,t,r,i){"use strict";var s=function(){function e(){}return e.prototype.transform=function(e,t){return"string"!=typeof e?(console.error("LanguagePipe has been invoked with an invalid value type ["+e+"]"),e):"string"!=typeof t?(console.error("LanguagePipe has been invoked with an invalid parameter ["+t+"]"),e):"```"+t+"\n"+e+"\n```"},e.decorators=[{type:o.Pipe,args:[{name:"language"}]}],e}(),u=function(e,t){return(u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function p(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(r=o.next()).done;)a.push(r.value)}catch(s){i={error:s}}finally{try{r&&!r.done&&(n=o["return"])&&n.call(o)}finally{if(i)throw i.error}}return a}function l(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(p(arguments[t]));return e}var c=function P(){},h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return function r(e,t){function n(){this.constructor=e}u(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(t,e),t}(a.Renderer),f="[ngx-markdown] When using the [src] attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information",m=function(){function e(e,t,n,r){this.platform=e,this.http=t,this.domSanitizer=n,this.options=r}return Object.defineProperty(e.prototype,"options",{get:function(){return this._options},set:function(e){this._options=Object.assign({},{renderer:new h},this._options,e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"renderer",{get:function(){return this.options.renderer},set:function(e){this.options.renderer=e},enumerable:!0,configurable:!0}),e.prototype.compile=function(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=this.options);var r=this.precompile(e),i=a.parse(t?this.decodeHtml(r):r,n);return n.sanitize&&!n.sanitizer?this.domSanitizer.sanitize(o.SecurityContext.HTML,i):i},e.prototype.getSource=function(t){var n=this;if(!this.http)throw new Error(f);return this.http.get(t,{responseType:"text"}).pipe(i.map(function(e){return n.handleExtension(t,e)}))},e.prototype.highlight=function(e){n.isPlatformBrowser(this.platform)&&"undefined"!=typeof Prism&&(e?Prism.highlightAllUnder(e):Prism.highlightAll(!1))},e.prototype.decodeHtml=function(e){if(n.isPlatformBrowser(this.platform)){var t=document.createElement("textarea");return t.innerHTML=e,t.value}return e},e.prototype.handleExtension=function(e,t){var n=e?e.split("?")[0].split(".").splice(-1).join():null;return"md"!==n?"```"+n+"\n"+t+"\n```":t},e.prototype.precompile=function(e){return e?e.split("\n").map(function(e){var t=n;return 0<e.length&&(t=isNaN(t)?e.search(/\S|$/):Math.min(e.search(/\S|$/),t)),isNaN(n)&&(n=t),t?e.substring(t):e}).join("\n"):"";var n},e.decorators=[{type:o.Injectable}],e.ctorParameters=function(){return[{type:Object,decorators:[{type:o.Inject,args:[o.PLATFORM_ID]}]},{type:t.HttpClient,decorators:[{type:o.Optional}]},{type:r.DomSanitizer},{type:c}]},e}(),d={LineHighlight:"line-highlight",LineNumbers:"line-numbers"},g=function(){function e(e,t){this.element=e,this.markdownService=t,this.error=new o.EventEmitter,this.load=new o.EventEmitter,this._lineHighlight=!1,this._lineNumbers=!1}return Object.defineProperty(e.prototype,"lineNumbers",{get:function(){return this._lineNumbers},set:function(e){this._lineNumbers=this.coerceBooleanProperty(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lineHighlight",{get:function(){return this._lineHighlight},set:function(e){this._lineHighlight=this.coerceBooleanProperty(e)},enumerable:!0,configurable:!0}),e.prototype.ngOnChanges=function(){this.data?this.handleData():this.src&&this.handleSrc()},e.prototype.ngAfterViewInit=function(){this.data||this.src||this.handleTransclusion()},e.prototype.render=function(e,t){void 0===t&&(t=!1),this.element.nativeElement.innerHTML=this.markdownService.compile(e,t),this.handlePlugins(),this.markdownService.highlight(this.element.nativeElement)},e.prototype.coerceBooleanProperty=function(e){return null!=e&&""+e!="false"},e.prototype.handleData=function(){this.render(this.data)},e.prototype.handleSrc=function(){var t=this;this.markdownService.getSource(this.src).subscribe(function(e){t.render(e),t.load.emit(e)},function(e){return t.error.emit(e)})},e.prototype.handleTransclusion=function(){this.render(this.element.nativeElement.innerHTML,!0)},e.prototype.handlePlugins=function(){this.lineHighlight&&(this.setPluginClass(this.element.nativeElement,d.LineHighlight),this.setPluginOptions(this.element.nativeElement,{dataLine:this.line,dataLineOffset:this.lineOffset})),this.lineNumbers&&(this.setPluginClass(this.element.nativeElement,d.LineNumbers),this.setPluginOptions(this.element.nativeElement,{dataStart:this.start}))},e.prototype.setPluginClass=function(e,t){for(var n,r=e.querySelectorAll("pre"),i=0;i<r.length;i++){var o=t instanceof Array?t:[t];(n=r.item(i).classList).add.apply(n,l(o))}},e.prototype.setPluginOptions=function(e,i){for(var o=this,a=e.querySelectorAll("pre"),t=function(r){Object.keys(i).forEach(function(e){var t=i[e];if(t){var n=o.toLispCase(e);a.item(r).setAttribute(n,t.toString())}})},n=0;n<a.length;n++)t(n)},e.prototype.toLispCase=function(e){var t=e.match(/([A-Z])/g);if(!t)return e;for(var n=e.toString(),r=0,i=t.length;r<i;r++)n=n.replace(new RegExp(t[r]),"-"+t[r].toLowerCase());return"-"===n.slice(0,1)&&(n=n.slice(1)),n},e.decorators=[{type:o.Component,args:[{selector:"markdown, [markdown]",template:"<ng-content></ng-content>"}]}],e.ctorParameters=function(){return[{type:o.ElementRef},{type:m}]},e.propDecorators={data:[{type:o.Input}],src:[{type:o.Input}],lineNumbers:[{type:o.Input}],start:[{type:o.Input}],lineHighlight:[{type:o.Input}],line:[{type:o.Input}],lineOffset:[{type:o.Input}],error:[{type:o.Output}],load:[{type:o.Output}]},e}(),y=function(){function e(e,t,n){this.elementRef=e,this.markdownService=t,this.zone=n}return e.prototype.transform=function(e){var t=this;if(null==e)return"";if("string"!=typeof e)return console.error("MarkdownPipe has been invoked with an invalid value type ["+e+"]"),e;var n=this.markdownService.compile(e);return this.zone.onStable.pipe(i.first()).subscribe(function(){return t.markdownService.highlight(t.elementRef.nativeElement)}),n},e.decorators=[{type:o.Pipe,args:[{name:"markdown"}]}],e.ctorParameters=function(){return[{type:o.ElementRef},{type:m},{type:o.NgZone}]},e}(),v={provide:c,useValue:{gfm:!0,tables:!0,breaks:!1,pedantic:!1,sanitize:!1,smartLists:!0,smartypants:!1}},b=[s,g,y],w=function(){function t(){}return t.forRoot=function(e){return{ngModule:t,providers:l([m],e?[e.loader||[],e.markedOptions||v]:[v])}},t.forChild=function(){return{ngModule:t}},t.decorators=[{type:o.NgModule,args:[{exports:l(b),declarations:l(b)}]}],t}();e.LanguagePipe=s,e.MarkdownComponent=g,e.initialMarkedOptions=v,e.MarkdownModule=w,e.MarkdownPipe=y,e.errorSrcWithoutHttpClient=f,e.MarkdownService=m,e.MarkedOptions=c,e.MarkedRenderer=h,e.PrismPlugin=d,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ngx-markdown.umd.min.js.map

@@ -16,6 +16,6 @@ /**

this.markdownService = markdownService;
this.error = new EventEmitter();
this.load = new EventEmitter();
this._lineHighlight = false;
this._lineNumbers = false;
this.error = new EventEmitter();
this.load = new EventEmitter();
}

@@ -25,37 +25,2 @@ /**

*/
get _isTranscluded() {
return !this._data && !this._src;
}
/**
* @return {?}
*/
get data() { return this._data; }
/**
* @param {?} value
* @return {?}
*/
set data(value) {
this._data = value;
this.render(value);
}
/**
* @return {?}
*/
get src() { return this._src; }
/**
* @param {?} value
* @return {?}
*/
set src(value) {
this._src = value;
this.markdownService
.getSource(value)
.subscribe(markdown => {
this.render(markdown);
this.load.emit(markdown);
}, error => this.error.emit(error));
}
/**
* @return {?}
*/
get lineNumbers() { return this._lineNumbers; }

@@ -79,5 +44,18 @@ /**

*/
ngOnChanges() {
if (this.data) {
this.handleData();
return;
}
if (this.src) {
this.handleSrc();
return;
}
}
/**
* @return {?}
*/
ngAfterViewInit() {
if (this._isTranscluded) {
this.render(this.element.nativeElement.innerHTML, true);
if (!this.data && !this.src) {
this.handleTransclusion();
}

@@ -105,2 +83,25 @@ }

*/
handleData() {
this.render(this.data);
}
/**
* @return {?}
*/
handleSrc() {
this.markdownService
.getSource(this.src)
.subscribe(markdown => {
this.render(markdown);
this.load.emit(markdown);
}, error => this.error.emit(error));
}
/**
* @return {?}
*/
handleTransclusion() {
this.render(this.element.nativeElement.innerHTML, true);
}
/**
* @return {?}
*/
handlePlugins() {

@@ -196,10 +197,6 @@ if (this.lineHighlight) {

/** @type {?} */
MarkdownComponent.prototype._data;
MarkdownComponent.prototype.data;
/** @type {?} */
MarkdownComponent.prototype._lineHighlight;
MarkdownComponent.prototype.src;
/** @type {?} */
MarkdownComponent.prototype._lineNumbers;
/** @type {?} */
MarkdownComponent.prototype._src;
/** @type {?} */
MarkdownComponent.prototype.start;

@@ -215,2 +212,6 @@ /** @type {?} */

/** @type {?} */
MarkdownComponent.prototype._lineHighlight;
/** @type {?} */
MarkdownComponent.prototype._lineNumbers;
/** @type {?} */
MarkdownComponent.prototype.element;

@@ -221,2 +222,2 @@ /** @type {?} */

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW1hcmtkb3duLyIsInNvdXJjZXMiOlsic3JjL21hcmtkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPN0MsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7SUFnRDVCLFlBQ1MsU0FDQTtRQURBLFlBQU8sR0FBUCxPQUFPO1FBQ1Asb0JBQWUsR0FBZixlQUFlOzhCQWhEQyxLQUFLOzRCQUNQLEtBQUs7UUEwQzVCLGFBQWtCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDN0MsWUFBaUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQUt2Qzs7OztRQTdDTyxjQUFjO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs7Ozs7SUFHbkMsSUFDSSxJQUFJLEtBQWEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Ozs7O0lBQ3pDLElBQUksSUFBSSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNwQjs7OztJQUVELElBQ0ksR0FBRyxLQUFhLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFOzs7OztJQUN2QyxJQUFJLEdBQUcsQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxlQUFlO2FBQ2pCLFNBQVMsQ0FBQyxLQUFLLENBQUM7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QUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDM0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEI7UUFDRCxPQUFPLEdBQUcsQ0FBQzs7OztZQXRIZCxTQUFTLFNBQUM7O2dCQUVULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLFFBQVEsRUFBRSwyQkFBMkI7YUFDdEM7Ozs7WUFUa0MsVUFBVTtZQUVwQyxlQUFlOzs7bUJBa0JyQixLQUFLO2tCQU9MLEtBQUs7MEJBZ0JMLEtBQUs7b0JBR0wsS0FBSzs0QkFHTCxLQUFLO21CQUdMLEtBQUs7eUJBQ0wsS0FBSztvQkFFTCxNQUFNO21CQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWFya2Rvd25TZXJ2aWNlIH0gZnJvbSAnLi9tYXJrZG93bi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJpc21QbHVnaW4gfSBmcm9tICcuL3ByaXNtLXBsdWdpbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdtYXJrZG93biwgW21hcmtkb3duXScsXHJcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcmtkb3duQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJpdmF0ZSBfZGF0YTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2xpbmVIaWdobGlnaHQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9saW5lTnVtYmVycyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3NyYzogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIGdldCBfaXNUcmFuc2NsdWRlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5fZGF0YSAmJiAhdGhpcy5fc3JjO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgZGF0YSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZGF0YTsgfVxyXG4gIHNldCBkYXRhKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMucmVuZGVyKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHNyYygpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fc3JjOyB9XHJcbiAgc2V0IHNyYyh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zcmMgPSB2YWx1ZTtcclxuICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlXHJcbiAgICAgIC5nZXRTb3VyY2UodmFsdWUpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgbWFya2Rvd24gPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXIobWFya2Rvd24pO1xyXG4gICAgICAgICAgdGhpcy5sb2FkLmVtaXQobWFya2Rvd24pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4gdGhpcy5lcnJvci5lbWl0KGVycm9yKSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8vIFBsdWdpbiAtIGxpbmVOdW1iZXJzXHJcbiAgQElucHV0KClcclxuICBnZXQgbGluZU51bWJlcnMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9saW5lTnVtYmVyczsgfVxyXG4gIHNldCBsaW5lTnVtYmVycyh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9saW5lTnVtYmVycyA9IHRoaXMuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxyXG4gIEBJbnB1dCgpIHN0YXJ0OiBudW1iZXI7XHJcblxyXG4gIC8vIFBsdWdpbiAtIGxpbmVIaWdobGlnaHRcclxuICBASW5wdXQoKVxyXG4gIGdldCBsaW5lSGlnaGxpZ2h0KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fbGluZUhpZ2hsaWdodDsgfVxyXG4gIHNldCBsaW5lSGlnaGxpZ2h0KHZhbHVlOiBib29sZWFuKSB7IHRoaXMuX2xpbmVIaWdobGlnaHQgPSB0aGlzLmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cclxuICBASW5wdXQoKSBsaW5lOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBASW5wdXQoKSBsaW5lT2Zmc2V0OiBudW1iZXI7XHJcblxyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHVibGljIG1hcmtkb3duU2VydmljZTogTWFya2Rvd25TZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLl9pc1RyYW5zY2x1ZGVkKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXIobWFya2Rvd246IHN0cmluZywgZGVjb2RlSHRtbCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLm1hcmtkb3duU2VydmljZS5jb21waWxlKG1hcmtkb3duLCBkZWNvZGVIdG1sKTtcclxuICAgIHRoaXMuaGFuZGxlUGx1Z2lucygpO1xyXG4gICAgdGhpcy5tYXJrZG93blNlcnZpY2UuaGlnaGxpZ2h0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBgJHt2YWx1ZX1gICE9PSAnZmFsc2UnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVQbHVnaW5zKCkge1xyXG4gICAgaWYgKHRoaXMubGluZUhpZ2hsaWdodCkge1xyXG4gICAgICB0aGlzLnNldFBsdWdpbkNsYXNzKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBQcmlzbVBsdWdpbi5MaW5lSGlnaGxpZ2h0KTtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5PcHRpb25zKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCB7IGRhdGFMaW5lOiB0aGlzLmxpbmUsIGRhdGFMaW5lT2Zmc2V0OiB0aGlzLmxpbmVPZmZzZXQgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5saW5lTnVtYmVycykge1xyXG4gICAgICB0aGlzLnNldFBsdWdpbkNsYXNzKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBQcmlzbVBsdWdpbi5MaW5lTnVtYmVycyk7XHJcbiAgICAgIHRoaXMuc2V0UGx1Z2luT3B0aW9ucyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgeyBkYXRhU3RhcnQ6IHRoaXMuc3RhcnQgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFBsdWdpbkNsYXNzKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBwbHVnaW46IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCBwcmVFbGVtZW50cyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlJyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZUVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBwbHVnaW4gaW5zdGFuY2VvZiBBcnJheSA/IHBsdWdpbiA6IFtwbHVnaW5dO1xyXG4gICAgICBwcmVFbGVtZW50cy5pdGVtKGkpLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFBsdWdpbk9wdGlvbnMoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM6IG9iamVjdCkge1xyXG4gICAgY29uc3QgcHJlRWxlbWVudHMgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZScpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBPYmplY3Qua2V5cyhvcHRpb25zKS5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgICAgY29uc3QgYXR0cmlidXRlVmFsdWUgPSBvcHRpb25zW29wdGlvbl07XHJcbiAgICAgICAgaWYgKCEhYXR0cmlidXRlVmFsdWUpIHtcclxuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWUgPSB0aGlzLnRvTGlzcENhc2Uob3B0aW9uKTtcclxuICAgICAgICAgIHByZUVsZW1lbnRzLml0ZW0oaSkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvTGlzcENhc2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgdXBwZXJDaGFycyA9IHZhbHVlLm1hdGNoKC8oW0EtWl0pL2cpO1xyXG4gICAgaWYgKCF1cHBlckNoYXJzKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGxldCBzdHIgPSB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSB1cHBlckNoYXJzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBzdHIgPSBzdHIucmVwbGFjZShuZXcgUmVnRXhwKHVwcGVyQ2hhcnNbaV0pLCAnLScgKyB1cHBlckNoYXJzW2ldLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0ci5zbGljZSgwLCAxKSA9PT0gJy0nKSB7XHJcbiAgICAgIHN0ciA9IHN0ci5zbGljZSgxKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW1hcmtkb3duLyIsInNvdXJjZXMiOlsic3JjL21hcmtkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPN0MsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7SUF1QjVCLFlBQ1MsU0FDQTtRQURBLFlBQU8sR0FBUCxPQUFPO1FBQ1Asb0JBQWUsR0FBZixlQUFlO1FBUnhCLGFBQWtCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDN0MsWUFBaUIsSUFBSSxZQUFZLEVBQVUsQ0FBQzs4QkFFbkIsS0FBSzs0QkFDUCxLQUFLO0tBS3ZCOzs7O0lBckJMLElBQ0ksV0FBVyxLQUFjLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFOzs7OztJQUN4RCxJQUFJLFdBQVcsQ0FBQyxLQUFjLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTs7OztJQUkxRixJQUNJLGFBQWEsS0FBYyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTs7Ozs7SUFDNUQsSUFBSSxhQUFhLENBQUMsS0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Ozs7SUFlOUYsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixPQUFPO1NBQ1I7UUFDRCxJQUFJLElBQUksQ0FB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LFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDakY7UUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUMzQixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQjtRQUNELE9BQU8sR0FBRyxDQUFDOzs7O1lBNUhkLFNBQVMsU0FBQzs7Z0JBRVQsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsUUFBUSxFQUFFLDJCQUEyQjthQUN0Qzs7OztZQVRrQyxVQUFVO1lBRXBDLGVBQWU7OzttQkFTckIsS0FBSztrQkFDTCxLQUFLOzBCQUdMLEtBQUs7b0JBR0wsS0FBSzs0QkFHTCxLQUFLO21CQUdMLEtBQUs7eUJBQ0wsS0FBSztvQkFFTCxNQUFNO21CQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBNYXJrZG93blNlcnZpY2UgfSBmcm9tICcuL21hcmtkb3duLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcmlzbVBsdWdpbiB9IGZyb20gJy4vcHJpc20tcGx1Z2luJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ21hcmtkb3duLCBbbWFya2Rvd25dJyxcclxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFya2Rvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGRhdGE6IHN0cmluZztcclxuICBASW5wdXQoKSBzcmM6IHN0cmluZztcclxuXHJcbiAgLy8gUGx1Z2luIC0gbGluZU51bWJlcnNcclxuICBASW5wdXQoKVxyXG4gIGdldCBsaW5lTnVtYmVycygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2xpbmVOdW1iZXJzOyB9XHJcbiAgc2V0IGxpbmVOdW1iZXJzKHZhbHVlOiBib29sZWFuKSB7IHRoaXMuX2xpbmVOdW1iZXJzID0gdGhpcy5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XHJcbiAgQElucHV0KCkgc3RhcnQ6IG51bWJlcjtcclxuXHJcbiAgLy8gUGx1Z2luIC0gbGluZUhpZ2hsaWdodFxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGxpbmVIaWdobGlnaHQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9saW5lSGlnaGxpZ2h0OyB9XHJcbiAgc2V0IGxpbmVIaWdobGlnaHQodmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fbGluZUhpZ2hsaWdodCA9IHRoaXMuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxyXG4gIEBJbnB1dCgpIGxpbmU6IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGxpbmVPZmZzZXQ6IG51bWJlcjtcclxuXHJcbiAgQE91dHB1dCgpIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfbGluZUhpZ2hsaWdodCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2xpbmVOdW1iZXJzID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHVibGljIG1hcmtkb3duU2VydmljZTogTWFya2Rvd25TZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YSkge1xyXG4gICAgICB0aGlzLmhhbmRsZURhdGEoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3JjKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlU3JjKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5kYXRhICYmICF0aGlzLnNyYykge1xyXG4gICAgICB0aGlzLmhhbmRsZVRyYW5zY2x1c2lvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyKG1hcmtkb3duOiBzdHJpbmcsIGRlY29kZUh0bWwgPSBmYWxzZSkge1xyXG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5tYXJrZG93blNlcnZpY2UuY29tcGlsZShtYXJrZG93biwgZGVjb2RlSHRtbCk7XHJcbiAgICB0aGlzLmhhbmRsZVBsdWdpbnMoKTtcclxuICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlLmhpZ2hsaWdodCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZTogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRGF0YSgpIHtcclxuICAgIHRoaXMucmVuZGVyKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVNyYygpIHtcclxuICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlXHJcbiAgICAgIC5nZXRTb3VyY2UodGhpcy5zcmMpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgbWFya2Rvd24gPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXIobWFya2Rvd24pO1xyXG4gICAgICAgICAgdGhpcy5sb2FkLmVtaXQobWFya2Rvd24pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4gdGhpcy5lcnJvci5lbWl0KGVycm9yKSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlVHJhbnNjbHVzaW9uKCkge1xyXG4gICAgdGhpcy5yZW5kZXIodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUGx1Z2lucygpIHtcclxuICAgIGlmICh0aGlzLmxpbmVIaWdobGlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5DbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgUHJpc21QbHVnaW4uTGluZUhpZ2hsaWdodCk7XHJcbiAgICAgIHRoaXMuc2V0UGx1Z2luT3B0aW9ucyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgeyBkYXRhTGluZTogdGhpcy5saW5lLCBkYXRhTGluZU9mZnNldDogdGhpcy5saW5lT2Zmc2V0IH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubGluZU51bWJlcnMpIHtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5DbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgUHJpc21QbHVnaW4uTGluZU51bWJlcnMpO1xyXG4gICAgICB0aGlzLnNldFBsdWdpbk9wdGlvbnModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgZGF0YVN0YXJ0OiB0aGlzLnN0YXJ0IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQbHVnaW5DbGFzcyhlbGVtZW50OiBIVE1MRWxlbWVudCwgcGx1Z2luOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgcHJlRWxlbWVudHMgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZScpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBjbGFzc2VzID0gcGx1Z2luIGluc3RhbmNlb2YgQXJyYXkgPyBwbHVnaW4gOiBbcGx1Z2luXTtcclxuICAgICAgcHJlRWxlbWVudHMuaXRlbShpKS5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQbHVnaW5PcHRpb25zKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcHRpb25zOiBvYmplY3QpIHtcclxuICAgIGNvbnN0IHByZUVsZW1lbnRzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gb3B0aW9uc1tvcHRpb25dO1xyXG4gICAgICAgIGlmICghIWF0dHJpYnV0ZVZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVOYW1lID0gdGhpcy50b0xpc3BDYXNlKG9wdGlvbik7XHJcbiAgICAgICAgICBwcmVFbGVtZW50cy5pdGVtKGkpLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVWYWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0xpc3BDYXNlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHVwcGVyQ2hhcnMgPSB2YWx1ZS5tYXRjaCgvKFtBLVpdKS9nKTtcclxuICAgIGlmICghdXBwZXJDaGFycykge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3RyID0gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gdXBwZXJDaGFycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgc3RyID0gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cCh1cHBlckNoYXJzW2ldKSwgJy0nICsgdXBwZXJDaGFyc1tpXS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIH1cclxuICAgIGlmIChzdHIuc2xpY2UoMCwgMSkgPT09ICctJykge1xyXG4gICAgICBzdHIgPSBzdHIuc2xpY2UoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxufVxyXG4iXX0=

@@ -13,55 +13,7 @@ /**

this.markdownService = markdownService;
this.error = new EventEmitter();
this.load = new EventEmitter();
this._lineHighlight = false;
this._lineNumbers = false;
this.error = new EventEmitter();
this.load = new EventEmitter();
}
Object.defineProperty(MarkdownComponent.prototype, "_isTranscluded", {
get: /**
* @return {?}
*/
function () {
return !this._data && !this._src;
},
enumerable: true,
configurable: true
});
Object.defineProperty(MarkdownComponent.prototype, "data", {
get: /**
* @return {?}
*/
function () { return this._data; },
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._data = value;
this.render(value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(MarkdownComponent.prototype, "src", {
get: /**
* @return {?}
*/
function () { return this._src; },
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
var _this = this;
this._src = value;
this.markdownService
.getSource(value)
.subscribe(function (markdown) {
_this.render(markdown);
_this.load.emit(markdown);
}, function (error) { return _this.error.emit(error); });
},
enumerable: true,
configurable: true
});
Object.defineProperty(MarkdownComponent.prototype, "lineNumbers", {

@@ -98,2 +50,18 @@ // Plugin - lineNumbers

*/
MarkdownComponent.prototype.ngOnChanges = /**
* @return {?}
*/
function () {
if (this.data) {
this.handleData();
return;
}
if (this.src) {
this.handleSrc();
return;
}
};
/**
* @return {?}
*/
MarkdownComponent.prototype.ngAfterViewInit = /**

@@ -103,4 +71,4 @@ * @return {?}

function () {
if (this._isTranscluded) {
this.render(this.element.nativeElement.innerHTML, true);
if (!this.data && !this.src) {
this.handleTransclusion();
}

@@ -138,2 +106,35 @@ };

*/
MarkdownComponent.prototype.handleData = /**
* @return {?}
*/
function () {
this.render(this.data);
};
/**
* @return {?}
*/
MarkdownComponent.prototype.handleSrc = /**
* @return {?}
*/
function () {
var _this = this;
this.markdownService
.getSource(this.src)
.subscribe(function (markdown) {
_this.render(markdown);
_this.load.emit(markdown);
}, function (error) { return _this.error.emit(error); });
};
/**
* @return {?}
*/
MarkdownComponent.prototype.handleTransclusion = /**
* @return {?}
*/
function () {
this.render(this.element.nativeElement.innerHTML, true);
};
/**
* @return {?}
*/
MarkdownComponent.prototype.handlePlugins = /**

@@ -253,10 +254,6 @@ * @return {?}

/** @type {?} */
MarkdownComponent.prototype._data;
MarkdownComponent.prototype.data;
/** @type {?} */
MarkdownComponent.prototype._lineHighlight;
MarkdownComponent.prototype.src;
/** @type {?} */
MarkdownComponent.prototype._lineNumbers;
/** @type {?} */
MarkdownComponent.prototype._src;
/** @type {?} */
MarkdownComponent.prototype.start;

@@ -272,2 +269,6 @@ /** @type {?} */

/** @type {?} */
MarkdownComponent.prototype._lineHighlight;
/** @type {?} */
MarkdownComponent.prototype._lineNumbers;
/** @type {?} */
MarkdownComponent.prototype.element;

@@ -278,2 +279,2 @@ /** @type {?} */

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW1hcmtkb3duLyIsInNvdXJjZXMiOlsic3JjL21hcmtkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQXVEM0MsMkJBQ1MsU0FDQTtRQURBLFlBQU8sR0FBUCxPQUFPO1FBQ1Asb0JBQWUsR0FBZixlQUFlOzhCQWhEQyxLQUFLOzRCQUNQLEtBQUs7UUEwQzVCLGFBQWtCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDN0MsWUFBaUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQUt2QzswQkE3Q08sNkNBQWM7Ozs7O1lBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs7Ozs7SUFHbkMsc0JBQ0ksbUNBQUk7Ozs7UUFEUixjQUNxQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTs7Ozs7UUFDekMsVUFBUyxLQUFhO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEI7OztPQUp3QztJQU16QyxzQkFDSSxrQ0FBRzs7OztRQURQLGNBQ29CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFOzs7OztRQUN2QyxVQUFRLEtBQWE7WUFBckIsaUJBV0M7WUFWQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUNsQixJQUFJLENBQUMsZUFBZTtpQkFDakIsU0FBUyxDQUFDLEtBQUssQ0FBQztp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LEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqRCxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDakY7UUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUMzQixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQjtRQUNELE9BQU8sR0FBRyxDQUFDOzs7Z0JBdEhkLFNBQVMsU0FBQzs7b0JBRVQsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7Ozs7Z0JBVGtDLFVBQVU7Z0JBRXBDLGVBQWU7Ozt1QkFrQnJCLEtBQUs7c0JBT0wsS0FBSzs4QkFnQkwsS0FBSzt3QkFHTCxLQUFLO2dDQUdMLEtBQUs7dUJBR0wsS0FBSzs2QkFDTCxLQUFLO3dCQUVMLE1BQU07dUJBQ04sTUFBTTs7NEJBeERUOztTQVVhLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBNYXJrZG93blNlcnZpY2UgfSBmcm9tICcuL21hcmtkb3duLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcmlzbVBsdWdpbiB9IGZyb20gJy4vcHJpc20tcGx1Z2luJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ21hcmtkb3duLCBbbWFya2Rvd25dJyxcclxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFya2Rvd25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIF9kYXRhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfbGluZUhpZ2hsaWdodCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2xpbmVOdW1iZXJzID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc3JjOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgZ2V0IF9pc1RyYW5zY2x1ZGVkKCkge1xyXG4gICAgcmV0dXJuICF0aGlzLl9kYXRhICYmICF0aGlzLl9zcmM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBkYXRhKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9kYXRhOyB9XHJcbiAgc2V0IGRhdGEodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlO1xyXG4gICAgdGhpcy5yZW5kZXIodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgc3JjKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9zcmM7IH1cclxuICBzZXQgc3JjKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NyYyA9IHZhbHVlO1xyXG4gICAgdGhpcy5tYXJrZG93blNlcnZpY2VcclxuICAgICAgLmdldFNvdXJjZSh2YWx1ZSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICBtYXJrZG93biA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcihtYXJrZG93bik7XHJcbiAgICAgICAgICB0aGlzLmxvYWQuZW1pdChtYXJrZG93bik7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvciA9PiB0aGlzLmVycm9yLmVtaXQoZXJyb3IpLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gUGx1Z2luIC0gbGluZU51bWJlcnNcclxuICBASW5wdXQoKVxyXG4gIGdldCBsaW5lTnVtYmVycygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2xpbmVOdW1iZXJzOyB9XHJcbiAgc2V0IGxpbmVOdW1iZXJzKHZhbHVlOiBib29sZWFuKSB7IHRoaXMuX2xpbmVOdW1iZXJzID0gdGhpcy5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XHJcbiAgQElucHV0KCkgc3RhcnQ6IG51bWJlcjtcclxuXHJcbiAgLy8gUGx1Z2luIC0gbGluZUhpZ2hsaWdodFxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGxpbmVIaWdobGlnaHQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9saW5lSGlnaGxpZ2h0OyB9XHJcbiAgc2V0IGxpbmVIaWdobGlnaHQodmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fbGluZUhpZ2hsaWdodCA9IHRoaXMuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxyXG4gIEBJbnB1dCgpIGxpbmU6IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGxpbmVPZmZzZXQ6IG51bWJlcjtcclxuXHJcbiAgQE91dHB1dCgpIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwdWJsaWMgbWFya2Rvd25TZXJ2aWNlOiBNYXJrZG93blNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuX2lzVHJhbnNjbHVkZWQpIHtcclxuICAgICAgdGhpcy5yZW5kZXIodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlcihtYXJrZG93bjogc3RyaW5nLCBkZWNvZGVIdG1sID0gZmFsc2UpIHtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMubWFya2Rvd25TZXJ2aWNlLmNvbXBpbGUobWFya2Rvd24sIGRlY29kZUh0bWwpO1xyXG4gICAgdGhpcy5oYW5kbGVQbHVnaW5zKCk7XHJcbiAgICB0aGlzLm1hcmtkb3duU2VydmljZS5oaWdobGlnaHQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWU6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGAke3ZhbHVlfWAgIT09ICdmYWxzZSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVBsdWdpbnMoKSB7XHJcbiAgICBpZiAodGhpcy5saW5lSGlnaGxpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0UGx1Z2luQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIFByaXNtUGx1Z2luLkxpbmVIaWdobGlnaHQpO1xyXG4gICAgICB0aGlzLnNldFBsdWdpbk9wdGlvbnModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgZGF0YUxpbmU6IHRoaXMubGluZSwgZGF0YUxpbmVPZmZzZXQ6IHRoaXMubGluZU9mZnNldCB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmxpbmVOdW1iZXJzKSB7XHJcbiAgICAgIHRoaXMuc2V0UGx1Z2luQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIFByaXNtUGx1Z2luLkxpbmVOdW1iZXJzKTtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5PcHRpb25zKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCB7IGRhdGFTdGFydDogdGhpcy5zdGFydCB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGx1Z2luQ2xhc3MoZWxlbWVudDogSFRNTEVsZW1lbnQsIHBsdWdpbjogc3RyaW5nIHwgc3RyaW5nW10pIHtcclxuICAgIGNvbnN0IHByZUVsZW1lbnRzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgY2xhc3NlcyA9IHBsdWdpbiBpbnN0YW5jZW9mIEFycmF5ID8gcGx1Z2luIDogW3BsdWdpbl07XHJcbiAgICAgIHByZUVsZW1lbnRzLml0ZW0oaSkuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGx1Z2luT3B0aW9ucyhlbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0aW9uczogb2JqZWN0KSB7XHJcbiAgICBjb25zdCBwcmVFbGVtZW50cyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlJyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZUVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZSA9IG9wdGlvbnNbb3B0aW9uXTtcclxuICAgICAgICBpZiAoISFhdHRyaWJ1dGVWYWx1ZSkge1xyXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlTmFtZSA9IHRoaXMudG9MaXNwQ2FzZShvcHRpb24pO1xyXG4gICAgICAgICAgcHJlRWxlbWVudHMuaXRlbShpKS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9MaXNwQ2FzZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1cHBlckNoYXJzID0gdmFsdWUubWF0Y2goLyhbQS1aXSkvZyk7XHJcbiAgICBpZiAoIXVwcGVyQ2hhcnMpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0ciA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHVwcGVyQ2hhcnMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAodXBwZXJDaGFyc1tpXSksICctJyArIHVwcGVyQ2hhcnNbaV0udG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc3RyLnNsaWNlKDAsIDEpID09PSAnLScpIHtcclxuICAgICAgc3RyID0gc3RyLnNsaWNlKDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW1hcmtkb3duLyIsInNvdXJjZXMiOlsic3JjL21hcmtkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQThCM0MsMkJBQ1MsU0FDQTtRQURBLFlBQU8sR0FBUCxPQUFPO1FBQ1Asb0JBQWUsR0FBZixlQUFlO1FBUnhCLGFBQWtCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDN0MsWUFBaUIsSUFBSSxZQUFZLEVBQVUsQ0FBQzs4QkFFbkIsS0FBSzs0QkFDUCxLQUFLO0tBS3ZCO0lBckJMLHNCQUNJLDBDQUFXO1FBRmYsdUJBQXVCOzs7O1FBQ3ZCLGNBQzZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFOzs7OztRQUN4RCxVQUFnQixLQUFjLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTs7O09BRGxDO0lBS3hELHNCQUNJLDRDQUFhO1FBRmpCLHlCQUF5Qjs7OztRQUN6QixjQUMrQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTs7Ozs7UUFDNUQsVUFBa0IsS0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7OztPQURsQzs7OztJQWdCNUQsdUNBQVc7OztJQUFYO1FBQ0UsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLE9B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QUNqRCxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDakY7UUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUMzQixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQjtRQUNELE9BQU8sR0FBRyxDQUFDOzs7Z0JBNUhkLFNBQVMsU0FBQzs7b0JBRVQsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7Ozs7Z0JBVGtDLFVBQVU7Z0JBRXBDLGVBQWU7Ozt1QkFTckIsS0FBSztzQkFDTCxLQUFLOzhCQUdMLEtBQUs7d0JBR0wsS0FBSztnQ0FHTCxLQUFLO3VCQUdMLEtBQUs7NkJBQ0wsS0FBSzt3QkFFTCxNQUFNO3VCQUNOLE1BQU07OzRCQTVCVDs7U0FVYSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBNYXJrZG93blNlcnZpY2UgfSBmcm9tICcuL21hcmtkb3duLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcmlzbVBsdWdpbiB9IGZyb20gJy4vcHJpc20tcGx1Z2luJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ21hcmtkb3duLCBbbWFya2Rvd25dJyxcclxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFya2Rvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGRhdGE6IHN0cmluZztcclxuICBASW5wdXQoKSBzcmM6IHN0cmluZztcclxuXHJcbiAgLy8gUGx1Z2luIC0gbGluZU51bWJlcnNcclxuICBASW5wdXQoKVxyXG4gIGdldCBsaW5lTnVtYmVycygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2xpbmVOdW1iZXJzOyB9XHJcbiAgc2V0IGxpbmVOdW1iZXJzKHZhbHVlOiBib29sZWFuKSB7IHRoaXMuX2xpbmVOdW1iZXJzID0gdGhpcy5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XHJcbiAgQElucHV0KCkgc3RhcnQ6IG51bWJlcjtcclxuXHJcbiAgLy8gUGx1Z2luIC0gbGluZUhpZ2hsaWdodFxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGxpbmVIaWdobGlnaHQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9saW5lSGlnaGxpZ2h0OyB9XHJcbiAgc2V0IGxpbmVIaWdobGlnaHQodmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fbGluZUhpZ2hsaWdodCA9IHRoaXMuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxyXG4gIEBJbnB1dCgpIGxpbmU6IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGxpbmVPZmZzZXQ6IG51bWJlcjtcclxuXHJcbiAgQE91dHB1dCgpIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfbGluZUhpZ2hsaWdodCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2xpbmVOdW1iZXJzID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHVibGljIG1hcmtkb3duU2VydmljZTogTWFya2Rvd25TZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YSkge1xyXG4gICAgICB0aGlzLmhhbmRsZURhdGEoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3JjKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlU3JjKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5kYXRhICYmICF0aGlzLnNyYykge1xyXG4gICAgICB0aGlzLmhhbmRsZVRyYW5zY2x1c2lvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyKG1hcmtkb3duOiBzdHJpbmcsIGRlY29kZUh0bWwgPSBmYWxzZSkge1xyXG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5tYXJrZG93blNlcnZpY2UuY29tcGlsZShtYXJrZG93biwgZGVjb2RlSHRtbCk7XHJcbiAgICB0aGlzLmhhbmRsZVBsdWdpbnMoKTtcclxuICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlLmhpZ2hsaWdodCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZTogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRGF0YSgpIHtcclxuICAgIHRoaXMucmVuZGVyKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVNyYygpIHtcclxuICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlXHJcbiAgICAgIC5nZXRTb3VyY2UodGhpcy5zcmMpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgbWFya2Rvd24gPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXIobWFya2Rvd24pO1xyXG4gICAgICAgICAgdGhpcy5sb2FkLmVtaXQobWFya2Rvd24pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4gdGhpcy5lcnJvci5lbWl0KGVycm9yKSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlVHJhbnNjbHVzaW9uKCkge1xyXG4gICAgdGhpcy5yZW5kZXIodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUGx1Z2lucygpIHtcclxuICAgIGlmICh0aGlzLmxpbmVIaWdobGlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5DbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgUHJpc21QbHVnaW4uTGluZUhpZ2hsaWdodCk7XHJcbiAgICAgIHRoaXMuc2V0UGx1Z2luT3B0aW9ucyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgeyBkYXRhTGluZTogdGhpcy5saW5lLCBkYXRhTGluZU9mZnNldDogdGhpcy5saW5lT2Zmc2V0IH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubGluZU51bWJlcnMpIHtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5DbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgUHJpc21QbHVnaW4uTGluZU51bWJlcnMpO1xyXG4gICAgICB0aGlzLnNldFBsdWdpbk9wdGlvbnModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgZGF0YVN0YXJ0OiB0aGlzLnN0YXJ0IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQbHVnaW5DbGFzcyhlbGVtZW50OiBIVE1MRWxlbWVudCwgcGx1Z2luOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgcHJlRWxlbWVudHMgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZScpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBjbGFzc2VzID0gcGx1Z2luIGluc3RhbmNlb2YgQXJyYXkgPyBwbHVnaW4gOiBbcGx1Z2luXTtcclxuICAgICAgcHJlRWxlbWVudHMuaXRlbShpKS5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQbHVnaW5PcHRpb25zKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcHRpb25zOiBvYmplY3QpIHtcclxuICAgIGNvbnN0IHByZUVsZW1lbnRzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gb3B0aW9uc1tvcHRpb25dO1xyXG4gICAgICAgIGlmICghIWF0dHJpYnV0ZVZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVOYW1lID0gdGhpcy50b0xpc3BDYXNlKG9wdGlvbik7XHJcbiAgICAgICAgICBwcmVFbGVtZW50cy5pdGVtKGkpLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVWYWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0xpc3BDYXNlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHVwcGVyQ2hhcnMgPSB2YWx1ZS5tYXRjaCgvKFtBLVpdKS9nKTtcclxuICAgIGlmICghdXBwZXJDaGFycykge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3RyID0gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gdXBwZXJDaGFycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgc3RyID0gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cCh1cHBlckNoYXJzW2ldKSwgJy0nICsgdXBwZXJDaGFyc1tpXS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIH1cclxuICAgIGlmIChzdHIuc2xpY2UoMCwgMSkgPT09ICctJykge1xyXG4gICAgICBzdHIgPSBzdHIuc2xpY2UoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxufVxyXG4iXX0=

@@ -226,6 +226,6 @@ import { Pipe, Inject, Injectable, Optional, PLATFORM_ID, SecurityContext, Component, ElementRef, EventEmitter, Input, Output, NgZone, NgModule } from '@angular/core';

this.markdownService = markdownService;
this.error = new EventEmitter();
this.load = new EventEmitter();
this._lineHighlight = false;
this._lineNumbers = false;
this.error = new EventEmitter();
this.load = new EventEmitter();
}

@@ -235,37 +235,2 @@ /**

*/
get _isTranscluded() {
return !this._data && !this._src;
}
/**
* @return {?}
*/
get data() { return this._data; }
/**
* @param {?} value
* @return {?}
*/
set data(value) {
this._data = value;
this.render(value);
}
/**
* @return {?}
*/
get src() { return this._src; }
/**
* @param {?} value
* @return {?}
*/
set src(value) {
this._src = value;
this.markdownService
.getSource(value)
.subscribe(markdown => {
this.render(markdown);
this.load.emit(markdown);
}, error => this.error.emit(error));
}
/**
* @return {?}
*/
get lineNumbers() { return this._lineNumbers; }

@@ -289,5 +254,18 @@ /**

*/
ngOnChanges() {
if (this.data) {
this.handleData();
return;
}
if (this.src) {
this.handleSrc();
return;
}
}
/**
* @return {?}
*/
ngAfterViewInit() {
if (this._isTranscluded) {
this.render(this.element.nativeElement.innerHTML, true);
if (!this.data && !this.src) {
this.handleTransclusion();
}

@@ -315,2 +293,25 @@ }

*/
handleData() {
this.render(this.data);
}
/**
* @return {?}
*/
handleSrc() {
this.markdownService
.getSource(this.src)
.subscribe(markdown => {
this.render(markdown);
this.load.emit(markdown);
}, error => this.error.emit(error));
}
/**
* @return {?}
*/
handleTransclusion() {
this.render(this.element.nativeElement.innerHTML, true);
}
/**
* @return {?}
*/
handlePlugins() {

@@ -531,2 +532,2 @@ if (this.lineHighlight) {

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hcmtkb3duLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL2xhbmd1YWdlLnBpcGUudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvbWFya2VkLW9wdGlvbnMudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvbWFya2VkLXJlbmRlcmVyLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLnNlcnZpY2UudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvcHJpc20tcGx1Z2luLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLmNvbXBvbmVudC50cyIsIm5nOi8vbmd4LW1hcmtkb3duL3NyYy9tYXJrZG93bi5waXBlLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2xhbmd1YWdlJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExhbmd1YWdlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBMYW5ndWFnZVBpcGUgaGFzIGJlZW4gaW52b2tlZCB3aXRoIGFuIGludmFsaWQgdmFsdWUgdHlwZSBbJHt2YWx1ZX1dYCk7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgbGFuZ3VhZ2UgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYExhbmd1YWdlUGlwZSBoYXMgYmVlbiBpbnZva2VkIHdpdGggYW4gaW52YWxpZCBwYXJhbWV0ZXIgWyR7bGFuZ3VhZ2V9XWApO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ2BgYCcgKyBsYW5ndWFnZSArICdcXG4nICsgIHZhbHVlICsgJ1xcbmBgYCc7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSAnbWFya2VkJztcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrZWRPcHRpb25zIGltcGxlbWVudHMgbWFya2VkLk1hcmtlZE9wdGlvbnMge1xyXG4gIC8qKlxyXG4gICAqIEEgcHJlZml4IFVSTCBmb3IgYW55IHJlbGF0aXZlIGxpbmsuXHJcbiAgICovXHJcbiAgYmFzZVVybD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIEdGTSBsaW5lIGJyZWFrcy4gVGhpcyBvcHRpb24gcmVxdWlyZXMgdGhlIGdmbSBvcHRpb24gdG8gYmUgdHJ1ZS5cclxuICAgKi9cclxuICBicmVha3M/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBFbmFibGUgR2l0SHViIGZsYXZvcmVkIG1hcmtkb3duLlxyXG4gICAqL1xyXG4gIGdmbT86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEluY2x1ZGUgYW4gaWQgYXR0cmlidXRlIHdoZW4gZW1pdHRpbmcgaGVhZGluZ3MuXHJcbiAgICovXHJcbiAgaGVhZGVySWRzPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBwcmVmaXggZm9yIGhlYWRlciB0YWcgaWRzLlxyXG4gICAqL1xyXG4gIGhlYWRlclByZWZpeD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBwcmVmaXggZm9yIGNvZGUgYmxvY2sgY2xhc3Nlcy5cclxuICAgKi9cclxuICBsYW5nUHJlZml4Pzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBNYW5nbGUgYXV0b2xpbmtzICg8ZW1haWxAZG9tYWluLmNvbT4pLlxyXG4gICAqL1xyXG4gIG1hbmdsZT86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZvcm0gdG8gb2JzY3VyZSBwYXJ0cyBvZiBtYXJrZG93bi5wbCBhcyBtdWNoIGFzIHBvc3NpYmxlLiBEb24ndCBmaXggYW55IG9mIHRoZSBvcmlnaW5hbCBtYXJrZG93biBidWdzIG9yIHBvb3IgYmVoYXZpb3IuXHJcbiAgICovXHJcbiAgcGVkYW50aWM/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBUeXBlOiBvYmplY3QgRGVmYXVsdDogbmV3IFJlbmRlcmVyKClcclxuICAgKlxyXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIGZ1bmN0aW9ucyB0byByZW5kZXIgdG9rZW5zIHRvIEhUTUwuXHJcbiAgICovXHJcbiAgcmVuZGVyZXI/OiBSZW5kZXJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2FuaXRpemUgdGhlIG91dHB1dC4gSWdub3JlIGFueSBIVE1MIHRoYXQgaGFzIGJlZW4gaW5wdXQuXHJcbiAgICovXHJcbiAgc2FuaXRpemU/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBTaG93cyBhbiBIVE1MIGVycm9yIG1lc3NhZ2Ugd2hlbiByZW5kZXJpbmcgZmFpbHMuXHJcbiAgICovXHJcbiAgc2lsZW50PzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIHNtYXJ0ZXIgbGlzdCBiZWhhdmlvciB0aGFuIHRoZSBvcmlnaW5hbCBtYXJrZG93bi4gTWF5IGV2ZW50dWFsbHkgYmUgZGVmYXVsdCB3aXRoIHRoZSBvbGQgYmVoYXZpb3IgbW92ZWQgaW50byBwZWRhbnRpYy5cclxuICAgKi9cclxuICBzbWFydExpc3RzPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIFwic21hcnRcIiB0eXBvZ3JhaGljIHB1bmN0dWF0aW9uIGZvciB0aGluZ3MgbGlrZSBxdW90ZXMgYW5kIGRhc2hlcy5cclxuICAgKi9cclxuICBzbWFydHlwYW50cz86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZSBHRk0gdGFibGVzLiBUaGlzIG9wdGlvbiByZXF1aXJlcyB0aGUgZ2ZtIG9wdGlvbiB0byBiZSB0cnVlLlxyXG4gICAqL1xyXG4gIHRhYmxlcz86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlIGNsb3Npbmcgc2xhc2ggZm9yIHNlbGYtY2xvc2luZyB0YWdzICg8YnIvPiBpbnN0ZWFkIG9mIDxicj4pXHJcbiAgICovXHJcbiAgeGh0bWw/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBBIGZ1bmN0aW9uIHRvIGhpZ2hsaWdodCBjb2RlIGJsb2Nrcy4gVGhlIGZ1bmN0aW9uIHRha2VzIHRocmVlIGFyZ3VtZW50czogY29kZSwgbGFuZywgYW5kIGNhbGxiYWNrLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodD8oY29kZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcsIGNhbGxiYWNrPzogKGVycm9yOiBhbnkgfCB1bmRlZmluZWQsIGNvZGU6IHN0cmluZykgPT4gdm9pZCk6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWxseSBzYW5pdGl6ZSBmb3VuZCBIVE1MIHdpdGggYSBzYW5pdGl6ZXIgZnVuY3Rpb24uXHJcbiAgICovXHJcbiAgc2FuaXRpemVyPyhodG1sOiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuIiwiaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICdtYXJrZWQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIE1hcmtlZFJlbmRlcmVyIGV4dGVuZHMgUmVuZGVyZXIgeyB9XHJcbiIsImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgUExBVEZPUk1fSUQsIFNlY3VyaXR5Q29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdtYXJrZWQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hcmtlZE9wdGlvbnMgfSBmcm9tICcuL21hcmtlZC1vcHRpb25zJztcclxuaW1wb3J0IHsgTWFya2VkUmVuZGVyZXIgfSBmcm9tICcuL21hcmtlZC1yZW5kZXJlcic7XHJcblxyXG5kZWNsYXJlIHZhciBQcmlzbToge1xyXG4gIGhpZ2hsaWdodEFsbDogKGFzeW5jOiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIGhpZ2hsaWdodEFsbFVuZGVyOiAoZWxlbWVudDogRWxlbWVudCkgPT4gdm9pZDtcclxufTtcclxuXHJcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuZXhwb3J0IGNvbnN0IGVycm9yU3JjV2l0aG91dEh0dHBDbGllbnQgPSAnW25neC1tYXJrZG93bl0gV2hlbiB1c2luZyB0aGUgW3NyY10gYXR0cmlidXRlIHlvdSAqaGF2ZSB0byogcGFzcyB0aGUgYEh0dHBDbGllbnRgIGFzIGEgcGFyYW1ldGVyIG9mIHRoZSBgZm9yUm9vdGAgbWV0aG9kLiBTZWUgUkVBRE1FIGZvciBtb3JlIGluZm9ybWF0aW9uJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1hcmtkb3duU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfb3B0aW9uczogTWFya2VkT3B0aW9ucztcclxuXHJcbiAgZ2V0IG9wdGlvbnMoKTogTWFya2VkT3B0aW9ucyB7IHJldHVybiB0aGlzLl9vcHRpb25zOyB9XHJcbiAgc2V0IG9wdGlvbnModmFsdWU6IE1hcmtlZE9wdGlvbnMpIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LFxyXG4gICAgICB7IHJlbmRlcmVyOiBuZXcgTWFya2VkUmVuZGVyZXIoKSB9LFxyXG4gICAgICB0aGlzLl9vcHRpb25zLFxyXG4gICAgICB2YWx1ZSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgcmVuZGVyZXIoKTogTWFya2VkUmVuZGVyZXIgeyByZXR1cm4gdGhpcy5vcHRpb25zLnJlbmRlcmVyOyB9XHJcbiAgc2V0IHJlbmRlcmVyKHZhbHVlOiBNYXJrZWRSZW5kZXJlcikge1xyXG4gICAgdGhpcy5vcHRpb25zLnJlbmRlcmVyID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm06IE9iamVjdCxcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBvcHRpb25zOiBNYXJrZWRPcHRpb25zLFxyXG4gICkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIGNvbXBpbGUobWFya2Rvd246IHN0cmluZywgZGVjb2RlSHRtbCA9IGZhbHNlLCBtYXJrZWRPcHRpb25zID0gdGhpcy5vcHRpb25zKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHByZWNvbXBpbGVkID0gdGhpcy5wcmVjb21waWxlKG1hcmtkb3duKTtcclxuICAgIGNvbnN0IGNvbXBpbGVkID0gcGFyc2UoXHJcbiAgICAgIGRlY29kZUh0bWwgPyB0aGlzLmRlY29kZUh0bWwocHJlY29tcGlsZWQpIDogcHJlY29tcGlsZWQsXHJcbiAgICAgIG1hcmtlZE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIG1hcmtlZE9wdGlvbnMuc2FuaXRpemUgJiYgIW1hcmtlZE9wdGlvbnMuc2FuaXRpemVyXHJcbiAgICAgID8gdGhpcy5kb21TYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIGNvbXBpbGVkKVxyXG4gICAgICA6IGNvbXBpbGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0U291cmNlKHNyYzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGlmICghdGhpcy5odHRwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvclNyY1dpdGhvdXRIdHRwQ2xpZW50KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChzcmMsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgLnBpcGUobWFwKG1hcmtkb3duID0+IHRoaXMuaGFuZGxlRXh0ZW5zaW9uKHNyYywgbWFya2Rvd24pKSk7XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHQoZWxlbWVudD86IEVsZW1lbnQpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtKSAmJiB0eXBlb2YgUHJpc20gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgICAgUHJpc20uaGlnaGxpZ2h0QWxsVW5kZXIoZWxlbWVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgUHJpc20uaGlnaGxpZ2h0QWxsKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWNvZGVIdG1sKGh0bWw6IHN0cmluZykge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm0pKSB7XHJcbiAgICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgICAgdGV4dGFyZWEuaW5uZXJIVE1MID0gaHRtbDtcclxuICAgICAgcmV0dXJuIHRleHRhcmVhLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGh0bWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUV4dGVuc2lvbihzcmM6IHN0cmluZywgbWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBleHRlbnNpb24gPSBzcmNcclxuICAgICAgPyBzcmMuc3BsaXQoJz8nKVswXS5zcGxpdCgnLicpLnNwbGljZSgtMSkuam9pbigpXHJcbiAgICAgIDogbnVsbDtcclxuICAgIHJldHVybiBleHRlbnNpb24gIT09ICdtZCdcclxuICAgICAgPyAnYGBgJyArIGV4dGVuc2lvbiArICdcXG4nICsgbWFya2Rvd24gKyAnXFxuYGBgJ1xyXG4gICAgICA6IG1hcmtkb3duO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmVjb21waWxlKG1hcmtkb3duOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFtYXJrZG93bikge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBsZXQgaW5kZW50U3RhcnQ6IG51bWJlcjtcclxuICAgIHJldHVybiBtYXJrZG93blxyXG4gICAgICAuc3BsaXQoJ1xcbicpXHJcbiAgICAgIC5tYXAobGluZSA9PiB7XHJcbiAgICAgICAgLy8gc2V0IGN1cnJlbnQgbGluZSBpZGVudCBzdGFydCB0byBiYXNlIHJlZmVyZW5jZSBpbmRlbnRhdGlvblxyXG4gICAgICAgIGxldCBsaW5lSWRlbnRTdGFydCA9IGluZGVudFN0YXJ0O1xyXG4gICAgICAgIC8vIGZpbmQgcG9zaXRpb24gb2YgMXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlclxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgY3VycmVudCBsaW5lIGluZGVudGF0aW9uIHN0YXJ0XHJcbiAgICAgICAgaWYgKGxpbmUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgbGluZUlkZW50U3RhcnQgPSBpc05hTihsaW5lSWRlbnRTdGFydClcclxuICAgICAgICAgICAgPyBsaW5lLnNlYXJjaCgvXFxTfCQvKVxyXG4gICAgICAgICAgICA6IE1hdGgubWluKGxpbmUuc2VhcmNoKC9cXFN8JC8pLCBsaW5lSWRlbnRTdGFydCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGtlZXAgMXN0IG5vbi13aGl0ZXNwYWNlIGxpbmUgaW5kZW50YXRpb25cclxuICAgICAgICAvLyBhcyBiYXNlIHJlZmVyZW5jZSBmb3Igb3RoZXIgbGluZXNcclxuICAgICAgICBpZiAoaXNOYU4oaW5kZW50U3RhcnQpKSB7XHJcbiAgICAgICAgICBpbmRlbnRTdGFydCA9IGxpbmVJZGVudFN0YXJ0O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyByZW1vdmUgd2hpdGVzcGFjZXMgYmVmb3JlIGN1cnJlbnQgbGluZSBpbmRlbnRhdGlvblxyXG4gICAgICAgIHJldHVybiAhIWxpbmVJZGVudFN0YXJ0XHJcbiAgICAgICAgICA/IGxpbmUuc3Vic3RyaW5nKGxpbmVJZGVudFN0YXJ0KVxyXG4gICAgICAgICAgOiBsaW5lO1xyXG4gICAgICB9KS5qb2luKCdcXG4nKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGVudW0gUHJpc21QbHVnaW4ge1xyXG4gIExpbmVIaWdobGlnaHQgPSAnbGluZS1oaWdobGlnaHQnLFxyXG4gIExpbmVOdW1iZXJzID0gJ2xpbmUtbnVtYmVycycsXHJcbn1cclxuIiwiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1hcmtkb3duU2VydmljZSB9IGZyb20gJy4vbWFya2Rvd24uc2VydmljZSc7XHJcbmltcG9ydCB7IFByaXNtUGx1Z2luIH0gZnJvbSAnLi9wcmlzbS1wbHVnaW4nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnbWFya2Rvd24sIFttYXJrZG93bl0nLFxyXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXJrZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIHByaXZhdGUgX2RhdGE6IHN0cmluZztcclxuICBwcml2YXRlIF9saW5lSGlnaGxpZ2h0ID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfbGluZU51bWJlcnMgPSBmYWxzZTtcclxuICBwcml2YXRlIF9zcmM6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBnZXQgX2lzVHJhbnNjbHVkZWQoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuX2RhdGEgJiYgIXRoaXMuX3NyYztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRhdGEoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2RhdGE7IH1cclxuICBzZXQgZGF0YSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLnJlbmRlcih2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBzcmMoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3NyYzsgfVxyXG4gIHNldCBzcmModmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc3JjID0gdmFsdWU7XHJcbiAgICB0aGlzLm1hcmtkb3duU2VydmljZVxyXG4gICAgICAuZ2V0U291cmNlKHZhbHVlKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIG1hcmtkb3duID0+IHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyKG1hcmtkb3duKTtcclxuICAgICAgICAgIHRoaXMubG9hZC5lbWl0KG1hcmtkb3duKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHRoaXMuZXJyb3IuZW1pdChlcnJvciksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBQbHVnaW4gLSBsaW5lTnVtYmVyc1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGxpbmVOdW1iZXJzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fbGluZU51bWJlcnM7IH1cclxuICBzZXQgbGluZU51bWJlcnModmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fbGluZU51bWJlcnMgPSB0aGlzLmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cclxuICBASW5wdXQoKSBzdGFydDogbnVtYmVyO1xyXG5cclxuICAvLyBQbHVnaW4gLSBsaW5lSGlnaGxpZ2h0XHJcbiAgQElucHV0KClcclxuICBnZXQgbGluZUhpZ2hsaWdodCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2xpbmVIaWdobGlnaHQ7IH1cclxuICBzZXQgbGluZUhpZ2hsaWdodCh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9saW5lSGlnaGxpZ2h0ID0gdGhpcy5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XHJcbiAgQElucHV0KCkgbGluZTogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgQElucHV0KCkgbGluZU9mZnNldDogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCkgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHB1YmxpYyBtYXJrZG93blNlcnZpY2U6IE1hcmtkb3duU2VydmljZSxcclxuICApIHsgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5faXNUcmFuc2NsdWRlZCkge1xyXG4gICAgICB0aGlzLnJlbmRlcih0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pbm5lckhUTUwsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyKG1hcmtkb3duOiBzdHJpbmcsIGRlY29kZUh0bWwgPSBmYWxzZSkge1xyXG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5tYXJrZG93blNlcnZpY2UuY29tcGlsZShtYXJrZG93biwgZGVjb2RlSHRtbCk7XHJcbiAgICB0aGlzLmhhbmRsZVBsdWdpbnMoKTtcclxuICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlLmhpZ2hsaWdodCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZTogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUGx1Z2lucygpIHtcclxuICAgIGlmICh0aGlzLmxpbmVIaWdobGlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5DbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgUHJpc21QbHVnaW4uTGluZUhpZ2hsaWdodCk7XHJcbiAgICAgIHRoaXMuc2V0UGx1Z2luT3B0aW9ucyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgeyBkYXRhTGluZTogdGhpcy5saW5lLCBkYXRhTGluZU9mZnNldDogdGhpcy5saW5lT2Zmc2V0IH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubGluZU51bWJlcnMpIHtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5DbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgUHJpc21QbHVnaW4uTGluZU51bWJlcnMpO1xyXG4gICAgICB0aGlzLnNldFBsdWdpbk9wdGlvbnModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgZGF0YVN0YXJ0OiB0aGlzLnN0YXJ0IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQbHVnaW5DbGFzcyhlbGVtZW50OiBIVE1MRWxlbWVudCwgcGx1Z2luOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgcHJlRWxlbWVudHMgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZScpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBjbGFzc2VzID0gcGx1Z2luIGluc3RhbmNlb2YgQXJyYXkgPyBwbHVnaW4gOiBbcGx1Z2luXTtcclxuICAgICAgcHJlRWxlbWVudHMuaXRlbShpKS5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQbHVnaW5PcHRpb25zKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcHRpb25zOiBvYmplY3QpIHtcclxuICAgIGNvbnN0IHByZUVsZW1lbnRzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gb3B0aW9uc1tvcHRpb25dO1xyXG4gICAgICAgIGlmICghIWF0dHJpYnV0ZVZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVOYW1lID0gdGhpcy50b0xpc3BDYXNlKG9wdGlvbik7XHJcbiAgICAgICAgICBwcmVFbGVtZW50cy5pdGVtKGkpLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVWYWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0xpc3BDYXNlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHVwcGVyQ2hhcnMgPSB2YWx1ZS5tYXRjaCgvKFtBLVpdKS9nKTtcclxuICAgIGlmICghdXBwZXJDaGFycykge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3RyID0gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gdXBwZXJDaGFycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgc3RyID0gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cCh1cHBlckNoYXJzW2ldKSwgJy0nICsgdXBwZXJDaGFyc1tpXS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIH1cclxuICAgIGlmIChzdHIuc2xpY2UoMCwgMSkgPT09ICctJykge1xyXG4gICAgICBzdHIgPSBzdHIuc2xpY2UoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgeyBFbGVtZW50UmVmLCBOZ1pvbmUsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBNYXJrZG93blNlcnZpY2UgfSBmcm9tICcuL21hcmtkb3duLnNlcnZpY2UnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdtYXJrZG93bicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXJrZG93blBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHJpdmF0ZSBtYXJrZG93blNlcnZpY2U6IE1hcmtkb3duU2VydmljZSxcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICkgeyB9XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBNYXJrZG93blBpcGUgaGFzIGJlZW4gaW52b2tlZCB3aXRoIGFuIGludmFsaWQgdmFsdWUgdHlwZSBbJHt2YWx1ZX1dYCk7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtYXJrZG93biA9IHRoaXMubWFya2Rvd25TZXJ2aWNlLmNvbXBpbGUodmFsdWUpO1xyXG5cclxuICAgIHRoaXMuem9uZS5vblN0YWJsZVxyXG4gICAgICAucGlwZShmaXJzdCgpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubWFya2Rvd25TZXJ2aWNlLmhpZ2hsaWdodCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xyXG5cclxuICAgIHJldHVybiBtYXJrZG93bjtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZVBpcGUgfSBmcm9tICcuL2xhbmd1YWdlLnBpcGUnO1xyXG5pbXBvcnQgeyBNYXJrZG93bkNvbXBvbmVudCB9IGZyb20gJy4vbWFya2Rvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWFya2Rvd25QaXBlIH0gZnJvbSAnLi9tYXJrZG93bi5waXBlJztcclxuaW1wb3J0IHsgTWFya2Rvd25TZXJ2aWNlIH0gZnJvbSAnLi9tYXJrZG93bi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFya2VkT3B0aW9ucyB9IGZyb20gJy4vbWFya2VkLW9wdGlvbnMnO1xyXG5cclxuLy8gaGF2aW5nIGEgZGVwZW5kZW5jeSBvbiBgSHR0cENsaWVudE1vZHVsZWAgd2l0aGluIGEgbGlicmFyeVxyXG4vLyBicmVha3MgYWxsIHRoZSBpbnRlcmNlcHRvcnMgZnJvbSB0aGUgYXBwIGNvbnN1bWluZyB0aGUgbGlicmFyeVxyXG4vLyBoZXJlLCB3ZSBleHBsaWNpdGVseSBhc2sgdGhlIHVzZXIgdG8gcGFzcyBhIHByb3ZpZGVyIHdpdGhcclxuLy8gdGhlaXIgb3duIGluc3RhbmNlIG9mIGBIdHRwQ2xpZW50TW9kdWxlYFxyXG5leHBvcnQgaW50ZXJmYWNlIE1hcmtkb3duTW9kdWxlQ29uZmlnIHtcclxuICBsb2FkZXI/OiBQcm92aWRlcjtcclxuICBtYXJrZWRPcHRpb25zPzogUHJvdmlkZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpbml0aWFsTWFya2VkT3B0aW9uczogUHJvdmlkZXIgPSB7XHJcbiAgcHJvdmlkZTogTWFya2VkT3B0aW9ucyxcclxuICB1c2VWYWx1ZToge1xyXG4gICAgZ2ZtOiB0cnVlLFxyXG4gICAgdGFibGVzOiB0cnVlLFxyXG4gICAgYnJlYWtzOiBmYWxzZSxcclxuICAgIHBlZGFudGljOiBmYWxzZSxcclxuICAgIHNhbml0aXplOiBmYWxzZSxcclxuICAgIHNtYXJ0TGlzdHM6IHRydWUsXHJcbiAgICBzbWFydHlwYW50czogZmFsc2UsXHJcbiAgfSxcclxufTtcclxuXHJcbmNvbnN0IHNoYXJlZERlY2xhcmF0aW9ucyA9IFtcclxuICBMYW5ndWFnZVBpcGUsXHJcbiAgTWFya2Rvd25Db21wb25lbnQsXHJcbiAgTWFya2Rvd25QaXBlLFxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBleHBvcnRzOiBbXHJcbiAgICAuLi5zaGFyZWREZWNsYXJhdGlvbnMsXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIC4uLnNoYXJlZERlY2xhcmF0aW9ucyxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFya2Rvd25Nb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KG1hcmtkb3duTW9kdWxlQ29uZmlnPzogTWFya2Rvd25Nb2R1bGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBNYXJrZG93bk1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgTWFya2Rvd25TZXJ2aWNlLFxyXG4gICAgICAgIC4uLihtYXJrZG93bk1vZHVsZUNvbmZpZ1xyXG4gICAgICAgICAgPyBbXHJcbiAgICAgICAgICAgICAgbWFya2Rvd25Nb2R1bGVDb25maWcubG9hZGVyIHx8IFtdLFxyXG4gICAgICAgICAgICAgIG1hcmtkb3duTW9kdWxlQ29uZmlnLm1hcmtlZE9wdGlvbnMgfHwgaW5pdGlhbE1hcmtlZE9wdGlvbnMsXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgIDogW2luaXRpYWxNYXJrZWRPcHRpb25zXSksXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZvckNoaWxkKCk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IE1hcmtkb3duTW9kdWxlLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsTUFLYSxZQUFZOzs7Ozs7SUFFdkIsU0FBUyxDQUFDLEtBQWEsRUFBRSxRQUFnQjtRQUN2QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixPQUFPLENBQUMsS0FBSyxDQUFDLDZEQUE2RCxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ3JGLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLDREQUE0RCxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZGLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLEtBQUssR0FBRyxRQUFRLEdBQUcsSUFBSSxHQUFJLEtBQUssR0FBRyxPQUFPLENBQUM7S0FDbkQ7OztZQWZGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsVUFBVTthQUNqQjs7Ozs7OztBQ0ZELE1BQWEsYUFBYTtDQXVGekI7Ozs7OztBQ3pGRCxNQUVhLGNBQWUs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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hcmtkb3duLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL2xhbmd1YWdlLnBpcGUudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvbWFya2VkLW9wdGlvbnMudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvbWFya2VkLXJlbmRlcmVyLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLnNlcnZpY2UudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvcHJpc20tcGx1Z2luLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLmNvbXBvbmVudC50cyIsIm5nOi8vbmd4LW1hcmtkb3duL3NyYy9tYXJrZG93bi5waXBlLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2xhbmd1YWdlJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExhbmd1YWdlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBMYW5ndWFnZVBpcGUgaGFzIGJlZW4gaW52b2tlZCB3aXRoIGFuIGludmFsaWQgdmFsdWUgdHlwZSBbJHt2YWx1ZX1dYCk7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgbGFuZ3VhZ2UgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYExhbmd1YWdlUGlwZSBoYXMgYmVlbiBpbnZva2VkIHdpdGggYW4gaW52YWxpZCBwYXJhbWV0ZXIgWyR7bGFuZ3VhZ2V9XWApO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ2BgYCcgKyBsYW5ndWFnZSArICdcXG4nICsgIHZhbHVlICsgJ1xcbmBgYCc7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSAnbWFya2VkJztcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrZWRPcHRpb25zIGltcGxlbWVudHMgbWFya2VkLk1hcmtlZE9wdGlvbnMge1xyXG4gIC8qKlxyXG4gICAqIEEgcHJlZml4IFVSTCBmb3IgYW55IHJlbGF0aXZlIGxpbmsuXHJcbiAgICovXHJcbiAgYmFzZVVybD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIEdGTSBsaW5lIGJyZWFrcy4gVGhpcyBvcHRpb24gcmVxdWlyZXMgdGhlIGdmbSBvcHRpb24gdG8gYmUgdHJ1ZS5cclxuICAgKi9cclxuICBicmVha3M/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBFbmFibGUgR2l0SHViIGZsYXZvcmVkIG1hcmtkb3duLlxyXG4gICAqL1xyXG4gIGdmbT86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEluY2x1ZGUgYW4gaWQgYXR0cmlidXRlIHdoZW4gZW1pdHRpbmcgaGVhZGluZ3MuXHJcbiAgICovXHJcbiAgaGVhZGVySWRzPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBwcmVmaXggZm9yIGhlYWRlciB0YWcgaWRzLlxyXG4gICAqL1xyXG4gIGhlYWRlclByZWZpeD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBwcmVmaXggZm9yIGNvZGUgYmxvY2sgY2xhc3Nlcy5cclxuICAgKi9cclxuICBsYW5nUHJlZml4Pzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBNYW5nbGUgYXV0b2xpbmtzICg8ZW1haWxAZG9tYWluLmNvbT4pLlxyXG4gICAqL1xyXG4gIG1hbmdsZT86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZvcm0gdG8gb2JzY3VyZSBwYXJ0cyBvZiBtYXJrZG93bi5wbCBhcyBtdWNoIGFzIHBvc3NpYmxlLiBEb24ndCBmaXggYW55IG9mIHRoZSBvcmlnaW5hbCBtYXJrZG93biBidWdzIG9yIHBvb3IgYmVoYXZpb3IuXHJcbiAgICovXHJcbiAgcGVkYW50aWM/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBUeXBlOiBvYmplY3QgRGVmYXVsdDogbmV3IFJlbmRlcmVyKClcclxuICAgKlxyXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIGZ1bmN0aW9ucyB0byByZW5kZXIgdG9rZW5zIHRvIEhUTUwuXHJcbiAgICovXHJcbiAgcmVuZGVyZXI/OiBSZW5kZXJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2FuaXRpemUgdGhlIG91dHB1dC4gSWdub3JlIGFueSBIVE1MIHRoYXQgaGFzIGJlZW4gaW5wdXQuXHJcbiAgICovXHJcbiAgc2FuaXRpemU/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBTaG93cyBhbiBIVE1MIGVycm9yIG1lc3NhZ2Ugd2hlbiByZW5kZXJpbmcgZmFpbHMuXHJcbiAgICovXHJcbiAgc2lsZW50PzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIHNtYXJ0ZXIgbGlzdCBiZWhhdmlvciB0aGFuIHRoZSBvcmlnaW5hbCBtYXJrZG93bi4gTWF5IGV2ZW50dWFsbHkgYmUgZGVmYXVsdCB3aXRoIHRoZSBvbGQgYmVoYXZpb3IgbW92ZWQgaW50byBwZWRhbnRpYy5cclxuICAgKi9cclxuICBzbWFydExpc3RzPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIFwic21hcnRcIiB0eXBvZ3JhaGljIHB1bmN0dWF0aW9uIGZvciB0aGluZ3MgbGlrZSBxdW90ZXMgYW5kIGRhc2hlcy5cclxuICAgKi9cclxuICBzbWFydHlwYW50cz86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZSBHRk0gdGFibGVzLiBUaGlzIG9wdGlvbiByZXF1aXJlcyB0aGUgZ2ZtIG9wdGlvbiB0byBiZSB0cnVlLlxyXG4gICAqL1xyXG4gIHRhYmxlcz86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlIGNsb3Npbmcgc2xhc2ggZm9yIHNlbGYtY2xvc2luZyB0YWdzICg8YnIvPiBpbnN0ZWFkIG9mIDxicj4pXHJcbiAgICovXHJcbiAgeGh0bWw/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBBIGZ1bmN0aW9uIHRvIGhpZ2hsaWdodCBjb2RlIGJsb2Nrcy4gVGhlIGZ1bmN0aW9uIHRha2VzIHRocmVlIGFyZ3VtZW50czogY29kZSwgbGFuZywgYW5kIGNhbGxiYWNrLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodD8oY29kZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcsIGNhbGxiYWNrPzogKGVycm9yOiBhbnkgfCB1bmRlZmluZWQsIGNvZGU6IHN0cmluZykgPT4gdm9pZCk6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWxseSBzYW5pdGl6ZSBmb3VuZCBIVE1MIHdpdGggYSBzYW5pdGl6ZXIgZnVuY3Rpb24uXHJcbiAgICovXHJcbiAgc2FuaXRpemVyPyhodG1sOiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuIiwiaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICdtYXJrZWQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIE1hcmtlZFJlbmRlcmVyIGV4dGVuZHMgUmVuZGVyZXIgeyB9XHJcbiIsImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgUExBVEZPUk1fSUQsIFNlY3VyaXR5Q29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdtYXJrZWQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hcmtlZE9wdGlvbnMgfSBmcm9tICcuL21hcmtlZC1vcHRpb25zJztcclxuaW1wb3J0IHsgTWFya2VkUmVuZGVyZXIgfSBmcm9tICcuL21hcmtlZC1yZW5kZXJlcic7XHJcblxyXG5kZWNsYXJlIHZhciBQcmlzbToge1xyXG4gIGhpZ2hsaWdodEFsbDogKGFzeW5jOiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIGhpZ2hsaWdodEFsbFVuZGVyOiAoZWxlbWVudDogRWxlbWVudCkgPT4gdm9pZDtcclxufTtcclxuXHJcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuZXhwb3J0IGNvbnN0IGVycm9yU3JjV2l0aG91dEh0dHBDbGllbnQgPSAnW25neC1tYXJrZG93bl0gV2hlbiB1c2luZyB0aGUgW3NyY10gYXR0cmlidXRlIHlvdSAqaGF2ZSB0byogcGFzcyB0aGUgYEh0dHBDbGllbnRgIGFzIGEgcGFyYW1ldGVyIG9mIHRoZSBgZm9yUm9vdGAgbWV0aG9kLiBTZWUgUkVBRE1FIGZvciBtb3JlIGluZm9ybWF0aW9uJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1hcmtkb3duU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfb3B0aW9uczogTWFya2VkT3B0aW9ucztcclxuXHJcbiAgZ2V0IG9wdGlvbnMoKTogTWFya2VkT3B0aW9ucyB7IHJldHVybiB0aGlzLl9vcHRpb25zOyB9XHJcbiAgc2V0IG9wdGlvbnModmFsdWU6IE1hcmtlZE9wdGlvbnMpIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LFxyXG4gICAgICB7IHJlbmRlcmVyOiBuZXcgTWFya2VkUmVuZGVyZXIoKSB9LFxyXG4gICAgICB0aGlzLl9vcHRpb25zLFxyXG4gICAgICB2YWx1ZSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgcmVuZGVyZXIoKTogTWFya2VkUmVuZGVyZXIgeyByZXR1cm4gdGhpcy5vcHRpb25zLnJlbmRlcmVyOyB9XHJcbiAgc2V0IHJlbmRlcmVyKHZhbHVlOiBNYXJrZWRSZW5kZXJlcikge1xyXG4gICAgdGhpcy5vcHRpb25zLnJlbmRlcmVyID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm06IE9iamVjdCxcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBvcHRpb25zOiBNYXJrZWRPcHRpb25zLFxyXG4gICkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIGNvbXBpbGUobWFya2Rvd246IHN0cmluZywgZGVjb2RlSHRtbCA9IGZhbHNlLCBtYXJrZWRPcHRpb25zID0gdGhpcy5vcHRpb25zKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHByZWNvbXBpbGVkID0gdGhpcy5wcmVjb21waWxlKG1hcmtkb3duKTtcclxuICAgIGNvbnN0IGNvbXBpbGVkID0gcGFyc2UoXHJcbiAgICAgIGRlY29kZUh0bWwgPyB0aGlzLmRlY29kZUh0bWwocHJlY29tcGlsZWQpIDogcHJlY29tcGlsZWQsXHJcbiAgICAgIG1hcmtlZE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIG1hcmtlZE9wdGlvbnMuc2FuaXRpemUgJiYgIW1hcmtlZE9wdGlvbnMuc2FuaXRpemVyXHJcbiAgICAgID8gdGhpcy5kb21TYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIGNvbXBpbGVkKVxyXG4gICAgICA6IGNvbXBpbGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0U291cmNlKHNyYzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGlmICghdGhpcy5odHRwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvclNyY1dpdGhvdXRIdHRwQ2xpZW50KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChzcmMsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgLnBpcGUobWFwKG1hcmtkb3duID0+IHRoaXMuaGFuZGxlRXh0ZW5zaW9uKHNyYywgbWFya2Rvd24pKSk7XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHQoZWxlbWVudD86IEVsZW1lbnQpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtKSAmJiB0eXBlb2YgUHJpc20gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgICAgUHJpc20uaGlnaGxpZ2h0QWxsVW5kZXIoZWxlbWVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgUHJpc20uaGlnaGxpZ2h0QWxsKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWNvZGVIdG1sKGh0bWw6IHN0cmluZykge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm0pKSB7XHJcbiAgICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgICAgdGV4dGFyZWEuaW5uZXJIVE1MID0gaHRtbDtcclxuICAgICAgcmV0dXJuIHRleHRhcmVhLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGh0bWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUV4dGVuc2lvbihzcmM6IHN0cmluZywgbWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBleHRlbnNpb24gPSBzcmNcclxuICAgICAgPyBzcmMuc3BsaXQoJz8nKVswXS5zcGxpdCgnLicpLnNwbGljZSgtMSkuam9pbigpXHJcbiAgICAgIDogbnVsbDtcclxuICAgIHJldHVybiBleHRlbnNpb24gIT09ICdtZCdcclxuICAgICAgPyAnYGBgJyArIGV4dGVuc2lvbiArICdcXG4nICsgbWFya2Rvd24gKyAnXFxuYGBgJ1xyXG4gICAgICA6IG1hcmtkb3duO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmVjb21waWxlKG1hcmtkb3duOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFtYXJrZG93bikge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBsZXQgaW5kZW50U3RhcnQ6IG51bWJlcjtcclxuICAgIHJldHVybiBtYXJrZG93blxyXG4gICAgICAuc3BsaXQoJ1xcbicpXHJcbiAgICAgIC5tYXAobGluZSA9PiB7XHJcbiAgICAgICAgLy8gc2V0IGN1cnJlbnQgbGluZSBpZGVudCBzdGFydCB0byBiYXNlIHJlZmVyZW5jZSBpbmRlbnRhdGlvblxyXG4gICAgICAgIGxldCBsaW5lSWRlbnRTdGFydCA9IGluZGVudFN0YXJ0O1xyXG4gICAgICAgIC8vIGZpbmQgcG9zaXRpb24gb2YgMXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlclxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgY3VycmVudCBsaW5lIGluZGVudGF0aW9uIHN0YXJ0XHJcbiAgICAgICAgaWYgKGxpbmUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgbGluZUlkZW50U3RhcnQgPSBpc05hTihsaW5lSWRlbnRTdGFydClcclxuICAgICAgICAgICAgPyBsaW5lLnNlYXJjaCgvXFxTfCQvKVxyXG4gICAgICAgICAgICA6IE1hdGgubWluKGxpbmUuc2VhcmNoKC9cXFN8JC8pLCBsaW5lSWRlbnRTdGFydCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGtlZXAgMXN0IG5vbi13aGl0ZXNwYWNlIGxpbmUgaW5kZW50YXRpb25cclxuICAgICAgICAvLyBhcyBiYXNlIHJlZmVyZW5jZSBmb3Igb3RoZXIgbGluZXNcclxuICAgICAgICBpZiAoaXNOYU4oaW5kZW50U3RhcnQpKSB7XHJcbiAgICAgICAgICBpbmRlbnRTdGFydCA9IGxpbmVJZGVudFN0YXJ0O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyByZW1vdmUgd2hpdGVzcGFjZXMgYmVmb3JlIGN1cnJlbnQgbGluZSBpbmRlbnRhdGlvblxyXG4gICAgICAgIHJldHVybiAhIWxpbmVJZGVudFN0YXJ0XHJcbiAgICAgICAgICA/IGxpbmUuc3Vic3RyaW5nKGxpbmVJZGVudFN0YXJ0KVxyXG4gICAgICAgICAgOiBsaW5lO1xyXG4gICAgICB9KS5qb2luKCdcXG4nKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGVudW0gUHJpc21QbHVnaW4ge1xyXG4gIExpbmVIaWdobGlnaHQgPSAnbGluZS1oaWdobGlnaHQnLFxyXG4gIExpbmVOdW1iZXJzID0gJ2xpbmUtbnVtYmVycycsXHJcbn1cclxuIiwiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWFya2Rvd25TZXJ2aWNlIH0gZnJvbSAnLi9tYXJrZG93bi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJpc21QbHVnaW4gfSBmcm9tICcuL3ByaXNtLXBsdWdpbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdtYXJrZG93biwgW21hcmtkb3duXScsXHJcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcmtkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBkYXRhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3JjOiBzdHJpbmc7XHJcblxyXG4gIC8vIFBsdWdpbiAtIGxpbmVOdW1iZXJzXHJcbiAgQElucHV0KClcclxuICBnZXQgbGluZU51bWJlcnMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9saW5lTnVtYmVyczsgfVxyXG4gIHNldCBsaW5lTnVtYmVycyh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9saW5lTnVtYmVycyA9IHRoaXMuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxyXG4gIEBJbnB1dCgpIHN0YXJ0OiBudW1iZXI7XHJcblxyXG4gIC8vIFBsdWdpbiAtIGxpbmVIaWdobGlnaHRcclxuICBASW5wdXQoKVxyXG4gIGdldCBsaW5lSGlnaGxpZ2h0KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fbGluZUhpZ2hsaWdodDsgfVxyXG4gIHNldCBsaW5lSGlnaGxpZ2h0KHZhbHVlOiBib29sZWFuKSB7IHRoaXMuX2xpbmVIaWdobGlnaHQgPSB0aGlzLmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cclxuICBASW5wdXQoKSBsaW5lOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBASW5wdXQoKSBsaW5lT2Zmc2V0OiBudW1iZXI7XHJcblxyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIHByaXZhdGUgX2xpbmVIaWdobGlnaHQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9saW5lTnVtYmVycyA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHB1YmxpYyBtYXJrZG93blNlcnZpY2U6IE1hcmtkb3duU2VydmljZSxcclxuICApIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgdGhpcy5oYW5kbGVEYXRhKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNyYykge1xyXG4gICAgICB0aGlzLmhhbmRsZVNyYygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YSAmJiAhdGhpcy5zcmMpIHtcclxuICAgICAgdGhpcy5oYW5kbGVUcmFuc2NsdXNpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlcihtYXJrZG93bjogc3RyaW5nLCBkZWNvZGVIdG1sID0gZmFsc2UpIHtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMubWFya2Rvd25TZXJ2aWNlLmNvbXBpbGUobWFya2Rvd24sIGRlY29kZUh0bWwpO1xyXG4gICAgdGhpcy5oYW5kbGVQbHVnaW5zKCk7XHJcbiAgICB0aGlzLm1hcmtkb3duU2VydmljZS5oaWdobGlnaHQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWU6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGAke3ZhbHVlfWAgIT09ICdmYWxzZSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZURhdGEoKSB7XHJcbiAgICB0aGlzLnJlbmRlcih0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVTcmMoKSB7XHJcbiAgICB0aGlzLm1hcmtkb3duU2VydmljZVxyXG4gICAgICAuZ2V0U291cmNlKHRoaXMuc3JjKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIG1hcmtkb3duID0+IHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyKG1hcmtkb3duKTtcclxuICAgICAgICAgIHRoaXMubG9hZC5lbWl0KG1hcmtkb3duKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHRoaXMuZXJyb3IuZW1pdChlcnJvciksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVRyYW5zY2x1c2lvbigpIHtcclxuICAgIHRoaXMucmVuZGVyKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVBsdWdpbnMoKSB7XHJcbiAgICBpZiAodGhpcy5saW5lSGlnaGxpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0UGx1Z2luQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIFByaXNtUGx1Z2luLkxpbmVIaWdobGlnaHQpO1xyXG4gICAgICB0aGlzLnNldFBsdWdpbk9wdGlvbnModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgZGF0YUxpbmU6IHRoaXMubGluZSwgZGF0YUxpbmVPZmZzZXQ6IHRoaXMubGluZU9mZnNldCB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmxpbmVOdW1iZXJzKSB7XHJcbiAgICAgIHRoaXMuc2V0UGx1Z2luQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIFByaXNtUGx1Z2luLkxpbmVOdW1iZXJzKTtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5PcHRpb25zKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCB7IGRhdGFTdGFydDogdGhpcy5zdGFydCB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGx1Z2luQ2xhc3MoZWxlbWVudDogSFRNTEVsZW1lbnQsIHBsdWdpbjogc3RyaW5nIHwgc3RyaW5nW10pIHtcclxuICAgIGNvbnN0IHByZUVsZW1lbnRzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgY2xhc3NlcyA9IHBsdWdpbiBpbnN0YW5jZW9mIEFycmF5ID8gcGx1Z2luIDogW3BsdWdpbl07XHJcbiAgICAgIHByZUVsZW1lbnRzLml0ZW0oaSkuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGx1Z2luT3B0aW9ucyhlbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0aW9uczogb2JqZWN0KSB7XHJcbiAgICBjb25zdCBwcmVFbGVtZW50cyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlJyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZUVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZSA9IG9wdGlvbnNbb3B0aW9uXTtcclxuICAgICAgICBpZiAoISFhdHRyaWJ1dGVWYWx1ZSkge1xyXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlTmFtZSA9IHRoaXMudG9MaXNwQ2FzZShvcHRpb24pO1xyXG4gICAgICAgICAgcHJlRWxlbWVudHMuaXRlbShpKS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9MaXNwQ2FzZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1cHBlckNoYXJzID0gdmFsdWUubWF0Y2goLyhbQS1aXSkvZyk7XHJcbiAgICBpZiAoIXVwcGVyQ2hhcnMpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0ciA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHVwcGVyQ2hhcnMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAodXBwZXJDaGFyc1tpXSksICctJyArIHVwcGVyQ2hhcnNbaV0udG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc3RyLnNsaWNlKDAsIDEpID09PSAnLScpIHtcclxuICAgICAgc3RyID0gc3RyLnNsaWNlKDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgRWxlbWVudFJlZiwgTmdab25lLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgTWFya2Rvd25TZXJ2aWNlIH0gZnJvbSAnLi9tYXJrZG93bi5zZXJ2aWNlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnbWFya2Rvd24nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFya2Rvd25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHByaXZhdGUgbWFya2Rvd25TZXJ2aWNlOiBNYXJrZG93blNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICApIHsgfVxyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihgTWFya2Rvd25QaXBlIGhhcyBiZWVuIGludm9rZWQgd2l0aCBhbiBpbnZhbGlkIHZhbHVlIHR5cGUgWyR7dmFsdWV9XWApO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWFya2Rvd24gPSB0aGlzLm1hcmtkb3duU2VydmljZS5jb21waWxlKHZhbHVlKTtcclxuXHJcbiAgICB0aGlzLnpvbmUub25TdGFibGVcclxuICAgICAgLnBpcGUoZmlyc3QoKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm1hcmtkb3duU2VydmljZS5oaWdobGlnaHQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKTtcclxuXHJcbiAgICByZXR1cm4gbWFya2Rvd247XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTGFuZ3VhZ2VQaXBlIH0gZnJvbSAnLi9sYW5ndWFnZS5waXBlJztcclxuaW1wb3J0IHsgTWFya2Rvd25Db21wb25lbnQgfSBmcm9tICcuL21hcmtkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hcmtkb3duUGlwZSB9IGZyb20gJy4vbWFya2Rvd24ucGlwZSc7XHJcbmltcG9ydCB7IE1hcmtkb3duU2VydmljZSB9IGZyb20gJy4vbWFya2Rvd24uc2VydmljZSc7XHJcbmltcG9ydCB7IE1hcmtlZE9wdGlvbnMgfSBmcm9tICcuL21hcmtlZC1vcHRpb25zJztcclxuXHJcbi8vIGhhdmluZyBhIGRlcGVuZGVuY3kgb24gYEh0dHBDbGllbnRNb2R1bGVgIHdpdGhpbiBhIGxpYnJhcnlcclxuLy8gYnJlYWtzIGFsbCB0aGUgaW50ZXJjZXB0b3JzIGZyb20gdGhlIGFwcCBjb25zdW1pbmcgdGhlIGxpYnJhcnlcclxuLy8gaGVyZSwgd2UgZXhwbGljaXRlbHkgYXNrIHRoZSB1c2VyIHRvIHBhc3MgYSBwcm92aWRlciB3aXRoXHJcbi8vIHRoZWlyIG93biBpbnN0YW5jZSBvZiBgSHR0cENsaWVudE1vZHVsZWBcclxuZXhwb3J0IGludGVyZmFjZSBNYXJrZG93bk1vZHVsZUNvbmZpZyB7XHJcbiAgbG9hZGVyPzogUHJvdmlkZXI7XHJcbiAgbWFya2VkT3B0aW9ucz86IFByb3ZpZGVyO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaW5pdGlhbE1hcmtlZE9wdGlvbnM6IFByb3ZpZGVyID0ge1xyXG4gIHByb3ZpZGU6IE1hcmtlZE9wdGlvbnMsXHJcbiAgdXNlVmFsdWU6IHtcclxuICAgIGdmbTogdHJ1ZSxcclxuICAgIHRhYmxlczogdHJ1ZSxcclxuICAgIGJyZWFrczogZmFsc2UsXHJcbiAgICBwZWRhbnRpYzogZmFsc2UsXHJcbiAgICBzYW5pdGl6ZTogZmFsc2UsXHJcbiAgICBzbWFydExpc3RzOiB0cnVlLFxyXG4gICAgc21hcnR5cGFudHM6IGZhbHNlLFxyXG4gIH0sXHJcbn07XHJcblxyXG5jb25zdCBzaGFyZWREZWNsYXJhdGlvbnMgPSBbXHJcbiAgTGFuZ3VhZ2VQaXBlLFxyXG4gIE1hcmtkb3duQ29tcG9uZW50LFxyXG4gIE1hcmtkb3duUGlwZSxcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZXhwb3J0czogW1xyXG4gICAgLi4uc2hhcmVkRGVjbGFyYXRpb25zLFxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAuLi5zaGFyZWREZWNsYXJhdGlvbnMsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcmtkb3duTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChtYXJrZG93bk1vZHVsZUNvbmZpZz86IE1hcmtkb3duTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogTWFya2Rvd25Nb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIE1hcmtkb3duU2VydmljZSxcclxuICAgICAgICAuLi4obWFya2Rvd25Nb2R1bGVDb25maWdcclxuICAgICAgICAgID8gW1xyXG4gICAgICAgICAgICAgIG1hcmtkb3duTW9kdWxlQ29uZmlnLmxvYWRlciB8fCBbXSxcclxuICAgICAgICAgICAgICBtYXJrZG93bk1vZHVsZUNvbmZpZy5tYXJrZWRPcHRpb25zIHx8IGluaXRpYWxNYXJrZWRPcHRpb25zLFxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICA6IFtpbml0aWFsTWFya2VkT3B0aW9uc10pLFxyXG4gICAgICBdLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmb3JDaGlsZCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBNYXJrZG93bk1vZHVsZSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLE1BS2EsWUFBWTs7Ozs7O0lBRXZCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsUUFBZ0I7UUFDdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxDQUFDLEtBQUssQ0FBQyw2REFBNkQsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNyRixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQyw0REFBNEQsUUFBUSxHQUFHLENBQUMsQ0FBQztZQUN2RixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxLQUFLLEdBQUcsUUFBUSxHQUFHLElBQUksR0FBSSxLQUFLLEdBQUcsT0FBTyxDQUFDO0tBQ25EOzs7WUFmRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFVBQVU7YUFDakI7Ozs7Ozs7QUNGRCxN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

@@ -272,55 +272,7 @@ import { Pipe, Inject, Injectable, Optional, PLATFORM_ID, SecurityContext, Component, ElementRef, EventEmitter, Input, Output, NgZone, NgModule } from '@angular/core';

this.markdownService = markdownService;
this.error = new EventEmitter();
this.load = new EventEmitter();
this._lineHighlight = false;
this._lineNumbers = false;
this.error = new EventEmitter();
this.load = new EventEmitter();
}
Object.defineProperty(MarkdownComponent.prototype, "_isTranscluded", {
get: /**
* @return {?}
*/
function () {
return !this._data && !this._src;
},
enumerable: true,
configurable: true
});
Object.defineProperty(MarkdownComponent.prototype, "data", {
get: /**
* @return {?}
*/
function () { return this._data; },
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._data = value;
this.render(value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(MarkdownComponent.prototype, "src", {
get: /**
* @return {?}
*/
function () { return this._src; },
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
var _this = this;
this._src = value;
this.markdownService
.getSource(value)
.subscribe(function (markdown) {
_this.render(markdown);
_this.load.emit(markdown);
}, function (error) { return _this.error.emit(error); });
},
enumerable: true,
configurable: true
});
Object.defineProperty(MarkdownComponent.prototype, "lineNumbers", {

@@ -357,2 +309,18 @@ // Plugin - lineNumbers

*/
MarkdownComponent.prototype.ngOnChanges = /**
* @return {?}
*/
function () {
if (this.data) {
this.handleData();
return;
}
if (this.src) {
this.handleSrc();
return;
}
};
/**
* @return {?}
*/
MarkdownComponent.prototype.ngAfterViewInit = /**

@@ -362,4 +330,4 @@ * @return {?}

function () {
if (this._isTranscluded) {
this.render(this.element.nativeElement.innerHTML, true);
if (!this.data && !this.src) {
this.handleTransclusion();
}

@@ -397,2 +365,35 @@ };

*/
MarkdownComponent.prototype.handleData = /**
* @return {?}
*/
function () {
this.render(this.data);
};
/**
* @return {?}
*/
MarkdownComponent.prototype.handleSrc = /**
* @return {?}
*/
function () {
var _this = this;
this.markdownService
.getSource(this.src)
.subscribe(function (markdown) {
_this.render(markdown);
_this.load.emit(markdown);
}, function (error) { return _this.error.emit(error); });
};
/**
* @return {?}
*/
MarkdownComponent.prototype.handleTransclusion = /**
* @return {?}
*/
function () {
this.render(this.element.nativeElement.innerHTML, true);
};
/**
* @return {?}
*/
MarkdownComponent.prototype.handlePlugins = /**

@@ -642,2 +643,2 @@ * @return {?}

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hcmtkb3duLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL2xhbmd1YWdlLnBpcGUudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvbWFya2VkLW9wdGlvbnMudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvbWFya2VkLXJlbmRlcmVyLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLnNlcnZpY2UudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvcHJpc20tcGx1Z2luLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLmNvbXBvbmVudC50cyIsIm5nOi8vbmd4LW1hcmtkb3duL3NyYy9tYXJrZG93bi5waXBlLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2xhbmd1YWdlJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExhbmd1YWdlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBMYW5ndWFnZVBpcGUgaGFzIGJlZW4gaW52b2tlZCB3aXRoIGFuIGludmFsaWQgdmFsdWUgdHlwZSBbJHt2YWx1ZX1dYCk7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgbGFuZ3VhZ2UgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYExhbmd1YWdlUGlwZSBoYXMgYmVlbiBpbnZva2VkIHdpdGggYW4gaW52YWxpZCBwYXJhbWV0ZXIgWyR7bGFuZ3VhZ2V9XWApO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ2BgYCcgKyBsYW5ndWFnZSArICdcXG4nICsgIHZhbHVlICsgJ1xcbmBgYCc7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSAnbWFya2VkJztcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrZWRPcHRpb25zIGltcGxlbWVudHMgbWFya2VkLk1hcmtlZE9wdGlvbnMge1xyXG4gIC8qKlxyXG4gICAqIEEgcHJlZml4IFVSTCBmb3IgYW55IHJlbGF0aXZlIGxpbmsuXHJcbiAgICovXHJcbiAgYmFzZVVybD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIEdGTSBsaW5lIGJyZWFrcy4gVGhpcyBvcHRpb24gcmVxdWlyZXMgdGhlIGdmbSBvcHRpb24gdG8gYmUgdHJ1ZS5cclxuICAgKi9cclxuICBicmVha3M/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBFbmFibGUgR2l0SHViIGZsYXZvcmVkIG1hcmtkb3duLlxyXG4gICAqL1xyXG4gIGdmbT86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEluY2x1ZGUgYW4gaWQgYXR0cmlidXRlIHdoZW4gZW1pdHRpbmcgaGVhZGluZ3MuXHJcbiAgICovXHJcbiAgaGVhZGVySWRzPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBwcmVmaXggZm9yIGhlYWRlciB0YWcgaWRzLlxyXG4gICAqL1xyXG4gIGhlYWRlclByZWZpeD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBwcmVmaXggZm9yIGNvZGUgYmxvY2sgY2xhc3Nlcy5cclxuICAgKi9cclxuICBsYW5nUHJlZml4Pzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBNYW5nbGUgYXV0b2xpbmtzICg8ZW1haWxAZG9tYWluLmNvbT4pLlxyXG4gICAqL1xyXG4gIG1hbmdsZT86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZvcm0gdG8gb2JzY3VyZSBwYXJ0cyBvZiBtYXJrZG93bi5wbCBhcyBtdWNoIGFzIHBvc3NpYmxlLiBEb24ndCBmaXggYW55IG9mIHRoZSBvcmlnaW5hbCBtYXJrZG93biBidWdzIG9yIHBvb3IgYmVoYXZpb3IuXHJcbiAgICovXHJcbiAgcGVkYW50aWM/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBUeXBlOiBvYmplY3QgRGVmYXVsdDogbmV3IFJlbmRlcmVyKClcclxuICAgKlxyXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIGZ1bmN0aW9ucyB0byByZW5kZXIgdG9rZW5zIHRvIEhUTUwuXHJcbiAgICovXHJcbiAgcmVuZGVyZXI/OiBSZW5kZXJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2FuaXRpemUgdGhlIG91dHB1dC4gSWdub3JlIGFueSBIVE1MIHRoYXQgaGFzIGJlZW4gaW5wdXQuXHJcbiAgICovXHJcbiAgc2FuaXRpemU/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBTaG93cyBhbiBIVE1MIGVycm9yIG1lc3NhZ2Ugd2hlbiByZW5kZXJpbmcgZmFpbHMuXHJcbiAgICovXHJcbiAgc2lsZW50PzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIHNtYXJ0ZXIgbGlzdCBiZWhhdmlvciB0aGFuIHRoZSBvcmlnaW5hbCBtYXJrZG93bi4gTWF5IGV2ZW50dWFsbHkgYmUgZGVmYXVsdCB3aXRoIHRoZSBvbGQgYmVoYXZpb3IgbW92ZWQgaW50byBwZWRhbnRpYy5cclxuICAgKi9cclxuICBzbWFydExpc3RzPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIFwic21hcnRcIiB0eXBvZ3JhaGljIHB1bmN0dWF0aW9uIGZvciB0aGluZ3MgbGlrZSBxdW90ZXMgYW5kIGRhc2hlcy5cclxuICAgKi9cclxuICBzbWFydHlwYW50cz86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZSBHRk0gdGFibGVzLiBUaGlzIG9wdGlvbiByZXF1aXJlcyB0aGUgZ2ZtIG9wdGlvbiB0byBiZSB0cnVlLlxyXG4gICAqL1xyXG4gIHRhYmxlcz86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlIGNsb3Npbmcgc2xhc2ggZm9yIHNlbGYtY2xvc2luZyB0YWdzICg8YnIvPiBpbnN0ZWFkIG9mIDxicj4pXHJcbiAgICovXHJcbiAgeGh0bWw/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBBIGZ1bmN0aW9uIHRvIGhpZ2hsaWdodCBjb2RlIGJsb2Nrcy4gVGhlIGZ1bmN0aW9uIHRha2VzIHRocmVlIGFyZ3VtZW50czogY29kZSwgbGFuZywgYW5kIGNhbGxiYWNrLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodD8oY29kZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcsIGNhbGxiYWNrPzogKGVycm9yOiBhbnkgfCB1bmRlZmluZWQsIGNvZGU6IHN0cmluZykgPT4gdm9pZCk6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWxseSBzYW5pdGl6ZSBmb3VuZCBIVE1MIHdpdGggYSBzYW5pdGl6ZXIgZnVuY3Rpb24uXHJcbiAgICovXHJcbiAgc2FuaXRpemVyPyhodG1sOiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuIiwiaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICdtYXJrZWQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIE1hcmtlZFJlbmRlcmVyIGV4dGVuZHMgUmVuZGVyZXIgeyB9XHJcbiIsImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgUExBVEZPUk1fSUQsIFNlY3VyaXR5Q29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdtYXJrZWQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hcmtlZE9wdGlvbnMgfSBmcm9tICcuL21hcmtlZC1vcHRpb25zJztcclxuaW1wb3J0IHsgTWFya2VkUmVuZGVyZXIgfSBmcm9tICcuL21hcmtlZC1yZW5kZXJlcic7XHJcblxyXG5kZWNsYXJlIHZhciBQcmlzbToge1xyXG4gIGhpZ2hsaWdodEFsbDogKGFzeW5jOiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIGhpZ2hsaWdodEFsbFVuZGVyOiAoZWxlbWVudDogRWxlbWVudCkgPT4gdm9pZDtcclxufTtcclxuXHJcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuZXhwb3J0IGNvbnN0IGVycm9yU3JjV2l0aG91dEh0dHBDbGllbnQgPSAnW25neC1tYXJrZG93bl0gV2hlbiB1c2luZyB0aGUgW3NyY10gYXR0cmlidXRlIHlvdSAqaGF2ZSB0byogcGFzcyB0aGUgYEh0dHBDbGllbnRgIGFzIGEgcGFyYW1ldGVyIG9mIHRoZSBgZm9yUm9vdGAgbWV0aG9kLiBTZWUgUkVBRE1FIGZvciBtb3JlIGluZm9ybWF0aW9uJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1hcmtkb3duU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfb3B0aW9uczogTWFya2VkT3B0aW9ucztcclxuXHJcbiAgZ2V0IG9wdGlvbnMoKTogTWFya2VkT3B0aW9ucyB7IHJldHVybiB0aGlzLl9vcHRpb25zOyB9XHJcbiAgc2V0IG9wdGlvbnModmFsdWU6IE1hcmtlZE9wdGlvbnMpIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LFxyXG4gICAgICB7IHJlbmRlcmVyOiBuZXcgTWFya2VkUmVuZGVyZXIoKSB9LFxyXG4gICAgICB0aGlzLl9vcHRpb25zLFxyXG4gICAgICB2YWx1ZSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgcmVuZGVyZXIoKTogTWFya2VkUmVuZGVyZXIgeyByZXR1cm4gdGhpcy5vcHRpb25zLnJlbmRlcmVyOyB9XHJcbiAgc2V0IHJlbmRlcmVyKHZhbHVlOiBNYXJrZWRSZW5kZXJlcikge1xyXG4gICAgdGhpcy5vcHRpb25zLnJlbmRlcmVyID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm06IE9iamVjdCxcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBvcHRpb25zOiBNYXJrZWRPcHRpb25zLFxyXG4gICkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIGNvbXBpbGUobWFya2Rvd246IHN0cmluZywgZGVjb2RlSHRtbCA9IGZhbHNlLCBtYXJrZWRPcHRpb25zID0gdGhpcy5vcHRpb25zKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHByZWNvbXBpbGVkID0gdGhpcy5wcmVjb21waWxlKG1hcmtkb3duKTtcclxuICAgIGNvbnN0IGNvbXBpbGVkID0gcGFyc2UoXHJcbiAgICAgIGRlY29kZUh0bWwgPyB0aGlzLmRlY29kZUh0bWwocHJlY29tcGlsZWQpIDogcHJlY29tcGlsZWQsXHJcbiAgICAgIG1hcmtlZE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIG1hcmtlZE9wdGlvbnMuc2FuaXRpemUgJiYgIW1hcmtlZE9wdGlvbnMuc2FuaXRpemVyXHJcbiAgICAgID8gdGhpcy5kb21TYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIGNvbXBpbGVkKVxyXG4gICAgICA6IGNvbXBpbGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0U291cmNlKHNyYzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGlmICghdGhpcy5odHRwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvclNyY1dpdGhvdXRIdHRwQ2xpZW50KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChzcmMsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgLnBpcGUobWFwKG1hcmtkb3duID0+IHRoaXMuaGFuZGxlRXh0ZW5zaW9uKHNyYywgbWFya2Rvd24pKSk7XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHQoZWxlbWVudD86IEVsZW1lbnQpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtKSAmJiB0eXBlb2YgUHJpc20gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgICAgUHJpc20uaGlnaGxpZ2h0QWxsVW5kZXIoZWxlbWVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgUHJpc20uaGlnaGxpZ2h0QWxsKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWNvZGVIdG1sKGh0bWw6IHN0cmluZykge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm0pKSB7XHJcbiAgICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgICAgdGV4dGFyZWEuaW5uZXJIVE1MID0gaHRtbDtcclxuICAgICAgcmV0dXJuIHRleHRhcmVhLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGh0bWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUV4dGVuc2lvbihzcmM6IHN0cmluZywgbWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBleHRlbnNpb24gPSBzcmNcclxuICAgICAgPyBzcmMuc3BsaXQoJz8nKVswXS5zcGxpdCgnLicpLnNwbGljZSgtMSkuam9pbigpXHJcbiAgICAgIDogbnVsbDtcclxuICAgIHJldHVybiBleHRlbnNpb24gIT09ICdtZCdcclxuICAgICAgPyAnYGBgJyArIGV4dGVuc2lvbiArICdcXG4nICsgbWFya2Rvd24gKyAnXFxuYGBgJ1xyXG4gICAgICA6IG1hcmtkb3duO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmVjb21waWxlKG1hcmtkb3duOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFtYXJrZG93bikge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBsZXQgaW5kZW50U3RhcnQ6IG51bWJlcjtcclxuICAgIHJldHVybiBtYXJrZG93blxyXG4gICAgICAuc3BsaXQoJ1xcbicpXHJcbiAgICAgIC5tYXAobGluZSA9PiB7XHJcbiAgICAgICAgLy8gc2V0IGN1cnJlbnQgbGluZSBpZGVudCBzdGFydCB0byBiYXNlIHJlZmVyZW5jZSBpbmRlbnRhdGlvblxyXG4gICAgICAgIGxldCBsaW5lSWRlbnRTdGFydCA9IGluZGVudFN0YXJ0O1xyXG4gICAgICAgIC8vIGZpbmQgcG9zaXRpb24gb2YgMXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlclxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgY3VycmVudCBsaW5lIGluZGVudGF0aW9uIHN0YXJ0XHJcbiAgICAgICAgaWYgKGxpbmUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgbGluZUlkZW50U3RhcnQgPSBpc05hTihsaW5lSWRlbnRTdGFydClcclxuICAgICAgICAgICAgPyBsaW5lLnNlYXJjaCgvXFxTfCQvKVxyXG4gICAgICAgICAgICA6IE1hdGgubWluKGxpbmUuc2VhcmNoKC9cXFN8JC8pLCBsaW5lSWRlbnRTdGFydCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGtlZXAgMXN0IG5vbi13aGl0ZXNwYWNlIGxpbmUgaW5kZW50YXRpb25cclxuICAgICAgICAvLyBhcyBiYXNlIHJlZmVyZW5jZSBmb3Igb3RoZXIgbGluZXNcclxuICAgICAgICBpZiAoaXNOYU4oaW5kZW50U3RhcnQpKSB7XHJcbiAgICAgICAgICBpbmRlbnRTdGFydCA9IGxpbmVJZGVudFN0YXJ0O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyByZW1vdmUgd2hpdGVzcGFjZXMgYmVmb3JlIGN1cnJlbnQgbGluZSBpbmRlbnRhdGlvblxyXG4gICAgICAgIHJldHVybiAhIWxpbmVJZGVudFN0YXJ0XHJcbiAgICAgICAgICA/IGxpbmUuc3Vic3RyaW5nKGxpbmVJZGVudFN0YXJ0KVxyXG4gICAgICAgICAgOiBsaW5lO1xyXG4gICAgICB9KS5qb2luKCdcXG4nKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGVudW0gUHJpc21QbHVnaW4ge1xyXG4gIExpbmVIaWdobGlnaHQgPSAnbGluZS1oaWdobGlnaHQnLFxyXG4gIExpbmVOdW1iZXJzID0gJ2xpbmUtbnVtYmVycycsXHJcbn1cclxuIiwiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1hcmtkb3duU2VydmljZSB9IGZyb20gJy4vbWFya2Rvd24uc2VydmljZSc7XHJcbmltcG9ydCB7IFByaXNtUGx1Z2luIH0gZnJvbSAnLi9wcmlzbS1wbHVnaW4nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnbWFya2Rvd24sIFttYXJrZG93bl0nLFxyXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXJrZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIHByaXZhdGUgX2RhdGE6IHN0cmluZztcclxuICBwcml2YXRlIF9saW5lSGlnaGxpZ2h0ID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfbGluZU51bWJlcnMgPSBmYWxzZTtcclxuICBwcml2YXRlIF9zcmM6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBnZXQgX2lzVHJhbnNjbHVkZWQoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuX2RhdGEgJiYgIXRoaXMuX3NyYztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRhdGEoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2RhdGE7IH1cclxuICBzZXQgZGF0YSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLnJlbmRlcih2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBzcmMoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3NyYzsgfVxyXG4gIHNldCBzcmModmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc3JjID0gdmFsdWU7XHJcbiAgICB0aGlzLm1hcmtkb3duU2VydmljZVxyXG4gICAgICAuZ2V0U291cmNlKHZhbHVlKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIG1hcmtkb3duID0+IHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyKG1hcmtkb3duKTtcclxuICAgICAgICAgIHRoaXMubG9hZC5lbWl0KG1hcmtkb3duKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHRoaXMuZXJyb3IuZW1pdChlcnJvciksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBQbHVnaW4gLSBsaW5lTnVtYmVyc1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGxpbmVOdW1iZXJzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fbGluZU51bWJlcnM7IH1cclxuICBzZXQgbGluZU51bWJlcnModmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fbGluZU51bWJlcnMgPSB0aGlzLmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cclxuICBASW5wdXQoKSBzdGFydDogbnVtYmVyO1xyXG5cclxuICAvLyBQbHVnaW4gLSBsaW5lSGlnaGxpZ2h0XHJcbiAgQElucHV0KClcclxuICBnZXQgbGluZUhpZ2hsaWdodCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2xpbmVIaWdobGlnaHQ7IH1cclxuICBzZXQgbGluZUhpZ2hsaWdodCh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9saW5lSGlnaGxpZ2h0ID0gdGhpcy5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XHJcbiAgQElucHV0KCkgbGluZTogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgQElucHV0KCkgbGluZU9mZnNldDogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCkgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHB1YmxpYyBtYXJrZG93blNlcnZpY2U6IE1hcmtkb3duU2VydmljZSxcclxuICApIHsgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5faXNUcmFuc2NsdWRlZCkge1xyXG4gICAgICB0aGlzLnJlbmRlcih0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pbm5lckhUTUwsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyKG1hcmtkb3duOiBzdHJpbmcsIGRlY29kZUh0bWwgPSBmYWxzZSkge1xyXG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5tYXJrZG93blNlcnZpY2UuY29tcGlsZShtYXJrZG93biwgZGVjb2RlSHRtbCk7XHJcbiAgICB0aGlzLmhhbmRsZVBsdWdpbnMoKTtcclxuICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlLmhpZ2hsaWdodCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZTogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUGx1Z2lucygpIHtcclxuICAgIGlmICh0aGlzLmxpbmVIaWdobGlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5DbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgUHJpc21QbHVnaW4uTGluZUhpZ2hsaWdodCk7XHJcbiAgICAgIHRoaXMuc2V0UGx1Z2luT3B0aW9ucyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgeyBkYXRhTGluZTogdGhpcy5saW5lLCBkYXRhTGluZU9mZnNldDogdGhpcy5saW5lT2Zmc2V0IH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubGluZU51bWJlcnMpIHtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5DbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgUHJpc21QbHVnaW4uTGluZU51bWJlcnMpO1xyXG4gICAgICB0aGlzLnNldFBsdWdpbk9wdGlvbnModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgZGF0YVN0YXJ0OiB0aGlzLnN0YXJ0IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQbHVnaW5DbGFzcyhlbGVtZW50OiBIVE1MRWxlbWVudCwgcGx1Z2luOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgcHJlRWxlbWVudHMgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZScpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBjbGFzc2VzID0gcGx1Z2luIGluc3RhbmNlb2YgQXJyYXkgPyBwbHVnaW4gOiBbcGx1Z2luXTtcclxuICAgICAgcHJlRWxlbWVudHMuaXRlbShpKS5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQbHVnaW5PcHRpb25zKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcHRpb25zOiBvYmplY3QpIHtcclxuICAgIGNvbnN0IHByZUVsZW1lbnRzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gb3B0aW9uc1tvcHRpb25dO1xyXG4gICAgICAgIGlmICghIWF0dHJpYnV0ZVZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVOYW1lID0gdGhpcy50b0xpc3BDYXNlKG9wdGlvbik7XHJcbiAgICAgICAgICBwcmVFbGVtZW50cy5pdGVtKGkpLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVWYWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0xpc3BDYXNlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHVwcGVyQ2hhcnMgPSB2YWx1ZS5tYXRjaCgvKFtBLVpdKS9nKTtcclxuICAgIGlmICghdXBwZXJDaGFycykge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3RyID0gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gdXBwZXJDaGFycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgc3RyID0gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cCh1cHBlckNoYXJzW2ldKSwgJy0nICsgdXBwZXJDaGFyc1tpXS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIH1cclxuICAgIGlmIChzdHIuc2xpY2UoMCwgMSkgPT09ICctJykge1xyXG4gICAgICBzdHIgPSBzdHIuc2xpY2UoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgeyBFbGVtZW50UmVmLCBOZ1pvbmUsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBNYXJrZG93blNlcnZpY2UgfSBmcm9tICcuL21hcmtkb3duLnNlcnZpY2UnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdtYXJrZG93bicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXJrZG93blBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHJpdmF0ZSBtYXJrZG93blNlcnZpY2U6IE1hcmtkb3duU2VydmljZSxcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICkgeyB9XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBNYXJrZG93blBpcGUgaGFzIGJlZW4gaW52b2tlZCB3aXRoIGFuIGludmFsaWQgdmFsdWUgdHlwZSBbJHt2YWx1ZX1dYCk7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtYXJrZG93biA9IHRoaXMubWFya2Rvd25TZXJ2aWNlLmNvbXBpbGUodmFsdWUpO1xyXG5cclxuICAgIHRoaXMuem9uZS5vblN0YWJsZVxyXG4gICAgICAucGlwZShmaXJzdCgpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubWFya2Rvd25TZXJ2aWNlLmhpZ2hsaWdodCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xyXG5cclxuICAgIHJldHVybiBtYXJrZG93bjtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZVBpcGUgfSBmcm9tICcuL2xhbmd1YWdlLnBpcGUnO1xyXG5pbXBvcnQgeyBNYXJrZG93bkNvbXBvbmVudCB9IGZyb20gJy4vbWFya2Rvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWFya2Rvd25QaXBlIH0gZnJvbSAnLi9tYXJrZG93bi5waXBlJztcclxuaW1wb3J0IHsgTWFya2Rvd25TZXJ2aWNlIH0gZnJvbSAnLi9tYXJrZG93bi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFya2VkT3B0aW9ucyB9IGZyb20gJy4vbWFya2VkLW9wdGlvbnMnO1xyXG5cclxuLy8gaGF2aW5nIGEgZGVwZW5kZW5jeSBvbiBgSHR0cENsaWVudE1vZHVsZWAgd2l0aGluIGEgbGlicmFyeVxyXG4vLyBicmVha3MgYWxsIHRoZSBpbnRlcmNlcHRvcnMgZnJvbSB0aGUgYXBwIGNvbnN1bWluZyB0aGUgbGlicmFyeVxyXG4vLyBoZXJlLCB3ZSBleHBsaWNpdGVseSBhc2sgdGhlIHVzZXIgdG8gcGFzcyBhIHByb3ZpZGVyIHdpdGhcclxuLy8gdGhlaXIgb3duIGluc3RhbmNlIG9mIGBIdHRwQ2xpZW50TW9kdWxlYFxyXG5leHBvcnQgaW50ZXJmYWNlIE1hcmtkb3duTW9kdWxlQ29uZmlnIHtcclxuICBsb2FkZXI/OiBQcm92aWRlcjtcclxuICBtYXJrZWRPcHRpb25zPzogUHJvdmlkZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpbml0aWFsTWFya2VkT3B0aW9uczogUHJvdmlkZXIgPSB7XHJcbiAgcHJvdmlkZTogTWFya2VkT3B0aW9ucyxcclxuICB1c2VWYWx1ZToge1xyXG4gICAgZ2ZtOiB0cnVlLFxyXG4gICAgdGFibGVzOiB0cnVlLFxyXG4gICAgYnJlYWtzOiBmYWxzZSxcclxuICAgIHBlZGFudGljOiBmYWxzZSxcclxuICAgIHNhbml0aXplOiBmYWxzZSxcclxuICAgIHNtYXJ0TGlzdHM6IHRydWUsXHJcbiAgICBzbWFydHlwYW50czogZmFsc2UsXHJcbiAgfSxcclxufTtcclxuXHJcbmNvbnN0IHNoYXJlZERlY2xhcmF0aW9ucyA9IFtcclxuICBMYW5ndWFnZVBpcGUsXHJcbiAgTWFya2Rvd25Db21wb25lbnQsXHJcbiAgTWFya2Rvd25QaXBlLFxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBleHBvcnRzOiBbXHJcbiAgICAuLi5zaGFyZWREZWNsYXJhdGlvbnMsXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIC4uLnNoYXJlZERlY2xhcmF0aW9ucyxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFya2Rvd25Nb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KG1hcmtkb3duTW9kdWxlQ29uZmlnPzogTWFya2Rvd25Nb2R1bGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBNYXJrZG93bk1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgTWFya2Rvd25TZXJ2aWNlLFxyXG4gICAgICAgIC4uLihtYXJrZG93bk1vZHVsZUNvbmZpZ1xyXG4gICAgICAgICAgPyBbXHJcbiAgICAgICAgICAgICAgbWFya2Rvd25Nb2R1bGVDb25maWcubG9hZGVyIHx8IFtdLFxyXG4gICAgICAgICAgICAgIG1hcmtkb3duTW9kdWxlQ29uZmlnLm1hcmtlZE9wdGlvbnMgfHwgaW5pdGlhbE1hcmtlZE9wdGlvbnMsXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgIDogW2luaXRpYWxNYXJrZWRPcHRpb25zXSksXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZvckNoaWxkKCk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IE1hcmtkb3duTW9kdWxlLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl0sIm5hbWVzIjpbInRzbGliXzEuX19leHRlbmRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7SUFPRSxnQ0FBUzs7Ozs7SUFBVCxVQUFVLEtBQWEsRUFBRSxRQUFnQjtRQUN2QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixPQUFPLENBQUMsS0FBSyxDQUFDLCtEQUE2RCxLQUFLLE1BQUcsQ0FBQyxDQUFDO1lBQ3JGLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLDhEQUE0RCxRQUFRLE1BQUcsQ0FBQyxDQUFDO1lBQ3ZGLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLEtBQUssR0FBRyxRQUFRLEdBQUcsSUFBSSxHQUFJLEtBQUssR0FBRyxPQUFPLENBQUM7S0FDbkQ7O2dCQWZGLElBQUksU0FBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtpQkFDakI7O3VCQUpEOzs7Ozs7O0FDRUEsSUFBQTs7O3dCQUZBO0lBeUZDOzs7Ozs7SUN2RkQ7SUFBb0NBLGtDQUFROzs7O3lCQUY1QztFQUVvQyxRQUFRLEVBQUk7Ozs7OztBQ0ZoRDtBQWlCQSxJQUFhLHlCQUF5QixHQUFHLDJKQUEySixDQUFDOztJQW9Cbk0seUJBQytCLFFBQWdCLEVBQ3pCLElBQWdCLEVBQzVCLGNBQ1IsT0FBc0I7UUFITyxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ3pCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDNUIsaUJBQVksR0FBWixZQUFZO1FBR3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0tBQ3hCO0lBckJELHNCQUFJLG9DQUFPOzs7O1FBQVgsY0FBK0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7Ozs7O1FBQ3RELFVBQVksS0FBb0I7WUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFDOUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxjQUFjLEVBQUUsRUFBRSxFQUNsQyxJQUFJLENBQUMsUUFBUSxFQUNiLEtBQUssQ0FDTixDQUFDO1NBQ0g7OztPQVBxRDtJQVN0RCxzQkFBSSxxQ0FBUTs7OztRQUFaLGNBQWlDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTs7Ozs7UUFDaEUsVUFBYSxLQUFxQjtZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7U0FDL0I7OztPQUgrRDs7Ozs7OztJQWNoRSxpQ0FBTzs7Ozs7O0lBQVAsVUFBUSxRQUFnQixFQUFFLFVBQWtCLEVBQUUsYUFBNEI7UUFBaEQsMkJBQUEsRUFBQSxrQkFBa0I7UUFBRSw4QkFBQSxFQUFBLGdCQUFnQixJQUFJLENBQUMsT0FBTzs7UUFDeEUsSUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7UUFDOUMsSUFBTSxRQUFRLEdBQUcsS0FBSyxDQUNwQixVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLEVBQ3ZELGFBQWEsQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sYUFBYSxDQUFDLFFBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO2NBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2NBQzFELFFBQVEsQ0FBQztLQUNkOzs7OztJQUVELG1DQUFTOzs7O0lBQVQsVUFBVSxHQUFXO1FBQXJCLGlCQU9DO1FBTkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDNUM7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUEsUUFBUSxJQUFJLE9BQUEsS0FBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUEsQ0FBQyxDQUFDLENBQUM7S0FDL0Q7Ozs7O0lBRUQsbUNBQVM7Ozs7SUFBVCxVQUFVLE9BQWlCO1FBQ3pCLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUNwRSxJQUFJLE9BQU8sRUFBRTtnQkFDWCxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbEM7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMzQjtTQUNGO0tBQ0Y7Ozs7O0lBRU8sb0NBQVU7Ozs7Y0FBQyxJQUFZO1FBQzdCLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFOztZQUNwQyxJQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQzFCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQztTQUN2QjtRQUNELE9BQU8sSUFBSSxDQUFDOzs7Ozs7O0lBR04seUNBQWU7Ozs7O2NBQUMsR0FBVyxFQUFFLFFBQWdCOztRQUNuRCxJQUFNLFNBQVMsR0FBRyxHQUFHO2NBQ2pCLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtjQUM5QyxJQUFJLENBQUM7UUFDVCxPQUFPLFNBQVMsS0FBSyxJQUFJO2NBQ3JCLEtBQUssR0FBRyxTQUFTLEdBQUcsSUFBSSxHQUFHLFFBQVEsR0FBRyxPQUFPO2NBQzdDLFFBQVEsQ0FBQzs7Ozs7O0lBR1Asb0NBQVU7Ozs7Y0FBQyxRQUFnQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsT0FBTyxFQUFFLENBQUM7U0FDWDs7UUFDRCxJQUFJLFdBQVcsQ0FBUztRQUN4QixPQUFPLFFBQVE7YUFDWixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsR0FBRyxDQUFDLFVBQUEsSUFBSTs7WUFFUCxJQUFJLGNBQWMsR0FBRyxXQUFXLENBQUM7OztZQUdqQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQixjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztzQkFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7c0JBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQzthQUNuRDs7O1lBR0QsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ3RCLFdBQVcsR0FBRyxjQUFjLENBQUM7YUFDOUI7O1lBRUQsT0FBTyxDQUFDLENBQUMsY0FBYztrQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7a0JBQzlCLElBQUksQ0FBQztTQUNWLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7OztnQkFwR25CLFVBQVU7Ozs7Z0JBbUJnQyxNQUFNLHVCQUE1QyxNQUFNLFNBQUMsV0FBVztnQkFyQ2QsVUFBVSx1QkFzQ2QsUUFBUTtnQkFwQ0osWUFBWTtnQkFLWixhQUFhOzswQkFSdEI7Ozs7Ozs7OztJQ0NFLGVBQWdCLGdCQUFnQjtJQUNoQyxhQUFjLGNBQWM7Ozs7Ozs7O0lDd0Q1QiwyQkFDUyxTQUNBO1FBREEsWUFBTyxHQUFQLE9BQU87UUFDUCxvQkFBZSxHQUFmLGVBQWU7OEJBaERDLEtBQUs7NEJBQ1AsS0FBSztRQTBDNUIsYUFBa0IsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM3QyxZQUFpQixJQUFJLFlBQVksRUFBVSxDQUFDO0tBS3ZDOzBCQTdDTyw2Q0FBYzs7Ozs7WUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzs7OztJQUduQyxzQkFDSSxtQ0FBSTs7OztRQURSLGNBQ3FCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFOzs7OztRQUN6QyxVQUFTLEtBQWE7WUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQjs7O09BSndDO0lBTXpDLHNCQUNJLGtDQUFHOzs7O1FBRFAsY0FDb0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Ozs7O1FBQ3ZDLFVBQVEsS0FBYTtZQUFyQixpQkFXQztZQVZDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxlQUFlO2lCQUNqQixTQUFTLENBQUMsS0FBSyxDQUFDO2lCQUNoQixTQUFTLENBQ1IsVUFBQSxRQUFRO2dCQUNOLEtBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RCLEtBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzFCLEVBQ0QsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBQSxDQUNoQyxDQUFDO1NBQ0w7OztPQVpzQztJQWV2QyxzQkFDSSwwQ0FBVzs7Ozs7UUFEZixjQUM2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTs7Ozs7UUFDeEQsVUFBZ0IsS0FBYyxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7OztPQURsQztJQUt4RCxzQkFDSSw0Q0FBYTs7Ozs7UUFEakIsY0FDK0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7Ozs7O1FBQzVELFVBQWtCLEtBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFOzs7T0FEbEM7Ozs7SUFhNUQsMkNBQWU7OztJQUFmO1FBQ0UsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3pEO0tBQ0Y7Ozs7OztJQUVELGtDQUFNOzs7OztJQUFOLFVBQU8sUUFBZ0IsRUFBRSxVQUFrQjtRQUFsQiwyQkFBQSxFQUFBLGtCQUFrQjtRQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQzVEOzs7OztJQUVPLGlEQUFxQjs7OztjQUFDLEtBQWM7UUFDMUMsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUcsS0FBTyxLQUFLLE9BQU8sQ0FBQzs7Ozs7SUFHekMseUNBQWE7Ozs7UUFDbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUM3RztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDOUU7Ozs7Ozs7SUFHSywwQ0FBYzs7Ozs7Y0FBQyxPQUFvQixFQUFFLE1BQXlCOzs7UUFDcEUsSUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOztZQUMzQyxJQUFNLE9BQU8sR0FBRyxNQUFNLFlBQVksS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVELENBQUEsS0FBQSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxHQUFHLG9CQUFJLE9BQU8sR0FBRTtTQUMvQzs7Ozs7OztJQUdLLDRDQUFnQjs7Ozs7Y0FBQyxPQUFvQixFQUFFLE9BQWU7OztRQUM1RCxJQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0NBQzNDLENBQUM7WUFDUixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLE1BQU07O2dCQUNqQyxJQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRTs7b0JBQ3BCLElBQU0sYUFBYSxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzlDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztpQkFDNUU7YUFDRixDQUFDLENBQUM7O1FBUEwsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO29CQUFsQyxDQUFDO1NBUVQ7Ozs7OztJQUdLLHNDQUFVOzs7O2NBQUMsS0FBYTs7UUFDOUIsSUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTyxLQUFLLENBQUM7U0FDZDs7UUFDRCxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqRCxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDakY7UUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUMzQixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQjtRQUNELE9BQU8sR0FBRyxDQUFDOzs7Z0JBdEhkLFNBQVMsU0FBQzs7b0JBRVQsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7Ozs7Z0JBVGtDLFVBQVU7Z0JBRXBDLGVBQWU7Ozt1QkFrQnJCLEtBQUs7c0JBT0wsS0FBSzs4QkFnQkwsS0FBSzt3QkFHTCxLQUFLO2dDQUdMLEtBQUs7dUJBR0wsS0FBSzs2QkFDTCxLQUFLO3dCQUVMLE1BQU07dUJBQ04sTUFBTTs7NEJBeERUOzs7Ozs7O0FDQUE7SUFVRSxzQkFDVSxZQUNBLGlCQUNBO1FBRkEsZUFBVSxHQUFWLFVBQVU7UUFDVixvQkFBZSxHQUFmLGVBQWU7UUFDZixTQUFJLEdBQUosSUFBSTtLQUNUOzs7OztJQUVMLGdDQUFTOzs7O0lBQVQsVUFBVSxLQUFhO1FBQXZCLGlCQWlCQztRQWhCQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDakIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0RBQTZELEtBQUssTUFBRyxDQUFDLENBQUM7WUFDckYsT0FBTyxLQUFLLENBQUM7U0FDZDs7UUFFRCxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7YUFDZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDYixTQUFTLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEtBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUEsQ0FBQyxDQUFDO1FBRWxGLE9BQU8sUUFBUSxDQUFDO0tBQ2pCOztnQkE1QkYsSUFBSSxTQUFDO29CQUNKLElBQUksRUFBRSxVQUFVO2lCQUNqQjs7OztnQkFQUSxVQUFVO2dCQUdWLGVBQWU7Z0JBSEgsTUFBTTs7dUJBQTNCOzs7Ozs7OztBQ2lCQSxJQUFhLG9CQUFvQixHQUFhO0lBQzVDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFFBQVEsRUFBRTtRQUNSLEdBQUcsRUFBRSxJQUFJO1FBQ1QsTUFBTSxFQUFFLElBQUk7UUFDWixNQUFNLEVBQUUsS0FBSztRQUNiLFFBQVEsRUFBRSxLQUFLO1FBQ2YsUUFBUSxFQUFFLEtBQUs7UUFDZixVQUFVLEVBQUUsSUFBSTtRQUNoQixXQUFXLEVBQUUsS0FBSztLQUNuQjtDQUNGLENBQUM7O0FBRUYsSUFBTSxrQkFBa0IsR0FBRztJQUN6QixZQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLFlBQVk7Q0FDYixDQUFDOzs7Ozs7OztJQVdPLHNCQUFPOzs7O0lBQWQsVUFBZSxvQkFBMkM7UUFDeEQsT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVM7Z0JBQ1AsZUFBZTtnQkFDWCxvQkFBb0I7a0JBQ3BCO29CQUNFLG9CQUFvQixDQUFDLE1BQU0sSUFBSSxFQUFFO29CQUNqQyxvQkFBb0IsQ0FBQyxhQUFhLElBQUksb0JBQW9CO2lCQUMzRDtrQkFDRCxDQUFDLG9CQUFvQixDQUFDLEVBQzNCO1NBQ0YsQ0FBQztLQUNIOzs7O0lBRU0sdUJBQVE7OztJQUFmO1FBQ0UsT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1NBQ3pCLENBQUM7S0FDSDs7Z0JBNUJGLFFBQVEsU0FBQztvQkFDUixPQUFPLFdBQ0Ysa0JBQWtCLENBQ3RCO29CQUNELFlBQVksV0FDUCxrQkFBa0IsQ0FDdEI7aUJBQ0Y7O3lCQTNDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hcmtkb3duLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL2xhbmd1YWdlLnBpcGUudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvbWFya2VkLW9wdGlvbnMudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvbWFya2VkLXJlbmRlcmVyLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLnNlcnZpY2UudHMiLCJuZzovL25neC1tYXJrZG93bi9zcmMvcHJpc20tcGx1Z2luLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLmNvbXBvbmVudC50cyIsIm5nOi8vbmd4LW1hcmtkb3duL3NyYy9tYXJrZG93bi5waXBlLnRzIiwibmc6Ly9uZ3gtbWFya2Rvd24vc3JjL21hcmtkb3duLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2xhbmd1YWdlJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExhbmd1YWdlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBMYW5ndWFnZVBpcGUgaGFzIGJlZW4gaW52b2tlZCB3aXRoIGFuIGludmFsaWQgdmFsdWUgdHlwZSBbJHt2YWx1ZX1dYCk7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgbGFuZ3VhZ2UgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYExhbmd1YWdlUGlwZSBoYXMgYmVlbiBpbnZva2VkIHdpdGggYW4gaW52YWxpZCBwYXJhbWV0ZXIgWyR7bGFuZ3VhZ2V9XWApO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ2BgYCcgKyBsYW5ndWFnZSArICdcXG4nICsgIHZhbHVlICsgJ1xcbmBgYCc7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSAnbWFya2VkJztcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrZWRPcHRpb25zIGltcGxlbWVudHMgbWFya2VkLk1hcmtlZE9wdGlvbnMge1xyXG4gIC8qKlxyXG4gICAqIEEgcHJlZml4IFVSTCBmb3IgYW55IHJlbGF0aXZlIGxpbmsuXHJcbiAgICovXHJcbiAgYmFzZVVybD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIEdGTSBsaW5lIGJyZWFrcy4gVGhpcyBvcHRpb24gcmVxdWlyZXMgdGhlIGdmbSBvcHRpb24gdG8gYmUgdHJ1ZS5cclxuICAgKi9cclxuICBicmVha3M/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBFbmFibGUgR2l0SHViIGZsYXZvcmVkIG1hcmtkb3duLlxyXG4gICAqL1xyXG4gIGdmbT86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEluY2x1ZGUgYW4gaWQgYXR0cmlidXRlIHdoZW4gZW1pdHRpbmcgaGVhZGluZ3MuXHJcbiAgICovXHJcbiAgaGVhZGVySWRzPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBwcmVmaXggZm9yIGhlYWRlciB0YWcgaWRzLlxyXG4gICAqL1xyXG4gIGhlYWRlclByZWZpeD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBwcmVmaXggZm9yIGNvZGUgYmxvY2sgY2xhc3Nlcy5cclxuICAgKi9cclxuICBsYW5nUHJlZml4Pzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBNYW5nbGUgYXV0b2xpbmtzICg8ZW1haWxAZG9tYWluLmNvbT4pLlxyXG4gICAqL1xyXG4gIG1hbmdsZT86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZvcm0gdG8gb2JzY3VyZSBwYXJ0cyBvZiBtYXJrZG93bi5wbCBhcyBtdWNoIGFzIHBvc3NpYmxlLiBEb24ndCBmaXggYW55IG9mIHRoZSBvcmlnaW5hbCBtYXJrZG93biBidWdzIG9yIHBvb3IgYmVoYXZpb3IuXHJcbiAgICovXHJcbiAgcGVkYW50aWM/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBUeXBlOiBvYmplY3QgRGVmYXVsdDogbmV3IFJlbmRlcmVyKClcclxuICAgKlxyXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIGZ1bmN0aW9ucyB0byByZW5kZXIgdG9rZW5zIHRvIEhUTUwuXHJcbiAgICovXHJcbiAgcmVuZGVyZXI/OiBSZW5kZXJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2FuaXRpemUgdGhlIG91dHB1dC4gSWdub3JlIGFueSBIVE1MIHRoYXQgaGFzIGJlZW4gaW5wdXQuXHJcbiAgICovXHJcbiAgc2FuaXRpemU/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBTaG93cyBhbiBIVE1MIGVycm9yIG1lc3NhZ2Ugd2hlbiByZW5kZXJpbmcgZmFpbHMuXHJcbiAgICovXHJcbiAgc2lsZW50PzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIHNtYXJ0ZXIgbGlzdCBiZWhhdmlvciB0aGFuIHRoZSBvcmlnaW5hbCBtYXJrZG93bi4gTWF5IGV2ZW50dWFsbHkgYmUgZGVmYXVsdCB3aXRoIHRoZSBvbGQgYmVoYXZpb3IgbW92ZWQgaW50byBwZWRhbnRpYy5cclxuICAgKi9cclxuICBzbWFydExpc3RzPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIFwic21hcnRcIiB0eXBvZ3JhaGljIHB1bmN0dWF0aW9uIGZvciB0aGluZ3MgbGlrZSBxdW90ZXMgYW5kIGRhc2hlcy5cclxuICAgKi9cclxuICBzbWFydHlwYW50cz86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZSBHRk0gdGFibGVzLiBUaGlzIG9wdGlvbiByZXF1aXJlcyB0aGUgZ2ZtIG9wdGlvbiB0byBiZSB0cnVlLlxyXG4gICAqL1xyXG4gIHRhYmxlcz86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlIGNsb3Npbmcgc2xhc2ggZm9yIHNlbGYtY2xvc2luZyB0YWdzICg8YnIvPiBpbnN0ZWFkIG9mIDxicj4pXHJcbiAgICovXHJcbiAgeGh0bWw/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBBIGZ1bmN0aW9uIHRvIGhpZ2hsaWdodCBjb2RlIGJsb2Nrcy4gVGhlIGZ1bmN0aW9uIHRha2VzIHRocmVlIGFyZ3VtZW50czogY29kZSwgbGFuZywgYW5kIGNhbGxiYWNrLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodD8oY29kZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcsIGNhbGxiYWNrPzogKGVycm9yOiBhbnkgfCB1bmRlZmluZWQsIGNvZGU6IHN0cmluZykgPT4gdm9pZCk6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWxseSBzYW5pdGl6ZSBmb3VuZCBIVE1MIHdpdGggYSBzYW5pdGl6ZXIgZnVuY3Rpb24uXHJcbiAgICovXHJcbiAgc2FuaXRpemVyPyhodG1sOiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuIiwiaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICdtYXJrZWQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIE1hcmtlZFJlbmRlcmVyIGV4dGVuZHMgUmVuZGVyZXIgeyB9XHJcbiIsImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgUExBVEZPUk1fSUQsIFNlY3VyaXR5Q29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdtYXJrZWQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hcmtlZE9wdGlvbnMgfSBmcm9tICcuL21hcmtlZC1vcHRpb25zJztcclxuaW1wb3J0IHsgTWFya2VkUmVuZGVyZXIgfSBmcm9tICcuL21hcmtlZC1yZW5kZXJlcic7XHJcblxyXG5kZWNsYXJlIHZhciBQcmlzbToge1xyXG4gIGhpZ2hsaWdodEFsbDogKGFzeW5jOiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIGhpZ2hsaWdodEFsbFVuZGVyOiAoZWxlbWVudDogRWxlbWVudCkgPT4gdm9pZDtcclxufTtcclxuXHJcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuZXhwb3J0IGNvbnN0IGVycm9yU3JjV2l0aG91dEh0dHBDbGllbnQgPSAnW25neC1tYXJrZG93bl0gV2hlbiB1c2luZyB0aGUgW3NyY10gYXR0cmlidXRlIHlvdSAqaGF2ZSB0byogcGFzcyB0aGUgYEh0dHBDbGllbnRgIGFzIGEgcGFyYW1ldGVyIG9mIHRoZSBgZm9yUm9vdGAgbWV0aG9kLiBTZWUgUkVBRE1FIGZvciBtb3JlIGluZm9ybWF0aW9uJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1hcmtkb3duU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfb3B0aW9uczogTWFya2VkT3B0aW9ucztcclxuXHJcbiAgZ2V0IG9wdGlvbnMoKTogTWFya2VkT3B0aW9ucyB7IHJldHVybiB0aGlzLl9vcHRpb25zOyB9XHJcbiAgc2V0IG9wdGlvbnModmFsdWU6IE1hcmtlZE9wdGlvbnMpIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LFxyXG4gICAgICB7IHJlbmRlcmVyOiBuZXcgTWFya2VkUmVuZGVyZXIoKSB9LFxyXG4gICAgICB0aGlzLl9vcHRpb25zLFxyXG4gICAgICB2YWx1ZSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgcmVuZGVyZXIoKTogTWFya2VkUmVuZGVyZXIgeyByZXR1cm4gdGhpcy5vcHRpb25zLnJlbmRlcmVyOyB9XHJcbiAgc2V0IHJlbmRlcmVyKHZhbHVlOiBNYXJrZWRSZW5kZXJlcikge1xyXG4gICAgdGhpcy5vcHRpb25zLnJlbmRlcmVyID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm06IE9iamVjdCxcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBvcHRpb25zOiBNYXJrZWRPcHRpb25zLFxyXG4gICkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIGNvbXBpbGUobWFya2Rvd246IHN0cmluZywgZGVjb2RlSHRtbCA9IGZhbHNlLCBtYXJrZWRPcHRpb25zID0gdGhpcy5vcHRpb25zKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHByZWNvbXBpbGVkID0gdGhpcy5wcmVjb21waWxlKG1hcmtkb3duKTtcclxuICAgIGNvbnN0IGNvbXBpbGVkID0gcGFyc2UoXHJcbiAgICAgIGRlY29kZUh0bWwgPyB0aGlzLmRlY29kZUh0bWwocHJlY29tcGlsZWQpIDogcHJlY29tcGlsZWQsXHJcbiAgICAgIG1hcmtlZE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIG1hcmtlZE9wdGlvbnMuc2FuaXRpemUgJiYgIW1hcmtlZE9wdGlvbnMuc2FuaXRpemVyXHJcbiAgICAgID8gdGhpcy5kb21TYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIGNvbXBpbGVkKVxyXG4gICAgICA6IGNvbXBpbGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0U291cmNlKHNyYzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGlmICghdGhpcy5odHRwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvclNyY1dpdGhvdXRIdHRwQ2xpZW50KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChzcmMsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgLnBpcGUobWFwKG1hcmtkb3duID0+IHRoaXMuaGFuZGxlRXh0ZW5zaW9uKHNyYywgbWFya2Rvd24pKSk7XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHQoZWxlbWVudD86IEVsZW1lbnQpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtKSAmJiB0eXBlb2YgUHJpc20gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgICAgUHJpc20uaGlnaGxpZ2h0QWxsVW5kZXIoZWxlbWVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgUHJpc20uaGlnaGxpZ2h0QWxsKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWNvZGVIdG1sKGh0bWw6IHN0cmluZykge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm0pKSB7XHJcbiAgICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgICAgdGV4dGFyZWEuaW5uZXJIVE1MID0gaHRtbDtcclxuICAgICAgcmV0dXJuIHRleHRhcmVhLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGh0bWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUV4dGVuc2lvbihzcmM6IHN0cmluZywgbWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBleHRlbnNpb24gPSBzcmNcclxuICAgICAgPyBzcmMuc3BsaXQoJz8nKVswXS5zcGxpdCgnLicpLnNwbGljZSgtMSkuam9pbigpXHJcbiAgICAgIDogbnVsbDtcclxuICAgIHJldHVybiBleHRlbnNpb24gIT09ICdtZCdcclxuICAgICAgPyAnYGBgJyArIGV4dGVuc2lvbiArICdcXG4nICsgbWFya2Rvd24gKyAnXFxuYGBgJ1xyXG4gICAgICA6IG1hcmtkb3duO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmVjb21waWxlKG1hcmtkb3duOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFtYXJrZG93bikge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBsZXQgaW5kZW50U3RhcnQ6IG51bWJlcjtcclxuICAgIHJldHVybiBtYXJrZG93blxyXG4gICAgICAuc3BsaXQoJ1xcbicpXHJcbiAgICAgIC5tYXAobGluZSA9PiB7XHJcbiAgICAgICAgLy8gc2V0IGN1cnJlbnQgbGluZSBpZGVudCBzdGFydCB0byBiYXNlIHJlZmVyZW5jZSBpbmRlbnRhdGlvblxyXG4gICAgICAgIGxldCBsaW5lSWRlbnRTdGFydCA9IGluZGVudFN0YXJ0O1xyXG4gICAgICAgIC8vIGZpbmQgcG9zaXRpb24gb2YgMXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlclxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgY3VycmVudCBsaW5lIGluZGVudGF0aW9uIHN0YXJ0XHJcbiAgICAgICAgaWYgKGxpbmUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgbGluZUlkZW50U3RhcnQgPSBpc05hTihsaW5lSWRlbnRTdGFydClcclxuICAgICAgICAgICAgPyBsaW5lLnNlYXJjaCgvXFxTfCQvKVxyXG4gICAgICAgICAgICA6IE1hdGgubWluKGxpbmUuc2VhcmNoKC9cXFN8JC8pLCBsaW5lSWRlbnRTdGFydCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGtlZXAgMXN0IG5vbi13aGl0ZXNwYWNlIGxpbmUgaW5kZW50YXRpb25cclxuICAgICAgICAvLyBhcyBiYXNlIHJlZmVyZW5jZSBmb3Igb3RoZXIgbGluZXNcclxuICAgICAgICBpZiAoaXNOYU4oaW5kZW50U3RhcnQpKSB7XHJcbiAgICAgICAgICBpbmRlbnRTdGFydCA9IGxpbmVJZGVudFN0YXJ0O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyByZW1vdmUgd2hpdGVzcGFjZXMgYmVmb3JlIGN1cnJlbnQgbGluZSBpbmRlbnRhdGlvblxyXG4gICAgICAgIHJldHVybiAhIWxpbmVJZGVudFN0YXJ0XHJcbiAgICAgICAgICA/IGxpbmUuc3Vic3RyaW5nKGxpbmVJZGVudFN0YXJ0KVxyXG4gICAgICAgICAgOiBsaW5lO1xyXG4gICAgICB9KS5qb2luKCdcXG4nKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGVudW0gUHJpc21QbHVnaW4ge1xyXG4gIExpbmVIaWdobGlnaHQgPSAnbGluZS1oaWdobGlnaHQnLFxyXG4gIExpbmVOdW1iZXJzID0gJ2xpbmUtbnVtYmVycycsXHJcbn1cclxuIiwiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWFya2Rvd25TZXJ2aWNlIH0gZnJvbSAnLi9tYXJrZG93bi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJpc21QbHVnaW4gfSBmcm9tICcuL3ByaXNtLXBsdWdpbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdtYXJrZG93biwgW21hcmtkb3duXScsXHJcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcmtkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBkYXRhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3JjOiBzdHJpbmc7XHJcblxyXG4gIC8vIFBsdWdpbiAtIGxpbmVOdW1iZXJzXHJcbiAgQElucHV0KClcclxuICBnZXQgbGluZU51bWJlcnMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9saW5lTnVtYmVyczsgfVxyXG4gIHNldCBsaW5lTnVtYmVycyh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9saW5lTnVtYmVycyA9IHRoaXMuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxyXG4gIEBJbnB1dCgpIHN0YXJ0OiBudW1iZXI7XHJcblxyXG4gIC8vIFBsdWdpbiAtIGxpbmVIaWdobGlnaHRcclxuICBASW5wdXQoKVxyXG4gIGdldCBsaW5lSGlnaGxpZ2h0KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fbGluZUhpZ2hsaWdodDsgfVxyXG4gIHNldCBsaW5lSGlnaGxpZ2h0KHZhbHVlOiBib29sZWFuKSB7IHRoaXMuX2xpbmVIaWdobGlnaHQgPSB0aGlzLmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cclxuICBASW5wdXQoKSBsaW5lOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBASW5wdXQoKSBsaW5lT2Zmc2V0OiBudW1iZXI7XHJcblxyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIHByaXZhdGUgX2xpbmVIaWdobGlnaHQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9saW5lTnVtYmVycyA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHB1YmxpYyBtYXJrZG93blNlcnZpY2U6IE1hcmtkb3duU2VydmljZSxcclxuICApIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgdGhpcy5oYW5kbGVEYXRhKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNyYykge1xyXG4gICAgICB0aGlzLmhhbmRsZVNyYygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YSAmJiAhdGhpcy5zcmMpIHtcclxuICAgICAgdGhpcy5oYW5kbGVUcmFuc2NsdXNpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlcihtYXJrZG93bjogc3RyaW5nLCBkZWNvZGVIdG1sID0gZmFsc2UpIHtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMubWFya2Rvd25TZXJ2aWNlLmNvbXBpbGUobWFya2Rvd24sIGRlY29kZUh0bWwpO1xyXG4gICAgdGhpcy5oYW5kbGVQbHVnaW5zKCk7XHJcbiAgICB0aGlzLm1hcmtkb3duU2VydmljZS5oaWdobGlnaHQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWU6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGAke3ZhbHVlfWAgIT09ICdmYWxzZSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZURhdGEoKSB7XHJcbiAgICB0aGlzLnJlbmRlcih0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVTcmMoKSB7XHJcbiAgICB0aGlzLm1hcmtkb3duU2VydmljZVxyXG4gICAgICAuZ2V0U291cmNlKHRoaXMuc3JjKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIG1hcmtkb3duID0+IHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyKG1hcmtkb3duKTtcclxuICAgICAgICAgIHRoaXMubG9hZC5lbWl0KG1hcmtkb3duKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHRoaXMuZXJyb3IuZW1pdChlcnJvciksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVRyYW5zY2x1c2lvbigpIHtcclxuICAgIHRoaXMucmVuZGVyKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVBsdWdpbnMoKSB7XHJcbiAgICBpZiAodGhpcy5saW5lSGlnaGxpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0UGx1Z2luQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIFByaXNtUGx1Z2luLkxpbmVIaWdobGlnaHQpO1xyXG4gICAgICB0aGlzLnNldFBsdWdpbk9wdGlvbnModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgZGF0YUxpbmU6IHRoaXMubGluZSwgZGF0YUxpbmVPZmZzZXQ6IHRoaXMubGluZU9mZnNldCB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmxpbmVOdW1iZXJzKSB7XHJcbiAgICAgIHRoaXMuc2V0UGx1Z2luQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIFByaXNtUGx1Z2luLkxpbmVOdW1iZXJzKTtcclxuICAgICAgdGhpcy5zZXRQbHVnaW5PcHRpb25zKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCB7IGRhdGFTdGFydDogdGhpcy5zdGFydCB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGx1Z2luQ2xhc3MoZWxlbWVudDogSFRNTEVsZW1lbnQsIHBsdWdpbjogc3RyaW5nIHwgc3RyaW5nW10pIHtcclxuICAgIGNvbnN0IHByZUVsZW1lbnRzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgY2xhc3NlcyA9IHBsdWdpbiBpbnN0YW5jZW9mIEFycmF5ID8gcGx1Z2luIDogW3BsdWdpbl07XHJcbiAgICAgIHByZUVsZW1lbnRzLml0ZW0oaSkuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGx1Z2luT3B0aW9ucyhlbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0aW9uczogb2JqZWN0KSB7XHJcbiAgICBjb25zdCBwcmVFbGVtZW50cyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlJyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZUVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZSA9IG9wdGlvbnNbb3B0aW9uXTtcclxuICAgICAgICBpZiAoISFhdHRyaWJ1dGVWYWx1ZSkge1xyXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlTmFtZSA9IHRoaXMudG9MaXNwQ2FzZShvcHRpb24pO1xyXG4gICAgICAgICAgcHJlRWxlbWVudHMuaXRlbShpKS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9MaXNwQ2FzZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1cHBlckNoYXJzID0gdmFsdWUubWF0Y2goLyhbQS1aXSkvZyk7XHJcbiAgICBpZiAoIXVwcGVyQ2hhcnMpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0ciA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHVwcGVyQ2hhcnMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAodXBwZXJDaGFyc1tpXSksICctJyArIHVwcGVyQ2hhcnNbaV0udG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc3RyLnNsaWNlKDAsIDEpID09PSAnLScpIHtcclxuICAgICAgc3RyID0gc3RyLnNsaWNlKDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgRWxlbWVudFJlZiwgTmdab25lLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgTWFya2Rvd25TZXJ2aWNlIH0gZnJvbSAnLi9tYXJrZG93bi5zZXJ2aWNlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnbWFya2Rvd24nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFya2Rvd25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHByaXZhdGUgbWFya2Rvd25TZXJ2aWNlOiBNYXJrZG93blNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICApIHsgfVxyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihgTWFya2Rvd25QaXBlIGhhcyBiZWVuIGludm9rZWQgd2l0aCBhbiBpbnZhbGlkIHZhbHVlIHR5cGUgWyR7dmFsdWV9XWApO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWFya2Rvd24gPSB0aGlzLm1hcmtkb3duU2VydmljZS5jb21waWxlKHZhbHVlKTtcclxuXHJcbiAgICB0aGlzLnpvbmUub25TdGFibGVcclxuICAgICAgLnBpcGUoZmlyc3QoKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm1hcmtkb3duU2VydmljZS5oaWdobGlnaHQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKTtcclxuXHJcbiAgICByZXR1cm4gbWFya2Rvd247XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTGFuZ3VhZ2VQaXBlIH0gZnJvbSAnLi9sYW5ndWFnZS5waXBlJztcclxuaW1wb3J0IHsgTWFya2Rvd25Db21wb25lbnQgfSBmcm9tICcuL21hcmtkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hcmtkb3duUGlwZSB9IGZyb20gJy4vbWFya2Rvd24ucGlwZSc7XHJcbmltcG9ydCB7IE1hcmtkb3duU2VydmljZSB9IGZyb20gJy4vbWFya2Rvd24uc2VydmljZSc7XHJcbmltcG9ydCB7IE1hcmtlZE9wdGlvbnMgfSBmcm9tICcuL21hcmtlZC1vcHRpb25zJztcclxuXHJcbi8vIGhhdmluZyBhIGRlcGVuZGVuY3kgb24gYEh0dHBDbGllbnRNb2R1bGVgIHdpdGhpbiBhIGxpYnJhcnlcclxuLy8gYnJlYWtzIGFsbCB0aGUgaW50ZXJjZXB0b3JzIGZyb20gdGhlIGFwcCBjb25zdW1pbmcgdGhlIGxpYnJhcnlcclxuLy8gaGVyZSwgd2UgZXhwbGljaXRlbHkgYXNrIHRoZSB1c2VyIHRvIHBhc3MgYSBwcm92aWRlciB3aXRoXHJcbi8vIHRoZWlyIG93biBpbnN0YW5jZSBvZiBgSHR0cENsaWVudE1vZHVsZWBcclxuZXhwb3J0IGludGVyZmFjZSBNYXJrZG93bk1vZHVsZUNvbmZpZyB7XHJcbiAgbG9hZGVyPzogUHJvdmlkZXI7XHJcbiAgbWFya2VkT3B0aW9ucz86IFByb3ZpZGVyO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaW5pdGlhbE1hcmtlZE9wdGlvbnM6IFByb3ZpZGVyID0ge1xyXG4gIHByb3ZpZGU6IE1hcmtlZE9wdGlvbnMsXHJcbiAgdXNlVmFsdWU6IHtcclxuICAgIGdmbTogdHJ1ZSxcclxuICAgIHRhYmxlczogdHJ1ZSxcclxuICAgIGJyZWFrczogZmFsc2UsXHJcbiAgICBwZWRhbnRpYzogZmFsc2UsXHJcbiAgICBzYW5pdGl6ZTogZmFsc2UsXHJcbiAgICBzbWFydExpc3RzOiB0cnVlLFxyXG4gICAgc21hcnR5cGFudHM6IGZhbHNlLFxyXG4gIH0sXHJcbn07XHJcblxyXG5jb25zdCBzaGFyZWREZWNsYXJhdGlvbnMgPSBbXHJcbiAgTGFuZ3VhZ2VQaXBlLFxyXG4gIE1hcmtkb3duQ29tcG9uZW50LFxyXG4gIE1hcmtkb3duUGlwZSxcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZXhwb3J0czogW1xyXG4gICAgLi4uc2hhcmVkRGVjbGFyYXRpb25zLFxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAuLi5zaGFyZWREZWNsYXJhdGlvbnMsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcmtkb3duTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChtYXJrZG93bk1vZHVsZUNvbmZpZz86IE1hcmtkb3duTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogTWFya2Rvd25Nb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIE1hcmtkb3duU2VydmljZSxcclxuICAgICAgICAuLi4obWFya2Rvd25Nb2R1bGVDb25maWdcclxuICAgICAgICAgID8gW1xyXG4gICAgICAgICAgICAgIG1hcmtkb3duTW9kdWxlQ29uZmlnLmxvYWRlciB8fCBbXSxcclxuICAgICAgICAgICAgICBtYXJrZG93bk1vZHVsZUNvbmZpZy5tYXJrZWRPcHRpb25zIHx8IGluaXRpYWxNYXJrZWRPcHRpb25zLFxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICA6IFtpbml0aWFsTWFya2VkT3B0aW9uc10pLFxyXG4gICAgICBdLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmb3JDaGlsZCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBNYXJrZG93bk1vZHVsZSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdLCJuYW1lcyI6WyJ0c2xpYl8xLl9fZXh0ZW5kcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0lBT0UsZ0NBQVM7Ozs7O0lBQVQsVUFBVSxLQUFhLEVBQUUsUUFBZ0I7UUFDdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxDQUFDLEtBQUssQ0FBQywrREFBNkQsS0FBSyxNQUFHLENBQUMsQ0FBQztZQUNyRixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQyw4REFBNEQsUUFBUSxNQUFHLENBQUMsQ0FBQztZQUN2RixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxLQUFLLEdBQUcsUUFBUSxHQUFHLElBQUksR0FBSSxLQUFLLEdBQUcsT0FBTyxDQUFDO0tBQ25EOztnQkFmRixJQUFJLFNBQUM7b0JBQ0osSUFBSSxFQUFFLFVB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

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

{"__symbolic":"module","version":4,"metadata":{"LanguagePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"language"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"MarkdownComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"markdown, [markdown]","template":"<ng-content></ng-content>"}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"lineNumbers":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"start":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"lineHighlight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"line":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"lineOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"error":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":55,"character":3}}]}],"load":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":56,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":59,"character":31,"context":{"typeName":"HTMLElement"},"module":"./src/markdown.component"}]},{"__symbolic":"reference","name":"MarkdownService"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"render":[{"__symbolic":"method"}],"coerceBooleanProperty":[{"__symbolic":"method"}],"handlePlugins":[{"__symbolic":"method"}],"setPluginClass":[{"__symbolic":"method"}],"setPluginOptions":[{"__symbolic":"method"}],"toLispCase":[{"__symbolic":"method"}]}},"MarkdownModuleConfig":{"__symbolic":"interface"},"initialMarkedOptions":{"provide":{"__symbolic":"reference","name":"MarkedOptions"},"useValue":{"gfm":true,"tables":true,"breaks":false,"pedantic":false,"sanitize":false,"smartLists":true,"smartypants":false}},"MarkdownModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":36,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","name":"LanguagePipe"},{"__symbolic":"reference","name":"MarkdownComponent"},{"__symbolic":"reference","name":"MarkdownPipe"}],"declarations":[{"__symbolic":"reference","name":"LanguagePipe"},{"__symbolic":"reference","name":"MarkdownComponent"},{"__symbolic":"reference","name":"MarkdownPipe"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["markdownModuleConfig"],"value":{"ngModule":{"__symbolic":"reference","name":"MarkdownModule"},"providers":[{"__symbolic":"reference","name":"MarkdownService"},{"__symbolic":"spread","expression":{"__symbolic":"if","condition":{"__symbolic":"reference","name":"markdownModuleConfig"},"thenExpression":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"markdownModuleConfig"},"member":"loader"},"right":[]},{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"markdownModuleConfig"},"member":"markedOptions"},"right":{"__symbolic":"reference","name":"initialMarkedOptions"}}],"elseExpression":[{"__symbolic":"reference","name":"initialMarkedOptions"}]}}]}},"forChild":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"MarkdownModule"}}}}},"MarkdownPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":5,"character":1},"arguments":[{"name":"markdown"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":11,"character":35,"context":{"typeName":"HTMLElement"},"module":"./src/markdown.pipe"}]},{"__symbolic":"reference","name":"MarkdownService"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":13,"character":18}]}],"transform":[{"__symbolic":"method"}]}},"errorSrcWithoutHttpClient":"[ngx-markdown] When using the [src] attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information","MarkdownService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":38,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":38,"character":12}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":39,"character":5}}],null,null],"parameters":[{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":39,"character":30},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":40,"character":26},{"__symbolic":"reference","name":"MarkedOptions"}]}],"compile":[{"__symbolic":"method"}],"getSource":[{"__symbolic":"method"}],"highlight":[{"__symbolic":"method"}],"decodeHtml":[{"__symbolic":"method"}],"handleExtension":[{"__symbolic":"method"}],"precompile":[{"__symbolic":"method"}]}},"MarkedOptions":{"__symbolic":"class","members":{"highlight":[{"__symbolic":"method"}],"sanitizer":[{"__symbolic":"method"}]}},"MarkedRenderer":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"marked","name":"Renderer","line":2,"character":36},"members":{}},"PrismPlugin":{"LineHighlight":"line-highlight","LineNumbers":"line-numbers"}},"origins":{"LanguagePipe":"./src/language.pipe","MarkdownComponent":"./src/markdown.component","MarkdownModuleConfig":"./src/markdown.module","initialMarkedOptions":"./src/markdown.module","MarkdownModule":"./src/markdown.module","MarkdownPipe":"./src/markdown.pipe","errorSrcWithoutHttpClient":"./src/markdown.service","MarkdownService":"./src/markdown.service","MarkedOptions":"./src/marked-options","MarkedRenderer":"./src/marked-renderer","PrismPlugin":"./src/prism-plugin"},"importAs":"ngx-markdown"}
{"__symbolic":"module","version":4,"metadata":{"LanguagePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"language"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"MarkdownComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"markdown, [markdown]","template":"<ng-content></ng-content>"}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"lineNumbers":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"start":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"lineHighlight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"line":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"lineOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"error":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":27,"character":3}}]}],"load":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":28,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":34,"character":31,"context":{"typeName":"HTMLElement"},"module":"./src/markdown.component"}]},{"__symbolic":"reference","name":"MarkdownService"}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"render":[{"__symbolic":"method"}],"coerceBooleanProperty":[{"__symbolic":"method"}],"handleData":[{"__symbolic":"method"}],"handleSrc":[{"__symbolic":"method"}],"handleTransclusion":[{"__symbolic":"method"}],"handlePlugins":[{"__symbolic":"method"}],"setPluginClass":[{"__symbolic":"method"}],"setPluginOptions":[{"__symbolic":"method"}],"toLispCase":[{"__symbolic":"method"}]}},"MarkdownModuleConfig":{"__symbolic":"interface"},"initialMarkedOptions":{"provide":{"__symbolic":"reference","name":"MarkedOptions"},"useValue":{"gfm":true,"tables":true,"breaks":false,"pedantic":false,"sanitize":false,"smartLists":true,"smartypants":false}},"MarkdownModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":36,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","name":"LanguagePipe"},{"__symbolic":"reference","name":"MarkdownComponent"},{"__symbolic":"reference","name":"MarkdownPipe"}],"declarations":[{"__symbolic":"reference","name":"LanguagePipe"},{"__symbolic":"reference","name":"MarkdownComponent"},{"__symbolic":"reference","name":"MarkdownPipe"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["markdownModuleConfig"],"value":{"ngModule":{"__symbolic":"reference","name":"MarkdownModule"},"providers":[{"__symbolic":"reference","name":"MarkdownService"},{"__symbolic":"spread","expression":{"__symbolic":"if","condition":{"__symbolic":"reference","name":"markdownModuleConfig"},"thenExpression":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"markdownModuleConfig"},"member":"loader"},"right":[]},{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"markdownModuleConfig"},"member":"markedOptions"},"right":{"__symbolic":"reference","name":"initialMarkedOptions"}}],"elseExpression":[{"__symbolic":"reference","name":"initialMarkedOptions"}]}}]}},"forChild":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"MarkdownModule"}}}}},"MarkdownPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":5,"character":1},"arguments":[{"name":"markdown"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":11,"character":35,"context":{"typeName":"HTMLElement"},"module":"./src/markdown.pipe"}]},{"__symbolic":"reference","name":"MarkdownService"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":13,"character":18}]}],"transform":[{"__symbolic":"method"}]}},"errorSrcWithoutHttpClient":"[ngx-markdown] When using the [src] attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information","MarkdownService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":38,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":38,"character":12}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":39,"character":5}}],null,null],"parameters":[{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":39,"character":30},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":40,"character":26},{"__symbolic":"reference","name":"MarkedOptions"}]}],"compile":[{"__symbolic":"method"}],"getSource":[{"__symbolic":"method"}],"highlight":[{"__symbolic":"method"}],"decodeHtml":[{"__symbolic":"method"}],"handleExtension":[{"__symbolic":"method"}],"precompile":[{"__symbolic":"method"}]}},"MarkedOptions":{"__symbolic":"class","members":{"highlight":[{"__symbolic":"method"}],"sanitizer":[{"__symbolic":"method"}]}},"MarkedRenderer":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"marked","name":"Renderer","line":2,"character":36},"members":{}},"PrismPlugin":{"LineHighlight":"line-highlight","LineNumbers":"line-numbers"}},"origins":{"LanguagePipe":"./src/language.pipe","MarkdownComponent":"./src/markdown.component","MarkdownModuleConfig":"./src/markdown.module","initialMarkedOptions":"./src/markdown.module","MarkdownModule":"./src/markdown.module","MarkdownPipe":"./src/markdown.pipe","errorSrcWithoutHttpClient":"./src/markdown.service","MarkdownService":"./src/markdown.service","MarkedOptions":"./src/marked-options","MarkedRenderer":"./src/marked-renderer","PrismPlugin":"./src/prism-plugin"},"importAs":"ngx-markdown"}
{
"name": "ngx-markdown",
"version": "7.1.3",
"version": "7.1.4-beta.0",
"description": "Angular library that uses marked to parse markdown to html combined with Prism.js for synthax highlights",

@@ -5,0 +5,0 @@ "homepage": "https://github.com/jfcere/ngx-markdown",

@@ -1,11 +0,6 @@

import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
import { AfterViewInit, ElementRef, EventEmitter, OnChanges } from '@angular/core';
import { MarkdownService } from './markdown.service';
export declare class MarkdownComponent implements AfterViewInit {
export declare class MarkdownComponent implements OnChanges, AfterViewInit {
element: ElementRef<HTMLElement>;
markdownService: MarkdownService;
private _data;
private _lineHighlight;
private _lineNumbers;
private _src;
private readonly _isTranscluded;
data: string;

@@ -20,6 +15,12 @@ src: string;

load: EventEmitter<string>;
private _lineHighlight;
private _lineNumbers;
constructor(element: ElementRef<HTMLElement>, markdownService: MarkdownService);
ngOnChanges(): void;
ngAfterViewInit(): void;
render(markdown: string, decodeHtml?: boolean): void;
private coerceBooleanProperty;
private handleData;
private handleSrc;
private handleTransclusion;
private handlePlugins;

@@ -26,0 +27,0 @@ private setPluginClass;

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc