Socket
Socket
Sign inDemoInstall

angular-svg-icon

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-svg-icon - npm Package Compare versions

Comparing version 7.0.2 to 7.1.0

esm2015/src/svg-loader.js

1

angular-svg-icon.d.ts

@@ -5,1 +5,2 @@ /**

export * from './index';
export { SvgHttpLoader as ɵb, SvgLoader as ɵa } from './src/svg-loader';

2

angular-svg-icon.metadata.json

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

{"__symbolic":"module","version":4,"metadata":{"AngularSvgIconModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":2}],"declarations":[{"__symbolic":"reference","name":"SvgIconComponent"}],"providers":[{"__symbolic":"reference","name":"SVG_ICON_REGISTRY_PROVIDER"}],"exports":[{"__symbolic":"reference","name":"SvgIconComponent"}]}]}],"members":{}},"SERVER_URL":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":30},"arguments":["SERVER_URL"]},"SvgIconRegistryService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":19,"character":12}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":20,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":17},"arguments":[{"__symbolic":"reference","name":"SERVER_URL"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":21,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":17},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":21,"character":24}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":18,"character":27},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"any"}]}],"addSvg":[{"__symbolic":"method"}],"loadSvg":[{"__symbolic":"method"}],"getSvgByName":[{"__symbolic":"method"}],"unloadSvg":[{"__symbolic":"method"}]}},"SVG_ICON_REGISTRY_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentRegistry","http","platformId","serverUrl","document"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentRegistry"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SvgIconRegistryService"},"arguments":[{"__symbolic":"reference","name":"http"},{"__symbolic":"reference","name":"platformId"},{"__symbolic":"reference","name":"serverUrl"},{"__symbolic":"reference","name":"document"}]}}},"SVG_ICON_REGISTRY_PROVIDER":{"provide":{"__symbolic":"reference","name":"SvgIconRegistryService"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":95,"character":14}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":95,"character":30}},{"__symbolic":"reference","name":"SvgIconRegistryService"}],{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":18,"character":27},[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":95,"character":80}],[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":96,"character":8}},{"__symbolic":"reference","name":"SERVER_URL"}],[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":96,"character":64}},{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":96,"character":76}]],"useFactory":{"__symbolic":"reference","name":"SVG_ICON_REGISTRY_PROVIDER_FACTORY"}},"SvgIconComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"svg-icon","styles":[":host { display: inline-block; }"],"template":"<ng-content></ng-content>"}]}],"members":{"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":2}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":2}}]}],"stretch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":2}}]}],"svgStyle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":2}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":34,"character":30},{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":35,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":36,"character":20},{"__symbolic":"reference","name":"SvgIconRegistryService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"initSvg":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"resetDiffer":[{"__symbolic":"method"}],"setSvg":[{"__symbolic":"method"}],"stylize":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"setStyle":[{"__symbolic":"method"}]}}},"origins":{"AngularSvgIconModule":"./src/angular-svg-icon.module","SERVER_URL":"./src/svg-icon-registry.service","SvgIconRegistryService":"./src/svg-icon-registry.service","SVG_ICON_REGISTRY_PROVIDER_FACTORY":"./src/svg-icon-registry.service","SVG_ICON_REGISTRY_PROVIDER":"./src/svg-icon-registry.service","SvgIconComponent":"./src/svg-icon.component"},"importAs":"angular-svg-icon"}
{"__symbolic":"module","version":4,"metadata":{"AngularSvgIconConfig":{"__symbolic":"interface"},"AngularSvgIconModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":2}],"declarations":[{"__symbolic":"reference","name":"SvgIconComponent"}],"providers":[{"__symbolic":"reference","name":"SVG_ICON_REGISTRY_PROVIDER"},{"provide":{"__symbolic":"reference","name":"ɵa"},"useClass":{"__symbolic":"reference","name":"ɵb"}}],"exports":[{"__symbolic":"reference","name":"SvgIconComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"AngularSvgIconModule"},"providers":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"loader"},"right":{"provide":{"__symbolic":"reference","name":"ɵa"},"useClass":{"__symbolic":"reference","name":"ɵb"}}},{"__symbolic":"reference","name":"SVG_ICON_REGISTRY_PROVIDER"}]}}}},"SERVER_URL":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":7,"character":30},"arguments":["SERVER_URL"]},"SvgIconRegistryService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":17,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":17,"character":12}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":18,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":18,"character":17},"arguments":[{"__symbolic":"reference","name":"SERVER_URL"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":19,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":17},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":19,"character":24}]}]],"parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"any"}]}],"addSvg":[{"__symbolic":"method"}],"loadSvg":[{"__symbolic":"method"}],"getSvgByName":[{"__symbolic":"method"}],"unloadSvg":[{"__symbolic":"method"}]}},"SVG_ICON_REGISTRY_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentRegistry","loader","platformId","serverUrl","document"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentRegistry"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SvgIconRegistryService"},"arguments":[{"__symbolic":"reference","name":"loader"},{"__symbolic":"reference","name":"platformId"},{"__symbolic":"reference","name":"serverUrl"},{"__symbolic":"reference","name":"document"}]}}},"SVG_ICON_REGISTRY_PROVIDER":{"provide":{"__symbolic":"reference","name":"SvgIconRegistryService"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":93,"character":14}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":93,"character":30}},{"__symbolic":"reference","name":"SvgIconRegistryService"}],{"__symbolic":"reference","name":"ɵa"},[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":93,"character":79}],[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":94,"character":8}},{"__symbolic":"reference","name":"SERVER_URL"}],[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":94,"character":64}},{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":94,"character":76}]],"useFactory":{"__symbolic":"reference","name":"SVG_ICON_REGISTRY_PROVIDER_FACTORY"}},"SvgIconComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"svg-icon","styles":[":host { display: inline-block; }"],"template":"<ng-content></ng-content>"}]}],"members":{"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":2}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":2}}]}],"stretch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":2}}]}],"svgStyle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":2}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":34,"character":30},{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":35,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":36,"character":20},{"__symbolic":"reference","name":"SvgIconRegistryService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"initSvg":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"resetDiffer":[{"__symbolic":"method"}],"setSvg":[{"__symbolic":"method"}],"stylize":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"setStyle":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","members":{"getSvg":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":11,"character":27}]}],"getSvg":[{"__symbolic":"method"}]}}},"origins":{"AngularSvgIconConfig":"./src/angular-svg-icon.module","AngularSvgIconModule":"./src/angular-svg-icon.module","SERVER_URL":"./src/svg-icon-registry.service","SvgIconRegistryService":"./src/svg-icon-registry.service","SVG_ICON_REGISTRY_PROVIDER_FACTORY":"./src/svg-icon-registry.service","SVG_ICON_REGISTRY_PROVIDER":"./src/svg-icon-registry.service","SvgIconComponent":"./src/svg-icon.component","ɵa":"./src/svg-loader","ɵb":"./src/svg-loader"},"importAs":"angular-svg-icon"}

@@ -7,2 +7,55 @@ (function (global, factory) {

/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) {
e = { error: error };
}
finally {
try {
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally {
if (e)
throw e.error;
}
}
return ar;
}
/**

@@ -12,7 +65,51 @@ * @fileoverview added by tsickle

*/
/**
* @abstract
*/
var /**
* @abstract
*/ SvgLoader = /** @class */ (function () {
function SvgLoader() {
}
return SvgLoader;
}());
var SvgHttpLoader = /** @class */ (function (_super) {
__extends(SvgHttpLoader, _super);
function SvgHttpLoader(http$$1) {
var _this = _super.call(this) || this;
_this.http = http$$1;
return _this;
}
/**
* @param {?} url
* @return {?}
*/
SvgHttpLoader.prototype.getSvg = /**
* @param {?} url
* @return {?}
*/
function (url) {
return this.http.get(url, { responseType: 'text' });
};
SvgHttpLoader.decorators = [
{ type: core.Injectable }
];
/** @nocollapse */
SvgHttpLoader.ctorParameters = function () {
return [
{ type: http.HttpClient }
];
};
return SvgHttpLoader;
}(SvgLoader));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var SERVER_URL = new core.InjectionToken('SERVER_URL');
var SvgIconRegistryService = /** @class */ (function () {
function SvgIconRegistryService(http$$1, platformId, serverUrl, _document) {
this.http = http$$1;
function SvgIconRegistryService(loader, platformId, serverUrl, _document) {
this.loader = loader;
this.platformId = platformId;

@@ -80,3 +177,3 @@ this.serverUrl = serverUrl;

/** @type {?} */
var o = ( /** @type {?} */(this.http.get(url, { responseType: 'text' }).pipe(operators.map(function (svg) {
var o = ( /** @type {?} */(this.loader.getSvg(url).pipe(operators.map(function (svg) {
/** @type {?} */

@@ -135,3 +232,3 @@ var div = _this.document.createElement('DIV');

return [
{ type: http.HttpClient },
{ type: SvgLoader },
{ type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] },

@@ -146,3 +243,3 @@ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [SERVER_URL,] }] },

* @param {?} parentRegistry
* @param {?} http
* @param {?} loader
* @param {?} platformId

@@ -153,4 +250,4 @@ * @param {?=} serverUrl

*/
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http$$1, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(http$$1, platformId, serverUrl, document);
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, loader, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(loader, platformId, serverUrl, document);
}

@@ -160,3 +257,3 @@ /** @type {?} */

provide: SvgIconRegistryService,
deps: [[new core.Optional(), new core.SkipSelf(), SvgIconRegistryService], http.HttpClient, [( /** @type {?} */(core.PLATFORM_ID))],
deps: [[new core.Optional(), new core.SkipSelf(), SvgIconRegistryService], SvgLoader, [( /** @type {?} */(core.PLATFORM_ID))],
[new core.Optional(), ( /** @type {?} */(SERVER_URL))], [new core.Optional(), ( /** @type {?} */(common.DOCUMENT))]

@@ -167,41 +264,2 @@ ],

/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) {
e = { error: error };
}
finally {
try {
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally {
if (e)
throw e.error;
}
}
return ar;
}
/**

@@ -459,2 +517,22 @@ * @fileoverview added by tsickle

}
/**
* @param {?=} config
* @return {?}
*/
AngularSvgIconModule.forRoot = /**
* @param {?=} config
* @return {?}
*/
function (config) {
if (config === void 0) {
config = {};
}
return {
ngModule: AngularSvgIconModule,
providers: [
config.loader || { provide: SvgLoader, useClass: SvgHttpLoader },
SVG_ICON_REGISTRY_PROVIDER
]
};
};
AngularSvgIconModule.decorators = [

@@ -466,3 +544,3 @@ { type: core.NgModule, args: [{

declarations: [SvgIconComponent],
providers: [SVG_ICON_REGISTRY_PROVIDER],
providers: [SVG_ICON_REGISTRY_PROVIDER, { provide: SvgLoader, useClass: SvgHttpLoader }],
exports: [SvgIconComponent]

@@ -490,2 +568,4 @@ },] }

exports.SvgIconComponent = SvgIconComponent;
exports.ɵb = SvgHttpLoader;
exports.ɵa = SvgLoader;

@@ -496,2 +576,2 @@ Object.defineProperty(exports, '__esModule', { value: true });

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi51bWQuanMubWFwIiwic291cmNlcyI6WyJuZzovL2FuZ3VsYXItc3ZnLWljb24vc3JjL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UudHMiLCJub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9zdmctaWNvbi5jb21wb25lbnQudHMiLCJuZzovL2FuZ3VsYXItc3ZnLWljb24vc3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCwgY2F0Y2hFcnJvciwgZmluYWxpemUsIHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgU0VSVkVSX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdTRVJWRVJfVVJMJyk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIHtcblxuXHRwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudDtcblx0cHJpdmF0ZSBpY29uc0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIFNWR0VsZW1lbnQ+KCk7XG5cdHByaXZhdGUgaWNvbnNMb2FkaW5nQnlVcmwgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxTVkdFbGVtZW50Pj4oKTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG5cdFx0XHRcdEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuXHRcdFx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KFNFUlZFUl9VUkwpIHByb3RlY3RlZCBzZXJ2ZXJVcmw6IHN0cmluZyxcblx0XHRcdFx0QE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSkge1xuXHRcdFx0dGhpcy5kb2N1bWVudCA9IHRoaXMuX2RvY3VtZW50O1xuXHR9XG5cblx0LyoqIEFkZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgYnkgcGFzc2luZyBhIG5hbWUgYW5kIHRoZSBTVkcuICovXG5cdGFkZFN2ZyhuYW1lOiBzdHJpbmcsIGRhdGE6IHN0cmluZykge1xuXHRcdGlmICghdGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0Y29uc3QgZGl2ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdGRpdi5pbm5lckhUTUwgPSBkYXRhO1xuXHRcdFx0Y29uc3Qgc3ZnID0gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLnNldChuYW1lLCBzdmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBMb2FkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBmcm9tIGEgVVJMLiAqL1xuXHRsb2FkU3ZnKHVybDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgPSB1cmwpIDogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG5cblx0XHQvLyBub3Qgc3VyZSBpZiB0aGVyZSBzaG91bGQgYmUgYSBwb3NzaWJpbGl0eSB0byB1c2UgbmFtZSBmb3Igc2VydmVyIHVzYWdlXG5cdFx0Ly8gc28gb3ZlcnJpZGluZyBpdCBmb3Igbm93IGlmIHByb3ZpZGVkXG5cdFx0Ly8gbWF5YmUgc2hvdWxkIHNlcGFyYXRlIGZ1bmN0aW9uYWxpdHkgZm9yIHVybCBhbmQgbmFtZSB1c2UtY2FzZXNcblx0XHRpZiAodGhpcy5zZXJ2ZXJVcmwgJiYgdXJsLm1hdGNoKC9eKGh0dHAocyk/KTovKSA9PT0gbnVsbCkge1xuXHRcdFx0dXJsID0gdGhpcy5zZXJ2ZXJVcmwgKyB1cmw7XG5cdFx0XHRuYW1lID0gdXJsO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQobmFtZSkpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pY29uc0xvYWRpbmdCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmdldChuYW1lKTtcblx0XHR9XG5cdFx0Y29uc3QgbyA9IDxPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PiB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5waXBlKFxuXHRcdFx0bWFwKHN2ZyA9PiB7XG5cdFx0XHRcdGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRcdGRpdi5pbm5lckhUTUwgPSBzdmc7XG5cdFx0XHRcdHJldHVybiA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHR9KSxcblx0XHRcdHRhcCAoc3ZnID0+IHRoaXMuaWNvbnNCeVVybC5zZXQobmFtZSwgc3ZnKSApLFxuXHRcdFx0Y2F0Y2hFcnJvcihlcnIgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGVycik7XG5cdFx0XHRcdHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnIpO1xuXHRcdFx0fSksXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmRlbGV0ZShuYW1lKSApLFxuXHRcdFx0c2hhcmUoKVxuXHRcdCk7XG5cblx0XHR0aGlzLmljb25zTG9hZGluZ0J5VXJsLnNldChuYW1lLCBvKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdC8qKiBHZXQgbG9hZGVkIFNWRyBmcm9tIHJlZ2lzdHJ5IGJ5IG5hbWUuIChhbHNvIHdvcmtzIGJ5IHVybCBiZWNhdXNlIG9mIGJsZW5kZWQgbWFwKSAqL1xuXHRnZXRTdmdCeU5hbWUobmFtZTogc3RyaW5nKSA6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQobmFtZSkpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pY29uc0xvYWRpbmdCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmdldChuYW1lKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGBObyBzdmcgd2l0aCBuYW1lICcke25hbWV9JyBoYXMgYmVlbiBsb2FkZWRgKTtcblx0fVxuXG5cdC8qKiBSZW1vdmUgYSBTVkcgZnJvbSB0aGUgcmVnaXN0cnkgYnkgVVJMIChvciBuYW1lKS4gKi9cblx0dW5sb2FkU3ZnKHVybDogc3RyaW5nKSB7XG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXModXJsKSkge1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLmRlbGV0ZSh1cmwpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWShwYXJlbnRSZWdpc3RyeTogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSwgaHR0cDogSHR0cENsaWVudCxcblx0cGxhdGZvcm1JZDogT2JqZWN0LCBzZXJ2ZXJVcmw/OiBzdHJpbmcsIGRvY3VtZW50PzogYW55KSB7XG5cdHJldHVybiBwYXJlbnRSZWdpc3RyeSB8fCBuZXcgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZShodHRwLCBwbGF0Zm9ybUlkLCAgc2VydmVyVXJsLCBkb2N1bWVudCk7XG59XG5cbmV4cG9ydCBjb25zdCBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiA9IHtcblx0cHJvdmlkZTogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSxcblx0ZGVwczogWyBbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlXSwgSHR0cENsaWVudCwgW1BMQVRGT1JNX0lEIGFzIEluamVjdGlvblRva2VuPGFueT5dLFxuXHRcdFx0W25ldyBPcHRpb25hbCgpLCBTRVJWRVJfVVJMIGFzIEluamVjdGlvblRva2VuPHN0cmluZz5dLCBbbmV3IE9wdGlvbmFsKCksIERPQ1VNRU5UIGFzIEluamVjdGlvblRva2VuPGFueT5dXG5cdF0sXG5cdHVzZUZhY3Rvcnk6IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUllcbn07XG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsImltcG9ydCB7IENvbXBvbmVudCwgRG9DaGVjaywgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LFxuXHRLZXlWYWx1ZUNoYW5nZVJlY29yZCwgS2V5VmFsdWVDaGFuZ2VzLCBLZXlWYWx1ZURpZmZlciwgS2V5VmFsdWVEaWZmZXJzLFxuXHRPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnc3ZnLWljb24nLFxuXHRzdHlsZXM6IFsgYDpob3N0IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9YCBdLFxuXHR0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuXG5leHBvcnQgY2xhc3MgU3ZnSWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIERvQ2hlY2sge1xuXHRASW5wdXQoKSBzcmM6IHN0cmluZztcblx0QElucHV0KCkgbmFtZTogc3RyaW5nO1xuXHRASW5wdXQoKSBzdHJldGNoID0gZmFsc2U7XG5cblx0Ly8gQWRhcHRlZCBmcm9tIG5nU3R5bGVcblx0QElucHV0KClcblx0c2V0IHN2Z1N0eWxlKHY6IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuXHRcdHRoaXMuX3N2Z1N0eWxlID0gdjtcblx0XHRpZiAoIXRoaXMuZGlmZmVyICYmIHYpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodikuY3JlYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdmc6IFNWR0VsZW1lbnQ7XG5cdHByaXZhdGUgaWNuU3ViOiBTdWJzY3JpcHRpb247XG5cdHByaXZhdGUgZGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIHN0cmluZ3xudW1iZXI+O1xuXHRwcml2YXRlIF9zdmdTdHlsZToge1trZXk6IHN0cmluZ106IHN0cmluZ307XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuXHRcdHByaXZhdGUgZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuXHRcdHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcblx0XHRwcml2YXRlIGljb25SZWc6IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UpIHtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuaW5pdCgpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5kZXN0cm95KCk7XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VSZWNvcmQ6IHtba2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2V9KSB7XG5cdFx0aWYgKGNoYW5nZVJlY29yZFsnc3JjJ10gfHwgY2hhbmdlUmVjb3JkWyduYW1lJ10pIHtcblx0XHRcdGlmICh0aGlzLnN2Zykge1xuXHRcdFx0XHR0aGlzLmRlc3Ryb3koKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuaW5pdCgpO1xuXHRcdH1cblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzdHJldGNoJ10pIHtcblx0XHRcdHRoaXMuc3R5bGl6ZSgpO1xuXHRcdH1cblx0fVxuXG5cdG5nRG9DaGVjaygpIHtcblx0XHRpZiAodGhpcy5zdmcgJiYgdGhpcy5kaWZmZXIpIHtcblx0XHRcdGNvbnN0IGNoYW5nZXMgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMuX3N2Z1N0eWxlKTtcblx0XHRcdGlmIChjaGFuZ2VzKSB7XG5cdFx0XHRcdHRoaXMuYXBwbHlDaGFuZ2VzKGNoYW5nZXMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgaW5pdCgpIHtcblx0XHRpZiAodGhpcy5uYW1lKSB7XG5cdFx0XHR0aGlzLmljblN1YiA9IHRoaXMuaWNvblJlZy5nZXRTdmdCeU5hbWUodGhpcy5uYW1lKS5zdWJzY3JpYmUodGhpcy5pbml0U3ZnLmJpbmQodGhpcykpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmljblN1YiA9IHRoaXMuaWNvblJlZy5sb2FkU3ZnKHRoaXMuc3JjKS5zdWJzY3JpYmUodGhpcy5pbml0U3ZnLmJpbmQodGhpcykpO1xuXHR9XG5cblx0cHJpdmF0ZSBpbml0U3ZnKHN2ZzogU1ZHRWxlbWVudCkgOiB2b2lkIHtcblx0XHR0aGlzLnNldFN2ZyhzdmcpO1xuXHRcdHRoaXMucmVzZXREaWZmZXIoKTtcblx0fVxuXG5cdHByaXZhdGUgZGVzdHJveSgpIHtcblx0XHR0aGlzLnN2ZyA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmRpZmZlciA9IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5pY25TdWIpIHtcblx0XHRcdHRoaXMuaWNuU3ViLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSByZXNldERpZmZlcigpIHtcblx0XHRpZiAodGhpcy5fc3ZnU3R5bGUgJiYgIXRoaXMuZGlmZmVyKSB7XG5cdFx0XHR0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHRoaXMuX3N2Z1N0eWxlKS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHNldFN2Zyhzdmc6IFNWR0VsZW1lbnQpIHtcblx0XHRpZiAoc3ZnKSB7XG5cdFx0XHR0aGlzLnN2ZyA9IHN2Zztcblx0XHRcdGNvbnN0IGljb24gPSA8U1ZHRWxlbWVudD5zdmcuY2xvbmVOb2RlKHRydWUpO1xuXHRcdFx0Y29uc3QgZWxlbSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuXG5cdFx0XHRlbGVtLmlubmVySFRNTCA9ICcnO1xuXHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChlbGVtLCBpY29uKTtcblxuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdHlsaXplKCkge1xuXHRcdGlmICh0aGlzLnN2Zykge1xuXHRcdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0aWYgKHRoaXMuc3RyZXRjaCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHR0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzdmcsICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5zdHJldGNoID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShzdmcsICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBhcHBseUNoYW5nZXMoY2hhbmdlczogS2V5VmFsdWVDaGFuZ2VzPHN0cmluZywgc3RyaW5nfG51bWJlcj4pIHtcblx0XHRjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbSgocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIG51bGwpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKSk7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0oKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKSk7XG5cdH1cblxuXHRwcml2YXRlIHNldFN0eWxlKG5hbWVBbmRVbml0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmd8bnVtYmVyfG51bGx8dW5kZWZpbmVkKSB7XG5cdFx0Y29uc3QgW25hbWUsIHVuaXRdID0gbmFtZUFuZFVuaXQuc3BsaXQoJy4nKTtcblx0XHR2YWx1ZSA9IHZhbHVlICE9PSBudWxsICYmIHVuaXQgPyBgJHt2YWx1ZX0ke3VuaXR9YCA6IHZhbHVlO1xuXHRcdGNvbnN0IHN2ZyA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRpZiAodmFsdWUgIT09IG51bGwpIHtcblx0XHRcdHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc3ZnLCBuYW1lLCB2YWx1ZSBhcyBzdHJpbmcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHN2ZywgbmFtZSk7XG5cdFx0fVxuXHR9XG59XG4iLCJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuXG5pbXBvcnQgeyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiB9IGZyb20gJy4vc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBTdmdJY29uQ29tcG9uZW50IH0gZnJvbSAnLi9zdmctaWNvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOlx0ICBbXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRdLFxuXHRkZWNsYXJhdGlvbnM6IFsgU3ZnSWNvbkNvbXBvbmVudCBdLFxuXHRwcm92aWRlcnM6ICAgIFsgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgXSxcblx0ZXhwb3J0czogICAgICBbIFN2Z0ljb25Db21wb25lbnQgXVxufSlcblxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJTdmdJY29uTW9kdWxlIHt9XG4iXSwibmFtZXMiOlsiSW5qZWN0aW9uVG9rZW4iLCJodHRwIiwib2JzZXJ2YWJsZU9mIiwibWFwIiwidGFwIiwiY2F0Y2hFcnJvciIsIm9ic2VydmFibGVUaHJvd0Vycm9yIiwiZmluYWxpemUiLCJzaGFyZSIsIkluamVjdGFibGUiLCJIdHRwQ2xpZW50IiwiSW5qZWN0IiwiUExBVEZPUk1fSUQiLCJPcHRpb25hbCIsIkRPQ1VNRU5UIiwiU2tpcFNlbGYiLCJDb21wb25lbnQiLCJFbGVtZW50UmVmIiwiS2V5VmFsdWVEaWZmZXJzIiwiUmVuZGVyZXIyIiwiSW5wdXQiLCJOZ01vZHVsZSIsIkNvbW1vbk1vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBU0EsUUFBYSxVQUFVLEdBQUcsSUFBSUEsbUJBQWMsQ0FBUyxZQUFZLENBQUM7QUFFbEU7UUFPQyxnQ0FBb0JDLE9BQWdCLEVBQ0osVUFBa0IsRUFDTCxTQUFpQixFQUNyQixTQUFjO1lBSG5DLFNBQUksR0FBSkEsT0FBSSxDQUFZO1lBQ0osZUFBVSxHQUFWLFVBQVUsQ0FBUTtZQUNMLGNBQVMsR0FBVCxTQUFTLENBQVE7WUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBSztZQU4vQyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7WUFDM0Msc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7WUFNcEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ2hDOzs7Ozs7OztRQUdELHVDQUFNOzs7Ozs7WUFBTixVQUFPLElBQVksRUFBRSxJQUFZO2dCQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7O3dCQUN6QixHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO29CQUM5QyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzs7d0JBQ2YsR0FBRyxzQkFBZSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFBO29CQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FB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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi51bWQuanMubWFwIiwic291cmNlcyI6WyJub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9zdmctbG9hZGVyLnRzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlLnRzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9zdmctaWNvbi5jb21wb25lbnQudHMiLCJuZzovL2FuZ3VsYXItc3ZnLWljb24vc3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlXHJcbnRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlXHJcbkxpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcblxyXG5USElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXHJcbktJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gQU5ZIElNUExJRURcclxuV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSxcclxuTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC5cclxuXHJcblNlZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xyXG5hbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMClcclxuICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZShyZXN1bHQudmFsdWUpOyB9KS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBleHBvcnRzKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmICghZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShwKSkgZXhwb3J0c1twXSA9IG1bcF07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcclxuICAgIHJlc3VsdC5kZWZhdWx0ID0gbW9kO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuIiwiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3ZnTG9hZGVyIHtcclxuXHRhYnN0cmFjdCBnZXRTdmcodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN2Z0h0dHBMb2FkZXIgZXh0ZW5kcyBTdmdMb2FkZXIge1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuXHRcdHN1cGVyKCk7XHJcblx0fVxyXG5cclxuXHRnZXRTdmcodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pO1xyXG5cdH1cclxufVxyXG4iLCJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgUExBVEZPUk1fSUQsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgc2hhcmUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN2Z0xvYWRlciB9IGZyb20gJy4vc3ZnLWxvYWRlcic7XG5cbmV4cG9ydCBjb25zdCBTRVJWRVJfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ1NFUlZFUl9VUkwnKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50O1xuXHRwcml2YXRlIGljb25zQnlVcmwgPSBuZXcgTWFwPHN0cmluZywgU1ZHRWxlbWVudD4oKTtcblx0cHJpdmF0ZSBpY29uc0xvYWRpbmdCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PigpO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgbG9hZGVyOiBTdmdMb2FkZXIsXG5cdFx0XHRcdEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuXHRcdFx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KFNFUlZFUl9VUkwpIHByb3RlY3RlZCBzZXJ2ZXJVcmw6IHN0cmluZyxcblx0XHRcdFx0QE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSkge1xuXHRcdFx0dGhpcy5kb2N1bWVudCA9IHRoaXMuX2RvY3VtZW50O1xuXHR9XG5cblx0LyoqIEFkZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgYnkgcGFzc2luZyBhIG5hbWUgYW5kIHRoZSBTVkcuICovXG5cdGFkZFN2ZyhuYW1lOiBzdHJpbmcsIGRhdGE6IHN0cmluZykge1xuXHRcdGlmICghdGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0Y29uc3QgZGl2ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdGRpdi5pbm5lckhUTUwgPSBkYXRhO1xuXHRcdFx0Y29uc3Qgc3ZnID0gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLnNldChuYW1lLCBzdmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBMb2FkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBmcm9tIGEgVVJMLiAqL1xuXHRsb2FkU3ZnKHVybDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgPSB1cmwpIDogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG5cblx0XHQvLyBub3Qgc3VyZSBpZiB0aGVyZSBzaG91bGQgYmUgYSBwb3NzaWJpbGl0eSB0byB1c2UgbmFtZSBmb3Igc2VydmVyIHVzYWdlXG5cdFx0Ly8gc28gb3ZlcnJpZGluZyBpdCBmb3Igbm93IGlmIHByb3ZpZGVkXG5cdFx0Ly8gbWF5YmUgc2hvdWxkIHNlcGFyYXRlIGZ1bmN0aW9uYWxpdHkgZm9yIHVybCBhbmQgbmFtZSB1c2UtY2FzZXNcblx0XHRpZiAodGhpcy5zZXJ2ZXJVcmwgJiYgdXJsLm1hdGNoKC9eKGh0dHAocyk/KTovKSA9PT0gbnVsbCkge1xuXHRcdFx0dXJsID0gdGhpcy5zZXJ2ZXJVcmwgKyB1cmw7XG5cdFx0XHRuYW1lID0gdXJsO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQobmFtZSkpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pY29uc0xvYWRpbmdCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmdldChuYW1lKTtcblx0XHR9XG5cdFx0Y29uc3QgbyA9IDxPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PiB0aGlzLmxvYWRlci5nZXRTdmcodXJsKS5waXBlKFxuXHRcdFx0bWFwKHN2ZyA9PiB7XG5cdFx0XHRcdGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRcdGRpdi5pbm5lckhUTUwgPSBzdmc7XG5cdFx0XHRcdHJldHVybiA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHR9KSxcblx0XHRcdHRhcCAoc3ZnID0+IHRoaXMuaWNvbnNCeVVybC5zZXQobmFtZSwgc3ZnKSApLFxuXHRcdFx0Y2F0Y2hFcnJvcihlcnIgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGVycik7XG5cdFx0XHRcdHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnIpO1xuXHRcdFx0fSksXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmRlbGV0ZShuYW1lKSApLFxuXHRcdFx0c2hhcmUoKVxuXHRcdCk7XG5cblx0XHR0aGlzLmljb25zTG9hZGluZ0J5VXJsLnNldChuYW1lLCBvKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdC8qKiBHZXQgbG9hZGVkIFNWRyBmcm9tIHJlZ2lzdHJ5IGJ5IG5hbWUuIChhbHNvIHdvcmtzIGJ5IHVybCBiZWNhdXNlIG9mIGJsZW5kZWQgbWFwKSAqL1xuXHRnZXRTdmdCeU5hbWUobmFtZTogc3RyaW5nKSA6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQobmFtZSkpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pY29uc0xvYWRpbmdCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmdldChuYW1lKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGBObyBzdmcgd2l0aCBuYW1lICcke25hbWV9JyBoYXMgYmVlbiBsb2FkZWRgKTtcblx0fVxuXG5cdC8qKiBSZW1vdmUgYSBTVkcgZnJvbSB0aGUgcmVnaXN0cnkgYnkgVVJMIChvciBuYW1lKS4gKi9cblx0dW5sb2FkU3ZnKHVybDogc3RyaW5nKSB7XG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXModXJsKSkge1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLmRlbGV0ZSh1cmwpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWShwYXJlbnRSZWdpc3RyeTogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSwgbG9hZGVyOiBTdmdMb2FkZXIsXG5cdHBsYXRmb3JtSWQ6IE9iamVjdCwgc2VydmVyVXJsPzogc3RyaW5nLCBkb2N1bWVudD86IGFueSkge1xuXHRyZXR1cm4gcGFyZW50UmVnaXN0cnkgfHwgbmV3IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UobG9hZGVyLCBwbGF0Zm9ybUlkLCAgc2VydmVyVXJsLCBkb2N1bWVudCk7XG59XG5cbmV4cG9ydCBjb25zdCBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiA9IHtcblx0cHJvdmlkZTogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSxcblx0ZGVwczogWyBbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlXSwgU3ZnTG9hZGVyLCBbUExBVEZPUk1fSUQgYXMgSW5qZWN0aW9uVG9rZW48YW55Pl0sXG5cdFx0XHRbbmV3IE9wdGlvbmFsKCksIFNFUlZFUl9VUkwgYXMgSW5qZWN0aW9uVG9rZW48c3RyaW5nPl0sIFtuZXcgT3B0aW9uYWwoKSwgRE9DVU1FTlQgYXMgSW5qZWN0aW9uVG9rZW48YW55Pl1cblx0XSxcblx0dXNlRmFjdG9yeTogU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWVxufTtcbiIsImltcG9ydCB7IENvbXBvbmVudCwgRG9DaGVjaywgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LFxuXHRLZXlWYWx1ZUNoYW5nZVJlY29yZCwgS2V5VmFsdWVDaGFuZ2VzLCBLZXlWYWx1ZURpZmZlciwgS2V5VmFsdWVEaWZmZXJzLFxuXHRPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnc3ZnLWljb24nLFxuXHRzdHlsZXM6IFsgYDpob3N0IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9YCBdLFxuXHR0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuXG5leHBvcnQgY2xhc3MgU3ZnSWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIERvQ2hlY2sge1xuXHRASW5wdXQoKSBzcmM6IHN0cmluZztcblx0QElucHV0KCkgbmFtZTogc3RyaW5nO1xuXHRASW5wdXQoKSBzdHJldGNoID0gZmFsc2U7XG5cblx0Ly8gQWRhcHRlZCBmcm9tIG5nU3R5bGVcblx0QElucHV0KClcblx0c2V0IHN2Z1N0eWxlKHY6IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuXHRcdHRoaXMuX3N2Z1N0eWxlID0gdjtcblx0XHRpZiAoIXRoaXMuZGlmZmVyICYmIHYpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodikuY3JlYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdmc6IFNWR0VsZW1lbnQ7XG5cdHByaXZhdGUgaWNuU3ViOiBTdWJzY3JpcHRpb247XG5cdHByaXZhdGUgZGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIHN0cmluZ3xudW1iZXI+O1xuXHRwcml2YXRlIF9zdmdTdHlsZToge1trZXk6IHN0cmluZ106IHN0cmluZ307XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuXHRcdHByaXZhdGUgZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuXHRcdHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcblx0XHRwcml2YXRlIGljb25SZWc6IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UpIHtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuaW5pdCgpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5kZXN0cm95KCk7XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VSZWNvcmQ6IHtba2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2V9KSB7XG5cdFx0aWYgKGNoYW5nZVJlY29yZFsnc3JjJ10gfHwgY2hhbmdlUmVjb3JkWyduYW1lJ10pIHtcblx0XHRcdGlmICh0aGlzLnN2Zykge1xuXHRcdFx0XHR0aGlzLmRlc3Ryb3koKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuaW5pdCgpO1xuXHRcdH1cblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzdHJldGNoJ10pIHtcblx0XHRcdHRoaXMuc3R5bGl6ZSgpO1xuXHRcdH1cblx0fVxuXG5cdG5nRG9DaGVjaygpIHtcblx0XHRpZiAodGhpcy5zdmcgJiYgdGhpcy5kaWZmZXIpIHtcblx0XHRcdGNvbnN0IGNoYW5nZXMgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMuX3N2Z1N0eWxlKTtcblx0XHRcdGlmIChjaGFuZ2VzKSB7XG5cdFx0XHRcdHRoaXMuYXBwbHlDaGFuZ2VzKGNoYW5nZXMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgaW5pdCgpIHtcblx0XHRpZiAodGhpcy5uYW1lKSB7XG5cdFx0XHR0aGlzLmljblN1YiA9IHRoaXMuaWNvblJlZy5nZXRTdmdCeU5hbWUodGhpcy5uYW1lKS5zdWJzY3JpYmUodGhpcy5pbml0U3ZnLmJpbmQodGhpcykpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmljblN1YiA9IHRoaXMuaWNvblJlZy5sb2FkU3ZnKHRoaXMuc3JjKS5zdWJzY3JpYmUodGhpcy5pbml0U3ZnLmJpbmQodGhpcykpO1xuXHR9XG5cblx0cHJpdmF0ZSBpbml0U3ZnKHN2ZzogU1ZHRWxlbWVudCkgOiB2b2lkIHtcblx0XHR0aGlzLnNldFN2ZyhzdmcpO1xuXHRcdHRoaXMucmVzZXREaWZmZXIoKTtcblx0fVxuXG5cdHByaXZhdGUgZGVzdHJveSgpIHtcblx0XHR0aGlzLnN2ZyA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmRpZmZlciA9IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5pY25TdWIpIHtcblx0XHRcdHRoaXMuaWNuU3ViLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSByZXNldERpZmZlcigpIHtcblx0XHRpZiAodGhpcy5fc3ZnU3R5bGUgJiYgIXRoaXMuZGlmZmVyKSB7XG5cdFx0XHR0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHRoaXMuX3N2Z1N0eWxlKS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHNldFN2Zyhzdmc6IFNWR0VsZW1lbnQpIHtcblx0XHRpZiAoc3ZnKSB7XG5cdFx0XHR0aGlzLnN2ZyA9IHN2Zztcblx0XHRcdGNvbnN0IGljb24gPSA8U1ZHRWxlbWVudD5zdmcuY2xvbmVOb2RlKHRydWUpO1xuXHRcdFx0Y29uc3QgZWxlbSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuXG5cdFx0XHRlbGVtLmlubmVySFRNTCA9ICcnO1xuXHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChlbGVtLCBpY29uKTtcblxuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdHlsaXplKCkge1xuXHRcdGlmICh0aGlzLnN2Zykge1xuXHRcdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0aWYgKHRoaXMuc3RyZXRjaCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHR0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzdmcsICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5zdHJldGNoID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShzdmcsICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBhcHBseUNoYW5nZXMoY2hhbmdlczogS2V5VmFsdWVDaGFuZ2VzPHN0cmluZywgc3RyaW5nfG51bWJlcj4pIHtcblx0XHRjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbSgocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIG51bGwpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKSk7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0oKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKSk7XG5cdH1cblxuXHRwcml2YXRlIHNldFN0eWxlKG5hbWVBbmRVbml0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmd8bnVtYmVyfG51bGx8dW5kZWZpbmVkKSB7XG5cdFx0Y29uc3QgW25hbWUsIHVuaXRdID0gbmFtZUFuZFVuaXQuc3BsaXQoJy4nKTtcblx0XHR2YWx1ZSA9IHZhbHVlICE9PSBudWxsICYmIHVuaXQgPyBgJHt2YWx1ZX0ke3VuaXR9YCA6IHZhbHVlO1xuXHRcdGNvbnN0IHN2ZyA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRpZiAodmFsdWUgIT09IG51bGwpIHtcblx0XHRcdHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc3ZnLCBuYW1lLCB2YWx1ZSBhcyBzdHJpbmcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHN2ZywgbmFtZSk7XG5cdFx0fVxuXHR9XG59XG4iLCJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICcuL3N2Zy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdmdIdHRwTG9hZGVyLCBTdmdMb2FkZXIgfSBmcm9tICcuL3N2Zy1sb2FkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJTdmdJY29uQ29uZmlnIHtcblx0bG9hZGVyPzogUHJvdmlkZXI7XG59XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6XHQgIFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogWyBTdmdJY29uQ29tcG9uZW50IF0sXG5cdHByb3ZpZGVyczogICAgWyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiwgeyBwcm92aWRlOiBTdmdMb2FkZXIsIHVzZUNsYXNzOiBTdmdIdHRwTG9hZGVyIH0gXSxcblx0ZXhwb3J0czogICAgICBbIFN2Z0ljb25Db21wb25lbnQgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB7XG5cblx0c3RhdGljIGZvclJvb3QoY29uZmlnOiBBbmd1bGFyU3ZnSWNvbkNvbmZpZyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5nTW9kdWxlOiBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcblx0XHRcdHByb3ZpZGVyczogW1xuXHRcdFx0XHRjb25maWcubG9hZGVyIHx8IHsgcHJvdmlkZTogU3ZnTG9hZGVyLCB1c2VDbGFzczogU3ZnSHR0cExvYWRlciB9LFxuXHRcdFx0XHRTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUlxuXHRcdFx0XVxuXHRcdH1cblx0fVxufVxuIl0sIm5hbWVzIjpbInRzbGliXzEuX19leHRlbmRzIiwiaHR0cCIsIkluamVjdGFibGUiLCJIdHRwQ2xpZW50IiwiSW5qZWN0aW9uVG9rZW4iLCJvYnNlcnZhYmxlT2YiLCJtYXAiLCJ0YXAiLCJjYXRjaEVycm9yIiwib2JzZXJ2YWJsZVRocm93RXJyb3IiLCJmaW5hbGl6ZSIsInNoYXJlIiwiSW5qZWN0IiwiUExBVEZPUk1fSUQiLCJPcHRpb25hbCIsIkRPQ1VNRU5UIiwiU2tpcFNlbGYiLCJDb21wb25lbnQiLCJFbGVtZW50UmVmIiwiS2V5VmFsdWVEaWZmZXJzIiwiUmVuZGVyZXIyIiwiSW5wdXQiLCJOZ01vZHVsZSIsIkNvbW1vbk1vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBQUE7Ozs7Ozs7Ozs7Ozs7O0lBY0E7SUFFQSxJQUFJLGFBQWEsR0FBRyxVQUFTLENBQUMsRUFBRSxDQUFDO1FBQzdCLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYzthQUNoQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RSxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUFFLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7b0JBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0UsT0FBTyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FBQztBQUVGLGFBQWdCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxQixhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLFNBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFD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

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

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common/http"),require("rxjs"),require("rxjs/operators"),require("@angular/common")):"function"==typeof define&&define.amd?define("angular-svg-icon",["exports","@angular/core","@angular/common/http","rxjs","rxjs/operators","@angular/common"],e):e(t["angular-svg-icon"]={},t.ng.core,t.ng.common.http,t.rxjs,t.rxjs.operators,t.ng.common)}(this,function(t,e,r,i,o,n){"use strict";var s=new e.InjectionToken("SERVER_URL"),c=function(){function t(t,e,r,n){this.http=t,this.platformId=e,this.serverUrl=r,this._document=n,this.iconsByUrl=new Map,this.iconsLoadingByUrl=new Map,this.document=this._document}return t.prototype.addSvg=function(t,e){if(!this.iconsByUrl.has(t)){var r=this.document.createElement("DIV");r.innerHTML=e;var n=r.querySelector("svg");this.iconsByUrl.set(t,n)}},t.prototype.loadSvg=function(t,e){var r=this;if(void 0===e&&(e=t),this.serverUrl&&null===t.match(/^(http(s)?):/)&&(t=this.serverUrl+t,e=t),this.iconsByUrl.has(e))return i.of(this.iconsByUrl.get(e));if(this.iconsLoadingByUrl.has(e))return this.iconsLoadingByUrl.get(e);var n=this.http.get(t,{responseType:"text"}).pipe(o.map(function(t){var e=r.document.createElement("DIV");return e.innerHTML=t,e.querySelector("svg")}),o.tap(function(t){return r.iconsByUrl.set(e,t)}),o.catchError(function(t){return console.error(t),i.throwError(t)}),o.finalize(function(){return r.iconsLoadingByUrl["delete"](e)}),o.share());return this.iconsLoadingByUrl.set(e,n),n},t.prototype.getSvgByName=function(t){return this.iconsByUrl.has(t)?i.of(this.iconsByUrl.get(t)):this.iconsLoadingByUrl.has(t)?this.iconsLoadingByUrl.get(t):i.throwError("No svg with name '"+t+"' has been loaded")},t.prototype.unloadSvg=function(t){this.iconsByUrl.has(t)&&this.iconsByUrl["delete"](t)},t.decorators=[{type:e.Injectable}],t.ctorParameters=function(){return[{type:r.HttpClient},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:String,decorators:[{type:e.Optional},{type:e.Inject,args:[s]}]},{type:undefined,decorators:[{type:e.Optional},{type:e.Inject,args:[n.DOCUMENT]}]}]},t}();function a(t,e,r,n,i){return t||new c(e,r,n,i)}var h={provide:c,deps:[[new e.Optional,new e.SkipSelf,c],r.HttpClient,[e.PLATFORM_ID],[new e.Optional,s],[new e.Optional,n.DOCUMENT]],useFactory:a};var u=function(){function t(t,e,r,n){this.element=t,this.differs=e,this.renderer=r,this.iconReg=n,this.stretch=!1}return Object.defineProperty(t.prototype,"svgStyle",{set:function(t){this._svgStyle=t,!this.differ&&t&&(this.differ=this.differs.find(t).create())},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.init()},t.prototype.ngOnDestroy=function(){this.destroy()},t.prototype.ngOnChanges=function(t){(t.src||t.name)&&(this.svg&&this.destroy(),this.init()),t.stretch&&this.stylize()},t.prototype.ngDoCheck=function(){if(this.svg&&this.differ){var t=this.differ.diff(this._svgStyle);t&&this.applyChanges(t)}},t.prototype.init=function(){this.name?this.icnSub=this.iconReg.getSvgByName(this.name).subscribe(this.initSvg.bind(this)):this.icnSub=this.iconReg.loadSvg(this.src).subscribe(this.initSvg.bind(this))},t.prototype.initSvg=function(t){this.setSvg(t),this.resetDiffer()},t.prototype.destroy=function(){this.svg=undefined,this.differ=undefined,this.icnSub&&this.icnSub.unsubscribe()},t.prototype.resetDiffer=function(){this._svgStyle&&!this.differ&&(this.differ=this.differs.find(this._svgStyle).create())},t.prototype.setSvg=function(t){if(t){var e=(this.svg=t).cloneNode(!0),r=this.element.nativeElement;r.innerHTML="",this.renderer.appendChild(r,e),this.stylize()}},t.prototype.stylize=function(){if(this.svg){var t=this.element.nativeElement.firstChild;!0===this.stretch?this.renderer.setAttribute(t,"preserveAspectRatio","none"):!1===this.stretch&&this.renderer.removeAttribute(t,"preserveAspectRatio")}},t.prototype.applyChanges=function(t){var e=this;t.forEachRemovedItem(function(t){return e.setStyle(t.key,null)}),t.forEachAddedItem(function(t){return e.setStyle(t.key,t.currentValue)}),t.forEachChangedItem(function(t){return e.setStyle(t.key,t.currentValue)})},t.prototype.setStyle=function(t,e){var r=function a(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),s=[];try{for(;(void 0===e||0<e--)&&!(n=o.next()).done;)s.push(n.value)}catch(c){i={error:c}}finally{try{n&&!n.done&&(r=o["return"])&&r.call(o)}finally{if(i)throw i.error}}return s}(t.split("."),2),n=r[0],i=r[1];e=null!==e&&i?""+e+i:e;var o=this.element.nativeElement.firstChild;null!==e?this.renderer.setStyle(o,n,e):this.renderer.removeStyle(o,n)},t.decorators=[{type:e.Component,args:[{selector:"svg-icon",template:"<ng-content></ng-content>",styles:[":host { display: inline-block; }"]}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:e.KeyValueDiffers},{type:e.Renderer2},{type:c}]},t.propDecorators={src:[{type:e.Input}],name:[{type:e.Input}],stretch:[{type:e.Input}],svgStyle:[{type:e.Input}]},t}(),l=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{imports:[n.CommonModule],declarations:[u],providers:[h],exports:[u]}]}],t}();t.AngularSvgIconModule=l,t.SVG_ICON_REGISTRY_PROVIDER_FACTORY=a,t.SERVER_URL=s,t.SvgIconRegistryService=c,t.SVG_ICON_REGISTRY_PROVIDER=h,t.SvgIconComponent=u,Object.defineProperty(t,"__esModule",{value:!0})});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common/http"),require("rxjs"),require("rxjs/operators"),require("@angular/common")):"function"==typeof define&&define.amd?define("angular-svg-icon",["exports","@angular/core","@angular/common/http","rxjs","rxjs/operators","@angular/common"],e):e(t["angular-svg-icon"]={},t.ng.core,t.ng.common.http,t.rxjs,t.rxjs.operators,t.ng.common)}(this,function(t,i,e,o,s,r){"use strict";var c=function(t,e){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)};var n=function d(){},a=function(r){function t(t){var e=r.call(this)||this;return e.http=t,e}return function n(t,e){function r(){this.constructor=t}c(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}(t,r),t.prototype.getSvg=function(t){return this.http.get(t,{responseType:"text"})},t.decorators=[{type:i.Injectable}],t.ctorParameters=function(){return[{type:e.HttpClient}]},t}(n),u=new i.InjectionToken("SERVER_URL"),p=function(){function t(t,e,r,n){this.loader=t,this.platformId=e,this.serverUrl=r,this._document=n,this.iconsByUrl=new Map,this.iconsLoadingByUrl=new Map,this.document=this._document}return t.prototype.addSvg=function(t,e){if(!this.iconsByUrl.has(t)){var r=this.document.createElement("DIV");r.innerHTML=e;var n=r.querySelector("svg");this.iconsByUrl.set(t,n)}},t.prototype.loadSvg=function(t,e){var r=this;if(void 0===e&&(e=t),this.serverUrl&&null===t.match(/^(http(s)?):/)&&(t=this.serverUrl+t,e=t),this.iconsByUrl.has(e))return o.of(this.iconsByUrl.get(e));if(this.iconsLoadingByUrl.has(e))return this.iconsLoadingByUrl.get(e);var n=this.loader.getSvg(t).pipe(s.map(function(t){var e=r.document.createElement("DIV");return e.innerHTML=t,e.querySelector("svg")}),s.tap(function(t){return r.iconsByUrl.set(e,t)}),s.catchError(function(t){return console.error(t),o.throwError(t)}),s.finalize(function(){return r.iconsLoadingByUrl["delete"](e)}),s.share());return this.iconsLoadingByUrl.set(e,n),n},t.prototype.getSvgByName=function(t){return this.iconsByUrl.has(t)?o.of(this.iconsByUrl.get(t)):this.iconsLoadingByUrl.has(t)?this.iconsLoadingByUrl.get(t):o.throwError("No svg with name '"+t+"' has been loaded")},t.prototype.unloadSvg=function(t){this.iconsByUrl.has(t)&&this.iconsByUrl["delete"](t)},t.decorators=[{type:i.Injectable}],t.ctorParameters=function(){return[{type:n},{type:Object,decorators:[{type:i.Inject,args:[i.PLATFORM_ID]}]},{type:String,decorators:[{type:i.Optional},{type:i.Inject,args:[u]}]},{type:undefined,decorators:[{type:i.Optional},{type:i.Inject,args:[r.DOCUMENT]}]}]},t}();function l(t,e,r,n,i){return t||new p(e,r,n,i)}var h={provide:p,deps:[[new i.Optional,new i.SkipSelf,p],n,[i.PLATFORM_ID],[new i.Optional,u],[new i.Optional,r.DOCUMENT]],useFactory:l},f=function(){function t(t,e,r,n){this.element=t,this.differs=e,this.renderer=r,this.iconReg=n,this.stretch=!1}return Object.defineProperty(t.prototype,"svgStyle",{set:function(t){this._svgStyle=t,!this.differ&&t&&(this.differ=this.differs.find(t).create())},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.init()},t.prototype.ngOnDestroy=function(){this.destroy()},t.prototype.ngOnChanges=function(t){(t.src||t.name)&&(this.svg&&this.destroy(),this.init()),t.stretch&&this.stylize()},t.prototype.ngDoCheck=function(){if(this.svg&&this.differ){var t=this.differ.diff(this._svgStyle);t&&this.applyChanges(t)}},t.prototype.init=function(){this.name?this.icnSub=this.iconReg.getSvgByName(this.name).subscribe(this.initSvg.bind(this)):this.icnSub=this.iconReg.loadSvg(this.src).subscribe(this.initSvg.bind(this))},t.prototype.initSvg=function(t){this.setSvg(t),this.resetDiffer()},t.prototype.destroy=function(){this.svg=undefined,this.differ=undefined,this.icnSub&&this.icnSub.unsubscribe()},t.prototype.resetDiffer=function(){this._svgStyle&&!this.differ&&(this.differ=this.differs.find(this._svgStyle).create())},t.prototype.setSvg=function(t){if(t){var e=(this.svg=t).cloneNode(!0),r=this.element.nativeElement;r.innerHTML="",this.renderer.appendChild(r,e),this.stylize()}},t.prototype.stylize=function(){if(this.svg){var t=this.element.nativeElement.firstChild;!0===this.stretch?this.renderer.setAttribute(t,"preserveAspectRatio","none"):!1===this.stretch&&this.renderer.removeAttribute(t,"preserveAspectRatio")}},t.prototype.applyChanges=function(t){var e=this;t.forEachRemovedItem(function(t){return e.setStyle(t.key,null)}),t.forEachAddedItem(function(t){return e.setStyle(t.key,t.currentValue)}),t.forEachChangedItem(function(t){return e.setStyle(t.key,t.currentValue)})},t.prototype.setStyle=function(t,e){var r=function a(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),s=[];try{for(;(void 0===e||0<e--)&&!(n=o.next()).done;)s.push(n.value)}catch(c){i={error:c}}finally{try{n&&!n.done&&(r=o["return"])&&r.call(o)}finally{if(i)throw i.error}}return s}(t.split("."),2),n=r[0],i=r[1];e=null!==e&&i?""+e+i:e;var o=this.element.nativeElement.firstChild;null!==e?this.renderer.setStyle(o,n,e):this.renderer.removeStyle(o,n)},t.decorators=[{type:i.Component,args:[{selector:"svg-icon",template:"<ng-content></ng-content>",styles:[":host { display: inline-block; }"]}]}],t.ctorParameters=function(){return[{type:i.ElementRef},{type:i.KeyValueDiffers},{type:i.Renderer2},{type:p}]},t.propDecorators={src:[{type:i.Input}],name:[{type:i.Input}],stretch:[{type:i.Input}],svgStyle:[{type:i.Input}]},t}(),y=function(){function e(){}return e.forRoot=function(t){return void 0===t&&(t={}),{ngModule:e,providers:[t.loader||{provide:n,useClass:a},h]}},e.decorators=[{type:i.NgModule,args:[{imports:[r.CommonModule],declarations:[f],providers:[h,{provide:n,useClass:a}],exports:[f]}]}],e}();t.AngularSvgIconModule=y,t.SVG_ICON_REGISTRY_PROVIDER_FACTORY=l,t.SERVER_URL=u,t.SvgIconRegistryService=p,t.SVG_ICON_REGISTRY_PROVIDER=h,t.SvgIconComponent=f,t.ɵb=a,t.ɵa=n,Object.defineProperty(t,"__esModule",{value:!0})});
//# sourceMappingURL=angular-svg-icon.umd.min.js.map

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

export { AngularSvgIconModule, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent } from './index';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJhbmd1bGFyLXN2Zy1pY29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwySkFBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
export { SvgHttpLoader as ɵb, SvgLoader as ɵa } from './src/svg-loader';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJhbmd1bGFyLXN2Zy1pY29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwySkFBYyxTQUFTLENBQUM7QUFFeEIsT0FBTyxFQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUMsU0FBUyxJQUFJLEVBQUUsRUFBQyxNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IHtTdmdIdHRwTG9hZGVyIGFzIMm1YixTdmdMb2FkZXIgYXMgybVhfSBmcm9tICcuL3NyYy9zdmctbG9hZGVyJzsiXX0=

@@ -9,3 +9,25 @@ /**

import { SvgIconComponent } from './svg-icon.component';
import { SvgHttpLoader, SvgLoader } from './svg-loader';
/**
* @record
*/
export function AngularSvgIconConfig() { }
if (false) {
/** @type {?|undefined} */
AngularSvgIconConfig.prototype.loader;
}
export class AngularSvgIconModule {
/**
* @param {?=} config
* @return {?}
*/
static forRoot(config = {}) {
return {
ngModule: AngularSvgIconModule,
providers: [
config.loader || { provide: SvgLoader, useClass: SvgHttpLoader },
SVG_ICON_REGISTRY_PROVIDER
]
};
}
}

@@ -18,6 +40,6 @@ AngularSvgIconModule.decorators = [

declarations: [SvgIconComponent],
providers: [SVG_ICON_REGISTRY_PROVIDER],
providers: [SVG_ICON_REGISTRY_PROVIDER, { provide: SvgLoader, useClass: SvgHttpLoader }],
exports: [SvgIconComponent]
},] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsic3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVd4RCxNQUFNLE9BQU8sb0JBQW9COzs7WUFUaEMsUUFBUSxTQUFDO2dCQUNULE9BQU8sRUFBSTtvQkFDVixZQUFZO2lCQUNaO2dCQUNELFlBQVksRUFBRSxDQUFFLGdCQUFnQixDQUFFO2dCQUNsQyxTQUFTLEVBQUssQ0FBRSwwQkFBMEIsQ0FBRTtnQkFDNUMsT0FBTyxFQUFPLENBQUUsZ0JBQWdCLENBQUU7YUFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuXG5pbXBvcnQgeyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiB9IGZyb20gJy4vc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBTdmdJY29uQ29tcG9uZW50IH0gZnJvbSAnLi9zdmctaWNvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOlx0ICBbXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRdLFxuXHRkZWNsYXJhdGlvbnM6IFsgU3ZnSWNvbkNvbXBvbmVudCBdLFxuXHRwcm92aWRlcnM6ICAgIFsgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgXSxcblx0ZXhwb3J0czogICAgICBbIFN2Z0ljb25Db21wb25lbnQgXVxufSlcblxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJTdmdJY29uTW9kdWxlIHt9XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsic3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFFeEQsMENBRUM7OztJQURBLHNDQUFrQjs7QUFXbkIsTUFBTSxPQUFPLG9CQUFvQjs7Ozs7SUFFaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUErQixFQUFFO1FBQy9DLE9BQU87WUFDTixRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRTtnQkFDVixNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO2dCQUNoRSwwQkFBMEI7YUFDMUI7U0FDRCxDQUFBO0lBQ0YsQ0FBQzs7O1lBbEJELFFBQVEsU0FBQztnQkFDVCxPQUFPLEVBQUk7b0JBQ1YsWUFBWTtpQkFDWjtnQkFDRCxZQUFZLEVBQUUsQ0FBRSxnQkFBZ0IsQ0FBRTtnQkFDbEMsU0FBUyxFQUFLLENBQUUsMEJBQTBCLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBRTtnQkFDN0YsT0FBTyxFQUFPLENBQUUsZ0JBQWdCLENBQUU7YUFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICcuL3N2Zy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdmdIdHRwTG9hZGVyLCBTdmdMb2FkZXIgfSBmcm9tICcuL3N2Zy1sb2FkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJTdmdJY29uQ29uZmlnIHtcblx0bG9hZGVyPzogUHJvdmlkZXI7XG59XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6XHQgIFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogWyBTdmdJY29uQ29tcG9uZW50IF0sXG5cdHByb3ZpZGVyczogICAgWyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiwgeyBwcm92aWRlOiBTdmdMb2FkZXIsIHVzZUNsYXNzOiBTdmdIdHRwTG9hZGVyIH0gXSxcblx0ZXhwb3J0czogICAgICBbIFN2Z0ljb25Db21wb25lbnQgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB7XG5cblx0c3RhdGljIGZvclJvb3QoY29uZmlnOiBBbmd1bGFyU3ZnSWNvbkNvbmZpZyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5nTW9kdWxlOiBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcblx0XHRcdHByb3ZpZGVyczogW1xuXHRcdFx0XHRjb25maWcubG9hZGVyIHx8IHsgcHJvdmlkZTogU3ZnTG9hZGVyLCB1c2VDbGFzczogU3ZnSHR0cExvYWRlciB9LFxuXHRcdFx0XHRTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUlxuXHRcdFx0XVxuXHRcdH1cblx0fVxufVxuIl19

@@ -5,8 +5,7 @@ /**

*/
import { Inject, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Inject, Injectable, InjectionToken, Optional, PLATFORM_ID, SkipSelf } from '@angular/core';
import { of as observableOf, throwError as observableThrowError } from 'rxjs';
import { map, tap, catchError, finalize, share } from 'rxjs/operators';
import { PLATFORM_ID } from '@angular/core';
import { catchError, finalize, map, share, tap } from 'rxjs/operators';
import { DOCUMENT } from '@angular/common';
import { SvgLoader } from './svg-loader';
/** @type {?} */

@@ -16,3 +15,3 @@ export const SERVER_URL = new InjectionToken('SERVER_URL');

/**
* @param {?} http
* @param {?} loader
* @param {?} platformId

@@ -22,4 +21,4 @@ * @param {?} serverUrl

*/
constructor(http, platformId, serverUrl, _document) {
this.http = http;
constructor(loader, platformId, serverUrl, _document) {
this.loader = loader;
this.platformId = platformId;

@@ -69,3 +68,3 @@ this.serverUrl = serverUrl;

/** @type {?} */
const o = (/** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(svg => {
const o = (/** @type {?} */ (this.loader.getSvg(url).pipe(map(svg => {
/** @type {?} */

@@ -112,3 +111,3 @@ const div = this.document.createElement('DIV');

SvgIconRegistryService.ctorParameters = () => [
{ type: HttpClient },
{ type: SvgLoader },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },

@@ -138,3 +137,3 @@ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [SERVER_URL,] }] },

*/
SvgIconRegistryService.prototype.http;
SvgIconRegistryService.prototype.loader;
/**

@@ -158,3 +157,3 @@ * @type {?}

* @param {?} parentRegistry
* @param {?} http
* @param {?} loader
* @param {?} platformId

@@ -165,4 +164,4 @@ * @param {?=} serverUrl

*/
export function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(http, platformId, serverUrl, document);
export function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, loader, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(loader, platformId, serverUrl, document);
}

@@ -172,3 +171,3 @@ /** @type {?} */

provide: SvgIconRegistryService,
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient, [(/** @type {?} */ (PLATFORM_ID))],
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], SvgLoader, [(/** @type {?} */ (PLATFORM_ID))],
[new Optional(), (/** @type {?} */ (SERVER_URL))], [new Optional(), (/** @type {?} */ (DOCUMENT))]

@@ -178,2 +177,2 @@ ],

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJzcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBYyxFQUFFLElBQUksWUFBWSxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUzQyxNQUFNLE9BQU8sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFTLFlBQVksQ0FBQztBQUdsRSxNQUFNLE9BQU8sc0JBQXNCOzs7Ozs7O0lBTWxDLFlBQW9CLElBQWdCLEVBQ0osVUFBa0IsRUFDTCxTQUFpQixFQUNyQixTQUFjO1FBSG5DLFNBQUksR0FBSixJQUFJLENBQVk7UUFDSixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBTi9DLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUMzQyxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztRQU1wRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDakMsQ0FBQzs7Ozs7OztJ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QXVCLENBQUM7S0FDMUc7SUFDRCxVQUFVLEVBQUUsa0NBQWtDO0NBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2YsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFwLCBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgc2hhcmUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBTRVJWRVJfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ1NFUlZFUl9VUkwnKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50O1xuXHRwcml2YXRlIGljb25zQnlVcmwgPSBuZXcgTWFwPHN0cmluZywgU1ZHRWxlbWVudD4oKTtcblx0cHJpdmF0ZSBpY29uc0xvYWRpbmdCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PigpO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcblx0XHRcdFx0QEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXG5cdFx0XHRcdEBPcHRpb25hbCgpIEBJbmplY3QoU0VSVkVSX1VSTCkgcHJvdGVjdGVkIHNlcnZlclVybDogc3RyaW5nLFxuXHRcdFx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55KSB7XG5cdFx0XHR0aGlzLmRvY3VtZW50ID0gdGhpcy5fZG9jdW1lbnQ7XG5cdH1cblxuXHQvKiogQWRkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBieSBwYXNzaW5nIGEgbmFtZSBhbmQgdGhlIFNWRy4gKi9cblx0YWRkU3ZnKG5hbWU6IHN0cmluZywgZGF0YTogc3RyaW5nKSB7XG5cdFx0aWYgKCF0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRjb25zdCBkaXYgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0ZGl2LmlubmVySFRNTCA9IGRhdGE7XG5cdFx0XHRjb25zdCBzdmcgPSA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuc2V0KG5hbWUsIHN2Zyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIExvYWQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGZyb20gYSBVUkwuICovXG5cdGxvYWRTdmcodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZyA9IHVybCkgOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcblxuXHRcdC8vIG5vdCBzdXJlIGlmIHRoZXJlIHNob3VsZCBiZSBhIHBvc3NpYmlsaXR5IHRvIHVzZSBuYW1lIGZvciBzZXJ2ZXIgdXNhZ2Vcblx0XHQvLyBzbyBvdmVycmlkaW5nIGl0IGZvciBub3cgaWYgcHJvdmlkZWRcblx0XHQvLyBtYXliZSBzaG91bGQgc2VwYXJhdGUgZnVuY3Rpb25hbGl0eSBmb3IgdXJsIGFuZCBuYW1lIHVzZS1jYXNlc1xuXHRcdGlmICh0aGlzLnNlcnZlclVybCAmJiB1cmwubWF0Y2goL14oaHR0cChzKT8pOi8pID09PSBudWxsKSB7XG5cdFx0XHR1cmwgPSB0aGlzLnNlcnZlclVybCArIHVybDtcblx0XHRcdG5hbWUgPSB1cmw7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5pY29uc0J5VXJsLmdldChuYW1lKSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmljb25zTG9hZGluZ0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZ2V0KG5hbWUpO1xuXHRcdH1cblx0XHRjb25zdCBvID0gPE9ic2VydmFibGU8U1ZHRWxlbWVudD4+IHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pLnBpcGUoXG5cdFx0XHRtYXAoc3ZnID0+IHtcblx0XHRcdFx0Y29uc3QgZGl2ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdFx0ZGl2LmlubmVySFRNTCA9IHN2Zztcblx0XHRcdFx0cmV0dXJuIDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdH0pLFxuXHRcdFx0dGFwIChzdmcgPT4gdGhpcy5pY29uc0J5VXJsLnNldChuYW1lLCBzdmcpICksXG5cdFx0XHRjYXRjaEVycm9yKGVyciA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyKTtcblx0XHRcdFx0cmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycik7XG5cdFx0XHR9KSxcblx0XHRcdGZpbmFsaXplKCgpID0+IHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZGVsZXRlKG5hbWUpICksXG5cdFx0XHRzaGFyZSgpXG5cdFx0KTtcblxuXHRcdHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuc2V0KG5hbWUsIG8pO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0LyoqIEdldCBsb2FkZWQgU1ZHIGZyb20gcmVnaXN0cnkgYnkgbmFtZS4gKGFsc28gd29ya3MgYnkgdXJsIGJlY2F1c2Ugb2YgYmxlbmRlZCBtYXApICovXG5cdGdldFN2Z0J5TmFtZShuYW1lOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5pY29uc0J5VXJsLmdldChuYW1lKSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmljb25zTG9hZGluZ0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZ2V0KG5hbWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoYE5vIHN2ZyB3aXRoIG5hbWUgJyR7bmFtZX0nIGhhcyBiZWVuIGxvYWRlZGApO1xuXHR9XG5cblx0LyoqIFJlbW92ZSBhIFNWRyBmcm9tIHRoZSByZWdpc3RyeSBieSBVUkwgKG9yIG5hbWUpLiAqL1xuXHR1bmxvYWRTdmcodXJsOiBzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuZGVsZXRlKHVybCk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZKHBhcmVudFJlZ2lzdHJ5OiBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLCBodHRwOiBIdHRwQ2xpZW50LFxuXHRwbGF0Zm9ybUlkOiBPYmplY3QsIHNlcnZlclVybD86IHN0cmluZywgZG9jdW1lbnQ/OiBhbnkpIHtcblx0cmV0dXJuIHBhcmVudFJlZ2lzdHJ5IHx8IG5ldyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlKGh0dHAsIHBsYXRmb3JtSWQsICBzZXJ2ZXJVcmwsIGRvY3VtZW50KTtcbn1cblxuZXhwb3J0IGNvbnN0IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSID0ge1xuXHRwcm92aWRlOiBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLFxuXHRkZXBzOiBbIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2VdLCBIdHRwQ2xpZW50LCBbUExBVEZPUk1fSUQgYXMgSW5qZWN0aW9uVG9rZW48YW55Pl0sXG5cdFx0XHRbbmV3IE9wdGlvbmFsKCksIFNFUlZFUl9VUkwgYXMgSW5qZWN0aW9uVG9rZW48c3RyaW5nPl0sIFtuZXcgT3B0aW9uYWwoKSwgRE9DVU1FTlQgYXMgSW5qZWN0aW9uVG9rZW48YW55Pl1cblx0XSxcblx0dXNlRmFjdG9yeTogU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWVxufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJzcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBHLE9BQU8sRUFBYyxFQUFFLElBQUksWUFBWSxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUV6QyxNQUFNLE9BQU8sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFTLFlBQVksQ0FBQztBQUdsRSxNQUFNLE9BQU8sc0JBQXNCOzs7Ozs7O0lBTWxDLFlBQW9CLE1BQWlCLEVBQ0wsVUFBa0IsRUFDTCxTQUFpQixFQUNyQixTQUFjO1FBSG5DLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDTCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBTi9DLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUMzQyxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztRQU1wRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDakMsQ0FBQzs7Ozs7OztJQUdELE1BQU0sQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUNo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bXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgUExBVEZPUk1fSUQsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgc2hhcmUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN2Z0xvYWRlciB9IGZyb20gJy4vc3ZnLWxvYWRlcic7XG5cbmV4cG9ydCBjb25zdCBTRVJWRVJfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ1NFUlZFUl9VUkwnKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50O1xuXHRwcml2YXRlIGljb25zQnlVcmwgPSBuZXcgTWFwPHN0cmluZywgU1ZHRWxlbWVudD4oKTtcblx0cHJpdmF0ZSBpY29uc0xvYWRpbmdCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PigpO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgbG9hZGVyOiBTdmdMb2FkZXIsXG5cdFx0XHRcdEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuXHRcdFx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KFNFUlZFUl9VUkwpIHByb3RlY3RlZCBzZXJ2ZXJVcmw6IHN0cmluZyxcblx0XHRcdFx0QE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSkge1xuXHRcdFx0dGhpcy5kb2N1bWVudCA9IHRoaXMuX2RvY3VtZW50O1xuXHR9XG5cblx0LyoqIEFkZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgYnkgcGFzc2luZyBhIG5hbWUgYW5kIHRoZSBTVkcuICovXG5cdGFkZFN2ZyhuYW1lOiBzdHJpbmcsIGRhdGE6IHN0cmluZykge1xuXHRcdGlmICghdGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0Y29uc3QgZGl2ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdGRpdi5pbm5lckhUTUwgPSBkYXRhO1xuXHRcdFx0Y29uc3Qgc3ZnID0gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLnNldChuYW1lLCBzdmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBMb2FkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBmcm9tIGEgVVJMLiAqL1xuXHRsb2FkU3ZnKHVybDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgPSB1cmwpIDogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG5cblx0XHQvLyBub3Qgc3VyZSBpZiB0aGVyZSBzaG91bGQgYmUgYSBwb3NzaWJpbGl0eSB0byB1c2UgbmFtZSBmb3Igc2VydmVyIHVzYWdlXG5cdFx0Ly8gc28gb3ZlcnJpZGluZyBpdCBmb3Igbm93IGlmIHByb3ZpZGVkXG5cdFx0Ly8gbWF5YmUgc2hvdWxkIHNlcGFyYXRlIGZ1bmN0aW9uYWxpdHkgZm9yIHVybCBhbmQgbmFtZSB1c2UtY2FzZXNcblx0XHRpZiAodGhpcy5zZXJ2ZXJVcmwgJiYgdXJsLm1hdGNoKC9eKGh0dHAocyk/KTovKSA9PT0gbnVsbCkge1xuXHRcdFx0dXJsID0gdGhpcy5zZXJ2ZXJVcmwgKyB1cmw7XG5cdFx0XHRuYW1lID0gdXJsO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQobmFtZSkpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pY29uc0xvYWRpbmdCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmdldChuYW1lKTtcblx0XHR9XG5cdFx0Y29uc3QgbyA9IDxPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PiB0aGlzLmxvYWRlci5nZXRTdmcodXJsKS5waXBlKFxuXHRcdFx0bWFwKHN2ZyA9PiB7XG5cdFx0XHRcdGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRcdGRpdi5pbm5lckhUTUwgPSBzdmc7XG5cdFx0XHRcdHJldHVybiA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHR9KSxcblx0XHRcdHRhcCAoc3ZnID0+IHRoaXMuaWNvbnNCeVVybC5zZXQobmFtZSwgc3ZnKSApLFxuXHRcdFx0Y2F0Y2hFcnJvcihlcnIgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGVycik7XG5cdFx0XHRcdHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnIpO1xuXHRcdFx0fSksXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmRlbGV0ZShuYW1lKSApLFxuXHRcdFx0c2hhcmUoKVxuXHRcdCk7XG5cblx0XHR0aGlzLmljb25zTG9hZGluZ0J5VXJsLnNldChuYW1lLCBvKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdC8qKiBHZXQgbG9hZGVkIFNWRyBmcm9tIHJlZ2lzdHJ5IGJ5IG5hbWUuIChhbHNvIHdvcmtzIGJ5IHVybCBiZWNhdXNlIG9mIGJsZW5kZWQgbWFwKSAqL1xuXHRnZXRTdmdCeU5hbWUobmFtZTogc3RyaW5nKSA6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQobmFtZSkpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pY29uc0xvYWRpbmdCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmdldChuYW1lKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGBObyBzdmcgd2l0aCBuYW1lICcke25hbWV9JyBoYXMgYmVlbiBsb2FkZWRgKTtcblx0fVxuXG5cdC8qKiBSZW1vdmUgYSBTVkcgZnJvbSB0aGUgcmVnaXN0cnkgYnkgVVJMIChvciBuYW1lKS4gKi9cblx0dW5sb2FkU3ZnKHVybDogc3RyaW5nKSB7XG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXModXJsKSkge1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLmRlbGV0ZSh1cmwpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWShwYXJlbnRSZWdpc3RyeTogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSwgbG9hZGVyOiBTdmdMb2FkZXIsXG5cdHBsYXRmb3JtSWQ6IE9iamVjdCwgc2VydmVyVXJsPzogc3RyaW5nLCBkb2N1bWVudD86IGFueSkge1xuXHRyZXR1cm4gcGFyZW50UmVnaXN0cnkgfHwgbmV3IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UobG9hZGVyLCBwbGF0Zm9ybUlkLCAgc2VydmVyVXJsLCBkb2N1bWVudCk7XG59XG5cbmV4cG9ydCBjb25zdCBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiA9IHtcblx0cHJvdmlkZTogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSxcblx0ZGVwczogWyBbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlXSwgU3ZnTG9hZGVyLCBbUExBVEZPUk1fSUQgYXMgSW5qZWN0aW9uVG9rZW48YW55Pl0sXG5cdFx0XHRbbmV3IE9wdGlvbmFsKCksIFNFUlZFUl9VUkwgYXMgSW5qZWN0aW9uVG9rZW48c3RyaW5nPl0sIFtuZXcgT3B0aW9uYWwoKSwgRE9DVU1FTlQgYXMgSW5qZWN0aW9uVG9rZW48YW55Pl1cblx0XSxcblx0dXNlRmFjdG9yeTogU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWVxufTtcbiJdfQ==

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

export { AngularSvgIconModule, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent } from './index';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJhbmd1bGFyLXN2Zy1pY29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwySkFBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
export { SvgHttpLoader as ɵb, SvgLoader as ɵa } from './src/svg-loader';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJhbmd1bGFyLXN2Zy1pY29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwySkFBYyxTQUFTLENBQUM7QUFFeEIsT0FBTyxFQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUMsU0FBUyxJQUFJLEVBQUUsRUFBQyxNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IHtTdmdIdHRwTG9hZGVyIGFzIMm1YixTdmdMb2FkZXIgYXMgybVhfSBmcm9tICcuL3NyYy9zdmctbG9hZGVyJzsiXX0=

@@ -9,5 +9,32 @@ /**

import { SvgIconComponent } from './svg-icon.component';
import { SvgHttpLoader, SvgLoader } from './svg-loader';
/**
* @record
*/
export function AngularSvgIconConfig() { }
if (false) {
/** @type {?|undefined} */
AngularSvgIconConfig.prototype.loader;
}
var AngularSvgIconModule = /** @class */ (function () {
function AngularSvgIconModule() {
}
/**
* @param {?=} config
* @return {?}
*/
AngularSvgIconModule.forRoot = /**
* @param {?=} config
* @return {?}
*/
function (config) {
if (config === void 0) { config = {}; }
return {
ngModule: AngularSvgIconModule,
providers: [
config.loader || { provide: SvgLoader, useClass: SvgHttpLoader },
SVG_ICON_REGISTRY_PROVIDER
]
};
};
AngularSvgIconModule.decorators = [

@@ -19,3 +46,3 @@ { type: NgModule, args: [{

declarations: [SvgIconComponent],
providers: [SVG_ICON_REGISTRY_PROVIDER],
providers: [SVG_ICON_REGISTRY_PROVIDER, { provide: SvgLoader, useClass: SvgHttpLoader }],
exports: [SvgIconComponent]

@@ -27,2 +54,2 @@ },] }

export { AngularSvgIconModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsic3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RDtJQUFBO0lBU21DLENBQUM7O2dCQVRuQyxRQUFRLFNBQUM7b0JBQ1QsT0FBTyxFQUFJO3dCQUNWLFlBQVk7cUJBQ1o7b0JBQ0QsWUFBWSxFQUFFLENBQUUsZ0JBQWdCLENBQUU7b0JBQ2xDLFNBQVMsRUFBSyxDQUFFLDBCQUEwQixDQUFFO29CQUM1QyxPQUFPLEVBQU8sQ0FBRSxnQkFBZ0IsQ0FBRTtpQkFDbEM7O0lBRWtDLDJCQUFDO0NBQUEsQUFUcEMsSUFTb0M7U0FBdkIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cblxuaW1wb3J0IHsgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgfSBmcm9tICcuL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vc3ZnLWljb24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcblx0aW1wb3J0czpcdCAgW1xuXHRcdENvbW1vbk1vZHVsZSxcblx0XSxcblx0ZGVjbGFyYXRpb25zOiBbIFN2Z0ljb25Db21wb25lbnQgXSxcblx0cHJvdmlkZXJzOiAgICBbIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIF0sXG5cdGV4cG9ydHM6ICAgICAgWyBTdmdJY29uQ29tcG9uZW50IF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB7fVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsic3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFFeEQsMENBRUM7OztJQURBLHNDQUFrQjs7QUFHbkI7SUFBQTtJQW1CQSxDQUFDOzs7OztJQVRPLDRCQUFPOzs7O0lBQWQsVUFBZSxNQUFpQztRQUFqQyx1QkFBQSxFQUFBLFdBQWlDO1FBQy9DLE9BQU87WUFDTixRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRTtnQkFDVixNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO2dCQUNoRSwwQkFBMEI7YUFDMUI7U0FDRCxDQUFBO0lBQ0YsQ0FBQzs7Z0JBbEJELFFBQVEsU0FBQztvQkFDVCxPQUFPLEVBQUk7d0JBQ1YsWUFBWTtxQkFDWjtvQkFDRCxZQUFZLEVBQUUsQ0FBRSxnQkFBZ0IsQ0FBRTtvQkFDbEMsU0FBUyxFQUFLLENBQUUsMEJBQTBCLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBRTtvQkFDN0YsT0FBTyxFQUFPLENBQUUsZ0JBQWdCLENBQUU7aUJBQ2xDOztJQVlELDJCQUFDO0NBQUEsQUFuQkQsSUFtQkM7U0FYWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICcuL3N2Zy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdmdIdHRwTG9hZGVyLCBTdmdMb2FkZXIgfSBmcm9tICcuL3N2Zy1sb2FkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJTdmdJY29uQ29uZmlnIHtcblx0bG9hZGVyPzogUHJvdmlkZXI7XG59XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6XHQgIFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogWyBTdmdJY29uQ29tcG9uZW50IF0sXG5cdHByb3ZpZGVyczogICAgWyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiwgeyBwcm92aWRlOiBTdmdMb2FkZXIsIHVzZUNsYXNzOiBTdmdIdHRwTG9hZGVyIH0gXSxcblx0ZXhwb3J0czogICAgICBbIFN2Z0ljb25Db21wb25lbnQgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB7XG5cblx0c3RhdGljIGZvclJvb3QoY29uZmlnOiBBbmd1bGFyU3ZnSWNvbkNvbmZpZyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5nTW9kdWxlOiBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcblx0XHRcdHByb3ZpZGVyczogW1xuXHRcdFx0XHRjb25maWcubG9hZGVyIHx8IHsgcHJvdmlkZTogU3ZnTG9hZGVyLCB1c2VDbGFzczogU3ZnSHR0cExvYWRlciB9LFxuXHRcdFx0XHRTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUlxuXHRcdFx0XVxuXHRcdH1cblx0fVxufVxuIl19

@@ -5,13 +5,12 @@ /**

*/
import { Inject, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Inject, Injectable, InjectionToken, Optional, PLATFORM_ID, SkipSelf } from '@angular/core';
import { of as observableOf, throwError as observableThrowError } from 'rxjs';
import { map, tap, catchError, finalize, share } from 'rxjs/operators';
import { PLATFORM_ID } from '@angular/core';
import { catchError, finalize, map, share, tap } from 'rxjs/operators';
import { DOCUMENT } from '@angular/common';
import { SvgLoader } from './svg-loader';
/** @type {?} */
export var SERVER_URL = new InjectionToken('SERVER_URL');
var SvgIconRegistryService = /** @class */ (function () {
function SvgIconRegistryService(http, platformId, serverUrl, _document) {
this.http = http;
function SvgIconRegistryService(loader, platformId, serverUrl, _document) {
this.loader = loader;
this.platformId = platformId;

@@ -77,3 +76,3 @@ this.serverUrl = serverUrl;

/** @type {?} */
var o = (/** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(function (svg) {
var o = (/** @type {?} */ (this.loader.getSvg(url).pipe(map(function (svg) {
/** @type {?} */

@@ -131,3 +130,3 @@ var div = _this.document.createElement('DIV');

SvgIconRegistryService.ctorParameters = function () { return [
{ type: HttpClient },
{ type: SvgLoader },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },

@@ -160,3 +159,3 @@ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [SERVER_URL,] }] },

*/
SvgIconRegistryService.prototype.http;
SvgIconRegistryService.prototype.loader;
/**

@@ -180,3 +179,3 @@ * @type {?}

* @param {?} parentRegistry
* @param {?} http
* @param {?} loader
* @param {?} platformId

@@ -187,4 +186,4 @@ * @param {?=} serverUrl

*/
export function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(http, platformId, serverUrl, document);
export function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, loader, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(loader, platformId, serverUrl, document);
}

@@ -194,3 +193,3 @@ /** @type {?} */

provide: SvgIconRegistryService,
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient, [(/** @type {?} */ (PLATFORM_ID))],
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], SvgLoader, [(/** @type {?} */ (PLATFORM_ID))],
[new Optional(), (/** @type {?} */ (SERVER_URL))], [new Optional(), (/** @type {?} */ (DOCUMENT))]

@@ -200,2 +199,2 @@ ],

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJzcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBYyxFQUFFLElBQUksWUFBWSxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUzQyxNQUFNLEtBQU8sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFTLFlBQVksQ0FBQztBQUVsRTtJQU9DLGdDQUFvQixJQUFnQixFQUNKLFVBQWtCLEVBQ0wsU0FBaUIsRUFDckIsU0FBYztRQUhuQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0osZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNMLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBSztRQU4vQyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFDM0Msc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7UUFNcEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRCwrREFBK0Q7Ozs7Ozs7SUFDL0QsdUNBQU07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RSxFQUFFLHNCQUFzQixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsbUJBQUEsV0FBVyxFQUF1QixDQUFDO1FBQ2hILENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxtQkFBQSxVQUFVLEVBQTBCLENBQUMsRUFBRSxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsbUJBQUEsUUFBUSxFQUF1QixDQUFDO0tBQzFHO0lBQ0QsVUFBVSxFQUFFLGtDQUFrQztDQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCwgY2F0Y2hFcnJvciwgZmluYWxpemUsIHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgU0VSVkVSX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdTRVJWRVJfVVJMJyk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIHtcblxuXHRwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudDtcblx0cHJpdmF0ZSBpY29uc0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIFNWR0VsZW1lbnQ+KCk7XG5cdHByaXZhdGUgaWNvbnNMb2FkaW5nQnlVcmwgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxTVkdFbGVtZW50Pj4oKTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG5cdFx0XHRcdEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuXHRcdFx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KFNFUlZFUl9VUkwpIHByb3RlY3RlZCBzZXJ2ZXJVcmw6IHN0cmluZyxcblx0XHRcdFx0QE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSkge1xuXHRcdFx0dGhpcy5kb2N1bWVudCA9IHRoaXMuX2RvY3VtZW50O1xuXHR9XG5cblx0LyoqIEFkZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgYnkgcGFzc2luZyBhIG5hbWUgYW5kIHRoZSBTVkcuICovXG5cdGFkZFN2ZyhuYW1lOiBzdHJpbmcsIGRhdGE6IHN0cmluZykge1xuXHRcdGlmICghdGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0Y29uc3QgZGl2ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdGRpdi5pbm5lckhUTUwgPSBkYXRhO1xuXHRcdFx0Y29uc3Qgc3ZnID0gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLnNldChuYW1lLCBzdmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBMb2FkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBmcm9tIGEgVVJMLiAqL1xuXHRsb2FkU3ZnKHVybDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgPSB1cmwpIDogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG5cblx0XHQvLyBub3Qgc3VyZSBpZiB0aGVyZSBzaG91bGQgYmUgYSBwb3NzaWJpbGl0eSB0byB1c2UgbmFtZSBmb3Igc2VydmVyIHVzYWdlXG5cdFx0Ly8gc28gb3ZlcnJpZGluZyBpdCBmb3Igbm93IGlmIHByb3ZpZGVkXG5cdFx0Ly8gbWF5YmUgc2hvdWxkIHNlcGFyYXRlIGZ1bmN0aW9uYWxpdHkgZm9yIHVybCBhbmQgbmFtZSB1c2UtY2FzZXNcblx0XHRpZiAodGhpcy5zZXJ2ZXJVcmwgJiYgdXJsLm1hdGNoKC9eKGh0dHAocyk/KTovKSA9PT0gbnVsbCkge1xuXHRcdFx0dXJsID0gdGhpcy5zZXJ2ZXJVcmwgKyB1cmw7XG5cdFx0XHRuYW1lID0gdXJsO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQobmFtZSkpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pY29uc0xvYWRpbmdCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmdldChuYW1lKTtcblx0XHR9XG5cdFx0Y29uc3QgbyA9IDxPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PiB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5waXBlKFxuXHRcdFx0bWFwKHN2ZyA9PiB7XG5cdFx0XHRcdGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRcdGRpdi5pbm5lckhUTUwgPSBzdmc7XG5cdFx0XHRcdHJldHVybiA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHR9KSxcblx0XHRcdHRhcCAoc3ZnID0+IHRoaXMuaWNvbnNCeVVybC5zZXQobmFtZSwgc3ZnKSApLFxuXHRcdFx0Y2F0Y2hFcnJvcihlcnIgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGVycik7XG5cdFx0XHRcdHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnIpO1xuXHRcdFx0fSksXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmRlbGV0ZShuYW1lKSApLFxuXHRcdFx0c2hhcmUoKVxuXHRcdCk7XG5cblx0XHR0aGlzLmljb25zTG9hZGluZ0J5VXJsLnNldChuYW1lLCBvKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdC8qKiBHZXQgbG9hZGVkIFNWRyBmcm9tIHJlZ2lzdHJ5IGJ5IG5hbWUuIChhbHNvIHdvcmtzIGJ5IHVybCBiZWNhdXNlIG9mIGJsZW5kZWQgbWFwKSAqL1xuXHRnZXRTdmdCeU5hbWUobmFtZTogc3RyaW5nKSA6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQobmFtZSkpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pY29uc0xvYWRpbmdCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmdldChuYW1lKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGBObyBzdmcgd2l0aCBuYW1lICcke25hbWV9JyBoYXMgYmVlbiBsb2FkZWRgKTtcblx0fVxuXG5cdC8qKiBSZW1vdmUgYSBTVkcgZnJvbSB0aGUgcmVnaXN0cnkgYnkgVVJMIChvciBuYW1lKS4gKi9cblx0dW5sb2FkU3ZnKHVybDogc3RyaW5nKSB7XG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXModXJsKSkge1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLmRlbGV0ZSh1cmwpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWShwYXJlbnRSZWdpc3RyeTogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSwgaHR0cDogSHR0cENsaWVudCxcblx0cGxhdGZvcm1JZDogT2JqZWN0LCBzZXJ2ZXJVcmw/OiBzdHJpbmcsIGRvY3VtZW50PzogYW55KSB7XG5cdHJldHVybiBwYXJlbnRSZWdpc3RyeSB8fCBuZXcgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZShodHRwLCBwbGF0Zm9ybUlkLCAgc2VydmVyVXJsLCBkb2N1bWVudCk7XG59XG5cbmV4cG9ydCBjb25zdCBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiA9IHtcblx0cHJvdmlkZTogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSxcblx0ZGVwczogWyBbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlXSwgSHR0cENsaWVudCwgW1BMQVRGT1JNX0lEIGFzIEluamVjdGlvblRva2VuPGFueT5dLFxuXHRcdFx0W25ldyBPcHRpb25hbCgpLCBTRVJWRVJfVVJMIGFzIEluamVjdGlvblRva2VuPHN0cmluZz5dLCBbbmV3IE9wdGlvbmFsKCksIERPQ1VNRU5UIGFzIEluamVjdGlvblRva2VuPGFueT5dXG5cdF0sXG5cdHVzZUZhY3Rvcnk6IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUllcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJzcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBHLE9BQU8sRUFBYyxFQUFFLElBQUksWUFBWSxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUV6QyxNQUFNLEtBQU8sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFTLFlBQVksQ0FBQztBQUVsRTtJQU9DLGdDQUFvQixNQUFpQixFQUNMLFVBQWtCLEVBQ0wsU0FBaUIsRUFDckIsU0FBYztRQUhuQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ0wsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNMLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBSztRQU4vQyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFDM0Msc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7UUFNcEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRCwrREFBK0Q7Ozs7Ozs7SUFDL0QsdUNBQU07Ozs7OztJQUFOLFVBQU8sSUFBWSxFQUFFLElBQVk7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFOztnQkFDekIsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUM5QyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzs7Z0JBQ2YsR0FBRyxHQUFHLG1CQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUE7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQy9CO0lBQ0YsQ0FBQztJQUVELDZDQUE2Qzs7Ozs7OztJQUM3Qyx3Q0FBTzs7Ozs7O0lBQVAsVUFBUSxHQUFXLEVBQUUsSUFBa0I7UUFBdkMsaUJBZ0NDO1FBaENvQixxQkFBQSxFQUFBLFVBQWtCO1FBRXRDLHlFQUF5RTtRQUN6RSx1Q0FBdUM7UUFDdkMsaUVBQWlFO1FBQ2pFLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN6RCxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDM0IsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUNYO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5QixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQy9DO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzVDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7WUFDSyxDQUFDLEdBQUcsbUJBQXlCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDOUQsR0FBRyxDQUFDLFVBQUEsR0FBRzs7Z0JBQ0EsR0FBRyxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUM5QyxHQUFHLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUNwQixPQUFPLG1CQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUEsQ0FBQztRQUM3QyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUUsVUFBQSxHQUFHLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQTlCLENBQThCLENBQUUsRUFDNUMsVUFBVSxDQUFDLFVBQUEsR0FBRztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsT0FBTyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQW5DLENBQW1DLENBQUUsRUFDcEQsS0FBSyxFQUFFLENBQ1AsRUFBQTtRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELHVGQUF1Rjs7Ozs7O0lBQ3ZGLDZDQUFZOzs7OztJQUFaLFVBQWEsSUFBWTtRQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlCLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDL0M7YUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxvQkFBb0IsQ0FBQyx1QkFBcUIsSUFBSSxzQkFBbUIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCx1REFBdUQ7Ozs7OztJQUN2RCwwQ0FBUzs7Ozs7SUFBVCxVQUFVLEdBQVc7UUFDcEIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtJQUNGLENBQUM7O2dCQTFFRCxVQUFVOzs7O2dCQUpGLFNBQVM7Z0JBWTJCLE1BQU0sdUJBQTlDLE1BQU0sU0FBQyxXQUFXOzZDQUNsQixRQUFRLFlBQUksTUFBTSxTQUFDLFVBQVU7Z0RBQzdCLFFBQVEsWUFBSSxNQUFNLFNBQUMsUUFBUTs7SUFpRWhDLDZCQUFDO0NBQUEsQUEzRUQsSUEyRUM7U0ExRVksc0JBQXNCOzs7Ozs7SUFFbEMsMENBQTJCOzs7OztJQUMzQiw0Q0FBbUQ7Ozs7O0lBQ25ELG1EQUFzRTs7Ozs7SUFFMUQsd0NBQXlCOzs7OztJQUNsQyw0Q0FBK0M7Ozs7O0lBQy9DLDJDQUEyRDs7Ozs7SUFDM0QsMkNBQW9EOzs7Ozs7Ozs7O0FBbUV4RCxNQUFNLFVBQVUsa0NBQWtDLENBQUMsY0FBc0MsRUFBRSxNQUFpQixFQUMzRyxVQUFrQixFQUFFLFNBQWtCLEVBQUUsUUFBYztJQUN0RCxPQUFPLGNBQWMsSUFBSSxJQUFJLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUcsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQy9GLENBQUM7O0FBRUQsTUFBTSxLQUFPLDBCQUEwQixHQUFHO0lBQ3pDLE9BQU8sRUFBRSxzQkFBc0I7SUFDL0IsSUFBSSxFQUFFLENBQUUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxtQkFBQSxXQUFXLEVBQXVCLENBQUM7UUFDL0csQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLG1CQUFBLFVBQVUsRUFBMEIsQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxtQkFBQSxRQUFRLEVBQXVCLENBQUM7S0FDMUc7SUFDRCxVQUFVLEVBQUUsa0NBQWtDO0NBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwsIFBMQVRGT1JNX0lELCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2YsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAsIHNoYXJlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTdmdMb2FkZXIgfSBmcm9tICcuL3N2Zy1sb2FkZXInO1xuXG5leHBvcnQgY29uc3QgU0VSVkVSX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdTRVJWRVJfVVJMJyk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIHtcblxuXHRwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudDtcblx0cHJpdmF0ZSBpY29uc0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIFNWR0VsZW1lbnQ+KCk7XG5cdHByaXZhdGUgaWNvbnNMb2FkaW5nQnlVcmwgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxTVkdFbGVtZW50Pj4oKTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGxvYWRlcjogU3ZnTG9hZGVyLFxuXHRcdFx0XHRASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcblx0XHRcdFx0QE9wdGlvbmFsKCkgQEluamVjdChTRVJWRVJfVVJMKSBwcm90ZWN0ZWQgc2VydmVyVXJsOiBzdHJpbmcsXG5cdFx0XHRcdEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnkpIHtcblx0XHRcdHRoaXMuZG9jdW1lbnQgPSB0aGlzLl9kb2N1bWVudDtcblx0fVxuXG5cdC8qKiBBZGQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGJ5IHBhc3NpbmcgYSBuYW1lIGFuZCB0aGUgU1ZHLiAqL1xuXHRhZGRTdmcobmFtZTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpIHtcblx0XHRpZiAoIXRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRkaXYuaW5uZXJIVE1MID0gZGF0YTtcblx0XHRcdGNvbnN0IHN2ZyA9IDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5zZXQobmFtZSwgc3ZnKTtcblx0XHR9XG5cdH1cblxuXHQvKiogTG9hZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgZnJvbSBhIFVSTC4gKi9cblx0bG9hZFN2Zyh1cmw6IHN0cmluZywgbmFtZTogc3RyaW5nID0gdXJsKSA6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuXG5cdFx0Ly8gbm90IHN1cmUgaWYgdGhlcmUgc2hvdWxkIGJlIGEgcG9zc2liaWxpdHkgdG8gdXNlIG5hbWUgZm9yIHNlcnZlciB1c2FnZVxuXHRcdC8vIHNvIG92ZXJyaWRpbmcgaXQgZm9yIG5vdyBpZiBwcm92aWRlZFxuXHRcdC8vIG1heWJlIHNob3VsZCBzZXBhcmF0ZSBmdW5jdGlvbmFsaXR5IGZvciB1cmwgYW5kIG5hbWUgdXNlLWNhc2VzXG5cdFx0aWYgKHRoaXMuc2VydmVyVXJsICYmIHVybC5tYXRjaCgvXihodHRwKHMpPyk6LykgPT09IG51bGwpIHtcblx0XHRcdHVybCA9IHRoaXMuc2VydmVyVXJsICsgdXJsO1xuXHRcdFx0bmFtZSA9IHVybDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIG9ic2VydmFibGVPZih0aGlzLmljb25zQnlVcmwuZ2V0KG5hbWUpKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5nZXQobmFtZSk7XG5cdFx0fVxuXHRcdGNvbnN0IG8gPSA8T2JzZXJ2YWJsZTxTVkdFbGVtZW50Pj4gdGhpcy5sb2FkZXIuZ2V0U3ZnKHVybCkucGlwZShcblx0XHRcdG1hcChzdmcgPT4ge1xuXHRcdFx0XHRjb25zdCBkaXYgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0XHRkaXYuaW5uZXJIVE1MID0gc3ZnO1xuXHRcdFx0XHRyZXR1cm4gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0fSksXG5cdFx0XHR0YXAgKHN2ZyA9PiB0aGlzLmljb25zQnlVcmwuc2V0KG5hbWUsIHN2ZykgKSxcblx0XHRcdGNhdGNoRXJyb3IoZXJyID0+IHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyKTtcblx0XHRcdH0pLFxuXHRcdFx0ZmluYWxpemUoKCkgPT4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5kZWxldGUobmFtZSkgKSxcblx0XHRcdHNoYXJlKClcblx0XHQpO1xuXG5cdFx0dGhpcy5pY29uc0xvYWRpbmdCeVVybC5zZXQobmFtZSwgbyk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHQvKiogR2V0IGxvYWRlZCBTVkcgZnJvbSByZWdpc3RyeSBieSBuYW1lLiAoYWxzbyB3b3JrcyBieSB1cmwgYmVjYXVzZSBvZiBibGVuZGVkIG1hcCkgKi9cblx0Z2V0U3ZnQnlOYW1lKG5hbWU6IHN0cmluZykgOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIG9ic2VydmFibGVPZih0aGlzLmljb25zQnlVcmwuZ2V0KG5hbWUpKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5nZXQobmFtZSk7XG5cdFx0fVxuXHRcdHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihgTm8gc3ZnIHdpdGggbmFtZSAnJHtuYW1lfScgaGFzIGJlZW4gbG9hZGVkYCk7XG5cdH1cblxuXHQvKiogUmVtb3ZlIGEgU1ZHIGZyb20gdGhlIHJlZ2lzdHJ5IGJ5IFVSTCAob3IgbmFtZSkuICovXG5cdHVubG9hZFN2Zyh1cmw6IHN0cmluZykge1xuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5kZWxldGUodXJsKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUlkocGFyZW50UmVnaXN0cnk6IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsIGxvYWRlcjogU3ZnTG9hZGVyLFxuXHRwbGF0Zm9ybUlkOiBPYmplY3QsIHNlcnZlclVybD86IHN0cmluZywgZG9jdW1lbnQ/OiBhbnkpIHtcblx0cmV0dXJuIHBhcmVudFJlZ2lzdHJ5IHx8IG5ldyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlKGxvYWRlciwgcGxhdGZvcm1JZCwgIHNlcnZlclVybCwgZG9jdW1lbnQpO1xufVxuXG5leHBvcnQgY29uc3QgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgPSB7XG5cdHByb3ZpZGU6IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsXG5cdGRlcHM6IFsgW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZV0sIFN2Z0xvYWRlciwgW1BMQVRGT1JNX0lEIGFzIEluamVjdGlvblRva2VuPGFueT5dLFxuXHRcdFx0W25ldyBPcHRpb25hbCgpLCBTRVJWRVJfVVJMIGFzIEluamVjdGlvblRva2VuPHN0cmluZz5dLCBbbmV3IE9wdGlvbmFsKCksIERPQ1VNRU5UIGFzIEluamVjdGlvblRva2VuPGFueT5dXG5cdF0sXG5cdHVzZUZhY3Rvcnk6IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUllcbn07XG4iXX0=

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

import { Inject, Injectable, InjectionToken, Optional, SkipSelf, PLATFORM_ID, Component, ElementRef, Input, KeyValueDiffers, Renderer2, NgModule } from '@angular/core';
import { Injectable, Inject, InjectionToken, Optional, PLATFORM_ID, SkipSelf, Component, ElementRef, Input, KeyValueDiffers, Renderer2, NgModule } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { of, throwError } from 'rxjs';
import { map, tap, catchError, finalize, share } from 'rxjs/operators';
import { catchError, finalize, map, share, tap } from 'rxjs/operators';
import { DOCUMENT, CommonModule } from '@angular/common';

@@ -11,2 +11,35 @@

*/
/**
* @abstract
*/
class SvgLoader {
}
class SvgHttpLoader extends SvgLoader {
/**
* @param {?} http
*/
constructor(http) {
super();
this.http = http;
}
/**
* @param {?} url
* @return {?}
*/
getSvg(url) {
return this.http.get(url, { responseType: 'text' });
}
}
SvgHttpLoader.decorators = [
{ type: Injectable }
];
/** @nocollapse */
SvgHttpLoader.ctorParameters = () => [
{ type: HttpClient }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */

@@ -16,3 +49,3 @@ const SERVER_URL = new InjectionToken('SERVER_URL');

/**
* @param {?} http
* @param {?} loader
* @param {?} platformId

@@ -22,4 +55,4 @@ * @param {?} serverUrl

*/
constructor(http, platformId, serverUrl, _document) {
this.http = http;
constructor(loader, platformId, serverUrl, _document) {
this.loader = loader;
this.platformId = platformId;

@@ -69,3 +102,3 @@ this.serverUrl = serverUrl;

/** @type {?} */
const o = (/** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(svg => {
const o = (/** @type {?} */ (this.loader.getSvg(url).pipe(map(svg => {
/** @type {?} */

@@ -112,3 +145,3 @@ const div = this.document.createElement('DIV');

SvgIconRegistryService.ctorParameters = () => [
{ type: HttpClient },
{ type: SvgLoader },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },

@@ -120,3 +153,3 @@ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [SERVER_URL,] }] },

* @param {?} parentRegistry
* @param {?} http
* @param {?} loader
* @param {?} platformId

@@ -127,4 +160,4 @@ * @param {?=} serverUrl

*/
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(http, platformId, serverUrl, document);
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, loader, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(loader, platformId, serverUrl, document);
}

@@ -134,3 +167,3 @@ /** @type {?} */

provide: SvgIconRegistryService,
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient, [(/** @type {?} */ (PLATFORM_ID))],
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], SvgLoader, [(/** @type {?} */ (PLATFORM_ID))],
[new Optional(), (/** @type {?} */ (SERVER_URL))], [new Optional(), (/** @type {?} */ (DOCUMENT))]

@@ -337,2 +370,15 @@ ],

class AngularSvgIconModule {
/**
* @param {?=} config
* @return {?}
*/
static forRoot(config = {}) {
return {
ngModule: AngularSvgIconModule,
providers: [
config.loader || { provide: SvgLoader, useClass: SvgHttpLoader },
SVG_ICON_REGISTRY_PROVIDER
]
};
}
}

@@ -345,3 +391,3 @@ AngularSvgIconModule.decorators = [

declarations: [SvgIconComponent],
providers: [SVG_ICON_REGISTRY_PROVIDER],
providers: [SVG_ICON_REGISTRY_PROVIDER, { provide: SvgLoader, useClass: SvgHttpLoader }],
exports: [SvgIconComponent]

@@ -361,4 +407,4 @@ },] }

export { AngularSvgIconModule, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent };
export { AngularSvgIconModule, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent, SvgHttpLoader as ɵb, SvgLoader as ɵa };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyIsIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24uY29tcG9uZW50LnRzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9hbmd1bGFyLXN2Zy1pY29uLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YXAsIGNhdGNoRXJyb3IsIGZpbmFsaXplLCBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IFNFUlZFUl9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignU0VSVkVSX1VSTCcpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB7XG5cblx0cHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQ7XG5cdHByaXZhdGUgaWNvbnNCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBTVkdFbGVtZW50PigpO1xuXHRwcml2YXRlIGljb25zTG9hZGluZ0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8U1ZHRWxlbWVudD4+KCk7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuXHRcdFx0XHRASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcblx0XHRcdFx0QE9wdGlvbmFsKCkgQEluamVjdChTRVJWRVJfVVJMKSBwcm90ZWN0ZWQgc2VydmVyVXJsOiBzdHJpbmcsXG5cdFx0XHRcdEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnkpIHtcblx0XHRcdHRoaXMuZG9jdW1lbnQgPSB0aGlzLl9kb2N1bWVudDtcblx0fVxuXG5cdC8qKiBBZGQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGJ5IHBhc3NpbmcgYSBuYW1lIGFuZCB0aGUgU1ZHLiAqL1xuXHRhZGRTdmcobmFtZTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpIHtcblx0XHRpZiAoIXRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRkaXYuaW5uZXJIVE1MID0gZGF0YTtcblx0XHRcdGNvbnN0IHN2ZyA9IDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5zZXQobmFtZSwgc3ZnKTtcblx0XHR9XG5cdH1cblxuXHQvKiogTG9hZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgZnJvbSBhIFVSTC4gKi9cblx0bG9hZFN2Zyh1cmw6IHN0cmluZywgbmFtZTogc3RyaW5nID0gdXJsKSA6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuXG5cdFx0Ly8gbm90IHN1cmUgaWYgdGhlcmUgc2hvdWxkIGJlIGEgcG9zc2liaWxpdHkgdG8gdXNlIG5hbWUgZm9yIHNlcnZlciB1c2FnZVxuXHRcdC8vIHNvIG92ZXJyaWRpbmcgaXQgZm9yIG5vdyBpZiBwcm92aWRlZFxuXHRcdC8vIG1heWJlIHNob3VsZCBzZXBhcmF0ZSBmdW5jdGlvbmFsaXR5IGZvciB1cmwgYW5kIG5hbWUgdXNlLWNhc2VzXG5cdFx0aWYgKHRoaXMuc2VydmVyVXJsICYmIHVybC5tYXRjaCgvXihodHRwKHMpPyk6LykgPT09IG51bGwpIHtcblx0XHRcdHVybCA9IHRoaXMuc2VydmVyVXJsICsgdXJsO1xuXHRcdFx0bmFtZSA9IHVybDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIG9ic2VydmFibGVPZih0aGlzLmljb25zQnlVcmwuZ2V0KG5hbWUpKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5nZXQobmFtZSk7XG5cdFx0fVxuXHRcdGNvbnN0IG8gPSA8T2JzZXJ2YWJsZTxTVkdFbGVtZW50Pj4gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSkucGlwZShcblx0XHRcdG1hcChzdmcgPT4ge1xuXHRcdFx0XHRjb25zdCBkaXYgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0XHRkaXYuaW5uZXJIVE1MID0gc3ZnO1xuXHRcdFx0XHRyZXR1cm4gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0fSksXG5cdFx0XHR0YXAgKHN2ZyA9PiB0aGlzLmljb25zQnlVcmwuc2V0KG5hbWUsIHN2ZykgKSxcblx0XHRcdGNhdGNoRXJyb3IoZXJyID0+IHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyKTtcblx0XHRcdH0pLFxuXHRcdFx0ZmluYWxpemUoKCkgPT4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5kZWxldGUobmFtZSkgKSxcblx0XHRcdHNoYXJlKClcblx0XHQpO1xuXG5cdFx0dGhpcy5pY29uc0xvYWRpbmdCeVVybC5zZXQobmFtZSwgbyk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHQvKiogR2V0IGxvYWRlZCBTVkcgZnJvbSByZWdpc3RyeSBieSBuYW1lLiAoYWxzbyB3b3JrcyBieSB1cmwgYmVjYXVzZSBvZiBibGVuZGVkIG1hcCkgKi9cblx0Z2V0U3ZnQnlOYW1lKG5hbWU6IHN0cmluZykgOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIG9ic2VydmFibGVPZih0aGlzLmljb25zQnlVcmwuZ2V0KG5hbWUpKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5nZXQobmFtZSk7XG5cdFx0fVxuXHRcdHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihgTm8gc3ZnIHdpdGggbmFtZSAnJHtuYW1lfScgaGFzIGJlZW4gbG9hZGVkYCk7XG5cdH1cblxuXHQvKiogUmVtb3ZlIGEgU1ZHIGZyb20gdGhlIHJlZ2lzdHJ5IGJ5IFVSTCAob3IgbmFtZSkuICovXG5cdHVubG9hZFN2Zyh1cmw6IHN0cmluZykge1xuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5kZWxldGUodXJsKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUlkocGFyZW50UmVnaXN0cnk6IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsIGh0dHA6IEh0dHBDbGllbnQsXG5cdHBsYXRmb3JtSWQ6IE9iamVjdCwgc2VydmVyVXJsPzogc3RyaW5nLCBkb2N1bWVudD86IGFueSkge1xuXHRyZXR1cm4gcGFyZW50UmVnaXN0cnkgfHwgbmV3IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UoaHR0cCwgcGxhdGZvcm1JZCwgIHNlcnZlclVybCwgZG9jdW1lbnQpO1xufVxuXG5leHBvcnQgY29uc3QgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgPSB7XG5cdHByb3ZpZGU6IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsXG5cdGRlcHM6IFsgW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZV0sIEh0dHBDbGllbnQsIFtQTEFURk9STV9JRCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XSxcblx0XHRcdFtuZXcgT3B0aW9uYWwoKSwgU0VSVkVSX1VSTCBhcyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+XSwgW25ldyBPcHRpb25hbCgpLCBET0NVTUVOVCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XVxuXHRdLFxuXHR1c2VGYWN0b3J5OiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZXG59O1xuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsXG5cdEtleVZhbHVlQ2hhbmdlUmVjb3JkLCBLZXlWYWx1ZUNoYW5nZXMsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlcnMsXG5cdE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzdmctaWNvbicsXG5cdHN0eWxlczogWyBgOmhvc3QgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1gIF0sXG5cdHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5cbmV4cG9ydCBjbGFzcyBTdmdJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgRG9DaGVjayB7XG5cdEBJbnB1dCgpIHNyYzogc3RyaW5nO1xuXHRASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cdEBJbnB1dCgpIHN0cmV0Y2ggPSBmYWxzZTtcblxuXHQvLyBBZGFwdGVkIGZyb20gbmdTdHlsZVxuXHRASW5wdXQoKVxuXHRzZXQgc3ZnU3R5bGUodjoge1trZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG5cdFx0dGhpcy5fc3ZnU3R5bGUgPSB2O1xuXHRcdGlmICghdGhpcy5kaWZmZXIgJiYgdikge1xuXHRcdFx0dGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZCh2KS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN2ZzogU1ZHRWxlbWVudDtcblx0cHJpdmF0ZSBpY25TdWI6IFN1YnNjcmlwdGlvbjtcblx0cHJpdmF0ZSBkaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgc3RyaW5nfG51bWJlcj47XG5cdHByaXZhdGUgX3N2Z1N0eWxlOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG5cdFx0cHJpdmF0ZSBkaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuXHRcdHByaXZhdGUgaWNvblJlZzogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSkge1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5pbml0KCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLmRlc3Ryb3koKTtcblx0fVxuXG5cdG5nT25DaGFuZ2VzKGNoYW5nZVJlY29yZDoge1trZXk6IHN0cmluZ106IFNpbXBsZUNoYW5nZX0pIHtcblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzcmMnXSB8fCBjaGFuZ2VSZWNvcmRbJ25hbWUnXSkge1xuXHRcdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRcdHRoaXMuZGVzdHJveSgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5pbml0KCk7XG5cdFx0fVxuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3N0cmV0Y2gnXSkge1xuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdEb0NoZWNrKCkge1xuXHRcdGlmICh0aGlzLnN2ZyAmJiB0aGlzLmRpZmZlcikge1xuXHRcdFx0Y29uc3QgY2hhbmdlcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5fc3ZnU3R5bGUpO1xuXHRcdFx0aWYgKGNoYW5nZXMpIHtcblx0XHRcdFx0dGhpcy5hcHBseUNoYW5nZXMoY2hhbmdlcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbml0KCkge1xuXHRcdGlmICh0aGlzLm5hbWUpIHtcblx0XHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmdldFN2Z0J5TmFtZSh0aGlzLm5hbWUpLnN1YnNjcmliZSh0aGlzLmluaXRTdmcuYmluZCh0aGlzKSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmxvYWRTdmcodGhpcy5zcmMpLnN1YnNjcmliZSh0aGlzLmluaXRTdmcuYmluZCh0aGlzKSk7XG5cdH1cblxuXHRwcml2YXRlIGluaXRTdmcoc3ZnOiBTVkdFbGVtZW50KSA6IHZvaWQge1xuXHRcdHRoaXMuc2V0U3ZnKHN2Zyk7XG5cdFx0dGhpcy5yZXNldERpZmZlcigpO1xuXHR9XG5cblx0cHJpdmF0ZSBkZXN0cm95KCkge1xuXHRcdHRoaXMuc3ZnID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuZGlmZmVyID0gdW5kZWZpbmVkO1xuXHRcdGlmICh0aGlzLmljblN1Yikge1xuXHRcdFx0dGhpcy5pY25TdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc2V0RGlmZmVyKCkge1xuXHRcdGlmICh0aGlzLl9zdmdTdHlsZSAmJiAhdGhpcy5kaWZmZXIpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fc3ZnU3R5bGUpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc2V0U3ZnKHN2ZzogU1ZHRWxlbWVudCkge1xuXHRcdGlmIChzdmcpIHtcblx0XHRcdHRoaXMuc3ZnID0gc3ZnO1xuXHRcdFx0Y29uc3QgaWNvbiA9IDxTVkdFbGVtZW50PnN2Zy5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0XHRjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdGVsZW0uaW5uZXJIVE1MID0gJyc7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGVsZW0sIGljb24pO1xuXG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0eWxpemUoKSB7XG5cdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRpZiAodGhpcy5zdHJldGNoID09PSB0cnVlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnN0cmV0Y2ggPT09IGZhbHNlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFwcGx5Q2hhbmdlcyhjaGFuZ2VzOiBLZXlWYWx1ZUNoYW5nZXM8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikge1xuXHRcdGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgbnVsbCkpO1xuXHRcdGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbSgocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0U3R5bGUobmFtZUFuZFVuaXQ6IHN0cmluZywgdmFsdWU6IHN0cmluZ3xudW1iZXJ8bnVsbHx1bmRlZmluZWQpIHtcblx0XHRjb25zdCBbbmFtZSwgdW5pdF0gPSBuYW1lQW5kVW5pdC5zcGxpdCgnLicpO1xuXHRcdHZhbHVlID0gdmFsdWUgIT09IG51bGwgJiYgdW5pdCA/IGAke3ZhbHVlfSR7dW5pdH1gIDogdmFsdWU7XG5cdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZShzdmcsIG5hbWUsIHZhbHVlIGFzIHN0cmluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoc3ZnLCBuYW1lKTtcblx0XHR9XG5cdH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5cbmltcG9ydCB7IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICcuL3N2Zy1pY29uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6XHQgIFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogWyBTdmdJY29uQ29tcG9uZW50IF0sXG5cdHByb3ZpZGVyczogICAgWyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiBdLFxuXHRleHBvcnRzOiAgICAgIFsgU3ZnSWNvbkNvbXBvbmVudCBdXG59KVxuXG5leHBvcnQgY2xhc3MgQW5ndWxhclN2Z0ljb25Nb2R1bGUge31cbiJdLCJuYW1lcyI6WyJvYnNlcnZhYmxlT2YiLCJvYnNlcnZhYmxlVGhyb3dFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBU0EsTUFBYSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQVMsWUFBWSxDQUFDO0FBR2xFLE1BQWEsc0JBQXNCOzs7Ozs7O0lBTWxDLFlBQW9CLElBQWdCLEVBQ0osVUFBa0IsRUFDTCxTQUFpQixFQUNyQixTQUFjO1FBSG5DLFNBQUksR0FBSixJQUFJLENBQVk7UUFDSixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBTi9DLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUMzQyxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztRQU1wRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7S0FDaEM7Ozs7Ozs7SUFHRCxNQUFNLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFOztrQkFDekIsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUM5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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWxvYWRlci50cyIsIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyIsIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24uY29tcG9uZW50LnRzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9hbmd1bGFyLXN2Zy1pY29uLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdmdMb2FkZXIge1xyXG5cdGFic3RyYWN0IGdldFN2Zyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPjtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3ZnSHR0cExvYWRlciBleHRlbmRzIFN2Z0xvYWRlciB7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHR9XHJcblxyXG5cdGdldFN2Zyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XHJcblx0fVxyXG59XHJcbiIsImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBQTEFURk9STV9JRCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwLCBzaGFyZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3ZnTG9hZGVyIH0gZnJvbSAnLi9zdmctbG9hZGVyJztcblxuZXhwb3J0IGNvbnN0IFNFUlZFUl9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignU0VSVkVSX1VSTCcpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB7XG5cblx0cHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQ7XG5cdHByaXZhdGUgaWNvbnNCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBTVkdFbGVtZW50PigpO1xuXHRwcml2YXRlIGljb25zTG9hZGluZ0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8U1ZHRWxlbWVudD4+KCk7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBsb2FkZXI6IFN2Z0xvYWRlcixcblx0XHRcdFx0QEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXG5cdFx0XHRcdEBPcHRpb25hbCgpIEBJbmplY3QoU0VSVkVSX1VSTCkgcHJvdGVjdGVkIHNlcnZlclVybDogc3RyaW5nLFxuXHRcdFx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55KSB7XG5cdFx0XHR0aGlzLmRvY3VtZW50ID0gdGhpcy5fZG9jdW1lbnQ7XG5cdH1cblxuXHQvKiogQWRkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBieSBwYXNzaW5nIGEgbmFtZSBhbmQgdGhlIFNWRy4gKi9cblx0YWRkU3ZnKG5hbWU6IHN0cmluZywgZGF0YTogc3RyaW5nKSB7XG5cdFx0aWYgKCF0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRjb25zdCBkaXYgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0ZGl2LmlubmVySFRNTCA9IGRhdGE7XG5cdFx0XHRjb25zdCBzdmcgPSA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuc2V0KG5hbWUsIHN2Zyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIExvYWQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGZyb20gYSBVUkwuICovXG5cdGxvYWRTdmcodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZyA9IHVybCkgOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcblxuXHRcdC8vIG5vdCBzdXJlIGlmIHRoZXJlIHNob3VsZCBiZSBhIHBvc3NpYmlsaXR5IHRvIHVzZSBuYW1lIGZvciBzZXJ2ZXIgdXNhZ2Vcblx0XHQvLyBzbyBvdmVycmlkaW5nIGl0IGZvciBub3cgaWYgcHJvdmlkZWRcblx0XHQvLyBtYXliZSBzaG91bGQgc2VwYXJhdGUgZnVuY3Rpb25hbGl0eSBmb3IgdXJsIGFuZCBuYW1lIHVzZS1jYXNlc1xuXHRcdGlmICh0aGlzLnNlcnZlclVybCAmJiB1cmwubWF0Y2goL14oaHR0cChzKT8pOi8pID09PSBudWxsKSB7XG5cdFx0XHR1cmwgPSB0aGlzLnNlcnZlclVybCArIHVybDtcblx0XHRcdG5hbWUgPSB1cmw7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5pY29uc0J5VXJsLmdldChuYW1lKSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmljb25zTG9hZGluZ0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZ2V0KG5hbWUpO1xuXHRcdH1cblx0XHRjb25zdCBvID0gPE9ic2VydmFibGU8U1ZHRWxlbWVudD4+IHRoaXMubG9hZGVyLmdldFN2Zyh1cmwpLnBpcGUoXG5cdFx0XHRtYXAoc3ZnID0+IHtcblx0XHRcdFx0Y29uc3QgZGl2ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdFx0ZGl2LmlubmVySFRNTCA9IHN2Zztcblx0XHRcdFx0cmV0dXJuIDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdH0pLFxuXHRcdFx0dGFwIChzdmcgPT4gdGhpcy5pY29uc0J5VXJsLnNldChuYW1lLCBzdmcpICksXG5cdFx0XHRjYXRjaEVycm9yKGVyciA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyKTtcblx0XHRcdFx0cmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycik7XG5cdFx0XHR9KSxcblx0XHRcdGZpbmFsaXplKCgpID0+IHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZGVsZXRlKG5hbWUpICksXG5cdFx0XHRzaGFyZSgpXG5cdFx0KTtcblxuXHRcdHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuc2V0KG5hbWUsIG8pO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0LyoqIEdldCBsb2FkZWQgU1ZHIGZyb20gcmVnaXN0cnkgYnkgbmFtZS4gKGFsc28gd29ya3MgYnkgdXJsIGJlY2F1c2Ugb2YgYmxlbmRlZCBtYXApICovXG5cdGdldFN2Z0J5TmFtZShuYW1lOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5pY29uc0J5VXJsLmdldChuYW1lKSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmljb25zTG9hZGluZ0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZ2V0KG5hbWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoYE5vIHN2ZyB3aXRoIG5hbWUgJyR7bmFtZX0nIGhhcyBiZWVuIGxvYWRlZGApO1xuXHR9XG5cblx0LyoqIFJlbW92ZSBhIFNWRyBmcm9tIHRoZSByZWdpc3RyeSBieSBVUkwgKG9yIG5hbWUpLiAqL1xuXHR1bmxvYWRTdmcodXJsOiBzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuZGVsZXRlKHVybCk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZKHBhcmVudFJlZ2lzdHJ5OiBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLCBsb2FkZXI6IFN2Z0xvYWRlcixcblx0cGxhdGZvcm1JZDogT2JqZWN0LCBzZXJ2ZXJVcmw/OiBzdHJpbmcsIGRvY3VtZW50PzogYW55KSB7XG5cdHJldHVybiBwYXJlbnRSZWdpc3RyeSB8fCBuZXcgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZShsb2FkZXIsIHBsYXRmb3JtSWQsICBzZXJ2ZXJVcmwsIGRvY3VtZW50KTtcbn1cblxuZXhwb3J0IGNvbnN0IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSID0ge1xuXHRwcm92aWRlOiBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLFxuXHRkZXBzOiBbIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2VdLCBTdmdMb2FkZXIsIFtQTEFURk9STV9JRCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XSxcblx0XHRcdFtuZXcgT3B0aW9uYWwoKSwgU0VSVkVSX1VSTCBhcyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+XSwgW25ldyBPcHRpb25hbCgpLCBET0NVTUVOVCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XVxuXHRdLFxuXHR1c2VGYWN0b3J5OiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZXG59O1xuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsXG5cdEtleVZhbHVlQ2hhbmdlUmVjb3JkLCBLZXlWYWx1ZUNoYW5nZXMsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlcnMsXG5cdE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzdmctaWNvbicsXG5cdHN0eWxlczogWyBgOmhvc3QgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1gIF0sXG5cdHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5cbmV4cG9ydCBjbGFzcyBTdmdJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgRG9DaGVjayB7XG5cdEBJbnB1dCgpIHNyYzogc3RyaW5nO1xuXHRASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cdEBJbnB1dCgpIHN0cmV0Y2ggPSBmYWxzZTtcblxuXHQvLyBBZGFwdGVkIGZyb20gbmdTdHlsZVxuXHRASW5wdXQoKVxuXHRzZXQgc3ZnU3R5bGUodjoge1trZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG5cdFx0dGhpcy5fc3ZnU3R5bGUgPSB2O1xuXHRcdGlmICghdGhpcy5kaWZmZXIgJiYgdikge1xuXHRcdFx0dGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZCh2KS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN2ZzogU1ZHRWxlbWVudDtcblx0cHJpdmF0ZSBpY25TdWI6IFN1YnNjcmlwdGlvbjtcblx0cHJpdmF0ZSBkaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgc3RyaW5nfG51bWJlcj47XG5cdHByaXZhdGUgX3N2Z1N0eWxlOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG5cdFx0cHJpdmF0ZSBkaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuXHRcdHByaXZhdGUgaWNvblJlZzogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSkge1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5pbml0KCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLmRlc3Ryb3koKTtcblx0fVxuXG5cdG5nT25DaGFuZ2VzKGNoYW5nZVJlY29yZDoge1trZXk6IHN0cmluZ106IFNpbXBsZUNoYW5nZX0pIHtcblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzcmMnXSB8fCBjaGFuZ2VSZWNvcmRbJ25hbWUnXSkge1xuXHRcdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRcdHRoaXMuZGVzdHJveSgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5pbml0KCk7XG5cdFx0fVxuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3N0cmV0Y2gnXSkge1xuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdEb0NoZWNrKCkge1xuXHRcdGlmICh0aGlzLnN2ZyAmJiB0aGlzLmRpZmZlcikge1xuXHRcdFx0Y29uc3QgY2hhbmdlcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5fc3ZnU3R5bGUpO1xuXHRcdFx0aWYgKGNoYW5nZXMpIHtcblx0XHRcdFx0dGhpcy5hcHBseUNoYW5nZXMoY2hhbmdlcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbml0KCkge1xuXHRcdGlmICh0aGlzLm5hbWUpIHtcblx0XHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmdldFN2Z0J5TmFtZSh0aGlzLm5hbWUpLnN1YnNjcmliZSh0aGlzLmluaXRTdmcuYmluZCh0aGlzKSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmxvYWRTdmcodGhpcy5zcmMpLnN1YnNjcmliZSh0aGlzLmluaXRTdmcuYmluZCh0aGlzKSk7XG5cdH1cblxuXHRwcml2YXRlIGluaXRTdmcoc3ZnOiBTVkdFbGVtZW50KSA6IHZvaWQge1xuXHRcdHRoaXMuc2V0U3ZnKHN2Zyk7XG5cdFx0dGhpcy5yZXNldERpZmZlcigpO1xuXHR9XG5cblx0cHJpdmF0ZSBkZXN0cm95KCkge1xuXHRcdHRoaXMuc3ZnID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuZGlmZmVyID0gdW5kZWZpbmVkO1xuXHRcdGlmICh0aGlzLmljblN1Yikge1xuXHRcdFx0dGhpcy5pY25TdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc2V0RGlmZmVyKCkge1xuXHRcdGlmICh0aGlzLl9zdmdTdHlsZSAmJiAhdGhpcy5kaWZmZXIpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fc3ZnU3R5bGUpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc2V0U3ZnKHN2ZzogU1ZHRWxlbWVudCkge1xuXHRcdGlmIChzdmcpIHtcblx0XHRcdHRoaXMuc3ZnID0gc3ZnO1xuXHRcdFx0Y29uc3QgaWNvbiA9IDxTVkdFbGVtZW50PnN2Zy5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0XHRjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdGVsZW0uaW5uZXJIVE1MID0gJyc7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGVsZW0sIGljb24pO1xuXG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0eWxpemUoKSB7XG5cdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRpZiAodGhpcy5zdHJldGNoID09PSB0cnVlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnN0cmV0Y2ggPT09IGZhbHNlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFwcGx5Q2hhbmdlcyhjaGFuZ2VzOiBLZXlWYWx1ZUNoYW5nZXM8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikge1xuXHRcdGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgbnVsbCkpO1xuXHRcdGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbSgocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0U3R5bGUobmFtZUFuZFVuaXQ6IHN0cmluZywgdmFsdWU6IHN0cmluZ3xudW1iZXJ8bnVsbHx1bmRlZmluZWQpIHtcblx0XHRjb25zdCBbbmFtZSwgdW5pdF0gPSBuYW1lQW5kVW5pdC5zcGxpdCgnLicpO1xuXHRcdHZhbHVlID0gdmFsdWUgIT09IG51bGwgJiYgdW5pdCA/IGAke3ZhbHVlfSR7dW5pdH1gIDogdmFsdWU7XG5cdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZShzdmcsIG5hbWUsIHZhbHVlIGFzIHN0cmluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoc3ZnLCBuYW1lKTtcblx0XHR9XG5cdH1cbn1cbiIsImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgfSBmcm9tICcuL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vc3ZnLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFN2Z0h0dHBMb2FkZXIsIFN2Z0xvYWRlciB9IGZyb20gJy4vc3ZnLWxvYWRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhclN2Z0ljb25Db25maWcge1xuXHRsb2FkZXI/OiBQcm92aWRlcjtcbn1cblxuQE5nTW9kdWxlKHtcblx0aW1wb3J0czpcdCAgW1xuXHRcdENvbW1vbk1vZHVsZSxcblx0XSxcblx0ZGVjbGFyYXRpb25zOiBbIFN2Z0ljb25Db21wb25lbnQgXSxcblx0cHJvdmlkZXJzOiAgICBbIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSLCB7IHByb3ZpZGU6IFN2Z0xvYWRlciwgdXNlQ2xhc3M6IFN2Z0h0dHBMb2FkZXIgfSBdLFxuXHRleHBvcnRzOiAgICAgIFsgU3ZnSWNvbkNvbXBvbmVudCBdXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJTdmdJY29uTW9kdWxlIHtcblxuXHRzdGF0aWMgZm9yUm9vdChjb25maWc6IEFuZ3VsYXJTdmdJY29uQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0bmdNb2R1bGU6IEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuXHRcdFx0cHJvdmlkZXJzOiBbXG5cdFx0XHRcdGNvbmZpZy5sb2FkZXIgfHwgeyBwcm92aWRlOiBTdmdMb2FkZXIsIHVzZUNsYXNzOiBTdmdIdHRwTG9hZGVyIH0sXG5cdFx0XHRcdFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSXG5cdFx0XHRdXG5cdFx0fVxuXHR9XG59XG4iXSwibmFtZXMiOlsib2JzZXJ2YWJsZU9mIiwib2JzZXJ2YWJsZVRocm93RXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQTs7O0FBR0EsTUFBc0IsU0FBUztDQUU5QjtNQUdZLGFBQWMsU0FBUSxTQUFTOzs7O0lBRTNDLFlBQW9CLElBQWdCO1FBQ25DLEtBQUssRUFBRSxDQUFDO1FBRFcsU0FBSSxHQUFKLElBQUksQ0FBWTtLQUVuQzs7Ozs7SUFFRCxNQUFNLENBQUMsR0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQ3BEOzs7WUFURCxVQUFVOzs7O1lBTkYsVUFBVTs7Ozs7OztBQ0ZuQjtBQU9BLE1BQWEsVUFBVSxHQUFHLElBQUksY0FBYyxDQUFTLFlBQVksQ0FBQztBQUdsRSxNQUFhLHNCQUFzQjs7Ozs7OztJQU1sQyxZQUFvQixNQUFpQixFQUNMLFVBQWtCLEVBQ0wsU0FBaUIsRUFDckIsU0FBYztRQUhuQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ0wsZUFBVSxHQUFWLFVB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

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

import { Inject, Injectable, InjectionToken, Optional, SkipSelf, PLATFORM_ID, Component, ElementRef, Input, KeyValueDiffers, Renderer2, NgModule } from '@angular/core';
import { __extends, __read } from 'tslib';
import { Injectable, Inject, InjectionToken, Optional, PLATFORM_ID, SkipSelf, Component, ElementRef, Input, KeyValueDiffers, Renderer2, NgModule } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { of, throwError } from 'rxjs';
import { map, tap, catchError, finalize, share } from 'rxjs/operators';
import { catchError, finalize, map, share, tap } from 'rxjs/operators';
import { DOCUMENT, CommonModule } from '@angular/common';
import { __read } from 'tslib';

@@ -12,7 +12,50 @@ /**

*/
/**
* @abstract
*/
var /**
* @abstract
*/
SvgLoader = /** @class */ (function () {
function SvgLoader() {
}
return SvgLoader;
}());
var SvgHttpLoader = /** @class */ (function (_super) {
__extends(SvgHttpLoader, _super);
function SvgHttpLoader(http) {
var _this = _super.call(this) || this;
_this.http = http;
return _this;
}
/**
* @param {?} url
* @return {?}
*/
SvgHttpLoader.prototype.getSvg = /**
* @param {?} url
* @return {?}
*/
function (url) {
return this.http.get(url, { responseType: 'text' });
};
SvgHttpLoader.decorators = [
{ type: Injectable }
];
/** @nocollapse */
SvgHttpLoader.ctorParameters = function () { return [
{ type: HttpClient }
]; };
return SvgHttpLoader;
}(SvgLoader));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var SERVER_URL = new InjectionToken('SERVER_URL');
var SvgIconRegistryService = /** @class */ (function () {
function SvgIconRegistryService(http, platformId, serverUrl, _document) {
this.http = http;
function SvgIconRegistryService(loader, platformId, serverUrl, _document) {
this.loader = loader;
this.platformId = platformId;

@@ -78,3 +121,3 @@ this.serverUrl = serverUrl;

/** @type {?} */
var o = (/** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(function (svg) {
var o = (/** @type {?} */ (this.loader.getSvg(url).pipe(map(function (svg) {
/** @type {?} */

@@ -132,3 +175,3 @@ var div = _this.document.createElement('DIV');

SvgIconRegistryService.ctorParameters = function () { return [
{ type: HttpClient },
{ type: SvgLoader },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },

@@ -142,3 +185,3 @@ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [SERVER_URL,] }] },

* @param {?} parentRegistry
* @param {?} http
* @param {?} loader
* @param {?} platformId

@@ -149,4 +192,4 @@ * @param {?=} serverUrl

*/
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(http, platformId, serverUrl, document);
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, loader, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(loader, platformId, serverUrl, document);
}

@@ -156,3 +199,3 @@ /** @type {?} */

provide: SvgIconRegistryService,
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient, [(/** @type {?} */ (PLATFORM_ID))],
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], SvgLoader, [(/** @type {?} */ (PLATFORM_ID))],
[new Optional(), (/** @type {?} */ (SERVER_URL))], [new Optional(), (/** @type {?} */ (DOCUMENT))]

@@ -413,2 +456,20 @@ ],

}
/**
* @param {?=} config
* @return {?}
*/
AngularSvgIconModule.forRoot = /**
* @param {?=} config
* @return {?}
*/
function (config) {
if (config === void 0) { config = {}; }
return {
ngModule: AngularSvgIconModule,
providers: [
config.loader || { provide: SvgLoader, useClass: SvgHttpLoader },
SVG_ICON_REGISTRY_PROVIDER
]
};
};
AngularSvgIconModule.decorators = [

@@ -420,3 +481,3 @@ { type: NgModule, args: [{

declarations: [SvgIconComponent],
providers: [SVG_ICON_REGISTRY_PROVIDER],
providers: [SVG_ICON_REGISTRY_PROVIDER, { provide: SvgLoader, useClass: SvgHttpLoader }],
exports: [SvgIconComponent]

@@ -438,4 +499,4 @@ },] }

export { AngularSvgIconModule, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent };
export { AngularSvgIconModule, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent, SvgHttpLoader as ɵb, SvgLoader as ɵa };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyIsIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24uY29tcG9uZW50LnRzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9hbmd1bGFyLXN2Zy1pY29uLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YXAsIGNhdGNoRXJyb3IsIGZpbmFsaXplLCBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IFNFUlZFUl9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignU0VSVkVSX1VSTCcpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB7XG5cblx0cHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQ7XG5cdHByaXZhdGUgaWNvbnNCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBTVkdFbGVtZW50PigpO1xuXHRwcml2YXRlIGljb25zTG9hZGluZ0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8U1ZHRWxlbWVudD4+KCk7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuXHRcdFx0XHRASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcblx0XHRcdFx0QE9wdGlvbmFsKCkgQEluamVjdChTRVJWRVJfVVJMKSBwcm90ZWN0ZWQgc2VydmVyVXJsOiBzdHJpbmcsXG5cdFx0XHRcdEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnkpIHtcblx0XHRcdHRoaXMuZG9jdW1lbnQgPSB0aGlzLl9kb2N1bWVudDtcblx0fVxuXG5cdC8qKiBBZGQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGJ5IHBhc3NpbmcgYSBuYW1lIGFuZCB0aGUgU1ZHLiAqL1xuXHRhZGRTdmcobmFtZTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpIHtcblx0XHRpZiAoIXRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRkaXYuaW5uZXJIVE1MID0gZGF0YTtcblx0XHRcdGNvbnN0IHN2ZyA9IDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5zZXQobmFtZSwgc3ZnKTtcblx0XHR9XG5cdH1cblxuXHQvKiogTG9hZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgZnJvbSBhIFVSTC4gKi9cblx0bG9hZFN2Zyh1cmw6IHN0cmluZywgbmFtZTogc3RyaW5nID0gdXJsKSA6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuXG5cdFx0Ly8gbm90IHN1cmUgaWYgdGhlcmUgc2hvdWxkIGJlIGEgcG9zc2liaWxpdHkgdG8gdXNlIG5hbWUgZm9yIHNlcnZlciB1c2FnZVxuXHRcdC8vIHNvIG92ZXJyaWRpbmcgaXQgZm9yIG5vdyBpZiBwcm92aWRlZFxuXHRcdC8vIG1heWJlIHNob3VsZCBzZXBhcmF0ZSBmdW5jdGlvbmFsaXR5IGZvciB1cmwgYW5kIG5hbWUgdXNlLWNhc2VzXG5cdFx0aWYgKHRoaXMuc2VydmVyVXJsICYmIHVybC5tYXRjaCgvXihodHRwKHMpPyk6LykgPT09IG51bGwpIHtcblx0XHRcdHVybCA9IHRoaXMuc2VydmVyVXJsICsgdXJsO1xuXHRcdFx0bmFtZSA9IHVybDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIG9ic2VydmFibGVPZih0aGlzLmljb25zQnlVcmwuZ2V0KG5hbWUpKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5nZXQobmFtZSk7XG5cdFx0fVxuXHRcdGNvbnN0IG8gPSA8T2JzZXJ2YWJsZTxTVkdFbGVtZW50Pj4gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSkucGlwZShcblx0XHRcdG1hcChzdmcgPT4ge1xuXHRcdFx0XHRjb25zdCBkaXYgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0XHRkaXYuaW5uZXJIVE1MID0gc3ZnO1xuXHRcdFx0XHRyZXR1cm4gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0fSksXG5cdFx0XHR0YXAgKHN2ZyA9PiB0aGlzLmljb25zQnlVcmwuc2V0KG5hbWUsIHN2ZykgKSxcblx0XHRcdGNhdGNoRXJyb3IoZXJyID0+IHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyKTtcblx0XHRcdH0pLFxuXHRcdFx0ZmluYWxpemUoKCkgPT4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5kZWxldGUobmFtZSkgKSxcblx0XHRcdHNoYXJlKClcblx0XHQpO1xuXG5cdFx0dGhpcy5pY29uc0xvYWRpbmdCeVVybC5zZXQobmFtZSwgbyk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHQvKiogR2V0IGxvYWRlZCBTVkcgZnJvbSByZWdpc3RyeSBieSBuYW1lLiAoYWxzbyB3b3JrcyBieSB1cmwgYmVjYXVzZSBvZiBibGVuZGVkIG1hcCkgKi9cblx0Z2V0U3ZnQnlOYW1lKG5hbWU6IHN0cmluZykgOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIG9ic2VydmFibGVPZih0aGlzLmljb25zQnlVcmwuZ2V0KG5hbWUpKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5nZXQobmFtZSk7XG5cdFx0fVxuXHRcdHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihgTm8gc3ZnIHdpdGggbmFtZSAnJHtuYW1lfScgaGFzIGJlZW4gbG9hZGVkYCk7XG5cdH1cblxuXHQvKiogUmVtb3ZlIGEgU1ZHIGZyb20gdGhlIHJlZ2lzdHJ5IGJ5IFVSTCAob3IgbmFtZSkuICovXG5cdHVubG9hZFN2Zyh1cmw6IHN0cmluZykge1xuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5kZWxldGUodXJsKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUlkocGFyZW50UmVnaXN0cnk6IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsIGh0dHA6IEh0dHBDbGllbnQsXG5cdHBsYXRmb3JtSWQ6IE9iamVjdCwgc2VydmVyVXJsPzogc3RyaW5nLCBkb2N1bWVudD86IGFueSkge1xuXHRyZXR1cm4gcGFyZW50UmVnaXN0cnkgfHwgbmV3IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UoaHR0cCwgcGxhdGZvcm1JZCwgIHNlcnZlclVybCwgZG9jdW1lbnQpO1xufVxuXG5leHBvcnQgY29uc3QgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgPSB7XG5cdHByb3ZpZGU6IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsXG5cdGRlcHM6IFsgW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZV0sIEh0dHBDbGllbnQsIFtQTEFURk9STV9JRCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XSxcblx0XHRcdFtuZXcgT3B0aW9uYWwoKSwgU0VSVkVSX1VSTCBhcyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+XSwgW25ldyBPcHRpb25hbCgpLCBET0NVTUVOVCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XVxuXHRdLFxuXHR1c2VGYWN0b3J5OiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZXG59O1xuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsXG5cdEtleVZhbHVlQ2hhbmdlUmVjb3JkLCBLZXlWYWx1ZUNoYW5nZXMsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlcnMsXG5cdE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzdmctaWNvbicsXG5cdHN0eWxlczogWyBgOmhvc3QgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1gIF0sXG5cdHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5cbmV4cG9ydCBjbGFzcyBTdmdJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgRG9DaGVjayB7XG5cdEBJbnB1dCgpIHNyYzogc3RyaW5nO1xuXHRASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cdEBJbnB1dCgpIHN0cmV0Y2ggPSBmYWxzZTtcblxuXHQvLyBBZGFwdGVkIGZyb20gbmdTdHlsZVxuXHRASW5wdXQoKVxuXHRzZXQgc3ZnU3R5bGUodjoge1trZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG5cdFx0dGhpcy5fc3ZnU3R5bGUgPSB2O1xuXHRcdGlmICghdGhpcy5kaWZmZXIgJiYgdikge1xuXHRcdFx0dGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZCh2KS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN2ZzogU1ZHRWxlbWVudDtcblx0cHJpdmF0ZSBpY25TdWI6IFN1YnNjcmlwdGlvbjtcblx0cHJpdmF0ZSBkaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgc3RyaW5nfG51bWJlcj47XG5cdHByaXZhdGUgX3N2Z1N0eWxlOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG5cdFx0cHJpdmF0ZSBkaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuXHRcdHByaXZhdGUgaWNvblJlZzogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSkge1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5pbml0KCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLmRlc3Ryb3koKTtcblx0fVxuXG5cdG5nT25DaGFuZ2VzKGNoYW5nZVJlY29yZDoge1trZXk6IHN0cmluZ106IFNpbXBsZUNoYW5nZX0pIHtcblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzcmMnXSB8fCBjaGFuZ2VSZWNvcmRbJ25hbWUnXSkge1xuXHRcdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRcdHRoaXMuZGVzdHJveSgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5pbml0KCk7XG5cdFx0fVxuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3N0cmV0Y2gnXSkge1xuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdEb0NoZWNrKCkge1xuXHRcdGlmICh0aGlzLnN2ZyAmJiB0aGlzLmRpZmZlcikge1xuXHRcdFx0Y29uc3QgY2hhbmdlcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5fc3ZnU3R5bGUpO1xuXHRcdFx0aWYgKGNoYW5nZXMpIHtcblx0XHRcdFx0dGhpcy5hcHBseUNoYW5nZXMoY2hhbmdlcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbml0KCkge1xuXHRcdGlmICh0aGlzLm5hbWUpIHtcblx0XHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmdldFN2Z0J5TmFtZSh0aGlzLm5hbWUpLnN1YnNjcmliZSh0aGlzLmluaXRTdmcuYmluZCh0aGlzKSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmxvYWRTdmcodGhpcy5zcmMpLnN1YnNjcmliZSh0aGlzLmluaXRTdmcuYmluZCh0aGlzKSk7XG5cdH1cblxuXHRwcml2YXRlIGluaXRTdmcoc3ZnOiBTVkdFbGVtZW50KSA6IHZvaWQge1xuXHRcdHRoaXMuc2V0U3ZnKHN2Zyk7XG5cdFx0dGhpcy5yZXNldERpZmZlcigpO1xuXHR9XG5cblx0cHJpdmF0ZSBkZXN0cm95KCkge1xuXHRcdHRoaXMuc3ZnID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuZGlmZmVyID0gdW5kZWZpbmVkO1xuXHRcdGlmICh0aGlzLmljblN1Yikge1xuXHRcdFx0dGhpcy5pY25TdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc2V0RGlmZmVyKCkge1xuXHRcdGlmICh0aGlzLl9zdmdTdHlsZSAmJiAhdGhpcy5kaWZmZXIpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fc3ZnU3R5bGUpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc2V0U3ZnKHN2ZzogU1ZHRWxlbWVudCkge1xuXHRcdGlmIChzdmcpIHtcblx0XHRcdHRoaXMuc3ZnID0gc3ZnO1xuXHRcdFx0Y29uc3QgaWNvbiA9IDxTVkdFbGVtZW50PnN2Zy5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0XHRjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdGVsZW0uaW5uZXJIVE1MID0gJyc7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGVsZW0sIGljb24pO1xuXG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0eWxpemUoKSB7XG5cdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRpZiAodGhpcy5zdHJldGNoID09PSB0cnVlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnN0cmV0Y2ggPT09IGZhbHNlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFwcGx5Q2hhbmdlcyhjaGFuZ2VzOiBLZXlWYWx1ZUNoYW5nZXM8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikge1xuXHRcdGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgbnVsbCkpO1xuXHRcdGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbSgocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0U3R5bGUobmFtZUFuZFVuaXQ6IHN0cmluZywgdmFsdWU6IHN0cmluZ3xudW1iZXJ8bnVsbHx1bmRlZmluZWQpIHtcblx0XHRjb25zdCBbbmFtZSwgdW5pdF0gPSBuYW1lQW5kVW5pdC5zcGxpdCgnLicpO1xuXHRcdHZhbHVlID0gdmFsdWUgIT09IG51bGwgJiYgdW5pdCA/IGAke3ZhbHVlfSR7dW5pdH1gIDogdmFsdWU7XG5cdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZShzdmcsIG5hbWUsIHZhbHVlIGFzIHN0cmluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoc3ZnLCBuYW1lKTtcblx0XHR9XG5cdH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5cbmltcG9ydCB7IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICcuL3N2Zy1pY29uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6XHQgIFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogWyBTdmdJY29uQ29tcG9uZW50IF0sXG5cdHByb3ZpZGVyczogICAgWyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiBdLFxuXHRleHBvcnRzOiAgICAgIFsgU3ZnSWNvbkNvbXBvbmVudCBdXG59KVxuXG5leHBvcnQgY2xhc3MgQW5ndWxhclN2Z0ljb25Nb2R1bGUge31cbiJdLCJuYW1lcyI6WyJvYnNlcnZhYmxlT2YiLCJvYnNlcnZhYmxlVGhyb3dFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQVNBLElBQWEsVUFBVSxHQUFHLElBQUksY0FBYyxDQUFTLFlBQVksQ0FBQztBQUVsRTtJQU9DLGdDQUFvQixJQUFnQixFQUNKLFVBQWtCLEVBQ0wsU0FBaUIsRUFDckIsU0FBYztRQUhuQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0osZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNMLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBSztRQU4vQyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFDM0Msc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7UUFNcEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0tBQ2hDOzs7Ozs7OztJQUdELHVDQUFNOzs7Ozs7SUFBTixVQUFPLElBQVksRUFBRSxJQUFZO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTs7Z0JBQ3pCLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDOUMsR0FB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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWxvYWRlci50cyIsIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyIsIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24uY29tcG9uZW50LnRzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9hbmd1bGFyLXN2Zy1pY29uLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdmdMb2FkZXIge1xyXG5cdGFic3RyYWN0IGdldFN2Zyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPjtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3ZnSHR0cExvYWRlciBleHRlbmRzIFN2Z0xvYWRlciB7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHR9XHJcblxyXG5cdGdldFN2Zyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XHJcblx0fVxyXG59XHJcbiIsImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBQTEFURk9STV9JRCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwLCBzaGFyZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3ZnTG9hZGVyIH0gZnJvbSAnLi9zdmctbG9hZGVyJztcblxuZXhwb3J0IGNvbnN0IFNFUlZFUl9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignU0VSVkVSX1VSTCcpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB7XG5cblx0cHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQ7XG5cdHByaXZhdGUgaWNvbnNCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBTVkdFbGVtZW50PigpO1xuXHRwcml2YXRlIGljb25zTG9hZGluZ0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8U1ZHRWxlbWVudD4+KCk7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBsb2FkZXI6IFN2Z0xvYWRlcixcblx0XHRcdFx0QEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXG5cdFx0XHRcdEBPcHRpb25hbCgpIEBJbmplY3QoU0VSVkVSX1VSTCkgcHJvdGVjdGVkIHNlcnZlclVybDogc3RyaW5nLFxuXHRcdFx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55KSB7XG5cdFx0XHR0aGlzLmRvY3VtZW50ID0gdGhpcy5fZG9jdW1lbnQ7XG5cdH1cblxuXHQvKiogQWRkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBieSBwYXNzaW5nIGEgbmFtZSBhbmQgdGhlIFNWRy4gKi9cblx0YWRkU3ZnKG5hbWU6IHN0cmluZywgZGF0YTogc3RyaW5nKSB7XG5cdFx0aWYgKCF0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRjb25zdCBkaXYgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0ZGl2LmlubmVySFRNTCA9IGRhdGE7XG5cdFx0XHRjb25zdCBzdmcgPSA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuc2V0KG5hbWUsIHN2Zyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIExvYWQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGZyb20gYSBVUkwuICovXG5cdGxvYWRTdmcodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZyA9IHVybCkgOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcblxuXHRcdC8vIG5vdCBzdXJlIGlmIHRoZXJlIHNob3VsZCBiZSBhIHBvc3NpYmlsaXR5IHRvIHVzZSBuYW1lIGZvciBzZXJ2ZXIgdXNhZ2Vcblx0XHQvLyBzbyBvdmVycmlkaW5nIGl0IGZvciBub3cgaWYgcHJvdmlkZWRcblx0XHQvLyBtYXliZSBzaG91bGQgc2VwYXJhdGUgZnVuY3Rpb25hbGl0eSBmb3IgdXJsIGFuZCBuYW1lIHVzZS1jYXNlc1xuXHRcdGlmICh0aGlzLnNlcnZlclVybCAmJiB1cmwubWF0Y2goL14oaHR0cChzKT8pOi8pID09PSBudWxsKSB7XG5cdFx0XHR1cmwgPSB0aGlzLnNlcnZlclVybCArIHVybDtcblx0XHRcdG5hbWUgPSB1cmw7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5pY29uc0J5VXJsLmdldChuYW1lKSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmljb25zTG9hZGluZ0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZ2V0KG5hbWUpO1xuXHRcdH1cblx0XHRjb25zdCBvID0gPE9ic2VydmFibGU8U1ZHRWxlbWVudD4+IHRoaXMubG9hZGVyLmdldFN2Zyh1cmwpLnBpcGUoXG5cdFx0XHRtYXAoc3ZnID0+IHtcblx0XHRcdFx0Y29uc3QgZGl2ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdFx0ZGl2LmlubmVySFRNTCA9IHN2Zztcblx0XHRcdFx0cmV0dXJuIDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdH0pLFxuXHRcdFx0dGFwIChzdmcgPT4gdGhpcy5pY29uc0J5VXJsLnNldChuYW1lLCBzdmcpICksXG5cdFx0XHRjYXRjaEVycm9yKGVyciA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyKTtcblx0XHRcdFx0cmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycik7XG5cdFx0XHR9KSxcblx0XHRcdGZpbmFsaXplKCgpID0+IHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZGVsZXRlKG5hbWUpICksXG5cdFx0XHRzaGFyZSgpXG5cdFx0KTtcblxuXHRcdHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuc2V0KG5hbWUsIG8pO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0LyoqIEdldCBsb2FkZWQgU1ZHIGZyb20gcmVnaXN0cnkgYnkgbmFtZS4gKGFsc28gd29ya3MgYnkgdXJsIGJlY2F1c2Ugb2YgYmxlbmRlZCBtYXApICovXG5cdGdldFN2Z0J5TmFtZShuYW1lOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5pY29uc0J5VXJsLmdldChuYW1lKSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmljb25zTG9hZGluZ0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZ2V0KG5hbWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoYE5vIHN2ZyB3aXRoIG5hbWUgJyR7bmFtZX0nIGhhcyBiZWVuIGxvYWRlZGApO1xuXHR9XG5cblx0LyoqIFJlbW92ZSBhIFNWRyBmcm9tIHRoZSByZWdpc3RyeSBieSBVUkwgKG9yIG5hbWUpLiAqL1xuXHR1bmxvYWRTdmcodXJsOiBzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuZGVsZXRlKHVybCk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZKHBhcmVudFJlZ2lzdHJ5OiBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLCBsb2FkZXI6IFN2Z0xvYWRlcixcblx0cGxhdGZvcm1JZDogT2JqZWN0LCBzZXJ2ZXJVcmw/OiBzdHJpbmcsIGRvY3VtZW50PzogYW55KSB7XG5cdHJldHVybiBwYXJlbnRSZWdpc3RyeSB8fCBuZXcgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZShsb2FkZXIsIHBsYXRmb3JtSWQsICBzZXJ2ZXJVcmwsIGRvY3VtZW50KTtcbn1cblxuZXhwb3J0IGNvbnN0IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSID0ge1xuXHRwcm92aWRlOiBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLFxuXHRkZXBzOiBbIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2VdLCBTdmdMb2FkZXIsIFtQTEFURk9STV9JRCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XSxcblx0XHRcdFtuZXcgT3B0aW9uYWwoKSwgU0VSVkVSX1VSTCBhcyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+XSwgW25ldyBPcHRpb25hbCgpLCBET0NVTUVOVCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XVxuXHRdLFxuXHR1c2VGYWN0b3J5OiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZXG59O1xuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsXG5cdEtleVZhbHVlQ2hhbmdlUmVjb3JkLCBLZXlWYWx1ZUNoYW5nZXMsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlcnMsXG5cdE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzdmctaWNvbicsXG5cdHN0eWxlczogWyBgOmhvc3QgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1gIF0sXG5cdHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5cbmV4cG9ydCBjbGFzcyBTdmdJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgRG9DaGVjayB7XG5cdEBJbnB1dCgpIHNyYzogc3RyaW5nO1xuXHRASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cdEBJbnB1dCgpIHN0cmV0Y2ggPSBmYWxzZTtcblxuXHQvLyBBZGFwdGVkIGZyb20gbmdTdHlsZVxuXHRASW5wdXQoKVxuXHRzZXQgc3ZnU3R5bGUodjoge1trZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG5cdFx0dGhpcy5fc3ZnU3R5bGUgPSB2O1xuXHRcdGlmICghdGhpcy5kaWZmZXIgJiYgdikge1xuXHRcdFx0dGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZCh2KS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN2ZzogU1ZHRWxlbWVudDtcblx0cHJpdmF0ZSBpY25TdWI6IFN1YnNjcmlwdGlvbjtcblx0cHJpdmF0ZSBkaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgc3RyaW5nfG51bWJlcj47XG5cdHByaXZhdGUgX3N2Z1N0eWxlOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG5cdFx0cHJpdmF0ZSBkaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuXHRcdHByaXZhdGUgaWNvblJlZzogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSkge1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5pbml0KCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLmRlc3Ryb3koKTtcblx0fVxuXG5cdG5nT25DaGFuZ2VzKGNoYW5nZVJlY29yZDoge1trZXk6IHN0cmluZ106IFNpbXBsZUNoYW5nZX0pIHtcblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzcmMnXSB8fCBjaGFuZ2VSZWNvcmRbJ25hbWUnXSkge1xuXHRcdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRcdHRoaXMuZGVzdHJveSgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5pbml0KCk7XG5cdFx0fVxuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3N0cmV0Y2gnXSkge1xuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdEb0NoZWNrKCkge1xuXHRcdGlmICh0aGlzLnN2ZyAmJiB0aGlzLmRpZmZlcikge1xuXHRcdFx0Y29uc3QgY2hhbmdlcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5fc3ZnU3R5bGUpO1xuXHRcdFx0aWYgKGNoYW5nZXMpIHtcblx0XHRcdFx0dGhpcy5hcHBseUNoYW5nZXMoY2hhbmdlcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbml0KCkge1xuXHRcdGlmICh0aGlzLm5hbWUpIHtcblx0XHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmdldFN2Z0J5TmFtZSh0aGlzLm5hbWUpLnN1YnNjcmliZSh0aGlzLmluaXRTdmcuYmluZCh0aGlzKSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmxvYWRTdmcodGhpcy5zcmMpLnN1YnNjcmliZSh0aGlzLmluaXRTdmcuYmluZCh0aGlzKSk7XG5cdH1cblxuXHRwcml2YXRlIGluaXRTdmcoc3ZnOiBTVkdFbGVtZW50KSA6IHZvaWQge1xuXHRcdHRoaXMuc2V0U3ZnKHN2Zyk7XG5cdFx0dGhpcy5yZXNldERpZmZlcigpO1xuXHR9XG5cblx0cHJpdmF0ZSBkZXN0cm95KCkge1xuXHRcdHRoaXMuc3ZnID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuZGlmZmVyID0gdW5kZWZpbmVkO1xuXHRcdGlmICh0aGlzLmljblN1Yikge1xuXHRcdFx0dGhpcy5pY25TdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc2V0RGlmZmVyKCkge1xuXHRcdGlmICh0aGlzLl9zdmdTdHlsZSAmJiAhdGhpcy5kaWZmZXIpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fc3ZnU3R5bGUpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc2V0U3ZnKHN2ZzogU1ZHRWxlbWVudCkge1xuXHRcdGlmIChzdmcpIHtcblx0XHRcdHRoaXMuc3ZnID0gc3ZnO1xuXHRcdFx0Y29uc3QgaWNvbiA9IDxTVkdFbGVtZW50PnN2Zy5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0XHRjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdGVsZW0uaW5uZXJIVE1MID0gJyc7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGVsZW0sIGljb24pO1xuXG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0eWxpemUoKSB7XG5cdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRpZiAodGhpcy5zdHJldGNoID09PSB0cnVlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnN0cmV0Y2ggPT09IGZhbHNlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFwcGx5Q2hhbmdlcyhjaGFuZ2VzOiBLZXlWYWx1ZUNoYW5nZXM8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikge1xuXHRcdGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgbnVsbCkpO1xuXHRcdGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbSgocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0U3R5bGUobmFtZUFuZFVuaXQ6IHN0cmluZywgdmFsdWU6IHN0cmluZ3xudW1iZXJ8bnVsbHx1bmRlZmluZWQpIHtcblx0XHRjb25zdCBbbmFtZSwgdW5pdF0gPSBuYW1lQW5kVW5pdC5zcGxpdCgnLicpO1xuXHRcdHZhbHVlID0gdmFsdWUgIT09IG51bGwgJiYgdW5pdCA/IGAke3ZhbHVlfSR7dW5pdH1gIDogdmFsdWU7XG5cdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZShzdmcsIG5hbWUsIHZhbHVlIGFzIHN0cmluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoc3ZnLCBuYW1lKTtcblx0XHR9XG5cdH1cbn1cbiIsImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgfSBmcm9tICcuL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vc3ZnLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFN2Z0h0dHBMb2FkZXIsIFN2Z0xvYWRlciB9IGZyb20gJy4vc3ZnLWxvYWRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhclN2Z0ljb25Db25maWcge1xuXHRsb2FkZXI/OiBQcm92aWRlcjtcbn1cblxuQE5nTW9kdWxlKHtcblx0aW1wb3J0czpcdCAgW1xuXHRcdENvbW1vbk1vZHVsZSxcblx0XSxcblx0ZGVjbGFyYXRpb25zOiBbIFN2Z0ljb25Db21wb25lbnQgXSxcblx0cHJvdmlkZXJzOiAgICBbIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSLCB7IHByb3ZpZGU6IFN2Z0xvYWRlciwgdXNlQ2xhc3M6IFN2Z0h0dHBMb2FkZXIgfSBdLFxuXHRleHBvcnRzOiAgICAgIFsgU3ZnSWNvbkNvbXBvbmVudCBdXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJTdmdJY29uTW9kdWxlIHtcblxuXHRzdGF0aWMgZm9yUm9vdChjb25maWc6IEFuZ3VsYXJTdmdJY29uQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0bmdNb2R1bGU6IEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuXHRcdFx0cHJvdmlkZXJzOiBbXG5cdFx0XHRcdGNvbmZpZy5sb2FkZXIgfHwgeyBwcm92aWRlOiBTdmdMb2FkZXIsIHVzZUNsYXNzOiBTdmdIdHRwTG9hZGVyIH0sXG5cdFx0XHRcdFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSXG5cdFx0XHRdXG5cdFx0fVxuXHR9XG59XG4iXSwibmFtZXMiOlsidHNsaWJfMS5fX2V4dGVuZHMiLCJvYnNlcnZhYmxlT2YiLCJvYnNlcnZhYmxlVGhyb3dFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFJQTs7OztJQUFBO0tBRUM7SUFBRCxnQkFBQztDQUFBLElBQUE7O0lBR2tDQSxpQ0FBUztJQUUzQyx1QkFBb0IsSUFBZ0I7UUFBcEMsWUFDQyxpQkFBTyxTQUNQO1FBRm1CLFVBQUksR0FBSixJQUFJLENBQVk7O0tBRW5DOzs7OztJQUVELDhCQUFNOzs7O0lBQU4sVUFBTyxHQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDcEQ7O2dCQVRELFVBQVU7Ozs7Z0JBTkYsVUFBVTs7SUFnQm5CLG9CQUFDO0NBQUEsQ0FUa0MsU0FBUzs7Ozs7O0FDVDVDO0FBT0EsSUFBYSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQVMsWUFBWSxDQUFDO0FBRWxFO0lBT0MsZ0NBQW9CLE1BQWlCLEVBQ0wsVUFBa0IsRUFDTCxTQUFpQixFQUNyQixTQUFjO1FBSG5DLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDTCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBTi9DLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUMzQyxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztRQU1wRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7S0FDaEM7Ozs7Ozs7O0lBR0QsdUNBQU07Ozs7OztJQUFOLFVBQU8sSUFBWSxFQUFFLElBQVk7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFOztnQkFDekIsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUM5QyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzs7Z0JBQ2YsR0FBRyxzQkFBZSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFBO1lBQ2hELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztTQUMvQjtLQUNEOzs7Ozs7OztJQUdELHdDQUFPOzs7Ozs7SUFBUCxVQUFRLEdBQVcsRUFBRSxJQUFrQjtRQUF2QyxpQkFnQ0M7UUFoQ29CLHFCQUFBLEVBQUEsVUFBa0I7Ozs7UUFLdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3pELEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUMzQixJQUFJLEdBQUcsR0FBRyxDQUFDO1NBQ1g7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlCLE9BQU9DLEVBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQy9DO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzVDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7WUFDSyxDQUFDLHNCQUE0QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzlELEdBQUcsQ0FBQyxVQUFBLEdBQUc7O2dCQUNBLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDOUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDcEIsMEJBQW1CLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUM7U0FDNUMsQ0FBQyxFQUNGLEdBQUcsQ0FBRSxVQUFBLEdBQUcsSUFBSSxPQUFBLEtBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBQSxDQUFFLEVBQzVDLFVBQVUsQ0FBQyxVQUFBLEdBQUc7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLE9BQU9DLFVBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDakMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBQSxDQUFFLEVBQ3BELEtBQUssRUFBRSxDQUNQLEVBQUE7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsQ0FBQztLQUNUOzs7Ozs7O0lBR0QsNkNBQVk7Ozs7O0lBQVosVUFBYSxJQUFZO1FBQ3hCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUIsT0FBT0QsRUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDL0M7YUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsT0FBT0MsVUFBb0IsQ0FBQyx1QkFBcUIsSUFBSSxzQkFBbUIsQ0FBQyxDQUFDO0tBQzFFOzs7Ozs7O0lBR0QsMENBQVM7Ozs7O0lBQVQsVUFBVSxHQUFXO1FBQ3BCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUI7S0FDRDs7Z0JBMUVELFVBQVU7Ozs7Z0JBSkYsU0FBUztnQkFZMkIsTUFBTSx1QkFBOUMsTUFBTSxTQUFDLFdBQVc7NkNBQ2xCLFFBQVEsWUFBSSxNQUFNLFNBQUMsVUFBVTtnREFDN0IsUUFBUSxZQUFJLE1BQU0sU0FBQyxRQUFROztJQWlFaEMsNkJBQUM7Q0EzRUQsSUEyRUM7Ozs7Ozs7OztBQUVELFNBQWdCLGtDQUFrQyxDQUFDLGNBQXNDLEVBQUUsTUFBaUIsRUFDM0csVUFBa0IsRUFBRSxTQUFrQixFQUFFLFFBQWM7SUFDdEQsT0FBTyxjQUFjLElBQUksSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFHLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztDQUM5Rjs7QUFFRCxJQUFhLDBCQUEwQixHQUFHO0lBQ3pDLE9BQU8sRUFBRSxzQkFBc0I7SUFDL0IsSUFBSSxFQUFFLENBQUUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsb0JBQUMsV0FBVyxHQUF3QjtRQUMvRyxDQUFDLElBQUksUUFBUSxFQUFFLHFCQUFFLFVBQVUsR0FBMkIsRUFBRSxDQUFDLElBQUksUUFBUSxFQUFFLHFCQUFFLFFBQVEsR0FBd0I7S0FDMUc7SUFDRCxVQUFVLEVBQUUsa0NBQWtDO0NBQzlDOzs7Ozs7O0lDL0RBLDBCQUFvQixPQUFtQixFQUM5QixPQUF3QixFQUN4QixRQUFtQixFQUNuQixPQUErQjtRQUhwQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBd0I7UUFuQi9CLFlBQU8sR0FBRyxLQUFLLENBQUM7S0FvQnhCO0lBakJELHNCQUNJLHNDQUFROzs7Ozs7OztRQURaLFVBQ2EsQ0FBMkI7WUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQzVDO1NBQ0Q7OztPQUFBOzs7O0lBYUQsbUNBQVE7OztJQUFSO1FBQ0MsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ1o7Ozs7SUFFRCxzQ0FBVzs7O0lBQVg7UUFDQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7S0FDZjs7Ozs7SUFFRCxzQ0FBVzs7OztJQUFYLFVBQVksWUFBMkM7UUFDdEQsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDZjtZQUNELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNaO1FBQ0QsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2Y7S0FDRDs7OztJQUVELG9DQUFTOzs7SUFBVDtRQUNDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFOztnQkFDdEIsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMzQjtTQUNEO0tBQ0Q7Ozs7O0lBRU8sK0JBQUk7Ozs7SUFBWjtRQUNDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3RGLE9BQU87U0FDUDtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ2hGOzs7Ozs7SUFFTyxrQ0FBTzs7Ozs7SUFBZixVQUFnQixHQUFlO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQ25COzs7OztJQUVPLGtDQUFPOzs7O0lBQWY7UUFDQyxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMxQjtLQUNEOzs7OztJQUVPLHNDQUFXOzs7O0lBQW5CO1FBQ0MsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN6RDtLQUNEOzs7Ozs7SUFFTyxpQ0FBTTs7Ozs7SUFBZCxVQUFlLEdBQWU7UUFDN0IsSUFBSSxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQzs7Z0JBQ1QsSUFBSSxzQkFBZSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFBOztnQkFDdEMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtZQUV2QyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFdEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2Y7S0FDRDs7Ozs7SUFFTyxrQ0FBTzs7OztJQUFmO1FBQ0MsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFOztnQkFDUCxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVTtZQUVqRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO2dCQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDL0Q7aUJBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtnQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDLENBQUM7YUFDMUQ7U0FDRDtLQUNEOzs7Ozs7SUFFTyx1Q0FBWTs7Ozs7SUFBcEIsVUFBcUIsT0FBK0M7UUFBcEUsaUJBSUM7UUFIQSxPQUFPLENBQUMsa0JBQWtCLENBQUMsVUFBQyxNQUFtRCxJQUFLLE9BQUEsS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFBLENBQUMsQ0FBQztRQUNySCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsVUFBQyxNQUFtRCxJQUFLLE9BQUEsS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBQSxDQUFDLENBQUM7UUFDbEksT0FBTyxDQUFDLGtCQUFrQixDQUFDLFVBQUMsTUFBbUQsSUFBSyxPQUFBLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUEsQ0FBQyxDQUFDO0tBQ3BJOzs7Ozs7O0lBRU8sbUNBQVE7Ozs7OztJQUFoQixVQUFpQixXQUFtQixFQUFFLEtBQW1DO1FBQ2xFLElBQUEsc0NBQXFDLEVBQXBDLFlBQUksRUFBRSxZQUE4QjtRQUMzQyxLQUFLLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBRyxLQUFLLEdBQUcsSUFBTSxHQUFHLEtBQUssQ0FBQzs7WUFDckQsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVU7UUFFakQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLHFCQUFFLEtBQUssR0FBVyxDQUFDO1NBQ25EO2FBQU07WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDckM7S0FDRDs7Z0JBaElELFNBQVMsU0FBQztvQkFDVixRQUFRLEVBQUUsVUFBVTtvQkFFcEIsUUFBUSxFQUFFLDJCQUEyQjs2QkFEM0Isa0NBQWtDO2lCQUU1Qzs7OztnQkFiNEIsVUFBVTtnQkFDaUIsZUFBZTtnQkFDeEMsU0FBUztnQkFJL0Isc0JBQXNCOzs7c0JBVTdCLEtBQUs7dUJBQ0wsS0FBSzswQkFDTCxLQUFLOzJCQUdMLEtBQUs7O0lBcUhQLHVCQUFDO0NBaklEOzs7Ozs7QUNUQTtJQVdBO0tBbUJDOzs7OztJQVRPLDRCQUFPOzs7O0lBQWQsVUFBZSxNQUFpQztRQUFqQyx1QkFBQSxFQUFBLFdBQWlDO1FBQy9DLE9BQU87WUFDTixRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRTtnQkFDVixNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO2dCQUNoRSwwQkFBMEI7YUFDMUI7U0FDRCxDQUFBO0tBQ0Q7O2dCQWxCRCxRQUFRLFNBQUM7b0JBQ1QsT0FBTyxFQUFJO3dCQUNWLFlBQVk7cUJBQ1o7b0JBQ0QsWUFBWSxFQUFFLENBQUUsZ0JBQWdCLENBQUU7b0JBQ2xDLFNBQVMsRUFBSyxDQUFFLDBCQUEwQixFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLENBQUU7b0JBQzdGLE9BQU8sRUFBTyxDQUFFLGdCQUFnQixDQUFFO2lCQUNsQzs7SUFZRCwyQkFBQztDQW5CRDs7Ozs7Ozs7Ozs7Ozs7In0=

@@ -5,3 +5,3 @@ {

"description": "Angular 6+ component for inlining SVGs allowing them to be easily styled with CSS.",
"version": "7.0.2",
"version": "7.1.0",
"repository": {

@@ -8,0 +8,0 @@ "type": "git",

@@ -106,20 +106,99 @@ [![npm version](https://badge.fury.io/js/angular-svg-icon.svg)](https://badge.fury.io/js/angular-svg-icon)

## Usage with Angular Universal
To support loading the SVGs URLs server-side with Universal, either the full URL
of the SVG must be provided or a `SERVER_URL` must be defined in the
AppServerModule:
When rendering on server-side, the SVGs must be loaded via the file system.
This can be achieved by providing an `SvgLoader` to the server module:
```typescript
...
import { SERVER_URL } from 'angular-svg-icon';
export function svgLoaderFactory(http: HttpClient, transferState: TransferState) {
return new SvgServerLoader('browser/assets/icons', transferState);
}
@NgModule({
imports: [
AngularSvgIconModule.forRoot({
loader: {
provide: SvgLoader,
useFactory: svgLoaderFactory,
deps: [ HttpClient, TransferState ],
}
}),
AppModule,
ServerModule,
ServerTransferStateModule,
ModuleMapLoaderModule,
ServerTransferStateModule,
],
bootstrap: [AppComponent],
providers: [{provide: SERVER_URL, useValue: 'http://localhost:4000/'}]
...
bootstrap: [ AppComponent ],
})
export class AppServerModule {
}
```
The loader itself is up to you to implement because it depends on where your
icons are stored locally. An implementation that additionally saves the icons
in the transfer state of your app in order to avoid double requests could look
like that:
```typescript
const fs = require('fs');
const join = require('path').join;
const parseUrl = require('url').parse;
const baseName = require('path').basename;
export class SvgServerLoader implements SvgLoader {
constructor(private iconPath: string,
private transferState: TransferState) {
}
getSvg(url: string): Observable<string> {
const parsedUrl:URL = parseUrl(url);
const fileNameWithHash = baseName(parsedUrl.pathname);
// Remove content hashing
const fileName = fileNameWithHash.replace(/^(.*)(\.[0-9a-f]{16,})(\.svg)$/i, '$1$3');
const filePath = join(this.iconPath, fileName);
return Observable.create(observer => {
const svgData = fs.readFileSync(filePath, 'utf8');
// Here we save the translations in the transfer-state
const key: StateKey<number> = makeStateKey<number>('transfer-svg:' + url);
this.transferState.set(key, svgData);
observer.next(svgData);
observer.complete();
});
}
}
```
Note that this is executed in a local Node.js context, so the Node.js API is
available.
A loader for the client module that firstly checks the transfer state could
look like that:
```typescript
export class SvgBrowserLoader implements SvgLoader {
constructor(private transferState: TransferState,
private http: HttpClient) {
}
getSvg(url: string): Observable<string> {
const key: StateKey<number> = makeStateKey<number>('transfer-svg:' + url);
const data = this.transferState.get(key, null);
// First we are looking for the translations in transfer-state, if none found, http load as fallback
if (data) {
return Observable.create(observer => {
observer.next(data);
observer.complete();
});
} else {
return new SvgHttpLoader(this.http).getSvg(url);
}
}
}
```
This is executed on browser side. Note that the fallback when no data is
available uses `SvgHttpLoader`, which is also the default loader if you don't
provide one.
## SVG Preparation

@@ -126,0 +205,0 @@ The SVG should be modified to remove the height and width attributes from the file

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

import { ModuleWithProviders, Provider } from '@angular/core';
export interface AngularSvgIconConfig {
loader?: Provider;
}
export declare class AngularSvgIconModule {
static forRoot(config?: AngularSvgIconConfig): ModuleWithProviders;
}
import { InjectionToken, Optional } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { SvgLoader } from './svg-loader';
export declare const SERVER_URL: InjectionToken<string>;
export declare class SvgIconRegistryService {
private http;
private loader;
private platformId;

@@ -13,3 +13,3 @@ protected serverUrl: string;

private iconsLoadingByUrl;
constructor(http: HttpClient, platformId: Object, serverUrl: string, _document: any);
constructor(loader: SvgLoader, platformId: Object, serverUrl: string, _document: any);
/** Add a SVG to the registry by passing a name and the SVG. */

@@ -24,7 +24,7 @@ addSvg(name: string, data: string): void;

}
export declare function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry: SvgIconRegistryService, http: HttpClient, platformId: Object, serverUrl?: string, document?: any): SvgIconRegistryService;
export declare function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry: SvgIconRegistryService, loader: SvgLoader, platformId: Object, serverUrl?: string, document?: any): SvgIconRegistryService;
export declare const SVG_ICON_REGISTRY_PROVIDER: {
provide: typeof SvgIconRegistryService;
deps: (Optional[] | typeof HttpClient)[];
deps: (typeof SvgLoader | Optional[])[];
useFactory: typeof SVG_ICON_REGISTRY_PROVIDER_FACTORY;
};

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