UNPKG

react-planner-viewer

Version:

react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode

212 lines (180 loc) 19.3 kB
var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _STYLE_DESCRIPTION; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } 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; } import React, { Component } from 'react'; import PropTypes from 'prop-types'; import IconAdd from 'react-icons/lib/fa/plus-circle'; import { Seq } from 'immutable'; import * as SharedStyle from '../../shared-style'; var STYLE_BOX = { width: '14em', height: '14em', padding: '0.625em', background: '#f7f7f9', border: '1px solid #e1e1e8', cursor: 'pointer', position: 'relative', boxShadow: '0 1px 6px 0 rgba(0, 0, 0, 0.11), 0 1px 4px 0 rgba(0, 0, 0, 0.11)', borderRadius: '2px', transition: 'all .15s ease-in-out', WebkitTransition: 'all .15s ease-in-out', alignSelf: 'center', justifySelf: 'center' }; var STYLE_BOX_HOVER = _extends({}, STYLE_BOX, { background: SharedStyle.SECONDARY_COLOR.main }); var STYLE_TITLE = { width: '100%', textAlign: 'center', display: 'block', marginBottom: '.5em', textTransform: 'capitalize' }; var STYLE_TITLE_HOVER = _extends({}, STYLE_TITLE, { color: SharedStyle.COLORS.white }); var STYLE_IMAGE_CONTAINER = { width: '100%', height: '8em', position: 'relative', overflow: 'hidden', border: 'solid 1px #e6e6e6', padding: 0, margin: 0, marginBottom: '5px' }; var STYLE_IMAGE = { position: 'absolute', background: '#222', width: '100%', height: '100%', backgroundSize: 'contain', backgroundPosition: '50% 50%', backgroundColor: SharedStyle.COLORS.white, backgroundRepeat: 'no-repeat', transition: 'all .2s ease-in-out' }; var STYLE_IMAGE_HOVER = _extends({}, STYLE_IMAGE, { transform: 'scale(1.2)' }); var STYLE_PLUS_HOVER = { marginTop: '1.5em', color: SharedStyle.SECONDARY_COLOR.main, fontSize: '2em', opacity: '0.7', width: '100%' }; var STYLE_DESCRIPTION = (_STYLE_DESCRIPTION = { display: 'block' }, _defineProperty(_STYLE_DESCRIPTION, 'display', '-webkit-box'), _defineProperty(_STYLE_DESCRIPTION, 'height', '2em'), _defineProperty(_STYLE_DESCRIPTION, 'margin', '0 auto'), _defineProperty(_STYLE_DESCRIPTION, 'fontSize', '0.75em'), _defineProperty(_STYLE_DESCRIPTION, 'fontStyle', 'italic'), _defineProperty(_STYLE_DESCRIPTION, 'lineHeight', '1em'), _defineProperty(_STYLE_DESCRIPTION, 'WebkitLineClamp', '2'), _defineProperty(_STYLE_DESCRIPTION, 'WebkitBoxOrient', 'vertical'), _defineProperty(_STYLE_DESCRIPTION, 'overflow', 'hidden'), _defineProperty(_STYLE_DESCRIPTION, 'textOverflow', 'ellipsis'), _STYLE_DESCRIPTION); var STYLE_TAGS = { listStyle: 'none', margin: '0px', padding: '0px', fontSize: '11px', marginBottom: '3px' }; var STYLE_TAG = { display: 'inline-block', background: '#337ab7', color: SharedStyle.COLORS.white, padding: '1px 4px', marginRight: '3px', borderRadius: '3px' }; var CatalogItem = function (_Component) { _inherits(CatalogItem, _Component); function CatalogItem(props) { _classCallCheck(this, CatalogItem); var _this = _possibleConstructorReturn(this, (CatalogItem.__proto__ || Object.getPrototypeOf(CatalogItem)).call(this, props)); _this.state = { hover: false }; return _this; } _createClass(CatalogItem, [{ key: 'select', value: function select() { var element = this.props.element; switch (element.prototype) { case 'lines': this.context.linesActions.selectToolDrawingLine(element.name); break; case 'items': this.context.itemsActions.selectToolDrawingItem(element.name); break; case 'holes': this.context.holesActions.selectToolDrawingHole(element.name); break; } this.context.projectActions.pushLastSelectedCatalogElementToHistory(element); } }, { key: 'render', value: function render() { var _this2 = this; var element = this.props.element; var hover = this.state.hover; return React.createElement( 'div', { style: hover ? STYLE_BOX_HOVER : STYLE_BOX, onClick: function onClick(e) { return _this2.select(); }, onMouseEnter: function onMouseEnter(e) { return _this2.setState({ hover: true }); }, onMouseLeave: function onMouseLeave(e) { return _this2.setState({ hover: false }); } }, React.createElement( 'b', { style: !hover ? STYLE_TITLE : STYLE_TITLE_HOVER }, element.info.title ), React.createElement( 'div', { style: STYLE_IMAGE_CONTAINER }, React.createElement( 'div', { style: _extends({}, !hover ? STYLE_IMAGE : STYLE_IMAGE_HOVER, { backgroundImage: 'url(' + element.info.image + ')' }) }, hover ? React.createElement(IconAdd, { style: STYLE_PLUS_HOVER }) : null ) ), React.createElement( 'ul', { style: STYLE_TAGS }, element.info.tag.map(function (tag, index) { return React.createElement( 'li', { style: STYLE_TAG, key: index }, tag ); }) ), React.createElement( 'div', { style: STYLE_DESCRIPTION }, element.info.description ) ); } }]); return CatalogItem; }(Component); export default CatalogItem; CatalogItem.propTypes = { element: PropTypes.object.isRequired }; CatalogItem.contextTypes = { itemsActions: PropTypes.object.isRequired, linesActions: PropTypes.object.isRequired, holesActions: PropTypes.object.isRequired, projectActions: PropTypes.object.isRequired }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NhdGFsb2ctdmlldy9jYXRhbG9nLWl0ZW0uanN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiSWNvbkFkZCIsIlNlcSIsIlNoYXJlZFN0eWxlIiwiU1RZTEVfQk9YIiwid2lkdGgiLCJoZWlnaHQiLCJwYWRkaW5nIiwiYmFja2dyb3VuZCIsImJvcmRlciIsImN1cnNvciIsInBvc2l0aW9uIiwiYm94U2hhZG93IiwiYm9yZGVyUmFkaXVzIiwidHJhbnNpdGlvbiIsIldlYmtpdFRyYW5zaXRpb24iLCJhbGlnblNlbGYiLCJqdXN0aWZ5U2VsZiIsIlNUWUxFX0JPWF9IT1ZFUiIsIlNFQ09OREFSWV9DT0xPUiIsIm1haW4iLCJTVFlMRV9USVRMRSIsInRleHRBbGlnbiIsImRpc3BsYXkiLCJtYXJnaW5Cb3R0b20iLCJ0ZXh0VHJhbnNmb3JtIiwiU1RZTEVfVElUTEVfSE9WRVIiLCJjb2xvciIsIkNPTE9SUyIsIndoaXRlIiwiU1RZTEVfSU1BR0VfQ09OVEFJTkVSIiwib3ZlcmZsb3ciLCJtYXJnaW4iLCJTVFlMRV9JTUFHRSIsImJhY2tncm91bmRTaXplIiwiYmFja2dyb3VuZFBvc2l0aW9uIiwiYmFja2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZFJlcGVhdCIsIlNUWUxFX0lNQUdFX0hPVkVSIiwidHJhbnNmb3JtIiwiU1RZTEVfUExVU19IT1ZFUiIsIm1hcmdpblRvcCIsImZvbnRTaXplIiwib3BhY2l0eSIsIlNUWUxFX0RFU0NSSVBUSU9OIiwiU1RZTEVfVEFHUyIsImxpc3RTdHlsZSIsIlNUWUxFX1RBRyIsIm1hcmdpblJpZ2h0IiwiQ2F0YWxvZ0l0ZW0iLCJwcm9wcyIsInN0YXRlIiwiaG92ZXIiLCJlbGVtZW50IiwicHJvdG90eXBlIiwiY29udGV4dCIsImxpbmVzQWN0aW9ucyIsInNlbGVjdFRvb2xEcmF3aW5nTGluZSIsIm5hbWUiLCJpdGVtc0FjdGlvbnMiLCJzZWxlY3RUb29sRHJhd2luZ0l0ZW0iLCJob2xlc0FjdGlvbnMiLCJzZWxlY3RUb29sRHJhd2luZ0hvbGUiLCJwcm9qZWN0QWN0aW9ucyIsInB1c2hMYXN0U2VsZWN0ZWRDYXRhbG9nRWxlbWVudFRvSGlzdG9yeSIsInNlbGVjdCIsInNldFN0YXRlIiwiaW5mbyIsInRpdGxlIiwiYmFja2dyb3VuZEltYWdlIiwiaW1hZ2UiLCJ0YWciLCJtYXAiLCJpbmRleCIsImRlc2NyaXB0aW9uIiwicHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImNvbnRleHRUeXBlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLElBQWVDLFNBQWYsUUFBK0IsT0FBL0I7QUFDQSxPQUFPQyxTQUFQLE1BQXNCLFlBQXRCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixnQ0FBcEI7QUFDQSxTQUFRQyxHQUFSLFFBQWtCLFdBQWxCO0FBQ0EsT0FBTyxLQUFLQyxXQUFaLE1BQTZCLG9CQUE3Qjs7QUFFQSxJQUFNQyxZQUFZO0FBQ2hCQyxTQUFPLE1BRFM7QUFFaEJDLFVBQVEsTUFGUTtBQUdoQkMsV0FBUyxTQUhPO0FBSWhCQyxjQUFZLFNBSkk7QUFLaEJDLFVBQVEsbUJBTFE7QUFNaEJDLFVBQVEsU0FOUTtBQU9oQkMsWUFBVSxVQVBNO0FBUWhCQyxhQUFXLGtFQVJLO0FBU2hCQyxnQkFBYyxLQVRFO0FBVWhCQyxjQUFZLHNCQVZJO0FBV2hCQyxvQkFBa0Isc0JBWEY7QUFZaEJDLGFBQVcsUUFaSztBQWFoQkMsZUFBYTtBQWJHLENBQWxCOztBQWdCQSxJQUFNQywrQkFDRGQsU0FEQztBQUVKSSxjQUFZTCxZQUFZZ0IsZUFBWixDQUE0QkM7QUFGcEMsRUFBTjs7QUFLQSxJQUFNQyxjQUFjO0FBQ2xCaEIsU0FBTSxNQURZO0FBRWxCaUIsYUFBVSxRQUZRO0FBR2xCQyxXQUFRLE9BSFU7QUFJbEJDLGdCQUFhLE1BSks7QUFLbEJDLGlCQUFlO0FBTEcsQ0FBcEI7O0FBUUEsSUFBTUMsaUNBQ0RMLFdBREM7QUFF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QkMsVUFITjtBQUl6QmQsa0JBQWdCL0QsVUFBVTRFLE1BQVYsQ0FBaUJDO0FBSlIsQ0FBM0IiLCJmaWxlIjoiY2F0YWxvZy1pdGVtLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IEljb25BZGQgZnJvbSAncmVhY3QtaWNvbnMvbGliL2ZhL3BsdXMtY2lyY2xlJztcbmltcG9ydCB7U2VxfSBmcm9tICdpbW11dGFibGUnO1xuaW1wb3J0ICogYXMgU2hhcmVkU3R5bGUgZnJvbSAnLi4vLi4vc2hhcmVkLXN0eWxlJztcblxuY29uc3QgU1RZTEVfQk9YID0ge1xuICB3aWR0aDogJzE0ZW0nLFxuICBoZWlnaHQ6ICcxNGVtJyxcbiAgcGFkZGluZzogJzAuNjI1ZW0nLFxuICBiYWNrZ3JvdW5kOiAnI2Y3ZjdmOScsXG4gIGJvcmRlcjogJzFweCBzb2xpZCAjZTFlMWU4JyxcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBib3hTaGFkb3c6ICcwIDFweCA2cHggMCByZ2JhKDAsIDAsIDAsIDAuMTEpLCAwIDFweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMTEpJyxcbiAgYm9yZGVyUmFkaXVzOiAnMnB4JyxcbiAgdHJhbnNpdGlvbjogJ2FsbCAuMTVzIGVhc2UtaW4tb3V0JyxcbiAgV2Via2l0VHJhbnNpdGlvbjogJ2FsbCAuMTVzIGVhc2UtaW4tb3V0JyxcbiAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxufTtcblxuY29uc3QgU1RZTEVfQk9YX0hPVkVSID0ge1xuICAuLi5TVFlMRV9CT1gsXG4gIGJhY2tncm91bmQ6IFNoYXJlZFN0eWxlLlNFQ09OREFSWV9DT0xPUi5tYWluXG59O1xuXG5jb25zdCBTVFlMRV9USVRMRSA9IHtcbiAgd2lkdGg6JzEwMCUnLFxuICB0ZXh0QWxpZ246J2NlbnRlcicsXG4gIGRpc3BsYXk6J2Jsb2NrJyxcbiAgbWFyZ2luQm90dG9tOicuNWVtJyxcbiAgdGV4dFRyYW5zZm9ybTogJ2NhcGl0YWxpemUnXG59O1xuXG5jb25zdCBTVFlMRV9USVRMRV9IT1ZFUiA9IHtcbiAgLi4uU1RZTEVfVElUTEUsXG4gIGNvbG9yOlNoYXJlZFN0eWxlLkNPTE9SUy53aGl0ZVxufTtcblxuY29uc3QgU1RZTEVfSU1BR0VfQ09OVEFJTkVSID0ge1xuICB3aWR0aDogJzEwMCUnLFxuICBoZWlnaHQ6ICc4ZW0nLFxuICBwb3NpdGlvbjoncmVsYXRpdmUnLFxuICBvdmVyZmxvdzonaGlkZGVuJyxcbiAgYm9yZGVyOiAnc29saWQgMXB4ICNlNmU2ZTYnLFxuICBwYWRkaW5nOjAsXG4gIG1hcmdpbjowLFxuICBtYXJnaW5Cb3R0b206ICc1cHgnXG59O1xuXG5jb25zdCBTVFlMRV9JTUFHRSA9IHtcbiAgcG9zaXRpb246J2Fic29sdXRlJyxcbiAgYmFja2dyb3VuZDogJyMyMjInLFxuICB3aWR0aDogJzEwMCUnLFxuICBoZWlnaHQ6ICcxMDAlJyxcbiAgYmFja2dyb3VuZFNpemU6ICdjb250YWluJyxcbiAgYmFja2dyb3VuZFBvc2l0aW9uOic1MCUgNTAlJyxcbiAgYmFja2dyb3VuZENvbG9yOlNoYXJlZFN0eWxlLkNPTE9SUy53aGl0ZSxcbiAgYmFja2dyb3VuZFJlcGVhdDonbm8tcmVwZWF0JyxcbiAgdHJhbnNpdGlvbjogJ2FsbCAuMnMgZWFzZS1pbi1vdXQnXG59O1xuXG5jb25zdCBTVFlMRV9JTUFHRV9IT1ZFUiA9IHtcbiAgLi4uU1RZTEVfSU1BR0UsXG4gIHRyYW5zZm9ybTogJ3NjYWxlKDEuMiknXG59O1xuXG5jb25zdCBTVFlMRV9QTFVTX0hPVkVSID0ge1xuICBtYXJnaW5Ub3A6JzEuNWVtJyxcbiAgY29sb3I6IFNoYXJlZFN0eWxlLlNFQ09OREFSWV9DT0xPUi5tYWluLFxuICBmb250U2l6ZTogJzJlbScsXG4gIG9wYWNpdHk6ICcwLjcnLFxuICB3aWR0aDogJzEwMCUnXG59O1xuXG5jb25zdCBTVFlMRV9ERVNDUklQVElPTiA9IHtcbiAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgZGlzcGxheTogJy13ZWJraXQtYm94JyxcbiAgaGVpZ2h0OiAnMmVtJyxcbiAgbWFyZ2luOiAnMCBhdXRvJyxcbiAgZm9udFNpemU6ICcwLjc1ZW0nLFxuICBmb250U3R5bGU6J2l0YWxpYycsXG4gIGxpbmVIZWlnaHQ6ICcxZW0nLFxuICBXZWJraXRMaW5lQ2xhbXA6ICcyJyxcbiAgV2Via2l0Qm94T3JpZW50OiAndmVydGljYWwnLFxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbn07XG5cbmNvbnN0IFNUWUxFX1RBR1MgPSB7XG4gIGxpc3RTdHlsZTogJ25vbmUnLFxuICBtYXJnaW46ICcwcHgnLFxuICBwYWRkaW5nOiAnMHB4JyxcbiAgZm9udFNpemU6ICcxMXB4JyxcbiAgbWFyZ2luQm90dG9tOiAnM3B4J1xufTtcblxuY29uc3QgU1RZTEVfVEFHID0ge1xuICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgYmFja2dyb3VuZDogJyMzMzdhYjcnLFxuICBjb2xvcjogU2hhcmVkU3R5bGUuQ09MT1JTLndoaXRlLFxuICBwYWRkaW5nOiAnMXB4IDRweCcsXG4gIG1hcmdpblJpZ2h0OiAnM3B4JyxcbiAgYm9yZGVyUmFkaXVzOiAnM3B4J1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2F0YWxvZ0l0ZW0gZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7aG92ZXI6IGZhbHNlfTtcbiAgfVxuXG4gIHNlbGVjdCgpIHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMucHJvcHMuZWxlbWVudDtcblxuICAgIHN3aXRjaCAoZWxlbWVudC5wcm90b3R5cGUpIHtcbiAgICAgIGNhc2UgJ2xpbmVzJzpcbiAgICAgICAgdGhpcy5jb250ZXh0LmxpbmVzQWN0aW9ucy5zZWxlY3RUb29sRHJhd2luZ0xpbmUoZWxlbWVudC5uYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpdGVtcyc6XG4gICAgICAgIHRoaXMuY29udGV4dC5pdGVtc0FjdGlvbnMuc2VsZWN0VG9vbERyYXdpbmdJdGVtKGVsZW1lbnQubmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaG9sZXMnOlxuICAgICAgICB0aGlzLmNvbnRleHQuaG9sZXNBY3Rpb25zLnNlbGVjdFRvb2xEcmF3aW5nSG9sZShlbGVtZW50Lm5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRleHQucHJvamVjdEFjdGlvbnMucHVzaExhc3RTZWxlY3RlZENhdGFsb2dFbGVtZW50VG9IaXN0b3J5KGVsZW1lbnQpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5wcm9wcy5lbGVtZW50O1xuICAgIGxldCBob3ZlciA9IHRoaXMuc3RhdGUuaG92ZXI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17aG92ZXIgPyBTVFlMRV9CT1hfSE9WRVIgOiBTVFlMRV9CT1h9XG4gICAgICAgIG9uQ2xpY2s9e2UgPT4gdGhpcy5zZWxlY3QoKX1cbiAgICAgICAgb25Nb3VzZUVudGVyPXtlID0+IHRoaXMuc2V0U3RhdGUoe2hvdmVyOiB0cnVlfSl9XG4gICAgICAgIG9uTW91c2VMZWF2ZT17ZSA9PiB0aGlzLnNldFN0YXRlKHtob3ZlcjogZmFsc2V9KX1cbiAgICAgID5cbiAgICAgICAgPGIgc3R5bGU9eyAhaG92ZXIgPyBTVFlMRV9USVRMRSA6IFNUWUxFX1RJVExFX0hPVkVSIH0+e2VsZW1lbnQuaW5mby50aXRsZX08L2I+XG4gICAgICAgIDxkaXYgc3R5bGU9eyBTVFlMRV9JTUFHRV9DT05UQUlORVIgfT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7Li4uKCAhaG92ZXIgPyBTVFlMRV9JTUFHRTogU1RZTEVfSU1BR0VfSE9WRVIgKSwgYmFja2dyb3VuZEltYWdlOiAndXJsKCcgKyBlbGVtZW50LmluZm8uaW1hZ2UgKyAnKSd9fT5cbiAgICAgICAgICAgIHsgaG92ZXIgPyA8SWNvbkFkZCBzdHlsZT17U1RZTEVfUExVU19IT1ZFUn0gLz4gOiBudWxsIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1bCBzdHlsZT17U1RZTEVfVEFHU30+XG4gICAgICAgICAge2VsZW1lbnQuaW5mby50YWcubWFwKCh0YWcsIGluZGV4KSA9PiA8bGkgc3R5bGU9e1NUWUxFX1RBR30ga2V5PXtpbmRleH0+e3RhZ308L2xpPil9XG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxkaXYgc3R5bGU9e1NUWUxFX0RFU0NSSVBUSU9OfT57ZWxlbWVudC5pbmZvLmRlc2NyaXB0aW9ufTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5DYXRhbG9nSXRlbS5wcm9wVHlwZXMgPSB7XG4gIGVsZW1lbnQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbn07XG5cbkNhdGFsb2dJdGVtLmNvbnRleHRUeXBlcyA9IHtcbiAgaXRlbXNBY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGxpbmVzQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBob2xlc0FjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcHJvamVjdEFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcbiJdfQ==