UNPKG

apeman-react-sign

Version:
358 lines (308 loc) 27.9 kB
/** * Form for signin * @class ApSigninForm */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApSigninForm = undefined; var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _apemanReactForm = require('apeman-react-form'); var _apemanReactField = require('apeman-react-field'); var _apemanReactButton = require('apeman-react-button'); var _apemanReactText = require('apeman-react-text'); var _apemanReactPassword = require('apeman-react-password'); var _apemanReactCheckbox = require('apeman-react-checkbox'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var noop = function noop(e) { return console.log(e); }; /** @lends ApSigninForm */ var ApSigninForm = function (_Component) { (0, _inherits3.default)(ApSigninForm, _Component); function ApSigninForm(props) { (0, _classCallCheck3.default)(this, ApSigninForm); var _this = (0, _possibleConstructorReturn3.default)(this, (ApSigninForm.__proto__ || (0, _getPrototypeOf2.default)(ApSigninForm)).call(this, props)); var s = _this; s.state = {}; return _this; } (0, _createClass3.default)(ApSigninForm, [{ key: 'render', value: function render() { var s = this; var props = s.props; var id = props.id, values = props.values, labels = props.labels, icons = props.icons, idOf = props.idOf, onUpdate = props.onUpdate, _onSubmit = props.onSubmit, spinning = props.spinning, errorList = props.errorList, errorStyle = props.errorStyle, actions = props.actions, centered = props.centered, rememberEnabled = props.rememberEnabled; return _react2.default.createElement( _apemanReactForm.ApForm, { id: id, centered: centered, spinning: spinning, className: (0, _classnames2.default)('ap-signin-form', props.className), style: (0, _assign2.default)({}, props.style) }, _react2.default.createElement( _apemanReactField.ApFieldSet, { plain: true }, errorList, errorStyle, _react2.default.createElement(ApSigninForm.KeyField, { values: values, labels: labels, idOf: idOf, onUpdate: onUpdate }), _react2.default.createElement(ApSigninForm.PasswordField, { values: values, labels: labels, idOf: idOf, onUpdate: onUpdate }), _react2.default.createElement(ApSigninForm.RememberField, (0, _extends3.default)({ labels: labels, idOf: idOf }, { enabled: rememberEnabled, onToggle: actions.toggleRemember })), props.children, _react2.default.createElement(ApSigninForm.ButtonField, (0, _extends3.default)({ labels: labels, idOf: idOf }, { onSubmit: function onSubmit() { return _onSubmit(s.props.values); } })) ), _react2.default.createElement(ApSigninForm.MenuFieldSet, { actions: props.menu, labels: labels, idOf: idOf }), _react2.default.createElement(ApSigninForm.ButtonFieldSet, { actions: props.buttons, labels: labels, icons: icons, idOf: idOf }) ); } }]); return ApSigninForm; }(_react.Component); (0, _assign2.default)(ApSigninForm, { // -------------------- // Specs // -------------------- propTypes: { labels: _react.PropTypes.object, icons: _react.PropTypes.object, menu: _react.PropTypes.objectOf(_react.PropTypes.func), buttons: _react.PropTypes.objectOf(_react.PropTypes.func), rememberEnabled: _react.PropTypes.bool }, defaultProps: { labels: { key: 'Username or Email', password: 'Password', remember: 'Remember Me', submit: 'Sign In', signup: 'Sign Up', recover: 'Forget Password?', twitter: 'Sign in with Twitter', google: 'Sign in with Google', facebook: 'Sign in with Facebook' }, icons: { facebook: 'fa fa-facebook', twitter: 'fa fa-twitter', google: 'fa fa-google' }, actions: { toggleRemember: noop }, menu: null, buttons: null, rememberEnabled: false }, // ------------------ // Sub Components // ------------------ KeyField: function KeyField(_ref) { var values = _ref.values, labels = _ref.labels, idOf = _ref.idOf, onUpdate = _ref.onUpdate; var name = 'key'; return _react2.default.createElement( _apemanReactField.ApField, null, _react2.default.createElement( _apemanReactField.ApFieldLabel, { htmlFor: idOf(name) }, labels[[name]] ), _react2.default.createElement( _apemanReactField.ApFieldValue, null, _react2.default.createElement(_apemanReactText.ApText, { autoFocus: true, id: idOf(name), name: name, value: values[name], onChange: function onChange(e) { return onUpdate((0, _defineProperty3.default)({}, name, e.target.value)); } }) ) ); }, PasswordField: function PasswordField(_ref2) { var values = _ref2.values, labels = _ref2.labels, idOf = _ref2.idOf, onUpdate = _ref2.onUpdate; var name = 'password'; return _react2.default.createElement( _apemanReactField.ApField, null, _react2.default.createElement( _apemanReactField.ApFieldLabel, { htmlFor: idOf(name) }, labels[name] ), _react2.default.createElement( _apemanReactField.ApFieldValue, null, _react2.default.createElement(_apemanReactPassword.ApPassword, { id: idOf(name), value: values[name], name: name, onChange: function onChange(e) { return onUpdate((0, _defineProperty3.default)({}, name, e.target.value)); } }) ) ); }, RememberField: function RememberField(_ref3) { var labels = _ref3.labels, idOf = _ref3.idOf, enabled = _ref3.enabled, onToggle = _ref3.onToggle; var name = 'remember'; return _react2.default.createElement( _apemanReactField.ApField, { className: 'ap-signin-form-sub-field' }, _react2.default.createElement(_apemanReactField.ApFieldLabel, { htmlFor: idOf(name) }), _react2.default.createElement( _apemanReactField.ApFieldValue, null, _react2.default.createElement(_apemanReactCheckbox.ApCheckbox, { id: idOf(name), value: 'YES', checked: enabled, title: labels[name], name: name, onChange: function onChange() { return onToggle(!enabled); } }) ) ); }, ButtonField: function ButtonField(_ref4) { var labels = _ref4.labels, idOf = _ref4.idOf, onSubmit = _ref4.onSubmit; var name = 'submit'; return _react2.default.createElement( _apemanReactField.ApField, { center: true, className: 'ap-signin-form-button-field' }, _react2.default.createElement( _apemanReactButton.ApButton, { wide: true, primary: true, onTap: onSubmit, id: idOf(name) }, labels[name] ) ); }, MenuFieldSet: function MenuFieldSet(_ref5) { var actions = _ref5.actions, labels = _ref5.labels, idOf = _ref5.idOf; if (!actions) { return null; } return _react2.default.createElement( _apemanReactField.ApFieldSet, { plain: true }, _react2.default.createElement( _apemanReactField.ApField, { center: true, className: 'ap-signin-form-action-field' }, _react2.default.createElement( _apemanReactButton.ApCellButtonRow, { className: 'ap-signin-form-action-button-row' }, (0, _keys2.default)(actions).map(function (name) { return _react2.default.createElement(_apemanReactButton.ApCellButton, { id: idOf(name), key: name, onTap: function onTap(e) { return actions[name](); }, text: labels[name] }); }) ) ) ); }, ButtonFieldSet: function ButtonFieldSet(_ref6) { var actions = _ref6.actions, labels = _ref6.labels, icons = _ref6.icons, idOf = _ref6.idOf; if (!actions) { return null; } return _react2.default.createElement( _apemanReactField.ApFieldSet, { plain: true }, _react2.default.createElement( _apemanReactField.ApField, { className: 'ap-signin-form-action-field' }, _react2.default.createElement( _apemanReactButton.ApIconButtonRow, { className: 'ap-signin-form-action-button-row' }, (0, _keys2.default)(actions).map(function (name) { return _react2.default.createElement(_apemanReactButton.ApIconButton, { id: idOf(name), key: name, onTap: function onTap(e) { return actions[name](); }, icon: icons[name], text: labels[name] }); }) ) ) ); } }); exports.ApSigninForm = ApSigninForm; exports.default = (0, _apemanReactForm.withForm)(ApSigninForm); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3NpZ25pbl9mb3JtLmpzeCJdLCJuYW1lcyI6WyJub29wIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJBcFNpZ25pbkZvcm0iLCJwcm9wcyIsInMiLCJzdGF0ZSIsImlkIiwidmFsdWVzIiwibGFiZWxzIiwiaWNvbnMiLCJpZE9mIiwib25VcGRhdGUiLCJvblN1Ym1pdCIsInNwaW5uaW5nIiwiZXJyb3JMaXN0IiwiZXJyb3JTdHlsZSIsImFjdGlvbnMiLCJjZW50ZXJlZCIsInJlbWVtYmVyRW5hYmxlZCIsImNsYXNzTmFtZSIsInN0eWxlIiwidG9nZ2xlUmVtZW1iZXIiLCJjaGlsZHJlbiIsIm1lbnUiLCJidXR0b25zIiwicHJvcFR5cGVzIiwib2JqZWN0Iiwib2JqZWN0T2YiLCJmdW5jIiwiYm9vbCIsImRlZmF1bHRQcm9wcyIsImtleSIsInBhc3N3b3JkIiwicmVtZW1iZXIiLCJzdWJtaXQiLCJzaWdudXAiLCJyZWNvdmVyIiwidHdpdHRlciIsImdvb2dsZSIsImZhY2Vib29rIiwiS2V5RmllbGQiLCJuYW1lIiwidGFyZ2V0IiwidmFsdWUiLCJQYXNzd29yZEZpZWxkIiwiUmVtZW1iZXJGaWVsZCIsImVuYWJsZWQiLCJvblRvZ2dsZSIsIkJ1dHRvbkZpZWxkIiwiTWVudUZpZWxkU2V0IiwibWFwIiwiQnV0dG9uRmllbGRTZXQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUtBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOztBQUdBOztBQUdBOztBQUdBOztBQUNBOztBQUNBOzs7O0FBRUEsSUFBTUEsT0FBTyxTQUFQQSxJQUFPLENBQUNDLENBQUQ7QUFBQSxTQUFPQyxRQUFRQyxHQUFSLENBQVlGLENBQVosQ0FBUDtBQUFBLENBQWI7O0FBRUE7O0lBQ01HLFk7OztBQUNKLHdCQUFhQyxLQUFiLEVBQW9CO0FBQUE7O0FBQUEsa0pBQ1pBLEtBRFk7O0FBRWxCLFFBQU1DLFNBQU47QUFDQUEs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QWZDLEtBQWUsU0FBZkEsS0FBZTtBQUFBLFFBQVJDLElBQVEsU0FBUkEsSUFBUTs7QUFDaEQsUUFBSSxDQUFDTSxPQUFMLEVBQWM7QUFDWixhQUFPLElBQVA7QUFDRDtBQUNELFdBQ0U7QUFBQTtBQUFBLFFBQVksV0FBWjtBQUNFO0FBQUE7QUFBQSxVQUFTLFdBQVUsNkJBQW5CO0FBQ0U7QUFBQTtBQUFBLFlBQWlCLFdBQVUsa0NBQTNCO0FBRUksOEJBQVlBLE9BQVosRUFBcUJrQyxHQUFyQixDQUF5QixVQUFDVCxJQUFEO0FBQUEsbUJBQ3ZCLGlFQUFjLElBQUsvQixLQUFLK0IsSUFBTCxDQUFuQjtBQUNjLG1CQUFNQSxJQURwQjtBQUVjLHFCQUFRLGVBQUMxQyxDQUFEO0FBQUEsdUJBQU9pQixRQUFTeUIsSUFBVCxHQUFQO0FBQUEsZUFGdEI7QUFHYyxvQkFBT2hDLE1BQU9nQyxJQUFQLENBSHJCO0FBSWMsb0JBQU9qQyxPQUFRaUMsSUFBUixDQUpyQixHQUR1QjtBQUFBLFdBQXpCO0FBRko7QUFERjtBQURGLEtBREY7QUFpQkQ7QUEzSnlCLENBQTVCOztRQThKU3ZDLFksR0FBQUEsWTtrQkFDTSwrQkFBU0EsWUFBVCxDIiwiZmlsZSI6ImFwX3NpZ25pbl9mb3JtLmpzeCIsInNvdXJjZVJvb3QiOiJsaWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvcm0gZm9yIHNpZ25pblxuICogQGNsYXNzIEFwU2lnbmluRm9ybVxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50LCBQcm9wVHlwZXMgYXMgdHlwZXMgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQge1xuICBBcEZvcm0sIHdpdGhGb3JtXG59IGZyb20gJ2FwZW1hbi1yZWFjdC1mb3JtJ1xuaW1wb3J0IHtcbiAgQXBGaWVsZFNldCwgQXBGaWVsZCwgQXBGaWVsZExhYmVsLCBBcEZpZWxkVmFsdWVcbn0gZnJvbSAnYXBlbWFuLXJlYWN0LWZpZWxkJ1xuaW1wb3J0IHtcbiAgQXBCdXR0b24sIEFwQ2VsbEJ1dHRvbiwgQXBDZWxsQnV0dG9uUm93LCBBcEljb25CdXR0b24sIEFwSWNvbkJ1dHRvblJvd1xufSBmcm9tICdhcGVtYW4tcmVhY3QtYnV0dG9uJ1xuaW1wb3J0IHsgQXBUZXh0IH0gZnJvbSAnYXBlbWFuLXJlYWN0LXRleHQnXG5pbXBvcnQgeyBBcFBhc3N3b3JkIH0gZnJvbSAnYXBlbWFuLXJlYWN0LXBhc3N3b3JkJ1xuaW1wb3J0IHsgQXBDaGVja2JveCB9IGZyb20gJ2FwZW1hbi1yZWFjdC1jaGVja2JveCdcblxuY29uc3Qgbm9vcCA9IChlKSA9PiBjb25zb2xlLmxvZyhlKVxuXG4vKiogQGxlbmRzIEFwU2lnbmluRm9ybSAqL1xuY2xhc3MgQXBTaWduaW5Gb3JtIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IgKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBzLnN0YXRlID0ge31cbiAgfVxuXG4gIHJlbmRlciAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIGxldCB7XG4gICAgICBpZCxcbiAgICAgIHZhbHVlcyxcbiAgICAgIGxhYmVscyxcbiAgICAgIGljb25zLFxuICAgICAgaWRPZixcbiAgICAgIG9uVXBkYXRlLFxuICAgICAgb25TdWJtaXQsXG4gICAgICBzcGlubmluZyxcbiAgICAgIGVycm9yTGlzdCxcbiAgICAgIGVycm9yU3R5bGUsXG4gICAgICBhY3Rpb25zLFxuICAgICAgY2VudGVyZWQsXG4gICAgICByZW1lbWJlckVuYWJsZWRcbiAgICB9ID0gcHJvcHNcbiAgICByZXR1cm4gKFxuICAgICAgPEFwRm9ybSBpZD17IGlkIH1cbiAgICAgICAgICAgICAgY2VudGVyZWQ9eyBjZW50ZXJlZCB9XG4gICAgICAgICAgICAgIHNwaW5uaW5nPXsgc3Bpbm5pbmcgfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc25hbWVzKCdhcC1zaWduaW4tZm9ybScsIHByb3BzLmNsYXNzTmFtZSl9XG4gICAgICAgICAgICAgIHN0eWxlPXsgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMuc3R5bGUpIH1cbiAgICAgID5cbiAgICAgICAgPEFwRmllbGRTZXQgcGxhaW4+XG4gICAgICAgICAgeyBlcnJvckxpc3QgfVxuICAgICAgICAgIHsgZXJyb3JTdHlsZSB9XG4gICAgICAgICAgPEFwU2lnbmluRm9ybS5LZXlGaWVsZCB7IC4uLnsgdmFsdWVzLCBsYWJlbHMsIGlkT2YsIG9uVXBkYXRlIH0gfS8+XG4gICAgICAgICAgPEFwU2lnbmluRm9ybS5QYXNzd29yZEZpZWxkIHsgLi4ueyB2YWx1ZXMsIGxhYmVscywgaWRPZiwgb25VcGRhdGUgfSB9Lz5cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLlJlbWVtYmVyRmllbGQgeyAuLi57IGxhYmVscywgaWRPZiB9IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZD17IHJlbWVtYmVyRW5hYmxlZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVG9nZ2xlPXsgYWN0aW9ucy50b2dnbGVSZW1lbWJlciB9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7IHByb3BzLmNoaWxkcmVuIH1cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLkJ1dHRvbkZpZWxkIHsgLi4ueyBsYWJlbHMsIGlkT2YgfSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17ICgpID0+IG9uU3VibWl0KHMucHJvcHMudmFsdWVzKSB9Lz5cbiAgICAgICAgPC9BcEZpZWxkU2V0PlxuICAgICAgICA8QXBTaWduaW5Gb3JtLk1lbnVGaWVsZFNldCBhY3Rpb25zPXsgcHJvcHMubWVudSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscz17IGxhYmVscyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkT2Y9eyBpZE9mIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEFwU2lnbmluRm9ybS5CdXR0b25GaWVsZFNldCBhY3Rpb25zPXsgcHJvcHMuYnV0dG9ucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzPXsgbGFiZWxzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29ucz17IGljb25zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZE9mPXsgaWRPZiB9Lz5cbiAgICAgIDwvQXBGb3JtPlxuICAgIClcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKEFwU2lnbmluRm9ybSwge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwcm9wVHlwZXM6IHtcbiAgICBsYWJlbHM6IHR5cGVzLm9iamVjdCxcbiAgICBpY29uczogdHlwZXMub2JqZWN0LFxuICAgIG1lbnU6IHR5cGVzLm9iamVjdE9mKHR5cGVzLmZ1bmMpLFxuICAgIGJ1dHRvbnM6IHR5cGVzLm9iamVjdE9mKHR5cGVzLmZ1bmMpLFxuICAgIHJlbWVtYmVyRW5hYmxlZDogdHlwZXMuYm9vbFxuICB9LFxuXG4gIGRlZmF1bHRQcm9wczoge1xuICAgIGxhYmVsczoge1xuICAgICAga2V5OiAnVXNlcm5hbWUgb3IgRW1haWwnLFxuICAgICAgcGFzc3dvcmQ6ICdQYXNzd29yZCcsXG4gICAgICByZW1lbWJlcjogJ1JlbWVtYmVyIE1lJyxcbiAgICAgIHN1Ym1pdDogJ1NpZ24gSW4nLFxuICAgICAgc2lnbnVwOiAnU2lnbiBVcCcsXG4gICAgICByZWNvdmVyOiAnRm9yZ2V0IFBhc3N3b3JkPycsXG4gICAgICB0d2l0dGVyOiAnU2lnbiBpbiB3aXRoIFR3aXR0ZXInLFxuICAgICAgZ29vZ2xlOiAnU2lnbiBpbiB3aXRoIEdvb2dsZScsXG4gICAgICBmYWNlYm9vazogJ1NpZ24gaW4gd2l0aCBGYWNlYm9vaydcbiAgICB9LFxuICAgIGljb25zOiB7XG4gICAgICBmYWNlYm9vazogJ2ZhIGZhLWZhY2Vib29rJyxcbiAgICAgIHR3aXR0ZXI6ICdmYSBmYS10d2l0dGVyJyxcbiAgICAgIGdvb2dsZTogJ2ZhIGZhLWdvb2dsZSdcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHRvZ2dsZVJlbWVtYmVyOiBub29wXG4gICAgfSxcbiAgICBtZW51OiBudWxsLFxuICAgIGJ1dHRvbnM6IG51bGwsXG4gICAgcmVtZW1iZXJFbmFibGVkOiBmYWxzZVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTdWIgQ29tcG9uZW50c1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cblxuICBLZXlGaWVsZCAoeyB2YWx1ZXMsIGxhYmVscywgaWRPZiwgb25VcGRhdGUgfSkge1xuICAgIGxldCBuYW1lID0gJ2tleSdcbiAgICByZXR1cm4gKFxuICAgICAgPEFwRmllbGQ+XG4gICAgICAgIDxBcEZpZWxkTGFiZWwgaHRtbEZvcj17IGlkT2YobmFtZSkgfT5cbiAgICAgICAgICB7IGxhYmVsc1sgWyBuYW1lIF0gXSB9XG4gICAgICAgIDwvQXBGaWVsZExhYmVsPlxuICAgICAgICA8QXBGaWVsZFZhbHVlPlxuICAgICAgICAgIDxBcFRleHQgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICBpZD17IGlkT2YobmFtZSkgfVxuICAgICAgICAgICAgICAgICAgbmFtZT17IG5hbWUgfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9eyB2YWx1ZXNbIG5hbWUgXSB9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IChlKSA9PiBvblVwZGF0ZSh7IFtuYW1lXTogZS50YXJnZXQudmFsdWUgfSkgfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQXBGaWVsZFZhbHVlPlxuICAgICAgPC9BcEZpZWxkPlxuICAgIClcbiAgfSxcblxuICBQYXNzd29yZEZpZWxkICh7IHZhbHVlcywgbGFiZWxzLCBpZE9mLCBvblVwZGF0ZSB9KSB7XG4gICAgbGV0IG5hbWUgPSAncGFzc3dvcmQnXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcEZpZWxkPlxuICAgICAgICA8QXBGaWVsZExhYmVsIGh0bWxGb3I9eyBpZE9mKG5hbWUpIH0+XG4gICAgICAgICAgeyBsYWJlbHNbIG5hbWUgXSB9XG4gICAgICAgIDwvQXBGaWVsZExhYmVsPlxuICAgICAgICA8QXBGaWVsZFZhbHVlPlxuICAgICAgICAgIDxBcFBhc3N3b3JkIGlkPXsgaWRPZihuYW1lKSB9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyB2YWx1ZXNbIG5hbWUgXSB9XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT17IG5hbWUgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKGUpID0+IG9uVXBkYXRlKHsgW25hbWVdOiBlLnRhcmdldC52YWx1ZSB9KSB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BcEZpZWxkVmFsdWU+XG4gICAgICA8L0FwRmllbGQ+XG4gICAgKVxuICB9LFxuXG4gIFJlbWVtYmVyRmllbGQgKHsgbGFiZWxzLCBpZE9mLCBlbmFibGVkLCBvblRvZ2dsZSB9KSB7XG4gICAgbGV0IG5hbWUgPSAncmVtZW1iZXInXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcEZpZWxkIGNsYXNzTmFtZT0nYXAtc2lnbmluLWZvcm0tc3ViLWZpZWxkJz5cbiAgICAgICAgPEFwRmllbGRMYWJlbCBodG1sRm9yPXsgaWRPZihuYW1lKSB9PlxuICAgICAgICA8L0FwRmllbGRMYWJlbD5cbiAgICAgICAgPEFwRmllbGRWYWx1ZT5cbiAgICAgICAgICA8QXBDaGVja2JveCBpZD17IGlkT2YobmFtZSkgfVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSdZRVMnXG4gICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17IGVuYWJsZWQgfVxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsgbGFiZWxzWyBuYW1lIF0gfVxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9eyBuYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICgpID0+IG9uVG9nZ2xlKCFlbmFibGVkKSB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BcEZpZWxkVmFsdWU+XG4gICAgICA8L0FwRmllbGQ+XG4gICAgKVxuICB9LFxuXG4gIEJ1dHRvbkZpZWxkICh7IGxhYmVscywgaWRPZiwgb25TdWJtaXQgfSkge1xuICAgIGxldCBuYW1lID0gJ3N1Ym1pdCdcbiAgICByZXR1cm4gKFxuICAgICAgPEFwRmllbGQgY2VudGVyXG4gICAgICAgICAgICAgICBjbGFzc05hbWU9J2FwLXNpZ25pbi1mb3JtLWJ1dHRvbi1maWVsZCc+XG4gICAgICAgIDxBcEJ1dHRvbiB3aWRlXG4gICAgICAgICAgICAgICAgICBwcmltYXJ5XG4gICAgICAgICAgICAgICAgICBvblRhcD17IG9uU3VibWl0IH1cbiAgICAgICAgICAgICAgICAgIGlkPXsgaWRPZihuYW1lKSB9XG4gICAgICAgID57IGxhYmVsc1sgbmFtZSBdIH08L0FwQnV0dG9uPlxuICAgICAgPC9BcEZpZWxkPlxuICAgIClcbiAgfSxcblxuICBNZW51RmllbGRTZXQgKHsgYWN0aW9ucywgbGFiZWxzLCBpZE9mIH0pIHtcbiAgICBpZiAoIWFjdGlvbnMpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZFNldCBwbGFpbj5cbiAgICAgICAgPEFwRmllbGQgY2VudGVyXG4gICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYXAtc2lnbmluLWZvcm0tYWN0aW9uLWZpZWxkJz5cbiAgICAgICAgICA8QXBDZWxsQnV0dG9uUm93IGNsYXNzTmFtZT0nYXAtc2lnbmluLWZvcm0tYWN0aW9uLWJ1dHRvbi1yb3cnPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpb25zKS5tYXAoKG5hbWUpID0+IChcbiAgICAgICAgICAgICAgICA8QXBDZWxsQnV0dG9uIGlkPXsgaWRPZihuYW1lKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9eyBuYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVGFwPXsgKGUpID0+IGFjdGlvbnNbIG5hbWUgXSgpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9eyBsYWJlbHNbIG5hbWUgXSB9Lz5cbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L0FwQ2VsbEJ1dHRvblJvdz5cbiAgICAgICAgPC9BcEZpZWxkPlxuICAgICAgPC9BcEZpZWxkU2V0PlxuICAgIClcbiAgfSxcblxuICBCdXR0b25GaWVsZFNldCAoeyBhY3Rpb25zLCBsYWJlbHMsIGljb25zLCBpZE9mIH0pIHtcbiAgICBpZiAoIWFjdGlvbnMpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZFNldCBwbGFpbj5cbiAgICAgICAgPEFwRmllbGQgY2xhc3NOYW1lPSdhcC1zaWduaW4tZm9ybS1hY3Rpb24tZmllbGQnPlxuICAgICAgICAgIDxBcEljb25CdXR0b25Sb3cgY2xhc3NOYW1lPSdhcC1zaWduaW4tZm9ybS1hY3Rpb24tYnV0dG9uLXJvdyc+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGlvbnMpLm1hcCgobmFtZSkgPT4gKFxuICAgICAgICAgICAgICAgIDxBcEljb25CdXR0b24gaWQ9eyBpZE9mKG5hbWUpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17IG5hbWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UYXA9eyAoZSkgPT4gYWN0aW9uc1sgbmFtZSBdKCkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17IGljb25zWyBuYW1lIF0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD17IGxhYmVsc1sgbmFtZSBdIH0vPlxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvQXBJY29uQnV0dG9uUm93PlxuICAgICAgICA8L0FwRmllbGQ+XG4gICAgICA8L0FwRmllbGRTZXQ+XG4gICAgKVxuICB9XG59KVxuXG5leHBvcnQgeyBBcFNpZ25pbkZvcm0gfVxuZXhwb3J0IGRlZmF1bHQgd2l0aEZvcm0oQXBTaWduaW5Gb3JtKVxuIl19