Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@ngxs-labs/emitter

Package Overview
Dependencies
Maintainers
3
Versions
28
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ngxs-labs/emitter - npm Package Compare versions

Comparing version 1.6.3 to 1.6.4

33

bundles/ngxs-labs-emitter.umd.js

@@ -23,5 +23,8 @@ (function (global, factory) {

var 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]; };
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);
};

@@ -36,3 +39,3 @@ function __extends(d, b) {

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -87,3 +90,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -190,3 +193,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -236,3 +239,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -261,3 +264,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -301,2 +304,3 @@ var EmitStore = /** @class */ (function (_super) {

/**
* @private
* @template T, U

@@ -308,2 +312,3 @@ * @param {?} metadata - Receiver function metadata

EmitStore.prototype.dispatchSingle = /**
* @private
* @template T, U

@@ -335,2 +340,3 @@ * @param {?} metadata - Receiver function metadata

/**
* @private
* @template T, U

@@ -342,2 +348,3 @@ * @param {?} metadata - Receiver function metadata

EmitStore.prototype.dispatchMany = /**
* @private
* @template T, U

@@ -369,3 +376,3 @@ * @param {?} metadata - Receiver function metadata

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -392,3 +399,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -426,3 +433,3 @@ var NgxsEmitPluginModule = /** @class */ (function () {

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -439,5 +446,3 @@ /**

var types = {};
/** @type {?} */
var i = receivers.length;
while (i--) {
for (var i = receivers.length - 1; i >= 0; i--) {
/** @type {?} */

@@ -444,0 +449,0 @@ var receiver = receivers[i];

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

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@ngxs/store"),require("@angular/core"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@ngxs-labs/emitter",["exports","@ngxs/store","@angular/core","rxjs/operators"],e):e((t["ngxs-labs"]=t["ngxs-labs"]||{},t["ngxs-labs"].emitter={}),t["ngxs-store"],t.ng.core,t.rxjs.operators)}(this,function(t,l,r,e){"use strict";var d="NGXS_RECEIVER_META";function i(t){return Array.isArray(t)?t:[t]}function h(t,e,r){var n={type:"[ID:"+function u(){return(Math.random()*Date.now()).toString(36).slice(0,8)}()+"] "+e.name+"."+r,payload:undefined,action:undefined,cancelUncompleted:!0};if(!t)return n;var o=t.type,i=t.payload,a=t.action,c=t.cancelUncompleted;return o&&(n.type=o),i&&(n.payload=i),a&&(n.action=a,Array.isArray(a)||(n.type=a.type)),"boolean"==typeof c&&(n.cancelUncompleted=c),n}var n=function(){function e(t){e.injector=t}return e.getInjector=function(){if(!this.injector)throw new Error("You've forgotten to import `NgxsEmitPluginModule`");return this.injector},e.injector=null,e.decorators=[{type:r.Injectable}],e.ctorParameters=function(){return[{type:r.Injector}]},e}(),o=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])};var a=function(){function t(t){this.payload=t}return t.type=null,t}(),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return function n(t,e){function r(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}(e,t),e.prototype.emitter=function(t){var e=this,r=t[d];if(!r)throw new Error("I can't seem to find static metadata. Have you decorated "+t.name+" with @Receiver()?");return{emit:function(t){return e.dispatchSingle(r,t)},emitMany:function(t){return e.dispatchMany(r,t)}}},e.prototype.dispatchSingle=function(t,e){a.type=t.type,void 0===e&&t.payload!==undefined&&(e=t.payload);var r=t.action;if(r){var n=i(r);return this.dispatch(function o(t,e){return t.map(function(t){return new t(e)})}(n,e))}return this.dispatch(new a(e))},e.prototype.dispatchMany=function(t,e){if(!Array.isArray(e))return this.dispatch([]);a.type=t.type;var r=t.action;if(r){var n=i(r);return this.dispatch(function u(t,e){for(var r=[],n=0,o=t.length;n<o;n++)for(var i=t[n],a=0,c=e.length;a<c;a++)r.push(new i(e[a]));return r}(n,e))}return this.dispatch(e.map(function(t){return new a(t)}))},e.decorators=[{type:r.Injectable}],e}(l.Store);var u=function(){function t(t){this.injectorAccessor=t}return t.forRoot=function(){return{ngModule:t,providers:[c,n]}},t.decorators=[{type:r.NgModule}],t.ctorParameters=function(){return[{type:n,decorators:[{type:r.Self}]}]},t}();function p(t){for(var e={},r=t.length;r--;){var n=t[r];if("function"!=typeof n)throw new TypeError("Receiver should be a function, got "+n);var o=n[d];if(!o||!o.type)throw new Error(n.name+" should be decorated using @Receiver() decorator");e[o.type]=!0}return e}function f(n,o){return function(t){return t.pipe(e.filter(function(t){var e=n[l.getActionTypeFromInstance(t.action)],r=t.status===o;return e&&r}),e.map(function(t){var e=t.action,r=t.error;return{type:l.getActionTypeFromInstance(e),payload:e.payload,error:r}}))}}t.Receiver=function s(y){return function(t,e,r){if("undefined"==typeof t.prototype||!r||"function"!=typeof t[e])throw new TypeError("Only static functions can be decorated with @Receiver() decorator");if(e in t.prototype)throw new Error("Property with name `"+e.toString()+"` already exists, please rename to avoid conflicts");"string"!=typeof e&&(e=String(e));var n=l.ensureStoreMetadata(t),o=h(y,t,e),i=o.type,a=o.payload,c=o.action,u=o.cancelUncompleted;if(n.actions.hasOwnProperty(i))throw new Error("Method decorated with such type `"+i+"` already exists");if(Array.isArray(c))for(var p=0,f=c.length;p<f;p++){var s=c[p].type;n.actions[s]=[{fn:""+e,options:{cancelUncompleted:u},type:s}]}else n.actions[i]=[{fn:""+e,options:{cancelUncompleted:u},type:i}];r.value[d]={type:i,action:c,payload:a},t.prototype[e]=function(){return t[e].apply(t,arguments)}}},t.Emitter=function y(r){return function(t,e){Object.defineProperty(t,e,{get:function(){return n.getInjector().get(c).emitter(r)}})}},t.EmitterAction=a,t.NgxsEmitPluginModule=u,t.EmitStore=c,t.ofEmittableDispatched=function g(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return f(p(t),"DISPATCHED")},t.ofEmittableSuccessful=function m(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return f(p(t),"SUCCESSFUL")},t.ofEmittableCanceled=function v(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return f(p(t),"CANCELED")},t.ofEmittableErrored=function E(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return f(p(t),"ERRORED")},t.ɵb=f,t.ɵc=n,Object.defineProperty(t,"__esModule",{value:!0})});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@ngxs/store"),require("@angular/core"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@ngxs-labs/emitter",["exports","@ngxs/store","@angular/core","rxjs/operators"],e):e((t["ngxs-labs"]=t["ngxs-labs"]||{},t["ngxs-labs"].emitter={}),t["ngxs-store"],t.ng.core,t.rxjs.operators)}(this,function(t,l,r,e){"use strict";var d="NGXS_RECEIVER_META";function i(t){return Array.isArray(t)?t:[t]}function h(t,e,r){var n={type:"[ID:"+function u(){return(Math.random()*Date.now()).toString(36).slice(0,8)}()+"] "+e.name+"."+r,payload:undefined,action:undefined,cancelUncompleted:!0};if(!t)return n;var o=t.type,i=t.payload,a=t.action,c=t.cancelUncompleted;return o&&(n.type=o),i&&(n.payload=i),a&&(n.action=a,Array.isArray(a)||(n.type=a.type)),"boolean"==typeof c&&(n.cancelUncompleted=c),n}var n=function(){function e(t){e.injector=t}return e.getInjector=function(){if(!this.injector)throw new Error("You've forgotten to import `NgxsEmitPluginModule`");return this.injector},e.injector=null,e.decorators=[{type:r.Injectable}],e.ctorParameters=function(){return[{type:r.Injector}]},e}(),o=function(t,e){return(o=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 a=function(){function t(t){this.payload=t}return t.type=null,t}(),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return function n(t,e){function r(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}(e,t),e.prototype.emitter=function(t){var e=this,r=t[d];if(!r)throw new Error("I can't seem to find static metadata. Have you decorated "+t.name+" with @Receiver()?");return{emit:function(t){return e.dispatchSingle(r,t)},emitMany:function(t){return e.dispatchMany(r,t)}}},e.prototype.dispatchSingle=function(t,e){a.type=t.type,void 0===e&&t.payload!==undefined&&(e=t.payload);var r=t.action;if(r){var n=i(r);return this.dispatch(function o(t,e){return t.map(function(t){return new t(e)})}(n,e))}return this.dispatch(new a(e))},e.prototype.dispatchMany=function(t,e){if(!Array.isArray(e))return this.dispatch([]);a.type=t.type;var r=t.action;if(r){var n=i(r);return this.dispatch(function u(t,e){for(var r=[],n=0,o=t.length;n<o;n++)for(var i=t[n],a=0,c=e.length;a<c;a++)r.push(new i(e[a]));return r}(n,e))}return this.dispatch(e.map(function(t){return new a(t)}))},e.decorators=[{type:r.Injectable}],e}(l.Store);var u=function(){function t(t){this.injectorAccessor=t}return t.forRoot=function(){return{ngModule:t,providers:[c,n]}},t.decorators=[{type:r.NgModule}],t.ctorParameters=function(){return[{type:n,decorators:[{type:r.Self}]}]},t}();function p(t){for(var e={},r=t.length-1;0<=r;r--){var n=t[r];if("function"!=typeof n)throw new TypeError("Receiver should be a function, got "+n);var o=n[d];if(!o||!o.type)throw new Error(n.name+" should be decorated using @Receiver() decorator");e[o.type]=!0}return e}function f(n,o){return function(t){return t.pipe(e.filter(function(t){var e=n[l.getActionTypeFromInstance(t.action)],r=t.status===o;return e&&r}),e.map(function(t){var e=t.action,r=t.error;return{type:l.getActionTypeFromInstance(e),payload:e.payload,error:r}}))}}t.Receiver=function s(y){return function(t,e,r){if("undefined"==typeof t.prototype||!r||"function"!=typeof t[e])throw new TypeError("Only static functions can be decorated with @Receiver() decorator");if(e in t.prototype)throw new Error("Property with name `"+e.toString()+"` already exists, please rename to avoid conflicts");"string"!=typeof e&&(e=String(e));var n=l.ensureStoreMetadata(t),o=h(y,t,e),i=o.type,a=o.payload,c=o.action,u=o.cancelUncompleted;if(n.actions.hasOwnProperty(i))throw new Error("Method decorated with such type `"+i+"` already exists");if(Array.isArray(c))for(var p=0,f=c.length;p<f;p++){var s=c[p].type;n.actions[s]=[{fn:""+e,options:{cancelUncompleted:u},type:s}]}else n.actions[i]=[{fn:""+e,options:{cancelUncompleted:u},type:i}];r.value[d]={type:i,action:c,payload:a},t.prototype[e]=function(){return t[e].apply(t,arguments)}}},t.Emitter=function y(r){return function(t,e){Object.defineProperty(t,e,{get:function(){return n.getInjector().get(c).emitter(r)}})}},t.EmitterAction=a,t.NgxsEmitPluginModule=u,t.EmitStore=c,t.ofEmittableDispatched=function g(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return f(p(t),"DISPATCHED")},t.ofEmittableSuccessful=function m(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return f(p(t),"SUCCESSFUL")},t.ofEmittableCanceled=function v(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return f(p(t),"CANCELED")},t.ofEmittableErrored=function E(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return f(p(t),"ERRORED")},t.ɵb=f,t.ɵc=n,Object.defineProperty(t,"__esModule",{value:!0})});
//# sourceMappingURL=ngxs-labs-emitter.umd.min.js.map
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { Receiver, Emitter, EmitterAction, NgxsEmitPluginModule, EmitStore, ofEmittableDispatched, ofEmittableSuccessful, ofEmittableCanceled, ofEmittableErrored } from './public_api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEseUtBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { InjectorAccessor } from '../services/injector-accessor.service';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { ensureStoreMetadata } from '@ngxs/store';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {string} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -18,5 +18,3 @@ import { getActionTypeFromInstance } from '@ngxs/store';

const types = {};
/** @type {?} */
let i = receivers.length;
while (i--) {
for (let i = receivers.length - 1; i >= 0; i--) {
/** @type {?} */

@@ -88,2 +86,2 @@ const receiver = receivers[i];

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2YtZW1pdHRhYmxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMtbGFicy9lbWl0dGVyLyIsInNvdXJjZXMiOlsibGliL2NvcmUvb3BlcmF0b3JzL29mLWVtaXR0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFrRixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQVMxSSxTQUFTLGdCQUFnQixDQUFDLFNBQXFCOztVQUNyQyxLQUFLLEdBQVUsRUFBRTs7UUFFbkIsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNO0lBQ3hCLE9BQU8sQ0FBQyxFQUFFLEVBQUU7O2NBQ0YsUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7O2NBQ3ZCLGFBQWEsR0FBRyxPQUFPLFFBQVEsS0FBSyxVQUFVO1FBRXBELElBQUksYUFBYSxFQUFFO1lBQ2YsTUFBTSxJQUFJLFNBQVMsQ0FBQyxzQ0FBc0MsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUN6RTs7Y0FFSyxJQUFJLEdBQXFCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQzs7Y0FDcEQsY0FBYyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7UUFFMUMsSUFBSSxjQUFjLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLGtEQUFrRCxDQUFDLENBQUM7U0FDdkY7UUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztLQUMzQjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7Ozs7O0FBS0QsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEdBQUcsU0FBcUI7SUFDMUQsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGdDQUEwQixDQUFDO0FBQzdFLENBQUM7Ozs7O0FBS0QsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEdBQUcsU0FBcUI7SUFDMUQsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGdDQUEwQixDQUFDO0FBQzdFLENBQUM7Ozs7O0FBS0QsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEdBQUcsU0FBcUI7SUFDeEQsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDRCQUF3QixDQUFDO0FBQzNFLENBQUM7Ozs7O0FBS0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQUcsU0FBcUI7SUFDdkQsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDBCQUF1QixDQUFDO0FBQzFFLENBQUM7Ozs7OztBQU9ELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBWSxFQUFFLE1BQW9CO0lBQzFELE9BQU8sQ0FBQyxNQUFpQyxFQUFFLEVBQUU7UUFDekMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNkLE1BQU0sQ0FBQyxDQUFDLEdBQWtCLEVBQUUsRUFBRTs7a0JBQ3BCLGNBQWMsR0FBRyxLQUFLLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDOztrQkFDN0QsMkJBQTJCLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNO1lBQ3pELE9BQU8sY0FBYyxJQUFJLDJCQUEyQixDQUFDO1FBQ3pELENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxJQUFJLEVBQUUseUJBQXlCLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztZQUN2QixLQUFLO1NBQ1IsQ0FBQyxDQUFDLENBQ04sQ0FBQztJQUNOLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUkVDRUlWRVJfTUVUQV9LRVksIEFjdGlvblN0YXR1cywgQWN0aW9uQ29udGV4dCwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0LCBSZWNlaXZlck1ldGFEYXRhLCBUeXBlcyB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogYGdldFJlY2VpdmVyVHlwZXMoW0NvdW50ZXJTdGF0ZS5pbmNyZW1lbnQsIENvdW50ZXJTdGF0ZS5kZWNyZW1lbnRdKWBcbiAqIHdpbGwgcmV0dXJuIGEgaGFzaG1hcCA9PiBgeyAnQ291bnRlclN0YXRlLmluY3JlbWVudCc6IHRydWUsICdDb3VudGVyU3RhdGUuZGVjcmVtZW50JzogdHJ1ZSB9YFxuICpcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIC0gQSBrZXktdmFsdWUgbWFwIHdoZXJlIGEga2V5IGlzIGEgdHlwZSBhbmQgdmFsdWUgaXMgYHRydWVgXG4gKi9cbmZ1bmN0aW9uIGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogVHlwZXMge1xuICAgIGNvbnN0IHR5cGVzOiBUeXBlcyA9IHt9O1xuXG4gICAgbGV0IGkgPSByZWNlaXZlcnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgY29uc3QgcmVjZWl2ZXIgPSByZWNlaXZlcnNbaV07XG4gICAgICAgIGNvbnN0IGlzTm90RnVuY3Rpb24gPSB0eXBlb2YgcmVjZWl2ZXIgIT09ICdmdW5jdGlvbic7XG5cbiAgICAgICAgaWYgKGlzTm90RnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY2VpdmVyIHNob3VsZCBiZSBhIGZ1bmN0aW9uLCBnb3QgJHtyZWNlaXZlcn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGE6IFJlY2VpdmVyTWV0YURhdGEgPSByZWNlaXZlcltSRUNFSVZFUl9NRVRBX0tFWV07XG4gICAgICAgIGNvbnN0IGlzTm90QW5ub3RhdGVkID0gIW1ldGEgfHwgIW1ldGEudHlwZTtcblxuICAgICAgICBpZiAoaXNOb3RBbm5vdGF0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtyZWNlaXZlci5uYW1lfSBzaG91bGQgYmUgZGVjb3JhdGVkIHVzaW5nIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZXNbbWV0YS50eXBlXSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVEaXNwYXRjaGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlU3VjY2Vzc2Z1bCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuU3VjY2Vzc2Z1bCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUNhbmNlbGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5DYW5jZWxlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUVycm9yZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkVycm9yZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0eXBlcyAtIEhhc2htYXAgdGhhdCBjb250YWlucyBhY3Rpb24gdHlwZXNcbiAqIEBwYXJhbSBzdGF0dXMgLSBTdGF0dXMgb2YgdGhlIGRpc3BhdGNoZWQgYWN0aW9uXG4gKiBAcmV0dXJucyAtIFJ4SlMgZmFjdG9yeSBvcGVyYXRvciBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGUodHlwZXM6IFR5cGVzLCBzdGF0dXM6IEFjdGlvblN0YXR1cyk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHQ+KSA9PiB7XG4gICAgICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaE1hcEhhc1R5cGUgPSB0eXBlc1tnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGN0eC5hY3Rpb24pXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0SGFzVHJhbnNtaXR0ZWRTdGF0dXMgPSBjdHguc3RhdHVzID09PSBzdGF0dXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hNYXBIYXNUeXBlICYmIGNvbnRleHRIYXNUcmFuc21pdHRlZFN0YXR1cztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCh7IGFjdGlvbiwgZXJyb3IgfTogQWN0aW9uQ29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbiksXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogYWN0aW9uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgIH07XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2YtZW1pdHRhYmxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMtbGFicy9lbWl0dGVyLyIsInNvdXJjZXMiOlsibGliL2NvcmUvb3BlcmF0b3JzL29mLWVtaXR0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFrRixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQVMxSSxTQUFTLGdCQUFnQixDQUFDLFNBQXFCOztVQUNyQyxLQUFLLEdBQVUsRUFBRTtJQUV2QixLQUFLLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O2NBQ3RDLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDOztjQUN2QixhQUFhLEdBQUcsT0FBTyxRQUFRLEtBQUssVUFBVTtRQUVwRCxJQUFJLGFBQWEsRUFBRTtZQUNmLE1BQU0sSUFBSSxTQUFTLENBQUMsc0NBQXNDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDekU7O2NBRUssSUFBSSxHQUFxQixRQUFRLENBQUMsaUJBQWlCLENBQUM7O2NBQ3BELGNBQWMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1FBRTFDLElBQUksY0FBYyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxrREFBa0QsQ0FBQyxDQUFDO1NBQ3ZGO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDM0I7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDOzs7OztBQUtELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFHLFNBQXFCO0lBQzFELE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQ0FBMEIsQ0FBQztBQUM3RSxDQUFDOzs7OztBQUtELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFHLFNBQXFCO0lBQzFELE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQ0FBMEIsQ0FBQztBQUM3RSxDQUFDOzs7OztBQUtELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFHLFNBQXFCO0lBQ3hELE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyw0QkFBd0IsQ0FBQztBQUMzRSxDQUFDOzs7OztBQUtELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFHLFNBQXFCO0lBQ3ZELE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQywwQkFBdUIsQ0FBQztBQUMxRSxDQUFDOzs7Ozs7QUFPRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQVksRUFBRSxNQUFvQjtJQUMxRCxPQUFPLENBQUMsTUFBaUMsRUFBRSxFQUFFO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDZCxNQUFNLENBQUMsQ0FBQyxHQUFrQixFQUFFLEVBQUU7O2tCQUNwQixjQUFjLEdBQUcsS0FBSyxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7a0JBQzdELDJCQUEyQixHQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUssTUFBTTtZQUN6RCxPQUFPLGNBQWMsSUFBSSwyQkFBMkIsQ0FBQztRQUN6RCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkMsSUFBSSxFQUFFLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztZQUN2QyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDdkIsS0FBSztTQUNSLENBQUMsQ0FBQyxDQUNOLENBQUM7SUFDTixDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT3BlcmF0b3JGdW5jdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFJFQ0VJVkVSX01FVEFfS0VZLCBBY3Rpb25TdGF0dXMsIEFjdGlvbkNvbnRleHQsIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dCwgUmVjZWl2ZXJNZXRhRGF0YSwgVHlwZXMgfSBmcm9tICcuLi9pbnRlcm5hbC9pbnRlcm5hbHMnO1xuXG4vKipcbiAqIGBnZXRSZWNlaXZlclR5cGVzKFtDb3VudGVyU3RhdGUuaW5jcmVtZW50LCBDb3VudGVyU3RhdGUuZGVjcmVtZW50XSlgXG4gKiB3aWxsIHJldHVybiBhIGhhc2htYXAgPT4gYHsgJ0NvdW50ZXJTdGF0ZS5pbmNyZW1lbnQnOiB0cnVlLCAnQ291bnRlclN0YXRlLmRlY3JlbWVudCc6IHRydWUgfWBcbiAqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zXG4gKiBAcmV0dXJucyAtIEEga2V5LXZhbHVlIG1hcCB3aGVyZSBhIGtleSBpcyBhIHR5cGUgYW5kIHZhbHVlIGlzIGB0cnVlYFxuICovXG5mdW5jdGlvbiBnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVyczogRnVuY3Rpb25bXSk6IFR5cGVzIHtcbiAgICBjb25zdCB0eXBlczogVHlwZXMgPSB7fTtcblxuICAgIGZvciAobGV0IGkgPSByZWNlaXZlcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgcmVjZWl2ZXIgPSByZWNlaXZlcnNbaV07XG4gICAgICAgIGNvbnN0IGlzTm90RnVuY3Rpb24gPSB0eXBlb2YgcmVjZWl2ZXIgIT09ICdmdW5jdGlvbic7XG5cbiAgICAgICAgaWYgKGlzTm90RnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY2VpdmVyIHNob3VsZCBiZSBhIGZ1bmN0aW9uLCBnb3QgJHtyZWNlaXZlcn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGE6IFJlY2VpdmVyTWV0YURhdGEgPSByZWNlaXZlcltSRUNFSVZFUl9NRVRBX0tFWV07XG4gICAgICAgIGNvbnN0IGlzTm90QW5ub3RhdGVkID0gIW1ldGEgfHwgIW1ldGEudHlwZTtcblxuICAgICAgICBpZiAoaXNOb3RBbm5vdGF0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtyZWNlaXZlci5uYW1lfSBzaG91bGQgYmUgZGVjb3JhdGVkIHVzaW5nIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZXNbbWV0YS50eXBlXSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVEaXNwYXRjaGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlU3VjY2Vzc2Z1bCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuU3VjY2Vzc2Z1bCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUNhbmNlbGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5DYW5jZWxlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUVycm9yZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkVycm9yZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0eXBlcyAtIEhhc2htYXAgdGhhdCBjb250YWlucyBhY3Rpb24gdHlwZXNcbiAqIEBwYXJhbSBzdGF0dXMgLSBTdGF0dXMgb2YgdGhlIGRpc3BhdGNoZWQgYWN0aW9uXG4gKiBAcmV0dXJucyAtIFJ4SlMgZmFjdG9yeSBvcGVyYXRvciBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGUodHlwZXM6IFR5cGVzLCBzdGF0dXM6IEFjdGlvblN0YXR1cyk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHQ+KSA9PiB7XG4gICAgICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaE1hcEhhc1R5cGUgPSB0eXBlc1tnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGN0eC5hY3Rpb24pXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0SGFzVHJhbnNtaXR0ZWRTdGF0dXMgPSBjdHguc3RhdHVzID09PSBzdGF0dXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hNYXBIYXNUeXBlICYmIGNvbnRleHRIYXNUcmFuc21pdHRlZFN0YXR1cztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCh7IGFjdGlvbiwgZXJyb3IgfTogQWN0aW9uQ29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbiksXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogYWN0aW9uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgIH07XG59XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -27,2 +27,3 @@ import { Injectable } from '@angular/core';

/**
* @private
* @template T, U

@@ -49,2 +50,3 @@ * @param {?} metadata - Receiver function metadata

/**
* @private
* @template T, U

@@ -72,2 +74,2 @@ * @param {?} metadata - Receiver function metadata

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMtbGFicy9lbWl0dGVyLyIsInNvdXJjZXMiOlsibGliL2NvcmUvc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFDSCxpQkFBaUIsRUFHakIsbUJBQW1CLEVBQ25CLG1DQUFtQyxFQUNuQyxpQ0FBaUMsRUFDcEMsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQixNQUFNLE9BQU8sU0FBVSxTQUFRLEtBQUs7Ozs7OztJQUt6QixPQUFPLENBQW1CLFFBQWtCOztjQUN6QyxRQUFRLEdBQXFCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztRQUU5RCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsUUFBUSxDQUFDLElBQUksb0JBQW9CLENBQUMsQ0FBQztTQUNsSDtRQUVELE9BQU87WUFDSCxJQUFJLEVBQUUsQ0FBQyxPQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQU8sUUFBUSxFQUFFLE9BQU8sQ0FBQztZQUNuRSxRQUFRLEVBQUUsQ0FBQyxRQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQU8sUUFBUSxFQUFFLFFBQVEsQ0FBQztTQUM1RSxDQUFDO0lBQ04sQ0FBQzs7Ozs7OztJQU9PLGNBQWMsQ0FBTyxRQUEwQixFQUFFLE9BQVc7UUFDaEUsYUFBYSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDOztjQUU3Qix5QkFBeUIsR0FBRyxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTO1FBQ2xHLElBQUkseUJBQXlCLEVBQUU7WUFDM0IsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDOUI7Y0FFSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFFBQVE7UUFFM0IsSUFBSSxNQUFNLEVBQUU7O2tCQUNGLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsbUNBQW1DLENBQUkscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNoRztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Ozs7Ozs7SUFPTyxZQUFZLENBQU8sUUFBMEIsRUFBRSxRQUFjO1FBQ2pFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM1QjtRQUVELGFBQWEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztjQUU3QixFQUFFLE1BQU0sRUFBRSxHQUFHLFFBQVE7UUFFM0IsSUFBSSxNQUFNLEVBQUU7O2tCQUNGLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUMscUJBQXFCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUM1RjtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FDaEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDeEQsQ0FBQztJQUNOLENBQUM7OztZQWhFSixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRW1pdHRlckFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIFJFQ0VJVkVSX01FVEFfS0VZLFxuICAgIEVtaXR0YWJsZSxcbiAgICBSZWNlaXZlck1ldGFEYXRhLFxuICAgIGZsYXR0ZW5Db25zdHJ1Y3RvcnMsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yU2luZ2xlRGlzcGF0Y2hpbmcsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yTWFueURpc3BhdGNoaW5nXG59IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbWl0U3RvcmUgZXh0ZW5kcyBTdG9yZSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb24gZnJvbSB0aGUgc3RvcmVcbiAgICAgKiBAcmV0dXJucyAtIEEgcGxhaW4gb2JqZWN0IHdpdGggYW4gYGVtaXRgIGZ1bmN0aW9uIGZvciBjYWxsaW5nIGVtaXR0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZW1pdHRlcjxUID0gYW55LCBVID0gYW55PihyZWNlaXZlcjogRnVuY3Rpb24pOiBFbWl0dGFibGU8VCwgVT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSA9IHJlY2VpdmVyW1JFQ0VJVkVSX01FVEFfS0VZXTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEkgY2FuJ3Qgc2VlbSB0byBmaW5kIHN0YXRpYyBtZXRhZGF0YS4gSGF2ZSB5b3UgZGVjb3JhdGVkICR7cmVjZWl2ZXIubmFtZX0gd2l0aCBAUmVjZWl2ZXIoKT9gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbWl0OiAocGF5bG9hZD86IFQpID0+IHRoaXMuZGlzcGF0Y2hTaW5nbGU8VCwgVT4obWV0YWRhdGEsIHBheWxvYWQpLFxuICAgICAgICAgICAgZW1pdE1hbnk6IChwYXlsb2Fkcz86IFRbXSkgPT4gdGhpcy5kaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGEsIHBheWxvYWRzKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaFNpbmdsZTxULCBVPihtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSwgcGF5bG9hZD86IFQpOiBPYnNlcnZhYmxlPFU+IHtcbiAgICAgICAgRW1pdHRlckFjdGlvbi50eXBlID0gbWV0YWRhdGEudHlwZTtcblxuICAgICAgICBjb25zdCBzaG91bGRBcHBseURlZmF1bHRQYXlsb2FkID0gdHlwZW9mIHBheWxvYWQgPT09ICd1bmRlZmluZWQnICYmIG1ldGFkYXRhLnBheWxvYWQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHNob3VsZEFwcGx5RGVmYXVsdFBheWxvYWQpIHtcbiAgICAgICAgICAgIHBheWxvYWQgPSBtZXRhZGF0YS5wYXlsb2FkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0ZvclNpbmdsZURpc3BhdGNoaW5nPFQ+KGZsYXR0ZW5lZENvbnN0cnVjdG9ycywgcGF5bG9hZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gobmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWRzIC0gQXJyYXkgd2l0aCBkYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWRzPzogVFtdKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXlsb2FkcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0Zvck1hbnlEaXNwYXRjaGluZyhmbGF0dGVuZWRDb25zdHJ1Y3RvcnMsIHBheWxvYWRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChcbiAgICAgICAgICAgIHBheWxvYWRzLm1hcCgocGF5bG9hZCkgPT4gbmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMtbGFicy9lbWl0dGVyLyIsInNvdXJjZXMiOlsibGliL2NvcmUvc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFDSCxpQkFBaUIsRUFHakIsbUJBQW1CLEVBQ25CLG1DQUFtQyxFQUNuQyxpQ0FBaUMsRUFDcEMsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQixNQUFNLE9BQU8sU0FBVSxTQUFRLEtBQUs7Ozs7OztJQUt6QixPQUFPLENBQW1CLFFBQWtCOztjQUN6QyxRQUFRLEdBQXFCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztRQUU5RCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsUUFBUSxDQUFDLElBQUksb0JBQW9CLENBQUMsQ0FBQztTQUNsSDtRQUVELE9BQU87WUFDSCxJQUFJLEVBQUUsQ0FBQyxPQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQU8sUUFBUSxFQUFFLE9BQU8sQ0FBQztZQUNuRSxRQUFRLEVBQUUsQ0FBQyxRQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQU8sUUFBUSxFQUFFLFFBQVEsQ0FBQztTQUM1RSxDQUFDO0lBQ04sQ0FBQzs7Ozs7Ozs7SUFPTyxjQUFjLENBQU8sUUFBMEIsRUFBRSxPQUFXO1FBQ2hFLGFBQWEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQzs7Y0FFN0IseUJBQXlCLEdBQUcsT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUztRQUNsRyxJQUFJLHlCQUF5QixFQUFFO1lBQzNCLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQzlCO2NBRUssRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRO1FBRTNCLElBQUksTUFBTSxFQUFFOztrQkFDRixxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLG1DQUFtQyxDQUFJLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDaEc7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs7Ozs7OztJQU9PLFlBQVksQ0FBTyxRQUEwQixFQUFFLFFBQWM7UUFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzVCO1FBRUQsYUFBYSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO2NBRTdCLEVBQUUsTUFBTSxFQUFFLEdBQUcsUUFBUTtRQUUzQixJQUFJLE1BQU0sRUFBRTs7a0JBQ0YscUJBQXFCLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1lBQ3pELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxxQkFBcUIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQzVGO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUNoQixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUN4RCxDQUFDO0lBQ04sQ0FBQzs7O1lBaEVKLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBFbWl0dGVyQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb25zJztcbmltcG9ydCB7XG4gICAgUkVDRUlWRVJfTUVUQV9LRVksXG4gICAgRW1pdHRhYmxlLFxuICAgIFJlY2VpdmVyTWV0YURhdGEsXG4gICAgZmxhdHRlbkNvbnN0cnVjdG9ycyxcbiAgICBjb25zdHJ1Y3RFdmVudHNGb3JTaW5nbGVEaXNwYXRjaGluZyxcbiAgICBjb25zdHJ1Y3RFdmVudHNGb3JNYW55RGlzcGF0Y2hpbmdcbn0gZnJvbSAnLi4vaW50ZXJuYWwvaW50ZXJuYWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVtaXRTdG9yZSBleHRlbmRzIFN0b3JlIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcmVjZWl2ZXIgLSBSZWZlcmVuY2UgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbiBmcm9tIHRoZSBzdG9yZVxuICAgICAqIEByZXR1cm5zIC0gQSBwbGFpbiBvYmplY3Qgd2l0aCBhbiBgZW1pdGAgZnVuY3Rpb24gZm9yIGNhbGxpbmcgZW1pdHRlclxuICAgICAqL1xuICAgIHB1YmxpYyBlbWl0dGVyPFQgPSBhbnksIFUgPSBhbnk+KHJlY2VpdmVyOiBGdW5jdGlvbik6IEVtaXR0YWJsZTxULCBVPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhOiBSZWNlaXZlck1ldGFEYXRhID0gcmVjZWl2ZXJbUkVDRUlWRVJfTUVUQV9LRVldO1xuXG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSSBjYW4ndCBzZWVtIHRvIGZpbmQgc3RhdGljIG1ldGFkYXRhLiBIYXZlIHlvdSBkZWNvcmF0ZWQgJHtyZWNlaXZlci5uYW1lfSB3aXRoIEBSZWNlaXZlcigpP2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVtaXQ6IChwYXlsb2FkPzogVCkgPT4gdGhpcy5kaXNwYXRjaFNpbmdsZTxULCBVPihtZXRhZGF0YSwgcGF5bG9hZCksXG4gICAgICAgICAgICBlbWl0TWFueTogKHBheWxvYWRzPzogVFtdKSA9PiB0aGlzLmRpc3BhdGNoTWFueTxULCBVPihtZXRhZGF0YSwgcGF5bG9hZHMpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG1ldGFkYXRhIC0gUmVjZWl2ZXIgZnVuY3Rpb24gbWV0YWRhdGFcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIERhdGEgdG8gZGlzcGF0Y2hcbiAgICAgKiBAcmV0dXJucyAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBldmVudHMgYWZ0ZXIgZGlzcGF0Y2hcbiAgICAgKi9cbiAgICBwcml2YXRlIGRpc3BhdGNoU2luZ2xlPFQsIFU+KG1ldGFkYXRhOiBSZWNlaXZlck1ldGFEYXRhLCBwYXlsb2FkPzogVCk6IE9ic2VydmFibGU8VT4ge1xuICAgICAgICBFbWl0dGVyQWN0aW9uLnR5cGUgPSBtZXRhZGF0YS50eXBlO1xuXG4gICAgICAgIGNvbnN0IHNob3VsZEFwcGx5RGVmYXVsdFBheWxvYWQgPSB0eXBlb2YgcGF5bG9hZCA9PT0gJ3VuZGVmaW5lZCcgJiYgbWV0YWRhdGEucGF5bG9hZCAhPT0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoc2hvdWxkQXBwbHlEZWZhdWx0UGF5bG9hZCkge1xuICAgICAgICAgICAgcGF5bG9hZCA9IG1ldGFkYXRhLnBheWxvYWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGFjdGlvbiB9ID0gbWV0YWRhdGE7XG5cbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgZmxhdHRlbmVkQ29uc3RydWN0b3JzID0gZmxhdHRlbkNvbnN0cnVjdG9ycyhhY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goY29uc3RydWN0RXZlbnRzRm9yU2luZ2xlRGlzcGF0Y2hpbmc8VD4oZmxhdHRlbmVkQ29uc3RydWN0b3JzLCBwYXlsb2FkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChuZXcgRW1pdHRlckFjdGlvbihwYXlsb2FkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG1ldGFkYXRhIC0gUmVjZWl2ZXIgZnVuY3Rpb24gbWV0YWRhdGFcbiAgICAgKiBAcGFyYW0gcGF5bG9hZHMgLSBBcnJheSB3aXRoIGRhdGEgdG8gZGlzcGF0Y2hcbiAgICAgKiBAcmV0dXJucyAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBldmVudHMgYWZ0ZXIgZGlzcGF0Y2hcbiAgICAgKi9cbiAgICBwcml2YXRlIGRpc3BhdGNoTWFueTxULCBVPihtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSwgcGF5bG9hZHM/OiBUW10pOiBPYnNlcnZhYmxlPFU+IHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBheWxvYWRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goW10pO1xuICAgICAgICB9XG5cbiAgICAgICAgRW1pdHRlckFjdGlvbi50eXBlID0gbWV0YWRhdGEudHlwZTtcblxuICAgICAgICBjb25zdCB7IGFjdGlvbiB9ID0gbWV0YWRhdGE7XG5cbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgZmxhdHRlbmVkQ29uc3RydWN0b3JzID0gZmxhdHRlbkNvbnN0cnVjdG9ycyhhY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goY29uc3RydWN0RXZlbnRzRm9yTWFueURpc3BhdGNoaW5nKGZsYXR0ZW5lZENvbnN0cnVjdG9ycywgcGF5bG9hZHMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFxuICAgICAgICAgICAgcGF5bG9hZHMubWFwKChwYXlsb2FkKSA9PiBuZXcgRW1pdHRlckFjdGlvbihwYXlsb2FkKSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -43,5 +43,6 @@ import { Injectable, Injector } from '@angular/core';

* @type {?}
* @private
*/
InjectorAccessor.injector;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci8iLCJzb3VyY2VzIjpbImxpYi9jb3JlL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTXJELE1BQU0sT0FBTyxnQkFBZ0I7Ozs7OztJQVd6QixZQUFZLFFBQWtCO1FBQzFCLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDekMsQ0FBQzs7OztJQUtNLE1BQU0sQ0FBQyxXQUFXO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztTQUMxRTtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDOzs7OztBQXBCYyx5QkFBUSxHQUFvQixJQUFJLENBQUM7O1lBTG5ELFVBQVU7Ozs7WUFMVSxRQUFROzs7Ozs7O0lBVXpCLDBCQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQWxsb3dzIG11bHRpcGxlIGRlY29yYXRvcnMgdG8gZ2V0IGFjY2VzcyB0byB0aGUgREkgc3RvcmVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEluamVjdG9yQWNjZXNzb3Ige1xuICAgIC8qKlxuICAgICAqIEluamVjdG9yIGZvciBhY2Nlc3NpbmcgRElcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBpbmplY3RvcjogSW5qZWN0b3IgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgSW5qZWN0b3JBY2Nlc3NvciBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIGluamVjdG9yIC0gUm9vdCBpbmplY3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBJbmplY3RvckFjY2Vzc29yLmluamVjdG9yID0gaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgLSBFcnJvciBpZiBgTmd4c0VtaXRQbHVnaW5Nb2R1bGVgIGlzIG5vdCBpbXBvcnRlZCBvciBpbmplY3RvciBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5qZWN0b3IoKTogbmV2ZXIgfCBJbmplY3RvciB7XG4gICAgICAgIGlmICghdGhpcy5pbmplY3Rvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UndmUgZm9yZ290dGVuIHRvIGltcG9ydCBcXGBOZ3hzRW1pdFBsdWdpbk1vZHVsZVxcYGApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3I7XG4gICAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci8iLCJzb3VyY2VzIjpbImxpYi9jb3JlL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTXJELE1BQU0sT0FBTyxnQkFBZ0I7Ozs7OztJQVd6QixZQUFZLFFBQWtCO1FBQzFCLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDekMsQ0FBQzs7OztJQUtNLE1BQU0sQ0FBQyxXQUFXO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztTQUMxRTtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDOzs7OztBQXBCYyx5QkFBUSxHQUFvQixJQUFJLENBQUM7O1lBTG5ELFVBQVU7Ozs7WUFMVSxRQUFROzs7Ozs7OztJQVV6QiwwQkFBZ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEFsbG93cyBtdWx0aXBsZSBkZWNvcmF0b3JzIHRvIGdldCBhY2Nlc3MgdG8gdGhlIERJIHN0b3JlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbmplY3RvckFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBJbmplY3RvciBmb3IgYWNjZXNzaW5nIERJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5qZWN0b3I6IEluamVjdG9yIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIEluamVjdG9yQWNjZXNzb3IgaW5zdGFuY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmplY3RvciAtIFJvb3QgaW5qZWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgSW5qZWN0b3JBY2Nlc3Nvci5pbmplY3RvciA9IGluamVjdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gRXJyb3IgaWYgYE5neHNFbWl0UGx1Z2luTW9kdWxlYCBpcyBub3QgaW1wb3J0ZWQgb3IgaW5qZWN0b3IgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEluamVjdG9yKCk6IG5ldmVyIHwgSW5qZWN0b3Ige1xuICAgICAgICBpZiAoIXRoaXMuaW5qZWN0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91J3ZlIGZvcmdvdHRlbiB0byBpbXBvcnQgXFxgTmd4c0VtaXRQbHVnaW5Nb2R1bGVcXGBgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yO1xuICAgIH1cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -33,5 +33,8 @@ import { NgModule, Self } from '@angular/core';

if (false) {
/** @type {?} */
/**
* @type {?}
* @private
*/
NgxsEmitPluginModule.prototype.injectorAccessor;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvIiwic291cmNlcyI6WyJsaWIvZW1pdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHN0UsTUFBTSxPQUFPLG9CQUFvQjs7OztJQUM3QixZQUE0QixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7Ozs7SUFLM0QsTUFBTSxDQUFDLE9BQU87UUFDakIsT0FBTztZQUNILFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDO1NBQzNDLENBQUM7SUFDTixDQUFDOzs7WUFaSixRQUFROzs7O1lBRkEsZ0JBQWdCLHVCQUlSLElBQUk7Ozs7SUFBTCxnREFBa0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycywgU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFbWl0U3RvcmUgfSBmcm9tICcuL2NvcmUvc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEluamVjdG9yQWNjZXNzb3IgfSBmcm9tICcuL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZSc7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgTmd4c0VtaXRQbHVnaW5Nb2R1bGUge1xuICAgIGNvbnN0cnVjdG9yKEBTZWxmKCkgcHJpdmF0ZSBpbmplY3RvckFjY2Vzc29yOiBJbmplY3RvckFjY2Vzc29yKSB7fVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgLSBBIHdyYXBwZXIgYXJvdW5kIGBOZ01vZHVsZWBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hzRW1pdFBsdWdpbk1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IE5neHNFbWl0UGx1Z2luTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbRW1pdFN0b3JlLCBJbmplY3RvckFjY2Vzc29yXVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvIiwic291cmNlcyI6WyJsaWIvZW1pdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHN0UsTUFBTSxPQUFPLG9CQUFvQjs7OztJQUM3QixZQUE0QixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7Ozs7SUFLM0QsTUFBTSxDQUFDLE9BQU87UUFDakIsT0FBTztZQUNILFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDO1NBQzNDLENBQUM7SUFDTixDQUFDOzs7WUFaSixRQUFROzs7O1lBRkEsZ0JBQWdCLHVCQUlSLElBQUk7Ozs7Ozs7SUFBTCxnREFBa0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycywgU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFbWl0U3RvcmUgfSBmcm9tICcuL2NvcmUvc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEluamVjdG9yQWNjZXNzb3IgfSBmcm9tICcuL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZSc7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgTmd4c0VtaXRQbHVnaW5Nb2R1bGUge1xuICAgIGNvbnN0cnVjdG9yKEBTZWxmKCkgcHJpdmF0ZSBpbmplY3RvckFjY2Vzc29yOiBJbmplY3RvckFjY2Vzc29yKSB7fVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgLSBBIHdyYXBwZXIgYXJvdW5kIGBOZ01vZHVsZWBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hzRW1pdFBsdWdpbk1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IE5neHNFbWl0UGx1Z2luTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbRW1pdFN0b3JlLCBJbmplY3RvckFjY2Vzc29yXVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ export { Receiver } from './lib/core/decorators/receiver';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { Receiver, Emitter, EmitterAction, NgxsEmitPluginModule, EmitStore, ofEmittableDispatched, ofEmittableSuccessful, ofEmittableCanceled, ofEmittableErrored } from './public_api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEseUtBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { InjectorAccessor } from '../services/injector-accessor.service';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { ensureStoreMetadata } from '@ngxs/store';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {string} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -18,5 +18,3 @@ import { getActionTypeFromInstance } from '@ngxs/store';

var types = {};
/** @type {?} */
var i = receivers.length;
while (i--) {
for (var i = receivers.length - 1; i >= 0; i--) {
/** @type {?} */

@@ -107,2 +105,2 @@ var receiver = receivers[i];

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2YtZW1pdHRhYmxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMtbGFicy9lbWl0dGVyLyIsInNvdXJjZXMiOlsibGliL2NvcmUvb3BlcmF0b3JzL29mLWVtaXR0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFrRixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQVMxSSxTQUFTLGdCQUFnQixDQUFDLFNBQXFCOztRQUNyQyxLQUFLLEdBQVUsRUFBRTs7UUFFbkIsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNO0lBQ3hCLE9BQU8sQ0FBQyxFQUFFLEVBQUU7O1lBQ0YsUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7O1lBQ3ZCLGFBQWEsR0FBRyxPQUFPLFFBQVEsS0FBSyxVQUFVO1FBRXBELElBQUksYUFBYSxFQUFFO1lBQ2YsTUFBTSxJQUFJLFNBQVMsQ0FBQyx3Q0FBc0MsUUFBVSxDQUFDLENBQUM7U0FDekU7O1lBRUssSUFBSSxHQUFxQixRQUFRLENBQUMsaUJBQWlCLENBQUM7O1lBQ3BELGNBQWMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1FBRTFDLElBQUksY0FBYyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUksUUFBUSxDQUFDLElBQUkscURBQWtELENBQUMsQ0FBQztTQUN2RjtRQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQzNCO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQzs7Ozs7QUFLRCxNQUFNLFVBQVUscUJBQXFCO0lBQUMsbUJBQXdCO1NBQXhCLFVBQXdCLEVBQXhCLHFCQUF3QixFQUF4QixJQUF3QjtRQUF4Qiw4QkFBd0I7O0lBQzFELE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQ0FBMEIsQ0FBQztBQUM3RSxDQUFDOzs7OztBQUtELE1BQU0sVUFBVSxxQkFBcUI7SUFBQyxtQkFBd0I7U0FBeEIsVUFBd0IsRUFBeEIscUJBQXdCLEVBQXhCLElBQXdCO1FBQXhCLDhCQUF3Qjs7SUFDMUQsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGdDQUEwQixDQUFDO0FBQzdFLENBQUM7Ozs7O0FBS0QsTUFBTSxVQUFVLG1CQUFtQjtJQUFDLG1CQUF3QjtTQUF4QixVQUF3QixFQUF4QixxQkFBd0IsRUFBeEIsSUFBd0I7UUFBeEIsOEJBQXdCOztJQUN4RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsNEJBQXdCLENBQUM7QUFDM0UsQ0FBQzs7Ozs7QUFLRCxNQUFNLFVBQVUsa0JBQWtCO0lBQUMsbUJBQXdCO1NBQXhCLFVBQXdCLEVBQXhCLHFCQUF3QixFQUF4QixJQUF3QjtRQUF4Qiw4QkFBd0I7O0lBQ3ZELE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQywwQkFBdUIsQ0FBQztBQUMxRSxDQUFDOzs7Ozs7QUFPRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQVksRUFBRSxNQUFvQjtJQUMxRCxPQUFPLFVBQUMsTUFBaUM7UUFDckMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNkLE1BQU0sQ0FBQyxVQUFDLEdBQWtCOztnQkFDaEIsY0FBYyxHQUFHLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7O2dCQUM3RCwyQkFBMkIsR0FBRyxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU07WUFDekQsT0FBTyxjQUFjLElBQUksMkJBQTJCLENBQUM7UUFDekQsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLFVBQUMsRUFBZ0M7Z0JBQTlCLGtCQUFNLEVBQUUsZ0JBQUs7WUFBc0IsT0FBQSxDQUFDO2dCQUN2QyxJQUFJLEVBQUUseUJBQXlCLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0JBQ3ZCLEtBQUssT0FBQTthQUNSLENBQUM7UUFKd0MsQ0FJeEMsQ0FBQyxDQUNOLENBQUM7SUFDTixDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT3BlcmF0b3JGdW5jdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFJFQ0VJVkVSX01FVEFfS0VZLCBBY3Rpb25TdGF0dXMsIEFjdGlvbkNvbnRleHQsIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dCwgUmVjZWl2ZXJNZXRhRGF0YSwgVHlwZXMgfSBmcm9tICcuLi9pbnRlcm5hbC9pbnRlcm5hbHMnO1xuXG4vKipcbiAqIGBnZXRSZWNlaXZlclR5cGVzKFtDb3VudGVyU3RhdGUuaW5jcmVtZW50LCBDb3VudGVyU3RhdGUuZGVjcmVtZW50XSlgXG4gKiB3aWxsIHJldHVybiBhIGhhc2htYXAgPT4gYHsgJ0NvdW50ZXJTdGF0ZS5pbmNyZW1lbnQnOiB0cnVlLCAnQ291bnRlclN0YXRlLmRlY3JlbWVudCc6IHRydWUgfWBcbiAqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zXG4gKiBAcmV0dXJucyAtIEEga2V5LXZhbHVlIG1hcCB3aGVyZSBhIGtleSBpcyBhIHR5cGUgYW5kIHZhbHVlIGlzIGB0cnVlYFxuICovXG5mdW5jdGlvbiBnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVyczogRnVuY3Rpb25bXSk6IFR5cGVzIHtcbiAgICBjb25zdCB0eXBlczogVHlwZXMgPSB7fTtcblxuICAgIGxldCBpID0gcmVjZWl2ZXJzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIGNvbnN0IHJlY2VpdmVyID0gcmVjZWl2ZXJzW2ldO1xuICAgICAgICBjb25zdCBpc05vdEZ1bmN0aW9uID0gdHlwZW9mIHJlY2VpdmVyICE9PSAnZnVuY3Rpb24nO1xuXG4gICAgICAgIGlmIChpc05vdEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSZWNlaXZlciBzaG91bGQgYmUgYSBmdW5jdGlvbiwgZ290ICR7cmVjZWl2ZXJ9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZXRhOiBSZWNlaXZlck1ldGFEYXRhID0gcmVjZWl2ZXJbUkVDRUlWRVJfTUVUQV9LRVldO1xuICAgICAgICBjb25zdCBpc05vdEFubm90YXRlZCA9ICFtZXRhIHx8ICFtZXRhLnR5cGU7XG5cbiAgICAgICAgaWYgKGlzTm90QW5ub3RhdGVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cmVjZWl2ZXIubmFtZX0gc2hvdWxkIGJlIGRlY29yYXRlZCB1c2luZyBAUmVjZWl2ZXIoKSBkZWNvcmF0b3JgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGVzW21ldGEudHlwZV0gPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlcztcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlRGlzcGF0Y2hlZCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuRGlzcGF0Y2hlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZVN1Y2Nlc3NmdWwoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLlN1Y2Nlc3NmdWwpO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVDYW5jZWxlZCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuQ2FuY2VsZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVFcnJvcmVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5FcnJvcmVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gdHlwZXMgLSBIYXNobWFwIHRoYXQgY29udGFpbnMgYWN0aW9uIHR5cGVzXG4gKiBAcGFyYW0gc3RhdHVzIC0gU3RhdHVzIG9mIHRoZSBkaXNwYXRjaGVkIGFjdGlvblxuICogQHJldHVybnMgLSBSeEpTIGZhY3Rvcnkgb3BlcmF0b3IgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlKHR5cGVzOiBUeXBlcywgc3RhdHVzOiBBY3Rpb25TdGF0dXMpOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxBY3Rpb25Db250ZXh0PikgPT4ge1xuICAgICAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGN0eDogQWN0aW9uQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hNYXBIYXNUeXBlID0gdHlwZXNbZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZShjdHguYWN0aW9uKV07XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGV4dEhhc1RyYW5zbWl0dGVkU3RhdHVzID0gY3R4LnN0YXR1cyA9PT0gc3RhdHVzO1xuICAgICAgICAgICAgICAgIHJldHVybiBoYXNoTWFwSGFzVHlwZSAmJiBjb250ZXh0SGFzVHJhbnNtaXR0ZWRTdGF0dXM7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoeyBhY3Rpb24sIGVycm9yIH06IEFjdGlvbkNvbnRleHQpID0+ICh7XG4gICAgICAgICAgICAgICAgdHlwZTogZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZShhY3Rpb24pLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICB9O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2YtZW1pdHRhYmxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMtbGFicy9lbWl0dGVyLyIsInNvdXJjZXMiOlsibGliL2NvcmUvb3BlcmF0b3JzL29mLWVtaXR0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFrRixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQVMxSSxTQUFTLGdCQUFnQixDQUFDLFNBQXFCOztRQUNyQyxLQUFLLEdBQVUsRUFBRTtJQUV2QixLQUFLLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O1lBQ3RDLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDOztZQUN2QixhQUFhLEdBQUcsT0FBTyxRQUFRLEtBQUssVUFBVTtRQUVwRCxJQUFJLGFBQWEsRUFBRTtZQUNmLE1BQU0sSUFBSSxTQUFTLENBQUMsd0NBQXNDLFFBQVUsQ0FBQyxDQUFDO1NBQ3pFOztZQUVLLElBQUksR0FBcUIsUUFBUSxDQUFDLGlCQUFpQixDQUFDOztZQUNwRCxjQUFjLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtRQUUxQyxJQUFJLGNBQWMsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFJLFFBQVEsQ0FBQyxJQUFJLHFEQUFrRCxDQUFDLENBQUM7U0FDdkY7UUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztLQUMzQjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7Ozs7O0FBS0QsTUFBTSxVQUFVLHFCQUFxQjtJQUFDLG1CQUF3QjtTQUF4QixVQUF3QixFQUF4QixxQkFBd0IsRUFBeEIsSUFBd0I7UUFBeEIsOEJBQXdCOztJQUMxRCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsZ0NBQTBCLENBQUM7QUFDN0UsQ0FBQzs7Ozs7QUFLRCxNQUFNLFVBQVUscUJBQXFCO0lBQUMsbUJBQXdCO1NBQXhCLFVBQXdCLEVBQXhCLHFCQUF3QixFQUF4QixJQUF3QjtRQUF4Qiw4QkFBd0I7O0lBQzFELE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQ0FBMEIsQ0FBQztBQUM3RSxDQUFDOzs7OztBQUtELE1BQU0sVUFBVSxtQkFBbUI7SUFBQyxtQkFBd0I7U0FBeEIsVUFBd0IsRUFBeEIscUJBQXdCLEVBQXhCLElBQXdCO1FBQXhCLDhCQUF3Qjs7SUFDeEQsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDRCQUF3QixDQUFDO0FBQzNFLENBQUM7Ozs7O0FBS0QsTUFBTSxVQUFVLGtCQUFrQjtJQUFDLG1CQUF3QjtTQUF4QixVQUF3QixFQUF4QixxQkFBd0IsRUFBeEIsSUFBd0I7UUFBeEIsOEJBQXdCOztJQUN2RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsMEJBQXVCLENBQUM7QUFDMUUsQ0FBQzs7Ozs7O0FBT0QsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFZLEVBQUUsTUFBb0I7SUFDMUQsT0FBTyxVQUFDLE1BQWlDO1FBQ3JDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDZCxNQUFNLENBQUMsVUFBQyxHQUFrQjs7Z0JBQ2hCLGNBQWMsR0FBRyxLQUFLLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDOztnQkFDN0QsMkJBQTJCLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNO1lBQ3pELE9BQU8sY0FBYyxJQUFJLDJCQUEyQixDQUFDO1FBQ3pELENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxVQUFDLEVBQWdDO2dCQUE5QixrQkFBTSxFQUFFLGdCQUFLO1lBQXNCLE9BQUEsQ0FBQztnQkFDdkMsSUFBSSxFQUFFLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztnQkFDdkMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2dCQUN2QixLQUFLLE9BQUE7YUFDUixDQUFDO1FBSndDLENBSXhDLENBQUMsQ0FDTixDQUFDO0lBQ04sQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBSRUNFSVZFUl9NRVRBX0tFWSwgQWN0aW9uU3RhdHVzLCBBY3Rpb25Db250ZXh0LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQsIFJlY2VpdmVyTWV0YURhdGEsIFR5cGVzIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW50ZXJuYWxzJztcblxuLyoqXG4gKiBgZ2V0UmVjZWl2ZXJUeXBlcyhbQ291bnRlclN0YXRlLmluY3JlbWVudCwgQ291bnRlclN0YXRlLmRlY3JlbWVudF0pYFxuICogd2lsbCByZXR1cm4gYSBoYXNobWFwID0+IGB7ICdDb3VudGVyU3RhdGUuaW5jcmVtZW50JzogdHJ1ZSwgJ0NvdW50ZXJTdGF0ZS5kZWNyZW1lbnQnOiB0cnVlIH1gXG4gKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9uc1xuICogQHJldHVybnMgLSBBIGtleS12YWx1ZSBtYXAgd2hlcmUgYSBrZXkgaXMgYSB0eXBlIGFuZCB2YWx1ZSBpcyBgdHJ1ZWBcbiAqL1xuZnVuY3Rpb24gZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBUeXBlcyB7XG4gICAgY29uc3QgdHlwZXM6IFR5cGVzID0ge307XG5cbiAgICBmb3IgKGxldCBpID0gcmVjZWl2ZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IHJlY2VpdmVyID0gcmVjZWl2ZXJzW2ldO1xuICAgICAgICBjb25zdCBpc05vdEZ1bmN0aW9uID0gdHlwZW9mIHJlY2VpdmVyICE9PSAnZnVuY3Rpb24nO1xuXG4gICAgICAgIGlmIChpc05vdEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSZWNlaXZlciBzaG91bGQgYmUgYSBmdW5jdGlvbiwgZ290ICR7cmVjZWl2ZXJ9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZXRhOiBSZWNlaXZlck1ldGFEYXRhID0gcmVjZWl2ZXJbUkVDRUlWRVJfTUVUQV9LRVldO1xuICAgICAgICBjb25zdCBpc05vdEFubm90YXRlZCA9ICFtZXRhIHx8ICFtZXRhLnR5cGU7XG5cbiAgICAgICAgaWYgKGlzTm90QW5ub3RhdGVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cmVjZWl2ZXIubmFtZX0gc2hvdWxkIGJlIGRlY29yYXRlZCB1c2luZyBAUmVjZWl2ZXIoKSBkZWNvcmF0b3JgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGVzW21ldGEudHlwZV0gPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlcztcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlRGlzcGF0Y2hlZCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuRGlzcGF0Y2hlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZVN1Y2Nlc3NmdWwoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLlN1Y2Nlc3NmdWwpO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVDYW5jZWxlZCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuQ2FuY2VsZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVFcnJvcmVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5FcnJvcmVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gdHlwZXMgLSBIYXNobWFwIHRoYXQgY29udGFpbnMgYWN0aW9uIHR5cGVzXG4gKiBAcGFyYW0gc3RhdHVzIC0gU3RhdHVzIG9mIHRoZSBkaXNwYXRjaGVkIGFjdGlvblxuICogQHJldHVybnMgLSBSeEpTIGZhY3Rvcnkgb3BlcmF0b3IgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlKHR5cGVzOiBUeXBlcywgc3RhdHVzOiBBY3Rpb25TdGF0dXMpOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxBY3Rpb25Db250ZXh0PikgPT4ge1xuICAgICAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGN0eDogQWN0aW9uQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hNYXBIYXNUeXBlID0gdHlwZXNbZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZShjdHguYWN0aW9uKV07XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGV4dEhhc1RyYW5zbWl0dGVkU3RhdHVzID0gY3R4LnN0YXR1cyA9PT0gc3RhdHVzO1xuICAgICAgICAgICAgICAgIHJldHVybiBoYXNoTWFwSGFzVHlwZSAmJiBjb250ZXh0SGFzVHJhbnNtaXR0ZWRTdGF0dXM7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoeyBhY3Rpb24sIGVycm9yIH06IEFjdGlvbkNvbnRleHQpID0+ICh7XG4gICAgICAgICAgICAgICAgdHlwZTogZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZShhY3Rpb24pLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICB9O1xufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -47,2 +47,3 @@ import * as tslib_1 from "tslib";

/**
* @private
* @template T, U

@@ -54,2 +55,3 @@ * @param {?} metadata - Receiver function metadata

EmitStore.prototype.dispatchSingle = /**
* @private
* @template T, U

@@ -81,2 +83,3 @@ * @param {?} metadata - Receiver function metadata

/**
* @private
* @template T, U

@@ -88,2 +91,3 @@ * @param {?} metadata - Receiver function metadata

EmitStore.prototype.dispatchMany = /**
* @private
* @template T, U

@@ -113,2 +117,2 @@ * @param {?} metadata - Receiver function metadata

export { EmitStore };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMtbGFicy9lbWl0dGVyLyIsInNvdXJjZXMiOlsibGliL2NvcmUvc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXBDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQ0gsaUJBQWlCLEVBR2pCLG1CQUFtQixFQUNuQixtQ0FBbUMsRUFDbkMsaUNBQWlDLEVBQ3BDLE1BQU0sdUJBQXVCLENBQUM7QUFFL0I7SUFDK0IscUNBQUs7SUFEcEM7O0lBaUVBLENBQUM7SUEvREc7OztPQUdHOzs7Ozs7SUFDSSwyQkFBTzs7Ozs7SUFBZCxVQUFpQyxRQUFrQjtRQUFuRCxpQkFXQzs7WUFWUyxRQUFRLEdBQXFCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztRQUU5RCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyw4REFBNEQsUUFBUSxDQUFDLElBQUksdUJBQW9CLENBQUMsQ0FBQztTQUNsSDtRQUVELE9BQU87WUFDSCxJQUFJLEVBQUUsVUFBQyxPQUFXLElBQUssT0FBQSxLQUFJLENBQUMsY0FBYyxDQUFPLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBNUMsQ0FBNEM7WUFDbkUsUUFBUSxFQUFFLFVBQUMsUUFBYyxJQUFLLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBTyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQTNDLENBQTJDO1NBQzVFLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7OztJQUNLLGtDQUFjOzs7Ozs7SUFBdEIsVUFBNkIsUUFBMEIsRUFBRSxPQUFXO1FBQ2hFLGFBQWEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQzs7WUFFN0IseUJBQXlCLEdBQUcsT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUztRQUNsRyxJQUFJLHlCQUF5QixFQUFFO1lBQzNCLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQzlCO1FBRU8sSUFBQSx3QkFBTTtRQUVkLElBQUksTUFBTSxFQUFFOztnQkFDRixxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLG1DQUFtQyxDQUFJLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDaEc7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7OztJQUNLLGdDQUFZOzs7Ozs7SUFBcEIsVUFBMkIsUUFBMEIsRUFBRSxRQUFjO1FBQ2pFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM1QjtRQUVELGFBQWEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUUzQixJQUFBLHdCQUFNO1FBRWQsSUFBSSxNQUFNLEVBQUU7O2dCQUNGLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUMscUJBQXFCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUM1RjtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FDaEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFDLE9BQU8sSUFBSyxPQUFBLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUExQixDQUEwQixDQUFDLENBQ3hELENBQUM7SUFDTixDQUFDOztnQkFoRUosVUFBVTs7SUFpRVgsZ0JBQUM7Q0FBQSxBQWpFRCxDQUMrQixLQUFLLEdBZ0VuQztTQWhFWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRW1pdHRlckFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIFJFQ0VJVkVSX01FVEFfS0VZLFxuICAgIEVtaXR0YWJsZSxcbiAgICBSZWNlaXZlck1ldGFEYXRhLFxuICAgIGZsYXR0ZW5Db25zdHJ1Y3RvcnMsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yU2luZ2xlRGlzcGF0Y2hpbmcsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yTWFueURpc3BhdGNoaW5nXG59IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbWl0U3RvcmUgZXh0ZW5kcyBTdG9yZSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb24gZnJvbSB0aGUgc3RvcmVcbiAgICAgKiBAcmV0dXJucyAtIEEgcGxhaW4gb2JqZWN0IHdpdGggYW4gYGVtaXRgIGZ1bmN0aW9uIGZvciBjYWxsaW5nIGVtaXR0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZW1pdHRlcjxUID0gYW55LCBVID0gYW55PihyZWNlaXZlcjogRnVuY3Rpb24pOiBFbWl0dGFibGU8VCwgVT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSA9IHJlY2VpdmVyW1JFQ0VJVkVSX01FVEFfS0VZXTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEkgY2FuJ3Qgc2VlbSB0byBmaW5kIHN0YXRpYyBtZXRhZGF0YS4gSGF2ZSB5b3UgZGVjb3JhdGVkICR7cmVjZWl2ZXIubmFtZX0gd2l0aCBAUmVjZWl2ZXIoKT9gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbWl0OiAocGF5bG9hZD86IFQpID0+IHRoaXMuZGlzcGF0Y2hTaW5nbGU8VCwgVT4obWV0YWRhdGEsIHBheWxvYWQpLFxuICAgICAgICAgICAgZW1pdE1hbnk6IChwYXlsb2Fkcz86IFRbXSkgPT4gdGhpcy5kaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGEsIHBheWxvYWRzKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaFNpbmdsZTxULCBVPihtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSwgcGF5bG9hZD86IFQpOiBPYnNlcnZhYmxlPFU+IHtcbiAgICAgICAgRW1pdHRlckFjdGlvbi50eXBlID0gbWV0YWRhdGEudHlwZTtcblxuICAgICAgICBjb25zdCBzaG91bGRBcHBseURlZmF1bHRQYXlsb2FkID0gdHlwZW9mIHBheWxvYWQgPT09ICd1bmRlZmluZWQnICYmIG1ldGFkYXRhLnBheWxvYWQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHNob3VsZEFwcGx5RGVmYXVsdFBheWxvYWQpIHtcbiAgICAgICAgICAgIHBheWxvYWQgPSBtZXRhZGF0YS5wYXlsb2FkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0ZvclNpbmdsZURpc3BhdGNoaW5nPFQ+KGZsYXR0ZW5lZENvbnN0cnVjdG9ycywgcGF5bG9hZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gobmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWRzIC0gQXJyYXkgd2l0aCBkYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWRzPzogVFtdKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXlsb2FkcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0Zvck1hbnlEaXNwYXRjaGluZyhmbGF0dGVuZWRDb25zdHJ1Y3RvcnMsIHBheWxvYWRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChcbiAgICAgICAgICAgIHBheWxvYWRzLm1hcCgocGF5bG9hZCkgPT4gbmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMtbGFicy9lbWl0dGVyLyIsInNvdXJjZXMiOlsibGliL2NvcmUvc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXBDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQ0gsaUJBQWlCLEVBR2pCLG1CQUFtQixFQUNuQixtQ0FBbUMsRUFDbkMsaUNBQWlDLEVBQ3BDLE1BQU0sdUJBQXVCLENBQUM7QUFFL0I7SUFDK0IscUNBQUs7SUFEcEM7O0lBaUVBLENBQUM7SUEvREc7OztPQUdHOzs7Ozs7SUFDSSwyQkFBTzs7Ozs7SUFBZCxVQUFpQyxRQUFrQjtRQUFuRCxpQkFXQzs7WUFWUyxRQUFRLEdBQXFCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztRQUU5RCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyw4REFBNEQsUUFBUSxDQUFDLElBQUksdUJBQW9CLENBQUMsQ0FBQztTQUNsSDtRQUVELE9BQU87WUFDSCxJQUFJLEVBQUUsVUFBQyxPQUFXLElBQUssT0FBQSxLQUFJLENBQUMsY0FBYyxDQUFPLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBNUMsQ0FBNEM7WUFDbkUsUUFBUSxFQUFFLFVBQUMsUUFBYyxJQUFLLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBTyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQTNDLENBQTJDO1NBQzVFLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7Ozs7SUFDSyxrQ0FBYzs7Ozs7OztJQUF0QixVQUE2QixRQUEwQixFQUFFLE9BQVc7UUFDaEUsYUFBYSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDOztZQUU3Qix5QkFBeUIsR0FBRyxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTO1FBQ2xHLElBQUkseUJBQXlCLEVBQUU7WUFDM0IsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDOUI7UUFFTyxJQUFBLHdCQUFNO1FBRWQsSUFBSSxNQUFNLEVBQUU7O2dCQUNGLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsbUNBQW1DLENBQUkscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNoRztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7OztPQUlHOzs7Ozs7OztJQUNLLGdDQUFZOzs7Ozs7O0lBQXBCLFVBQTJCLFFBQTBCLEVBQUUsUUFBYztRQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDNUI7UUFFRCxhQUFhLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFM0IsSUFBQSx3QkFBTTtRQUVkLElBQUksTUFBTSxFQUFFOztnQkFDRixxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDNUY7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQ2hCLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBQyxPQUFPLElBQUssT0FBQSxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBMUIsQ0FBMEIsQ0FBQyxDQUN4RCxDQUFDO0lBQ04sQ0FBQzs7Z0JBaEVKLFVBQVU7O0lBaUVYLGdCQUFDO0NBQUEsQUFqRUQsQ0FDK0IsS0FBSyxHQWdFbkM7U0FoRVksU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEVtaXR0ZXJBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgICBSRUNFSVZFUl9NRVRBX0tFWSxcbiAgICBFbWl0dGFibGUsXG4gICAgUmVjZWl2ZXJNZXRhRGF0YSxcbiAgICBmbGF0dGVuQ29uc3RydWN0b3JzLFxuICAgIGNvbnN0cnVjdEV2ZW50c0ZvclNpbmdsZURpc3BhdGNoaW5nLFxuICAgIGNvbnN0cnVjdEV2ZW50c0Zvck1hbnlEaXNwYXRjaGluZ1xufSBmcm9tICcuLi9pbnRlcm5hbC9pbnRlcm5hbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRW1pdFN0b3JlIGV4dGVuZHMgU3RvcmUge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSByZWNlaXZlciAtIFJlZmVyZW5jZSB0byB0aGUgc3RhdGljIGZ1bmN0aW9uIGZyb20gdGhlIHN0b3JlXG4gICAgICogQHJldHVybnMgLSBBIHBsYWluIG9iamVjdCB3aXRoIGFuIGBlbWl0YCBmdW5jdGlvbiBmb3IgY2FsbGluZyBlbWl0dGVyXG4gICAgICovXG4gICAgcHVibGljIGVtaXR0ZXI8VCA9IGFueSwgVSA9IGFueT4ocmVjZWl2ZXI6IEZ1bmN0aW9uKTogRW1pdHRhYmxlPFQsIFU+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEgPSByZWNlaXZlcltSRUNFSVZFUl9NRVRBX0tFWV07XG5cbiAgICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJIGNhbid0IHNlZW0gdG8gZmluZCBzdGF0aWMgbWV0YWRhdGEuIEhhdmUgeW91IGRlY29yYXRlZCAke3JlY2VpdmVyLm5hbWV9IHdpdGggQFJlY2VpdmVyKCk/YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW1pdDogKHBheWxvYWQ/OiBUKSA9PiB0aGlzLmRpc3BhdGNoU2luZ2xlPFQsIFU+KG1ldGFkYXRhLCBwYXlsb2FkKSxcbiAgICAgICAgICAgIGVtaXRNYW55OiAocGF5bG9hZHM/OiBUW10pID0+IHRoaXMuZGlzcGF0Y2hNYW55PFQsIFU+KG1ldGFkYXRhLCBwYXlsb2FkcylcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBSZWNlaXZlciBmdW5jdGlvbiBtZXRhZGF0YVxuICAgICAqIEBwYXJhbSBwYXlsb2FkIC0gRGF0YSB0byBkaXNwYXRjaFxuICAgICAqIEByZXR1cm5zIC0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGV2ZW50cyBhZnRlciBkaXNwYXRjaFxuICAgICAqL1xuICAgIHByaXZhdGUgZGlzcGF0Y2hTaW5nbGU8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWQ/OiBUKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkQXBwbHlEZWZhdWx0UGF5bG9hZCA9IHR5cGVvZiBwYXlsb2FkID09PSAndW5kZWZpbmVkJyAmJiBtZXRhZGF0YS5wYXlsb2FkICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChzaG91bGRBcHBseURlZmF1bHRQYXlsb2FkKSB7XG4gICAgICAgICAgICBwYXlsb2FkID0gbWV0YWRhdGEucGF5bG9hZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgYWN0aW9uIH0gPSBtZXRhZGF0YTtcblxuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBmbGF0dGVuZWRDb25zdHJ1Y3RvcnMgPSBmbGF0dGVuQ29uc3RydWN0b3JzKGFjdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChjb25zdHJ1Y3RFdmVudHNGb3JTaW5nbGVEaXNwYXRjaGluZzxUPihmbGF0dGVuZWRDb25zdHJ1Y3RvcnMsIHBheWxvYWQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKG5ldyBFbWl0dGVyQWN0aW9uKHBheWxvYWQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBSZWNlaXZlciBmdW5jdGlvbiBtZXRhZGF0YVxuICAgICAqIEBwYXJhbSBwYXlsb2FkcyAtIEFycmF5IHdpdGggZGF0YSB0byBkaXNwYXRjaFxuICAgICAqIEByZXR1cm5zIC0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGV2ZW50cyBhZnRlciBkaXNwYXRjaFxuICAgICAqL1xuICAgIHByaXZhdGUgZGlzcGF0Y2hNYW55PFQsIFU+KG1ldGFkYXRhOiBSZWNlaXZlck1ldGFEYXRhLCBwYXlsb2Fkcz86IFRbXSk6IE9ic2VydmFibGU8VT4ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocGF5bG9hZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChbXSk7XG4gICAgICAgIH1cblxuICAgICAgICBFbWl0dGVyQWN0aW9uLnR5cGUgPSBtZXRhZGF0YS50eXBlO1xuXG4gICAgICAgIGNvbnN0IHsgYWN0aW9uIH0gPSBtZXRhZGF0YTtcblxuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBmbGF0dGVuZWRDb25zdHJ1Y3RvcnMgPSBmbGF0dGVuQ29uc3RydWN0b3JzKGFjdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChjb25zdHJ1Y3RFdmVudHNGb3JNYW55RGlzcGF0Y2hpbmcoZmxhdHRlbmVkQ29uc3RydWN0b3JzLCBwYXlsb2FkcykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goXG4gICAgICAgICAgICBwYXlsb2Fkcy5tYXAoKHBheWxvYWQpID0+IG5ldyBFbWl0dGVyQWN0aW9uKHBheWxvYWQpKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -51,5 +51,6 @@ import { Injectable, Injector } from '@angular/core';

* @type {?}
* @private
*/
InjectorAccessor.injector;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci8iLCJzb3VyY2VzIjpbImxpYi9jb3JlL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBS3JEO0lBT0k7Ozs7T0FJRztJQUNILDBCQUFZLFFBQWtCO1FBQzFCLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHOzs7O0lBQ1csNEJBQVc7OztJQUF6QjtRQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQXFELENBQUMsQ0FBQztTQUMxRTtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDOzs7O0lBcEJjLHlCQUFRLEdBQW9CLElBQUksQ0FBQzs7Z0JBTG5ELFVBQVU7Ozs7Z0JBTFUsUUFBUTs7SUErQjdCLHVCQUFDO0NBQUEsQUExQkQsSUEwQkM7U0F6QlksZ0JBQWdCOzs7Ozs7SUFJekIsMEJBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBBbGxvd3MgbXVsdGlwbGUgZGVjb3JhdG9ycyB0byBnZXQgYWNjZXNzIHRvIHRoZSBESSBzdG9yZVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSW5qZWN0b3JBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogSW5qZWN0b3IgZm9yIGFjY2Vzc2luZyBESVxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIGluamVjdG9yOiBJbmplY3RvciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBJbmplY3RvckFjY2Vzc29yIGluc3RhbmNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgLSBSb290IGluamVjdG9yXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIEluamVjdG9yQWNjZXNzb3IuaW5qZWN0b3IgPSBpbmplY3RvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyAtIEVycm9yIGlmIGBOZ3hzRW1pdFBsdWdpbk1vZHVsZWAgaXMgbm90IGltcG9ydGVkIG9yIGluamVjdG9yIGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbmplY3RvcigpOiBuZXZlciB8IEluamVjdG9yIHtcbiAgICAgICAgaWYgKCF0aGlzLmluamVjdG9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSd2ZSBmb3Jnb3R0ZW4gdG8gaW1wb3J0IFxcYE5neHNFbWl0UGx1Z2luTW9kdWxlXFxgYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3RvcjtcbiAgICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci8iLCJzb3VyY2VzIjpbImxpYi9jb3JlL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBS3JEO0lBT0k7Ozs7T0FJRztJQUNILDBCQUFZLFFBQWtCO1FBQzFCLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHOzs7O0lBQ1csNEJBQVc7OztJQUF6QjtRQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQXFELENBQUMsQ0FBQztTQUMxRTtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDOzs7O0lBcEJjLHlCQUFRLEdBQW9CLElBQUksQ0FBQzs7Z0JBTG5ELFVBQVU7Ozs7Z0JBTFUsUUFBUTs7SUErQjdCLHVCQUFDO0NBQUEsQUExQkQsSUEwQkM7U0F6QlksZ0JBQWdCOzs7Ozs7O0lBSXpCLDBCQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQWxsb3dzIG11bHRpcGxlIGRlY29yYXRvcnMgdG8gZ2V0IGFjY2VzcyB0byB0aGUgREkgc3RvcmVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEluamVjdG9yQWNjZXNzb3Ige1xuICAgIC8qKlxuICAgICAqIEluamVjdG9yIGZvciBhY2Nlc3NpbmcgRElcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBpbmplY3RvcjogSW5qZWN0b3IgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgSW5qZWN0b3JBY2Nlc3NvciBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIGluamVjdG9yIC0gUm9vdCBpbmplY3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBJbmplY3RvckFjY2Vzc29yLmluamVjdG9yID0gaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgLSBFcnJvciBpZiBgTmd4c0VtaXRQbHVnaW5Nb2R1bGVgIGlzIG5vdCBpbXBvcnRlZCBvciBpbmplY3RvciBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5qZWN0b3IoKTogbmV2ZXIgfCBJbmplY3RvciB7XG4gICAgICAgIGlmICghdGhpcy5pbmplY3Rvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UndmUgZm9yZ290dGVuIHRvIGltcG9ydCBcXGBOZ3hzRW1pdFBsdWdpbk1vZHVsZVxcYGApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3I7XG4gICAgfVxufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -38,5 +38,8 @@ import { NgModule, Self } from '@angular/core';

if (false) {
/** @type {?} */
/**
* @type {?}
* @private
*/
NgxsEmitPluginModule.prototype.injectorAccessor;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvIiwic291cmNlcyI6WyJsaWIvZW1pdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFN0U7SUFFSSw4QkFBNEIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRWxFOztPQUVHOzs7O0lBQ1csNEJBQU87OztJQUFyQjtRQUNJLE9BQU87WUFDSCxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQztTQUMzQyxDQUFDO0lBQ04sQ0FBQzs7Z0JBWkosUUFBUTs7OztnQkFGQSxnQkFBZ0IsdUJBSVIsSUFBSTs7SUFXckIsMkJBQUM7Q0FBQSxBQWJELElBYUM7U0FaWSxvQkFBb0I7OztJQUNqQixnREFBa0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycywgU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFbWl0U3RvcmUgfSBmcm9tICcuL2NvcmUvc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEluamVjdG9yQWNjZXNzb3IgfSBmcm9tICcuL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZSc7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgTmd4c0VtaXRQbHVnaW5Nb2R1bGUge1xuICAgIGNvbnN0cnVjdG9yKEBTZWxmKCkgcHJpdmF0ZSBpbmplY3RvckFjY2Vzc29yOiBJbmplY3RvckFjY2Vzc29yKSB7fVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgLSBBIHdyYXBwZXIgYXJvdW5kIGBOZ01vZHVsZWBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hzRW1pdFBsdWdpbk1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IE5neHNFbWl0UGx1Z2luTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbRW1pdFN0b3JlLCBJbmplY3RvckFjY2Vzc29yXVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvIiwic291cmNlcyI6WyJsaWIvZW1pdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFN0U7SUFFSSw4QkFBNEIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRWxFOztPQUVHOzs7O0lBQ1csNEJBQU87OztJQUFyQjtRQUNJLE9BQU87WUFDSCxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQztTQUMzQyxDQUFDO0lBQ04sQ0FBQzs7Z0JBWkosUUFBUTs7OztnQkFGQSxnQkFBZ0IsdUJBSVIsSUFBSTs7SUFXckIsMkJBQUM7Q0FBQSxBQWJELElBYUM7U0FaWSxvQkFBb0I7Ozs7OztJQUNqQixnREFBa0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycywgU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFbWl0U3RvcmUgfSBmcm9tICcuL2NvcmUvc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEluamVjdG9yQWNjZXNzb3IgfSBmcm9tICcuL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZSc7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgTmd4c0VtaXRQbHVnaW5Nb2R1bGUge1xuICAgIGNvbnN0cnVjdG9yKEBTZWxmKCkgcHJpdmF0ZSBpbmplY3RvckFjY2Vzc29yOiBJbmplY3RvckFjY2Vzc29yKSB7fVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgLSBBIHdyYXBwZXIgYXJvdW5kIGBOZ01vZHVsZWBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hzRW1pdFBsdWdpbk1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IE5neHNFbWl0UGx1Z2luTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbRW1pdFN0b3JlLCBJbmplY3RvckFjY2Vzc29yXVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ export { Receiver } from './lib/core/decorators/receiver';

@@ -7,3 +7,3 @@ import { ensureStoreMetadata, Store, getActionTypeFromInstance } from '@ngxs/store';

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -58,3 +58,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -161,3 +161,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -200,3 +200,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -224,3 +224,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -245,2 +245,3 @@ class EmitStore extends Store {

/**
* @private
* @template T, U

@@ -267,2 +268,3 @@ * @param {?} metadata - Receiver function metadata

/**
* @private
* @template T, U

@@ -293,3 +295,3 @@ * @param {?} metadata - Receiver function metadata

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -316,3 +318,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -346,3 +348,3 @@ class NgxsEmitPluginModule {

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -359,5 +361,3 @@ /**

const types = {};
/** @type {?} */
let i = receivers.length;
while (i--) {
for (let i = receivers.length - 1; i >= 0; i--) {
/** @type {?} */

@@ -432,3 +432,3 @@ const receiver = receivers[i];

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -438,3 +438,3 @@

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -444,3 +444,3 @@

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -450,2 +450,2 @@

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1sYWJzLWVtaXR0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9pbnRlcm5hbC9pbnRlcm5hbHMudHMiLCJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2FjdGlvbnMvYWN0aW9ucy50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2RlY29yYXRvcnMvZW1pdHRlci50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9lbWl0Lm1vZHVsZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL29wZXJhdG9ycy9vZi1lbWl0dGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU3RhdHVzIG9mIGEgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQWN0aW9uU3RhdHVzIHtcbiAgICBEaXNwYXRjaGVkID0gJ0RJU1BBVENIRUQnLFxuICAgIFN1Y2Nlc3NmdWwgPSAnU1VDQ0VTU0ZVTCcsXG4gICAgQ2FuY2VsZWQgPSAnQ0FOQ0VMRUQnLFxuICAgIEVycm9yZWQgPSAnRVJST1JFRCcsXG59XG5cbi8qKlxuICogQWN0aW9uIGNsYXNzIGNvbnRyYWN0XG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbjxUPiA9IFR5cGU8VD4gJiB7XG4gICAgdHlwZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBTdGF0aWMgbWV0YWRhdGEgZm9yIHRoZSByZWNlaXZlciBmdW5jdGlvblxuICpcbiAqIEBwcm9wZXJ0eSB0eXBlIC0gQWN0aW9uIHR5cGUgKG9wdGlvbmFsKVxuICogQHByb3BlcnR5IGFjdGlvbiAtIEN1c3RvbSBhY3Rpb24gdG8gZGlzcGF0Y2ggKG9wdGlvbmFsKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpdmVyTWV0YURhdGE8VCBleHRlbmRzIEZ1bmN0aW9uID0gYW55PiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHBheWxvYWQ6IGFueTtcbiAgICBhY3Rpb246IEFjdGlvbjxUPiB8IEFjdGlvbjxUPltdO1xuICAgIGNhbmNlbFVuY29tcGxldGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBsYWluIG9iamVjdCB0aGF0IGNvbnRhaW5zIGhlbHBlcnMgdGhhdCBkaXNwYXRjaCBwYXlsb2FkXG4gKlxuICogQHByb3BlcnR5IGVtaXQgLSBGdW5jdGlvbiB0aGF0IGRpc3BhdGNoZXMgcGF5bG9hZCB1bmRlciB0aGUgaG9vZFxuICogQHByb3BlcnR5IGVtaXRNYW55IC0gRnVuY3Rpb24gdGhhdCBtYWtlcyBtdWx0aXBsZSBkaXNwYXRjaGluZyB1bmRlciB0aGUgaG9vZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtaXR0YWJsZTxUID0gYW55LCBVID0gYW55PiB7XG4gICAgZW1pdChwYXlsb2FkPzogVCk6IE9ic2VydmFibGU8VT47XG4gICAgZW1pdE1hbnkocGF5bG9hZHM/OiBUW10pOiBPYnNlcnZhYmxlPFU+O1xufVxuXG4vKipcbiAqIEJhc2ljIHdyYXBwZXIgYXJvdW5kIGFjdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgc3RhdHVzIC0gU3RhdHVzIG9mIGRpc3BhdGNoZWQgYWN0aW9uXG4gKiBAcHJvcGVydHkgYWN0aW9uIC0gQWN0aW9uIGluc3RhbmNlXG4gKiBAcHJvcGVydHkgZXJyb3IgLSBFcnJvciBpZiBoYXBwZW5lZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnRleHQge1xuICAgIHN0YXR1czogQWN0aW9uU3RhdHVzO1xuICAgIGFjdGlvbjogYW55O1xuICAgIGVycm9yPzogRXJyb3I7XG59XG5cbi8qKlxuICogQWN0aW9uIGNvbnRleHQgdGhhdCBtYXBzIGBvZkVtaXR0YWJsZWAgb3BlcmF0b3JcbiAqXG4gKiBAcHJvcGVydHkgdHlwZSAtIEFjdGlvbiB0eXBlXG4gKiBAcHJvcGVydHkgcGF5bG9hZCAtIERpc3BhdGNoZWQgZGF0YVxuICogQHByb3BlcnR5IGVycm9yIC0gRXJyb3IgdGhhdCBoYXMgYmVlbiB0aHJvd2VkIG9yIHVuZGVmaW5lZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxUID0gYW55PiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHBheWxvYWQ6IFQ7XG4gICAgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEhhc2htYXAgdGhhdCBjb250YWlucyB0eXBlcyB0byBmaWx0ZXIgdXNpbmcgYG9mRW1pdHRhYmxlYCBvcGVyYXRvclxuICpcbiAqIEBwcm9wZXJ0eSBrZXkgLSBBbnkgc3RyaW5nIGtleVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVzIHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBjb25zdCAtIFRoaXMgY29uc3RhbnQgaXMgYSBrZXkgZm9yIGRlZmluaW5nIHN0YXRpYyBtZXRhZGF0YSB1c2luZyBgQFJlY2VpdmVyYFxuICovXG5leHBvcnQgY29uc3QgUkVDRUlWRVJfTUVUQV9LRVkgPSAnTkdYU19SRUNFSVZFUl9NRVRBJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBjb25zdHJ1Y3Rvck9yQ29uc3RydWN0b3JzIC0gU2luZ2xlIGNsYXNzIG9yIGFycmF5IG9mIGNsYXNzZXNcbiAqIEByZXR1cm5zIC0gQXJyYXkgb2YgY2xhc3NlcyAoYWN0aW9ucylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5Db25zdHJ1Y3RvcnMoY29uc3RydWN0b3JPckNvbnN0cnVjdG9yczogQWN0aW9uPGFueT4gfCBBY3Rpb248YW55PltdKTogQWN0aW9uPGFueT5bXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29uc3RydWN0b3JPckNvbnN0cnVjdG9ycykpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yT3JDb25zdHJ1Y3RvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtjb25zdHJ1Y3Rvck9yQ29uc3RydWN0b3JzXTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBjb25zdHJ1Y3RvcnMgLSBBcnJheSBvZiBjbGFzc2VzIChhY3Rpb25zKVxuICogQHBhcmFtIHBheWxvYWQgLSBQYXlsb2FkIHRvIGRpc3BhdGNoXG4gKiBAcmV0dXJucyAtIEFycmF5IG9mIGluc3RhbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RXZlbnRzRm9yU2luZ2xlRGlzcGF0Y2hpbmc8VD4oY29uc3RydWN0b3JzOiBUeXBlPGFueT5bXSwgcGF5bG9hZDogVCB8IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycy5tYXAoKEFjdGlvbikgPT4gbmV3IEFjdGlvbihwYXlsb2FkKSk7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0gY29uc3RydWN0b3JzIC0gQXJyYXkgb2YgY2xhc3NlcyAoYWN0aW9ucylcbiAqIEBwYXJhbSBwYXlsb2FkcyAtIFBheWxvYWRzIHRvIGRpc3BhdGNoXG4gKiBAcmV0dXJucyAtIEFycmF5IG9mIGluc3RhbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RXZlbnRzRm9yTWFueURpc3BhdGNoaW5nPFQ+KGNvbnN0cnVjdG9yczogVHlwZTxhbnk+W10sIHBheWxvYWRzOiBUW10pOiBhbnkge1xuICAgIGNvbnN0IGV2ZW50cyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGNvbnN0cnVjdG9yc0xlbmd0aCA9IGNvbnN0cnVjdG9ycy5sZW5ndGg7IGkgPCBjb25zdHJ1Y3RvcnNMZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBBY3Rpb24gPSBjb25zdHJ1Y3RvcnNbaV07XG4gICAgICAgIGZvciAobGV0IGogPSAwLCBwYXlsb2Fkc0xlbmd0aCA9IHBheWxvYWRzLmxlbmd0aDsgaiA8IHBheWxvYWRzTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGV2ZW50cy5wdXNoKG5ldyBBY3Rpb24ocGF5bG9hZHNbal0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBldmVudHM7XG59XG4iLCJpbXBvcnQgeyBlbnN1cmVTdG9yZU1ldGFkYXRhIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBSZWNlaXZlck1ldGFEYXRhLCBSRUNFSVZFUl9NRVRBX0tFWSB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAcmV0dXJucyAtIEdlbmVyYXRlZCBoYXNoIHcvbyBjb2xsaXNpb25zIGJlY2F1c2UgaXQncyB0aW1lLWJhc2VkXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlSGFzaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAoTWF0aC5yYW5kb20oKSAqIERhdGUubm93KCkpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA4KTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGBAUmVjZWl2ZXIoKWAgZGVjb3JhdG9yXG4gKiBAcGFyYW0gdGFyZ2V0IC0gRGVjb3JhdGVkIHRhcmdldFxuICogQHBhcmFtIGtleSAtIERlY29yYXRlZCBrZXlcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aW9uUHJvcGVydGllcyhvcHRpb25zOiBQYXJ0aWFsPFJlY2VpdmVyTWV0YURhdGE+IHwgdW5kZWZpbmVkLCB0YXJnZXQ6IEZ1bmN0aW9uLCBrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wZXJ0aWVzOiBSZWNlaXZlck1ldGFEYXRhID0ge1xuICAgICAgICB0eXBlOiBgW0lEOiR7Z2VuZXJhdGVIYXNoKCl9XSAke3RhcmdldC5uYW1lfS4ke2tleX1gLFxuICAgICAgICBwYXlsb2FkOiB1bmRlZmluZWQsXG4gICAgICAgIGFjdGlvbjogdW5kZWZpbmVkISxcbiAgICAgICAgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUsXG4gICAgfTtcblxuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFByb3BlcnRpZXM7XG4gICAgfVxuXG4gICAgY29uc3QgeyB0eXBlLCBwYXlsb2FkLCBhY3Rpb24sIGNhbmNlbFVuY29tcGxldGVkIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgZGVmYXVsdFByb3BlcnRpZXMudHlwZSA9IHR5cGU7XG4gICAgfVxuXG4gICAgaWYgKHBheWxvYWQpIHtcbiAgICAgICAgZGVmYXVsdFByb3BlcnRpZXMucGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbikge1xuICAgICAgICBkZWZhdWx0UHJvcGVydGllcy5hY3Rpb24gPSBhY3Rpb247XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFjdGlvbikpIHtcbiAgICAgICAgICAgIGRlZmF1bHRQcm9wZXJ0aWVzLnR5cGUgPSBhY3Rpb24udHlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FuY2VsVW5jb21wbGV0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICBkZWZhdWx0UHJvcGVydGllcy5jYW5jZWxVbmNvbXBsZXRlZCA9IGNhbmNlbFVuY29tcGxldGVkO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0UHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBEZWNvcmF0ZXMgYSBtZXRob2Qgd2l0aCBhIHJlY2VpdmVyIGluZm9ybWF0aW9uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBjb25maWd1cmluZyBzdGF0aWMgbWV0YWRhdGFcbiAqIEByZXR1cm5zIC0gRmFjdG9yeSBmb3IgZGVjb3JhdGluZyBtZXRob2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJlY2VpdmVyKG9wdGlvbnM/OiBQYXJ0aWFsPFJlY2VpdmVyTWV0YURhdGE+KTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gPFQ+KHRhcmdldDogYW55LCBrZXk6IHN0cmluZyB8IHN5bWJvbCwgZGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD4pID0+IHtcbiAgICAgICAgY29uc3QgaXNOb3RGdW5jdGlvbk9yTm90U3RhdGljID0gdHlwZW9mIHRhcmdldC5wcm90b3R5cGUgPT09ICd1bmRlZmluZWQnIHx8ICFkZXNjcmlwdG9yIHx8IHR5cGVvZiB0YXJnZXRba2V5XSAhPT0gJ2Z1bmN0aW9uJztcblxuICAgICAgICBpZiAoaXNOb3RGdW5jdGlvbk9yTm90U3RhdGljKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBPbmx5IHN0YXRpYyBmdW5jdGlvbnMgY2FuIGJlIGRlY29yYXRlZCB3aXRoIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzZXJ2ZWRLZXlBbHJlYWR5RXhpc3RzID0ga2V5IGluIHRhcmdldC5wcm90b3R5cGU7XG4gICAgICAgIGlmIChyZXNlcnZlZEtleUFscmVhZHlFeGlzdHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvcGVydHkgd2l0aCBuYW1lIFxcYCR7a2V5LnRvU3RyaW5nKCl9XFxgIGFscmVhZHkgZXhpc3RzLCBwbGVhc2UgcmVuYW1lIHRvIGF2b2lkIGNvbmZsaWN0c2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBrZXkgPSBTdHJpbmcoa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGEgPSBlbnN1cmVTdG9yZU1ldGFkYXRhKHRhcmdldCk7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcGF5bG9hZCwgYWN0aW9uLCBjYW5jZWxVbmNvbXBsZXRlZCB9ID0gZ2V0QWN0aW9uUHJvcGVydGllcyhvcHRpb25zLCB0YXJnZXQsIGtleSk7XG5cbiAgICAgICAgaWYgKG1ldGEuYWN0aW9ucy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNZXRob2QgZGVjb3JhdGVkIHdpdGggc3VjaCB0eXBlIFxcYCR7dHlwZX1cXGAgYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhY3Rpb24pKSB7XG4gICAgICAgICAgICBtZXRhLmFjdGlvbnNbdHlwZV0gPSBbe1xuICAgICAgICAgICAgICAgIGZuOiBgJHtrZXl9YCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7IGNhbmNlbFVuY29tcGxldGVkIH0sXG4gICAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgfV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gYWN0aW9uLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBhY3Rpb25baV07XG4gICAgICAgICAgICAgICAgbWV0YS5hY3Rpb25zW3R5cGVdID0gW3tcbiAgICAgICAgICAgICAgICAgICAgZm46IGAke2tleX1gLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IGNhbmNlbFVuY29tcGxldGVkIH0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGVcbiAgICAgICAgICAgICAgICB9XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUhW1JFQ0VJVkVSX01FVEFfS0VZXSA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgIH07XG5cbiAgICAgICAgdGFyZ2V0LnByb3RvdHlwZVtrZXldID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0uYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEFsbG93cyBtdWx0aXBsZSBkZWNvcmF0b3JzIHRvIGdldCBhY2Nlc3MgdG8gdGhlIERJIHN0b3JlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbmplY3RvckFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBJbmplY3RvciBmb3IgYWNjZXNzaW5nIERJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5qZWN0b3I6IEluamVjdG9yIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIEluamVjdG9yQWNjZXNzb3IgaW5zdGFuY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmplY3RvciAtIFJvb3QgaW5qZWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgSW5qZWN0b3JBY2Nlc3Nvci5pbmplY3RvciA9IGluamVjdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gRXJyb3IgaWYgYE5neHNFbWl0UGx1Z2luTW9kdWxlYCBpcyBub3QgaW1wb3J0ZWQgb3IgaW5qZWN0b3IgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEluamVjdG9yKCk6IG5ldmVyIHwgSW5qZWN0b3Ige1xuICAgICAgICBpZiAoIXRoaXMuaW5qZWN0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91J3ZlIGZvcmdvdHRlbiB0byBpbXBvcnQgXFxgTmd4c0VtaXRQbHVnaW5Nb2R1bGVcXGBgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yO1xuICAgIH1cbn1cbiIsIi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgZGVmYXVsdCBhY3Rpb24gd2hlbiB0aGUgdXNlciBkb2Vzbid0IHBhc3MgYW55IGN1c3RvbSBhY3Rpb24gYXMgYW4gYXJndW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEVtaXR0ZXJBY3Rpb248VCA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0eXBlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB0eXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgRW1pdHRlckFjdGlvbiBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ/OiBUKSB7fVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRW1pdHRlckFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIFJFQ0VJVkVSX01FVEFfS0VZLFxuICAgIEVtaXR0YWJsZSxcbiAgICBSZWNlaXZlck1ldGFEYXRhLFxuICAgIGZsYXR0ZW5Db25zdHJ1Y3RvcnMsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yU2luZ2xlRGlzcGF0Y2hpbmcsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yTWFueURpc3BhdGNoaW5nXG59IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbWl0U3RvcmUgZXh0ZW5kcyBTdG9yZSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb24gZnJvbSB0aGUgc3RvcmVcbiAgICAgKiBAcmV0dXJucyAtIEEgcGxhaW4gb2JqZWN0IHdpdGggYW4gYGVtaXRgIGZ1bmN0aW9uIGZvciBjYWxsaW5nIGVtaXR0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZW1pdHRlcjxUID0gYW55LCBVID0gYW55PihyZWNlaXZlcjogRnVuY3Rpb24pOiBFbWl0dGFibGU8VCwgVT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSA9IHJlY2VpdmVyW1JFQ0VJVkVSX01FVEFfS0VZXTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEkgY2FuJ3Qgc2VlbSB0byBmaW5kIHN0YXRpYyBtZXRhZGF0YS4gSGF2ZSB5b3UgZGVjb3JhdGVkICR7cmVjZWl2ZXIubmFtZX0gd2l0aCBAUmVjZWl2ZXIoKT9gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbWl0OiAocGF5bG9hZD86IFQpID0+IHRoaXMuZGlzcGF0Y2hTaW5nbGU8VCwgVT4obWV0YWRhdGEsIHBheWxvYWQpLFxuICAgICAgICAgICAgZW1pdE1hbnk6IChwYXlsb2Fkcz86IFRbXSkgPT4gdGhpcy5kaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGEsIHBheWxvYWRzKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaFNpbmdsZTxULCBVPihtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSwgcGF5bG9hZD86IFQpOiBPYnNlcnZhYmxlPFU+IHtcbiAgICAgICAgRW1pdHRlckFjdGlvbi50eXBlID0gbWV0YWRhdGEudHlwZTtcblxuICAgICAgICBjb25zdCBzaG91bGRBcHBseURlZmF1bHRQYXlsb2FkID0gdHlwZW9mIHBheWxvYWQgPT09ICd1bmRlZmluZWQnICYmIG1ldGFkYXRhLnBheWxvYWQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHNob3VsZEFwcGx5RGVmYXVsdFBheWxvYWQpIHtcbiAgICAgICAgICAgIHBheWxvYWQgPSBtZXRhZGF0YS5wYXlsb2FkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0ZvclNpbmdsZURpc3BhdGNoaW5nPFQ+KGZsYXR0ZW5lZENvbnN0cnVjdG9ycywgcGF5bG9hZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gobmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWRzIC0gQXJyYXkgd2l0aCBkYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWRzPzogVFtdKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXlsb2FkcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0Zvck1hbnlEaXNwYXRjaGluZyhmbGF0dGVuZWRDb25zdHJ1Y3RvcnMsIHBheWxvYWRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChcbiAgICAgICAgICAgIHBheWxvYWRzLm1hcCgocGF5bG9hZCkgPT4gbmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0b3JBY2Nlc3NvciB9IGZyb20gJy4uL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi4vc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBEZWNvcmF0ZXMgYSBwcm9wZXJ0eSBhbmQgZGVmaW5lcyBuZXcgZ2V0dGVyXG4gKlxuICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25cbiAqIEByZXR1cm5zIC0gRmFjdG9yeSBmdW5jdGlvbiBmb3IgZGVjb3JhdGluZyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbWl0dGVyKHJlY2VpdmVyOiBGdW5jdGlvbik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gSW5qZWN0b3JBY2Nlc3Nvci5nZXRJbmplY3RvcigpLmdldDxFbWl0U3RvcmU+KEVtaXRTdG9yZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmVtaXR0ZXIocmVjZWl2ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBJbmplY3RvckFjY2Vzc29yIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoKVxuZXhwb3J0IGNsYXNzIE5neHNFbWl0UGx1Z2luTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3RvcihAU2VsZigpIHByaXZhdGUgaW5qZWN0b3JBY2Nlc3NvcjogSW5qZWN0b3JBY2Nlc3Nvcikge31cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gQSB3cmFwcGVyIGFyb3VuZCBgTmdNb2R1bGVgXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Tmd4c0VtaXRQbHVnaW5Nb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOZ3hzRW1pdFBsdWdpbk1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW0VtaXRTdG9yZSwgSW5qZWN0b3JBY2Nlc3Nvcl1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUkVDRUlWRVJfTUVUQV9LRVksIEFjdGlvblN0YXR1cywgQWN0aW9uQ29udGV4dCwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0LCBSZWNlaXZlck1ldGFEYXRhLCBUeXBlcyB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogYGdldFJlY2VpdmVyVHlwZXMoW0NvdW50ZXJTdGF0ZS5pbmNyZW1lbnQsIENvdW50ZXJTdGF0ZS5kZWNyZW1lbnRdKWBcbiAqIHdpbGwgcmV0dXJuIGEgaGFzaG1hcCA9PiBgeyAnQ291bnRlclN0YXRlLmluY3JlbWVudCc6IHRydWUsICdDb3VudGVyU3RhdGUuZGVjcmVtZW50JzogdHJ1ZSB9YFxuICpcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIC0gQSBrZXktdmFsdWUgbWFwIHdoZXJlIGEga2V5IGlzIGEgdHlwZSBhbmQgdmFsdWUgaXMgYHRydWVgXG4gKi9cbmZ1bmN0aW9uIGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogVHlwZXMge1xuICAgIGNvbnN0IHR5cGVzOiBUeXBlcyA9IHt9O1xuXG4gICAgbGV0IGkgPSByZWNlaXZlcnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgY29uc3QgcmVjZWl2ZXIgPSByZWNlaXZlcnNbaV07XG4gICAgICAgIGNvbnN0IGlzTm90RnVuY3Rpb24gPSB0eXBlb2YgcmVjZWl2ZXIgIT09ICdmdW5jdGlvbic7XG5cbiAgICAgICAgaWYgKGlzTm90RnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY2VpdmVyIHNob3VsZCBiZSBhIGZ1bmN0aW9uLCBnb3QgJHtyZWNlaXZlcn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGE6IFJlY2VpdmVyTWV0YURhdGEgPSByZWNlaXZlcltSRUNFSVZFUl9NRVRBX0tFWV07XG4gICAgICAgIGNvbnN0IGlzTm90QW5ub3RhdGVkID0gIW1ldGEgfHwgIW1ldGEudHlwZTtcblxuICAgICAgICBpZiAoaXNOb3RBbm5vdGF0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtyZWNlaXZlci5uYW1lfSBzaG91bGQgYmUgZGVjb3JhdGVkIHVzaW5nIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZXNbbWV0YS50eXBlXSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVEaXNwYXRjaGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlU3VjY2Vzc2Z1bCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuU3VjY2Vzc2Z1bCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUNhbmNlbGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5DYW5jZWxlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUVycm9yZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkVycm9yZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0eXBlcyAtIEhhc2htYXAgdGhhdCBjb250YWlucyBhY3Rpb24gdHlwZXNcbiAqIEBwYXJhbSBzdGF0dXMgLSBTdGF0dXMgb2YgdGhlIGRpc3BhdGNoZWQgYWN0aW9uXG4gKiBAcmV0dXJucyAtIFJ4SlMgZmFjdG9yeSBvcGVyYXRvciBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGUodHlwZXM6IFR5cGVzLCBzdGF0dXM6IEFjdGlvblN0YXR1cyk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHQ+KSA9PiB7XG4gICAgICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaE1hcEhhc1R5cGUgPSB0eXBlc1tnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGN0eC5hY3Rpb24pXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0SGFzVHJhbnNtaXR0ZWRTdGF0dXMgPSBjdHguc3RhdHVzID09PSBzdGF0dXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hNYXBIYXNUeXBlICYmIGNvbnRleHRIYXNUcmFuc21pdHRlZFN0YXR1cztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCh7IGFjdGlvbiwgZXJyb3IgfTogQWN0aW9uQ29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbiksXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogYWN0aW9uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJt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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1sYWJzLWVtaXR0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9pbnRlcm5hbC9pbnRlcm5hbHMudHMiLCJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2FjdGlvbnMvYWN0aW9ucy50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2RlY29yYXRvcnMvZW1pdHRlci50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9lbWl0Lm1vZHVsZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL29wZXJhdG9ycy9vZi1lbWl0dGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU3RhdHVzIG9mIGEgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQWN0aW9uU3RhdHVzIHtcbiAgICBEaXNwYXRjaGVkID0gJ0RJU1BBVENIRUQnLFxuICAgIFN1Y2Nlc3NmdWwgPSAnU1VDQ0VTU0ZVTCcsXG4gICAgQ2FuY2VsZWQgPSAnQ0FOQ0VMRUQnLFxuICAgIEVycm9yZWQgPSAnRVJST1JFRCcsXG59XG5cbi8qKlxuICogQWN0aW9uIGNsYXNzIGNvbnRyYWN0XG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbjxUPiA9IFR5cGU8VD4gJiB7XG4gICAgdHlwZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBTdGF0aWMgbWV0YWRhdGEgZm9yIHRoZSByZWNlaXZlciBmdW5jdGlvblxuICpcbiAqIEBwcm9wZXJ0eSB0eXBlIC0gQWN0aW9uIHR5cGUgKG9wdGlvbmFsKVxuICogQHByb3BlcnR5IGFjdGlvbiAtIEN1c3RvbSBhY3Rpb24gdG8gZGlzcGF0Y2ggKG9wdGlvbmFsKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpdmVyTWV0YURhdGE8VCBleHRlbmRzIEZ1bmN0aW9uID0gYW55PiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHBheWxvYWQ6IGFueTtcbiAgICBhY3Rpb246IEFjdGlvbjxUPiB8IEFjdGlvbjxUPltdO1xuICAgIGNhbmNlbFVuY29tcGxldGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBsYWluIG9iamVjdCB0aGF0IGNvbnRhaW5zIGhlbHBlcnMgdGhhdCBkaXNwYXRjaCBwYXlsb2FkXG4gKlxuICogQHByb3BlcnR5IGVtaXQgLSBGdW5jdGlvbiB0aGF0IGRpc3BhdGNoZXMgcGF5bG9hZCB1bmRlciB0aGUgaG9vZFxuICogQHByb3BlcnR5IGVtaXRNYW55IC0gRnVuY3Rpb24gdGhhdCBtYWtlcyBtdWx0aXBsZSBkaXNwYXRjaGluZyB1bmRlciB0aGUgaG9vZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtaXR0YWJsZTxUID0gYW55LCBVID0gYW55PiB7XG4gICAgZW1pdChwYXlsb2FkPzogVCk6IE9ic2VydmFibGU8VT47XG4gICAgZW1pdE1hbnkocGF5bG9hZHM/OiBUW10pOiBPYnNlcnZhYmxlPFU+O1xufVxuXG4vKipcbiAqIEJhc2ljIHdyYXBwZXIgYXJvdW5kIGFjdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgc3RhdHVzIC0gU3RhdHVzIG9mIGRpc3BhdGNoZWQgYWN0aW9uXG4gKiBAcHJvcGVydHkgYWN0aW9uIC0gQWN0aW9uIGluc3RhbmNlXG4gKiBAcHJvcGVydHkgZXJyb3IgLSBFcnJvciBpZiBoYXBwZW5lZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnRleHQge1xuICAgIHN0YXR1czogQWN0aW9uU3RhdHVzO1xuICAgIGFjdGlvbjogYW55O1xuICAgIGVycm9yPzogRXJyb3I7XG59XG5cbi8qKlxuICogQWN0aW9uIGNvbnRleHQgdGhhdCBtYXBzIGBvZkVtaXR0YWJsZWAgb3BlcmF0b3JcbiAqXG4gKiBAcHJvcGVydHkgdHlwZSAtIEFjdGlvbiB0eXBlXG4gKiBAcHJvcGVydHkgcGF5bG9hZCAtIERpc3BhdGNoZWQgZGF0YVxuICogQHByb3BlcnR5IGVycm9yIC0gRXJyb3IgdGhhdCBoYXMgYmVlbiB0aHJvd2VkIG9yIHVuZGVmaW5lZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxUID0gYW55PiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHBheWxvYWQ6IFQ7XG4gICAgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEhhc2htYXAgdGhhdCBjb250YWlucyB0eXBlcyB0byBmaWx0ZXIgdXNpbmcgYG9mRW1pdHRhYmxlYCBvcGVyYXRvclxuICpcbiAqIEBwcm9wZXJ0eSBrZXkgLSBBbnkgc3RyaW5nIGtleVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVzIHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBjb25zdCAtIFRoaXMgY29uc3RhbnQgaXMgYSBrZXkgZm9yIGRlZmluaW5nIHN0YXRpYyBtZXRhZGF0YSB1c2luZyBgQFJlY2VpdmVyYFxuICovXG5leHBvcnQgY29uc3QgUkVDRUlWRVJfTUVUQV9LRVkgPSAnTkdYU19SRUNFSVZFUl9NRVRBJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBjb25zdHJ1Y3Rvck9yQ29uc3RydWN0b3JzIC0gU2luZ2xlIGNsYXNzIG9yIGFycmF5IG9mIGNsYXNzZXNcbiAqIEByZXR1cm5zIC0gQXJyYXkgb2YgY2xhc3NlcyAoYWN0aW9ucylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5Db25zdHJ1Y3RvcnMoY29uc3RydWN0b3JPckNvbnN0cnVjdG9yczogQWN0aW9uPGFueT4gfCBBY3Rpb248YW55PltdKTogQWN0aW9uPGFueT5bXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29uc3RydWN0b3JPckNvbnN0cnVjdG9ycykpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yT3JDb25zdHJ1Y3RvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtjb25zdHJ1Y3Rvck9yQ29uc3RydWN0b3JzXTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBjb25zdHJ1Y3RvcnMgLSBBcnJheSBvZiBjbGFzc2VzIChhY3Rpb25zKVxuICogQHBhcmFtIHBheWxvYWQgLSBQYXlsb2FkIHRvIGRpc3BhdGNoXG4gKiBAcmV0dXJucyAtIEFycmF5IG9mIGluc3RhbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RXZlbnRzRm9yU2luZ2xlRGlzcGF0Y2hpbmc8VD4oY29uc3RydWN0b3JzOiBUeXBlPGFueT5bXSwgcGF5bG9hZDogVCB8IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycy5tYXAoKEFjdGlvbikgPT4gbmV3IEFjdGlvbihwYXlsb2FkKSk7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0gY29uc3RydWN0b3JzIC0gQXJyYXkgb2YgY2xhc3NlcyAoYWN0aW9ucylcbiAqIEBwYXJhbSBwYXlsb2FkcyAtIFBheWxvYWRzIHRvIGRpc3BhdGNoXG4gKiBAcmV0dXJucyAtIEFycmF5IG9mIGluc3RhbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RXZlbnRzRm9yTWFueURpc3BhdGNoaW5nPFQ+KGNvbnN0cnVjdG9yczogVHlwZTxhbnk+W10sIHBheWxvYWRzOiBUW10pOiBhbnkge1xuICAgIGNvbnN0IGV2ZW50cyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGNvbnN0cnVjdG9yc0xlbmd0aCA9IGNvbnN0cnVjdG9ycy5sZW5ndGg7IGkgPCBjb25zdHJ1Y3RvcnNMZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBBY3Rpb24gPSBjb25zdHJ1Y3RvcnNbaV07XG4gICAgICAgIGZvciAobGV0IGogPSAwLCBwYXlsb2Fkc0xlbmd0aCA9IHBheWxvYWRzLmxlbmd0aDsgaiA8IHBheWxvYWRzTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGV2ZW50cy5wdXNoKG5ldyBBY3Rpb24ocGF5bG9hZHNbal0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBldmVudHM7XG59XG4iLCJpbXBvcnQgeyBlbnN1cmVTdG9yZU1ldGFkYXRhIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBSZWNlaXZlck1ldGFEYXRhLCBSRUNFSVZFUl9NRVRBX0tFWSB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAcmV0dXJucyAtIEdlbmVyYXRlZCBoYXNoIHcvbyBjb2xsaXNpb25zIGJlY2F1c2UgaXQncyB0aW1lLWJhc2VkXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlSGFzaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAoTWF0aC5yYW5kb20oKSAqIERhdGUubm93KCkpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA4KTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGBAUmVjZWl2ZXIoKWAgZGVjb3JhdG9yXG4gKiBAcGFyYW0gdGFyZ2V0IC0gRGVjb3JhdGVkIHRhcmdldFxuICogQHBhcmFtIGtleSAtIERlY29yYXRlZCBrZXlcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aW9uUHJvcGVydGllcyhvcHRpb25zOiBQYXJ0aWFsPFJlY2VpdmVyTWV0YURhdGE+IHwgdW5kZWZpbmVkLCB0YXJnZXQ6IEZ1bmN0aW9uLCBrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wZXJ0aWVzOiBSZWNlaXZlck1ldGFEYXRhID0ge1xuICAgICAgICB0eXBlOiBgW0lEOiR7Z2VuZXJhdGVIYXNoKCl9XSAke3RhcmdldC5uYW1lfS4ke2tleX1gLFxuICAgICAgICBwYXlsb2FkOiB1bmRlZmluZWQsXG4gICAgICAgIGFjdGlvbjogdW5kZWZpbmVkISxcbiAgICAgICAgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUsXG4gICAgfTtcblxuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFByb3BlcnRpZXM7XG4gICAgfVxuXG4gICAgY29uc3QgeyB0eXBlLCBwYXlsb2FkLCBhY3Rpb24sIGNhbmNlbFVuY29tcGxldGVkIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgZGVmYXVsdFByb3BlcnRpZXMudHlwZSA9IHR5cGU7XG4gICAgfVxuXG4gICAgaWYgKHBheWxvYWQpIHtcbiAgICAgICAgZGVmYXVsdFByb3BlcnRpZXMucGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbikge1xuICAgICAgICBkZWZhdWx0UHJvcGVydGllcy5hY3Rpb24gPSBhY3Rpb247XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFjdGlvbikpIHtcbiAgICAgICAgICAgIGRlZmF1bHRQcm9wZXJ0aWVzLnR5cGUgPSBhY3Rpb24udHlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FuY2VsVW5jb21wbGV0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICBkZWZhdWx0UHJvcGVydGllcy5jYW5jZWxVbmNvbXBsZXRlZCA9IGNhbmNlbFVuY29tcGxldGVkO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0UHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBEZWNvcmF0ZXMgYSBtZXRob2Qgd2l0aCBhIHJlY2VpdmVyIGluZm9ybWF0aW9uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBjb25maWd1cmluZyBzdGF0aWMgbWV0YWRhdGFcbiAqIEByZXR1cm5zIC0gRmFjdG9yeSBmb3IgZGVjb3JhdGluZyBtZXRob2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJlY2VpdmVyKG9wdGlvbnM/OiBQYXJ0aWFsPFJlY2VpdmVyTWV0YURhdGE+KTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gPFQ+KHRhcmdldDogYW55LCBrZXk6IHN0cmluZyB8IHN5bWJvbCwgZGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD4pID0+IHtcbiAgICAgICAgY29uc3QgaXNOb3RGdW5jdGlvbk9yTm90U3RhdGljID0gdHlwZW9mIHRhcmdldC5wcm90b3R5cGUgPT09ICd1bmRlZmluZWQnIHx8ICFkZXNjcmlwdG9yIHx8IHR5cGVvZiB0YXJnZXRba2V5XSAhPT0gJ2Z1bmN0aW9uJztcblxuICAgICAgICBpZiAoaXNOb3RGdW5jdGlvbk9yTm90U3RhdGljKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBPbmx5IHN0YXRpYyBmdW5jdGlvbnMgY2FuIGJlIGRlY29yYXRlZCB3aXRoIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzZXJ2ZWRLZXlBbHJlYWR5RXhpc3RzID0ga2V5IGluIHRhcmdldC5wcm90b3R5cGU7XG4gICAgICAgIGlmIChyZXNlcnZlZEtleUFscmVhZHlFeGlzdHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvcGVydHkgd2l0aCBuYW1lIFxcYCR7a2V5LnRvU3RyaW5nKCl9XFxgIGFscmVhZHkgZXhpc3RzLCBwbGVhc2UgcmVuYW1lIHRvIGF2b2lkIGNvbmZsaWN0c2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBrZXkgPSBTdHJpbmcoa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGEgPSBlbnN1cmVTdG9yZU1ldGFkYXRhKHRhcmdldCk7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcGF5bG9hZCwgYWN0aW9uLCBjYW5jZWxVbmNvbXBsZXRlZCB9ID0gZ2V0QWN0aW9uUHJvcGVydGllcyhvcHRpb25zLCB0YXJnZXQsIGtleSk7XG5cbiAgICAgICAgaWYgKG1ldGEuYWN0aW9ucy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNZXRob2QgZGVjb3JhdGVkIHdpdGggc3VjaCB0eXBlIFxcYCR7dHlwZX1cXGAgYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhY3Rpb24pKSB7XG4gICAgICAgICAgICBtZXRhLmFjdGlvbnNbdHlwZV0gPSBbe1xuICAgICAgICAgICAgICAgIGZuOiBgJHtrZXl9YCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7IGNhbmNlbFVuY29tcGxldGVkIH0sXG4gICAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgfV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gYWN0aW9uLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBhY3Rpb25baV07XG4gICAgICAgICAgICAgICAgbWV0YS5hY3Rpb25zW3R5cGVdID0gW3tcbiAgICAgICAgICAgICAgICAgICAgZm46IGAke2tleX1gLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IGNhbmNlbFVuY29tcGxldGVkIH0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGVcbiAgICAgICAgICAgICAgICB9XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUhW1JFQ0VJVkVSX01FVEFfS0VZXSA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgIH07XG5cbiAgICAgICAgdGFyZ2V0LnByb3RvdHlwZVtrZXldID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0uYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEFsbG93cyBtdWx0aXBsZSBkZWNvcmF0b3JzIHRvIGdldCBhY2Nlc3MgdG8gdGhlIERJIHN0b3JlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbmplY3RvckFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBJbmplY3RvciBmb3IgYWNjZXNzaW5nIERJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5qZWN0b3I6IEluamVjdG9yIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIEluamVjdG9yQWNjZXNzb3IgaW5zdGFuY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmplY3RvciAtIFJvb3QgaW5qZWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgSW5qZWN0b3JBY2Nlc3Nvci5pbmplY3RvciA9IGluamVjdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gRXJyb3IgaWYgYE5neHNFbWl0UGx1Z2luTW9kdWxlYCBpcyBub3QgaW1wb3J0ZWQgb3IgaW5qZWN0b3IgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEluamVjdG9yKCk6IG5ldmVyIHwgSW5qZWN0b3Ige1xuICAgICAgICBpZiAoIXRoaXMuaW5qZWN0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91J3ZlIGZvcmdvdHRlbiB0byBpbXBvcnQgXFxgTmd4c0VtaXRQbHVnaW5Nb2R1bGVcXGBgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yO1xuICAgIH1cbn1cbiIsIi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgZGVmYXVsdCBhY3Rpb24gd2hlbiB0aGUgdXNlciBkb2Vzbid0IHBhc3MgYW55IGN1c3RvbSBhY3Rpb24gYXMgYW4gYXJndW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEVtaXR0ZXJBY3Rpb248VCA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0eXBlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB0eXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgRW1pdHRlckFjdGlvbiBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ/OiBUKSB7fVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRW1pdHRlckFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIFJFQ0VJVkVSX01FVEFfS0VZLFxuICAgIEVtaXR0YWJsZSxcbiAgICBSZWNlaXZlck1ldGFEYXRhLFxuICAgIGZsYXR0ZW5Db25zdHJ1Y3RvcnMsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yU2luZ2xlRGlzcGF0Y2hpbmcsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yTWFueURpc3BhdGNoaW5nXG59IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbWl0U3RvcmUgZXh0ZW5kcyBTdG9yZSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb24gZnJvbSB0aGUgc3RvcmVcbiAgICAgKiBAcmV0dXJucyAtIEEgcGxhaW4gb2JqZWN0IHdpdGggYW4gYGVtaXRgIGZ1bmN0aW9uIGZvciBjYWxsaW5nIGVtaXR0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZW1pdHRlcjxUID0gYW55LCBVID0gYW55PihyZWNlaXZlcjogRnVuY3Rpb24pOiBFbWl0dGFibGU8VCwgVT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSA9IHJlY2VpdmVyW1JFQ0VJVkVSX01FVEFfS0VZXTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEkgY2FuJ3Qgc2VlbSB0byBmaW5kIHN0YXRpYyBtZXRhZGF0YS4gSGF2ZSB5b3UgZGVjb3JhdGVkICR7cmVjZWl2ZXIubmFtZX0gd2l0aCBAUmVjZWl2ZXIoKT9gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbWl0OiAocGF5bG9hZD86IFQpID0+IHRoaXMuZGlzcGF0Y2hTaW5nbGU8VCwgVT4obWV0YWRhdGEsIHBheWxvYWQpLFxuICAgICAgICAgICAgZW1pdE1hbnk6IChwYXlsb2Fkcz86IFRbXSkgPT4gdGhpcy5kaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGEsIHBheWxvYWRzKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaFNpbmdsZTxULCBVPihtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSwgcGF5bG9hZD86IFQpOiBPYnNlcnZhYmxlPFU+IHtcbiAgICAgICAgRW1pdHRlckFjdGlvbi50eXBlID0gbWV0YWRhdGEudHlwZTtcblxuICAgICAgICBjb25zdCBzaG91bGRBcHBseURlZmF1bHRQYXlsb2FkID0gdHlwZW9mIHBheWxvYWQgPT09ICd1bmRlZmluZWQnICYmIG1ldGFkYXRhLnBheWxvYWQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHNob3VsZEFwcGx5RGVmYXVsdFBheWxvYWQpIHtcbiAgICAgICAgICAgIHBheWxvYWQgPSBtZXRhZGF0YS5wYXlsb2FkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0ZvclNpbmdsZURpc3BhdGNoaW5nPFQ+KGZsYXR0ZW5lZENvbnN0cnVjdG9ycywgcGF5bG9hZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gobmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWRzIC0gQXJyYXkgd2l0aCBkYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWRzPzogVFtdKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXlsb2FkcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0Zvck1hbnlEaXNwYXRjaGluZyhmbGF0dGVuZWRDb25zdHJ1Y3RvcnMsIHBheWxvYWRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChcbiAgICAgICAgICAgIHBheWxvYWRzLm1hcCgocGF5bG9hZCkgPT4gbmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0b3JBY2Nlc3NvciB9IGZyb20gJy4uL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi4vc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBEZWNvcmF0ZXMgYSBwcm9wZXJ0eSBhbmQgZGVmaW5lcyBuZXcgZ2V0dGVyXG4gKlxuICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25cbiAqIEByZXR1cm5zIC0gRmFjdG9yeSBmdW5jdGlvbiBmb3IgZGVjb3JhdGluZyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbWl0dGVyKHJlY2VpdmVyOiBGdW5jdGlvbik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gSW5qZWN0b3JBY2Nlc3Nvci5nZXRJbmplY3RvcigpLmdldDxFbWl0U3RvcmU+KEVtaXRTdG9yZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmVtaXR0ZXIocmVjZWl2ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBJbmplY3RvckFjY2Vzc29yIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoKVxuZXhwb3J0IGNsYXNzIE5neHNFbWl0UGx1Z2luTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3RvcihAU2VsZigpIHByaXZhdGUgaW5qZWN0b3JBY2Nlc3NvcjogSW5qZWN0b3JBY2Nlc3Nvcikge31cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gQSB3cmFwcGVyIGFyb3VuZCBgTmdNb2R1bGVgXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Tmd4c0VtaXRQbHVnaW5Nb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOZ3hzRW1pdFBsdWdpbk1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW0VtaXRTdG9yZSwgSW5qZWN0b3JBY2Nlc3Nvcl1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUkVDRUlWRVJfTUVUQV9LRVksIEFjdGlvblN0YXR1cywgQWN0aW9uQ29udGV4dCwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0LCBSZWNlaXZlck1ldGFEYXRhLCBUeXBlcyB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogYGdldFJlY2VpdmVyVHlwZXMoW0NvdW50ZXJTdGF0ZS5pbmNyZW1lbnQsIENvdW50ZXJTdGF0ZS5kZWNyZW1lbnRdKWBcbiAqIHdpbGwgcmV0dXJuIGEgaGFzaG1hcCA9PiBgeyAnQ291bnRlclN0YXRlLmluY3JlbWVudCc6IHRydWUsICdDb3VudGVyU3RhdGUuZGVjcmVtZW50JzogdHJ1ZSB9YFxuICpcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIC0gQSBrZXktdmFsdWUgbWFwIHdoZXJlIGEga2V5IGlzIGEgdHlwZSBhbmQgdmFsdWUgaXMgYHRydWVgXG4gKi9cbmZ1bmN0aW9uIGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogVHlwZXMge1xuICAgIGNvbnN0IHR5cGVzOiBUeXBlcyA9IHt9O1xuXG4gICAgZm9yIChsZXQgaSA9IHJlY2VpdmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCByZWNlaXZlciA9IHJlY2VpdmVyc1tpXTtcbiAgICAgICAgY29uc3QgaXNOb3RGdW5jdGlvbiA9IHR5cGVvZiByZWNlaXZlciAhPT0gJ2Z1bmN0aW9uJztcblxuICAgICAgICBpZiAoaXNOb3RGdW5jdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmVjZWl2ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24sIGdvdCAke3JlY2VpdmVyfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWV0YTogUmVjZWl2ZXJNZXRhRGF0YSA9IHJlY2VpdmVyW1JFQ0VJVkVSX01FVEFfS0VZXTtcbiAgICAgICAgY29uc3QgaXNOb3RBbm5vdGF0ZWQgPSAhbWV0YSB8fCAhbWV0YS50eXBlO1xuXG4gICAgICAgIGlmIChpc05vdEFubm90YXRlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3JlY2VpdmVyLm5hbWV9IHNob3VsZCBiZSBkZWNvcmF0ZWQgdXNpbmcgQFJlY2VpdmVyKCkgZGVjb3JhdG9yYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlc1ttZXRhLnR5cGVdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZXM7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZURpc3BhdGNoZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkRpc3BhdGNoZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVTdWNjZXNzZnVsKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5TdWNjZXNzZnVsKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlQ2FuY2VsZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkNhbmNlbGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlRXJyb3JlZCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuRXJyb3JlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHR5cGVzIC0gSGFzaG1hcCB0aGF0IGNvbnRhaW5zIGFjdGlvbiB0eXBlc1xuICogQHBhcmFtIHN0YXR1cyAtIFN0YXR1cyBvZiB0aGUgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqIEByZXR1cm5zIC0gUnhKUyBmYWN0b3J5IG9wZXJhdG9yIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZSh0eXBlczogVHlwZXMsIHN0YXR1czogQWN0aW9uU3RhdHVzKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4pID0+IHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKChjdHg6IEFjdGlvbkNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNoTWFwSGFzVHlwZSA9IHR5cGVzW2dldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoY3R4LmFjdGlvbildO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHRIYXNUcmFuc21pdHRlZFN0YXR1cyA9IGN0eC5zdGF0dXMgPT09IHN0YXR1cztcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzaE1hcEhhc1R5cGUgJiYgY29udGV4dEhhc1RyYW5zbWl0dGVkU3RhdHVzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKHsgYWN0aW9uLCBlcnJvciB9OiBBY3Rpb25Db250ZXh0KSA9PiAoe1xuICAgICAgICAgICAgICAgIHR5cGU6IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoYWN0aW9uKSxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6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

@@ -8,3 +8,3 @@ import { ensureStoreMetadata, Store, getActionTypeFromInstance } from '@ngxs/store';

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -59,3 +59,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -162,3 +162,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -208,3 +208,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -233,3 +233,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -273,2 +273,3 @@ var EmitStore = /** @class */ (function (_super) {

/**
* @private
* @template T, U

@@ -280,2 +281,3 @@ * @param {?} metadata - Receiver function metadata

EmitStore.prototype.dispatchSingle = /**
* @private
* @template T, U

@@ -307,2 +309,3 @@ * @param {?} metadata - Receiver function metadata

/**
* @private
* @template T, U

@@ -314,2 +317,3 @@ * @param {?} metadata - Receiver function metadata

EmitStore.prototype.dispatchMany = /**
* @private
* @template T, U

@@ -341,3 +345,3 @@ * @param {?} metadata - Receiver function metadata

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -364,3 +368,3 @@ /**

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -398,3 +402,3 @@ var NgxsEmitPluginModule = /** @class */ (function () {

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -411,5 +415,3 @@ /**

var types = {};
/** @type {?} */
var i = receivers.length;
while (i--) {
for (var i = receivers.length - 1; i >= 0; i--) {
/** @type {?} */

@@ -503,3 +505,3 @@ var receiver = receivers[i];

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -509,3 +511,3 @@

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -515,3 +517,3 @@

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -521,2 +523,2 @@

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1sYWJzLWVtaXR0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9pbnRlcm5hbC9pbnRlcm5hbHMudHMiLCJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2FjdGlvbnMvYWN0aW9ucy50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2RlY29yYXRvcnMvZW1pdHRlci50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9lbWl0Lm1vZHVsZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL29wZXJhdG9ycy9vZi1lbWl0dGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU3RhdHVzIG9mIGEgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQWN0aW9uU3RhdHVzIHtcbiAgICBEaXNwYXRjaGVkID0gJ0RJU1BBVENIRUQnLFxuICAgIFN1Y2Nlc3NmdWwgPSAnU1VDQ0VTU0ZVTCcsXG4gICAgQ2FuY2VsZWQgPSAnQ0FOQ0VMRUQnLFxuICAgIEVycm9yZWQgPSAnRVJST1JFRCcsXG59XG5cbi8qKlxuICogQWN0aW9uIGNsYXNzIGNvbnRyYWN0XG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbjxUPiA9IFR5cGU8VD4gJiB7XG4gICAgdHlwZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBTdGF0aWMgbWV0YWRhdGEgZm9yIHRoZSByZWNlaXZlciBmdW5jdGlvblxuICpcbiAqIEBwcm9wZXJ0eSB0eXBlIC0gQWN0aW9uIHR5cGUgKG9wdGlvbmFsKVxuICogQHByb3BlcnR5IGFjdGlvbiAtIEN1c3RvbSBhY3Rpb24gdG8gZGlzcGF0Y2ggKG9wdGlvbmFsKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpdmVyTWV0YURhdGE8VCBleHRlbmRzIEZ1bmN0aW9uID0gYW55PiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHBheWxvYWQ6IGFueTtcbiAgICBhY3Rpb246IEFjdGlvbjxUPiB8IEFjdGlvbjxUPltdO1xuICAgIGNhbmNlbFVuY29tcGxldGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBsYWluIG9iamVjdCB0aGF0IGNvbnRhaW5zIGhlbHBlcnMgdGhhdCBkaXNwYXRjaCBwYXlsb2FkXG4gKlxuICogQHByb3BlcnR5IGVtaXQgLSBGdW5jdGlvbiB0aGF0IGRpc3BhdGNoZXMgcGF5bG9hZCB1bmRlciB0aGUgaG9vZFxuICogQHByb3BlcnR5IGVtaXRNYW55IC0gRnVuY3Rpb24gdGhhdCBtYWtlcyBtdWx0aXBsZSBkaXNwYXRjaGluZyB1bmRlciB0aGUgaG9vZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtaXR0YWJsZTxUID0gYW55LCBVID0gYW55PiB7XG4gICAgZW1pdChwYXlsb2FkPzogVCk6IE9ic2VydmFibGU8VT47XG4gICAgZW1pdE1hbnkocGF5bG9hZHM/OiBUW10pOiBPYnNlcnZhYmxlPFU+O1xufVxuXG4vKipcbiAqIEJhc2ljIHdyYXBwZXIgYXJvdW5kIGFjdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgc3RhdHVzIC0gU3RhdHVzIG9mIGRpc3BhdGNoZWQgYWN0aW9uXG4gKiBAcHJvcGVydHkgYWN0aW9uIC0gQWN0aW9uIGluc3RhbmNlXG4gKiBAcHJvcGVydHkgZXJyb3IgLSBFcnJvciBpZiBoYXBwZW5lZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnRleHQge1xuICAgIHN0YXR1czogQWN0aW9uU3RhdHVzO1xuICAgIGFjdGlvbjogYW55O1xuICAgIGVycm9yPzogRXJyb3I7XG59XG5cbi8qKlxuICogQWN0aW9uIGNvbnRleHQgdGhhdCBtYXBzIGBvZkVtaXR0YWJsZWAgb3BlcmF0b3JcbiAqXG4gKiBAcHJvcGVydHkgdHlwZSAtIEFjdGlvbiB0eXBlXG4gKiBAcHJvcGVydHkgcGF5bG9hZCAtIERpc3BhdGNoZWQgZGF0YVxuICogQHByb3BlcnR5IGVycm9yIC0gRXJyb3IgdGhhdCBoYXMgYmVlbiB0aHJvd2VkIG9yIHVuZGVmaW5lZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxUID0gYW55PiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHBheWxvYWQ6IFQ7XG4gICAgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEhhc2htYXAgdGhhdCBjb250YWlucyB0eXBlcyB0byBmaWx0ZXIgdXNpbmcgYG9mRW1pdHRhYmxlYCBvcGVyYXRvclxuICpcbiAqIEBwcm9wZXJ0eSBrZXkgLSBBbnkgc3RyaW5nIGtleVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVzIHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBjb25zdCAtIFRoaXMgY29uc3RhbnQgaXMgYSBrZXkgZm9yIGRlZmluaW5nIHN0YXRpYyBtZXRhZGF0YSB1c2luZyBgQFJlY2VpdmVyYFxuICovXG5leHBvcnQgY29uc3QgUkVDRUlWRVJfTUVUQV9LRVkgPSAnTkdYU19SRUNFSVZFUl9NRVRBJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBjb25zdHJ1Y3Rvck9yQ29uc3RydWN0b3JzIC0gU2luZ2xlIGNsYXNzIG9yIGFycmF5IG9mIGNsYXNzZXNcbiAqIEByZXR1cm5zIC0gQXJyYXkgb2YgY2xhc3NlcyAoYWN0aW9ucylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5Db25zdHJ1Y3RvcnMoY29uc3RydWN0b3JPckNvbnN0cnVjdG9yczogQWN0aW9uPGFueT4gfCBBY3Rpb248YW55PltdKTogQWN0aW9uPGFueT5bXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29uc3RydWN0b3JPckNvbnN0cnVjdG9ycykpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yT3JDb25zdHJ1Y3RvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtjb25zdHJ1Y3Rvck9yQ29uc3RydWN0b3JzXTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBjb25zdHJ1Y3RvcnMgLSBBcnJheSBvZiBjbGFzc2VzIChhY3Rpb25zKVxuICogQHBhcmFtIHBheWxvYWQgLSBQYXlsb2FkIHRvIGRpc3BhdGNoXG4gKiBAcmV0dXJucyAtIEFycmF5IG9mIGluc3RhbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RXZlbnRzRm9yU2luZ2xlRGlzcGF0Y2hpbmc8VD4oY29uc3RydWN0b3JzOiBUeXBlPGFueT5bXSwgcGF5bG9hZDogVCB8IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycy5tYXAoKEFjdGlvbikgPT4gbmV3IEFjdGlvbihwYXlsb2FkKSk7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0gY29uc3RydWN0b3JzIC0gQXJyYXkgb2YgY2xhc3NlcyAoYWN0aW9ucylcbiAqIEBwYXJhbSBwYXlsb2FkcyAtIFBheWxvYWRzIHRvIGRpc3BhdGNoXG4gKiBAcmV0dXJucyAtIEFycmF5IG9mIGluc3RhbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RXZlbnRzRm9yTWFueURpc3BhdGNoaW5nPFQ+KGNvbnN0cnVjdG9yczogVHlwZTxhbnk+W10sIHBheWxvYWRzOiBUW10pOiBhbnkge1xuICAgIGNvbnN0IGV2ZW50cyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGNvbnN0cnVjdG9yc0xlbmd0aCA9IGNvbnN0cnVjdG9ycy5sZW5ndGg7IGkgPCBjb25zdHJ1Y3RvcnNMZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBBY3Rpb24gPSBjb25zdHJ1Y3RvcnNbaV07XG4gICAgICAgIGZvciAobGV0IGogPSAwLCBwYXlsb2Fkc0xlbmd0aCA9IHBheWxvYWRzLmxlbmd0aDsgaiA8IHBheWxvYWRzTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGV2ZW50cy5wdXNoKG5ldyBBY3Rpb24ocGF5bG9hZHNbal0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBldmVudHM7XG59XG4iLCJpbXBvcnQgeyBlbnN1cmVTdG9yZU1ldGFkYXRhIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBSZWNlaXZlck1ldGFEYXRhLCBSRUNFSVZFUl9NRVRBX0tFWSB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAcmV0dXJucyAtIEdlbmVyYXRlZCBoYXNoIHcvbyBjb2xsaXNpb25zIGJlY2F1c2UgaXQncyB0aW1lLWJhc2VkXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlSGFzaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAoTWF0aC5yYW5kb20oKSAqIERhdGUubm93KCkpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA4KTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGBAUmVjZWl2ZXIoKWAgZGVjb3JhdG9yXG4gKiBAcGFyYW0gdGFyZ2V0IC0gRGVjb3JhdGVkIHRhcmdldFxuICogQHBhcmFtIGtleSAtIERlY29yYXRlZCBrZXlcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aW9uUHJvcGVydGllcyhvcHRpb25zOiBQYXJ0aWFsPFJlY2VpdmVyTWV0YURhdGE+IHwgdW5kZWZpbmVkLCB0YXJnZXQ6IEZ1bmN0aW9uLCBrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wZXJ0aWVzOiBSZWNlaXZlck1ldGFEYXRhID0ge1xuICAgICAgICB0eXBlOiBgW0lEOiR7Z2VuZXJhdGVIYXNoKCl9XSAke3RhcmdldC5uYW1lfS4ke2tleX1gLFxuICAgICAgICBwYXlsb2FkOiB1bmRlZmluZWQsXG4gICAgICAgIGFjdGlvbjogdW5kZWZpbmVkISxcbiAgICAgICAgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUsXG4gICAgfTtcblxuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFByb3BlcnRpZXM7XG4gICAgfVxuXG4gICAgY29uc3QgeyB0eXBlLCBwYXlsb2FkLCBhY3Rpb24sIGNhbmNlbFVuY29tcGxldGVkIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgZGVmYXVsdFByb3BlcnRpZXMudHlwZSA9IHR5cGU7XG4gICAgfVxuXG4gICAgaWYgKHBheWxvYWQpIHtcbiAgICAgICAgZGVmYXVsdFByb3BlcnRpZXMucGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbikge1xuICAgICAgICBkZWZhdWx0UHJvcGVydGllcy5hY3Rpb24gPSBhY3Rpb247XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFjdGlvbikpIHtcbiAgICAgICAgICAgIGRlZmF1bHRQcm9wZXJ0aWVzLnR5cGUgPSBhY3Rpb24udHlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FuY2VsVW5jb21wbGV0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICBkZWZhdWx0UHJvcGVydGllcy5jYW5jZWxVbmNvbXBsZXRlZCA9IGNhbmNlbFVuY29tcGxldGVkO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0UHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBEZWNvcmF0ZXMgYSBtZXRob2Qgd2l0aCBhIHJlY2VpdmVyIGluZm9ybWF0aW9uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBjb25maWd1cmluZyBzdGF0aWMgbWV0YWRhdGFcbiAqIEByZXR1cm5zIC0gRmFjdG9yeSBmb3IgZGVjb3JhdGluZyBtZXRob2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJlY2VpdmVyKG9wdGlvbnM/OiBQYXJ0aWFsPFJlY2VpdmVyTWV0YURhdGE+KTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gPFQ+KHRhcmdldDogYW55LCBrZXk6IHN0cmluZyB8IHN5bWJvbCwgZGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD4pID0+IHtcbiAgICAgICAgY29uc3QgaXNOb3RGdW5jdGlvbk9yTm90U3RhdGljID0gdHlwZW9mIHRhcmdldC5wcm90b3R5cGUgPT09ICd1bmRlZmluZWQnIHx8ICFkZXNjcmlwdG9yIHx8IHR5cGVvZiB0YXJnZXRba2V5XSAhPT0gJ2Z1bmN0aW9uJztcblxuICAgICAgICBpZiAoaXNOb3RGdW5jdGlvbk9yTm90U3RhdGljKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBPbmx5IHN0YXRpYyBmdW5jdGlvbnMgY2FuIGJlIGRlY29yYXRlZCB3aXRoIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzZXJ2ZWRLZXlBbHJlYWR5RXhpc3RzID0ga2V5IGluIHRhcmdldC5wcm90b3R5cGU7XG4gICAgICAgIGlmIChyZXNlcnZlZEtleUFscmVhZHlFeGlzdHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvcGVydHkgd2l0aCBuYW1lIFxcYCR7a2V5LnRvU3RyaW5nKCl9XFxgIGFscmVhZHkgZXhpc3RzLCBwbGVhc2UgcmVuYW1lIHRvIGF2b2lkIGNvbmZsaWN0c2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBrZXkgPSBTdHJpbmcoa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGEgPSBlbnN1cmVTdG9yZU1ldGFkYXRhKHRhcmdldCk7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcGF5bG9hZCwgYWN0aW9uLCBjYW5jZWxVbmNvbXBsZXRlZCB9ID0gZ2V0QWN0aW9uUHJvcGVydGllcyhvcHRpb25zLCB0YXJnZXQsIGtleSk7XG5cbiAgICAgICAgaWYgKG1ldGEuYWN0aW9ucy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNZXRob2QgZGVjb3JhdGVkIHdpdGggc3VjaCB0eXBlIFxcYCR7dHlwZX1cXGAgYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhY3Rpb24pKSB7XG4gICAgICAgICAgICBtZXRhLmFjdGlvbnNbdHlwZV0gPSBbe1xuICAgICAgICAgICAgICAgIGZuOiBgJHtrZXl9YCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7IGNhbmNlbFVuY29tcGxldGVkIH0sXG4gICAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgfV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gYWN0aW9uLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBhY3Rpb25baV07XG4gICAgICAgICAgICAgICAgbWV0YS5hY3Rpb25zW3R5cGVdID0gW3tcbiAgICAgICAgICAgICAgICAgICAgZm46IGAke2tleX1gLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IGNhbmNlbFVuY29tcGxldGVkIH0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGVcbiAgICAgICAgICAgICAgICB9XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUhW1JFQ0VJVkVSX01FVEFfS0VZXSA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgIH07XG5cbiAgICAgICAgdGFyZ2V0LnByb3RvdHlwZVtrZXldID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0uYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEFsbG93cyBtdWx0aXBsZSBkZWNvcmF0b3JzIHRvIGdldCBhY2Nlc3MgdG8gdGhlIERJIHN0b3JlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbmplY3RvckFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBJbmplY3RvciBmb3IgYWNjZXNzaW5nIERJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5qZWN0b3I6IEluamVjdG9yIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIEluamVjdG9yQWNjZXNzb3IgaW5zdGFuY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmplY3RvciAtIFJvb3QgaW5qZWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgSW5qZWN0b3JBY2Nlc3Nvci5pbmplY3RvciA9IGluamVjdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gRXJyb3IgaWYgYE5neHNFbWl0UGx1Z2luTW9kdWxlYCBpcyBub3QgaW1wb3J0ZWQgb3IgaW5qZWN0b3IgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEluamVjdG9yKCk6IG5ldmVyIHwgSW5qZWN0b3Ige1xuICAgICAgICBpZiAoIXRoaXMuaW5qZWN0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91J3ZlIGZvcmdvdHRlbiB0byBpbXBvcnQgXFxgTmd4c0VtaXRQbHVnaW5Nb2R1bGVcXGBgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yO1xuICAgIH1cbn1cbiIsIi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgZGVmYXVsdCBhY3Rpb24gd2hlbiB0aGUgdXNlciBkb2Vzbid0IHBhc3MgYW55IGN1c3RvbSBhY3Rpb24gYXMgYW4gYXJndW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEVtaXR0ZXJBY3Rpb248VCA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0eXBlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB0eXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgRW1pdHRlckFjdGlvbiBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ/OiBUKSB7fVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRW1pdHRlckFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIFJFQ0VJVkVSX01FVEFfS0VZLFxuICAgIEVtaXR0YWJsZSxcbiAgICBSZWNlaXZlck1ldGFEYXRhLFxuICAgIGZsYXR0ZW5Db25zdHJ1Y3RvcnMsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yU2luZ2xlRGlzcGF0Y2hpbmcsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yTWFueURpc3BhdGNoaW5nXG59IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbWl0U3RvcmUgZXh0ZW5kcyBTdG9yZSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb24gZnJvbSB0aGUgc3RvcmVcbiAgICAgKiBAcmV0dXJucyAtIEEgcGxhaW4gb2JqZWN0IHdpdGggYW4gYGVtaXRgIGZ1bmN0aW9uIGZvciBjYWxsaW5nIGVtaXR0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZW1pdHRlcjxUID0gYW55LCBVID0gYW55PihyZWNlaXZlcjogRnVuY3Rpb24pOiBFbWl0dGFibGU8VCwgVT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSA9IHJlY2VpdmVyW1JFQ0VJVkVSX01FVEFfS0VZXTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEkgY2FuJ3Qgc2VlbSB0byBmaW5kIHN0YXRpYyBtZXRhZGF0YS4gSGF2ZSB5b3UgZGVjb3JhdGVkICR7cmVjZWl2ZXIubmFtZX0gd2l0aCBAUmVjZWl2ZXIoKT9gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbWl0OiAocGF5bG9hZD86IFQpID0+IHRoaXMuZGlzcGF0Y2hTaW5nbGU8VCwgVT4obWV0YWRhdGEsIHBheWxvYWQpLFxuICAgICAgICAgICAgZW1pdE1hbnk6IChwYXlsb2Fkcz86IFRbXSkgPT4gdGhpcy5kaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGEsIHBheWxvYWRzKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaFNpbmdsZTxULCBVPihtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSwgcGF5bG9hZD86IFQpOiBPYnNlcnZhYmxlPFU+IHtcbiAgICAgICAgRW1pdHRlckFjdGlvbi50eXBlID0gbWV0YWRhdGEudHlwZTtcblxuICAgICAgICBjb25zdCBzaG91bGRBcHBseURlZmF1bHRQYXlsb2FkID0gdHlwZW9mIHBheWxvYWQgPT09ICd1bmRlZmluZWQnICYmIG1ldGFkYXRhLnBheWxvYWQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHNob3VsZEFwcGx5RGVmYXVsdFBheWxvYWQpIHtcbiAgICAgICAgICAgIHBheWxvYWQgPSBtZXRhZGF0YS5wYXlsb2FkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0ZvclNpbmdsZURpc3BhdGNoaW5nPFQ+KGZsYXR0ZW5lZENvbnN0cnVjdG9ycywgcGF5bG9hZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gobmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWRzIC0gQXJyYXkgd2l0aCBkYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWRzPzogVFtdKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXlsb2FkcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0Zvck1hbnlEaXNwYXRjaGluZyhmbGF0dGVuZWRDb25zdHJ1Y3RvcnMsIHBheWxvYWRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChcbiAgICAgICAgICAgIHBheWxvYWRzLm1hcCgocGF5bG9hZCkgPT4gbmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0b3JBY2Nlc3NvciB9IGZyb20gJy4uL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi4vc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBEZWNvcmF0ZXMgYSBwcm9wZXJ0eSBhbmQgZGVmaW5lcyBuZXcgZ2V0dGVyXG4gKlxuICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25cbiAqIEByZXR1cm5zIC0gRmFjdG9yeSBmdW5jdGlvbiBmb3IgZGVjb3JhdGluZyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbWl0dGVyKHJlY2VpdmVyOiBGdW5jdGlvbik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gSW5qZWN0b3JBY2Nlc3Nvci5nZXRJbmplY3RvcigpLmdldDxFbWl0U3RvcmU+KEVtaXRTdG9yZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmVtaXR0ZXIocmVjZWl2ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBJbmplY3RvckFjY2Vzc29yIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoKVxuZXhwb3J0IGNsYXNzIE5neHNFbWl0UGx1Z2luTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3RvcihAU2VsZigpIHByaXZhdGUgaW5qZWN0b3JBY2Nlc3NvcjogSW5qZWN0b3JBY2Nlc3Nvcikge31cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gQSB3cmFwcGVyIGFyb3VuZCBgTmdNb2R1bGVgXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Tmd4c0VtaXRQbHVnaW5Nb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOZ3hzRW1pdFBsdWdpbk1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW0VtaXRTdG9yZSwgSW5qZWN0b3JBY2Nlc3Nvcl1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUkVDRUlWRVJfTUVUQV9LRVksIEFjdGlvblN0YXR1cywgQWN0aW9uQ29udGV4dCwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0LCBSZWNlaXZlck1ldGFEYXRhLCBUeXBlcyB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogYGdldFJlY2VpdmVyVHlwZXMoW0NvdW50ZXJTdGF0ZS5pbmNyZW1lbnQsIENvdW50ZXJTdGF0ZS5kZWNyZW1lbnRdKWBcbiAqIHdpbGwgcmV0dXJuIGEgaGFzaG1hcCA9PiBgeyAnQ291bnRlclN0YXRlLmluY3JlbWVudCc6IHRydWUsICdDb3VudGVyU3RhdGUuZGVjcmVtZW50JzogdHJ1ZSB9YFxuICpcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIC0gQSBrZXktdmFsdWUgbWFwIHdoZXJlIGEga2V5IGlzIGEgdHlwZSBhbmQgdmFsdWUgaXMgYHRydWVgXG4gKi9cbmZ1bmN0aW9uIGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogVHlwZXMge1xuICAgIGNvbnN0IHR5cGVzOiBUeXBlcyA9IHt9O1xuXG4gICAgbGV0IGkgPSByZWNlaXZlcnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgY29uc3QgcmVjZWl2ZXIgPSByZWNlaXZlcnNbaV07XG4gICAgICAgIGNvbnN0IGlzTm90RnVuY3Rpb24gPSB0eXBlb2YgcmVjZWl2ZXIgIT09ICdmdW5jdGlvbic7XG5cbiAgICAgICAgaWYgKGlzTm90RnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY2VpdmVyIHNob3VsZCBiZSBhIGZ1bmN0aW9uLCBnb3QgJHtyZWNlaXZlcn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGE6IFJlY2VpdmVyTWV0YURhdGEgPSByZWNlaXZlcltSRUNFSVZFUl9NRVRBX0tFWV07XG4gICAgICAgIGNvbnN0IGlzTm90QW5ub3RhdGVkID0gIW1ldGEgfHwgIW1ldGEudHlwZTtcblxuICAgICAgICBpZiAoaXNOb3RBbm5vdGF0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtyZWNlaXZlci5uYW1lfSBzaG91bGQgYmUgZGVjb3JhdGVkIHVzaW5nIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZXNbbWV0YS50eXBlXSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVEaXNwYXRjaGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlU3VjY2Vzc2Z1bCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuU3VjY2Vzc2Z1bCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUNhbmNlbGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5DYW5jZWxlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUVycm9yZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkVycm9yZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0eXBlcyAtIEhhc2htYXAgdGhhdCBjb250YWlucyBhY3Rpb24gdHlwZXNcbiAqIEBwYXJhbSBzdGF0dXMgLSBTdGF0dXMgb2YgdGhlIGRpc3BhdGNoZWQgYWN0aW9uXG4gKiBAcmV0dXJucyAtIFJ4SlMgZmFjdG9yeSBvcGVyYXRvciBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGUodHlwZXM6IFR5cGVzLCBzdGF0dXM6IEFjdGlvblN0YXR1cyk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHQ+KSA9PiB7XG4gICAgICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaE1hcEhhc1R5cGUgPSB0eXBlc1tnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGN0eC5hY3Rpb24pXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0SGFzVHJhbnNtaXR0ZWRTdGF0dXMgPSBjdHguc3RhdHVzID09PSBzdGF0dXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hNYXBIYXNUeXBlICYmIGNvbnRleHRIYXNUcmFuc21pdHRlZFN0YXR1cztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCh7IGFjdGlvbiwgZXJyb3IgfTogQWN0aW9uQ29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbiksXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogYWN0aW9uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgIH07XG59XG4iXSwibmFtZXMiOlsidHNs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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1sYWJzLWVtaXR0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9pbnRlcm5hbC9pbnRlcm5hbHMudHMiLCJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2FjdGlvbnMvYWN0aW9ucy50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2RlY29yYXRvcnMvZW1pdHRlci50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9lbWl0Lm1vZHVsZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL29wZXJhdG9ycy9vZi1lbWl0dGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU3RhdHVzIG9mIGEgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQWN0aW9uU3RhdHVzIHtcbiAgICBEaXNwYXRjaGVkID0gJ0RJU1BBVENIRUQnLFxuICAgIFN1Y2Nlc3NmdWwgPSAnU1VDQ0VTU0ZVTCcsXG4gICAgQ2FuY2VsZWQgPSAnQ0FOQ0VMRUQnLFxuICAgIEVycm9yZWQgPSAnRVJST1JFRCcsXG59XG5cbi8qKlxuICogQWN0aW9uIGNsYXNzIGNvbnRyYWN0XG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbjxUPiA9IFR5cGU8VD4gJiB7XG4gICAgdHlwZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBTdGF0aWMgbWV0YWRhdGEgZm9yIHRoZSByZWNlaXZlciBmdW5jdGlvblxuICpcbiAqIEBwcm9wZXJ0eSB0eXBlIC0gQWN0aW9uIHR5cGUgKG9wdGlvbmFsKVxuICogQHByb3BlcnR5IGFjdGlvbiAtIEN1c3RvbSBhY3Rpb24gdG8gZGlzcGF0Y2ggKG9wdGlvbmFsKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpdmVyTWV0YURhdGE8VCBleHRlbmRzIEZ1bmN0aW9uID0gYW55PiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHBheWxvYWQ6IGFueTtcbiAgICBhY3Rpb246IEFjdGlvbjxUPiB8IEFjdGlvbjxUPltdO1xuICAgIGNhbmNlbFVuY29tcGxldGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBsYWluIG9iamVjdCB0aGF0IGNvbnRhaW5zIGhlbHBlcnMgdGhhdCBkaXNwYXRjaCBwYXlsb2FkXG4gKlxuICogQHByb3BlcnR5IGVtaXQgLSBGdW5jdGlvbiB0aGF0IGRpc3BhdGNoZXMgcGF5bG9hZCB1bmRlciB0aGUgaG9vZFxuICogQHByb3BlcnR5IGVtaXRNYW55IC0gRnVuY3Rpb24gdGhhdCBtYWtlcyBtdWx0aXBsZSBkaXNwYXRjaGluZyB1bmRlciB0aGUgaG9vZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtaXR0YWJsZTxUID0gYW55LCBVID0gYW55PiB7XG4gICAgZW1pdChwYXlsb2FkPzogVCk6IE9ic2VydmFibGU8VT47XG4gICAgZW1pdE1hbnkocGF5bG9hZHM/OiBUW10pOiBPYnNlcnZhYmxlPFU+O1xufVxuXG4vKipcbiAqIEJhc2ljIHdyYXBwZXIgYXJvdW5kIGFjdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgc3RhdHVzIC0gU3RhdHVzIG9mIGRpc3BhdGNoZWQgYWN0aW9uXG4gKiBAcHJvcGVydHkgYWN0aW9uIC0gQWN0aW9uIGluc3RhbmNlXG4gKiBAcHJvcGVydHkgZXJyb3IgLSBFcnJvciBpZiBoYXBwZW5lZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnRleHQge1xuICAgIHN0YXR1czogQWN0aW9uU3RhdHVzO1xuICAgIGFjdGlvbjogYW55O1xuICAgIGVycm9yPzogRXJyb3I7XG59XG5cbi8qKlxuICogQWN0aW9uIGNvbnRleHQgdGhhdCBtYXBzIGBvZkVtaXR0YWJsZWAgb3BlcmF0b3JcbiAqXG4gKiBAcHJvcGVydHkgdHlwZSAtIEFjdGlvbiB0eXBlXG4gKiBAcHJvcGVydHkgcGF5bG9hZCAtIERpc3BhdGNoZWQgZGF0YVxuICogQHByb3BlcnR5IGVycm9yIC0gRXJyb3IgdGhhdCBoYXMgYmVlbiB0aHJvd2VkIG9yIHVuZGVmaW5lZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxUID0gYW55PiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHBheWxvYWQ6IFQ7XG4gICAgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEhhc2htYXAgdGhhdCBjb250YWlucyB0eXBlcyB0byBmaWx0ZXIgdXNpbmcgYG9mRW1pdHRhYmxlYCBvcGVyYXRvclxuICpcbiAqIEBwcm9wZXJ0eSBrZXkgLSBBbnkgc3RyaW5nIGtleVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVzIHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBjb25zdCAtIFRoaXMgY29uc3RhbnQgaXMgYSBrZXkgZm9yIGRlZmluaW5nIHN0YXRpYyBtZXRhZGF0YSB1c2luZyBgQFJlY2VpdmVyYFxuICovXG5leHBvcnQgY29uc3QgUkVDRUlWRVJfTUVUQV9LRVkgPSAnTkdYU19SRUNFSVZFUl9NRVRBJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBjb25zdHJ1Y3Rvck9yQ29uc3RydWN0b3JzIC0gU2luZ2xlIGNsYXNzIG9yIGFycmF5IG9mIGNsYXNzZXNcbiAqIEByZXR1cm5zIC0gQXJyYXkgb2YgY2xhc3NlcyAoYWN0aW9ucylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5Db25zdHJ1Y3RvcnMoY29uc3RydWN0b3JPckNvbnN0cnVjdG9yczogQWN0aW9uPGFueT4gfCBBY3Rpb248YW55PltdKTogQWN0aW9uPGFueT5bXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29uc3RydWN0b3JPckNvbnN0cnVjdG9ycykpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yT3JDb25zdHJ1Y3RvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtjb25zdHJ1Y3Rvck9yQ29uc3RydWN0b3JzXTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBjb25zdHJ1Y3RvcnMgLSBBcnJheSBvZiBjbGFzc2VzIChhY3Rpb25zKVxuICogQHBhcmFtIHBheWxvYWQgLSBQYXlsb2FkIHRvIGRpc3BhdGNoXG4gKiBAcmV0dXJucyAtIEFycmF5IG9mIGluc3RhbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RXZlbnRzRm9yU2luZ2xlRGlzcGF0Y2hpbmc8VD4oY29uc3RydWN0b3JzOiBUeXBlPGFueT5bXSwgcGF5bG9hZDogVCB8IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycy5tYXAoKEFjdGlvbikgPT4gbmV3IEFjdGlvbihwYXlsb2FkKSk7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0gY29uc3RydWN0b3JzIC0gQXJyYXkgb2YgY2xhc3NlcyAoYWN0aW9ucylcbiAqIEBwYXJhbSBwYXlsb2FkcyAtIFBheWxvYWRzIHRvIGRpc3BhdGNoXG4gKiBAcmV0dXJucyAtIEFycmF5IG9mIGluc3RhbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RXZlbnRzRm9yTWFueURpc3BhdGNoaW5nPFQ+KGNvbnN0cnVjdG9yczogVHlwZTxhbnk+W10sIHBheWxvYWRzOiBUW10pOiBhbnkge1xuICAgIGNvbnN0IGV2ZW50cyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGNvbnN0cnVjdG9yc0xlbmd0aCA9IGNvbnN0cnVjdG9ycy5sZW5ndGg7IGkgPCBjb25zdHJ1Y3RvcnNMZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBBY3Rpb24gPSBjb25zdHJ1Y3RvcnNbaV07XG4gICAgICAgIGZvciAobGV0IGogPSAwLCBwYXlsb2Fkc0xlbmd0aCA9IHBheWxvYWRzLmxlbmd0aDsgaiA8IHBheWxvYWRzTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGV2ZW50cy5wdXNoKG5ldyBBY3Rpb24ocGF5bG9hZHNbal0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBldmVudHM7XG59XG4iLCJpbXBvcnQgeyBlbnN1cmVTdG9yZU1ldGFkYXRhIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBSZWNlaXZlck1ldGFEYXRhLCBSRUNFSVZFUl9NRVRBX0tFWSB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAcmV0dXJucyAtIEdlbmVyYXRlZCBoYXNoIHcvbyBjb2xsaXNpb25zIGJlY2F1c2UgaXQncyB0aW1lLWJhc2VkXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlSGFzaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAoTWF0aC5yYW5kb20oKSAqIERhdGUubm93KCkpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA4KTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGBAUmVjZWl2ZXIoKWAgZGVjb3JhdG9yXG4gKiBAcGFyYW0gdGFyZ2V0IC0gRGVjb3JhdGVkIHRhcmdldFxuICogQHBhcmFtIGtleSAtIERlY29yYXRlZCBrZXlcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aW9uUHJvcGVydGllcyhvcHRpb25zOiBQYXJ0aWFsPFJlY2VpdmVyTWV0YURhdGE+IHwgdW5kZWZpbmVkLCB0YXJnZXQ6IEZ1bmN0aW9uLCBrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wZXJ0aWVzOiBSZWNlaXZlck1ldGFEYXRhID0ge1xuICAgICAgICB0eXBlOiBgW0lEOiR7Z2VuZXJhdGVIYXNoKCl9XSAke3RhcmdldC5uYW1lfS4ke2tleX1gLFxuICAgICAgICBwYXlsb2FkOiB1bmRlZmluZWQsXG4gICAgICAgIGFjdGlvbjogdW5kZWZpbmVkISxcbiAgICAgICAgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUsXG4gICAgfTtcblxuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFByb3BlcnRpZXM7XG4gICAgfVxuXG4gICAgY29uc3QgeyB0eXBlLCBwYXlsb2FkLCBhY3Rpb24sIGNhbmNlbFVuY29tcGxldGVkIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgZGVmYXVsdFByb3BlcnRpZXMudHlwZSA9IHR5cGU7XG4gICAgfVxuXG4gICAgaWYgKHBheWxvYWQpIHtcbiAgICAgICAgZGVmYXVsdFByb3BlcnRpZXMucGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbikge1xuICAgICAgICBkZWZhdWx0UHJvcGVydGllcy5hY3Rpb24gPSBhY3Rpb247XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFjdGlvbikpIHtcbiAgICAgICAgICAgIGRlZmF1bHRQcm9wZXJ0aWVzLnR5cGUgPSBhY3Rpb24udHlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FuY2VsVW5jb21wbGV0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICBkZWZhdWx0UHJvcGVydGllcy5jYW5jZWxVbmNvbXBsZXRlZCA9IGNhbmNlbFVuY29tcGxldGVkO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0UHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBEZWNvcmF0ZXMgYSBtZXRob2Qgd2l0aCBhIHJlY2VpdmVyIGluZm9ybWF0aW9uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBjb25maWd1cmluZyBzdGF0aWMgbWV0YWRhdGFcbiAqIEByZXR1cm5zIC0gRmFjdG9yeSBmb3IgZGVjb3JhdGluZyBtZXRob2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJlY2VpdmVyKG9wdGlvbnM/OiBQYXJ0aWFsPFJlY2VpdmVyTWV0YURhdGE+KTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gPFQ+KHRhcmdldDogYW55LCBrZXk6IHN0cmluZyB8IHN5bWJvbCwgZGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD4pID0+IHtcbiAgICAgICAgY29uc3QgaXNOb3RGdW5jdGlvbk9yTm90U3RhdGljID0gdHlwZW9mIHRhcmdldC5wcm90b3R5cGUgPT09ICd1bmRlZmluZWQnIHx8ICFkZXNjcmlwdG9yIHx8IHR5cGVvZiB0YXJnZXRba2V5XSAhPT0gJ2Z1bmN0aW9uJztcblxuICAgICAgICBpZiAoaXNOb3RGdW5jdGlvbk9yTm90U3RhdGljKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBPbmx5IHN0YXRpYyBmdW5jdGlvbnMgY2FuIGJlIGRlY29yYXRlZCB3aXRoIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzZXJ2ZWRLZXlBbHJlYWR5RXhpc3RzID0ga2V5IGluIHRhcmdldC5wcm90b3R5cGU7XG4gICAgICAgIGlmIChyZXNlcnZlZEtleUFscmVhZHlFeGlzdHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvcGVydHkgd2l0aCBuYW1lIFxcYCR7a2V5LnRvU3RyaW5nKCl9XFxgIGFscmVhZHkgZXhpc3RzLCBwbGVhc2UgcmVuYW1lIHRvIGF2b2lkIGNvbmZsaWN0c2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBrZXkgPSBTdHJpbmcoa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGEgPSBlbnN1cmVTdG9yZU1ldGFkYXRhKHRhcmdldCk7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcGF5bG9hZCwgYWN0aW9uLCBjYW5jZWxVbmNvbXBsZXRlZCB9ID0gZ2V0QWN0aW9uUHJvcGVydGllcyhvcHRpb25zLCB0YXJnZXQsIGtleSk7XG5cbiAgICAgICAgaWYgKG1ldGEuYWN0aW9ucy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNZXRob2QgZGVjb3JhdGVkIHdpdGggc3VjaCB0eXBlIFxcYCR7dHlwZX1cXGAgYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhY3Rpb24pKSB7XG4gICAgICAgICAgICBtZXRhLmFjdGlvbnNbdHlwZV0gPSBbe1xuICAgICAgICAgICAgICAgIGZuOiBgJHtrZXl9YCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7IGNhbmNlbFVuY29tcGxldGVkIH0sXG4gICAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgfV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gYWN0aW9uLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBhY3Rpb25baV07XG4gICAgICAgICAgICAgICAgbWV0YS5hY3Rpb25zW3R5cGVdID0gW3tcbiAgICAgICAgICAgICAgICAgICAgZm46IGAke2tleX1gLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IGNhbmNlbFVuY29tcGxldGVkIH0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGVcbiAgICAgICAgICAgICAgICB9XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUhW1JFQ0VJVkVSX01FVEFfS0VZXSA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgIH07XG5cbiAgICAgICAgdGFyZ2V0LnByb3RvdHlwZVtrZXldID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0uYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEFsbG93cyBtdWx0aXBsZSBkZWNvcmF0b3JzIHRvIGdldCBhY2Nlc3MgdG8gdGhlIERJIHN0b3JlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbmplY3RvckFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBJbmplY3RvciBmb3IgYWNjZXNzaW5nIERJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5qZWN0b3I6IEluamVjdG9yIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIEluamVjdG9yQWNjZXNzb3IgaW5zdGFuY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmplY3RvciAtIFJvb3QgaW5qZWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgSW5qZWN0b3JBY2Nlc3Nvci5pbmplY3RvciA9IGluamVjdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gRXJyb3IgaWYgYE5neHNFbWl0UGx1Z2luTW9kdWxlYCBpcyBub3QgaW1wb3J0ZWQgb3IgaW5qZWN0b3IgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEluamVjdG9yKCk6IG5ldmVyIHwgSW5qZWN0b3Ige1xuICAgICAgICBpZiAoIXRoaXMuaW5qZWN0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91J3ZlIGZvcmdvdHRlbiB0byBpbXBvcnQgXFxgTmd4c0VtaXRQbHVnaW5Nb2R1bGVcXGBgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yO1xuICAgIH1cbn1cbiIsIi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgZGVmYXVsdCBhY3Rpb24gd2hlbiB0aGUgdXNlciBkb2Vzbid0IHBhc3MgYW55IGN1c3RvbSBhY3Rpb24gYXMgYW4gYXJndW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEVtaXR0ZXJBY3Rpb248VCA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0eXBlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB0eXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgRW1pdHRlckFjdGlvbiBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ/OiBUKSB7fVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRW1pdHRlckFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIFJFQ0VJVkVSX01FVEFfS0VZLFxuICAgIEVtaXR0YWJsZSxcbiAgICBSZWNlaXZlck1ldGFEYXRhLFxuICAgIGZsYXR0ZW5Db25zdHJ1Y3RvcnMsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yU2luZ2xlRGlzcGF0Y2hpbmcsXG4gICAgY29uc3RydWN0RXZlbnRzRm9yTWFueURpc3BhdGNoaW5nXG59IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbWl0U3RvcmUgZXh0ZW5kcyBTdG9yZSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb24gZnJvbSB0aGUgc3RvcmVcbiAgICAgKiBAcmV0dXJucyAtIEEgcGxhaW4gb2JqZWN0IHdpdGggYW4gYGVtaXRgIGZ1bmN0aW9uIGZvciBjYWxsaW5nIGVtaXR0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZW1pdHRlcjxUID0gYW55LCBVID0gYW55PihyZWNlaXZlcjogRnVuY3Rpb24pOiBFbWl0dGFibGU8VCwgVT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSA9IHJlY2VpdmVyW1JFQ0VJVkVSX01FVEFfS0VZXTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEkgY2FuJ3Qgc2VlbSB0byBmaW5kIHN0YXRpYyBtZXRhZGF0YS4gSGF2ZSB5b3UgZGVjb3JhdGVkICR7cmVjZWl2ZXIubmFtZX0gd2l0aCBAUmVjZWl2ZXIoKT9gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbWl0OiAocGF5bG9hZD86IFQpID0+IHRoaXMuZGlzcGF0Y2hTaW5nbGU8VCwgVT4obWV0YWRhdGEsIHBheWxvYWQpLFxuICAgICAgICAgICAgZW1pdE1hbnk6IChwYXlsb2Fkcz86IFRbXSkgPT4gdGhpcy5kaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGEsIHBheWxvYWRzKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaFNpbmdsZTxULCBVPihtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSwgcGF5bG9hZD86IFQpOiBPYnNlcnZhYmxlPFU+IHtcbiAgICAgICAgRW1pdHRlckFjdGlvbi50eXBlID0gbWV0YWRhdGEudHlwZTtcblxuICAgICAgICBjb25zdCBzaG91bGRBcHBseURlZmF1bHRQYXlsb2FkID0gdHlwZW9mIHBheWxvYWQgPT09ICd1bmRlZmluZWQnICYmIG1ldGFkYXRhLnBheWxvYWQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHNob3VsZEFwcGx5RGVmYXVsdFBheWxvYWQpIHtcbiAgICAgICAgICAgIHBheWxvYWQgPSBtZXRhZGF0YS5wYXlsb2FkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0ZvclNpbmdsZURpc3BhdGNoaW5nPFQ+KGZsYXR0ZW5lZENvbnN0cnVjdG9ycywgcGF5bG9hZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gobmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWRzIC0gQXJyYXkgd2l0aCBkYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWRzPzogVFtdKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXlsb2FkcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IG1ldGFkYXRhO1xuXG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZENvbnN0cnVjdG9ycyA9IGZsYXR0ZW5Db25zdHJ1Y3RvcnMoYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0cnVjdEV2ZW50c0Zvck1hbnlEaXNwYXRjaGluZyhmbGF0dGVuZWRDb25zdHJ1Y3RvcnMsIHBheWxvYWRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChcbiAgICAgICAgICAgIHBheWxvYWRzLm1hcCgocGF5bG9hZCkgPT4gbmV3IEVtaXR0ZXJBY3Rpb24ocGF5bG9hZCkpXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0b3JBY2Nlc3NvciB9IGZyb20gJy4uL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi4vc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBEZWNvcmF0ZXMgYSBwcm9wZXJ0eSBhbmQgZGVmaW5lcyBuZXcgZ2V0dGVyXG4gKlxuICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25cbiAqIEByZXR1cm5zIC0gRmFjdG9yeSBmdW5jdGlvbiBmb3IgZGVjb3JhdGluZyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbWl0dGVyKHJlY2VpdmVyOiBGdW5jdGlvbik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gSW5qZWN0b3JBY2Nlc3Nvci5nZXRJbmplY3RvcigpLmdldDxFbWl0U3RvcmU+KEVtaXRTdG9yZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmVtaXR0ZXIocmVjZWl2ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBJbmplY3RvckFjY2Vzc29yIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoKVxuZXhwb3J0IGNsYXNzIE5neHNFbWl0UGx1Z2luTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3RvcihAU2VsZigpIHByaXZhdGUgaW5qZWN0b3JBY2Nlc3NvcjogSW5qZWN0b3JBY2Nlc3Nvcikge31cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gQSB3cmFwcGVyIGFyb3VuZCBgTmdNb2R1bGVgXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Tmd4c0VtaXRQbHVnaW5Nb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOZ3hzRW1pdFBsdWdpbk1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW0VtaXRTdG9yZSwgSW5qZWN0b3JBY2Nlc3Nvcl1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUkVDRUlWRVJfTUVUQV9LRVksIEFjdGlvblN0YXR1cywgQWN0aW9uQ29udGV4dCwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0LCBSZWNlaXZlck1ldGFEYXRhLCBUeXBlcyB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogYGdldFJlY2VpdmVyVHlwZXMoW0NvdW50ZXJTdGF0ZS5pbmNyZW1lbnQsIENvdW50ZXJTdGF0ZS5kZWNyZW1lbnRdKWBcbiAqIHdpbGwgcmV0dXJuIGEgaGFzaG1hcCA9PiBgeyAnQ291bnRlclN0YXRlLmluY3JlbWVudCc6IHRydWUsICdDb3VudGVyU3RhdGUuZGVjcmVtZW50JzogdHJ1ZSB9YFxuICpcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIC0gQSBrZXktdmFsdWUgbWFwIHdoZXJlIGEga2V5IGlzIGEgdHlwZSBhbmQgdmFsdWUgaXMgYHRydWVgXG4gKi9cbmZ1bmN0aW9uIGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogVHlwZXMge1xuICAgIGNvbnN0IHR5cGVzOiBUeXBlcyA9IHt9O1xuXG4gICAgZm9yIChsZXQgaSA9IHJlY2VpdmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCByZWNlaXZlciA9IHJlY2VpdmVyc1tpXTtcbiAgICAgICAgY29uc3QgaXNOb3RGdW5jdGlvbiA9IHR5cGVvZiByZWNlaXZlciAhPT0gJ2Z1bmN0aW9uJztcblxuICAgICAgICBpZiAoaXNOb3RGdW5jdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmVjZWl2ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24sIGdvdCAke3JlY2VpdmVyfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWV0YTogUmVjZWl2ZXJNZXRhRGF0YSA9IHJlY2VpdmVyW1JFQ0VJVkVSX01FVEFfS0VZXTtcbiAgICAgICAgY29uc3QgaXNOb3RBbm5vdGF0ZWQgPSAhbWV0YSB8fCAhbWV0YS50eXBlO1xuXG4gICAgICAgIGlmIChpc05vdEFubm90YXRlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3JlY2VpdmVyLm5hbWV9IHNob3VsZCBiZSBkZWNvcmF0ZWQgdXNpbmcgQFJlY2VpdmVyKCkgZGVjb3JhdG9yYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlc1ttZXRhLnR5cGVdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZXM7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZURpc3BhdGNoZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkRpc3BhdGNoZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVTdWNjZXNzZnVsKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5TdWNjZXNzZnVsKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlQ2FuY2VsZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkNhbmNlbGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlRXJyb3JlZCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuRXJyb3JlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHR5cGVzIC0gSGFzaG1hcCB0aGF0IGNvbnRhaW5zIGFjdGlvbiB0eXBlc1xuICogQHBhcmFtIHN0YXR1cyAtIFN0YXR1cyBvZiB0aGUgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqIEByZXR1cm5zIC0gUnhKUyBmYWN0b3J5IG9wZXJhdG9yIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZSh0eXBlczogVHlwZXMsIHN0YXR1czogQWN0aW9uU3RhdHVzKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4pID0+IHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKChjdHg6IEFjdGlvbkNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNoTWFwSGFzVHlwZSA9IHR5cGVzW2dldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoY3R4LmFjdGlvbildO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHRIYXNUcmFuc21pdHRlZFN0YXR1cyA9IGN0eC5zdGF0dXMgPT09IHN0YXR1cztcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzaE1hcEhhc1R5cGUgJiYgY29udGV4dEhhc1RyYW5zbWl0dGVkU3RhdHVzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKHsgYWN0aW9uLCBlcnJvciB9OiBBY3Rpb25Db250ZXh0KSA9PiAoe1xuICAgICAgICAgICAgICAgIHR5cGU6IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoYWN0aW9uKSxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6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

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

{"__symbolic":"module","version":4,"metadata":{"ɵa":{"Dispatched":"DISPATCHED","Successful":"SUCCESSFUL","Canceled":"CANCELED","Errored":"ERRORED"},"ɵb":{"__symbolic":"function","parameters":["types","status"],"value":{"__symbolic":"error","message":"Lambda not supported","line":73,"character":11,"module":"./lib/core/operators/of-emittable"}},"Receiver":{"__symbolic":"function","parameters":["options"],"value":{"__symbolic":"error","message":"Lambda not supported","line":62,"character":11,"module":"./lib/core/decorators/receiver"}},"Emitter":{"__symbolic":"function","parameters":["receiver"],"value":{"__symbolic":"error","message":"Lambda not supported","line":10,"character":11,"module":"./lib/core/decorators/emitter"}},"Emittable":{"__symbolic":"interface"},"OfEmittableActionContext":{"__symbolic":"interface"},"EmitterAction":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":14,"character":33,"context":{"typeName":"T"},"module":"./lib/core/actions/actions"}]}]},"statics":{"type":null}},"NgxsEmitPluginModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":7,"character":17}}]],"parameters":[{"__symbolic":"reference","name":"ɵc"}]}]},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"NgxsEmitPluginModule"},"providers":[{"__symbolic":"reference","name":"EmitStore"},{"__symbolic":"reference","name":"ɵc"}]}}}},"EmitStore":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":16,"character":31},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"emitter":[{"__symbolic":"method"}],"dispatchSingle":[{"__symbolic":"method"}],"dispatchMany":[{"__symbolic":"method"}]}},"ofEmittableDispatched":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Dispatched"}]}},"ofEmittableSuccessful":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Successful"}]}},"ofEmittableCanceled":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Canceled"}]}},"ofEmittableErrored":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Errored"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":17,"character":26}]}]},"statics":{"injector":null}}},"origins":{"ɵa":"./lib/core/internal/internals","ɵb":"./lib/core/operators/of-emittable","Receiver":"./lib/core/decorators/receiver","Emitter":"./lib/core/decorators/emitter","Emittable":"./lib/core/internal/internals","OfEmittableActionContext":"./lib/core/internal/internals","EmitterAction":"./lib/core/actions/actions","NgxsEmitPluginModule":"./lib/emit.module","EmitStore":"./lib/core/services/emit-store.service","ofEmittableDispatched":"./lib/core/operators/of-emittable","ofEmittableSuccessful":"./lib/core/operators/of-emittable","ofEmittableCanceled":"./lib/core/operators/of-emittable","ofEmittableErrored":"./lib/core/operators/of-emittable","ɵc":"./lib/core/services/injector-accessor.service"},"importAs":"@ngxs-labs/emitter"}
{"__symbolic":"module","version":4,"metadata":{"ɵa":{"Dispatched":"DISPATCHED","Successful":"SUCCESSFUL","Canceled":"CANCELED","Errored":"ERRORED"},"ɵb":{"__symbolic":"function","parameters":["types","status"],"value":{"__symbolic":"error","message":"Lambda not supported","line":72,"character":11,"module":"./lib/core/operators/of-emittable"}},"Receiver":{"__symbolic":"function","parameters":["options"],"value":{"__symbolic":"error","message":"Lambda not supported","line":62,"character":11,"module":"./lib/core/decorators/receiver"}},"Emitter":{"__symbolic":"function","parameters":["receiver"],"value":{"__symbolic":"error","message":"Lambda not supported","line":10,"character":11,"module":"./lib/core/decorators/emitter"}},"Emittable":{"__symbolic":"interface"},"OfEmittableActionContext":{"__symbolic":"interface"},"EmitterAction":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":14,"character":33,"context":{"typeName":"T"},"module":"./lib/core/actions/actions"}]}]},"statics":{"type":null}},"NgxsEmitPluginModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":7,"character":17}}]],"parameters":[{"__symbolic":"reference","name":"ɵc"}]}]},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"NgxsEmitPluginModule"},"providers":[{"__symbolic":"reference","name":"EmitStore"},{"__symbolic":"reference","name":"ɵc"}]}}}},"EmitStore":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":16,"character":31},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"emitter":[{"__symbolic":"method"}],"dispatchSingle":[{"__symbolic":"method"}],"dispatchMany":[{"__symbolic":"method"}]}},"ofEmittableDispatched":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Dispatched"}]}},"ofEmittableSuccessful":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Successful"}]}},"ofEmittableCanceled":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Canceled"}]}},"ofEmittableErrored":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Errored"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":17,"character":26}]}]},"statics":{"injector":null}}},"origins":{"ɵa":"./lib/core/internal/internals","ɵb":"./lib/core/operators/of-emittable","Receiver":"./lib/core/decorators/receiver","Emitter":"./lib/core/decorators/emitter","Emittable":"./lib/core/internal/internals","OfEmittableActionContext":"./lib/core/internal/internals","EmitterAction":"./lib/core/actions/actions","NgxsEmitPluginModule":"./lib/emit.module","EmitStore":"./lib/core/services/emit-store.service","ofEmittableDispatched":"./lib/core/operators/of-emittable","ofEmittableSuccessful":"./lib/core/operators/of-emittable","ofEmittableCanceled":"./lib/core/operators/of-emittable","ofEmittableErrored":"./lib/core/operators/of-emittable","ɵc":"./lib/core/services/injector-accessor.service"},"importAs":"@ngxs-labs/emitter"}
{
"$schema": "../node_modules/ng-packagr/package.schema.json",
"name": "@ngxs-labs/emitter",
"version": "1.6.3",
"version": "1.6.4",
"repository": {

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

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