UNPKG

moose-remote-components

Version:

Figuring out how to export components onto npm, to be used in other projects

171 lines (133 loc) 18.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.MyNavbar = void 0; var _react = _interopRequireWildcard(require("react")); var _reactBootstrap = require("react-bootstrap"); require("./MyNavbar.css"); 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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } 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 --------------------------------- * BrandName (String name shown in large text on the right of the component) REQUIRED * OnBrandNameClick (Function called when user clicks on the BrandName link) REQUIRED * authenticated (true or false value denoting the user's authenticated state) REQUIRED * OnLoginClick (Function called when user clicks login) * user (Object containing user data) REQUIRED * Object must have at least the following layout: * { firstname: (String) lastname: (String) } * OnUserTagClick (Function called whne user clicks on the user tag) * CustomLinks (Array of objects containing any custom link data) * Object laid out as follows: * { text: (String text display of link) onClick: (Function to be called once link is clicked) hidden: (True or False value whether to hide link or not *assumed false*) } * Variant (Change the navbar styles based on enum of variants) * "transparent" - Navbar is transparent with white text * "red" - Standard red color with white text (used mainly with user front) * "blue" - Blue navbar with white text (used mainly with business front) */ var MyNavbar = /*#__PURE__*/ function (_Component) { _inherits(MyNavbar, _Component); function MyNavbar() { var _getPrototypeOf2; var _this; _classCallCheck(this, MyNavbar); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MyNavbar)).call.apply(_getPrototypeOf2, [this].concat(args))); _defineProperty(_assertThisInitialized(_this), "state", { variant: _this.props.Variant }); _defineProperty(_assertThisInitialized(_this), "logError", function (msg) { return console.log("ERROR::NAVBAR::".concat(msg)); }); _defineProperty(_assertThisInitialized(_this), "renderLogInLink", function () { return _react["default"].createElement(_reactBootstrap.Nav.Link, { className: "navLink ", hidden: _this.props.authenticated, onClick: _this.props.OnLoginClick ? _this.props.OnLoginClick : _this.logError("METHOD::OnLoginClick::NOT_DEFINED") }, _react["default"].createElement("i", { className: "fa fa-lg fa-user-circle-o userIcon" }), _react["default"].createElement("span", null, "\xA0 Log In")); }); _defineProperty(_assertThisInitialized(_this), "renderUserTagLink", function () { return _react["default"].createElement(_reactBootstrap.Nav.Link, { className: "navLink", hidden: !_this.props.authenticated, onClick: _this.props.OnUserTagClick ? _this.props.OnUserTagClick : _this.logError("METHOD::OnUserTagClick::NOT_DEFINED") }, _react["default"].createElement("i", { className: "fa fa-lg fa-user-circle-o userIcon" }), _react["default"].createElement("span", null, "\xA0 \xA0", _this.props.user.firstname, "\xA0", _this.props.user.lastname)); }); _defineProperty(_assertThisInitialized(_this), "renderCustomLinks", function () { var custom_links = _this.props.CustomLinks ? _toConsumableArray(_this.props.CustomLinks) : [{ text: "Find A Gigg", onClick: function onClick() { return _this.props.history.push('/stores'); }, hidden: false }]; var links = []; for (var i = 0; i < custom_links.length; ++i) { links.push(_react["default"].createElement(_reactBootstrap.Nav.Link, { key: i, className: "navLink ", hidden: custom_links[i].hidden, onClick: custom_links[i].onClick ? custom_links[i].onClick : _this.logError("METHOD::".concat(custom_links[i].text ? custom_links[i].text : "", "::NOT_DEFINED")) }, _react["default"].createElement("span", null, custom_links[i].text))); } return links; }); return _this; } _createClass(MyNavbar, [{ key: "componentDidUpdate", value: function componentDidUpdate(oldProps) { if (oldProps.Variant !== this.props.Variant) this.setState({ variant: this.props.Variant }); } }, { key: "render", value: function render() { return _react["default"].createElement(_reactBootstrap.Navbar, { variant: "dark", className: "masterNavbar ".concat(this.state.variant) }, _react["default"].createElement(_reactBootstrap.Navbar.Brand, { className: "navBrand ", onClick: this.props.OnBrandNameClick ? this.props.OnBrandNameClick : this.logError("METHOD::OnBrandNameClick::NOT_DEFINED") }, this.props.BrandName ? this.props.BrandName : "BrandName"), _react["default"].createElement(_reactBootstrap.Nav, { className: "ml-auto" }, this.renderLogInLink(), this.renderUserTagLink(), this.renderCustomLinks())); } }]); return MyNavbar; }(_react.Component); exports.MyNavbar = MyNavbar; var _default = MyNavbar; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0F1dGgvTXlOYXZiYXIuanMiXSwibmFtZXMiOlsiTXlOYXZiYXIiLCJ2YXJpYW50IiwicHJvcHMiLCJWYXJpYW50IiwibXNnIiwiY29uc29sZSIsImxvZyIsImF1dGhlbnRpY2F0ZWQiLCJPbkxvZ2luQ2xpY2siLCJsb2dFcnJvciIsIk9uVXNlclRhZ0NsaWNrIiwidXNlciIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwiY3VzdG9tX2xpbmtzIiwiQ3VzdG9tTGlua3MiLCJ0ZXh0Iiwib25DbGljayIsImhpc3RvcnkiLCJwdXNoIiwiaGlkZGVuIiwibGlua3MiLCJpIiwibGVuZ3RoIiwib2xkUHJvcHMiLCJzZXRTdGF0ZSIsInN0YXRlIiwiT25CcmFuZE5hbWVDbGljayIsIkJyYW5kTmFtZSIsInJlbmRlckxvZ0luTGluayIsInJlbmRlclVzZXJUYWdMaW5rIiwicmVuZGVyQ3VzdG9tTGlua3MiLCJDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTZCYUEsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7OzREQUVKO0FBQ1BDLE1BQUFBLE9BQU8sRUFBRSxNQUFLQyxLQUFMLENBQVdDO0FBRGIsSzs7K0RBU0csVUFBQUMsR0FBRztBQUFBLGFBQUlDLE9BQU8sQ0FBQ0MsR0FBUiwwQkFBOEJGLEdBQTlCLEVBQUo7QUFBQSxLOztzRUFFSSxZQUFNO0FBQ3ZCLGFBQ0MsZ0NBQUMsbUJBQUQsQ0FBSyxJQUFMO0FBQ0MsUUFBQSxTQUFTLEVBQUMsVUFEWDtBQUVDLFFBQUEsTUFBTSxFQUFFLE1BQUtGLEtBQUwsQ0FBV0ssYUFGcEI7QUFHQyxRQUFBLE9BQU8sRUFDTixNQUFLTCxLQUFMLENBQVdNLFlBQVgsR0FFQyxNQUFLTixLQUFMLENBQVdNLFlBRlosR0FJQyxNQUFLQyxRQUFMLENB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QztBQURYLFNBS0UsS0FBS0MsZUFBTCxFQUxGLEVBUUUsS0FBS0MsaUJBQUwsRUFSRixFQVdFLEtBQUtDLGlCQUFMLEVBWEYsQ0FsQkQsQ0FERDtBQW9DQTs7OztFQTVJNEJDLGdCOzs7ZUErSWZoQyxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE5hdmJhciwgTmF2IH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwJztcbmltcG9ydCBcIi4vTXlOYXZiYXIuY3NzXCI7XG5cbi8qXG5cdFBST1BTXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQqIEJyYW5kTmFtZSAoU3RyaW5nIG5hbWUgc2hvd24gaW4gbGFyZ2UgdGV4dCBvbiB0aGUgcmlnaHQgb2YgdGhlIGNvbXBvbmVudCkgUkVRVUlSRURcblx0KiBPbkJyYW5kTmFtZUNsaWNrIChGdW5jdGlvbiBjYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiB0aGUgQnJhbmROYW1lIGxpbmspIFJFUVVJUkVEXG5cdCogYXV0aGVudGljYXRlZCAodHJ1ZSBvciBmYWxzZSB2YWx1ZSBkZW5vdGluZyB0aGUgdXNlcidzIGF1dGhlbnRpY2F0ZWQgc3RhdGUpIFJFUVVJUkVEXG5cdCogT25Mb2dpbkNsaWNrIChGdW5jdGlvbiBjYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyBsb2dpbilcblxuXHQqIHVzZXIgKE9iamVjdCBjb250YWluaW5nIHVzZXIgZGF0YSkgUkVRVUlSRURcblx0XHQqIE9iamVjdCBtdXN0IGhhdmUgYXQgbGVhc3QgdGhlIGZvbGxvd2luZyBsYXlvdXQ6XG5cdFx0XHQqXHR7XG5cdFx0XHRcdFx0Zmlyc3RuYW1lOiAoU3RyaW5nKVxuXHRcdFx0XHRcdGxhc3RuYW1lOiAoU3RyaW5nKVxuXHRcdFx0XHR9XG5cdCogT25Vc2VyVGFnQ2xpY2sgKEZ1bmN0aW9uIGNhbGxlZCB3aG5lIHVzZXIgY2xpY2tzIG9uIHRoZSB1c2VyIHRhZylcblxuXHQqIEN1c3RvbUxpbmtzIChBcnJheSBvZiBvYmplY3RzIGNvbnRhaW5pbmcgYW55IGN1c3RvbSBsaW5rIGRhdGEpXG5cdFx0KiBPYmplY3QgbGFpZCBvdXQgYXMgZm9sbG93czpcblx0XHRcdCogXHR7XG5cdFx0XHRcdFx0dGV4dDogKFN0cmluZyB0ZXh0IGRpc3BsYXkgb2YgbGluaylcblx0XHRcdFx0XHRvbkNsaWNrOiAoRnVuY3Rpb24gdG8gYmUgY2FsbGVkIG9uY2UgbGluayBpcyBjbGlja2VkKVxuXHRcdFx0XHRcdGhpZGRlbjogKFRydWUgb3IgRmFsc2UgdmFsdWUgd2hldGhlciB0byBoaWRlIGxpbmsgb3Igbm90ICphc3N1bWVkIGZhbHNlKilcblx0XHRcdFx0fVxuXHQqIFZhcmlhbnQgKENoYW5nZSB0aGUgbmF2YmFyIHN0eWxlcyBiYXNlZCBvbiBlbnVtIG9mIHZhcmlhbnRzKVxuXHRcdCogXCJ0cmFuc3BhcmVudFwiIC0gTmF2YmFyIGlzIHRyYW5zcGFyZW50IHdpdGggd2hpdGUgdGV4dFxuXHRcdCogXCJyZWRcIiAtIFN0YW5kYXJkIHJlZCBjb2xvciB3aXRoIHdoaXRlIHRleHQgKHVzZWQgbWFpbmx5IHdpdGggdXNlciBmcm9udClcblx0XHQqIFwiYmx1ZVwiIC0gQmx1ZSBuYXZiYXIgd2l0aCB3aGl0ZSB0ZXh0ICh1c2VkIG1haW5seSB3aXRoIGJ1c2luZXNzIGZyb250KVxuKi9cblxuZXhwb3J0IGNsYXNzIE15TmF2YmFyIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXHRzdGF0ZSA9IHtcblx0XHR2YXJpYW50OiB0aGlzLnByb3BzLlZhcmlhbnRcblx0fVxuXG5cdGNvbXBvbmVudERpZFVwZGF0ZShvbGRQcm9wcykge1xuXHRcdGlmIChvbGRQcm9wcy5WYXJpYW50ICE9PSB0aGlzLnByb3BzLlZhcmlhbnQpXG5cdFx0XHR0aGlzLnNldFN0YXRlKHt2YXJpYW50OiB0aGlzLnByb3BzLlZhcmlhbnR9KTtcblx0fVxuXG5cdGxvZ0Vycm9yID0gbXNnID0+IGNvbnNvbGUubG9nKGBFUlJPUjo6TkFWQkFSOjoke21zZ31gKTtcblxuXHRyZW5kZXJMb2dJbkxpbmsgPSAoKSA9PiB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxOYXYuTGlua1xuXHRcdFx0XHRjbGFzc05hbWU9XCJuYXZMaW5rIFwiXG5cdFx0XHRcdGhpZGRlbj17dGhpcy5wcm9wcy5hdXRoZW50aWNhdGVkfVxuXHRcdFx0XHRvbkNsaWNrPXtcblx0XHRcdFx0XHR0aGlzLnByb3BzLk9uTG9naW5DbGlja1xuXHRcdFx0XHRcdFx0P1xuXHRcdFx0XHRcdFx0dGhpcy5wcm9wcy5PbkxvZ2luQ2xpY2tcblx0XHRcdFx0XHRcdDpcblx0XHRcdFx0XHRcdHRoaXMubG9nRXJyb3IoXCJNRVRIT0Q6Ok9uTG9naW5DbGljazo6Tk9UX0RFRklORURcIilcblx0XHRcdFx0fVxuXHRcdFx0PlxuXHRcdFx0XHQ8aVxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImZhIGZhLWxnIGZhLXVzZXItY2lyY2xlLW8gdXNlckljb25cIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdDwvaT5cblx0XHRcdFx0PHNwYW4+XG5cdFx0XHRcdFx0Jm5ic3A7IExvZyBJblxuXHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0PC9OYXYuTGluaz5cblx0XHQpXG5cdH1cblxuXHRyZW5kZXJVc2VyVGFnTGluayA9ICgpID0+IHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PE5hdi5MaW5rXG5cdFx0XHRcdGNsYXNzTmFtZT1cIm5hdkxpbmtcIlxuXHRcdFx0XHRoaWRkZW49eyF0aGlzLnByb3BzLmF1dGhlbnRpY2F0ZWR9XG5cdFx0XHRcdG9uQ2xpY2s9e1xuXHRcdFx0XHRcdHRoaXMucHJvcHMuT25Vc2VyVGFnQ2xpY2tcblx0XHRcdFx0XHRcdD9cblx0XHRcdFx0XHRcdHRoaXMucHJvcHMuT25Vc2VyVGFnQ2xpY2tcblx0XHRcdFx0XHRcdDpcblx0XHRcdFx0XHRcdHRoaXMubG9nRXJyb3IoXCJNRVRIT0Q6Ok9uVXNlclRhZ0NsaWNrOjpOT1RfREVGSU5FRFwiKVxuXHRcdFx0XHR9XG5cdFx0XHQ+XG5cdFx0XHRcdDxpXG5cdFx0XHRcdFx0Y2xhc3NOYW1lPVwiZmEgZmEtbGcgZmEtdXNlci1jaXJjbGUtbyB1c2VySWNvblwiXG5cdFx0XHRcdD5cblx0XHRcdFx0PC9pPlxuXHRcdFx0XHQ8c3Bhbj5cblx0XHRcdFx0XHQmbmJzcDtcblx0XHRcdFx0XHQmbmJzcDtcblx0XHRcdFx0XHRcdFx0e3RoaXMucHJvcHMudXNlci5maXJzdG5hbWV9XG5cdFx0XHRcdFx0Jm5ic3A7XG5cdFx0XHRcdFx0XHRcdHt0aGlzLnByb3BzLnVzZXIubGFzdG5hbWV9XG5cdFx0XHRcdDwvc3Bhbj5cblx0XHRcdDwvTmF2Lkxpbms+XG5cdFx0KVxuXHR9XG5cblx0cmVuZGVyQ3VzdG9tTGlua3MgPSAoKSA9PiB7XG5cdFx0bGV0IGN1c3RvbV9saW5rcyA9IHRoaXMucHJvcHMuQ3VzdG9tTGlua3MgXG5cdFx0XHQ/IFsuLi50aGlzLnByb3BzLkN1c3RvbUxpbmtzXSBcblx0XHRcdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGV4dDogXCJGaW5kIEEgR2lnZ1wiLFxuXHRcdFx0XHRcdG9uQ2xpY2s6ICgpID0+IHRoaXMucHJvcHMuaGlzdG9yeS5wdXNoKCcvc3RvcmVzJyksXG5cdFx0XHRcdFx0aGlkZGVuOiBmYWxzZSxcblx0XHRcdFx0fSxcblx0XHRcdF07XG5cblx0XHRsZXQgbGlua3MgPSBbXVxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY3VzdG9tX2xpbmtzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHRsaW5rcy5wdXNoKFxuXHRcdFx0XHQ8TmF2Lkxpbmtcblx0XHRcdFx0XHRrZXk9e2l9XG5cdFx0XHRcdFx0Y2xhc3NOYW1lPVwibmF2TGluayBcIlxuXHRcdFx0XHRcdGhpZGRlbj17Y3VzdG9tX2xpbmtzW2ldLmhpZGRlbn1cblx0XHRcdFx0XHRvbkNsaWNrPXtcblx0XHRcdFx0XHRcdGN1c3RvbV9saW5rc1tpXS5vbkNsaWNrXG5cdFx0XHRcdFx0XHQ/XG5cdFx0XHRcdFx0XHRcdGN1c3RvbV9saW5rc1tpXS5vbkNsaWNrXG5cdFx0XHRcdFx0XHQ6XG5cdFx0XHRcdFx0XHR0aGlzLmxvZ0Vycm9yKFxuXHRcdFx0XHRcdFx0XHRgTUVUSE9EOjoke2N1c3RvbV9saW5rc1tpXS50ZXh0P2N1c3RvbV9saW5rc1tpXS50ZXh0OlwiXCJ9OjpOT1RfREVGSU5FRGBcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0PlxuXHRcdFx0XHRcdDxzcGFuPlxuXHRcdFx0XHRcdFx0e2N1c3RvbV9saW5rc1tpXS50ZXh0fVxuXHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0PC9OYXYuTGluaz5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBsaW5rcztcblx0fVxuXG5cdHJlbmRlcigpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PE5hdmJhciBcblx0XHRcdFx0dmFyaWFudD1cImRhcmtcIiBcblx0XHRcdFx0Y2xhc3NOYW1lPXtgbWFzdGVyTmF2YmFyICR7dGhpcy5zdGF0ZS52YXJpYW50fWB9XG5cdFx0XHQ+XG5cblx0XHRcdFx0PE5hdmJhci5CcmFuZFxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cIm5hdkJyYW5kIFwiXG5cdFx0XHRcdFx0b25DbGljaz17XG5cdFx0XHRcdFx0XHR0aGlzLnByb3BzLk9uQnJhbmROYW1lQ2xpY2tcblx0XHRcdFx0XHRcdD9cblx0XHRcdFx0XHRcdHRoaXMucHJvcHMuT25CcmFuZE5hbWVDbGlja1xuXHRcdFx0XHRcdFx0OlxuXHRcdFx0XHRcdFx0dGhpcy5sb2dFcnJvcihcIk1FVEhPRDo6T25CcmFuZE5hbWVDbGljazo6Tk9UX0RFRklORURcIilcblx0XHRcdFx0XHR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7dGhpcy5wcm9wcy5CcmFuZE5hbWUgPyB0aGlzLnByb3BzLkJyYW5kTmFtZSA6IFwiQnJhbmROYW1lXCJ9XG5cdFx0XHRcdDwvTmF2YmFyLkJyYW5kPlxuXG5cdFx0XHRcdDxOYXZcblx0XHRcdFx0XHRjbGFzc05hbWU9XCJtbC1hdXRvXCJcblx0XHRcdFx0PlxuXG5cdFx0XHRcdFx0ey8qIExPRyBJTiAqL31cblx0XHRcdFx0XHR7dGhpcy5yZW5kZXJMb2dJbkxpbmsoKX1cblxuXHRcdFx0XHRcdHsvKiBVU0VSIFRBRyAqL31cblx0XHRcdFx0XHR7dGhpcy5yZW5kZXJVc2VyVGFnTGluaygpfVxuXG5cdFx0XHRcdFx0ey8qIENVU1RPTSBMSU5LUyAqL31cblx0XHRcdFx0XHR7dGhpcy5yZW5kZXJDdXN0b21MaW5rcygpfVxuXG5cdFx0XHRcdDwvTmF2PlxuXG5cdFx0XHQ8L05hdmJhcj5cblx0XHQpXG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTXlOYXZiYXI7Il19