moose-remote-components
Version:
Figuring out how to export components onto npm, to be used in other projects
294 lines (239 loc) • 24.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.AuthController = void 0;
var _react = _interopRequireWildcard(require("react"));
var _MyNavbar = _interopRequireDefault(require("./MyNavbar"));
var _LoginModal = _interopRequireDefault(require("../../modals/LoginModal"));
var _RegisterModal = _interopRequireDefault(require("../../modals/RegisterModal"));
var _UserModal = _interopRequireDefault(require("../../modals/UserModal"));
var _auth = _interopRequireDefault(require("../../utils/auth"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/*
PROPS
---------------------------------
* ShowNavbar (True or False value. If True a navbar is rendered. *default false*)
* The corresponding props for the navbar must be provided if shown:
* history (React router's history obj)
*/
var AuthController =
/*#__PURE__*/
function (_Component) {
_inherits(AuthController, _Component);
function AuthController() {
var _getPrototypeOf2;
var _this;
_classCallCheck(this, AuthController);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(AuthController)).call.apply(_getPrototypeOf2, [this].concat(args)));
_defineProperty(_assertThisInitialized(_this), "state", {
display_login_modal: false,
display_register_modal: false,
display_user_modal: false,
login_error: "",
register_error: "",
register_invalid_fields: [],
register_success: ""
});
_defineProperty(_assertThisInitialized(_this), "login", function (user_credentials) {
_auth["default"].login(user_credentials, function (res) {
_this.setState({
display_login_modal: false
});
_this.setState({
login_error: ""
});
}, function (err) {
_this.setState({
login_error: "Invalid email/password combination!"
});
});
});
_defineProperty(_assertThisInitialized(_this), "register", function (user_credentials) {
_auth["default"].register(user_credentials, function (res) {
console.log(res);
_this.setState({
register_error: ""
});
_this.setState({
register_success: "You've been successfully registered!"
});
}, function (err) {
if (err.msg === "invalid fields") {
_this.setState({
register_error: "Please fix the following: "
});
_this.setState({
register_invalid_fields: err.invalid_fields
});
}
if (err.msg === "duplicate fields") {
var str = "";
err.duplicate_fields.forEach(function (field) {
console.log(field);
str += field + ", ";
});
str = str.substring(0, str.length - 2);
str += ' is already in use!';
_this.setState({
register_error: str
});
_this.setState({
register_invalid_fields: null
});
}
});
});
_defineProperty(_assertThisInitialized(_this), "logout", function () {
_auth["default"].logout();
_this.forceUpdate();
});
_defineProperty(_assertThisInitialized(_this), "render_navbar", function () {
if (!_this.props.ShowNavbar) return null;
return _react["default"].createElement(_MyNavbar["default"], {
Variant: _this.props.Variant,
BrandName: _this.props.BrandName,
OnBrandNameClick: function OnBrandNameClick() {
return _this.props.history.push('/');
},
authenticated: _auth["default"].isAuthenticated(),
OnLoginClick: function OnLoginClick() {
return _this.open_modal("login");
},
user: _auth["default"].getCachedUser(),
OnUserTagClick: function OnUserTagClick() {
return _this.open_modal("user");
},
CustomLinks: _this.props.CustomLinks,
history: _this.props.history
});
});
_defineProperty(_assertThisInitialized(_this), "render_login_modal", function () {
return _react["default"].createElement(_LoginModal["default"], {
Variant: _this.props.Variant,
hidden: _auth["default"].isAuthenticated(),
show: _this.state.display_login_modal,
onHide: _this.close_all_modals,
login: _this.login,
register: function register() {
return _this.open_modal("register");
},
error: _this.state.login_error
});
});
_defineProperty(_assertThisInitialized(_this), "render_register_modal", function () {
return _react["default"].createElement(_RegisterModal["default"], {
Variant: _this.props.Variant,
hidden: _auth["default"].isAuthenticated(),
show: _this.state.display_register_modal,
onHide: _this.close_all_modals,
login: function login() {
return _this.open_modal("login");
},
register: _this.register,
error: _this.state.register_error,
invalid_fields: _this.state.register_invalid_fields,
success: _this.state.register_success
});
});
_defineProperty(_assertThisInitialized(_this), "render_user_modal", function () {
return _react["default"].createElement(_UserModal["default"], {
Variant: _this.props.Variant,
hidden: !_auth["default"].isAuthenticated(),
show: _this.state.display_user_modal,
onHide: _this.close_all_modals,
history: _this.props.history,
logout: _this.logout
});
});
_defineProperty(_assertThisInitialized(_this), "close_all_modals",
/*#__PURE__*/
_asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee() {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return _this.setState({
display_login_modal: false
});
case 2:
_context.next = 4;
return _this.setState({
display_register_modal: false
});
case 4:
_context.next = 6;
return _this.setState({
display_user_modal: false
});
case 6:
case "end":
return _context.stop();
}
}
}, _callee);
})));
_defineProperty(_assertThisInitialized(_this), "open_modal",
/*#__PURE__*/
function () {
var _ref2 = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee2(type) {
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return _this.close_all_modals();
case 2:
if (type === "login") _this.setState({
display_login_modal: true
});else if (type === "register") _this.setState({
display_register_modal: true
});else if (type === "user") _this.setState({
display_user_modal: true
});
case 3:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return function (_x) {
return _ref2.apply(this, arguments);
};
}());
return _this;
}
_createClass(AuthController, [{
key: "render",
value: function render() {
return _react["default"].createElement("div", null, this.render_navbar(), this.render_login_modal(), this.render_register_modal(), this.render_user_modal());
}
}]);
return AuthController;
}(_react.Component);
exports.AuthController = AuthController;
var _default = AuthController;
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0F1dGgvQXV0aENvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiQXV0aENvbnRyb2xsZXIiLCJkaXNwbGF5X2xvZ2luX21vZGFsIiwiZGlzcGxheV9yZWdpc3Rlcl9tb2RhbCIsImRpc3BsYXlfdXNlcl9tb2RhbCIsImxvZ2luX2Vycm9yIiwicmVnaXN0ZXJfZXJyb3IiLCJyZWdpc3Rlcl9pbnZhbGlkX2ZpZWxkcyIsInJlZ2lzdGVyX3N1Y2Nlc3MiLCJ1c2VyX2NyZWRlbnRpYWxzIiwiYXV0aCIsImxvZ2luIiwicmVzIiwic2V0U3RhdGUiLCJlcnIiLCJyZWdpc3RlciIsImNvbnNvbGUiLCJsb2ciLCJtc2ciLCJpbnZhbGlkX2ZpZWxkcyIsInN0ciIsImR1cGxpY2F0ZV9maWVsZHMiLCJmb3JFYWNoIiwiZmllbGQiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJsb2dvdXQiLCJmb3JjZVVwZGF0ZSIsInByb3BzIiwiU2hvd05hdmJhciIsIlZhcmlhbnQiLCJCcmFuZE5hbWUiLCJoaXN0b3J5IiwicHVzaCIsImlzQXV0aGVudGljYXRlZCIsIm9wZW5fbW9kYWwiLCJnZXRDYWNoZWRVc2VyIiwiQ3VzdG9tTGlua3MiLCJzdGF0ZSIsImNsb3NlX2FsbF9tb2RhbHMiLCJ0eXBlIiwicmVuZGVyX25hdmJhciIsInJlbmRlcl9sb2dpbl9tb2RhbCIsInJlbmRlcl9yZWdpc3Rlcl9tb2RhbCIsInJlbmRlcl91c2VyX21vZGFsIiwiQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7O0lBUWFBLGM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0REFFSjtBQUNQQyxNQUFBQSxtQkFBbUIsRUFBRSxLQURkO0FBRVBDLE1BQUFBLHNCQUFzQixFQUFFLEtBRmpCO0FBR1BDLE1BQUFBLGtCQUFrQixFQUFFLEtBSGI7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c0IsRUFBRTtBQUF6QixpQkFBZCxFQUF6QixLQUNBLElBQUlxQyxJQUFJLEtBQUssTUFBYixFQUFxQixNQUFLM0IsUUFBTCxDQUFjO0FBQUNULGtCQUFBQSxrQkFBa0IsRUFBRTtBQUFyQixpQkFBZDs7QUFKZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPOzs7Ozs7Ozs7Ozs7NkJBT0o7QUFDUixhQUNDLDZDQUNFLEtBQUtxQyxhQUFMLEVBREYsRUFFRSxLQUFLQyxrQkFBTCxFQUZGLEVBR0UsS0FBS0MscUJBQUwsRUFIRixFQUlFLEtBQUtDLGlCQUFMLEVBSkYsQ0FERDtBQVFBOzs7O0VBeklrQ0MsZ0I7OztlQTRJckI1QyxjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBNeU5hdmJhciBmcm9tICcuL015TmF2YmFyJztcbmltcG9ydCBMb2dpbk1vZGFsIGZyb20gJy4uLy4uL21vZGFscy9Mb2dpbk1vZGFsJztcbmltcG9ydCBSZWdpc3Rlck1vZGFsIGZyb20gJy4uLy4uL21vZGFscy9SZWdpc3Rlck1vZGFsJztcbmltcG9ydCBVc2VyTW9kYWwgZnJvbSAnLi4vLi4vbW9kYWxzL1VzZXJNb2RhbCc7XG5pbXBvcnQgYXV0aCBmcm9tICcuLi8uLi91dGlscy9hdXRoJztcblxuLypcblx0UFJPUFNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdCogU2hvd05hdmJhciAoVHJ1ZSBvciBGYWxzZSB2YWx1ZS4gSWYgVHJ1ZSBhIG5hdmJhciBpcyByZW5kZXJlZC4gKmRlZmF1bHQgZmFsc2UqKVxuXHRcdCogVGhlIGNvcnJlc3BvbmRpbmcgcHJvcHMgZm9yIHRoZSBuYXZiYXIgbXVzdCBiZSBwcm92aWRlZCBpZiBzaG93bjpcblx0KiBoaXN0b3J5IChSZWFjdCByb3V0ZXIncyBoaXN0b3J5IG9iailcbiovXG5cbmV4cG9ydCBjbGFzcyBBdXRoQ29udHJvbGxlciBleHRlbmRzIENvbXBvbmVudCB7XG5cblx0c3RhdGUgPSB7XG5cdFx0ZGlzcGxheV9sb2dpbl9tb2RhbDogZmFsc2UsXG5cdFx0ZGlzcGxheV9yZWdpc3Rlcl9tb2RhbDogZmFsc2UsXG5cdFx0ZGlzcGxheV91c2VyX21vZGFsOiBmYWxzZSxcblx0XHRsb2dpbl9lcnJvcjogXCJcIixcblx0XHRyZWdpc3Rlcl9lcnJvcjogXCJcIixcblx0XHRyZWdpc3Rlcl9pbnZhbGlkX2ZpZWxkczogW10sXG5cdFx0cmVnaXN0ZXJfc3VjY2VzczogXCJcIixcblx0fVxuXG5cdGxvZ2luID0gdXNlcl9jcmVkZW50aWFscyA9PiB7XG5cdFx0YXV0aC5sb2dpbihcblx0XHRcdHVzZXJfY3JlZGVudGlhbHMsXG5cdFx0XHRyZXMgPT4ge1xuXHRcdFx0XHR0aGlzLnNldFN0YXRlKHtkaXNwbGF5X2xvZ2luX21vZGFsOiBmYWxzZX0pO1xuXHRcdFx0XHR0aGlzLnNldFN0YXRlKHtsb2dpbl9lcnJvcjogXCJcIn0pO1xuXHRcdFx0fSxcblx0XHRcdGVyciA9PiB7XG5cdFx0XHRcdHRoaXMuc2V0U3RhdGUoe2xvZ2luX2Vycm9yOiBcIkludmFsaWQgZW1haWwvcGFzc3dvcmQgY29tYmluYXRpb24hXCJ9KTtcblx0XHRcdH1cblx0XHQpXG5cdH1cblx0cmVnaXN0ZXIgPSB1c2VyX2NyZWRlbnRpYWxzID0+IHtcblx0XHRhdXRoLnJlZ2lzdGVyKFxuXHRcdFx0dXNlcl9jcmVkZW50aWFscyxcblx0XHRcdHJlcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHJlcyk7XG5cdFx0XHRcdHRoaXMuc2V0U3RhdGUoe3JlZ2lzdGVyX2Vycm9yOiBcIlwifSk7XG5cdFx0XHRcdHRoaXMuc2V0U3RhdGUoe3JlZ2lzdGVyX3N1Y2Nlc3M6IFwiWW91J3ZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQhXCJ9KTtcblx0XHRcdH0sXG5cdFx0XHRlcnIgPT4ge1xuXHRcdFx0XHRpZiAoZXJyLm1zZyA9PT0gXCJpbnZhbGlkIGZpZWxkc1wiKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHJlZ2lzdGVyX2Vycm9yOiBcIlBsZWFzZSBmaXggdGhlIGZvbGxvd2luZzogXCIgfSk7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHJlZ2lzdGVyX2ludmFsaWRfZmllbGRzOiBlcnIuaW52YWxpZF9maWVsZHMgfSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGVyci5tc2cgPT09IFwiZHVwbGljYXRlIGZpZWxkc1wiKSB7XG5cdFx0XHRcdFx0bGV0IHN0ciA9IFwiXCI7XG5cdFx0XHRcdFx0ZXJyLmR1cGxpY2F0ZV9maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGZpZWxkKVxuXHRcdFx0XHRcdFx0c3RyICs9IGZpZWxkICsgXCIsIFwiO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgc3RyLmxlbmd0aCAtIDIpO1xuXHRcdFx0XHRcdHN0ciArPSAnIGlzIGFscmVhZHkgaW4gdXNlISc7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHJlZ2lzdGVyX2Vycm9yOiBzdHIgfSk7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHJlZ2lzdGVyX2ludmFsaWRfZmllbGRzOiBudWxsIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0KVxuXHR9XG5cdGxvZ291dCA9ICgpID0+IHtcblx0XHRhdXRoLmxvZ291dCgpXG5cdFx0dGhpcy5mb3JjZVVwZGF0ZSgpO1xuXHR9XG5cblx0cmVuZGVyX25hdmJhciA9ICgpID0+IHtcblx0XHRpZiAoIXRoaXMucHJvcHMuU2hvd05hdmJhcikgcmV0dXJuIG51bGw7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxNeU5hdmJhciBcblx0XHRcdFx0VmFyaWFudD17dGhpcy5wcm9wcy5WYXJpYW50fVxuXHRcdFx0XHRCcmFuZE5hbWU9e3RoaXMucHJvcHMuQnJhbmROYW1lfVxuXHRcdFx0XHRPbkJyYW5kTmFtZUNsaWNrPXsoKSA9PiB0aGlzLnByb3BzLmhpc3RvcnkucHVzaCgnLycpfVxuXHRcdFx0XHRhdXRoZW50aWNhdGVkPXthdXRoLmlzQXV0aGVudGljYXRlZCgpfVxuXHRcdFx0XHRPbkxvZ2luQ2xpY2s9eygpID0+IHRoaXMub3Blbl9tb2RhbChcImxvZ2luXCIpfVxuXHRcdFx0XHR1c2VyPXthdXRoLmdldENhY2hlZFVzZXIoKX1cblx0XHRcdFx0T25Vc2VyVGFnQ2xpY2s9eygpID0+IHRoaXMub3Blbl9tb2RhbChcInVzZXJcIil9XG5cdFx0XHRcdEN1c3RvbUxpbmtzPXt0aGlzLnByb3BzLkN1c3RvbUxpbmtzfVxuXHRcdFx0XHRoaXN0b3J5PXt0aGlzLnByb3BzLmhpc3Rvcnl9XG5cdFx0XHQvPlxuXHRcdClcblx0fVxuXG5cdHJlbmRlcl9sb2dpbl9tb2RhbCA9ICgpID0+IHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PExvZ2luTW9kYWxcblx0XHRcdFx0VmFyaWFudD17dGhpcy5wcm9wcy5WYXJpYW50fVxuXHRcdFx0XHRoaWRkZW49e2F1dGguaXNBdXRoZW50aWNhdGVkKCl9XG5cdFx0XHRcdHNob3c9e3RoaXMuc3RhdGUuZGlzcGxheV9sb2dpbl9tb2RhbH1cblx0XHRcdFx0b25IaWRlPXt0aGlzLmNsb3NlX2FsbF9tb2RhbHN9XG5cdFx0XHRcdGxvZ2luPXt0aGlzLmxvZ2lufVxuXHRcdFx0XHRyZWdpc3Rlcj17KCkgPT4gdGhpcy5vcGVuX21vZGFsKFwicmVnaXN0ZXJcIil9XG5cdFx0XHRcdGVycm9yPXt0aGlzLnN0YXRlLmxvZ2luX2Vycm9yfSBcblx0XHRcdC8+XG5cdFx0KVxuXHR9XG5cblx0cmVuZGVyX3JlZ2lzdGVyX21vZGFsID0gKCkgPT4ge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8UmVnaXN0ZXJNb2RhbCBcblx0XHRcdFx0VmFyaWFudD17dGhpcy5wcm9wcy5WYXJpYW50fVxuXHRcdFx0XHRoaWRkZW49e2F1dGguaXNBdXRoZW50aWNhdGVkKCl9IFxuXHRcdFx0XHRzaG93PXt0aGlzLnN0YXRlLmRpc3BsYXlfcmVnaXN0ZXJfbW9kYWx9IFxuXHRcdFx0XHRvbkhpZGU9e3RoaXMuY2xvc2VfYWxsX21vZGFsc30gXG5cdFx0XHRcdGxvZ2luPXsoKSA9PiB0aGlzLm9wZW5fbW9kYWwoXCJsb2dpblwiKX0gXG5cdFx0XHRcdHJlZ2lzdGVyPXt0aGlzLnJlZ2lzdGVyfSBcblx0XHRcdFx0ZXJyb3I9e3RoaXMuc3RhdGUucmVnaXN0ZXJfZXJyb3J9IFxuXHRcdFx0XHRpbnZhbGlkX2ZpZWxkcz17dGhpcy5zdGF0ZS5yZWdpc3Rlcl9pbnZhbGlkX2ZpZWxkc30gXG5cdFx0XHRcdHN1Y2Nlc3M9e3RoaXMuc3RhdGUucmVnaXN0ZXJfc3VjY2Vzc31cblx0XHRcdC8+XG5cdFx0KVxuXHR9XG5cblx0cmVuZGVyX3VzZXJfbW9kYWwgPSAoKSA9PiB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxVc2VyTW9kYWwgXG5cdFx0XHRcdFZhcmlhbnQ9e3RoaXMucHJvcHMuVmFyaWFudH1cblx0XHRcdFx0aGlkZGVuPXshYXV0aC5pc0F1dGhlbnRpY2F0ZWQoKX0gXG5cdFx0XHRcdHNob3c9e3RoaXMuc3RhdGUuZGlzcGxheV91c2VyX21vZGFsfSBcblx0XHRcdFx0b25IaWRlPXt0aGlzLmNsb3NlX2FsbF9tb2RhbHN9XG5cdFx0XHRcdGhpc3Rvcnk9e3RoaXMucHJvcHMuaGlzdG9yeX0gXG5cdFx0XHRcdGxvZ291dD17dGhpcy5sb2dvdXR9IFxuXHRcdFx0Lz5cblx0XHQpXG5cdH1cblxuXHRjbG9zZV9hbGxfbW9kYWxzID0gYXN5bmMgKCkgPT4ge1xuXHRcdGF3YWl0IHRoaXMuc2V0U3RhdGUoe2Rpc3BsYXlfbG9naW5fbW9kYWw6IGZhbHNlfSk7XG5cdFx0YXdhaXQgdGhpcy5zZXRTdGF0ZSh7ZGlzcGxheV9yZWdpc3Rlcl9tb2RhbDogZmFsc2V9KTtcblx0XHRhd2FpdCB0aGlzLnNldFN0YXRlKHtkaXNwbGF5X3VzZXJfbW9kYWw6IGZhbHNlfSk7XG5cdH1cblx0b3Blbl9tb2RhbCA9IGFzeW5jICh0eXBlKSA9PiB7XG5cdFx0YXdhaXQgdGhpcy5jbG9zZV9hbGxfbW9kYWxzKCk7XG5cdFx0aWYgKHR5cGUgPT09IFwibG9naW5cIikgdGhpcy5zZXRTdGF0ZSh7ZGlzcGxheV9sb2dpbl9tb2RhbDogdHJ1ZX0pO1xuXHRcdGVsc2UgaWYgKHR5cGUgPT09IFwicmVnaXN0ZXJcIikgdGhpcy5zZXRTdGF0ZSh7ZGlzcGxheV9yZWdpc3Rlcl9tb2RhbDogdHJ1ZX0pO1xuXHRcdGVsc2UgaWYgKHR5cGUgPT09IFwidXNlclwiKSB0aGlzLnNldFN0YXRlKHtkaXNwbGF5X3VzZXJfbW9kYWw6IHRydWV9KTtcblx0fVxuXG5cdHJlbmRlcigpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PGRpdj5cblx0XHRcdFx0e3RoaXMucmVuZGVyX25hdmJhcigpfVxuXHRcdFx0XHR7dGhpcy5yZW5kZXJfbG9naW5fbW9kYWwoKX1cblx0XHRcdFx0e3RoaXMucmVuZGVyX3JlZ2lzdGVyX21vZGFsKCl9XG5cdFx0XHRcdHt0aGlzLnJlbmRlcl91c2VyX21vZGFsKCl9XG5cdFx0XHQ8L2Rpdj5cblx0XHQpXG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXV0aENvbnRyb2xsZXI7Il19