New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

microcosm

Package Overview
Dependencies
Maintainers
1
Versions
233
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

microcosm - npm Package Compare versions

Comparing version 8.2.0-rc2 to 8.2.0-rc3

addons/microscope/index.js

2

microcosm.build.js

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

module.exports=function(t){function r(e){if(n[e])return n[e].exports;var o=n[e]={exports:{},id:e,loaded:!1};return t[e].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}var n={};return r.m=t,r.c=n,r.p="",r(0)}([function(t,r,n){function e(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function o(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function, not "+typeof r);t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),r&&(t.__proto__=r)}var i=n(16),u=n(6),s=(n(17),n(7)),a=n(8),c=n(11),f=n(12),p=n(13),h=n(14),l=function(t){function r(){e(this,r),t.call(this),this.stores={},this.plugins=[]}return o(r,t),r.prototype.getInitialState=function(){return c(this.stores,function(t){return t.getInitialState()})},r.prototype.reset=function(){return this.commit(this.getInitialState()),this},r.prototype.replace=function(t){return this.update(this.deserialize(t)),this},r.prototype.addPlugin=function(t,r){return this.plugins.push(new u(t,r)),this},r.prototype.addStore=function(t,r){return this.stores[t]=new s(r,t),this},r.prototype.serialize=function(){var t=this;return c(this.stores,function(r,n){return r.serialize(t.get(n))})},r.prototype.deserialize=function(t){var r=this;return c(t,function(t,n){return r.stores[n].deserialize(t)})},r.prototype.toJSON=function(){return this.serialize()},r.prototype.toObject=function(){return this.valueOf()},r.prototype.start=function(){var t=this,r=arguments;return this.reset(),a(this.plugins,this,function(){return f(r,[],t,"start")}),this},r.prototype.prepare=function(t){for(var r,n=arguments.length,e=Array(n>1?n-1:0),o=1;n>o;o++)e[o-1]=arguments[o];return(r=this.push).bind.apply(r,[this,t].concat(e))},r.prototype.rollback=function(t,r){var n=this,e=c(r,function(r,e){var o=t[e],i=n.get(e);return i!==r&&i!==o?i:o});this.update(e)},r.prototype.stateFor=function(t){var r=this,n=Object.keys(this.stores).filter(function(n){return s.taskFor(r.stores[n],t)});return n.reduce(function(t,n){return t[n]=r.get(n),t},{})},r.prototype.push=function(t){for(var r=this,n=arguments.length,e=Array(n>1?n-1:0),o=1;n>o;o++)e[o-1]=arguments[o];h(t);var i={},u=this.stateFor(t),s=function(n){return i=r.dispatch(u,t,n),r.update(i)},a=function(){return r.rollback(u,i)};return p(s,a,t.apply(this,e))},r.prototype.dispatch=function(t,r,n){var e=this;return c(t,function(t,o){return s.send(e.stores[o],r,t,n)})},r}(i);t.exports=l,l.get=n(1),l.set=n(5),l.remove=n(4)},function(t,r,n){var e=n(2);t.exports=function(t,r,n){r=e(r);for(var o=0;o<r.length;o++){if(void 0===t)return n;t=t[r[o]]}return void 0===t?n:t}},function(t,r){t.exports=function(t){return Array.isArray(t)?t:[t]}},function(t,r){t.exports=function(t){if(Array.isArray(t))return t.slice();var r={};for(var n in t)r[n]=t[n];return r}},function(t,r,n){var e={},o=n(3),i=n(1),u=n(2);t.exports=function s(t,r){if(void 0===i(t,r))return t;r=u(r);var n=r[0],a=r.slice(1),c=o(t);return a.length?(c[n]=s(i(t,n,e),a),0===Object.keys(i(c,n,e)).length&&delete c[n]):delete c[n],c}},function(t,r,n){var e=n(3),o=n(1),i=n(2);t.exports=function u(t,r,n){if(o(t,r)===n)return t;r=i(r);var s=r[0],a=r.slice(1);if(r.length){var c=e(t);return a.length?c[s]=u(o(c,s,{}),a,n):c[s]=n,c}return n}},function(t,r){function n(t,r){e(this,t),this.name=this.name||"microcosm_plugin_"+o++,this.options=r}var e=Object.assign||function(t){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=n[e])}return t},o=0;n.prototype={register:function(t,r,n){n()},toString:function(){return this.name}},t.exports=n},function(t,r,n){function e(t,r){o(this,t),this.toString=function(){return r}}var o=Object.assign||function(t){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=n[e])}return t},i=function(t){return t},u=!1;e.prototype={getInitialState:i,serialize:i,deserialize:i,register:function(){return{}}},e.send=function(t,r,n,e){var o=t.register(),i=o[r];if(u&&r in o&&"function"!=typeof i)throw TypeError(""+t+" registered "+r+" with non-function value");return i?i.call(t,n,e):n},e.taskFor=function(t,r){return t.register()[r]},t.exports=e},function(t,r){var n=function e(t,r,n){var o=t[0],i=t.slice(1);return o?void o.register(r,o.options,function(t){if(t)throw t;e(i,r,n)}):n()};t.exports=n},function(t,r){t.exports=function(t){return t&&"function"==typeof t.next}},function(t,r){t.exports=function(t){return t&&"function"==typeof t.then}},function(t,r){t.exports=function(t,r,n){var e={};for(var o in t)e[o]=r.call(n,t[o],o,t);return e}},function(t,r,n){t.exports=function(t,r,n,e){for(var o=0;o<t.length;o++)t[o].apply(n,r)}},function(t,r,n){var e=n(9),o=n(10);t.exports=function i(t,r,n){var u=i.bind(null,t,r);if(o(n))return n.then(u,r),n;if(e(n)){for(var s=n,a=Array.isArray(s),c=0,s=a?s:s[Symbol.iterator]();;){var f;if(a){if(c>=s.length)break;f=s[c++]}else{if(c=s.next(),c.done)break;f=c.value}var p=f;u(p)}return p}return t(n)}},function(t,r){var n=0;t.exports=function(t){var r=t.name||"microcosm_action",e=n++;return t.hasOwnProperty("toString")||(t.toString=function(){return""+r+"_"+e}),t}},function(t,r){function n(t){var r=[],e=t,o=null;t=this instanceof n?this:t||{};var i=function(n){for(var e=0;e<r.length;e++)r[e].apply(t,n)},u=function(){var t=+new Date;o&&10>t-o?cancelAnimationFrame(e):o=t};return t.listen=t.subscribe=function(n){return r=r.concat(n),t},t.ignore=t.unsubscribe=function(n){return r=r.filter(function(t){return t!==n}),t},t.emit=t.publish=function(){return i(arguments),t},t.volley=function(){return r.length>0&&(u(),e=requestAnimationFrame(i.bind(void 0,arguments))),t},t}var e=1e3/120;t.exports=n(n),t.exports.decorate=n,t.exports.FRAMES=e},function(t,r,n){function e(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}var o=n(15),i=n(5),u=n(4),s=n(1),a={},c=[],f=function(){function t(r){e(this,t),o(this),this._path=c,this._root=this,this.state=a,this.commit(r)}return t.prototype.getPath=function(t){return this._path.concat(t).filter(function(t){return void 0!==t})},t.prototype.getRoot=function(){return this._root},t.prototype.commit=function(){var t=void 0===arguments[0]?this.state:arguments[0],r=this.getRoot(),n=r.state;null==t&&(t=a),n!==t&&(r.state=t,this.volley(r.state))},t.prototype.clear=function(){this.commit(null)},t.prototype.get=function(t,r){return s(this.state,this.getPath(t),r)},t.prototype.set=function(t,r){1===arguments.length&&(r=arguments[0],t=void 0),this.commit(i(this.state,this.getPath(t),r))},t.prototype.update=function(t,r){1===arguments.length&&(r=arguments[0],t=void 0);for(var n in r)this.set([t,n],r[n])},t.prototype.remove=function(t){this.commit(u(this.state,this.getPath(t)))},t.prototype.refine=function(t){return Object.create(this,{_path:{value:this.getPath(t)}})},t.prototype.keys=function(){return Object.keys(this.valueOf()||{})},t.prototype.values=function(){return this.keys().map(function(t){return this.get(t)},this)},t.prototype.valueOf=function(){return s(this.state,this.getPath())},t.prototype.toJSON=function(){return this.valueOf()},t.prototype.is=function(t){return t.valueOf()==this.valueOf()},t.prototype.find=function(t,r){return this.filter(t,r)[0]},t.prototype.includes=function(t){return this.indexOf(t)>-1},t.prototype.first=function(){return this.values().shift()},t.prototype.last=function(){return this.values().pop()},t.prototype.size=function(){return this.values().length},t}(),p=["sort","map","reduce","filter","forEach","some","every","join","indexOf"];p.forEach(function(t){f.prototype[t]=function(){var r;return(r=this.values())[t].apply(r,arguments)}}),t.exports=f},function(t,r){t.exports=require("React")}]);
module.exports=function(t){function r(e){if(n[e])return n[e].exports;var i=n[e]={exports:{},id:e,loaded:!1};return t[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}var n={};return r.m=t,r.c=n,r.p="",r(0)}([function(t,r,n){var e=Object.assign||function(t){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=n[e])}return t},i=n(16),o=n(6),u=(n(17),n(7)),s=n(8),a=n(11),c=n(12),f=n(13),h=n(14),l=function p(){return p.prototype.constructor.apply(this,arguments)};l.prototype=e({},i.prototype,{constructor:function(){i.apply(this,arguments),this.stores={},this.plugins=[]},getInitialState:function(){return a(this.stores,function(t){return t.getInitialState()})},reset:function(){return this.commit(this.getInitialState()),this},replace:function(t){return this.update(this.deserialize(t)),this},addPlugin:function(t,r){return this.plugins.push(new o(t,r)),this},addStore:function(t,r){return this.stores[t]=new u(r,t),this},serialize:function(){var t=this;return a(this.stores,function(r,n){return r.serialize(t.get(n))})},deserialize:function(t){var r=this;return a(t,function(t,n){return r.stores[n].deserialize(t)})},toJSON:function(){return this.serialize()},toObject:function(){return this.valueOf()},start:function(){var t=this,r=arguments;return this.reset(),s(this.plugins,this,function(){return c(r,[],t,"start")}),this},prepare:function(t){for(var r,n=arguments.length,e=Array(n>1?n-1:0),i=1;n>i;i++)e[i-1]=arguments[i];return(r=this.push).bind.apply(r,[this,t].concat(e))},rollback:function(t,r){var n=this,e=a(r,function(r,e){var i=t[e],o=n.get(e);return o!==r&&o!==i?o:i});this.update(e)},stateFor:function(t){var r=this,n=Object.keys(this.stores).filter(function(n){return u.taskFor(r.stores[n],t)});return n.reduce(function(t,n){return t[n]=r.get(n),t},{})},push:function(t){for(var r=this,n=arguments.length,e=Array(n>1?n-1:0),i=1;n>i;i++)e[i-1]=arguments[i];h(t);var o={},u=this.stateFor(t),s=function(n){return o=r.dispatch(u,t,n),r.update(o)},a=function(){return r.rollback(u,o)};return f(s,a,t.apply(this,e))},dispatch:function(t,r,n){var e=this;return a(t,function(t,i){return u.send(e.stores[i],r,t,n)})}}),t.exports=l,l.get=n(1),l.set=n(5),l.remove=n(4)},function(t,r,n){var e=n(2);t.exports=function(t,r,n){r=e(r);for(var i=0;i<r.length;i++){if(void 0===t)return n;t=t[r[i]]}return void 0===t?n:t}},function(t,r){t.exports=function(t){return Array.isArray(t)?t:[t]}},function(t,r){t.exports=function(t){if(Array.isArray(t))return t.slice();var r={};for(var n in t)r[n]=t[n];return r}},function(t,r,n){function e(t){return Array.isArray(t)?t:Array.from(t)}var i={},o=n(3),u=n(1),s=n(2);t.exports=function a(t,r){if(void 0===u(t,r))return t;r=s(r);var n=e(r),c=n[0],f=n.slice(1),h=o(t);return f.length?(h[c]=a(u(t,c,i),f),0===Object.keys(u(h,c,i)).length&&delete h[c]):delete h[c],h}},function(t,r,n){function e(t){return Array.isArray(t)?t:Array.from(t)}var i=n(3),o=n(1),u=n(2);t.exports=function s(t,r,n){if(o(t,r)===n)return t;r=u(r);var a=e(r),c=a[0],f=a.slice(1);if(r.length){var h=i(t);return f.length?h[c]=s(o(h,c,{}),f,n):h[c]=n,h}return n}},function(t,r){function n(t,r){e(this,t),this.name=this.name||"microcosm_plugin_"+i++,this.options=r}var e=Object.assign||function(t){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=n[e])}return t},i=0;n.prototype={register:function(t,r,n){n()},toString:function(){return this.name}},t.exports=n},function(t,r,n){function e(t,r){i(this,t),this.toString=function(){return r}}var i=Object.assign||function(t){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=n[e])}return t},o=function(t){return t},u=!1;e.prototype={getInitialState:o,serialize:o,deserialize:o,register:function(){return{}}},e.send=function(t,r,n,e){var i=t.register(),o=i[r];if(u&&r in i&&"function"!=typeof o)throw TypeError(""+t+" registered "+r+" with non-function value");return o?o.call(t,n,e):n},e.taskFor=function(t,r){return t.register()[r]},t.exports=e},function(t,r){var n=function e(t,r,n){var i=t[0],o=t.slice(1);return i?void i.register(r,i.options,function(t){if(t)throw t;e(o,r,n)}):n()};t.exports=n},function(t,r){t.exports=function(t){return t&&"function"==typeof t.next}},function(t,r){t.exports=function(t){return t&&"function"==typeof t.then}},function(t,r){t.exports=function(t,r,n){var e={};for(var i in t)e[i]=r.call(n,t[i],i,t);return e}},function(t,r,n){t.exports=function(t,r,n,e){for(var i=0;i<t.length;i++)t[i].apply(n,r)}},function(t,r,n){var e=n(9),i=n(10);t.exports=function o(t,r,n){var u=o.bind(null,t,r);if(i(n))return n.then(u,r),n;if(e(n)){for(var s=n,a=Array.isArray(s),c=0,s=a?s:s[Symbol.iterator]();;){var f;if(a){if(c>=s.length)break;f=s[c++]}else{if(c=s.next(),c.done)break;f=c.value}var h=f;u(h)}return h}return t(n)}},function(t,r){var n=0;t.exports=function(t){var r=t.name||"microcosm_action",e=n++;return t.hasOwnProperty("toString")||(t.toString=function(){return""+r+"_"+e}),t}},function(t,r){function n(t){var r=[],e=t,i=null;t=this instanceof n?this:t||{};var o=function(n){for(var e=0;e<r.length;e++)r[e].apply(t,n)},u=function(){var t=+new Date;i&&10>t-i?cancelAnimationFrame(e):i=t};return t.listen=t.subscribe=function(n){return r=r.concat(n),t},t.ignore=t.unsubscribe=function(n){return r=r.filter(function(t){return t!==n}),t},t.emit=t.publish=function(){return o(arguments),t},t.volley=function(){return r.length>0&&(u(),e=requestAnimationFrame(o.bind(void 0,arguments))),t},t}var e=1e3/120;t.exports=n(n),t.exports.decorate=n,t.exports.FRAMES=e},function(t,r,n){function e(){return e.prototype.constructor.apply(this,arguments)}var i=n(15),o=n(5),u=n(4),s=n(1),a={},c=[];e.prototype={constructor:function(t){i(this),this._path=c,this._root=this,this.state=a,this.commit(t)},getPath:function(t){return this._path.concat(t).filter(function(t){return void 0!==t})},getRoot:function(){return this._root},commit:function(){var t=void 0===arguments[0]?this.state:arguments[0],r=this.getRoot(),n=r.state;null==t&&(t=a),n!==t&&(r.state=t,this.volley(r.state))},clear:function(){this.commit(null)},get:function(t,r){return s(this.state,this.getPath(t),r)},set:function(t,r){1===arguments.length&&(r=arguments[0],t=void 0),this.commit(o(this.state,this.getPath(t),r))},update:function(t,r){1===arguments.length&&(r=arguments[0],t=void 0);for(var n in r)this.set([t,n],r[n])},remove:function(t){this.commit(u(this.state,this.getPath(t)))},refine:function(t){return Object.create(this,{_path:{value:this.getPath(t)}})},keys:function(){return Object.keys(this.valueOf()||{})},values:function(){return this.keys().map(function(t){return this.get(t)},this)},valueOf:function(){return s(this.state,this.getPath())},toJSON:function(){return this.valueOf()},is:function(t){return t.valueOf()==this.valueOf()},find:function(t,r){return this.filter(t,r)[0]},includes:function(t){return this.indexOf(t)>-1},first:function(){return this.values().shift()},last:function(){return this.values().pop()},size:function(){return this.values().length}};var f=["sort","map","reduce","filter","forEach","some","every","join","indexOf"];f.forEach(function(t){e.prototype[t]=function(){var r;return(r=this.values())[t].apply(r,arguments)}}),t.exports=e},function(t,r){t.exports=require("React")}]);
//# sourceMappingURL=microcosm.build.js.map
{
"name": "microcosm",
"version": "8.2.0-rc2",
"version": "8.2.0-rc3",
"description": "A variant of Facebook's Flux with centralized, isolated state",

@@ -16,4 +16,4 @@ "main": "src/Microcosm.js",

"dependencies": {
"foliage": "~0.24.0"
"foliage": "~0.24.1-rc1"
}
}

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

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }
var Foliage = require('foliage');

@@ -15,14 +13,15 @@ var Plugin = require('./Plugin');

var Microcosm = (function (_Foliage) {
function Microcosm() {
_classCallCheck(this, Microcosm);
var Microcosm = function Microcosm() {
return Microcosm.prototype.constructor.apply(this, arguments);
};
_Foliage.call(this);
Microcosm.prototype = _extends({}, Foliage.prototype, {
constructor: function constructor() {
Foliage.apply(this, arguments);
this.stores = {};
this.plugins = [];
}
},
_inherits(Microcosm, _Foliage);
/**

@@ -33,8 +32,7 @@ * Generates the initial state a microcosm starts with. The reduction

*/
Microcosm.prototype.getInitialState = function getInitialState() {
getInitialState: function getInitialState() {
return remap(this.stores, function (store) {
return store.getInitialState();
});
};
},

@@ -45,7 +43,6 @@ /**

*/
Microcosm.prototype.reset = function reset() {
reset: function reset() {
this.commit(this.getInitialState());
return this;
};
},

@@ -61,7 +58,6 @@ /**

*/
Microcosm.prototype.replace = function replace(data) {
replace: function replace(data) {
this.update(this.deserialize(data));
return this;
};
},

@@ -77,7 +73,6 @@ /**

*/
Microcosm.prototype.addPlugin = function addPlugin(config, options) {
addPlugin: function addPlugin(config, options) {
this.plugins.push(new Plugin(config, options));
return this;
};
},

@@ -93,4 +88,3 @@ /**

*/
Microcosm.prototype.addStore = function addStore(key, config) {
addStore: function addStore(key, config) {
if (process.env.NODE_ENV !== 'production' && arguments.length <= 1) {

@@ -103,3 +97,3 @@ throw TypeError('Microcosm::addStore expected string key but was given: ' + typeof key + '. Did you forget to include the key?');

return this;
};
},

@@ -112,4 +106,3 @@ /**

*/
Microcosm.prototype.serialize = function serialize() {
serialize: function serialize() {
var _this = this;

@@ -120,3 +113,3 @@

});
};
},

@@ -131,4 +124,3 @@ /**

*/
Microcosm.prototype.deserialize = function deserialize(data) {
deserialize: function deserialize(data) {
var _this2 = this;

@@ -139,3 +131,3 @@

});
};
},

@@ -146,6 +138,5 @@ /**

*/
Microcosm.prototype.toJSON = function toJSON() {
toJSON: function toJSON() {
return this.serialize();
};
},

@@ -156,6 +147,5 @@ /**

*/
Microcosm.prototype.toObject = function toObject() {
toObject: function toObject() {
return this.valueOf();
};
},

@@ -173,4 +163,3 @@ /**

*/
Microcosm.prototype.start = function start() {
start: function start() {
var _this3 = this;

@@ -188,3 +177,3 @@

return this;
};
},

@@ -198,4 +187,3 @@ /**

*/
Microcosm.prototype.prepare = function prepare(action) {
prepare: function prepare(action) {
var _push;

@@ -208,3 +196,3 @@

return (_push = this.push).bind.apply(_push, [this, action].concat(params));
};
},

@@ -218,4 +206,3 @@ /**

*/
Microcosm.prototype.rollback = function rollback(state, changes) {
rollback: function rollback(state, changes) {
var _this4 = this;

@@ -231,3 +218,3 @@

this.update(resolution);
};
},

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

*/
Microcosm.prototype.stateFor = function stateFor(action) {
stateFor: function stateFor(action) {
var _this5 = this;

@@ -250,3 +236,3 @@

}, {});
};
},

@@ -261,4 +247,3 @@ /**

*/
Microcosm.prototype.push = function push(action) {
push: function push(action) {
var _this6 = this;

@@ -289,3 +274,3 @@

return signal(resolve, reject, action.apply(this, params));
};
},

@@ -301,4 +286,3 @@ /**

*/
Microcosm.prototype.dispatch = function dispatch(state, action, body) {
dispatch: function dispatch(state, action, body) {
var _this7 = this;

@@ -309,9 +293,6 @@

});
};
}
});
return Microcosm;
})(Foliage);
module.exports = Microcosm;
Microcosm.get = require('foliage/src/get');

@@ -321,2 +302,2 @@ Microcosm.set = require('foliage/src/set');

/*...callbacks*/
//# sourceMappingURL=data:application/json;base64,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USxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDNUMsYUFBTyxPQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtLQUM1QixDQUFBOztBQUVELFFBQUksTUFBTSxHQUFHLFNBQVQsTUFBTTthQUFTLE9BQUssUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7S0FBQSxDQUFBOztBQUVoRCxXQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7R0FDM0Q7Ozs7Ozs7Ozs7OztBQTNNRyxXQUFTLFdBc05iLFFBQVEsR0FBQSxrQkFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7O0FBQzVCLFdBQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUs7QUFDbkMsYUFBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7S0FDMUQsQ0FBQyxDQUFBO0dBQ0g7O1NBMU5HLFNBQVM7R0FBUyxPQUFPOztBQTZOL0IsTUFBTSxDQUFDLE9BQU8sR0FBSyxTQUFTLENBQUE7O0FBRTVCLFNBQVMsQ0FBQyxHQUFHLEdBQU0sT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUE7QUFDN0MsU0FBUyxDQUFDLEdBQUcsR0FBTSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtBQUM3QyxTQUFTLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBIiwiZmlsZSI6Ik1pY3JvY29zbS5qcyIsInNvdXJjZXNDb250ZW50IjpbImxldCBGb2xpYWdlID0gcmVxdWlyZSgnZm9saWFnZScpXG5sZXQgUGx1Z2luICA9IHJlcXVpcmUoJy4vUGx1Z2luJylcbmxldCBSZWFjdCAgID0gcmVxdWlyZSgncmVhY3QnKVxubGV0IFN0b3JlICAgPSByZXF1aXJlKCcuL1N0b3JlJylcbmxldCBpbnN0YWxsID0gcmVxdWlyZSgnLi9pbnN0YWxsJylcbmxldCByZW1hcCAgID0gcmVxdWlyZSgnLi9yZW1hcCcpXG5sZXQgcnVuICAgICA9IHJlcXVpcmUoJy4vcnVuJylcbmxldCBzaWduYWwgID0gcmVxdWlyZSgnLi9zaWduYWwnKVxubGV0IHRhZyAgICAgPSByZXF1aXJlKCcuL3RhZycpXG5cbmNsYXNzIE1pY3JvY29zbSBleHRlbmRzIEZvbGlhZ2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpXG5cbiAgICB0aGlzLnN0b3JlcyAgPSB7fVxuICAgIHRoaXMucGx1Z2lucyA9IFtdXG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBpbml0aWFsIHN0YXRlIGEgbWljcm9jb3NtIHN0YXJ0cyB3aXRoLiBUaGUgcmVkdWN0aW9uXG4gICAqIG9mIGNhbGxpbmcgYGdldEluaXRpYWxTdGF0ZWAgb24gYWxsIHN0b3Jlcy5cbiAgICogQHJldHVybiBPYmplY3RcbiAgICovXG4gIGdldEluaXRpYWxTdGF0ZSgpIHtcbiAgICByZXR1cm4gcmVtYXAodGhpcy5zdG9yZXMsIHN0b3JlID0+IHN0b3JlLmdldEluaXRpYWxTdGF0ZSgpKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyBzdGF0ZSB0byB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgYGdldEluaXRpYWxTdGF0ZSgpYFxuICAgKiBAcmV0dXJuIHRoaXNcbiAgICovXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuY29tbWl0KHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBgZGVzZXJpYWxpemVgIG9uIHRoZSBwcm92aWRlZCBkYXRhIGFuZCB0aGVuIG1lcmdlcyBpdCBpbnRvXG4gICAqIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHN0YXRlLiBUaGlzIGZ1bmN0aW9uIGlzIGdyZWF0IGZvclxuICAgKiBib290c3RyYXBwaW5nIGRhdGEgd2hlbiByZW5kZXJpbmcgZnJvbSB0aGUgc2VydmVyLiBJdCB3aWxsIG5vdFxuICAgKiBibG93IGF3YXkga2V5cyB0aGF0IGhhdmVuJ3QgYmVlbiBwcm92aWRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBBIEphdmFTY3JpcHQgb2JqZWN0IG9mIGRhdGEgdG8gcmVwbGFjZVxuICAgKiBAcmV0dXJuIHRoaXNcbiAgICovXG4gIHJlcGxhY2UoZGF0YSkge1xuICAgIHRoaXMudXBkYXRlKHRoaXMuZGVzZXJpYWxpemUoZGF0YSkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBQdXNoZXMgYSBwbHVnaW4gaW4gdG8gdGhlIHJlZ2lzdHJ5IGZvciBhIGdpdmVuIG1pY3JvY29zbS5cbiAgICogV2hlbiBgYXBwLnN0YXJ0KClgIGlzIGNhbGxlZCwgaXQgd2lsbCBleGVjdXRlIHBsdWdpbnMgaW5cbiAgICogdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgaGF2ZSBiZWVuIGFkZGVkIHVzaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwbHVnaW4gIC0gVGhlIHBsdWdpbiB0aGF0IHdpbGwgYmUgYWRkZWRcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBPcHRpb25zIHBhc3NlZCB0byB0aGUgcGx1Z2luIG9uIHN0YXJ0XG4gICAqIEByZXR1cm4gdGhpc1xuICAgKi9cbiAgYWRkUGx1Z2luKGNvbmZpZywgb3B0aW9ucykge1xuICAgIHRoaXMucGx1Z2lucy5wdXNoKG5ldyBQbHVnaW4oY29uZmlnLCBvcHRpb25zKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHN0b3JlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBgY29uZmlnYCBhbmQgYXNzaWducyBpdCB0b1xuICAgKiBtYW5hZ2UgdGhlIHByb3ZpZGVkIGBrZXlgLiBXaGVuZXZlciB0aGlzIHN0b3JlIHJlc3BvbmRzIHRvIGFuIGFjdGlvbixcbiAgICogaXQgd2lsbCBiZSBwcm92aWRlZCB0aGUgY3VycmVudCBzdGF0ZSBmb3IgdGhhdCBwYXJ0aWN1bGFyIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGtleSAtIFRoZSBrZXkgaW4gZ2xvYmFsIHN0YXRlIHRoZSBzdG9yZSB3aWxsIG1hbmFnZVxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJ1aWxkIGEgbmV3IHN0b3JlXG4gICAqIEByZXR1cm4gdGhpc1xuICAgKi9cbiAgYWRkU3RvcmUoa2V5LCBjb25maWcpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhcmd1bWVudHMubGVuZ3RoIDw9IDEpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcihgTWljcm9jb3NtOjphZGRTdG9yZSBleHBlY3RlZCBzdHJpbmcga2V5IGJ1dCB3YXMgZ2l2ZW46ICR7IHR5cGVvZiBrZXkgfS4gRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSB0aGUga2V5P2ApXG4gICAgfVxuXG4gICAgdGhpcy5zdG9yZXNba2V5XSA9IG5ldyBTdG9yZShjb25maWcsIGtleSlcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBpcyB0aGUgcmVzdWx0IG9mIHRyYW5zZm9ybWluZyBhcHBsaWNhdGlvbiBzdGF0ZVxuICAgKiBhY2NvcmRpbmcgdG8gdGhlIGBzZXJpYWxpemVgIG1ldGhvZCBkZXNjcmliZWQgYnkgZWFjaCBzdG9yZS5cbiAgICpcbiAgICogQHJldHVybiBPYmplY3RcbiAgICovXG4gIHNlcmlhbGl6ZSgpIHtcbiAgICByZXR1cm4gcmVtYXAodGhpcy5zdG9yZXMsIChzdG9yZSwga2V5KSA9PiBzdG9yZS5zZXJpYWxpemUodGhpcy5nZXQoa2V5KSkpXG4gIH1cblxuICAvKipcbiAgICogRm9yIGVhY2gga2V5IGluIHRoZSBwcm92aWRlZCBgZGF0YWAgcGFyYW1ldGVyLCB0cmFuc2Zvcm0gaXQgdXNpbmdcbiAgICogdGhlIGBkZXNlcmlhbGl6ZWAgbWV0aG9kIHByb3ZpZGVkIGJ5IHRoZSBzdG9yZSBtYW5hZ2luZyB0aGF0IGtleS5cbiAgICogVGhlbiBmb2xkIHRoZSBkZXNlcmlhbGl6ZWQgZGF0YSBvdmVyIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHN0YXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YSAtIERhdGEgdG8gZGVzZXJpYWxpemVcbiAgICogQHJldHVybiBPYmplY3RcbiAgICovXG4gIGRlc2VyaWFsaXplKGRhdGEpIHtcbiAgICByZXR1cm4gcmVtYXAoZGF0YSwgKHN0YXRlLCBrZXkpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3Jlc1trZXldLmRlc2VyaWFsaXplKHN0YXRlKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQWxpYXMgZm9yIGBzZXJpYWxpemVgXG4gICAqIEByZXR1cm4gT2JqZWN0XG4gICAqL1xuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY2xvbmUgb2YgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gc3RhdGVcbiAgICogQHJldHVybiBPYmplY3RcbiAgICovXG4gIHRvT2JqZWN0KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBhbiBhcHBsaWNhdGlvbi4gSXQgZG9lcyBhIGNvdXBsZSBvZiB0aGluZ3M6XG4gICAqXG4gICAqIDEuIENhbGxzIGB0aGlzLnJlc2V0KClgIHRvIGRldGVybWluZSBpbml0aWFsIHN0YXRlXG4gICAqIDIuIFJ1bnMgdGhyb3VnaCBhbGwgcGx1Z2lucywgaXQgd2lsbCB0ZXJtaW5hdGUgaWYgYW55IGZhaWxcbiAgICogMy4gRXhlY3V0ZXMgdGhlIHByb3ZpZGVkIGxpc3Qgb2YgY2FsbGJhY2tzLCBwYXNzaW5nIGFsb25nIGFueSBlcnJvcnNcbiAgICogICAgZ2VuZXJhdGVkIGlmIGluc3RhbGxpbmcgcGx1Z2lucyBmYWlscy5cbiAgICpcbiAgICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gY2FsbGJhY2tzIC0gQ2FsbGJhY2tzIHRvIHJ1biBhZnRlciBwbHVnaW5zIGluc3RhbGxcbiAgICogQHJldHVybiBNaWNyb2Nvc21cbiAgICovXG4gIHN0YXJ0KC8qLi4uY2FsbGJhY2tzKi8pIHtcbiAgICBsZXQgY2FsbGJhY2tzID0gYXJndW1lbnRzXG5cbiAgICB0aGlzLnJlc2V0KClcblxuICAgIC8vIFF1ZXVlIHBsdWdpbnMgYW5kIHRoZW4gbm90aWZ5IHRoYXQgaW5zdGFsbGF0aW9uIGhhcyBmaW5pc2hlZFxuICAgIGluc3RhbGwodGhpcy5wbHVnaW5zLCB0aGlzLCAoKSA9PiBydW4oY2FsbGJhY2tzLCBbXSwgdGhpcywgJ3N0YXJ0JykpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnRpYWxseSBhcHBsaWVzIGBwdXNoYC5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gYWN0aW9uIC0gVGhlIGFjdGlvbiB0byBiaW5kXG4gICAqIEBwYXJhbSB7Li4uYW55fSBwYXJhbXMgLSBQcmVmaWxsZWQgYXJndW1lbnRzXG4gICAqIEByZXR1cm4gZnVuY3Rpb25cbiAgICovXG4gIHByZXBhcmUoYWN0aW9uLCAuLi5wYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoLmJpbmQodGhpcywgYWN0aW9uLCAuLi5wYXJhbXMpXG4gIH1cblxuICAvKipcbiAgICogRm9yIGEgZ2l2ZW4gU1RBVEUsIHJldmVydCBhbGwga2V5cyBpbiBhIENIQU5HRVNFVFxuICAgKiB0byB0aGUgb3JpZ2luYWwsIHVubGVzcyBuZXcgZmFjdHMgaGF2ZSBjaGFuZ2VkIHRoZSBjdXJyZW50IHZhbHVlXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBiYXNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBoZWFkXG4gICAqL1xuICByb2xsYmFjayhzdGF0ZSwgY2hhbmdlcykge1xuICAgIGxldCByZXNvbHV0aW9uID0gcmVtYXAoY2hhbmdlcywgKGhlYWQsIGtleSkgPT4ge1xuICAgICAgbGV0IGJhc2UgICAgPSBzdGF0ZVtrZXldXG4gICAgICBsZXQgY3VycmVudCA9IHRoaXMuZ2V0KGtleSlcblxuICAgICAgcmV0dXJuIGN1cnJlbnQgIT09IGhlYWQgJiYgY3VycmVudCAhPT0gYmFzZSA/IGN1cnJlbnQgOiBiYXNlXG4gICAgfSlcblxuICAgIHRoaXMudXBkYXRlKHJlc29sdXRpb24pXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGF0ZSBtYW5hZ2VkIGJ5IGFsbCBzdG9yZXMgdGhhdCBjYW4gcmVzcG9uZCB0byBhIGdpdmVuIGFjdGlvblxuICAgKi9cbiAgc3RhdGVGb3IoYWN0aW9uKSB7XG4gICAgbGV0IHN0b3JlcyA9IE9iamVjdC5rZXlzKHRoaXMuc3RvcmVzKVxuICAgICAgICAgIC5maWx0ZXIoa2V5ID0+IFN0b3JlLnRhc2tGb3IodGhpcy5zdG9yZXNba2V5XSwgYWN0aW9uKSlcblxuICAgIHJldHVybiBzdG9yZXMucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcbiAgICAgIG1lbW9ba2V5XSA9IHRoaXMuZ2V0KGtleSlcbiAgICAgIHJldHVybiBtZW1vXG4gICAgfSwge30pXG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgYW4gYWN0aW9uLiBJZiBpdCByZXNvbHZlZCBzdWNjZXNzZnVsbHksIGl0IGRpc3BhdGNoZXMgdGhhdFxuICAgKiB0aGUgcmVzdWx0aW5nIHBhcmFtZXRlcnMgdG8gcmVnaXN0ZXJlZCBzdG9yZXMgZm9yIHRyYW5zZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhY3Rpb24gLSBUaGUgYWN0aW9uIHRvIGRpc3BhdGNoXG4gICAqIEBwYXJhbSB7Li4uYW55fSBwYXJhbXMgLSBBcmd1bWVudHMgdGhlIGFjdGlvbiBpcyBjYWxsZWQgd2l0aFxuICAgKiBAcmV0dXJuIGFjdGlvbiByZXN1bHRcbiAgICovXG4gIHB1c2goYWN0aW9uLCAuLi5wYXJhbXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2YgYWN0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoYFRyaWVkIHRvIHB1c2ggJHsgYWN0aW9uIH0sIGJ1dCBpcyBub3QgYSBmdW5jdGlvbi5gKVxuICAgIH1cblxuICAgIHRhZyhhY3Rpb24pXG5cbiAgICBsZXQgY2hhbmdlcyA9IHt9XG4gICAgbGV0IHN0YXRlICAgPSB0aGlzLnN0YXRlRm9yKGFjdGlvbilcblxuICAgIGxldCByZXNvbHZlID0gYm9keSA9PiB7XG4gICAgICBjaGFuZ2VzID0gdGhpcy5kaXNwYXRjaChzdGF0ZSwgYWN0aW9uLCBib2R5KVxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKGNoYW5nZXMpXG4gICAgfVxuXG4gICAgbGV0IHJlamVjdCA9ICgpID0+IHRoaXMucm9sbGJhY2soc3RhdGUsIGNoYW5nZXMpXG5cbiAgICByZXR1cm4gc2lnbmFsKHJlc29sdmUsIHJlamVjdCwgYWN0aW9uLmFwcGx5KHRoaXMsIHBhcmFtcykpXG4gIH1cblxuICAvKipcbiAgICogU2VuZHMgYSBtZXNzYWdlIHRvIGVhY2gga25vd24gc3RvcmUgYXNraW5nIGlmIGl0IGNhbiByZXNwb25kIHRvIHRoZVxuICAgKiBwcm92aWRlZCBhY3Rpb24uIElmIHNvLCB0YWtlcyB0aGUgcmV0dXJuZWQgbmV3IHN0YXRlIGZvciB0aGF0IHN0b3JlJ3NcbiAgICogbWFuYWdlZCBrZXkgYW5kIGFzc2lnbnMgaXQgYXMgbmV3IHN0YXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gc3RhdGUgLSBUaGUgY3VycmVudCBzdGF0ZSBvYmplY3QgdG8gc2VlZCBzdG9yZXMgd2l0aFxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhY3Rpb24gLSBUaGUgYWN0aW9uIHRvIHNlbmQgdG8gZWFjaCBzdG9yZVxuICAgKiBAcGFyYW0ge2FueX0gYm9keSAtIFRoZSBwYXlsb2FkIG9mIHRoZSBhY3Rpb25cbiAgICovXG4gIGRpc3BhdGNoKHN0YXRlLCBhY3Rpb24sIGJvZHkpIHtcbiAgICByZXR1cm4gcmVtYXAoc3RhdGUsIChzdWJzZXQsIGtleSkgPT4ge1xuICAgICAgcmV0dXJuIFN0b3JlLnNlbmQodGhpcy5zdG9yZXNba2V5XSwgYWN0aW9uLCBzdWJzZXQsIGJvZHkpXG4gICAgfSlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyAgID0gTWljcm9jb3NtXG5cbk1pY3JvY29zbS5nZXQgICAgPSByZXF1aXJlKCdmb2xpYWdlL3NyYy9nZXQnKVxuTWljcm9jb3NtLnNldCAgICA9IHJlcXVpcmUoJ2ZvbGlhZ2Uvc3JjL3NldCcpXG5NaWNyb2Nvc20ucmVtb3ZlID0gcmVxdWlyZSgnZm9saWFnZS9zcmMvcmVtb3ZlJylcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,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T0FBSyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUM1QyxhQUFPLE9BQUssTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQzVCLENBQUE7O0FBRUQsUUFBSSxNQUFNLEdBQUcsU0FBVCxNQUFNO2FBQVMsT0FBSyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztLQUFBLENBQUE7O0FBRWhELFdBQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtHQUMzRDs7Ozs7Ozs7Ozs7QUFXRCxVQUFRLEVBQUEsa0JBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7OztBQUM1QixXQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFLO0FBQ25DLGFBQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0tBQzFELENBQUMsQ0FBQTtHQUNIO0NBQ0YsQ0FBQyxDQUFBOztBQUVGLE1BQU0sQ0FBQyxPQUFPLEdBQUssU0FBUyxDQUFBO0FBQzVCLFNBQVMsQ0FBQyxHQUFHLEdBQU0sT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUE7QUFDN0MsU0FBUyxDQUFDLEdBQUcsR0FBTSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtBQUM3QyxTQUFTLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBIiwiZmlsZSI6Ik1pY3JvY29zbS5qcyIsInNvdXJjZXNDb250ZW50IjpbImxldCBGb2xpYWdlID0gcmVxdWlyZSgnZm9saWFnZScpXG5sZXQgUGx1Z2luICA9IHJlcXVpcmUoJy4vUGx1Z2luJylcbmxldCBSZWFjdCAgID0gcmVxdWlyZSgncmVhY3QnKVxubGV0IFN0b3JlICAgPSByZXF1aXJlKCcuL1N0b3JlJylcbmxldCBpbnN0YWxsID0gcmVxdWlyZSgnLi9pbnN0YWxsJylcbmxldCByZW1hcCAgID0gcmVxdWlyZSgnLi9yZW1hcCcpXG5sZXQgcnVuICAgICA9IHJlcXVpcmUoJy4vcnVuJylcbmxldCBzaWduYWwgID0gcmVxdWlyZSgnLi9zaWduYWwnKVxubGV0IHRhZyAgICAgPSByZXF1aXJlKCcuL3RhZycpXG5cbmxldCBNaWNyb2Nvc20gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIE1pY3JvY29zbS5wcm90b3R5cGUuY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5NaWNyb2Nvc20ucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbih7fSwgRm9saWFnZS5wcm90b3R5cGUsIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBGb2xpYWdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcblxuICAgIHRoaXMuc3RvcmVzICA9IHt9XG4gICAgdGhpcy5wbHVnaW5zID0gW11cbiAgfSxcblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBpbml0aWFsIHN0YXRlIGEgbWljcm9jb3NtIHN0YXJ0cyB3aXRoLiBUaGUgcmVkdWN0aW9uXG4gICAqIG9mIGNhbGxpbmcgYGdldEluaXRpYWxTdGF0ZWAgb24gYWxsIHN0b3Jlcy5cbiAgICogQHJldHVybiBPYmplY3RcbiAgICovXG4gIGdldEluaXRpYWxTdGF0ZSgpIHtcbiAgICByZXR1cm4gcmVtYXAodGhpcy5zdG9yZXMsIHN0b3JlID0+IHN0b3JlLmdldEluaXRpYWxTdGF0ZSgpKVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZXNldHMgc3RhdGUgdG8gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIGBnZXRJbml0aWFsU3RhdGUoKWBcbiAgICogQHJldHVybiB0aGlzXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLmNvbW1pdCh0aGlzLmdldEluaXRpYWxTdGF0ZSgpKVxuICAgIHJldHVybiB0aGlzXG4gIH0sXG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGBkZXNlcmlhbGl6ZWAgb24gdGhlIHByb3ZpZGVkIGRhdGEgYW5kIHRoZW4gbWVyZ2VzIGl0IGludG9cbiAgICogdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gc3RhdGUuIFRoaXMgZnVuY3Rpb24gaXMgZ3JlYXQgZm9yXG4gICAqIGJvb3RzdHJhcHBpbmcgZGF0YSB3aGVuIHJlbmRlcmluZyBmcm9tIHRoZSBzZXJ2ZXIuIEl0IHdpbGwgbm90XG4gICAqIGJsb3cgYXdheSBrZXlzIHRoYXQgaGF2ZW4ndCBiZWVuIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YSAtIEEgSmF2YVNjcmlwdCBvYmplY3Qgb2YgZGF0YSB0byByZXBsYWNlXG4gICAqIEByZXR1cm4gdGhpc1xuICAgKi9cbiAgcmVwbGFjZShkYXRhKSB7XG4gICAgdGhpcy51cGRhdGUodGhpcy5kZXNlcmlhbGl6ZShkYXRhKSlcbiAgICByZXR1cm4gdGhpc1xuICB9LFxuXG4gIC8qKlxuICAgKiBQdXNoZXMgYSBwbHVnaW4gaW4gdG8gdGhlIHJlZ2lzdHJ5IGZvciBhIGdpdmVuIG1pY3JvY29zbS5cbiAgICogV2hlbiBgYXBwLnN0YXJ0KClgIGlzIGNhbGxlZCwgaXQgd2lsbCBleGVjdXRlIHBsdWdpbnMgaW5cbiAgICogdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgaGF2ZSBiZWVuIGFkZGVkIHVzaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwbHVnaW4gIC0gVGhlIHBsdWdpbiB0aGF0IHdpbGwgYmUgYWRkZWRcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBPcHRpb25zIHBhc3NlZCB0byB0aGUgcGx1Z2luIG9uIHN0YXJ0XG4gICAqIEByZXR1cm4gdGhpc1xuICAgKi9cbiAgYWRkUGx1Z2luKGNvbmZpZywgb3B0aW9ucykge1xuICAgIHRoaXMucGx1Z2lucy5wdXNoKG5ldyBQbHVnaW4oY29uZmlnLCBvcHRpb25zKSlcbiAgICByZXR1cm4gdGhpc1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBzdG9yZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYGNvbmZpZ2AgYW5kIGFzc2lnbnMgaXQgdG9cbiAgICogbWFuYWdlIHRoZSBwcm92aWRlZCBga2V5YC4gV2hlbmV2ZXIgdGhpcyBzdG9yZSByZXNwb25kcyB0byBhbiBhY3Rpb24sXG4gICAqIGl0IHdpbGwgYmUgcHJvdmlkZWQgdGhlIGN1cnJlbnQgc3RhdGUgZm9yIHRoYXQgcGFydGljdWxhciBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBrZXkgLSBUaGUga2V5IGluIGdsb2JhbCBzdGF0ZSB0aGUgc3RvcmUgd2lsbCBtYW5hZ2VcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBidWlsZCBhIG5ldyBzdG9yZVxuICAgKiBAcmV0dXJuIHRoaXNcbiAgICovXG4gIGFkZFN0b3JlKGtleSwgY29uZmlnKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgYXJndW1lbnRzLmxlbmd0aCA8PSAxKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoYE1pY3JvY29zbTo6YWRkU3RvcmUgZXhwZWN0ZWQgc3RyaW5nIGtleSBidXQgd2FzIGdpdmVuOiAkeyB0eXBlb2Yga2V5IH0uIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgdGhlIGtleT9gKVxuICAgIH1cblxuICAgIHRoaXMuc3RvcmVzW2tleV0gPSBuZXcgU3RvcmUoY29uZmlnLCBrZXkpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGlzIHRoZSByZXN1bHQgb2YgdHJhbnNmb3JtaW5nIGFwcGxpY2F0aW9uIHN0YXRlXG4gICAqIGFjY29yZGluZyB0byB0aGUgYHNlcmlhbGl6ZWAgbWV0aG9kIGRlc2NyaWJlZCBieSBlYWNoIHN0b3JlLlxuICAgKlxuICAgKiBAcmV0dXJuIE9iamVjdFxuICAgKi9cbiAgc2VyaWFsaXplKCkge1xuICAgIHJldHVybiByZW1hcCh0aGlzLnN0b3JlcywgKHN0b3JlLCBrZXkpID0+IHN0b3JlLnNlcmlhbGl6ZSh0aGlzLmdldChrZXkpKSlcbiAgfSxcblxuICAvKipcbiAgICogRm9yIGVhY2gga2V5IGluIHRoZSBwcm92aWRlZCBgZGF0YWAgcGFyYW1ldGVyLCB0cmFuc2Zvcm0gaXQgdXNpbmdcbiAgICogdGhlIGBkZXNlcmlhbGl6ZWAgbWV0aG9kIHByb3ZpZGVkIGJ5IHRoZSBzdG9yZSBtYW5hZ2luZyB0aGF0IGtleS5cbiAgICogVGhlbiBmb2xkIHRoZSBkZXNlcmlhbGl6ZWQgZGF0YSBvdmVyIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHN0YXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YSAtIERhdGEgdG8gZGVzZXJpYWxpemVcbiAgICogQHJldHVybiBPYmplY3RcbiAgICovXG4gIGRlc2VyaWFsaXplKGRhdGEpIHtcbiAgICByZXR1cm4gcmVtYXAoZGF0YSwgKHN0YXRlLCBrZXkpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3Jlc1trZXldLmRlc2VyaWFsaXplKHN0YXRlKVxuICAgIH0pXG4gIH0sXG5cbiAgLyoqXG4gICAqIEFsaWFzIGZvciBgc2VyaWFsaXplYFxuICAgKiBAcmV0dXJuIE9iamVjdFxuICAgKi9cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZSgpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjbG9uZSBvZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBzdGF0ZVxuICAgKiBAcmV0dXJuIE9iamVjdFxuICAgKi9cbiAgdG9PYmplY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVPZigpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBhbiBhcHBsaWNhdGlvbi4gSXQgZG9lcyBhIGNvdXBsZSBvZiB0aGluZ3M6XG4gICAqXG4gICAqIDEuIENhbGxzIGB0aGlzLnJlc2V0KClgIHRvIGRldGVybWluZSBpbml0aWFsIHN0YXRlXG4gICAqIDIuIFJ1bnMgdGhyb3VnaCBhbGwgcGx1Z2lucywgaXQgd2lsbCB0ZXJtaW5hdGUgaWYgYW55IGZhaWxcbiAgICogMy4gRXhlY3V0ZXMgdGhlIHByb3ZpZGVkIGxpc3Qgb2YgY2FsbGJhY2tzLCBwYXNzaW5nIGFsb25nIGFueSBlcnJvcnNcbiAgICogICAgZ2VuZXJhdGVkIGlmIGluc3RhbGxpbmcgcGx1Z2lucyBmYWlscy5cbiAgICpcbiAgICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gY2FsbGJhY2tzIC0gQ2FsbGJhY2tzIHRvIHJ1biBhZnRlciBwbHVnaW5zIGluc3RhbGxcbiAgICogQHJldHVybiBNaWNyb2Nvc21cbiAgICovXG4gIHN0YXJ0KC8qLi4uY2FsbGJhY2tzKi8pIHtcbiAgICBsZXQgY2FsbGJhY2tzID0gYXJndW1lbnRzXG5cbiAgICB0aGlzLnJlc2V0KClcblxuICAgIC8vIFF1ZXVlIHBsdWdpbnMgYW5kIHRoZW4gbm90aWZ5IHRoYXQgaW5zdGFsbGF0aW9uIGhhcyBmaW5pc2hlZFxuICAgIGluc3RhbGwodGhpcy5wbHVnaW5zLCB0aGlzLCAoKSA9PiBydW4oY2FsbGJhY2tzLCBbXSwgdGhpcywgJ3N0YXJ0JykpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9LFxuXG4gIC8qKlxuICAgKiBQYXJ0aWFsbHkgYXBwbGllcyBgcHVzaGAuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGFjdGlvbiAtIFRoZSBhY3Rpb24gdG8gYmluZFxuICAgKiBAcGFyYW0gey4uLmFueX0gcGFyYW1zIC0gUHJlZmlsbGVkIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIGZ1bmN0aW9uXG4gICAqL1xuICBwcmVwYXJlKGFjdGlvbiwgLi4ucGFyYW1zKSB7XG4gICAgcmV0dXJuIHRoaXMucHVzaC5iaW5kKHRoaXMsIGFjdGlvbiwgLi4ucGFyYW1zKVxuICB9LFxuXG4gIC8qKlxuICAgKiBGb3IgYSBnaXZlbiBTVEFURSwgcmV2ZXJ0IGFsbCBrZXlzIGluIGEgQ0hBTkdFU0VUXG4gICAqIHRvIHRoZSBvcmlnaW5hbCwgdW5sZXNzIG5ldyBmYWN0cyBoYXZlIGNoYW5nZWQgdGhlIGN1cnJlbnQgdmFsdWVcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGJhc2VcbiAgICogQHBhcmFtIHtPYmplY3R9IGhlYWRcbiAgICovXG4gIHJvbGxiYWNrKHN0YXRlLCBjaGFuZ2VzKSB7XG4gICAgbGV0IHJlc29sdXRpb24gPSByZW1hcChjaGFuZ2VzLCAoaGVhZCwga2V5KSA9PiB7XG4gICAgICBsZXQgYmFzZSAgICA9IHN0YXRlW2tleV1cbiAgICAgIGxldCBjdXJyZW50ID0gdGhpcy5nZXQoa2V5KVxuXG4gICAgICByZXR1cm4gY3VycmVudCAhPT0gaGVhZCAmJiBjdXJyZW50ICE9PSBiYXNlID8gY3VycmVudCA6IGJhc2VcbiAgICB9KVxuXG4gICAgdGhpcy51cGRhdGUocmVzb2x1dGlvbilcbiAgfSxcblxuICAvKipcbiAgICogR2V0IHRoZSBzdGF0ZSBtYW5hZ2VkIGJ5IGFsbCBzdG9yZXMgdGhhdCBjYW4gcmVzcG9uZCB0byBhIGdpdmVuIGFjdGlvblxuICAgKi9cbiAgc3RhdGVGb3IoYWN0aW9uKSB7XG4gICAgbGV0IHN0b3JlcyA9IE9iamVjdC5rZXlzKHRoaXMuc3RvcmVzKVxuICAgICAgICAgIC5maWx0ZXIoa2V5ID0+IFN0b3JlLnRhc2tGb3IodGhpcy5zdG9yZXNba2V5XSwgYWN0aW9uKSlcblxuICAgIHJldHVybiBzdG9yZXMucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcbiAgICAgIG1lbW9ba2V5XSA9IHRoaXMuZ2V0KGtleSlcbiAgICAgIHJldHVybiBtZW1vXG4gICAgfSwge30pXG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFuIGFjdGlvbi4gSWYgaXQgcmVzb2x2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCBkaXNwYXRjaGVzIHRoYXRcbiAgICogdGhlIHJlc3VsdGluZyBwYXJhbWV0ZXJzIHRvIHJlZ2lzdGVyZWQgc3RvcmVzIGZvciB0cmFuc2Zvcm1hdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gYWN0aW9uIC0gVGhlIGFjdGlvbiB0byBkaXNwYXRjaFxuICAgKiBAcGFyYW0gey4uLmFueX0gcGFyYW1zIC0gQXJndW1lbnRzIHRoZSBhY3Rpb24gaXMgY2FsbGVkIHdpdGhcbiAgICogQHJldHVybiBhY3Rpb24gcmVzdWx0XG4gICAqL1xuICBwdXNoKGFjdGlvbiwgLi4ucGFyYW1zKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIGFjdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKGBUcmllZCB0byBwdXNoICR7IGFjdGlvbiB9LCBidXQgaXMgbm90IGEgZnVuY3Rpb24uYClcbiAgICB9XG5cbiAgICB0YWcoYWN0aW9uKVxuXG4gICAgbGV0IGNoYW5nZXMgPSB7fVxuICAgIGxldCBzdGF0ZSAgID0gdGhpcy5zdGF0ZUZvcihhY3Rpb24pXG5cbiAgICBsZXQgcmVzb2x2ZSA9IGJvZHkgPT4ge1xuICAgICAgY2hhbmdlcyA9IHRoaXMuZGlzcGF0Y2goc3RhdGUsIGFjdGlvbiwgYm9keSlcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShjaGFuZ2VzKVxuICAgIH1cblxuICAgIGxldCByZWplY3QgPSAoKSA9PiB0aGlzLnJvbGxiYWNrKHN0YXRlLCBjaGFuZ2VzKVxuXG4gICAgcmV0dXJuIHNpZ25hbChyZXNvbHZlLCByZWplY3QsIGFjdGlvbi5hcHBseSh0aGlzLCBwYXJhbXMpKVxuICB9LFxuXG4gIC8qKlxuICAgKiBTZW5kcyBhIG1lc3NhZ2UgdG8gZWFjaCBrbm93biBzdG9yZSBhc2tpbmcgaWYgaXQgY2FuIHJlc3BvbmQgdG8gdGhlXG4gICAqIHByb3ZpZGVkIGFjdGlvbi4gSWYgc28sIHRha2VzIHRoZSByZXR1cm5lZCBuZXcgc3RhdGUgZm9yIHRoYXQgc3RvcmUnc1xuICAgKiBtYW5hZ2VkIGtleSBhbmQgYXNzaWducyBpdCBhcyBuZXcgc3RhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0ZSAtIFRoZSBjdXJyZW50IHN0YXRlIG9iamVjdCB0byBzZWVkIHN0b3JlcyB3aXRoXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGFjdGlvbiAtIFRoZSBhY3Rpb24gdG8gc2VuZCB0byBlYWNoIHN0b3JlXG4gICAqIEBwYXJhbSB7YW55fSBib2R5IC0gVGhlIHBheWxvYWQgb2YgdGhlIGFjdGlvblxuICAgKi9cbiAgZGlzcGF0Y2goc3RhdGUsIGFjdGlvbiwgYm9keSkge1xuICAgIHJldHVybiByZW1hcChzdGF0ZSwgKHN1YnNldCwga2V5KSA9PiB7XG4gICAgICByZXR1cm4gU3RvcmUuc2VuZCh0aGlzLnN0b3Jlc1trZXldLCBhY3Rpb24sIHN1YnNldCwgYm9keSlcbiAgICB9KVxuICB9XG59KVxuXG5tb2R1bGUuZXhwb3J0cyAgID0gTWljcm9jb3NtXG5NaWNyb2Nvc20uZ2V0ICAgID0gcmVxdWlyZSgnZm9saWFnZS9zcmMvZ2V0Jylcbk1pY3JvY29zbS5zZXQgICAgPSByZXF1aXJlKCdmb2xpYWdlL3NyYy9zZXQnKVxuTWljcm9jb3NtLnJlbW92ZSA9IHJlcXVpcmUoJ2ZvbGlhZ2Uvc3JjL3JlbW92ZScpXG4iXX0=

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