Socket
Socket
Sign inDemoInstall

@soundworks/core

Package Overview
Dependencies
Maintainers
1
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@soundworks/core - npm Package Compare versions

Comparing version 3.0.0-alpha.2 to 3.0.0-alpha.3

common/ParametersFacade.js

9

client/Client.js

@@ -16,2 +16,4 @@ "use strict";

var _ParametersFacade = require("../common/ParametersFacade");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -165,4 +167,4 @@

registerService(name, factory = null, options = {}, dependencies = []) {
const ctor = factory(_Service.default);
this.serviceManager.register(name, ctor, options = {}, dependencies = []);
const ctor = factory(_Service.default, _ParametersFacade.Parameters);
this.serviceManager.register(name, ctor, options, dependencies);
}

@@ -174,3 +176,2 @@

var _default = Client;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGllbnQvQ2xpZW50LmpzIl0sIm5hbWVzIjpbIkNsaWVudCIsImNvbnN0cnVjdG9yIiwiY2xpZW50VHlwZSIsImlkIiwidXVpZCIsImNvbmZpZyIsInNvY2tldCIsIlNvY2tldCIsInNlcnZpY2VNYW5hZ2VyIiwiU2VydmljZU1hbmFnZXIiLCJzdGF0ZU1hbmFnZXIiLCJpbml0IiwiRXJyb3IiLCJ3ZWJzb2NrZXRzIiwiT2JqZWN0IiwiYXNzaWduIiwidXJsIiwicGF0aCIsIlByb21pc2UiLCJyZXNvbHZlIiwic3RhcnQiLCJfcmVhZHkiLCJyZWplY3QiLCJwYXlsb2FkIiwiZW52IiwicmVxdWlyZWRTZXJ2aWNlcyIsImtleXMiLCJnZXRWYWx1ZXMiLCJhZGRMaXN0ZW5lciIsIlN0YXRlTWFuYWdlciIsInRoZW4iLCJlcnIiLCJ0eXBlIiwibXNnIiwiZGF0YSIsImpvaW4iLCJzZW5kIiwicmVnaXN0ZXJTZXJ2aWNlIiwibmFtZSIsImZhY3RvcnkiLCJvcHRpb25zIiwiZGVwZW5kZW5jaWVzIiwiY3RvciIsIlNlcnZpY2UiLCJyZWdpc3RlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQSxNQUFNQSxNQUFOLENBQWE7QUFDWEMsRUFBQUEsV0FBVyxHQUFHO0FBQ1o7Ozs7O0FBS0EsU0FBS0MsVUFBTCxHQUFrQixJQUFsQjtBQUdBOzs7Ozs7QUFLQSxTQUFLQyxFQUFMLEdBQVUsSUFBVjtBQUVBOzs7Ozs7QUFLQSxTQUFLQyxJQUFMLEdBQVksSUFBWjtBQUVBLFNBQUtDLE1BQUwsR0FBYyxFQUFkO0FBRUE7Ozs7Ozs7O0FBT0EsU0FBS0MsTUFBTCxHQUFjLElBQUlDLGVBQUosRUFBZDtBQUVBOzs7Ozs7QUFLQSxTQUFLQyxjQUFMLEdBQXNCLElBQUlDLHVCQUFKLENBQW1CLElBQW5CLENBQXRCO0FBRUE7Ozs7OztBQUtBLFNBQUtDLFlBQUwsR0FB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bkMsRUFBeUNGLE9BQU8sR0FBRyxFQUFuRCxFQUF1REMsWUFBWSxHQUFHLEVBQXRFO0FBQ0Q7O0FBN0hVOztBQThIWjtlQUVjekMsTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTZXJ2aWNlTWFuYWdlciBmcm9tICcuL1NlcnZpY2VNYW5hZ2VyJztcbmltcG9ydCBTdGF0ZU1hbmFnZXIgZnJvbSAnLi9TdGF0ZU1hbmFnZXInO1xuaW1wb3J0IFNvY2tldCBmcm9tICcuL1NvY2tldCc7XG5pbXBvcnQgU2VydmljZSBmcm9tICcuL1NlcnZpY2UnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBjbGllbnQgb2YgKnNvdW5kd29ya3MqIGFwcGxpY2F0aW9uLlxuICogVGhlIGBDbGllbnRgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IHRvIGFjY2VzcyAqc291bmR3b3JrcyogY29tcG9uZW50c1xuICogc3VjaCBhcyBgc2VydmljZU1hbmFnZXJgIG9yIGBzdGF0ZU1hbmFnZXJgLiBJdCBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvclxuICogaGFuZGxpbmcgaW5pdGlhbGl6YXRpb24gbGlmZWN5Y2xlIChlLmcuIGNvbW11bmljYXRpb24sXG4gKiBpbml0aWFsaXphdGlvbiBvZiBzZXJ2aWNlcylcbiAqXG4gKiBAbWVtYmVyb2YgQHNvdW5kd29ya3MvY29yZS9jbGllbnRcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHNvdW5kd29ya3MgZnJvbSAnQHNvdW5kd29ya3MvY29yZS9jbGllbnQnO1xuICpcbiAqIC8vIGNyZWF0ZSBhIG5ldyBgc291bmR3b3Jrcy5DbGllbnRgIGluc3RhbmNlXG4gKiBjb25zdCBjbGllbnQgPSBuZXcgc291bmR3b3Jrcy5DbGllbnQoKTtcbiAqIC8vIGluaXRpYWxpemUgdGhlIGNsaWVudCAobWFpbmx5IGNvbm5lY3QgYW5kIGluaXRpYWxpemUgV2ViU29ja2V0cylcbiAqIGF3YWl0IGNsaWVudC5pbml0KGNvbmZpZyk7XG4gKiAvLyBjcmVhdGUgYXBwbGljYXRpb24gc3BlY2lmaWMgZXhwZXJpZW5jZVxuICogLy8gbXVzdCBleHRlbmRzIGBzb3VuZHdvcmtzLkV4cGVyaWVuY2VgXG4gKiBjb25zdCBwbGF5ZXJFeHBlcmllbmNlID0gbmV3IFBsYXllckV4cGVyaWVuY2UoY2xpZW50KTtcbiAqIC8vIHN0YXJ0IHRoZSBjbGllbnRcbiAqIGF3YWl0IGNsaWVudC5zdGFydCgpO1xuICogLy8gd2hlbiBldmVyeXRoaW5nIGlzIHJlYWR5LCBzdGFydCB0aGUgZXhwZXJpZW5jZVxuICogcGxheWVyRXhwZXJpZW5jZS5zdGFydCgpO1xuICovXG5jbGFzcyBDbGllbnQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvKipcbiAgICAgKiBUeXBlIG9mIHRoZSBjbGllbnQsIHRoaXMgY2FuIGdlbmVyYWxseSBiZSBjb25zaWRlcmVkIGFzIHRoZSByb2xlIG9mIHRoZVxuICAgICAqIGNsaWVudCBpbiB0aGUgYXBwbGljYXRpb24uXG4gICAgICogQHR5cGUge1N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLmNsaWVudFR5cGUgPSBudWxsO1xuXG5cbiAgICAvKipcbiAgICAgKiBVbmlxdWUgc2Vzc2lvbiBpZCBvZiB0aGUgY2xpZW50IChpbmNyZW1ldGVkIHBvc2l0aXZlIG51bWJlciksXG4gICAgICogZ2VuZXJhdGVkIGFuZCByZXRyaWV2ZWQgYnkgdGhlIHNlcnZlciBvbiBzdGFydC5cbiAgICAgKiBAdHlwZSB7TnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuaWQgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVW5pcXVlIHNlc3Npb24gdXVpZCBvZiB0aGUgY2xpZW50ICh1dWlkdjQpLFxuICAgICAqIGdlbmVyYXRlZCBhbmQgcmV0cmlldmVkIGJ5IHRoZSBzZXJ2ZXIgb24gc3RhcnQuXG4gICAgICogQHR5cGUge1N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnV1aWQgPSBudWxsO1xuXG4gICAgdGhpcy5jb25maWcgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIFNvY2tldCBvYmplY3QgdGhhdCBoYW5kbGUgY29tbXVuaWNhdGlvbnMgd2l0aCB0aGUgc2VydmVyLCBpZiBhbnkuXG4gICAgICogVGhpcyBvYmplY3QgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGlmIHRoZSBleHBlcmllbmNlIHJlcXVpcmVzIGFueSBzZXJ2aWNlXG4gICAgICogaGF2aW5nIGEgc2VydmVyLXNpZGUgY291bnRlcnBhcnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7bW9kdWxlOnNvdW5kd29ya3MvY29yZS9jbGllbnQuU29ja2V0fVxuICAgICAqL1xuICAgIHRoaXMuc29ja2V0ID0gbmV3IFNvY2tldCgpO1xuXG4gICAgLyoqXG4gICAgICogQHRvZG8gLSBzZXJ2aWNlTWFuYWdlclxuICAgICAqXG4gICAgICogQHR5cGUge21vZHVsZTpzb3VuZHdvcmtzL2NvcmUvY2xpZW50LlNlcnZpY2VNYW5hZ2VyfVxuICAgICAqL1xuICAgIHRoaXMuc2VydmljZU1hbmFnZXIgPSBuZXcgU2VydmljZU1hbmFnZXIodGhpcyk7XG5cbiAgICAvKipcbiAgICAgKiBAdG9kbyAtIHN0YXRlTWFuYWdlclxuICAgICAqXG4gICAgICogQHR5cGUge21vZHVsZTpzb3VuZHdvcmtzL2NvcmUvY2xpZW50LlN0YXRlTWFuYWdlcn1cbiAgICAgKi9cbiAgICB0aGlzLnN0YXRlTWFuYWdlciA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQHRvZG8gLSBpbml0XG4gICAqL1xuICBhc3luYyBpbml0KGNvbmZpZykge1xuICAgIGlmICghKCdjbGllbnRUeXBlJyBpbiBjb25maWcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NvdW5kd29ya3MuaW5pdCBjb25maWcgb2JqZWN0IFwibXVzdFwiIGRlZmluZSBhIGBjbGllbnRUeXBlYCcpO1xuICAgIH1cblxuICAgIC8vIGhhbmRsZSBjb25maWdcbiAgICB0aGlzLmNsaWVudFR5cGUgPSBjb25maWcuY2xpZW50VHlwZTtcbiAgICAvLyBAdG9kbyAtIHJldmlldyB0aGF0IHRvIGFkYXB0IHRvIHdzIG9wdGlvbnNcbiAgICBjb25zdCB3ZWJzb2NrZXRzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICB1cmw6ICcnLFxuICAgICAgcGF0aDogJ3NvY2tldCcsXG4gICAgICAvLyBwaW5nSW50ZXJ2YWw6IDUgKiAxMDAwLFxuICAgIH0sIGNvbmZpZy53ZWJzb2NrZXRzKTtcblxuICAgIHRoaXMuY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnLCB7IHdlYnNvY2tldHMgfSk7XG5cbiAgICAvLyBpbml0IGNvbW11bmljYXRpb25zXG4gICAgYXdhaXQgdGhpcy5zb2NrZXQuaW5pdCh0aGlzLmNsaWVudFR5cGUsIHRoaXMuY29uZmlnKTtcblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyAtIHN0YXJ0XG4gICAqL1xuICBhc3luYyBzdGFydCgpIHtcbiAgICB0aGlzLl9yZWFkeSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7fTtcblxuICAgICAgaWYgKHRoaXMuY29uZmlnLmVudiAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGF5bG9hZCwge1xuICAgICAgICAgIHJlcXVpcmVkU2VydmljZXM6IE9iamVjdC5rZXlzKHRoaXMuc2VydmljZU1hbmFnZXIuZ2V0VmFsdWVzKCkpLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gd2FpdCBmb3IgaGFuZHNoYWtlIHJlc3BvbnNlIHRvIG1hcmsgY2xpZW50IGFzIGByZWFkeWBcbiAgICAgIHRoaXMuc29ja2V0LmFkZExpc3RlbmVyKCdzOmNsaWVudDpzdGFydCcsICh7IGlkLCB1dWlkIH0pID0+IHtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLnV1aWQgPSB1dWlkO1xuXG4gICAgICAgIHRoaXMuc3RhdGVNYW5hZ2VyID0gbmV3IFN0YXRlTWFuYWdlcih0aGlzLmlkLCB0aGlzLnNvY2tldCk7XG4gICAgICAgIC8vIGV2ZXJ5dGhpbmcgaXMgcmVhZHkgc3RhcnQgc2VydmljZSBtYW5hZ2VyXG4gICAgICAgIHRoaXMuc2VydmljZU1hbmFnZXIuc3RhcnQoKS50aGVuKCgpID0+IHJlc29sdmUoKSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zb2NrZXQuYWRkTGlzdGVuZXIoJ3M6Y2xpZW50OmVycm9yJywgKGVycikgPT4ge1xuICAgICAgICBzd2l0Y2ggKGVyci50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnc2VydmljZXMnOlxuICAgICAgICAgICAgLy8gY2FuIG9ubHkgYXBwZW5kIGlmIGVudiAhPT0gJ3Byb2R1Y3Rpb24nXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBgXCIke2Vyci5kYXRhLmpvaW4oJywgJyl9XCIgcmVxdWlyZWQgY2xpZW50LXNpZGUgYnV0IG5vdCBzZXJ2ZXItc2lkZWA7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVqZWN0KCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zb2NrZXQuc2VuZCgnczpjbGllbnQ6aGFuZHNoYWtlJywgcGF5bG9hZCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5fcmVhZHk7XG4gIH1cblxuICAvKipcbiAgICogQGV4YW1wbGVcbiAgICogYGBganNcbiAgICogc291bmR3b3Jrcy5yZWdpc3RlclNlcnZpY2UoJ3VzZXItZGVmaW5lZC1uYW1lJywgc2VydmljZUZhY3RvcnkpO1xuICAgKiBgYGBcbiAgICovXG4gIHJlZ2lzdGVyU2VydmljZShuYW1lLCBmYWN0b3J5ID0gbnVsbCwgb3B0aW9ucyA9IHt9LCBkZXBlbmRlbmNpZXMgPSBbXSkge1xuICAgIGNvbnN0IGN0b3IgPSBmYWN0b3J5KFNlcnZpY2UpO1xuICAgIHRoaXMuc2VydmljZU1hbmFnZXIucmVnaXN0ZXIobmFtZSwgY3Rvciwgb3B0aW9ucyA9IHt9LCBkZXBlbmRlbmNpZXMgPSBbXSk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IENsaWVudDtcbiJdfQ==
exports.default = _default;

@@ -56,3 +56,2 @@ "use strict";

var _default = Experience;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGllbnQvRXhwZXJpZW5jZS5qcyJdLCJuYW1lcyI6WyJsb2ciLCJFeHBlcmllbmNlIiwiY29uc3RydWN0b3IiLCJjbGllbnQiLCJFcnJvciIsInJlcXVpcmUiLCJuYW1lIiwic2VydmljZU1hbmFnZXIiLCJnZXQiLCJzdGFydCIsInNvY2tldCIsInNlbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7OztBQUVBLE1BQU1BLEdBQUcsR0FBRyxvQkFBTSxzQkFBTixDQUFaO0FBRUE7Ozs7Ozs7OztBQVFBLE1BQU1DLFVBQU4sQ0FBaUI7QUFDZkMsRUFBQUEsV0FBVyxDQUFDQyxNQUFELEVBQVM7QUFDbEI7QUFDQSxRQUFJLENBQUNBLE1BQUwsRUFBYTtBQUNYLFlBQU0sSUFBSUMsS0FBSixDQUFVLDhFQUFWLENBQU47QUFDRDs7QUFFRCxTQUFLRCxNQUFMLEdBQWNBLE1BQWQ7QUFDRDtBQUVEOzs7Ozs7O0FBS0FFLEVBQUFBLE9BQU8sQ0FBQ0MsSUFBRCxFQUFPO0FBQ1osV0FBTyxLQUFLSCxNQUFMLENBQVlJLGNBQVosQ0FBMkJDLEdBQTNCLENBQStCRixJQUEvQixFQUFxQyxJQUFyQyxDQUFQO0FBQ0Q7QUFFRDs7Ozs7OztBQUtBRyxFQUFBQSxLQUFLLEdBQUc7QUFDTlQsSUFBQUEsR0FBRyxDQUFFLGlCQUFnQixLQUFLRSxXQUFMLENBQWlCSSxJQUFLLFNBQXhDLENBQUg7QUFFQSxTQUFLSCxNQUFMLENBQVlPLE1BQVosQ0FBbUJDLElBQW5CLENBQXdCLGFBQXhCO0FBQ0Q7O0FBNUJjOztlQStCRlYsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdzb3VuZHdvcmtzOmxpZmVjeWNsZScpO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgdG8gYmUgZXh0ZW5kZWQgaW4gb3JkZXIgdG8gY3JlYXRlIHRoZSBjbGllbnQtc2lkZSBvZiBhIGN1c3RvbVxuICogZXhwZXJpZW5jZS5cbiAqXG4gKiBUaGUgdXNlciBkZWZpbmVkIGBFeHBlcmllbmNlYCBpcyB0aGUgbWFpbiBjb21wb25lbnQgb2YgYSBzb3VuZHdvcmtzIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBtZW1iZXJvZiBAc291bmR3b3Jrcy9jb3JlL2NsaWVudFxuICovXG5jbGFzcyBFeHBlcmllbmNlIHtcbiAgY29uc3RydWN0b3IoY2xpZW50KSB7XG4gICAgLy8gQHRvZG8gLSBjaGVjayB0aGF0IGl0J3MgYSBzb3VuZHdvcmtzIGluc3RhbmNlXG4gICAgaWYgKCFjbGllbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZXJpZW5jZSBzaG91bGQgcmVjZWl2ZSB0aGUgYHNvdW5kd29ya3MuQ2xpZW50YCBpbnN0YW5jZSBhcyBmaXJzdCBhcmd1bWVudCcpO1xuICAgIH1cblxuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVpcmUgYSByZWdpc3RlcmVkIHNlcnZpY2UsIGFsbCBjbGllbnQgdHlwZXMgYXNzb2NpYXRlZCB0byB0aGUgZXhwZXJpZW5jZVxuICAgKiB3aWxsIGFsc28gYmUgYXNzb2NpYXRlZCB0byB0aGUgcmVxdWlyZWQgc2VydmljZS5cbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBzZXJ2aWNlIGFzIGdpdmVuIHdoZW4gcmVnaXN0ZXJlZFxuICAgKi9cbiAgcmVxdWlyZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnNlcnZpY2VNYW5hZ2VyLmdldChuYW1lLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCB0aGUgZXhwZXJpZW5jZS4gVGhpcyBsaWZlY3ljbGUgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFsbCB0aGVcbiAgICogcmVxdWlyZWQgc2VydmljZXMgYXJlIGByZWFkeWAgYW5kIHRodXMgdGhlIGV4cGVyaWVuY2UgY2FuIGJlZ2luIHdpdGggYWxsXG4gICAqIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb25zIGFuZCBzZXJ2aWNlcyByZWFkeSB0byBiZSBjb25zdW1lZC5cbiAgICovXG4gIHN0YXJ0KCkge1xuICAgIGxvZyhgPiBleHBlcmllbmNlIFwiJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9XCIgc3RhcnRgKTtcblxuICAgIHRoaXMuY2xpZW50LnNvY2tldC5zZW5kKCdzOmV4cDplbnRlcicpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV4cGVyaWVuY2U7XG4iXX0=
exports.default = _default;

@@ -25,2 +25,9 @@ "use strict";

constructor(client, name) {
if (!client) {
throw new Error(`[service] 1rst argument should be an instance of Client`);
}
if (!name) {
throw new Error(`[service] 2nd argument should be a valid name`);
}
/**

@@ -33,2 +40,4 @@ * Instance of soundworks client

*/
this.client = client;

@@ -64,7 +73,12 @@ /**

start: new _SignalAll.default(),
ready: new _Signal.default()
started: new _Signal.default(),
ready: new _Signal.default(),
errored: new _Signal.default() // @needs a payload
}; // start when all required signals are fired
this.signals.start.addObserver(value => this.start());
this.started = this.started.bind(this);
this.ready = this.ready.bind(this);
this.error = this.error.bind(this);
}

@@ -96,2 +110,23 @@

/**
* Method to call when the service is effectively started, as it may do async
* job at start (cf. platform-service.client).
* Should be called between `start` and `ready`
*
* @example
* class MyDelayService extends soundworks.Service {
* // ...
* start() {
* setTimeout(() => this.ready(), 3000);
* }
* }
*/
started() {
// @note - this as no strong incidence on the initialization lifecycle,
// maybe should be enforced
log(`> service "${this.name}" started`);
this.signals.started.value = true;
}
/**
* Method to call in the service lifecycle when it should be considered as

@@ -107,6 +142,11 @@ * `ready` and thus allows the intialization process to continue.

error(msg) {
log(`> service "${this.name}" error: ${msg}`);
this.signals.errored.msg = msg;
this.signals.errored.value = true;
}
}
var _default = Service;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGllbnQvU2VydmljZS5qcyJdLCJuYW1lcyI6WyJsb2ciLCJTZXJ2aWNlIiwiY29uc3RydWN0b3IiLCJjbGllbnQiLCJuYW1lIiwib3B0aW9ucyIsInNpZ25hbHMiLCJzdGFydCIsIlNpZ25hbEFsbCIsInJlYWR5IiwiU2lnbmFsIiwiYWRkT2JzZXJ2ZXIiLCJ2YWx1ZSIsImJpbmQiLCJjb25maWd1cmUiLCJkZWZhdWx0cyIsIk9iamVjdCIsImFzc2lnbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7O0FBRUEsTUFBTUEsR0FBRyxHQUFHLG9CQUFNLHNCQUFOLENBQVo7QUFFQTs7Ozs7O0FBS0EsTUFBTUMsT0FBTixDQUFjO0FBQ1pDLEVBQUFBLFdBQVcsQ0FBQ0MsTUFBRCxFQUFTQyxJQUFULEVBQWU7QUFDeEI7Ozs7Ozs7QUFPQSxTQUFLRCxNQUFMLEdBQWNBLE1BQWQ7QUFFQTs7Ozs7Ozs7O0FBUUEsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBRUE7Ozs7Ozs7O0FBT0EsU0FBS0MsT0FBTCxHQUFlLEVBQWY7QUFFQTs7Ozs7Ozs7QUFPQSxTQUFLQyxPQUFMLEdBQWU7QUFDYkMsTUFBQUEsS0FBSyxFQUFFLElBQUlDLGtCQUFKLEVBRE07QUFFYkMsTUFBQUEsS0FBSyxFQUFFLElBQUlDLGVBQUo7QUFGTSxLQUFmLENBcEN3QixDQXlDeEI7O0FBQ0EsU0FBS0osT0FBTCxDQUFhQyxLQUFiLENBQW1CSSxXQUFuQixDQUErQkMsS0FBSyxJQUFJLEtBQUtMLEtBQUwsRUFBeEM7QUFDQSxTQUFLRSxLQUFMLEdBQWEsS0FBS0EsS0FBTCxDQUFXSSxJQUFYLENBQWdCLElBQWhCLENBQWI7QUFDRDs7QUFFREMsRUFBQUEsU0FBUyxDQUFDQyxRQUFELEVBQVdWLE9BQVgsRUFBb0I7QUFDM0IsV0FBT1csTUFBTSxDQUFDQyxNQUFQLENBQWMsS0FBS1osT0FBbkIsRUFBNEJVLFFBQTVCLEVBQXNDVixPQUF0QyxDQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQUUsRUFBQUEsS0FBSyxHQUFHO0FBQ05QLElBQUFBLEdBQUcsQ0FBRSxjQUFhLEtBQUtJLElBQUssU0FBekIsQ0FBSDtBQUNEO0FBRUQ7Ozs7OztBQUlBSyxFQUFBQSxLQUFLLEdBQUc7QUFDTlQsSUFBQUEsR0FBRyxDQUFFLGNBQWEsS0FBS0ksSUFBSyxTQUF6QixDQUFIO0FBQ0EsU0FBS0UsT0FBTCxDQUFhRyxLQUFiLENBQW1CRyxLQUFuQixHQUEyQixJQUEzQjtBQUNEOztBQTdFVzs7ZUFnRkNYLE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2lnbmFsIGZyb20gJy4uL2NvbW1vbi9TaWduYWwnO1xuaW1wb3J0IFNpZ25hbEFsbCBmcm9tICcuLi9jb21tb24vU2lnbmFsQWxsJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdzb3VuZHdvcmtzOmxpZmVjeWNsZScpO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgdG8gYmUgZXh0ZW5kZWQgaW4gb3JkZXIgdG8gY3JlYXRlIGEgbmV3IHNlcnZpY2UuXG4gKlxuICogQG1lbWJlcm9mIEBzb3VuZHdvcmtzL2NvcmUvY2xpZW50XG4gKi9cbmNsYXNzIFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihjbGllbnQsIG5hbWUpIHtcbiAgICAvKipcbiAgICAgKiBJbnN0YW5jZSBvZiBzb3VuZHdvcmtzIGNsaWVudFxuICAgICAqIEB0eXBlIHtTdHJpbmd9XG4gICAgICogQG5hbWUgY2xpZW50XG4gICAgICogQGluc3RhbmNlXG4gICAgICogQG1lbWJlcm9mIG1vZHVsZTpAc291bmR3b3Jrcy9jb3JlL3NlcnZlci5TZXJ2aWNlXG4gICAgICovXG4gICAgdGhpcy5jbGllbnQgPSBjbGllbnQ7XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBzZXJ2aWNlLCBhcyBkZWZpbmVkIG9uIHJlZ2lzdHJhdGlvbi5cbiAgICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgICAqIEBuYW1lIG5hbWVcbiAgICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgICAqIEBpbnN0YW5jZVxuICAgICAqIEBtZW1iZXJvZiBAc291bmR3b3Jrcy9jb3JlL2NsaWVudC5TZXJ2aWNlXG4gICAgICovXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbnMgb2YgdGhlIGFjdGl2aXR5LlxuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICogQG5hbWUgb3B0aW9uc1xuICAgICAqIEBpbnN0YW5jZVxuICAgICAqIEBtZW1iZXJvZiBAc291bmR3b3Jrcy9jb3JlL2NsaWVudC5TZXJ2aWNlXG4gICAgICovXG4gICAgdGhpcy5vcHRpb25zID0ge307XG5cbiAgICAvKipcbiAgICAgKiBTaWduYWxzIGRlZmluaW5nIHRoZSBwcm9jZXNzIHN0YXRlLlxuICAgICAqIEBuYW1lIHNpZ25hbFxuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICogQGluc3RhbmNlXG4gICAgICogQG1lbWJlcm9mIEBzb3VuZHdvcmtzL2NvcmUvY2xpZW50LlNlcnZpY2VcbiAgICAgKi9cbiAgICB0aGlzLnNpZ25hbHMgPSB7XG4gICAgICBzdGFydDogbmV3IFNpZ25hbEFsbCgpLFxuICAgICAgcmVhZHk6IG5ldyBTaWduYWwoKSxcbiAgICB9O1xuXG4gICAgLy8gc3RhcnQgd2hlbiBhbGwgcmVxdWlyZWQgc2lnbmFscyBhcmUgZmlyZWRcbiAgICB0aGlzLnNpZ25hbHMuc3RhcnQuYWRkT2JzZXJ2ZXIodmFsdWUgPT4gdGhpcy5zdGFydCgpKTtcbiAgICB0aGlzLnJlYWR5ID0gdGhpcy5yZWFkeS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgY29uZmlndXJlKGRlZmF1bHRzLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCBkZWZhdWx0cywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHdoZXJlIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBvZiBhIGNoaWxkIFNlcnZpY2Ugc2hvdWxkIGJlXG4gICAqIGltcGxlbWVudGVkLiBXaGVuIHJlYWR5LCB0aGUgaW5pdGlhbGl6YXRpb24gc3RlcCBzaG91bGQgY2FsbCBgdGhpcy5yZWFkeWBcbiAgICogaW4gb3JkZXIgdG8gaW5mb3JtIHRoZSBzZXJ2aWNlTWFuYWdlciB0aGF0IHRoZSBzZXJ2aWNlIGlzIHJlYWR5IHRvIGJlXG4gICAqIGNvbnN1bWVkIGJ5IHRoZSBjbGllbnQsIGFuZCB0aHVzIGFsbG93IHRvIGNvbnRpbnVlIHRoZSBpbml0aWFsaXphdGlvblxuICAgKiBwcm9jZXNzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjbGFzcyBNeURlbGF5U2VydmljZSBleHRlbmRzIHNvdW5kd29ya3MuU2VydmljZSB7XG4gICAqICAgLy8gLi4uXG4gICAqICAgc3RhcnQoKSB7XG4gICAqICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVhZHkoKSwgMzAwMCk7XG4gICAqICAgfVxuICAgKiB9XG4gICAqL1xuICBzdGFydCgpIHtcbiAgICBsb2coYD4gc2VydmljZSBcIiR7dGhpcy5uYW1lfVwiIHN0YXJ0YCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGNhbGwgaW4gdGhlIHNlcnZpY2UgbGlmZWN5Y2xlIHdoZW4gaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXNcbiAgICogYHJlYWR5YCBhbmQgdGh1cyBhbGxvd3MgdGhlIGludGlhbGl6YXRpb24gcHJvY2VzcyB0byBjb250aW51ZS5cbiAgICovXG4gIHJlYWR5KCkge1xuICAgIGxvZyhgPiBzZXJ2aWNlIFwiJHt0aGlzLm5hbWV9XCIgcmVhZHlgKTtcbiAgICB0aGlzLnNpZ25hbHMucmVhZHkudmFsdWUgPSB0cnVlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNlcnZpY2U7XG5cbiJdfQ==
exports.default = _default;

@@ -40,3 +40,3 @@ "use strict";

this._registeredService = {};
this._registeredServices = {};
/** @private */

@@ -47,3 +47,3 @@

this.servicesStatus = {};
this._servicesStatus = {};
/** @private */

@@ -88,3 +88,5 @@

_emitChange() {
this._observers.forEach(observer => observer());
const status = this.getValues();
this._observers.forEach(observer => observer(status));
}

@@ -105,3 +107,3 @@ /** @unstable */

getValues() {
return Object.assign({}, this.servicesStatus);
return Object.assign({}, this._servicesStatus);
} // end @unstable

@@ -118,3 +120,3 @@ // ------------------

register(name, ctor, options = {}, dependencies = []) {
this._registeredService[name] = {
this._registeredServices[name] = {
ctor,

@@ -134,4 +136,7 @@ options,

get(name, _experienceRequired = false) {
if (!this._registeredService[name]) {
throw new Error(`Service "${name}" is not defined`);
if (!this._registeredServices[name]) {
throw new Error(`Cannot get or require service "${name}", service is not registered
> registered services are:
${Object.keys(this._registeredServices).map(n => `> - ${n}\n`).join('')}
`);
} // throw an error if manager already started

@@ -149,3 +154,3 @@

dependencies
} = this._registeredService[name];
} = this._registeredServices[name];
const instance = new ctor(this._client, name, options); // wait, at least, for the service manager start signal

@@ -169,6 +174,10 @@

this.servicesStatus[name] = 'idle';
this._servicesStatus[name] = 'idle';
let unsubscribe;
const onServiceStart = () => {
this.servicesStatus[name] = 'started';
const onServiceStarted = () => {
this._servicesStatus[name] = 'started';
unsubscribe = instance.state.subscribe(() => {
this._emitChange();
});

@@ -178,21 +187,28 @@ this._emitChange();

const onServiceReady = () => {
this.servicesStatus[name] = 'ready';
const onServiceErrored = () => {
this._servicesStatus[name] = 'errored';
this._emitChange();
instance.signals.start.removeObserver(onServiceStart);
unsubscribe();
instance.signals.started.removeObserver(onServiceStarted);
instance.signals.ready.removeObserver(onServiceReady);
instance.signals.errored.removeObserver(onServiceErrored);
};
instance.signals.start.addObserver(onServiceStart);
instance.signals.ready.addObserver(onServiceReady); // trigger updates on params update too
// @note - this should be kept private for now
// @todo - change this for a shared state, using `stateManager`
const onServiceReady = () => {
this._servicesStatus[name] = 'ready';
if (instance.params && instance.params.addListener) {
instance.params.addListener(() => this._emitChange());
} // store instance
this._emitChange();
unsubscribe();
instance.signals.started.removeObserver(onServiceStarted);
instance.signals.ready.removeObserver(onServiceReady);
instance.signals.errored.removeObserver(onServiceErrored);
};
instance.signals.started.addObserver(onServiceStarted);
instance.signals.ready.addObserver(onServiceReady);
instance.signals.errored.addObserver(onServiceErrored); // store instance
this._instances[name] = instance;

@@ -210,3 +226,2 @@ } // if instance exists and no other argument given, `get` acts a a pure getter

var _default = ServiceManager;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGllbnQvU2VydmljZU1hbmFnZXIuanMiXSwibmFtZXMiOlsibG9nIiwiU2VydmljZU1hbmFnZXIiLCJjb25zdHJ1Y3RvciIsImNsaWVudCIsIl9pbnN0YW5jZXMiLCJfcmVnaXN0ZXJlZFNlcnZpY2UiLCJfb2JzZXJ2ZXJzIiwiU2V0Iiwic2VydmljZXNTdGF0dXMiLCJfY2xpZW50Iiwic2lnbmFscyIsInN0YXJ0IiwiU2lnbmFsIiwicmVhZHkiLCJTaWduYWxBbGwiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIl9yZXNvbHZlUmVhZHlQcm9taXNlIiwiYWRkT2JzZXJ2ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsIl9lbWl0Q2hhbmdlIiwiZm9yRWFjaCIsIm9ic2VydmVyIiwib2JzZXJ2ZSIsImFkZCIsImRlbGV0ZSIsImdldFZhbHVlcyIsIk9iamVjdCIsImFzc2lnbiIsInJlZ2lzdGVyIiwibmFtZSIsImN0b3IiLCJvcHRpb25zIiwiZGVwZW5kZW5jaWVzIiwiZ2V0IiwiX2V4cGVyaWVuY2VSZXF1aXJlZCIsIkVycm9yIiwiaW5zdGFuY2UiLCJkZXBlbmRlbmN5TmFtZSIsImRlcGVuZGVuY3kiLCJvblNlcnZpY2VTdGFydCIsIm9uU2VydmljZVJlYWR5IiwicmVtb3ZlT2JzZXJ2ZXIiLCJwYXJhbXMiLCJhZGRMaXN0ZW5lciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7O0FBRUEsTUFBTUEsR0FBRyxHQUFHLG9CQUFNLHNCQUFOLENBQVo7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBTUMsY0FBTixDQUFxQjtBQUNuQkMsRUFBQUEsV0FBVyxDQUFDQyxNQUFELEVBQVM7QUFDbEI7QUFDQSxTQUFLQyxVQUFMLEdBQWtCLEVBQWxCO0FBQ0E7O0FBQ0EsU0FBS0Msa0JBQUwsR0FBMEIsRUFBMUI7QUFDQTs7QUFDQSxTQUFLQyxVQUFMLEdBQWtCLElBQUlDLEdBQUosRUFBbEI7QUFDQTs7QUFDQSxTQUFL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LGNBQXRDO0FBQ0FILFFBQUFBLFFBQVEsQ0FBQzdCLE9BQVQsQ0FBaUJHLEtBQWpCLENBQXVCK0IsY0FBdkIsQ0FBc0NELGNBQXRDO0FBQ0QsT0FORDs7QUFRQUosTUFBQUEsUUFBUSxDQUFDN0IsT0FBVCxDQUFpQkMsS0FBakIsQ0FBdUJRLFdBQXZCLENBQW1DdUIsY0FBbkM7QUFDQUgsTUFBQUEsUUFBUSxDQUFDN0IsT0FBVCxDQUFpQkcsS0FBakIsQ0FBdUJNLFdBQXZCLENBQW1Dd0IsY0FBbkMsRUFwQzBCLENBcUMxQjtBQUNBO0FBQ0E7O0FBQ0EsVUFBSUosUUFBUSxDQUFDTSxNQUFULElBQW1CTixRQUFRLENBQUNNLE1BQVQsQ0FBZ0JDLFdBQXZDLEVBQW9EO0FBQ2xEUCxRQUFBQSxRQUFRLENBQUNNLE1BQVQsQ0FBZ0JDLFdBQWhCLENBQTRCLE1BQU0sS0FBS3hCLFdBQUwsRUFBbEM7QUFDRCxPQTFDeUIsQ0E0QzFCOzs7QUFDQSxXQUFLbEIsVUFBTCxDQUFnQjRCLElBQWhCLElBQXdCTyxRQUF4QjtBQUNELEtBeERvQyxDQTBEckM7OztBQUNBLFVBQU1BLFFBQVEsR0FBRyxLQUFLbkMsVUFBTCxDQUFnQjRCLElBQWhCLENBQWpCO0FBRUEsV0FBT08sUUFBUDtBQUNEOztBQXRKa0I7O0FBdUpwQjtlQUVjdEMsYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgU2lnbmFsIGZyb20gJy4uL2NvbW1vbi9TaWduYWwnO1xuaW1wb3J0IFNpZ25hbEFsbCBmcm9tICcuLi9jb21tb24vU2lnbmFsQWxsJztcblxuY29uc3QgbG9nID0gZGVidWcoJ3NvdW5kd29ya3M6bGlmZWN5Y2xlJyk7XG5cbi8qKlxuICogQ29tcG9uZW50IGRlZGljYXRlZCBhdCBpbnN0YW50aWF0aW5nIGFuZCBpbml0aWFsaXppbmcgc2VydmljZXMuXG4gKiBFeGNlcHQgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLCB0aGlzIGNvbXBvbmVudHMgc2hvdWxkIG5vdCBiZVxuICogYWNjZXNzZWQgZGlyZWN0bHkuXG4gKlxuICogQW4gaW5zdGFuY2UgYFNlcnZpY2VNYW5hZ2VyYCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgdGhlIGBzb3VuZHdvcmtzLkNsaWVudGAuXG4gKlxuICogQG1lbWJlcm9mIEBzb3VuZHdvcmtzL2NvcmUvY2xpZW50XG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCBzb3VuZHdvcmtzIGZyb20gJ0Bzb3VuZHdvcmtzL2NvcmUvY2xpZW50JztcbiAqXG4gKiAvLyBjcmVhdGUgYSBuZXcgYHNvdW5kd29ya3MuQ2xpZW50YCBpbnN0YW5jZVxuICogY29uc3QgY2xpZW50ID0gbmV3IHNvdW5kd29ya3MuQ2xpZW50KCk7XG4gKiBjb25zb2xlLmxvZyhjbGllbnQuc2VydmljZU1hbmFnZXIpO1xuICovXG5jbGFzcyBTZXJ2aWNlTWFuYWdlciB7XG4gIGNvbnN0cnVjdG9yKGNsaWVudCkge1xuICAgIC8qKiBAcHJpdmF0ZSAqL1xuICAgIHRoaXMuX2luc3RhbmNlcyA9IHt9O1xuICAgIC8qKiBAcHJpdmF0ZSAqL1xuICAgIHRoaXMuX3JlZ2lzdGVyZWRTZXJ2aWNlID0ge307XG4gICAgLyoqIEBwcml2YXRlICovXG4gICAgdGhpcy5fb2JzZXJ2ZXJzID0gbmV3IFNldCgpO1xuICAgIC8qKiBAcHJpdmF0ZSAqL1xuICAgIHRoaXMuc2VydmljZXNTdGF0dXMgPSB7fTtcbiAgICAvKiogQHByaXZhdGUgKi9cbiAgICB0aGlzLl9jbGllbnQgPSBjbGllbnQ7XG5cbiAgICBsb2coJz4gc2VydmljZU1hbmFnZXIgaW5pdCcpO1xuXG4gICAgdGhpcy5zaWduYWxzID0ge1xuICAgICAgc3RhcnQ6IG5ldyBTaWduYWwoKSxcbiAgICAgIHJlYWR5OiBuZXcgU2lnbmFsQWxsKCksXG4gICAgfTtcblxuICAgIHRoaXMucmVhZHkgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLl9yZXNvbHZlUmVhZHlQcm9taXNlID0gcmVzb2x2ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kcyB0aGUgc2lnbmFsIHJlcXVpcmVkIGJ5IGFsbCBzZXJ2aWNlcyB0byBzdGFydC5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHN0YXJ0KCkge1xuICAgIGxvZygnPiBzZXJ2aWNlTWFuYWdlciBzdGFydCcpO1xuXG4gICAgdGhpcy5zaWduYWxzLnJlYWR5LmFkZE9ic2VydmVyKCgpID0+IHtcbiAgICAgIGxvZygnPiBzZXJ2aWNlTWFuYWdlciByZWFkeScpO1xuXG4gICAgICB0aGlzLl9yZXNvbHZlUmVhZHlQcm9taXNlKCk7XG4gICAgfSk7XG5cbiAgICAvLyBzdGFydCBiZWZvcmUgcmVhZHksIGV2ZW4gaWYgbm8gZGVwc1xuICAgIHRoaXMuc2lnbmFscy5zdGFydC52YWx1ZSA9IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuc2lnbmFscy5yZWFkeS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2lnbmFscy5yZWFkeS52YWx1ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVhZHk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gQHVuc3RhYmxlXG4gIC8vIG1pbWljIHN0YXRlIG1hbmFnZXIgQVBJLCBzbyB3ZSBjYW4gY2hhbmdlIHRoaXMgbGF0ZXIuLi5cbiAgX2VtaXRDaGFuZ2UoKSB7XG4gICAgdGhpcy5fb2JzZXJ2ZXJzLmZvckVhY2gob2JzZXJ2ZXIgPT4gb2JzZXJ2ZXIoKSk7XG4gIH1cblxuICAvKiogQHVuc3RhYmxlICovXG4gIG9ic2VydmUob2JzZXJ2ZXIpIHtcbiAgICB0aGlzLl9vYnNlcnZlcnMuYWRkKG9ic2VydmVyKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0aGlzLl9vYnNlcnZlcnMuZGVsZXRlKG9ic2VydmVyKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEB1bnN0YWJsZSAqL1xuICBnZXRWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc2VydmljZXNTdGF0dXMpO1xuICB9XG5cbiAgLy8gZW5kIEB1bnN0YWJsZVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cblxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHNlcnZpY2Ugd2l0aCBhIGdpdmVuIG5hbWUuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGN0b3IgLSBUaGUgY29uc3RydWN0b3Igb2YgdGhlIHNlcnZpY2UuXG4gICAqL1xuICByZWdpc3RlcihuYW1lLCBjdG9yLCBvcHRpb25zID0ge30sIGRlcGVuZGVuY2llcyA9IFtdKSB7XG4gICAgdGhpcy5fcmVnaXN0ZXJlZFNlcnZpY2VbbmFtZV0gPSB7IGN0b3IsIG9wdGlvbnMsIGRlcGVuZGVuY2llcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYSBzZXJ2aWNlIHdpdGggb3B0aW9ucyB0byBiZSBhcHBsaWVkIHRvIGl0cyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPW51bGxdIC0gT3B0aW9ucyBmb3IgdGhlIHNlcnZpY2UsIG1heSBvdmVycmlkZVxuICAgKiAgcHJldmlvdXNseSBnaXZlbiBvcHRpb25zLlxuICAgKi9cbiAgZ2V0KG5hbWUsIF9leHBlcmllbmNlUmVxdWlyZWQgPSBmYWxzZSkge1xuICAgIGlmICghdGhpcy5fcmVnaXN0ZXJlZFNlcnZpY2VbbmFtZV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2VydmljZSBcIiR7bmFtZX1cIiBpcyBub3QgZGVmaW5lZGApO1xuICAgIH1cblxuICAgIC8vIHRocm93IGFuIGVycm9yIGlmIG1hbmFnZXIgYWxyZWFkeSBzdGFydGVkXG4gICAgaWYgKF9leHBlcmllbmNlUmVxdWlyZWQgJiYgdGhpcy5zaWduYWxzLnN0YXJ0LnZhbHVlID09PSB0cnVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlcnZpY2UgXCIke25hbWV9XCIgcmVxdWlyZWQgYWZ0ZXIgc2VydmljZU1hbmFnZXIgc3RhcnRgKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2luc3RhbmNlc1tuYW1lXSkge1xuICAgICAgY29uc3QgeyBjdG9yLCBvcHRpb25zLCBkZXBlbmRlbmNpZXMgfSA9IHRoaXMuX3JlZ2lzdGVyZWRTZXJ2aWNlW25hbWVdO1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgY3Rvcih0aGlzLl9jbGllbnQsIG5hbWUsIG9wdGlvbnMpO1xuICAgICAgLy8gd2FpdCwgYXQgbGVhc3QsICBmb3IgdGhlIHNlcnZpY2UgbWFuYWdlciBzdGFydCBzaWduYWxcbiAgICAgIGluc3RhbmNlLnNpZ25hbHMuc3RhcnQuYWRkKHRoaXMuc2lnbmFscy5zdGFydCk7XG4gICAgICAvLyBoYW5kbGUgZGVwZW5kZW5jeSB0cmVlXG4gICAgICB0aGlzLnNpZ25hbHMucmVhZHkuYWRkKGluc3RhbmNlLnNpZ25hbHMucmVhZHkpO1xuXG4gICAgICBpZiAoZGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGVwZW5kZW5jaWVzLmZvckVhY2goZGVwZW5kZW5jeU5hbWUgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5faW5zdGFuY2VzW2RlcGVuZGVuY3lOYW1lXSkge1xuICAgICAgICAgICAgdGhpcy5nZXQoZGVwZW5kZW5jeU5hbWUsIF9leHBlcmllbmNlUmVxdWlyZWQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3kgPSB0aGlzLl9pbnN0YW5jZXNbZGVwZW5kZW5jeU5hbWVdO1xuICAgICAgICAgIGluc3RhbmNlLnNpZ25hbHMuc3RhcnQuYWRkKGRlcGVuZGVuY3kuc2lnbmFscy5yZWFkeSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBoYW5kbGUgc2VydmljZSBzdGF0dXMgZm9yIHJlcG9ydGluZ1xuICAgICAgdGhpcy5zZXJ2aWNlc1N0YXR1c1tuYW1lXSA9ICdpZGxlJztcblxuICAgICAgY29uc3Qgb25TZXJ2aWNlU3RhcnQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VydmljZXNTdGF0dXNbbmFtZV0gPSAnc3RhcnRlZCc7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb25TZXJ2aWNlUmVhZHkgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VydmljZXNTdGF0dXNbbmFtZV0gPSAncmVhZHknO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XG5cbiAgICAgICAgaW5zdGFuY2Uuc2lnbmFscy5zdGFydC5yZW1vdmVPYnNlcnZlcihvblNlcnZpY2VTdGFydClcbiAgICAgICAgaW5zdGFuY2Uuc2lnbmFscy5yZWFkeS5yZW1vdmVPYnNlcnZlcihvblNlcnZpY2VSZWFkeSlcbiAgICAgIH1cblxuICAgICAgaW5zdGFuY2Uuc2lnbmFscy5zdGFydC5hZGRPYnNlcnZlcihvblNlcnZpY2VTdGFydCk7XG4gICAgICBpbnN0YW5jZS5zaWduYWxzLnJlYWR5LmFkZE9ic2VydmVyKG9uU2VydmljZVJlYWR5KTtcbiAgICAgIC8vIHRyaWdnZXIgdXBkYXRlcyBvbiBwYXJhbXMgdXBkYXRlIHRvb1xuICAgICAgLy8gQG5vdGUgLSB0aGlzIHNob3VsZCBiZSBrZXB0IHByaXZhdGUgZm9yIG5vd1xuICAgICAgLy8gQHRvZG8gLSBjaGFuZ2UgdGhpcyBmb3IgYSBzaGFyZWQgc3RhdGUsIHVzaW5nIGBzdGF0ZU1hbmFnZXJgXG4gICAgICBpZiAoaW5zdGFuY2UucGFyYW1zICYmIGluc3RhbmNlLnBhcmFtcy5hZGRMaXN0ZW5lcikge1xuICAgICAgICBpbnN0YW5jZS5wYXJhbXMuYWRkTGlzdGVuZXIoKCkgPT4gdGhpcy5fZW1pdENoYW5nZSgpKTtcbiAgICAgIH1cblxuICAgICAgLy8gc3RvcmUgaW5zdGFuY2VcbiAgICAgIHRoaXMuX2luc3RhbmNlc1tuYW1lXSA9IGluc3RhbmNlO1xuICAgIH1cblxuICAgIC8vIGlmIGluc3RhbmNlIGV4aXN0cyBhbmQgbm8gb3RoZXIgYXJndW1lbnQgZ2l2ZW4sIGBnZXRgIGFjdHMgYSBhIHB1cmUgZ2V0dGVyXG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLl9pbnN0YW5jZXNbbmFtZV07XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlcnZpY2VNYW5hZ2VyO1xuXG4iXX0=
exports.default = _default;

@@ -272,3 +272,2 @@ "use strict";

var _default = Socket;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGllbnQvU29ja2V0LmpzIl0sIm5hbWVzIjpbImxvZyIsImlzQnJvd3NlciIsIkZ1bmN0aW9uIiwiU29ja2V0IiwiY29uc3RydWN0b3IiLCJ3cyIsIl9zdHJpbmdMaXN0ZW5lcnMiLCJNYXAiLCJfYmluYXJ5TGlzdGVuZXJzIiwiaW5pdCIsImNsaWVudFR5cGUiLCJjb25maWciLCJrZXkiLCJNYXRoIiwicmFuZG9tIiwicmVwbGFjZSIsInBhdGgiLCJ3ZWJzb2NrZXRzIiwidXJsIiwicHJvdG9jb2wiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhvc3RuYW1lIiwicG9ydCIsInVzZUh0dHBzIiwiaXAiLCJxdWVyeVBhcmFtcyIsInN0cmluZ1NvY2tldFVybCIsIldlYlNvY2tldCIsInN0cmluZ1NvY2tldFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwiY2hhbm5lbCIsImFyZ3MiLCJkYXRhIiwiX2VtaXQiLCJmb3JFYWNoIiwiZXZlbnROYW1lIiwiYmluYXJ5U29ja2V0VXJsIiwiYmluYXJ5V3MiLCJiaW5hcnlUeXBlIiwiYmluYXJ5U29ja2V0UHJvbWlzZSIsImFsbCIsImJpbmFyeSIsImxpc3RlbmVycyIsImhhcyIsImNhbGxiYWNrcyIsImdldCIsImNhbGxiYWNrIiwiX2FkZExpc3RlbmVyIiwic2V0IiwiU2V0IiwiYWRkIiwiX3JlbW92ZUxpc3RlbmVyIiwiZGVsZXRlIiwic2l6ZSIsIl9yZW1vdmVBbGxMaXN0ZW5lcnMiLCJzZW5kIiwibXNnIiwiYWRkTGlzdGVuZXIiLCJyZW1vdmVMaXN0ZW5lciIsInJlbW92ZUFsbExpc3RlbmVycyIsInNlbmRCaW5hcnkiLCJ0eXBlZEFycmF5IiwiYWRkQmluYXJ5TGlzdGVuZXIiLCJyZW1vdmVCaW5hcnlMaXN0ZW5lciIsInJlbW92ZUFsbEJpbmFyeUxpc3RlbmVycyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7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LFVBQTNCLENBQVo7QUFDQSxTQUFLeEIsUUFBTCxDQUFja0IsSUFBZCxDQUFtQkMsR0FBbkI7QUFDRDtBQUVEOzs7Ozs7OztBQU1BTSxFQUFBQSxpQkFBaUIsQ0FBQ2hDLE9BQUQsRUFBVWdCLFFBQVYsRUFBb0I7QUFDbkMsU0FBS0MsWUFBTCxDQUFrQixLQUFLNUMsZ0JBQXZCLEVBQXlDMkIsT0FBekMsRUFBa0RnQixRQUFsRDtBQUNEO0FBRUQ7Ozs7Ozs7O0FBTUFpQixFQUFBQSxvQkFBb0IsQ0FBQ2pDLE9BQUQsRUFBVWdCLFFBQVYsRUFBb0I7QUFDdEMsU0FBS0ssZUFBTCxDQUFxQixLQUFLaEQsZ0JBQTFCLEVBQTRDMkIsT0FBNUMsRUFBcURnQixRQUFyRDtBQUNEO0FBRUQ7Ozs7Ozs7QUFLQWtCLEVBQUFBLHdCQUF3QixDQUFDbEMsT0FBRCxFQUFVO0FBQ2hDLFNBQUt3QixtQkFBTCxDQUF5QixLQUFLbkQsZ0JBQTlCLEVBQWdEMkIsT0FBaEQ7QUFDRDs7QUE3TlU7O0FBOE5aO2VBRWNoQyxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBXZWJTb2NrZXQgZnJvbSAnaXNvbW9ycGhpYy13cyc7XG5pbXBvcnQge1xuICBwYWNrQmluYXJ5TWVzc2FnZSxcbiAgdW5wYWNrQmluYXJ5TWVzc2FnZSxcbiAgcGFja1N0cmluZ01lc3NhZ2UsXG4gIHVucGFja1N0cmluZ01lc3NhZ2UsXG59IGZyb20gJy4uL2NvbW1vbi9zb2NrZXRzLWVuY29kZXItZGVjb2Rlcic7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdzb3VuZHdvcmtzOnNvY2tldCcpO1xuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTc1NzU3OTAvZW52aXJvbm1lbnQtZGV0ZWN0aW9uLW5vZGUtanMtb3ItYnJvd3NlclxuY29uc3QgaXNCcm93c2VyID0gbmV3IEZ1bmN0aW9uKFwidHJ5IHtyZXR1cm4gdGhpcz09PXdpbmRvdzt9Y2F0Y2goZSl7IHJldHVybiBmYWxzZTt9XCIpO1xuXG4vLyBjbG9zZVxuLy8gICBGaXJlZCB3aGVuIGEgY29ubmVjdGlvbiB3aXRoIGEgd2Vic29ja2V0IGlzIGNsb3NlZC5cbi8vICAgQWxzbyBhdmFpbGFibGUgdmlhIHRoZSBvbmNsb3NlIHByb3BlcnR5XG4vLyBlcnJvclxuLy8gICBGaXJlZCB3aGVuIGEgY29ubmVjdGlvbiB3aXRoIGEgd2Vic29ja2V0IGhhcyBiZWVuIGNsb3NlZCBiZWNhdXNlIG9mIGFuIGVycm9yLCBzdWNoIGFzIHdoZW5zb21lIGRhdGEgY291bGRuJ3QgYmUgc2VudC5cbi8vICAgQWxzbyBhdmFpbGFibGUgdmlhIHRoZSBvbmVycm9yIHByb3BlcnR5LlxuLy8gbWVzc2FnZVxuLy8gICBGaXJlZCB3aGVuIGRhdGEgaXMgcmVjZWl2ZWQgdGhyb3VnaCBhIHdlYnNvY2tldC5cbi8vICAgQWxzbyBhdmFpbGFibGUgdmlhIHRoZSBvbm1lc3NhZ2UgcHJvcGVydHkuXG4vLyBvcGVuXG4vLyAgIEZpcmVkIHdoZW4gYSBjb25uZWN0aW9uIHdpdGggYSB3ZWJzb2NrZXQgaXMgb3BlbmVkLlxuLy8gICBBbHNvIGF2YWlsYWJsZSB2aWEgdGhlIG9ub3BlbiBwcm9wZXJ0eS5cblxuLy8gQHRvZG8gLSB1c2UgaXNvbW9ycGhpYyB3cyA/IChkb2VzIHNlZW1zIGxpa2UgYSBwZXJmZWN0IGlkZWEpXG5cbi8qKlxuICogU2ltcGxlIHdyYXBwZXIgd2l0aCBzaW1wbGUgcHVic3ViIHN5c3RlbSBidWlsdCBvbiB0b3Agb2YgYHdzYCBzb2NrZXQuXG4gKiBUaGUgYWJzdHJhY3Rpb24gYWN0dWFsbHkgb3BlbiB0d28gZGlmZmVyZW50IHNvY2tldHM6XG4gKiAtIG9uZSBjb25maWd1cmVkIGZvciBzdHJpbmcgKEpTT04gY29tcGF0aWJsZSkgbWVzc2FnZXNcbiAqIC0gb25lIGNvbmZpZ3VyZWQgd2l0aCBgYmluYXJ5VHlwZT1hcnJheWJ1ZmZlcmAgZm9yIHN0cmVhbWluZyBkYXRhIG1vcmVcbiAqICAgZWZmaWNpZW50bHkuXG4gKiBUaGUgc29ja2V0cyBhbHNvIHJlLWVtaXRzIGFsbCBcIm5hdGl2ZVwiIHdzIGV2ZW50cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzXG4gKlxuICogQG1lbWJlcm9mIEBzb3VuZHdvcmtzL2NvcmUvY2xpZW50XG4gKi9cbmNsYXNzIFNvY2tldCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8qKlxuICAgICAqIFdlYlNvY2tldCBpbnN0YW5jZSAoc3RyaW5nIHByb3RvY29sIC0gYmluYXJ5VHlwZSA9ICdzdHJpbmcnKS5cbiAgICAgKi9cbiAgICB0aGlzLndzID0gbnVsbDtcblxuICAgIHRoaXMuX3N0cmluZ0xpc3RlbmVycyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9iaW5hcnlMaXN0ZW5lcnMgPSBuZXcgTWFwKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBhIHdlYnNvY2tldCBjb25uZWN0aW9uIHdpdGggdGhlIHNlcnZlclxuICAgKiBAcGFyYW0ge1N0cmluZ30gY2xpZW50VHlwZSAtIGBjbGllbnQudHlwZWAge0BsaW5rIGNsaWVudH1cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBPcHRpb25zIG9mIHRoZSBzb2NrZXRcbiAgICogQHBhcmFtIHtBcnJheTxTdHJpbmc+fSBvcHRpb25zLnBhdGggLSBEZWZpbmVzIHdoZXJlIHNvY2tldCBzaG91bGQgZmluZCB0aGUgYHNvY2tldC5pb2AgZmlsZVxuICAgKi9cbiAgaW5pdChjbGllbnRUeXBlLCBjb25maWcpIHtcbiAgICAvLyB1bmlxdWUga2V5IHRoYXQgYWxsb3dzIHRvIGFzc29jaWF0ZSB0aGUgdHdvIHNvY2tldHMgdG8gdGhlIHNhbWUgY2xpZW50LlxuICAgIC8vIG5vdGU6IHRoZSBrZXkgaXMgb25seSB1c2VkIHRvIHBhaXIgdG8gdHdvIHNvY2tldHMsIHNvIGl0cyB1c2FnZSBpcyB2ZXJ5XG4gICAgLy8gbGltaXRlZCBpbiB0aW1lIHRoZXJlZm9yZSBhIHJhbmRvbSBudW1iZXIgc2hvdWxkIGhvcGVmdWxseSBiZSBzdWZmaWNpZW50LlxuICAgIGNvbnN0IGtleSA9IChNYXRoLnJhbmRvbSgpICsgJycpLnJlcGxhY2UoL14wLi8sICcnKTtcblxuICAgIC8vIG9wZW4gd2ViIHNvY2tldHNcbiAgICBjb25zdCB7IHBhdGggfSA9IGNvbmZpZy53ZWJzb2NrZXRzO1xuICAgIGxldCB1cmw7XG5cbiAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgIGNvbnN0IHByb3RvY29sID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sLnJlcGxhY2UoL15odHRwPy8sICd3cycpO1xuICAgICAgY29uc3QgeyBob3N0bmFtZSwgcG9ydCB9ID0gd2luZG93LmxvY2F0aW9uO1xuICAgICAgdXJsID0gYCR7cHJvdG9jb2x9Ly8ke2hvc3RuYW1lfToke3BvcnR9LyR7cGF0aH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcm90b2NvbCA9IGNvbmZpZy51c2VIdHRwcyA/ICd3c3M6JyA6ICd3czonO1xuICAgICAgY29uc3QgeyBpcCwgcG9ydCB9ID0gY29uZmlnO1xuICAgICAgdXJsID0gYCR7cHJvdG9jb2x9Ly8ke2lwfToke3BvcnR9LyR7cGF0aH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gYGNsaWVudFR5cGU9JHtjbGllbnRUeXBlfSZrZXk9JHtrZXl9YDtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBpbml0IHN0cmluZyBzb2NrZXRcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3Qgc3RyaW5nU29ja2V0VXJsID0gYCR7dXJsfT9iaW5hcnk9MCYke3F1ZXJ5UGFyYW1zfWA7XG5cbiAgICB0aGlzLndzID0gbmV3IFdlYlNvY2tldChzdHJpbmdTb2NrZXRVcmwpO1xuICAgIGxvZyhgc3RyaW5nIHNvY2tldCBpbml0aWFsaXplZCAtIHVybDogJHtzdHJpbmdTb2NrZXRVcmx9YCk7XG5cbiAgICBjb25zdCBzdHJpbmdTb2NrZXRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy53cy5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgcmVzb2x2ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBwYXJzZSBpbmNvbWluZyBtZXNzYWdlcyBmb3IgcHVic3ViXG4gICAgdGhpcy53cy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZSA9PiB7XG4gICAgICBjb25zdCBbY2hhbm5lbCwgYXJnc10gPSB1bnBhY2tTdHJpbmdNZXNzYWdlKGUuZGF0YSk7XG4gICAgICB0aGlzLl9lbWl0KGZhbHNlLCBjaGFubmVsLCAuLi5hcmdzKTtcbiAgICB9KTtcblxuICAgIC8vIGJyb2FkY2FzdCBhbGwgYFdlYlNvY2tldGAgbmF0aXZlIGV2ZW50c1xuICAgIFsgJ29wZW4nLFxuICAgICAgJ2Nsb3NlJyxcbiAgICAgICdlcnJvcicsXG4gICAgICAndXBncmFkZScsXG4gICAgICAnbWVzc2FnZScsXG4gICAgXS5mb3JFYWNoKGV2ZW50TmFtZSA9PiB7XG4gICAgICB0aGlzLndzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAoZSkgPT4ge1xuICAgICAgICB0aGlzLl9lbWl0KGZhbHNlLCBldmVudE5hbWUsIGUuZGF0YSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBpbml0IGJpbmFyeSBzb2NrZXRcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgYmluYXJ5U29ja2V0VXJsID0gYCR7dXJsfT9iaW5hcnk9MSYke3F1ZXJ5UGFyYW1zfWA7XG5cbiAgICB0aGlzLmJpbmFyeVdzID0gbmV3IFdlYlNvY2tldChiaW5hcnlTb2NrZXRVcmwpO1xuICAgIHRoaXMuYmluYXJ5V3MuYmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7XG4gICAgbG9nKGBiaW5hcnkgc29ja2V0IGluaXRpYWxpemVkIC0gdXJsOiAke2JpbmFyeVNvY2tldFVybH1gKTtcblxuICAgIGNvbnN0IGJpbmFyeVNvY2tldFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmJpbmFyeVdzLmFkZEV2ZW50TGlzdGVuZXIoJ29wZW4nLCByZXNvbHZlKTtcbiAgICB9KTtcblxuICAgIC8vIHBhcnNlIGluY29taW5nIG1lc3NhZ2VzIGZvciBwdWJzdWJcbiAgICB0aGlzLmJpbmFyeVdzLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBlID0+IHtcbiAgICAgIGNvbnN0IFtjaGFubmVsLCBkYXRhXSA9IHVucGFja0JpbmFyeU1lc3NhZ2UoZS5kYXRhKTtcbiAgICAgIHRoaXMuX2VtaXQodHJ1ZSwgY2hhbm5lbCwgZGF0YSk7XG4gICAgfSk7XG5cbiAgICAvLyBicm9hZGNhc3QgYWxsIGBXZWJTb2NrZXRgIG5hdGl2ZSBldmVudHNcbiAgICBbICdvcGVuJyxcbiAgICAgICdjbG9zZScsXG4gICAgICAnZXJyb3InLFxuICAgICAgJ3VwZ3JhZGUnLFxuICAgICAgJ21lc3NhZ2UnLFxuICAgIF0uZm9yRWFjaChldmVudE5hbWUgPT4ge1xuICAgICAgdGhpcy5iaW5hcnlXcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKGUpID0+IHtcbiAgICAgICAgdGhpcy5fZW1pdCh0cnVlLCBldmVudE5hbWUsIGUuZGF0YSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIHdhaXQgZm9yIGJvdGggc29ja2V0IHRvIGJlIG9wZW5lZFxuICAgIHJldHVybiBQcm9taXNlLmFsbChbc3RyaW5nU29ja2V0UHJvbWlzZSwgYmluYXJ5U29ja2V0UHJvbWlzZV0pO1xuICB9XG5cbiAgLyoqIEBwcml2YXRlICovXG4gIF9lbWl0KGJpbmFyeSwgY2hhbm5lbCwgLi4uYXJncykge1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IGJpbmFyeSA/IHRoaXMuX2JpbmFyeUxpc3RlbmVycyA6IHRoaXMuX3N0cmluZ0xpc3RlbmVycztcblxuICAgIGlmIChsaXN0ZW5lcnMuaGFzKGNoYW5uZWwpKSB7XG4gICAgICBjb25zdCBjYWxsYmFja3MgPSBsaXN0ZW5lcnMuZ2V0KGNoYW5uZWwpO1xuICAgICAgY2FsbGJhY2tzLmZvckVhY2goY2FsbGJhY2sgPT4gY2FsbGJhY2soLi4uYXJncykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAcHJpdmF0ZSAqL1xuICBfYWRkTGlzdGVuZXIobGlzdGVuZXJzLCBjaGFubmVsLCBjYWxsYmFjaykge1xuICAgIGlmICghbGlzdGVuZXJzLmhhcyhjaGFubmVsKSkge1xuICAgICAgbGlzdGVuZXJzLnNldChjaGFubmVsLCBuZXcgU2V0KCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbGxiYWNrcyA9IGxpc3RlbmVycy5nZXQoY2hhbm5lbCk7XG4gICAgY2FsbGJhY2tzLmFkZChjYWxsYmFjayk7XG4gIH1cblxuICAvKiogQHByaXZhdGUgKi9cbiAgX3JlbW92ZUxpc3RlbmVyKGxpc3RlbmVycywgY2hhbm5lbCwgY2FsbGJhY2spIHtcbiAgICBpZiAobGlzdGVuZXJzLmhhcyhjaGFubmVsKSkge1xuICAgICAgY29uc3QgY2FsbGJhY2tzID0gbGlzdGVuZXJzLmdldChjaGFubmVsKTtcbiAgICAgIGNhbGxiYWNrcy5kZWxldGUoY2FsbGJhY2spO1xuXG4gICAgICBpZiAoY2FsbGJhY2tzLnNpemUgPT09IDApIHtcbiAgICAgICAgbGlzdGVuZXJzLmRlbGV0ZShjaGFubmVsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogQHByaXZhdGUgKi9cbiAgX3JlbW92ZUFsbExpc3RlbmVycyhsaXN0ZW5lcnMsIGNoYW5uZWwpIHtcbiAgICBpZiAobGlzdGVuZXJzLmhhcyhjaGFubmVsKSkge1xuICAgICAgbGlzdGVuZXJzLmRlbGV0ZShjaGFubmVsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBKU09OIGNvbXBhdGlibGUgbWVzc2FnZXMgb24gYSBnaXZlbiBjaGFubmVsXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjaGFubmVsIC0gVGhlIGNoYW5uZWwgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHsuLi4qfSBhcmdzIC0gQXJndW1lbnRzIG9mIHRoZSBtZXNzYWdlIChhcyBtYW55IGFzIG5lZWRlZCwgb2YgYW55IHR5cGUpXG4gICAqL1xuICBzZW5kKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBtc2cgPSBwYWNrU3RyaW5nTWVzc2FnZShjaGFubmVsLCAuLi5hcmdzKTtcbiAgICB0aGlzLndzLnNlbmQobXNnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gSlNPTiBjb21wYXRpYmxlIG1lc3NhZ2VzIG9uIGEgZ2l2ZW4gY2hhbm5lbFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gY2hhbm5lbCAtIENoYW5uZWwgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHsuLi4qfSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIGV4ZWN1dGUgd2hlbiBhIG1lc3NhZ2UgaXMgcmVjZWl2ZWRcbiAgICovXG4gIGFkZExpc3RlbmVyKGNoYW5uZWwsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5fYWRkTGlzdGVuZXIodGhpcy5fc3RyaW5nTGlzdGVuZXJzLCBjaGFubmVsLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgbGlzdGVuZXIgZnJvbSBKU09OIGNvbXBhdGlibGUgbWVzc2FnZXMgb24gYSBnaXZlbiBjaGFubmVsXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjaGFubmVsIC0gQ2hhbm5lbCBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0gey4uLip9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVMaXN0ZW5lcihjaGFubmVsLCBjYWxsYmFjaykge1xuICAgIHRoaXMuX3JlbW92ZUxpc3RlbmVyKHRoaXMuX3N0cmluZ0xpc3RlbmVycywgY2hhbm5lbCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgbGlzdGVuZXJzIGZyb20gSlNPTiBjb21wYXRpYmxlIG1lc3NhZ2VzIG9uIGEgZ2l2ZW4gY2hhbm5lbFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gY2hhbm5lbCAtIENoYW5uZWwgb2YgdGhlIG1lc3NhZ2VcbiAgICovXG4gIHJlbW92ZUFsbExpc3RlbmVycyhjaGFubmVsKSB7XG4gICAgdGhpcy5fcmVtb3ZlQWxsTGlzdGVuZXJzKHRoaXMuX3N0cmluZ0xpc3RlbmVycywgY2hhbm5lbCk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBiaW5hcnkgbWVzc2FnZXMgb24gYSBnaXZlbiBjaGFubmVsXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjaGFubmVsIC0gQ2hhbm5lbCBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0ge1R5cGVkQXJyYXl9IHR5cGVkQXJyYXkgLSBEYXRhIHRvIHNlbmRcbiAgICovXG4gIHNlbmRCaW5hcnkoY2hhbm5lbCwgdHlwZWRBcnJheSkge1xuICAgIGNvbnN0IG1zZyA9IHBhY2tCaW5hcnlNZXNzYWdlKGNoYW5uZWwsIHR5cGVkQXJyYXkpO1xuICAgIHRoaXMuYmluYXJ5V3Muc2VuZChtc2cpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBiaW5hcnkgbWVzc2FnZXMgb24gYSBnaXZlbiBjaGFubmVsXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjaGFubmVsIC0gQ2hhbm5lbCBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0gey4uLip9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gZXhlY3V0ZSB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZlZFxuICAgKi9cbiAgYWRkQmluYXJ5TGlzdGVuZXIoY2hhbm5lbCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLl9hZGRMaXN0ZW5lcih0aGlzLl9iaW5hcnlMaXN0ZW5lcnMsIGNoYW5uZWwsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBsaXN0ZW5lciBmcm9tIGJpbmFyeSBjb21wYXRpYmxlIG1lc3NhZ2VzIG9uIGEgZ2l2ZW4gY2hhbm5lbFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gY2hhbm5lbCAtIENoYW5uZWwgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHsuLi4qfSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIGNhbmNlbFxuICAgKi9cbiAgcmVtb3ZlQmluYXJ5TGlzdGVuZXIoY2hhbm5lbCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLl9yZW1vdmVMaXN0ZW5lcih0aGlzLl9iaW5hcnlMaXN0ZW5lcnMsIGNoYW5uZWwsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYWxsIGxpc3RlbmVycyBmcm9tIGJpbmFyeSBjb21wYXRpYmxlIG1lc3NhZ2VzIG9uIGEgZ2l2ZW4gY2hhbm5lbFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gY2hhbm5lbCAtIENoYW5uZWwgb2YgdGhlIG1lc3NhZ2VcbiAgICovXG4gIHJlbW92ZUFsbEJpbmFyeUxpc3RlbmVycyhjaGFubmVsKSB7XG4gICAgdGhpcy5fcmVtb3ZlQWxsTGlzdGVuZXJzKHRoaXMuX2JpbmFyeUxpc3RlbmVycywgY2hhbm5lbCk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNvY2tldDtcbiJdfQ==
exports.default = _default;

@@ -307,3 +307,2 @@ "use strict";

var _default = StateManager;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGllbnQvU3RhdGVNYW5hZ2VyLmpzIl0sIm5hbWVzIjpbImlkR2VuZXJhdG9yIiwiaSIsImdlbmVyYXRlUmVxdWVzdElkIiwicmVxdWVzdFByb21pc2VzIiwiTWFwIiwic3RvcmVSZXF1ZXN0UHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZXFJZCIsIm5leHQiLCJ2YWx1ZSIsInNldCIsInJlc29sdmVSZXF1ZXN0IiwiZGF0YSIsImdldCIsImRlbGV0ZSIsInJlamVjdFJlcXVlc3QiLCJTdGF0ZSIsImNvbnN0cnVjdG9yIiwiaWQiLCJzY2hlbWFOYW1lIiwic2NoZW1hIiwiY3JlYXRvciIsIm93bmVyIiwiY2xpZW50IiwibWFuYWdlciIsImluaXRWYWx1ZXMiLCJfc2NoZW1hIiwiX2NyZWF0b3IiLCJfb3duZXIiLCJfY2xpZW50IiwiX21hbmFnZXIiLCJfcGFyYW1ldGVycyIsIl9zdWJzY3JpcHRpb25zIiwiU2V0IiwiX29uRGV0YWNoQ2FsbGJhY2tzIiwic29ja2V0IiwiYWRkTGlzdGVuZXIiLCJVUERBVEVfUkVTUE9OU0UiLCJ1cGRhdGVzIiwidXBkYXRlZCIsIl9jb21taXQiLCJVUERBVEVfTk9USUZJQ0FUSU9OIiwiREVMRVRFX1JFU1BPTlNFIiwiX3N0YXRlc0J5SWQiLCJfY2xlYXJUcmFuc3BvcnQiLCJmb3JFYWNoIiwiY2FsbGJhY2siLCJERUxFVEVfRVJST1IiLCJtc2ciLCJERUxFVEVfTk9USUZJQ0FUSU9OIiwiREVUQUNIX1JFU1BPTlNFIiwiZnVuYyIsIkRFVEFDSF9FUlJPUiIsInJlbW92ZUFsbExpc3RlbmVycyIsIm9iaiIsIm5hbWUiLCJsaXN0ZW5lciIsImdldFNjaGVtYSIsIlByb21pc2UiLCJzZW5kIiwiVVBEQVRFX1JFUVVFU1QiLCJnZXRWYWx1ZXMiLCJzdWJzY3JpYmUiLCJhZGQiLCJkZXRhY2giLCJjbGVhciIsIkRFVEFDSF9SRVFVRVNUIiwiREVMRVRFX1JFUVVFU1QiLCJvbkRldGFjaCIsIlN0YXRlTWFuYWdlciIsIl9vYnNlcnZlTGlzdGVuZXJzIiwiQ1JFQVRFX1JFU1BPTlNFIiwic3RhdGUiLCJDUkVBVEVfRVJST1IiLCJBVFRBQ0hfUkVTUE9OU0UiLCJjdXJyZW50VmFsdWVzIiwiQVRUQUNIX0VSUk9SIiwiT0JTRVJWRV9SRVNQT05TRSIsImxpc3QiLCJub2RlSWQiLCJPQlNFUlZFX05PVElGSUNBVElPTiIsImNyZWF0ZSIsInN5bmNlZCIsIkNSRUFURV9SRVFVRVNUIiwiYXR0YWNoIiwicGVlcklkIiwiU0VSVkVSX0lEIiwiQVRUQUNIX1JFUVVFU1QiLCJvYnNlcnZlIiwiT0JTRVJWRV9SRVFVRVNUIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7Ozs7QUF3QkEsVUFBVUEsV0FBVixHQUF3QjtBQUN0QixPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCLElBQWhCLEVBQXNCQSxDQUFDLEVBQXZCLEVBQTJCO0FBQ3pCLFVBQU1BLENBQU47QUFDRDtBQUNGOztBQUVELE1BQU1DLGlCQUFpQixHQUFHRixXQUFXLEVBQXJDO0FBQ0EsTUFBTUcsZUFBZSxHQUFHLElBQUlDLEdBQUosRUFBeEI7O0FBRUEsU0FBU0MsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDQyxNQUF0QyxFQUE4QztBQUM1QyxRQUFNQyxLQUFLLEdBQUdOLGlCQUFpQixDQUFDTyxJQUFsQixHQUF5QkMsS0FBdkM7QUFDQVAsRUFBQUEsZUFBZSxDQUFDUSxHQUFoQixDQUFvQkgsS0FBcEIsRUFBMkI7QUFBRUYsSUFBQUEsT0FBRjtBQUFXQyxJQUFBQTtBQUFYLEdBQTNCO0FBRUEsU0FBT0MsS0FBUDtBQUNEOztBQUVELFNBQVNJLGNBQVQsQ0FBd0JKLEtBQXhCLEVBQStCSyxJQUEvQixFQUFxQztBQUNuQyxRQUFNO0FBQUVQLElBQUFBO0FBQUYsTUFBY0gsZUFBZSxDQUFDVyxHQUFoQixDQUFvQk4sS0FBcEIsQ0FBcEI7QUFDQUwsRUFBQUEsZUFBZSxDQUFDWSxNQUFoQixDQUF1QlAsS0FBdkI7QUFFQUYsRUFBQUEsT0FBTyxDQUFDTyxJQUFELENBQVA7QUFDRDs7QUFFRCxTQUFTRyxhQUFULENBQXVCUixLQUF2QixFQUE4QkssSUFBOUIsRUFBb0M7QUFDbEMsUUFBTTtBQUFFUCxJQUFBQSxPQUFGO0FBQVdDLElBQUFBO0FBQVgsTUFBc0JKLGVBQWUsQ0FBQ1csR0FBaEIsQ0FBb0JOLEtBQXBCLENBQTVCO0FBQ0FMLEVBQUFBLGVBQWUsQ0FBQ1ksTUFBaEIsQ0FBdUJQLEtBQXZCO0FBRUFELEVBQUFBLE1BQU0sQ0FBQ00sSUFBRCxDQUFOO0FBQ0Q7QUFFRDs7O0FBQ0EsTUFBTUksS0FBTixDQUFZO0FBQ1ZDLEVBQUFBLFdBQVcsQ0FBQ0MsRUFBRCxFQUFLQyxVQUFMLEVBQWlCQyxNQUFqQixFQUF5QkMsT0FBekIsRUFBa0NDLEtBQWxDLEVBQXlDQyxNQUF6QyxFQUFpREMsT0FBakQsRUFBMERDLFVBQVUsR0FBRyxFQUF2RSxFQUEyRTtBQUNwRixTQUFLUCxFQUFMLEdBQVVBLEVBQVY7QUFDQSxTQUFLQyxVQUFMLEdBQWtCQSxVQUFsQjtBQUVBLFNBQUtPLE9BQUwsR0FBZSxxQkFBVU4sTUFBVixDQUFmO0FBQ0EsU0FBS08sUUFBTCxHQUFnQk4sT0FBaEIsQ0FMb0YsQ0FLM0Q7O0FBQ3pCLFNBQUtPLE1BQUwsR0FBY04sS0FBZCxDQU5vRixDQU0vRDs7QUFFckIsU0FBS08sT0FBTCxHQUFlTixNQUFmO0FBQ0EsU0FBS08sUUFBTCxHQUFnQk4sT0FBaEI7QUFFQSxTQUFLTyxXQUFMLEdBQW1CLHlCQUFXWCxNQUFYLEVBQW1CSyxVQUFuQixDQUFuQjtBQUNBLFNBQUtPLGNBQUwsR0FBc0IsSUFBSUMsR0FBSixFQUF0QjtBQUVBLFNBQUtDLGtCQUFMLEdBQTBCLElBQUlELEdBQUosRUFBMUIsQ0Fkb0YsQ0FnQnBGOztBQUNBLFFBQUlYLEtBQUssS0FBS0MsTUFBTSxDQUFDTCxFQUFyQixFQUF5QjtBQUN2QkssTUFBQUEsTUFBTSxDQUFDWSxNQUFQLENBQWNDLFdBQWQsQ0FBMkIsR0FBRUMsc0NBQWdCLElBQUduQixFQUFHLEVBQW5ELEVBQXNELENBQUNYLEtBQUQsRUFBUStCLE9BQVIsS0FBb0I7QUFDeEUsY0FBTUMsT0FBTyxHQUFHLEtBQUtDLE9BQUwsQ0FBYUYsT0FBYixDQUFoQjs7QUFDQTNCLFFBQUFBLGNBQWMsQ0FBQ0osS0FBRCxFQUFRZ0MsT0FBUixDQUFkO0FBQ0QsT0FIRDtBQUtBaEIsTUFBQUEsTUFBTSxDQUFDWSxNQUFQLENBQWNDLFdBQWQsQ0FBMkIsR0FBRUssMENBQW9CLElBQUd2QixFQUFHLEVBQXZELEVBQTJEb0IsT0FBRCxJQUFhO0FBQ3JFLGFBQUtFLE9BQUwsQ0FBYUYsT0FBYjtBQUNELE9BRkQ7O0FBSUEsVUFBSWpCLE9BQU8sS0FBS0UsTUFBTSxDQUFDTCxFQUF2QixFQUEyQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQUssUUFBQUEsTUFBTSxDQUFDWSxNQUFQLENBQWNDLFdBQWQsQ0FBMkIsR0FBRU0sc0NBQWdCLElBQUd4QixFQUFHLEVBQW5ELEVBQXVEWCxLQUFELElBQVc7QUFDL0QsZUFBS3VCLFFBQUwsQ0FBY2EsV0FBZCxDQUEwQjdCLE1BQTFCLENBQWlDLEtBQUtJLEVBQXRDOztBQUNBLGVBQUswQixlQUFMOztBQUVBLGVBQUtWLGtCQUFMLENBQXdCVyxPQUF4QixDQUFnQ0MsUUFBUSxJQUFJQSxRQUFRLEVBQXBEOztBQUNBbkMsVUFBQUEsY0FBYyxDQUFDSixLQUFELEVBQVEsSUFBUixDQUFkO0FBQ0QsU0FORDtBQVFBZ0IsUUFBQUEsTUFBTSxDQUFDWSxNQUFQLENBQWNDLFdBQWQsQ0FBMkIsR0FBRVcsbUNBQWEsSUFBRzdCLEVBQUcsRUFBaEQsRUFBbUQsQ0FBQ1gsS0FBRCxFQUFReUMsR0FBUixLQUFnQjtBQUNqRWpDLFVBQUFBLGFBQWEsQ0FBQ1IsS0FBRCxFQUFReUMsR0FBUixDQUFiO0FBQ0QsU0FGRDtBQUlELE9BaEJELE1BZ0JPO0FBRUw7QUFDQTtBQUNBO0FBQ0F6QixRQUFBQSxNQUFNLENBQUNZLE1BQVAsQ0FBY0MsV0FBZCxDQUEyQixHQUFFYSwwQ0FBb0IsSUFBRy9CLEVBQUcsRUFBdkQsRUFBMEQsTUFBTTtBQUM5RCxlQUFLWSxRQUFMLENBQWNhLFdBQWQsQ0FBMEI3QixNQUExQixDQUFpQyxLQUFLSSxFQUF0Qzs7QUFDQSxlQUFLMEIsZUFBTDs7QUFFQSxlQUFLVixrQkFBTCxDQUF3QlcsT0FBeEIsQ0FBZ0NDLFFBQVEsSUFBSUEsUUFBUSxFQUFwRDtBQUNELFNBTEQsRUFMSyxDQVlMO0FBQ0E7QUFDQTs7QUFDQXZCLFFBQUFBLE1BQU0sQ0FBQ1ksTUFBUCxDQUFjQyxXQUFkLENBQTJCLEdBQUVjLHNDQUFnQixJQUFHaEMsRUFBRyxFQUFuRCxFQUF1RFgsS0FBRCxJQUFXO0FBQy9ELGVBQUt1QixRQUFMLENBQWNhLFdBQWQsQ0FBMEI3QixNQUExQixDQUFpQyxLQUFLSSxFQUF0Qzs7QUFDQSxlQUFLMEIsZUFBTDs7QUFFQSxlQUFLVixrQkFBTCxDQUF3QlcsT0FBeEIsQ0FBZ0NNLElBQUksSUFBSUEsSUFBSSxFQUE1Qzs7QUFDQXhDLFVBQUFBLGNBQWMsQ0FBQ0osS0FBRCxFQUFRLElBQVIsQ0FBZDtBQUNELFNBTkQsRUFmSyxDQXVCTDs7QUFDQWdCLFFBQUFBLE1BQU0sQ0FBQ1ksTUFBUCxDQUFjQyxXQUFkLENBQTJCLEdBQUVnQixtQ0FBYSxJQUFHbEMsRUFBRyxFQUFoRCxFQUFtRCxDQUFDWCxLQUFELEVBQVF5QyxHQUFSLEtBQWdCO0FBQ2pFakMsVUFBQUEsYUFBYSxDQUFDUixLQUFELEVBQVF5QyxHQUFSLENBQWI7QUFDRCxTQUZEO0FBSUQ7QUFDRjtBQUNGOztBQUVESixFQUFBQSxlQUFlLEdBQUc7QUFDaEI7QUFDQSxTQUFLZixPQUFMLENBQWFNLE1BQWIsQ0FBb0JrQixrQkFBcEIsQ0FBd0MsR0FBRWhCLHNDQUFnQixJQUFHLEtBQUtuQixFQUFHLEVBQXJFOztBQUNBLFNBQUtXLE9BQUwsQ0FBYU0sTUFBYixDQUFvQmtCLGtCQUFwQixDQUF3QyxHQUFFWiwwQ0FBb0IsSUFBRyxLQUFLdkIsRUFBRyxFQUF6RTs7QUFDQSxTQUFLVyxPQUFMLENBQWFNLE1BQWIsQ0FBb0JrQixrQkFBcEIsQ0FBd0MsR0FBRVgsc0NBQWdCLElBQUcsS0FBS3hCLEVBQUcsRUFBckU7O0FBQ0EsU0FBS1csT0FBTCxDQUFhTSxNQUFiLENBQW9Ca0Isa0JBQXBCLENBQXdDLEdBQUVKLDBDQUFvQixJQUFHLEtBQUsvQixFQUFHLEVBQXpFOztBQUNBLFNBQUtXLE9BQUwsQ0FBYU0sTUFBYixDQUFvQmtCLGtCQUFwQixDQUF3QyxHQUFFSCxzQ0FBZ0IsSUFBRyxLQUFLaEMsRUFBRyxFQUFyRTtBQUNEO0FBRUQ7OztBQUNBc0IsRUFBQUEsT0FBTyxDQUFDYyxHQUFELEVBQU07QUFDWCxVQUFNZixPQUFPLEdBQUcsRUFBaEI7O0FBRUEsU0FBSyxJQUFJZ0IsSUFBVCxJQUFpQkQsR0FBakIsRUFBc0I7QUFDcEJmLE1BQUFBLE9BQU8sQ0FBQ2dCLElBQUQsQ0FBUCxHQUFnQixLQUFLeEIsV0FBTCxDQUFpQnJCLEdBQWpCLENBQXFCNkMsSUFBckIsRUFBMkJELEdBQUcsQ0FBQ0MsSUFBRCxDQUE5QixDQUFoQjtBQUNEOztBQUVELFNBQUt2QixjQUFMLENBQW9CYSxPQUFwQixDQUE0QlcsUUFBUSxJQUFJQSxRQUFRLENBQUNqQixPQUFELENBQWhEOztBQUNBLFdBQU9BLE9BQVA7QUFDRDs7QUFFRGtCLEVBQUFBLFNBQVMsR0FBRztBQUNWLFdBQU8sS0FBSy9CLE9BQVo7QUFDRDs7QUFFRGhCLEVBQUFBLEdBQUcsQ0FBQzRCLE9BQUQsRUFBVTtBQUNYLFFBQUksS0FBS1YsTUFBTCxLQUFnQixLQUFLQyxPQUFMLENBQWFYLEVBQWpDLEVBQXFDO0FBQ25DLGFBQU8sSUFBSXdDLE9BQUosQ0FBWSxDQUFDckQsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3RDLGNBQU1DLEtBQUssR0FBR0gsbUJBQW1CLENBQUNDLE9BQUQsRUFBVUMsTUFBVixDQUFqQzs7QUFDQSxhQUFLdUIsT0FBTCxDQUFhTSxNQUFiLENBQW9Cd0IsSUFBcEIsQ0FBMEIsR0FBRUMscUNBQWUsSUFBRyxLQUFLMUMsRUFBRyxFQUF0RCxFQUF5RFgsS0FBekQsRUFBZ0UrQixPQUFoRTtBQUNELE9BSE0sQ0FBUDtBQUlELEtBTEQsTUFLTztBQUNMO0FBQ0EsWUFBTUMsT0FBTyxHQUFHLEtBQUtDLE9BQUwsQ0FBYUYsT0FBYixDQUFoQjs7QUFDQSxhQUFPb0IsT0FBTyxDQUFDckQsT0FBUixDQUFnQmtDLE9BQWhCLENBQVA7QUFDRDtBQUNGOztBQUVEMUIsRUFBQUEsR0FBRyxDQUFDMEMsSUFBRCxFQUFPO0FBQ1IsV0FBTyxLQUFLeEIsV0FBTCxDQUFpQmxCLEdBQWpCLENBQXFCMEMsSUFBckIsQ0FBUDtBQUNEOztBQUVETSxFQUFBQSxTQUFTLEdBQUc7QUFDVixXQUFPLEtBQUs5QixXQUFMLENBQWlCOEIsU0FBakIsRUFBUDtBQUNEOztBQUVEQyxFQUFBQSxTQUFTLENBQUNOLFFBQUQsRUFBVztBQUNsQixTQUFLeEIsY0FBTCxDQUFvQitCLEdBQXBCLENBQXdCUCxRQUF4Qjs7QUFFQSxXQUFPLE1BQU07QUFDWCxXQUFLeEIsY0FBTCxDQUFvQmxCLE1BQXBCLENBQTJCMEMsUUFBM0I7QUFDRCxLQUZEO0FBR0Q7O0FBRURRLEVBQUFBLE1BQU0sR0FBRztBQUNQLFNBQUtoQyxjQUFMLENBQW9CaUMsS0FBcEI7O0FBRUEsUUFBSSxLQUFLcEMsT0FBTCxDQUFhWCxFQUFiLEtBQW9CLEtBQUtTLFFBQTdCLEVBQXVDO0FBQ3JDLGFBQU8sSUFBSStCLE9BQUosQ0FBWSxDQUFDckQsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3RDLGNBQU1DLEtBQUssR0FBR0gsbUJBQW1CLENBQUNDLE9BQUQsRUFBVUMsTUFBVixDQUFqQzs7QUFDQSxhQUFLdUIsT0FBTCxDQUFhTSxNQUFiLENBQW9Cd0IsSUFBcEIsQ0FBMEIsR0FBRU8scUNBQWUsSUFBRyxLQUFLaEQsRUFBRyxFQUF0RCxFQUF5RFgsS0FBekQ7QUFDRCxPQUhNLENBQVA7QUFJRCxLQUxELE1BS087QUFDTCxhQUFPLElBQUltRCxPQUFKLENBQVksQ0FBQ3JELE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUN0QyxjQUFNQyxLQUFLLEdBQUdILG1CQUFtQixDQUFDQyxPQUFELEVBQVVDLE1BQVYsQ0FBakM7O0FBQ0EsYUFBS3VCLE9BQUwsQ0FBYU0sTUFBYixDQUFvQndCLElBQXBCLENBQTBCLEdBQUVRLHFDQUFlLElBQUcsS0FBS2pELEVBQUcsRUFBdEQsRUFBeURYLEtBQXpEO0FBQ0QsT0FITSxDQUFQO0FBSUQ7QUFDRjs7QUFFRDZELEVBQUFBLFFBQVEsQ0FBQ3RCLFFBQUQsRUFBVztBQUNqQixTQUFLWixrQkFBTCxDQUF3QjZCLEdBQXhCLENBQTRCakIsUUFBNUI7QUFDRDs7QUFwSlM7QUF1Slo7Ozs7Ozs7O0FBTUEsTUFBTXVCLFlBQU4sQ0FBbUI7QUFDakJwRCxFQUFBQSxXQUFXLENBQUNDLEVBQUQsRUFBS2lCLE1BQUwsRUFBYTtBQUN0QixTQUFLWixNQUFMLEdBQWM7QUFBRUwsTUFBQUEsRUFBRjtBQUFNaUIsTUFBQUE7QUFBTixLQUFkO0FBRUEsU0FBS1EsV0FBTCxHQUFtQixJQUFJeEMsR0FBSixFQUFuQjtBQUNBLFNBQUttRSxpQkFBTCxHQUF5QixJQUFJckMsR0FBSixFQUF6QixDQUpzQixDQU10QjtBQUNBO0FBQ0E7O0FBQ0EsU0FBS1YsTUFBTCxDQUFZWSxNQUFaLENBQW1CQyxXQUFuQixDQUErQm1DLHNDQUEvQixFQUFnRCxDQUFDaEUsS0FBRCxFQUFRVyxFQUFSLEVBQVlDLFVBQVosRUFBd0JDLE1BQXhCLEVBQWdDQyxPQUFoQyxFQUF5Q0MsS0FBekMsS0FBbUQ7QUFDakcsWUFBTWtELEtBQUssR0FBRyxJQUFJeEQsS0FBSixDQUFVRSxFQUFWLEVBQWNDLFVBQWQsRUFBMEJDLE1BQTFCLEVBQWtDQyxPQUFsQyxFQUEyQ0MsS0FBM0MsRUFBa0QsS0FBS0MsTUFBdkQsRUFBK0QsSUFBL0QsQ0FBZDs7QUFDQSxXQUFLb0IsV0FBTCxDQUFpQmpDLEdBQWpCLENBQXFCOEQsS0FBSyxDQUFDdEQsRUFBM0IsRUFBK0JzRCxLQUEvQjs7QUFFQTdELE1BQUFBLGNBQWMsQ0FBQ0osS0FBRCxFQUFRaUUsS0FBUixDQUFkO0FBQ0QsS0FMRDtBQU9BLFNBQUtqRCxNQUFMLENBQVlZLE1BQVosQ0FBbUJDLFdBQW5CLENBQStCcUMsbUNBQS9CLEVBQTZDLENBQUN6QixHQUFELEVBQU16QyxLQUFOLEtBQWdCO0FBQzNEUSxNQUFBQSxhQUFhLENBQUNSLEtBQUQsRUFBUXlDLEdBQVIsQ0FBYjtBQUNELEtBRkQsRUFoQnNCLENBb0J0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsU0FBS3pCLE1BQUwsQ0FBWVksTUFBWixDQUFtQkMsV0FBbkIsQ0FBK0JzQyxzQ0FBL0IsRUFBZ0QsQ0FBQ25FLEtBQUQsRUFBUVcsRUFBUixFQUFZQyxVQUFaLEVBQXdCQyxNQUF4QixFQUFnQ0MsT0FBaEMsRUFBeUNDLEtBQXpDLEVBQWdEcUQsYUFBaEQsS0FBa0U7QUFDaEgsWUFBTUgsS0FBSyxHQUFHLElBQUl4RCxLQUFKLENBQVVFLEVBQVYsRUFBY0MsVUFBZCxFQUEwQkMsTUFBMUIsRUFBa0NDLE9BQWxDLEVBQTJDQyxLQUEzQyxFQUFrRCxLQUFLQyxNQUF2RCxFQUErRCxJQUEvRCxFQUFxRW9ELGFBQXJFLENBQWQ7O0FBQ0EsV0FBS2hDLFdBQUwsQ0FBaUJqQyxHQUFqQixDQUFxQjhELEtBQUssQ0FBQ3RELEVBQTNCLEVBQStCc0QsS0FBL0I7O0FBRUE3RCxNQUFBQSxjQUFjLENBQUNKLEtBQUQsRUFBUWlFLEtBQVIsQ0FBZDtBQUNELEtBTEQ7QUFPQSxTQUFLakQsTUFBTCxDQUFZWSxNQUFaLENBQW1CQyxXQUFuQixDQUErQndDLG1DQUEvQixFQUE2QyxDQUFDckUsS0FBRCxFQUFReUMsR0FBUixLQUFnQjtBQUMzRGpDLE1BQUFBLGFBQWEsQ0FBQ1IsS0FBRCxFQUFReUMsR0FBUixDQUFiO0FBQ0QsS0FGRCxFQXBDc0IsQ0F3Q3RCO0FBQ0E7QUFDQTs7QUFDQSxTQUFLekIsTUFBTCxDQUFZWSxNQUFaLENBQW1CQyxXQUFuQixDQUErQnlDLHVDQUEvQixFQUFpRCxDQUFDdEUsS0FBRCxFQUFRLEdBQUd1RSxJQUFYLEtBQW9CO0FBQ25FLFVBQUlBLElBQUosRUFBVTtBQUFFO0FBQ1ZBLFFBQUFBLElBQUksQ0FBQ2pDLE9BQUwsQ0FBYSxDQUFDLENBQUMxQixVQUFELEVBQWE0RCxNQUFiLENBQUQsS0FBMEI7QUFDckMsZUFBS1QsaUJBQUwsQ0FBdUJ6QixPQUF2QixDQUErQkMsUUFBUSxJQUFJQSxRQUFRLENBQUMzQixVQUFELEVBQWE0RCxNQUFiLENBQW5EO0FBQ0QsU0FGRDtBQUdEOztBQUVEcEUsTUFBQUEsY0FBYyxDQUFDSixLQUFELEVBQVF1RSxJQUFSLENBQWQ7QUFDRCxLQVJEO0FBVUEsU0FBS3ZELE1BQUwsQ0FBWVksTUFBWixDQUFtQkMsV0FBbkIsQ0FBK0I0QywyQ0FBL0IsRUFBcUQsQ0FBQyxHQUFHRixJQUFKLEtBQWE7QUFDaEVBLE1BQUFBLElBQUksQ0FBQ2pDLE9BQUwsQ0FBYSxDQUFDLENBQUMxQixVQUFELEVBQWE0RCxNQUFiLENBQUQsS0FBMEI7QUFDckMsYUFBS1QsaUJBQUwsQ0FBdUJ6QixPQUF2QixDQUErQkMsUUFBUSxJQUFJQSxRQUFRLENBQUMzQixVQUFELEVBQWE0RCxNQUFiLENBQW5EO0FBQ0QsT0FGRDtBQUdELEtBSkQ7QUFLRDs7QUFFRCxRQUFNRSxNQUFOLENBQWE5RCxVQUFiLEVBQXlCK0QsTUFBTSxHQUFHLElBQWxDLEVBQXdDO0FBQ3RDLFdBQU8sSUFBSXhCLE9BQUosQ0FBWSxDQUFDckQsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3RDLFlBQU1DLEtBQUssR0FBR0gsbUJBQW1CLENBQUNDLE9BQUQsRUFBVUMsTUFBVixDQUFqQyxDQURzQyxDQUNjOztBQUNwRCxXQUFLaUIsTUFBTCxDQUFZWSxNQUFaLENBQW1Cd0IsSUFBbkIsQ0FBd0J3QixxQ0FBeEIsRUFBd0M1RSxLQUF4QyxFQUErQ1ksVUFBL0MsRUFBMkQrRCxNQUEzRDtBQUNELEtBSE0sQ0FBUDtBQUlEOztBQUVELFFBQU1FLE1BQU4sQ0FBYWpFLFVBQWIsRUFBeUJrRSxNQUFNLEdBQUdDLGdDQUFsQyxFQUE2QztBQUMzQyxXQUFPLElBQUk1QixPQUFKLENBQVksQ0FBQ3JELE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUN0QyxZQUFNQyxLQUFLLEdBQUdILG1CQUFtQixDQUFDQyxPQUFELEVBQVVDLE1BQVYsQ0FBakMsQ0FEc0MsQ0FDYzs7QUFDcEQsV0FBS2lCLE1BQUwsQ0FBWVksTUFBWixDQUFtQndCLElBQW5CLENBQXdCNEIscUNBQXhCLEVBQXdDaEYsS0FBeEMsRUFBK0NZLFVBQS9DLEVBQTJEa0UsTUFBM0Q7QUFDRCxLQUhNLENBQVA7QUFJRDs7QUFFREcsRUFBQUEsT0FBTyxDQUFDMUMsUUFBRCxFQUFXO0FBQ2hCLFNBQUt3QixpQkFBTCxDQUF1QlAsR0FBdkIsQ0FBMkJqQixRQUEzQixFQURnQixDQUVoQjs7O0FBQ0EsUUFBSVksT0FBSixDQUFZLENBQUNyRCxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDL0IsWUFBTUMsS0FBSyxHQUFHSCxtQkFBbUIsQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLENBQWpDO0FBQ0EsV0FBS2lCLE1BQUwsQ0FBWVksTUFBWixDQUFtQndCLElBQW5CLENBQXdCOEIsc0NBQXhCLEVBQXlDbEYsS0FBekM7QUFDRCxLQUhEO0FBSUQ7O0FBbEZnQjs7ZUFxRko4RCxZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhcmFtZXRlcnMgZnJvbSAnQGlyY2FtL3BhcmFtZXRlcnMnO1xuaW1wb3J0IGNsb25lZGVlcCBmcm9tICdsb2Rhc2guY2xvbmVkZWVwJztcblxuaW1wb3J0IHtcbiAgU0VSVkVSX0lELFxuICBDUkVBVEVfUkVRVUVTVCxcbiAgQ1JFQVRFX1JFU1BPTlNFLFxuICBDUkVBVEVfRVJST1IsXG4gIERFTEVURV9SRVFVRVNULFxuICBERUxFVEVfUkVTUE9OU0UsXG4gIERFTEVURV9FUlJPUixcbiAgREVMRVRFX05PVElGSUNBVElPTixcbiAgQVRUQUNIX1JFUVVFU1QsXG4gIEFUVEFDSF9SRVNQT05TRSxcbiAgQVRUQUNIX0VSUk9SLFxuICBERVRBQ0hfUkVRVUVTVCxcbiAgREVUQUNIX1JFU1BPTlNFLFxuICBERVRBQ0hfRVJST1IsXG4gIE9CU0VSVkVfUkVRVUVTVCxcbiAgT0JTRVJWRV9SRVNQT05TRSxcbiAgT0JTRVJWRV9OT1RJRklDQVRJT04sXG4gIFVQREFURV9SRVFVRVNULFxuICBVUERBVEVfUkVTUE9OU0UsXG4gIFVQREFURV9OT1RJRklDQVRJT04sXG59IGZyb20gJy4uL2NvbW1vbi9zdGF0ZU1hbmFnZXJDb25zdGFudHMnO1xuXG5cbmZ1bmN0aW9uKiBpZEdlbmVyYXRvcigpIHtcbiAgZm9yIChsZXQgaSA9IDA7IHRydWU7IGkrKykge1xuICAgIHlpZWxkIGk7XG4gIH1cbn1cblxuY29uc3QgZ2VuZXJhdGVSZXF1ZXN0SWQgPSBpZEdlbmVyYXRvcigpO1xuY29uc3QgcmVxdWVzdFByb21pc2VzID0gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiBzdG9yZVJlcXVlc3RQcm9taXNlKHJlc29sdmUsIHJlamVjdCkge1xuICBjb25zdCByZXFJZCA9IGdlbmVyYXRlUmVxdWVzdElkLm5leHQoKS52YWx1ZTtcbiAgcmVxdWVzdFByb21pc2VzLnNldChyZXFJZCwgeyByZXNvbHZlLCByZWplY3QgfSk7XG5cbiAgcmV0dXJuIHJlcUlkO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlUmVxdWVzdChyZXFJZCwgZGF0YSkge1xuICBjb25zdCB7IHJlc29sdmUgfSA9IHJlcXVlc3RQcm9taXNlcy5nZXQocmVxSWQpO1xuICByZXF1ZXN0UHJvbWlzZXMuZGVsZXRlKHJlcUlkKTtcblxuICByZXNvbHZlKGRhdGEpO1xufVxuXG5mdW5jdGlvbiByZWplY3RSZXF1ZXN0KHJlcUlkLCBkYXRhKSB7XG4gIGNvbnN0IHsgcmVzb2x2ZSwgcmVqZWN0IH0gPSByZXF1ZXN0UHJvbWlzZXMuZ2V0KHJlcUlkKTtcbiAgcmVxdWVzdFByb21pc2VzLmRlbGV0ZShyZXFJZCk7XG5cbiAgcmVqZWN0KGRhdGEpO1xufVxuXG4vKiogQHByaXZhdGUgKi9cbmNsYXNzIFN0YXRlIHtcbiAgY29uc3RydWN0b3IoaWQsIHNjaGVtYU5hbWUsIHNjaGVtYSwgY3JlYXRvciwgb3duZXIsIGNsaWVudCwgbWFuYWdlciwgaW5pdFZhbHVlcyA9IHt9KSB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuc2NoZW1hTmFtZSA9IHNjaGVtYU5hbWU7XG5cbiAgICB0aGlzLl9zY2hlbWEgPSBjbG9uZWRlZXAoc2NoZW1hKTtcbiAgICB0aGlzLl9jcmVhdG9yID0gY3JlYXRvcjsgLy8gbWF5IGJlIHRoZSBzZXJ2ZXIgb3IgYW55IGNsaWVudFxuICAgIHRoaXMuX293bmVyID0gb3duZXI7IC8vIHNlcnZlciBieSBkZWZhdWx0XG5cbiAgICB0aGlzLl9jbGllbnQgPSBjbGllbnQ7XG4gICAgdGhpcy5fbWFuYWdlciA9IG1hbmFnZXI7XG5cbiAgICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVycyhzY2hlbWEsIGluaXRWYWx1ZXMpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMgPSBuZXcgU2V0KCk7XG5cbiAgICB0aGlzLl9vbkRldGFjaENhbGxiYWNrcyA9IG5ldyBTZXQoKTtcblxuICAgIC8vIGFkZCBsaXN0ZW5lciBmb3Igc3RhdGUgdXBkYXRlc1xuICAgIGlmIChvd25lciAhPT0gY2xpZW50LmlkKSB7XG4gICAgICBjbGllbnQuc29ja2V0LmFkZExpc3RlbmVyKGAke1VQREFURV9SRVNQT05TRX0tJHtpZH1gLCAocmVxSWQsIHVwZGF0ZXMpID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IHRoaXMuX2NvbW1pdCh1cGRhdGVzKTtcbiAgICAgICAgcmVzb2x2ZVJlcXVlc3QocmVxSWQsIHVwZGF0ZWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGNsaWVudC5zb2NrZXQuYWRkTGlzdGVuZXIoYCR7VVBEQVRFX05PVElGSUNBVElPTn0tJHtpZH1gLCAodXBkYXRlcykgPT4ge1xuICAgICAgICB0aGlzLl9jb21taXQodXBkYXRlcyk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGNyZWF0b3IgPT09IGNsaWVudC5pZCkge1xuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgLy8gREVMRVRFIChjYW4gb25seSBkZWxldGUgaWYgY3JlYXRvcilcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIGNsaWVudC5zb2NrZXQuYWRkTGlzdGVuZXIoYCR7REVMRVRFX1JFU1BPTlNFfS0ke2lkfWAsIChyZXFJZCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21hbmFnZXIuX3N0YXRlc0J5SWQuZGVsZXRlKHRoaXMuaWQpO1xuICAgICAgICAgIHRoaXMuX2NsZWFyVHJhbnNwb3J0KCk7XG5cbiAgICAgICAgICB0aGlzLl9vbkRldGFjaENhbGxiYWNrcy5mb3JFYWNoKGNhbGxiYWNrID0+IGNhbGxiYWNrKCkpO1xuICAgICAgICAgIHJlc29sdmVSZXF1ZXN0KHJlcUlkLCB0aGlzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2xpZW50LnNvY2tldC5hZGRMaXN0ZW5lcihgJHtERUxFVEVfRVJST1J9LSR7aWR9YCwgKHJlcUlkLCBtc2cpID0+IHtcbiAgICAgICAgICByZWplY3RSZXF1ZXN0KHJlcUlkLCBtc2cpO1xuICAgICAgICB9KTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgLy8gREVMRVRFIGluaXRpYXRlZCBieSBjcmVhdG9yXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICBjbGllbnQuc29ja2V0LmFkZExpc3RlbmVyKGAke0RFTEVURV9OT1RJRklDQVRJT059LSR7aWR9YCwgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21hbmFnZXIuX3N0YXRlc0J5SWQuZGVsZXRlKHRoaXMuaWQpO1xuICAgICAgICAgIHRoaXMuX2NsZWFyVHJhbnNwb3J0KCk7XG5cbiAgICAgICAgICB0aGlzLl9vbkRldGFjaENhbGxiYWNrcy5mb3JFYWNoKGNhbGxiYWNrID0+IGNhbGxiYWNrKCkpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgLy8gREVUQUNIXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICBjbGllbnQuc29ja2V0LmFkZExpc3RlbmVyKGAke0RFVEFDSF9SRVNQT05TRX0tJHtpZH1gLCAocmVxSWQpID0+IHtcbiAgICAgICAgICB0aGlzLl9tYW5hZ2VyLl9zdGF0ZXNCeUlkLmRlbGV0ZSh0aGlzLmlkKTtcbiAgICAgICAgICB0aGlzLl9jbGVhclRyYW5zcG9ydCgpO1xuXG4gICAgICAgICAgdGhpcy5fb25EZXRhY2hDYWxsYmFja3MuZm9yRWFjaChmdW5jID0+IGZ1bmMoKSk7XG4gICAgICAgICAgcmVzb2x2ZVJlcXVlc3QocmVxSWQsIHRoaXMpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyB0aGUgc3RhdGUgZG9lcyBub3QgZXhpc3RzIGFueW1vcmUgaW4gdGhlIHNlcnZlclxuICAgICAgICBjbGllbnQuc29ja2V0LmFkZExpc3RlbmVyKGAke0RFVEFDSF9FUlJPUn0tJHtpZH1gLCAocmVxSWQsIG1zZykgPT4ge1xuICAgICAgICAgIHJlamVjdFJlcXVlc3QocmVxSWQsIG1zZyk7XG4gICAgICAgIH0pO1xuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2NsZWFyVHJhbnNwb3J0KCkge1xuICAgIC8vIHJlbW92ZSBsaXN0ZW5lcnNcbiAgICB0aGlzLl9jbGllbnQuc29ja2V0LnJlbW92ZUFsbExpc3RlbmVycyhgJHtVUERBVEVfUkVTUE9OU0V9LSR7dGhpcy5pZH1gKTtcbiAgICB0aGlzLl9jbGllbnQuc29ja2V0LnJlbW92ZUFsbExpc3RlbmVycyhgJHtVUERBVEVfTk9USUZJQ0FUSU9OfS0ke3RoaXMuaWR9YCk7XG4gICAgdGhpcy5fY2xpZW50LnNvY2tldC5yZW1vdmVBbGxMaXN0ZW5lcnMoYCR7REVMRVRFX1JFU1BPTlNFfS0ke3RoaXMuaWR9YCk7XG4gICAgdGhpcy5fY2xpZW50LnNvY2tldC5yZW1vdmVBbGxMaXN0ZW5lcnMoYCR7REVMRVRFX05PVElGSUNBVElPTn0tJHt0aGlzLmlkfWApO1xuICAgIHRoaXMuX2NsaWVudC5zb2NrZXQucmVtb3ZlQWxsTGlzdGVuZXJzKGAke0RFVEFDSF9SRVNQT05TRX0tJHt0aGlzLmlkfWApO1xuICB9XG5cbiAgLyoqIEBwcml2YXRlICovXG4gIF9jb21taXQob2JqKSB7XG4gICAgY29uc3QgdXBkYXRlZCA9IHt9O1xuXG4gICAgZm9yIChsZXQgbmFtZSBpbiBvYmopIHtcbiAgICAgIHVwZGF0ZWRbbmFtZV0gPSB0aGlzLl9wYXJhbWV0ZXJzLnNldChuYW1lLCBvYmpbbmFtZV0pO1xuICAgIH1cblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuZm9yRWFjaChsaXN0ZW5lciA9PiBsaXN0ZW5lcih1cGRhdGVkKSk7XG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gIH1cblxuICBnZXRTY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NjaGVtYTtcbiAgfVxuXG4gIHNldCh1cGRhdGVzKSB7XG4gICAgaWYgKHRoaXMuX293bmVyICE9PSB0aGlzLl9jbGllbnQuaWQpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcUlkID0gc3RvcmVSZXF1ZXN0UHJvbWlzZShyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB0aGlzLl9jbGllbnQuc29ja2V0LnNlbmQoYCR7VVBEQVRFX1JFUVVFU1R9LSR7dGhpcy5pZH1gLCByZXFJZCwgdXBkYXRlcyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbG9jYWwgc3RhdGVcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSB0aGlzLl9jb21taXQodXBkYXRlcyk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVwZGF0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIGdldChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtZXRlcnMuZ2V0KG5hbWUpO1xuICB9XG5cbiAgZ2V0VmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbWV0ZXJzLmdldFZhbHVlcygpO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQobGlzdGVuZXIpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuZGVsZXRlKGxpc3RlbmVyKTtcbiAgICB9O1xuICB9XG5cbiAgZGV0YWNoKCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuY2xlYXIoKTtcblxuICAgIGlmICh0aGlzLl9jbGllbnQuaWQgIT09IHRoaXMuX2NyZWF0b3IpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcUlkID0gc3RvcmVSZXF1ZXN0UHJvbWlzZShyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB0aGlzLl9jbGllbnQuc29ja2V0LnNlbmQoYCR7REVUQUNIX1JFUVVFU1R9LSR7dGhpcy5pZH1gLCByZXFJZCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgcmVxSWQgPSBzdG9yZVJlcXVlc3RQcm9taXNlKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIHRoaXMuX2NsaWVudC5zb2NrZXQuc2VuZChgJHtERUxFVEVfUkVRVUVTVH0tJHt0aGlzLmlkfWAsIHJlcUlkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uRGV0YWNoKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5fb25EZXRhY2hDYWxsYmFja3MuYWRkKGNhbGxiYWNrKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbXBvbmVudCBkZWRpY2F0ZWQgYXQgbWFuYWdpbmcgZGlzdHJpYnV0ZWQgc3RhdGVzIGFtb25nIGEgbG90IG9mIGNsaWVudHNcbiAqIGZvY3VzaW5nIG9uIGFwcGxpY2F0aW9uIGxvZ2ljIHJhdGhlciB0aGFuIG5ldHdvcmsgY29tbXVuaWNhdGlvbi5cbiAqXG4gKiBAbWVtYmVyb2YgQHNvdW5kd29ya3MvY29yZS9jbGllbnRcbiAqL1xuY2xhc3MgU3RhdGVNYW5hZ2VyIHtcbiAgY29uc3RydWN0b3IoaWQsIHNvY2tldCkge1xuICAgIHRoaXMuY2xpZW50ID0geyBpZCwgc29ja2V0IH07XG5cbiAgICB0aGlzLl9zdGF0ZXNCeUlkID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX29ic2VydmVMaXN0ZW5lcnMgPSBuZXcgU2V0KCk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBDUkVBVEVcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICB0aGlzLmNsaWVudC5zb2NrZXQuYWRkTGlzdGVuZXIoQ1JFQVRFX1JFU1BPTlNFLCAocmVxSWQsIGlkLCBzY2hlbWFOYW1lLCBzY2hlbWEsIGNyZWF0b3IsIG93bmVyKSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZSA9IG5ldyBTdGF0ZShpZCwgc2NoZW1hTmFtZSwgc2NoZW1hLCBjcmVhdG9yLCBvd25lciwgdGhpcy5jbGllbnQsIHRoaXMpO1xuICAgICAgdGhpcy5fc3RhdGVzQnlJZC5zZXQoc3RhdGUuaWQsIHN0YXRlKTtcblxuICAgICAgcmVzb2x2ZVJlcXVlc3QocmVxSWQsIHN0YXRlKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2xpZW50LnNvY2tldC5hZGRMaXN0ZW5lcihDUkVBVEVfRVJST1IsIChtc2csIHJlcUlkKSA9PiB7XG4gICAgICByZWplY3RSZXF1ZXN0KHJlcUlkLCBtc2cpO1xuICAgIH0pO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQVRUQUNIICh3aGVuIGNyZWF0b3IsIGlzIGF0dGFjaGVkIGJ5IGRlZmF1bHQpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQG5vdGUgLSB3ZSBoYXZlIHJvb20gdG8gaW1wcm92ZSBuZXR3b3JrIGZvb3RwcmludCBieSBsZXR0aW5nIGtub3cgdGhlXG4gICAgLy8gc2VydmVyIHRoYXQgdGhlIGNsaWVudCBhbHJlYWR5IGtub3cgdGhlIHNjaGVtYSwgYW5kIHRoYXQgdGhlIHNlcnZlclxuICAgIC8vIGRvZXNuJ3QgbmVlZCB0byBzZW5kIGl0IGFnYWluIChzZW5kcyBudWxsIGluc3RlYWQpLlxuICAgIC8vIGluIHRoaXMgY2FzZSwgaWYgd2UgbWFuYWdlIHRvIG1ha2UgdGhhdCBkeW5hbWljIGF0IHNvbWUgcG9pbnQgKGR5bmFtaWNcbiAgICAvLyBzY2hlbWEpIHRoZSBzZXJ2ZXIgc2hvdWxkIGJlIGFibGUgdG8gaW52YWxpZGF0ZSB0aGUgc2NoZW1hIGFuZCBzZW5kXG4gICAgLy8gaXQgYWdhaW4gZGVzcGl0ZSB0aGF0LlxuICAgIHRoaXMuY2xpZW50LnNvY2tldC5hZGRMaXN0ZW5lcihBVFRBQ0hfUkVTUE9OU0UsIChyZXFJZCwgaWQsIHNjaGVtYU5hbWUsIHNjaGVtYSwgY3JlYXRvciwgb3duZXIsIGN1cnJlbnRWYWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlID0gbmV3IFN0YXRlKGlkLCBzY2hlbWFOYW1lLCBzY2hlbWEsIGNyZWF0b3IsIG93bmVyLCB0aGlzLmNsaWVudCwgdGhpcywgY3VycmVudFZhbHVlcyk7XG4gICAgICB0aGlzLl9zdGF0ZXNCeUlkLnNldChzdGF0ZS5pZCwgc3RhdGUpO1xuXG4gICAgICByZXNvbHZlUmVxdWVzdChyZXFJZCwgc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jbGllbnQuc29ja2V0LmFkZExpc3RlbmVyKEFUVEFDSF9FUlJPUiwgKHJlcUlkLCBtc2cpID0+IHtcbiAgICAgIHJlamVjdFJlcXVlc3QocmVxSWQsIG1zZyk7XG4gICAgfSk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBPQlNFUlZFIFBFRVJTIChiZSBub3RpZmllZCB3aGVuIGEgc3RhdGUgaXMgY3JlYXRlZCwgbGF6eSlcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICB0aGlzLmNsaWVudC5zb2NrZXQuYWRkTGlzdGVuZXIoT0JTRVJWRV9SRVNQT05TRSwgKHJlcUlkLCAuLi5saXN0KSA9PiB7XG4gICAgICBpZiAobGlzdCkgeyAvLyBpZiBvbmx5IGNsaWVudCB0aGVyZSwgbGlzdCBjb3VsZCBiZSBlbXB0eVxuICAgICAgICBsaXN0LmZvckVhY2goKFtzY2hlbWFOYW1lLCBub2RlSWRdKSA9PiB7XG4gICAgICAgICAgdGhpcy5fb2JzZXJ2ZUxpc3RlbmVycy5mb3JFYWNoKGNhbGxiYWNrID0+IGNhbGxiYWNrKHNjaGVtYU5hbWUsIG5vZGVJZCkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZVJlcXVlc3QocmVxSWQsIGxpc3QpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jbGllbnQuc29ja2V0LmFkZExpc3RlbmVyKE9CU0VSVkVfTk9USUZJQ0FUSU9OLCAoLi4ubGlzdCkgPT4ge1xuICAgICAgbGlzdC5mb3JFYWNoKChbc2NoZW1hTmFtZSwgbm9kZUlkXSkgPT4ge1xuICAgICAgICB0aGlzLl9vYnNlcnZlTGlzdGVuZXJzLmZvckVhY2goY2FsbGJhY2sgPT4gY2FsbGJhY2soc2NoZW1hTmFtZSwgbm9kZUlkKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZShzY2hlbWFOYW1lLCBzeW5jZWQgPSB0cnVlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlcUlkID0gc3RvcmVSZXF1ZXN0UHJvbWlzZShyZXNvbHZlLCByZWplY3QpOyAvLyBAdG9kbyAtIGFkZCBhIHRpbWVvdXRcbiAgICAgIHRoaXMuY2xpZW50LnNvY2tldC5zZW5kKENSRUFURV9SRVFVRVNULCByZXFJZCwgc2NoZW1hTmFtZSwgc3luY2VkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGF0dGFjaChzY2hlbWFOYW1lLCBwZWVySWQgPSBTRVJWRVJfSUQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVxSWQgPSBzdG9yZVJlcXVlc3RQcm9taXNlKHJlc29sdmUsIHJlamVjdCk7IC8vIEB0b2RvIC0gYWRkIGEgdGltZW91dFxuICAgICAgdGhpcy5jbGllbnQuc29ja2V0LnNlbmQoQVRUQUNIX1JFUVVFU1QsIHJlcUlkLCBzY2hlbWFOYW1lLCBwZWVySWQpO1xuICAgIH0pO1xuICB9XG5cbiAgb2JzZXJ2ZShjYWxsYmFjaykge1xuICAgIHRoaXMuX29ic2VydmVMaXN0ZW5lcnMuYWRkKGNhbGxiYWNrKTtcbiAgICAvLyBzdG9yZSBmdW5jdGlvblxuICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlcUlkID0gc3RvcmVSZXF1ZXN0UHJvbWlzZShyZXNvbHZlLCByZWplY3QpO1xuICAgICAgdGhpcy5jbGllbnQuc29ja2V0LnNlbmQoT0JTRVJWRV9SRVFVRVNULCByZXFJZCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3RhdGVNYW5hZ2VyO1xuIl19
exports.default = _default;

@@ -43,3 +43,2 @@ "use strict";

var _default = Signal;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24vU2lnbmFsLmpzIl0sIm5hbWVzIjpbIlNpZ25hbCIsImNvbnN0cnVjdG9yIiwiX3N0YXRlIiwiX29ic2VydmVycyIsIlNldCIsInZhbHVlIiwib2JzZXJ2ZXIiLCJhZGRPYnNlcnZlciIsImFkZCIsInJlbW92ZU9ic2VydmVyIiwiZGVsZXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFJQSxNQUFNQSxNQUFOLENBQWE7QUFDWEMsRUFBQUEsV0FBVyxHQUFHO0FBQ1osU0FBS0MsTUFBTCxHQUFjLEtBQWQ7QUFDQSxTQUFLQyxVQUFMLEdBQWtCLElBQUlDLEdBQUosRUFBbEI7QUFDRDs7QUFFRCxNQUFJQyxLQUFKLENBQVVBLEtBQVYsRUFBaUI7QUFDZixRQUFJQSxLQUFLLEtBQUssS0FBS0gsTUFBbkIsRUFBMkI7QUFDekIsV0FBS0EsTUFBTCxHQUFjRyxLQUFkOztBQUVBLFdBQUssSUFBSUMsUUFBVCxJQUFxQixLQUFLSCxVQUExQixFQUFzQztBQUNwQ0csUUFBQUEsUUFBUSxDQUFDRCxLQUFELENBQVI7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsTUFBSUEsS0FBSixHQUFZO0FBQ1YsV0FBTyxLQUFLSCxNQUFaO0FBQ0Q7O0FBRURLLEVBQUFBLFdBQVcsQ0FBQ0QsUUFBRCxFQUFXO0FBQ3BCLFNBQUtILFVBQUwsQ0FBZ0JLLEdBQWhCLENBQW9CRixRQUFwQjtBQUNEOztBQUVERyxFQUFBQSxjQUFjLENBQUNILFFBQUQsRUFBVztBQUN2QixTQUFLSCxVQUFMLENBQWdCTyxNQUFoQixDQUF1QkosUUFBdkI7QUFDRDs7QUExQlU7O2VBNkJFTixNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICpcbiAqL1xuY2xhc3MgU2lnbmFsIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fc3RhdGUgPSBmYWxzZTtcbiAgICB0aGlzLl9vYnNlcnZlcnMgPSBuZXcgU2V0KCk7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX3N0YXRlKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9IHZhbHVlO1xuXG4gICAgICBmb3IgKGxldCBvYnNlcnZlciBvZiB0aGlzLl9vYnNlcnZlcnMpIHtcbiAgICAgICAgb2JzZXJ2ZXIodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gIH1cblxuICBhZGRPYnNlcnZlcihvYnNlcnZlcikge1xuICAgIHRoaXMuX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpO1xuICB9XG5cbiAgcmVtb3ZlT2JzZXJ2ZXIob2JzZXJ2ZXIpIHtcbiAgICB0aGlzLl9vYnNlcnZlcnMuZGVsZXRlKG9ic2VydmVyKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaWduYWw7XG4iXX0=
exports.default = _default;

@@ -44,3 +44,2 @@ "use strict";

var _default = SignalAll;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24vU2lnbmFsQWxsLmpzIl0sIm5hbWVzIjpbIlNpZ25hbEFsbCIsIlNpZ25hbCIsImNvbnN0cnVjdG9yIiwiX3NvdXJjZXMiLCJTZXQiLCJsZW5ndGgiLCJzaXplIiwiYWRkIiwic2lnbmFsIiwiYWRkT2JzZXJ2ZXIiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7O0FBS0EsTUFBTUEsU0FBTixTQUF3QkMsZUFBeEIsQ0FBK0I7QUFDN0JDLEVBQUFBLFdBQVcsR0FBRztBQUNaO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixJQUFJQyxHQUFKLEVBQWhCO0FBQ0Q7O0FBRUQsTUFBSUMsTUFBSixHQUFhO0FBQ1gsV0FBTyxLQUFLRixRQUFMLENBQWNHLElBQXJCO0FBQ0Q7O0FBRURDLEVBQUFBLEdBQUcsQ0FBQ0MsTUFBRCxFQUFTO0FBQ1YsU0FBS0wsUUFBTCxDQUFjSSxHQUFkLENBQWtCQyxNQUFsQjs7QUFFQUEsSUFBQUEsTUFBTSxDQUFDQyxXQUFQLENBQW1CLE1BQU07QUFDdkIsVUFBSUMsS0FBSyxHQUFHLElBQVo7O0FBRUEsV0FBSyxJQUFJRixNQUFULElBQW1CLEtBQUtMLFFBQXhCLEVBQWtDO0FBQ2hDTyxRQUFBQSxLQUFLLEdBQUdBLEtBQUssSUFBSUYsTUFBTSxDQUFDRSxLQUF4QjtBQUNEOztBQUVELFlBQU1BLEtBQU4sR0FBY0EsS0FBZDtBQUNELEtBUkQ7QUFTRDs7QUF0QjRCOztlQXlCaEJWLFMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2lnbmFsIGZyb20gJy4vU2lnbmFsJztcblxuLyoqXG4gKiBDb21wb3VuZCBzaWduYWwgdGhhdCBpcyBgdHJ1ZWAgd2hlbiBhbGwgc2lnbmFscyBpdCBkZXBlbmRzIG9uIGFyZSBgdHJ1ZWAuXG4gKiBEZXBlbmRlbmNpZXMgYXJlIGFkZGVkIHRocm91Z2ggdGhlIGBhZGRgIG1ldGhvZC5cbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIFNpZ25hbEFsbCBleHRlbmRzIFNpZ25hbCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fc291cmNlcyA9IG5ldyBTZXQoKTtcbiAgfVxuXG4gIGdldCBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZXMuc2l6ZTtcbiAgfVxuXG4gIGFkZChzaWduYWwpIHtcbiAgICB0aGlzLl9zb3VyY2VzLmFkZChzaWduYWwpO1xuXG4gICAgc2lnbmFsLmFkZE9ic2VydmVyKCgpID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IHRydWU7XG5cbiAgICAgIGZvciAobGV0IHNpZ25hbCBvZiB0aGlzLl9zb3VyY2VzKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUgJiYgc2lnbmFsLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICBzdXBlci52YWx1ZSA9IHZhbHVlO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNpZ25hbEFsbDtcbiJdfQ==
exports.default = _default;

@@ -73,3 +73,2 @@ "use strict";

return JSON.parse(data);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24vc29ja2V0cy1lbmNvZGVyLWRlY29kZXIuanMiXSwibmFtZXMiOlsiZW5jb2RlciIsInJvb3QiLCJUZXh0RW5jb2RlciIsImRlY29kZXIiLCJUZXh0RGVjb2RlciIsInR5cGVzIiwicGFja0JpbmFyeU1lc3NhZ2UiLCJjaGFubmVsIiwiZGF0YSIsImNoYW5uZWxCdWZmZXIiLCJlbmNvZGUiLCJjaGFubmVsU2l6ZSIsImJ5dGVMZW5ndGgiLCJzdGFydE9mZnNldCIsIk1hdGgiLCJjZWlsIiwiQllURVNfUEVSX0VMRU1FTlQiLCJidWZmZXJTaXplIiwidHlwZU5hbWUiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0eXBlSW5kZXgiLCJpbmRleE9mIiwiRXJyb3IiLCJ2aWV3IiwiVWludDhBcnJheSIsInNldCIsImJ1ZmZlciIsInVucGFja0JpbmFyeU1lc3NhZ2UiLCJpbmZvcyIsInNsaWNlIiwiZGVjb2RlIiwidHlwZSIsInBhY2tTdHJpbmdNZXNzYWdlIiwiYXJncyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bnBhY2tTdHJpbmdNZXNzYWdlIiwicGFyc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7OztBQUVBLE1BQU1BLE9BQU8sR0FBRyxJQUFJQyx3QkFBS0MsV0FBVCxDQUFxQixPQUFyQixDQUFoQjtBQUNBLE1BQU1DLE9BQU8sR0FBRyxJQUFJRix3QkFBS0csV0FBVCxDQUFxQixPQUFyQixDQUFoQjtBQUVBLE1BQU1DLEtBQUssR0FBRyxDQUNaLFdBRFksRUFFWixZQUZZLEVBR1osbUJBSFksRUFJWixZQUpZLEVBS1osYUFMWSxFQU1aLFlBTlksRUFPWixhQVBZLEVBUVosY0FSWSxFQVNaLGNBVFksRUFVWixlQVZZLEVBV1osZ0JBWFksQ0FBZCxDLENBY0E7O0FBRUE7O0FBQ08sU0FBU0MsaUJBQVQsQ0FBMkJDLE9BQTNCLEVBQW9DQyxJQUFwQyxFQUEwQztBQUMvQyxRQUFNQyxhQUFhLEdBQUdULE9BQU8sQ0FBQ1UsTUFBUixDQUFlSCxPQUFmLENBQXRCO0FBQ0EsUUFBTUksV0FBVyxHQUFHRixhQUFhLENBQUNHLFVBQWxDO0FBQ0EsUUFBTUMsV0FBVyxHQUFHQyxJQUFJLENBQUNDLElBQUwsQ0FBVSxDQUFDSixXQUFXLEdBQUcsQ0FBZixJQUFvQkgsSUFBSSxDQUFDUSxpQkFBbkMsSUFBd0RSLElBQUksQ0FBQ1EsaUJBQWpGO0FBQ0EsUUFBTUMsVUFBVSxHQUFHSixXQUFXLEdBQUdMLElBQUksQ0FBQ0ksVUFBdEM7QUFDQSxRQUFNTSxRQUFRLEdBQUdWLElBQUksQ0FBQ1csV0FBTCxDQUFpQkMsSUFBbEM7QUFDQSxRQUFNQyxTQUFTLEdBQUdoQixLQUFLLENBQUNpQixPQUFOLENBQWNKLFFBQWQsQ0FBbEI7O0FBRUEsTUFBSUcsU0FBUyxLQUFLLENBQUMsQ0FBbkIsRUFBc0I7QUFDcEIsVUFBTSxJQUFJRSxLQUFKLENBQVcsNEJBQTJCTCxRQUFTLEVBQS9DLENBQU47QUFDRDs7QUFFRCxRQUFNTSxJQUFJLEdBQUcsSUFBSUMsVUFBSixDQUFlUixVQUFmLENBQWI7QUFDQU8sRUFBQUEsSUFBSSxDQUFDLENBQUQsQ0FBSixHQUFVYixXQUFWO0FBQ0FhLEVBQUFBLElBQUksQ0FBQyxDQUFELENBQUosR0FBVUgsU0FBVjtBQUNBRyxFQUFBQSxJQUFJLENBQUMsQ0FBRCxDQUFKLEdBQVVYLFdBQVY7QUFFQVcsRUFBQUEsSUFBSSxDQUFDRSxHQUFMLENBQVNqQixhQUFULEVBQXdCLENBQXhCLEVBQTJCRSxXQUEzQjtBQUNBYSxFQUFBQSxJQUFJLENBQUNFLEdBQUwsQ0FBUyxJQUFJRCxVQUFKLENBQWVqQixJQUFJLENBQUNtQixNQUFwQixDQUFULEVBQXNDZCxXQUF0QyxFQUFtREwsSUFBSSxDQUFDSSxVQUF4RDtBQUVBLFNBQU9ZLElBQUksQ0FBQ0csTUFBWjtBQUNEO0FBRUQ7OztBQUNPLFNBQVNDLG1CQUFULENBQTZCRDtBQUFPO0FBQXBDLEVBQXVEO0FBQzVELFFBQU1FLEtBQUssR0FBRyxJQUFJSixVQUFKLENBQWVFLE1BQWYsRUFBdUIsQ0FBdkIsRUFBMEIsQ0FBMUIsQ0FBZDtBQUNBLFFBQU1oQixXQUFXLEdBQUdrQixLQUFLLENBQUMsQ0FBRCxDQUF6QjtBQUNBLFFBQU1SLFNBQVMsR0FBR1EsS0FBSyxDQUFDLENBQUQsQ0FBdkI7QUFDQSxRQUFNaEIsV0FBVyxHQUFHZ0IsS0FBSyxDQUFDLENBQUQsQ0FBekIsQ0FKNEQsQ0FNNUQ7QUFDQTs7QUFDQSxRQUFNcEIsYUFBYSxHQUFHLElBQUlnQixVQUFKLENBQWVFLE1BQU0sQ0FBQ0csS0FBUCxDQUFhLENBQWIsRUFBZ0IsSUFBSW5CLFdBQXBCLENBQWYsQ0FBdEI7QUFDQSxRQUFNSixPQUFPLEdBQUdKLE9BQU8sQ0FBQzRCLE1BQVIsQ0FBZXRCLGFBQWYsQ0FBaEI7QUFDQSxRQUFNdUIsSUFBSSxHQUFHM0IsS0FBSyxDQUFDZ0IsU0FBRCxDQUFsQixDQVY0RCxDQVc1RDs7QUFDQSxRQUFNYixJQUFJLEdBQUcsSUFBSVAsd0JBQUsrQixJQUFMLENBQUosQ0FBZUwsTUFBTSxDQUFDRyxLQUFQLENBQWFqQixXQUFiLENBQWYsQ0FBYjtBQUVBLFNBQU8sQ0FBQ04sT0FBRCxFQUFVQyxJQUFWLENBQVA7QUFDRDtBQUVEOzs7QUFDTyxTQUFTeUIsaUJBQVQsQ0FBMkIxQixPQUEzQixFQUFvQyxHQUFHMkIsSUFBdkMsRUFBNkM7QUFDbEQsU0FBT0MsSUFBSSxDQUFDQyxTQUFMLENBQWUsQ0FBQzdCLE9BQUQsRUFBVTJCLElBQVYsQ0FBZixDQUFQO0FBQ0Q7QUFFRDs7O0FBQ08sU0FBU0csbUJBQVQsQ0FBNkI3QixJQUE3QixFQUFtQztBQUN4QyxTQUFPMkIsSUFBSSxDQUFDRyxLQUFMLENBQVc5QixJQUFYLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnZmFzdC10ZXh0LWVuY29kaW5nJztcbmltcG9ydCByb290IGZyb20gJ3dpbmRvdy1vci1nbG9iYWwnO1xuXG5jb25zdCBlbmNvZGVyID0gbmV3IHJvb3QuVGV4dEVuY29kZXIoJ3V0Zi04Jyk7XG5jb25zdCBkZWNvZGVyID0gbmV3IHJvb3QuVGV4dERlY29kZXIoJ3V0Zi04Jyk7XG5cbmNvbnN0IHR5cGVzID0gW1xuICAnSW50OEFycmF5JyxcbiAgJ1VpbnQ4QXJyYXknLFxuICAnVWludDhDbGFtcGVkQXJyYXknLFxuICAnSW50MTZBcnJheScsXG4gICdVaW50MTZBcnJheScsXG4gICdJbnQzMkFycmF5JyxcbiAgJ1VpbnQzMkFycmF5JyxcbiAgJ0Zsb2F0MzJBcnJheScsXG4gICdGbG9hdDY0QXJyYXknLFxuICAnQmlnSW50NjRBcnJheScsXG4gICdCaWdVaW50NjRBcnJheScsXG5dO1xuXG4vLyBAdG9kbyAtIHByb2JhYmx5IHNvbWUgcm9vbSBmb3Igb3B0aW1pemF0aW9uc1xuXG4vKiogcHJpdmF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhY2tCaW5hcnlNZXNzYWdlKGNoYW5uZWwsIGRhdGEpIHtcbiAgY29uc3QgY2hhbm5lbEJ1ZmZlciA9IGVuY29kZXIuZW5jb2RlKGNoYW5uZWwpO1xuICBjb25zdCBjaGFubmVsU2l6ZSA9IGNoYW5uZWxCdWZmZXIuYnl0ZUxlbmd0aDtcbiAgY29uc3Qgc3RhcnRPZmZzZXQgPSBNYXRoLmNlaWwoKGNoYW5uZWxTaXplICsgMykgLyBkYXRhLkJZVEVTX1BFUl9FTEVNRU5UKSAqIGRhdGEuQllURVNfUEVSX0VMRU1FTlQ7XG4gIGNvbnN0IGJ1ZmZlclNpemUgPSBzdGFydE9mZnNldCArIGRhdGEuYnl0ZUxlbmd0aDtcbiAgY29uc3QgdHlwZU5hbWUgPSBkYXRhLmNvbnN0cnVjdG9yLm5hbWU7XG4gIGNvbnN0IHR5cGVJbmRleCA9IHR5cGVzLmluZGV4T2YodHlwZU5hbWUpO1xuXG4gIGlmICh0eXBlSW5kZXggPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFR5cGVkQXJyYXkgdHlwZTogJHt0eXBlTmFtZX1gKTtcbiAgfVxuXG4gIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXJTaXplKTtcbiAgdmlld1swXSA9IGNoYW5uZWxTaXplO1xuICB2aWV3WzFdID0gdHlwZUluZGV4O1xuICB2aWV3WzJdID0gc3RhcnRPZmZzZXQ7XG5cbiAgdmlldy5zZXQoY2hhbm5lbEJ1ZmZlciwgMywgY2hhbm5lbFNpemUpO1xuICB2aWV3LnNldChuZXcgVWludDhBcnJheShkYXRhLmJ1ZmZlciksIHN0YXJ0T2Zmc2V0LCBkYXRhLmJ5dGVMZW5ndGgpO1xuXG4gIHJldHVybiB2aWV3LmJ1ZmZlcjtcbn1cblxuLyoqIHByaXZhdGUgKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnBhY2tCaW5hcnlNZXNzYWdlKGJ1ZmZlciAvKiBhcnJheWJ1ZmZlciAqLykge1xuICBjb25zdCBpbmZvcyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgMCwgMyk7XG4gIGNvbnN0IGNoYW5uZWxTaXplID0gaW5mb3NbMF07XG4gIGNvbnN0IHR5cGVJbmRleCA9IGluZm9zWzFdO1xuICBjb25zdCBzdGFydE9mZnNldCA9IGluZm9zWzJdO1xuXG4gIC8vIG5lZWQgdG8gc2xpY2UgYXMgdGhlIGxpYnJhcnkgcmVjcmVhdGVzIGEgVUludDhBcnJheSBmcm9tIHRoZSB3aG9sZSBidWZmZXJcbiAgLy8gQHRvZG8gLSBzZWUgaWYgdGhpcyBjb3B5IGNvdWxkIGJlIGF2b2lkZWQgKHByb2JhYmx5IG5lZWRzIGEgcHVsbCByZXF1ZXN0KVxuICBjb25zdCBjaGFubmVsQnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLnNsaWNlKDMsIDMgKyBjaGFubmVsU2l6ZSkpO1xuICBjb25zdCBjaGFubmVsID0gZGVjb2Rlci5kZWNvZGUoY2hhbm5lbEJ1ZmZlcik7XG4gIGNvbnN0IHR5cGUgPSB0eXBlc1t0eXBlSW5kZXhdO1xuICAvLyBzbGljZSAoY29weSkgdGhlIHVuZGVybHlpbmcgQXJyYXlCdWZmZXIgdG8gY3JlYXRlIGEgY2xlYW4gVHlwZWRBcnJheVxuICBjb25zdCBkYXRhID0gbmV3IHJvb3RbdHlwZV0oYnVmZmVyLnNsaWNlKHN0YXJ0T2Zmc2V0KSk7XG5cbiAgcmV0dXJuIFtjaGFubmVsLCBkYXRhXTtcbn1cblxuLyoqIHByaXZhdGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBwYWNrU3RyaW5nTWVzc2FnZShjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShbY2hhbm5lbCwgYXJnc10pO1xufVxuXG4vKiogcHJpdmF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVucGFja1N0cmluZ01lc3NhZ2UoZGF0YSkge1xuICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbn1cbiJdfQ==
}

@@ -48,3 +48,2 @@ "use strict";

const UPDATE_NOTIFICATION = 's:u:not';
exports.UPDATE_NOTIFICATION = UPDATE_NOTIFICATION;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24vc3RhdGVNYW5hZ2VyQ29uc3RhbnRzLmpzIl0sIm5hbWVzIjpbIlNFUlZFUl9JRCIsIkNSRUFURV9SRVFVRVNUIiwiQ1JFQVRFX1JFU1BPTlNFIiwiQ1JFQVRFX0VSUk9SIiwiREVMRVRFX1JFUVVFU1QiLCJERUxFVEVfUkVTUE9OU0UiLCJERUxFVEVfRVJST1IiLCJERUxFVEVfTk9USUZJQ0FUSU9OIiwiQVRUQUNIX1JFUVVFU1QiLCJBVFRBQ0hfUkVTUE9OU0UiLCJBVFRBQ0hfRVJST1IiLCJERVRBQ0hfUkVRVUVTVCIsIkRFVEFDSF9SRVNQT05TRSIsIkRFVEFDSF9FUlJPUiIsIk9CU0VSVkVfUkVRVUVTVCIsIk9CU0VSVkVfUkVTUE9OU0UiLCJPQlNFUlZFX05PVElGSUNBVElPTiIsIlVQREFURV9SRVFVRVNUIiwiVVBEQVRFX1JFU1BPTlNFIiwiVVBEQVRFX05PVElGSUNBVElPTiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDTyxNQUFNQSxTQUFTLEdBQUcsQ0FBQyxDQUFuQjs7QUFFQSxNQUFNQyxjQUFjLEdBQUcsU0FBdkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHLFNBQXhCOztBQUNBLE1BQU1DLFlBQVksR0FBRyxTQUFyQjs7QUFFQSxNQUFNQyxjQUFjLEdBQUcsVUFBdkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHLFVBQXhCOztBQUNBLE1BQU1DLFlBQVksR0FBRyxVQUFyQjs7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxVQUE1Qjs7QUFFQSxNQUFNQyxjQUFjLEdBQUcsU0FBdkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHLFNBQXhCOztBQUNBLE1BQU1DLFlBQVksR0FBRyxTQUFyQjs7QUFFQSxNQUFNQyxjQUFjLEdBQUcsVUFBdkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHLFVBQXhCOztBQUNBLE1BQU1DLFlBQVksR0FBRyxVQUFyQixDLENBQWlDOzs7QUFFakMsTUFBTUMsZUFBZSxHQUFHLFNBQXhCOztBQUNBLE1BQU1DLGdCQUFnQixHQUFHLFNBQXpCOztBQUNBLE1BQU1DLG9CQUFvQixHQUFHLFNBQTdCOztBQUVBLE1BQU1DLGNBQWMsR0FBRyxTQUF2Qjs7QUFDQSxNQUFNQyxlQUFlLEdBQUcsU0FBeEI7O0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsU0FBNUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpZCBvZiB0aGUgc2VydmVyIHdoZW4gb3duZXIgb2YgYSBzdGF0ZVxuZXhwb3J0IGNvbnN0IFNFUlZFUl9JRCA9IC0xO1xuXG5leHBvcnQgY29uc3QgQ1JFQVRFX1JFUVVFU1QgPSAnczpjOnJlcSc7XG5leHBvcnQgY29uc3QgQ1JFQVRFX1JFU1BPTlNFID0gJ3M6YzpyZXMnO1xuZXhwb3J0IGNvbnN0IENSRUFURV9FUlJPUiA9ICdzOmM6ZXJyJztcblxuZXhwb3J0IGNvbnN0IERFTEVURV9SRVFVRVNUID0gJ3M6ZGw6cmVxJztcbmV4cG9ydCBjb25zdCBERUxFVEVfUkVTUE9OU0UgPSAnczpkbDpyZXMnO1xuZXhwb3J0IGNvbnN0IERFTEVURV9FUlJPUiA9ICdzOmRsOmVycic7XG5leHBvcnQgY29uc3QgREVMRVRFX05PVElGSUNBVElPTiA9ICdzOmRsOm5vdCc7XG5cbmV4cG9ydCBjb25zdCBBVFRBQ0hfUkVRVUVTVCA9ICdzOmE6cmVxJztcbmV4cG9ydCBjb25zdCBBVFRBQ0hfUkVTUE9OU0UgPSAnczphOnJlcyc7XG5leHBvcnQgY29uc3QgQVRUQUNIX0VSUk9SID0gJ3M6YTplcnInO1xuXG5leHBvcnQgY29uc3QgREVUQUNIX1JFUVVFU1QgPSAnczpkdDpyZXEnO1xuZXhwb3J0IGNvbnN0IERFVEFDSF9SRVNQT05TRSA9ICdzOmR0OnJlcyc7XG5leHBvcnQgY29uc3QgREVUQUNIX0VSUk9SID0gJ3M6ZHQ6ZXJyJzsgLy8gdXNlZnVsbFxuXG5leHBvcnQgY29uc3QgT0JTRVJWRV9SRVFVRVNUID0gJ3M6bzpyZXEnO1xuZXhwb3J0IGNvbnN0IE9CU0VSVkVfUkVTUE9OU0UgPSAnczpvOnJlcyc7XG5leHBvcnQgY29uc3QgT0JTRVJWRV9OT1RJRklDQVRJT04gPSAnczpvOm5vdCc7XG5cbmV4cG9ydCBjb25zdCBVUERBVEVfUkVRVUVTVCA9ICdzOnU6cmVxJztcbmV4cG9ydCBjb25zdCBVUERBVEVfUkVTUE9OU0UgPSAnczp1OnJlcyc7XG5leHBvcnQgY29uc3QgVVBEQVRFX05PVElGSUNBVElPTiA9ICdzOnU6bm90JztcbiJdfQ==
exports.UPDATE_NOTIFICATION = UPDATE_NOTIFICATION;
{
"name": "@soundworks/core",
"version": "3.0.0-alpha.2",
"version": "3.0.0-alpha.3",
"description": "full-stack javascript framework for distributed audio visual experiences on the web",

@@ -34,2 +34,3 @@ "authors": [

"dependencies": {
"@babel/plugin-proposal-export-default-from": "^7.5.2",
"@ircam/parameters": "^1.2.2",

@@ -36,0 +37,0 @@ "chalk": "^2.4.2",

@@ -157,3 +157,2 @@ "use strict";

var _default = Client;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2ZXIvQ2xpZW50LmpzIl0sIm5hbWVzIjpbImlkR2VuZXJhdG9yIiwiaSIsImdlbmVyYXRlSWQiLCJDbGllbnQiLCJjb25zdHJ1Y3RvciIsImNsaWVudFR5cGUiLCJzb2NrZXQiLCJ0eXBlIiwiaWQiLCJuZXh0IiwidmFsdWUiLCJ1dWlkIiwiY29vcmRpbmF0ZXMiLCJnZW9wb3NpdGlvbiIsImluZGV4IiwibGFiZWwiLCJkZXN0cm95Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFFQSxVQUFVQSxXQUFWLEdBQXdCO0FBQ3RCLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0IsSUFBaEIsRUFBc0JBLENBQUMsRUFBdkIsRUFBMkI7QUFDekIsVUFBTUEsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsTUFBTUMsVUFBVSxHQUFHRixXQUFXLEVBQTlCO0FBRUE7Ozs7OztBQUtBLE1BQU1HLE1BQU4sQ0FBYTtBQUNaOzs7OztBQUtBQyxFQUFBQSxXQUFXLENBQUNDLFVBQUQsRUFBYUMsTUFBYixFQUFxQjtBQUMvQjs7Ozs7OztBQU9FLFNBQUtDLElBQUwsR0FBWUYsVUFBWjtBQUVBOzs7Ozs7OztBQU9BLFNBQUtHLEVBQUwsR0FBVU4sVUFBVSxDQUFDTyxJQUFYLEdBQWtCQyxLQUE1QjtBQUVGOzs7Ozs7OztBQU9FLFNBQUtDLElBQUwsR0FBWSxxQkFBWjtBQUVBOzs7Ozs7Ozs7QUFTRjs7Ozs7Ozs7QUFPRSxTQUFLQyxXQUFMLEdBQW1CLElBQW5CO0FBRUE7Ozs7Ozs7O0FBT0EsU0FBS0MsV0FBTCxHQUFtQixJQUFuQjtBQUVBOzs7Ozs7OztBQU9BLFNBQUtDLEtBQUwsR0FBYSxJQUFiO0FBRUE7Ozs7Ozs7O0FBT0EsU0FBS0MsS0FBTCxHQUFhLElBQWIsQ0F2RTZCLENBeUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7OztBQUtFLFNBQUtULE1BQUwsR0FBY0EsTUFBZDtBQUNEO0FBRUQ7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7QUFHQVUsRUFBQUEsT0FBTyxHQUFHO0FBQ1IsU0FBS0wsSUFBTCxHQUFZLElBQVo7QUFDQSxTQUFLSCxFQUFMLEdBQVUsSUFBVjtBQUNEOztBQS9IVTs7ZUFrSUVMLE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXVpZCBmcm9tICd1dWlkdjQnO1xuXG5mdW5jdGlvbiogaWRHZW5lcmF0b3IoKSB7XG4gIGZvciAobGV0IGkgPSAwOyB0cnVlOyBpKyspIHtcbiAgICB5aWVsZCBpO1xuICB9XG59XG5cbmNvbnN0IGdlbmVyYXRlSWQgPSBpZEdlbmVyYXRvcigpO1xuXG4vKipcbiAqIFNlcnZlciBzaWRlIHJlcHJlc2VudGF0aW9uIG9mIGEgY2xpZW50LlxuICpcbiAqIEBtZW1iZXJvZiBAc291bmR3b3Jrcy9jb3JlL3NlcnZlclxuICovXG5jbGFzcyBDbGllbnQge1xuXHQvKipcblx0ICogQHBhcmFtIHtTdHJpbmd9IGNsaWVudFR5cGUgLSBDbGllbnQgdHlwZSBvZiB0aGUgY29ubmVjdGVkIGNsaWVudC5cblx0ICogQHBhcmFtIHtTb2NrZXR9IHNvY2tldCAtIFNvY2tldCBvYmplY3QgdXNlZCB0byBjb21taW51YXRlIHdpdGggdGhlIGNsaWVudC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGNvbnN0cnVjdG9yKGNsaWVudFR5cGUsIHNvY2tldCkge1xuXHRcdC8qKlxuXHRcdCAqIENsaWVudCB0eXBlIChzcGVjaWZpZWQgd2hlbiBpbml0aWFsaXppbmcgdGhlIHtAbGluayBjbGllbnR9IG9iamVjdCBvbiB0aGUgY2xpZW50IHNpZGUgd2l0aCB7QGxpbmsgY2xpZW50LmluaXR9KS5cblx0XHQgKiBAbmFtZSB0eXBlXG4gICAgICogQHR5cGUge1N0cmluZ31cbiAgICAgKiBAbWVtYmVyb2YgbW9kdWxlOnNvdW5kd29ya3Mvc2VydmVyLkNsaWVudFxuICAgICAqIEBpbnN0YW5jZVxuXHRcdCAqL1xuICAgIHRoaXMudHlwZSA9IGNsaWVudFR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBVbmlxdWUgc2Vzc2lvbiBpZCAoZXZlciBpbmNyZWFzaW5nIG51bWJlcilcbiAgICAgKiBAbmFtZSBpZFxuICAgICAqIEB0eXBlIHtOdW1iZXJ9XG4gICAgICogQG1lbWJlcm9mIG1vZHVsZTpzb3VuZHdvcmtzL3NlcnZlci5DbGllbnRcbiAgICAgKiBAaW5zdGFuY2VcbiAgICAgKi9cbiAgICB0aGlzLmlkID0gZ2VuZXJhdGVJZC5uZXh0KCkudmFsdWU7XG5cblx0XHQvKipcblx0XHQgKiBVbmlxdWUgc2Vzc2lvbiBpZCAodXVpZHY0KS5cblx0XHQgKiBAbmFtZSB1dWlkXG4gICAgICogQHR5cGUge1N0cmluZ31cbiAgICAgKiBAbWVtYmVyb2YgbW9kdWxlOnNvdW5kd29ya3Mvc2VydmVyLkNsaWVudFxuICAgICAqIEBpbnN0YW5jZVxuXHRcdCAqL1xuICAgIHRoaXMudXVpZCA9IHV1aWQoKTtcblxuICAgIC8qKlxuICAgICAqIEBub3RlIC0gcmVtb3ZlIGFsbCB0aGF0LCBzaG91bGQgYmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgc2VydmljZXNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIC8vIGNsaWVudCBzaWRlXG4gICAgICogY29uc3QgaW5kZXggPSB0aGlzLmNoZWNraW4uZ2V0SW5kZXgoKTtcbiAgICAgKiAvLyBzZXJ2ZXIgc2lkZVxuICAgICAqIGNvbnN0IGluZGV4ID0gdGhpcy5jaGVja2luLmdldEluZGV4KGNsaWVudCk7XG4gICAgICovXG5cblx0XHQvKipcblx0XHQgKiBDb29yZGluYXRlcyBvZiB0aGUgY2xpZW50LCBzdG9yZWQgYXMgYW4gYFt4Ok51bWJlciwgeTpOdW1iZXJdYCBhcnJheS5cblx0XHQgKiBAbmFtZSBjb29yZGluYXRlc1xuICAgICAqIEB0eXBlIHtBcnJheTxOdW1iZXI+fVxuICAgICAqIEBtZW1iZXJvZiBtb2R1bGU6c291bmR3b3Jrcy9zZXJ2ZXIuQ2xpZW50XG4gICAgICogQGluc3RhbmNlXG5cdFx0ICovXG4gICAgdGhpcy5jb29yZGluYXRlcyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBHZW9wb3NpdGlvbiBvZiB0aGUgY2xpZW50IGFzIHJldHVybmVkIGJ5IGBnZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb25gXG4gICAgICogQG5hbWUgZ2VvcG9zaXRpb25cbiAgICAgKiBAdHlwIHtPYmplY3R9XG4gICAgICogQG1lbWJlcm9mIG1vZHVsZTpzb3VuZHdvcmtzL3NlcnZlci5DbGllbnRcbiAgICAgKiBAaW5zdGFuY2VcbiAgICAgKi9cbiAgICB0aGlzLmdlb3Bvc2l0aW9uID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRpY2tldCBpbmRleCBvZiB0aGUgY2xpZW50LlxuICAgICAqIEBuYW1lIGluZGV4XG4gICAgICogQHR5cGUge051bWJlcn1cbiAgICAgKiBAbWVtYmVyb2YgbW9kdWxlOnNvdW5kd29ya3Mvc2VydmVyLkNsaWVudFxuICAgICAqIEBpbnN0YW5jZVxuICAgICAqL1xuICAgIHRoaXMuaW5kZXggPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVGlja2V0IGxhYmVsIG9mIHRoZSBjbGllbnQuXG4gICAgICogQG5hbWUgbGFiZWxcbiAgICAgKiBAdHlwZSB7TnVtYmVyfVxuICAgICAqIEBtZW1iZXJvZiBtb2R1bGU6c291bmR3b3Jrcy9zZXJ2ZXIuQ2xpZW50XG4gICAgICogQGluc3RhbmNlXG4gICAgICovXG4gICAgdGhpcy5sYWJlbCA9IG51bGw7XG5cblx0XHQvLyAvKipcblx0XHQvLyAgKiBVc2VkIGJ5IHRoZSBhY3Rpdml0aWVzIHRvIGFzc29jaWF0ZSBkYXRhIHRvIGEgcGFydGljdWxhciBjbGllbnQuXG5cdFx0Ly8gICpcblx0XHQvLyAgKiBBbGwgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgYWN0aXZpdHkgd2hvc2UgYG5hbWVgIGlzIGAnYWN0aXZpdHlOYW1lJ2BcbiAgLy8gICAgKiBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIGtleSBgYWN0aXZpdHlOYW1lYC5cblx0XHQvLyAgKiBGb3IgaW5zdGFuY2UsIHRoZSB7QGxpbmsgc3JjL3NlcnZlci9DaGVja2luLmpzfkNoZWNraW59IGFjdGl2aXR5IGtlZXBzXG4gIC8vICAgICogdHJhY2sgb2YgY2xpZW50J3MgY2hlY2tpbiBpbmRleCBhbmQgbGFiZWwgaW4gYHRoaXMuYWN0aXZpdGllcy5jaGVja2luLmluZGV4YFxuICAvLyAgICAqIGFuZCBgdGhpcy5hY3Rpdml0aWVzLmNoZWNraW4ubGFiZWxgLlxuXHRcdC8vICAqIFNpbWlsYXJseSwgYSB7QGxpbmsgc3JjL3NlcnZlci9QZXJmb3JtYW5jZS5qc35QZXJmb3JtYW5jZX0gYWN0aXZpdHkgd2hvc2VcbiAgLy8gICAgKiBuYW1lIGlzIGAnbXlQZXJmb3JtYW5jZSdgIGNvdWxkIHJlcG9ydCB0aGUgY2xpZW50J3Mgc3RhdHVzIGluXG4gIC8vICAgICogYHRoaXMuYWN0aXZpdGllcy5teVBlcmZvcm1hbmNlLnN0YXR1c2AuXG5cdFx0Ly8gICpcbiAgLy8gICAgKiBAbmFtZSBhY3Rpdml0aWVzXG4gIC8vICAgICogQHR5cGUge09iamVjdH1cbiAgLy8gICAgKiBAbWVtYmVyb2YgbW9kdWxlOnNvdW5kd29ya3Mvc2VydmVyLkNsaWVudFxuICAvLyAgICAqIEBpbnN0YW5jZVxuXHRcdC8vICAqL1xuICAvLyAgIHRoaXMuYWN0aXZpdGllcyA9IHt9O1xuXG5cdFx0LyoqXG5cdFx0ICogU29ja2V0IHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgY2xpZW50LlxuXHRcdCAqIEB0eXBlIHtTb2NrZXR9XG5cdFx0ICogQHByaXZhdGVcblx0XHQgKi9cbiAgICB0aGlzLnNvY2tldCA9IHNvY2tldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlnaHR3ZWlnaHQgdmVyc2lvbiBvZiB0aGUgZGF0YSBkZWZpbmluZyB0aGUgY2xpZW50LlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgKi9cbiAgLy8gc2VyaWFsaXplKCkge1xuICAvLyAgIHJldHVybiB7XG4gIC8vICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gIC8vICAgICB1dWlkOiB0aGlzLnV1aWQsXG4gIC8vICAgICBjb29yZGluYXRlczogdGhpcy5jb29yZGluYXRlcyxcbiAgLy8gICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAvLyAgICAgbGFiZWw6IHRoaXMubGFiZWwsXG4gIC8vICAgICBhY3Rpdml0aWVzOiB0aGlzLmFjdGl2aXRpZXMsXG4gIC8vICAgfTtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95IHRoZSBjbGllbnQuXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMudXVpZCA9IG51bGw7XG4gICAgdGhpcy5pZCA9IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ2xpZW50O1xuIl19
exports.default = _default;

@@ -63,3 +63,2 @@ "use strict";

var _default = Db;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2ZXIvRGIuanMiXSwibmFtZXMiOlsiRGIiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJkYkRpcmVjdG9yeSIsInBhdGgiLCJqb2luIiwicHJvY2VzcyIsImN3ZCIsImZzIiwiZXhpc3RzU3luYyIsIm1rZGlyU3luYyIsImZpbGVuYW1lIiwia2V5diIsIktleXYiLCJuYW1lc3BhY2UiLCJzdG9yZSIsIktleXZGaWxlIiwib24iLCJlcnIiLCJjb25zb2xlIiwibG9nIiwiZ2V0Iiwia2V5IiwidmFsdWUiLCJzZXQiLCJleHBpcmVEZWxheU1zIiwidW5kZWZpbmVkIiwiZGVsZXRlIiwiY2xlYXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBOzs7Ozs7QUFNQSxNQUFNQSxFQUFOLENBQVM7QUFDUEMsRUFBQUEsV0FBVyxDQUFDQyxPQUFPLEdBQUcsRUFBWCxFQUFlO0FBQ3hCLFVBQU1DLFdBQVcsR0FBR0MsY0FBS0MsSUFBTCxDQUFVQyxPQUFPLENBQUNDLEdBQVIsRUFBVixFQUF5QixLQUF6QixDQUFwQjs7QUFFQSxRQUFJLENBQUNDLFlBQUdDLFVBQUgsQ0FBY04sV0FBZCxDQUFMLEVBQWlDO0FBQy9CSyxrQkFBR0UsU0FBSCxDQUFhUCxXQUFiO0FBQ0Q7O0FBRUQsVUFBTVEsUUFBUSxHQUFHUCxjQUFLQyxJQUFMLENBQVVGLFdBQVYsRUFBdUIsU0FBdkIsQ0FBakI7O0FBRUEsU0FBS1MsSUFBTCxHQUFZLElBQUlDLGFBQUosQ0FBUztBQUNuQkMsTUFBQUEsU0FBUyxFQUFFLFlBRFE7QUFFbkJDLE1BQUFBLEtBQUssRUFBRSxJQUFJQyxpQkFBSixDQUFhO0FBQUVMLFFBQUFBO0FBQUYsT0FBYjtBQUZZLEtBQVQsQ0FBWjtBQUtBLFNBQUtDLElBQUwsQ0FBVUssRUFBVixDQUFhLE9BQWIsRUFBc0JDLEdBQUcsSUFBSUMsT0FBTyxDQUFDQyxHQUFSLENBQVksa0JBQVosRUFBZ0NGLEdBQWhDLENBQTdCO0FBQ0Q7O0FBRUQsUUFBTUcsR0FBTixDQUFVQyxHQUFWLEVBQWU7QUFDYixVQUFNQyxLQUFLLEdBQUcsTUFBTSxLQUFLWCxJQUFMLENBQVVTLEdBQVYsQ0FBY0MsR0FBZCxDQUFwQjtBQUNBLFdBQU9DLEtBQVA7QUFDRDs7QUFFRCxRQUFNQyxHQUFOLENBQVVGLEdBQVYsRUFBZUMsS0FBZixFQUFzQkUsYUFBYSxHQUFHQyxTQUF0QyxFQUFpRDtBQUMvQyxVQUFNLEtBQUtkLElBQUwsQ0FBVVksR0FBVixDQUFjRixHQUFkLEVBQW1CQyxLQUFuQixFQUEwQkUsYUFBMUIsQ0FBTjtBQUNEOztBQUVELFFBQU1FLE1BQU4sQ0FBYUwsR0FBYixFQUFrQjtBQUNoQixVQUFNLEtBQUtWLElBQUwsQ0FBVWUsTUFBVixDQUFpQkwsR0FBakIsQ0FBTjtBQUNEOztBQUVELFFBQU1NLEtBQU4sR0FBYztBQUNaLFVBQU0sS0FBS2hCLElBQUwsQ0FBVWdCLEtBQVYsRUFBTjtBQUNEOztBQWpDTTs7ZUFvQ001QixFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEtleXYgZnJvbSAna2V5dic7XG5pbXBvcnQgS2V5dkZpbGUgZnJvbSAna2V5di1maWxlJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcblxuLyoqXG4gKiBTaW1wbGUgaW4gZmlsZSBrZXkgLyB2YWx1ZSBkYXRhYmFzZS5cbiAqXG4gKiBAdG9kbyAtIGltcGxlbWVudCBvcHRpb25zIHRvIGNoYW5nZSBzdG9yYWdlIHNvbHV0aW9uLlxuICogY2YuIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlY2hpbGRzL2tleXZcbiAqL1xuY2xhc3MgRGIge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBkYkRpcmVjdG9yeSA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnLmRiJyk7XG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZGJEaXJlY3RvcnkpKSB7XG4gICAgICBmcy5ta2RpclN5bmMoZGJEaXJlY3RvcnkpO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5qb2luKGRiRGlyZWN0b3J5LCAna2V5di5kYicpXG5cbiAgICB0aGlzLmtleXYgPSBuZXcgS2V5dih7XG4gICAgICBuYW1lc3BhY2U6ICdzb3VuZHdvcmtzJyxcbiAgICAgIHN0b3JlOiBuZXcgS2V5dkZpbGUoeyBmaWxlbmFtZSB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMua2V5di5vbignZXJyb3InLCBlcnIgPT4gY29uc29sZS5sb2coJ0Nvbm5lY3Rpb24gRXJyb3InLCBlcnIpKTtcbiAgfVxuXG4gIGFzeW5jIGdldChrZXkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMua2V5di5nZXQoa2V5KTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBhc3luYyBzZXQoa2V5LCB2YWx1ZSwgZXhwaXJlRGVsYXlNcyA9IHVuZGVmaW5lZCkge1xuICAgIGF3YWl0IHRoaXMua2V5di5zZXQoa2V5LCB2YWx1ZSwgZXhwaXJlRGVsYXlNcyk7XG4gIH1cblxuICBhc3luYyBkZWxldGUoa2V5KSB7XG4gICAgYXdhaXQgdGhpcy5rZXl2LmRlbGV0ZShrZXkpO1xuICB9XG5cbiAgYXN5bmMgY2xlYXIoKSB7XG4gICAgYXdhaXQgdGhpcy5rZXl2LmNsZWFyKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRGI7XG5cbiJdfQ==
exports.default = _default;

@@ -116,3 +116,2 @@ "use strict";

var _default = Experience;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2ZXIvRXhwZXJpZW5jZS5qcyJdLCJuYW1lcyI6WyJsb2ciLCJFeHBlcmllbmNlIiwiY29uc3RydWN0b3IiLCJzZXJ2ZXIiLCJjbGllbnRUeXBlcyIsIkVycm9yIiwiY2xpZW50cyIsIlNldCIsIkFycmF5IiwiaXNBcnJheSIsImFjdGl2aXRpZXMiLCJhZGQiLCJyZXF1aXJlIiwibmFtZSIsInNlcnZpY2VNYW5hZ2VyIiwiZ2V0Iiwic3RhcnQiLCJjb25uZWN0IiwiY2xpZW50Iiwic3RhdGVNYW5hZ2VyIiwiYWRkQ2xpZW50IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzb2NrZXQiLCJhZGRMaXN0ZW5lciIsImVudGVyIiwiZGlzY29ubmVjdCIsImhhcyIsImRlbGV0ZSIsImV4aXQiLCJyZW1vdmVDbGllbnQiLCJpZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUEsTUFBTUEsR0FBRyxHQUFHLG9CQUFNLHNCQUFOLENBQVo7QUFFQTs7Ozs7O0FBS0EsTUFBTUMsVUFBTixDQUFpQjtBQUNmQyxFQUFBQSxXQUFXLENBQUNDLE1BQUQsRUFBU0MsV0FBVyxHQUFHLElBQXZCLEVBQTZCO0FBQ3RDO0FBQ0EsUUFBSSxDQUFDRCxNQUFMLEVBQWE7QUFDWCxZQUFNLElBQUlFLEtBQUosQ0FBVSw4RUFBVixDQUFOO0FBQ0Q7O0FBRUQsUUFBSUQsV0FBVyxLQUFLLElBQXBCLEVBQTBCO0FBQ3hCLFlBQU0sSUFBSUMsS0FBSixDQUFVLHNCQUFWLENBQU47QUFDRDs7QUFFRCxTQUFLRixNQUFMLEdBQWNBLE1BQWQ7QUFFQTs7Ozs7O0FBS0EsU0FBS0csT0FBTCxHQUFlLElBQUlDLEdBQUosRUFBZjtBQUVBOzs7O0FBR0FILElBQUFBLFdBQVcsR0FBR0ksS0FBSyxDQUFDQyxPQUFOLENBQWNMLFdBQWQsSUFBNkJBLFdBQTdCLEdBQTJDLENBQUNBLFdBQUQsQ0FBekQ7QUFDQSxTQUFLQSxXQUFMLEdBQW1CLElBQUlHLEdBQUosQ0FBUUgsV0FBUixDQUFuQixDQXZCc0MsQ0F5QnRDOztBQUNBLFNBQUtELE1BQUwsQ0FBWU8sVUFBWixDQUF1QkMsR0FBdkIsQ0FBMkIsSUFBM0I7QUFDRDtBQUVEOzs7Ozs7Ozs7O0FBUUFDLEVBQUFBLE9BQU8sQ0FBQ0MsSUFBRCxFQUFPO0FBQ1osV0FBTyxLQUFLVixNQUFMLENBQVlXLGNBQVosQ0FBMkJDLEdBQTNCLENBQStCRixJQUEvQixFQUFxQyxJQUFyQyxDQUFQO0FBQ0Q7O0FBRURHLEVBQUFBLEtBQUssR0FBRztBQUNOaEIsSUFBQUEsR0FBRyxDQUFFLGlCQUFnQixLQUFLRSxXQUFMLENBQWlCVyxJQUFLLFNBQXhDLENBQUg7QUFDRDtBQUVEOzs7Ozs7O0FBS0FJLEVBQUFBLE9BQU8sQ0FBQ0MsTUFBRCxFQUFTO0FBQ2QsU0FBS2YsTUFBTCxDQUFZZ0IsWUFBWixDQUF5QkMsU0FBekIsQ0FBbUNGLE1BQW5DLEVBRGMsQ0FFZDtBQUNBO0FBQ0E7O0FBQ0EsV0FBTyxJQUFJRyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3RDTCxNQUFBQSxNQUFNLENBQUNNLE1BQVAsQ0FBY0MsV0FBZCxDQUEwQixhQUExQixFQUF5QyxNQUFNO0FBQzdDLGFBQUtuQixPQUFMLENBQWFLLEdBQWIsQ0FBaUJPLE1BQWpCO0FBQ0EsYUFBS1EsS0FBTCxDQUFXUixNQUFYO0FBQ0QsT0FIRDtBQUlELEtBTE0sQ0FBUDtBQU1EO0FBRUQ7Ozs7Ozs7QUFLQVMsRUFBQUEsVUFBVSxDQUFDVCxNQUFELEVBQVM7QUFDakI7QUFDQTtBQUNBLFFBQUksS0FBS1osT0FBTCxDQUFhc0IsR0FBYixDQUFpQlYsTUFBakIsQ0FBSixFQUE4QjtBQUM1QixXQUFLWixPQUFMLENBQWF1QixNQUFiLENBQW9CWCxNQUFwQjtBQUNBLFdBQUtZLElBQUwsQ0FBVVosTUFBVjtBQUNEOztBQUVELFNBQUtmLE1BQUwsQ0FBWWdCLFlBQVosQ0FBeUJZLFlBQXpCLENBQXNDYixNQUF0QztBQUNEO0FBRUQ7Ozs7O0FBR0FRLEVBQUFBLEtBQUssQ0FBQ1IsTUFBRCxFQUFTO0FBQ1psQixJQUFBQSxHQUFHLENBQUUsYUFBWWtCLE1BQU0sQ0FBQ2MsRUFBRywrQkFBOEIsS0FBSzlCLFdBQUwsQ0FBaUJXLElBQUssR0FBNUUsQ0FBSDtBQUNEOztBQUVEaUIsRUFBQUEsSUFBSSxDQUFDWixNQUFELEVBQVM7QUFDWGxCLElBQUFBLEdBQUcsQ0FBRSxhQUFZa0IsTUFBTSxDQUFDYyxFQUFHLDhCQUE2QixLQUFLOUIsV0FBTCxDQUFpQlcsSUFBSyxHQUEzRSxDQUFIO0FBQ0Q7O0FBekZjOztlQTRGRlosVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdzb3VuZHdvcmtzOmxpZmVjeWNsZScpO1xuXG4vKipcbiAqIEB0b2RvIC0gRXhwZXJpZW5jZVxuICpcbiAqIEBtZW1iZXJvZiBAc291bmR3b3Jrcy9jb3JlL3NlcnZlclxuICovXG5jbGFzcyBFeHBlcmllbmNlIHtcbiAgY29uc3RydWN0b3Ioc2VydmVyLCBjbGllbnRUeXBlcyA9IG51bGwpIHtcbiAgICAvLyBAdG9kbyAtIGNoZWNrIHRoYXQgaXQncyBhIHNvdW5kd29ya3MgaW5zdGFuY2VcbiAgICBpZiAoIXNlcnZlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlcmllbmNlIHNob3VsZCByZWNlaXZlIHRoZSBgc291bmR3b3Jrcy5TZXJ2ZXJgIGluc3RhbmNlIGFzIGZpcnN0IGFyZ3VtZW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKGNsaWVudFR5cGVzID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY2xpZW50IHR5cGVzJyk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXI7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGNvbm5lY3RlZCBjbGllbnRzXG4gICAgICogQGluc3RhbmNlXG4gICAgICogQHR5cGUge0NsaWVudFtdfVxuICAgICAqL1xuICAgIHRoaXMuY2xpZW50cyA9IG5ldyBTZXQoKTtcblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgY2xpZW50IHR5cGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlcnZlci1zaWRlIGV4cGVyaWVuY2UuXG4gICAgICovXG4gICAgY2xpZW50VHlwZXMgPSBBcnJheS5pc0FycmF5KGNsaWVudFR5cGVzKSA/IGNsaWVudFR5cGVzIDogW2NsaWVudFR5cGVzXTtcbiAgICB0aGlzLmNsaWVudFR5cGVzID0gbmV3IFNldChjbGllbnRUeXBlcyk7XG5cbiAgICAvLyByZWdpc3RlciBpbiB0aGUgc2VydmVyXG4gICAgdGhpcy5zZXJ2ZXIuYWN0aXZpdGllcy5hZGQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWlyZSBhIHJlZ2lzdGVyZWQgc2VydmljZSwgYWxsIGNsaWVudCB0eXBlcyBhc3NvY2lhdGVkIHRvIHRoZSBleHBlcmllbmNlXG4gICAqIHdpbGwgYWxzbyBiZSBhc3NvY2lhdGVkIHRvIHRoZSByZXF1aXJlZCBzZXJ2aWNlLiBSZXF1aXJpbmcgYSBzZXJ2aWNlIHNob3VsZFxuICAgKiBhbHdheXMgYmUgZG9uZSBiZXR3ZWVuIGBzb3VuZHdvcmtzLmluaXRgIGFuZCBgc291bmR3b3Jrcy5zdGFydGAuXG4gICAqIEluIG1vc3QgY2FzZSB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgaW4gdGhlIGNvbnN0cnVjdG9yIHRoZSBFeHBlcmllbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIHJlZ2lzdGVyZWQgc2VydmljZVxuICAgKi9cbiAgcmVxdWlyZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmVyLnNlcnZpY2VNYW5hZ2VyLmdldChuYW1lLCB0aGlzKTtcbiAgfVxuXG4gIHN0YXJ0KCkge1xuICAgIGxvZyhgPiBleHBlcmllbmNlIFwiJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9XCIgc3RhcnRgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgY2xpZW50IGNvbm5lY3RzIHRvIHRoZSBzZXJ2ZXIuXG4gICAqIEBwYXJhbSB7Q2xpZW50fSBjbGllbnQgQ29ubmVjdGVkIGNsaWVudC5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbm5lY3QoY2xpZW50KSB7XG4gICAgdGhpcy5zZXJ2ZXIuc3RhdGVNYW5hZ2VyLmFkZENsaWVudChjbGllbnQpO1xuICAgIC8vIGxpc3RlbiBmb3IgdGhlIGAnZW50ZXInIHNvY2tldCBtZXNzYWdlIGZyb20gdGhlIGNsaWVudCwgdGhlIG1lc3NhZ2UgaXNcbiAgICAvLyBzZW50IHdoZW4gdGhlIGNsaWVudCBgZW50ZXJzYCB0aGUgRXhwZXJpZW5jZSBjbGllbnQgc2lkZSwgaS5lLiB3aGVuIGFsbFxuICAgIC8vIHJlcXVpcmVkIHNlcnZpY2VzIGFyZSByZWFkeVxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjbGllbnQuc29ja2V0LmFkZExpc3RlbmVyKCdzOmV4cDplbnRlcicsICgpID0+IHtcbiAgICAgICAgdGhpcy5jbGllbnRzLmFkZChjbGllbnQpO1xuICAgICAgICB0aGlzLmVudGVyKGNsaWVudCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgY2xpZW50IGRpc2Nvbm5lY3RzIGZyb20gdGhlIHNlcnZlci5cbiAgICogQHBhcmFtIHtDbGllbnR9IGNsaWVudCBEaXNjb25uZWN0ZWQgY2xpZW50LlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGlzY29ubmVjdChjbGllbnQpIHtcbiAgICAvLyBvbmx5IGNhbGwgZXhpdCBpZiB0aGUgY2xpZW50IGhhcyBmdWxseSBlbnRlcmVkXG4gICAgLy8gKGkuZS4gaGFzIGZpbmlzaGVkIHRoZSBpdHMgaW5pdGlhbGl6YXRpb24gcGhhc2UpXG4gICAgaWYgKHRoaXMuY2xpZW50cy5oYXMoY2xpZW50KSkge1xuICAgICAgdGhpcy5jbGllbnRzLmRlbGV0ZShjbGllbnQpO1xuICAgICAgdGhpcy5leGl0KGNsaWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXJ2ZXIuc3RhdGVNYW5hZ2VyLnJlbW92ZUNsaWVudChjbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBjbGllbnQgc3RhcnRlZCB0aGUgY2xpZW50XG4gICAqL1xuICBlbnRlcihjbGllbnQpIHtcbiAgICBsb2coYD4gW2NsaWVudCAke2NsaWVudC5pZH1dIGVudGVyIHNlcnZpY2UgZXhwZXJpZW5jZSBcIiR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfVwiYCk7XG4gIH1cblxuICBleGl0KGNsaWVudCkge1xuICAgIGxvZyhgPiBbY2xpZW50ICR7Y2xpZW50LmlkfV0gZXhpdCBzZXJ2aWNlIGV4cGVyaWVuY2UgXCIke3RoaXMuY29uc3RydWN0b3IubmFtZX1cImApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV4cGVyaWVuY2U7XG4iXX0=
exports.default = _default;

@@ -518,3 +518,2 @@ "use strict";

var _default = Server;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2ZXIvU2VydmVyLmpzIl0sIm5hbWVzIjpbIlNlcnZlciIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwicm91dGVyIiwiaHR0cFNlcnZlciIsImRiIiwic29ja2V0cyIsIlNvY2tldHMiLCJzZXJ2aWNlTWFuYWdlciIsIlNlcnZpY2VNYW5hZ2VyIiwic3RhdGVNYW5hZ2VyIiwiX2h0dHBzSW5mb3MiLCJfY2xpZW50VHlwZUFjdGl2aXRpZXNNYXAiLCJhY3Rpdml0aWVzIiwiU2V0IiwiX3JvdXRlcyIsIl9odG1sVGVtcGxhdGVDb25maWciLCJlbmdpbmUiLCJkaXJlY3RvcnkiLCJpbml0IiwiZW52IiwidHlwZSIsInBvcnQiLCJhcHAiLCJuYW1lIiwiY2xpZW50Q29uZmlnRnVuY3Rpb24iLCJjbGllbnRUeXBlIiwic2VydmVyQ29uZmlnIiwiaHR0cFJlcXVlc3QiLCJfY2xpZW50Q29uZmlnRnVuY3Rpb24iLCJ1c2UiLCJTdGF0ZU1hbmFnZXIiLCJEYiIsIlByb21pc2UiLCJyZXNvbHZlIiwic3RhcnQiLCJmb3JFYWNoIiwiYWN0aXZpdHkiLCJjbGllbnRUeXBlcyIsImFkZCIsInVzZUh0dHBzIiwidGhlbiIsImh0dHAiLCJjcmVhdGVTZXJ2ZXIiLCJodHRwc0luZm9zIiwia2V5IiwiY2VydCIsImZzIiwicmVhZEZpbGVTeW5jIiwiaHR0cHNTZXJ2ZXIiLCJodHRwcyIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInJlamVjdCIsImdldCIsInBlbSIsImNyZWF0ZUNlcnRpZmljYXRlIiwiZGF5cyIsInNlbGZTaWduZWQiLCJrZXlzIiwic3RhY2siLCJzZXJ2aWNlS2V5IiwiY2VydGlmaWNhdGUiLCJzZXQiLCJzZXJ2ZXIiLCJFcnJvciIsImxvZ2dlciIsInRpdGxlIiwicm91dGVzIiwiZGVmYXVsdENsaWVudFR5cGUiLCJjbGllbnRzIiwiZGVmYXVsdCIsInBhdGgiLCJfb3BlbkNsaWVudFJvdXRlIiwicHVzaCIsInVuc2hpZnQiLCJjbGllbnRDb25maWdBbmRSb3V0aW5nIiwic2VydmVySXAiLCJ3ZWJzb2NrZXRzIiwic29ja2V0IiwiX29uU29ja2V0Q29ubmVjdGlvbiIsInByb3RvY29sIiwiaWZhY2VzIiwib3MiLCJuZXR3b3JrSW50ZXJmYWNlcyIsImxpc3RlbiIsIk9iamVjdCIsImRldiIsImRldGFpbHMiLCJmYW1pbHkiLCJpcCIsImFkZHJlc3MiLCJyZWdpc3RlclNlcnZpY2UiLCJmYWN0b3J5IiwiZGVwcyIsImN0b3IiLCJTZXJ2aWNlIiwicmVnaXN0ZXIiLCJjb25maWd1cmVIdG1sVGVtcGxhdGVzIiwiaXNEZWZhdWx0Iiwicm91dGUiLCJ0ZW1wbGF0ZURpcmVjdG9yeSIsImNsaWVudFRtcGwiLCJqb2luIiwiZGVmYXVsdFRtcGwiLCJ0ZW1wbGF0ZSIsInN0YXRzIiwic3RhdFN5bmMiLCJpc0ZpbGUiLCJ0bXBsU3RyaW5nIiwidG1wbCIsImNvbXBpbGUiLCJyZXEiLCJyZXMiLCJkYXRhIiwiYXBwSW5kZXgiLCJlbmQiLCJjbGllbnQiLCJDbGllbnQiLCJhZGRMaXN0ZW5lciIsInRlcm1pbmF0ZSIsImRpc2Nvbm5lY3QiLCJkZXN0cm95IiwiY2xpZW50UmVxdWlyZWRTZXJ2aWNlcyIsInJlcXVpcmVkU2VydmljZXMiLCJzZXJ2ZXJSZXF1aXJlZFNlcnZpY2VzIiwiZ2V0UmVxdWlyZWRTZXJ2aWNlcyIsIm1pc3NpbmdTZXJ2aWNlcyIsInNlcnZpY2VJZCIsImluZGV4T2YiLCJsZW5ndGgiLCJzZW5kIiwiY29ubmVjdCIsImlkIiwidXVpZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBLE1BQU1BLE1BQU4sQ0FBYTtBQUNYQyxFQUFBQSxXQUFXLEdBQUc7QUFDWjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQSxTQUFLQyxNQUFM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QkQ7QUErQkQ7O0FBeGJVOztlQTJiRXZJLE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgcGVtIGZyb20gJ3BlbSc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBvbGthIGZyb20gJ3BvbGthJztcbmltcG9ydCBzZXJ2ZVN0YXRpYyBmcm9tICdzZXJ2ZS1zdGF0aWMnO1xuaW1wb3J0IGNvbXByZXNzaW9uIGZyb20gJ2NvbXByZXNzaW9uJztcbmltcG9ydCBDbGllbnQgZnJvbSAnLi9DbGllbnQnO1xuaW1wb3J0IFNlcnZpY2UgZnJvbSAnLi9TZXJ2aWNlJztcbmltcG9ydCBTZXJ2aWNlTWFuYWdlciBmcm9tICcuL1NlcnZpY2VNYW5hZ2VyJztcbmltcG9ydCBTb2NrZXRzIGZyb20gJy4vU29ja2V0cyc7XG5pbXBvcnQgU3RhdGVNYW5hZ2VyIGZyb20gJy4vU3RhdGVNYW5hZ2VyJztcbmltcG9ydCBEYiBmcm9tICcuL0RiJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi91dGlscy9sb2dnZXInO1xuXG4vKipcbiAqIFNlcnZlciBzaWRlIGVudHJ5IHBvaW50IGZvciBhIGBzb3VuZHdvcmtzYCBhcHBsaWNhdGlvbi5cbiAqXG4gKiBUaGlzIG9iamVjdCBob3N0cyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9ucywgYXMgd2VsbCBhcyBtZXRob2RzIHRvXG4gKiBpbml0aWFsaXplIGFuZCBzdGFydCB0aGUgYXBwbGljYXRpb24uIEl0IGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nXG4gKiB0aGUgc3RhdGljIGZpbGUgKGh0dHApIHNlcnZlciBhcyB3ZWxsIGFzIHRoZSBzb2NrZXQgc2VydmVyLlxuICpcbiAqIEBtZW1iZXJvZiBAc291bmR3b3Jrcy9jb3JlL3NlcnZlclxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgKiBhcyBzb3VuZHdvcmtzIGZyb20gJ3NvdW5kd29ya3Mvc2VydmVyJztcbiAqIGltcG9ydCBNeUV4cGVyaWVuY2UgZnJvbSAnLi9NeUV4cGVyaWVuY2UnO1xuICpcbiAqIHNvdW5kd29ya3Muc2VydmVyLmluaXQoY29uZmlnKTtcbiAqIGNvbnN0IG15RXhwZXJpZW5jZSA9IG5ldyBNeUV4cGVyaWVuY2UoKTtcbiAqIHNvdW5kd29ya3Muc2VydmVyLnN0YXJ0KCk7XG4gKi9cbmNsYXNzIFNlcnZlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb25zLiBEZWZhdWx0cyB0bzpcbiAgICAgKiBgYGBcbiAgICAgKiB7XG4gICAgICogICBlbnY6IHtcbiAgICAgKiAgICAgdHlwZTogJ2RldmVsb3BtZW50JyxcbiAgICAgKiAgICAgcG9ydDogODAwMCxcbiAgICAgKiAgICAgXCJ3ZWJzb2NrZXRzXCI6IHtcbiAgICAgKiAgICAgICBcInBhdGhcIjogXCJzb2NrZXRcIixcbiAgICAgKiAgICAgICBcInBpbmdJbnRlcnZhbFwiOiA1MDAwXG4gICAgICogICAgIH0sXG4gICAgICogICAgIFwidXNlSHR0cHNcIjogZmFsc2UsXG4gICAgICogICB9LFxuICAgICAqICAgYXBwOiB7XG4gICAgICogICAgIG5hbWU6ICdzb3VuZHdvcmtzJyxcbiAgICAgKiAgIH0sXG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHRoaXMuY29uZmlnID0ge307XG5cbiAgICAvKipcbiAgICAgKiBSb3V0ZXIuIEludGVybmFsbHkgdXNlIHBvbGthLlxuICAgICAqIChjZi4gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9wb2xrYSlcbiAgICAgKi9cbiAgICB0aGlzLnJvdXRlciA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBodHRwKHMpIHNlcnZlciBpbnN0YW5jZS4gVGhlIG5vZGUgYGh0dHBgIG9yIGBodHRwc2AgbW9kdWxlIGluc3RhbmNlXG4gICAgICogKGNmLiBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbClcbiAgICAgKi9cbiAgICB0aGlzLmh0dHBTZXJ2ZXIgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogS2V5IC8gdmFsdWUgc3RvcmFnZSB3aXRoIFByb21pc2UgYmFzZWQgTWFwIEFQSVxuICAgICAqIGJhc2ljYWxseSBhIHdyYXBwZXIgYXJvdW5kIGt2ZXkgKGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlY2hpbGRzL2tleXYpXG4gICAgICovXG4gICAgdGhpcy5kYiA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiB3cmFwcGVyIGFyb3VuZCBgd3NgIHNlcnZlclxuICAgICAqIEB0eXBlIHttb2R1bGU6c291bmR3b3Jrcy9zZXJ2ZXIuc29ja2V0c31cbiAgICAgKiBAZGVmYXVsdCBtb2R1bGU6c291bmR3b3Jrcy9zZXJ2ZXIuc29ja2V0c1xuICAgICAqL1xuICAgIHRoaXMuc29ja2V0cyA9IG5ldyBTb2NrZXRzKCk7XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIHRoaXMuc2VydmljZU1hbmFnZXIgPSBuZXcgU2VydmljZU1hbmFnZXIodGhpcyk7XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIHRoaXMuc3RhdGVNYW5hZ2VyID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIGtleSBhbmQgY2VydGlmaWNhdGVzIChtYXkgYmUgZ2VuZXJhdGVkIGFuZCBzZWxmLXNpZ25lZCkgZm9yIGh0dHBzIHNlcnZlci5cbiAgICAgKiBAdG9kbyAtIHB1dCBpbiBjb25maWcuLi5cbiAgICAgKi9cbiAgICB0aGlzLl9odHRwc0luZm9zID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIE1hcHBpbmcgYmV0d2VlbiBhIGBjbGllbnRUeXBlYCBhbmQgaXRzIHJlbGF0ZWQgYWN0aXZpdGllcy5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuX2NsaWVudFR5cGVBY3Rpdml0aWVzTWFwID0ge307XG5cbiAgICAvKipcbiAgICAgKiBSZXF1aXJlZCBhY3Rpdml0aWVzIHRoYXQgbXVzdCBiZSBzdGFydGVkLiBPbmx5IHVzZWQgaW4gRXhwZXJpZW5jZVxuICAgICAqIGFuZCBTZXJ2aWNlIC0gZG8gbm90IGV4cG9zZS5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuYWN0aXZpdGllcyA9IG5ldyBTZXQoKTtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbm5hbCByb3V0aW5nIGRlZmluZWQgZm9yIGVhY2ggY2xpZW50LlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICB0aGlzLl9yb3V0ZXMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICovXG4gICAgdGhpcy5faHRtbFRlbXBsYXRlQ29uZmlnID0ge1xuICAgICAgZW5naW5lOiBudWxsLFxuICAgICAgZGlyZWN0b3J5OiBudWxsLFxuICAgIH1cbiAgfVxuXG4gICAgLyoqXG4gICAqXG4gICAqIHNlcnZlciBjb25maWc6XG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5kZWZhdWx0Q2xpZW50PSdwbGF5ZXInXSAtIENsaWVudCB0aGF0IGNhbiBhY2Nlc3NcbiAgICogICB0aGUgYXBwbGljYXRpb24gYXQgaXRzIHJvb3QgdXJsLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMuZW52PSdkZXZlbG9wbWVudCddXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5wb3J0PTgwMDBdIC0gUG9ydCBvbiB3aGljaCB0aGUgaHR0cChzKSBzZXJ2ZXIgd2lsbFxuICAgKiAgIGxpc3RlblxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUh0dHBzPWZhbHNlXSAtIERlZmluZSB3aGV0ZXIgdG8gdXNlIG9yIG5vdCBhblxuICAgKiAgIGFuIGh0dHBzIHNlcnZlci5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLmh0dHBzSW5mb3M9bnVsbF0gLSBpZiBgdXNlSHR0cHNgIGlzIGB0cnVlYCwgb2JqZWN0XG4gICAqICAgdGhhdCBnaXZlIHRoZSBwYXRoIHRvIGBjZXJ0YCBhbmQgYGtleWAgZmlsZXMgKGB7IGNlcnQsIGtleSB9YCkuIElmIGBudWxsYFxuICAgKiAgIGFuIGF1dG8gZ2VuZXJhdGVkIGNlcnRpZmljYXRlIHdpbGwgYmUgZ2VuZXJhdGVkLCBiZSBhd2FyZSB0aGF0IGJyb3dzZXJzXG4gICAqICAgd2lsbCBjb25zaWRlciB0aGUgYXBwbGljYXRpb24gYXMgbm90IHNhZmUgaW4gdGhlIGNhc2UuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy53ZWJzb2NrZXQ9e31dIC0gVEJEXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy50ZW1wbGF0ZURpcmVjdG9yeT0nc3JjL3NlcnZlci90bXBsJ10gLSBGb2xkZXIgaW5cbiAgICogICB3aGljaCB0aGUgc2VydmVyIHdpbGwgbG9vayBmb3IgdGhlIGBpbmRleC5odG1sYCB0ZW1wbGF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2xpZW50Q29uZmlnRnVuY3Rpb24gLVxuICAgKi9cbiAgYXN5bmMgaW5pdChcbiAgICBjb25maWcgPSB7XG4gICAgICBlbnY6IHtcbiAgICAgICAgdHlwZTogJ2RldmVsb3BtZW50JyxcbiAgICAgICAgcG9ydDogODAwMCxcbiAgICAgICAgXCJ3ZWJzb2NrZXRzXCI6IHtcbiAgICAgICAgICBcInBhdGhcIjogXCJzb2NrZXRcIixcbiAgICAgICAgICBcInBpbmdJbnRlcnZhbFwiOiA1MDAwXG4gICAgICAgIH0sXG4gICAgICAgIFwidXNlSHR0cHNcIjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYXBwOiB7XG4gICAgICAgIG5hbWU6ICdzb3VuZHdvcmtzJyxcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsaWVudENvbmZpZ0Z1bmN0aW9uID0gKGNsaWVudFR5cGUsIHNlcnZlckNvbmZpZywgaHR0cFJlcXVlc3QpID0+ICh7IGNsaWVudFR5cGUgfSlcbiAgKSB7XG4gICAgLy8gbXVzdCBiZSBkb25lIHRoaXMgd2F5IHRvIGtlZXAgdGhlIGluc3RhbmNlIHNoYXJlZCAoPz8pXG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5fY2xpZW50Q29uZmlnRnVuY3Rpb24gPSBjbGllbnRDb25maWdGdW5jdGlvbjtcblxuICAgIHRoaXMuc2VydmljZU1hbmFnZXIuaW5pdCgpO1xuICAgIC8vIGFsbG93cyB0byBob29rIG1pZGRsZXdhcmUgYW5kIHJvdXRlcyAoZS5nLiBjb3JzKSBpbiB0aGUgcm91dGVyXG4gICAgLy8gYmV0d2VlbiBgc2VydmVyLmluaXRgIGFuZCBgc2VydmVyLnN0YXJ0YFxuICAgIHRoaXMucm91dGVyID0gcG9sa2EoKTtcbiAgICAvLyBjb21wcmVzc2lvbiAobXVzdCBiZSBzZXQgYmVmb3JlIHNlcnZlLXN0YXRpYylcbiAgICB0aGlzLnJvdXRlci51c2UoY29tcHJlc3Npb24oKSk7XG5cbiAgICB0aGlzLnN0YXRlTWFuYWdlciA9IG5ldyBTdGF0ZU1hbmFnZXIodGhpcyk7XG4gICAgdGhpcy5kYiA9IG5ldyBEYigpO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgLy8gaW5pdCBhY2l0dml0aWVzXG4gICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgIHRoaXMuYWN0aXZpdGllcy5mb3JFYWNoKChhY3Rpdml0eSkgPT4ge1xuICAgICAgICBhY3Rpdml0eS5jbGllbnRUeXBlcy5mb3JFYWNoKChjbGllbnRUeXBlKSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLl9jbGllbnRUeXBlQWN0aXZpdGllc01hcFtjbGllbnRUeXBlXSkge1xuICAgICAgICAgICAgdGhpcy5fY2xpZW50VHlwZUFjdGl2aXRpZXNNYXBbY2xpZW50VHlwZV0gPSBuZXcgU2V0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2xpZW50VHlwZUFjdGl2aXRpZXNNYXBbY2xpZW50VHlwZV0uYWRkKGFjdGl2aXR5KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gc3RhcnQgaHR0cCBzZXJ2ZXJcbiAgICAgIGNvbnN0IHVzZUh0dHBzID0gdGhpcy5jb25maWcuZW52LnVzZUh0dHBzIHx8wqBmYWxzZTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAvLyBjcmVhdGUgSFRUUChTKSBTRVJWRVJcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAvLyBjcmVhdGUgaHR0cCBzZXJ2ZXJcbiAgICAgICAgICBpZiAoIXVzZUh0dHBzKSB7XG4gICAgICAgICAgICBjb25zdCBodHRwU2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoaHR0cFNlcnZlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGh0dHBzSW5mb3MgPSB0aGlzLmNvbmZpZy5lbnYuaHR0cHNJbmZvcztcblxuICAgICAgICAgICAgaWYgKGh0dHBzSW5mb3Mua2V5ICYmIGh0dHBzSW5mb3MuY2VydCkge1xuICAgICAgICAgICAgICAvLyB1c2UgZ2l2ZW4gY2VydGlmaWNhdGVcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBmcy5yZWFkRmlsZVN5bmMoaHR0cHNJbmZvcy5rZXkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlcnQgPSBmcy5yZWFkRmlsZVN5bmMoaHR0cHNJbmZvcy5jZXJ0KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2h0dHBzSW5mb3MgPSB7IGtleSwgY2VydCB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGh0dHBzU2VydmVyID0gaHR0cHMuY3JlYXRlU2VydmVyKHRoaXMuX2h0dHBzSW5mb3MpO1xuICAgICAgICAgICAgICB9IGNhdGNoKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG5gSW52YWxpZCBjZXJ0aWZpY2F0ZSBmaWxlcywgcGxlYXNlIGNoZWNrIHlvdXI6XG4tIGtleSBmaWxlOiAke2h0dHBzSW5mb3Mua2V5fVxuLSBjZXJ0IGZpbGU6ICR7aHR0cHNJbmZvcy5jZXJ0fVxuICAgICAgICAgICAgICAgIGApO1xuXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShodHRwc1NlcnZlcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZGIuZ2V0KCdzZXJ2ZXI6aHR0cHNLZXknKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZXJ0ID0gYXdhaXQgdGhpcy5kYi5nZXQoJ3NlcnZlcjpodHRwc0NlcnQnKTtcblxuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09IG51bGwgJiYgY2VydCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5faHR0cHNJbmZvcyA9IHsga2V5LCBjZXJ0IH07XG4gICAgICAgICAgICAgICAgICBjb25zdCBodHRwc1NlcnZlciA9IGh0dHBzLmNyZWF0ZVNlcnZlcih0aGlzLl9odHRwc0luZm9zKTtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoaHR0cHNTZXJ2ZXIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBnZW5lcmF0ZSBjZXJ0aWZpY2F0ZSBvbiB0aGUgZmx5IChmb3IgZGV2ZWxvcG1lbnQgcHVycG9zZXMpXG4gICAgICAgICAgICAgICAgICBwZW0uY3JlYXRlQ2VydGlmaWNhdGUoeyBkYXlzOiAxLCBzZWxmU2lnbmVkOiB0cnVlIH0sIGFzeW5jIChlcnIsIGtleXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9odHRwc0luZm9zID0ge1xuICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5cy5zZXJ2aWNlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgIGNlcnQ6IGtleXMuY2VydGlmaWNhdGUsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5kYi5zZXQoJ3NlcnZlcjpodHRwc0tleScsIHRoaXMuX2h0dHBzSW5mb3Mua2V5KTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5kYi5zZXQoJ3NlcnZlcjpodHRwc0NlcnQnLCB0aGlzLl9odHRwc0luZm9zLmNlcnQpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGh0dHBzU2VydmVyID0gaHR0cHMuY3JlYXRlU2VydmVyKHRoaXMuX2h0dHBzSW5mb3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoaHR0cHNTZXJ2ZXIpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oaHR0cFNlcnZlciA9PiB7XG4gICAgICAgICAgdGhpcy5odHRwU2VydmVyID0gaHR0cFNlcnZlcjtcbiAgICAgICAgICB0aGlzLnJvdXRlci5zZXJ2ZXIgPSBodHRwU2VydmVyO1xuXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5faHRtbFRlbXBsYXRlQ29uZmlnLmVuZ2luZSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICB0aGlzLl9odG1sVGVtcGxhdGVDb25maWcuZGlyZWN0b3J5ID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaHRtbCB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uLCBwbGVhc2UgY2FsbCBgc2VydmVyLmNvbmZpZ3VyZUh0bWxUZW1wbGF0ZXMoZW5naW5lLCBkaXJlY3RvcnkpYCcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgIC8vIElOSVQgUk9VVElOR1xuICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgIGxvZ2dlci50aXRsZShgY29uZmlndXJlZCBjbGllbnRzIGFuZCByb3V0aW5nYCk7XG5cbiAgICAgICAgICBjb25zdCByb3V0ZXMgPSBbXTtcbiAgICAgICAgICBsZXQgZGVmYXVsdENsaWVudFR5cGUgPSBudWxsO1xuXG4gICAgICAgICAgZm9yIChsZXQgY2xpZW50VHlwZSBpbiB0aGlzLmNvbmZpZy5hcHAuY2xpZW50cykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmFwcC5jbGllbnRzW2NsaWVudFR5cGVdLmRlZmF1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdENsaWVudFR5cGUgPSBjbGllbnRUeXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB3ZSBtdXN0IG9wZW4gZGVmYXVsdCByb3V0ZSBsYXN0XG4gICAgICAgICAgZm9yIChsZXQgY2xpZW50VHlwZSBpbiB0aGlzLl9jbGllbnRUeXBlQWN0aXZpdGllc01hcCkge1xuICAgICAgICAgICAgaWYgKGNsaWVudFR5cGUgIT09IGRlZmF1bHRDbGllbnRUeXBlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLl9vcGVuQ2xpZW50Um91dGUoY2xpZW50VHlwZSwgdGhpcy5yb3V0ZXIpO1xuICAgICAgICAgICAgICByb3V0ZXMucHVzaCh7IGNsaWVudFR5cGUsIHBhdGggfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gb3BlbiBkZWZhdWx0IHJvdXRlIGxhc3RcbiAgICAgICAgICBmb3IgKGxldCBjbGllbnRUeXBlIGluIHRoaXMuX2NsaWVudFR5cGVBY3Rpdml0aWVzTWFwKSB7XG4gICAgICAgICAgICBpZiAoY2xpZW50VHlwZSA9PT0gZGVmYXVsdENsaWVudFR5cGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IHRoaXMuX29wZW5DbGllbnRSb3V0ZShjbGllbnRUeXBlLCB0aGlzLnJvdXRlciwgdHJ1ZSk7XG4gICAgICAgICAgICAgIHJvdXRlcy51bnNoaWZ0KHsgY2xpZW50VHlwZSwgcGF0aCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsb2dnZXIuY2xpZW50Q29uZmlnQW5kUm91dGluZyhyb3V0ZXMsIHRoaXMuY29uZmlnLmFwcC5jbGllbnRzLCB0aGlzLmNvbmZpZy5lbnYuc2VydmVySXApO1xuXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAvLyBTVEFSVCBTT0NLRVQgU0VSVkVSXG4gICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgdGhpcy5zb2NrZXRzLnN0YXJ0KFxuICAgICAgICAgICAgdGhpcy5odHRwU2VydmVyLFxuICAgICAgICAgICAgdGhpcy5jb25maWcuZW52LndlYnNvY2tldHMsXG4gICAgICAgICAgICAoY2xpZW50VHlwZSwgc29ja2V0KSA9PiB0aGlzLl9vblNvY2tldENvbm5lY3Rpb24oY2xpZW50VHlwZSwgc29ja2V0KVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH0pLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgIC8vIFNUQVJUIFNFUlZJQ0UgTUFOQUdFUlxuICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VNYW5hZ2VyLnN0YXJ0KCk7XG5cbiAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgLy8gU1RBUlQgSFRUUCBTRVJWRVJcbiAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcG9ydCA9IHRoaXMuY29uZmlnLmVudi5wb3J0O1xuICAgICAgICAgICAgY29uc3QgdXNlSHR0cHMgPSB0aGlzLmNvbmZpZy5lbnYudXNlSHR0cHMgfHzCoGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgcHJvdG9jb2wgPSB1c2VIdHRwcyA/ICdodHRwcycgOiAnaHR0cCc7XG4gICAgICAgICAgICBjb25zdCBpZmFjZXMgPSBvcy5uZXR3b3JrSW50ZXJmYWNlcygpO1xuXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5saXN0ZW4ocG9ydCwgKCkgPT4ge1xuICAgICAgICAgICAgICBsb2dnZXIudGl0bGUoYCR7cHJvdG9jb2x9IHNlcnZlciBsaXN0ZW5pbmcgb25gKTtcblxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpZmFjZXMpLmZvckVhY2goZGV2ID0+IHtcbiAgICAgICAgICAgICAgICBpZmFjZXNbZGV2XS5mb3JFYWNoKGRldGFpbHMgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGRldGFpbHMuZmFtaWx5ID09PSAnSVB2NCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmlwKHByb3RvY29sLCBkZXRhaWxzLmFkZHJlc3MsIHBvcnQpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZU1hbmFnZXIuc3RhcnQoKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0gY2F0Y2goZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGV4YW1wbGVcbiAgICogYGBganNcbiAgICogc291bmR3b3Jrcy5yZWdpc3RlclNlcnZpY2Uoc2VydmljZUZhY3RvcnkpOyAvLyBkbyBub3QgZG9jdW1lbnQgdGhhdCwgbWF5YmUgcmVtb3ZlXG4gICAqIC8vIG9yXG4gICAqIHNvdW5kd29ya3MucmVnaXN0ZXJTZXJ2aWNlKCd1c2VyLWRlZmluZWQtbmFtZScsIHNlcnZpY2VGYWN0b3J5KTtcbiAgICogYGBgXG4gICAqL1xuICByZWdpc3RlclNlcnZpY2UobmFtZSwgZmFjdG9yeSA9IG51bGwsIGNvbmZpZyA9IHt9LCBkZXBzID0gW10pIHtcbiAgICBjb25zdCBjdG9yID0gZmFjdG9yeShTZXJ2aWNlKTtcbiAgICB0aGlzLnNlcnZpY2VNYW5hZ2VyLnJlZ2lzdGVyKG5hbWUsIGN0b3IsIGNvbmZpZywgZGVwcyk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIGh0bWwgdGVtcGxhdGUgaW5mb3JtYXRpb25zXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBlbmdpbmUgLSBUZW1wbGF0ZSBlbmdpbmUgdGhhdCBzaG91bGQgaW1wbGVtZW50IGEgYGNvbXBpbGVgIG1ldGhvZC5cbiAgICogQHBhcmFtIHtTdHJpbmd9IGRpcmVjdG9yeSAtIFBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSB0ZW1wbGF0ZXMsXG4gICAqICBhbnkgZmlsZW5hbWUgY29ycmVzcG9uZGluZyB0byBhIHJlZ2lzdGVyZWQgYnJvd3NlciBjbGllbnQgdHlwZSB3aWxsIGJlIHVzZWRcbiAgICogIGluIHByaW9yaXR5LCBpbiBub3QgcHJlc2VudCBmYWxsYmFjayB0byBgZGVmYXVsdGAgKGkuZSBgJHtjbGllbnRUeXBlfS50bXBsYFxuICAgKiAgd2l0aCBmYWxsYmFjayB0byBgZGVmYXVsdC50bXBsYC4gVGVtcGxhdGUgZmlsZXMgbXVzdCBoYXZlIHRoZSBgLnRtcGxgIGV4dGVuc2lvbi5cbiAgICovXG4gIGNvbmZpZ3VyZUh0bWxUZW1wbGF0ZXMoZW5naW5lLCBkaXJlY3RvcnkpIHtcbiAgICB0aGlzLl9odG1sVGVtcGxhdGVDb25maWcuZW5naW5lID0gZW5naW5lO1xuICAgIHRoaXMuX2h0bWxUZW1wbGF0ZUNvbmZpZy5kaXJlY3RvcnkgPSBkaXJlY3Rvcnk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiB0aGUgcm91dGUgZm9yIHRoZSBnaXZlbiBjbGllbnQuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfb3BlbkNsaWVudFJvdXRlKGNsaWVudFR5cGUsIHJvdXRlciwgaXNEZWZhdWx0ID0gZmFsc2UpIHtcbiAgICBsZXQgcm91dGUgPSAnLyc7XG5cbiAgICBpZiAoIWlzRGVmYXVsdCkge1xuICAgICAgcm91dGUgKz0gYCR7Y2xpZW50VHlwZX1gO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9yb3V0ZXNbY2xpZW50VHlwZV0pIHtcbiAgICAgIHJvdXRlICs9IHRoaXMuX3JvdXRlc1tjbGllbnRUeXBlXTtcbiAgICB9XG5cbiAgICAvLyBkZWZpbmUgdGVtcGxhdGUgZmlsZW5hbWU6IGAke2NsaWVudFR5cGV9Lmh0bWxgIG9yIGBkZWZhdWx0Lmh0bWxgXG4gICAgY29uc3QgdGVtcGxhdGVEaXJlY3RvcnkgPSB0aGlzLl9odG1sVGVtcGxhdGVDb25maWcuZGlyZWN0b3J5O1xuICAgIGNvbnN0IGNsaWVudFRtcGwgPSBwYXRoLmpvaW4odGVtcGxhdGVEaXJlY3RvcnksIGAke2NsaWVudFR5cGV9LnRtcGxgKTtcbiAgICBjb25zdCBkZWZhdWx0VG1wbCA9IHBhdGguam9pbih0ZW1wbGF0ZURpcmVjdG9yeSwgYGRlZmF1bHQudG1wbGApO1xuXG4gICAgLy8gbWFrZSBpdCBzeW5jXG4gICAgbGV0IHRlbXBsYXRlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMoY2xpZW50VG1wbCk7XG4gICAgICB0ZW1wbGF0ZSA9IHN0YXRzLmlzRmlsZSgpID8gY2xpZW50VG1wbCA6IGRlZmF1bHRUbXBsO1xuICAgIH0gY2F0Y2goZXJyKSB7XG4gICAgICB0ZW1wbGF0ZSA9IGRlZmF1bHRUbXBsO1xuICAgIH1cblxuICAgIGNvbnN0IHRtcGxTdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmModGVtcGxhdGUsICd1dGY4Jyk7XG4gICAgY29uc3QgdG1wbCA9IHRoaXMuX2h0bWxUZW1wbGF0ZUNvbmZpZy5lbmdpbmUuY29tcGlsZSh0bXBsU3RyaW5nKTtcbiAgICAvLyBodHRwIHJlcXVlc3RcbiAgICByb3V0ZXIuZ2V0KHJvdXRlLCAocmVxLCByZXMpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9jbGllbnRDb25maWdGdW5jdGlvbihjbGllbnRUeXBlLCB0aGlzLmNvbmZpZywgcmVxKTtcbiAgICAgIGNvbnN0IGFwcEluZGV4ID0gdG1wbChkYXRhKTtcbiAgICAgIHJlcy5lbmQoYXBwSW5kZXgpO1xuICAgIH0pO1xuXG4gICAgLy8gcmV0dXJuIHJvdXRlIGluZm9zIGZvciBsb2dnaW5nIG9uIHNlcnZlciBzdGFydFxuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb2NrZXQgY29ubmVjdGlvbiBjYWxsYmFjay5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9vblNvY2tldENvbm5lY3Rpb24oY2xpZW50VHlwZSwgc29ja2V0KSB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IENsaWVudChjbGllbnRUeXBlLCBzb2NrZXQpO1xuICAgIGNvbnN0IGFjdGl2aXRpZXMgPSB0aGlzLl9jbGllbnRUeXBlQWN0aXZpdGllc01hcFtjbGllbnRUeXBlXTtcblxuICAgIHNvY2tldC5hZGRMaXN0ZW5lcignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAvLyBjbGVhbiBzb2NrZXRzXG4gICAgICBzb2NrZXQudGVybWluYXRlKCk7XG4gICAgICAvLyByZW1vdmUgY2xpZW50IGZyb20gYWN0aXZpdGllc1xuICAgICAgYWN0aXZpdGllcy5mb3JFYWNoKGFjdGl2aXR5ID0+IGFjdGl2aXR5LmRpc2Nvbm5lY3QoY2xpZW50KSk7XG4gICAgICAvLyBkZXN0cm95IGNsaWVudFxuICAgICAgY2xpZW50LmRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIHNvY2tldC5hZGRMaXN0ZW5lcignczpjbGllbnQ6aGFuZHNoYWtlJywgZGF0YSA9PiB7XG4gICAgICAvLyBpbiBkZXZlbG9wbWVudCwgaWYgc2VydmljZSByZXF1aXJlZCBjbGllbnQtc2lkZSBidXQgbm90IHNlcnZlci1zaWRlLFxuICAgICAgLy8gY29tcGxhaW4gcHJvcGVybHkgY2xpZW50LXNpZGUuXG4gICAgICBpZiAodGhpcy5jb25maWcuZW52LnR5cGUgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAvLyBjaGVjayBjb2hlcmVuY2UgYmV0d2VlbiBjbGllbnQtc2lkZSBhbmQgc2VydmVyLXNpZGUgc2VydmljZSByZXF1aXJlbWVudHNcbiAgICAgICAgY29uc3QgY2xpZW50UmVxdWlyZWRTZXJ2aWNlcyA9IGRhdGEucmVxdWlyZWRTZXJ2aWNlcyB8fMKgW107XG4gICAgICAgIGNvbnN0IHNlcnZlclJlcXVpcmVkU2VydmljZXMgPSB0aGlzLnNlcnZpY2VNYW5hZ2VyLmdldFJlcXVpcmVkU2VydmljZXMoY2xpZW50VHlwZSk7XG4gICAgICAgIGNvbnN0IG1pc3NpbmdTZXJ2aWNlcyA9IFtdO1xuXG4gICAgICAgIGNsaWVudFJlcXVpcmVkU2VydmljZXMuZm9yRWFjaChzZXJ2aWNlSWQgPT4ge1xuICAgICAgICAgIGlmIChzZXJ2ZXJSZXF1aXJlZFNlcnZpY2VzLmluZGV4T2Yoc2VydmljZUlkKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIG1pc3NpbmdTZXJ2aWNlcy5wdXNoKHNlcnZpY2VJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAobWlzc2luZ1NlcnZpY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBlcnIgPSB7XG4gICAgICAgICAgICB0eXBlOiAnc2VydmljZXMnLFxuICAgICAgICAgICAgZGF0YTogbWlzc2luZ1NlcnZpY2VzLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBzb2NrZXQuc2VuZCgnczpjbGllbnQ6ZXJyb3InLCBlcnIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhY3Rpdml0aWVzLmZvckVhY2goYWN0aXZpdHkgPT4gYWN0aXZpdHkuY29ubmVjdChjbGllbnQpKTtcblxuICAgICAgY29uc3QgeyBpZCwgdXVpZCB9ID0gY2xpZW50O1xuICAgICAgc29ja2V0LnNlbmQoJ3M6Y2xpZW50OnN0YXJ0JywgeyBpZCwgdXVpZCB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTZXJ2ZXI7XG4iXX0=
exports.default = _default;

@@ -18,2 +18,3 @@ "use strict";

// import
const log = (0, _debug.default)('soundworks:lifecycle');

@@ -66,3 +67,5 @@ /**

start: new _SignalAll.default(),
ready: new _Signal.default()
started: new _Signal.default(),
ready: new _Signal.default(),
errored: new _Signal.default()
};

@@ -87,4 +90,11 @@ /**

start() {
start() {// logger.serviceStart(this.name);
}
started() {
// @note - this as no strong incidence on the initialization lifecycle,
// maybe should be enforced
_logger.default.serviceStart(this.name);
this.signals.started.value = true;
}

@@ -114,3 +124,2 @@ /**

var _default = Service;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2ZXIvU2VydmljZS5qcyJdLCJuYW1lcyI6WyJsb2ciLCJTZXJ2aWNlIiwiY29uc3RydWN0b3IiLCJzZXJ2ZXIiLCJuYW1lIiwib3B0aW9ucyIsInNpZ25hbHMiLCJzdGFydCIsIlNpZ25hbEFsbCIsInJlYWR5IiwiU2lnbmFsIiwiY2xpZW50VHlwZXMiLCJTZXQiLCJhY3Rpdml0aWVzIiwiYWRkIiwiYWRkT2JzZXJ2ZXIiLCJ2YWx1ZSIsImJpbmQiLCJjb25maWd1cmUiLCJkZWZhdWx0cyIsIk9iamVjdCIsImFzc2lnbiIsImxvZ2dlciIsInNlcnZpY2VTdGFydCIsInNlcnZpY2VSZWFkeSIsImNvbm5lY3QiLCJjbGllbnQiLCJpZCIsImRpc2Nvbm5lY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLE1BQU1BLEdBQUcsR0FBRyxvQkFBTSxzQkFBTixDQUFaO0FBRUE7Ozs7OztBQUtBLE1BQU1DLE9BQU4sQ0FBYztBQUNaQyxFQUFBQSxXQUFXLENBQUNDLE1BQUQsRUFBU0MsSUFBVCxFQUFlO0FBQUU7O0FBQzFCOzs7Ozs7O0FBT0EsU0FBS0QsTUFBTCxHQUFjQSxNQUFkO0FBRUE7Ozs7Ozs7O0FBT0EsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBRUE7Ozs7Ozs7OztBQVFBLFNBQUtDLE9BQUwsR0FBZSxFQUFmO0FBRUE7Ozs7Ozs7QUFNQSxTQUFLQyxPQUFMLEdBQWU7QUFDYkMsTUFBQUEsS0FBSyxFQUFFLElBQUlDLGtCQUFKLEVBRE07QUFFYkMsTUFBQUEsS0FBSyxFQUFFLElBQUlDLGVBQUo7QUFGTSxLQUFmO0FBS0E7Ozs7QUFHQSxTQUFLQyxXQUFMLEdBQW1CLElBQUlDLEdBQUosRUFBbkIsQ0EzQ3dCLENBNkN4Qjs7QUFDQSxTQUFLVCxNQUFMLENBQVlVLFVBQVosQ0FBdUJDLEdBQXZCLENBQTJCLElBQTNCLEVBOUN3QixDQWdEeEI7O0FBQ0EsU0FBS1IsT0FBTCxDQUFhQyxLQUFiLENBQW1CUSxXQUFuQixDQUErQkMsS0FBSyxJQUFJLEtBQUtULEtBQUwsRUFBeEM7QUFFQSxTQUFLRSxLQUFMLEdBQWEsS0FBS0EsS0FBTCxDQUFXUSxJQUFYLENBQWdCLElBQWhCLENBQWI7QUFDRDs7QUFFREMsRUFBQUEsU0FBUyxDQUFDQyxRQUFELEVBQVdkLE9BQVgsRUFBb0I7QUFDM0IsV0FBT2UsTUFBTSxDQUFDQyxNQUFQLENBQWMsS0FBS2hCLE9BQW5CLEVBQTRCYyxRQUE1QixFQUFzQ2QsT0FBdEMsQ0FBUDtBQUNEO0FBRUQ7OztBQUNBRSxFQUFBQSxLQUFLLEdBQUc7QUFDTmUsb0JBQU9DLFlBQVAsQ0FBb0IsS0FBS25CLElBQXpCO0FBQ0Q7QUFFRDs7Ozs7O0FBSUFLLEVBQUFBLEtBQUssR0FBRztBQUNOYSxvQkFBT0UsWUFBUCxDQUFvQixLQUFLcEIsSUFBekI7O0FBQ0EsU0FBS0UsT0FBTCxDQUFhRyxLQUFiLENBQW1CTyxLQUFuQixHQUEyQixJQUEzQjtBQUNEOztBQUVEUyxFQUFBQSxPQUFPLENBQUNDLE1BQUQsRUFBUztBQUNkMUIsSUFBQUEsR0FBRyxDQUFFLGFBQVkwQixNQUFNLENBQUNDLEVBQUcsc0JBQXFCLEtBQUt2QixJQUFLLEdBQXZELENBQUg7QUFDRDs7QUFFRHdCLEVBQUFBLFVBQVUsQ0FBQ0YsTUFBRCxFQUFTO0FBQ2pCMUIsSUFBQUEsR0FBRyxDQUFFLGFBQVkwQixNQUFNLENBQUNDLEVBQUcseUJBQXdCLEtBQUt2QixJQUFLLEdBQTFELENBQUg7QUFDRDs7QUEvRVc7O2VBa0ZDSCxPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNpZ25hbCBmcm9tICcuLi9jb21tb24vU2lnbmFsJztcbmltcG9ydCBTaWduYWxBbGwgZnJvbSAnLi4vY29tbW9uL1NpZ25hbEFsbCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL3V0aWxzL2xvZ2dlcic7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdzb3VuZHdvcmtzOmxpZmVjeWNsZScpO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgdG8gYmUgZXh0ZW5kZWQgaW4gb3JkZXIgdG8gY3JlYXRlIGEgbmV3IHNlcnZpY2UuXG4gKlxuICogQG1lbWJlcm9mIEBzb3VuZHdvcmtzL2NvcmUvc2VydmVyXG4gKi9cbmNsYXNzIFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihzZXJ2ZXIsIG5hbWUpIHsgLy8gc2hvdWxkIHJlY2VpdmUgc291bmR3b3JrcyBpbnN0YW5jZSBhcyBhcmd1bWVudFxuICAgIC8qKlxuICAgICAqIEluc3RhbmNlIG9mIHNvdW5kd29ya3Mgc2VydmVyXG4gICAgICogQHR5cGUge1N0cmluZ31cbiAgICAgKiBAbmFtZSBzZXJ2ZXJcbiAgICAgKiBAaW5zdGFuY2VcbiAgICAgKiBAbWVtYmVyb2YgbW9kdWxlOkBzb3VuZHdvcmtzL2NvcmUvc2VydmVyLlNlcnZpY2VcbiAgICAgKi9cbiAgICB0aGlzLnNlcnZlciA9IHNlcnZlcjtcblxuICAgIC8qKlxuICAgICAqIElkIG9mIHRoZSBzZXJ2aWNlLlxuICAgICAqIEB0eXBlIHtTdHJpbmd9XG4gICAgICogQG5hbWUgbmFtZVxuICAgICAqIEBpbnN0YW5jZVxuICAgICAqIEBtZW1iZXJvZiBtb2R1bGU6QHNvdW5kd29ya3MvY29yZS9zZXJ2ZXIuU2VydmljZVxuICAgICAqL1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25zIG9mIHRoZSBhY3Rpdml0eS4gVGhlc2UgdmFsdWVzIHNob3VsZCBiZSB1cGRhdGVkIHdpdGggdGhlXG4gICAgICogYHRoaXMuY29uZmlndXJlYCBtZXRob2QuXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKiBAbmFtZSBvcHRpb25zXG4gICAgICogQGluc3RhbmNlXG4gICAgICogQG1lbWJlcm9mIG1vZHVsZTpAc291bmR3b3Jrcy9jb3JlL3NlcnZlci5TZXJ2aWNlXG4gICAgICovXG4gICAgdGhpcy5vcHRpb25zID0ge307XG5cbiAgICAvKipcbiAgICAgKiBTaWduYWxzIGRlZmluaW5nIHRoZSBwcm9jZXNzIHN0YXRlLlxuICAgICAqIEBuYW1lIHNpZ25hbFxuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICogQGluc3RhbmNlb2YgUHJvY2Vzc1xuICAgICAqL1xuICAgIHRoaXMuc2lnbmFscyA9IHtcbiAgICAgIHN0YXJ0OiBuZXcgU2lnbmFsQWxsKCksXG4gICAgICByZWFkeTogbmV3IFNpZ25hbCgpXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICovXG4gICAgdGhpcy5jbGllbnRUeXBlcyA9IG5ldyBTZXQoKTtcblxuICAgIC8vIHJlZ2lzdGVyIGluIHRoZSBzZXJ2ZXJcbiAgICB0aGlzLnNlcnZlci5hY3Rpdml0aWVzLmFkZCh0aGlzKTtcblxuICAgIC8vIHN0YXJ0IHdoZW4gYWxsIHJlcXVpcmVkIHNpZ25hbHMgYXJlIGZpcmVkXG4gICAgdGhpcy5zaWduYWxzLnN0YXJ0LmFkZE9ic2VydmVyKHZhbHVlID0+IHRoaXMuc3RhcnQoKSk7XG5cbiAgICB0aGlzLnJlYWR5ID0gdGhpcy5yZWFkeS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgY29uZmlndXJlKGRlZmF1bHRzLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCBkZWZhdWx0cywgb3B0aW9ucyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgc3RhcnQoKSB7XG4gICAgbG9nZ2VyLnNlcnZpY2VTdGFydCh0aGlzLm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBjYWxsIGluIHRoZSBzZXJ2aWNlIGxpZmVjeWNsZSB3aGVuIGl0IHNob3VsZCBiZSBjb25zaWRlcmVkIGFzXG4gICAqIGByZWFkeWAgYW5kIHRodXMgYWxsb3dzIGFsbCBpdHMgZGVwZW5kZW50IGFjdGl2aXRpZXMgdG8gc3RhcnQgdGhlbXNlbHZlcy5cbiAgICovXG4gIHJlYWR5KCkge1xuICAgIGxvZ2dlci5zZXJ2aWNlUmVhZHkodGhpcy5uYW1lKTtcbiAgICB0aGlzLnNpZ25hbHMucmVhZHkudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgY29ubmVjdChjbGllbnQpIHtcbiAgICBsb2coYD4gW2NsaWVudCAke2NsaWVudC5pZH1dIGNvbm5lY3Qgc2VydmljZSBcIiR7dGhpcy5uYW1lfVwiYCk7XG4gIH1cblxuICBkaXNjb25uZWN0KGNsaWVudCkge1xuICAgIGxvZyhgPiBbY2xpZW50ICR7Y2xpZW50LmlkfV0gZGlzY29ubmVjdCBzZXJ2aWNlIFwiJHt0aGlzLm5hbWV9XCJgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTZXJ2aWNlO1xuIl19
exports.default = _default;

@@ -103,3 +103,6 @@ "use strict";

if (!this._registeredServices[name]) {
throw new Error(`Service "${name}" is not defined`);
throw new Error(`Cannot get or require service "${name}", service is not registered
> registered services are:
${Object.keys(this._registeredServices).map(n => `> - ${n}\n`).join('')}
`);
} // required by experience and manager already started

@@ -118,4 +121,3 @@

dependencies
} = this._registeredServices[name]; // @todo - update that to `new ctor(name, options)`
} = this._registeredServices[name];
const instance = new ctor(this._server, name, options);

@@ -171,3 +173,2 @@ this.signals.ready.add(instance.signals.ready);

var _default = ServiceManager;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2ZXIvU2VydmljZU1hbmFnZXIuanMiXSwibmFtZXMiOlsibG9nIiwiU2VydmljZU1hbmFnZXIiLCJjb25zdHJ1Y3RvciIsInNlcnZlciIsIl9yZWdpc3RlcmVkU2VydmljZXMiLCJfaW5zdGFuY2VzIiwiX3NlcnZlciIsImluaXQiLCJzaWduYWxzIiwic3RhcnQiLCJTaWduYWwiLCJyZWFkeSIsIlNpZ25hbEFsbCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiX3Jlc29sdmVSZWFkeVByb21pc2UiLCJsb2dnZXIiLCJ0aXRsZSIsImFkZE9ic2VydmVyIiwidmFsdWUiLCJsZW5ndGgiLCJyZWdpc3RlciIsIm5hbWUiLCJjdG9yIiwib3B0aW9ucyIsImRlcGVuZGVuY2llcyIsIkVycm9yIiwiZ2V0IiwiX2V4cGVyaWVuY2UiLCJpbnN0YW5jZSIsImFkZCIsImZvckVhY2giLCJkZXBlbmRlbmN5TmFtZSIsImRlcGVuZGVuY3kiLCJjbGllbnRUeXBlcyIsImNsaWVudFR5cGUiLCJnZXRSZXF1aXJlZFNlcnZpY2VzIiwic2VydmljZXMiLCJoYXMiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNQSxHQUFHLEdBQUcsb0JBQU0sc0JBQU4sQ0FBWjtBQUVBOzs7Ozs7O0FBTUEsTUFBTUMsY0FBTixDQUFxQjtBQUNuQkMsRUFBQUEsV0FBVyxDQUFDQyxNQUFELEVBQVM7QUFDbEI7QUFDQSxTQUFLQyxtQkFBTCxHQUEyQixFQUEzQjtBQUNBOztBQUNBLFNBQUtDLFVBQUwsR0FBa0IsRUFBbEI7QUFDQTs7QUFDQSxTQUFLQyxPQUFMLEdBQWVILE1BQWY7QUFDRDtBQUVEOzs7QUFDQUksRUFBQUEsSUFBSSxHQUFHO0FBQ0xQLElBQUFBLEdBQUcsQ0FBQyx1QkFBRCxDQUFIO0FBRUEsU0FBS1EsT0FBTCxHQUFlO0FBQ2JDLE1BQUFBLEtBQUssRUFBRSxJQUFJQyxlQUFKLEVBRE07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QUVELFdBQU9lLFFBQVA7QUFDRDs7QUEvSGtCOztlQWtJTnJDLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2lnbmFsIGZyb20gJy4uL2NvbW1vbi9TaWduYWwnO1xuaW1wb3J0IFNpZ25hbEFsbCBmcm9tICcuLi9jb21tb24vU2lnbmFsQWxsJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vdXRpbHMvbG9nZ2VyJztcblxuY29uc3QgbG9nID0gZGVidWcoJ3NvdW5kd29ya3M6bGlmZWN5Y2xlJyk7XG5cbi8qKlxuICogTWFuYWdlciB0aGUgc2VydmljZXMgYW5kIHRoZWlyIHJlbGF0aW9ucy4gQWN0cyBhcyBhIGZhY3RvcnkgdG8gZW5zdXJlIHNlcnZpY2VzXG4gKiBhcmUgaW5zdGFuY2lhdGVkIG9ubHkgb25jZS5cbiAqXG4gKiBAbWVtYmVyb2YgQHNvdW5kd29ya3MvY29yZS9zZXJ2ZXJcbiAqL1xuY2xhc3MgU2VydmljZU1hbmFnZXIge1xuICBjb25zdHJ1Y3RvcihzZXJ2ZXIpIHtcbiAgICAvKiogQHByaXZhdGUgKi9cbiAgICB0aGlzLl9yZWdpc3RlcmVkU2VydmljZXMgPSB7fTtcbiAgICAvKiogQHByaXZhdGUgKi9cbiAgICB0aGlzLl9pbnN0YW5jZXMgPSB7fTtcbiAgICAvKiogQHByaXZhdGUgKi9cbiAgICB0aGlzLl9zZXJ2ZXIgPSBzZXJ2ZXI7XG4gIH1cblxuICAvKiogQHByaXZhdGUgKi9cbiAgaW5pdCgpIHtcbiAgICBsb2coJz4gc2VydmljZU1hbmFnZXIgaW5pdCcpO1xuXG4gICAgdGhpcy5zaWduYWxzID0ge1xuICAgICAgc3RhcnQ6IG5ldyBTaWduYWwoKSxcbiAgICAgIHJlYWR5OiBuZXcgU2lnbmFsQWxsKCksXG4gICAgfTtcblxuICAgIHRoaXMucmVhZHkgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLl9yZXNvbHZlUmVhZHlQcm9taXNlID0gcmVzb2x2ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAcHJpdmF0ZSAqL1xuICBzdGFydCgpIHtcbiAgICBsb2coJz4gc2VydmljZU1hbmFnZXIgc3RhcnQnKTtcbiAgICBsb2dnZXIudGl0bGUoJ2luaXRpYWxpemluZyBzZXJ2aWNlcycpO1xuXG4gICAgdGhpcy5zaWduYWxzLnJlYWR5LmFkZE9ic2VydmVyKCgpID0+IHtcbiAgICAgIGxvZygnPiBzZXJ2aWNlTWFuYWdlciByZWFkeScpO1xuICAgICAgdGhpcy5fcmVzb2x2ZVJlYWR5UHJvbWlzZSgpO1xuICAgIH0pO1xuXG4gICAgLy8gc3RhcnQgYmVmb3JlIHJlYWR5LCBldmVuIGlmIG5vIGRlcGVuZGVuY2llc1xuICAgIHRoaXMuc2lnbmFscy5zdGFydC52YWx1ZSA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5zaWduYWxzLnJlYWR5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zaWduYWxzLnJlYWR5LnZhbHVlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZWFkeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHNlcnZpY2VcbiAgICogQHByaXZhdGVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBzZXJ2aWNlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGN0b3IgLSBDb25zdHJ1Y3RvciBvZiB0aGUgc2VydmljZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBzZXJ2aWNlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGRlcGVuZGVuY2llcyAtIExpc3Qgb2Ygc2VydmljZXMnIG5hbWVzIHRoZSBzZXJ2aWNlIGRlcGVuZHMgb25cbiAgICovXG4gIHJlZ2lzdGVyKG5hbWUsIGN0b3IsIG9wdGlvbnMgPSB7fSwgZGVwZW5kZW5jaWVzID0gW10pIHtcbiAgICBpZiAodGhpcy5fcmVnaXN0ZXJlZFNlcnZpY2VzW25hbWVdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlcnZpY2UgXCIke25hbWV9XCIgYWxyZWFkeSByZWdpc3RlcmVkYCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVnaXN0ZXJlZFNlcnZpY2VzW25hbWVdID0geyBjdG9yLCBvcHRpb25zLCBkZXBlbmRlbmNpZXMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhbiBpbnN0YW5jZSBvZiBhIHJlZ2lzdGVyZWQgc2VydmljZSBhY2NvcmRpbmcgdG8gaXRzIGdpdmVuIG5hbWUuXG4gICAqIEV4Y2VwdCBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcsIHByZWZlciBgRXhwZXJpZW5jZS5yZXF1aXJlKCdteS1zZXJ2aWNlJylgXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIC0gTmFtZSBvZiB0aGUgcmVnaXN0ZXJlZCBzZXJ2aWNlXG4gICAqL1xuICBnZXQobmFtZSwgX2V4cGVyaWVuY2UgPSBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9yZWdpc3RlcmVkU2VydmljZXNbbmFtZV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2VydmljZSBcIiR7bmFtZX1cIiBpcyBub3QgZGVmaW5lZGApO1xuICAgIH1cblxuICAgIC8vIHJlcXVpcmVkIGJ5IGV4cGVyaWVuY2UgYW5kIG1hbmFnZXIgYWxyZWFkeSBzdGFydGVkXG4gICAgaWYgKF9leHBlcmllbmNlICYmIHRoaXMuc2lnbmFscy5zdGFydC52YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJ2aWNlIFwiJHtuYW1lfVwiIHJlcXVpcmVkIGFmdGVyIHNlcnZpY2VNYW5hZ2VyIHN0YXJ0YCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9pbnN0YW5jZXNbbmFtZV0pIHtcbiAgICAgIGxvZyhgPiBpbnN0YW5jaWF0aW5nIHNlcnZpY2UgXCIke25hbWV9XCJgKTtcbiAgICAgIGNvbnN0IHsgY3Rvciwgb3B0aW9ucywgZGVwZW5kZW5jaWVzIH0gPSB0aGlzLl9yZWdpc3RlcmVkU2VydmljZXNbbmFtZV07XG4gICAgICAvLyBAdG9kbyAtIHVwZGF0ZSB0aGF0IHRvIGBuZXcgY3RvcihuYW1lLCBvcHRpb25zKWBcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IGN0b3IodGhpcy5fc2VydmVyLCBuYW1lLCBvcHRpb25zKTtcblxuICAgICAgdGhpcy5zaWduYWxzLnJlYWR5LmFkZChpbnN0YW5jZS5zaWduYWxzLnJlYWR5KTtcbiAgICAgIGluc3RhbmNlLnNpZ25hbHMuc3RhcnQuYWRkKHRoaXMuc2lnbmFscy5zdGFydCk7XG5cbiAgICAgIGlmIChkZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXBlbmRlbmNpZXMuZm9yRWFjaChkZXBlbmRlbmN5TmFtZSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZXNbZGVwZW5kZW5jeU5hbWVdKSB7XG4gICAgICAgICAgICB0aGlzLmdldChkZXBlbmRlbmN5TmFtZSwgX2V4cGVyaWVuY2UpOyAvLyBwcm9wYWdhdGUgY2xpZW50IHR5cGVzXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGVwZW5kZW5jeSA9IHRoaXMuX2luc3RhbmNlc1tkZXBlbmRlbmN5TmFtZV07XG4gICAgICAgICAgaW5zdGFuY2Uuc2lnbmFscy5zdGFydC5hZGQoZGVwZW5kZW5jeS5zaWduYWxzLnJlYWR5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cblxuICAgICAgdGhpcy5faW5zdGFuY2VzW25hbWVdID0gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLl9pbnN0YW5jZXNbbmFtZV07XG5cbiAgICAvLyBpZiByZXF1aXJlIGJ5IHRoZSBleHBlcmllbmNlLCBtYXAgY2xpZW50IHR5cGVzXG4gICAgaWYgKF9leHBlcmllbmNlKSB7XG4gICAgICBfZXhwZXJpZW5jZS5jbGllbnRUeXBlcy5mb3JFYWNoKChjbGllbnRUeXBlKSA9PiB7XG4gICAgICAgIGluc3RhbmNlLmNsaWVudFR5cGVzLmFkZChjbGllbnRUeXBlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIC8qKiBAcHJpdmF0ZSAqL1xuICBnZXRSZXF1aXJlZFNlcnZpY2VzKGNsaWVudFR5cGUgPSBudWxsKSB7XG4gICAgY29uc3Qgc2VydmljZXMgPSBbXTtcblxuICAgIGZvciAobGV0IG5hbWUgaW4gdGhpcy5faW5zdGFuY2VzKSB7XG4gICAgICBpZiAoY2xpZW50VHlwZSAhPT0gbnVsbCkge1xuICAgICAgICBpZiAodGhpcy5faW5zdGFuY2VzW25hbWVdLmNsaWVudFR5cGVzLmhhcyhjbGllbnRUeXBlKSkge1xuICAgICAgICAgIHNlcnZpY2VzLnB1c2gobmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlcnZpY2VzLnB1c2gobmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcnZpY2VzO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNlcnZpY2VNYW5hZ2VyO1xuIl19
exports.default = _default;

@@ -338,3 +338,2 @@ "use strict";

var _default = Socket;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2ZXIvU29ja2V0LmpzIl0sIm5hbWVzIjpbIm5vb3AiLCJjb3VudGVyIiwiQ09OTkVDVElORyIsIk9QRU4iLCJDTE9TSU5HIiwiQ0xPU0VEIiwiUkVBRFlfU1RBVEVTIiwiU29ja2V0IiwiY29uc3RydWN0b3IiLCJ3cyIsImJpbmFyeVdzIiwicm9vbXMiLCJzb2NrZXRzIiwib3B0aW9ucyIsImNvbmZpZyIsInBpbmdJbnRlcnZhbCIsIl9zdHJpbmdMaXN0ZW5lcnMiLCJNYXAiLCJfYmluYXJ5TGlzdGVuZXJzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJjaGFubmVsIiwiYXJncyIsImRhdGEiLCJfZW1pdCIsImZvckVhY2giLCJldmVudE5hbWUiLCJfaXNBbGl2ZSIsIm9uIiwiX2ludGVydmFsSWQiLCJzZXRJbnRlcnZhbCIsInBpbmciLCJhZGRMaXN0ZW5lciIsImVyciIsInRlcm1pbmF0ZSIsImNsZWFySW50ZXJ2YWwiLCJrZXkiLCJyb29tIiwiZGVsZXRlIiwiY2xlYXIiLCJzb2NrZXQiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJiaW5hcnkiLCJsaXN0ZW5lcnMiLCJoYXMiLCJjYWxsYmFja3MiLCJnZXQiLCJjYWxsYmFjayIsIl9hZGRMaXN0ZW5lciIsInNldCIsIlNldCIsImFkZCIsIl9yZW1vdmVMaXN0ZW5lciIsInNpemUiLCJfcmVtb3ZlQWxsTGlzdGVuZXJzIiwiYWRkVG9Sb29tIiwicm9vbUlkIiwicmVtb3ZlRnJvbVJvb20iLCJzZW5kIiwibXNnIiwiY29uc29sZSIsImVycm9yIiwicmVtb3ZlTGlzdGVuZXIiLCJzZW5kQmluYXJ5IiwidHlwZWRBcnJheSIsImFkZEJpbmFyeUxpc3RlbmVyIiwicmVtb3ZlQmluYXJ5TGlzdGVuZXIiLCJyZW1vdmVBbGxCaW5hcnlMaXN0ZW5lcnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFPQSxNQUFNQSxJQUFJLEdBQUcsTUFBTSxDQUFFLENBQXJCOztBQUVBLElBQUlDLE9BQU8s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QVYsRUFBb0I7QUFDbkMsU0FBS0MsWUFBTCxDQUFrQixLQUFLOUIsZ0JBQXZCLEVBQXlDRyxPQUF6QyxFQUFrRDBCLFFBQWxEO0FBQ0Q7QUFFRDs7Ozs7Ozs7QUFNQW1CLEVBQUFBLG9CQUFvQixDQUFDN0MsT0FBRCxFQUFVMEIsUUFBVixFQUFvQjtBQUN0QyxTQUFLSyxlQUFMLENBQXFCLEtBQUtsQyxnQkFBMUIsRUFBNENHLE9BQTVDLEVBQXFEMEIsUUFBckQ7QUFDRDtBQUVEOzs7Ozs7O0FBS0FvQixFQUFBQSx3QkFBd0IsQ0FBQzlDLE9BQUQsRUFBVTtBQUNoQyxTQUFLaUMsbUJBQUwsQ0FBeUIsS0FBS3BDLGdCQUE5QixFQUFnREcsT0FBaEQ7QUFDRDs7QUFqVVU7O2VBb1VFZCxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgcGFja0JpbmFyeU1lc3NhZ2UsXG4gIHVucGFja0JpbmFyeU1lc3NhZ2UsXG4gIHBhY2tTdHJpbmdNZXNzYWdlLFxuICB1bnBhY2tTdHJpbmdNZXNzYWdlLFxufSBmcm9tICcuLi9jb21tb24vc29ja2V0cy1lbmNvZGVyLWRlY29kZXInO1xuXG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbmxldCBjb3VudGVyID0gMDtcblxuY29uc3QgQ09OTkVDVElORyA9IDA7XG5jb25zdCBPUEVOID0gMTtcbmNvbnN0IENMT1NJTkcgPSAyO1xuY29uc3QgQ0xPU0VEID0gMztcbmNvbnN0IFJFQURZX1NUQVRFUyA9IFsnQ09OTkVDVElORycsICdPUEVOJywgJ0NMT1NJTkcnLCAnQ0xPU0VEJ11cblxuLyoqXG4gKiBTaW1wbGUgd3JhcHBlciB3aXRoIHNpbXBsZSBwdWJzdWIgc3lzdGVtIGJ1aWx0IG9uIHRvcCBvZiBgd3NgIHNvY2tldC5cbiAqIFRoZSBhYnN0cmFjdGlvbiBhY3R1YWxseSBjb250YWlucyB0d28gZGlmZmVyZW50IHNvY2tldDpcbiAqIC0gb25lIGNvbmZpZ3VyZWQgZm9yIHN0cmluZyAoSlNPTiBjb21wYXRpYmxlKSBtZXNzYWdlc1xuICogLSBvbmUgY29uZmlndXJlZCB3aXRoIGBiaW5hcnlUeXBlPWFycmF5YnVmZmVyYCBmb3Igc3RyZWFtaW5nIGRhdGEgbW9yZVxuICogICBlZmZpY2llbnRseS5cbiAqIFRoZSBzb2NrZXQgcmUtZW1pdHMgYWxsIFwibmF0aXZlXCIgd3MgZXZlbnRzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3NcbiAqXG4gKiBAbWVtYmVyb2YgQHNvdW5kd29ya3MvY29yZS9zZXJ2ZXJcbiAqL1xuY2xhc3MgU29ja2V0IHtcbiAgLyoqIEBwcml2YXRlICovXG4gIGNvbnN0cnVjdG9yKHdzLCBiaW5hcnlXcywgcm9vbXMsIHNvY2tldHMsIG9wdGlvbnMgPSB7fSkge1xuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byB0aGUgc29ja2V0cyBvYmplY3QsIGlzIG1haW5seSBkZWRpY2F0ZWQgdG8gYWxsb3dcbiAgICAgKiBicm9hZGNhc3RpbmcgZnJvbSBhIGdpdmVuIHNvY2tldCBpbnN0YW5jZS5cbiAgICAgKiBAdHlwZSB7bW9kdWxlOnNvdW5kd29ya3Mvc2VydmVyLnNvY2tldHN9XG4gICAgICogQG5hbWUgc29ja2V0c1xuICAgICAqIEBpbnN0YW5jZVxuICAgICAqIEBtZW1iZXJvZiBtb2R1bGU6c291bmR3b3Jrcy9zZXJ2ZXIuU29ja2V0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBzb2NrZXQuc29ja2V0cy5icm9hZGNhc3QoJ215LXJvb20nLCB0aGlzLCAndXBkYXRlLXZhbHVlJywgMSk7XG4gICAgICovXG4gICAgdGhpcy5zb2NrZXRzID0gc29ja2V0cztcblxuICAgIC8qKlxuICAgICAqIGB3c2Agc29ja2V0IGluc3RhbmNlIGNvbmZpZ3VyZWQgd2l0aCBgYmluYXJ5VHlwZT1ibG9iYCAoc3RyaW5nKVxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKiBAbmFtZSBfd3NcbiAgICAgKiBAaW5zdGFuY2VcbiAgICAgKiBAbWVtYmVyb2YgbW9kdWxlOnNvdW5kd29ya3Mvc2VydmVyLlNvY2tldFxuICAgICAqL1xuICAgIHRoaXMud3MgPSB3cztcblxuICAgIC8qKlxuICAgICAqIGB3c2Agc29ja2V0IGluc3RhbmNlIGNvbmZpZ3VyZWQgd2l0aCBgYmluYXJ5VHlwZT1hcnJheWJ1ZmZlcmAgKFR5cGVkQXJyYXkpXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqIEBuYW1lIF9iaW5hcnlXc1xuICAgICAqIEBpbnN0YW5jZVxuICAgICAqIEBtZW1iZXJvZiBtb2R1bGU6c291bmR3b3Jrcy9zZXJ2ZXIuU29ja2V0XG4gICAgICovXG4gICAgdGhpcy5iaW5hcnlXcyA9IGJpbmFyeVdzO1xuXG4gICAgLyoqXG4gICAgICogYHdzYCBzb2NrZXQgaW5zdGFuY2UgY29uZmlndXJlZCB3aXRoIGBiaW5hcnlUeXBlPWFycmF5YnVmZmVyYCAoVHlwZWRBcnJheSlcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEB0eXBlIHtNYXB9XG4gICAgICogQG5hbWUgX3Jvb21zXG4gICAgICogQGluc3RhbmNlXG4gICAgICogQG1lbWJlcm9mIG1vZHVsZTpzb3VuZHdvcmtzL3NlcnZlci5Tb2NrZXRcbiAgICAgKi9cbiAgICB0aGlzLnJvb21zID0gcm9vbXNcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKiBAbmFtZSBfY29uZmlnXG4gICAgICogQGluc3RhbmNlXG4gICAgICogQG1lbWJlcm9mIG1vZHVsZTpzb3VuZHdvcmtzL3NlcnZlci5Tb2NrZXRcbiAgICAgKi9cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIHBpbmdJbnRlcnZhbDogNSAqIDEwMDAsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICB0aGlzLl9zdHJpbmdMaXN0ZW5lcnMgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5fYmluYXJ5TGlzdGVuZXJzID0gbmV3IE1hcCgpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGluaXQgc3RyaW5nIHNvY2tldFxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICB0aGlzLndzLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBlID0+IHtcbiAgICAgIGNvbnN0IFtjaGFubmVsLCBhcmdzXSA9IHVucGFja1N0cmluZ01lc3NhZ2UoZS5kYXRhKTtcbiAgICAgIHRoaXMuX2VtaXQoZmFsc2UsIGNoYW5uZWwsIC4uLmFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLy8gYnJvYWRjYXN0IGFsbCBgd3NgIFwibmF0aXZlXCIgZXZlbnRzXG4gICAgWyAnY2xvc2UnLFxuICAgICAgJ2Vycm9yJyxcbiAgICAgICdtZXNzYWdlJyxcbiAgICAgICdvcGVuJyxcbiAgICAgICdwaW5nJyxcbiAgICAgICdwb25nJyxcbiAgICAgICd1bmV4cGVjdGVkLXJlc3BvbnNlJyxcbiAgICAgICd1cGdyYWRlJyxcbiAgICBdLmZvckVhY2goZXZlbnROYW1lID0+IHtcbiAgICAgIHRoaXMud3MuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGUgPT4ge1xuICAgICAgICB0aGlzLl9lbWl0KGZhbHNlLCBldmVudE5hbWUsIGUuZGF0YSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBpbml0IGJpbmFyeSBzb2NrZXRcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdGhpcy5iaW5hcnlXcy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZSA9PiB7XG4gICAgICBjb25zdCBbY2hhbm5lbCwgZGF0YV0gPSB1bnBhY2tCaW5hcnlNZXNzYWdlKGUuZGF0YSk7XG4gICAgICB0aGlzLl9lbWl0KHRydWUsIGNoYW5uZWwsIGRhdGEpO1xuICAgIH0pO1xuXG4gICAgLy8gYnJvYWRjYXN0IGFsbCBgd3NgIFwibmF0aXZlXCIgZXZlbnRzXG4gICAgWyAnY2xvc2UnLFxuICAgICAgJ2Vycm9yJyxcbiAgICAgICdtZXNzYWdlJyxcbiAgICAgICdvcGVuJyxcbiAgICAgICdwaW5nJyxcbiAgICAgICdwb25nJyxcbiAgICAgICd1bmV4cGVjdGVkLXJlc3BvbnNlJyxcbiAgICAgICd1cGdyYWRlJyxcbiAgICBdLmZvckVhY2goZXZlbnROYW1lID0+IHtcbiAgICAgIHRoaXMuYmluYXJ5V3MuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGUgPT4ge1xuICAgICAgICB0aGlzLl9lbWl0KHRydWUsIGV2ZW50TmFtZSwgZS5kYXRhKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gaGVhcnRiZWF0IHN5c3RlbSAocnVuIG9ubHkgb24gc3RyaW5nIHNvY2tldCksIGFkYXB0ZWQgZnJvbTpcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2Vic29ja2V0cy93cyNob3ctdG8tZGV0ZWN0LWFuZC1jbG9zZS1icm9rZW4tY29ubmVjdGlvbnNcbiAgICB0aGlzLl9pc0FsaXZlID0gdHJ1ZTtcbiAgICAvLyBoZWFydGJlYXQgc3lzdGVtLCBvbmx5IG9uIFwicmVndWxhclwiIHNvY2tldFxuICAgIHRoaXMud3Mub24oJ3BvbmcnLCAoKSA9PiB7XG4gICAgICB0aGlzLl9pc0FsaXZlID0gdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGhpcy5faW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc0FsaXZlID09PSBmYWxzZSkge1xuICAgICAgICAvLyBlbWl0IGEgJ2Nsb3NlJyBldmVudCB0byBnbyB0cm91Z2ggYWxsIHRoZSBkaXNjb25uZWN0aW9uIHBpcGVsaW5lXG4gICAgICAgIHRoaXMuX2VtaXQoZmFsc2UsICdjbG9zZScpO1xuICAgICAgICByZXR1cm47XG4gICAgICAgIC8vIHJldHVybiB0aGlzLndzLnRlcm1pbmF0ZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc0FsaXZlID0gZmFsc2U7XG4gICAgICB0aGlzLndzLnBpbmcobm9vcCk7XG4gICAgfSwgdGhpcy5jb25maWcucGluZ0ludGVydmFsKTtcblxuICAgIHRoaXMud3MuYWRkTGlzdGVuZXIoJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jbGllbnRJZCwgZXJyKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBDYWxsZWQgd2hlbiB0aGUgc3RyaW5nIHNvY2tldCBjbG9zZXMgKGFrYSBjbGllbnQgcmVsb2FkKS5cbiAgICovXG4gIHRlcm1pbmF0ZSgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsSWQpO1xuICAgIC8vIGNsZWFuIHJvb21zXG4gICAgZm9yIChsZXQgW2tleSwgcm9vbV0gb2YgdGhpcy5yb29tcykge1xuICAgICAgcm9vbS5kZWxldGUodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gY2xlYXIgcmVmZXJlbmNlcyB0byBzb2NrZXRzIGFuZCByb29tc1xuICAgIHRoaXMuc29ja2V0cyA9IG51bGw7XG4gICAgdGhpcy5yb29tcyA9IG51bGw7XG5cbiAgICAvLyBjbGVhciBhbGwgbGlzdGVuZXJzXG4gICAgdGhpcy5fc3RyaW5nTGlzdGVuZXJzLmNsZWFyKCk7XG4gICAgdGhpcy5fYmluYXJ5TGlzdGVuZXJzLmNsZWFyKCk7XG5cbiAgICAvLyBjbGVhciBcIm5hdGl2ZVwiIGxpc3RlbmVyc1xuICAgIFt0aGlzLmJpbmFyeVdzLCB0aGlzLndzXS5mb3JFYWNoKChzb2NrZXQpID0+IHtcbiAgICAgIFsgJ2Nsb3NlJyxcbiAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgJ21lc3NhZ2UnLFxuICAgICAgICAnb3BlbicsXG4gICAgICAgICdwaW5nJyxcbiAgICAgICAgJ3BvbmcnLFxuICAgICAgICAndW5leHBlY3RlZC1yZXNwb25zZScsXG4gICAgICAgICd1cGdyYWRlJ1xuICAgICAgXS5mb3JFYWNoKGV2ZW50TmFtZSA9PiB7XG4gICAgICAgIHNvY2tldC5yZW1vdmVBbGxMaXN0ZW5lcnMoZXZlbnROYW1lKTtcbiAgICAgIH0pXG4gICAgfSk7XG5cbiAgICAvLyBjbGVhciBiaW5hcnlTb2NrZXQgYXMgdGhpcyBpcyBjYWxsZWQgZnJvbSB0aGUgc3RyaW5nIG9uZS5cbiAgICB0aGlzLmJpbmFyeVdzLnRlcm1pbmF0ZSgpO1xuICAgIHRoaXMud3MudGVybWluYXRlKCk7XG4gIH1cblxuICAvKiogQHByaXZhdGUgKi9cbiAgX2VtaXQoYmluYXJ5LCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gICAgY29uc3QgbGlzdGVuZXJzID0gYmluYXJ5ID8gdGhpcy5fYmluYXJ5TGlzdGVuZXJzIDogdGhpcy5fc3RyaW5nTGlzdGVuZXJzO1xuXG4gICAgaWYgKGxpc3RlbmVycy5oYXMoY2hhbm5lbCkpIHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrcyA9IGxpc3RlbmVycy5nZXQoY2hhbm5lbCk7XG4gICAgICBjYWxsYmFja3MuZm9yRWFjaChjYWxsYmFjayA9PiBjYWxsYmFjayguLi5hcmdzKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBwcml2YXRlICovXG4gIF9hZGRMaXN0ZW5lcihsaXN0ZW5lcnMsIGNoYW5uZWwsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFsaXN0ZW5lcnMuaGFzKGNoYW5uZWwpKSB7XG4gICAgICBsaXN0ZW5lcnMuc2V0KGNoYW5uZWwsIG5ldyBTZXQoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2FsbGJhY2tzID0gbGlzdGVuZXJzLmdldChjaGFubmVsKTtcbiAgICBjYWxsYmFja3MuYWRkKGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKiBAcHJpdmF0ZSAqL1xuICBfcmVtb3ZlTGlzdGVuZXIobGlzdGVuZXJzLCBjaGFubmVsLCBjYWxsYmFjaykge1xuICAgIGlmIChsaXN0ZW5lcnMuaGFzKGNoYW5uZWwpKSB7XG4gICAgICBjb25zdCBjYWxsYmFja3MgPSBsaXN0ZW5lcnMuZ2V0KGNoYW5uZWwpO1xuICAgICAgY2FsbGJhY2tzLmRlbGV0ZShjYWxsYmFjayk7XG5cbiAgICAgIGlmIChjYWxsYmFja3Muc2l6ZSA9PT0gMCkge1xuICAgICAgICBsaXN0ZW5lcnMuZGVsZXRlKGNoYW5uZWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcHJpdmF0ZSAqL1xuICBfcmVtb3ZlQWxsTGlzdGVuZXJzKGxpc3RlbmVycywgY2hhbm5lbCkge1xuICAgIGlmIChsaXN0ZW5lcnMuaGFzKGNoYW5uZWwpKSB7XG4gICAgICBsaXN0ZW5lcnMuZGVsZXRlKGNoYW5uZWwpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgc29ja2V0IHRvIGEgcm9vbVxuICAgKiBAcGFyYW0ge1N0cmluZ30gcm9vbUlkIC0gSWQgb2YgdGhlIHJvb21cbiAgICovXG4gIGFkZFRvUm9vbShyb29tSWQpIHtcbiAgICBpZiAoIXRoaXMucm9vbXMuaGFzKHJvb21JZCkpIHtcbiAgICAgIHRoaXMucm9vbXMuc2V0KHJvb21JZCwgbmV3IFNldCgpKTtcbiAgICB9XG5cbiAgICBjb25zdCByb29tID0gdGhpcy5yb29tcy5nZXQocm9vbUlkKTtcbiAgICByb29tLmFkZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIHNvY2tldCBmcm9tIGEgcm9vbVxuICAgKiBAcGFyYW0ge1N0cmluZ30gcm9vbUlkIC0gSWQgb2YgdGhlIHJvb21cbiAgICovXG4gIHJlbW92ZUZyb21Sb29tKHJvb21JZCkge1xuICAgIGlmICh0aGlzLnJvb21zLmhhcyhyb29tSWQpKSB7XG4gICAgICBjb25zdCByb29tID0gdGhpcy5yb29tcy5nZXQocm9vbUlkKTtcbiAgICAgIHJvb20uZGVsZXRlKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kcyBKU09OIGNvbXBhdGlibGUgbWVzc2FnZXMgb24gYSBnaXZlbiBjaGFubmVsXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjaGFubmVsIC0gVGhlIGNoYW5uZWwgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHsuLi4qfSBhcmdzIC0gQXJndW1lbnRzIG9mIHRoZSBtZXNzYWdlIChhcyBtYW55IGFzIG5lZWRlZCwgb2YgYW55IHR5cGUpXG4gICAqL1xuICBzZW5kKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBtc2cgPSBwYWNrU3RyaW5nTWVzc2FnZShjaGFubmVsLCAuLi5hcmdzKTtcblxuICAgIHRoaXMud3Muc2VuZChtc2csIChlcnIpID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3Igc2VuZGluZyBtc2c6JywgY2hhbm5lbCwgYXJncywgZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gSlNPTiBjb21wYXRpYmxlIG1lc3NhZ2VzIG9uIGEgZ2l2ZW4gY2hhbm5lbFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gY2hhbm5lbCAtIENoYW5uZWwgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHsuLi4qfSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIGV4ZWN1dGUgd2hlbiBhIG1lc3NhZ2UgaXMgcmVjZWl2ZWRcbiAgICovXG4gIGFkZExpc3RlbmVyKGNoYW5uZWwsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5fYWRkTGlzdGVuZXIodGhpcy5fc3RyaW5nTGlzdGVuZXJzLCBjaGFubmVsLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgbGlzdGVuZXIgZnJvbSBKU09OIGNvbXBhdGlibGUgbWVzc2FnZXMgb24gYSBnaXZlbiBjaGFubmVsXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjaGFubmVsIC0gQ2hhbm5lbCBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0gey4uLip9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gY2FuY2VsXG4gICAqL1xuICByZW1vdmVMaXN0ZW5lcihjaGFubmVsLCBjYWxsYmFjaykge1xuICAgIHRoaXMuX3JlbW92ZUxpc3RlbmVyKHRoaXMuX3N0cmluZ0xpc3RlbmVycywgY2hhbm5lbCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgbGlzdGVuZXJzIGZyb20gSlNPTiBjb21wYXRpYmxlIG1lc3NhZ2VzIG9uIGEgZ2l2ZW4gY2hhbm5lbFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gY2hhbm5lbCAtIENoYW5uZWwgb2YgdGhlIG1lc3NhZ2VcbiAgICovXG4gIHJlbW92ZUFsbExpc3RlbmVycyhjaGFubmVsKSB7XG4gICAgdGhpcy5fcmVtb3ZlQWxsTGlzdGVuZXJzKHRoaXMuX3N0cmluZ0xpc3RlbmVycywgY2hhbm5lbCk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZHMgYmluYXJ5IG1lc3NhZ2VzIG9uIGEgZ2l2ZW4gY2hhbm5lbFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gY2hhbm5lbCAtIENoYW5uZWwgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtUeXBlZEFycmF5fSB0eXBlZEFycmF5IC0gRGF0YSB0byBzZW5kXG4gICAqL1xuICBzZW5kQmluYXJ5KGNoYW5uZWwsIHR5cGVkQXJyYXkpIHtcbiAgICBjb25zdCBtc2cgPSBwYWNrQmluYXJ5TWVzc2FnZShjaGFubmVsLCB0eXBlZEFycmF5KTtcblxuICAgIHRoaXMuYmluYXJ5V3Muc2VuZChtc2csIChlcnIpID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3Igc2VuZGluZyBtc2c6JywgY2hhbm5lbCwgdHlwZWRBcnJheSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGJpbmFyeSBtZXNzYWdlcyBvbiBhIGdpdmVuIGNoYW5uZWxcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGNoYW5uZWwgLSBDaGFubmVsIG9mIHRoZSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7Li4uKn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byBleGVjdXRlIHdoZW4gYSBtZXNzYWdlIGlzIHJlY2VpdmVkXG4gICAqL1xuICBhZGRCaW5hcnlMaXN0ZW5lcihjaGFubmVsLCBjYWxsYmFjaykge1xuICAgIHRoaXMuX2FkZExpc3RlbmVyKHRoaXMuX2JpbmFyeUxpc3RlbmVycywgY2hhbm5lbCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIGxpc3RlbmVyIGZyb20gYmluYXJ5IGNvbXBhdGlibGUgbWVzc2FnZXMgb24gYSBnaXZlbiBjaGFubmVsXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjaGFubmVsIC0gQ2hhbm5lbCBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0gey4uLip9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gY2FuY2VsXG4gICAqL1xuICByZW1vdmVCaW5hcnlMaXN0ZW5lcihjaGFubmVsLCBjYWxsYmFjaykge1xuICAgIHRoaXMuX3JlbW92ZUxpc3RlbmVyKHRoaXMuX2JpbmFyeUxpc3RlbmVycywgY2hhbm5lbCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgbGlzdGVuZXJzIGZyb20gYmluYXJ5IGNvbXBhdGlibGUgbWVzc2FnZXMgb24gYSBnaXZlbiBjaGFubmVsXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjaGFubmVsIC0gQ2hhbm5lbCBvZiB0aGUgbWVzc2FnZVxuICAgKi9cbiAgcmVtb3ZlQWxsQmluYXJ5TGlzdGVuZXJzKGNoYW5uZWwpIHtcbiAgICB0aGlzLl9yZW1vdmVBbGxMaXN0ZW5lcnModGhpcy5fYmluYXJ5TGlzdGVuZXJzLCBjaGFubmVsKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTb2NrZXQ7XG4iXX0=
exports.default = _default;

@@ -184,3 +184,2 @@ "use strict";

var _default = Sockets;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2ZXIvU29ja2V0cy5qcyJdLCJuYW1lcyI6WyJTb2NrZXRzIiwiY29uc3RydWN0b3IiLCJfcm9vbXMiLCJNYXAiLCJfaW5pdGlhbGl6YXRpb25DYWNoZSIsInN0YXJ0IiwiaHR0cFNlcnZlciIsImNvbmZpZyIsIm9uQ29ubmVjdGlvbkNhbGxiYWNrIiwicGF0aCIsInNldCIsIlNldCIsIndzcyIsIldlYlNvY2tldCIsIlNlcnZlciIsInNlcnZlciIsIm9uIiwid3MiLCJyZXEiLCJxdWVyeVN0cmluZyIsInF1ZXJ5c3RyaW5nIiwiZGVjb2RlIiwidXJsIiwic3BsaXQiLCJjbGllbnRUeXBlIiwia2V5IiwiYmluYXJ5IiwicGFyc2VJbnQiLCJiaW5hcnlUeXBlIiwiaGFzIiwiY2FjaGVkIiwiZ2V0IiwiZGVsZXRlIiwic3RyaW5nV3MiLCJiaW5hcnlXcyIsInNvY2tldCIsIlNvY2tldCIsImFkZFRvUm9vbSIsIl9icm9hZGNhc3QiLCJyb29tSWRzIiwiZXhjbHVkZVNvY2tldCIsImNoYW5uZWwiLCJhcmdzIiwibWV0aG9kIiwidGFyZ2V0cyIsInJvb21zSWRzIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9yRWFjaCIsInJvb21JZCIsInJvb20iLCJhZGQiLCJyZWFkeVN0YXRlIiwiT1BFTiIsInJlbW92ZUZyb21Sb29tIiwiYnJvYWRjYXN0IiwiYnJvYWRjYXN0QmluYXJ5IiwidHlwZWRBcnJheSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7O0FBRUE7Ozs7Ozs7Ozs7QUFVQSxNQUFNQSxPQUFOLENBQWM7QUFDWkMsRUFBQUEsV0FBVyxHQUFHO0FBQ1o7Ozs7QUFJQSxTQUFLQyxNQUFMLEdBQWMsSUFBSUMsR0FBSixFQUFkO0FBRUEsU0FBS0Msb0JBQUwsR0FBNEIsSUFBSUQsR0FBSixFQUE1QjtBQUNEO0FBRUQ7Ozs7Ozs7OztBQU9BRSxFQUFBQSxLQUFLLENBQUNDLFVBQUQsRUFBYUMsTUFBYixFQUFxQkMsb0JBQXJC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QixLQUFoQixFQUF1QkMsT0FBdkIsRUFBZ0NDLGFBQWhDLEVBQStDQyxPQUEvQyxFQUF3RCxHQUFHQyxJQUEzRDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0FBWUFjLEVBQUFBLGVBQWUsQ0FBQ2pCLE9BQUQsRUFBVUMsYUFBVixFQUF5QkMsT0FBekIsRUFBa0NnQixVQUFsQyxFQUE4QztBQUMzRCxTQUFLbkIsVUFBTCxDQUFnQixJQUFoQixFQUFzQkMsT0FBdEIsRUFBK0JDLGFBQS9CLEVBQThDQyxPQUE5QyxFQUF1RGdCLFVBQXZEO0FBQ0Q7O0FBM0lXOztBQTRJYjtlQUVjekQsTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXZWJTb2NrZXQgZnJvbSAnd3MnO1xuaW1wb3J0IHF1ZXJ5c3RyaW5nIGZyb20gJ3F1ZXJ5c3RyaW5nJztcbmltcG9ydCBTb2NrZXQgZnJvbSAnLi9Tb2NrZXQnO1xuXG4vKipcbiAqIEludGVybmFsIGJhc2UgY2xhc3MgZm9yIHNlcnZpY2VzIGFuZCBzY2VuZXMuXG4gKlxuICogQHRvZG8gLSByZW1vdmUgYWxsIGBzZW5kYCwgYGFkZExpc3RlbmVyYCwgYHJlbW92ZUxpc3RlbmVyYCBtZXRob2RzLFxuICogICAgICAgICB1c2UgYGNsaWVudC5zb2NrZXRgIGluc3RlYWQuXG4gKlxuICogd2lsbCBiZSBtb3JlIHNpbXBsZSB0byBkb2N1bWVudC5cbiAqXG4gKiBAbWVtYmVyb2YgQHNvdW5kd29ya3MvY29yZS9zZXJ2ZXJcbiAqL1xuY2xhc3MgU29ja2V0cyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8qKlxuICAgICAqIFN0b3JlIHNvY2tldHMgcGVyIHJvb20uIFRoZSByb21tIGAnKidgIHN0b3JlIGFsbCBjdXJyZW50IGNvbm5lY3Rpb25zLlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5fcm9vbXMgPSBuZXcgTWFwKCk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXphdGlvbkNhY2hlID0gbmV3IE1hcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgc29ja2V0cywgYWxsIHNvY2tldHMgYXJlIGFkZGVkIGJ5IGRlZmF1bHQgYWRkZWQgdG8gdHdvIHJvb21zOlxuICAgKiAtIHRvIHRoZSByb29tIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNsaWVudCBgY2xpZW50VHlwZWBcbiAgICogLSB0byB0aGUgJyonIHRoYXQgaG9sZHMgYWxsIGNvbm5lY3RlZCBzb2NrZXRzXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdGFydChodHRwU2VydmVyLCBjb25maWcsIG9uQ29ubmVjdGlvbkNhbGxiYWNrKSB7XG4gICAgY29uc3QgcGF0aCA9ICdzb2NrZXQnOyAvLyBzaG91bGQgcmVtb3ZlIG9yaWdpblxuICAgIC8vIGluaXQgZ2xvYmFsIHJvb21cbiAgICB0aGlzLl9yb29tcy5zZXQoJyonLCBuZXcgU2V0KCkpO1xuXG4gICAgdGhpcy53c3MgPSBuZXcgV2ViU29ja2V0LlNlcnZlcih7XG4gICAgICBzZXJ2ZXI6IGh0dHBTZXJ2ZXIsXG4gICAgICBwYXRoOiBgLyR7cGF0aH1gLCAvLyBAbm90ZSAtIHVwZGF0ZSBhY2NvcmRpbmcgdG8gZXhpc3RpbmcgY29uZmlnIGZpbGVzIChha2EgY29zaW1hLWFwcHMpXG4gICAgfSk7XG5cbiAgICB0aGlzLndzcy5vbignY29ubmVjdGlvbicsICh3cywgcmVxKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeVN0cmluZyA9IHF1ZXJ5c3RyaW5nLmRlY29kZShyZXEudXJsLnNwbGl0KCc/JylbMV0pO1xuICAgICAgY29uc3QgeyBjbGllbnRUeXBlLCBrZXkgfSA9IHF1ZXJ5U3RyaW5nO1xuICAgICAgY29uc3QgYmluYXJ5ID0gISEocGFyc2VJbnQocXVlcnlTdHJpbmcuYmluYXJ5KSk7XG5cbiAgICAgIGlmIChiaW5hcnkpIHtcbiAgICAgICAgd3MuYmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6YXRpb25DYWNoZS5oYXMoa2V5KSkge1xuICAgICAgICB0aGlzLl9pbml0aWFsaXphdGlvbkNhY2hlLnNldChrZXksIHsgd3MsIGJpbmFyeSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuX2luaXRpYWxpemF0aW9uQ2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemF0aW9uQ2FjaGUuZGVsZXRlKGtleSk7XG5cbiAgICAgICAgLy8gc2hvdWxkIGJlIGluIG9yZGVyLCBidXQganVzdCB0byBiZSBzdXJlXG4gICAgICAgIGNvbnN0IHN0cmluZ1dzID0gY2FjaGVkLmJpbmFyeSA/IHdzIDogY2FjaGVkLndzO1xuICAgICAgICBjb25zdCBiaW5hcnlXcyA9IGNhY2hlZC5iaW5hcnkgPyBjYWNoZWQud3MgOiB3cztcbiAgICAgICAgY29uc3Qgc29ja2V0ID0gbmV3IFNvY2tldChzdHJpbmdXcywgYmluYXJ5V3MsIHRoaXMuX3Jvb21zLCB0aGlzLCBjb25maWcpO1xuXG4gICAgICAgIHNvY2tldC5hZGRUb1Jvb20oJyonKTtcbiAgICAgICAgc29ja2V0LmFkZFRvUm9vbShjbGllbnRUeXBlKTtcblxuICAgICAgICBvbkNvbm5lY3Rpb25DYWxsYmFjayhjbGllbnRUeXBlLCBzb2NrZXQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBwcml2YXRlICovXG4gIF9icm9hZGNhc3QoYmluYXJ5LCByb29tSWRzLCBleGNsdWRlU29ja2V0LCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gICAgY29uc3QgbWV0aG9kID0gYmluYXJ5ID8gJ3NlbmRCaW5hcnknIDogJ3NlbmQnO1xuICAgIGxldCB0YXJnZXRzID0gbmV3IFNldCgpO1xuXG4gICAgaWYgKHR5cGVvZiByb29tc0lkcyA9PT0gJ3N0cmluZycgfHzCoEFycmF5LmlzQXJyYXkocm9vbUlkcykpIHtcbiAgICAgIGlmICh0eXBlb2Ygcm9vbXNJZHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJvb21JZHMgPSBbcm9vbUlkc107XG4gICAgICB9XG5cbiAgICAgIHJvb21JZHMuZm9yRWFjaChyb29tSWQgPT4ge1xuICAgICAgICBpZiAodGhpcy5fcm9vbXMuaGFzKHJvb21JZCkpIHtcbiAgICAgICAgICBjb25zdCByb29tID0gdGhpcy5fcm9vbXMuZ2V0KHJvb21JZCk7XG4gICAgICAgICAgcm9vbS5mb3JFYWNoKHNvY2tldCA9PiB0YXJnZXRzLmFkZChzb2NrZXQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldHMgPSB0aGlzLl9yb29tcy5nZXQoJyonKTtcbiAgICB9XG5cbiAgICB0YXJnZXRzLmZvckVhY2goc29ja2V0ID0+IHtcbiAgICAgIGlmIChzb2NrZXQud3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgICAgaWYgKGV4Y2x1ZGVTb2NrZXQgIT09IG51bGwpIHtcbiAgICAgICAgICBpZiAoc29ja2V0ICE9PSBleGNsdWRlU29ja2V0KSB7XG4gICAgICAgICAgICBzb2NrZXRbbWV0aG9kXShjaGFubmVsLCAuLi5hcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc29ja2V0W21ldGhvZF0oY2hhbm5lbCwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzb2NrZXQgdG8gYSByb29tXG4gICAqXG4gICAqIEBwYXJhbSB7U29ja2V0fSBtb2R1bGU6c291bmR3b3Jrcy9zZXJ2ZXIuU29ja2V0IC0gU29ja2V0IHRvIHJlZ2lzdGVyIGluIHRoZSByb29tLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gcm9vbUlkIC0gSWQgb2YgdGhlIHJvb21cbiAgICovXG4gIGFkZFRvUm9vbShzb2NrZXQsIHJvb21JZCkge1xuICAgIHNvY2tldC5hZGRUb1Jvb20ocm9vbUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBzb2NrZXQgZnJvbSBhIHJvb21cbiAgICpcbiAgICogQHBhcmFtIHtTb2NrZXR9IG1vZHVsZTpzb3VuZHdvcmtzL3NlcnZlci5Tb2NrZXQgLSBTb2NrZXQgdG8gcmVnaXN0ZXIgaW4gdGhlIHJvb20uXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbcm9vbUlkPW51bGxdIC0gSWQgb2YgdGhlIHJvb21cbiAgICovXG4gIHJlbW92ZUZyb21Sb29tKHNvY2tldCwgcm9vbUlkKSB7XG4gICAgc29ja2V0LnJlbW92ZUZyb21Sb29tKHJvb21JZCk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBhIHN0cmluZyBtZXNzYWdlIHRvIGFsbCBjbGllbnQgb2YgZ2l2ZW4gcm9vbShzKS4gSWYgbm8gcm9vbVxuICAgKiBub3Qgc3BlY2lmaWVkLCB0aGUgbWVzc2FnZSBpcyBzZW50IHRvIGFsbCBjbGllbnRzXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSByb29tc0lkcyAtIElkcyBvZiB0aGUgcm9vbXMgdGhhdCBtdXN0IHJlY2VpdmVcbiAgICogIHRoZSBtZXNzYWdlLiBJZiBudWxsIHRoZSBtZXNzYWdlIGlzIHNlbnQgdG8gYWxsIGNsaWVudHNcbiAgICogQHBhcmFtIHttb2R1bGU6c291bmR3b3Jrcy9zZXJ2ZXIuU29ja2V0fSBleGNsdWRlU29ja2V0IC0gT3B0aW9ubmFsXG4gICAqICBzb2NrZXQgdG8gaWdub3JlIHdoZW4gYnJvYWRjYXN0aW5nIHRoZSBtZXNzYWdlLCB0eXBpY2FsbHkgdGhlIGNsaWVudFxuICAgKiAgYXQgdGhlIG9yaWdpbiBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gY2hhbm5lbCAtIENoYW5uZWwgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHsuLi4qfSBhcmdzIC0gQXJndW1lbnRzIG9mIHRoZSBtZXNzYWdlIChhcyBtYW55IGFzIG5lZWRlZCwgb2YgYW55IHR5cGUpXG4gICAqL1xuICBicm9hZGNhc3Qocm9vbUlkcywgZXhjbHVkZVNvY2tldCwgY2hhbm5lbCwgLi4uYXJncykge1xuICAgIHRoaXMuX2Jyb2FkY2FzdChmYWxzZSwgcm9vbUlkcywgZXhjbHVkZVNvY2tldCwgY2hhbm5lbCwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBhIGJpbmFyeSBtZXNzYWdlIChUeXBlZEFycmF5KSB0byBhbGwgY2xpZW50IG9mIGdpdmVuIHJvb20ocykuIElmIG5vIHJvb21cbiAgICogbm90IHNwZWNpZmllZCwgdGhlIG1lc3NhZ2UgaXMgc2VudCB0byBhbGwgY2xpZW50c1xuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gcm9vbXNJZHMgLSBJZHMgb2YgdGhlIHJvb21zIHRoYXQgbXVzdCByZWNlaXZlXG4gICAqICB0aGUgbWVzc2FnZS4gSWYgbnVsbCB0aGUgbWVzc2FnZSBpcyBzZW50IHRvIGFsbCBjbGllbnRzXG4gICAqIEBwYXJhbSB7bW9kdWxlOnNvdW5kd29ya3Mvc2VydmVyLlNvY2tldH0gZXhjbHVkZVNvY2tldCAtIE9wdGlvbm5hbFxuICAgKiAgc29ja2V0IHRvIGlnbm9yZSB3aGVuIGJyb2FkY2FzdGluZyB0aGUgbWVzc2FnZSwgdHlwaWNhbGx5IHRoZSBjbGllbnRcbiAgICogIGF0IHRoZSBvcmlnaW4gb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtTdHJpbmd9IGNoYW5uZWwgLSBDaGFubmVsIG9mIHRoZSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7Li4uKn0gYXJncyAtIEFyZ3VtZW50cyBvZiB0aGUgbWVzc2FnZSAoYXMgbWFueSBhcyBuZWVkZWQsIG9mIGFueSB0eXBlKVxuICAgKi9cbiAgYnJvYWRjYXN0QmluYXJ5KHJvb21JZHMsIGV4Y2x1ZGVTb2NrZXQsIGNoYW5uZWwsIHR5cGVkQXJyYXkpIHtcbiAgICB0aGlzLl9icm9hZGNhc3QodHJ1ZSwgcm9vbUlkcywgZXhjbHVkZVNvY2tldCwgY2hhbm5lbCwgdHlwZWRBcnJheSk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNvY2tldHM7XG4iXX0=
exports.default = _default;

@@ -365,3 +365,2 @@ "use strict";

var _default = StateManager;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2ZXIvU3RhdGVNYW5hZ2VyLmpzIl0sIm5hbWVzIjpbIlN0YXRlIiwiY29uc3RydWN0b3IiLCJpZCIsInNjaGVtYU5hbWUiLCJzY2hlbWEiLCJjcmVhdG9yIiwib3duZXIiLCJtYW5hZ2VyIiwiX3NjaGVtYSIsIl9jcmVhdG9yIiwiX293bmVyIiwiX21hbmFnZXIiLCJfcGFyYW1ldGVycyIsIl9hdHRhY2hlZENsaWVudHMiLCJTZXQiLCJfc3Vic2NyaXB0aW9ucyIsIl9vbkRldGFjaENhbGxiYWNrcyIsIl9hdHRhY2hDbGllbnQiLCJjbGllbnQiLCJhZGQiLCJzb2NrZXQiLCJhZGRMaXN0ZW5lciIsIlVQREFURV9SRVFVRVNUIiwicmVxSWQiLCJvYmoiLCJzZXQiLCJERUxFVEVfUkVRVUVTVCIsImZvckVhY2giLCJhdHRhY2hlZCIsInNlbmQiLCJERUxFVEVfUkVTUE9OU0UiLCJERUxFVEVfTk9USUZJQ0FUSU9OIiwiX2RldGFjaENsaWVudCIsIl9zdGF0ZXNCeUlkIiwiZGVsZXRlIiwiY2FsbGJhY2siLCJjbGVhciIsIkRFVEFDSF9SRVFVRVNUIiwiREVUQUNIX1JFU1BPTlNFIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiZ2V0U2NoZW1hIiwibmFtZSIsIl9yZXF1ZXN0ZXIiLCJfcmVxSWQiLCJTRVJWRVJfSUQiLCJ1cGRhdGVkIiwicGVlciIsIlVQREFURV9SRVNQT05TRSIsIlVQREFURV9OT1RJRklDQVRJT04iLCJmdW5jIiwiY29uc29sZSIsImVycm9yIiwiZ2V0IiwiZ2V0VmFsdWVzIiwic3Vic2NyaWJlIiwiZGV0YWNoIiwiUHJvbWlzZSIsInJlc29sdmUiLCJvbkRldGFjaCIsIlN0YXRlTWFuYWdlciIsIk1hcCIsIl9zY2hlbWFzIiwiX29ic2VydmVMaXN0ZW5lcnMiLCJfb2JzZXJ2ZXJzIiwiX2dldFNjaGVtYUlkIiwiaW5kZXgiLCJBcnJheSIsImZyb20iLCJrZXlzIiwiaW5kZXhPZiIsImFkZENsaWVudCIsIkNSRUFURV9SRVFVRVNUIiwic3luY2VkIiwiaGFzIiwiQ1JFQVRFX1JFU1BPTlNFIiwic3RhdGUiLCJjcmVhdGUiLCJsaXN0ZW5lciIsIm9ic2VydmVyIiwiT0JTRVJWRV9OT1RJRklDQVRJT04iLCJlcnIiLCJDUkVBVEVfRVJST1IiLCJtZXNzYWdlIiwibXNnIiwiQVRUQUNIX1JFUVVFU1QiLCJjcmVhdG9ySWQiLCJjdXJyZW50VmFsdWVzIiwiQVRUQUNIX1JFU1BPTlNFIiwiQVRUQUNIX0VSUk9SIiwiT0JTRVJWRV9SRVFVRVNUIiwiY2xpZW50U2NoZW1hUGFpcnMiLCJwdXNoIiwiT0JTRVJWRV9SRVNQT05TRSIsInJlbW92ZUNsaWVudCIsInJlZ2lzdGVyU2NoZW1hIiwiRXJyb3IiLCJhdHRhY2giLCJub2RlSWQiLCJyZWplY3QiLCJvYnNlcnZlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7Ozs7QUF3QkEsTUFBTUEsS0FBTixDQUFZO0FBQ1ZDLEVBQUFBLFdBQVcsQ0FBQ0MsRUFBRCxFQUFLQyxVQUFMLEVBQWlCQyxNQUFqQixFQUF5QkMsT0FBekIsRUFBa0NDLEtBQWxDLEVBQXlDQyxPQUF6QyxFQUFrRDtBQUMzRCxTQUFLTCxFQUFMLEdBQVVBLEVBQVY7QUFDQSxTQUFLQyxVQUFMLEdBQWtCQSxVQUFsQjtBQUVBLFNBQUtLLE9BQUwsR0FBZSxxQkFBVUosTUFBVixDQUFmO0FBQ0EsU0FBS0ssUUFBTCxHQUFnQkosT0FBaEIsQ0FMMkQsQ0FLbEM7O0FBQ3pCLFNBQUtLLE1BQUwsR0FBY0osS0FBZCxDQU4yRCxDQU10Qzs7QUFDckIsU0FBS0ssUUFBTCxHQUFnQkosT0FBaEI7QUFFQSxTQUFLSyxXQUFMLEdBQW1CLHlCQUFXUixNQUFYLENBQW5CO0FBQ0EsU0FBS1MsZ0JBQUwsR0FBd0IsSUFBSUMsR0FBSixFQUF4QixDQVYyRCxDQVV4Qjs7QUFDbkMsU0FBS0MsY0FBTCxHQUFzQixJQUFJRCxHQUFKLEVBQXRCO0FBRUEsU0FBS0Usa0JBQUwsR0FBMEIsSUFBSUYsR0FBSixFQUExQjtBQUNE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RUR1RCxFQUFBQSxNQUFNLENBQUM3RixVQUFELEVBQWE4RixNQUFiLEVBQXFCO0FBQ3pCLFFBQUlBLE1BQU0sS0FBS3JELGdDQUFmLEVBQTBCO0FBQ3hCLFlBQU0xQyxFQUFFLEdBQUcsS0FBSzhELFlBQUwsQ0FBa0I3RCxVQUFsQixFQUE4QjhGLE1BQTlCLEVBQXNDckQsZ0NBQXRDLENBQVg7O0FBQ0EsWUFBTStCLEtBQUssR0FBRyxLQUFLMUMsV0FBTCxDQUFpQm1CLEdBQWpCLENBQXFCbEQsRUFBckIsQ0FBZDs7QUFDQSxhQUFPc0QsT0FBTyxDQUFDQyxPQUFSLENBQWdCa0IsS0FBaEIsQ0FBUDtBQUNELEtBSkQsTUFJTztBQUNMLGFBQU9uQixPQUFPLENBQUMwQyxNQUFSLENBQWdCLCtDQUFoQixDQUFQO0FBQ0Q7QUFDRjs7QUFFREMsRUFBQUEsT0FBTyxDQUFDbEQsSUFBRCxFQUFPO0FBQ1osU0FBS2EsaUJBQUwsQ0FBdUIzQyxHQUF2QixDQUEyQjhCLElBQTNCO0FBQ0Q7O0FBakxnQjs7ZUFvTEpVLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGFyYW1ldGVycyBmcm9tICdAaXJjYW0vcGFyYW1ldGVycyc7XG5pbXBvcnQgY2xvbmVkZWVwIGZyb20gJ2xvZGFzaC5jbG9uZWRlZXAnO1xuXG5pbXBvcnQge1xuICBTRVJWRVJfSUQsXG4gIENSRUFURV9SRVFVRVNULFxuICBDUkVBVEVfUkVTUE9OU0UsXG4gIENSRUFURV9FUlJPUixcbiAgREVMRVRFX1JFUVVFU1QsXG4gIERFTEVURV9SRVNQT05TRSxcbiAgREVMRVRFX0VSUk9SLFxuICBERUxFVEVfTk9USUZJQ0FUSU9OLFxuICBBVFRBQ0hfUkVRVUVTVCxcbiAgQVRUQUNIX1JFU1BPTlNFLFxuICBBVFRBQ0hfRVJST1IsXG4gIERFVEFDSF9SRVFVRVNULFxuICBERVRBQ0hfUkVTUE9OU0UsXG4gIERFVEFDSF9FUlJPUixcbiAgT0JTRVJWRV9SRVFVRVNULFxuICBPQlNFUlZFX1JFU1BPTlNFLFxuICBPQlNFUlZFX05PVElGSUNBVElPTixcbiAgVVBEQVRFX1JFUVVFU1QsXG4gIFVQREFURV9SRVNQT05TRSxcbiAgVVBEQVRFX05PVElGSUNBVElPTixcbn0gZnJvbSAnLi4vY29tbW9uL3N0YXRlTWFuYWdlckNvbnN0YW50cyc7XG5cblxuY2xhc3MgU3RhdGUge1xuICBjb25zdHJ1Y3RvcihpZCwgc2NoZW1hTmFtZSwgc2NoZW1hLCBjcmVhdG9yLCBvd25lciwgbWFuYWdlcikge1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLnNjaGVtYU5hbWUgPSBzY2hlbWFOYW1lO1xuXG4gICAgdGhpcy5fc2NoZW1hID0gY2xvbmVkZWVwKHNjaGVtYSk7XG4gICAgdGhpcy5fY3JlYXRvciA9IGNyZWF0b3I7IC8vIG1heSBiZSB0aGUgc2VydmVyIG9yIGFueSBjbGllbnRcbiAgICB0aGlzLl9vd25lciA9IG93bmVyOyAvLyBzZXJ2ZXIgYnkgZGVmYXVsdFxuICAgIHRoaXMuX21hbmFnZXIgPSBtYW5hZ2VyO1xuXG4gICAgdGhpcy5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMoc2NoZW1hKTtcbiAgICB0aGlzLl9hdHRhY2hlZENsaWVudHMgPSBuZXcgU2V0KCk7IC8vIG90aGVyIHBlZXJzIGludGVyZXN0ZWQgaW4gd2F0Y2hpbmcgLyBjb250cm9sbGluZyB0aGUgc3RhdGVcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zID0gbmV3IFNldCgpO1xuXG4gICAgdGhpcy5fb25EZXRhY2hDYWxsYmFja3MgPSBuZXcgU2V0KCk7XG4gIH1cblxuICAgIC8vIHRoaXMgd291bGQgYmUgbmljZSB0byBiZSBhYmxlIHRvIGF0dGFjaCB0aGUgY2xpZW50IGZyb21cbiAgLy8gc2VydmVyIHNpZGUgLi4ub3IgbWF5YmUgbm90IChUQkMpLi4uXG4gIF9hdHRhY2hDbGllbnQoY2xpZW50KSB7XG4gICAgdGhpcy5fYXR0YWNoZWRDbGllbnRzLmFkZChjbGllbnQpO1xuICAgIC8vIGFkZCBjbGllbnQgbGlzdGVuZXJzIGZvciB0aGlzIHN0YXRlXG4gICAgY2xpZW50LnNvY2tldC5hZGRMaXN0ZW5lcihgJHtVUERBVEVfUkVRVUVTVH0tJHt0aGlzLmlkfWAsIChyZXFJZCwgb2JqKSA9PiB7XG4gICAgICB0aGlzLnNldChvYmosIGNsaWVudC5pZCwgcmVxSWQpO1xuICAgIH0pO1xuXG4gICAgaWYgKGNsaWVudC5pZCA9PT0gdGhpcy5fY3JlYXRvcikge1xuICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAvLyBERUxFVEUgLSBvbmx5IGlmIGNyZWF0b3JcbiAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgY2xpZW50LnNvY2tldC5hZGRMaXN0ZW5lcihgJHtERUxFVEVfUkVRVUVTVH0tJHt0aGlzLmlkfWAsIChyZXFJZCkgPT4ge1xuICAgICAgICB0aGlzLl9hdHRhY2hlZENsaWVudHMuZm9yRWFjaChhdHRhY2hlZCA9PiB7XG4gICAgICAgICAgaWYgKGF0dGFjaGVkID09PSBjbGllbnQpIHtcbiAgICAgICAgICAgIGF0dGFjaGVkLnNvY2tldC5zZW5kKGAke0RFTEVURV9SRVNQT05TRX0tJHt0aGlzLmlkfWAsIHJlcUlkKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXR0YWNoZWQuc29ja2V0LnNlbmQoYCR7REVMRVRFX05PVElGSUNBVElPTn0tJHt0aGlzLmlkfWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2RldGFjaENsaWVudChhdHRhY2hlZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX21hbmFnZXIuX3N0YXRlc0J5SWQuZGVsZXRlKHRoaXMuaWQpO1xuICAgICAgICAvLyBleGVjdXRlIGRldGFjaCBjYWxsYmFja3MgdGhhdCBtYXkgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQgc2VydmUtc2lkZVxuICAgICAgICB0aGlzLl9vbkRldGFjaENhbGxiYWNrcy5mb3JFYWNoKGNhbGxiYWNrID0+IGNhbGxiYWNrKCkpO1xuICAgICAgICB0aGlzLl9vbkRldGFjaENhbGxiYWNrcy5jbGVhcigpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgLy8gREVUQUNIIC0gb25seSBpZiBub3QgY3JlYXRvclxuICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICBjbGllbnQuc29ja2V0LmFkZExpc3RlbmVyKGAke0RFVEFDSF9SRVFVRVNUfS0ke3RoaXMuaWR9YCwgKHJlcUlkKSA9PiB7XG4gICAgICAgIC8vIGlmICh0aGlzLl9zdGF0ZXNCeUlkLmhhcyhzdGF0ZUlkKSkge1xuICAgICAgICB0aGlzLl9kZXRhY2hDbGllbnQoY2xpZW50KTtcbiAgICAgICAgY2xpZW50LnNvY2tldC5zZW5kKGAke0RFVEFDSF9SRVNQT05TRX0tJHt0aGlzLmlkfWAsIHJlcUlkKTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICBjb25zdCBtc2cgPSBgQ2Fubm90IGRldGFjaCwgc3RhdGUgXCIke3N0YXRlSWR9XCIgZG9lcyBub3QgZXhpc3RzYDtcbiAgICAgICAgLy8gICBjbGllbnQuc29ja2V0LnNlbmQoREVUQUNIX0VSUk9SLCByZXFJZCwgbXNnKTtcbiAgICAgICAgLy8gfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgX2RldGFjaENsaWVudChjbGllbnQpIHtcbiAgICB0aGlzLl9hdHRhY2hlZENsaWVudHMuZGVsZXRlKGNsaWVudCk7XG4gICAgLy8gZGVsZXRlIGxpc3RlbmVyc1xuICAgIGNsaWVudC5zb2NrZXQucmVtb3ZlQWxsTGlzdGVuZXJzKGAke1VQREFURV9SRVFVRVNUfS0ke3RoaXMuaWR9YCk7XG4gICAgY2xpZW50LnNvY2tldC5yZW1vdmVBbGxMaXN0ZW5lcnMoYCR7REVMRVRFX1JFUVVFU1R9LSR7dGhpcy5pZH1gKTtcbiAgICBjbGllbnQuc29ja2V0LnJlbW92ZUFsbExpc3RlbmVycyhgJHtERVRBQ0hfUkVRVUVTVH0tJHt0aGlzLmlkfWApO1xuICB9XG5cbiAgZ2V0U2NoZW1hKG5hbWUgPSBudWxsKSB7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zY2hlbWFbbmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9zY2hlbWE7XG4gICAgfVxuICB9XG5cbiAgc2V0KG9iaiwgX3JlcXVlc3RlciA9IG51bGwsIF9yZXFJZCA9IG51bGwpIHtcbiAgICBpZiAodGhpcy5fb3duZXIgPT09IFNFUlZFUl9JRCkgeyAvLyBzdGF0ZSBoYXMgYmVlbiBjcmVhdGVkIGJ5IHNlcnZlciBhbmQgaXMgb3duZWQgYnkgdGhlIHNlcnZlclxuICAgICAgY29uc3QgdXBkYXRlZCA9IHt9O1xuXG4gICAgICBmb3IgKGxldCBuYW1lIGluIG9iaikge1xuICAgICAgICAvLyBkbyB0aGF0IHRvIHN0b3JlIGV2ZW50cyByZXR1cm4gdmFsdWVzXG4gICAgICAgIHVwZGF0ZWRbbmFtZV0gPSB0aGlzLl9wYXJhbWV0ZXJzLnNldChuYW1lLCBvYmpbbmFtZV0pO1xuICAgICAgfVxuXG4gICAgICAvLyBwcm9wYWdhdGUgdG8gYXR0YWNoZWQgY2xpZW50c1xuICAgICAgdGhpcy5fYXR0YWNoZWRDbGllbnRzLmZvckVhY2gocGVlciA9PiB7XG4gICAgICAgIGlmIChfcmVxdWVzdGVyID09PSBwZWVyLmlkKSB7XG4gICAgICAgICAgcGVlci5zb2NrZXQuc2VuZChgJHtVUERBVEVfUkVTUE9OU0V9LSR7dGhpcy5pZH1gLCBfcmVxSWQsIHVwZGF0ZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZXIuc29ja2V0LnNlbmQoYCR7VVBEQVRFX05PVElGSUNBVElPTn0tJHt0aGlzLmlkfWAsIHVwZGF0ZWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8ga2VlcCBoZXJlIGFzIGlmIGEgc3Vic2NyaXB0aW9uIHNlbmRzIGEgbWVzc2FnZSwgb3JkZXJpbmcgaXMga2VwdCBjb2hlcmVudFxuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGZ1bmMgPT4gZnVuYyh1cGRhdGVkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5vdCB0aGUgcHJvYmxlbSBvZiB0aGUgc2VydmVyIC0gc2hvdWxkIG5vdCBiZSBwb3NzaWJsZVxuICAgICAgY29uc29sZS5lcnJvcihgXFxgc3RhdGUuc2V0XFxgIHNob3VsZCBiZSBjYWxsZWQgb25seSB3aGVuIHNlcnZlciBpcyBvd25lcmApO1xuICAgIH1cbiAgfVxuXG4gIGdldChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtZXRlcnMuZ2V0KG5hbWUpO1xuICB9XG5cbiAgZ2V0VmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbWV0ZXJzLmdldFZhbHVlcygpO1xuICB9XG5cbiAgc3Vic2NyaWJlKGZ1bmMpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChmdW5jKTtcblxuICB9XG5cbiAgZGV0YWNoKCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuY2xlYXIoKTtcbiAgICAvLyBpZiBzZXJ2ZXIgaXMgY3JlYXRvciAtIHByb3Blcmx5IGRlbGV0ZSBzdGF0ZSBhbmQgbm90aWZ5IGV2ZXJ5b25lXG4gICAgaWYgKHRoaXMuX2NyZWF0b3IgPT09IFNFUlZFUl9JRCkge1xuICAgICAgdGhpcy5fYXR0YWNoZWRDbGllbnRzLmZvckVhY2goYXR0YWNoZWQgPT4ge1xuICAgICAgICB0aGlzLl9kZXRhY2hDbGllbnQoYXR0YWNoZWQpO1xuICAgICAgICBhdHRhY2hlZC5zb2NrZXQuc2VuZChgJHtERUxFVEVfTk9USUZJQ0FUSU9OfS0ke3RoaXMuaWR9YCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fbWFuYWdlci5fc3RhdGVzQnlJZC5kZWxldGUodGhpcy5pZCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb25EZXRhY2hDYWxsYmFja3MuZm9yRWFjaChjYWxsYmFjayA9PiBjYWxsYmFjaygpKTtcbiAgICAvLyB3ZSBjbGVhciB0aGUgY2FsbGJhY2tzIGFzIHRoZSBzZXJ2ZXIgbWlnaHQgZGV0YWNoIGJlZm9yZSB0aGUgc3RhdGVcbiAgICAvLyBpcyBkZWxldGVkLCBhbmQgd2UgZG9uJ3QgdG8gdHJpZ2dlciB0aGUgY2FsbGJhY2tzIHR3aWNlLlxuICAgIHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzLmNsZWFyKCk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICBvbkRldGFjaChjYWxsYmFjaykge1xuICAgIHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzLmFkZChjYWxsYmFjayk7XG4gIH1cbn1cblxuXG4vKipcbiAqIEB0b2RvIC0gcmV2aWV3XG4gKiBAbm90ZSAtIE1heWJlIHdlIGNhbiBhc3N1bWUgdGhlIG93bmVyIGlzIGFsd2F5cyB0aGUgc2VydmVyIGhlcmVcbiAqIElmIHRoZSBvd25lciBpcyBhIGNsaWVudCwgdGhlIHNlcnZlciBqdXN0IHNlbmQgaW5mb3MgZm9yXG4gKiBwcm9wZXIgaW5zdGFuY2lhdGlvbnMuXG4gKlxuICogQG1lbWJlcm9mIEBzb3VuZHdvcmtzL2NvcmUvc2VydmVyXG4gKi9cbmNsYXNzIFN0YXRlTWFuYWdlciB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fc3RhdGVzQnlJZCA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9zY2hlbWFzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX29ic2VydmVMaXN0ZW5lcnMgPSBuZXcgU2V0KCk7XG4gICAgdGhpcy5fb2JzZXJ2ZXJzID0gbmV3IFNldCgpO1xuICB9XG5cbiAgX2dldFNjaGVtYUlkKHNjaGVtYU5hbWUsIGNyZWF0b3IsIG93bmVyKSB7XG4gICAgY29uc3QgaW5kZXggPSBBcnJheS5mcm9tKHRoaXMuX3NjaGVtYXMua2V5cygpKS5pbmRleE9mKHNjaGVtYU5hbWUpO1xuICAgIHJldHVybiBgJHtpbmRleH0uJHtjcmVhdG9yfS4ke293bmVyfWA7XG4gIH1cblxuICBhZGRDbGllbnQoY2xpZW50KSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQ1JFQVRFXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY2xpZW50LnNvY2tldC5hZGRMaXN0ZW5lcihDUkVBVEVfUkVRVUVTVCwgKHJlcUlkLCBzY2hlbWFOYW1lLCBzeW5jZWQpID0+IHtcbiAgICAgIGNvbnN0IGNyZWF0b3IgPSBjbGllbnQuaWQ7XG5cbiAgICAgIGlmICh0aGlzLl9zY2hlbWFzLmhhcyhzY2hlbWFOYW1lKSkge1xuICAgICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLl9zY2hlbWFzLmdldChzY2hlbWFOYW1lKTtcblxuICAgICAgICBpZiAoc3luY2VkID09PSBmYWxzZSkge1xuICAgICAgICAgIC8vIGp1c3Qgc2VuZCBiYWNrIGluZm9ybWF0aW9ucyB0byB0aGUgY2xpZW50IHNvIHRoYXQgaGUgY2FuIGJ1aWxkIHRoZSBzdGF0ZVxuICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5fZ2V0U2NoZW1hSWQoc2NoZW1hTmFtZSwgY3JlYXRvciwgY3JlYXRvcik7XG4gICAgICAgICAgY2xpZW50LnNvY2tldC5zZW5kKENSRUFURV9SRVNQT05TRSwgcmVxSWQsIGlkLCBzY2hlbWEsIGNyZWF0b3IsIGNyZWF0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuY3JlYXRlKHNjaGVtYU5hbWUsIGNyZWF0b3IpO1xuICAgICAgICAgICAgc3RhdGUuX2F0dGFjaENsaWVudChjbGllbnQpOyAvLyBhdHRhY2ggY2xpZW50IHRvIHRoZSBzdGF0ZVxuXG4gICAgICAgICAgICBjbGllbnQuc29ja2V0LnNlbmQoQ1JFQVRFX1JFU1BPTlNFLCByZXFJZCwgc3RhdGUuaWQsIHNjaGVtYU5hbWUsIHNjaGVtYSwgY3JlYXRvciwgU0VSVkVSX0lEKTtcblxuICAgICAgICAgICAgLy8gbm90aWZ5IGFsbCBub2Rlc1xuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZUxpc3RlbmVycy5mb3JFYWNoKGxpc3RlbmVyID0+IGxpc3RlbmVyKHNjaGVtYU5hbWUsIGNyZWF0b3IpKTtcblxuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXJzLmZvckVhY2gob2JzZXJ2ZXIgPT4ge1xuICAgICAgICAgICAgICAvLyBvYnNlcnZlcnMgZG9uJ3Qgd2FudCB0byBiZSBub3RpZmllZCBvZiB0aGVpciBvd24gYGNyZWF0ZWBcbiAgICAgICAgICAgICAgaWYgKG9ic2VydmVyLmlkICE9PSBjcmVhdG9yKSB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuc29ja2V0LnNlbmQoT0JTRVJWRV9OT1RJRklDQVRJT04sIFtzY2hlbWFOYW1lLCBjcmVhdG9yXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2goZXJyKSB7XG4gICAgICAgICAgICBjbGllbnQuc29ja2V0LnNlbmQoQ1JFQVRFX0VSUk9SLCByZXFJZCwgZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtc2cgPSBgQ2Fubm90IGNyZWF0ZSBzdGF0ZSBcIiR7c2NoZW1hTmFtZX1cIiwgc2NoZW1hIGRvZXMgbm90IGV4aXN0c2A7XG4gICAgICAgIGNsaWVudC5zb2NrZXQuc2VuZChDUkVBVEVfRVJST1IsIG1zZywgcmVxSWQpO1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBVFRBQ0ggKHdoZW4gY3JlYXRvciwgaXMgYXR0YWNoZWQgYnkgZGVmYXVsdClcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjbGllbnQuc29ja2V0LmFkZExpc3RlbmVyKEFUVEFDSF9SRVFVRVNULCAocmVxSWQsIHNjaGVtYU5hbWUsIGNyZWF0b3JJZCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX3NjaGVtYXMuaGFzKHNjaGVtYU5hbWUpKSB7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5fZ2V0U2NoZW1hSWQoc2NoZW1hTmFtZSwgY3JlYXRvcklkLCBTRVJWRVJfSUQpO1xuXG4gICAgICAgIGlmICh0aGlzLl9zdGF0ZXNCeUlkLmhhcyhpZCkpIHtcbiAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX3N0YXRlc0J5SWQuZ2V0KGlkKTtcbiAgICAgICAgICBjb25zdCBzY2hlbWEgPSBzdGF0ZS5fc2NoZW1hO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSBzdGF0ZS5nZXRWYWx1ZXMoKTtcbiAgICAgICAgICBzdGF0ZS5fYXR0YWNoQ2xpZW50KGNsaWVudCk7XG5cbiAgICAgICAgICBjb25zdCB7IF9jcmVhdG9yLCBfb3duZXIgfSA9IHN0YXRlO1xuICAgICAgICAgIC8vIHNlbmQgc2NoZW1hIGZvciBjbGllbnQtc2lkZSBpbnN0YW5jaWF0aW9uXG4gICAgICAgICAgY2xpZW50LnNvY2tldC5zZW5kKEFUVEFDSF9SRVNQT05TRSwgcmVxSWQsIGlkLCBzY2hlbWFOYW1lLCBzY2hlbWEsIF9jcmVhdG9yLCBfb3duZXIsIGN1cnJlbnRWYWx1ZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGBDYW5ub3QgYXR0YWNoLCBubyBzdGF0ZSBmb3Igc2NoZW1hIFwiJHtzY2hlbWFOYW1lfVwiIHdpdGggaWQgJHtpZH1gO1xuICAgICAgICAgIGNsaWVudC5zb2NrZXQuc2VuZChBVFRBQ0hfRVJST1IsIHJlcUlkLCBtc2cpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IobXNnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbXNnID0gYENhbm5vdCBhdHRhY2gsIHNjaGVtYSBcIiR7c2NoZW1hTmFtZX1cIiBkb2VzIG5vdCBleGlzdHNgO1xuICAgICAgICBjbGllbnQuc29ja2V0LnNlbmQoQVRUQUNIX0VSUk9SLCByZXFJZCwgbXNnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gT0JTRVJWRSBQRUVSUyAoYmUgbm90aWZpZWQgd2hlbiBhIHN0YXRlIGlzIGNyZWF0ZWQsIGxhenkpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY2xpZW50LnNvY2tldC5hZGRMaXN0ZW5lcihPQlNFUlZFX1JFUVVFU1QsIChyZXFJZCkgPT4ge1xuICAgICAgLy8gQG5vdGUgLSB0aGVyZSBpcyByb29tIGZvciBpbXByb3ZpbmcgbmV0d29yayBmb290cHJpbnQgaGVyZSBieSBkb2luZ1xuICAgICAgLy8gYSBtc2cgbGlrZSB7IHNjaGVtYU5hbWU6IFtpZHNdIH0gYW5kIHVucGFjayBpdCBjbGllbnQgc2lkZS5cbiAgICAgIGNvbnN0IGNsaWVudFNjaGVtYVBhaXJzID0gW107IC8vIGxpc3Qgb2YgW3NjaGVtYU5hbWUsIG5vZGVJZF1cblxuICAgICAgdGhpcy5fc3RhdGVzQnlJZC5mb3JFYWNoKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKGNsaWVudC5pZCAhPT0gc3RhdGUuX2NyZWF0b3IpIHtcbiAgICAgICAgICBjbGllbnRTY2hlbWFQYWlycy5wdXNoKFtzdGF0ZS5zY2hlbWFOYW1lLCBzdGF0ZS5fY3JlYXRvcl0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY2xpZW50LnNvY2tldC5zZW5kKE9CU0VSVkVfUkVTUE9OU0UsIHJlcUlkLCAuLi5jbGllbnRTY2hlbWFQYWlycyk7XG5cbiAgICAgIHRoaXMuX29ic2VydmVycy5hZGQoY2xpZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZUNsaWVudChjbGllbnQpIHtcbiAgICBmb3IgKGxldCBbaWQsIHN0YXRlXSBvZiB0aGlzLl9zdGF0ZXNCeUlkKSB7XG4gICAgICAvLyBoYW5kbGUgc3RhdGVzIGNyZWF0ZWQgYnkgdGhlIGNsaWVudFxuICAgICAgaWYgKHN0YXRlLl9jcmVhdG9yID09IGNsaWVudC5pZCkge1xuICAgICAgICAvLyBkZXRhY2ggY2xpZW50IG5vZGVzIGFuZCBzZW5kIG5vdGlmaWNhdGlvbiB0byBwZWVyc1xuICAgICAgICBzdGF0ZS5fYXR0YWNoZWRDbGllbnRzLmZvckVhY2goYXR0YWNoZWQgPT4ge1xuICAgICAgICAgIHN0YXRlLl9kZXRhY2hDbGllbnQoYXR0YWNoZWQpO1xuXG4gICAgICAgICAgaWYgKGF0dGFjaGVkICE9PSBjbGllbnQpIHtcbiAgICAgICAgICAgIGF0dGFjaGVkLnNvY2tldC5zZW5kKGAke0RFTEVURV9OT1RJRklDQVRJT059LSR7c3RhdGUuaWR9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBkZXRhY2ggc2VydmVyIG5vZGVcbiAgICAgICAgc3RhdGUuZGV0YWNoKCk7XG5cbiAgICAgICAgdGhpcy5fc3RhdGVzQnlJZC5kZWxldGUoc3RhdGUuaWQpO1xuXG4gICAgICAvLyBkZXRhY2ggZnJvbSBvdGhlciBzdGF0ZXNcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUuX2F0dGFjaGVkQ2xpZW50cy5oYXMoY2xpZW50KSkge1xuICAgICAgICBzdGF0ZS5fZGV0YWNoQ2xpZW50KGNsaWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fb2JzZXJ2ZXJzLmRlbGV0ZShjbGllbnQpO1xuICB9XG5cbiAgcmVnaXN0ZXJTY2hlbWEoc2NoZW1hTmFtZSwgc2NoZW1hKSB7XG4gICAgaWYgKHRoaXMuX3NjaGVtYXMuaGFzKHNjaGVtYU5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHNjaGVtYSBcIiR7c2NoZW1hTmFtZX1cIiBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zY2hlbWFzLnNldChzY2hlbWFOYW1lLCBjbG9uZWRlZXAoc2NoZW1hKSk7XG4gIH1cblxuICBjcmVhdGUoc2NoZW1hTmFtZSwgY3JlYXRvciA9IFNFUlZFUl9JRCwgX293bmVyID0gU0VSVkVSX0lEKSB7XG4gICAgaWYgKHRoaXMuX3NjaGVtYXMuaGFzKHNjaGVtYU5hbWUpKSB7XG4gICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLl9zY2hlbWFzLmdldChzY2hlbWFOYW1lKTtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5fZ2V0U2NoZW1hSWQoc2NoZW1hTmFtZSwgY3JlYXRvciwgX293bmVyKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGlkKTtcbiAgICAgIGlmICghdGhpcy5fc3RhdGVzQnlJZC5oYXMoaWQpKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gbmV3IFN0YXRlKGlkLCBzY2hlbWFOYW1lLCBzY2hlbWEsIGNyZWF0b3IsIF9vd25lciwgdGhpcyk7XG4gICAgICAgIHRoaXMuX3N0YXRlc0J5SWQuc2V0KGlkLCBzdGF0ZSk7XG5cbiAgICAgICAgLy8gb24gb3RoZXIgY2FzZXMsIHdlIGZpcnN0IHdhbnQgdG8gYXR0YWNoIGFuZCBub3RpZnkgdGhlIGNyZWF0b3IgKHNlZSBsaW5lIH4yMTApXG4gICAgICAgIGlmIChjcmVhdG9yID09PSBTRVJWRVJfSUQpIHtcbiAgICAgICAgICAvLyBub3RpZnkgb25seSBjbGllbnQgbm9kZXNcbiAgICAgICAgICB0aGlzLl9vYnNlcnZlcnMuZm9yRWFjaChvYnNlcnZlciA9PiB7XG4gICAgICAgICAgICBvYnNlcnZlci5zb2NrZXQuc2VuZChPQlNFUlZFX05PVElGSUNBVElPTiwgW3NjaGVtYU5hbWUsIGNyZWF0b3JdKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93KGBDYW5ub3QgY3JlYXRlIHN0YXRlLCBzdGF0ZSBcIiR7bmFtZX1cIiAoY3JlYXRvcjogXCIke2NyZWF0b3J9XCIsIG93bmVyOiBcIiR7X293bmVyfVwiKSBhbHJlYWR5IGV4aXN0c2ApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyhgQ2Fubm90IGNyZWF0ZSBzdGF0ZSwgc2NoZW1hIFwiJHtuYW1lfVwiIGRvZXMgbm90IGV4aXN0c2ApO1xuICAgIH1cbiAgfVxuXG4gIGF0dGFjaChzY2hlbWFOYW1lLCBub2RlSWQpIHtcbiAgICBpZiAobm9kZUlkICE9PSBTRVJWRVJfSUQpIHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5fZ2V0U2NoZW1hSWQoc2NoZW1hTmFtZSwgbm9kZUlkLCBTRVJWRVJfSUQpO1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLl9zdGF0ZXNCeUlkLmdldChpZCk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGBDYW5ub3QgYXR0YWNoLCBzZXJ2ZXIgaXMgY3JlYXRvciBvZiB0aGUgc3RhdGVgKTtcbiAgICB9XG4gIH1cblxuICBvYnNlcnZlKGZ1bmMpIHtcbiAgICB0aGlzLl9vYnNlcnZlTGlzdGVuZXJzLmFkZChmdW5jKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTdGF0ZU1hbmFnZXI7XG4iXX0=
exports.default = _default;
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